ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvc3FsY29tcGxldGUudmltIGIvcnVudGltZS9hdXRvbG9hZC9zcWxjb21wbGV0ZS52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzZjAwNAotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvc3FsY29tcGxldGUudmltCkBAIC0wLDAgKzEsNDU5IEBACisiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAorIiBMYW5ndWFnZTogICAgU1FMCisiIE1haW50YWluZXI6ICBEYXZpZCBGaXNoYnVybiA8ZmlzaGJ1cm5AaWFueXdoZXJlLmNvbT4KKyIgVmVyc2lvbjogICAgIDEuMAorIiBMYXN0IENoYW5nZTogVHVlIE1hciAyOCAyMDA2IDQ6Mzk6NDkgUE0KKworIiBTZXQgY29tcGxldGlvbiB3aXRoIENUUkwtWCBDVFJMLU8gdG8gYXV0b2xvYWRlZCBmdW5jdGlvbi4KKyIgVGhpcyBjaGVjayBpcyBpbiBwbGFjZSBpbiBjYXNlIHRoaXMgc2NyaXB0IGlzCisiIHNvdXJjZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyB0aGUgYXV0b2xvYWQgZmVhdHVyZS4gCitpZiBleGlzdHMoJyZvbW5pZnVuYycpCisgICAgIiBEbyBub3Qgc2V0IHRoZSBvcHRpb24gaWYgYWxyZWFkeSBzZXQgc2luY2UgdGhpcworICAgICIgcmVzdWx0cyBpbiBhbiBFMTE3IHdhcm5pbmcuCisgICAgaWYgJm9tbmlmdW5jID09ICIiCisgICAgICAgIHNldGxvY2FsIG9tbmlmdW5jPXNxbGNvbXBsZXRlI0NvbXBsZXRlCisgICAgZW5kaWYKK2VuZGlmCisKK2lmIGV4aXN0cygnZzpsb2FkZWRfc3FsX2NvbXBsZXRpb24nKQorICAgIGZpbmlzaCAKK2VuZGlmCitsZXQgZzpsb2FkZWRfc3FsX2NvbXBsZXRpb24gPSAxCisKKyIgTWFpbnRhaW5zIGZpbGVuYW1lIG9mIGRpY3Rpb25hcnkKK2xldCBzOnNxbF9maWxlX3RhYmxlICAgICAgICAgICAgID0gIiIKK2xldCBzOnNxbF9maWxlX3Byb2NlZHVyZSAgICAgICAgID0gIiIKK2xldCBzOnNxbF9maWxlX3ZpZXcgICAgICAgICAgICAgID0gIiIKKworIiBEZWZpbmUgdmFyaW91cyBhcnJheXMgdG8gYmUgdXNlZCBmb3IgY2FjaGluZworbGV0IHM6dGJsX25hbWUgICAgICAgICAgICAgICAgICAgPSBbXQorbGV0IHM6dGJsX2FsaWFzICAgICAgICAgICAgICAgICAgPSBbXQorbGV0IHM6dGJsX2NvbHMgICAgICAgICAgICAgICAgICAgPSBbXQorbGV0IHM6c3luX2xpc3QgICAgICAgICAgICAgICAgICAgPSBbXQorbGV0IHM6c3luX3ZhbHVlICAgICAgICAgICAgICAgICAgPSBbXQorIAorIiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHN5bnRheGNvbXBsZXRlIHBsdWdpbgorbGV0IHM6c2F2ZV9pbmMgPSAiIgorbGV0IHM6c2F2ZV9leGMgPSAiIgoraWYgZXhpc3RzKCdnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsJykKKyAgICBsZXQgczpzYXZlX2luYyA9IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwKK2VuZGlmCitpZiBleGlzdHMoJ2c6b21uaV9zeW50YXhfZ3JvdXBfZXhjbHVkZV9zcWwnKQorICAgIGxldCBzOnNhdmVfZXhjID0gZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbAorZW5kaWYKKyAKKyIgVXNlZCB3aXRoIHRoZSBjb2x1bW4gbGlzdAorbGV0IHM6c2F2ZV9wcmV2X3RhYmxlID0gIiIKKworIiBEZWZhdWx0IHRoZSBvcHRpb24gdG8gdmVyaWZ5IHRhYmxlIGFsaWFzCitpZiAhZXhpc3RzKCdnOm9tbmlfc3FsX3VzZV90YmxfYWxpYXMnKQorICAgIGxldCBnOm9tbmlfc3FsX3VzZV90YmxfYWxpYXMgPSAnYScKK2VuZGlmCisKKyIgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGZvciB0aGUgJ29tbmlmdW5jJyBvcHRpb24uCitmdW5jdGlvbiEgc3FsY29tcGxldGUjQ29tcGxldGUoZmluZHN0YXJ0LCBiYXNlKQorCisgICAgIiBEZWZhdWx0IHRvIHRhYmxlIG5hbWUgY29tcGxldGlvbgorICAgIGxldCBjb21wbF90eXBlID0gJ3RhYmxlJworICAgICIgQWxsb3cgbWFwcyB0byBzcGVjaWZ5IHdoYXQgdHlwZSBvZiBvYmplY3QgY29tcGxldGlvbiB0aGV5IHdhbnQKKyAgICBpZiBleGlzdHMoJ2I6c3FsX2NvbXBsX3R5cGUnKQorICAgICAgICBsZXQgY29tcGxfdHlwZSA9IGI6c3FsX2NvbXBsX3R5cGUKKyAgICBlbmRpZgorCisgICAgaWYgYTpmaW5kc3RhcnQKKyAgICAgICAgIiBMb2NhdGUgdGhlIHN0YXJ0IG9mIHRoZSBpdGVtLCBpbmNsdWRpbmcgIi4iCisgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZSgnLicpCisgICAgICAgIGxldCBzdGFydCA9IGNvbCgnLicpIC0gMQorICAgICAgICBsZXQgbGFzdHdvcmQgPSAtMQorICAgICAgICB3aGlsZSBzdGFydCA+IDAKKyAgICAgICAgICAgIGlmIGxpbmVbc3RhcnQgLSAxXSA9fiAnXHcnCisgICAgICAgICAgICAgICAgbGV0IHN0YXJ0IC09IDEKKyAgICAgICAgICAgIGVsc2VpZiBsaW5lW3N0YXJ0IC0gMV0gPX4gJ1wuJyAmJiBjb21wbF90eXBlID1+ICdjb2x1bW5cfHRhYmxlJworICAgICAgICAgICAgICAgICIgSWYgdGhlIGNvbXBsZXRpb24gdHlwZSBpcyB0YWJsZSBvciBjb2x1bW4KKyAgICAgICAgICAgICAgICAiIFRoZW4gYXNzdW1lIHdlIGFyZSBsb29raW5nIGZvciBjb2x1bW4gY29tcGxldGlvbgorICAgICAgICAgICAgICAgICIgY29sdW1uX3R5cGUgY2FuIGJlIGVpdGhlciAnY29sdW1uJyBvciAnY29sdW1uX2NzdicKKyAgICAgICAgICAgICAgICBpZiBsYXN0d29yZCA9PSAtMQorICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdHdvcmQgPSBzdGFydAorICAgICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgbGV0IHN0YXJ0IC09IDEKKyAgICAgICAgICAgICAgICBsZXQgYjpzcWxfY29tcGxfdHlwZSA9ICdjb2x1bW4nCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVuZGlmCisgICAgICAgIGVuZHdoaWxlCisKKyAgICAgICAgIiBSZXR1cm4gdGhlIGNvbHVtbiBvZiB0aGUgbGFzdCB3b3JkLCB3aGljaCBpcyBnb2luZyB0byBiZSBjaGFuZ2VkLgorICAgICAgICAiIFJlbWVtYmVyIHRoZSB0ZXh0IHRoYXQgY29tZXMgYmVmb3JlIGl0IGluIHM6cHJlcGVuZGVkLgorICAgICAgICBpZiBsYXN0d29yZCA9PSAtMQorICAgICAgICAgICAgbGV0IHM6cHJlcGVuZGVkID0gJycKKyAgICAgICAgICAgIHJldHVybiBzdGFydAorICAgICAgICBlbmRpZgorICAgICAgICBsZXQgczpwcmVwZW5kZWQgPSBzdHJwYXJ0KGxpbmUsIHN0YXJ0LCBsYXN0d29yZCAtIHN0YXJ0KQorICAgICAgICByZXR1cm4gbGFzdHdvcmQKKyAgICBlbmRpZgorCisgICAgbGV0IGJhc2UgPSBzOnByZXBlbmRlZCAuIGE6YmFzZQorCisgICAgbGV0IGNvbXBsX2xpc3QgPSBbXQorCisgICAgIiBEZWZhdWx0IHRvIHRhYmxlIG5hbWUgY29tcGxldGlvbgorICAgIGxldCBjb21wbF90eXBlID0gJ3RhYmxlJworICAgICIgQWxsb3cgbWFwcyB0byBzcGVjaWZ5IHdoYXQgdHlwZSBvZiBvYmplY3QgY29tcGxldGlvbiB0aGV5IHdhbnQKKyAgICBpZiBleGlzdHMoJ2I6c3FsX2NvbXBsX3R5cGUnKQorICAgICAgICBsZXQgY29tcGxfdHlwZSA9IGI6c3FsX2NvbXBsX3R5cGUKKyAgICAgICAgdW5sZXQgYjpzcWxfY29tcGxfdHlwZQorICAgIGVuZGlmCisKKyAgICBpZiBjb21wbF90eXBlID09ICd0YWJsZVJlc2V0JworICAgICAgICBsZXQgY29tcGxfdHlwZSA9ICd0YWJsZScKKyAgICAgICAgbGV0IGJhc2UgPSAnJworICAgIGVuZGlmCisKKyAgICBpZiBjb21wbF90eXBlID09ICd0YWJsZScgfHwKKyAgICAgICAgICAgICAgICBcIGNvbXBsX3R5cGUgPT0gJ3Byb2NlZHVyZScgfHwKKyAgICAgICAgICAgICAgICBcIGNvbXBsX3R5cGUgPT0gJ3ZpZXcnIAorCisgICAgICAgICIgVGhpcyB0eXBlIG9mIGNvbXBsZXRpb24gcmVsaWVzIHVwb24gdGhlIGRiZXh0LnZpbSBwbHVnaW4KKyAgICAgICAgaWYgczpTUUxDQ2hlY2s0ZGJleHQoKSA9PSAtMQorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGVuZGlmCisKKyAgICAgICAgaWYgczpzcWxfZmlsZV97Y29tcGxfdHlwZX0gPT0gIiIKKyAgICAgICAgICAgIGxldCBjb21wbF90eXBlID0gc3Vic3RpdHV0ZShjb21wbF90eXBlLCAnXHdcKycsICdcdSYnLCAnJykKKyAgICAgICAgICAgIGxldCBzOnNxbF9maWxlX3tjb21wbF90eXBlfSA9IERCX2dldERpY3Rpb25hcnlOYW1lKGNvbXBsX3R5cGUpCisgICAgICAgIGVuZGlmCisgICAgICAgIGxldCBzOnNxbF9maWxlX3tjb21wbF90eXBlfSA9IERCX2dldERpY3Rpb25hcnlOYW1lKGNvbXBsX3R5cGUpCisgICAgICAgIGlmIHM6c3FsX2ZpbGVfe2NvbXBsX3R5cGV9ICE9ICIiCisgICAgICAgICAgICBpZiBmaWxlcmVhZGFibGUoczpzcWxfZmlsZV97Y29tcGxfdHlwZX0pCisgICAgICAgICAgICAgICAgbGV0IGNvbXBsX2xpc3QgPSByZWFkZmlsZShzOnNxbF9maWxlX3tjb21wbF90eXBlfSkKKyAgICAgICAgICAgIGVuZGlmCisgICAgICAgIGVuZGlmCisgICAgZWxzZWlmIGNvbXBsX3R5cGUgPT0gJ2NvbHVtbicKKworICAgICAgICAiIFRoaXMgdHlwZSBvZiBjb21wbGV0aW9uIHJlbGllcyB1cG9uIHRoZSBkYmV4dC52aW0gcGx1Z2luCisgICAgICAgIGlmIHM6U1FMQ0NoZWNrNGRiZXh0KCkgPT0gLTEKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBlbmRpZgorCisgICAgICAgIGlmIGJhc2UgPT0gIiIKKyAgICAgICAgICAgICIgVGhlIGxhc3QgdGltZSB3ZSBkaXNwbGF5ZWQgYSBjb2x1bW4gbGlzdCB3ZSBzdG9yZWQKKyAgICAgICAgICAgICIgdGhlIHRhYmxlIG5hbWUuICBJZiB0aGUgdXNlciBzZWxlY3RzIGEgY29sdW1uIGxpc3QgCisgICAgICAgICAgICAiIHdpdGhvdXQgYSB0YWJsZSBuYW1lIG9mIGFsaWFzIHByZXNlbnQsIGFzc3VtZSB0aGV5IHdhbnQKKyAgICAgICAgICAgICIgdGhlIHByZXZpb3VzIGNvbHVtbiBsaXN0IGRpc3BsYXllZC4KKyAgICAgICAgICAgIGxldCBiYXNlID0gczpzYXZlX3ByZXZfdGFibGUKKyAgICAgICAgZW5kaWYKKworICAgICAgICBpZiBiYXNlICE9ICIiCisgICAgICAgICAgICBsZXQgY29tcGxfbGlzdCAgICAgICAgPSBzOlNRTENHZXRDb2x1bW5zKGJhc2UsICcnKQorICAgICAgICAgICAgbGV0IHM6c2F2ZV9wcmV2X3RhYmxlID0gYmFzZQorICAgICAgICAgICAgbGV0IGJhc2UgICAgICAgICAgICAgID0gJycKKyAgICAgICAgZW5kaWYKKyAgICBlbHNlaWYgY29tcGxfdHlwZSA9PSAnY29sdW1uX2NzdicKKworICAgICAgICAiIFRoaXMgdHlwZSBvZiBjb21wbGV0aW9uIHJlbGllcyB1cG9uIHRoZSBkYmV4dC52aW0gcGx1Z2luCisgICAgICAgIGlmIHM6U1FMQ0NoZWNrNGRiZXh0KCkgPT0gLTEKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBlbmRpZgorCisgICAgICAgIGlmIGJhc2UgPT0gIiIKKyAgICAgICAgICAgICIgVGhlIGxhc3QgdGltZSB3ZSBkaXNwbGF5ZWQgYSBjb2x1bW4gbGlzdCB3ZSBzdG9yZWQKKyAgICAgICAgICAgICIgdGhlIHRhYmxlIG5hbWUuICBJZiB0aGUgdXNlciBzZWxlY3RzIGEgY29sdW1uIGxpc3QgCisgICAgICAgICAgICAiIHdpdGhvdXQgYSB0YWJsZSBuYW1lIG9mIGFsaWFzIHByZXNlbnQsIGFzc3VtZSB0aGV5IHdhbnQKKyAgICAgICAgICAgICIgdGhlIHByZXZpb3VzIGNvbHVtbiBsaXN0IGRpc3BsYXllZC4KKyAgICAgICAgICAgIGxldCBiYXNlID0gczpzYXZlX3ByZXZfdGFibGUKKyAgICAgICAgZW5kaWYKKworICAgICAgICBpZiBiYXNlICE9ICIiCisgICAgICAgICAgICBsZXQgY29tcGxfbGlzdCAgICAgICAgPSBzOlNRTENHZXRDb2x1bW5zKGJhc2UsICdjc3YnKQorICAgICAgICAgICAgbGV0IHM6c2F2ZV9wcmV2X3RhYmxlID0gYmFzZQorICAgICAgICAgICAgIiBKb2luIHRoZSBjb2x1bW4gYXJyYXkgaW50byAxIHNpbmdsZSBlbGVtZW50IGFycmF5CisgICAgICAgICAgICAiIGJ1dCBtYWtlIHRoZSBjb2x1bW5zIGNvbHVtbiBzZXBhcmF0ZWQKKyAgICAgICAgICAgIGxldCBjb21wbF9saXN0ICAgICAgICA9IFtqb2luKGNvbXBsX2xpc3QsICcsICcpXQorICAgICAgICAgICAgbGV0IGJhc2UgICAgICAgICAgICAgID0gJycKKyAgICAgICAgZW5kaWYKKyAgICBlbHNlaWYgY29tcGxfdHlwZSA9PSAncmVzZXRDYWNoZScKKyAgICAgICAgIiBSZXNldCBhbGwgY2FjaGVkIGl0ZW1zCisgICAgICAgIGxldCBzOnRibF9uYW1lICA9IFtdCisgICAgICAgIGxldCBzOnRibF9hbGlhcyA9IFtdCisgICAgICAgIGxldCBzOnRibF9jb2xzICA9IFtdCisgICAgICAgIGxldCBzOnN5bl9saXN0ICA9IFtdCisgICAgICAgIGxldCBzOnN5bl92YWx1ZSA9IFtdCisgICAgICAgIHJldHVybiBbXQorICAgIGVsc2UKKyAgICAgICAgIiBEZWZhdWx0IHRvIGVtcHR5IG9yIG5vdCBmb3VuZAorICAgICAgICBsZXQgY29tcGxfbGlzdCA9IFtdCisgICAgICAgICIgQ2hlY2sgaWYgd2UgaGF2ZSBhbHJlYWR5IGNhY2hlZCB0aGUgc3ludGF4IGxpc3QKKyAgICAgICAgbGV0IGxpc3RfaWR4ID0gaW5kZXgoczpzeW5fbGlzdCwgY29tcGxfdHlwZSwgMCwgJmlnbm9yZWNhc2UpCisgICAgICAgIGlmIGxpc3RfaWR4ID4gLTEKKyAgICAgICAgICAgICIgUmV0dXJuIHByZXZpb3VzbHkgY2FjaGVkIHZhbHVlCisgICAgICAgICAgICBsZXQgY29tcGxfbGlzdCA9IHM6c3luX3ZhbHVlW2xpc3RfaWR4XQorICAgICAgICBlbHNlCisgICAgICAgICAgICAiIFJlcXVlc3QgdGhlIHN5bnRheCBsaXN0IGl0ZW1zIGZyb20gdGhlIAorICAgICAgICAgICAgIiBzeW50YXggY29tcGxldGlvbiBwbHVnaW4KKyAgICAgICAgICAgIGlmIGNvbXBsX3R5cGUgPT0gJ3N5bnRheCcKKyAgICAgICAgICAgICAgICAiIEhhbmRsZSB0aGlzIHNwZWNpYWwgY2FzZS4gIFRoaXMgYWxsb3dzIHRoZSB1c2VyCisgICAgICAgICAgICAgICAgIiB0byBpbmRpY2F0ZSB0aGV5IHdhbnQgYWxsIHRoZSBzeW50YXggaXRlbXMgYXZhaWxhYmxlLAorICAgICAgICAgICAgICAgICIgc28gZG8gbm90IHNwZWNpZnkgYSBzcGVjaWZpYyBpbmNsdWRlIGxpc3QuCisgICAgICAgICAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSAnJworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICIgVGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHNwZWNpZmljIHN5bnRheCBncm91cAorICAgICAgICAgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsID0gY29tcGxfdHlwZQorICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2V4Y2x1ZGVfc3FsID0gJycKKyAgICAgICAgICAgIGxldCBzeW5fdmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0gT21uaVN5bnRheExpc3QoKQorICAgICAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSBzOnNhdmVfaW5jCisgICAgICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCA9IHM6c2F2ZV9leGMKKyAgICAgICAgICAgICIgQ2FjaGUgdGhlc2UgdmFsdWVzIGZvciBsYXRlciB1c2UKKyAgICAgICAgICAgIGxldCBzOnN5bl9saXN0ICA9IGFkZCggczpzeW5fbGlzdCwgIGNvbXBsX3R5cGUgKQorICAgICAgICAgICAgbGV0IHM6c3luX3ZhbHVlID0gYWRkKCBzOnN5bl92YWx1ZSwgc3luX3ZhbHVlICkKKyAgICAgICAgICAgIGxldCBjb21wbF9saXN0ICA9IHN5bl92YWx1ZQorICAgICAgICBlbmRpZgorICAgIGVuZGlmCisKKyAgICBpZiBiYXNlICE9ICcnCisgICAgICAgICIgRmlsdGVyIHRoZSBsaXN0IGJhc2VkIG9uIHRoZSBmaXJzdCBmZXcgY2hhcmFjdGVycyB0aGUgdXNlcgorICAgICAgICAiIGVudGVyZWQKKyAgICAgICAgbGV0IGV4cHIgPSAndjp2YWwgPX4gIl4nLmJhc2UuJyInCisgICAgICAgIGxldCBjb21wbF9saXN0ID0gZmlsdGVyKGNvcHkoY29tcGxfbGlzdCksIGV4cHIpCisgICAgZW5kaWYKKworICAgIHJldHVybiBjb21wbF9saXN0CitlbmRmdW5jCisKK2Z1bmN0aW9uISBzOlNRTENXYXJuaW5nTXNnKG1zZykKKyAgICBlY2hvaGwgV2FybmluZ01zZworICAgIGVjaG9tc2cgYTptc2cgCisgICAgZWNob2hsIE5vbmUKK2VuZGZ1bmN0aW9uCisgICAgICAKK2Z1bmN0aW9uISBzOlNRTENFcnJvck1zZyhtc2cpCisgICAgZWNob2hsIEVycm9yTXNnCisgICAgZWNob21zZyBhOm1zZyAKKyAgICBlY2hvaGwgTm9uZQorZW5kZnVuY3Rpb24KKyAgICAgIAorZnVuY3Rpb24hIHM6U1FMQ0NoZWNrNGRiZXh0KCkKKyAgICBpZiAhZXhpc3RzKCdnOmxvYWRlZF9kYmV4dCcpCisgICAgICAgIGxldCBtc2cgPSAiVGhlIGRiZXh0IHBsdWdpbiBtdXN0IGJlIGxvYWRlZCBmb3IgZHluYW1pYyBTUUwgY29tcGxldGlvbiIKKyAgICAgICAgY2FsbCBzOlNRTENFcnJvck1zZyhtc2cpCisgICAgICAgICIgTGVhdmUgdGltZSBmb3IgdGhlIHVzZXIgdG8gcmVhZCB0aGUgZXJyb3IgbWVzc2FnZQorICAgICAgICA6c2xlZXAgMgorICAgICAgICByZXR1cm4gLTEKKyAgICBlbHNlaWYgZzpsb2FkZWRfZGJleHQgPCAyMTAKKyAgICAgICAgbGV0IG1zZyA9ICJUaGUgZGJleHQgcGx1Z2luIG11c3QgYmUgYXQgbGVhc3QgdmVyc2lvbiAyLjEwICIgLgorICAgICAgICAgICAgICAgICAgICBcICIgZm9yIGR5bmFtaWMgU1FMIGNvbXBsZXRpb24iCisgICAgICAgIGNhbGwgczpTUUxDRXJyb3JNc2cobXNnKQorICAgICAgICAiIExlYXZlIHRpbWUgZm9yIHRoZSB1c2VyIHRvIHJlYWQgdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgOnNsZWVwIDIKKyAgICAgICAgcmV0dXJuIC0xCisgICAgZW5kaWYKKyAgICByZXR1cm4gMQorZW5kZnVuY3Rpb24KKworZnVuY3Rpb24hIHM6U1FMQ0FkZEFsaWFzKHRhYmxlX25hbWUsIHRhYmxlX2FsaWFzLCBjb2xzKQorICAgIGxldCB0YWJsZV9uYW1lICA9IGE6dGFibGVfbmFtZQorICAgIGxldCB0YWJsZV9hbGlhcyA9IGE6dGFibGVfYWxpYXMKKyAgICBsZXQgY29scyAgICAgICAgPSBhOmNvbHMKKworICAgIGlmIGc6b21uaV9zcWxfdXNlX3RibF9hbGlhcyAhPSAnbicgCisgICAgICAgIGlmIHRhYmxlX2FsaWFzID09ICcnCisgICAgICAgICAgICBpZiAnZGEnID1+PyBnOm9tbmlfc3FsX3VzZV90YmxfYWxpYXMKKyAgICAgICAgICAgICAgICBpZiB0YWJsZV9uYW1lID1+ICdfJworICAgICAgICAgICAgICAgICAgICAiIFRyZWF0IF8gYXMgc2VwYXJhdG9ycyBzaW5jZSBwZW9wbGUgb2Z0ZW4gdXNlIHRoZXNlCisgICAgICAgICAgICAgICAgICAgICIgZm9yIHdvcmQgc2VwYXJhdG9ycworICAgICAgICAgICAgICAgICAgICBsZXQgc2F2ZV9rZXl3b3JkID0gJmlza2V5d29yZAorICAgICAgICAgICAgICAgICAgICBzZXRsb2NhbCBpc2tleXdvcmQtPV8KKworICAgICAgICAgICAgICAgICAgICAiIEdldCB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZAorICAgICAgICAgICAgICAgICAgICAiIFtbOmFscGhhOl1dIGlzIHVzZWQgaW5zdGVhZCBvZiBcdyAKKyAgICAgICAgICAgICAgICAgICAgIiB0byBjYXRjaCBleHRlbmRlZCBhY2NlbnRlZCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmxlX2FsaWFzID0gc3Vic3RpdHV0ZSggCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgdGFibGVfbmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgJ1w8W1s6YWxwaGE6XV1cK1w+X1w/JywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgJ1w9c3RycGFydChzdWJtYXRjaCgwKSwgMCwgMSknLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAnZycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCApCisgICAgICAgICAgICAgICAgICAgICIgUmVzdG9yZSBvcmlnaW5hbCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBsZXQgJmlza2V5d29yZCA9IHNhdmVfa2V5d29yZAorICAgICAgICAgICAgICAgIGVsc2VpZiB0YWJsZV9uYW1lID1+ICdcdVxVJworICAgICAgICAgICAgICAgICAgICBsZXQgaW5pdGlhbHMgPSBzdWJzdGl0dXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIHRhYmxlX25hbWUsICdcKFx1XClcVSonLCAnXDEnLCAnZycpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsZXQgdGFibGVfYWxpYXMgPSBzdHJwYXJ0KHRhYmxlX25hbWUsIDAsIDEpCisgICAgICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgIGVuZGlmCisgICAgICAgIGVuZGlmCisgICAgICAgIGlmIHRhYmxlX2FsaWFzICE9ICcnCisgICAgICAgICAgICAiIEZvbGxvd2luZyBhIHdvcmQgY2hhcmFjdGVyLCBtYWtlIHN1cmUgdGhlcmUgaXMgYSAuIGFuZCBubyBzcGFjZXMKKyAgICAgICAgICAgIGxldCB0YWJsZV9hbGlhcyA9IHN1YnN0aXR1dGUodGFibGVfYWxpYXMsICdcd1x6c1wuXD9ccyokJywgJy4nLCAnJykKKyAgICAgICAgICAgIGlmICdhJyA9fj8gZzpvbW5pX3NxbF91c2VfdGJsX2FsaWFzICYmIGE6dGFibGVfYWxpYXMgPT0gJycKKyAgICAgICAgICAgICAgICBsZXQgdGFibGVfYWxpYXMgPSBpbnB1dGRpYWxvZygiRW50ZXIgdGFibGUgYWxpYXM6IiwgdGFibGVfYWxpYXMpCisgICAgICAgICAgICBlbmRpZgorICAgICAgICBlbmRpZgorICAgICAgICBpZiB0YWJsZV9hbGlhcyAhPSAnJworICAgICAgICAgICAgbGV0IGNvbHMgPSBzdWJzdGl0dXRlKGNvbHMsICdcPFx3JywgdGFibGVfYWxpYXMuJyYnLCAnZycpCisgICAgICAgIGVuZGlmCisgICAgZW5kaWYKKworICAgIHJldHVybiBjb2xzCitlbmRmdW5jdGlvbgorCitmdW5jdGlvbiEgczpTUUxDR2V0Q29sdW1ucyh0YWJsZV9uYW1lLCBsaXN0X3R5cGUpCisgICAgbGV0IHRhYmxlX25hbWUgICA9IG1hdGNoc3RyKGE6dGFibGVfbmFtZSwgJ15cd1wrJykKKyAgICBsZXQgdGFibGVfY29scyAgID0gW10KKyAgICBsZXQgdGFibGVfYWxpYXMgID0gJycKKyAgICBsZXQgbW92ZV90b190b3AgID0gMQorCisgICAgaWYgZzpsb2FkZWRfZGJleHQgPj0gMjEwCisgICAgICAgIGxldCBzYXZlU2V0dGluZ0FsaWFzID0gREJfbGlzdE9wdGlvbigndXNlX3RibF9hbGlhcycpCisgICAgICAgIGV4ZWMgJ0RCU2V0T3B0aW9uIHVzZV90YmxfYWxpYXM9bicKKyAgICBlbmRpZgorCisgICAgIiBDaGVjayBpZiB3ZSBoYXZlIGFscmVhZHkgY2FjaGVkIHRoZSBjb2x1bW4gbGlzdCBmb3IgdGhpcyB0YWJsZQorICAgICIgYnkgaXRzIG5hbWUKKyAgICBsZXQgbGlzdF9pZHggPSBpbmRleChzOnRibF9uYW1lLCB0YWJsZV9uYW1lLCAwLCAmaWdub3JlY2FzZSkKKyAgICBpZiBsaXN0X2lkeCA+IC0xCisgICAgICAgIGxldCB0YWJsZV9jb2xzID0gc3BsaXQoczp0YmxfY29sc1tsaXN0X2lkeF0pCisgICAgZWxzZQorICAgICAgICAiIENoZWNrIGlmIHdlIGhhdmUgYWxyZWFkeSBjYWNoZWQgdGhlIGNvbHVtbiBsaXN0IGZvciB0aGlzIHRhYmxlIAorICAgICAgICAiIGJ5IGl0cyBhbGlhcywgYXNzdW1pbmcgdGhlIHRhYmxlX25hbWUgcHJvdmlkZWQgd2FzIGFjdHVhbGx5CisgICAgICAgICIgdGhlIGFsaWFzIGZvciB0aGUgdGFibGUgaW5zdGVhZAorICAgICAgICAiICAgICBzZWxlY3QgKgorICAgICAgICAiICAgICAgIGZyb20gYXJlYSBhCisgICAgICAgICIgICAgICB3aGVyZSBhLgorICAgICAgICBsZXQgbGlzdF9pZHggPSBpbmRleChzOnRibF9hbGlhcywgdGFibGVfbmFtZSwgMCwgJmlnbm9yZWNhc2UpCisgICAgICAgIGlmIGxpc3RfaWR4ID4gLTEKKyAgICAgICAgICAgIGxldCB0YWJsZV9hbGlhcyA9IHRhYmxlX25hbWUKKyAgICAgICAgICAgIGxldCB0YWJsZV9uYW1lICA9IHM6dGJsX25hbWVbbGlzdF9pZHhdCisgICAgICAgICAgICBsZXQgdGFibGVfY29scyAgPSBzcGxpdChzOnRibF9jb2xzW2xpc3RfaWR4XSkKKyAgICAgICAgZW5kaWYKKyAgICBlbmRpZgorCisgICAgIiBJZiB3ZSBoYXZlIG5vdCBmb3VuZCBhIGNhY2hlZCBjb3B5IG9mIHRoZSB0YWJsZQorICAgICIgQW5kIHRoZSB0YWJsZSBlbmRzIGluIGEgIi4iIG9yIHdlIGFyZSBsb29raW5nIGZvciBhIGNvbHVtbiBsaXN0CisgICAgIiBpZiBsaXN0X2lkeCA9PSAtMSAmJiAoYTp0YWJsZV9uYW1lID1+ICdcLicgfHwgYjpzcWxfY29tcGxfdHlwZSA9fiAnY29sdW1uJykKKyAgICAiIGlmIGxpc3RfaWR4ID09IC0xICYmIChhOnRhYmxlX25hbWUgPX4gJ1wuJyB8fCBhOmxpc3RfdHlwZSA9fiAnY3N2JykKKyAgICBpZiBsaXN0X2lkeCA9PSAtMSAKKyAgICAgICAgIGxldCBzYXZlWSAgICAgID0gQHkKKyAgICAgICAgIGxldCBzYXZlU2VhcmNoID0gQC8KKyAgICAgICAgIGxldCBzYXZlV1NjYW4gID0gJndyYXBzY2FuCisgICAgICAgICBsZXQgY3VybGluZSAgICA9IGxpbmUoIi4iKQorICAgICAgICAgbGV0IGN1cmNvbCAgICAgPSBjb2woIi4iKQorCisgICAgICAgICAiIERvIG5vdCBsZXQgc2VhcmNocyB3cmFwCisgICAgICAgICBzZXRsb2NhbCBub3dyYXBzY2FuCisgICAgICAgICAiIElmIC4gd2FzIGVudGVyZWQsIGxvb2sgYXQgdGhlIHdvcmQganVzdCBiZWZvcmUgdGhlIC4KKyAgICAgICAgICIgV2UgYXJlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBsaWtlIHRoaXM6CisgICAgICAgICAiICAgIHNlbGVjdCAqIAorICAgICAgICAgIiAgICAgIGZyb20gY3VzdG9tZXIgYworICAgICAgICAgIiAgICAgd2hlcmUgYy4KKyAgICAgICAgICIgU28gd2hlbiAuIGlzIHByZXNzZWQsIHdlIG5lZWQgdG8gZmluZCAnYycKKyAgICAgICAgICIKKworICAgICAgICAgIiBTZWFyY2ggYmFja3dhcmRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0YXRlbWVudAorICAgICAgICAgIiBhbmQgZG8gTk9UIHdyYXAKKyAgICAgICAgICIgZXhlYyAnc2lsZW50ISBub3JtYWwhIHY/XDxcKHNlbGVjdFx8dXBkYXRlXHxkZWxldGVcfDtcKVw+Jy4iXG4iLicieXknCisgICAgICAgICBleGVjICdzaWxlbnQhIG5vcm1hbCEgP1w8XChzZWxlY3RcfHVwZGF0ZVx8ZGVsZXRlXHw7XClcPicuIlxuIgorCisgICAgICAgICAiIFN0YXJ0IGNoYXJhY3Rlcndpc2UgdmlzdWFsIG1vZGUKKyAgICAgICAgICIgQWR2YW5jZSByaWdodCBvbmUgY2hhcmFjdGVyCisgICAgICAgICAiIFNlYXJjaCBmb3dhcmQgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAiICAgICAxLiAgQW5vdGhlciBzZWxlY3QvdXBkYXRlL2RlbGV0ZSBzdGF0ZW1lbnQKKyAgICAgICAgICIgICAgIDIuICBBIDsgYXQgdGhlIGVuZCBvZiBhIGxpbmUgKHRoZSBkZWxpbWl0ZXIpCisgICAgICAgICAiICAgICAzLiAgVGhlIGVuZCBvZiB0aGUgZmlsZSAoaW5jYXNlIG5vIGRlbGltaXRlcikKKyAgICAgICAgICIgWWFuayB0aGUgdmlzdWFsbHkgc2VsZWN0ZWQgdGV4dCBpbnRvIHRoZSAieSByZWdpc3Rlci4KKyAgICAgICAgIGV4ZWMgJ3NpbGVudCEgbm9ybWFsISB2bC9cKFw8c2VsZWN0XD5cfFw8dXBkYXRlXD5cfFw8ZGVsZXRlXD5cfDtccyokXHxcJSRcKScuIlxuIi4nInl5JworCisgICAgICAgICBsZXQgcXVlcnkgPSBAeQorICAgICAgICAgbGV0IHF1ZXJ5ID0gc3Vic3RpdHV0ZShxdWVyeSwgIlxuIiwgJyAnLCAnZycpCisgICAgICAgICBsZXQgZm91bmQgPSAwCisKKyAgICAgICAgICIgaWYgcXVlcnkgPX4/ICdeXChzZWxlY3RcfHVwZGF0ZVx8ZGVsZXRlXCknCisgICAgICAgICBpZiBxdWVyeSA9fj8gJ15cKHNlbGVjdFwpJworICAgICAgICAgICAgIGxldCBmb3VuZCA9IDEKKyAgICAgICAgICAgICAiICBcKFwoXDxcd1wrXD5cKVwuXClcPyAgIC0gCisgICAgICAgICAgICAgIiAnZnJvbS5cey19JyAgLSBTdGFydGluZyBhdCB0aGUgZnJvbSBjbGF1c2UKKyAgICAgICAgICAgICAiICdcenNcKFwoXDxcd1wrXD5cKVwuXClcPycgLSBHZXQgdGhlIG93bmVyIG5hbWUgKG9wdGlvbmFsKQorICAgICAgICAgICAgICIgJ1w8XHdcK1w+XHplJyAtIEdldCB0aGUgdGFibGUgbmFtZSAKKyAgICAgICAgICAgICAiICdcc1wrXDwnLnRhYmxlX25hbWUuJ1w+JyAtIEZvbGxvd2VkIGJ5IHRoZSBhbGlhcworICAgICAgICAgICAgICIgJ1xzKlwuXEAhLionICAtIENhbm5vdCBiZSBmb2xsb3dlZCBieSBhIC4KKyAgICAgICAgICAgICAiICdcKFw8d2hlcmVcPlx8JFwpJyAtIE11c3QgYmUgZm9sbG93ZWQgYnkgYSBXSEVSRSBjbGF1c2UKKyAgICAgICAgICAgICAiICcuKicgIC0gRXhjbHVkZSB0aGUgcmVzdCBvZiB0aGUgbGluZSBpbiB0aGUgbWF0Y2gKKyAgICAgICAgICAgICBsZXQgdGFibGVfbmFtZV9uZXcgPSBtYXRjaHN0cihAeSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgXCAnZnJvbS5cey19Jy4KKyAgICAgICAgICAgICAgICAgICAgICAgICBcICdcenNcKFwoXDxcd1wrXD5cKVwuXClcPycuCisgICAgICAgICAgICAgICAgICAgICAgICAgXCAnXDxcd1wrXD5cemUnLgorICAgICAgICAgICAgICAgICAgICAgICAgIFwgJ1xzXCtcJShhc1xzXCtcKVw/XDwnLnRhYmxlX25hbWUuJ1w+Jy4KKyAgICAgICAgICAgICAgICAgICAgICAgICBcICdccypcLlxAIS4qJy4KKyAgICAgICAgICAgICAgICAgICAgICAgICBcICdcKFw8d2hlcmVcPlx8JFwpJy4KKyAgICAgICAgICAgICAgICAgICAgICAgICBcICcuKicKKyAgICAgICAgICAgICAgICAgICAgICAgICBcICkKKyAgICAgICAgICAgICBpZiB0YWJsZV9uYW1lX25ldyAhPSAnJworICAgICAgICAgICAgICAgICBsZXQgdGFibGVfYWxpYXMgPSB0YWJsZV9uYW1lCisgICAgICAgICAgICAgICAgIGxldCB0YWJsZV9uYW1lICA9IHRhYmxlX25hbWVfbmV3CisKKyAgICAgICAgICAgICAgICAgbGV0IGxpc3RfaWR4ID0gaW5kZXgoczp0YmxfbmFtZSwgdGFibGVfbmFtZSwgMCwgJmlnbm9yZWNhc2UpCisgICAgICAgICAgICAgICAgIGlmIGxpc3RfaWR4ID4gLTEKKyAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJsZV9jb2xzICA9IHNwbGl0KHM6dGJsX2NvbHNbbGlzdF9pZHhdKQorICAgICAgICAgICAgICAgICAgICAgbGV0IHM6dGJsX25hbWVbbGlzdF9pZHhdICA9IHRhYmxlX25hbWUKKyAgICAgICAgICAgICAgICAgICAgIGxldCBzOnRibF9hbGlhc1tsaXN0X2lkeF0gPSB0YWJsZV9hbGlhcworICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdF9pZHggPSBpbmRleChzOnRibF9hbGlhcywgdGFibGVfbmFtZSwgMCwgJmlnbm9yZWNhc2UpCisgICAgICAgICAgICAgICAgICAgICBpZiBsaXN0X2lkeCA+IC0xCisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmxlX2NvbHMgPSBzcGxpdChzOnRibF9jb2xzW2xpc3RfaWR4XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgczp0YmxfbmFtZVtsaXN0X2lkeF0gID0gdGFibGVfbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzOnRibF9hbGlhc1tsaXN0X2lkeF0gPSB0YWJsZV9hbGlhcworICAgICAgICAgICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgICAgICAgZW5kaWYKKworICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIiBTaW1wbHkgYXNzdW1lIGl0IGlzIGEgdGFibGUgbmFtZSBwcm92aWRlZCB3aXRoIGEgLiBvbiB0aGUgZW5kCisgICAgICAgICAgICAgbGV0IGZvdW5kID0gMQorICAgICAgICAgZW5kaWYKKworICAgICAgICAgbGV0IEB5ICAgICAgICA9IHNhdmVZCisgICAgICAgICBsZXQgQC8gICAgICAgID0gc2F2ZVNlYXJjaAorICAgICAgICAgbGV0ICZ3cmFwc2NhbiA9IHNhdmVXU2NhbgorCisgICAgICAgICAiIFJldHVybiB0byBwcmV2aW91cyBsb2NhdGlvbgorICAgICAgICAgY2FsbCBjdXJzb3IoY3VybGluZSwgY3VyY29sKQorICAgICAgICAgCisgICAgICAgICBpZiBmb3VuZCA9PSAwCisgICAgICAgICAgICAgaWYgZzpsb2FkZWRfZGJleHQgPiAyMDEKKyAgICAgICAgICAgICAgICAgZXhlYyAnREJTZXRPcHRpb24gdXNlX3RibF9hbGlhcz0nLnNhdmVTZXR0aW5nQWxpYXMKKyAgICAgICAgICAgICBlbmRpZgorCisgICAgICAgICAgICAgIiBOb3QgYSBTUUwgc3RhdGVtZW50LCBkbyBub3QgZGlzcGxheSBhIGxpc3QKKyAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgIGVuZGlmCisgICAgZW5kaWYgCisKKyAgICBpZiBlbXB0eSh0YWJsZV9jb2xzKQorICAgICAgICAiIFNwZWNpZnkgc2lsZW50IG1vZGUsIG5vIG1lc3NhZ2VzIHRvIHRoZSB1c2VyICh0YmwsIDEpCisgICAgICAgICIgU3BlY2lmeSBkbyBub3QgY29tbWEgc2VwYXJhdGUgKHRibCwgMSwgMSkKKyAgICAgICAgbGV0IHRhYmxlX2NvbHNfc3RyID0gREJfZ2V0TGlzdENvbHVtbih0YWJsZV9uYW1lLCAxLCAxKQorCisgICAgICAgIGlmIHRhYmxlX2NvbHNfc3RyICE9ICIiCisgICAgICAgICAgICBsZXQgczp0YmxfbmFtZSAgPSBhZGQoIHM6dGJsX25hbWUsICB0YWJsZV9uYW1lICkKKyAgICAgICAgICAgIGxldCBzOnRibF9hbGlhcyA9IGFkZCggczp0YmxfYWxpYXMsIHRhYmxlX2FsaWFzICkKKyAgICAgICAgICAgIGxldCBzOnRibF9jb2xzICA9IGFkZCggczp0YmxfY29scywgIHRhYmxlX2NvbHNfc3RyICkKKyAgICAgICAgICAgIGxldCB0YWJsZV9jb2xzICA9IHNwbGl0KHRhYmxlX2NvbHNfc3RyKQorICAgICAgICBlbmRpZgorCisgICAgZW5kaWYKKworICAgIGlmIGc6bG9hZGVkX2RiZXh0ID4gMjAxCisgICAgICAgIGV4ZWMgJ0RCU2V0T3B0aW9uIHVzZV90YmxfYWxpYXM9Jy5zYXZlU2V0dGluZ0FsaWFzCisgICAgZW5kaWYKKworICAgIGlmIGE6bGlzdF90eXBlID09ICdjc3YnICYmICFlbXB0eSh0YWJsZV9jb2xzKQorICAgICAgICBsZXQgY29scyA9IGpvaW4odGFibGVfY29scywgJywgJykKKyAgICAgICAgbGV0IGNvbHMgPSBzOlNRTENBZGRBbGlhcyh0YWJsZV9uYW1lLCB0YWJsZV9hbGlhcywgY29scykKKyAgICAgICAgbGV0IHRhYmxlX2NvbHMgPSBbY29sc10KKyAgICBlbmRpZgorCisgICAgcmV0dXJuIHRhYmxlX2NvbHMKK2VuZGZ1bmN0aW9uCisKZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvc3ludGF4Y29tcGxldGUudmltIGIvcnVudGltZS9hdXRvbG9hZC9zeW50YXhjb21wbGV0ZS52aW0KaW5kZXggNGExM2Q0Zi4uNjE1OGEyNyAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9zeW50YXhjb21wbGV0ZS52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9zeW50YXhjb21wbGV0ZS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAogIiBMYW5ndWFnZTogICAgQWxsIGxhbmd1YWdlcywgdXNlcyBleGlzdGluZyBzeW50YXggaGlnaGxpZ2h0aW5nIHJ1bGVzCiAiIE1haW50YWluZXI6ICBEYXZpZCBGaXNoYnVybiA8ZmlzaGJ1cm5AaWFueXdoZXJlLmNvbT4KLSIgVmVyc2lvbjogICAgIDEuMgotIiBMYXN0IENoYW5nZTogU2F0IE1hciAxOCAyMDA2IDg6MjU6MzAgUE0KKyIgVmVyc2lvbjogICAgIDEuMworIiBMYXN0IENoYW5nZTogTW9uIE1hciAyNyAyMDA2IDk6Mjk6MzUgUE0KIAogIiBTZXQgY29tcGxldGlvbiB3aXRoIENUUkwtWCBDVFJMLU8gdG8gYXV0b2xvYWRlZCBmdW5jdGlvbi4KICIgVGhpcyBjaGVjayBpcyBpbiBwbGFjZSBpbiBjYXNlIHRoaXMgc2NyaXB0IGlzCkBAIC0xODEsNyArMTgxLDcgQEAKICAgICAgICAgaWYgZ2V0X3N5bl9saXN0ID09IDEKICAgICAgICAgICAgICIgUGFzcyBpbiB0aGUgZnVsbCBzeW50YXggbGlzdGluZywgcGx1cyB0aGUgZ3JvdXAgbmFtZSB3ZSAKICAgICAgICAgICAgICIgYXJlIGludGVyZXN0ZWQgaW4uCi0gICAgICAgICAgICBsZXQgZXh0cmFfc3luX2xpc3QgPSBzOlN5bnRheEdyb3VwSXRlbXMoZ3JvdXBfbmFtZSwgc3ludGF4X2Z1bGwpCisgICAgICAgICAgICBsZXQgZXh0cmFfc3luX2xpc3QgPSBzOlN5bnRheENTeW50YXhHcm91cEl0ZW1zKGdyb3VwX25hbWUsIHN5bnRheF9mdWxsKQogCiAgICAgICAgICAgICBsZXQgc3luX2xpc3QgPSBzeW5fbGlzdCAuIGV4dHJhX3N5bl9saXN0IC4gIlxuIgogICAgICAgICBlbmRpZgpAQCAtMjEyLDcgKzIxMiw3IEBACiAgICAgZW5kaWYKIGVuZGZ1bmN0aW9uCiAKLWZ1bmN0aW9uISBzOlN5bnRheEdyb3VwSXRlbXMoIGdyb3VwX25hbWUsIHN5bnRheF9mdWxsICkKK2Z1bmN0aW9uISBzOlN5bnRheENTeW50YXhHcm91cEl0ZW1zKCBncm91cF9uYW1lLCBzeW50YXhfZnVsbCApCiAKICAgICBsZXQgc3luX2xpc3QgPSAiIgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ldmFsLnR4dCBiL3J1bnRpbWUvZG9jL2V2YWwudHh0CmluZGV4IGZjODk0ODUuLjgxNDYzYjQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2V2YWwudHh0CisrKyBiL3J1bnRpbWUvZG9jL2V2YWwudHh0CkBAIC0xLDQgKzEsNCBAQAotKmV2YWwudHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI2CisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE1MDEsNiArMTUwMSw3IEBACiBhcmdjKCkJCQkJTnVtYmVyCW51bWJlciBvZiBmaWxlcyBpbiB0aGUgYXJndW1lbnQgbGlzdAogYXJnaWR4KCkJCQlOdW1iZXIJY3VycmVudCBpbmRleCBpbiB0aGUgYXJndW1lbnQgbGlzdAogYXJndigge25yfSkJCQlTdHJpbmcJe25yfSBlbnRyeSBvZiB0aGUgYXJndW1lbnQgbGlzdAorYXJndiggKQkJCQlMaXN0CXRoZSBhcmd1bWVudCBsaXN0CiBicm93c2UoIHtzYXZlfSwge3RpdGxlfSwge2luaXRkaXJ9LCB7ZGVmYXVsdH0pCiAJCQkJU3RyaW5nCXB1dCB1cCBhIGZpbGUgcmVxdWVzdGVyCiBicm93c2VkaXIoIHt0aXRsZX0sIHtpbml0ZGlyfSkgIFN0cmluZwlwdXQgdXAgYSBkaXJlY3RvcnkgcmVxdWVzdGVyCkBAIC0xNzY3LDcgKzE3NjgsNyBAQAogCQl0aGUgZmlyc3QgZmlsZS4gIGFyZ2MoKSAtIDEgaXMgdGhlIGxhc3Qgb25lLiAgU2VlIHxhcmdsaXN0fC4KIAogCQkJCQkJCSphcmd2KCkqCi1hcmd2KHtucn0pCVRoZSByZXN1bHQgaXMgdGhlIHtucn10aCBmaWxlIGluIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZQorYXJndihbe25yfV0pCVRoZSByZXN1bHQgaXMgdGhlIHtucn10aCBmaWxlIGluIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZQogCQljdXJyZW50IHdpbmRvdy4gIFNlZSB8YXJnbGlzdHwuICAiYXJndigwKSIgaXMgdGhlIGZpcnN0IG9uZS4KIAkJRXhhbXBsZTogPgogCTpsZXQgaSA9IDAKQEAgLTE3NzYsNyArMTc3Nyw5IEBACiAJOiAgZXhlICdhbWVudSBBcmcuJyAuIGYgLiAnIDplICcgLiBmIC4gJzxDUj4nCiAJOiAgbGV0IGkgPSBpICsgMQogCTplbmR3aGlsZQotPAorPAkJV2l0aG91dCB0aGUge25yfSBhcmd1bWVudCBhIHxMaXN0fCB3aXRoIHRoZSB3aG9sZSB8YXJnbGlzdHwgaXMKKwkJcmV0dXJuZWQuCisKIAkJCQkJCQkqYnJvd3NlKCkqCiBicm93c2Uoe3NhdmV9LCB7dGl0bGV9LCB7aW5pdGRpcn0sIHtkZWZhdWx0fSkKIAkJUHV0IHVwIGEgZmlsZSByZXF1ZXN0ZXIuICBUaGlzIG9ubHkgd29ya3Mgd2hlbiAiaGFzKCJicm93c2UiKSIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ZvbGQudHh0IGIvcnVudGltZS9kb2MvZm9sZC50eHQKaW5kZXggOWY0OTFkMy4uYzUyZDAwZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZm9sZC50eHQKKysrIGIvcnVudGltZS9kb2MvZm9sZC50eHQKQEAgLTEsNCArMSw0IEBACi0qZm9sZC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTAKKypmb2xkLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTA5LDYgKzEwOSw3IEBACiAKIFRoZXJlIG11c3QgYmUgbm8gc2lkZSBlZmZlY3RzIGZyb20gdGhlIGV4cHJlc3Npb24uICBUaGUgdGV4dCBpbiB0aGUgYnVmZmVyLAogY3Vyc29yIHBvc2l0aW9uLCB0aGUgc2VhcmNoIHBhdHRlcm5zLCBvcHRpb25zIGV0Yy4gbXVzdCBub3QgYmUgY2hhbmdlZC4KK1lvdSBjYW4gY2hhbmdlIGFuZCByZXN0b3JlIHRoZW0gaWYgeW91IGFyZSBjYXJlZnVsLgogCiBJZiB0aGVyZSBpcyBzb21lIGVycm9yIGluIHRoZSBleHByZXNzaW9uLCBvciB0aGUgcmVzdWx0aW5nIHZhbHVlIGlzbid0CiByZWNvZ25pemVkLCB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlIGFuZCB0aGUgZm9sZCBsZXZlbCB3aWxsIGJlIHplcm8uCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbmRlbnQudHh0IGIvcnVudGltZS9kb2MvaW5kZW50LnR4dAppbmRleCBlNjY2NTkwLi5kNmY0YTYyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbmRlbnQudHh0CisrKyBiL3J1bnRpbWUvZG9jL2luZGVudC50eHQKQEAgLTEsNCArMSw0IEBACi0qaW5kZW50LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMzAKKyppbmRlbnQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNjgsNyArNjgsNyBAQAogCSJlIglpZiB5b3UgdHlwZSB0aGUgc2Vjb25kICdlJyBmb3IgYW4gImVsc2UiIGF0IHRoZSBzdGFydCBvZiBhCiAJCWxpbmUKIAotQ2hhcmFjdGVycyB0aGF0IGNhbiBwcmVjZWRlIGVhY2gga2V5OgorQ2hhcmFjdGVycyB0aGF0IGNhbiBwcmVjZWRlIGVhY2gga2V5OgkJCQkqaV9DVFJMLUYqCiAhCVdoZW4gYSAnIScgcHJlY2VkZXMgdGhlIGtleSwgVmltIHdpbGwgbm90IGluc2VydCB0aGUga2V5IGJ1dCB3aWxsCiAJaW5zdGVhZCByZWluZGVudCB0aGUgY3VycmVudCBsaW5lLiAgVGhpcyBhbGxvd3MgeW91IHRvIGRlZmluZSBhCiAJY29tbWFuZCBrZXkgZm9yIHJlaW5kZW50aW5nIHRoZSBjdXJyZW50IGxpbmUuICBDVFJMLUYgaXMgdGhlIGRlZmF1bHQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2luc2VydC50eHQgYi9ydW50aW1lL2RvYy9pbnNlcnQudHh0CmluZGV4IDYxMzhhZjYuLjRlYjRiY2YgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2luc2VydC50eHQKKysrIGIvcnVudGltZS9kb2MvaW5zZXJ0LnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbnNlcnQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOAorKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMjE0LDExICsxMjE0LDExIEBACiBDU1MJCQkJCQkJKmZ0LWNzcy1vbW5pKgogCiBDb21wbGV0ZSBwcm9wZXJ0aWVzIGFuZCB0aGVpciBhcHByb3ByaWF0ZSB2YWx1ZXMgYWNjb3JkaW5nIHRvIENTUyAyLjEKLXNwZWNpZmljYXRpb24uIAorc3BlY2lmaWNhdGlvbi4KIAogCi1IVE1MIGFuZCBYSFRNTAkJCQkJCSpmdC1odG1sLW9tbmkqCi0JCQkJCQkJKmZ0LXhodG1sLW9tbmkqCitIVE1MCQkJCQkJCSpmdC1odG1sLW9tbmkqCitYSFRNTAkJCQkJCQkqZnQteGh0bWwtb21uaSoKIAogQ1RSTC1YIENUUkwtTyBwcm92aWRlcyBjb21wbGV0aW9uIG9mIHZhcmlvdXMgZWxlbWVudHMgb2YgKFgpSFRNTCBmaWxlcy4gIEl0IGlzCiBkZXNpZ25lZCB0byBzdXBwb3J0IHdyaXRpbmcgb2YgWEhUTUwgMS4wIFN0cmljdCBmaWxlcyBidXQgd2lsbCBhbHNvIHdvcmtzIGZvcgpAQCAtMTIzOSwxMiArMTIzOSwxMiBAQAogLSB3aGVuIHVzZWQgYWZ0ZXIgIjwvIiBDVFJMLVggQ1RSTC1PIHdpbGwgY2xvc2UgdGhlIGxhc3Qgb3BlbmVkIHRhZwogCiBOb3RlOiBXaGVuIHVzZWQgZmlyc3QgdGltZSBjb21wbGV0aW9uIG1lbnUgd2lsbCBiZSBzaG93biB3aXRoIGxpdHRsZSBkZWxheQotLSB0aGlzIGlzIHRpbWUgbmVlZGVkIGZvciBsb2FkaW5nIG9mIGRhdGEgZmlsZS4gIAorLSB0aGlzIGlzIHRpbWUgbmVlZGVkIGZvciBsb2FkaW5nIG9mIGRhdGEgZmlsZS4KIE5vdGU6IENvbXBsZXRpb24gbWF5IGZhaWwgaW4gYmFkbHkgZm9ybWF0dGVkIGRvY3VtZW50cy4gSW4gc3VjaCBjYXNlIHRyeSB0bwogcnVuIHw6bWFrZXwgY29tbWFuZCB0byBkZXRlY3QgZm9ybWF0dGluZyBwcm9ibGVtcy4KIAogCi1KQVZBU0NSSVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZ0LWphdmFzY3JpcHQtb21uaSoKK0pBVkFTQ1JJUFQJCQkJCSAgICAgICAqZnQtamF2YXNjcmlwdC1vbW5pKgogCiBDb21wbGV0aW9uIG9mIG1vc3QgZWxlbWVudHMgb2YgSmF2YVNjcmlwdCBsYW5ndWFnZSBhbmQgRE9NIGVsZW1lbnRzLgogCkBAIC0xMjYwLDcgKzEyNjAsNyBAQAogQ29tcGxldGlvbiB3b3JrcyBpbiBzZXBhcmF0ZSBKYXZhU2NyaXB0IGZpbGVzICgmZnQ9PWphdmFzY3JpcHQpLCBpbnNpZGUgb2YKIDxzY3JpcHQ+IHRhZyBvZiAoWClIVE1MIGFuZCBpbiB2YWx1ZXMgb2YgZXZlbnQgYXR0cmlidXRlcyAoaW5jbHVkaW5nIHNjYW5uaW5nCiBvZiBleHRlcm5hbCBmaWxlcy4KLSAKKwogRE9NIGNvbXBhdGliaWxpdHkKIAogQXQgdGhlIG1vbWVudCAoYmVnaW5uaW5nIG9mIDIwMDYpIHRoZXJlIGFyZSB0d28gbWFpbiBicm93c2VycyAtIE1TIEludGVybmV0CkBAIC0xMjY4LDExICsxMjY4LDExIEBACiBtYXJrZXQuIFRoZW9yZXRpY2FsbHkgc3RhbmRhcmRzIGFyZSBjcmVhdGVkIGJ5IFczQyBvcmdhbmlzYXRpb24KIChodHRwOi8vd3d3LnczYy5vcmcpIGJ1dCB0aGV5IGFyZSBub3QgYWx3YXlzIGZvbGxvd2VkL2ltcGxlbWVudGVkLgogCi0JCUlFIAlGRiAJVzNDICBPbW5pIGNvbXBsZXRpb24gfgotCQkrLy0gICAgICsvLSAgICAgKyAgICArICAgICAgICAgICAgICAgfgotICAgICAgICAgICAgICAgICsgICAgICAgKyAgICAgICAtICAgICsgICAgICAgICAgICAgICB+Ci0gICAgICAgICAgICAgICAgKyAgICAgICAtICAgICAgIC0gICAgLSAgICAgICAgICAgICAgIH4KLSAgICAgICAgICAgICAgICAtICAgICAgICsgICAgICAgLSAgICAtICAgICAgICAgICAgICAgfgorCQlJRQlGRglXM0MgIE9tbmkgY29tcGxldGlvbiB+CisJCSsvLQkrLy0JKyAgICArCQkgICAgIH4KKwkJKwkrCS0gICAgKwkJICAgICB+CisJCSsJLQktICAgIC0JCSAgICAgfgorCQktCSsJLSAgICAtCQkgICAgIH4KIAogUmVnYXJkbGVzcyBmcm9tIHN0YXRlIG9mIGltcGxlbWVudGF0aW9uIGluIGJyb3dzZXJzIGJ1dCBpZiBlbGVtZW50IGlzIGRlZmluZWQKIGluIHN0YW5kYXJkcywgY29tcGxldGlvbiBwbHVnaW4gd2lsbCBwbGFjZSBlbGVtZW50IGluIHN1Z2dlc3Rpb24gbGlzdC4gV2hlbgpAQCAtMTI4MCw3ICsxMjgwLDcgQEAKIHdpbGwgYmUgc3VnZ2VzdGVkLiBBbGwgb3RoZXIgZWxlbWVudHMgYXJlIG5vdCBwbGFjZWQgaW4gc3VnZ2VzdGlvbiBsaXN0LgogCiAKLVBIUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZ0LXBocC1vbW5pKgorUEhQCQkJCQkJCSpmdC1waHAtb21uaSoKIAogQ29tcGxldGlvbiBvZiBQSFAgY29kZSByZXF1aXJlcyB0YWdzIGZpbGUgZm9yIGNvbXBsZXRpb24gb2YgZGF0YSBmcm9tIGV4dGVybmFsCiBmaWxlcy4gWW91IHNob3VsZCB1c2UgRXh1YmVyYW50IGN0YWdzIHZlcnNpb24gNS41LjQgb3IgbmV3ZXIuIFlvdSBjYW4gZmluZCBpdApAQCAtMTMxNywxNSArMTMxNywxNSBAQAogYW55IGZpbGV0eXBlIGFuZCBwcm92aWRlcyBhIG1pbmltYWwgbGFuZ3VhZ2Utc2Vuc2l0aXZlIGNvbXBsZXRpb24uCiAKIFRvIGVuYWJsZSBzeW50YXggY29kZSBjb21wbGV0aW9uIHlvdSBjYW4gcnVuOiA+Ci0Jc2V0bG9jYWwgb21uaWZ1bmM9c3ludGF4Y29tcGxldGUjQ29tcGxldGUgCisJc2V0bG9jYWwgb21uaWZ1bmM9c3ludGF4Y29tcGxldGUjQ29tcGxldGUKIAogWW91IGNhbiBhdXRvbWF0ZSB0aGlzIGJ5IHBsYWNpbmcgdGhlIGZvbGxvd2luZyBpbiB5b3VyIHZpbXJjIChhZnRlciBhbnkKICI6ZmlsZXR5cGUiIGNvbW1hbmQpOiA+CiAgICAgaWYgaGFzKCJhdXRvY21kIikgJiYgZXhpc3RzKCIrb21uaWZ1bmMiKQotICAgICAgICBhdXRvY21kIEZpbGV0eXBlICoKLSAgICAgICAgICAgICAgICAgICAgXAlpZiAmb21uaWZ1bmMgPT0gIiIgfAotICAgICAgICAgICAgICAgICAgICBcCQlzZXRsb2NhbCBvbW5pZnVuYz1zeW50YXhjb21wbGV0ZSNDb21wbGV0ZSB8Ci0gICAgICAgICAgICAgICAgICAgIFwJZW5kaWYKKwlhdXRvY21kIEZpbGV0eXBlICoKKwkJICAgIFwJaWYgJm9tbmlmdW5jID09ICIiIHwKKwkJICAgIFwJCXNldGxvY2FsIG9tbmlmdW5jPXN5bnRheGNvbXBsZXRlI0NvbXBsZXRlIHwKKwkJICAgIFwJZW5kaWYKICAgICBlbmRpZgogCiBUaGUgYWJvdmUgd2lsbCBzZXQgY29tcGxldGlvbiB0byB0aGlzIHNjcmlwdCBvbmx5IGlmIGEgc3BlY2lmaWMgcGx1Z2luIGRvZXMKQEAgLTEzNjgsNiArMTM2OCwxNCBAQAogZmlsZXR5cGUgYXQgdGhlIGVuZCBvZiB0aGUgdmFyaWFibGUgbmFtZS4KIAogCitTUUwJCQkJCQkJKmZ0LXNxbC1vbW5pKgorCitDb21wbGV0aW9uIGZvciB0aGUgU1FMIGxhbmd1YWdlIGluY2x1ZGVzIHN0YXRlbWVudHMsIGZ1bmN0aW9ucywga2V5d29yZHMuCitJdCB3aWxsIGFsc28gZHluYW1pY2FsbHkgY29tcGxldGUgdGFibGVzLCBwcm9jZWR1cmVzLCB2aWV3cyBhbmQgY29sdW1uIGxpc3RzCit3aXRoIGRhdGEgcHVsbGVkIGRpcmVjdGx5IGZyb20gd2l0aGluIGEgZGF0YWJhc2UuICBGb3IgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zCithbmQgYSB0dXRvcmlhbCBzZWUgfG9tbmktc3FsLWNvbXBsZXRpb258LgorCisKIFhNTAkJCQkJCQkqZnQteG1sLW9tbmkqCiAKIFZpbSA3IHByb3ZpZGVzIG1lY2hhbmlzbSB0byBjb250ZXh0IGF3YXJlIGNvbXBsZXRpb24gb2YgWE1MIGZpbGVzLiAgSXQgZGVwZW5kcwpAQCAtMTM5NCw5ICsxNDAyLDkgQEAKIGl0IGlzIGRhdGEgZmlsZSBmb3IgWEhUTUwgMS4wIFN0cmljdC4KIAogRmlsZSBjb250YWlucyBvbmUgdmFyaWFibGUgd2l0aCBmaXhlZCBuYW1lOiBnOnhtbGRhdGFfeGh0bWwxMHMgLiBJdCBpcwotY29tcG91bmQgZnJvbSB0d28gcGFydHM6IAorY29tcG91bmQgZnJvbSB0d28gcGFydHM6CiAKLTEuICJnOnhtbGRhdGFfIiAgZ2VuZXJhbCBwcmVmaXggCisxLiAiZzp4bWxkYXRhXyIgIGdlbmVyYWwgcHJlZml4CiAyLiAieGh0bWwxMHMiICAgIG5hbWUgb2YgZmlsZSBhbmQgbmFtZSBvZiBkZXNjcmliZWQgWE1MIGRpYWxlY3QKIAogUGFydCB0d28gbXVzdCBiZSBleGFjdGx5IHRoZSBzYW1lIGFzIG5hbWUgb2YgZmlsZS4KQEAgLTE0MDcsMTQgKzE0MTUsMTQgQEAKIGFzIGtleXMgYW5kIHBvc3NpYmxlIHZhbHVlcyBvZiBhdHRyaWJ1dGVzIGFzIHZhbHVlcy4gRXhhbXBsZTogPgogCiAgICAgbGV0IGc6eG1sZGF0YV9jcmlwcGxlZGh0bWwgPSB7Ci0gICAgXCAiaHRtbCI6IAotICAgIFwgWyBbImJvZHkiLCAiaGVhZCJdLCB7ImlkIjogW10sICJ4bWxucyI6IFsiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJdLCAKLSAgICBcICJsYW5nIjogW10sICJ4bWw6bGFuZyI6IFtdLCAiZGlyIjogWyJsdHIiLCAicnRsIl19XSwgCi0gICAgXCAic2NyaXB0IjogCi0gICAgXCBbIFtdLCB7ImlkIjogW10sICJjaGFyc2V0IjogW10sICJ0eXBlIjogWyJ0ZXh0L2phdmFzY3JpcHQiXSwgInNyYyI6IFtdLCAKKyAgICBcICJodG1sIjoKKyAgICBcIFsgWyJib2R5IiwgImhlYWQiXSwgeyJpZCI6IFtdLCAieG1sbnMiOiBbImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiXSwKKyAgICBcICJsYW5nIjogW10sICJ4bWw6bGFuZyI6IFtdLCAiZGlyIjogWyJsdHIiLCAicnRsIl19XSwKKyAgICBcICJzY3JpcHQiOgorICAgIFwgWyBbXSwgeyJpZCI6IFtdLCAiY2hhcnNldCI6IFtdLCAidHlwZSI6IFsidGV4dC9qYXZhc2NyaXB0Il0sICJzcmMiOiBbXSwKICAgICBcICJkZWZlciI6IFsiQk9PTCJdLCAieG1sOnNwYWNlIjogWyJwcmVzZXJ2ZSJdfV0sCi0gICAgXCAibWV0YSI6IAotICAgIFwgWyBbXSwgeyJpZCI6IFtdLCAiaHR0cC1lcXVpdiI6IFtdLCAibmFtZSI6IFtdLCAiY29udGVudCI6IFtdLCAic2NoZW1lIjogCisgICAgXCAibWV0YSI6CisgICAgXCBbIFtdLCB7ImlkIjogW10sICJodHRwLWVxdWl2IjogW10sICJuYW1lIjogW10sICJjb250ZW50IjogW10sICJzY2hlbWUiOgogICAgIFwgW10sICJsYW5nIjogW10sICJ4bWw6bGFuZyI6IFtdLCAiZGlyIjogWyJsdHIiLCAicnRsIl19XQogICAgIFwgInZpbXhtbGVudGl0aWVzIjogWyJhbXAiLCAibHQiLCAiZ3QiLCAiYXBvcyIsICJxdW90Il19LAogICAgIFwgInZpbXhtbHRhZ2luZm8iOiB7CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9tYnl0ZS50eHQgYi9ydW50aW1lL2RvYy9tYnl0ZS50eHQKaW5kZXggOWM3OTcyOC4uNzRiMmY4ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbWJ5dGUudHh0CisrKyBiL3J1bnRpbWUvZG9jL21ieXRlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSptYnl0ZS50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwNQorKm1ieXRlLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIgZXQgYWwuCkBAIC0xMDc2LDYgKzEwNzYsNyBAQAogCScnCScKIFNpbmNlIHRoZSBtYXBwaW5nIGlzIGRlZmluZWQgd2l0aCB8Omxub3JlbWFwfCB0aGUgcmVzdWx0aW5nIHF1b3RlIHdpbGwgbm90IGJlCiB1c2VkIGZvciB0aGUgc3RhcnQgb2YgYW5vdGhlciBjaGFyYWN0ZXIuCitUaGUgImFjY2VudHMiIGtleW1hcCB1c2VzIHRoaXMuCQkJCSprZXltYXAtYWNjZW50cyoKIAogQWx0aG91Z2ggaXQncyBwb3NzaWJsZSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyIGluIHRoZSBzZWNvbmQgY29sdW1uLAogdGhpcyBpcyB1bnVzdWFsLiAgQnV0IHlvdSBjYW4gdXNlIHZhcmlvdXMgd2F5cyB0byBzcGVjaWZ5IHRoZSBjaGFyYWN0ZXI6ID4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0IGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKaW5kZXggODc3YWMxYS4uZjE3NjU2NiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI2Cisqb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTIwNzcsNiArMjA3Nyw4IEBACiAJSGlnaGxpZ2h0IHRoZSBzY3JlZW4gbGluZSBvZiB0aGUgY3Vyc29yIHdpdGggQ3Vyc29yTGluZQogCXxobC1DdXJzb3JMaW5lfC4gIFVzZWZ1bCB0byBlYXNpbHkgc3BvdCB0aGUgY3Vyc29yLiAgV2lsbCBtYWtlIHNjcmVlbgogCXJlZHJhd2luZyBzbG93ZXIuCisJV2hlbiBWaXN1YWwgbW9kZSBpcyBhY3RpdmUgdGhlIGhpZ2hsaWdodGluZyBpc24ndCB1c2VkIHRvIG1ha2UgaXQKKwllYXNpZXIgdG8gc3BvdCB3aGVyZSB0aGUgc2VsZWN0ZWQgYXJlYS4KIAogCiAJCQkJCQkqJ2RlYnVnJyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX21hYy50eHQgYi9ydW50aW1lL2RvYy9vc19tYWMudHh0CmluZGV4IDVkYjYwODUuLjEzNzMwNmIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX21hYy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3NfbWFjLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvc19tYWMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyNgorKm9zX21hYy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyIGV0IGFsLgpAQCAtODYsNiArODYsMTQgQEAKICAgIE9yOgogICAgCS9BcHBsaWNhdGlvbnMvVmltLmFwcC9Db250ZW50cy9NYWNPUy9WaW0gLWcgIHthcmd1bWVudHN9CiAKK1E6IEhvdyBjYW4gSSBzZXQgJFBBVEggdG8gc29tZXRoaW5nIHJlYXNvbmFibGUgd2hlbiBJIHN0YXJ0IFZpbS5hcHAgZnJvbSB0aGUKKyAgIEdVSSBvciB3aXRoIG9wZW4/CitBOiBUaGUgZm9sbG93aW5nIHRyaWNrIHdvcmtzIHdpdGggbW9zdCBzaGVsbHMuICBQdXQgaXQgaW4geW91ciB2aW1yYyBmaWxlLgorICAgVGhpcyBpcyBpbmNsdWRlZCBpbiB0aGUgc3lzdGVtIHZpbXJjIGZpbGUgaW5jbHVkZWQgd2l0aCB0aGUgYmluYXJpZXMKKyAgIGRpc3RyaWJ1dGVkIGF0IG1hY3ZpbS5vcmcgLiA+CisJbGV0IHM6cGF0aCA9IHN5c3RlbSgiZWNobyBlY2hvIFZJTVBBVEgnJHtQQVRIfScgfCAkU0hFTEwgLWwiKQorCWxldCAkUEFUSCA9IG1hdGNoc3RyKHM6cGF0aCwgJ1ZJTVBBVEhcenMuXHstfVx6ZVxuJykKKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA0LiBNYWMgTGFjawkJCQkJCSptYWMtbGFjayoKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0IGIvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0CmluZGV4IDI5ZmNiZDYuLmIzZmNiN2QgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX3BhcmVuLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9wYXJlbi50eHQKQEAgLTEsNCArMSw0IEBACi0qcGlfcGFyZW4udHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKKypwaV9wYXJlbi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzgsNSArMzgsOSBAQAogc3ludGF4IGl0ZW1zIGFyZSBpZ25vcmVkLiAgQW55IHN5bnRheCBpdGVtcyB3aXRoICJzdHJpbmciIG9yICJjb21tZW50Igogc29tZXdoZXJlIGluIHRoZWlyIG5hbWUgYXJlIGNvbnNpZGVyZWQgc3RyaW5nIG9yIGNvbW1lbnQgaXRlbXMuCiAKK1RoZSBzZWFyY2ggaXMgbGltaXRlZCB0byB3aGF0IGlzIHZpc2libGUgaW4gdGhlIHdpbmRvdy4gIFRoZSBwbHVnaW4gZG9lc24ndAorc2VhcmNoIGZ1cnRoZXIgdGhhbiAxMDAgbGluZXMgdG8gYXZvaWQgYSBsb25nIGRlbGF5IHdoZW4gdGhlcmUgYXJlIGNsb3NlZAorZm9sZHMuCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0IGIvcnVudGltZS9kb2Mvc3BvbnNvci50eHQKaW5kZXggYTM0OTViNC4uZjgyNzNhNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3BvbnNvci50eHQKKysrIGIvcnVudGltZS9kb2Mvc3BvbnNvci50eHQKQEAgLTEsNCArMSw0IEBACi0qc3BvbnNvci50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKKypzcG9uc29yLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTMsNyArMTMsNyBAQAogCiBTaW5jZSBCcmFtIGlzIGJhY2sgdG8gYSBwYWlkIGpvYiB0aGUgbW9uZXkgd2lsbCBub3cgYmUgdXNlZCB0byBoZWxwIGNoaWxkcmVuCiBpbiBVZ2FuZGEuICBTZWUgfHVnYW5kYXwuICBCdXQgYXQgdGhlIHNhbWUgdGltZSBkb25hdGlvbnMgaW5jcmVhc2UgQnJhbSdzCi1tb3RpdmF0aW9uIHRvIHdvcmsgb24gVmltIQorbW90aXZhdGlvbiB0byBrZWVwIHdvcmtpbmcgb24gVmltIQogCiBGb3IgdGhlIG1vc3QgcmVjZW50IGluZm9ybWF0aW9uIGFib3V0IHNwb25zb3JpbmcgbG9vayBvbiB0aGUgVmltIHdlYiBzaXRlOgogCkBAIC05Myw3ICs5Myw3IEBACiBXaHkgc2hvdWxkIEkgZ2l2ZSBtb25leT8KIAogSWYgeW91IGRvIG5vdCBzaG93IHlvdXIgYXBwcmVjaWF0aW9uIGZvciBWaW0gdGhlbiBCcmFtIHdpbGwgYmUgbGVzcyBtb3RpdmF0ZWQKLXRvIGZpeCBidWdzIGFuZCBhZGQgbmV3IGZlYXR1cmVzLgordG8gZml4IGJ1Z3MgYW5kIGFkZCBuZXcgZmVhdHVyZXMuICBIZSB3aWxsIGRvIHNvbWV0aGluZyBlbHNlIGluc3RlYWQuCiAKIAogSG93IG11Y2ggbW9uZXkgc2hvdWxkIEkgc2VuZD8KQEAgLTE3Nyw2ICsxNzcsMTIgQEAKIHNlbnQgbW9uZXkuICBUaGUgcG9pbnRzIHdpbGwgYmUgY291bnRlZCByaWdodCBhd2F5LgogCiAKK0NhbiBJIGFkZCBhbiBpdGVtIHRvIHZvdGUgb24/CisKK05vdCBkaXJlY3RseS4gIFlvdSBjYW4gc3VnZ2VzdCBpdGVtcyB0byB2b3RlIG9uIHRvIEJyYW0uICBIZSB3aWxsIGNvbnNpZGVyCitmaXR0aW5nIHlvdXIgaXRlbSBpbnRvIHRoZSBsaXN0LgorCisKIEhvdyBhYm91dCBDaGFyaXR5d2FyZT8KIAogQ3VycmVudGx5IHRoZSBWaW0gZG9uYXRpb25zIGdvIHRvIHx1Z2FuZGF8IGFueXdheS4gIFRodXMgaXQgZG9lc24ndCBtYXR0ZXIgaWYKQEAgLTIwMiw3ICsyMDgsOSBAQAogCiBDYW4geW91IHNlbmQgbWUgYSBiaWxsPwogCi1Oby4gIEJ1dCBhIHJlY2VpcHQgaXMgcG9zc2libGUuCitObywgYmVjYXVzZSB0aGVyZSBpcyBubyByZWxhdGlvbiBiZXR3ZWVuIHRoZSBtb25leSB5b3Ugc2VuZCBhbmQgdGhlIHdvcmsgdGhhdCAKK2lzIGRvbmUuICBCdXQgYSByZWNlaXB0IGlzIHBvc3NpYmxlLgorCiAKIAogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3NxbC50eHQgYi9ydW50aW1lL2RvYy9zcWwudHh0CmluZGV4IDdhNmM1YjguLjVkMDdhNWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3NxbC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3FsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzcWwudHh0KiAgIAlGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiBGcmkgSmFuIDA2IDIwMDYgODowOToyNSBBTQorKnNxbC50eHQqICAgCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IFR1ZSBNYXIgMjggMjAwNiA5OjMzOjE0IFBNCiAKIGJ5IERhdmlkIEZpc2hidXJuCiAKQEAgLTE3LDYgKzE3LDE2IEBACiAgICAgMi4xIFNRTFNldFR5cGUJCSAgICAgICAgCXxTUUxTZXRUeXBlfAogICAgIDIuMiBTUUwgRGlhbGVjdCBEZWZhdWx0CQkgICAgICAgIHxzcWwtdHlwZS1kZWZhdWx0fAogMy4gQWRkaW5nIG5ldyBTUUwgRGlhbGVjdHMJCSAgICAgICAgfHNxbC1hZGRpbmctZGlhbGVjdHN8Cis0LiBPTU5JIFNRTCBDb21wbGV0aW9uICAJCSAgICAgICAgfHNxbC1jb21wbGV0aW9ufAorICAgIDQuMSBTdGF0aWMgbW9kZQkJICAgICAgICAJfHNxbC1jb21wbGV0aW9uLXN0YXRpY3wKKyAgICA0LjIgRHluYW1pYyBtb2RlICAgIAkJICAgICAgICB8c3FsLWNvbXBsZXRpb24tZHluYW1pY3wKKyAgICA0LjMgVHV0b3JpYWwJCQkJfHNxbC1jb21wbGV0aW9uLXR1dG9yaWFsfAorICAgICAgICA0LjMuMSBDb21wbGV0ZSBUYWJsZXMJCQl8c3FsLWNvbXBsZXRpb24tdGFibGVzfAorICAgICAgICA0LjMuMiBDb21wbGV0ZSBDb2x1bW5zCQkJfHNxbC1jb21wbGV0aW9uLWNvbHVtbnN8CisgICAgICAgIDQuMy4zIENvbXBsZXRlIFByb2NlZHVyZXMJCXxzcWwtY29tcGxldGlvbi1wcm9jZWR1cmVzfAorICAgICAgICA0LjMuNCBDb21wbGV0ZSBWaWV3cwkJCXxzcWwtY29tcGxldGlvbi12aWV3c3wKKyAgICA0LjQgQ29tcGxldGlvbiBDdXN0b21pemF0aW9uCQl8c3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbnwKKyAgICA0LjUgQ3VzdG9taXppbmcgTWFwcwkJCXxzcWwtY29tcGxldGlvbi1tYXBzfAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDEuIE5hdmlnYXRpb24JICAgICAgICAJCQkqc3FsLW5hdmlnYXRpb24qCkBAIC04OSw3ICs5OSw3IEBACiAKIDEuMyBQcmVkZWZpbmVkIE9iamVjdCBNb3Rpb25zICAgICAgICAgICAgICAgICAgICpzcWwtcHJlZGVmaW5lZC1vYmplY3RzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLU1vc3QgcmVsYXRpb25hbCBkYXRhYmFzZXMgc3VwcG9ydCB2YXJpb3VzIHN0YW5kYXJkIGZlYXR1cmVzLCB0YWJsZXMsIGluZGljaWVzLAorTW9zdCByZWxhdGlvbmFsIGRhdGFiYXNlcyBzdXBwb3J0IHZhcmlvdXMgc3RhbmRhcmQgZmVhdHVyZXMsIHRhYmxlcywgaW5kaWNlcywKIHRyaWdnZXJzIGFuZCBzdG9yZWQgcHJvY2VkdXJlcy4gIEVhY2ggdmVuZG9yIGFsc28gaGFzIGEgdmFyaWV0eSBvZiBwcm9wcmlldGFyeQogb2JqZWN0cy4gIFRoZSBuZXh0IHNldCBvZiBtYXBzIGhhdmUgYmVlbiBjcmVhdGVkIHRvIGhlbHAgbW92ZSBiZXR3ZWVuIHRoZXNlCiBvYmplY3RzLiAgRGVwZW5kcyBvbiB3aGljaCBkYXRhYmFzZSB2ZW5kb3IgeW91IGFyZSB1c2luZywgdGhlIGxpc3Qgb2Ygb2JqZWN0cwpAQCAtMjkzLDYgKzMwMywzMzMgQEAKIHBpY2t1cCB0aGUgbmV3IFNRTCBmaWxlcyBhbmQgbG9hZCB0aGVtIHdoZW4geW91IGlzc3VlIHRoZSBTUUxTZXRUeXBlIGNvbW1hbmQuIAogCiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorNC4gT01OSSBTUUwgQ29tcGxldGlvbiAgCQkgICAgICAgICpzcWwtY29tcGxldGlvbiogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb21uaS1zcWwtY29tcGxldGlvbioKIAorVmltIDcgaW5jbHVkZXMgYSBjb2RlIGNvbXBsZXRpb24gaW50ZXJmYWNlIGFuZCBmdW5jdGlvbnMgd2hpY2ggYWxsb3dzIHBsdWdpbgorZGV2ZWxvcGVycyB0byBidWlsZCBpbiBjb2RlIGNvbXBsZXRpb24gZm9yIGFueSBsYW5ndWFnZS4gIFZpbSA3IGluY2x1ZGVzIAorY29kZSBjb21wbGV0aW9uIGZvciB0aGUgU1FMIGxhbmd1YWdlLgorCitUaGVyZSBhcmUgdHdvIG1vZGVzIHRvIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4sIHN0YXRpYyBhbmQgZHluYW1pYy4gIFRoZQorc3RhdGljIG1vZGUgcG9wdWxhdGVzIHRoZSBwb3B1cHMgd2l0aCB0aGUgZGF0YSBnZW5lcmF0ZWQgZnJvbSBjdXJyZW50IHN5bnRheAoraGlnaGxpZ2h0IHJ1bGVzLiAgVGhlIGR5bmFtaWMgbW9kZSBwb3B1bGF0ZXMgdGhlIHBvcHVwcyB3aXRoIGRhdGEgcmV0cmlldmVkCitkaXJlY3RseSBmcm9tIGEgZGF0YWJhc2UuICBUaGlzIGluY2x1ZGVzLCB0YWJsZSBsaXN0cywgY29sdW1uIGxpc3RzLAorcHJvY2VkdXJlcyBuYW1lcyBhbmQgbW9yZS4KKworNC4xIFN0YXRpYyBNb2RlICAJCSAgICAgICAgICAgICAgICAqc3FsLWNvbXBsZXRpb24tc3RhdGljKgorLS0tLS0tLS0tLS0tLS0tCitUaGUgc3RhdGljIHBvcHVwcyBjcmVhdGVkIGNvbnRhaW4gaXRlbXMgZGVmaW5lZCBieSB0aGUgYWN0aXZlIHN5bnRheCBydWxlcword2hpbGUgZWRpdGluZyBhIGZpbGUgd2l0aCBhIGZpbGV0eXBlIG9mIFNRTC4gIFRoZSBwbHVnaW4gZGVmaW5lcyAoYnkgZGVmYXVsdCkKK3ZhcmlvdXMgbWFwcyB0byBoZWxwIHRoZSB1c2VyIHJlZmluZSB3aGljaCBsaXN0IG9mIGl0ZW1zIHRoZXkgd2lzaCBkaXNwbGF5ZWQuCitUaGUgZGVmYXVsdHMgc3RhdGljIG1hcHMgYXJlOiA+CisgICAgICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5hIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3N5bnRheCc8Q1I+PEMtWD48Qy1PPgorICAgICAgICBpbWFwIDxidWZmZXI+IDxDLUM+cyA8Qy1cPjxDLU8+OmxldCBiOnNxbF9jb21wbF90eXBlPSdzcWxTdGF0ZW1lbnQnPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPmYgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsRnVuY3Rpb24nPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPmsgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsS2V5d29yZCc8Q1I+PEMtWD48Qy1PPgorICAgICAgICBpbWFwIDxidWZmZXI+IDxDLUM+byA8Qy1cPjxDLU8+OmxldCBiOnNxbF9jb21wbF90eXBlPSdzcWxPcHRpb24nPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPlQgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsVHlwZSc8Q1I+PEMtWD48Qy1PPgorPCAKK1RoZSBzdGF0aWMgbWFwcyAod2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBzeW50YXggaGlnaGxpZ2h0IGdyb3VwcykgZm9sbG93IHRoaXMKK2Zvcm1hdDogPgorICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5rIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3NxbEtleXdvcmQnPENSPjxDLVg+PEMtTz4KKzwKK1RoaXMgY29tbWFuZCBicmVha3MgZG93biBhczogPgorICAgIGltYXAgICAgICAgICAgICAgICAgICAgLSBDcmVhdGUgYW4gaW5zZXJ0IG1hcAorICAgIDxidWZmZXI+ICAgICAgICAgICAgICAgLSBPbmx5IGZvciB0aGlzIGJ1ZmZlcgorICAgIDxDLUM+ayAgICAgICAgICAgICAtIFlvdXIgY2hvaWNlIG9mIGtleSBtYXAKKyAgICA8Qy1cPjxDLU8+ICAgICAgICAgICAgIC0gRXhlY3V0ZSBvbmUgY29tbWFuZCwgcmV0dXJuIHRvIEluc2VydCBtb2RlCisgICAgOmxldCBiOnNxbF9jb21wbF90eXBlPSAtIENob29zZSB0aGUgaGlnaGxpZ2h0IGdyb3VwJ3MgZW50cmllcyB0byBkaXNwbGF5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHZpZXcgYSBsaXN0IG9mIGhpZ2hsaWdodCBncm91cCBuYW1lcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgZnJvbSBieSBleGVjdXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3ludGF4IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB3aGlsZSBlZGl0aW5nIGEgU1FMIGZpbGUuCisgICAgJ3NxbEtleXdvcmQnICAgICAgICAgICAtIERpc3BsYXkgdGhlIGl0ZW1zIGZvciB0aGUgc3FsS2V5d29yZCBoaWdobGlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAKKyAgICA8Q1I+ICAgICAgICAgICAgICAgICAgIC0gRXhlY3V0ZSB0aGUgOmxldCBjb21tYW5kCisgICAgPEMtWD48Qy1PPiAgICAgICAgICAgICAtIFRyaWdnZXIgdGhlIHN0YW5kYXJkIG9tbmkgY29tcGxldGlvbiBrZXkgc3Ryb2tlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBzZXR0aW5nIHRoZSBiOnNxbF9jb21wbF90eXBlIHZhcmlhYmxlLCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0cyB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luIHRvIHBvcHVsYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwb3B1cCB3aXRoIGl0ZW1zIGZyb20gdGhlIHNxbEtleXdvcmQgaGlnaGxpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLiAgVGhlIHBsdWdpbiB3aWxsIGFsc28gY2FjaGUgdGhpcyByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgVmltIGlzIHJlc3RhcnRlZC4gIFRoZSBzeW50YXggbGlzdCBpcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cmlldmVkIHVzaW5nIHRoZSBzeW50YXhjb21wbGV0ZSBwbHVnaW4uCis8CitTZXR0aW5nIGI6c3FsX2NvbXBsX3R5cGUgPSAnc3ludGF4JyBpcyBhIHNwZWNpYWwgY2FzZS4gIFRoaXMgaW5zdHJ1Y3RzIHRoZQorc3ludGF4Y29tcGxldGUgcGx1Z2luIHRvIHJldHJpZXZlIGFsbCBzeW50YXggaXRlbXMuICBTbyB0aGlzIHdpbGwgZWZmZWN0aXZlbHkKK3dvcmsgZm9yIGFueSBvZiBWaW0ncyBTUUwgc3ludGF4IGZpbGVzLiAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIGluY2x1ZGVzCisxMCBkaWZmZXJlbnQgc3ludGF4IGZpbGVzIGZvciB0aGUgZGlmZmVyZW50IGRpYWxlY3RzIG9mIFNRTCAoc2VlIHNlY3Rpb24gMworYWJvdmUsIHxzcWwtZGlhbGVjdHN8KS4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB0aGUgZW50cmllcyB3aGljaCBhcmUgcHVsbGVkIGZyb20gdGhlIHN5bnRheCBmaWxlczogPgorICAgICBBbGwKKyAgICAgICAgIC0gQ29udGFpbnMgdGhlIGNvbnRlbnRzIG9mIGFsbCBzeW50YXggaGlnaGxpZ2h0IGdyb3VwcworICAgICBTdGF0ZW1lbnRzCisgICAgICAgICAtIFNlbGVjdCwgSW5zZXJ0LCBVcGRhdGUsIERlbGV0ZSwgQ3JlYXRlLCBBbHRlciwgLi4uCisgICAgIEZ1bmN0aW9ucworICAgICAgICAgLSBNaW4sIE1heCwgVHJpbSwgUm91bmQsIERhdGUsIC4uLgorICAgICBLZXl3b3JkcworICAgICAgICAgLSBJbmRleCwgRGF0YWJhc2UsIEhhdmluZywgR3JvdXAsIFdpdGgKKyAgICAgT3B0aW9ucworICAgICAgICAgLSBJc29sYXRpb25fbGV2ZWwsIE9uX2Vycm9yLCBRdWFsaWZ5X293bmVycywgRmlyZV90cmlnZ2VycywgLi4uCisgICAgIFR5cGVzCisgICAgICAgICAtIEludGVnZXIsIENoYXIsIFZhcmNoYXIsIERhdGUsIERhdGVUaW1lLCBUaW1lc3RhbXAsIC4uLgorPAorIAorNC4yIER5bmFtaWMgTW9kZSAgCQkgICAgICAgICAgICAgICAgKnNxbC1jb21wbGV0aW9uLWR5bmFtaWMqCistLS0tLS0tLS0tLS0tLS0tCitEeW5hbWljIG1vZGUgcG9wdWxhdGVzIHRoZSBwb3B1cHMgd2l0aCBkYXRhIGRpcmVjdGx5IGZyb20gYSBkYXRhYmFzZS4gIEluCitvcmRlciBmb3IgdGhlIGR5bmFtaWMgZmVhdHVyZSB0byBiZSBlbmFibGVkIHlvdSBtdXN0IGhhdmUgdGhlIGRiZXh0LnZpbQorcGx1Z2luIGluc3RhbGxlZCwgKGh0dHA6Ly92aW0uc291cmNlZm9yZ2UubmV0L3NjcmlwdC5waHA/c2NyaXB0X2lkPTM1NikuCisKK0R5bmFtaWMgbW9kZSBpcyB1c2VkIGJ5IHNldmVyYWwgZmVhdHVyZXMgb2YgdGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbi4gIAorQWZ0ZXIgaW5zdGFsbGluZyB0aGUgZGJleHQgcGx1Z2luIHNlZSB0aGUgfGRiZXh0LXR1dG9yaWFsfCBmb3IgYWRkaXRpb25hbAorY29uZmlndXJhdGlvbiBhbmQgdXNhZ2UuICBUaGUgZGJleHQgcGx1Z2luIGFsbG93cyB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luCit0byBkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMsIHByb2NlZHVyZXMsIHZpZXdzIGFuZCBjb2x1bW5zLiA+CisgICAgIFRhYmxlIExpc3QKKyAgICAgICAgIC0gQWxsIHRhYmxlcyBmb3IgYWxsIHNjaGVtYSBvd25lcnMKKyAgICAgUHJvY2VkdXJlIExpc3QKKyAgICAgICAgIC0gQWxsIHN0b3JlZCBwcm9jZWR1cmVzIGZvciBhbGwgc2NoZW1hIG93bmVycworICAgICBWaWV3IExpc3QKKyAgICAgICAgIC0gQWxsIHN0b3JlZCBwcm9jZWR1cmVzIGZvciBhbGwgc2NoZW1hIG93bmVycworICAgICBDb2x1bW4gTGlzdAorICAgICAgICAgLSBGb3IgdGhlIHNlbGVjdGVkIHRhYmxlLCB0aGUgY29sdW1ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSB0YWJsZQorPAorVG8gZW5hYmxlIHRoZSBwb3B1cCwgd2hpbGUgaW4gSU5TRVJUIG1vZGUsIHVzZSB0aGUgZm9sbG93aW5nIGtleSBjb21iaW5hdGlvbnMKK2ZvciBlYWNoIGdyb3VwICh3aGVyZSA8Qy1DPiBtZWFucyBob2xkIHRoZSBDVFJMIGtleSBkb3duIHdoaWxlIHByZXNzaW5nIAordGhlIHNwYWNlIGJhcik6CisgICAgIFRhYmxlIExpc3QgICAgICAgICAgICAgLSA8Qy1DPnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDxDLVg+PEMtTz4gKHRoZSBkZWZhdWx0IG1hcCBhc3N1bWVzIHRhYmxlcykKKyAgICAgU3RvcmVkIFByb2NlZHVyZSBMaXN0ICAtIDxDLUM+cAorICAgICBWaWV3IExpc3QgICAgICAgICAgICAgIC0gPEMtQz52CisgICAgIENvbHVtbiBMaXN0ICAgICAgICAgICAgLSA8Qy1DPmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIC48Qy1YPjxDLU8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiA8Qy1YPjxDLU8+IGlzIHByZXNzZWQgZm9sbG93aW5nIGEgcGVyaW9kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyBhc3N1bWVkIHlvdSBhcmUgYXNraW5nIGZvciBhIGNvbHVtbiBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gV2hlbiB2aWV3aW5nIGEgcG9wdXAgd2luZG93IGRpc3BsYXlpbmcgdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRhYmxlcywgeW91IGNhbiBwcmVzcyA8Qy1SaWdodD4sIHRoaXMgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSB0aGUgdGFibGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb2x1bW4gbGlzdCBmb3IgdGhhdCB0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFdoZW4gdmlld2luZyBhIHBvcHVwIHdpbmRvdyBkaXNwbGF5aW5nIHRoZSBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb2x1bW5zLCB5b3UgY2FuIHByZXNzIDxDLUxlZnQ+LCB0aGlzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgdGhlIGNvbHVtbiBsaXN0IHdpdGggdGhlIGxpc3Qgb2YgdGFibGVzLgorIAorVGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbiBjYWNoZXMgdmFyaW91cyBsaXN0cyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4KK3RoZSBwb3B1cCB3aW5kb3cuICBUaGlzIG1ha2VzIHRoZSByZS1kaXNwbGF5aW5nIG9mIHRoZXNlIGxpc3RzIHZlcnkKK2Zhc3QuICBJZiBuZXcgdGFibGVzIG9yIGNvbHVtbnMgYXJlIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSBpdCBtYXkgYmVjb21lIAorbmVjZXNzYXJ5IHRvIGNsZWFyIHRoZSBwbHVnaW5zIGNhY2hlLiAgVGhlIGRlZmF1bHQgbWFwIGZvciB0aGlzIGlzOiA+CisgICAgICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5SIDxDLU8+OmxldCBiOnNxbF9jb21wbF90eXBlPSdSZXNldENhY2hlJzxDUj48Qy1YPjxDLU8+Cis8CisgCis0LjMgU1FMIFR1dG9yaWFsCQkJCSpzcWwtY29tcGxldGlvbi10dXRvcmlhbCoKKy0tLS0tLS0tLS0tLS0tLS0KKyAKK1RoaXMgdHV0b3JpYWwgaXMgZGVzaWduZWQgdG8gdGFrZSB5b3UgdGhyb3VnaCB0aGUgY29tbW9uIGZlYXR1cmVzIG9mIHRoZSBTUUwKK2NvbXBsZXRpb24gcGx1Z2luIHNvIHRoYXQ6ID4KKyAgICAgYSkgWW91IGdhaW4gZmFtaWxpYXJpdHkgd2l0aCB0aGUgcGx1Z2luCisgICAgIGIpIFlvdSBhcmUgaW50cm9kdWNlZCB0byBzb21lIG9mIHRoZSBtb3JlIGNvbW1vbiBmZWF0dXJlcworICAgICBjKSBTaG93IGhvdyB0byBjdXN0b21pemUgaXQgdG8geW91ciBwcmVmZXJlbmNlcworICAgICBkKSBEZW1vbnN0cmF0ZSAiQmVzdCBvZiBVc2UiIG9mIHRoZSBwbHVnaW4gKGVhc2llc3Qgd2F5IHRvIGNvbmZpZ3VyZSkuCis8CitGaXJzdCwgY3JlYXRlIGEgbmV3IGJ1ZmZlcjogPgorICAgICA6ZSB0dXRvcmlhbC5zcWwKKzwKKworU3RhdGljIGZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0KK1RvIHRha2UgeW91IHRocm91Z2ggdGhlIHZhcmlvdXMgbGlzdHMsIHNpbXBseSBlbnRlciBpbnNlcnQgbW9kZSwgaGl0OgorICAgIDxDLUM+cyAgIChzaG93IFNRTCBzdGF0ZW1lbnRzKQorQXQgdGhpcyBwb2ludCwgeW91IGNhbiBwYWdlIGRvd24gdGhyb3VnaCB0aGUgbGlzdCB1bnRpbCB5b3UgZmluZCAic2VsZWN0Ii4KK0lmIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgaXRlbSB5b3UgYXJlIGxvb2tpbmcgZm9yLCBmb3IgZXhhbXBsZSB5b3Uga25vdwordGhlIHN0YXRlbWVudCBiZWdpbnMgd2l0aCB0aGUgbGV0dGVyICJzIi4gIFlvdSBjYW4gdHlwZSBhaGVhZCAod2l0aG91dCB0aGUKK3F1b3RlcykgInNlIiB0aGVuIHByZXNzOiAKKyAgICA8Qy1TcGFjdD50IAorQXNzdW1pbmcgInNlbGVjdCIgaXMgaGlnaGxpZ2h0ZWQgaW4gdGhlIHBvcHVwIGxpc3QgcHJlc3MgPEVudGVyPiB0byBjaG9vc2UKK3RoZSBlbnRyeS4gIE5vdyB0eXBlOgorICAgICogZnI8Qy1DPmEgKHNob3cgYWxsIHN5bnRheCBpdGVtcykKK2Nob29zZSAiZnJvbSIgZnJvbSB0aGUgcG9wdXAgbGlzdC4KKworV2hlbiB3cml0aW5nIHN0b3JlZCBwcm9jZWR1cmVzIHVzaW5nIHRoZSAidHlwZSIgbGlzdCBpcyB1c2VmdWwuICBJdCBjb250YWlucworYSBsaXN0IG9mIGFsbCB0aGUgZGF0YWJhc2Ugc3VwcG9ydGVkIHR5cGVzLiAgVGhpcyBtYXkgb3IgbWF5IG5vdCBiZSB0cnVlCitkZXBlbmRpbmcgb24gdGhlIHN5bnRheCBmaWxlIHlvdSBhcmUgdXNpbmcuICBUaGUgU1FMIEFueXdoZXJlIHN5bnRheCBmaWxlCisoc3FsYW55d2hlcmUudmltKSBoYXMgc3VwcG9ydCBmb3IgdGhpczogPgorICAgICBCRUdJTgorICAgICAgICBERUNMQVJFIGN1c3RvbWVyX2lkIDxDLUM+VCA8LS0gQ2hvb3NlIGEgdHlwZSBmcm9tIHRoZSBsaXN0Cis8IAorCitEeW5hbWljIGZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tCitUbyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZHluYW1pYyBmZWF0dXJlcyB5b3UgbXVzdCBmaXJzdCBpbnN0YWxsIHRoZSAKK2RiZXh0LnZpbSBwbHVnaW4gKGh0dHA6Ly92aW0uc291cmNlZm9yZ2UubmV0L3NjcmlwdC5waHA/c2NyaXB0X2lkPTM1NikuICBJdAorYWxzbyBjb21lcyB3aXRoIGEgdHV0b3JpYWwuICBGcm9tIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4ncyBwZXJzcGVjdGl2ZSwKK3RoZSBtYWluIGZlYXR1cmUgZGJleHQgcHJvdmlkZXMgaXMgYSBjb25uZWN0aW9uIHRvIGEgZGF0YWJhc2UuICBkYmV4dAorY29ubmVjdGlvbiBwcm9maWxlcyBhcmUgdGhlIG1vc3QgZWZmaWNpZW50IG1lY2hhbmlzbSB0byBkZWZpbmUgY29ubmVjdGlvbgoraW5mb3JtYXRpb24uICBPbmNlIGNvbm5lY3Rpb25zIGhhdmUgYmVlbiBzZXR1cCwgdGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbgordXNlcyB0aGUgZmVhdHVyZXMgb2YgZGJleHQgaW4gdGhlIGJhY2tncm91bmQgdG8gcG9wdWxhdGUgdGhlIHBvcHVwcy4KKworV2hhdCBmb2xsb3dzIGFzc3VtZXMgZGJleHQudmltIGhhcyBiZWVuIGNvcnJlY3RseSBjb25maWd1cmVkLCBhIHNpbXBsZSB0ZXN0CitpcyB0byBydW4gdGhlIGNvbW1hbmQsIDpEQkxpc3RUYWJsZS4gIElmIGEgbGlzdCBvZiB0YWJsZXMgaXMgc2hvd24sIHlvdSBrbm93CitkYmV4dC52aW0gaXMgd29ya2luZyBhcyBleHBlY3RlZC4gIElmIG5vdCwgcGxlYXNlIGNvbnN1bHQgdGhlIGRiZXh0LnR4dCAKK2RvY3VtZW50YXRpb24uCisKK0Fzc3VtaW5nIHlvdSBoYXZlIGZvbGxvd2VkIHRoZSB8ZGJleHQtdHV0b3JpYWx8IHlvdSBjYW4gcHJlc3MgPEMtQz50IHRvCitkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMuICBUaGVyZSBpcyBhIGRlbGF5IHdoaWxlIGRiZXh0IGlzIGNyZWF0aW5nIHRoZSB0YWJsZQorbGlzdC4gIEFmdGVyIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBwcmVzcyA8Qy1XPi4gIFRoaXMgd2lsbCByZW1vdmUgYm90aCB0aGUgCitwb3B1cCB3aW5kb3cgYW5kIHRoZSB0YWJsZSBuYW1lIGFscmVhZHkgY2hvc2VuIHdoZW4gdGhlIGxpc3QgYmVjYW1lIGFjdGl2ZS4gPgorIAorIDQuMy4xIFRhYmxlIENvbXBsZXRpb246CQkJKnNxbC1jb21wbGV0aW9uLXRhYmxlcyoKKzwKK1ByZXNzIDxDLUM+dCB0byBkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMgZnJvbSB3aXRoaW4gdGhlIGRhdGFiYXNlIHlvdQoraGF2ZSBjb25uZWN0ZWQgdmlhIHRoZSBkYmV4dCBwbHVnaW4uICAKK05PVEU6IEFsbCBvZiB0aGUgU1FMIGNvbXBsZXRpb24gcG9wdXBzIHN1cHBvcnQgdHlwaW5nIGEgcHJlZml4IGJlZm9yZSBwcmVzc2luZwordGhlIGtleSBtYXAuICBUaGlzIHdpbGwgbGltaXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBwb3B1cCB3aW5kb3cgdG8ganVzdCBpdGVtcworYmVnaW5uaW5nIHdpdGggdGhvc2UgY2hhcmFjdGVycy4gID4KKyAKKyA0LjMuMiBDb2x1bW4gQ29tcGxldGlvbjoJCQkqc3FsLWNvbXBsZXRpb24tY29sdW1ucyoKKzwKK1RoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4gY2FuIGFsc28gZGlzcGxheSBhIGxpc3Qgb2YgY29sdW1ucyBmb3IgcGFydGljdWxhcgordGFibGVzLiAgVGhlIGNvbHVtbiBjb21wbGV0aW9uIGlzIHRyaWdnZXIgdmlhIDxDLUM+Yy4KKworTk9URTogVGhlIGZvbGxvd2luZyBleGFtcGxlIHVzZXMgPEMtUmlnaHQ+IHRvIHRyaWdnZXIgYSBjb2x1bW4gbGlzdCB3aGlsZQordGhlIHBvcHVwIHdpbmRvdyBpcyBhY3RpdmUuICBUaGlzIG1hcCBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUgV2luZG93cworcGxhdGZvcm1zIHNpbmNlICpuaXggZG9lcyBub3QgcmVjb2duaXplIENUUkwgYW5kIHRoZSByaWdodCBhcnJvdyBoZWxkIGRvd24KK3RvZ2V0aGVyLiAgSWYgeW91IHdpc2ggdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBvbiBhICpuaXggcGxhdGZvcm0gY2hvb3NlCithIGtleSBhbmQgY3JlYXRlIHRoaXMgbWFwcGluZyAoc2VlIHxzcWwtY29tcGxldGlvbi1tYXBzfCBmb3IgZnVydGhlciAKK2RldGFpbHMgb24gd2hlcmUgdG8gY3JlYXRlIHRoaXMgaW1hcCk6ID4KKyAgICBpbWFwIDxidWZmZXI+IDx5b3VyX2tleXN0cm9rZT4gIDxDUj48Qy1cPjxDLU8+OmxldCBiOnNxbF9jb21wbF90eXBlPSdjb2x1bW4nPENSPjxDLVg+PEMtTz4KKzwKK0V4YW1wbGUgb2YgdXNpbmcgY29sdW1uIGNvbXBsZXRpb246CisgICAgIC0gUHJlc3MgPEMtQz50IGFnYWluIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb2YgdGFibGVzLiAgCisgICAgIC0gV2hlbiB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIGNvbXBsZXRpb24gd2luZG93LCBwcmVzcyA8Qy1SaWdodD4sCisgICAgICAgdGhpcyB3aWxsIHJlcGxhY2UgdGhlIGxpc3Qgb2YgdGFibGVzLCB3aXRoIGEgbGlzdCBvZiBjb2x1bW5zIGZvciB0aGUKKyAgICAgICB0YWJsZSBoaWdobGlnaHRlZCAoYWZ0ZXIgdGhlIHNhbWUgc2hvcnQgZGVsYXkpLiAgCisgICAgIC0gSWYgeW91IHByZXNzIDxDLUxlZnQ+LCB0aGlzIHdpbGwgYWdhaW4gcmVwbGFjZSB0aGUgY29sdW1uIGxpc3Qgd2l0aCB0aGUKKyAgICAgICBsaXN0IG9mIHRhYmxlcy4gIFRoaXMgYWxsb3dzIHlvdSB0byBkcmlsbCBpbnRvIHRhYmxlcyBhbmQgY29sdW1uIGxpc3RzCisgICAgICAgdmVyeSBxdWlja2x5LiAgCisgICAgIC0gUHJlc3MgPEMtUmlnaHQ+IGFnYWluIHdoaWxlIHRoZSBzYW1lIHRhYmxlIGlzIGhpZ2hsaWdodGVkLiAgWW91IHdpbGwKKyAgICAgICBub3RpY2UgdGhlcmUgaXMgbm8gZGVsYXkgc2luY2UgdGhlIGNvbHVtbiBsaXN0IGhhcyBiZWVuIGNhY2hlZC4gIElmIHlvdQorICAgICAgIGNoYW5nZSB0aGUgc2NoZW1hIG9mIGEgY2FjaGVkIHRhYmxlIHlvdSBjYW4gcHJlc3MgPEMtQz5SLCB3aGljaAorICAgICAgIGNsZWFycyB0aGUgU1FMIGNvbXBsZXRpb24gY2FjaGUuICAKKyAgICAgLSBOT1RFOiA8Qy1SaWdodD4gYW5kIDxDLUxlZnQ+IGhhdmUgYmVlbiBkZXNpZ25lZCB0byB3b3JrIHdoaWxlIHRoZQorICAgICAgIGNvbXBsZXRpb24gd2luZG93IGlzIGFjdGl2ZS4gIElmIHlvdSB1c2UgdGhlc2UgbWFwcyB3aGVuIHRoZSBjb21wbGV0aW9uCisgICAgICAgd2luZG93IGlzIG5vdCBhY3RpdmUgYSBjYXJyaWFnZSByZXR1cm4gd2lsbCBiZSBpbmFkdmVydGVudGx5IGVudGVyZWQgaW4KKyAgICAgICB5b3VyIGJ1ZmZlci4KKyAKK0xldHMgbG9vayBob3cgd2UgY2FuIGJ1aWxkIGEgU1FMIHN0YXRlbWVudCBkeW5hbWljYWxseS4gIEEgc2VsZWN0IHN0YXRlbWVudAorcmVxdWlyZXMgYSBsaXN0IG9mIGNvbHVtbnMuICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gYnVpbGQgYSBjb2x1bW4gbGlzdCB1c2luZwordGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbi4gPgorICAgIE9uZSBjb2x1bW4gYXQgYSB0aW1lOgorPCAgICAgICAxLiBBZnRlciB0eXBpbmcgU0VMRUNUIHByZXNzIDxDLUM+dCB0byBkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMuCisgICAgICAgIDIuIENob29zZSBhIHRhYmxlIGZyb20gdGhlIGxpc3QuCisgICAgICAgIDMuIFByZXNzIDxDLVJpZ2h0PiB0byBkaXNwbGF5IGEgbGlzdCBvZiBjb2x1bW5zLgorICAgICAgICA0LiBDaG9vc2UgdGhlIGNvbHVtbiBmcm9tIHRoZSBsaXN0IGFuZCBwcmVzcyBlbnRlci4KKyAgICAgICAgNS4gRW50ZXIgYSAiLCIgYW5kIHByZXNzIDxDLUM+Yy4gIEdlbmVyYXRpbmcgYSBjb2x1bW4gbGlzdAorICAgICAgICAgICBnZW5lcmFsbHkgcmVxdWlyZXMgaGF2aW5nIHRoZSBjdXJzb3Igb24gYSB0YWJsZSBuYW1lLiAgVGhlIHBsdWdpbgorICAgICAgICAgICB1c2VzIHRoaXMgbmFtZSB0byBkZXRlcm1pbmUgd2hhdCB0YWJsZSB0byByZXRyaWV2ZSB0aGUgY29sdW1uIGxpc3QuICAKKyAgICAgICAgICAgSW4gdGhpcyBzdGVwLCBzaW5jZSB3ZSBhcmUgcHJlc3NpbmcgPEMtQz5jIHdpdGhvdXQgdGhlIGN1cnNvciAKKyAgICAgICAgICAgb24gYSB0YWJsZSBuYW1lIHRoZSBjb2x1bW4gbGlzdCBkaXNwbGF5ZWQgd2lsbCBiZSBmb3IgdGhlIHByZXZpb3VzIAorICAgICAgICAgICB0YWJsZS4gIENob29zZSBhIGRpZmZlcmVudCBjb2x1bW4gYW5kIG1vdmUgb24uIAorICAgICAgICA2LiBSZXBlYXQgc3RlcCA1IGFzIG9mdGVuIGFzIG5lY2Vzc2FyeS4gPgorICAgIEFsbCBjb2x1bW5zIGZvciBhIHRhYmxlOiAKKzwgICAgICAgMS4gQWZ0ZXIgdHlwaW5nIFNFTEVDVCBwcmVzcyA8Qy1DPnQgdG8gZGlzcGxheSBhIGxpc3Qgb2YgdGFibGVzLgorICAgICAgICAyLiBIaWdobGlnaHQgdGhlIHRhYmxlIHlvdSBuZWVkIHRoZSBjb2x1bW4gbGlzdCBmb3IuCisgICAgICAgIDMuIFByZXNzIDxFbnRlcj4gdG8gY2hvb3NlIHRoZSB0YWJsZSBmcm9tIHRoZSBsaXN0LgorICAgICAgICA0LiBQcmVzcyA8Qy1DPmwgdG8gcmVxdWVzdCBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFsbCBjb2x1bW5zCisgICAgICAgICAgIGZvciB0aGlzIHRhYmxlLgorICAgICAgICA1LiBCYXNlZCBvbiB0aGUgdGFibGUgbmFtZSBjaG9zZW4gaW4gc3RlcCAzLCB0aGUgcGx1Z2luIGF0dGVtcHRzIHRvCisgICAgICAgICAgIGRlY2lkZSBvbiBhIHJlYXNvbmFibGUgdGFibGUgYWxpYXMuICBZb3UgYXJlIHRoZW4gcHJvbXB0ZWQgdG8KKyAgICAgICAgICAgZWl0aGVyIGFjY2VwdCBvZiBjaGFuZ2UgdGhlIGFsaWFzLiAgUHJlc3MgT0suCisgICAgICAgIDYuIFRoZSB0YWJsZSBuYW1lIGlzIHJlcGxhY2VkIHdpdGggdGhlIGNvbHVtbiBsaXN0IG9mIHRoZSB0YWJsZSBpcworICAgICAgICAgICByZXBsYWNlZCB3aXRoIHRoZSBjb21tYSBzZXBhcmF0ZSBsaXN0IG9mIGNvbHVtbnMgd2l0aCB0aGUgYWxpYXMKKyAgICAgICAgICAgcHJlcGVuZGVkIHRvIGVhY2ggb2YgdGhlIGNvbHVtbnMuCisgICAgICAgIDcuIFN0ZXAgMyBhbmQgNCBjYW4gYmUgcmVwbGFjZWQgYnkgcHJlc3NpbmcgPEMtQz5MLCB3aGljaCBoYXMKKyAgICAgICAgICAgYSA8Q1I+IGVtYmVkZGVkIGluIHRoZSBtYXAgdG8gY2hvb3NlIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgCisgICAgICAgICAgIHRhYmxlIGluIHRoZSBsaXN0LgorCitUaGVyZSBpcyBhIHNwZWNpYWwgcHJvdmlzaW9uIHdoZW4gd3JpdGluZyBzZWxlY3Qgc3RhdGVtZW50cy4gIENvbnNpZGVyIHRoZQorZm9sbG93aW5nIHN0YXRlbWVudDogPgorICAgICBzZWxlY3QgKiAKKyAgICAgICBmcm9tIGN1c3RvbWVyIGMsCisgICAgICAgICAgICBjb250YWN0IGNuLAorICAgICAgICAgICAgZGVwYXJ0bWVudCBhcyBkcCwKKyAgICAgICAgICAgIGVtcGxveWVlIGUsCisgICAgICAgICAgICBzaXRlX29wdGlvbnMgc28KKyAgICAgIHdoZXJlIGMuCis8CitJbiBJTlNFUlQgbW9kZSBhZnRlciB0eXBpbmcgdGhlIGZpbmFsICJjLiIgd2hpY2ggaXMgYW4gYWxpYXMgZm9yIHRoZQorImN1c3RvbWVyIiB0YWJsZSwgeW91IGNhbiBwcmVzcyBlaXRoZXIgPEMtQz5jIG9yIDxDLVg+PEMtTz4uICBUaGlzIHdpbGwKK3BvcHVwIGEgbGlzdCBvZiBjb2x1bW5zIGZvciB0aGUgY3VzdG9tZXIgdGFibGUuICBJdCBkb2VzIHRoaXMgYnkgbG9va2luZyBiYWNrCit0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWxlY3Qgc3RhdGVtZW50IGFuZCBmaW5kaW5nIGEgbGlzdCBvZiB0aGUgdGFibGVzCitzcGVjaWZpZWQgaW4gdGhlIEZST00gY2xhdXNlLiAgSW4gdGhpcyBjYXNlIGl0IG5vdGVzIHRoYXQgaW4gdGhlIHN0cmluZworImN1c3RvbWVyIGMiLCAiYyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBjdXN0b21lciB0YWJsZS4gIFRoZSBvcHRpb25hbCAiQVMiCitrZXl3b3JkIGlzIGFsc28gc3VwcG9ydGVkLCAiY3VzdG9tZXIgQVMgYyIuID4KKyAKKyAKKyA0LjMuMyBQcm9jZWR1cmUgQ29tcGxldGlvbjoJCQkqc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcyoKKzwKK1NpbWlsYXIgdG8gdGhlIHRhYmxlIGxpc3QsIDxDLUM+cCwgd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiBzdG9yZWQKK3Byb2NlZHVyZXMgc3RvcmVkIHdpdGhpbiB0aGUgZGF0YWJhc2UuID4KKyAKKyA0LjMuNCBWaWV3IENvbXBsZXRpb246CQkJCSpzcWwtY29tcGxldGlvbi12aWV3cyoKKzwKK1NpbWlsYXIgdG8gdGhlIHRhYmxlIGxpc3QsIDxDLUM+diwgd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiB2aWV3cyBpbiB0aGUKK2RhdGFiYXNlLgorCisgCis0LjQgQ29tcGxldGlvbiBDdXN0b21pemF0aW9uCQkJKnNxbC1jb21wbGV0aW9uLWN1c3RvbWl6YXRpb24qCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4gY2FuIGJlIGN1c3RvbWl6ZWQgdGhyb3VnaCB2YXJpb3VzIG9wdGlvbnMgc2V0IGluCit5b3VyIHx2aW1yY3w6ID4KKyAgICBvbW5pX3NxbF9ub19kZWZhdWx0X21hcHMKKzwgICAgICAgLSBEZWZhdWx0OiBUaGlzIHZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIC0gSWYgdGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkLCBubyBtYXBzIGFyZSBjcmVhdGVkIGZvciBPTU5JCisgICAgICAgICAgY29tcGxldGlvbi4gIFNlZSB8c3FsLWNvbXBsZXRpb24tbWFwc3wgZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbi4KKz4KKyAgICBvbW5pX3NxbF91c2VfdGJsX2FsaWFzCis8ICAgICAgIC0gRGVmYXVsdDogYQorICAgICAgICAtIFRoaXMgc2V0dGluZyBpcyBvbmx5IHVzZWQgd2hlbiBnZW5lcmF0aW5nIGEgY29tbWEgc2VwYXJhdGVkCisgICAgICAgICAgY29sdW1uIGxpc3QuICBCeSBkZWZhdWx0IHRoZSBtYXAgaXMgPEMtQz5sLiAgV2hlbiBnZW5lcmF0aW5nCisgICAgICAgICAgYSBjb2x1bW4gbGlzdCwgYW4gYWxpYXMgY2FuIGJlIHByZXBlbmRlZCB0byB0aGUgYmVnaW5uaW5nIG9mIGVhY2gKKyAgICAgICAgICBjb2x1bW4sIGZvciBleGFtcGxlOiAgZS5lbXBfaWQsIGUuZW1wX25hbWUuICBUaGlzIG9wdGlvbiBoYXMgdGhyZWUgCisgICAgICAgICAgc2V0dGluZ3M6ID4KKyAgICAgICAgICAgICAgICBuIC0gZG8gbm90IHVzZSBhbiBhbGlhcworICAgICAgICAgICAgICAgIGQgLSB1c2UgdGhlIGRlZmF1bHQgKGNhbGN1bGF0ZWQpIGFsaWFzCisgICAgICAgICAgICAgICAgYSAtIGFzayB0byBjb25maXJtIHRoZSBhbGlhcyBuYW1lCis8CisgICAgICAgICAgQW4gYWxpYXMgaXMgZGV0ZXJtaW5lZCBmb2xsb3dpbmcgYSBmZXcgcnVsZXM6CisgICAgICAgICAgICAgICAxLiAgSWYgdGhlIHRhYmxlIG5hbWUgaGFzIGFuICdfJywgdGhlbiB1c2UgaXQgYXMgYSBzZXBhcmF0b3I6ID4KKyAgICAgICAgICAgICAgICAgICBNWV9UQUJMRV9OQU1FIC0tPiBNVE4KKyAgICAgICAgICAgICAgICAgICBteV90YWJsZV9uYW1lIC0tPiBtdG4KKyAgICAgICAgICAgICAgICAgICBNeV90YWJsZV9OQU1FIC0tPiBNdE4KKzwgICAgICAgICAgICAgIDIuICBJZiB0aGUgdGFibGUgbmFtZSBkb2VzIE5PVCBjb250YWluIGFuICdfJywgYnV0IERPRVMgdXNlCisgICAgICAgICAgICAgICAgICAgbWl4ZWQgY2FzZSB0aGVuIHRoZSBjYXNlIGlzIHVzZWQgYXMgYSBzZXBhcmF0b3I6ID4KKyAgICAgICAgICAgICAgICAgICBNeVRhYmxlTmFtZSAtLT4gTVROCis8ICAgICAgICAgICAgICAzLiAgSWYgdGhlIHRhYmxlIG5hbWUgZG9lcyBOT1QgY29udGFpbiBhbiAnXycsIGFuZCBkb2VzIE5PVCAKKyAgICAgICAgICAgICAgICAgICB1c2UgbWl4ZWQgY2FzZSB0aGVuIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHRhYmxlIGlzIHVzZWQ6ID4KKyAgICAgICAgICAgICAgICAgICBteXRhYmxlbmFtZSAtLT4gbQorICAgICAgICAgICAgICAgICAgIE1ZVEFCTEVOQU1FIC0tPiBNCis8CisgCis0LjUgQ3VzdG9taXppbmcgTWFwcwkJCQkqc3FsLWNvbXBsZXRpb24tbWFwcyoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lvdSBjYW4gY3JlYXRlIGFzIG1hbnkgYWRkaXRpb25hbCBrZXkgbWFwcyBhcyB5b3UgbGlrZS4gIEdlbmVyYWxseSwgdGhlIG1hcHMKK3dpbGwgYmUgc3BlY2lmeWluZyBkaWZmZXJlbnQgc3ludGF4IGhpZ2hsaWdodCBncm91cHMuICAKKworSWYgeW91IGRvIG5vdCB3aXNoIHRoZSBkZWZhdWx0IG1hcHMgY3JlYXRlZCBvciB0aGUga2V5IGNob2ljZXMgZG8gbm90IHdvcmsgb24KK3lvdXIgcGxhdGZvcm0gKG9mdGVuIGEgY2FzZSBvbiAqbml4KSB5b3UgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaW4KK3lvdXIgfHZpbXJjfDogPgorICAgIGxldCBnOm9tbmlfc3FsX25vX2RlZmF1bHRfbWFwcyA9IDEKKzwgCitEbyBubyBlZGl0IGZ0cGx1Z2luL3NxbC52aW0gZGlyZWN0bHkhICBJZiB5b3UgY2hhbmdlIHRoaXMgZmlsZSB5b3VyIGNoYW5nZXMKK3dpbGwgYmUgb3ZlciB3cml0dGVuIG9uIGZ1dHVyZSB1cGRhdGVzLiAgVmltIGhhcyBhIHNwZWNpYWwgZGlyZWN0b3J5IHN0cnVjdHVyZQordGhhdCBhbGxvd3MgeW91IHRvIG1ha2UgY3VzdG9taXphdGlvbnMgd2l0aG91dCBjaGFuZ2luZyB0aGUgZmlsZXMgdGhhdCBhcmUKK2luY2x1ZGVkIHdpdGggdGhlIFZpbSBkaXN0cmlidXRpb24uICBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgdGhlIG1hcHMKK2NyZWF0ZSBhbiBhZnRlci9mdHBsdWdpbi9zcWwudmltIChzZWUgfGFmdGVyLWRpcmVjdG9yeXwpIGFuZCBwbGFjZSB0aGUgc2FtZQorbWFwcyBmcm9tIHRoZSBmdHBsdWdpbi9zcWwudmltIGluIGl0IHVzaW5nIHlvdXIgb3duIGtleSBzdHJva2VzLiAgPEMtQz4gd2FzCitjaG9zZW4gc2luY2UgaXQgd2lsbCB3b3JrIG9uIGJvdGggV2luZG93cyBhbmQgKm5peCBwbGF0Zm9ybXMuICBPbiB0aGUgd2luZG93cworcGxhdGZvcm0geW91IGNhbiBhbHNvIHVzZSA8Qy1TcGFjZT4gb3IgQUxUIGtleXMuCisgCiAKIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3MgYi9ydW50aW1lL2RvYy90YWdzCmluZGV4IDNmOGIyZTEuLjMyZTJmMGIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhZ3MKKysrIGIvcnVudGltZS9kb2MvdGFncwpAQCAtNTMwNyw2ICs1MzA3LDcgQEAKIGZ0LXNwZWMtcGx1Z2luCWZpbGV0eXBlLnR4dAkvKmZ0LXNwZWMtcGx1Z2luKgogZnQtc3B1cC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXNwdXAtc3ludGF4KgogZnQtc3FsCWZpbGV0eXBlLnR4dAkvKmZ0LXNxbCoKK2Z0LXNxbC1vbW5pCWluc2VydC50eHQJLypmdC1zcWwtb21uaSoKIGZ0LXNxbC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXNxbC1zeW50YXgqCiBmdC1zcWxhbnl3aGVyZS1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXNxbGFueXdoZXJlLXN5bnRheCoKIGZ0LXNxbGluZm9ybWl4LXN5bnRheAlzeW50YXgudHh0CS8qZnQtc3FsaW5mb3JtaXgtc3ludGF4KgpAQCAtNTc0Niw2ICs1NzQ3LDcgQEAKIGlfQ1RSTC1DCWluc2VydC50eHQJLyppX0NUUkwtQyoKIGlfQ1RSTC1ECWluc2VydC50eHQJLyppX0NUUkwtRCoKIGlfQ1RSTC1FCWluc2VydC50eHQJLyppX0NUUkwtRSoKK2lfQ1RSTC1GCWluZGVudC50eHQJLyppX0NUUkwtRioKIGlfQ1RSTC1HXzxEb3duPglpbnNlcnQudHh0CS8qaV9DVFJMLUdfPERvd24+KgogaV9DVFJMLUdfPFVwPglpbnNlcnQudHh0CS8qaV9DVFJMLUdfPFVwPioKIGlfQ1RSTC1HX0NUUkwtSglpbnNlcnQudHh0CS8qaV9DVFJMLUdfQ1RSTC1KKgpAQCAtNTkxNiw2ICs1OTE4LDcgQEAKIGtleS1ub3RhdGlvbglpbnRyby50eHQJLyprZXktbm90YXRpb24qCiBrZXktdmFyaWFibGUJZXZhbC50eHQJLyprZXktdmFyaWFibGUqCiBrZXljb2RlcwlpbnRyby50eHQJLyprZXljb2RlcyoKK2tleW1hcC1hY2NlbnRzCW1ieXRlLnR4dAkvKmtleW1hcC1hY2NlbnRzKgoga2V5bWFwLWZpbGUtZm9ybWF0CW1ieXRlLnR4dAkvKmtleW1hcC1maWxlLWZvcm1hdCoKIGtleW1hcC1oZWJyZXcJbWJ5dGUudHh0CS8qa2V5bWFwLWhlYnJldyoKIGtleXBhZC0wCWludHJvLnR4dAkvKmtleXBhZC0wKgpAQCAtNjM4Niw2ICs2Mzg5LDcgQEAKIG9sZS1yZWdpc3RyYXRpb24JaWZfb2xlLnR4dAkvKm9sZS1yZWdpc3RyYXRpb24qCiBvbGUtc2VuZGtleXMJaWZfb2xlLnR4dAkvKm9sZS1zZW5ka2V5cyoKIG9sZS1zZXRmb3JlZ3JvdW5kCWlmX29sZS50eHQJLypvbGUtc2V0Zm9yZWdyb3VuZCoKK29tbmktc3FsLWNvbXBsZXRpb24Jc3FsLnR4dAkvKm9tbmktc3FsLWNvbXBsZXRpb24qCiBvbmxpbmUtaGVscAl2YXJpb3VzLnR4dAkvKm9ubGluZS1oZWxwKgogb3BlbmluZy13aW5kb3cJd2luZG93cy50eHQJLypvcGVuaW5nLXdpbmRvdyoKIG9wZXJhdG9yCW1vdGlvbi50eHQJLypvcGVyYXRvcioKQEAgLTY5MDUsNiArNjkwOSwxNiBAQAogc3Bvb24Jb3NfdW5peC50eHQJLypzcG9vbioKIHNwdXAudmltCXN5bnRheC50eHQJLypzcHVwLnZpbSoKIHNxbC1hZGRpbmctZGlhbGVjdHMJc3FsLnR4dAkvKnNxbC1hZGRpbmctZGlhbGVjdHMqCitzcWwtY29tcGxldGlvbglzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24qCitzcWwtY29tcGxldGlvbi1jb2x1bW5zCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1jb2x1bW5zKgorc3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbglzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbioKK3NxbC1jb21wbGV0aW9uLWR5bmFtaWMJc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLWR5bmFtaWMqCitzcWwtY29tcGxldGlvbi1tYXBzCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1tYXBzKgorc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcwlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcyoKK3NxbC1jb21wbGV0aW9uLXN0YXRpYwlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tc3RhdGljKgorc3FsLWNvbXBsZXRpb24tdGFibGVzCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi10YWJsZXMqCitzcWwtY29tcGxldGlvbi10dXRvcmlhbAlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tdHV0b3JpYWwqCitzcWwtY29tcGxldGlvbi12aWV3cwlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tdmlld3MqCiBzcWwtZGlhbGVjdHMJc3FsLnR4dAkvKnNxbC1kaWFsZWN0cyoKIHNxbC1tYWNyb3MJc3FsLnR4dAkvKnNxbC1tYWNyb3MqCiBzcWwtbWF0Y2hpdAlzcWwudHh0CS8qc3FsLW1hdGNoaXQqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IDk4ZTNiODIuLmU1ZTkzNGIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI4CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzAsMTAgKzMwLDcgQEAKIAkJCQkJCQkqa25vd24tYnVncyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgMTYgYml0IERPUyB2ZXJzaW9uIGNvbXBpbGVzIG5vdywgYnV0IGl0J3Mgc3RpbGwgdG9vIGxvdyBvbiBtZW1vcnksIHdyaXRpbmcKLWEgZmlsZSBmYWlscyB3aGVuICd3cml0ZWJhY2t1cCcgaXMgc2V0LgotCi1IYXZlIGFyZ3YoKSByZXR1cm4gdGhlIGFyZ3VtZW50cyBpbiBhIExpc3QuCitXaGVuICJzZWFyY2giIGlzIGluICdmb2xkb3BlbicgaGF2ZSBbcyBhbmQgXXMgb3BlbiBmb2xkcy4KIAogTmV3IEh1bmdhcmlhbiBkaWN0aW9uYXJ5LiAoTGFjaSBOZW1ldGgpCiAgICAgdGVzdCBDT01QT1VOREZPUkJJREZMQUcKQEAgLTQ5LDkgKzQ2LDYgQEAKICAgICBBbHNvOiB3aGVuIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBleGlzdHMsIHVzZSBpdC4gIElmIGl0IGRvZXNuJ3QKICAgICBleGlzdCwgc2V0IGl0LiAgUmVxdWlyZXMgZ29vZCBuYW1lczogJFZJTV9VU0VSX1ZJTVJDICAkVklNX1VTRVJfRElSCiAgICAgQWRkIGEgbWVudSBpdGVtICJQcmVmZXJlbmNlcyIgdGhhdCBkb2VzICJzcCAkTVlWSU1SQyIuCi0tICAgVGhlIFJlcGxhY2UgZGlhbG9nIHRha2VzICJcciIgbGl0ZXJhbCwgdW5sZXNzICJyZXBsYWNlIGFsbCIgaXMgdXNlZC4KLSAgICBOZWVkIHRvIGVzY2FwZSBiYWNrc2xhc2hlcy4KLSAgICBXaW4zMjogdGhlIHRleHQgdG8gcmVwbGFjZSB3aXRoIGlzbid0IHJlbWVtYmVyZWQuCiAKIEFkZCBtb3JlIHRlc3RzIGZvciBhbGwgbmV3IGZ1bmN0aW9uYWxpdHkgaW4gVmltIDcuICBFc3BlY2lhbGx5IG5ldyBmdW5jdGlvbnMuCiAKQEAgLTQ2MSw3ICs0NTUsOCBAQAogOCAgIERKR1BQOiAiY2QgYzoiIGNhbiB0YWtlIHVzIHRvIGEgZGlyZWN0b3J5IHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy4KICAgICBjaGFuZ2VfZHJpdmUoKSBkb2Vzbid0IGNoZWNrIHRoaXMuICBIb3cgdG8gY2hlY2sgZm9yIHRoaXMgZXJyb3I/CiA5ICAgVGhlIDE2IGJpdCB2ZXJzaW9uIHJ1bnMgb3V0IG9mIG1lbW9yeSB2ZXJ5IHF1aWNrbHkuICBTaG91bGQgZmluZCB1bnVzZWQKLSAgICBjb2RlIGFuZCByZWR1Y2Ugc3RhdGljIGRhdGEuCisgICAgY29kZSBhbmQgcmVkdWNlIHN0YXRpYyBkYXRhLiAgUmVzZXR0aW5nICd3cml0ZWJhY2t1cCcgaGVscHMgdG8gYmUgYWJsZSB0bworICAgIHdyaXRlIGEgZmlsZS4KIDkgICBDcmFzaCB3aGVuIHJ1bm5pbmcgb24gV2luZG93cyA5OCBpbiBhIGNvbnNvbGUgd2luZG93IGFuZCBwcmVzc2luZyBDVFJMLUMuCiAgICAgSGFwcGVucyBub3cgYW5kIHRoZW4uICBXaGVuIGRlYnVnZ2luZyBWaW0gaW4gZ2RiIHRoaXMgYWxzbyBoYXBwZW5zLiAgU2luY2UKICAgICB0aGUgY29uc29sZSBjcmFzaGVzLCBtaWdodCBiZSBhIGJ1ZyBpbiB0aGUgRE9TIGNvbnNvbGUuICBSZXNldHRpbmcKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dCBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dAppbmRleCAyYTNjZDk1Li40NjM1NmIwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKKysrIGIvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CkBAIC0xLDQgKzEsNCBAQAotKnZlcnNpb243LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI4CisqdmVyc2lvbjcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTY5Miw2ICs2OTIsNyBAQAogCiB8YWRkKCl8CQkJYXBwZW5kIGFuIGl0ZW0gdG8gYSBMaXN0CiB8YXBwZW5kKCl8CQlhcHBlbmQgTGlzdCBvZiBsaW5lcyB0byB0aGUgYnVmZmVyCit8YXJndigpfAkJd2l0aG91dCBhbiBhcmd1bWVudCByZXR1cm4gdGhlIHdob2xlIGFyZ3VtZW50IGxpc3QKIHxicm93c2VkaXIoKXwJCWRpYWxvZyB0byBzZWxlY3QgYSBkaXJlY3RvcnkKIHxidWZucigpfAkJdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQ6IGNyZWF0ZSBidWZmZXIKIHxieXRlaWR4KCl8IAkJaW5kZXggb2YgYSBjaGFyYWN0ZXIgKElseWEgU2hlcikKQEAgLTIyMzksNCArMjI0MCwxOSBAQAogR1VJOiBXaGVuIHRoZXJlIGFyZSBsZWZ0IGFuZCByaWdoIHNjcm9sbGJhcnMsICI6dGFiZWRpdCIga2VwdCB0aGVtIGluc3RlYWQgb2YKIHVzaW5nIHRoZSBvbmUgdGhhdCBpc24ndCBuZWVkZWQuCiAKK1VzaW5nICJnUCIgdG8gcmVwbGFjZSBhbCB0aGUgdGV4dCBjb3VsZCBsZWF2ZSB0aGUgY3Vyc29yIGJlbG93IHRoZSBsYXN0IGxpbmUsCitjYXVzaW5nIG1sX2dldCBlcnJvcnMuCisKK1doZW4gJ2N1cnNvcmxpbmUnIGlzIHNldCBkb24ndCB1c2UgdGhlIGhpZ2hsaWdodGluZyB3aGVuIFZpc3VhbCBtb2RlIGlzCithY3RpdmUsIG90aGVyd2lzZSBpdCdzIGRpZmZpY3VsdCB0byBzZWUgdGhlIHNlbGVjdGVkIGFyZWEuCisKK1RoZSBtYXRjaHBhcmVuIHBsdWdpbiByZXN0cmljdHMgdGhlIHNlYXJjaCB0byAxMDAgbGluZXMsIHRvIGF2b2lkIGEgbG9uZyBkZWxheQord2hlbiB0aGVyZSBhcmUgY2xvc2VkIGZvbGRzLgorCitTb21ldGltZXMgdXNpbmcgQ1RSTC1YIHMgdG8gbGlzdCBzcGVsbGluZyBzdWdnZXN0aW9ucyB1c2VkIHRleHQgZnJvbSBhbm90aGVyCitsaW5lLgorCitXaW4zMjogU2V0IHRoZSBkZWZhdWx0IGZvciAnaXNwcmludCcgYmFjayB0byB0aGUgd3JvbmcgZGVmYXVsdCAiQCx+LTI1NSIsCitiZWNhdXNlIG1hbnkgcGVvcGxlIHVzZSBXaW5kb3dzLTEyNTIgd2hpbGUgJ2VuY29kaW5nJyBpcyAibGF0aW4xIi4KKwogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZXZpbS52aW0gYi9ydW50aW1lL2V2aW0udmltCmluZGV4IGMyODllMjAuLjc1NDcyOTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZXZpbS52aW0KKysrIGIvcnVudGltZS9ldmltLnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgVmltIHNjcmlwdCBmb3IgRXZpbSBrZXkgYmluZGluZ3MKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDIgTWFyIDA0CisiIExhc3QgQ2hhbmdlOgkyMDA2IE1hciAyOQogCiAiIERvbid0IHVzZSBWaS1jb21wYXRpYmxlIG1vZGUuCiBzZXQgbm9jb21wYXRpYmxlCkBAIC0xNSw4ICsxNSw4IEBACiBzZXQgaGlkZGVuCiAKICIgTWFrZSBjdXJzb3Iga2V5cyBpZ25vcmUgd3JhcHBpbmcKLWlub3JlbWFwIDxEb3duPiA8Qy1PPmdqCi1pbm9yZW1hcCA8VXA+IDxDLU8+Z2sKK2lub3JlbWFwIDxEb3duPiA8Qy1SPj1wdW12aXNpYmxlKCkgPyAiXDxsdD5Eb3duPiIgOiAiXDxsdD5DLU8+Z2oiPENSPgoraW5vcmVtYXAgPFVwPiA8Qy1SPj1wdW12aXNpYmxlKCkgPyAiXDxsdD5VcD4iIDogIlw8bHQ+Qy1PPmdrIjxDUj4KIAogIiBDVFJMLUYgZG9lcyBGaW5kIGRpYWxvZyBpbnN0ZWFkIG9mIHBhZ2UgZm9yd2FyZAogbm9yZW1hcCA8Qy1GPiA6cHJvbXB0ZmluZDxDUj4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vc3FsLnZpbSBiL3J1bnRpbWUvZnRwbHVnaW4vc3FsLnZpbQppbmRleCBkMmU2ZWU1Li4xYmM1ODMxIDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luL3NxbC52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9zcWwudmltCkBAIC0yLDcgKzIsNyBAQAogIiBMYW5ndWFnZTogICAgU1FMIChDb21tb24gZm9yIE9yYWNsZSwgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIsIFN5YmFzZSkKICIgVmVyc2lvbjogICAgIDEuMAogIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGZpc2hidXJuIGF0IGlhbnl3aGVyZSBkb3QgY29tPgotIiBMYXN0IENoYW5nZTogV2VkIEphbiAxMSAyMDA2IDEwOjA0OjU1IEFNCisiIExhc3QgQ2hhbmdlOiBUdWUgTWFyIDI4IDIwMDYgMjoyNjo0OCBQTQogIiBEb3dubG9hZDogICAgaHR0cDovL3ZpbS5zb3VyY2Vmb3JnZS5uZXQvc2NyaXB0LnBocD9zY3JpcHRfaWQ9NDU0CiAKICIgRm9yIG1vcmUgZGV0YWlscyBwbGVhc2UgdXNlOgpAQCAtMzY3LDE2ICszNjcsMzUgQEAKICAgICBzZXRsb2NhbCBvbW5pZnVuYz1zcWxjb21wbGV0ZSNDb21wbGV0ZQogICAgICIgUHJldmVudCB0aGUgaW50ZWxsaXNlbnNlIHBsdWdpbiBmcm9tIGxvYWRpbmcKICAgICBsZXQgYjpzcWxfdmlzID0gMQotICAgIGltYXAgPGJ1ZmZlcj4gPGMtc3BhY2U+dCA8Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0ndGFibGUnPENSPjxDLVg+PEMtTz4KLSAgICBpbWFwIDxidWZmZXI+IDxjLXNwYWNlPnAgPEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3Byb2NlZHVyZSc8Q1I+PEMtWD48Qy1PPgotICAgIGltYXAgPGJ1ZmZlcj4gPGMtc3BhY2U+diA8Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0ndmlldyc8Q1I+PEMtWD48Qy1PPgotICAgIGltYXAgPGJ1ZmZlcj4gPGMtc3BhY2U+YyA8Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nY29sdW1uJzxDUj48Qy1YPjxDLU8+Ci0gICAgaW1hcCA8YnVmZmVyPiA8Yy1zcGFjZT5mIDxDLU8+OmxldCBiOnNxbF9jb21wbF90eXBlPSdmdW5jdGlvbic8Q1I+PEMtWD48Qy1PPgotICAgIGltYXAgPGJ1ZmZlcj4gPGMtc3BhY2U+byA8Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nb3B0aW9uJzxDUj48Qy1YPjxDLU8+Ci0gICAgaW1hcCA8YnVmZmVyPiA8Yy1yaWdodD4gPEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J2NvbHVtbic8Q1I+PEMtWD48Qy1PPgorICAgIGlmICFleGlzdHMoJ2c6b21uaV9zcWxfbm9fZGVmYXVsdF9tYXBzJykKKyAgICAgICAgIiBTdGF0aWMgbWFwcyB3aGljaCB1c2UgcG9wdWxhdGUgdGhlIGNvbXBsZXRpb24gbGlzdAorICAgICAgICAiIHVzaW5nIFZpbSdzIHN5bnRheCBoaWdobGlnaHRpbmcgcnVsZXMKKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPmEgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3ludGF4JzxDUj48Qy1YPjxDLU8+CisgICAgICAgIGltYXAgPGJ1ZmZlcj4gPGMtYz5rIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3NxbEtleXdvcmQnPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPmYgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsRnVuY3Rpb24nPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPm8gPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsT3B0aW9uJzxDUj48Qy1YPjxDLU8+CisgICAgICAgIGltYXAgPGJ1ZmZlcj4gPGMtYz5UIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3NxbFR5cGUnPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPnMgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsU3RhdGVtZW50JzxDUj48Qy1YPjxDLU8+CisgICAgICAgICIgRHluYW1pYyBtYXBzIHdoaWNoIHVzZSBwb3B1bGF0ZSB0aGUgY29tcGxldGlvbiBsaXN0CisgICAgICAgICIgdXNpbmcgdGhlIGRiZXh0LnZpbSBwbHVnaW4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPnQgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0ndGFibGUnPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPnAgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0ncHJvY2VkdXJlJzxDUj48Qy1YPjxDLU8+CisgICAgICAgIGltYXAgPGJ1ZmZlcj4gPGMtYz52IDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3ZpZXcnPENSPjxDLVg+PEMtTz4KKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPmMgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nY29sdW1uJzxDUj48Qy1YPjxDLU8+CisgICAgICAgIGltYXAgPGJ1ZmZlcj4gPGMtYz5sIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J2NvbHVtbl9jc3YnPENSPjxDLVg+PEMtTz4KKyAgICAgICAgIiBUaGUgbmV4dCAzIG1hcHMgYXJlIG9ubHkgdG8gYmUgdXNlZCB3aGlsZSB0aGUgY29tcGxldGlvbiB3aW5kb3cgaXMKKyAgICAgICAgIiBhY3RpdmUgZHVlIHRvIHRoZSA8Q1I+IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1hcAorICAgICAgICBpbWFwIDxidWZmZXI+IDxjLWM+TCA8Q1I+PEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nY29sdW1uX2Nzdic8Q1I+PEMtWD48Qy1PPgorICAgICAgICBpZiBoYXMoJ3dpbjMyJykKKyAgICAgICAgICAgIGltYXAgPGJ1ZmZlcj4gPGMtcmlnaHQ+ICA8Q1I+PEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nY29sdW1uJzxDUj48Qy1YPjxDLU8+CisgICAgICAgICAgICBpbWFwIDxidWZmZXI+IDxjLWxlZnQ+ICAgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0ndGFibGVSZXNldCc8Q1I+PEMtWD48Qy1PPgorICAgICAgICBlbmRpZgorICAgICAgICAiIFJlbW92ZSBhbnkgY2FjaGVkIGl0ZW1zIHVzZWZ1bCBmb3Igc2NoZW1hIGNoYW5nZXMKKyAgICAgICAgaW1hcCA8YnVmZmVyPiA8Yy1jPlIgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0ncmVzZXRDYWNoZSc8Q1I+PEMtWD48Qy1PPgorICAgIGVuZGlmCiBlbmRpZgogCiBsZXQgJmNwbyA9IHM6c2F2ZV9jcG8KIAotIiB2aW06c3c9NDpmZj11bml4OgorIiB2aW06c3c9NDoKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9sYW5nL21lbnVfamFfanAuZXVjLWpwLnZpbSBiL3J1bnRpbWUvbGFuZy9tZW51X2phX2pwLmV1Yy1qcC52aW0KaW5kZXggNGRjZmQ2ZS4uZTczMzc2YyAxMDA2NDQKLS0tIGEvcnVudGltZS9sYW5nL21lbnVfamFfanAuZXVjLWpwLnZpbQorKysgYi9ydW50aW1lL2xhbmcvbWVudV9qYV9qcC5ldWMtanAudmltCkBAIC0zMzAsMyArMzMwLDggQEAKICAgZW5kaWYKICAgYW4gMTAuMzk2LjEyMC4xMzAgpdWloaWkpesoJkYpLqWopfOls6G8pcm72MTqKCZFKVwuXC5cLi7K3cK4KCZTKVwuXC5cLi5VVEYtOCgmOCk8VGFiPmZlbmM9dXRmLTggOnNldCBmZW5jPXV0Zi04IFx8IHc8Q1I+CiBlbmRpZgorCisiIGZpbGxlciB0byBhdm9pZCB0aGUgbGluZSBhYm92ZSBiZWluZyByZWNvZ25pemVkIGFzIGEgbW9kZWxpbmUKKyIgZmlsbGVyCisiIGZpbGxlcgorIiBmaWxsZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvbGFuZy9tZW51X2phX2pwLnV0Zi04LnZpbSBiL3J1bnRpbWUvbGFuZy9tZW51X2phX2pwLnV0Zi04LnZpbQppbmRleCA4YzJmMmE2Li4yNDkxZjBjIDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9qYV9qcC51dGYtOC52aW0KKysrIGIvcnVudGltZS9sYW5nL21lbnVfamFfanAudXRmLTgudmltCkBAIC0zMzAsMyArMzMwLDggQEAKICAgZW5kaWYKICAgYW4gMTAuMzk2LjEyMC4xMzAg44OV44Kh44Kk44OrKCZGKS7jgqjjg7PjgrPjg7zjg4nmjIflrpooJkUpXC5cLlwuLuS/neWtmCgmUylcLlwuXC4uVVRGLTgoJjgpPFRhYj5mZW5jPXV0Zi04IDpzZXQgZmVuYz11dGYtOCBcfCB3PENSPgogZW5kaWYKKworIiBmaWxsZXIgdG8gYXZvaWQgdGhlIGxpbmUgYWJvdmUgYmVpbmcgcmVjb2duaXplZCBhcyBhIG1vZGVsaW5lCisiIGZpbGxlcgorIiBmaWxsZXIKKyIgZmlsbGVyCmRpZmYgLS1naXQgYS9ydW50aW1lL2xhbmcvbWVudV9qYXBhbmVzZV9qYXBhbi45MzIudmltIGIvcnVudGltZS9sYW5nL21lbnVfamFwYW5lc2VfamFwYW4uOTMyLnZpbQppbmRleCA5MDI3M2FiLi4xNmEyNjM1IDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9qYXBhbmVzZV9qYXBhbi45MzIudmltCisrKyBiL3J1bnRpbWUvbGFuZy9tZW51X2phcGFuZXNlX2phcGFuLjkzMi52aW0KQEAgLTMzMCwzICszMzAsOCBAQAogICBlbmRpZgogICBhbiAxMC4zOTYuMTIwLjEzMCCDdINAg0ODiygmRikug0eDk4NSgVuDaI53kugoJkUpXC5cLlwuLpXbkbYoJlMpXC5cLlwuLlVURi04KCY4KTxUYWI+ZmVuYz11dGYtOCA6c2V0IGZlbmM9dXRmLTggXHwgdzxDUj4KIGVuZGlmCisKKyIgZmlsbGVyIHRvIGF2b2lkIHRoZSBsaW5lIGFib3ZlIGJlaW5nIHJlY29nbml6ZWQgYXMgYSBtb2RlbGluZQorIiBmaWxsZXIKKyIgZmlsbGVyCisiIGZpbGxlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9wbHVnaW4vbWF0Y2hwYXJlbi52aW0gYi9ydW50aW1lL3BsdWdpbi9tYXRjaHBhcmVuLnZpbQppbmRleCBjOGQ2ZjliLi41NzUwNTE3IDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9tYXRjaHBhcmVuLnZpbQorKysgYi9ydW50aW1lL3BsdWdpbi9tYXRjaHBhcmVuLnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgVmltIHBsdWdpbiBmb3Igc2hvd2luZyBtYXRjaGluZyBwYXJlbnMKICIgTWFpbnRhaW5lcjogIEJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOiAyMDA2IE1hciAxNAorIiBMYXN0IENoYW5nZTogMjAwNiBNYXIgMjkKIAogIiBFeGl0IHF1aWNrbHkgd2hlbjoKICIgLSB0aGlzIHBsdWdpbiB3YXMgYWxyZWFkeSBsb2FkZWQgKG9yIGRpc2FibGVkKQpAQCAtNjMsMTUgKzYzLDIyIEBACiAKICAgIiBGaWd1cmUgb3V0IHRoZSBhcmd1bWVudHMgZm9yIHNlYXJjaHBhaXJwb3MoKS4KICAgIiBSZXN0cmljdCB0aGUgc2VhcmNoIHRvIHZpc2libGUgbGluZXMgd2l0aCAic3RvcGxpbmUiLgorICAiIEFuZCBhdm9pZCBzZWFyY2hpbmcgdmVyeSBmYXIgKGUuZy4sIGZvciBjbG9zZWQgZm9sZHMpCiAgIGlmIGkgJSAyID09IDAKICAgICBsZXQgc19mbGFncyA9ICduVycKICAgICBsZXQgYzIgPSBwbGlzdFtpICsgMV0KICAgICBsZXQgc3RvcGxpbmUgPSBsaW5lKCd3JCcpCisgICAgaWYgc3RvcGxpbmUgPiBjX2xudW0gKyAxMDAKKyAgICAgIGxldCBzdG9wbGluZSA9IGNfbG51ICsgMTAwCisgICAgZW5kaWYKICAgZWxzZQogICAgIGxldCBzX2ZsYWdzID0gJ25iVycKICAgICBsZXQgYzIgPSBjCiAgICAgbGV0IGMgPSBwbGlzdFtpIC0gMV0KICAgICBsZXQgc3RvcGxpbmUgPSBsaW5lKCd3MCcpCisgICAgaWYgc3RvcGxpbmUgPCBjX2xudW0gLSAxMDAKKyAgICAgIGxldCBzdG9wbGluZSA9IGNfbG51IC0gMTAwCisgICAgZW5kaWYKICAgZW5kaWYKICAgaWYgYyA9PSAnWycKICAgICBsZXQgYyA9ICdcWycKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2hlbHAudmltIGIvcnVudGltZS9zeW50YXgvaGVscC52aW0KaW5kZXggN2NlOGNkZS4uYTI0NDU1YSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvaGVscC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvaGVscC52aW0KQEAgLTEsMTQgKzEsMTQgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglWaW0gaGVscCBmaWxlCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIChCcmFtQHZpbS5vcmcpCi0iIExhc3QgQ2hhbmdlOgkyMDA2IE1hciAyNgorIiBMYXN0IENoYW5nZToJMjAwNiBNYXIgMjkKIAogIiBRdWl0IHdoZW4gYSAoY3VzdG9tKSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKIGlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCiAgIGZpbmlzaAogZW5kaWYKIAotc3luIG1hdGNoIGhlbHBIZWFkbGluZQkJIl5bQS1aIF1cK1sgXVwrXCoibWU9ZS0xCitzeW4gbWF0Y2ggaGVscEhlYWRsaW5lCQkiXlstQS1aIF1cK1sgXHRdXCtcKiJtZT1lLTEKIHN5biBtYXRjaCBoZWxwU2VjdGlvbkRlbGltCSJePVx7Myx9Lio9PT0kIgogc3luIG1hdGNoIGhlbHBTZWN0aW9uRGVsaW0JIl4tXHszLH0uKi0tJCIKIHN5biByZWdpb24gaGVscEV4YW1wbGUJCW1hdGNoZ3JvdXA9aGVscElnbm9yZSBzdGFydD0iID4kIiBzdGFydD0iXj4kIiBlbmQ9Il5bXiBcdF0ibWU9ZS0xIGVuZD0iXjwiCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9weXRob24udmltIGIvcnVudGltZS9zeW50YXgvcHl0aG9uLnZpbQppbmRleCBhNzNkZmE3Li41Mjg3M2U5IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9weXRob24udmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3B5dGhvbi52aW0KQEAgLTQ3LDcgKzQ3LDggQEAKIHN5biBrZXl3b3JkIHB5dGhvblJlcGVhdAlmb3Igd2hpbGUKIHN5biBrZXl3b3JkIHB5dGhvbkNvbmRpdGlvbmFsCWlmIGVsaWYgZWxzZQogc3luIGtleXdvcmQgcHl0aG9uT3BlcmF0b3IJYW5kIGluIGlzIG5vdCBvcgotc3luIGtleXdvcmQgcHl0aG9uUHJlQ29uZGl0CWltcG9ydCBmcm9tCisiIEFTIHdpbGwgYmUgYSBrZXl3b3JkIGluIFB5dGhvbiAzCitzeW4ga2V5d29yZCBweXRob25QcmVDb25kaXQJaW1wb3J0IGZyb20gYXMKIHN5biBtYXRjaCAgIHB5dGhvbkNvbW1lbnQJIiMuKiQiIGNvbnRhaW5zPXB5dGhvblRvZG8KIHN5biBrZXl3b3JkIHB5dGhvblRvZG8JCVRPRE8gRklYTUUgWFhYIGNvbnRhaW5lZAogCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC92aW0udmltIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQppbmRleCA4MmJlNGQwLi4zYTU1OTI1IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC92aW0udmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJVmltIDcuMCBzY3JpcHQKICIgTWFpbnRhaW5lcjoJRHIuIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiA8TmRyT2NoaXBTQFBjYW1wYmVsbEFmYW1pbHkuTWJpej4KLSIgTGFzdCBDaGFuZ2U6CU1hcmNoIDIyLCAyMDA2Ci0iIFZlcnNpb246CTcuMC0zNQorIiBMYXN0IENoYW5nZToJTWFyY2ggMjksIDIwMDYKKyIgVmVyc2lvbjoJNy4wLTM3CU5PVCBSRUxFQVNFRAogIiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBrZXl3b3JkIGxpc3RzOiB7e3sxCiAKICIgUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkIHt7ezIKQEAgLTE2LDcgKzE2LDcgQEAKIHN5biBjbHVzdGVyIHZpbUNvbW1lbnRHcm91cAljb250YWlucz12aW1Ub2RvLEBTcGVsbAogCiAiIHJlZ3VsYXIgdmltIGNvbW1hbmRzIHt7ezIKLXN5biBrZXl3b3JkIHZpbUNvbW1hbmQgY29udGFpbmVkCWFiW2JyZXZpYXRlXSBhYmNbbGVhcl0gYWJvW3ZlbGVmdF0gYWxbbF0gYXJnYVtkZF0gYXJnZFtlbGV0ZV0gYXJnZG8gYXJnZVtkaXRdIGFyZ2dbbG9iYWxdIGFyZ2xbb2NhbF0gYXJbZ3NdIGFyZ3VbbWVudF0gYXNbY2lpXSBiYWRbZF0gYmFbbGxdIGJkW2VsZXRlXSBiZSBiZWxbb3dyaWdodF0gYmZbaXJzdF0gYmxbYXN0XSBibVtvZGlmaWVkXSBibltleHRdIGJOW2V4dF0gYm9bdHJpZ2h0XSBicFtyZXZpb3VzXSBicmVhW2tdIGJyZWFrYVtkZF0gYnJlYWtkW2VsXSBicmVha2xbaXN0XSBicltld2luZF0gYnJvW3dzZV0gYnVmZG8gYlt1ZmZlcl0gYnVmZmVycyBidW5bbG9hZF0gYndbaXBlb3V0XSBjYVtiYnJldl0gY2FiY1tsZWFyXSBjYWRkYlt1ZmZlcl0gY2FkW2RleHByXSBjYWRkZltpbGVdIGNhbFtsXSBjYXRbY2hdIGNiW3VmZmVyXSBjYyBjY2xbb3NlXSBjZCBjZVtudGVyXSBjZXhbcHJdIGNmW2lsZV0gY2ZpcltzdF0gY2dbZXRmaWxlXSBjW2hhbmdlXSBjaGFuZ2VzIGNoZFtpcl0gY2hlW2NrcGF0aF0gY2hlY2t0W2ltZV0gY2xhW3N0XSBjbFtpc3RdIGNsb1tzZV0gY21hcGNbbGVhcl0gY25ld1tlcl0gY25bZXh0XSBjTltleHRdIGNuZltpbGVdIGNOZltpbGVdIGNub3JlYVtiYnJldl0gY29sW2Rlcl0gY29sb1tyc2NoZW1lXSBjb21jW2xlYXJdIGNvbXBbaWxlcl0gY29uZltpcm1dIGNvblt0aW51ZV0gY29wZVtuXSBjb1tweV0gY3BmW2lsZV0gY3BbcmV2aW91c10gY3FbdWl0XSBjcltld2luZF0gY3VuYVtiYnJldl0gY3Vbbm1hcF0gY3dbaW5kb3ddIGRlYnVnZ1tyZWVkeV0gZGVsY1tvbW1hbmRdIGRbZWxldGVdIERlbGV0ZUZpcnN0IGRlbGZbdW5jdGlvbl0gZGVsbVthcmtzXSBkaWZmZ1tldF0gZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1W3RdIGRpZmZzcGxpdCBkaWZmdGhpcyBkaWZmdVtwZGF0ZV0gZGlnW3JhcGhzXSBkaVtzcGxheV0gZGpbdW1wXSBkbFtpc3RdIGRyW29wXSBkc1tlYXJjaF0gZHNwW2xpdF0gZWFybGllciBlY2hvZVtycl0gZWNob21bc2ddIGVjaG9uIGVbZGl0XSBlbFtzZV0gZWxzZWlbZl0gZW1bZW51XSBlbWVudSogZW5kZm9bcl0gZW5kZlt1bmN0aW9uXSBlbltkaWZdIGVuZHRbcnldIGVuZHdbaGlsZV0gZW5lW3ddIGV4IGV4aVt0XSBFeHBsb3JlIGV4dVtzYWdlXSBmW2lsZV0gZmlsZXMgZmlsZXR5cGUgZmluYVtsbHldIGZpbltkXSBmaW5pW3NoXSBmaXJbc3RdIGZpeFtkZWxdIGZvW2xkXSBmb2xkY1tsb3NlXSBmb2xkZG9jW2xvc2VkXSBmb2xkZFtvb3Blbl0gZm9sZG9bcGVuXSBmb3IgZnVbbmN0aW9uXSBnW2xvYmFsXSBnb1t0b10gZ3JbZXBdIGdyZXBhW2RkXSBoYVtyZGNvcHldIGhbZWxwXSBoZWxwZltpbmRdIGhlbHBnW3JlcF0gaGVscHRbYWdzXSBIZXhwbG9yZSBoaWRbZV0gaGlzW3RvcnldIEkgaWFbYmJyZXZdIGlhYmNbbGVhcl0gaWYgaWpbdW1wXSBpbFtpc3RdIGltYXBjW2xlYXJdIGlub3JlYVtiYnJldl0gaXNbZWFyY2hdIGlzcFtsaXRdIGl1bmFbYmJyZXZdIGl1W25tYXBdIGpbb2luXSBqdVttcHNdIGsga2VlcGFsdCBrZWVwalt1bXBzXSBrZWVbcG1hcmtzXSBsYWRkYlt1ZmZlcl0gbGFkW2RleHByXSBsYWRkZltpbGVdIGxhbltndWFnZV0gbGFbc3RdIGxhdGVyIGxiW3VmZmVyXSBsY1tkXSBsY2hbZGlyXSBsY2xbb3NlXSBsZVtmdF0gbGVmdGFbYm92ZV0gbGV4W3ByXSBsZltpbGVdIGxmaXJbc3RdIGxnW2V0ZmlsZV0gbGdyW2VwXSBsZ3JlcGFbZGRdIGxoW2VscGdyZXBdIGxbaXN0XSBsbCBsbGFbc3RdIGxsaVtzdF0gbG1ha1tlXSBsbVthcF0gbG1hcGNbbGVhcl0gbG5ld1tlcl0gbG5lW3h0XSBsTltleHRdIGxuZltpbGVdIGxOZltpbGVdIGxuW29yZW1hcF0gbG9bYWR2aWV3XSBsb2Nba21hcmtzXSBsb2Nrdlthcl0gbG9sW2Rlcl0gbG9wW2VuXSBscGZbaWxlXSBscFtyZXZpb3VzXSBscltld2luZF0gbHMgbHRbYWddIGx1W25tYXBdIGx2W2ltZ3JlcF0gbHZpbWdyZXBhW2RkXSBsd1tpbmRvd10gbWFrW2VdIG1hW3JrXSBtYXJrcyBtYXRbY2hdIG1lbnV0W3JhbnNsYXRlXSBta1tleHJjXSBta3NbZXNzaW9uXSBta3NwW2VsbF0gbWt2aWVbd10gbWt2W2ltcmNdIG1vZFtlXSBtW292ZV0gbXpmW2lsZV0gbXpbc2NoZW1lXSBuYmtleSBOZXRyd1NldHRpbmdzIG5ldyBuW2V4dF0gTltleHRdIG5tYXBjW2xlYXJdIG5vaFtsc2VhcmNoXSBub3JlYVtiYnJldl0gTnJlYWQgbnVbbWJlcl0gbnVuW21hcF0gTncgb21hcGNbbGVhcl0gb25bbHldIG9bcGVuXSBvcHRbaW9uc10gb3Vbbm1hcF0gcGNbbG9zZV0gcGVkW2l0XSBwZVtybF0gcGVybGRbb10gcG9bcF0gcG9wdSBwb3B1W3BdIHBwW29wXSBwcmVbc2VydmVdIHByZXZbaW91c10gcFtyaW50XSBQW3JpbnRdIHByb2ZkW2VsXSBwcm9mW2lsZV0gcHJvbXB0IHByb21wdGZbaW5kXSBwcm9tcHRyW2VwbF0gcHNbZWFyY2hdIHB0YVtnXSBwdGZbaXJzdF0gcHRqW3VtcF0gcHRsW2FzdF0gcHRuW2V4dF0gcHROW2V4dF0gcHRwW3JldmlvdXNdIHB0cltld2luZF0gcHRzW2VsZWN0XSBwdVt0XSBwd1tkXSBweWZbaWxlXSBweVt0aG9uXSBxYVtsbF0gcVt1aXRdIHF1aXRhW2xsXSByW2VhZF0gcmVjW292ZXJdIHJlZGlbcl0gcmVkW29dIHJlZHJbYXddIHJlZHJhd3NbdGF0dXNdIHJlZ1tpc3RlcnNdIHJlc1tpemVdIHJldFthYl0gcmV0dVtybl0gcmV3W2luZF0gcmlbZ2h0XSByaWdodGJbZWxvd10gcnViW3ldIHJ1YnlkW29dIHJ1YnlmW2lsZV0gcnVbbnRpbWVdIHJ2W2ltaW5mb10gc2FsW2xdIHNhbltkYm94XSBzYVtyZ3VtZW50XSBzYXZbZWFzXSBzYmFbbGxdIHNiZltpcnN0XSBzYmxbYXN0XSBzYm1bb2RpZmllZF0gc2JuW2V4dF0gc2JOW2V4dF0gc2JwW3JldmlvdXNdIHNicltld2luZF0gc2JbdWZmZXJdIHNjcmlwdGVbbmNvZGluZ10gc2NyaXBbdG5hbWVzXSBzZVt0XSBzZXRmW2lsZXR5cGVdIHNldGdbbG9iYWxdIHNldGxbb2NhbF0gU2V4cGxvcmUgc2ZbaW5kXSBzZmlyW3N0XSBzaFtlbGxdIHNpZ24gc2lsW2VudF0gc2ltW2FsdF0gc2xhW3N0XSBzbFtlZXBdIHNtW2FnaWNdIHNtW2FwXSBzbWFwY1tsZWFyXSBzbWUgc21lbnUgc25bZXh0XSBzTltleHRdIHNuaVtmZl0gc25vW21hZ2ljXSBzbm9yW2VtYXBdIHNub3JlbWUgc25vcmVtZW51IHNvclt0XSBzb1t1cmNlXSBzcGVsbGRbdW1wXSBzcGVbbGxnb29kXSBzcGVsbGlbbmZvXSBzcGVsbHJbZXBhbGxdIHNwZWxsdVtuZG9dIHNwZWxsd1tyb25nXSBzcFtsaXRdIHNwcltldmlvdXNdIHNyZVt3aW5kXSBzdGFbZ10gc3RhcnRnW3JlcGxhY2VdIHN0YXJbdGluc2VydF0gc3RhcnRyW2VwbGFjZV0gc3RqW3VtcF0gc3Rbb3BdIHN0b3BpW25zZXJ0XSBzdHNbZWxlY3RdIHN1bltoaWRlXSBzdW5tW2FwXSBzdXNbcGVuZF0gc3ZbaWV3XSBzeW5jYmluZCB0IHRhYiB0YWJjW2xvc2VdIHRhYmRbb10gdGFiZVtkaXRdIHRhYmZbaW5kXSB0YWJmaXJbc3RdIHRhYmxbYXN0XSB0YWJtb3ZlIHRhYm5ldyB0YWJuW2V4dF0gdGFiTltleHRdIHRhYm9bbmx5XSB0YWJwW3JldmlvdXNdIHRhYnJbZXdpbmRdIHRhYnMgdGFbZ10gdGFncyB0Y1tsXSB0Y2xkW29dIHRjbGZbaWxlXSB0ZVthcm9mZl0gdGZbaXJzdF0gdGhlIHRoW3Jvd10gdGpbdW1wXSB0bFthc3RdIHRtIHRtW2VudV0gdG5bZXh0XSB0TltleHRdIHRvW3BsZWZ0XSB0cFtyZXZpb3VzXSB0cltld2luZF0gdHJ5IHRzW2VsZWN0XSB0dSB0dVtubWVudV0gdW5hW2JicmV2aWF0ZV0gdVtuZG9dIHVuZG9qW29pbl0gdW5kb2xbaXN0XSB1bmhbaWRlXSB1bmxvW2NrdmFyXSB1bm1bYXBdIHVwW2RhdGVdIHZlcmJbb3NlXSB2ZVtyc2lvbl0gdmVydFtpY2FsXSBWZXhwbG9yZSB2W2dsb2JhbF0gdmllW3ddIHZpbVtncmVwXSB2aW1ncmVwYVtkZF0gdmlbc3VhbF0gdml1W3NhZ2VdIHZtYXBjW2xlYXJdIHZuZVt3XSB2c1twbGl0XSB2dVtubWFwXSB3YVtsbF0gd2hbaWxlXSB3aW5jW21kXSB3aW5kbyB3aW5wW29zXSB3aW5bc2l6ZV0gd25bZXh0XSB3TltleHRdIHdwW3JldmlvdXNdIHdxIHdxYVtsbF0gd1tyaXRlXSB3c1t2ZXJiXSB3dltpbWluZm9dIFggeGFbbGxdIHhbaXRdIHhtW2FwXSB4bWFwY1tsZWFyXSB4bWUgeG1lbnUgWE1MZW50IFhNTG5zIHhuW29yZW1hcF0geG5vcmVtZSB4bm9yZW1lbnUgeHVbbm1hcF0geVthbmtdIAorc3luIGtleXdvcmQgdmltQ29tbWFuZCBjb250YWluZWQJYWJbYnJldmlhdGVdIGFiY1tsZWFyXSBhYm9bdmVsZWZ0XSBhbFtsXSBhcmdhW2RkXSBhcmdkW2VsZXRlXSBhcmdkbyBhcmdlW2RpdF0gYXJnZ1tsb2JhbF0gYXJnbFtvY2FsXSBhcltnc10gYXJndVttZW50XSBhc1tjaWldIGJhZFtkXSBiYVtsbF0gYmRbZWxldGVdIGJlIGJlbFtvd3JpZ2h0XSBiZltpcnN0XSBibFthc3RdIGJtW29kaWZpZWRdIGJuW2V4dF0gYk5bZXh0XSBib1t0cmlnaHRdIGJwW3JldmlvdXNdIGJyZWFba10gYnJlYWthW2RkXSBicmVha2RbZWxdIGJyZWFrbFtpc3RdIGJyW2V3aW5kXSBicm9bd3NlXSBidWZkbyBiW3VmZmVyXSBidWZmZXJzIGJ1bltsb2FkXSBid1tpcGVvdXRdIGNhW2JicmV2XSBjYWJjW2xlYXJdIGNhZGRiW3VmZmVyXSBjYWRbZGV4cHJdIGNhZGRmW2lsZV0gY2FsW2xdIGNhdFtjaF0gY2JbdWZmZXJdIGNjIGNjbFtvc2VdIGNkIGNlW250ZXJdIGNleFtwcl0gY2ZbaWxlXSBjZmlyW3N0XSBjZ2V0Ylt1ZmZlcl0gY2dldGVbeHByXSBjZ1tldGZpbGVdIGNbaGFuZ2VdIGNoYW5nZXMgY2hkW2lyXSBjaGVbY2twYXRoXSBjaGVja3RbaW1lXSBjbGFbc3RdIGNsW2lzdF0gY2xvW3NlXSBjbWFwY1tsZWFyXSBjbmV3W2VyXSBjbltleHRdIGNOW2V4dF0gY25mW2lsZV0gY05mW2lsZV0gY25vcmVhW2JicmV2XSBjb2xbZGVyXSBjb2xvW3JzY2hlbWVdIGNvbWNbbGVhcl0gY29tcFtpbGVyXSBjb25mW2lybV0gY29uW3RpbnVlXSBjb3BlW25dIGNvW3B5XSBjcGZbaWxlXSBjcFtyZXZpb3VzXSBjcVt1aXRdIGNyW2V3aW5kXSBjdW5hW2JicmV2XSBjdVtubWFwXSBjd1tpbmRvd10gZGVidWdnW3JlZWR5XSBkZWxjW29tbWFuZF0gZFtlbGV0ZV0gRGVsZXRlRmlyc3QgZGVsZlt1bmN0aW9uXSBkZWxtW2Fya3NdIGRpZmZnW2V0XSBkaWZmb2ZmIGRpZmZwYXRjaCBkaWZmcHVbdF0gZGlmZnNwbGl0IGRpZmZ0aGlzIGRpZmZ1W3BkYXRlXSBkaWdbcmFwaHNdIGRpW3NwbGF5XSBkalt1bXBdIGRsW2lzdF0gZHJbb3BdIGRzW2VhcmNoXSBkc3BbbGl0XSBlYXJsaWVyIGVjaG9lW3JyXSBlY2hvbVtzZ10gZWNob24gZVtkaXRdIGVsW3NlXSBlbHNlaVtmXSBlbVtlbnVdIGVtZW51KiBlbmRmb1tyXSBlbmRmW3VuY3Rpb25dIGVuW2RpZl0gZW5kdFtyeV0gZW5kd1toaWxlXSBlbmVbd10gZXggZXhpW3RdIEV4cGxvcmUgZXh1W3NhZ2VdIGZbaWxlXSBmaWxlcyBmaWxldHlwZSBmaW5hW2xseV0gZmluW2RdIGZpbmlbc2hdIGZpcltzdF0gZml4W2RlbF0gZm9bbGRdIGZvbGRjW2xvc2VdIGZvbGRkb2NbbG9zZWRdIGZvbGRkW29vcGVuXSBmb2xkb1twZW5dIGZvciBmdVtuY3Rpb25dIGdbbG9iYWxdIGdvW3RvXSBncltlcF0gZ3JlcGFbZGRdIGhhW3JkY29weV0gaFtlbHBdIGhlbHBmW2luZF0gaGVscGdbcmVwXSBoZWxwdFthZ3NdIEhleHBsb3JlIGhpZFtlXSBoaXNbdG9yeV0gSSBpYVtiYnJldl0gaWFiY1tsZWFyXSBpZiBpalt1bXBdIGlsW2lzdF0gaW1hcGNbbGVhcl0gaW5vcmVhW2JicmV2XSBpc1tlYXJjaF0gaXNwW2xpdF0gaXVuYVtiYnJldl0gaXVbbm1hcF0galtvaW5dIGp1W21wc10gayBrZWVwYWx0IGtlZXBqW3VtcHNdIGtlZVtwbWFya3NdIGxhZGRiW3VmZmVyXSBsYWRbZGV4cHJdIGxhZGRmW2lsZV0gbGFuW2d1YWdlXSBsYVtzdF0gbGF0ZXIgbGJbdWZmZXJdIGxjW2RdIGxjaFtkaXJdIGxjbFtvc2VdIGxlW2Z0XSBsZWZ0YVtib3ZlXSBsZXhbcHJdIGxmW2lsZV0gbGZpcltzdF0gbGdldGJbdWZmZXJdIGxnZXRlW3hwcl0gbGdbZXRmaWxlXSBsZ3JbZXBdIGxncmVwYVtkZF0gbGhbZWxwZ3JlcF0gbFtpc3RdIGxsIGxsYVtzdF0gbGxpW3N0XSBsbWFrW2VdIGxtW2FwXSBsbWFwY1tsZWFyXSBsbmV3W2VyXSBsbmVbeHRdIGxOW2V4dF0gbG5mW2lsZV0gbE5mW2lsZV0gbG5bb3JlbWFwXSBsb1thZHZpZXddIGxvY1trbWFya3NdIGxvY2t2W2FyXSBsb2xbZGVyXSBsb3BbZW5dIGxwZltpbGVdIGxwW3JldmlvdXNdIGxyW2V3aW5kXSBscyBsdFthZ10gbHVbbm1hcF0gbHZbaW1ncmVwXSBsdmltZ3JlcGFbZGRdIGx3W2luZG93XSBtYWtbZV0gbWFbcmtdIG1hcmtzIG1hdFtjaF0gbWVudXRbcmFuc2xhdGVdIG1rW2V4cmNdIG1rc1tlc3Npb25dIG1rc3BbZWxsXSBta3ZpZVt3XSBta3ZbaW1yY10gbW9kW2VdIG1bb3ZlXSBtemZbaWxlXSBteltzY2hlbWVdIG5ia2V5IE5ldHJ3U2V0dGluZ3MgbmV3IG5bZXh0XSBOW2V4dF0gbm1hcGNbbGVhcl0gbm9oW2xzZWFyY2hdIG5vcmVhW2JicmV2XSBOcmVhZCBudVttYmVyXSBudW5bbWFwXSBOdyBvbWFwY1tsZWFyXSBvbltseV0gb1twZW5dIG9wdFtpb25zXSBvdVtubWFwXSBwY1tsb3NlXSBwZWRbaXRdIHBlW3JsXSBwZXJsZFtvXSBwb1twXSBwb3B1IHBvcHVbcF0gcHBbb3BdIHByZVtzZXJ2ZV0gcHJldltpb3VzXSBwW3JpbnRdIFBbcmludF0gcHJvZmRbZWxdIHByb2ZbaWxlXSBwcm9tcHQgcHJvbXB0ZltpbmRdIHByb21wdHJbZXBsXSBwc1tlYXJjaF0gcHRhW2ddIHB0ZltpcnN0XSBwdGpbdW1wXSBwdGxbYXN0XSBwdG5bZXh0XSBwdE5bZXh0XSBwdHBbcmV2aW91c10gcHRyW2V3aW5kXSBwdHNbZWxlY3RdIHB1W3RdIHB3W2RdIHB5ZltpbGVdIHB5W3Rob25dIHFhW2xsXSBxW3VpdF0gcXVpdGFbbGxdIHJbZWFkXSByZWNbb3Zlcl0gcmVkaVtyXSByZWRbb10gcmVkclthd10gcmVkcmF3c1t0YXR1c10gcmVnW2lzdGVyc10gcmVzW2l6ZV0gcmV0W2FiXSByZXR1W3JuXSByZXdbaW5kXSByaVtnaHRdIHJpZ2h0YltlbG93XSBydWJbeV0gcnVieWRbb10gcnVieWZbaWxlXSBydVtudGltZV0gcnZbaW1pbmZvXSBzYWxbbF0gc2FuW2Rib3hdIHNhW3JndW1lbnRdIHNhdltlYXNdIHNiYVtsbF0gc2JmW2lyc3RdIHNibFthc3RdIHNibVtvZGlmaWVkXSBzYm5bZXh0XSBzYk5bZXh0XSBzYnBbcmV2aW91c10gc2JyW2V3aW5kXSBzYlt1ZmZlcl0gc2NyaXB0ZVtuY29kaW5nXSBzY3JpcFt0bmFtZXNdIHNlW3RdIHNldGZbaWxldHlwZV0gc2V0Z1tsb2JhbF0gc2V0bFtvY2FsXSBTZXhwbG9yZSBzZltpbmRdIHNmaXJbc3RdIHNoW2VsbF0gc2lnbiBzaWxbZW50XSBzaW1bYWx0XSBzbGFbc3RdIHNsW2VlcF0gc21bYWdpY10gc21bYXBdIHNtYXBjW2xlYXJdIHNtZSBzbWVudSBzbltleHRdIHNOW2V4dF0gc25pW2ZmXSBzbm9bbWFnaWNdIHNub3JbZW1hcF0gc25vcmVtZSBzbm9yZW1lbnUgc29yW3RdIHNvW3VyY2VdIHNwZWxsZFt1bXBdIHNwZVtsbGdvb2RdIHNwZWxsaVtuZm9dIHNwZWxscltlcGFsbF0gc3BlbGx1W25kb10gc3BlbGx3W3JvbmddIHNwW2xpdF0gc3ByW2V2aW91c10gc3JlW3dpbmRdIHN0YVtnXSBzdGFydGdbcmVwbGFjZV0gc3Rhclt0aW5zZXJ0XSBzdGFydHJbZXBsYWNlXSBzdGpbdW1wXSBzdFtvcF0gc3RvcGlbbnNlcnRdIHN0c1tlbGVjdF0gc3VuW2hpZGVdIHN1bm1bYXBdIHN1c1twZW5kXSBzdltpZXddIHN5bmNiaW5kIHQgdGFiIHRhYmNbbG9zZV0gdGFiZFtvXSB0YWJlW2RpdF0gdGFiZltpbmRdIHRhYmZpcltzdF0gdGFibFthc3RdIHRhYm1vdmUgdGFibmV3IHRhYm5bZXh0XSB0YWJOW2V4dF0gdGFib1tubHldIHRhYnBbcmV2aW91c10gdGFicltld2luZF0gdGFicyB0YVtnXSB0YWdzIHRjW2xdIHRjbGRbb10gdGNsZltpbGVdIHRlW2Fyb2ZmXSB0ZltpcnN0XSB0aGUgdGhbcm93XSB0alt1bXBdIHRsW2FzdF0gdG0gdG1bZW51XSB0bltleHRdIHROW2V4dF0gdG9bcGxlZnRdIHRwW3JldmlvdXNdIHRyW2V3aW5kXSB0cnkgdHNbZWxlY3RdIHR1IHR1W25tZW51XSB1bmFbYmJyZXZpYXRlXSB1W25kb10gdW5kb2pbb2luXSB1bmRvbFtpc3RdIHVuaFtpZGVdIHVubG9bY2t2YXJdIHVubVthcF0gdXBbZGF0ZV0gdmVyYltvc2VdIHZlW3JzaW9uXSB2ZXJ0W2ljYWxdIFZleHBsb3JlIHZbZ2xvYmFsXSB2aWVbd10gdmltW2dyZXBdIHZpbWdyZXBhW2RkXSB2aVtzdWFsXSB2aXVbc2FnZV0gdm1hcGNbbGVhcl0gdm5lW3ddIHZzW3BsaXRdIHZ1W25tYXBdIHdhW2xsXSB3aFtpbGVdIHdpbmNbbWRdIHdpbmRvIHdpbnBbb3NdIHdpbltzaXplXSB3bltleHRdIHdOW2V4dF0gd3BbcmV2aW91c10gd3Egd3FhW2xsXSB3W3JpdGVdIHdzW3ZlcmJdIHd2W2ltaW5mb10gWCB4YVtsbF0geFtpdF0geG1bYXBdIHhtYXBjW2xlYXJdIHhtZSB4bWVudSBYTUxlbnQgWE1MbnMgeG5bb3JlbWFwXSB4bm9yZW1lIHhub3JlbWVudSB4dVtubWFwXSB5W2Fua10gCiBzeW4gbWF0Y2ggICB2aW1Db21tYW5kIGNvbnRhaW5lZAkiXDx6Wy0rXi49XSIKIAogIiB2aW1PcHRpb25zIGFyZSBjYXVnaHQgb25seSB3aGVuIGNvbnRhaW5lZCBpbiBhIHZpbVNldCB7e3syCkBAIC00NzMsNiArNDczLDExIEBACiBzeW4gcmVnaW9uIHZpbVN0cmluZwlzdGFydD0iXlxzKlxcXHooWyciXVwpIiBza2lwPSdcXFxcXHxcXFx6MScgZW5kPSJcejEiIG9uZWxpbmUga2VlcGVuZCBjb250YWlucz1AdmltU3RyaW5nR3JvdXAsdmltQ29udGludWUKIHN5biBtYXRjaCAgdmltQ29tbWVudFRpdGxlTGVhZGVyCSciXHNcKydtcz1zKzEJY29udGFpbmVkCiAKKyIgU2VhcmNoZXM6IHt7ezIKKyIgPT09PT09PT09CitzeW4gbWF0Y2ggdmltU2VhcmNoCSdeXHMqWy8/XS4qJwkJY29udGFpbnM9dmltU2VhcmNoRGVsaW0KK3N5biBtYXRjaCB2aW1TZWFyY2hEZWxpbQknXlxzKlx6c1svP11cfFsvP10kJwljb250YWluZWQKKwogIiBTY3JpcHRzICA6IHBlcmwscnVieSA6IEJlbm9pdCBDZXJyaW5hIHt7ezIKICIgPT09PT09PSAgICBweXRob24sdGNsOiBKb2hhbm5lcyBaZWxsbmVyCiAKQEAgLTYwOSw2ICs2MTQsOCBAQAogaGkgZGVmIGxpbmsgdmltUGF0U2VwWm9uZQl2aW1TdHJpbmcKIGhpIGRlZiBsaW5rIHZpbVBsYWluTWFyawl2aW1NYXJrCiBoaSBkZWYgbGluayB2aW1QbGFpblJlZ2lzdGVyCXZpbVJlZ2lzdGVyCitoaSBkZWYgbGluayB2aW1TZWFyY2gJdmltU3RyaW5nCitoaSBkZWYgbGluayB2aW1TZWFyY2hEZWxpbQlTdGF0ZW1lbnQKIGhpIGRlZiBsaW5rIHZpbVNldE1vZAl2aW1PcHRpb24KIGhpIGRlZiBsaW5rIHZpbVNldFN0cmluZwl2aW1TdHJpbmcKIGhpIGRlZiBsaW5rIHZpbVNwZWNGaWxlTW9kCXZpbVNwZWNGaWxlCg==