ZGlmZiAtLWdpdCBhL2NvbmZpZy5oIGIvY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IGY3YjlhMDkuLjAwMDAwMDAKLS0tIGEvY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1kaXN0L2NvbmZpZy5oLmdlbmVyaWMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jb25maWcuaCBiL2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YTY4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcuaApAQCAtMCwwICsxLDM0OCBAQAorLyogY29uZmlnLmguICBHZW5lcmF0ZWQgZnJvbSBjb25maWcuaC5pbiBieSBjb25maWd1cmUuICAqLworLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCisKKworLyogUENSRSBpcyB3cml0dGVuIGluIFN0YW5kYXJkIEMsIGJ1dCB0aGVyZSBhcmUgYSBmZXcgbm9uLXN0YW5kYXJkIHRoaW5ncyBpdAorY2FuIGNvcGUgd2l0aCwgYWxsb3dpbmcgaXQgdG8gcnVuIG9uIFN1bk9TNCBhbmQgb3RoZXIgImNsb3NlIHRvIHN0YW5kYXJkIgorc3lzdGVtcy4KKworSW4gZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCB0aGUgR05VIGF1dG90b29scywgY29uZmlnLmguaW4gaXMgY29udmVydGVkIGludG8KK2NvbmZpZy5oIGJ5IHRoZSAiY29uZmlndXJlIiBzY3JpcHQuIEluIGVudmlyb25tZW50cyB0aGF0IHVzZSBDTWFrZSwKK2NvbmZpZy1jbWFrZS5pbiBpcyBjb252ZXJ0ZWQgaW50byBjb25maWcuaC4gSWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBQQ1JFICJieQoraGFuZCIgd2l0aG91dCB1c2luZyAiY29uZmlndXJlIiBvciBDTWFrZSwgeW91IHNob3VsZCBjb3B5IHRoZSBkaXN0cmlidXRlZAorY29uZmlnLmguZ2VuZXJpYyB0byBjb25maWcuaCwgYW5kIGVkaXQgdGhlIG1hY3JvIGRlZmluaXRpb25zIHRvIGJlIHRoZSB3YXkgeW91CituZWVkIHRoZW0uIFlvdSBtdXN0IHRoZW4gYWRkIC1ESEFWRV9DT05GSUdfSCB0byBhbGwgb2YgeW91ciBjb21waWxlIGNvbW1hbmRzLAorc28gdGhhdCBjb25maWcuaCBpcyBpbmNsdWRlZCBhdCB0aGUgc3RhcnQgb2YgZXZlcnkgc291cmNlLgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGF2b2lkIGVkaXRpbmcgYnkgdXNpbmcgLUQgb24gdGhlIGNvbXBpbGVyIGNvbW1hbmQgbGluZQordG8gc2V0IHRoZSBtYWNybyB2YWx1ZXMuIEluIHRoaXMgY2FzZSwgeW91IGRvIG5vdCBoYXZlIHRvIHNldCAtREhBVkVfQ09ORklHX0gsCitidXQgaWYgeW91IGRvLCBkZWZhdWx0IHZhbHVlcyB3aWxsIGJlIHRha2VuIGZyb20gY29uZmlnLmggZm9yIG5vbi1ib29sZWFuCittYWNyb3MgdGhhdCBhcmUgbm90IGRlZmluZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKworQm9vbGVhbiBtYWNyb3Mgc3VjaCBhcyBIQVZFX1NURExJQl9IIGFuZCBTVVBQT1JUX1BDUkU4IHNob3VsZCBlaXRoZXIgYmUgZGVmaW5lZAorKGNvbnZlbnRpb25hbGx5IHRvIDEpIGZvciBUUlVFLCBhbmQgbm90IGRlZmluZWQgYXQgYWxsIGZvciBGQUxTRS4gQWxsIHN1Y2gKK21hY3JvcyBhcmUgbGlzdGVkIGFzIGEgY29tbWVudGVkICN1bmRlZiBpbiBjb25maWcuaC5nZW5lcmljLiBNYWNyb3Mgc3VjaCBhcworTUFUQ0hfTElNSVQsIHdob3NlIGFjdHVhbCB2YWx1ZSBpcyByZWxldmFudCwgaGF2ZSBkZWZhdWx0cyBkZWZpbmVkLCBidXQgYXJlCitzdXJyb3VuZGVkIGJ5ICNpZm5kZWYvI2VuZGlmIGxpbmVzIHNvIHRoYXQgdGhlIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IC1ELgorCitQQ1JFIHVzZXMgbWVtbW92ZSgpIGlmIEhBVkVfTUVNTU9WRSBpcyBkZWZpbmVkOyBvdGhlcndpc2UgaXQgdXNlcyBiY29weSgpIGlmCitIQVZFX0JDT1BZIGlzIGRlZmluZWQuIElmIHlvdXIgc3lzdGVtIGhhcyBuZWl0aGVyIGJjb3B5KCkgbm9yIG1lbW1vdmUoKSwgbWFrZQorc3VyZSBib3RoIG1hY3JvcyBhcmUgdW5kZWZpbmVkOyBhbiBlbXVsYXRpb24gZnVuY3Rpb24gd2lsbCB0aGVuIGJlIHVzZWQuICovCisKKy8qIEJ5IGRlZmF1bHQsIHRoZSBcUiBlc2NhcGUgc2VxdWVuY2UgbWF0Y2hlcyBhbnkgVW5pY29kZSBsaW5lIGVuZGluZworICAgY2hhcmFjdGVyIG9yIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMuIElmIEJTUl9BTllDUkxGIGlzIGRlZmluZWQgKHRvIGFueQorICAgdmFsdWUpLCB0aGlzIGlzIGNoYW5nZWQgc28gdGhhdCBiYWNrc2xhc2gtUiBtYXRjaGVzIG9ubHkgQ1IsIExGLCBvciBDUkxGLgorICAgVGhlIGJ1aWxkLXRpbWUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgdXNlciBvZiBQQ1JFIGF0IHJ1bnRpbWUuICovCisvKiAjdW5kZWYgQlNSX0FOWUNSTEYgKi8KKworLyogSWYgeW91IGFyZSBjb21waWxpbmcgZm9yIGEgc3lzdGVtIHRoYXQgdXNlcyBFQkNESUMgaW5zdGVhZCBvZiBBU0NJSQorICAgY2hhcmFjdGVyIGNvZGVzLCBkZWZpbmUgdGhpcyBtYWNybyB0byBhbnkgdmFsdWUuIFlvdSBtdXN0IGFsc28gZWRpdCB0aGUKKyAgIE5FV0xJTkUgbWFjcm8gYmVsb3cgdG8gc2V0IGEgc3VpdGFibGUgRUJDRElDIG5ld2xpbmUsIGNvbW1vbmx5IDIxICgweDE1KS4KKyAgIE9uIHN5c3RlbXMgdGhhdCBjYW4gdXNlICJjb25maWd1cmUiIG9yIENNYWtlIHRvIHNldCBFQkNESUMsIE5FV0xJTkUgaXMKKyAgIGF1dG9tYXRpY2FsbHkgYWRqdXN0ZWQuIFdoZW4gRUJDRElDIGlzIHNldCwgUENSRSBhc3N1bWVzIHRoYXQgYWxsIGlucHV0CisgICBzdHJpbmdzIGFyZSBpbiBFQkNESUMuIElmIHlvdSBkbyBub3QgZGVmaW5lIHRoaXMgbWFjcm8sIFBDUkUgd2lsbCBhc3N1bWUKKyAgIGlucHV0IHN0cmluZ3MgYXJlIEFTQ0lJIG9yIFVURi04LzE2LzMyIFVuaWNvZGUuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBidWlsZAorICAgYSB2ZXJzaW9uIG9mIFBDUkUgdGhhdCBzdXBwb3J0cyBib3RoIEVCQ0RJQyBhbmQgVVRGLTgvMTYvMzIuICovCisvKiAjdW5kZWYgRUJDRElDICovCisKKy8qIEluIGFuIEVCQ0RJQyBlbnZpcm9ubWVudCwgZGVmaW5lIHRoaXMgbWFjcm8gdG8gYW55IHZhbHVlIHRvIGFycmFuZ2UgZm9yIHRoZQorICAgTkwgY2hhcmFjdGVyIHRvIGJlIDB4MjUgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAweDE1LiBOTCBwbGF5cyB0aGUgcm9sZSB0aGF0CisgICBMRiBkb2VzIGluIGFuIEFTQ0lJL1VuaWNvZGUgZW52aXJvbm1lbnQuIFRoZSB2YWx1ZSBtdXN0IGFsc28gYmUgc2V0IGluIHRoZQorICAgTkVXTElORSBtYWNybyBiZWxvdy4gT24gc3lzdGVtcyB0aGF0IGNhbiB1c2UgImNvbmZpZ3VyZSIgb3IgQ01ha2UgdG8gc2V0CisgICBFQkNESUNfTkwyNSwgdGhlIGFkanVzdG1lbnQgb2YgTkVXTElORSBpcyBhdXRvbWF0aWMuICovCisvKiAjdW5kZWYgRUJDRElDX05MMjUgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiY29weScgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfQkNPUFkgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGJpdHMvdHlwZV90cmFpdHMuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9CSVRTX1RZUEVfVFJBSVRTX0ggKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxiemxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX0JaTElCX0ggKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlbnQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfRElSRU5UX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRsZmNuLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX0RMRkNOX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVkaXRsaW5lL3JlYWRsaW5lLmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfRURJVExJTkVfUkVBRExJTkVfSCAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVkaXQvcmVhZGxpbmUvcmVhZGxpbmUuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9FRElUX1JFQURMSU5FX1JFQURMSU5FX0ggKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfTElNSVRTX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgbG9uZyBsb25nJy4gKi8KKyNkZWZpbmUgSEFWRV9MT05HX0xPTkcgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX01FTU1PVkUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBQT1NJWCB0aHJlYWRzIGxpYnJhcmllcyBhbmQgaGVhZGVyIGZpbGVzLiAqLworLyogI3VuZGVmIEhBVkVfUFRIUkVBRCAqLworCisvKiBIYXZlIFBUSFJFQURfUFJJT19JTkhFUklULiAqLworLyogI3VuZGVmIEhBVkVfUFRIUkVBRF9QUklPX0lOSEVSSVQgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxyZWFkbGluZS9oaXN0b3J5Lmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfUkVBRExJTkVfSElTVE9SWV9IICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9SRUFETElORV9SRUFETElORV9IICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NURElOVF9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RETElCX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmVycm9yJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TVFJFUlJPUiAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TVFJJTkcgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgc3RydG9pbWF4Jy4gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlRPSU1BWCAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgc3RydG9sbCcuICovCisjZGVmaW5lIEhBVkVfU1RSVE9MTCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGBzdHJ0b3EnLiAqLworLyogI3VuZGVmIEhBVkVfU1RSVE9RICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx0eXBlX3RyYWl0cy5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX1RZUEVfVFJBSVRTX0ggKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdW5zaWduZWQgbG9uZyBsb25nJy4gKi8KKyNkZWZpbmUgSEFWRV9VTlNJR05FRF9MT05HX0xPTkcgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgc2ltcGxlIHZpc2liaWxpdHkgZGVjbGFyYXRpb25zLiAqLworI2RlZmluZSBIQVZFX1ZJU0lCSUxJVFkgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHdpbmRvd3MuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9XSU5ET1dTX0ggKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx6bGliLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1pMSUJfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGBfc3RydG9pNjQnLiAqLworLyogI3VuZGVmIEhBVkVfX1NUUlRPSTY0ICovCisKKy8qIFRoZSB2YWx1ZSBvZiBMSU5LX1NJWkUgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gc3RvcmUgbGlua3MKKyAgIGFzIG9mZnNldHMgd2l0aGluIHRoZSBjb21waWxlZCByZWdleC4gVGhlIGRlZmF1bHQgaXMgMiwgd2hpY2ggYWxsb3dzIGZvcgorICAgY29tcGlsZWQgcGF0dGVybnMgdXAgdG8gNjRLIGxvbmcuIFRoaXMgY292ZXJzIHRoZSB2YXN0IG1ham9yaXR5IG9mIGNhc2VzLgorICAgSG93ZXZlciwgUENSRSBjYW4gYWxzbyBiZSBjb21waWxlZCB0byB1c2UgMyBvciA0IGJ5dGVzIGluc3RlYWQuIFRoaXMgYWxsb3dzCisgICBmb3IgbG9uZ2VyIHBhdHRlcm5zIGluIGV4dHJlbWUgY2FzZXMuICovCisjZGVmaW5lIExJTktfU0laRSAyCisKKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSB3aGVyZSBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuICovCisjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgorCisvKiBUaGUgdmFsdWUgb2YgTUFUQ0hfTElNSVQgZGV0ZXJtaW5lcyB0aGUgZGVmYXVsdCBudW1iZXIgb2YgdGltZXMgdGhlCisgICBpbnRlcm5hbCBtYXRjaCgpIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZHVyaW5nIGEgc2luZ2xlIGV4ZWN1dGlvbiBvZgorICAgcGNyZV9leGVjKCkuIFRoZXJlIGlzIGEgcnVudGltZSBpbnRlcmZhY2UgZm9yIHNldHRpbmcgYSBkaWZmZXJlbnQgbGltaXQuCisgICBUaGUgbGltaXQgZXhpc3RzIGluIG9yZGVyIHRvIGNhdGNoIHJ1bmF3YXkgcmVndWxhciBleHByZXNzaW9ucyB0aGF0IHRha2UKKyAgIGZvciBldmVyIHRvIGRldGVybWluZSB0aGF0IHRoZXkgZG8gbm90IG1hdGNoLiBUaGUgZGVmYXVsdCBpcyBzZXQgdmVyeSBsYXJnZQorICAgc28gdGhhdCBpdCBkb2VzIG5vdCBhY2NpZGVudGFsbHkgY2F0Y2ggbGVnaXRpbWF0ZSBjYXNlcy4gKi8KKyNkZWZpbmUgTUFUQ0hfTElNSVQgMTAwMDAwMDAKKworLyogVGhlIGFib3ZlIGxpbWl0IGFwcGxpZXMgdG8gYWxsIGNhbGxzIG9mIG1hdGNoKCksIHdoZXRoZXIgb3Igbm90IHRoZXkKKyAgIGluY3JlYXNlIHRoZSByZWN1cnNpb24gZGVwdGguIEluIHNvbWUgZW52aXJvbm1lbnRzIGl0IGlzIGRlc2lyYWJsZSB0byBsaW1pdAorICAgdGhlIGRlcHRoIG9mIHJlY3Vyc2l2ZSBjYWxscyBvZiBtYXRjaCgpIG1vcmUgc3RyaWN0bHksIGluIG9yZGVyIHRvIHJlc3RyaWN0CisgICB0aGUgbWF4aW11bSBhbW91bnQgb2Ygc3RhY2sgKG9yIGhlYXAsIGlmIE5PX1JFQ1VSU0UgaXMgZGVmaW5lZCkgdGhhdCBpcworICAgdXNlZC4gVGhlIHZhbHVlIG9mIE1BVENIX0xJTUlUX1JFQ1VSU0lPTiBhcHBsaWVzIG9ubHkgdG8gcmVjdXJzaXZlIGNhbGxzIG9mCisgICBtYXRjaCgpLiBUbyBoYXZlIGFueSB1c2VmdWwgZWZmZWN0LCBpdCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YKKyAgIE1BVENIX0xJTUlULiBUaGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgdmFsdWUgYXMgTUFUQ0hfTElNSVQuIFRoZXJlIGlzCisgICBhIHJ1bnRpbWUgbWV0aG9kIGZvciBzZXR0aW5nIGEgZGlmZmVyZW50IGxpbWl0LiAqLworI2RlZmluZSBNQVRDSF9MSU1JVF9SRUNVUlNJT04gTUFUQ0hfTElNSVQKKworLyogVGhpcyBsaW1pdCBpcyBwYXJhbWV0ZXJpemVkIGp1c3QgaW4gY2FzZSBhbnlib2R5IGV2ZXIgd2FudHMgdG8gY2hhbmdlIGl0LgorICAgQ2FyZSBtdXN0IGJlIHRha2VuIGlmIGl0IGlzIGluY3JlYXNlZCwgYmVjYXVzZSBpdCBndWFyZHMgYWdhaW5zdCBpbnRlZ2VyCisgICBvdmVyZmxvdyBjYXVzZWQgYnkgZW5vcm1vdXNseSBsYXJnZSBwYXR0ZXJucy4gKi8KKyNkZWZpbmUgTUFYX05BTUVfQ09VTlQgMTAwMDAKKworLyogVGhpcyBsaW1pdCBpcyBwYXJhbWV0ZXJpemVkIGp1c3QgaW4gY2FzZSBhbnlib2R5IGV2ZXIgd2FudHMgdG8gY2hhbmdlIGl0LgorICAgQ2FyZSBtdXN0IGJlIHRha2VuIGlmIGl0IGlzIGluY3JlYXNlZCwgYmVjYXVzZSBpdCBndWFyZHMgYWdhaW5zdCBpbnRlZ2VyCisgICBvdmVyZmxvdyBjYXVzZWQgYnkgZW5vcm1vdXNseSBsYXJnZSBwYXR0ZXJucy4gKi8KKyNkZWZpbmUgTUFYX05BTUVfU0laRSAzMgorCisvKiBUaGUgdmFsdWUgb2YgTkVXTElORSBkZXRlcm1pbmVzIHRoZSBkZWZhdWx0IG5ld2xpbmUgY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgUENSRSBjbGllbnQgcHJvZ3JhbXMgY2FuIG92ZXJyaWRlIHRoaXMgYnkgc2VsZWN0aW5nIG90aGVyIHZhbHVlcyBhdCBydW4KKyAgIHRpbWUuIEluIEFTQ0lJIGVudmlyb25tZW50cywgdGhlIHZhbHVlIGNhbiBiZSAxMCAoTEYpLCAxMyAoQ1IpLCBvciAzMzM4CisgICAoQ1JMRik7IGluIEVCQ0RJQyBlbnZpcm9ubWVudHMgdGhlIHZhbHVlIGNhbiBiZSAyMSBvciAzNyAoTEYpLCAxMyAoQ1IpLCBvcgorICAgMzM0OSBvciAzMzY1IChDUkxGKSBiZWNhdXNlIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmUgY29kZXBvaW50cyAoMHgxNSBhbmQKKyAgIDB4MjUpIHRoYXQgYXJlIHVzZWQgYXMgdGhlIE5MIGxpbmUgdGVybWluYXRvciB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gQVNDSUkKKyAgIExGLiBJbiBib3RoIEFTQ0lJIGFuZCBFQkNESUMgZW52aXJvbm1lbnRzIHRoZSB2YWx1ZSBjYW4gYWxzbyBiZSAtMSAoQU5ZKSwKKyAgIG9yIC0yIChBTllDUkxGKS4gKi8KKyNkZWZpbmUgTkVXTElORSAxMAorCisvKiBQQ1JFIHVzZXMgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIHRvIGhhbmRsZSBiYWNrdHJhY2tpbmcgd2hpbGUgbWF0Y2hpbmcuCisgICBUaGlzIGNhbiBzb21ldGltZXMgYmUgYSBwcm9ibGVtIG9uIHN5c3RlbXMgdGhhdCBoYXZlIHN0YWNrcyBvZiBsaW1pdGVkCisgICBzaXplLiBEZWZpbmUgTk9fUkVDVVJTRSB0byBhbnkgdmFsdWUgdG8gZ2V0IGEgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgdXNlCisgICByZWN1cnNpb24gaW4gdGhlIG1hdGNoKCkgZnVuY3Rpb247IGluc3RlYWQgaXQgY3JlYXRlcyBpdHMgb3duIHN0YWNrIGJ5CisgICBzdGVhbSB1c2luZyBwY3JlX3JlY3Vyc2VfbWFsbG9jKCkgdG8gb2J0YWluIG1lbW9yeSBmcm9tIHRoZSBoZWFwLiBGb3IgbW9yZQorICAgZGV0YWlsLCBzZWUgdGhlIGNvbW1lbnRzIGFuZCBvdGhlciBzdHVmZiBqdXN0IGFib3ZlIHRoZSBtYXRjaCgpIGZ1bmN0aW9uLgorICAgKi8KKy8qICN1bmRlZiBOT19SRUNVUlNFICovCisKKy8qIE5hbWUgb2YgcGFja2FnZSAqLworI2RlZmluZSBQQUNLQUdFICJwY3JlIgorCisvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KKyNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgIiIKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX05BTUUgIlBDUkUiCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIlBDUkUgOC4zOCIKKworLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgInBjcmUiCisKKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCisKKy8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiOC4zOCIKKworLyogVGhlIHZhbHVlIG9mIFBBUkVOU19ORVNUX0xJTUlUIHNwZWNpZmllcyB0aGUgbWF4aW11bSBkZXB0aCBvZiBuZXN0ZWQKKyAgIHBhcmVudGhlc2VzIChvZiBhbnkga2luZCkgaW4gYSBwYXR0ZXJuLiBUaGlzIGxpbWl0cyB0aGUgYW1vdW50IG9mIHN5c3RlbQorICAgc3RhY2sgdGhhdCBpcyB1c2VkIHdoaWxlIGNvbXBpbGluZyBhIHBhdHRlcm4uICovCisjZGVmaW5lIFBBUkVOU19ORVNUX0xJTUlUIDI1MAorCisvKiB0byBtYWtlIGEgc3ltYm9sIHZpc2libGUgKi8KKyNkZWZpbmUgUENSRUNQUF9FWFBfREVDTCBleHRlcm4gX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQorCisvKiB0byBtYWtlIGEgc3ltYm9sIHZpc2libGUgKi8KKyNkZWZpbmUgUENSRUNQUF9FWFBfREVGTiBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisKKy8qIFRoZSB2YWx1ZSBvZiBQQ1JFR1JFUF9CVUZTSVpFIGRldGVybWluZXMgdGhlIHNpemUgb2YgYnVmZmVyIHVzZWQgYnkKKyAgIHBjcmVncmVwIHRvIGhvbGQgcGFydHMgb2YgdGhlIGZpbGUgaXQgaXMgc2VhcmNoaW5nLiBUaGlzIGlzIGFsc28gdGhlCisgICBtaW5pbXVtIHZhbHVlLiBUaGUgYWN0dWFsIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSBwY3JlZ3JlcCBpcyB0aHJlZSB0aW1lcworICAgdGhpcyBudW1iZXIsIGJlY2F1c2UgaXQgYWxsb3dzIGZvciB0aGUgYnVmZmVyaW5nIG9mICJiZWZvcmUiIGFuZCAiYWZ0ZXIiCisgICBsaW5lcy4gKi8KKyNkZWZpbmUgUENSRUdSRVBfQlVGU0laRSAyMDQ4MAorCisvKiB0byBtYWtlIGEgc3ltYm9sIHZpc2libGUgKi8KKyNkZWZpbmUgUENSRVBPU0lYX0VYUF9ERUNMIGV4dGVybiBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisKKy8qIHRvIG1ha2UgYSBzeW1ib2wgdmlzaWJsZSAqLworI2RlZmluZSBQQ1JFUE9TSVhfRVhQX0RFRk4gZXh0ZXJuIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKKworLyogdG8gbWFrZSBhIHN5bWJvbCB2aXNpYmxlICovCisjZGVmaW5lIFBDUkVfRVhQX0RBVEFfREVGTiBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisKKy8qIHRvIG1ha2UgYSBzeW1ib2wgdmlzaWJsZSAqLworI2RlZmluZSBQQ1JFX0VYUF9ERUNMIGV4dGVybiBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisKKworLyogSWYgeW91IGFyZSBjb21waWxpbmcgZm9yIGEgc3lzdGVtIG90aGVyIHRoYW4gYSBVbml4LWxpa2Ugc3lzdGVtIG9yCisgICBXaW4zMiwgYW5kIGl0IG5lZWRzIHNvbWUgbWFnaWMgdG8gYmUgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBkZWZpbml0aW9uCisgICBvZiBhIGZ1bmN0aW9uIHRoYXQgaXMgZXhwb3J0ZWQgYnkgdGhlIGxpYnJhcnksIGRlZmluZSB0aGlzIG1hY3JvIHRvCisgICBjb250YWluIHRoZSByZWxldmFudCBtYWdpYy4gSWYgeW91IGRvIG5vdCBkZWZpbmUgdGhpcyBtYWNybywgYSBzdWl0YWJsZQorICAgIF9fZGVjbHNwZWMgdmFsdWUgaXMgdXNlZCBmb3IgV2luZG93cyBzeXN0ZW1zOyBpbiBvdGhlciBlbnZpcm9ubWVudHMKKyAgICJleHRlcm4iIGlzIHVzZWQgZm9yIGEgQyBjb21waWxlciBhbmQgImV4dGVybiBDIiBmb3IgYSBDKysgY29tcGlsZXIuCisgICBUaGlzIG1hY3JvIGFwZWFycyBhdCB0aGUgc3RhcnQgb2YgZXZlcnkgZXhwb3J0ZWQgZnVuY3Rpb24gdGhhdCBpcyBwYXJ0CisgICBvZiB0aGUgZXh0ZXJuYWwgQVBJLiBJdCBkb2VzIG5vdCBhcHBlYXIgb24gZnVuY3Rpb25zIHRoYXQgYXJlICJleHRlcm5hbCIKKyAgIGluIHRoZSBDIHNlbnNlLCBidXQgd2hpY2ggYXJlIGludGVybmFsIHRvIHRoZSBsaWJyYXJ5LiAqLworI2RlZmluZSBQQ1JFX0VYUF9ERUZOIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKKworLyogRGVmaW5lIHRvIGFueSB2YWx1ZSBpZiBsaW5raW5nIHN0YXRpY2FsbHkgKFRPRE86IG1ha2UgbmljZSB3aXRoIExpYnRvb2wpICovCisvKiAjdW5kZWYgUENSRV9TVEFUSUMgKi8KKworLyogV2hlbiBjYWxsaW5nIFBDUkUgdmlhIHRoZSBQT1NJWCBpbnRlcmZhY2UsIGFkZGl0aW9uYWwgd29ya2luZyBzdG9yYWdlIGlzCisgICByZXF1aXJlZCBmb3IgaG9sZGluZyB0aGUgcG9pbnRlcnMgdG8gY2FwdHVyaW5nIHN1YnN0cmluZ3MgYmVjYXVzZSBQQ1JFCisgICByZXF1aXJlcyB0aHJlZSBpbnRlZ2VycyBwZXIgc3Vic3RyaW5nLCB3aGVyZWFzIHRoZSBQT1NJWCBpbnRlcmZhY2UgcHJvdmlkZXMKKyAgIG9ubHkgdHdvLiBJZiB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIHN1YnN0cmluZ3MgaXMgc21hbGwsIHRoZSB3cmFwcGVyCisgICBmdW5jdGlvbiB1c2VzIHNwYWNlIG9uIHRoZSBzdGFjaywgYmVjYXVzZSB0aGlzIGlzIGZhc3RlciB0aGFuIHVzaW5nCisgICBtYWxsb2MoKSBmb3IgZWFjaCBjYWxsLiBUaGUgdGhyZXNob2xkIGFib3ZlIHdoaWNoIHRoZSBzdGFjayBpcyBubyBsb25nZXIKKyAgIHVzZWQgaXMgZGVmaW5lZCBieSBQT1NJWF9NQUxMT0NfVEhSRVNIT0xELiAqLworI2RlZmluZSBQT1NJWF9NQUxMT0NfVEhSRVNIT0xEIDEwCisKKy8qIERlZmluZSB0byBuZWNlc3Nhcnkgc3ltYm9sIGlmIHRoaXMgY29uc3RhbnQgdXNlcyBhIG5vbi1zdGFuZGFyZCBuYW1lIG9uCisgICB5b3VyIHN5c3RlbS4gKi8KKy8qICN1bmRlZiBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KKyNkZWZpbmUgU1REQ19IRUFERVJTIDEKKworLyogRGVmaW5lIHRvIGFueSB2YWx1ZSB0byBlbmFibGUgc3VwcG9ydCBmb3IgSnVzdC1Jbi1UaW1lIGNvbXBpbGluZy4gKi8KKy8qICN1bmRlZiBTVVBQT1JUX0pJVCAqLworCisvKiBEZWZpbmUgdG8gYW55IHZhbHVlIHRvIGFsbG93IHBjcmVncmVwIHRvIGJlIGxpbmtlZCB3aXRoIGxpYmJ6Miwgc28gdGhhdCBpdAorICAgaXMgYWJsZSB0byBoYW5kbGUgLmJ6MiBmaWxlcy4gKi8KKy8qICN1bmRlZiBTVVBQT1JUX0xJQkJaMiAqLworCisvKiBEZWZpbmUgdG8gYW55IHZhbHVlIHRvIGFsbG93IHBjcmV0ZXN0IHRvIGJlIGxpbmtlZCB3aXRoIGxpYmVkaXQuICovCisvKiAjdW5kZWYgU1VQUE9SVF9MSUJFRElUICovCisKKy8qIERlZmluZSB0byBhbnkgdmFsdWUgdG8gYWxsb3cgcGNyZXRlc3QgdG8gYmUgbGlua2VkIHdpdGggbGlicmVhZGxpbmUuICovCisvKiAjdW5kZWYgU1VQUE9SVF9MSUJSRUFETElORSAqLworCisvKiBEZWZpbmUgdG8gYW55IHZhbHVlIHRvIGFsbG93IHBjcmVncmVwIHRvIGJlIGxpbmtlZCB3aXRoIGxpYnosIHNvIHRoYXQgaXQgaXMKKyAgIGFibGUgdG8gaGFuZGxlIC5neiBmaWxlcy4gKi8KKy8qICN1bmRlZiBTVVBQT1JUX0xJQlogKi8KKworLyogRGVmaW5lIHRvIGFueSB2YWx1ZSB0byBlbmFibGUgdGhlIDE2IGJpdCBQQ1JFIGxpYnJhcnkuICovCisvKiAjdW5kZWYgU1VQUE9SVF9QQ1JFMTYgKi8KKworLyogRGVmaW5lIHRvIGFueSB2YWx1ZSB0byBlbmFibGUgdGhlIDMyIGJpdCBQQ1JFIGxpYnJhcnkuICovCisvKiAjdW5kZWYgU1VQUE9SVF9QQ1JFMzIgKi8KKworLyogRGVmaW5lIHRvIGFueSB2YWx1ZSB0byBlbmFibGUgdGhlIDggYml0IFBDUkUgbGlicmFyeS4gKi8KKyNkZWZpbmUgU1VQUE9SVF9QQ1JFOCAvKiovCisKKy8qIERlZmluZSB0byBhbnkgdmFsdWUgdG8gZW5hYmxlIEpJVCBzdXBwb3J0IGluIHBjcmVncmVwLiAqLworLyogI3VuZGVmIFNVUFBPUlRfUENSRUdSRVBfSklUICovCisKKy8qIERlZmluZSB0byBhbnkgdmFsdWUgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFVuaWNvZGUgcHJvcGVydGllcy4gKi8KKy8qICN1bmRlZiBTVVBQT1JUX1VDUCAqLworCisvKiBEZWZpbmUgdG8gYW55IHZhbHVlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVVRGLTgvMTYvMzIgVW5pY29kZSBlbmNvZGluZy4KKyAgIFRoaXMgd2lsbCB3b3JrIGV2ZW4gaW4gYW4gRUJDRElDIGVudmlyb25tZW50LCBidXQgaXQgaXMgaW5jb21wYXRpYmxlIHdpdGgKKyAgIHRoZSBFQkNESUMgbWFjcm8uIFRoYXQgaXMsIFBDUkUgY2FuIHN1cHBvcnQgKmVpdGhlciogRUJDRElDIGNvZGUgKm9yKgorICAgQVNDSUkvVVRGLTgvMTYvMzIsIGJ1dCBub3QgYm90aCBhdCBvbmNlLiAqLworLyogI3VuZGVmIFNVUFBPUlRfVVRGICovCisKKy8qIERlZmluZSB0byBhbnkgdmFsdWUgZm9yIHZhbGdyaW5kIHN1cHBvcnQgdG8gZmluZCBpbnZhbGlkIG1lbW9yeSByZWFkcy4gKi8KKy8qICN1bmRlZiBTVVBQT1JUX1ZBTEdSSU5EICovCisKKy8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KKyNkZWZpbmUgVkVSU0lPTiAiOC4zOCIKKworLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCisvKiAjdW5kZWYgY29uc3QgKi8KKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDY0IGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCisvKiAjdW5kZWYgaW50NjRfdCAqLworCisvKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisvKiAjdW5kZWYgc2l6ZV90ICovCmRpZmYgLS1naXQgYS9kaXN0LzEzMmh0bWwgYi9kaXN0LzEzMmh0bWwKaW5kZXggZTFiNzBjZC4uZTAwMDI0OSAxMDA3NTUKLS0tIGEvZGlzdC8xMzJodG1sCisrKyBiL2Rpc3QvMTMyaHRtbApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgICAgIHByaW50ZigiPGxpPjxhIG5hbWU9XCJUT0MlZFwiIGhyZWY9XCIjU0VDJWRcIj4kdGl0bGU8L2E+XG4iLAogICAgICAgICAgICRyZWYsICRyZWYpOwogICAgICAgICBwcmludGYgVEVNUCAoIjxicj48YSBuYW1lPVwiU0VDJWRcIiBocmVmPVwiI1RPQzFcIj4kdGl0bGU8L2E+PGJyPlxuIiwKLSAgICAgICAgICAkcmVmLCAkcmVmKTsKKyAgICAgICAgICAkcmVmKTsKICAgICAgICAgJHJlZisrOwogICAgICAgICB9CiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9kaXN0L0NoYW5nZUxvZyBiL2Rpc3QvQ2hhbmdlTG9nCmluZGV4IDM1OWI0MTIuLjVlNWJmMTggMTAwNjQ0Ci0tLSBhL2Rpc3QvQ2hhbmdlTG9nCisrKyBiL2Rpc3QvQ2hhbmdlTG9nCkBAIC0xLDYgKzEsMTgyIEBACiBDaGFuZ2VMb2cgZm9yIFBDUkUKIC0tLS0tLS0tLS0tLS0tLS0tLQogCitOb3RlIHRoYXQgdGhlIFBDUkUgOC54eCBzZXJpZXMgKFBDUkUxKSBpcyBub3cgaW4gYSBidWdmaXgtb25seSBzdGF0ZS4gQWxsCitkZXZlbG9wbWVudCBpcyBoYXBwZW5pbmcgaW4gdGhlIFBDUkUyIDEwLnh4IHNlcmllcy4KKworVmVyc2lvbiA4LjM4IDIzLU5vdmVtYmVyLTIwMTUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEuICBJZiBhIGdyb3VwIHRoYXQgY29udGFpbmVkIGEgcmVjdXJzaXZlIGJhY2sgcmVmZXJlbmNlIGFsc28gY29udGFpbmVkIGEKKyAgICBmb3J3YXJkIHJlZmVyZW5jZSBzdWJyb3V0aW5lIGNhbGwgZm9sbG93ZWQgYnkgYSBub24tZm9yd2FyZC1yZWZlcmVuY2UKKyAgICBzdWJyb3V0aW5lIGNhbGwsIGZvciBleGFtcGxlIC8uKCg/MikoP1IpXDEpKCkvLCBwY3JlMl9jb21waWxlKCkgZmFpbGVkIHRvCisgICAgY29tcGlsZSBjb3JyZWN0IGNvZGUsIGxlYWRpbmcgdG8gdW5kZWZpbmVkIGJlaGF2aW91ciBvciBhbiBpbnRlcm5hbGx5CisgICAgZGV0ZWN0ZWQgZXJyb3IuIFRoaXMgYnVnIHdhcyBkaXNjb3ZlcmVkIGJ5IHRoZSBMTFZNIGZ1enplci4KKworMi4gIFF1YW50aWZpY2F0aW9uIG9mIGNlcnRhaW4gaXRlbXMgKGUuZy4gYXRvbWljIGJhY2sgcmVmZXJlbmNlcykgY291bGQgY2F1c2UKKyAgICBpbmNvcnJlY3QgY29kZSB0byBiZSBjb21waWxlZCB3aGVuIHJlY3Vyc2l2ZSBmb3J3YXJkIHJlZmVyZW5jZXMgd2VyZQorICAgIGludm9sdmVkLiBGb3IgZXhhbXBsZSwgaW4gdGhpcyBwYXR0ZXJuOiAvKD8xKSgpKCgoKCgoXDErKykpXHg4NSkrKXwpKS8uCisgICAgVGhpcyBidWcgd2FzIGRpc2NvdmVyZWQgYnkgdGhlIExMVk0gZnV6emVyLgorCiszLiAgQSByZXBlYXRlZCBjb25kaXRpb25hbCBncm91cCB3aG9zZSBjb25kaXRpb24gd2FzIGEgcmVmZXJlbmNlIGJ5IG5hbWUgY2F1c2VkCisgICAgYSBidWZmZXIgb3ZlcmZsb3cgaWYgdGhlcmUgd2FzIG1vcmUgdGhhbiBvbmUgZ3JvdXAgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKyAgICBUaGlzIGJ1ZyB3YXMgZGlzY292ZXJlZCBieSB0aGUgTExWTSBmdXp6ZXIuCisKKzQuICBBIHJlY3Vyc2l2ZSBiYWNrIHJlZmVyZW5jZSBieSBuYW1lIHdpdGhpbiBhIGdyb3VwIHRoYXQgaGFkIHRoZSBzYW1lIG5hbWUgYXMKKyAgICBhbm90aGVyIGdyb3VwIGNhdXNlZCBhIGJ1ZmZlciBvdmVyZmxvdy4gRm9yIGV4YW1wbGU6CisgICAgLyg/SikoPydkJyg/J2QnXGd7ZH0pKS8uIFRoaXMgYnVnIHdhcyBkaXNjb3ZlcmVkIGJ5IHRoZSBMTFZNIGZ1enplci4KKworNS4gIEEgZm9yd2FyZCByZWZlcmVuY2UgYnkgbmFtZSB0byBhIGdyb3VwIHdob3NlIG51bWJlciBpcyB0aGUgc2FtZSBhcyB0aGUKKyAgICBjdXJyZW50IGdyb3VwLCBmb3IgZXhhbXBsZSBpbiB0aGlzIHBhdHRlcm46IC8oP3woXGsnUG0nKXwoPydQbScpKS8sIGNhdXNlZAorICAgIGEgYnVmZmVyIG92ZXJmbG93IGF0IGNvbXBpbGUgdGltZS4gVGhpcyBidWcgd2FzIGRpc2NvdmVyZWQgYnkgdGhlIExMVk0KKyAgICBmdXp6ZXIuCisKKzYuICBBIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIHdpdGhpbiBhIHNldCBvZiBtdXR1YWxseSByZWN1cnNpdmUgc3VicGF0dGVybnMgY291bGQKKyAgICBwcm92b2tlIGEgYnVmZmVyIG92ZXJmbG93LiBUaGlzIGJ1ZyB3YXMgZGlzY292ZXJlZCBieSB0aGUgTExWTSBmdXp6ZXIuCisKKzcuICBBbm90aGVyIGJ1ZmZlciBvdmVyZmxvdyBidWcgaW52b2x2ZWQgZHVwbGljYXRlIG5hbWVkIGdyb3VwcyB3aXRoIGEKKyAgICByZWZlcmVuY2UgYmV0d2VlbiB0aGVpciBkZWZpbml0aW9uLCB3aXRoIGEgZ3JvdXAgdGhhdCByZXNldCBjYXB0dXJlCisgICAgbnVtYmVycywgZm9yIGV4YW1wbGU6IC8oP0o6KD98KD8nUicpKFxrJ1InKXwoKD8nUicpKSkpLy4gVGhpcyBoYXMgYmVlbgorICAgIGZpeGVkIGJ5IGFsd2F5cyBhbGxvd2luZyBmb3IgbW9yZSBtZW1vcnksIGV2ZW4gaWYgbm90IG5lZWRlZC4gKEEgcHJvcGVyIGZpeAorICAgIGlzIGltcGxlbWVudGVkIGluIFBDUkUyLCBidXQgaXQgaW52b2x2ZXMgbW9yZSByZWZhY3RvcmluZy4pCisKKzguICBUaGVyZSB3YXMgbm8gY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgaW4gc3Vicm91dGluZSBjYWxscyBzdWNoIGFzICg/MTIzKS4KKworOS4gIFRoZSB0YWJsZSBlbnRyeSBmb3IgXGwgaW4gRUJDRElDIGVudmlyb25tZW50cyB3YXMgaW5jb3JyZWN0LCBsZWFkaW5nIHRvIGl0cworICAgIGJlaW5nIHRyZWF0ZWQgYXMgYSBsaXRlcmFsICdsJyBpbnN0ZWFkIG9mIGNhdXNpbmcgYW4gZXJyb3IuCisKKzEwLiBUaGVyZSB3YXMgYSBidWZmZXIgb3ZlcmZsb3cgaWYgcGNyZV9leGVjKCkgd2FzIGNhbGxlZCB3aXRoIGFuIG92ZWN0b3Igb2YKKyAgICBzaXplIDEuIFRoaXMgYnVnIHdhcyBmb3VuZCBieSBhbWVyaWNhbiBmdXp6eSBsb3AuCisKKzExLiBJZiBhIG5vbi1jYXB0dXJpbmcgZ3JvdXAgY29udGFpbmluZyBhIGNvbmRpdGlvbmFsIGdyb3VwIHRoYXQgY291bGQgbWF0Y2gKKyAgICBhbiBlbXB0eSBzdHJpbmcgd2FzIHJlcGVhdGVkLCBpdCB3YXMgbm90IGlkZW50aWZpZWQgYXMgbWF0Y2hpbmcgYW4gZW1wdHkKKyAgICBzdHJpbmcgaXRzZWxmLiBGb3IgZXhhbXBsZTogL14oPzooPygxKXh8KSspKyQoKS8uCisKKzEyLiBJbiBhbiBFQkNESUMgZW52aXJvbm1lbnQsIHBjcmV0ZXN0IHdhcyBtaXNoYW5kbGluZyB0aGUgZXNjYXBlIHNlcXVlbmNlcworICAgIFxhIGFuZCBcZSBpbiB0ZXN0IHN1YmplY3QgbGluZXMuCisKKzEzLiBJbiBhbiBFQkNESUMgZW52aXJvbm1lbnQsIFxhIGluIGEgcGF0dGVybiB3YXMgY29udmVydGVkIHRvIHRoZSBBU0NJSQorICAgIGluc3RlYWQgb2YgdGhlIEVCQ0RJQyB2YWx1ZS4KKworMTQuIFRoZSBoYW5kbGluZyBvZiBcYyBpbiBhbiBFQkNESUMgZW52aXJvbm1lbnQgaGFzIGJlZW4gcmV2aXNlZCBzbyB0aGF0IGl0IGlzCisgICAgbm93IGNvbXBhdGlibGUgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiBpbiBQZXJsJ3MgcGVybGViY2RpYyBwYWdlLgorCisxNS4gVGhlIEVCQ0RJQyBjaGFyYWN0ZXIgMHg0MSBpcyBhIG5vbi1icmVha2luZyBzcGFjZSwgZXF1aXZhbGVudCB0byAweGEwIGluCisgICAgQVNDSUkvVW5pY29kZS4gVGhpcyBoYXMgbm93IGJlZW4gYWRkZWQgdG8gdGhlIGxpc3Qgb2YgY2hhcmFjdGVycyB0aGF0IGFyZQorICAgIHJlY29nbml6ZWQgYXMgd2hpdGUgc3BhY2UgaW4gRUJDRElDLgorCisxNi4gV2hlbiBQQ1JFIHdhcyBjb21waWxlZCB3aXRob3V0IFVDUCBzdXBwb3J0LCB0aGUgdXNlIG9mIFxwIGFuZCBcUCBnYXZlIGFuCisgICAgZXJyb3IgKGNvcnJlY3RseSkgd2hlbiB1c2VkIG91dHNpZGUgYSBjbGFzcywgYnV0IGRpZCBub3QgZ2l2ZSBhbiBlcnJvcgorICAgIHdpdGhpbiBhIGNsYXNzLgorCisxNy4gXGggd2l0aGluIGEgY2xhc3Mgd2FzIGluY29ycmVjdGx5IGNvbXBpbGVkIGluIEVCQ0RJQyBlbnZpcm9ubWVudHMuCisKKzE4LiBBIHBhdHRlcm4gd2l0aCBhbiB1bm1hdGNoZWQgY2xvc2luZyBwYXJlbnRoZXNpcyB0aGF0IGNvbnRhaW5lZCBhIGJhY2t3YXJkCisgICAgYXNzZXJ0aW9uIHdoaWNoIGl0c2VsZiBjb250YWluZWQgYSBmb3J3YXJkIHJlZmVyZW5jZSBjYXVzZWQgYnVmZmVyCisgICAgb3ZlcmZsb3cuIEFuZCBleGFtcGxlIHBhdHRlcm4gaXM6IC8oPz1kaSg/PD0oPzEpKXwoPz0oLikpKSkvLgorCisxOS4gSklUIHNob3VsZCByZXR1cm4gd2l0aCBlcnJvciB3aGVuIHRoZSBjb21waWxlZCBwYXR0ZXJuIHJlcXVpcmVzIG1vcmUgc3RhY2sKKyAgICBzcGFjZSB0aGFuIHRoZSBtYXhpbXVtLgorCisyMC4gQSBwb3NzZXNzaXZlbHkgcmVwZWF0ZWQgY29uZGl0aW9uYWwgZ3JvdXAgdGhhdCBjb3VsZCBtYXRjaCBhbiBlbXB0eSBzdHJpbmcsCisgICAgZm9yIGV4YW1wbGUsIC8oPyhSKSkqKy8sIHdhcyBpbmNvcnJlY3RseSBjb21waWxlZC4KKworMjEuIEZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhlIEpJVCBjb21waWxlciB3aGVuIGNlcnRhaW4gcGF0dGVybnMgc3VjaCBhcworICAgIC8oPzp8YXwpezEwMH14LyBhcmUgYW5hbHlzZWQuCisKKzIyLiBTb21lIHBhdHRlcm5zIHdpdGggY2hhcmFjdGVyIGNsYXNzZXMgaW52b2x2aW5nIFs6IGFuZCBcXCB3ZXJlIGluY29ycmVjdGx5CisgICAgY29tcGlsZWQgYW5kIGNvdWxkIGNhdXNlIHJlYWRpbmcgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbiBpbmNvcnJlY3QKKyAgICBlcnJvciBkaWFnbm9zaXMuCisKKzIzLiBQYXRob2xvZ2ljYWwgcGF0dGVybnMgY29udGFpbmluZyBtYW55IG5lc3RlZCBvY2N1cnJlbmNlcyBvZiBbOiBjYXVzZWQKKyAgICBwY3JlX2NvbXBpbGUoKSB0byBydW4gZm9yIGEgdmVyeSBsb25nIHRpbWUuCisKKzI0LiBBIGNvbmRpdGlvbmFsIGdyb3VwIHdpdGggb25seSBvbmUgYnJhbmNoIGhhcyBhbiBpbXBsaWNpdCBlbXB0eSBhbHRlcm5hdGl2ZQorICAgIGJyYW5jaCBhbmQgbXVzdCB0aGVyZWZvcmUgYmUgdHJlYXRlZCBhcyBwb3RlbnRpYWxseSBtYXRjaGluZyBhbiBlbXB0eQorICAgIHN0cmluZy4KKworMjUuIElmICg/UiB3YXMgZm9sbG93ZWQgYnkgLSBvciArIGluY29ycmVjdCBiZWhhdmlvdXIgaGFwcGVuZWQgaW5zdGVhZCBvZiBhCisgICAgZGlhZ25vc3RpYy4KKworMjYuIEFycmFuZ2UgdG8gZ2l2ZSB1cCBvbiBmaW5kaW5nIHRoZSBtaW5pbXVtIG1hdGNoaW5nIGxlbmd0aCBmb3Igb3Zlcmx5CisgICAgY29tcGxleCBwYXR0ZXJucy4KKworMjcuIFNpbWlsYXIgdG8gKDQpIGFib3ZlOiBpbiBhIHBhdHRlcm4gd2l0aCBkdXBsaWNhdGVkIG5hbWVkIGdyb3VwcyBhbmQgYW4KKyAgICBvY2N1cnJlbmNlIG9mICg/fCBpdCBpcyBwb3NzaWJsZSBmb3IgYW4gYXBwYXJlbnRseSBub24tcmVjdXJzaXZlIGJhY2sKKyAgICByZWZlcmVuY2UgdG8gYmVjb21lIHJlY3Vyc2l2ZSBpZiBhIGxhdGVyIG5hbWVkIGdyb3VwIHdpdGggdGhlIHJlbGV2YW50CisgICAgbnVtYmVyIGlzIGVuY291bnRlcmVkLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSBidWZmZXIgb3ZlcmZsb3cuIFdlbiBHdWFueGluZworICAgIGZyb20gVmVudXN0ZWNoIEFETEFCIGRpc2NvdmVyZWQgdGhpcyBidWcuCisKKzI4LiBJZiBwY3JlZ3JlcCB3YXMgZ2l2ZW4gdGhlIC1xIG9wdGlvbiB3aXRoIC1jIG9yIC1sLCBvciB3aGVuIGhhbmRsaW5nIGEKKyAgICBiaW5hcnkgZmlsZSwgaXQgaW5jb3JyZWN0bHkgd3JvdGUgb3V0cHV0IHRvIHN0ZG91dC4KKworMjkuIFRoZSBKSVQgY29tcGlsZXIgZGlkIG5vdCByZXN0b3JlIHRoZSBjb250cm9sIHZlcmIgaGVhZCBpbiBjYXNlIG9mICpUSEVOCisgICAgY29udHJvbCB2ZXJicy4gVGhpcyBpc3N1ZSB3YXMgZm91bmQgYnkgS2FybCBTa29tc2tpIHdpdGggYSBjdXN0b20gTExWTQorICAgIGZ1enplci4KKworMzAuIEVycm9yIG1lc3NhZ2VzIGZvciBzeW50YXggZXJyb3JzIGZvbGxvd2luZyBcZyBhbmQgXGsgd2VyZSBnaXZpbmcgaW5hY2N1cmF0ZQorICAgIG9mZnNldHMgaW4gdGhlIHBhdHRlcm4uCisKKzMxLiBBZGRlZCBhIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93IGluIGNvbmRpdGlvbnMgKD8oPGRpZ2l0cz4pIGFuZAorICAgICg/KFI8ZGlnaXRzPikuIFRoaXMgb21pc3Npb24gd2FzIGRpc2NvdmVyZWQgYnkgS2FybCBTa29tc2tpIHdpdGggdGhlIExMVk0KKyAgICBmdXp6ZXIuCisKKzMyLiBIYW5kbGluZyByZWN1cnNpdmUgcmVmZXJlbmNlcyBzdWNoIGFzICg/Mikgd2hlbiB0aGUgcmVmZXJlbmNlIGlzIHRvIGEgZ3JvdXAKKyAgICBsYXRlciBpbiB0aGUgcGF0dGVybiB1c2VzIGNvZGUgdGhhdCBpcyB2ZXJ5IGhhY2tlZCBhYm91dCBhbmQgZXJyb3ItcHJvbmUuCisgICAgSXQgaGFzIGJlZW4gcmUtd3JpdHRlbiBmb3IgUENSRTIuIEhlcmUgaW4gUENSRTEsIGEgY2hlY2sgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICBnaXZlIGFuIGludGVybmFsIGVycm9yIGlmIGl0IGlzIG9idmlvdXMgdGhhdCBjb21waWxpbmcgaGFzIGdvbmUgd3JvbmcuCisKKzMzLiBUaGUgSklUIGNvbXBpbGVyIHNob3VsZCBub3QgY2hlY2sgcmVwZWF0cyBhZnRlciBhIHswLDF9IHJlcGVhdCBieXRlIGNvZGUuCisgICAgVGhpcyBpc3N1ZSB3YXMgZm91bmQgYnkgS2FybCBTa29tc2tpIHdpdGggYSBjdXN0b20gTExWTSBmdXp6ZXIuCisKKzM0LiBUaGUgSklUIGNvbXBpbGVyIHNob3VsZCByZXN0b3JlIHRoZSBjb250cm9sIGNoYWluIGZvciBlbXB0eSBwb3NzZXNzaXZlCisgICAgcmVwZWF0cy4gVGhpcyBpc3N1ZSB3YXMgZm91bmQgYnkgS2FybCBTa29tc2tpIHdpdGggYSBjdXN0b20gTExWTSBmdXp6ZXIuCisKKzM1LiBNYXRjaCBsaW1pdCBjaGVjayBhZGRlZCB0byBKSVQgcmVjdXJzaW9uLiBUaGlzIGlzc3VlIHdhcyBmb3VuZCBieSBLYXJsCisgICAgU2tvbXNraSB3aXRoIGEgY3VzdG9tIExMVk0gZnV6emVyLgorCiszNi4gWWV0IGFub3RoZXIgY2FzZSBzaW1pbGFyIHRvIDI3IGFib3ZlIGhhcyBiZWVuIGNpcmN1bXZlbnRlZCBieSBhbgorICAgIHVuY29uZGl0aW9uYWwgYWxsb2NhdGlvbiBvZiBleHRyYSBtZW1vcnkuIFRoaXMgaXNzdWUgaXMgZml4ZWQgInByb3Blcmx5IiBpbgorICAgIFBDUkUyIGJ5IHJlZmFjdG9yaW5nIHRoZSB3YXkgcmVmZXJlbmNlcyBhcmUgaGFuZGxlZC4gV2VuIEd1YW54aW5nCisgICAgZnJvbSBWZW51c3RlY2ggQURMQUIgZGlzY292ZXJlZCB0aGlzIGJ1Zy4KKworMzcuIEZpeCB0d28gYXNzZXJ0aW9uIGZhaWxzIGluIEpJVC4gVGhlc2UgaXNzdWVzIHdlcmUgZm91bmQgYnkgS2FybCBTa29tc2tpCisgICAgd2l0aCBhIGN1c3RvbSBMTFZNIGZ1enplci4KKworMzguIEZpeGVkIGEgY29ybmVyIGNhc2Ugb2YgcmFuZ2Ugb3B0aW1pemF0aW9uIGluIEpJVC4KKworMzkuIEFuIGluY29ycmVjdCBlcnJvciAib3ZlcnJhbiBjb21waWxpbmcgd29ya3NwYWNlIiB3YXMgZ2l2ZW4gaWYgdGhlcmUgd2VyZQorICAgIGV4YWN0bHkgZW5vdWdoIGdyb3VwIGZvcndhcmQgcmVmZXJlbmNlcyBzdWNoIHRoYXQgdGhlIGxhc3Qgb25lIGV4dGVuZGVkCisgICAgaW50byB0aGUgd29ya3NwYWNlIHNhZmV0eSBtYXJnaW4uIFRoZSBuZXh0IG9uZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZQorICAgIHdvcmtzcGFjZS4gVGhlIHRlc3QgZm9yIG92ZXJmbG93IHdhcyBub3QgaW5jbHVkaW5nIHRoZSBzYWZldHkgbWFyZ2luLgorCis0MC4gQSBtYXRjaCBsaW1pdCBpc3N1ZSBpcyBmaXhlZCBpbiBKSVQgd2hpY2ggd2FzIGZvdW5kIGJ5IEthcmwgU2tvbXNraQorICAgIHdpdGggYSBjdXN0b20gTExWTSBmdXp6ZXIuCisKKzQxLiBSZW1vdmUgdGhlIHVzZSBvZiAvZGV2L251bGwgaW4gdGVzdGRhdGEvdGVzdGlucHV0MiwgYmVjYXVzZSBpdCBkb2Vzbid0CisgICAgd29yayB1bmRlciBXaW5kb3dzLiAoV2h5IGhhcyBpdCB0YWtlbiBzbyBsb25nIGZvciBhbnlvbmUgdG8gbm90aWNlPykKKworNDIuIEluIGEgY2hhcmFjdGVyIGNsYXNzIHN1Y2ggYXMgW1xXXHB7QW55fV0gd2hlcmUgYm90aCBhIG5lZ2F0aXZlLXR5cGUgZXNjYXBlCisgICAgKCJub3QgYSB3b3JkIGNoYXJhY3RlciIpIGFuZCBhIHByb3BlcnR5IGVzY2FwZSB3ZXJlIHByZXNlbnQsIHRoZSBwcm9wZXJ0eQorICAgIGVzY2FwZSB3YXMgYmVpbmcgaWdub3JlZC4KKworNDMuIEZpeCBjcmFzaCBjYXVzZWQgYnkgdmVyeSBsb25nICgqTUFSSykgb3IgKCpUSEVOKSBuYW1lcy4KKworNDQuIEEgc2VxdWVuY2Ugc3VjaCBhcyBbWzpwdW5jdDpdYl0gdGhhdCBpcywgYSBQT1NJWCBjaGFyYWN0ZXIgY2xhc3MgZm9sbG93ZWQKKyAgICBieSBhIHNpbmdsZSBBU0NJSSBjaGFyYWN0ZXIgaW4gYSBjbGFzcyBpdGVtLCB3YXMgaW5jb3JyZWN0bHkgY29tcGlsZWQgaW4KKyAgICBVQ1AgbW9kZS4gVGhlIFBPU0lYIGNsYXNzIGdvdCBsb3N0LCBidXQgb25seSBpZiB0aGUgc2luZ2xlIGNoYXJhY3RlcgorICAgIGZvbGxvd2VkIGl0LgorCis0NS4gWzpwdW5jdDpdIGluIFVDUCBtb2RlIHdhcyBtYXRjaGluZyBzb21lIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIDEyOC0yNTUKKyAgICB0aGF0IHNob3VsZCBub3QgaGF2ZSBiZWVuIG1hdGNoZWQuCisKKzQ2LiBJZiBbOl5hc2NpaTpdIG9yIFs6XnhkaWdpdDpdIG9yIFs6XmNudHJsOl0gYXJlIHByZXNlbnQgaW4gYSBub24tbmVnYXRlZAorICAgIGNsYXNzLCBhbGwgY2hhcmFjdGVycyB3aXRoIGNvZGUgcG9pbnRzIGdyZWF0ZXIgdGhhbiAyNTUgYXJlIGluIHRoZSBjbGFzcy4KKyAgICBXaGVuIGEgVW5pY29kZSBwcm9wZXJ0eSB3YXMgYWxzbyBpbiB0aGUgY2xhc3MgKGlmIFBDUkVfVUNQIGlzIHNldCwgZXNjYXBlcworICAgIHN1Y2ggYXMgXHcgYXJlIHR1cm5lZCBpbnRvIFVuaWNvZGUgcHJvcGVydGllcyksIHdpZGUgY2hhcmFjdGVycyB3ZXJlIG5vdAorICAgIGNvcnJlY3RseSBoYW5kbGVkLCBhbmQgY291bGQgZmFpbCB0byBtYXRjaC4KKworCiBWZXJzaW9uIDguMzcgMjgtQXByaWwtMjAxNQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvZGlzdC9ORVdTIGIvZGlzdC9ORVdTCmluZGV4IDA2NGJmMjcuLjdlNDJkY2IgMTAwNjQ0Ci0tLSBhL2Rpc3QvTkVXUworKysgYi9kaXN0L05FV1MKQEAgLTEsNiArMSwxNCBAQAogTmV3cyBhYm91dCBQQ1JFIHJlbGVhc2VzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorUmVsZWFzZSA4LjM4IDIzLU5vdmVtYmVyLTIwMTUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgaXMgYnVnLWZpeCByZWxlYXNlLiBOb3RlIHRoYXQgdGhpcyBsaWJyYXJ5IChub3cgY2FsbGVkIFBDUkUxKSBpcyBub3cgYmVpbmcKK21haW50YWluZWQgZm9yIGJ1ZyBmaXhlcyBvbmx5LiBOZXcgcHJvamVjdHMgYXJlIGFkdmlzZWQgdG8gdXNlIHRoZSBuZXcgUENSRTIKK2xpYnJhcmllcy4KKworCiBSZWxlYXNlIDguMzcgMjgtQXByaWwtMjAxNQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvZGlzdC9OT04tQVVUT1RPT0xTLUJVSUxEIGIvZGlzdC9OT04tQVVUT1RPT0xTLUJVSUxECmluZGV4IDFjM2RhODQuLjM5MTAwNTkgMTAwNjQ0Ci0tLSBhL2Rpc3QvTk9OLUFVVE9UT09MUy1CVUlMRAorKysgYi9kaXN0L05PTi1BVVRPVE9PTFMtQlVJTEQKQEAgLTc2NCw5ICs3NjQsOSBAQAogCiAgIGh0dHA6Ly93d3cuemFjb25zdWx0YW50cy5uZXQKIAotVGhlcmUgaXMgYWxzbyBhIG1pcnJvciBoZXJlOgotCi0gIGh0dHA6Ly93d3cudnNvZnQtc29mdHdhcmUuY29tL2Rvd25sb2Fkcy5odG1sCitZb3UgbWF5IGRvd25sb2FkIFBDUkUgZnJvbSBXV1cuQ0JUVEFQRS5PUkcswqBmaWxlIDg4Mi4gwqBFdmVyeXRoaW5nLCBzb3VyY2UgYW5kCitleGVjdXRhYmxlLCBpcyBpbiBFQkNESUMgYW5kIG5hdGl2ZSB6L09TIGZpbGUgZm9ybWF0cyBhbmQgdGhpcyBpcyB0aGUKK3JlY29tbWVuZGVkIGRvd25sb2FkIHNpdGUuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09Ci1MYXN0IFVwZGF0ZWQ6IDEwIEZlYnJ1YXJ5IDIwMTUKK0xhc3QgVXBkYXRlZDogMjUgSnVuZSAyMDE1CmRpZmYgLS1naXQgYS9kaXN0L1J1bkdyZXBUZXN0IGIvZGlzdC9SdW5HcmVwVGVzdAppbmRleCA2MmUyYTliLi5hNmU5M2QzIDEwMDc1NQotLS0gYS9kaXN0L1J1bkdyZXBUZXN0CisrKyBiL2Rpc3QvUnVuR3JlcFRlc3QKQEAgLTUxMiw2ICs1MTIsMTQgQEAKIChjZCAkc3JjZGlyOyAkdmFsZ3JpbmQgJHBjcmVncmVwICAtLWxpbmUtb2Zmc2V0cyAnKD88PVxLYSknICRidWlsZGRpci90ZXN0dGVtcDFncmVwKSA+PnRlc3R0cnlncmVwIDI+JjEKIGVjaG8gIlJDPSQ/IiA+PnRlc3R0cnlncmVwCiAKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVzdCAxMDggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA+PnRlc3R0cnlncmVwCisoY2QgJHNyY2RpcjsgJHZhbGdyaW5kICRwY3JlZ3JlcCAtbHEgUEFUVEVSTiAuL3Rlc3RkYXRhL2dyZXBpbnB1dCAuL3Rlc3RkYXRhL2dyZXBpbnB1dHgpID4+dGVzdHRyeWdyZXAKK2VjaG8gIlJDPSQ/IiA+PnRlc3R0cnlncmVwCisKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVzdCAxMDkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iID4+dGVzdHRyeWdyZXAKKyhjZCAkc3JjZGlyOyAkdmFsZ3JpbmQgJHBjcmVncmVwIC1jcSBsYXp5IC4vdGVzdGRhdGEvZ3JlcGlucHV0KikgPj50ZXN0dHJ5Z3JlcAorZWNobyAiUkM9JD8iID4+dGVzdHRyeWdyZXAKKwogIyBOb3cgY29tcGFyZSB0aGUgcmVzdWx0cy4KIAogJGNmICRzcmNkaXIvdGVzdGRhdGEvZ3JlcG91dHB1dCB0ZXN0dHJ5Z3JlcApkaWZmIC0tZ2l0IGEvZGlzdC9hY2xvY2FsLm00IGIvZGlzdC9hY2xvY2FsLm00CmluZGV4IGJlM2QzMzcuLjAyNDFkZDIgMTAwNjQ0Ci0tLSBhL2Rpc3QvYWNsb2NhbC5tNAorKysgYi9kaXN0L2FjbG9jYWwubTQKQEAgLTIwLDMyICsyMCw2MyBAQAogSWYgeW91IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWlsZCBzeXN0ZW0gZW50aXJlbHkuCiBUbyBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5ICdhdXRvcmVjb25mJy5dKV0pCiAKLSMgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KLSMgc2VyaWFsIDEgKHBrZy1jb25maWctMC4yNCkKLSMgCi0jIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0jCi0jIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCi0jIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCi0jIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KK2RubCBwa2cubTQgLSBNYWNyb3MgdG8gbG9jYXRlIGFuZCB1dGlsaXNlIHBrZy1jb25maWcuICAgLSotIEF1dG9jb25mIC0qLQorZG5sIHNlcmlhbCAxMSAocGtnLWNvbmZpZy0wLjI5KQorZG5sCitkbmwgQ29weXJpZ2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KK2RubCBDb3B5cmlnaHQgwqkgMjAxMi0yMDE1IERhbiBOaWNob2xzb24gPGRibi5saXN0c0BnbWFpbC5jb20+CitkbmwKK2RubCBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorZG5sIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CitkbmwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKK2RubCAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorZG5sCitkbmwgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorZG5sIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK2RubCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCitkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorZG5sCitkbmwgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2RubCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorZG5sIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorZG5sIDAyMTExLTEzMDcsIFVTQS4KK2RubAorZG5sIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKK2RubCBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKK2RubCBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQKK2RubCBwcm9ncmFtLgogCi0jIFBLR19QUk9HX1BLR19DT05GSUcoW01JTi1WRVJTSU9OXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFBLR19QUkVSRVEoTUlOLVZFUlNJT04pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4yOQorZG5sCitkbmwgVmVyaWZ5IHRoYXQgdGhlIHZlcnNpb24gb2YgdGhlIHBrZy1jb25maWcgbWFjcm9zIGFyZSBhdCBsZWFzdAorZG5sIE1JTi1WRVJTSU9OLiBVbmxpa2UgUEtHX1BST0dfUEtHX0NPTkZJRywgd2hpY2ggY2hlY2tzIHRoZSB1c2VyJ3MKK2RubCBpbnN0YWxsZWQgdmVyc2lvbiBvZiBwa2ctY29uZmlnLCB0aGlzIGNoZWNrcyB0aGUgZGV2ZWxvcGVyJ3MgdmVyc2lvbgorZG5sIG9mIHBrZy5tNCB3aGVuIGdlbmVyYXRpbmcgY29uZmlndXJlLgorZG5sCitkbmwgVG8gZW5zdXJlIHRoYXQgdGhpcyBtYWNybyBpcyBkZWZpbmVkLCBhbHNvIGFkZDoKK2RubCBtNF9pZm5kZWYoW1BLR19QUkVSRVFdLAorZG5sICAgICBbbTRfZmF0YWwoW211c3QgaW5zdGFsbCBwa2ctY29uZmlnIDAuMjkgb3IgbGF0ZXIgYmVmb3JlIHJ1bm5pbmcgYXV0b2NvbmYvYXV0b2dlbl0pXSkKK2RubAorZG5sIFNlZSB0aGUgIlNpbmNlIiBjb21tZW50IGZvciBlYWNoIG1hY3JvIHlvdSB1c2UgdG8gc2VlIHdoYXQgdmVyc2lvbgorZG5sIG9mIHRoZSBtYWNyb3MgeW91IHJlcXVpcmUuCittNF9kZWZ1bihbUEtHX1BSRVJFUV0sCitbbTRfZGVmaW5lKFtQS0dfTUFDUk9TX1ZFUlNJT05dLCBbMC4yOV0pCittNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUoUEtHX01BQ1JPU19WRVJTSU9OLCBbJDFdKSwgLTEsCisgICAgW200X2ZhdGFsKFtwa2cubTQgdmVyc2lvbiAkMSBvciBoaWdoZXIgaXMgcmVxdWlyZWQgYnV0IF1QS0dfTUFDUk9TX1ZFUlNJT05bIGZvdW5kXSldKQorXSlkbmwgUEtHX1BSRVJFUQorCitkbmwgUEtHX1BST0dfUEtHX0NPTkZJRyhbTUlOLVZFUlNJT05dKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4xNgorZG5sCitkbmwgU2VhcmNoIGZvciB0aGUgcGtnLWNvbmZpZyB0b29sIGFuZCBzZXQgdGhlIFBLR19DT05GSUcgdmFyaWFibGUgdG8KK2RubCBmaXJzdCBmb3VuZCBpbiB0aGUgcGF0aC4gQ2hlY2tzIHRoYXQgdGhlIHZlcnNpb24gb2YgcGtnLWNvbmZpZyBmb3VuZAorZG5sIGlzIGF0IGxlYXN0IE1JTi1WRVJTSU9OLiBJZiBNSU4tVkVSU0lPTiBpcyBub3Qgc3BlY2lmaWVkLCAwLjkuMCBpcworZG5sIHVzZWQgc2luY2UgdGhhdCdzIHRoZSBmaXJzdCB2ZXJzaW9uIHdoZXJlIG1vc3QgY3VycmVudCBmZWF0dXJlcyBvZgorZG5sIHBrZy1jb25maWcgZXhpc3RlZC4KIEFDX0RFRlVOKFtQS0dfUFJPR19QS0dfQ09ORklHXSwKIFttNF9wYXR0ZXJuX2ZvcmJpZChbXl8/UEtHX1tBLVpfXSskXSkKIG00X3BhdHRlcm5fYWxsb3coW15QS0dfQ09ORklHKF8oUEFUSHxMSUJESVJ8U1lTUk9PVF9ESVJ8QUxMT1dfU1lTVEVNXyhDRkxBR1N8TElCUykpKT8kXSkKQEAgLTY3LDE4ICs5OCwxOSBAQAogCQlQS0dfQ09ORklHPSIiCiAJZmkKIGZpW11kbmwKLV0pIyBQS0dfUFJPR19QS0dfQ09ORklHCitdKWRubCBQS0dfUFJPR19QS0dfQ09ORklHCiAKLSMgUEtHX0NIRUNLX0VYSVNUUyhNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQotIwotIyBDaGVjayB0byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9mIG1vZHVsZXMgZXhpc3RzLiAgU2ltaWxhcgotIyB0byBQS0dfQ0hFQ0tfTU9EVUxFUygpLCBidXQgZG9lcyBub3Qgc2V0IHZhcmlhYmxlcyBvciBwcmludCBlcnJvcnMuCi0jCi0jIFBsZWFzZSByZW1lbWJlciB0aGF0IG00IGV4cGFuZHMgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCi0jIG9ubHkgYXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBpbiBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBmaXJzdCBwbGFjZQotIyBpdCdzIGNhbGxlZCBtaWdodCBiZSBza2lwcGVkIChzdWNoIGFzIGlmIGl0IGlzIHdpdGhpbiBhbiAiaWYiLCB5b3UKLSMgaGF2ZSB0byBjYWxsIFBLR19DSEVDS19FWElTVFMgbWFudWFsbHkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBQS0dfQ0hFQ0tfRVhJU1RTKE1PRFVMRVMsIFtBQ1RJT04tSUYtRk9VTkRdLCBbQUNUSU9OLUlGLU5PVC1GT1VORF0pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFNpbmNlOiAwLjE4CitkbmwKK2RubCBDaGVjayB0byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9mIG1vZHVsZXMgZXhpc3RzLiBTaW1pbGFyIHRvCitkbmwgUEtHX0NIRUNLX01PRFVMRVMoKSwgYnV0IGRvZXMgbm90IHNldCB2YXJpYWJsZXMgb3IgcHJpbnQgZXJyb3JzLgorZG5sCitkbmwgUGxlYXNlIHJlbWVtYmVyIHRoYXQgbTQgZXhwYW5kcyBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKK2RubCBvbmx5IGF0IHRoZSBmaXJzdCBvY2N1cmVuY2UgaW4gY29uZmlndXJlLmFjLCBzbyBpZiB0aGUgZmlyc3QgcGxhY2UKK2RubCBpdCdzIGNhbGxlZCBtaWdodCBiZSBza2lwcGVkIChzdWNoIGFzIGlmIGl0IGlzIHdpdGhpbiBhbiAiaWYiLCB5b3UKK2RubCBoYXZlIHRvIGNhbGwgUEtHX0NIRUNLX0VYSVNUUyBtYW51YWxseQogQUNfREVGVU4oW1BLR19DSEVDS19FWElTVFNdLAogW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAogaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKQEAgLTg4LDggKzEyMCwxMCBAQAogICAkM10pZG5sCiBmaV0pCiAKLSMgX1BLR19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIF9QS0dfQ09ORklHKFtWQVJJQUJMRV0sIFtDT01NQU5EXSwgW01PRFVMRVNdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIEludGVybmFsIHdyYXBwZXIgY2FsbGluZyBwa2ctY29uZmlnIHZpYSBQS0dfQ09ORklHIGFuZCBzZXR0aW5nCitkbmwgcGtnX2ZhaWxlZCBiYXNlZCBvbiB0aGUgcmVzdWx0LgogbTRfZGVmaW5lKFtfUEtHX0NPTkZJR10sCiBbaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgogICAgIHBrZ19jdl9bXSQxPSIkJDEiCkBAIC0xMDEsMTAgKzEzNSwxMSBAQAogIGVsc2UKICAgICBwa2dfZmFpbGVkPXVudHJpZWQKIGZpW11kbmwKLV0pIyBfUEtHX0NPTkZJRworXSlkbmwgX1BLR19DT05GSUcKIAotIyBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBJbnRlcm5hbCBjaGVjayB0byBzZWUgaWYgcGtnLWNvbmZpZyBzdXBwb3J0cyBzaG9ydCBlcnJvcnMuCiBBQ19ERUZVTihbX1BLR19TSE9SVF9FUlJPUlNfU1VQUE9SVEVEXSwKIFtBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKIGlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCkBAIC0xMTIsMTkgKzE0NywxNyBAQAogZWxzZQogICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KIGZpW11kbmwKLV0pIyBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKK10pZG5sIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAogCiAKLSMgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwKLSMgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQotIwotIwotIyBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGUgZmlyc3QgY2FsbCB0bwotIyBQS0dfQ0hFQ0tfTU9EVUxFUyBtaWdodCBub3QgaGFwcGVuLCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVkZSBhbgotIyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91ciBjb25maWd1cmUuYWMKLSMKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBQS0dfQ0hFQ0tfTU9EVUxFUyhWQVJJQUJMRS1QUkVGSVgsIE1PRFVMRVMsIFtBQ1RJT04tSUYtRk9VTkRdLAorZG5sICAgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgU2luY2U6IDAuNC4wCitkbmwKK2RubCBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGUgZmlyc3QgY2FsbCB0bworZG5sIFBLR19DSEVDS19NT0RVTEVTIG1pZ2h0IG5vdCBoYXBwZW4sIHlvdSBzaG91bGQgYmUgc3VyZSB0byBpbmNsdWRlIGFuCitkbmwgZXhwbGljaXQgY2FsbCB0byBQS0dfUFJPR19QS0dfQ09ORklHIGluIHlvdXIgY29uZmlndXJlLmFjCiBBQ19ERUZVTihbUEtHX0NIRUNLX01PRFVMRVNdLAogW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAogQUNfQVJHX1ZBUihbJDFdW19DRkxBR1NdLCBbQyBjb21waWxlciBmbGFncyBmb3IgJDEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZ10pZG5sCkBAIC0xNzgsMTYgKzIxMSw0MCBAQAogICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogCSQzCiBmaVtdZG5sCi1dKSMgUEtHX0NIRUNLX01PRFVMRVMKK10pZG5sIFBLR19DSEVDS19NT0RVTEVTCiAKIAotIyBQS0dfSU5TVEFMTERJUihESVJFQ1RPUlkpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxlIHBrZ2NvbmZpZ2RpciBhcyB0aGUgbG9jYXRpb24gd2hlcmUgYSBtb2R1bGUKLSMgc2hvdWxkIGluc3RhbGwgcGtnLWNvbmZpZyAucGMgZmlsZXMuIEJ5IGRlZmF1bHQgdGhlIGRpcmVjdG9yeSBpcwotIyAkbGliZGlyL3BrZ2NvbmZpZywgYnV0IHRoZSBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkIGJ5IHBhc3NpbmcKLSMgRElSRUNUT1JZLiBUaGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhyb3VnaCB0aGUgLS13aXRoLXBrZ2NvbmZpZ2RpcgotIyBwYXJhbWV0ZXIuCitkbmwgUEtHX0NIRUNLX01PRFVMRVNfU1RBVElDKFZBUklBQkxFLVBSRUZJWCwgTU9EVUxFUywgW0FDVElPTi1JRi1GT1VORF0sCitkbmwgICBbQUNUSU9OLUlGLU5PVC1GT1VORF0pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgU2luY2U6IDAuMjkKK2RubAorZG5sIENoZWNrcyBmb3IgZXhpc3RlbmNlIG9mIE1PRFVMRVMgYW5kIGdhdGhlcnMgaXRzIGJ1aWxkIGZsYWdzIHdpdGgKK2RubCBzdGF0aWMgbGlicmFyaWVzIGVuYWJsZWQuIFNldHMgVkFSSUFCTEUtUFJFRklYX0NGTEFHUyBmcm9tIC0tY2ZsYWdzCitkbmwgYW5kIFZBUklBQkxFLVBSRUZJWF9MSUJTIGZyb20gLS1saWJzLgorZG5sCitkbmwgTm90ZSB0aGF0IGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNhbGwgdG8KK2RubCBQS0dfQ0hFQ0tfTU9EVUxFU19TVEFUSUMgbWlnaHQgbm90IGhhcHBlbiwgeW91IHNob3VsZCBiZSBzdXJlIHRvCitkbmwgaW5jbHVkZSBhbiBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91cgorZG5sIGNvbmZpZ3VyZS5hYy4KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfTU9EVUxFU19TVEFUSUNdLAorW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAorX3NhdmVfUEtHX0NPTkZJRz0kUEtHX0NPTkZJRworUEtHX0NPTkZJRz0iJFBLR19DT05GSUcgLS1zdGF0aWMiCitQS0dfQ0hFQ0tfTU9EVUxFUygkQCkKK1BLR19DT05GSUc9JF9zYXZlX1BLR19DT05GSUdbXWRubAorXSlkbmwgUEtHX0NIRUNLX01PRFVMRVNfU1RBVElDCisKKworZG5sIFBLR19JTlNUQUxMRElSKFtESVJFQ1RPUlldKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4yNworZG5sCitkbmwgU3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxlIHBrZ2NvbmZpZ2RpciBhcyB0aGUgbG9jYXRpb24gd2hlcmUgYSBtb2R1bGUKK2RubCBzaG91bGQgaW5zdGFsbCBwa2ctY29uZmlnIC5wYyBmaWxlcy4gQnkgZGVmYXVsdCB0aGUgZGlyZWN0b3J5IGlzCitkbmwgJGxpYmRpci9wa2djb25maWcsIGJ1dCB0aGUgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZCBieSBwYXNzaW5nCitkbmwgRElSRUNUT1JZLiBUaGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhyb3VnaCB0aGUgLS13aXRoLXBrZ2NvbmZpZ2RpcgorZG5sIHBhcmFtZXRlci4KIEFDX0RFRlVOKFtQS0dfSU5TVEFMTERJUl0sCiBbbTRfcHVzaGRlZihbcGtnX2RlZmF1bHRdLCBbbTRfZGVmYXVsdChbJDFdLCBbJyR7bGliZGlyfS9wa2djb25maWcnXSldKQogbTRfcHVzaGRlZihbcGtnX2Rlc2NyaXB0aW9uXSwKQEAgLTE5OCwxNiArMjU1LDE4IEBACiBBQ19TVUJTVChbcGtnY29uZmlnZGlyXSwgWyR3aXRoX3BrZ2NvbmZpZ2Rpcl0pCiBtNF9wb3BkZWYoW3BrZ19kZWZhdWx0XSkKIG00X3BvcGRlZihbcGtnX2Rlc2NyaXB0aW9uXSkKLV0pIGRubCBQS0dfSU5TVEFMTERJUgorXSlkbmwgUEtHX0lOU1RBTExESVIKIAogCi0jIFBLR19OT0FSQ0hfSU5TVEFMTERJUihESVJFQ1RPUlkpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxlIG5vYXJjaF9wa2djb25maWdkaXIgYXMgdGhlIGxvY2F0aW9uIHdoZXJlIGEKLSMgbW9kdWxlIHNob3VsZCBpbnN0YWxsIGFyY2gtaW5kZXBlbmRlbnQgcGtnLWNvbmZpZyAucGMgZmlsZXMuIEJ5Ci0jIGRlZmF1bHQgdGhlIGRpcmVjdG9yeSBpcyAkZGF0YWRpci9wa2djb25maWcsIGJ1dCB0aGUgZGVmYXVsdCBjYW4gYmUKLSMgY2hhbmdlZCBieSBwYXNzaW5nIERJUkVDVE9SWS4gVGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRocm91Z2ggdGhlCi0jIC0td2l0aC1ub2FyY2gtcGtnY29uZmlnZGlyIHBhcmFtZXRlci4KK2RubCBQS0dfTk9BUkNIX0lOU1RBTExESVIoW0RJUkVDVE9SWV0pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4yNworZG5sCitkbmwgU3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxlIG5vYXJjaF9wa2djb25maWdkaXIgYXMgdGhlIGxvY2F0aW9uIHdoZXJlIGEKK2RubCBtb2R1bGUgc2hvdWxkIGluc3RhbGwgYXJjaC1pbmRlcGVuZGVudCBwa2ctY29uZmlnIC5wYyBmaWxlcy4gQnkKK2RubCBkZWZhdWx0IHRoZSBkaXJlY3RvcnkgaXMgJGRhdGFkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJlCitkbmwgY2hhbmdlZCBieSBwYXNzaW5nIERJUkVDVE9SWS4gVGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRocm91Z2ggdGhlCitkbmwgLS13aXRoLW5vYXJjaC1wa2djb25maWdkaXIgcGFyYW1ldGVyLgogQUNfREVGVU4oW1BLR19OT0FSQ0hfSU5TVEFMTERJUl0sCiBbbTRfcHVzaGRlZihbcGtnX2RlZmF1bHRdLCBbbTRfZGVmYXVsdChbJDFdLCBbJyR7ZGF0YWRpcn0vcGtnY29uZmlnJ10pXSkKIG00X3B1c2hkZWYoW3BrZ19kZXNjcmlwdGlvbl0sCkBAIC0yMTgsMTMgKzI3NywxNSBAQAogQUNfU1VCU1QoW25vYXJjaF9wa2djb25maWdkaXJdLCBbJHdpdGhfbm9hcmNoX3BrZ2NvbmZpZ2Rpcl0pCiBtNF9wb3BkZWYoW3BrZ19kZWZhdWx0XSkKIG00X3BvcGRlZihbcGtnX2Rlc2NyaXB0aW9uXSkKLV0pIGRubCBQS0dfTk9BUkNIX0lOU1RBTExESVIKK10pZG5sIFBLR19OT0FSQ0hfSU5TVEFMTERJUgogCiAKLSMgUEtHX0NIRUNLX1ZBUihWQVJJQUJMRSwgTU9EVUxFLCBDT05GSUctVkFSSUFCTEUsCi0jIFtBQ1RJT04tSUYtRk9VTkRdLCBbQUNUSU9OLUlGLU5PVC1GT1VORF0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgcGtnLWNvbmZpZyB2YXJpYWJsZSBmb3IgdGhlIGdpdmVuIG1vZHVsZS4KK2RubCBQS0dfQ0hFQ0tfVkFSKFZBUklBQkxFLCBNT0RVTEUsIENPTkZJRy1WQVJJQUJMRSwKK2RubCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4yOAorZG5sCitkbmwgUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgcGtnLWNvbmZpZyB2YXJpYWJsZSBmb3IgdGhlIGdpdmVuIG1vZHVsZS4KIEFDX0RFRlVOKFtQS0dfQ0hFQ0tfVkFSXSwKIFtBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKIEFDX0FSR19WQVIoWyQxXSwgW3ZhbHVlIG9mICQzIGZvciAkMiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKQEAgLTIzMyw3ICsyOTQsNyBAQAogQVNfVkFSX0NPUFkoWyQxXSwgW3BrZ19jdl9dWyQxXSkKIAogQVNfVkFSX0lGKFskMV0sIFsiIl0sIFskNV0sIFskNF0pZG5sCi1dKSMgUEtHX0NIRUNLX1ZBUgorXSlkbmwgUEtHX0NIRUNLX1ZBUgogCiAjIENvcHlyaWdodCAoQykgMjAwMi0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwpkaWZmIC0tZ2l0IGEvZGlzdC9jb25maWcuaC5nZW5lcmljIGIvZGlzdC9jb25maWcuaC5nZW5lcmljCmluZGV4IDAwYTgwOGEuLjA3YzEyYjIgMTAwNjQ0Ci0tLSBhL2Rpc3QvY29uZmlnLmguZ2VuZXJpYworKysgYi9kaXN0L2NvbmZpZy5oLmdlbmVyaWMKQEAgLTIzNSw3ICsyMzUsNyBAQAogI2RlZmluZSBQQUNLQUdFX05BTUUgIlBDUkUiCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIlBDUkUgOC4zNyIKKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIlBDUkUgOC4zOCIKIAogLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwogI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgInBjcmUiCkBAIC0yNDQsNyArMjQ0LDcgQEAKICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKIAogLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICI4LjM3IgorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjguMzgiCiAKIC8qIFRoZSB2YWx1ZSBvZiBQQVJFTlNfTkVTVF9MSU1JVCBzcGVjaWZpZXMgdGhlIG1heGltdW0gZGVwdGggb2YgbmVzdGVkCiAgICBwYXJlbnRoZXNlcyAob2YgYW55IGtpbmQpIGluIGEgcGF0dGVybi4gVGhpcyBsaW1pdHMgdGhlIGFtb3VudCBvZiBzeXN0ZW0KQEAgLTMzNiw3ICszMzYsNyBAQAogLyogI3VuZGVmIFNVUFBPUlRfVkFMR1JJTkQgKi8KIAogLyogVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZSAqLwotI2RlZmluZSBWRVJTSU9OICI4LjM3IgorI2RlZmluZSBWRVJTSU9OICI4LjM4IgogCiAvKiBEZWZpbmUgdG8gZW1wdHkgaWYgYGNvbnN0JyBkb2VzIG5vdCBjb25mb3JtIHRvIEFOU0kgQy4gKi8KIC8qICN1bmRlZiBjb25zdCAqLwpkaWZmIC0tZ2l0IGEvZGlzdC9jb25maWd1cmUgYi9kaXN0L2NvbmZpZ3VyZQppbmRleCA2ZjBlZGQyLi41Y2E5MzQyIDEwMDc1NQotLS0gYS9kaXN0L2NvbmZpZ3VyZQorKysgYi9kaXN0L2NvbmZpZ3VyZQpAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vc2gKICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBQQ1JFIDguMzcuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgUENSRSA4LjM4LgogIwogIwogIyBDb3B5cmlnaHQgKEMpIDE5OTItMTk5NiwgMTk5OC0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNTg3LDggKzU4Nyw4IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0nUENSRScKIFBBQ0tBR0VfVEFSTkFNRT0ncGNyZScKLVBBQ0tBR0VfVkVSU0lPTj0nOC4zNycKLVBBQ0tBR0VfU1RSSU5HPSdQQ1JFIDguMzcnCitQQUNLQUdFX1ZFUlNJT049JzguMzgnCitQQUNLQUdFX1NUUklORz0nUENSRSA4LjM4JwogUEFDS0FHRV9CVUdSRVBPUlQ9JycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTE0MTgsNyArMTQxOCw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgUENSRSA4LjM3IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIFBDUkUgOC4zOCB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDg4LDcgKzE0ODgsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIFBDUkUgOC4zNzoiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIFBDUkUgOC4zODoiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0xNjYyLDcgKzE2NjIsNyBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLVBDUkUgY29uZmlndXJlIDguMzcKK1BDUkUgY29uZmlndXJlIDguMzgKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OQogCiBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0yNDE5LDcgKzI0MTksNyBAQAogVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKIHJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKLUl0IHdhcyBjcmVhdGVkIGJ5IFBDUkUgJGFzX21lIDguMzcsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgUENSRSAkYXNfbWUgOC4zOCwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0zMjgzLDcgKzMyODMsNyBAQAogCiAjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCiAgUEFDS0FHRT0ncGNyZScKLSBWRVJTSU9OPSc4LjM3JworIFZFUlNJT049JzguMzgnCiAKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgpAQCAtMTc2MzQsOSArMTc2MzQsOSBAQAogIyBWZXJzaW9uaW5nCiAKIFBDUkVfTUFKT1I9IjgiCi1QQ1JFX01JTk9SPSIzNyIKK1BDUkVfTUlOT1I9IjM4IgogUENSRV9QUkVSRUxFQVNFPSIiCi1QQ1JFX0RBVEU9IjIwMTUtMDQtMjgiCitQQ1JFX0RBVEU9IjIwMTUtMTEtMjMiCiAKIGlmIHRlc3QgIiRQQ1JFX01JTk9SIiA9ICIwOCIgLW8gIiRQQ1JFX01JTk9SIiA9ICIwOSIKIHRoZW4KQEAgLTE5NjU4LDEzICsxOTY1OCwxMyBAQAogIyAoTm90ZTogVGhlIGxpYnBjcmUqX3ZlcnNpb24gYml0cyBhcmUgbTQgdmFyaWFibGVzLCBhc3NpZ25lZCBhYm92ZSkKIAogRVhUUkFfTElCUENSRV9MREZMQUdTPSIkRVhUUkFfTElCUENSRV9MREZMQUdTIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJE5PX1VOREVGSU5FRCAtdmVyc2lvbi1pbmZvIDM6NToyIgorICAgICAgICAgICAgICAgICAgICAgICAkTk9fVU5ERUZJTkVEIC12ZXJzaW9uLWluZm8gMzo2OjIiCiAKIEVYVFJBX0xJQlBDUkUxNl9MREZMQUdTPSIkRVhUUkFfTElCUENSRTE2X0xERkxBR1MgXAotICAgICAgICAgICAgICAgICAgICAgICAkTk9fVU5ERUZJTkVEIC12ZXJzaW9uLWluZm8gMjo1OjIiCisgICAgICAgICAgICAgICAgICAgICAgICROT19VTkRFRklORUQgLXZlcnNpb24taW5mbyAyOjY6MiIKIAogRVhUUkFfTElCUENSRTMyX0xERkxBR1M9IiRFWFRSQV9MSUJQQ1JFMzJfTERGTEFHUyBcCi0gICAgICAgICAgICAgICAgICAgICAgICROT19VTkRFRklORUQgLXZlcnNpb24taW5mbyAwOjU6MCIKKyAgICAgICAgICAgICAgICAgICAgICAgJE5PX1VOREVGSU5FRCAtdmVyc2lvbi1pbmZvIDA6NjowIgogCiBFWFRSQV9MSUJQQ1JFUE9TSVhfTERGTEFHUz0iJEVYVFJBX0xJQlBDUkVQT1NJWF9MREZMQUdTIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTk9fVU5ERUZJTkVEIC12ZXJzaW9uLWluZm8gMDozOjAiCkBAIC0yMDcxOSw3ICsyMDcxOSw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBQQ1JFICRhc19tZSA4LjM3LCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgUENSRSAkYXNfbWUgOC4zOCwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0yMDc4NSw3ICsyMDc4NSw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotUENSRSBjb25maWcuc3RhdHVzIDguMzcKK1BDUkUgY29uZmlnLnN0YXR1cyA4LjM4CiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCmRpZmYgLS1naXQgYS9kaXN0L2NvbmZpZ3VyZS5hYyBiL2Rpc3QvY29uZmlndXJlLmFjCmluZGV4IDM4ZDFkYmEuLjllYmU1OTggMTAwNjQ0Ci0tLSBhL2Rpc3QvY29uZmlndXJlLmFjCisrKyBiL2Rpc3QvY29uZmlndXJlLmFjCkBAIC05LDE3ICs5LDE3IEBACiBkbmwgYmUgZGVmaW5lZCBhcyAtUkMyLCBmb3IgZXhhbXBsZS4gRm9yIHJlYWwgcmVsZWFzZXMsIGl0IHNob3VsZCBiZSBlbXB0eS4KIAogbTRfZGVmaW5lKHBjcmVfbWFqb3IsIFs4XSkKLW00X2RlZmluZShwY3JlX21pbm9yLCBbMzddKQorbTRfZGVmaW5lKHBjcmVfbWlub3IsIFszOF0pCiBtNF9kZWZpbmUocGNyZV9wcmVyZWxlYXNlLCBbXSkKLW00X2RlZmluZShwY3JlX2RhdGUsIFsyMDE1LTA0LTI4XSkKK200X2RlZmluZShwY3JlX2RhdGUsIFsyMDE1LTExLTIzXSkKIAogIyBOT1RFOiBUaGUgQ01ha2VMaXN0cy50eHQgZmlsZSBzZWFyY2hlcyBmb3IgdGhlIGFib3ZlIHZhcmlhYmxlcyBpbiB0aGUgZmlyc3QKICMgNTAgbGluZXMgb2YgdGhpcyBmaWxlLiBQbGVhc2UgdXBkYXRlIHRoYXQgaWYgdGhlIHZhcmlhYmxlcyBhYm92ZSBhcmUgbW92ZWQuCiAKICMgTGlidG9vbCBzaGFyZWQgbGlicmFyeSBpbnRlcmZhY2UgdmVyc2lvbnMgKGN1cnJlbnQ6cmV2aXNpb246YWdlKQotbTRfZGVmaW5lKGxpYnBjcmVfdmVyc2lvbiwgWzM6NToyXSkKLW00X2RlZmluZShsaWJwY3JlMTZfdmVyc2lvbiwgWzI6NToyXSkKLW00X2RlZmluZShsaWJwY3JlMzJfdmVyc2lvbiwgWzA6NTowXSkKK200X2RlZmluZShsaWJwY3JlX3ZlcnNpb24sIFszOjY6Ml0pCittNF9kZWZpbmUobGlicGNyZTE2X3ZlcnNpb24sIFsyOjY6Ml0pCittNF9kZWZpbmUobGlicGNyZTMyX3ZlcnNpb24sIFswOjY6MF0pCiBtNF9kZWZpbmUobGlicGNyZXBvc2l4X3ZlcnNpb24sIFswOjM6MF0pCiBtNF9kZWZpbmUobGlicGNyZWNwcF92ZXJzaW9uLCBbMDoxOjBdKQogCmRpZmYgLS1naXQgYS9kaXN0L2RvYy9odG1sL05PTi1BVVRPVE9PTFMtQlVJTEQudHh0IGIvZGlzdC9kb2MvaHRtbC9OT04tQVVUT1RPT0xTLUJVSUxELnR4dAppbmRleCAxYzNkYTg0Li4zOTEwMDU5IDEwMDY0NAotLS0gYS9kaXN0L2RvYy9odG1sL05PTi1BVVRPVE9PTFMtQlVJTEQudHh0CisrKyBiL2Rpc3QvZG9jL2h0bWwvTk9OLUFVVE9UT09MUy1CVUlMRC50eHQKQEAgLTc2NCw5ICs3NjQsOSBAQAogCiAgIGh0dHA6Ly93d3cuemFjb25zdWx0YW50cy5uZXQKIAotVGhlcmUgaXMgYWxzbyBhIG1pcnJvciBoZXJlOgotCi0gIGh0dHA6Ly93d3cudnNvZnQtc29mdHdhcmUuY29tL2Rvd25sb2Fkcy5odG1sCitZb3UgbWF5IGRvd25sb2FkIFBDUkUgZnJvbSBXV1cuQ0JUVEFQRS5PUkcswqBmaWxlIDg4Mi4gwqBFdmVyeXRoaW5nLCBzb3VyY2UgYW5kCitleGVjdXRhYmxlLCBpcyBpbiBFQkNESUMgYW5kIG5hdGl2ZSB6L09TIGZpbGUgZm9ybWF0cyBhbmQgdGhpcyBpcyB0aGUKK3JlY29tbWVuZGVkIGRvd25sb2FkIHNpdGUuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09Ci1MYXN0IFVwZGF0ZWQ6IDEwIEZlYnJ1YXJ5IDIwMTUKK0xhc3QgVXBkYXRlZDogMjUgSnVuZSAyMDE1CmRpZmYgLS1naXQgYS9kaXN0L2RvYy9odG1sL3BjcmVwYXR0ZXJuLmh0bWwgYi9kaXN0L2RvYy9odG1sL3BjcmVwYXR0ZXJuLmh0bWwKaW5kZXggNzFmZDkwNy4uNTUwMzRhNyAxMDA2NDQKLS0tIGEvZGlzdC9kb2MvaHRtbC9wY3JlcGF0dGVybi5odG1sCisrKyBiL2Rpc3QvZG9jL2h0bWwvcGNyZXBhdHRlcm4uaHRtbApAQCAtMzI5LDcgKzMyOSw4IEBACiBpbiBwYXR0ZXJucyBpbiBhIHZpc2libGUgbWFubmVyLiBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB0aGUgYXBwZWFyYW5jZSBvZgogbm9uLXByaW50aW5nIGNoYXJhY3RlcnMsIGFwYXJ0IGZyb20gdGhlIGJpbmFyeSB6ZXJvIHRoYXQgdGVybWluYXRlcyBhIHBhdHRlcm4sCiBidXQgd2hlbiBhIHBhdHRlcm4gaXMgYmVpbmcgcHJlcGFyZWQgYnkgdGV4dCBlZGl0aW5nLCBpdCBpcyBvZnRlbiBlYXNpZXIgdG8gdXNlCi1vbmUgb2YgdGhlIGZvbGxvd2luZyBlc2NhcGUgc2VxdWVuY2VzIHRoYW4gdGhlIGJpbmFyeSBjaGFyYWN0ZXIgaXQgcmVwcmVzZW50czoKK29uZSBvZiB0aGUgZm9sbG93aW5nIGVzY2FwZSBzZXF1ZW5jZXMgdGhhbiB0aGUgYmluYXJ5IGNoYXJhY3RlciBpdCByZXByZXNlbnRzLgorSW4gYW4gQVNDSUkgb3IgVW5pY29kZSBlbnZpcm9ubWVudCwgdGhlc2UgZXNjYXBlcyBhcmUgYXMgZm9sbG93czoKIDxwcmU+CiAgIFxhICAgICAgICBhbGFybSwgdGhhdCBpcywgdGhlIEJFTCBjaGFyYWN0ZXIgKGhleCAwNykKICAgXGN4ICAgICAgICJjb250cm9sLXgiLCB3aGVyZSB4IGlzIGFueSBBU0NJSSBjaGFyYWN0ZXIKQEAgLTM1MywxOSArMzU0LDMzIEBACiBjb21waWxlLXRpbWUgZXJyb3Igb2NjdXJzLiBUaGlzIGxvY2tzIG91dCBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBhbGwgbW9kZXMuCiA8L1A+CiA8UD4KLVRoZSBcYyBmYWNpbGl0eSB3YXMgZGVzaWduZWQgZm9yIHVzZSB3aXRoIEFTQ0lJIGNoYXJhY3RlcnMsIGJ1dCB3aXRoIHRoZQotZXh0ZW5zaW9uIHRvIFVuaWNvZGUgaXQgaXMgZXZlbiBsZXNzIHVzZWZ1bCB0aGFuIGl0IG9uY2Ugd2FzLiBJdCBpcywgaG93ZXZlciwKLXJlY29nbml6ZWQgd2hlbiBQQ1JFIGlzIGNvbXBpbGVkIGluIEVCQ0RJQyBtb2RlLCB3aGVyZSBkYXRhIGl0ZW1zIGFyZSBhbHdheXMKLWJ5dGVzLiBJbiB0aGlzIG1vZGUsIGFsbCB2YWx1ZXMgYXJlIHZhbGlkIGFmdGVyIFxjLiBJZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgYQotbG93ZXIgY2FzZSBsZXR0ZXIsIGl0IGlzIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLiBUaGVuIHRoZSAweGMwIGJpdHMgb2YgdGhlCi1ieXRlIGFyZSBpbnZlcnRlZC4gVGh1cyBcY0EgYmVjb21lcyBoZXggMDEsIGFzIGluIEFTQ0lJIChBIGlzIEMxKSwgYnV0IGJlY2F1c2UKLXRoZSBFQkNESUMgbGV0dGVycyBhcmUgZGlzam9pbnQsIFxjWiBiZWNvbWVzIGhleCAyOSAoWiBpcyBFOSksIGFuZCBvdGhlcgotY2hhcmFjdGVycyBhbHNvIGdlbmVyYXRlIGRpZmZlcmVudCB2YWx1ZXMuCitXaGVuIFBDUkUgaXMgY29tcGlsZWQgaW4gRUJDRElDIG1vZGUsIFxhLCBcZSwgXGYsIFxuLCBcciwgYW5kIFx0CitnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUgRUJDRElDIGNvZGUgdmFsdWVzLiBUaGUgXGMgZXNjYXBlIGlzIHByb2Nlc3NlZAorYXMgc3BlY2lmaWVkIGZvciBQZXJsIGluIHRoZSA8Yj5wZXJsZWJjZGljPC9iPiBkb2N1bWVudC4gVGhlIG9ubHkgY2hhcmFjdGVycwordGhhdCBhcmUgYWxsb3dlZCBhZnRlciBcYyBhcmUgQS1aLCBhLXosIG9yIG9uZSBvZiBALCBbLCBcLCBdLCBeLCBfLCBvciA/LiBBbnkKK290aGVyIGNoYXJhY3RlciBwcm92b2tlcyBhIGNvbXBpbGUtdGltZSBlcnJvci4gVGhlIHNlcXVlbmNlIFxAIGVuY29kZXMKK2NoYXJhY3RlciBjb2RlIDA7IHRoZSBsZXR0ZXJzIChpbiBlaXRoZXIgY2FzZSkgZW5jb2RlIGNoYXJhY3RlcnMgMS0yNiAoaGV4IDAxCit0byBoZXggMUEpOyBbLCBcLCBdLCBeLCBhbmQgXyBlbmNvZGUgY2hhcmFjdGVycyAyNy0zMSAoaGV4IDFCIHRvIGhleCAxRiksIGFuZAorXD8gYmVjb21lcyBlaXRoZXIgMjU1IChoZXggRkYpIG9yIDk1IChoZXggNUYpLgorPC9QPgorPFA+CitUaHVzLCBhcGFydCBmcm9tIFw/LCB0aGVzZSBlc2NhcGVzIGdlbmVyYXRlIHRoZSBzYW1lIGNoYXJhY3RlciBjb2RlIHZhbHVlcyBhcwordGhleSBkbyBpbiBhbiBBU0NJSSBlbnZpcm9ubWVudCwgdGhvdWdoIHRoZSBtZWFuaW5ncyBvZiB0aGUgdmFsdWVzIG1vc3RseQorZGlmZmVyLiBGb3IgZXhhbXBsZSwgXEcgYWx3YXlzIGdlbmVyYXRlcyBjb2RlIHZhbHVlIDcsIHdoaWNoIGlzIEJFTCBpbiBBU0NJSQorYnV0IERFTCBpbiBFQkNESUMuCis8L1A+Cis8UD4KK1RoZSBzZXF1ZW5jZSBcPyBnZW5lcmF0ZXMgREVMICgxMjcsIGhleCA3RikgaW4gYW4gQVNDSUkgZW52aXJvbm1lbnQsIGJ1dAorYmVjYXVzZSAxMjcgaXMgbm90IGEgY29udHJvbCBjaGFyYWN0ZXIgaW4gRUJDRElDLCBQZXJsIG1ha2VzIGl0IGdlbmVyYXRlIHRoZQorQVBDIGNoYXJhY3Rlci4gVW5mb3J0dW5hdGVseSwgdGhlcmUgYXJlIHNldmVyYWwgdmFyaWFudHMgb2YgRUJDRElDLiBJbiBtb3N0IG9mCit0aGVtIHRoZSBBUEMgY2hhcmFjdGVyIGhhcyB0aGUgdmFsdWUgMjU1IChoZXggRkYpLCBidXQgaW4gdGhlIG9uZSBQZXJsIGNhbGxzCitQT1NJWC1CQyBpdHMgdmFsdWUgaXMgOTUgKGhleCA1RikuIElmIGNlcnRhaW4gb3RoZXIgY2hhcmFjdGVycyBoYXZlIFBPU0lYLUJDCit2YWx1ZXMsIFBDUkUgbWFrZXMgXD8gZ2VuZXJhdGUgOTU7IG90aGVyd2lzZSBpdCBnZW5lcmF0ZXMgMjU1LgogPC9QPgogPFA+CiBBZnRlciBcMCB1cCB0byB0d28gZnVydGhlciBvY3RhbCBkaWdpdHMgYXJlIHJlYWQuIElmIHRoZXJlIGFyZSBmZXdlciB0aGFuIHR3bwotZGlnaXRzLCBqdXN0IHRob3NlIHRoYXQgYXJlIHByZXNlbnQgYXJlIHVzZWQuIFRodXMgdGhlIHNlcXVlbmNlIFwwXHhcMDcKLXNwZWNpZmllcyB0d28gYmluYXJ5IHplcm9zIGZvbGxvd2VkIGJ5IGEgQkVMIGNoYXJhY3RlciAoY29kZSB2YWx1ZSA3KS4gTWFrZQorZGlnaXRzLCBqdXN0IHRob3NlIHRoYXQgYXJlIHByZXNlbnQgYXJlIHVzZWQuIFRodXMgdGhlIHNlcXVlbmNlIFwwXHhcMDE1CitzcGVjaWZpZXMgdHdvIGJpbmFyeSB6ZXJvcyBmb2xsb3dlZCBieSBhIENSIGNoYXJhY3RlciAoY29kZSB2YWx1ZSAxMykuIE1ha2UKIHN1cmUgeW91IHN1cHBseSB0d28gZGlnaXRzIGFmdGVyIHRoZSBpbml0aWFsIHplcm8gaWYgdGhlIHBhdHRlcm4gY2hhcmFjdGVyIHRoYXQKIGZvbGxvd3MgaXMgaXRzZWxmIGFuIG9jdGFsIGRpZ2l0LgogPC9QPgpAQCAtMzI0OSw5ICszMjY0LDkgQEAKIDwvUD4KIDxicj48YSBuYW1lPSJTRUMzMCIgaHJlZj0iI1RPQzEiPlJFVklTSU9OPC9hPjxicj4KIDxQPgotTGFzdCB1cGRhdGVkOiAwOCBKYW51YXJ5IDIwMTQKK0xhc3QgdXBkYXRlZDogMTQgSnVuZSAyMDE1CiA8YnI+Ci1Db3B5cmlnaHQgJmNvcHk7IDE5OTctMjAxNCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZS4KK0NvcHlyaWdodCAmY29weTsgMTk5Ny0yMDE1IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLgogPGJyPgogPHA+CiBSZXR1cm4gdG8gdGhlIDxhIGhyZWY9ImluZGV4Lmh0bWwiPlBDUkUgaW5kZXggcGFnZTwvYT4uCmRpZmYgLS1naXQgYS9kaXN0L2RvYy9wY3JlLnR4dCBiL2Rpc3QvZG9jL3BjcmUudHh0CmluZGV4IGJjOTJlNGYuLjc2YTQ3YzcgMTAwNjQ0Ci0tLSBhL2Rpc3QvZG9jL3BjcmUudHh0CisrKyBiL2Rpc3QvZG9jL3BjcmUudHh0CkBAIC01MDAwLDcgKzUwMDAsOCBAQAogICAgICAgIGFwcGVhcmFuY2UgIG9mIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzLCBhcGFydCBmcm9tIHRoZSBiaW5hcnkgemVybyB0aGF0CiAgICAgICAgdGVybWluYXRlcyBhIHBhdHRlcm4sIGJ1dCB3aGVuIGEgcGF0dGVybiAgaXMgIGJlaW5nICBwcmVwYXJlZCAgYnkgIHRleHQKICAgICAgICBlZGl0aW5nLCAgaXQgIGlzICBvZnRlbiAgZWFzaWVyICB0byAgdXNlICBvbmUgIG9mICB0aGUgZm9sbG93aW5nIGVzY2FwZQotICAgICAgIHNlcXVlbmNlcyB0aGFuIHRoZSBiaW5hcnkgY2hhcmFjdGVyIGl0IHJlcHJlc2VudHM6CisgICAgICAgc2VxdWVuY2VzIHRoYW4gdGhlIGJpbmFyeSBjaGFyYWN0ZXIgaXQgcmVwcmVzZW50cy4gIEluIGFuIEFTQ0lJIG9yIFVuaS0KKyAgICAgICBjb2RlIGVudmlyb25tZW50LCB0aGVzZSBlc2NhcGVzIGFyZSBhcyBmb2xsb3dzOgogCiAgICAgICAgICBcYSAgICAgICAgYWxhcm0sIHRoYXQgaXMsIHRoZSBCRUwgY2hhcmFjdGVyIChoZXggMDcpCiAgICAgICAgICBcY3ggICAgICAgImNvbnRyb2wteCIsIHdoZXJlIHggaXMgYW55IEFTQ0lJIGNoYXJhY3RlcgpAQCAtNTAxNiw1NSArNTAxNyw2NyBAQAogICAgICAgICAgXHh7aGhoLi59IGNoYXJhY3RlciB3aXRoIGhleCBjb2RlIGhoaC4uIChub24tSmF2YVNjcmlwdCBtb2RlKQogICAgICAgICAgXHVoaGhoICAgIGNoYXJhY3RlciB3aXRoIGhleCBjb2RlIGhoaGggKEphdmFTY3JpcHQgbW9kZSBvbmx5KQogCi0gICAgICAgVGhlIHByZWNpc2UgZWZmZWN0IG9mIFxjeCBvbiBBU0NJSSBjaGFyYWN0ZXJzIGlzIGFzIGZvbGxvd3M6IGlmIHggaXMgIGEKLSAgICAgICBsb3dlciAgY2FzZSAgbGV0dGVyLCAgaXQgIGlzIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLiBUaGVuIGJpdCA2IG9mIHRoZQorICAgICAgIFRoZSAgcHJlY2lzZSBlZmZlY3Qgb2YgXGN4IG9uIEFTQ0lJIGNoYXJhY3RlcnMgaXMgYXMgZm9sbG93czogaWYgeCBpcyBhCisgICAgICAgbG93ZXIgY2FzZSBsZXR0ZXIsIGl0IGlzIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLiBUaGVuICBiaXQgIDYgIG9mICB0aGUKICAgICAgICBjaGFyYWN0ZXIgKGhleCA0MCkgaXMgaW52ZXJ0ZWQuIFRodXMgXGNBIHRvIFxjWiBiZWNvbWUgaGV4IDAxIHRvIGhleCAxQQotICAgICAgIChBICBpcyAgNDEsIFogaXMgNUEpLCBidXQgXGN7IGJlY29tZXMgaGV4IDNCICh7IGlzIDdCKSwgYW5kIFxjOyBiZWNvbWVzCi0gICAgICAgaGV4IDdCICg7IGlzIDNCKS4gSWYgdGhlIGRhdGEgaXRlbSAoYnl0ZSBvciAxNi1iaXQgdmFsdWUpIGZvbGxvd2luZyAgXGMKLSAgICAgICBoYXMgIGEgIHZhbHVlIGdyZWF0ZXIgdGhhbiAxMjcsIGEgY29tcGlsZS10aW1lIGVycm9yIG9jY3Vycy4gVGhpcyBsb2NrcworICAgICAgIChBIGlzIDQxLCBaIGlzIDVBKSwgYnV0IFxjeyBiZWNvbWVzIGhleCAzQiAoeyBpcyA3QiksIGFuZCAgXGM7ICBiZWNvbWVzCisgICAgICAgaGV4ICA3QiAoOyBpcyAzQikuIElmIHRoZSBkYXRhIGl0ZW0gKGJ5dGUgb3IgMTYtYml0IHZhbHVlKSBmb2xsb3dpbmcgXGMKKyAgICAgICBoYXMgYSB2YWx1ZSBncmVhdGVyIHRoYW4gMTI3LCBhIGNvbXBpbGUtdGltZSBlcnJvciBvY2N1cnMuICBUaGlzICBsb2NrcwogICAgICAgIG91dCBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBhbGwgbW9kZXMuCiAKLSAgICAgICBUaGUgXGMgZmFjaWxpdHkgd2FzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBBU0NJSSAgY2hhcmFjdGVycywgIGJ1dCAgd2l0aAotICAgICAgIHRoZSAgZXh0ZW5zaW9uICB0byAgVW5pY29kZSBpdCBpcyBldmVuIGxlc3MgdXNlZnVsIHRoYW4gaXQgb25jZSB3YXMuIEl0Ci0gICAgICAgaXMsIGhvd2V2ZXIsIHJlY29nbml6ZWQgd2hlbiBQQ1JFIGlzIGNvbXBpbGVkICBpbiAgRUJDRElDICBtb2RlLCAgd2hlcmUKLSAgICAgICBkYXRhICBpdGVtcyAgYXJlIGFsd2F5cyBieXRlcy4gSW4gdGhpcyBtb2RlLCBhbGwgdmFsdWVzIGFyZSB2YWxpZCBhZnRlcgotICAgICAgIFxjLiBJZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgYSBsb3dlciBjYXNlIGxldHRlciwgaXQgIGlzICBjb252ZXJ0ZWQgIHRvCi0gICAgICAgdXBwZXIgIGNhc2UuICBUaGVuICB0aGUgIDB4YzAgIGJpdHMgIG9mIHRoZSBieXRlIGFyZSBpbnZlcnRlZC4gVGh1cyBcY0EKLSAgICAgICBiZWNvbWVzIGhleCAwMSwgYXMgaW4gQVNDSUkgKEEgaXMgQzEpLCBidXQgYmVjYXVzZSB0aGUgIEVCQ0RJQyAgbGV0dGVycwotICAgICAgIGFyZSAgZGlzam9pbnQsICBcY1ogYmVjb21lcyBoZXggMjkgKFogaXMgRTkpLCBhbmQgb3RoZXIgY2hhcmFjdGVycyBhbHNvCi0gICAgICAgZ2VuZXJhdGUgZGlmZmVyZW50IHZhbHVlcy4KKyAgICAgICBXaGVuIFBDUkUgaXMgY29tcGlsZWQgaW4gRUJDRElDIG1vZGUsIFxhLCBcZSwgXGYsIFxuLCBcciwgYW5kIFx0IGdlbmVyLQorICAgICAgIGF0ZSB0aGUgYXBwcm9wcmlhdGUgRUJDRElDIGNvZGUgdmFsdWVzLiBUaGUgXGMgZXNjYXBlIGlzICBwcm9jZXNzZWQgIGFzCisgICAgICAgc3BlY2lmaWVkIGZvciBQZXJsIGluIHRoZSBwZXJsZWJjZGljIGRvY3VtZW50LiBUaGUgb25seSBjaGFyYWN0ZXJzIHRoYXQKKyAgICAgICBhcmUgYWxsb3dlZCBhZnRlciBcYyBhcmUgQS1aLCBhLXosIG9yIG9uZSBvZiBALCBbLCBcLCBdLCBeLCAgXywgIG9yICA/LgorICAgICAgIEFueSAgb3RoZXIgIGNoYXJhY3RlciAgcHJvdm9rZXMgIGEgIGNvbXBpbGUtdGltZSBlcnJvci4gVGhlIHNlcXVlbmNlIFxACisgICAgICAgZW5jb2RlcyBjaGFyYWN0ZXIgY29kZSAwOyB0aGUgbGV0dGVycyAoaW4gZWl0aGVyIGNhc2UpICBlbmNvZGUgIGNoYXJhYy0KKyAgICAgICB0ZXJzIDEtMjYgKGhleCAwMSB0byBoZXggMUEpOyBbLCBcLCBdLCBeLCBhbmQgXyBlbmNvZGUgY2hhcmFjdGVycyAyNy0zMQorICAgICAgIChoZXggMUIgdG8gaGV4IDFGKSwgYW5kIFw/IGJlY29tZXMgZWl0aGVyIDI1NSAoaGV4IEZGKSBvciA5NSAoaGV4IDVGKS4KIAotICAgICAgIEFmdGVyIFwwIHVwIHRvIHR3byBmdXJ0aGVyIG9jdGFsIGRpZ2l0cyBhcmUgcmVhZC4gSWYgIHRoZXJlICBhcmUgIGZld2VyCi0gICAgICAgdGhhbiAgdHdvICBkaWdpdHMsICBqdXN0ICB0aG9zZSAgdGhhdCAgYXJlICBwcmVzZW50ICBhcmUgdXNlZC4gVGh1cyB0aGUKLSAgICAgICBzZXF1ZW5jZSBcMFx4XDA3IHNwZWNpZmllcyB0d28gYmluYXJ5IHplcm9zIGZvbGxvd2VkIGJ5IGEgQkVMIGNoYXJhY3RlcgotICAgICAgIChjb2RlICB2YWx1ZSA3KS4gTWFrZSBzdXJlIHlvdSBzdXBwbHkgdHdvIGRpZ2l0cyBhZnRlciB0aGUgaW5pdGlhbCB6ZXJvCisgICAgICAgVGh1cywgYXBhcnQgZnJvbSBcPywgdGhlc2UgZXNjYXBlcyBnZW5lcmF0ZSAgdGhlICBzYW1lICBjaGFyYWN0ZXIgIGNvZGUKKyAgICAgICB2YWx1ZXMgIGFzICB0aGV5IGRvIGluIGFuIEFTQ0lJIGVudmlyb25tZW50LCB0aG91Z2ggdGhlIG1lYW5pbmdzIG9mIHRoZQorICAgICAgIHZhbHVlcyBtb3N0bHkgZGlmZmVyLiBGb3IgZXhhbXBsZSwgXEcgYWx3YXlzIGdlbmVyYXRlcyAgY29kZSAgdmFsdWUgIDcsCisgICAgICAgd2hpY2ggaXMgQkVMIGluIEFTQ0lJIGJ1dCBERUwgaW4gRUJDRElDLgorCisgICAgICAgVGhlICBzZXF1ZW5jZSAgXD8gIGdlbmVyYXRlcyBERUwgKDEyNywgaGV4IDdGKSBpbiBhbiBBU0NJSSBlbnZpcm9ubWVudCwKKyAgICAgICBidXQgYmVjYXVzZSAxMjcgaXMgbm90IGEgY29udHJvbCBjaGFyYWN0ZXIgaW4gIEVCQ0RJQywgIFBlcmwgIG1ha2VzICBpdAorICAgICAgIGdlbmVyYXRlICB0aGUgIEFQQyBjaGFyYWN0ZXIuIFVuZm9ydHVuYXRlbHksIHRoZXJlIGFyZSBzZXZlcmFsIHZhcmlhbnRzCisgICAgICAgb2YgRUJDRElDLiBJbiBtb3N0IG9mIHRoZW0gdGhlIEFQQyBjaGFyYWN0ZXIgaGFzICB0aGUgIHZhbHVlICAyNTUgIChoZXgKKyAgICAgICBGRiksICBidXQgIGluICB0aGUgb25lIFBlcmwgY2FsbHMgUE9TSVgtQkMgaXRzIHZhbHVlIGlzIDk1IChoZXggNUYpLiBJZgorICAgICAgIGNlcnRhaW4gb3RoZXIgY2hhcmFjdGVycyBoYXZlIFBPU0lYLUJDIHZhbHVlcywgUENSRSBtYWtlcyAgXD8gIGdlbmVyYXRlCisgICAgICAgOTU7IG90aGVyd2lzZSBpdCBnZW5lcmF0ZXMgMjU1LgorCisgICAgICAgQWZ0ZXIgIFwwICB1cCAgdG8gdHdvIGZ1cnRoZXIgb2N0YWwgZGlnaXRzIGFyZSByZWFkLiBJZiB0aGVyZSBhcmUgZmV3ZXIKKyAgICAgICB0aGFuIHR3byBkaWdpdHMsIGp1c3QgIHRob3NlICB0aGF0ICBhcmUgIHByZXNlbnQgIGFyZSAgdXNlZC4gIFRodXMgIHRoZQorICAgICAgIHNlcXVlbmNlIFwwXHhcMDE1IHNwZWNpZmllcyB0d28gYmluYXJ5IHplcm9zIGZvbGxvd2VkIGJ5IGEgQ1IgY2hhcmFjdGVyCisgICAgICAgKGNvZGUgdmFsdWUgMTMpLiBNYWtlIHN1cmUgeW91IHN1cHBseSB0d28gZGlnaXRzIGFmdGVyIHRoZSBpbml0aWFsIHplcm8KICAgICAgICBpZiB0aGUgcGF0dGVybiBjaGFyYWN0ZXIgdGhhdCBmb2xsb3dzIGlzIGl0c2VsZiBhbiBvY3RhbCBkaWdpdC4KIAotICAgICAgIFRoZSBlc2NhcGUgXG8gbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIG9mIG9jdGFsIGRpZ2l0cywgIGVuY2xvc2VkCi0gICAgICAgaW4gIGJyYWNlcy4gIEFuICBlcnJvciBvY2N1cnMgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UuIFRoaXMgZXNjYXBlIGlzIGEKLSAgICAgICByZWNlbnQgYWRkaXRpb24gdG8gUGVybDsgaXQgcHJvdmlkZXMgd2F5IG9mIHNwZWNpZnlpbmcgIGNoYXJhY3RlciAgY29kZQotICAgICAgIHBvaW50cyAgYXMgIG9jdGFsICBudW1iZXJzICBncmVhdGVyIHRoYW4gMDc3NywgYW5kIGl0IGFsc28gYWxsb3dzIG9jdGFsCisgICAgICAgVGhlICBlc2NhcGUgXG8gbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIG9mIG9jdGFsIGRpZ2l0cywgZW5jbG9zZWQKKyAgICAgICBpbiBicmFjZXMuIEFuIGVycm9yIG9jY3VycyBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZS4gVGhpcyAgZXNjYXBlICBpcyAgYQorICAgICAgIHJlY2VudCAgYWRkaXRpb24gIHRvIFBlcmw7IGl0IHByb3ZpZGVzIHdheSBvZiBzcGVjaWZ5aW5nIGNoYXJhY3RlciBjb2RlCisgICAgICAgcG9pbnRzIGFzIG9jdGFsIG51bWJlcnMgZ3JlYXRlciB0aGFuIDA3NzcsIGFuZCAgaXQgIGFsc28gIGFsbG93cyAgb2N0YWwKICAgICAgICBudW1iZXJzIGFuZCBiYWNrIHJlZmVyZW5jZXMgdG8gYmUgdW5hbWJpZ3VvdXNseSBzcGVjaWZpZWQuCiAKICAgICAgICBGb3IgZ3JlYXRlciBjbGFyaXR5IGFuZCB1bmFtYmlndWl0eSwgaXQgaXMgYmVzdCB0byBhdm9pZCBmb2xsb3dpbmcgXCBieQogICAgICAgIGEgZGlnaXQgZ3JlYXRlciB0aGFuIHplcm8uIEluc3RlYWQsIHVzZSBcb3t9IG9yIFx4e30gdG8gc3BlY2lmeSBjaGFyYWMtCi0gICAgICAgdGVyIG51bWJlcnMsIGFuZCBcZ3t9IHRvIHNwZWNpZnkgYmFjayByZWZlcmVuY2VzLiBUaGUgIGZvbGxvd2luZyAgcGFyYS0KKyAgICAgICB0ZXIgIG51bWJlcnMsICBhbmQgXGd7fSB0byBzcGVjaWZ5IGJhY2sgcmVmZXJlbmNlcy4gVGhlIGZvbGxvd2luZyBwYXJhLQogICAgICAgIGdyYXBocyBkZXNjcmliZSB0aGUgb2xkLCBhbWJpZ3VvdXMgc3ludGF4LgogCiAgICAgICAgVGhlIGhhbmRsaW5nIG9mIGEgYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgZGlnaXQgb3RoZXIgdGhhbiAwIGlzIGNvbXBsaS0KLSAgICAgICBjYXRlZCwgYW5kIFBlcmwgaGFzIGNoYW5nZWQgaW4gcmVjZW50IHJlbGVhc2VzLCBjYXVzaW5nICBQQ1JFICBhbHNvICB0bworICAgICAgIGNhdGVkLCAgYW5kICBQZXJsICBoYXMgY2hhbmdlZCBpbiByZWNlbnQgcmVsZWFzZXMsIGNhdXNpbmcgUENSRSBhbHNvIHRvCiAgICAgICAgY2hhbmdlLiBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCBQQ1JFIHJlYWRzIHRoZSBkaWdpdCBhbmQgYW55IGZvbGxvdy0KLSAgICAgICBpbmcgZGlnaXRzIGFzIGEgZGVjaW1hbCBudW1iZXIuIElmIHRoZSBudW1iZXIgaXMgbGVzcyAgdGhhbiAgOCwgIG9yICBpZgotICAgICAgIHRoZXJlICBoYXZlIGJlZW4gYXQgbGVhc3QgdGhhdCBtYW55IHByZXZpb3VzIGNhcHR1cmluZyBsZWZ0IHBhcmVudGhlc2VzCi0gICAgICAgaW4gdGhlIGV4cHJlc3Npb24sIHRoZSBlbnRpcmUgc2VxdWVuY2UgaXMgdGFrZW4gYXMgYSBiYWNrIHJlZmVyZW5jZS4gIEEKLSAgICAgICBkZXNjcmlwdGlvbiAgb2YgaG93IHRoaXMgd29ya3MgaXMgZ2l2ZW4gbGF0ZXIsIGZvbGxvd2luZyB0aGUgZGlzY3Vzc2lvbgorICAgICAgIGluZyAgZGlnaXRzICBhcyAgYSAgZGVjaW1hbCBudW1iZXIuIElmIHRoZSBudW1iZXIgaXMgbGVzcyB0aGFuIDgsIG9yIGlmCisgICAgICAgdGhlcmUgaGF2ZSBiZWVuIGF0IGxlYXN0IHRoYXQgbWFueSBwcmV2aW91cyBjYXB0dXJpbmcgbGVmdCAgcGFyZW50aGVzZXMKKyAgICAgICBpbiAgdGhlIGV4cHJlc3Npb24sIHRoZSBlbnRpcmUgc2VxdWVuY2UgaXMgdGFrZW4gYXMgYSBiYWNrIHJlZmVyZW5jZS4gQQorICAgICAgIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGlzIHdvcmtzIGlzIGdpdmVuIGxhdGVyLCBmb2xsb3dpbmcgdGhlICBkaXNjdXNzaW9uCiAgICAgICAgb2YgcGFyZW50aGVzaXplZCBzdWJwYXR0ZXJucy4KIAotICAgICAgIEluc2lkZSBhIGNoYXJhY3RlciBjbGFzcywgb3IgaWYgIHRoZSAgZGVjaW1hbCAgbnVtYmVyICBmb2xsb3dpbmcgIFwgIGlzCisgICAgICAgSW5zaWRlICBhICBjaGFyYWN0ZXIgIGNsYXNzLCAgb3IgIGlmICB0aGUgZGVjaW1hbCBudW1iZXIgZm9sbG93aW5nIFwgaXMKICAgICAgICBncmVhdGVyIHRoYW4gNyBhbmQgdGhlcmUgaGF2ZSBub3QgYmVlbiB0aGF0IG1hbnkgY2FwdHVyaW5nIHN1YnBhdHRlcm5zLAotICAgICAgIFBDUkUgaGFuZGxlcyBcOCBhbmQgXDkgYXMgdGhlIGxpdGVyYWwgY2hhcmFjdGVycyAiOCIgYW5kICI5IiwgYW5kICBvdGgtCisgICAgICAgUENSRSAgaGFuZGxlcyBcOCBhbmQgXDkgYXMgdGhlIGxpdGVyYWwgY2hhcmFjdGVycyAiOCIgYW5kICI5IiwgYW5kIG90aC0KICAgICAgICBlcndpc2UgcmUtcmVhZHMgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGZvbGxvd2luZyB0aGUgYmFja3NsYXNoLCB1c2luZwotICAgICAgIHRoZW0gdG8gZ2VuZXJhdGUgYSBkYXRhIGNoYXJhY3Rlci4gIEFueSAgc3Vic2VxdWVudCAgZGlnaXRzICBzdGFuZCAgZm9yCisgICAgICAgdGhlbSAgdG8gIGdlbmVyYXRlICBhICBkYXRhIGNoYXJhY3Rlci4gIEFueSBzdWJzZXF1ZW50IGRpZ2l0cyBzdGFuZCBmb3IKICAgICAgICB0aGVtc2VsdmVzLiBGb3IgZXhhbXBsZToKIAogICAgICAgICAgXDA0MCAgIGlzIGFub3RoZXIgd2F5IG9mIHdyaXRpbmcgYW4gQVNDSUkgc3BhY2UKQEAgLTUwODIsMzEgKzUwOTUsMzEgQEAKICAgICAgICAgIFw4MSAgICBpcyBlaXRoZXIgYSBiYWNrIHJlZmVyZW5jZSwgb3IgdGhlIHR3bwogICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgIjgiIGFuZCAiMSIKIAotICAgICAgIE5vdGUgIHRoYXQgb2N0YWwgdmFsdWVzIG9mIDEwMCBvciBncmVhdGVyIHRoYXQgYXJlIHNwZWNpZmllZCB1c2luZyB0aGlzCi0gICAgICAgc3ludGF4IG11c3Qgbm90IGJlIGludHJvZHVjZWQgYnkgYSBsZWFkaW5nIHplcm8sIGJlY2F1c2Ugbm8gIG1vcmUgIHRoYW4KKyAgICAgICBOb3RlIHRoYXQgb2N0YWwgdmFsdWVzIG9mIDEwMCBvciBncmVhdGVyIHRoYXQgYXJlIHNwZWNpZmllZCB1c2luZyAgdGhpcworICAgICAgIHN5bnRheCAgbXVzdCAgbm90IGJlIGludHJvZHVjZWQgYnkgYSBsZWFkaW5nIHplcm8sIGJlY2F1c2Ugbm8gbW9yZSB0aGFuCiAgICAgICAgdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBldmVyIHJlYWQuCiAKLSAgICAgICBCeSAgZGVmYXVsdCwgYWZ0ZXIgXHggdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgeywgZnJvbSB6ZXJvIHRvIHR3byBoZXhhLQotICAgICAgIGRlY2ltYWwgZGlnaXRzIGFyZSByZWFkIChsZXR0ZXJzIGNhbiBiZSBpbiB1cHBlciBvciAgbG93ZXIgIGNhc2UpLiAgQW55CisgICAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgXHggdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgeywgZnJvbSB6ZXJvIHRvIHR3byAgaGV4YS0KKyAgICAgICBkZWNpbWFsICBkaWdpdHMgIGFyZSAgcmVhZCAobGV0dGVycyBjYW4gYmUgaW4gdXBwZXIgb3IgbG93ZXIgY2FzZSkuIEFueQogICAgICAgIG51bWJlciBvZiBoZXhhZGVjaW1hbCBkaWdpdHMgbWF5IGFwcGVhciBiZXR3ZWVuIFx4eyBhbmQgfS4gSWYgYSBjaGFyYWMtCi0gICAgICAgdGVyIG90aGVyIHRoYW4gYSBoZXhhZGVjaW1hbCBkaWdpdCBhcHBlYXJzIGJldHdlZW4gXHh7ICBhbmQgIH0sICBvciAgaWYKKyAgICAgICB0ZXIgIG90aGVyICB0aGFuICBhICBoZXhhZGVjaW1hbCBkaWdpdCBhcHBlYXJzIGJldHdlZW4gXHh7IGFuZCB9LCBvciBpZgogICAgICAgIHRoZXJlIGlzIG5vIHRlcm1pbmF0aW5nIH0sIGFuIGVycm9yIG9jY3Vycy4KIAotICAgICAgIElmICB0aGUgIFBDUkVfSkFWQVNDUklQVF9DT01QQVQgb3B0aW9uIGlzIHNldCwgdGhlIGludGVycHJldGF0aW9uIG9mIFx4Ci0gICAgICAgaXMgYXMganVzdCBkZXNjcmliZWQgb25seSB3aGVuIGl0IGlzIGZvbGxvd2VkIGJ5IHR3byAgaGV4YWRlY2ltYWwgIGRpZy0KLSAgICAgICBpdHMuICAgT3RoZXJ3aXNlLCAgaXQgIG1hdGNoZXMgIGEgIGxpdGVyYWwgIngiIGNoYXJhY3Rlci4gSW4gSmF2YVNjcmlwdAorICAgICAgIElmIHRoZSBQQ1JFX0pBVkFTQ1JJUFRfQ09NUEFUIG9wdGlvbiBpcyBzZXQsIHRoZSBpbnRlcnByZXRhdGlvbiAgb2YgIFx4CisgICAgICAgaXMgIGFzICBqdXN0IGRlc2NyaWJlZCBvbmx5IHdoZW4gaXQgaXMgZm9sbG93ZWQgYnkgdHdvIGhleGFkZWNpbWFsIGRpZy0KKyAgICAgICBpdHMuICBPdGhlcndpc2UsIGl0IG1hdGNoZXMgYSAgbGl0ZXJhbCAgIngiICBjaGFyYWN0ZXIuICBJbiAgSmF2YVNjcmlwdAogICAgICAgIG1vZGUsIHN1cHBvcnQgZm9yIGNvZGUgcG9pbnRzIGdyZWF0ZXIgdGhhbiAyNTYgaXMgcHJvdmlkZWQgYnkgXHUsIHdoaWNoCi0gICAgICAgbXVzdCAgYmUgIGZvbGxvd2VkICBieSAgZm91ciBoZXhhZGVjaW1hbCBkaWdpdHM7IG90aGVyd2lzZSBpdCBtYXRjaGVzIGEKKyAgICAgICBtdXN0IGJlIGZvbGxvd2VkIGJ5IGZvdXIgaGV4YWRlY2ltYWwgZGlnaXRzOyAgb3RoZXJ3aXNlICBpdCAgbWF0Y2hlcyAgYQogICAgICAgIGxpdGVyYWwgInUiIGNoYXJhY3Rlci4KIAogICAgICAgIENoYXJhY3RlcnMgd2hvc2UgdmFsdWUgaXMgbGVzcyB0aGFuIDI1NiBjYW4gYmUgZGVmaW5lZCBieSBlaXRoZXIgb2YgdGhlCi0gICAgICAgdHdvICBzeW50YXhlcyBmb3IgXHggKG9yIGJ5IFx1IGluIEphdmFTY3JpcHQgbW9kZSkuIFRoZXJlIGlzIG5vIGRpZmZlci0KKyAgICAgICB0d28gc3ludGF4ZXMgZm9yIFx4IChvciBieSBcdSBpbiBKYXZhU2NyaXB0IG1vZGUpLiBUaGVyZSBpcyBubyAgZGlmZmVyLQogICAgICAgIGVuY2UgaW4gdGhlIHdheSB0aGV5IGFyZSBoYW5kbGVkLiBGb3IgZXhhbXBsZSwgXHhkYyBpcyBleGFjdGx5IHRoZSBzYW1lCiAgICAgICAgYXMgXHh7ZGN9IChvciBcdTAwZGMgaW4gSmF2YVNjcmlwdCBtb2RlKS4KIAogICAgQ29uc3RyYWludHMgb24gY2hhcmFjdGVyIHZhbHVlcwogCi0gICAgICAgQ2hhcmFjdGVycyAgdGhhdCAgYXJlICBzcGVjaWZpZWQgdXNpbmcgb2N0YWwgb3IgaGV4YWRlY2ltYWwgbnVtYmVycyBhcmUKKyAgICAgICBDaGFyYWN0ZXJzIHRoYXQgYXJlIHNwZWNpZmllZCB1c2luZyBvY3RhbCBvciAgaGV4YWRlY2ltYWwgIG51bWJlcnMgIGFyZQogICAgICAgIGxpbWl0ZWQgdG8gY2VydGFpbiB2YWx1ZXMsIGFzIGZvbGxvd3M6CiAKICAgICAgICAgIDgtYml0IG5vbi1VVEYgbW9kZSAgICBsZXNzIHRoYW4gMHgxMDAKQEAgLTUxMTYsNDQgKzUxMjksNDQgQEAKICAgICAgICAgIDMyLWJpdCBub24tVVRGIG1vZGUgICBsZXNzIHRoYW4gMHgxMDAwMDAwMDAKICAgICAgICAgIDMyLWJpdCBVVEYtMzIgbW9kZSAgICBsZXNzIHRoYW4gMHgxMGZmZmYgYW5kIGEgdmFsaWQgY29kZXBvaW50CiAKLSAgICAgICBJbnZhbGlkIFVuaWNvZGUgY29kZXBvaW50cyBhcmUgdGhlIHJhbmdlICAweGQ4MDAgIHRvICAweGRmZmYgICh0aGUgIHNvLQorICAgICAgIEludmFsaWQgIFVuaWNvZGUgIGNvZGVwb2ludHMgIGFyZSAgdGhlICByYW5nZSAweGQ4MDAgdG8gMHhkZmZmICh0aGUgc28tCiAgICAgICAgY2FsbGVkICJzdXJyb2dhdGUiIGNvZGVwb2ludHMpLCBhbmQgMHhmZmVmLgogCiAgICBFc2NhcGUgc2VxdWVuY2VzIGluIGNoYXJhY3RlciBjbGFzc2VzCiAKICAgICAgICBBbGwgdGhlIHNlcXVlbmNlcyB0aGF0IGRlZmluZSBhIHNpbmdsZSBjaGFyYWN0ZXIgdmFsdWUgY2FuIGJlIHVzZWQgYm90aAotICAgICAgIGluc2lkZSBhbmQgb3V0c2lkZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gSW4gYWRkaXRpb24sIGluc2lkZSAgYSAgY2hhcmFjdGVyCisgICAgICAgaW5zaWRlICBhbmQgIG91dHNpZGUgY2hhcmFjdGVyIGNsYXNzZXMuIEluIGFkZGl0aW9uLCBpbnNpZGUgYSBjaGFyYWN0ZXIKICAgICAgICBjbGFzcywgXGIgaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIGJhY2tzcGFjZSBjaGFyYWN0ZXIgKGhleCAwOCkuCiAKLSAgICAgICBcTiAgaXMgbm90IGFsbG93ZWQgaW4gYSBjaGFyYWN0ZXIgY2xhc3MuIFxCLCBcUiwgYW5kIFxYIGFyZSBub3Qgc3BlY2lhbAotICAgICAgIGluc2lkZSBhIGNoYXJhY3RlciBjbGFzcy4gTGlrZSAgb3RoZXIgIHVucmVjb2duaXplZCAgZXNjYXBlICBzZXF1ZW5jZXMsCi0gICAgICAgdGhleSAgYXJlICB0cmVhdGVkICBhcyAgdGhlICBsaXRlcmFsICBjaGFyYWN0ZXJzICAiQiIsICAiUiIsIGFuZCAiWCIgYnkKLSAgICAgICBkZWZhdWx0LCBidXQgY2F1c2UgYW4gZXJyb3IgaWYgdGhlIFBDUkVfRVhUUkEgb3B0aW9uIGlzIHNldC4gT3V0c2lkZSAgYQorICAgICAgIFxOIGlzIG5vdCBhbGxvd2VkIGluIGEgY2hhcmFjdGVyIGNsYXNzLiBcQiwgXFIsIGFuZCBcWCBhcmUgbm90ICBzcGVjaWFsCisgICAgICAgaW5zaWRlICBhICBjaGFyYWN0ZXIgIGNsYXNzLiAgTGlrZSBvdGhlciB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcywKKyAgICAgICB0aGV5IGFyZSB0cmVhdGVkIGFzICB0aGUgIGxpdGVyYWwgIGNoYXJhY3RlcnMgICJCIiwgICJSIiwgIGFuZCAgIlgiICBieQorICAgICAgIGRlZmF1bHQsICBidXQgY2F1c2UgYW4gZXJyb3IgaWYgdGhlIFBDUkVfRVhUUkEgb3B0aW9uIGlzIHNldC4gT3V0c2lkZSBhCiAgICAgICAgY2hhcmFjdGVyIGNsYXNzLCB0aGVzZSBzZXF1ZW5jZXMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZ3MuCiAKICAgIFVuc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZXMKIAotICAgICAgIEluICBQZXJsLCB0aGUgc2VxdWVuY2VzIFxsLCBcTCwgXHUsIGFuZCBcVSBhcmUgcmVjb2duaXplZCBieSBpdHMgc3RyaW5nCi0gICAgICAgaGFuZGxlciBhbmQgdXNlZCAgdG8gIG1vZGlmeSAgdGhlICBjYXNlICBvZiAgZm9sbG93aW5nICBjaGFyYWN0ZXJzLiAgQnkKLSAgICAgICBkZWZhdWx0LCAgUENSRSBkb2VzIG5vdCBzdXBwb3J0IHRoZXNlIGVzY2FwZSBzZXF1ZW5jZXMuIEhvd2V2ZXIsIGlmIHRoZQotICAgICAgIFBDUkVfSkFWQVNDUklQVF9DT01QQVQgb3B0aW9uIGlzIHNldCwgXFUgbWF0Y2hlcyBhICJVIiAgY2hhcmFjdGVyLCAgYW5kCisgICAgICAgSW4gUGVybCwgdGhlIHNlcXVlbmNlcyBcbCwgXEwsIFx1LCBhbmQgXFUgYXJlIHJlY29nbml6ZWQgYnkgaXRzICBzdHJpbmcKKyAgICAgICBoYW5kbGVyICBhbmQgIHVzZWQgIHRvICBtb2RpZnkgIHRoZSAgY2FzZSAgb2YgIGZvbGxvd2luZyBjaGFyYWN0ZXJzLiBCeQorICAgICAgIGRlZmF1bHQsIFBDUkUgZG9lcyBub3Qgc3VwcG9ydCB0aGVzZSBlc2NhcGUgc2VxdWVuY2VzLiBIb3dldmVyLCBpZiAgdGhlCisgICAgICAgUENSRV9KQVZBU0NSSVBUX0NPTVBBVCAgb3B0aW9uICBpcyBzZXQsIFxVIG1hdGNoZXMgYSAiVSIgY2hhcmFjdGVyLCBhbmQKICAgICAgICBcdSBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYSBjaGFyYWN0ZXIgYnkgY29kZSBwb2ludCwgYXMgZGVzY3JpYmVkIGluIHRoZQogICAgICAgIHByZXZpb3VzIHNlY3Rpb24uCiAKICAgIEFic29sdXRlIGFuZCByZWxhdGl2ZSBiYWNrIHJlZmVyZW5jZXMKIAotICAgICAgIFRoZSBzZXF1ZW5jZSBcZyBmb2xsb3dlZCBieSBhbiB1bnNpZ25lZCBvciBhIG5lZ2F0aXZlICBudW1iZXIsICBvcHRpb24tCi0gICAgICAgYWxseSAgZW5jbG9zZWQgIGluIGJyYWNlcywgaXMgYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgYmFjayByZWZlcmVuY2UuIEEKKyAgICAgICBUaGUgIHNlcXVlbmNlICBcZyBmb2xsb3dlZCBieSBhbiB1bnNpZ25lZCBvciBhIG5lZ2F0aXZlIG51bWJlciwgb3B0aW9uLQorICAgICAgIGFsbHkgZW5jbG9zZWQgaW4gYnJhY2VzLCBpcyBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBiYWNrICByZWZlcmVuY2UuICBBCiAgICAgICAgbmFtZWQgYmFjayByZWZlcmVuY2UgY2FuIGJlIGNvZGVkIGFzIFxne25hbWV9LiBCYWNrIHJlZmVyZW5jZXMgYXJlIGRpcy0KICAgICAgICBjdXNzZWQgbGF0ZXIsIGZvbGxvd2luZyB0aGUgZGlzY3Vzc2lvbiBvZiBwYXJlbnRoZXNpemVkIHN1YnBhdHRlcm5zLgogCiAgICBBYnNvbHV0ZSBhbmQgcmVsYXRpdmUgc3Vicm91dGluZSBjYWxscwogCi0gICAgICAgRm9yICBjb21wYXRpYmlsaXR5IHdpdGggT25pZ3VydW1hLCB0aGUgbm9uLVBlcmwgc3ludGF4IFxnIGZvbGxvd2VkIGJ5IGEKKyAgICAgICBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9uaWd1cnVtYSwgdGhlIG5vbi1QZXJsIHN5bnRheCBcZyBmb2xsb3dlZCBieSAgYQogICAgICAgIG5hbWUgb3IgYSBudW1iZXIgZW5jbG9zZWQgZWl0aGVyIGluIGFuZ2xlIGJyYWNrZXRzIG9yIHNpbmdsZSBxdW90ZXMsIGlzCi0gICAgICAgYW4gIGFsdGVybmF0aXZlICBzeW50YXggZm9yIHJlZmVyZW5jaW5nIGEgc3VicGF0dGVybiBhcyBhICJzdWJyb3V0aW5lIi4KLSAgICAgICBEZXRhaWxzIGFyZSBkaXNjdXNzZWQgbGF0ZXIuICAgTm90ZSAgdGhhdCAgXGd7Li4ufSAgKFBlcmwgIHN5bnRheCkgIGFuZAotICAgICAgIFxnPC4uLj4gIChPbmlndXJ1bWEgIHN5bnRheCkgIGFyZSAgbm90IHN5bm9ueW1vdXMuIFRoZSBmb3JtZXIgaXMgYSBiYWNrCisgICAgICAgYW4gYWx0ZXJuYXRpdmUgc3ludGF4IGZvciByZWZlcmVuY2luZyBhIHN1YnBhdHRlcm4gYXMgIGEgICJzdWJyb3V0aW5lIi4KKyAgICAgICBEZXRhaWxzICBhcmUgIGRpc2N1c3NlZCAgbGF0ZXIuICAgTm90ZSAgdGhhdCAgXGd7Li4ufSAoUGVybCBzeW50YXgpIGFuZAorICAgICAgIFxnPC4uLj4gKE9uaWd1cnVtYSBzeW50YXgpIGFyZSBub3Qgc3lub255bW91cy4gVGhlICBmb3JtZXIgIGlzICBhICBiYWNrCiAgICAgICAgcmVmZXJlbmNlOyB0aGUgbGF0dGVyIGlzIGEgc3Vicm91dGluZSBjYWxsLgogCiAgICBHZW5lcmljIGNoYXJhY3RlciB0eXBlcwpAQCAtNTE3Miw1OSArNTE4NSw1OSBAQAogICAgICAgICAgXFcgICAgIGFueSAibm9uLXdvcmQiIGNoYXJhY3RlcgogCiAgICAgICAgVGhlcmUgaXMgYWxzbyB0aGUgc2luZ2xlIHNlcXVlbmNlIFxOLCB3aGljaCBtYXRjaGVzIGEgbm9uLW5ld2xpbmUgY2hhci0KLSAgICAgICBhY3Rlci4gICBUaGlzICBpcyB0aGUgc2FtZSBhcyB0aGUgIi4iIG1ldGFjaGFyYWN0ZXIgd2hlbiBQQ1JFX0RPVEFMTCBpcwotICAgICAgIG5vdCBzZXQuIFBlcmwgYWxzbyB1c2VzIFxOIHRvIG1hdGNoIGNoYXJhY3RlcnMgYnkgbmFtZTsgUENSRSAgZG9lcyAgbm90CisgICAgICAgYWN0ZXIuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSAiLiIgbWV0YWNoYXJhY3RlciB3aGVuICBQQ1JFX0RPVEFMTCAgaXMKKyAgICAgICBub3QgIHNldC4gIFBlcmwgYWxzbyB1c2VzIFxOIHRvIG1hdGNoIGNoYXJhY3RlcnMgYnkgbmFtZTsgUENSRSBkb2VzIG5vdAogICAgICAgIHN1cHBvcnQgdGhpcy4KIAotICAgICAgIEVhY2ggIHBhaXIgb2YgbG93ZXIgYW5kIHVwcGVyIGNhc2UgZXNjYXBlIHNlcXVlbmNlcyBwYXJ0aXRpb25zIHRoZSBjb20tCi0gICAgICAgcGxldGUgc2V0IG9mIGNoYXJhY3RlcnMgaW50byB0d28gZGlzam9pbnQgIHNldHMuICBBbnkgIGdpdmVuICBjaGFyYWN0ZXIKLSAgICAgICBtYXRjaGVzICBvbmUsIGFuZCBvbmx5IG9uZSwgb2YgZWFjaCBwYWlyLiBUaGUgc2VxdWVuY2VzIGNhbiBhcHBlYXIgYm90aAotICAgICAgIGluc2lkZSBhbmQgb3V0c2lkZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gVGhleSBlYWNoIG1hdGNoIG9uZSBjaGFyYWN0ZXIgIG9mCi0gICAgICAgdGhlICBhcHByb3ByaWF0ZSAgdHlwZS4gIElmIHRoZSBjdXJyZW50IG1hdGNoaW5nIHBvaW50IGlzIGF0IHRoZSBlbmQgb2YKLSAgICAgICB0aGUgc3ViamVjdCBzdHJpbmcsIGFsbCBvZiB0aGVtIGZhaWwsIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hhcmFjdGVyICB0bworICAgICAgIEVhY2ggcGFpciBvZiBsb3dlciBhbmQgdXBwZXIgY2FzZSBlc2NhcGUgc2VxdWVuY2VzIHBhcnRpdGlvbnMgdGhlICBjb20tCisgICAgICAgcGxldGUgIHNldCAgb2YgIGNoYXJhY3RlcnMgIGludG8gdHdvIGRpc2pvaW50IHNldHMuIEFueSBnaXZlbiBjaGFyYWN0ZXIKKyAgICAgICBtYXRjaGVzIG9uZSwgYW5kIG9ubHkgb25lLCBvZiBlYWNoIHBhaXIuIFRoZSBzZXF1ZW5jZXMgY2FuIGFwcGVhciAgYm90aAorICAgICAgIGluc2lkZSAgYW5kIG91dHNpZGUgY2hhcmFjdGVyIGNsYXNzZXMuIFRoZXkgZWFjaCBtYXRjaCBvbmUgY2hhcmFjdGVyIG9mCisgICAgICAgdGhlIGFwcHJvcHJpYXRlIHR5cGUuIElmIHRoZSBjdXJyZW50IG1hdGNoaW5nIHBvaW50IGlzIGF0ICB0aGUgIGVuZCAgb2YKKyAgICAgICB0aGUgIHN1YmplY3Qgc3RyaW5nLCBhbGwgb2YgdGhlbSBmYWlsLCBiZWNhdXNlIHRoZXJlIGlzIG5vIGNoYXJhY3RlciB0bwogICAgICAgIG1hdGNoLgogCi0gICAgICAgRm9yICBjb21wYXRpYmlsaXR5IHdpdGggUGVybCwgXHMgZGlkIG5vdCB1c2VkIHRvIG1hdGNoIHRoZSBWVCBjaGFyYWN0ZXIKLSAgICAgICAoY29kZSAxMSksIHdoaWNoIG1hZGUgaXQgZGlmZmVyZW50IGZyb20gdGhlIHRoZSAgUE9TSVggICJzcGFjZSIgIGNsYXNzLgotICAgICAgIEhvd2V2ZXIsICBQZXJsICBhZGRlZCAgVlQgIGF0ICByZWxlYXNlICA1LjE4LCBhbmQgUENSRSBmb2xsb3dlZCBzdWl0IGF0Ci0gICAgICAgcmVsZWFzZSA4LjM0LiBUaGUgZGVmYXVsdCBccyBjaGFyYWN0ZXJzIGFyZSBub3cgSFQgICg5KSwgIExGICAoMTApLCAgVlQKLSAgICAgICAoMTEpLCAgRkYgICgxMiksICBDUiAgKDEzKSwgIGFuZCBzcGFjZSAoMzIpLCB3aGljaCBhcmUgZGVmaW5lZCBhcyB3aGl0ZQorICAgICAgIEZvciBjb21wYXRpYmlsaXR5IHdpdGggUGVybCwgXHMgZGlkIG5vdCB1c2VkIHRvIG1hdGNoIHRoZSBWVCAgY2hhcmFjdGVyCisgICAgICAgKGNvZGUgIDExKSwgIHdoaWNoICBtYWRlIGl0IGRpZmZlcmVudCBmcm9tIHRoZSB0aGUgUE9TSVggInNwYWNlIiBjbGFzcy4KKyAgICAgICBIb3dldmVyLCBQZXJsIGFkZGVkIFZUIGF0IHJlbGVhc2UgIDUuMTgsICBhbmQgIFBDUkUgIGZvbGxvd2VkICBzdWl0ICBhdAorICAgICAgIHJlbGVhc2UgIDguMzQuICBUaGUgIGRlZmF1bHQgIFxzIGNoYXJhY3RlcnMgYXJlIG5vdyBIVCAoOSksIExGICgxMCksIFZUCisgICAgICAgKDExKSwgRkYgKDEyKSwgQ1IgKDEzKSwgYW5kIHNwYWNlICgzMiksICB3aGljaCAgYXJlICBkZWZpbmVkICBhcyAgd2hpdGUKICAgICAgICBzcGFjZSBpbiB0aGUgIkMiIGxvY2FsZS4gVGhpcyBsaXN0IG1heSB2YXJ5IGlmIGxvY2FsZS1zcGVjaWZpYyBtYXRjaGluZwotICAgICAgIGlzICB0YWtpbmcgcGxhY2UuIEZvciBleGFtcGxlLCBpbiBzb21lIGxvY2FsZXMgdGhlICJub24tYnJlYWtpbmcgc3BhY2UiCi0gICAgICAgY2hhcmFjdGVyIChceEEwKSBpcyByZWNvZ25pemVkIGFzIHdoaXRlIHNwYWNlLCBhbmQgIGluICBvdGhlcnMgIHRoZSAgVlQKKyAgICAgICBpcyB0YWtpbmcgcGxhY2UuIEZvciBleGFtcGxlLCBpbiBzb21lIGxvY2FsZXMgdGhlICJub24tYnJlYWtpbmcgIHNwYWNlIgorICAgICAgIGNoYXJhY3RlciAgKFx4QTApICBpcyAgcmVjb2duaXplZCAgYXMgd2hpdGUgc3BhY2UsIGFuZCBpbiBvdGhlcnMgdGhlIFZUCiAgICAgICAgY2hhcmFjdGVyIGlzIG5vdC4KIAotICAgICAgIEEgICJ3b3JkIiAgY2hhcmFjdGVyIGlzIGFuIHVuZGVyc2NvcmUgb3IgYW55IGNoYXJhY3RlciB0aGF0IGlzIGEgbGV0dGVyCi0gICAgICAgb3IgZGlnaXQuICBCeSBkZWZhdWx0LCB0aGUgZGVmaW5pdGlvbiBvZiBsZXR0ZXJzICBhbmQgIGRpZ2l0cyAgaXMgIGNvbi0KLSAgICAgICB0cm9sbGVkICBieSBQQ1JFJ3MgbG93LXZhbHVlZCBjaGFyYWN0ZXIgdGFibGVzLCBhbmQgbWF5IHZhcnkgaWYgbG9jYWxlLQotICAgICAgIHNwZWNpZmljIG1hdGNoaW5nIGlzIHRha2luZyBwbGFjZSAoc2VlICJMb2NhbGUgc3VwcG9ydCIgaW4gdGhlICBwY3JlYXBpCi0gICAgICAgcGFnZSkuICBGb3IgIGV4YW1wbGUsICBpbiAgYSBGcmVuY2ggbG9jYWxlIHN1Y2ggYXMgImZyX0ZSIiBpbiBVbml4LWxpa2UKLSAgICAgICBzeXN0ZW1zLCBvciAiZnJlbmNoIiBpbiBXaW5kb3dzLCBzb21lIGNoYXJhY3RlciBjb2RlcyBncmVhdGVyIHRoYW4gIDEyNwotICAgICAgIGFyZSAgdXNlZCAgZm9yICBhY2NlbnRlZCBsZXR0ZXJzLCBhbmQgdGhlc2UgYXJlIHRoZW4gbWF0Y2hlZCBieSBcdy4gVGhlCisgICAgICAgQSAid29yZCIgY2hhcmFjdGVyIGlzIGFuIHVuZGVyc2NvcmUgb3IgYW55IGNoYXJhY3RlciB0aGF0IGlzICBhICBsZXR0ZXIKKyAgICAgICBvciAgZGlnaXQuICAgQnkgIGRlZmF1bHQsICB0aGUgZGVmaW5pdGlvbiBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMgaXMgY29uLQorICAgICAgIHRyb2xsZWQgYnkgUENSRSdzIGxvdy12YWx1ZWQgY2hhcmFjdGVyIHRhYmxlcywgYW5kIG1heSB2YXJ5IGlmICBsb2NhbGUtCisgICAgICAgc3BlY2lmaWMgIG1hdGNoaW5nIGlzIHRha2luZyBwbGFjZSAoc2VlICJMb2NhbGUgc3VwcG9ydCIgaW4gdGhlIHBjcmVhcGkKKyAgICAgICBwYWdlKS4gRm9yIGV4YW1wbGUsIGluIGEgRnJlbmNoIGxvY2FsZSBzdWNoICBhcyAgImZyX0ZSIiAgaW4gIFVuaXgtbGlrZQorICAgICAgIHN5c3RlbXMsICBvciAiZnJlbmNoIiBpbiBXaW5kb3dzLCBzb21lIGNoYXJhY3RlciBjb2RlcyBncmVhdGVyIHRoYW4gMTI3CisgICAgICAgYXJlIHVzZWQgZm9yIGFjY2VudGVkIGxldHRlcnMsIGFuZCB0aGVzZSBhcmUgdGhlbiBtYXRjaGVkICBieSAgXHcuICBUaGUKICAgICAgICB1c2Ugb2YgbG9jYWxlcyB3aXRoIFVuaWNvZGUgaXMgZGlzY291cmFnZWQuCiAKLSAgICAgICBCeSBkZWZhdWx0LCBjaGFyYWN0ZXJzIHdob3NlIGNvZGUgcG9pbnRzIGFyZSAgZ3JlYXRlciAgdGhhbiAgMTI3ICBuZXZlcgorICAgICAgIEJ5ICBkZWZhdWx0LCAgY2hhcmFjdGVycyAgd2hvc2UgIGNvZGUgcG9pbnRzIGFyZSBncmVhdGVyIHRoYW4gMTI3IG5ldmVyCiAgICAgICAgbWF0Y2ggXGQsIFxzLCBvciBcdywgYW5kIGFsd2F5cyBtYXRjaCBcRCwgXFMsIGFuZCBcVywgYWx0aG91Z2ggdGhpcyBtYXkKLSAgICAgICB2YXJ5IGZvciBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSAxMjgtMjU1IHdoZW4gbG9jYWxlLXNwZWNpZmljICBtYXRjaGluZwotICAgICAgIGlzICBoYXBwZW5pbmcuICAgVGhlc2UgIGVzY2FwZSBzZXF1ZW5jZXMgcmV0YWluIHRoZWlyIG9yaWdpbmFsIG1lYW5pbmdzCi0gICAgICAgZnJvbSBiZWZvcmUgVW5pY29kZSBzdXBwb3J0IHdhcyBhdmFpbGFibGUsIG1haW5seSBmb3IgIGVmZmljaWVuY3kgIHJlYS0KLSAgICAgICBzb25zLiAgSWYgIFBDUkUgIGlzICBjb21waWxlZCAgd2l0aCAgVW5pY29kZSAgcHJvcGVydHkgc3VwcG9ydCwgYW5kIHRoZQotICAgICAgIFBDUkVfVUNQIG9wdGlvbiBpcyBzZXQsIHRoZSBiZWhhdmlvdXIgaXMgY2hhbmdlZCBzbyB0aGF0IFVuaWNvZGUgIHByb3AtCisgICAgICAgdmFyeSAgZm9yIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgd2hlbiBsb2NhbGUtc3BlY2lmaWMgbWF0Y2hpbmcKKyAgICAgICBpcyBoYXBwZW5pbmcuICBUaGVzZSBlc2NhcGUgc2VxdWVuY2VzIHJldGFpbiAgdGhlaXIgIG9yaWdpbmFsICBtZWFuaW5ncworICAgICAgIGZyb20gIGJlZm9yZSAgVW5pY29kZSBzdXBwb3J0IHdhcyBhdmFpbGFibGUsIG1haW5seSBmb3IgZWZmaWNpZW5jeSByZWEtCisgICAgICAgc29ucy4gSWYgUENSRSBpcyAgY29tcGlsZWQgIHdpdGggIFVuaWNvZGUgIHByb3BlcnR5ICBzdXBwb3J0LCAgYW5kICB0aGUKKyAgICAgICBQQ1JFX1VDUCAgb3B0aW9uIGlzIHNldCwgdGhlIGJlaGF2aW91ciBpcyBjaGFuZ2VkIHNvIHRoYXQgVW5pY29kZSBwcm9wLQogICAgICAgIGVydGllcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgY2hhcmFjdGVyIHR5cGVzLCBhcyBmb2xsb3dzOgogCiAgICAgICAgICBcZCAgYW55IGNoYXJhY3RlciB0aGF0IG1hdGNoZXMgXHB7TmR9IChkZWNpbWFsIGRpZ2l0KQogICAgICAgICAgXHMgIGFueSBjaGFyYWN0ZXIgdGhhdCBtYXRjaGVzIFxwe1p9IG9yIFxoIG9yIFx2CiAgICAgICAgICBcdyAgYW55IGNoYXJhY3RlciB0aGF0IG1hdGNoZXMgXHB7TH0gb3IgXHB7Tn0sIHBsdXMgdW5kZXJzY29yZQogCi0gICAgICAgVGhlICB1cHBlciBjYXNlIGVzY2FwZXMgbWF0Y2ggdGhlIGludmVyc2Ugc2V0cyBvZiBjaGFyYWN0ZXJzLiBOb3RlIHRoYXQKLSAgICAgICBcZCBtYXRjaGVzIG9ubHkgZGVjaW1hbCBkaWdpdHMsIHdoZXJlYXMgXHcgbWF0Y2hlcyBhbnkgIFVuaWNvZGUgIGRpZ2l0LAotICAgICAgIGFzICB3ZWxsIGFzIGFueSBVbmljb2RlIGxldHRlciwgYW5kIHVuZGVyc2NvcmUuIE5vdGUgYWxzbyB0aGF0IFBDUkVfVUNQCi0gICAgICAgYWZmZWN0cyBcYiwgYW5kIFxCIGJlY2F1c2UgdGhleSBhcmUgZGVmaW5lZCBpbiAgdGVybXMgIG9mICBcdyAgYW5kICBcVy4KKyAgICAgICBUaGUgdXBwZXIgY2FzZSBlc2NhcGVzIG1hdGNoIHRoZSBpbnZlcnNlIHNldHMgb2YgY2hhcmFjdGVycy4gTm90ZSAgdGhhdAorICAgICAgIFxkICBtYXRjaGVzICBvbmx5IGRlY2ltYWwgZGlnaXRzLCB3aGVyZWFzIFx3IG1hdGNoZXMgYW55IFVuaWNvZGUgZGlnaXQsCisgICAgICAgYXMgd2VsbCBhcyBhbnkgVW5pY29kZSBsZXR0ZXIsIGFuZCB1bmRlcnNjb3JlLiBOb3RlIGFsc28gdGhhdCAgUENSRV9VQ1AKKyAgICAgICBhZmZlY3RzICBcYiwgIGFuZCAgXEIgIGJlY2F1c2UgIHRoZXkgYXJlIGRlZmluZWQgaW4gdGVybXMgb2YgXHcgYW5kIFxXLgogICAgICAgIE1hdGNoaW5nIHRoZXNlIHNlcXVlbmNlcyBpcyBub3RpY2VhYmx5IHNsb3dlciB3aGVuIFBDUkVfVUNQIGlzIHNldC4KIAotICAgICAgIFRoZSAgc2VxdWVuY2VzICBcaCwgXEgsIFx2LCBhbmQgXFYgYXJlIGZlYXR1cmVzIHRoYXQgd2VyZSBhZGRlZCB0byBQZXJsCi0gICAgICAgYXQgcmVsZWFzZSA1LjEwLiBJbiBjb250cmFzdCB0byB0aGUgb3RoZXIgc2VxdWVuY2VzLCB3aGljaCAgbWF0Y2ggIG9ubHkKLSAgICAgICBBU0NJSSAgY2hhcmFjdGVycyAgYnkgIGRlZmF1bHQsICB0aGVzZSBhbHdheXMgbWF0Y2ggY2VydGFpbiBoaWdoLXZhbHVlZAorICAgICAgIFRoZSBzZXF1ZW5jZXMgXGgsIFxILCBcdiwgYW5kIFxWIGFyZSBmZWF0dXJlcyB0aGF0IHdlcmUgYWRkZWQgIHRvICBQZXJsCisgICAgICAgYXQgIHJlbGVhc2UgIDUuMTAuIEluIGNvbnRyYXN0IHRvIHRoZSBvdGhlciBzZXF1ZW5jZXMsIHdoaWNoIG1hdGNoIG9ubHkKKyAgICAgICBBU0NJSSBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQsIHRoZXNlICBhbHdheXMgIG1hdGNoICBjZXJ0YWluICBoaWdoLXZhbHVlZAogICAgICAgIGNvZGUgcG9pbnRzLCB3aGV0aGVyIG9yIG5vdCBQQ1JFX1VDUCBpcyBzZXQuIFRoZSBob3Jpem9udGFsIHNwYWNlIGNoYXItCiAgICAgICAgYWN0ZXJzIGFyZToKIApAQCAtNTI2MywxMTAgKzUyNzYsMTEwIEBACiAKICAgIE5ld2xpbmUgc2VxdWVuY2VzCiAKLSAgICAgICBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCBieSBkZWZhdWx0LCB0aGUgZXNjYXBlIHNlcXVlbmNlICBcUiAgbWF0Y2hlcwotICAgICAgIGFueSAgVW5pY29kZSBuZXdsaW5lIHNlcXVlbmNlLiBJbiA4LWJpdCBub24tVVRGLTggbW9kZSBcUiBpcyBlcXVpdmFsZW50CisgICAgICAgT3V0c2lkZSAgYSAgY2hhcmFjdGVyIGNsYXNzLCBieSBkZWZhdWx0LCB0aGUgZXNjYXBlIHNlcXVlbmNlIFxSIG1hdGNoZXMKKyAgICAgICBhbnkgVW5pY29kZSBuZXdsaW5lIHNlcXVlbmNlLiBJbiA4LWJpdCBub24tVVRGLTggbW9kZSBcUiBpcyAgZXF1aXZhbGVudAogICAgICAgIHRvIHRoZSBmb2xsb3dpbmc6CiAKICAgICAgICAgICg/PlxyXG58XG58XHgwYnxcZnxccnxceDg1KQogCi0gICAgICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGFuICJhdG9taWMgZ3JvdXAiLCBkZXRhaWxzICBvZiAgd2hpY2ggIGFyZSAgZ2l2ZW4KKyAgICAgICBUaGlzICBpcyAgYW4gIGV4YW1wbGUgIG9mIGFuICJhdG9taWMgZ3JvdXAiLCBkZXRhaWxzIG9mIHdoaWNoIGFyZSBnaXZlbgogICAgICAgIGJlbG93LiAgVGhpcyBwYXJ0aWN1bGFyIGdyb3VwIG1hdGNoZXMgZWl0aGVyIHRoZSB0d28tY2hhcmFjdGVyIHNlcXVlbmNlCi0gICAgICAgQ1IgZm9sbG93ZWQgYnkgTEYsIG9yICBvbmUgIG9mICB0aGUgIHNpbmdsZSAgY2hhcmFjdGVycyAgTEYgIChsaW5lZmVlZCwKLSAgICAgICBVKzAwMEEpLCAgVlQgICh2ZXJ0aWNhbCAgdGFiLCBVKzAwMEIpLCBGRiAoZm9ybSBmZWVkLCBVKzAwMEMpLCBDUiAoY2FyLQotICAgICAgIHJpYWdlIHJldHVybiwgVSswMDBEKSwgb3IgTkVMIChuZXh0IGxpbmUsICBVKzAwODUpLiAgVGhlICB0d28tY2hhcmFjdGVyCisgICAgICAgQ1IgIGZvbGxvd2VkICBieSAgTEYsICBvciAgb25lICBvZiAgdGhlIHNpbmdsZSBjaGFyYWN0ZXJzIExGIChsaW5lZmVlZCwKKyAgICAgICBVKzAwMEEpLCBWVCAodmVydGljYWwgdGFiLCBVKzAwMEIpLCBGRiAoZm9ybSBmZWVkLCAgVSswMDBDKSwgIENSICAoY2FyLQorICAgICAgIHJpYWdlICByZXR1cm4sICBVKzAwMEQpLCAgb3IgTkVMIChuZXh0IGxpbmUsIFUrMDA4NSkuIFRoZSB0d28tY2hhcmFjdGVyCiAgICAgICAgc2VxdWVuY2UgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSB1bml0IHRoYXQgY2Fubm90IGJlIHNwbGl0LgogCi0gICAgICAgSW4gIG90aGVyIG1vZGVzLCB0d28gYWRkaXRpb25hbCBjaGFyYWN0ZXJzIHdob3NlIGNvZGVwb2ludHMgYXJlIGdyZWF0ZXIKKyAgICAgICBJbiBvdGhlciBtb2RlcywgdHdvIGFkZGl0aW9uYWwgY2hhcmFjdGVycyB3aG9zZSBjb2RlcG9pbnRzIGFyZSAgZ3JlYXRlcgogICAgICAgIHRoYW4gMjU1IGFyZSBhZGRlZDogTFMgKGxpbmUgc2VwYXJhdG9yLCBVKzIwMjgpIGFuZCBQUyAocGFyYWdyYXBoIHNlcGEtCi0gICAgICAgcmF0b3IsICBVKzIwMjkpLiAgIFVuaWNvZGUgY2hhcmFjdGVyIHByb3BlcnR5IHN1cHBvcnQgaXMgbm90IG5lZWRlZCBmb3IKKyAgICAgICByYXRvciwgVSsyMDI5KS4gIFVuaWNvZGUgY2hhcmFjdGVyIHByb3BlcnR5IHN1cHBvcnQgaXMgbm90ICBuZWVkZWQgIGZvcgogICAgICAgIHRoZXNlIGNoYXJhY3RlcnMgdG8gYmUgcmVjb2duaXplZC4KIAogICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIHJlc3RyaWN0IFxSIHRvIG1hdGNoIG9ubHkgQ1IsIExGLCBvciBDUkxGIChpbnN0ZWFkIG9mCi0gICAgICAgdGhlICBjb21wbGV0ZSAgc2V0ICBvZiAgVW5pY29kZSAgbGluZSAgZW5kaW5ncykgIGJ5ICBzZXR0aW5nIHRoZSBvcHRpb24KKyAgICAgICB0aGUgY29tcGxldGUgc2V0ICBvZiAgVW5pY29kZSAgbGluZSAgZW5kaW5ncykgIGJ5ICBzZXR0aW5nICB0aGUgIG9wdGlvbgogICAgICAgIFBDUkVfQlNSX0FOWUNSTEYgZWl0aGVyIGF0IGNvbXBpbGUgdGltZSBvciB3aGVuIHRoZSBwYXR0ZXJuIGlzIG1hdGNoZWQuCiAgICAgICAgKEJTUiBpcyBhbiBhYmJyZXZhdGlvbiBmb3IgImJhY2tzbGFzaCBSIi4pIFRoaXMgY2FuIGJlIG1hZGUgdGhlIGRlZmF1bHQKLSAgICAgICB3aGVuIFBDUkUgaXMgYnVpbHQ7IGlmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZSAgb3RoZXIgIGJlaGF2aW91ciAgY2FuICBiZQotICAgICAgIHJlcXVlc3RlZCAgdmlhICB0aGUgIFBDUkVfQlNSX1VOSUNPREUgIG9wdGlvbi4gICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvCi0gICAgICAgc3BlY2lmeSB0aGVzZSBzZXR0aW5ncyBieSBzdGFydGluZyBhIHBhdHRlcm4gc3RyaW5nICB3aXRoICBvbmUgIG9mICB0aGUKKyAgICAgICB3aGVuICBQQ1JFICBpcyAgYnVpbHQ7ICBpZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgb3RoZXIgYmVoYXZpb3VyIGNhbiBiZQorICAgICAgIHJlcXVlc3RlZCB2aWEgdGhlIFBDUkVfQlNSX1VOSUNPREUgb3B0aW9uLiAgIEl0ICBpcyAgYWxzbyAgcG9zc2libGUgIHRvCisgICAgICAgc3BlY2lmeSAgdGhlc2UgIHNldHRpbmdzICBieSAgc3RhcnRpbmcgYSBwYXR0ZXJuIHN0cmluZyB3aXRoIG9uZSBvZiB0aGUKICAgICAgICBmb2xsb3dpbmcgc2VxdWVuY2VzOgogCiAgICAgICAgICAoKkJTUl9BTllDUkxGKSAgIENSLCBMRiwgb3IgQ1JMRiBvbmx5CiAgICAgICAgICAoKkJTUl9VTklDT0RFKSAgIGFueSBVbmljb2RlIG5ld2xpbmUgc2VxdWVuY2UKIAogICAgICAgIFRoZXNlIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGFuZCB0aGUgb3B0aW9ucyBnaXZlbiB0byB0aGUgY29tcGlsaW5nIGZ1bmMtCi0gICAgICAgdGlvbiwgYnV0IHRoZXkgY2FuIHRoZW1zZWx2ZXMgYmUgIG92ZXJyaWRkZW4gIGJ5ICBvcHRpb25zICBnaXZlbiAgdG8gIGEKLSAgICAgICBtYXRjaGluZyAgZnVuY3Rpb24uICBOb3RlICB0aGF0ICB0aGVzZSAgc3BlY2lhbCBzZXR0aW5ncywgd2hpY2ggYXJlIG5vdAotICAgICAgIFBlcmwtY29tcGF0aWJsZSwgYXJlIHJlY29nbml6ZWQgb25seSBhdCB0aGUgdmVyeSBzdGFydCAgb2YgIGEgIHBhdHRlcm4sCi0gICAgICAgYW5kICB0aGF0ICB0aGV5ICBtdXN0ICBiZSAgaW4gIHVwcGVyICBjYXNlLiBJZiBtb3JlIHRoYW4gb25lIG9mIHRoZW0gaXMKLSAgICAgICBwcmVzZW50LCB0aGUgbGFzdCBvbmUgaXMgdXNlZC4gVGhleSBjYW4gYmUgY29tYmluZWQgd2l0aCAgYSAgY2hhbmdlICBvZgorICAgICAgIHRpb24sICBidXQgIHRoZXkgIGNhbiAgdGhlbXNlbHZlcyAgYmUgIG92ZXJyaWRkZW4gYnkgb3B0aW9ucyBnaXZlbiB0byBhCisgICAgICAgbWF0Y2hpbmcgZnVuY3Rpb24uIE5vdGUgdGhhdCB0aGVzZSAgc3BlY2lhbCAgc2V0dGluZ3MsICB3aGljaCAgYXJlICBub3QKKyAgICAgICBQZXJsLWNvbXBhdGlibGUsICBhcmUgIHJlY29nbml6ZWQgIG9ubHkgYXQgdGhlIHZlcnkgc3RhcnQgb2YgYSBwYXR0ZXJuLAorICAgICAgIGFuZCB0aGF0IHRoZXkgbXVzdCBiZSBpbiB1cHBlciBjYXNlLiAgSWYgIG1vcmUgIHRoYW4gIG9uZSAgb2YgIHRoZW0gIGlzCisgICAgICAgcHJlc2VudCwgIHRoZSAgbGFzdCAgb25lIGlzIHVzZWQuIFRoZXkgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBjaGFuZ2Ugb2YKICAgICAgICBuZXdsaW5lIGNvbnZlbnRpb247IGZvciBleGFtcGxlLCBhIHBhdHRlcm4gY2FuIHN0YXJ0IHdpdGg6CiAKICAgICAgICAgICgqQU5ZKSgqQlNSX0FOWUNSTEYpCiAKLSAgICAgICBUaGV5ICBjYW4gYWxzbyBiZSBjb21iaW5lZCB3aXRoIHRoZSAoKlVURjgpLCAoKlVURjE2KSwgKCpVVEYzMiksICgqVVRGKQorICAgICAgIFRoZXkgY2FuIGFsc28gYmUgY29tYmluZWQgd2l0aCB0aGUgKCpVVEY4KSwgKCpVVEYxNiksICgqVVRGMzIpLCAgKCpVVEYpCiAgICAgICAgb3IgKCpVQ1ApIHNwZWNpYWwgc2VxdWVuY2VzLiBJbnNpZGUgYSBjaGFyYWN0ZXIgY2xhc3MsIFxSIGlzIHRyZWF0ZWQgYXMKLSAgICAgICBhbiAgdW5yZWNvZ25pemVkICBlc2NhcGUgIHNlcXVlbmNlLCAgYW5kICBzbyAgbWF0Y2hlcyB0aGUgbGV0dGVyICJSIiBieQorICAgICAgIGFuIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2UsIGFuZCAgc28gIG1hdGNoZXMgIHRoZSAgbGV0dGVyICAiUiIgIGJ5CiAgICAgICAgZGVmYXVsdCwgYnV0IGNhdXNlcyBhbiBlcnJvciBpZiBQQ1JFX0VYVFJBIGlzIHNldC4KIAogICAgVW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydGllcwogCiAgICAgICAgV2hlbiBQQ1JFIGlzIGJ1aWx0IHdpdGggVW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydHkgc3VwcG9ydCwgdGhyZWUgYWRkaS0KLSAgICAgICB0aW9uYWwgIGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBtYXRjaCBjaGFyYWN0ZXJzIHdpdGggc3BlY2lmaWMgcHJvcGVydGllcwotICAgICAgIGFyZSBhdmFpbGFibGUuICBXaGVuIGluIDgtYml0IG5vbi1VVEYtOCBtb2RlLCB0aGVzZSAgc2VxdWVuY2VzICBhcmUgIG9mCi0gICAgICAgY291cnNlICBsaW1pdGVkICB0byAgdGVzdGluZyAgY2hhcmFjdGVycyB3aG9zZSBjb2RlcG9pbnRzIGFyZSBsZXNzIHRoYW4KKyAgICAgICB0aW9uYWwgZXNjYXBlIHNlcXVlbmNlcyB0aGF0IG1hdGNoIGNoYXJhY3RlcnMgd2l0aCBzcGVjaWZpYyAgcHJvcGVydGllcworICAgICAgIGFyZSAgYXZhaWxhYmxlLiAgIFdoZW4gIGluIDgtYml0IG5vbi1VVEYtOCBtb2RlLCB0aGVzZSBzZXF1ZW5jZXMgYXJlIG9mCisgICAgICAgY291cnNlIGxpbWl0ZWQgdG8gdGVzdGluZyBjaGFyYWN0ZXJzIHdob3NlICBjb2RlcG9pbnRzICBhcmUgIGxlc3MgIHRoYW4KICAgICAgICAyNTYsIGJ1dCB0aGV5IGRvIHdvcmsgaW4gdGhpcyBtb2RlLiAgVGhlIGV4dHJhIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOgogCiAgICAgICAgICBccHt4eH0gICBhIGNoYXJhY3RlciB3aXRoIHRoZSB4eCBwcm9wZXJ0eQogICAgICAgICAgXFB7eHh9ICAgYSBjaGFyYWN0ZXIgd2l0aG91dCB0aGUgeHggcHJvcGVydHkKICAgICAgICAgIFxYICAgICAgIGEgVW5pY29kZSBleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVyCiAKLSAgICAgICBUaGUgcHJvcGVydHkgbmFtZXMgcmVwcmVzZW50ZWQgYnkgeHggYWJvdmUgYXJlIGxpbWl0ZWQgdG8gIHRoZSAgVW5pY29kZQorICAgICAgIFRoZSAgcHJvcGVydHkgIG5hbWVzIHJlcHJlc2VudGVkIGJ5IHh4IGFib3ZlIGFyZSBsaW1pdGVkIHRvIHRoZSBVbmljb2RlCiAgICAgICAgc2NyaXB0IG5hbWVzLCB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0aWVzLCAiQW55Iiwgd2hpY2ggbWF0Y2hlcyBhbnkKLSAgICAgICBjaGFyYWN0ZXIgIChpbmNsdWRpbmcgIG5ld2xpbmUpLCAgYW5kICBzb21lICBzcGVjaWFsICBQQ1JFICAgcHJvcGVydGllcwotICAgICAgIChkZXNjcmliZWQgIGluIHRoZSBuZXh0IHNlY3Rpb24pLiAgT3RoZXIgUGVybCBwcm9wZXJ0aWVzIHN1Y2ggYXMgIkluTXUtCi0gICAgICAgc2ljYWxTeW1ib2xzIiBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgUENSRS4gIE5vdGUgIHRoYXQgIFxQe0FueX0KKyAgICAgICBjaGFyYWN0ZXIgICAoaW5jbHVkaW5nICBuZXdsaW5lKSwgIGFuZCAgc29tZSAgc3BlY2lhbCAgUENSRSAgcHJvcGVydGllcworICAgICAgIChkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbikuICBPdGhlciBQZXJsIHByb3BlcnRpZXMgc3VjaCBhcyAgIkluTXUtCisgICAgICAgc2ljYWxTeW1ib2xzIiAgYXJlICBub3QgIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgUENSRS4gTm90ZSB0aGF0IFxQe0FueX0KICAgICAgICBkb2VzIG5vdCBtYXRjaCBhbnkgY2hhcmFjdGVycywgc28gYWx3YXlzIGNhdXNlcyBhIG1hdGNoIGZhaWx1cmUuCiAKICAgICAgICBTZXRzIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBhcmUgZGVmaW5lZCBhcyBiZWxvbmdpbmcgdG8gY2VydGFpbiBzY3JpcHRzLgotICAgICAgIEEgY2hhcmFjdGVyIGZyb20gb25lIG9mIHRoZXNlIHNldHMgY2FuIGJlIG1hdGNoZWQgdXNpbmcgYSBzY3JpcHQgIG5hbWUuCisgICAgICAgQSAgY2hhcmFjdGVyIGZyb20gb25lIG9mIHRoZXNlIHNldHMgY2FuIGJlIG1hdGNoZWQgdXNpbmcgYSBzY3JpcHQgbmFtZS4KICAgICAgICBGb3IgZXhhbXBsZToKIAogICAgICAgICAgXHB7R3JlZWt9CiAgICAgICAgICBcUHtIYW59CiAKLSAgICAgICBUaG9zZSAgdGhhdCBhcmUgbm90IHBhcnQgb2YgYW4gaWRlbnRpZmllZCBzY3JpcHQgYXJlIGx1bXBlZCB0b2dldGhlciBhcworICAgICAgIFRob3NlIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIGFuIGlkZW50aWZpZWQgc2NyaXB0IGFyZSBsdW1wZWQgdG9nZXRoZXIgIGFzCiAgICAgICAgIkNvbW1vbiIuIFRoZSBjdXJyZW50IGxpc3Qgb2Ygc2NyaXB0cyBpczoKIAotICAgICAgIEFyYWJpYywgQXJtZW5pYW4sIEF2ZXN0YW4sIEJhbGluZXNlLCBCYW11bSwgQmFzc2FfVmFoLCBCYXRhaywgIEJlbmdhbGksCi0gICAgICAgQm9wb21vZm8sICBCcmFobWksICBCcmFpbGxlLCBCdWdpbmVzZSwgQnVoaWQsIENhbmFkaWFuX0Fib3JpZ2luYWwsIENhci0KKyAgICAgICBBcmFiaWMsICBBcm1lbmlhbiwgQXZlc3RhbiwgQmFsaW5lc2UsIEJhbXVtLCBCYXNzYV9WYWgsIEJhdGFrLCBCZW5nYWxpLAorICAgICAgIEJvcG9tb2ZvLCBCcmFobWksIEJyYWlsbGUsIEJ1Z2luZXNlLCBCdWhpZCwgIENhbmFkaWFuX0Fib3JpZ2luYWwsICBDYXItCiAgICAgICAgaWFuLCBDYXVjYXNpYW5fQWxiYW5pYW4sIENoYWttYSwgQ2hhbSwgQ2hlcm9rZWUsIENvbW1vbiwgQ29wdGljLCBDdW5laS0KICAgICAgICBmb3JtLCBDeXByaW90LCBDeXJpbGxpYywgRGVzZXJldCwgRGV2YW5hZ2FyaSwgRHVwbG95YW4sIEVneXB0aWFuX0hpZXJvLQogICAgICAgIGdseXBocywgIEVsYmFzYW4sICBFdGhpb3BpYywgIEdlb3JnaWFuLCAgR2xhZ29saXRpYywgIEdvdGhpYywgIEdyYW50aGEsCi0gICAgICAgR3JlZWssICBHdWphcmF0aSwgIEd1cm11a2hpLCAgSGFuLCAgSGFuZ3VsLCAgSGFudW5vbywgSGVicmV3LCBIaXJhZ2FuYSwKLSAgICAgICBJbXBlcmlhbF9BcmFtYWljLCAgICBJbmhlcml0ZWQsICAgICBJbnNjcmlwdGlvbmFsX1BhaGxhdmksICAgICBJbnNjcmlwLQotICAgICAgIHRpb25hbF9QYXJ0aGlhbiwgICBKYXZhbmVzZSwgICBLYWl0aGksICAgS2FubmFkYSwgIEthdGFrYW5hLCAgS2F5YWhfTGksCi0gICAgICAgS2hhcm9zaHRoaSwgS2htZXIsIEtob2praSwgS2h1ZGF3YWRpLCBMYW8sIExhdGluLCBMZXBjaGEsICBMaW1idSwgIExpbi0KLSAgICAgICBlYXJfQSwgIExpbmVhcl9CLCAgTGlzdSwgIEx5Y2lhbiwgTHlkaWFuLCBNYWhhamFuaSwgTWFsYXlhbGFtLCBNYW5kYWljLAotICAgICAgIE1hbmljaGFlYW4sICAgICBNZWV0ZWlfTWF5ZWssICAgICBNZW5kZV9LaWtha3VpLCAgICAgIE1lcm9pdGljX0N1cnNpdmUsCi0gICAgICAgTWVyb2l0aWNfSGllcm9nbHlwaHMsICBNaWFvLCAgTW9kaSwgTW9uZ29saWFuLCBNcm8sIE15YW5tYXIsIE5hYmF0YWVhbiwKLSAgICAgICBOZXdfVGFpX0x1ZSwgIE5rbywgIE9naGFtLCAgT2xfQ2hpa2ksICBPbGRfSXRhbGljLCAgIE9sZF9Ob3J0aF9BcmFiaWFuLAorICAgICAgIEdyZWVrLCBHdWphcmF0aSwgR3VybXVraGksICBIYW4sICBIYW5ndWwsICBIYW51bm9vLCAgSGVicmV3LCAgSGlyYWdhbmEsCisgICAgICAgSW1wZXJpYWxfQXJhbWFpYywgICAgIEluaGVyaXRlZCwgICAgIEluc2NyaXB0aW9uYWxfUGFobGF2aSwgICAgSW5zY3JpcC0KKyAgICAgICB0aW9uYWxfUGFydGhpYW4sICBKYXZhbmVzZSwgIEthaXRoaSwgICBLYW5uYWRhLCAgIEthdGFrYW5hLCAgIEtheWFoX0xpLAorICAgICAgIEtoYXJvc2h0aGksICBLaG1lciwgIEtob2praSwgS2h1ZGF3YWRpLCBMYW8sIExhdGluLCBMZXBjaGEsIExpbWJ1LCBMaW4tCisgICAgICAgZWFyX0EsIExpbmVhcl9CLCBMaXN1LCBMeWNpYW4sIEx5ZGlhbiwgIE1haGFqYW5pLCAgTWFsYXlhbGFtLCAgTWFuZGFpYywKKyAgICAgICBNYW5pY2hhZWFuLCAgICAgIE1lZXRlaV9NYXllaywgICAgIE1lbmRlX0tpa2FrdWksICAgICBNZXJvaXRpY19DdXJzaXZlLAorICAgICAgIE1lcm9pdGljX0hpZXJvZ2x5cGhzLCBNaWFvLCBNb2RpLCBNb25nb2xpYW4sIE1ybywgIE15YW5tYXIsICBOYWJhdGFlYW4sCisgICAgICAgTmV3X1RhaV9MdWUsICAgTmtvLCAgT2doYW0sICBPbF9DaGlraSwgIE9sZF9JdGFsaWMsICBPbGRfTm9ydGhfQXJhYmlhbiwKICAgICAgICBPbGRfUGVybWljLCBPbGRfUGVyc2lhbiwgT2xkX1NvdXRoX0FyYWJpYW4sIE9sZF9UdXJraWMsIE9yaXlhLCBPc21hbnlhLAogICAgICAgIFBhaGF3aF9IbW9uZywgICAgUGFsbXlyZW5lLCAgICBQYXVfQ2luX0hhdSwgICAgUGhhZ3NfUGEsICAgIFBob2VuaWNpYW4sCi0gICAgICAgUHNhbHRlcl9QYWhsYXZpLCAgUmVqYW5nLCAgUnVuaWMsICBTYW1hcml0YW4sIFNhdXJhc2h0cmEsIFNoYXJhZGEsIFNoYS0KLSAgICAgICB2aWFuLCBTaWRkaGFtLCBTaW5oYWxhLCBTb3JhX1NvbXBlbmcsIFN1bmRhbmVzZSwgU3lsb3RpX05hZ3JpLCAgU3lyaWFjLAotICAgICAgIFRhZ2Fsb2csICBUYWdiYW53YSwgIFRhaV9MZSwgIFRhaV9UaGFtLCBUYWlfVmlldCwgVGFrcmksIFRhbWlsLCBUZWx1Z3UsCi0gICAgICAgVGhhYW5hLCBUaGFpLCBUaWJldGFuLCBUaWZpbmFnaCwgVGlyaHV0YSwgVWdhcml0aWMsICBWYWksICBXYXJhbmdfQ2l0aSwKKyAgICAgICBQc2FsdGVyX1BhaGxhdmksIFJlamFuZywgUnVuaWMsIFNhbWFyaXRhbiwgIFNhdXJhc2h0cmEsICBTaGFyYWRhLCAgU2hhLQorICAgICAgIHZpYW4sICBTaWRkaGFtLCBTaW5oYWxhLCBTb3JhX1NvbXBlbmcsIFN1bmRhbmVzZSwgU3lsb3RpX05hZ3JpLCBTeXJpYWMsCisgICAgICAgVGFnYWxvZywgVGFnYmFud2EsIFRhaV9MZSwgVGFpX1RoYW0sIFRhaV9WaWV0LCAgVGFrcmksICBUYW1pbCwgIFRlbHVndSwKKyAgICAgICBUaGFhbmEsICBUaGFpLCAgVGliZXRhbiwgVGlmaW5hZ2gsIFRpcmh1dGEsIFVnYXJpdGljLCBWYWksIFdhcmFuZ19DaXRpLAogICAgICAgIFlpLgogCiAgICAgICAgRWFjaCBjaGFyYWN0ZXIgaGFzIGV4YWN0bHkgb25lIFVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eSwgc3BlYy0KLSAgICAgICBpZmllZCBieSBhIHR3by1sZXR0ZXIgYWJicmV2aWF0aW9uLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFBlcmwsICBuZWdhLQotICAgICAgIHRpb24gIGNhbiAgYmUgIHNwZWNpZmllZCAgYnkgaW5jbHVkaW5nIGEgY2lyY3VtZmxleCBiZXR3ZWVuIHRoZSBvcGVuaW5nCi0gICAgICAgYnJhY2UgYW5kIHRoZSBwcm9wZXJ0eSBuYW1lLiAgRm9yICBleGFtcGxlLCAgXHB7Xkx1fSAgaXMgIHRoZSAgc2FtZSAgYXMKKyAgICAgICBpZmllZCAgYnkgYSB0d28tbGV0dGVyIGFiYnJldmlhdGlvbi4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBQZXJsLCBuZWdhLQorICAgICAgIHRpb24gY2FuIGJlIHNwZWNpZmllZCBieSBpbmNsdWRpbmcgYSAgY2lyY3VtZmxleCAgYmV0d2VlbiAgdGhlICBvcGVuaW5nCisgICAgICAgYnJhY2UgIGFuZCAgdGhlICBwcm9wZXJ0eSAgbmFtZS4gIEZvciAgZXhhbXBsZSwgIFxwe15MdX0gaXMgdGhlIHNhbWUgYXMKICAgICAgICBcUHtMdX0uCiAKICAgICAgICBJZiBvbmx5IG9uZSBsZXR0ZXIgaXMgc3BlY2lmaWVkIHdpdGggXHAgb3IgXFAsIGl0IGluY2x1ZGVzIGFsbCB0aGUgZ2VuLQotICAgICAgIGVyYWwgY2F0ZWdvcnkgcHJvcGVydGllcyB0aGF0IHN0YXJ0IHdpdGggdGhhdCBsZXR0ZXIuIEluIHRoaXMgY2FzZSwgIGluCi0gICAgICAgdGhlICBhYnNlbmNlIG9mIG5lZ2F0aW9uLCB0aGUgY3VybHkgYnJhY2tldHMgaW4gdGhlIGVzY2FwZSBzZXF1ZW5jZSBhcmUKKyAgICAgICBlcmFsICBjYXRlZ29yeSBwcm9wZXJ0aWVzIHRoYXQgc3RhcnQgd2l0aCB0aGF0IGxldHRlci4gSW4gdGhpcyBjYXNlLCBpbgorICAgICAgIHRoZSBhYnNlbmNlIG9mIG5lZ2F0aW9uLCB0aGUgY3VybHkgYnJhY2tldHMgaW4gdGhlIGVzY2FwZSBzZXF1ZW5jZSAgYXJlCiAgICAgICAgb3B0aW9uYWw7IHRoZXNlIHR3byBleGFtcGxlcyBoYXZlIHRoZSBzYW1lIGVmZmVjdDoKIAogICAgICAgICAgXHB7TH0KQEAgLTU0MTgsNzMgKzU0MzEsNzMgQEAKICAgICAgICAgIFpwICAgIFBhcmFncmFwaCBzZXBhcmF0b3IKICAgICAgICAgIFpzICAgIFNwYWNlIHNlcGFyYXRvcgogCi0gICAgICAgVGhlIHNwZWNpYWwgcHJvcGVydHkgTCYgaXMgYWxzbyBzdXBwb3J0ZWQ6IGl0IG1hdGNoZXMgYSBjaGFyYWN0ZXIgIHRoYXQKLSAgICAgICBoYXMgIHRoZSAgTHUsICBMbCwgb3IgTHQgcHJvcGVydHksIGluIG90aGVyIHdvcmRzLCBhIGxldHRlciB0aGF0IGlzIG5vdAorICAgICAgIFRoZSAgc3BlY2lhbCBwcm9wZXJ0eSBMJiBpcyBhbHNvIHN1cHBvcnRlZDogaXQgbWF0Y2hlcyBhIGNoYXJhY3RlciB0aGF0CisgICAgICAgaGFzIHRoZSBMdSwgTGwsIG9yIEx0IHByb3BlcnR5LCBpbiBvdGhlciB3b3JkcywgYSBsZXR0ZXIgIHRoYXQgIGlzICBub3QKICAgICAgICBjbGFzc2lmaWVkIGFzIGEgbW9kaWZpZXIgb3IgIm90aGVyIi4KIAotICAgICAgIFRoZSBDcyAoU3Vycm9nYXRlKSBwcm9wZXJ0eSBhcHBsaWVzIG9ubHkgdG8gIGNoYXJhY3RlcnMgIGluICB0aGUgIHJhbmdlCi0gICAgICAgVStEODAwICB0byBVK0RGRkYuIFN1Y2ggY2hhcmFjdGVycyBhcmUgbm90IHZhbGlkIGluIFVuaWNvZGUgc3RyaW5ncyBhbmQKLSAgICAgICBzbyBjYW5ub3QgYmUgdGVzdGVkIGJ5IFBDUkUsIHVubGVzcyAgVVRGICB2YWxpZGl0eSAgY2hlY2tpbmcgIGhhcyAgYmVlbgorICAgICAgIFRoZSAgQ3MgIChTdXJyb2dhdGUpICBwcm9wZXJ0eSAgYXBwbGllcyBvbmx5IHRvIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCisgICAgICAgVStEODAwIHRvIFUrREZGRi4gU3VjaCBjaGFyYWN0ZXJzIGFyZSBub3QgdmFsaWQgaW4gVW5pY29kZSBzdHJpbmdzICBhbmQKKyAgICAgICBzbyAgY2Fubm90ICBiZSAgdGVzdGVkICBieSAgUENSRSwgdW5sZXNzIFVURiB2YWxpZGl0eSBjaGVja2luZyBoYXMgYmVlbgogICAgICAgIHR1cm5lZCAgICBvZmYgICAgKHNlZSAgICB0aGUgICAgZGlzY3Vzc2lvbiAgICBvZiAgICBQQ1JFX05PX1VURjhfQ0hFQ0ssCi0gICAgICAgUENSRV9OT19VVEYxNl9DSEVDSyBhbmQgUENSRV9OT19VVEYzMl9DSEVDSyBpbiB0aGUgcGNyZWFwaSBwYWdlKS4gIFBlcmwKKyAgICAgICBQQ1JFX05PX1VURjE2X0NIRUNLICBhbmQgUENSRV9OT19VVEYzMl9DSEVDSyBpbiB0aGUgcGNyZWFwaSBwYWdlKS4gUGVybAogICAgICAgIGRvZXMgbm90IHN1cHBvcnQgdGhlIENzIHByb3BlcnR5LgogCi0gICAgICAgVGhlICBsb25nICBzeW5vbnltcyAgZm9yICBwcm9wZXJ0eSAgbmFtZXMgIHRoYXQgIFBlcmwgc3VwcG9ydHMgKHN1Y2ggYXMKLSAgICAgICBccHtMZXR0ZXJ9KSBhcmUgbm90IHN1cHBvcnRlZCBieSBQQ1JFLCBub3IgaXMgaXQgIHBlcm1pdHRlZCAgdG8gIHByZWZpeAorICAgICAgIFRoZSBsb25nIHN5bm9ueW1zIGZvciAgcHJvcGVydHkgIG5hbWVzICB0aGF0ICBQZXJsICBzdXBwb3J0cyAgKHN1Y2ggIGFzCisgICAgICAgXHB7TGV0dGVyfSkgIGFyZSAgbm90ICBzdXBwb3J0ZWQgYnkgUENSRSwgbm9yIGlzIGl0IHBlcm1pdHRlZCB0byBwcmVmaXgKICAgICAgICBhbnkgb2YgdGhlc2UgcHJvcGVydGllcyB3aXRoICJJcyIuCiAKICAgICAgICBObyBjaGFyYWN0ZXIgdGhhdCBpcyBpbiB0aGUgVW5pY29kZSB0YWJsZSBoYXMgdGhlIENuICh1bmFzc2lnbmVkKSBwcm9wLQogICAgICAgIGVydHkuICBJbnN0ZWFkLCB0aGlzIHByb3BlcnR5IGlzIGFzc3VtZWQgZm9yIGFueSBjb2RlIHBvaW50IHRoYXQgaXMgbm90CiAgICAgICAgaW4gdGhlIFVuaWNvZGUgdGFibGUuCiAKLSAgICAgICBTcGVjaWZ5aW5nICBjYXNlbGVzcyAgbWF0Y2hpbmcgIGRvZXMgbm90IGFmZmVjdCB0aGVzZSBlc2NhcGUgc2VxdWVuY2VzLgotICAgICAgIEZvciBleGFtcGxlLCBccHtMdX0gYWx3YXlzIG1hdGNoZXMgb25seSB1cHBlciAgY2FzZSAgbGV0dGVycy4gIFRoaXMgIGlzCisgICAgICAgU3BlY2lmeWluZyBjYXNlbGVzcyBtYXRjaGluZyBkb2VzIG5vdCBhZmZlY3QgIHRoZXNlICBlc2NhcGUgIHNlcXVlbmNlcy4KKyAgICAgICBGb3IgIGV4YW1wbGUsICBccHtMdX0gIGFsd2F5cyAgbWF0Y2hlcyBvbmx5IHVwcGVyIGNhc2UgbGV0dGVycy4gVGhpcyBpcwogICAgICAgIGRpZmZlcmVudCBmcm9tIHRoZSBiZWhhdmlvdXIgb2YgY3VycmVudCB2ZXJzaW9ucyBvZiBQZXJsLgogCi0gICAgICAgTWF0Y2hpbmcgIGNoYXJhY3RlcnMgIGJ5IFVuaWNvZGUgcHJvcGVydHkgaXMgbm90IGZhc3QsIGJlY2F1c2UgUENSRSBoYXMKLSAgICAgICB0byBkbyBhIG11bHRpc3RhZ2UgdGFibGUgbG9va3VwIGluIG9yZGVyIHRvIGZpbmQgIGEgIGNoYXJhY3RlcidzICBwcm9wLQorICAgICAgIE1hdGNoaW5nIGNoYXJhY3RlcnMgYnkgVW5pY29kZSBwcm9wZXJ0eSBpcyBub3QgZmFzdCwgYmVjYXVzZSAgUENSRSAgaGFzCisgICAgICAgdG8gIGRvICBhICBtdWx0aXN0YWdlIHRhYmxlIGxvb2t1cCBpbiBvcmRlciB0byBmaW5kIGEgY2hhcmFjdGVyJ3MgcHJvcC0KICAgICAgICBlcnR5LiBUaGF0IGlzIHdoeSB0aGUgdHJhZGl0aW9uYWwgZXNjYXBlIHNlcXVlbmNlcyBzdWNoIGFzIFxkIGFuZCBcdyBkbwogICAgICAgIG5vdCB1c2UgVW5pY29kZSBwcm9wZXJ0aWVzIGluIFBDUkUgYnkgZGVmYXVsdCwgdGhvdWdoIHlvdSBjYW4gbWFrZSB0aGVtCi0gICAgICAgZG8gIHNvICBieSAgc2V0dGluZyB0aGUgUENSRV9VQ1Agb3B0aW9uIG9yIGJ5IHN0YXJ0aW5nIHRoZSBwYXR0ZXJuIHdpdGgKKyAgICAgICBkbyBzbyBieSBzZXR0aW5nIHRoZSBQQ1JFX1VDUCBvcHRpb24gb3IgYnkgc3RhcnRpbmcgIHRoZSAgcGF0dGVybiAgd2l0aAogICAgICAgICgqVUNQKS4KIAogICAgRXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMKIAotICAgICAgIFRoZSBcWCBlc2NhcGUgbWF0Y2hlcyBhbnkgbnVtYmVyIG9mIFVuaWNvZGUgIGNoYXJhY3RlcnMgIHRoYXQgIGZvcm0gIGFuCisgICAgICAgVGhlICBcWCAgZXNjYXBlICBtYXRjaGVzICBhbnkgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyB0aGF0IGZvcm0gYW4KICAgICAgICAiZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlciIsIGFuZCB0cmVhdHMgdGhlIHNlcXVlbmNlIGFzIGFuIGF0b21pYyBncm91cAotICAgICAgIChzZWUgYmVsb3cpLiAgVXAgdG8gYW5kIGluY2x1ZGluZyByZWxlYXNlIDguMzEsIFBDUkUgIG1hdGNoZWQgIGFuICBlYXItCisgICAgICAgKHNlZSAgYmVsb3cpLiAgIFVwICB0byBhbmQgaW5jbHVkaW5nIHJlbGVhc2UgOC4zMSwgUENSRSBtYXRjaGVkIGFuIGVhci0KICAgICAgICBsaWVyLCBzaW1wbGVyIGRlZmluaXRpb24gdGhhdCB3YXMgZXF1aXZhbGVudCB0bwogCiAgICAgICAgICAoPz5cUE1ccE0qKQogCi0gICAgICAgVGhhdCAgaXMsICBpdCBtYXRjaGVkIGEgY2hhcmFjdGVyIHdpdGhvdXQgdGhlICJtYXJrIiBwcm9wZXJ0eSwgZm9sbG93ZWQKLSAgICAgICBieSB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyB3aXRoIHRoZSAibWFyayIgIHByb3BlcnR5LiAgQ2hhcmFjdGVycyAgd2l0aAotICAgICAgIHRoZSAgIm1hcmsiICBwcm9wZXJ0eSBhcmUgdHlwaWNhbGx5IG5vbi1zcGFjaW5nIGFjY2VudHMgdGhhdCBhZmZlY3QgdGhlCisgICAgICAgVGhhdCBpcywgaXQgbWF0Y2hlZCBhIGNoYXJhY3RlciB3aXRob3V0IHRoZSAibWFyayIgIHByb3BlcnR5LCAgZm9sbG93ZWQKKyAgICAgICBieSAgemVybyAgb3IgIG1vcmUgY2hhcmFjdGVycyB3aXRoIHRoZSAibWFyayIgcHJvcGVydHkuIENoYXJhY3RlcnMgd2l0aAorICAgICAgIHRoZSAibWFyayIgcHJvcGVydHkgYXJlIHR5cGljYWxseSBub24tc3BhY2luZyBhY2NlbnRzIHRoYXQgIGFmZmVjdCAgdGhlCiAgICAgICAgcHJlY2VkaW5nIGNoYXJhY3Rlci4KIAotICAgICAgIFRoaXMgc2ltcGxlIGRlZmluaXRpb24gd2FzIGV4dGVuZGVkIGluIFVuaWNvZGUgdG8gaW5jbHVkZSBtb3JlICBjb21wbGktCi0gICAgICAgY2F0ZWQgIGtpbmRzIG9mIGNvbXBvc2l0ZSBjaGFyYWN0ZXIgYnkgZ2l2aW5nIGVhY2ggY2hhcmFjdGVyIGEgZ3JhcGhlbWUKLSAgICAgICBicmVha2luZyBwcm9wZXJ0eSwgYW5kIGNyZWF0aW5nIHJ1bGVzICB0aGF0ICB1c2UgIHRoZXNlICBwcm9wZXJ0aWVzICB0bwotICAgICAgIGRlZmluZSAgdGhlICBib3VuZGFyaWVzICBvZiAgZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMuIEluIHJlbGVhc2VzIG9mCisgICAgICAgVGhpcyAgc2ltcGxlIGRlZmluaXRpb24gd2FzIGV4dGVuZGVkIGluIFVuaWNvZGUgdG8gaW5jbHVkZSBtb3JlIGNvbXBsaS0KKyAgICAgICBjYXRlZCBraW5kcyBvZiBjb21wb3NpdGUgY2hhcmFjdGVyIGJ5IGdpdmluZyBlYWNoIGNoYXJhY3RlciBhICBncmFwaGVtZQorICAgICAgIGJyZWFraW5nICBwcm9wZXJ0eSwgIGFuZCAgY3JlYXRpbmcgIHJ1bGVzICB0aGF0IHVzZSB0aGVzZSBwcm9wZXJ0aWVzIHRvCisgICAgICAgZGVmaW5lIHRoZSBib3VuZGFyaWVzIG9mIGV4dGVuZGVkIGdyYXBoZW1lICBjbHVzdGVycy4gIEluICByZWxlYXNlcyAgb2YKICAgICAgICBQQ1JFIGxhdGVyIHRoYW4gOC4zMSwgXFggbWF0Y2hlcyBvbmUgb2YgdGhlc2UgY2x1c3RlcnMuCiAKLSAgICAgICBcWCBhbHdheXMgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLiBUaGVuIGl0ICBkZWNpZGVzICB3aGV0aGVyICB0bworICAgICAgIFxYICBhbHdheXMgIG1hdGNoZXMgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIuIFRoZW4gaXQgZGVjaWRlcyB3aGV0aGVyIHRvCiAgICAgICAgYWRkIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlcyBmb3IgZW5kaW5nIGEKICAgICAgICBjbHVzdGVyOgogCiAgICAgICAgMS4gRW5kIGF0IHRoZSBlbmQgb2YgdGhlIHN1YmplY3Qgc3RyaW5nLgogCi0gICAgICAgMi4gRG8gbm90IGVuZCBiZXR3ZWVuIENSIGFuZCBMRjsgb3RoZXJ3aXNlIGVuZCBhZnRlciBhbnkgY29udHJvbCAgY2hhci0KKyAgICAgICAyLiAgRG8gbm90IGVuZCBiZXR3ZWVuIENSIGFuZCBMRjsgb3RoZXJ3aXNlIGVuZCBhZnRlciBhbnkgY29udHJvbCBjaGFyLQogICAgICAgIGFjdGVyLgogCi0gICAgICAgMy4gIERvICBub3QgIGJyZWFrICBIYW5ndWwgKGEgS29yZWFuIHNjcmlwdCkgc3lsbGFibGUgc2VxdWVuY2VzLiBIYW5ndWwKLSAgICAgICBjaGFyYWN0ZXJzIGFyZSBvZiBmaXZlIHR5cGVzOiBMLCBWLCBULCBMViwgYW5kIExWVC4gQW4gTCBjaGFyYWN0ZXIgIG1heQotICAgICAgIGJlICBmb2xsb3dlZCBieSBhbiBMLCBWLCBMViwgb3IgTFZUIGNoYXJhY3RlcjsgYW4gTFYgb3IgViBjaGFyYWN0ZXIgbWF5CisgICAgICAgMy4gRG8gbm90IGJyZWFrIEhhbmd1bCAoYSBLb3JlYW4gIHNjcmlwdCkgIHN5bGxhYmxlICBzZXF1ZW5jZXMuICBIYW5ndWwKKyAgICAgICBjaGFyYWN0ZXJzICBhcmUgb2YgZml2ZSB0eXBlczogTCwgViwgVCwgTFYsIGFuZCBMVlQuIEFuIEwgY2hhcmFjdGVyIG1heQorICAgICAgIGJlIGZvbGxvd2VkIGJ5IGFuIEwsIFYsIExWLCBvciBMVlQgY2hhcmFjdGVyOyBhbiBMViBvciBWIGNoYXJhY3RlciAgbWF5CiAgICAgICAgYmUgZm9sbG93ZWQgYnkgYSBWIG9yIFQgY2hhcmFjdGVyOyBhbiBMVlQgb3IgVCBjaGFyYWN0ZXIgbWF5IGJlIGZvbGx3ZWQKICAgICAgICBvbmx5IGJ5IGEgVCBjaGFyYWN0ZXIuCiAKLSAgICAgICA0LiAgRG8gbm90IGVuZCBiZWZvcmUgZXh0ZW5kaW5nIGNoYXJhY3RlcnMgb3Igc3BhY2luZyBtYXJrcy4gQ2hhcmFjdGVycwotICAgICAgIHdpdGggdGhlICJtYXJrIiBwcm9wZXJ0eSBhbHdheXMgaGF2ZSAgdGhlICAiZXh0ZW5kIiAgZ3JhcGhlbWUgIGJyZWFraW5nCisgICAgICAgNC4gRG8gbm90IGVuZCBiZWZvcmUgZXh0ZW5kaW5nIGNoYXJhY3RlcnMgb3Igc3BhY2luZyBtYXJrcy4gIENoYXJhY3RlcnMKKyAgICAgICB3aXRoICB0aGUgICJtYXJrIiAgcHJvcGVydHkgIGFsd2F5cyBoYXZlIHRoZSAiZXh0ZW5kIiBncmFwaGVtZSBicmVha2luZwogICAgICAgIHByb3BlcnR5LgogCiAgICAgICAgNS4gRG8gbm90IGVuZCBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMuCkBAIC01NDkzLDkgKzU1MDYsOSBAQAogCiAgICBQQ1JFJ3MgYWRkaXRpb25hbCBwcm9wZXJ0aWVzCiAKLSAgICAgICBBcyAgd2VsbCAgYXMgdGhlIHN0YW5kYXJkIFVuaWNvZGUgcHJvcGVydGllcyBkZXNjcmliZWQgYWJvdmUsIFBDUkUgc3VwLQotICAgICAgIHBvcnRzIGZvdXIgbW9yZSB0aGF0IG1ha2UgaXQgcG9zc2libGUgIHRvICBjb252ZXJ0ICB0cmFkaXRpb25hbCAgZXNjYXBlCi0gICAgICAgc2VxdWVuY2VzICBzdWNoIGFzIFx3IGFuZCBccyB0byB1c2UgVW5pY29kZSBwcm9wZXJ0aWVzLiBQQ1JFIHVzZXMgdGhlc2UKKyAgICAgICBBcyB3ZWxsIGFzIHRoZSBzdGFuZGFyZCBVbmljb2RlIHByb3BlcnRpZXMgZGVzY3JpYmVkIGFib3ZlLCAgUENSRSAgc3VwLQorICAgICAgIHBvcnRzICBmb3VyICBtb3JlICB0aGF0ICBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbnZlcnQgdHJhZGl0aW9uYWwgZXNjYXBlCisgICAgICAgc2VxdWVuY2VzIHN1Y2ggYXMgXHcgYW5kIFxzIHRvIHVzZSBVbmljb2RlIHByb3BlcnRpZXMuIFBDUkUgdXNlcyAgdGhlc2UKICAgICAgICBub24tc3RhbmRhcmQsIG5vbi1QZXJsIHByb3BlcnRpZXMgaW50ZXJuYWxseSB3aGVuIFBDUkVfVUNQIGlzIHNldC4gSG93LQogICAgICAgIGV2ZXIsIHRoZXkgbWF5IGFsc28gYmUgdXNlZCBleHBsaWNpdGx5LiBUaGVzZSBwcm9wZXJ0aWVzIGFyZToKIApAQCAtNTUwNCw1NCArNTUxNyw1NCBAQAogICAgICAgICAgWHNwICAgQW55IFBlcmwgc3BhY2UgY2hhcmFjdGVyCiAgICAgICAgICBYd2QgICBBbnkgUGVybCAid29yZCIgY2hhcmFjdGVyCiAKLSAgICAgICBYYW4gIG1hdGNoZXMgIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGVpdGhlciB0aGUgTCAobGV0dGVyKSBvciB0aGUgTiAobnVtLQotICAgICAgIGJlcikgcHJvcGVydHkuIFhwcyBtYXRjaGVzIHRoZSBjaGFyYWN0ZXJzIHRhYiwgbGluZWZlZWQsIHZlcnRpY2FsICB0YWIsCi0gICAgICAgZm9ybSAgZmVlZCwgIG9yIGNhcnJpYWdlIHJldHVybiwgYW5kIGFueSBvdGhlciBjaGFyYWN0ZXIgdGhhdCBoYXMgdGhlIFoKLSAgICAgICAoc2VwYXJhdG9yKSBwcm9wZXJ0eS4gIFhzcCBpcyB0aGUgc2FtZSBhcyBYcHM7IGl0IHVzZWQgdG8gZXhjbHVkZSAgdmVyLQotICAgICAgIHRpY2FsICB0YWIsICBmb3IgUGVybCBjb21wYXRpYmlsaXR5LCBidXQgUGVybCBjaGFuZ2VkLCBhbmQgc28gUENSRSBmb2wtCi0gICAgICAgbG93ZWQgYXQgcmVsZWFzZSA4LjM0LiBYd2QgbWF0Y2hlcyB0aGUgc2FtZSAgY2hhcmFjdGVycyAgYXMgIFhhbiwgIHBsdXMKKyAgICAgICBYYW4gbWF0Y2hlcyBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBlaXRoZXIgdGhlIEwgKGxldHRlcikgb3IgdGhlICBOICAobnVtLQorICAgICAgIGJlcikgIHByb3BlcnR5LiBYcHMgbWF0Y2hlcyB0aGUgY2hhcmFjdGVycyB0YWIsIGxpbmVmZWVkLCB2ZXJ0aWNhbCB0YWIsCisgICAgICAgZm9ybSBmZWVkLCBvciBjYXJyaWFnZSByZXR1cm4sIGFuZCBhbnkgb3RoZXIgY2hhcmFjdGVyIHRoYXQgaGFzICB0aGUgIFoKKyAgICAgICAoc2VwYXJhdG9yKSAgcHJvcGVydHkuICBYc3AgaXMgdGhlIHNhbWUgYXMgWHBzOyBpdCB1c2VkIHRvIGV4Y2x1ZGUgdmVyLQorICAgICAgIHRpY2FsIHRhYiwgZm9yIFBlcmwgY29tcGF0aWJpbGl0eSwgYnV0IFBlcmwgY2hhbmdlZCwgYW5kIHNvICBQQ1JFICBmb2wtCisgICAgICAgbG93ZWQgIGF0ICByZWxlYXNlICA4LjM0LiAgWHdkIG1hdGNoZXMgdGhlIHNhbWUgY2hhcmFjdGVycyBhcyBYYW4sIHBsdXMKICAgICAgICB1bmRlcnNjb3JlLgogCi0gICAgICAgVGhlcmUgIGlzIGFub3RoZXIgbm9uLXN0YW5kYXJkIHByb3BlcnR5LCBYdWMsIHdoaWNoIG1hdGNoZXMgYW55IGNoYXJhYy0KLSAgICAgICB0ZXIgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgYSBVbml2ZXJzYWwgQ2hhcmFjdGVyIE5hbWUgIGluICBDKysgIGFuZAotICAgICAgIG90aGVyICBwcm9ncmFtbWluZyAgbGFuZ3VhZ2VzLiAgVGhlc2UgYXJlIHRoZSBjaGFyYWN0ZXJzICQsIEAsIGAgKGdyYXZlCi0gICAgICAgYWNjZW50KSwgYW5kIGFsbCBjaGFyYWN0ZXJzIHdpdGggVW5pY29kZSBjb2RlIHBvaW50cyAgZ3JlYXRlciAgdGhhbiAgb3IKLSAgICAgICBlcXVhbCAgdG8gVSswMEEwLCBleGNlcHQgZm9yIHRoZSBzdXJyb2dhdGVzIFUrRDgwMCB0byBVK0RGRkYuIE5vdGUgdGhhdAotICAgICAgIG1vc3QgYmFzZSAoQVNDSUkpIGNoYXJhY3RlcnMgYXJlIGV4Y2x1ZGVkLiAoVW5pdmVyc2FsICBDaGFyYWN0ZXIgIE5hbWVzCi0gICAgICAgYXJlICBvZiAgdGhlICBmb3JtIFx1SEhISCBvciBcVUhISEhISEhIIHdoZXJlIEggaXMgYSBoZXhhZGVjaW1hbCBkaWdpdC4KKyAgICAgICBUaGVyZSBpcyBhbm90aGVyIG5vbi1zdGFuZGFyZCBwcm9wZXJ0eSwgWHVjLCB3aGljaCBtYXRjaGVzIGFueSAgY2hhcmFjLQorICAgICAgIHRlciAgdGhhdCAgY2FuICBiZSByZXByZXNlbnRlZCBieSBhIFVuaXZlcnNhbCBDaGFyYWN0ZXIgTmFtZSBpbiBDKysgYW5kCisgICAgICAgb3RoZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLiBUaGVzZSBhcmUgdGhlIGNoYXJhY3RlcnMgJCwgIEAsICBgICAoZ3JhdmUKKyAgICAgICBhY2NlbnQpLCAgYW5kICBhbGwgIGNoYXJhY3RlcnMgd2l0aCBVbmljb2RlIGNvZGUgcG9pbnRzIGdyZWF0ZXIgdGhhbiBvcgorICAgICAgIGVxdWFsIHRvIFUrMDBBMCwgZXhjZXB0IGZvciB0aGUgc3Vycm9nYXRlcyBVK0Q4MDAgdG8gVStERkZGLiBOb3RlICB0aGF0CisgICAgICAgbW9zdCAgYmFzZSAgKEFTQ0lJKSBjaGFyYWN0ZXJzIGFyZSBleGNsdWRlZC4gKFVuaXZlcnNhbCBDaGFyYWN0ZXIgTmFtZXMKKyAgICAgICBhcmUgb2YgdGhlIGZvcm0gXHVISEhIIG9yIFxVSEhISEhISEggd2hlcmUgSCBpcyAgYSAgaGV4YWRlY2ltYWwgIGRpZ2l0LgogICAgICAgIE5vdGUgdGhhdCB0aGUgWHVjIHByb3BlcnR5IGRvZXMgbm90IG1hdGNoIHRoZXNlIHNlcXVlbmNlcyBidXQgdGhlIGNoYXItCiAgICAgICAgYWN0ZXJzIHRoYXQgdGhleSByZXByZXNlbnQuKQogCiAgICBSZXNldHRpbmcgdGhlIG1hdGNoIHN0YXJ0CiAKLSAgICAgICBUaGUgIGVzY2FwZSBzZXF1ZW5jZSBcSyBjYXVzZXMgYW55IHByZXZpb3VzbHkgbWF0Y2hlZCBjaGFyYWN0ZXJzIG5vdCB0bworICAgICAgIFRoZSBlc2NhcGUgc2VxdWVuY2UgXEsgY2F1c2VzIGFueSBwcmV2aW91c2x5IG1hdGNoZWQgY2hhcmFjdGVycyBub3QgIHRvCiAgICAgICAgYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIG1hdGNoZWQgc2VxdWVuY2UuIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybjoKIAogICAgICAgICAgZm9vXEtiYXIKIAotICAgICAgIG1hdGNoZXMgImZvb2JhciIsIGJ1dCByZXBvcnRzIHRoYXQgaXQgaGFzIG1hdGNoZWQgImJhciIuICBUaGlzICBmZWF0dXJlCi0gICAgICAgaXMgIHNpbWlsYXIgIHRvICBhIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIChkZXNjcmliZWQgYmVsb3cpLiAgSG93ZXZlciwgaW4KLSAgICAgICB0aGlzIGNhc2UsIHRoZSBwYXJ0IG9mIHRoZSBzdWJqZWN0IGJlZm9yZSB0aGUgcmVhbCBtYXRjaCBkb2VzIG5vdCAgaGF2ZQotICAgICAgIHRvICBiZSBvZiBmaXhlZCBsZW5ndGgsIGFzIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBkby4gVGhlIHVzZSBvZiBcSyBkb2VzCi0gICAgICAgbm90IGludGVyZmVyZSB3aXRoIHRoZSBzZXR0aW5nIG9mIGNhcHR1cmVkICBzdWJzdHJpbmdzLiAgIEZvciAgZXhhbXBsZSwKKyAgICAgICBtYXRjaGVzICAiZm9vYmFyIiwgIGJ1dCByZXBvcnRzIHRoYXQgaXQgaGFzIG1hdGNoZWQgImJhciIuIFRoaXMgZmVhdHVyZQorICAgICAgIGlzIHNpbWlsYXIgdG8gYSBsb29rYmVoaW5kIGFzc2VydGlvbiAoZGVzY3JpYmVkICBiZWxvdykuICAgSG93ZXZlciwgIGluCisgICAgICAgdGhpcyAgY2FzZSwgdGhlIHBhcnQgb2YgdGhlIHN1YmplY3QgYmVmb3JlIHRoZSByZWFsIG1hdGNoIGRvZXMgbm90IGhhdmUKKyAgICAgICB0byBiZSBvZiBmaXhlZCBsZW5ndGgsIGFzIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBkby4gVGhlIHVzZSBvZiBcSyAgZG9lcworICAgICAgIG5vdCAgaW50ZXJmZXJlICB3aXRoICB0aGUgc2V0dGluZyBvZiBjYXB0dXJlZCBzdWJzdHJpbmdzLiAgRm9yIGV4YW1wbGUsCiAgICAgICAgd2hlbiB0aGUgcGF0dGVybgogCiAgICAgICAgICAoZm9vKVxLYmFyCiAKICAgICAgICBtYXRjaGVzICJmb29iYXIiLCB0aGUgZmlyc3Qgc3Vic3RyaW5nIGlzIHN0aWxsIHNldCB0byAiZm9vIi4KIAotICAgICAgIFBlcmwgIGRvY3VtZW50cyAgdGhhdCAgdGhlICB1c2UgIG9mICBcSyAgd2l0aGluIGFzc2VydGlvbnMgaXMgIm5vdCB3ZWxsCi0gICAgICAgZGVmaW5lZCIuIEluIFBDUkUsIFxLIGlzIGFjdGVkIHVwb24gIHdoZW4gIGl0ICBvY2N1cnMgIGluc2lkZSAgcG9zaXRpdmUKLSAgICAgICBhc3NlcnRpb25zLCAgYnV0ICBpcyAgaWdub3JlZCAgaW4gbmVnYXRpdmUgYXNzZXJ0aW9ucy4gTm90ZSB0aGF0IHdoZW4gYQotICAgICAgIHBhdHRlcm4gc3VjaCBhcyAoPz1hYlxLKSBtYXRjaGVzLCB0aGUgcmVwb3J0ZWQgc3RhcnQgb2YgdGhlICBtYXRjaCAgY2FuCisgICAgICAgUGVybCBkb2N1bWVudHMgdGhhdCB0aGUgdXNlICBvZiAgXEsgIHdpdGhpbiAgYXNzZXJ0aW9ucyAgaXMgICJub3QgIHdlbGwKKyAgICAgICBkZWZpbmVkIi4gIEluICBQQ1JFLCAgXEsgIGlzICBhY3RlZCB1cG9uIHdoZW4gaXQgb2NjdXJzIGluc2lkZSBwb3NpdGl2ZQorICAgICAgIGFzc2VydGlvbnMsIGJ1dCBpcyBpZ25vcmVkIGluIG5lZ2F0aXZlIGFzc2VydGlvbnMuICBOb3RlICB0aGF0ICB3aGVuICBhCisgICAgICAgcGF0dGVybiAgc3VjaCAgYXMgKD89YWJcSykgbWF0Y2hlcywgdGhlIHJlcG9ydGVkIHN0YXJ0IG9mIHRoZSBtYXRjaCBjYW4KICAgICAgICBiZSBncmVhdGVyIHRoYW4gdGhlIGVuZCBvZiB0aGUgbWF0Y2guCiAKICAgIFNpbXBsZSBhc3NlcnRpb25zCiAKLSAgICAgICBUaGUgIGZpbmFsIHVzZSBvZiBiYWNrc2xhc2ggaXMgZm9yIGNlcnRhaW4gc2ltcGxlIGFzc2VydGlvbnMuIEFuIGFzc2VyLQotICAgICAgIHRpb24gc3BlY2lmaWVzIGEgY29uZGl0aW9uIHRoYXQgaGFzIHRvIGJlIG1ldCBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgIGluCi0gICAgICAgYSAgbWF0Y2gsIHdpdGhvdXQgY29uc3VtaW5nIGFueSBjaGFyYWN0ZXJzIGZyb20gdGhlIHN1YmplY3Qgc3RyaW5nLiBUaGUKLSAgICAgICB1c2Ugb2Ygc3VicGF0dGVybnMgZm9yIG1vcmUgY29tcGxpY2F0ZWQgYXNzZXJ0aW9ucyBpcyBkZXNjcmliZWQgIGJlbG93LgorICAgICAgIFRoZSBmaW5hbCB1c2Ugb2YgYmFja3NsYXNoIGlzIGZvciBjZXJ0YWluIHNpbXBsZSBhc3NlcnRpb25zLiBBbiAgYXNzZXItCisgICAgICAgdGlvbiAgc3BlY2lmaWVzIGEgY29uZGl0aW9uIHRoYXQgaGFzIHRvIGJlIG1ldCBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgaW4KKyAgICAgICBhIG1hdGNoLCB3aXRob3V0IGNvbnN1bWluZyBhbnkgY2hhcmFjdGVycyBmcm9tIHRoZSBzdWJqZWN0IHN0cmluZy4gIFRoZQorICAgICAgIHVzZSAgb2Ygc3VicGF0dGVybnMgZm9yIG1vcmUgY29tcGxpY2F0ZWQgYXNzZXJ0aW9ucyBpcyBkZXNjcmliZWQgYmVsb3cuCiAgICAgICAgVGhlIGJhY2tzbGFzaGVkIGFzc2VydGlvbnMgYXJlOgogCiAgICAgICAgICBcYiAgICAgbWF0Y2hlcyBhdCBhIHdvcmQgYm91bmRhcnkKQEAgLTU1NjIsMTYxICs1NTc1LDE2MSBAQAogICAgICAgICAgXHogICAgIG1hdGNoZXMgb25seSBhdCB0aGUgZW5kIG9mIHRoZSBzdWJqZWN0CiAgICAgICAgICBcRyAgICAgbWF0Y2hlcyBhdCB0aGUgZmlyc3QgbWF0Y2hpbmcgcG9zaXRpb24gaW4gdGhlIHN1YmplY3QKIAotICAgICAgIEluc2lkZSAgYSAgY2hhcmFjdGVyICBjbGFzcywgXGIgaGFzIGEgZGlmZmVyZW50IG1lYW5pbmc7IGl0IG1hdGNoZXMgdGhlCi0gICAgICAgYmFja3NwYWNlIGNoYXJhY3Rlci4gSWYgYW55IG90aGVyIG9mICB0aGVzZSAgYXNzZXJ0aW9ucyAgYXBwZWFycyAgaW4gIGEKLSAgICAgICBjaGFyYWN0ZXIgIGNsYXNzLCBieSBkZWZhdWx0IGl0IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgbGl0ZXJhbCBjaGFyLQorICAgICAgIEluc2lkZSBhIGNoYXJhY3RlciBjbGFzcywgXGIgaGFzIGEgZGlmZmVyZW50IG1lYW5pbmc7ICBpdCAgbWF0Y2hlcyAgdGhlCisgICAgICAgYmFja3NwYWNlICBjaGFyYWN0ZXIuICBJZiAgYW55ICBvdGhlciAgb2YgdGhlc2UgYXNzZXJ0aW9ucyBhcHBlYXJzIGluIGEKKyAgICAgICBjaGFyYWN0ZXIgY2xhc3MsIGJ5IGRlZmF1bHQgaXQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBsaXRlcmFsICBjaGFyLQogICAgICAgIGFjdGVyICAoZm9yICBleGFtcGxlLCAgXEIgIG1hdGNoZXMgIHRoZSAgbGV0dGVyICBCKS4gIEhvd2V2ZXIsICBpZiAgdGhlCi0gICAgICAgUENSRV9FWFRSQSAgb3B0aW9uIGlzIHNldCwgYW4gImludmFsaWQgZXNjYXBlIHNlcXVlbmNlIiBlcnJvciBpcyBnZW5lci0KKyAgICAgICBQQ1JFX0VYVFJBIG9wdGlvbiBpcyBzZXQsIGFuICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSIgZXJyb3IgaXMgIGdlbmVyLQogICAgICAgIGF0ZWQgaW5zdGVhZC4KIAotICAgICAgIEEgd29yZCBib3VuZGFyeSBpcyBhIHBvc2l0aW9uIGluIHRoZSBzdWJqZWN0IHN0cmluZyB3aGVyZSAgdGhlICBjdXJyZW50Ci0gICAgICAgY2hhcmFjdGVyICBhbmQgIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgZG8gbm90IGJvdGggbWF0Y2ggXHcgb3IgXFcgKGkuZS4KLSAgICAgICBvbmUgbWF0Y2hlcyBcdyBhbmQgdGhlIG90aGVyIG1hdGNoZXMgXFcpLCBvciB0aGUgc3RhcnQgb3IgIGVuZCAgb2YgIHRoZQotICAgICAgIHN0cmluZyAgaWYgIHRoZSAgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgbWF0Y2hlcyBcdywgcmVzcGVjdGl2ZWx5LiBJbiBhCi0gICAgICAgVVRGIG1vZGUsIHRoZSBtZWFuaW5ncyBvZiBcdyBhbmQgXFcgIGNhbiAgYmUgIGNoYW5nZWQgIGJ5ICBzZXR0aW5nICB0aGUKLSAgICAgICBQQ1JFX1VDUCAgb3B0aW9uLiBXaGVuIHRoaXMgaXMgZG9uZSwgaXQgYWxzbyBhZmZlY3RzIFxiIGFuZCBcQi4gTmVpdGhlcgotICAgICAgIFBDUkUgbm9yIFBlcmwgaGFzIGEgc2VwYXJhdGUgInN0YXJ0IG9mIHdvcmQiIG9yICJlbmQgb2YgIHdvcmQiICBtZXRhc2UtCi0gICAgICAgcXVlbmNlLiAgSG93ZXZlciwgIHdoYXRldmVyIGZvbGxvd3MgXGIgbm9ybWFsbHkgZGV0ZXJtaW5lcyB3aGljaCBpdCBpcy4KKyAgICAgICBBICB3b3JkICBib3VuZGFyeSBpcyBhIHBvc2l0aW9uIGluIHRoZSBzdWJqZWN0IHN0cmluZyB3aGVyZSB0aGUgY3VycmVudAorICAgICAgIGNoYXJhY3RlciBhbmQgdGhlIHByZXZpb3VzIGNoYXJhY3RlciBkbyBub3QgYm90aCBtYXRjaCBcdyBvciAgXFcgIChpLmUuCisgICAgICAgb25lICBtYXRjaGVzICBcdyAgYW5kIHRoZSBvdGhlciBtYXRjaGVzIFxXKSwgb3IgdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUKKyAgICAgICBzdHJpbmcgaWYgdGhlIGZpcnN0IG9yIGxhc3QgY2hhcmFjdGVyIG1hdGNoZXMgXHcsICByZXNwZWN0aXZlbHkuICBJbiAgYQorICAgICAgIFVURiAgbW9kZSwgIHRoZSAgbWVhbmluZ3MgIG9mICBcdyAgYW5kIFxXIGNhbiBiZSBjaGFuZ2VkIGJ5IHNldHRpbmcgdGhlCisgICAgICAgUENSRV9VQ1Agb3B0aW9uLiBXaGVuIHRoaXMgaXMgZG9uZSwgaXQgYWxzbyBhZmZlY3RzIFxiIGFuZCBcQi4gIE5laXRoZXIKKyAgICAgICBQQ1JFICBub3IgIFBlcmwgaGFzIGEgc2VwYXJhdGUgInN0YXJ0IG9mIHdvcmQiIG9yICJlbmQgb2Ygd29yZCIgbWV0YXNlLQorICAgICAgIHF1ZW5jZS4gSG93ZXZlciwgd2hhdGV2ZXIgZm9sbG93cyBcYiBub3JtYWxseSBkZXRlcm1pbmVzIHdoaWNoICBpdCAgaXMuCiAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmcmFnbWVudCBcYmEgbWF0Y2hlcyAiYSIgYXQgdGhlIHN0YXJ0IG9mIGEgd29yZC4KIAotICAgICAgIFRoZSBcQSwgXFosIGFuZCBceiBhc3NlcnRpb25zIGRpZmZlciBmcm9tICB0aGUgIHRyYWRpdGlvbmFsICBjaXJjdW1mbGV4CisgICAgICAgVGhlICBcQSwgIFxaLCAgYW5kIFx6IGFzc2VydGlvbnMgZGlmZmVyIGZyb20gdGhlIHRyYWRpdGlvbmFsIGNpcmN1bWZsZXgKICAgICAgICBhbmQgZG9sbGFyIChkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbikgaW4gdGhhdCB0aGV5IG9ubHkgZXZlciBtYXRjaAotICAgICAgIGF0IHRoZSB2ZXJ5IHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHN1YmplY3Qgc3RyaW5nLCB3aGF0ZXZlciAgb3B0aW9ucyAgYXJlCi0gICAgICAgc2V0LiAgVGh1cywgIHRoZXkgYXJlIGluZGVwZW5kZW50IG9mIG11bHRpbGluZSBtb2RlLiBUaGVzZSB0aHJlZSBhc3Nlci0KKyAgICAgICBhdCAgdGhlICB2ZXJ5IHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHN1YmplY3Qgc3RyaW5nLCB3aGF0ZXZlciBvcHRpb25zIGFyZQorICAgICAgIHNldC4gVGh1cywgdGhleSBhcmUgaW5kZXBlbmRlbnQgb2YgbXVsdGlsaW5lIG1vZGUuIFRoZXNlICB0aHJlZSAgYXNzZXItCiAgICAgICAgdGlvbnMgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgUENSRV9OT1RCT0wgb3IgUENSRV9OT1RFT0wgb3B0aW9ucywgd2hpY2gKLSAgICAgICBhZmZlY3QgIG9ubHkgdGhlIGJlaGF2aW91ciBvZiB0aGUgY2lyY3VtZmxleCBhbmQgZG9sbGFyIG1ldGFjaGFyYWN0ZXJzLgotICAgICAgIEhvd2V2ZXIsIGlmIHRoZSBzdGFydG9mZnNldCBhcmd1bWVudCBvZiBwY3JlX2V4ZWMoKSBpcyBub24temVybywgIGluZGktCisgICAgICAgYWZmZWN0IG9ubHkgdGhlIGJlaGF2aW91ciBvZiB0aGUgY2lyY3VtZmxleCBhbmQgZG9sbGFyICBtZXRhY2hhcmFjdGVycy4KKyAgICAgICBIb3dldmVyLCAgaWYgdGhlIHN0YXJ0b2Zmc2V0IGFyZ3VtZW50IG9mIHBjcmVfZXhlYygpIGlzIG5vbi16ZXJvLCBpbmRpLQogICAgICAgIGNhdGluZyB0aGF0IG1hdGNoaW5nIGlzIHRvIHN0YXJ0IGF0IGEgcG9pbnQgb3RoZXIgdGhhbiB0aGUgYmVnaW5uaW5nIG9mCi0gICAgICAgdGhlIHN1YmplY3QsIFxBIGNhbiBuZXZlciBtYXRjaC4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBcWiAgYW5kICBceiAgaXMKKyAgICAgICB0aGUgIHN1YmplY3QsICBcQSAgY2FuIG5ldmVyIG1hdGNoLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFxaIGFuZCBceiBpcwogICAgICAgIHRoYXQgXFogbWF0Y2hlcyBiZWZvcmUgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcyB3ZWxsIGFzIGF0CiAgICAgICAgdGhlIHZlcnkgZW5kLCB3aGVyZWFzIFx6IG1hdGNoZXMgb25seSBhdCB0aGUgZW5kLgogCi0gICAgICAgVGhlIFxHIGFzc2VydGlvbiBpcyB0cnVlIG9ubHkgd2hlbiB0aGUgY3VycmVudCBtYXRjaGluZyBwb3NpdGlvbiBpcyAgYXQKLSAgICAgICB0aGUgIHN0YXJ0IHBvaW50IG9mIHRoZSBtYXRjaCwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBzdGFydG9mZnNldCBhcmd1bWVudAotICAgICAgIG9mIHBjcmVfZXhlYygpLiBJdCBkaWZmZXJzIGZyb20gXEEgd2hlbiB0aGUgIHZhbHVlICBvZiAgc3RhcnRvZmZzZXQgIGlzCi0gICAgICAgbm9uLXplcm8uICBCeSBjYWxsaW5nIHBjcmVfZXhlYygpIG11bHRpcGxlIHRpbWVzIHdpdGggYXBwcm9wcmlhdGUgYXJndS0KKyAgICAgICBUaGUgIFxHIGFzc2VydGlvbiBpcyB0cnVlIG9ubHkgd2hlbiB0aGUgY3VycmVudCBtYXRjaGluZyBwb3NpdGlvbiBpcyBhdAorICAgICAgIHRoZSBzdGFydCBwb2ludCBvZiB0aGUgbWF0Y2gsIGFzIHNwZWNpZmllZCBieSB0aGUgc3RhcnRvZmZzZXQgIGFyZ3VtZW50CisgICAgICAgb2YgIHBjcmVfZXhlYygpLiAgSXQgIGRpZmZlcnMgIGZyb20gXEEgd2hlbiB0aGUgdmFsdWUgb2Ygc3RhcnRvZmZzZXQgaXMKKyAgICAgICBub24temVyby4gQnkgY2FsbGluZyBwY3JlX2V4ZWMoKSBtdWx0aXBsZSB0aW1lcyB3aXRoIGFwcHJvcHJpYXRlICBhcmd1LQogICAgICAgIG1lbnRzLCB5b3UgY2FuIG1pbWljIFBlcmwncyAvZyBvcHRpb24sIGFuZCBpdCBpcyBpbiB0aGlzIGtpbmQgb2YgaW1wbGUtCiAgICAgICAgbWVudGF0aW9uIHdoZXJlIFxHIGNhbiBiZSB1c2VmdWwuCiAKLSAgICAgICBOb3RlLCAgaG93ZXZlciwgIHRoYXQgIFBDUkUncyBpbnRlcnByZXRhdGlvbiBvZiBcRywgYXMgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgIE5vdGUsIGhvd2V2ZXIsIHRoYXQgUENSRSdzIGludGVycHJldGF0aW9uIG9mIFxHLCBhcyB0aGUgIHN0YXJ0ICBvZiAgdGhlCiAgICAgICAgY3VycmVudCBtYXRjaCwgaXMgc3VidGx5IGRpZmZlcmVudCBmcm9tIFBlcmwncywgd2hpY2ggZGVmaW5lcyBpdCBhcyB0aGUKLSAgICAgICBlbmQgIG9mICB0aGUgIHByZXZpb3VzICBtYXRjaC4gSW4gUGVybCwgdGhlc2UgY2FuIGJlIGRpZmZlcmVudCB3aGVuIHRoZQotICAgICAgIHByZXZpb3VzbHkgbWF0Y2hlZCBzdHJpbmcgd2FzIGVtcHR5LiBCZWNhdXNlIFBDUkUgZG9lcyBqdXN0ICBvbmUgIG1hdGNoCisgICAgICAgZW5kIG9mIHRoZSBwcmV2aW91cyBtYXRjaC4gSW4gUGVybCwgdGhlc2UgY2FuICBiZSAgZGlmZmVyZW50ICB3aGVuICB0aGUKKyAgICAgICBwcmV2aW91c2x5ICBtYXRjaGVkICBzdHJpbmcgd2FzIGVtcHR5LiBCZWNhdXNlIFBDUkUgZG9lcyBqdXN0IG9uZSBtYXRjaAogICAgICAgIGF0IGEgdGltZSwgaXQgY2Fubm90IHJlcHJvZHVjZSB0aGlzIGJlaGF2aW91ci4KIAotICAgICAgIElmICBhbGwgIHRoZSBhbHRlcm5hdGl2ZXMgb2YgYSBwYXR0ZXJuIGJlZ2luIHdpdGggXEcsIHRoZSBleHByZXNzaW9uIGlzCisgICAgICAgSWYgYWxsIHRoZSBhbHRlcm5hdGl2ZXMgb2YgYSBwYXR0ZXJuIGJlZ2luIHdpdGggXEcsIHRoZSAgZXhwcmVzc2lvbiAgaXMKICAgICAgICBhbmNob3JlZCB0byB0aGUgc3RhcnRpbmcgbWF0Y2ggcG9zaXRpb24sIGFuZCB0aGUgImFuY2hvcmVkIiBmbGFnIGlzIHNldAogICAgICAgIGluIHRoZSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24uCiAKIAogQ0lSQ1VNRkxFWCBBTkQgRE9MTEFSCiAKLSAgICAgICBUaGUgIGNpcmN1bWZsZXggIGFuZCAgZG9sbGFyICBtZXRhY2hhcmFjdGVycyBhcmUgemVyby13aWR0aCBhc3NlcnRpb25zLgotICAgICAgIFRoYXQgaXMsIHRoZXkgdGVzdCBmb3IgYSBwYXJ0aWN1bGFyIGNvbmRpdGlvbiBiZWluZyB0cnVlICB3aXRob3V0ICBjb24tCisgICAgICAgVGhlIGNpcmN1bWZsZXggYW5kIGRvbGxhciAgbWV0YWNoYXJhY3RlcnMgIGFyZSAgemVyby13aWR0aCAgYXNzZXJ0aW9ucy4KKyAgICAgICBUaGF0ICBpcywgIHRoZXkgdGVzdCBmb3IgYSBwYXJ0aWN1bGFyIGNvbmRpdGlvbiBiZWluZyB0cnVlIHdpdGhvdXQgY29uLQogICAgICAgIHN1bWluZyBhbnkgY2hhcmFjdGVycyBmcm9tIHRoZSBzdWJqZWN0IHN0cmluZy4KIAogICAgICAgIE91dHNpZGUgYSBjaGFyYWN0ZXIgY2xhc3MsIGluIHRoZSBkZWZhdWx0IG1hdGNoaW5nIG1vZGUsIHRoZSBjaXJjdW1mbGV4Ci0gICAgICAgY2hhcmFjdGVyIGlzIGFuIGFzc2VydGlvbiB0aGF0IGlzIHRydWUgb25seSAgaWYgIHRoZSAgY3VycmVudCAgbWF0Y2hpbmcKLSAgICAgICBwb2ludCAgaXMgIGF0IHRoZSBzdGFydCBvZiB0aGUgc3ViamVjdCBzdHJpbmcuIElmIHRoZSBzdGFydG9mZnNldCBhcmd1LQotICAgICAgIG1lbnQgb2YgcGNyZV9leGVjKCkgaXMgbm9uLXplcm8sIGNpcmN1bWZsZXggIGNhbiAgbmV2ZXIgIG1hdGNoICBpZiAgdGhlCi0gICAgICAgUENSRV9NVUxUSUxJTkUgIG9wdGlvbiAgaXMgIHVuc2V0LiBJbnNpZGUgYSBjaGFyYWN0ZXIgY2xhc3MsIGNpcmN1bWZsZXgKKyAgICAgICBjaGFyYWN0ZXIgIGlzICBhbiAgYXNzZXJ0aW9uICB0aGF0IGlzIHRydWUgb25seSBpZiB0aGUgY3VycmVudCBtYXRjaGluZworICAgICAgIHBvaW50IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgc3ViamVjdCBzdHJpbmcuIElmIHRoZSAgc3RhcnRvZmZzZXQgIGFyZ3UtCisgICAgICAgbWVudCAgb2YgIHBjcmVfZXhlYygpICBpcyAgbm9uLXplcm8sICBjaXJjdW1mbGV4IGNhbiBuZXZlciBtYXRjaCBpZiB0aGUKKyAgICAgICBQQ1JFX01VTFRJTElORSBvcHRpb24gaXMgdW5zZXQuIEluc2lkZSBhICBjaGFyYWN0ZXIgIGNsYXNzLCAgY2lyY3VtZmxleAogICAgICAgIGhhcyBhbiBlbnRpcmVseSBkaWZmZXJlbnQgbWVhbmluZyAoc2VlIGJlbG93KS4KIAotICAgICAgIENpcmN1bWZsZXggbmVlZCBub3QgYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcGF0dGVybiBpZiAgYSAgbnVtYmVyCi0gICAgICAgb2YgIGFsdGVybmF0aXZlcyBhcmUgaW52b2x2ZWQsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGZpcnN0IHRoaW5nIGluIGVhY2gKLSAgICAgICBhbHRlcm5hdGl2ZSBpbiB3aGljaCBpdCBhcHBlYXJzIGlmIHRoZSBwYXR0ZXJuIGlzIGV2ZXIgIHRvICBtYXRjaCAgdGhhdAotICAgICAgIGJyYW5jaC4gIElmIGFsbCBwb3NzaWJsZSBhbHRlcm5hdGl2ZXMgc3RhcnQgd2l0aCBhIGNpcmN1bWZsZXgsIHRoYXQgaXMsCi0gICAgICAgaWYgdGhlIHBhdHRlcm4gaXMgY29uc3RyYWluZWQgdG8gbWF0Y2ggb25seSBhdCB0aGUgc3RhcnQgIG9mICB0aGUgIHN1Yi0KLSAgICAgICBqZWN0LCAgaXQgIGlzICBzYWlkICB0byBiZSBhbiAiYW5jaG9yZWQiIHBhdHRlcm4uIChUaGVyZSBhcmUgYWxzbyBvdGhlcgorICAgICAgIENpcmN1bWZsZXggIG5lZWQgIG5vdCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBwYXR0ZXJuIGlmIGEgbnVtYmVyCisgICAgICAgb2YgYWx0ZXJuYXRpdmVzIGFyZSBpbnZvbHZlZCwgYnV0IGl0IHNob3VsZCBiZSB0aGUgZmlyc3QgdGhpbmcgaW4gIGVhY2gKKyAgICAgICBhbHRlcm5hdGl2ZSAgaW4gIHdoaWNoICBpdCBhcHBlYXJzIGlmIHRoZSBwYXR0ZXJuIGlzIGV2ZXIgdG8gbWF0Y2ggdGhhdAorICAgICAgIGJyYW5jaC4gSWYgYWxsIHBvc3NpYmxlIGFsdGVybmF0aXZlcyBzdGFydCB3aXRoIGEgY2lyY3VtZmxleCwgdGhhdCAgaXMsCisgICAgICAgaWYgIHRoZSAgcGF0dGVybiAgaXMgY29uc3RyYWluZWQgdG8gbWF0Y2ggb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlIHN1Yi0KKyAgICAgICBqZWN0LCBpdCBpcyBzYWlkIHRvIGJlIGFuICJhbmNob3JlZCIgcGF0dGVybi4gIChUaGVyZSAgYXJlICBhbHNvICBvdGhlcgogICAgICAgIGNvbnN0cnVjdHMgdGhhdCBjYW4gY2F1c2UgYSBwYXR0ZXJuIHRvIGJlIGFuY2hvcmVkLikKIAotICAgICAgIFRoZSBkb2xsYXIgY2hhcmFjdGVyIGlzIGFuIGFzc2VydGlvbiB0aGF0IGlzIHRydWUgb25seSBpZiAgdGhlICBjdXJyZW50Ci0gICAgICAgbWF0Y2hpbmcgIHBvaW50ICBpcyAgYXQgIHRoZSAgZW5kIG9mIHRoZSBzdWJqZWN0IHN0cmluZywgb3IgaW1tZWRpYXRlbHkKLSAgICAgICBiZWZvcmUgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyAoYnkgZGVmYXVsdCkuIE5vdGUsICBob3dldmVyLAotICAgICAgIHRoYXQgIGl0ICBkb2VzICBub3QgIGFjdHVhbGx5IG1hdGNoIHRoZSBuZXdsaW5lLiBEb2xsYXIgbmVlZCBub3QgYmUgdGhlCisgICAgICAgVGhlICBkb2xsYXIgIGNoYXJhY3RlciBpcyBhbiBhc3NlcnRpb24gdGhhdCBpcyB0cnVlIG9ubHkgaWYgdGhlIGN1cnJlbnQKKyAgICAgICBtYXRjaGluZyBwb2ludCBpcyBhdCB0aGUgZW5kIG9mICB0aGUgIHN1YmplY3QgIHN0cmluZywgIG9yICBpbW1lZGlhdGVseQorICAgICAgIGJlZm9yZSAgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyAoYnkgZGVmYXVsdCkuIE5vdGUsIGhvd2V2ZXIsCisgICAgICAgdGhhdCBpdCBkb2VzIG5vdCBhY3R1YWxseSBtYXRjaCB0aGUgbmV3bGluZS4gRG9sbGFyICBuZWVkICBub3QgIGJlICB0aGUKICAgICAgICBsYXN0IGNoYXJhY3RlciBvZiB0aGUgcGF0dGVybiBpZiBhIG51bWJlciBvZiBhbHRlcm5hdGl2ZXMgYXJlIGludm9sdmVkLAotICAgICAgIGJ1dCAgaXQgc2hvdWxkIGJlIHRoZSBsYXN0IGl0ZW0gaW4gYW55IGJyYW5jaCBpbiB3aGljaCBpdCBhcHBlYXJzLiBEb2wtCisgICAgICAgYnV0IGl0IHNob3VsZCBiZSB0aGUgbGFzdCBpdGVtIGluIGFueSBicmFuY2ggaW4gd2hpY2ggaXQgYXBwZWFycy4gIERvbC0KICAgICAgICBsYXIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBpbiBhIGNoYXJhY3RlciBjbGFzcy4KIAotICAgICAgIFRoZSBtZWFuaW5nIG9mIGRvbGxhciBjYW4gYmUgY2hhbmdlZCBzbyB0aGF0IGl0ICBtYXRjaGVzICBvbmx5ICBhdCAgdGhlCi0gICAgICAgdmVyeSAgZW5kICBvZiAgdGhlIHN0cmluZywgYnkgc2V0dGluZyB0aGUgUENSRV9ET0xMQVJfRU5ET05MWSBvcHRpb24gYXQKKyAgICAgICBUaGUgIG1lYW5pbmcgIG9mICBkb2xsYXIgIGNhbiBiZSBjaGFuZ2VkIHNvIHRoYXQgaXQgbWF0Y2hlcyBvbmx5IGF0IHRoZQorICAgICAgIHZlcnkgZW5kIG9mIHRoZSBzdHJpbmcsIGJ5IHNldHRpbmcgdGhlICBQQ1JFX0RPTExBUl9FTkRPTkxZICBvcHRpb24gIGF0CiAgICAgICAgY29tcGlsZSB0aW1lLiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgXFogYXNzZXJ0aW9uLgogCiAgICAgICAgVGhlIG1lYW5pbmdzIG9mIHRoZSBjaXJjdW1mbGV4IGFuZCBkb2xsYXIgY2hhcmFjdGVycyBhcmUgY2hhbmdlZCBpZiB0aGUKLSAgICAgICBQQ1JFX01VTFRJTElORSAgb3B0aW9uICBpcyAgc2V0LiAgV2hlbiAgdGhpcyAgaXMgdGhlIGNhc2UsIGEgY2lyY3VtZmxleAotICAgICAgIG1hdGNoZXMgaW1tZWRpYXRlbHkgYWZ0ZXIgaW50ZXJuYWwgbmV3bGluZXMgYXMgd2VsbCBhcyBhdCB0aGUgc3RhcnQgIG9mCi0gICAgICAgdGhlICBzdWJqZWN0ICBzdHJpbmcuICBJdCAgZG9lcyBub3QgbWF0Y2ggYWZ0ZXIgYSBuZXdsaW5lIHRoYXQgZW5kcyB0aGUKLSAgICAgICBzdHJpbmcuIEEgZG9sbGFyIG1hdGNoZXMgYmVmb3JlIGFueSBuZXdsaW5lcyBpbiB0aGUgc3RyaW5nLCBhcyB3ZWxsICBhcwotICAgICAgIGF0ICB0aGUgdmVyeSBlbmQsIHdoZW4gUENSRV9NVUxUSUxJTkUgaXMgc2V0LiBXaGVuIG5ld2xpbmUgaXMgc3BlY2lmaWVkCi0gICAgICAgYXMgdGhlIHR3by1jaGFyYWN0ZXIgc2VxdWVuY2UgQ1JMRiwgaXNvbGF0ZWQgQ1IgYW5kICBMRiAgY2hhcmFjdGVycyAgZG8KKyAgICAgICBQQ1JFX01VTFRJTElORSBvcHRpb24gaXMgc2V0LiBXaGVuICB0aGlzICBpcyAgdGhlICBjYXNlLCAgYSAgY2lyY3VtZmxleAorICAgICAgIG1hdGNoZXMgIGltbWVkaWF0ZWx5IGFmdGVyIGludGVybmFsIG5ld2xpbmVzIGFzIHdlbGwgYXMgYXQgdGhlIHN0YXJ0IG9mCisgICAgICAgdGhlIHN1YmplY3Qgc3RyaW5nLiBJdCBkb2VzIG5vdCBtYXRjaCBhZnRlciBhICBuZXdsaW5lICB0aGF0ICBlbmRzICB0aGUKKyAgICAgICBzdHJpbmcuICBBIGRvbGxhciBtYXRjaGVzIGJlZm9yZSBhbnkgbmV3bGluZXMgaW4gdGhlIHN0cmluZywgYXMgd2VsbCBhcworICAgICAgIGF0IHRoZSB2ZXJ5IGVuZCwgd2hlbiBQQ1JFX01VTFRJTElORSBpcyBzZXQuIFdoZW4gbmV3bGluZSBpcyAgc3BlY2lmaWVkCisgICAgICAgYXMgIHRoZSAgdHdvLWNoYXJhY3RlciAgc2VxdWVuY2UgQ1JMRiwgaXNvbGF0ZWQgQ1IgYW5kIExGIGNoYXJhY3RlcnMgZG8KICAgICAgICBub3QgaW5kaWNhdGUgbmV3bGluZXMuCiAKLSAgICAgICBGb3IgIGV4YW1wbGUsIHRoZSBwYXR0ZXJuIC9eYWJjJC8gbWF0Y2hlcyB0aGUgc3ViamVjdCBzdHJpbmcgImRlZlxuYWJjIgotICAgICAgICh3aGVyZSBcbiByZXByZXNlbnRzIGEgbmV3bGluZSkgaW4gbXVsdGlsaW5lIG1vZGUsIGJ1dCAgbm90ICBvdGhlcndpc2UuCi0gICAgICAgQ29uc2VxdWVudGx5LCAgcGF0dGVybnMgIHRoYXQgIGFyZSBhbmNob3JlZCBpbiBzaW5nbGUgbGluZSBtb2RlIGJlY2F1c2UKLSAgICAgICBhbGwgYnJhbmNoZXMgc3RhcnQgd2l0aCBeIGFyZSBub3QgYW5jaG9yZWQgaW4gIG11bHRpbGluZSAgbW9kZSwgIGFuZCAgYQotICAgICAgIG1hdGNoICBmb3IgIGNpcmN1bWZsZXggIGlzICBwb3NzaWJsZSAgd2hlbiAgdGhlIHN0YXJ0b2Zmc2V0IGFyZ3VtZW50IG9mCi0gICAgICAgcGNyZV9leGVjKCkgaXMgbm9uLXplcm8uIFRoZSBQQ1JFX0RPTExBUl9FTkRPTkxZIG9wdGlvbiBpcyAgaWdub3JlZCAgaWYKKyAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHBhdHRlcm4gL15hYmMkLyBtYXRjaGVzIHRoZSBzdWJqZWN0IHN0cmluZyAgImRlZlxuYWJjIgorICAgICAgICh3aGVyZSAgXG4gIHJlcHJlc2VudHMgYSBuZXdsaW5lKSBpbiBtdWx0aWxpbmUgbW9kZSwgYnV0IG5vdCBvdGhlcndpc2UuCisgICAgICAgQ29uc2VxdWVudGx5LCBwYXR0ZXJucyB0aGF0IGFyZSBhbmNob3JlZCBpbiBzaW5nbGUgIGxpbmUgIG1vZGUgIGJlY2F1c2UKKyAgICAgICBhbGwgIGJyYW5jaGVzICBzdGFydCAgd2l0aCAgXiBhcmUgbm90IGFuY2hvcmVkIGluIG11bHRpbGluZSBtb2RlLCBhbmQgYQorICAgICAgIG1hdGNoIGZvciBjaXJjdW1mbGV4IGlzICBwb3NzaWJsZSAgd2hlbiAgdGhlICBzdGFydG9mZnNldCAgYXJndW1lbnQgIG9mCisgICAgICAgcGNyZV9leGVjKCkgIGlzICBub24temVyby4gVGhlIFBDUkVfRE9MTEFSX0VORE9OTFkgb3B0aW9uIGlzIGlnbm9yZWQgaWYKICAgICAgICBQQ1JFX01VTFRJTElORSBpcyBzZXQuCiAKLSAgICAgICBOb3RlICB0aGF0ICB0aGUgc2VxdWVuY2VzIFxBLCBcWiwgYW5kIFx6IGNhbiBiZSB1c2VkIHRvIG1hdGNoIHRoZSBzdGFydAotICAgICAgIGFuZCBlbmQgb2YgdGhlIHN1YmplY3QgaW4gYm90aCBtb2RlcywgYW5kIGlmIGFsbCBicmFuY2hlcyBvZiBhICBwYXR0ZXJuCi0gICAgICAgc3RhcnQgIHdpdGggIFxBIGl0IGlzIGFsd2F5cyBhbmNob3JlZCwgd2hldGhlciBvciBub3QgUENSRV9NVUxUSUxJTkUgaXMKKyAgICAgICBOb3RlIHRoYXQgdGhlIHNlcXVlbmNlcyBcQSwgXFosIGFuZCBceiBjYW4gYmUgdXNlZCB0byBtYXRjaCAgdGhlICBzdGFydAorICAgICAgIGFuZCAgZW5kIG9mIHRoZSBzdWJqZWN0IGluIGJvdGggbW9kZXMsIGFuZCBpZiBhbGwgYnJhbmNoZXMgb2YgYSBwYXR0ZXJuCisgICAgICAgc3RhcnQgd2l0aCBcQSBpdCBpcyBhbHdheXMgYW5jaG9yZWQsIHdoZXRoZXIgb3Igbm90ICBQQ1JFX01VTFRJTElORSAgaXMKICAgICAgICBzZXQuCiAKIAogRlVMTCBTVE9QIChQRVJJT0QsIERPVCkgQU5EIFxOCiAKICAgICAgICBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCBhIGRvdCBpbiB0aGUgcGF0dGVybiBtYXRjaGVzIGFueSBvbmUgY2hhcmFjLQotICAgICAgIHRlciAgaW4gIHRoZSBzdWJqZWN0IHN0cmluZyBleGNlcHQgKGJ5IGRlZmF1bHQpIGEgY2hhcmFjdGVyIHRoYXQgc2lnbmktCisgICAgICAgdGVyIGluIHRoZSBzdWJqZWN0IHN0cmluZyBleGNlcHQgKGJ5IGRlZmF1bHQpIGEgY2hhcmFjdGVyICB0aGF0ICBzaWduaS0KICAgICAgICBmaWVzIHRoZSBlbmQgb2YgYSBsaW5lLgogCi0gICAgICAgV2hlbiBhIGxpbmUgZW5kaW5nIGlzIGRlZmluZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLCBkb3QgbmV2ZXIgIG1hdGNoZXMKLSAgICAgICB0aGF0ICBjaGFyYWN0ZXI7IHdoZW4gdGhlIHR3by1jaGFyYWN0ZXIgc2VxdWVuY2UgQ1JMRiBpcyB1c2VkLCBkb3QgZG9lcwotICAgICAgIG5vdCBtYXRjaCBDUiBpZiBpdCBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCAgYnkgIExGLCAgYnV0ICBvdGhlcndpc2UgIGl0Ci0gICAgICAgbWF0Y2hlcyAgYWxsIGNoYXJhY3RlcnMgKGluY2x1ZGluZyBpc29sYXRlZCBDUnMgYW5kIExGcykuIFdoZW4gYW55IFVuaS0KLSAgICAgICBjb2RlIGxpbmUgZW5kaW5ncyBhcmUgYmVpbmcgcmVjb2duaXplZCwgZG90IGRvZXMgbm90IG1hdGNoIENSIG9yIExGICBvcgorICAgICAgIFdoZW4gIGEgbGluZSBlbmRpbmcgaXMgZGVmaW5lZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIGRvdCBuZXZlciBtYXRjaGVzCisgICAgICAgdGhhdCBjaGFyYWN0ZXI7IHdoZW4gdGhlIHR3by1jaGFyYWN0ZXIgc2VxdWVuY2UgQ1JMRiBpcyB1c2VkLCBkb3QgIGRvZXMKKyAgICAgICBub3QgIG1hdGNoICBDUiAgaWYgIGl0ICBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBMRiwgYnV0IG90aGVyd2lzZSBpdAorICAgICAgIG1hdGNoZXMgYWxsIGNoYXJhY3RlcnMgKGluY2x1ZGluZyBpc29sYXRlZCBDUnMgYW5kIExGcykuIFdoZW4gYW55ICBVbmktCisgICAgICAgY29kZSAgbGluZSBlbmRpbmdzIGFyZSBiZWluZyByZWNvZ25pemVkLCBkb3QgZG9lcyBub3QgbWF0Y2ggQ1Igb3IgTEYgb3IKICAgICAgICBhbnkgb2YgdGhlIG90aGVyIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMuCiAKLSAgICAgICBUaGUgIGJlaGF2aW91ciAgb2YgIGRvdCAgd2l0aCByZWdhcmQgdG8gbmV3bGluZXMgY2FuIGJlIGNoYW5nZWQuIElmIHRoZQotICAgICAgIFBDUkVfRE9UQUxMIG9wdGlvbiBpcyBzZXQsIGEgZG90IG1hdGNoZXMgIGFueSAgb25lICBjaGFyYWN0ZXIsICB3aXRob3V0CisgICAgICAgVGhlIGJlaGF2aW91ciBvZiBkb3Qgd2l0aCByZWdhcmQgdG8gbmV3bGluZXMgY2FuICBiZSAgY2hhbmdlZC4gIElmICB0aGUKKyAgICAgICBQQ1JFX0RPVEFMTCAgb3B0aW9uICBpcyAgc2V0LCAgYSBkb3QgbWF0Y2hlcyBhbnkgb25lIGNoYXJhY3Rlciwgd2l0aG91dAogICAgICAgIGV4Y2VwdGlvbi4gSWYgdGhlIHR3by1jaGFyYWN0ZXIgc2VxdWVuY2UgQ1JMRiBpcyBwcmVzZW50IGluIHRoZSBzdWJqZWN0CiAgICAgICAgc3RyaW5nLCBpdCB0YWtlcyB0d28gZG90cyB0byBtYXRjaCBpdC4KIAotICAgICAgIFRoZSBoYW5kbGluZyBvZiBkb3QgaXMgZW50aXJlbHkgaW5kZXBlbmRlbnQgb2YgdGhlIGhhbmRsaW5nIG9mICBjaXJjdW0tCi0gICAgICAgZmxleCAgYW5kICBkb2xsYXIsICB0aGUgIG9ubHkgcmVsYXRpb25zaGlwIGJlaW5nIHRoYXQgdGhleSBib3RoIGludm9sdmUKKyAgICAgICBUaGUgIGhhbmRsaW5nIG9mIGRvdCBpcyBlbnRpcmVseSBpbmRlcGVuZGVudCBvZiB0aGUgaGFuZGxpbmcgb2YgY2lyY3VtLQorICAgICAgIGZsZXggYW5kIGRvbGxhciwgdGhlIG9ubHkgcmVsYXRpb25zaGlwIGJlaW5nICB0aGF0ICB0aGV5ICBib3RoICBpbnZvbHZlCiAgICAgICAgbmV3bGluZXMuIERvdCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGluIGEgY2hhcmFjdGVyIGNsYXNzLgogCi0gICAgICAgVGhlIGVzY2FwZSBzZXF1ZW5jZSBcTiBiZWhhdmVzIGxpa2UgIGEgIGRvdCwgIGV4Y2VwdCAgdGhhdCAgaXQgIGlzICBub3QKLSAgICAgICBhZmZlY3RlZCAgYnkgIHRoZSAgUENSRV9ET1RBTEwgIG9wdGlvbi4gIEluIG90aGVyIHdvcmRzLCBpdCBtYXRjaGVzIGFueQotICAgICAgIGNoYXJhY3RlciBleGNlcHQgb25lIHRoYXQgc2lnbmlmaWVzIHRoZSBlbmQgb2YgYSBsaW5lLiBQZXJsICBhbHNvICB1c2VzCisgICAgICAgVGhlICBlc2NhcGUgIHNlcXVlbmNlICBcTiAgYmVoYXZlcyAgbGlrZSAgYSAgZG90LCBleGNlcHQgdGhhdCBpdCBpcyBub3QKKyAgICAgICBhZmZlY3RlZCBieSB0aGUgUENSRV9ET1RBTEwgb3B0aW9uLiBJbiAgb3RoZXIgIHdvcmRzLCAgaXQgIG1hdGNoZXMgIGFueQorICAgICAgIGNoYXJhY3RlciAgZXhjZXB0ICBvbmUgdGhhdCBzaWduaWZpZXMgdGhlIGVuZCBvZiBhIGxpbmUuIFBlcmwgYWxzbyB1c2VzCiAgICAgICAgXE4gdG8gbWF0Y2ggY2hhcmFjdGVycyBieSBuYW1lOyBQQ1JFIGRvZXMgbm90IHN1cHBvcnQgdGhpcy4KIAogCiBNQVRDSElORyBBIFNJTkdMRSBEQVRBIFVOSVQKIAotICAgICAgIE91dHNpZGUgIGEgY2hhcmFjdGVyIGNsYXNzLCB0aGUgZXNjYXBlIHNlcXVlbmNlIFxDIG1hdGNoZXMgYW55IG9uZSBkYXRhCi0gICAgICAgdW5pdCwgd2hldGhlciBvciBub3QgYSBVVEYgbW9kZSBpcyBzZXQuIEluIHRoZSA4LWJpdCBsaWJyYXJ5LCBvbmUgIGRhdGEKLSAgICAgICB1bml0ICBpcyAgb25lICBieXRlOyAgaW4gdGhlIDE2LWJpdCBsaWJyYXJ5IGl0IGlzIGEgMTYtYml0IHVuaXQ7IGluIHRoZQotICAgICAgIDMyLWJpdCBsaWJyYXJ5IGl0IGlzIGEgMzItYml0IHVuaXQuIFVubGlrZSBhICBkb3QsICBcQyAgYWx3YXlzICBtYXRjaGVzCi0gICAgICAgbGluZS1lbmRpbmcgIGNoYXJhY3RlcnMuICBUaGUgIGZlYXR1cmUgIGlzIHByb3ZpZGVkIGluIFBlcmwgaW4gb3JkZXIgdG8KKyAgICAgICBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCB0aGUgZXNjYXBlIHNlcXVlbmNlIFxDIG1hdGNoZXMgYW55IG9uZSAgZGF0YQorICAgICAgIHVuaXQsICB3aGV0aGVyIG9yIG5vdCBhIFVURiBtb2RlIGlzIHNldC4gSW4gdGhlIDgtYml0IGxpYnJhcnksIG9uZSBkYXRhCisgICAgICAgdW5pdCBpcyBvbmUgYnl0ZTsgaW4gdGhlIDE2LWJpdCBsaWJyYXJ5IGl0IGlzIGEgIDE2LWJpdCAgdW5pdDsgIGluICB0aGUKKyAgICAgICAzMi1iaXQgIGxpYnJhcnkgIGl0ICBpcyAgYSAzMi1iaXQgdW5pdC4gVW5saWtlIGEgZG90LCBcQyBhbHdheXMgbWF0Y2hlcworICAgICAgIGxpbmUtZW5kaW5nIGNoYXJhY3RlcnMuIFRoZSBmZWF0dXJlIGlzIHByb3ZpZGVkIGluICBQZXJsICBpbiAgb3JkZXIgIHRvCiAgICAgICAgbWF0Y2ggaW5kaXZpZHVhbCBieXRlcyBpbiBVVEYtOCBtb2RlLCBidXQgaXQgaXMgdW5jbGVhciBob3cgaXQgY2FuIHVzZS0KLSAgICAgICBmdWxseSAgYmUgIHVzZWQuICBCZWNhdXNlICBcQyBicmVha3MgdXAgY2hhcmFjdGVycyBpbnRvIGluZGl2aWR1YWwgZGF0YQotICAgICAgIHVuaXRzLCBtYXRjaGluZyBvbmUgdW5pdCB3aXRoIFxDIGluIGEgVVRGIG1vZGUgbWVhbnMgdGhhdCB0aGUgIHJlc3QgIG9mCisgICAgICAgZnVsbHkgYmUgdXNlZC4gQmVjYXVzZSBcQyBicmVha3MgdXAgIGNoYXJhY3RlcnMgIGludG8gIGluZGl2aWR1YWwgIGRhdGEKKyAgICAgICB1bml0cywgIG1hdGNoaW5nICBvbmUgdW5pdCB3aXRoIFxDIGluIGEgVVRGIG1vZGUgbWVhbnMgdGhhdCB0aGUgcmVzdCBvZgogICAgICAgIHRoZSBzdHJpbmcgbWF5IHN0YXJ0IHdpdGggYSBtYWxmb3JtZWQgVVRGIGNoYXJhY3Rlci4gVGhpcyBoYXMgdW5kZWZpbmVkCiAgICAgICAgcmVzdWx0cywgYmVjYXVzZSBQQ1JFIGFzc3VtZXMgdGhhdCBpdCBpcyBkZWFsaW5nIHdpdGggdmFsaWQgVVRGIHN0cmluZ3MKLSAgICAgICAoYW5kICBieSAgZGVmYXVsdCAgaXQgY2hlY2tzIHRoaXMgYXQgdGhlIHN0YXJ0IG9mIHByb2Nlc3NpbmcgdW5sZXNzIHRoZQotICAgICAgIFBDUkVfTk9fVVRGOF9DSEVDSywgUENSRV9OT19VVEYxNl9DSEVDSyBvciAgUENSRV9OT19VVEYzMl9DSEVDSyAgb3B0aW9uCisgICAgICAgKGFuZCBieSBkZWZhdWx0IGl0IGNoZWNrcyB0aGlzIGF0IHRoZSBzdGFydCBvZiAgcHJvY2Vzc2luZyAgdW5sZXNzICB0aGUKKyAgICAgICBQQ1JFX05PX1VURjhfQ0hFQ0ssICBQQ1JFX05PX1VURjE2X0NIRUNLICBvciBQQ1JFX05PX1VURjMyX0NIRUNLIG9wdGlvbgogICAgICAgIGlzIHVzZWQpLgogCi0gICAgICAgUENSRSAgZG9lcyAgbm90ICBhbGxvdyBcQyB0byBhcHBlYXIgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIChkZXNjcmliZWQKLSAgICAgICBiZWxvdykgaW4gYSBVVEYgbW9kZSwgYmVjYXVzZSB0aGlzIHdvdWxkIG1ha2UgaXQgaW1wb3NzaWJsZSAgdG8gIGNhbGN1LQorICAgICAgIFBDUkUgZG9lcyBub3QgYWxsb3cgXEMgdG8gYXBwZWFyIGluICBsb29rYmVoaW5kICBhc3NlcnRpb25zICAoZGVzY3JpYmVkCisgICAgICAgYmVsb3cpICBpbiAgYSBVVEYgbW9kZSwgYmVjYXVzZSB0aGlzIHdvdWxkIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBjYWxjdS0KICAgICAgICBsYXRlIHRoZSBsZW5ndGggb2YgdGhlIGxvb2tiZWhpbmQuCiAKICAgICAgICBJbiBnZW5lcmFsLCB0aGUgXEMgZXNjYXBlIHNlcXVlbmNlIGlzIGJlc3QgYXZvaWRlZC4gSG93ZXZlciwgb25lIHdheSBvZgotICAgICAgIHVzaW5nIGl0IHRoYXQgYXZvaWRzIHRoZSBwcm9ibGVtIG9mIG1hbGZvcm1lZCBVVEYgY2hhcmFjdGVycyBpcyB0byAgdXNlCi0gICAgICAgYSAgbG9va2FoZWFkIHRvIGNoZWNrIHRoZSBsZW5ndGggb2YgdGhlIG5leHQgY2hhcmFjdGVyLCBhcyBpbiB0aGlzIHBhdC0KLSAgICAgICB0ZXJuLCB3aGljaCBjb3VsZCBiZSB1c2VkIHdpdGggYSBVVEYtOCBzdHJpbmcgKGlnbm9yZSB3aGl0ZSAgc3BhY2UgIGFuZAorICAgICAgIHVzaW5nICBpdCB0aGF0IGF2b2lkcyB0aGUgcHJvYmxlbSBvZiBtYWxmb3JtZWQgVVRGIGNoYXJhY3RlcnMgaXMgdG8gdXNlCisgICAgICAgYSBsb29rYWhlYWQgdG8gY2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIsIGFzIGluIHRoaXMgIHBhdC0KKyAgICAgICB0ZXJuLCAgd2hpY2ggIGNvdWxkIGJlIHVzZWQgd2l0aCBhIFVURi04IHN0cmluZyAoaWdub3JlIHdoaXRlIHNwYWNlIGFuZAogICAgICAgIGxpbmUgYnJlYWtzKToKIAogICAgICAgICAgKD98ICg/PVtceDAwLVx4N2ZdKShcQykgfApAQCAtNTcyNCwxMSArNTczNywxMSBAQAogICAgICAgICAgICAgICg/PVtceHs4MDB9LVx4e2ZmZmZ9XSkoXEMpKFxDKShcQykgfAogICAgICAgICAgICAgICg/PVtceHsxMDAwMH0tXHh7MWZmZmZmfV0pKFxDKShcQykoXEMpKFxDKSkKIAotICAgICAgIEEgIGdyb3VwICB0aGF0IHN0YXJ0cyB3aXRoICg/fCByZXNldHMgdGhlIGNhcHR1cmluZyBwYXJlbnRoZXNlcyBudW1iZXJzCi0gICAgICAgaW4gZWFjaCBhbHRlcm5hdGl2ZSAoc2VlICJEdXBsaWNhdGUgIFN1YnBhdHRlcm4gIE51bWJlcnMiICBiZWxvdykuICBUaGUKLSAgICAgICBhc3NlcnRpb25zICBhdCAgdGhlIHN0YXJ0IG9mIGVhY2ggYnJhbmNoIGNoZWNrIHRoZSBuZXh0IFVURi04IGNoYXJhY3RlcgotICAgICAgIGZvciB2YWx1ZXMgd2hvc2UgZW5jb2RpbmcgdXNlcyAxLCAyLCAzLCBvciA0IGJ5dGVzLCAgcmVzcGVjdGl2ZWx5LiAgVGhlCi0gICAgICAgY2hhcmFjdGVyJ3MgIGluZGl2aWR1YWwgYnl0ZXMgYXJlIHRoZW4gY2FwdHVyZWQgYnkgdGhlIGFwcHJvcHJpYXRlIG51bS0KKyAgICAgICBBIGdyb3VwIHRoYXQgc3RhcnRzIHdpdGggKD98IHJlc2V0cyB0aGUgY2FwdHVyaW5nICBwYXJlbnRoZXNlcyAgbnVtYmVycworICAgICAgIGluICBlYWNoICBhbHRlcm5hdGl2ZSAgKHNlZSAgIkR1cGxpY2F0ZSBTdWJwYXR0ZXJuIE51bWJlcnMiIGJlbG93KS4gVGhlCisgICAgICAgYXNzZXJ0aW9ucyBhdCB0aGUgc3RhcnQgb2YgZWFjaCBicmFuY2ggY2hlY2sgdGhlIG5leHQgIFVURi04ICBjaGFyYWN0ZXIKKyAgICAgICBmb3IgIHZhbHVlcyAgd2hvc2UgZW5jb2RpbmcgdXNlcyAxLCAyLCAzLCBvciA0IGJ5dGVzLCByZXNwZWN0aXZlbHkuIFRoZQorICAgICAgIGNoYXJhY3RlcidzIGluZGl2aWR1YWwgYnl0ZXMgYXJlIHRoZW4gY2FwdHVyZWQgYnkgdGhlIGFwcHJvcHJpYXRlICBudW0tCiAgICAgICAgYmVyIG9mIGdyb3Vwcy4KIAogCkBAIC01NzM4LDEwOSArNTc1MSwxMDkgQEAKICAgICAgICBjbG9zaW5nIHNxdWFyZSBicmFja2V0LiBBIGNsb3Npbmcgc3F1YXJlIGJyYWNrZXQgb24gaXRzIG93biBpcyBub3Qgc3BlLQogICAgICAgIGNpYWwgYnkgZGVmYXVsdC4gIEhvd2V2ZXIsIGlmIHRoZSBQQ1JFX0pBVkFTQ1JJUFRfQ09NUEFUIG9wdGlvbiBpcyBzZXQsCiAgICAgICAgYSBsb25lIGNsb3Npbmcgc3F1YXJlIGJyYWNrZXQgY2F1c2VzIGEgY29tcGlsZS10aW1lIGVycm9yLiBJZiBhIGNsb3NpbmcKLSAgICAgICBzcXVhcmUgYnJhY2tldCBpcyByZXF1aXJlZCBhcyBhIG1lbWJlciBvZiB0aGUgY2xhc3MsIGl0IHNob3VsZCAgYmUgIHRoZQotICAgICAgIGZpcnN0ICBkYXRhICBjaGFyYWN0ZXIgIGluICB0aGUgIGNsYXNzIChhZnRlciBhbiBpbml0aWFsIGNpcmN1bWZsZXgsIGlmCisgICAgICAgc3F1YXJlICBicmFja2V0ICBpcyByZXF1aXJlZCBhcyBhIG1lbWJlciBvZiB0aGUgY2xhc3MsIGl0IHNob3VsZCBiZSB0aGUKKyAgICAgICBmaXJzdCBkYXRhIGNoYXJhY3RlciBpbiB0aGUgY2xhc3MgIChhZnRlciAgYW4gIGluaXRpYWwgIGNpcmN1bWZsZXgsICBpZgogICAgICAgIHByZXNlbnQpIG9yIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaC4KIAotICAgICAgIEEgY2hhcmFjdGVyIGNsYXNzIG1hdGNoZXMgYSBzaW5nbGUgY2hhcmFjdGVyIGluIHRoZSBzdWJqZWN0LiBJbiAgYSAgVVRGCi0gICAgICAgbW9kZSwgIHRoZSAgY2hhcmFjdGVyICBtYXkgIGJlICBtb3JlIHRoYW4gb25lIGRhdGEgdW5pdCBsb25nLiBBIG1hdGNoZWQKKyAgICAgICBBICBjaGFyYWN0ZXIgIGNsYXNzIG1hdGNoZXMgYSBzaW5nbGUgY2hhcmFjdGVyIGluIHRoZSBzdWJqZWN0LiBJbiBhIFVURgorICAgICAgIG1vZGUsIHRoZSBjaGFyYWN0ZXIgbWF5IGJlIG1vcmUgdGhhbiBvbmUgIGRhdGEgIHVuaXQgIGxvbmcuICBBICBtYXRjaGVkCiAgICAgICAgY2hhcmFjdGVyIG11c3QgYmUgaW4gdGhlIHNldCBvZiBjaGFyYWN0ZXJzIGRlZmluZWQgYnkgdGhlIGNsYXNzLCB1bmxlc3MKLSAgICAgICB0aGUgIGZpcnN0ICBjaGFyYWN0ZXIgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgYSBjaXJjdW1mbGV4LCBpbiB3aGljaAorICAgICAgIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgYSBjaXJjdW1mbGV4LCAgaW4gIHdoaWNoCiAgICAgICAgY2FzZSB0aGUgc3ViamVjdCBjaGFyYWN0ZXIgbXVzdCBub3QgYmUgaW4gdGhlIHNldCBkZWZpbmVkIGJ5IHRoZSBjbGFzcy4KLSAgICAgICBJZiAgYSAgY2lyY3VtZmxleCBpcyBhY3R1YWxseSByZXF1aXJlZCBhcyBhIG1lbWJlciBvZiB0aGUgY2xhc3MsIGVuc3VyZQorICAgICAgIElmIGEgY2lyY3VtZmxleCBpcyBhY3R1YWxseSByZXF1aXJlZCBhcyBhIG1lbWJlciBvZiB0aGUgIGNsYXNzLCAgZW5zdXJlCiAgICAgICAgaXQgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIG9yIGVzY2FwZSBpdCB3aXRoIGEgYmFja3NsYXNoLgogCi0gICAgICAgRm9yIGV4YW1wbGUsIHRoZSBjaGFyYWN0ZXIgY2xhc3MgW2FlaW91XSBtYXRjaGVzIGFueSBsb3dlciBjYXNlICB2b3dlbCwKLSAgICAgICB3aGlsZSAgW15hZWlvdV0gIG1hdGNoZXMgIGFueSBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgYSBsb3dlciBjYXNlIHZvd2VsLgorICAgICAgIEZvciAgZXhhbXBsZSwgdGhlIGNoYXJhY3RlciBjbGFzcyBbYWVpb3VdIG1hdGNoZXMgYW55IGxvd2VyIGNhc2Ugdm93ZWwsCisgICAgICAgd2hpbGUgW15hZWlvdV0gbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQgaXMgbm90IGEgIGxvd2VyICBjYXNlICB2b3dlbC4KICAgICAgICBOb3RlIHRoYXQgYSBjaXJjdW1mbGV4IGlzIGp1c3QgYSBjb252ZW5pZW50IG5vdGF0aW9uIGZvciBzcGVjaWZ5aW5nIHRoZQotICAgICAgIGNoYXJhY3RlcnMgIHRoYXQgIGFyZSBpbiB0aGUgY2xhc3MgYnkgZW51bWVyYXRpbmcgdGhvc2UgdGhhdCBhcmUgbm90LiBBCi0gICAgICAgY2xhc3MgdGhhdCBzdGFydHMgd2l0aCBhIGNpcmN1bWZsZXggaXMgbm90IGFuIGFzc2VydGlvbjsgaXQgc3RpbGwgIGNvbi0KLSAgICAgICBzdW1lcyAgYSAgY2hhcmFjdGVyICBmcm9tIHRoZSBzdWJqZWN0IHN0cmluZywgYW5kIHRoZXJlZm9yZSBpdCBmYWlscyBpZgorICAgICAgIGNoYXJhY3RlcnMgdGhhdCBhcmUgaW4gdGhlIGNsYXNzIGJ5IGVudW1lcmF0aW5nIHRob3NlIHRoYXQgYXJlICBub3QuICBBCisgICAgICAgY2xhc3MgIHRoYXQgc3RhcnRzIHdpdGggYSBjaXJjdW1mbGV4IGlzIG5vdCBhbiBhc3NlcnRpb247IGl0IHN0aWxsIGNvbi0KKyAgICAgICBzdW1lcyBhIGNoYXJhY3RlciBmcm9tIHRoZSBzdWJqZWN0IHN0cmluZywgYW5kIHRoZXJlZm9yZSAgaXQgIGZhaWxzICBpZgogICAgICAgIHRoZSBjdXJyZW50IHBvaW50ZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgogCiAgICAgICAgSW4gVVRGLTggKFVURi0xNiwgVVRGLTMyKSBtb2RlLCBjaGFyYWN0ZXJzIHdpdGggdmFsdWVzIGdyZWF0ZXIgdGhhbiAyNTUKLSAgICAgICAoMHhmZmZmKSAgY2FuIGJlIGluY2x1ZGVkIGluIGEgY2xhc3MgYXMgYSBsaXRlcmFsIHN0cmluZyBvZiBkYXRhIHVuaXRzLAorICAgICAgICgweGZmZmYpIGNhbiBiZSBpbmNsdWRlZCBpbiBhIGNsYXNzIGFzIGEgbGl0ZXJhbCBzdHJpbmcgb2YgZGF0YSAgdW5pdHMsCiAgICAgICAgb3IgYnkgdXNpbmcgdGhlIFx4eyBlc2NhcGluZyBtZWNoYW5pc20uCiAKLSAgICAgICBXaGVuIGNhc2VsZXNzIG1hdGNoaW5nIGlzIHNldCwgYW55IGxldHRlcnMgaW4gYSAgY2xhc3MgIHJlcHJlc2VudCAgYm90aAotICAgICAgIHRoZWlyICB1cHBlciAgY2FzZSAgYW5kIGxvd2VyIGNhc2UgdmVyc2lvbnMsIHNvIGZvciBleGFtcGxlLCBhIGNhc2VsZXNzCi0gICAgICAgW2FlaW91XSBtYXRjaGVzICJBIiBhcyB3ZWxsIGFzICJhIiwgYW5kIGEgY2FzZWxlc3MgIFteYWVpb3VdICBkb2VzICBub3QKLSAgICAgICBtYXRjaCAgIkEiLCB3aGVyZWFzIGEgY2FzZWZ1bCB2ZXJzaW9uIHdvdWxkLiBJbiBhIFVURiBtb2RlLCBQQ1JFIGFsd2F5cwotICAgICAgIHVuZGVyc3RhbmRzIHRoZSBjb25jZXB0IG9mIGNhc2UgZm9yIGNoYXJhY3RlcnMgd2hvc2UgIHZhbHVlcyAgYXJlICBsZXNzCi0gICAgICAgdGhhbiAgMTI4LCBzbyBjYXNlbGVzcyBtYXRjaGluZyBpcyBhbHdheXMgcG9zc2libGUuIEZvciBjaGFyYWN0ZXJzIHdpdGgKLSAgICAgICBoaWdoZXIgdmFsdWVzLCB0aGUgY29uY2VwdCBvZiBjYXNlIGlzIHN1cHBvcnRlZCAgaWYgIFBDUkUgIGlzICBjb21waWxlZAotICAgICAgIHdpdGggIFVuaWNvZGUgIHByb3BlcnR5IHN1cHBvcnQsIGJ1dCBub3Qgb3RoZXJ3aXNlLiAgSWYgeW91IHdhbnQgdG8gdXNlCi0gICAgICAgY2FzZWxlc3MgbWF0Y2hpbmcgaW4gYSBVVEYgbW9kZSBmb3IgY2hhcmFjdGVycyAxMjggYW5kIGFib3ZlLCB5b3UgIG11c3QKLSAgICAgICBlbnN1cmUgIHRoYXQgIFBDUkUgaXMgY29tcGlsZWQgd2l0aCBVbmljb2RlIHByb3BlcnR5IHN1cHBvcnQgYXMgd2VsbCBhcworICAgICAgIFdoZW4gIGNhc2VsZXNzICBtYXRjaGluZyAgaXMgc2V0LCBhbnkgbGV0dGVycyBpbiBhIGNsYXNzIHJlcHJlc2VudCBib3RoCisgICAgICAgdGhlaXIgdXBwZXIgY2FzZSBhbmQgbG93ZXIgY2FzZSB2ZXJzaW9ucywgc28gZm9yICBleGFtcGxlLCAgYSAgY2FzZWxlc3MKKyAgICAgICBbYWVpb3VdICBtYXRjaGVzICAiQSIgIGFzIHdlbGwgYXMgImEiLCBhbmQgYSBjYXNlbGVzcyBbXmFlaW91XSBkb2VzIG5vdAorICAgICAgIG1hdGNoICJBIiwgd2hlcmVhcyBhIGNhc2VmdWwgdmVyc2lvbiB3b3VsZC4gSW4gYSBVVEYgbW9kZSwgUENSRSAgYWx3YXlzCisgICAgICAgdW5kZXJzdGFuZHMgIHRoZSAgY29uY2VwdCAgb2YgY2FzZSBmb3IgY2hhcmFjdGVycyB3aG9zZSB2YWx1ZXMgYXJlIGxlc3MKKyAgICAgICB0aGFuIDEyOCwgc28gY2FzZWxlc3MgbWF0Y2hpbmcgaXMgYWx3YXlzIHBvc3NpYmxlLiBGb3IgY2hhcmFjdGVycyAgd2l0aAorICAgICAgIGhpZ2hlciAgdmFsdWVzLCAgdGhlICBjb25jZXB0ICBvZiBjYXNlIGlzIHN1cHBvcnRlZCBpZiBQQ1JFIGlzIGNvbXBpbGVkCisgICAgICAgd2l0aCBVbmljb2RlIHByb3BlcnR5IHN1cHBvcnQsIGJ1dCBub3Qgb3RoZXJ3aXNlLiAgSWYgeW91IHdhbnQgIHRvICB1c2UKKyAgICAgICBjYXNlbGVzcyAgbWF0Y2hpbmcgaW4gYSBVVEYgbW9kZSBmb3IgY2hhcmFjdGVycyAxMjggYW5kIGFib3ZlLCB5b3UgbXVzdAorICAgICAgIGVuc3VyZSB0aGF0IFBDUkUgaXMgY29tcGlsZWQgd2l0aCBVbmljb2RlIHByb3BlcnR5IHN1cHBvcnQgYXMgIHdlbGwgIGFzCiAgICAgICAgd2l0aCBVVEYgc3VwcG9ydC4KIAotICAgICAgIENoYXJhY3RlcnMgdGhhdCBtaWdodCBpbmRpY2F0ZSBsaW5lIGJyZWFrcyBhcmUgIG5ldmVyICB0cmVhdGVkICBpbiAgYW55Ci0gICAgICAgc3BlY2lhbCAgd2F5ICB3aGVuICBtYXRjaGluZyAgY2hhcmFjdGVyICBjbGFzc2VzLCAgd2hhdGV2ZXIgbGluZS1lbmRpbmcKLSAgICAgICBzZXF1ZW5jZSBpcyBpbiAgdXNlLCAgYW5kICB3aGF0ZXZlciAgc2V0dGluZyAgb2YgIHRoZSAgUENSRV9ET1RBTEwgIGFuZAorICAgICAgIENoYXJhY3RlcnMgIHRoYXQgIG1pZ2h0ICBpbmRpY2F0ZSAgbGluZSBicmVha3MgYXJlIG5ldmVyIHRyZWF0ZWQgaW4gYW55CisgICAgICAgc3BlY2lhbCB3YXkgIHdoZW4gIG1hdGNoaW5nICBjaGFyYWN0ZXIgIGNsYXNzZXMsICB3aGF0ZXZlciAgbGluZS1lbmRpbmcKKyAgICAgICBzZXF1ZW5jZSAgaXMgIGluICB1c2UsICBhbmQgIHdoYXRldmVyICBzZXR0aW5nICBvZiAgdGhlIFBDUkVfRE9UQUxMIGFuZAogICAgICAgIFBDUkVfTVVMVElMSU5FIG9wdGlvbnMgaXMgdXNlZC4gQSBjbGFzcyBzdWNoIGFzIFteYV0gYWx3YXlzIG1hdGNoZXMgb25lCiAgICAgICAgb2YgdGhlc2UgY2hhcmFjdGVycy4KIAotICAgICAgIFRoZSBtaW51cyAoaHlwaGVuKSBjaGFyYWN0ZXIgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHJhbmdlIG9mICBjaGFyYWMtCi0gICAgICAgdGVycyAgaW4gIGEgIGNoYXJhY3RlciAgY2xhc3MuICBGb3IgIGV4YW1wbGUsICBbZC1tXSBtYXRjaGVzIGFueSBsZXR0ZXIKLSAgICAgICBiZXR3ZWVuIGQgYW5kIG0sIGluY2x1c2l2ZS4gSWYgYSAgbWludXMgIGNoYXJhY3RlciAgaXMgIHJlcXVpcmVkICBpbiAgYQotICAgICAgIGNsYXNzLCAgaXQgIG11c3QgIGJlICBlc2NhcGVkICB3aXRoIGEgYmFja3NsYXNoIG9yIGFwcGVhciBpbiBhIHBvc2l0aW9uCi0gICAgICAgd2hlcmUgaXQgY2Fubm90IGJlIGludGVycHJldGVkIGFzIGluZGljYXRpbmcgYSByYW5nZSwgdHlwaWNhbGx5IGFzICB0aGUKKyAgICAgICBUaGUgIG1pbnVzIChoeXBoZW4pIGNoYXJhY3RlciBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcmFuZ2Ugb2YgY2hhcmFjLQorICAgICAgIHRlcnMgaW4gYSBjaGFyYWN0ZXIgIGNsYXNzLiAgRm9yICBleGFtcGxlLCAgW2QtbV0gIG1hdGNoZXMgIGFueSAgbGV0dGVyCisgICAgICAgYmV0d2VlbiAgZCAgYW5kICBtLCAgaW5jbHVzaXZlLiAgSWYgIGEgbWludXMgY2hhcmFjdGVyIGlzIHJlcXVpcmVkIGluIGEKKyAgICAgICBjbGFzcywgaXQgbXVzdCBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2ggIG9yICBhcHBlYXIgIGluICBhICBwb3NpdGlvbgorICAgICAgIHdoZXJlICBpdCBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQgYXMgaW5kaWNhdGluZyBhIHJhbmdlLCB0eXBpY2FsbHkgYXMgdGhlCiAgICAgICAgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGNsYXNzLCBvciBpbW1lZGlhdGVseSBhZnRlciBhIHJhbmdlLiBGb3IKLSAgICAgICBleGFtcGxlLCBbYi1kLXpdIG1hdGNoZXMgbGV0dGVycyBpbiB0aGUgcmFuZ2UgYiB0byBkLCBhIGh5cGhlbiAgY2hhcmFjLQorICAgICAgIGV4YW1wbGUsICBbYi1kLXpdIG1hdGNoZXMgbGV0dGVycyBpbiB0aGUgcmFuZ2UgYiB0byBkLCBhIGh5cGhlbiBjaGFyYWMtCiAgICAgICAgdGVyLCBvciB6LgogCiAgICAgICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUgdGhlIGxpdGVyYWwgY2hhcmFjdGVyICJdIiBhcyB0aGUgZW5kIGNoYXJhYy0KLSAgICAgICB0ZXIgb2YgYSByYW5nZS4gQSBwYXR0ZXJuIHN1Y2ggYXMgW1ctXTQ2XSBpcyBpbnRlcnByZXRlZCBhcyBhIGNsYXNzICBvZgotICAgICAgIHR3byAgY2hhcmFjdGVycyAoIlciIGFuZCAiLSIpIGZvbGxvd2VkIGJ5IGEgbGl0ZXJhbCBzdHJpbmcgIjQ2XSIsIHNvIGl0Ci0gICAgICAgd291bGQgbWF0Y2ggIlc0Nl0iIG9yICItNDZdIi4gSG93ZXZlciwgaWYgdGhlICJdIiAgaXMgIGVzY2FwZWQgIHdpdGggIGEKLSAgICAgICBiYWNrc2xhc2ggIGl0IGlzIGludGVycHJldGVkIGFzIHRoZSBlbmQgb2YgcmFuZ2UsIHNvIFtXLVxdNDZdIGlzIGludGVyLQotICAgICAgIHByZXRlZCBhcyBhIGNsYXNzIGNvbnRhaW5pbmcgYSByYW5nZSBmb2xsb3dlZCBieSB0d28gb3RoZXIgIGNoYXJhY3RlcnMuCi0gICAgICAgVGhlICBvY3RhbCBvciBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiAiXSIgY2FuIGFsc28gYmUgdXNlZCB0byBlbmQKKyAgICAgICB0ZXIgIG9mIGEgcmFuZ2UuIEEgcGF0dGVybiBzdWNoIGFzIFtXLV00Nl0gaXMgaW50ZXJwcmV0ZWQgYXMgYSBjbGFzcyBvZgorICAgICAgIHR3byBjaGFyYWN0ZXJzICgiVyIgYW5kICItIikgZm9sbG93ZWQgYnkgYSBsaXRlcmFsIHN0cmluZyAiNDZdIiwgc28gIGl0CisgICAgICAgd291bGQgIG1hdGNoICAiVzQ2XSIgIG9yICAiLTQ2XSIuIEhvd2V2ZXIsIGlmIHRoZSAiXSIgaXMgZXNjYXBlZCB3aXRoIGEKKyAgICAgICBiYWNrc2xhc2ggaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIGVuZCBvZiByYW5nZSwgc28gW1ctXF00Nl0gaXMgIGludGVyLQorICAgICAgIHByZXRlZCAgYXMgYSBjbGFzcyBjb250YWluaW5nIGEgcmFuZ2UgZm9sbG93ZWQgYnkgdHdvIG90aGVyIGNoYXJhY3RlcnMuCisgICAgICAgVGhlIG9jdGFsIG9yIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mICJdIiBjYW4gYWxzbyBiZSB1c2VkIHRvICBlbmQKICAgICAgICBhIHJhbmdlLgogCi0gICAgICAgQW4gZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIGEgUE9TSVggY2hhcmFjdGVyICBjbGFzcyAgKHNlZSAgYmVsb3cpICBvciAgYW4KLSAgICAgICBlc2NhcGUgIHNlcXVlbmNlIG90aGVyIHRoYW4gb25lIHRoYXQgZGVmaW5lcyBhIHNpbmdsZSBjaGFyYWN0ZXIgYXBwZWFycwotICAgICAgIGF0IGEgcG9pbnQgd2hlcmUgYSByYW5nZSBlbmRpbmcgY2hhcmFjdGVyICBpcyAgZXhwZWN0ZWQuICBGb3IgIGV4YW1wbGUsCisgICAgICAgQW4gIGVycm9yICBpcyAgZ2VuZXJhdGVkICBpZiAgYSBQT1NJWCBjaGFyYWN0ZXIgY2xhc3MgKHNlZSBiZWxvdykgb3IgYW4KKyAgICAgICBlc2NhcGUgc2VxdWVuY2Ugb3RoZXIgdGhhbiBvbmUgdGhhdCBkZWZpbmVzIGEgc2luZ2xlIGNoYXJhY3RlciAgYXBwZWFycworICAgICAgIGF0ICBhICBwb2ludCAgd2hlcmUgIGEgcmFuZ2UgZW5kaW5nIGNoYXJhY3RlciBpcyBleHBlY3RlZC4gRm9yIGV4YW1wbGUsCiAgICAgICAgW3otXHhmZl0gaXMgdmFsaWQsIGJ1dCBbQS1cZF0gYW5kIFtBLVs6ZGlnaXQ6XV0gYXJlIG5vdC4KIAotICAgICAgIFJhbmdlcyAgb3BlcmF0ZSBpbiB0aGUgY29sbGF0aW5nIHNlcXVlbmNlIG9mIGNoYXJhY3RlciB2YWx1ZXMuIFRoZXkgY2FuCi0gICAgICAgYWxzbyAgYmUgIHVzZWQgIGZvciAgY2hhcmFjdGVycyAgc3BlY2lmaWVkICBudW1lcmljYWxseSwgIGZvciAgIGV4YW1wbGUKLSAgICAgICBbXDAwMC1cMDM3XS4gIFJhbmdlcyAgY2FuIGluY2x1ZGUgYW55IGNoYXJhY3RlcnMgdGhhdCBhcmUgdmFsaWQgZm9yIHRoZQorICAgICAgIFJhbmdlcyBvcGVyYXRlIGluIHRoZSBjb2xsYXRpbmcgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyIHZhbHVlcy4gVGhleSAgY2FuCisgICAgICAgYWxzbyAgIGJlICB1c2VkICBmb3IgIGNoYXJhY3RlcnMgIHNwZWNpZmllZCAgbnVtZXJpY2FsbHksICBmb3IgIGV4YW1wbGUKKyAgICAgICBbXDAwMC1cMDM3XS4gUmFuZ2VzIGNhbiBpbmNsdWRlIGFueSBjaGFyYWN0ZXJzIHRoYXQgYXJlIHZhbGlkICBmb3IgIHRoZQogICAgICAgIGN1cnJlbnQgbW9kZS4KIAogICAgICAgIElmIGEgcmFuZ2UgdGhhdCBpbmNsdWRlcyBsZXR0ZXJzIGlzIHVzZWQgd2hlbiBjYXNlbGVzcyBtYXRjaGluZyBpcyBzZXQsCiAgICAgICAgaXQgbWF0Y2hlcyB0aGUgbGV0dGVycyBpbiBlaXRoZXIgY2FzZS4gRm9yIGV4YW1wbGUsIFtXLWNdIGlzIGVxdWl2YWxlbnQKLSAgICAgICB0byBbXVtcXF5fYHd4eXphYmNdLCBtYXRjaGVkIGNhc2VsZXNzbHksIGFuZCAgaW4gIGEgIG5vbi1VVEYgIG1vZGUsICBpZgotICAgICAgIGNoYXJhY3RlciAgdGFibGVzICBmb3IgIGEgRnJlbmNoIGxvY2FsZSBhcmUgaW4gdXNlLCBbXHhjOC1ceGNiXSBtYXRjaGVzCi0gICAgICAgYWNjZW50ZWQgRSBjaGFyYWN0ZXJzIGluIGJvdGggY2FzZXMuIEluIFVURiBtb2RlcywgIFBDUkUgIHN1cHBvcnRzICB0aGUKLSAgICAgICBjb25jZXB0ICBvZiAgY2FzZSBmb3IgY2hhcmFjdGVycyB3aXRoIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI4IG9ubHkgd2hlbgorICAgICAgIHRvICBbXVtcXF5fYHd4eXphYmNdLCAgbWF0Y2hlZCAgY2FzZWxlc3NseSwgIGFuZCAgaW4gYSBub24tVVRGIG1vZGUsIGlmCisgICAgICAgY2hhcmFjdGVyIHRhYmxlcyBmb3IgYSBGcmVuY2ggbG9jYWxlIGFyZSBpbiAgdXNlLCAgW1x4YzgtXHhjYl0gIG1hdGNoZXMKKyAgICAgICBhY2NlbnRlZCAgRSAgY2hhcmFjdGVycyAgaW4gYm90aCBjYXNlcy4gSW4gVVRGIG1vZGVzLCBQQ1JFIHN1cHBvcnRzIHRoZQorICAgICAgIGNvbmNlcHQgb2YgY2FzZSBmb3IgY2hhcmFjdGVycyB3aXRoIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI4ICBvbmx5ICB3aGVuCiAgICAgICAgaXQgaXMgY29tcGlsZWQgd2l0aCBVbmljb2RlIHByb3BlcnR5IHN1cHBvcnQuCiAKLSAgICAgICBUaGUgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZXMgXGQsIFxELCBcaCwgXEgsIFxwLCBcUCwgXHMsIFxTLCBcdiwgIFxWLAorICAgICAgIFRoZSAgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZXMgXGQsIFxELCBcaCwgXEgsIFxwLCBcUCwgXHMsIFxTLCBcdiwgXFYsCiAgICAgICAgXHcsIGFuZCBcVyBtYXkgYXBwZWFyIGluIGEgY2hhcmFjdGVyIGNsYXNzLCBhbmQgYWRkIHRoZSBjaGFyYWN0ZXJzIHRoYXQKLSAgICAgICB0aGV5IG1hdGNoIHRvIHRoZSBjbGFzcy4gRm9yIGV4YW1wbGUsIFtcZEFCQ0RFRl0gbWF0Y2hlcyBhbnkgIGhleGFkZWNpLQotICAgICAgIG1hbCAgZGlnaXQuICBJbiAgVVRGIG1vZGVzLCB0aGUgUENSRV9VQ1Agb3B0aW9uIGFmZmVjdHMgdGhlIG1lYW5pbmdzIG9mCi0gICAgICAgXGQsIFxzLCBcdyBhbmQgdGhlaXIgdXBwZXIgY2FzZSBwYXJ0bmVycywganVzdCBhcyAgaXQgIGRvZXMgIHdoZW4gIHRoZXkKLSAgICAgICBhcHBlYXIgIG91dHNpZGUgYSBjaGFyYWN0ZXIgY2xhc3MsIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZAorICAgICAgIHRoZXkgIG1hdGNoIHRvIHRoZSBjbGFzcy4gRm9yIGV4YW1wbGUsIFtcZEFCQ0RFRl0gbWF0Y2hlcyBhbnkgaGV4YWRlY2ktCisgICAgICAgbWFsIGRpZ2l0LiBJbiBVVEYgbW9kZXMsIHRoZSBQQ1JFX1VDUCBvcHRpb24gYWZmZWN0cyAgdGhlICBtZWFuaW5ncyAgb2YKKyAgICAgICBcZCwgIFxzLCAgXHcgIGFuZCAgdGhlaXIgdXBwZXIgY2FzZSBwYXJ0bmVycywganVzdCBhcyBpdCBkb2VzIHdoZW4gdGhleQorICAgICAgIGFwcGVhciBvdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gIGVudGl0bGVkCiAgICAgICAgIkdlbmVyaWMgY2hhcmFjdGVyIHR5cGVzIiBhYm92ZS4gVGhlIGVzY2FwZSBzZXF1ZW5jZSBcYiBoYXMgYSBkaWZmZXJlbnQKLSAgICAgICBtZWFuaW5nICBpbnNpZGUgIGEgY2hhcmFjdGVyIGNsYXNzOyBpdCBtYXRjaGVzIHRoZSBiYWNrc3BhY2UgY2hhcmFjdGVyLgotICAgICAgIFRoZSBzZXF1ZW5jZXMgXEIsIFxOLCBcUiwgYW5kIFxYIGFyZSBub3QgIHNwZWNpYWwgIGluc2lkZSAgYSAgY2hhcmFjdGVyCi0gICAgICAgY2xhc3MuICBMaWtlICBhbnkgb3RoZXIgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMsIHRoZXkgYXJlIHRyZWF0ZWQKLSAgICAgICBhcyB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXJzICJCIiwgIk4iLCAiUiIsIGFuZCAiWCIgYnkgZGVmYXVsdCwgYnV0ICBjYXVzZQorICAgICAgIG1lYW5pbmcgaW5zaWRlIGEgY2hhcmFjdGVyIGNsYXNzOyBpdCBtYXRjaGVzIHRoZSAgYmFja3NwYWNlICBjaGFyYWN0ZXIuCisgICAgICAgVGhlICBzZXF1ZW5jZXMgIFxCLCAgXE4sICBcUiwgYW5kIFxYIGFyZSBub3Qgc3BlY2lhbCBpbnNpZGUgYSBjaGFyYWN0ZXIKKyAgICAgICBjbGFzcy4gTGlrZSBhbnkgb3RoZXIgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMsIHRoZXkgIGFyZSAgdHJlYXRlZAorICAgICAgIGFzICB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXJzICJCIiwgIk4iLCAiUiIsIGFuZCAiWCIgYnkgZGVmYXVsdCwgYnV0IGNhdXNlCiAgICAgICAgYW4gZXJyb3IgaWYgdGhlIFBDUkVfRVhUUkEgb3B0aW9uIGlzIHNldC4KIAotICAgICAgIEEgIGNpcmN1bWZsZXggIGNhbiAgY29udmVuaWVudGx5ICBiZSB1c2VkIHdpdGggdGhlIHVwcGVyIGNhc2UgY2hhcmFjdGVyCi0gICAgICAgdHlwZXMgdG8gc3BlY2lmeSBhIG1vcmUgcmVzdHJpY3RlZCBzZXQgb2YgY2hhcmFjdGVycyB0aGFuIHRoZSAgbWF0Y2hpbmcKLSAgICAgICBsb3dlciAgY2FzZSAgdHlwZS4gIEZvciBleGFtcGxlLCB0aGUgY2xhc3MgW15cV19dIG1hdGNoZXMgYW55IGxldHRlciBvcgorICAgICAgIEEgY2lyY3VtZmxleCBjYW4gY29udmVuaWVudGx5IGJlIHVzZWQgd2l0aCAgdGhlICB1cHBlciAgY2FzZSAgY2hhcmFjdGVyCisgICAgICAgdHlwZXMgIHRvIHNwZWNpZnkgYSBtb3JlIHJlc3RyaWN0ZWQgc2V0IG9mIGNoYXJhY3RlcnMgdGhhbiB0aGUgbWF0Y2hpbmcKKyAgICAgICBsb3dlciBjYXNlIHR5cGUuICBGb3IgZXhhbXBsZSwgdGhlIGNsYXNzIFteXFdfXSBtYXRjaGVzIGFueSAgbGV0dGVyICBvcgogICAgICAgIGRpZ2l0LCBidXQgbm90IHVuZGVyc2NvcmUsIHdoZXJlYXMgW1x3XSBpbmNsdWRlcyB1bmRlcnNjb3JlLiBBIHBvc2l0aXZlCiAgICAgICAgY2hhcmFjdGVyIGNsYXNzIHNob3VsZCBiZSByZWFkIGFzICJzb21ldGhpbmcgT1Igc29tZXRoaW5nIE9SIC4uLiIgYW5kIGEKICAgICAgICBuZWdhdGl2ZSBjbGFzcyBhcyAiTk9UIHNvbWV0aGluZyBBTkQgTk9UIHNvbWV0aGluZyBBTkQgTk9UIC4uLiIuCiAKLSAgICAgICBUaGUgb25seSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSByZWNvZ25pemVkIGluICBjaGFyYWN0ZXIgIGNsYXNzZXMgIGFyZQotICAgICAgIGJhY2tzbGFzaCwgIGh5cGhlbiAgKG9ubHkgIHdoZXJlICBpdCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgc3BlY2lmeWluZyBhCi0gICAgICAgcmFuZ2UpLCBjaXJjdW1mbGV4IChvbmx5IGF0IHRoZSBzdGFydCksIG9wZW5pbmcgIHNxdWFyZSAgYnJhY2tldCAgKG9ubHkKLSAgICAgICB3aGVuICBpdCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgaW50cm9kdWNpbmcgYSBQT1NJWCBjbGFzcyBuYW1lLCBvciBmb3IgYQotICAgICAgIHNwZWNpYWwgY29tcGF0aWJpbGl0eSBmZWF0dXJlIC0gc2VlIHRoZSBuZXh0ICB0d28gIHNlY3Rpb25zKSwgIGFuZCAgdGhlCisgICAgICAgVGhlICBvbmx5ICBtZXRhY2hhcmFjdGVycyAgdGhhdCBhcmUgcmVjb2duaXplZCBpbiBjaGFyYWN0ZXIgY2xhc3NlcyBhcmUKKyAgICAgICBiYWNrc2xhc2gsIGh5cGhlbiAob25seSB3aGVyZSBpdCBjYW4gYmUgIGludGVycHJldGVkICBhcyAgc3BlY2lmeWluZyAgYQorICAgICAgIHJhbmdlKSwgIGNpcmN1bWZsZXggIChvbmx5ICBhdCB0aGUgc3RhcnQpLCBvcGVuaW5nIHNxdWFyZSBicmFja2V0IChvbmx5CisgICAgICAgd2hlbiBpdCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgaW50cm9kdWNpbmcgYSBQT1NJWCBjbGFzcyBuYW1lLCBvciBmb3IgIGEKKyAgICAgICBzcGVjaWFsICBjb21wYXRpYmlsaXR5ICBmZWF0dXJlICAtICBzZWUgdGhlIG5leHQgdHdvIHNlY3Rpb25zKSwgYW5kIHRoZQogICAgICAgIHRlcm1pbmF0aW5nICBjbG9zaW5nICBzcXVhcmUgIGJyYWNrZXQuICBIb3dldmVyLCAgZXNjYXBpbmcgIG90aGVyICBub24tCiAgICAgICAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgZG9lcyBubyBoYXJtLgogCkBAIC01ODQ4LDcgKzU4NjEsNyBAQAogUE9TSVggQ0hBUkFDVEVSIENMQVNTRVMKIAogICAgICAgIFBlcmwgc3VwcG9ydHMgdGhlIFBPU0lYIG5vdGF0aW9uIGZvciBjaGFyYWN0ZXIgY2xhc3Nlcy4gVGhpcyB1c2VzIG5hbWVzCi0gICAgICAgZW5jbG9zZWQgIGJ5ICBbOiBhbmQgOl0gd2l0aGluIHRoZSBlbmNsb3Npbmcgc3F1YXJlIGJyYWNrZXRzLiBQQ1JFIGFsc28KKyAgICAgICBlbmNsb3NlZCBieSBbOiBhbmQgOl0gd2l0aGluIHRoZSBlbmNsb3Npbmcgc3F1YXJlIGJyYWNrZXRzLiAgUENSRSAgYWxzbwogICAgICAgIHN1cHBvcnRzIHRoaXMgbm90YXRpb24uIEZvciBleGFtcGxlLAogCiAgICAgICAgICBbMDFbOmFscGhhOl0lXQpAQCAtNTg3MSwyOCArNTg4NCwyOCBAQAogICAgICAgICAgd29yZCAgICAgIndvcmQiIGNoYXJhY3RlcnMgKHNhbWUgYXMgXHcpCiAgICAgICAgICB4ZGlnaXQgICBoZXhhZGVjaW1hbCBkaWdpdHMKIAotICAgICAgIFRoZSAgZGVmYXVsdCAgInNwYWNlIiBjaGFyYWN0ZXJzIGFyZSBIVCAoOSksIExGICgxMCksIFZUICgxMSksIEZGICgxMiksCi0gICAgICAgQ1IgKDEzKSwgYW5kIHNwYWNlICgzMikuIElmIGxvY2FsZS1zcGVjaWZpYyBtYXRjaGluZyBpcyAgdGFraW5nICBwbGFjZSwKLSAgICAgICB0aGUgIGxpc3QgIG9mICBzcGFjZSBjaGFyYWN0ZXJzIG1heSBiZSBkaWZmZXJlbnQ7IHRoZXJlIG1heSBiZSBmZXdlciBvcgorICAgICAgIFRoZSBkZWZhdWx0ICJzcGFjZSIgY2hhcmFjdGVycyBhcmUgSFQgKDkpLCBMRiAoMTApLCBWVCAoMTEpLCAgRkYgICgxMiksCisgICAgICAgQ1IgICgxMyksICBhbmQgc3BhY2UgKDMyKS4gSWYgbG9jYWxlLXNwZWNpZmljIG1hdGNoaW5nIGlzIHRha2luZyBwbGFjZSwKKyAgICAgICB0aGUgbGlzdCBvZiBzcGFjZSBjaGFyYWN0ZXJzIG1heSBiZSBkaWZmZXJlbnQ7IHRoZXJlIG1heSAgYmUgIGZld2VyICBvcgogICAgICAgIG1vcmUgb2YgdGhlbS4gIlNwYWNlIiB1c2VkIHRvIGJlIGRpZmZlcmVudCB0byBccywgd2hpY2ggZGlkIG5vdCBpbmNsdWRlCiAgICAgICAgVlQsIGZvciBQZXJsIGNvbXBhdGliaWxpdHkuICBIb3dldmVyLCBQZXJsIGNoYW5nZWQgYXQgcmVsZWFzZSA1LjE4LCBhbmQKLSAgICAgICBQQ1JFIGZvbGxvd2VkIGF0IHJlbGVhc2UgOC4zNC4gICJTcGFjZSIgYW5kIFxzIG5vdyBtYXRjaCB0aGUgIHNhbWUgIHNldAorICAgICAgIFBDUkUgIGZvbGxvd2VkICBhdCByZWxlYXNlIDguMzQuICAiU3BhY2UiIGFuZCBccyBub3cgbWF0Y2ggdGhlIHNhbWUgc2V0CiAgICAgICAgb2YgY2hhcmFjdGVycy4KIAotICAgICAgIFRoZSAgbmFtZSAgIndvcmQiICBpcyAgYSBQZXJsIGV4dGVuc2lvbiwgYW5kICJibGFuayIgaXMgYSBHTlUgZXh0ZW5zaW9uCi0gICAgICAgZnJvbSBQZXJsIDUuOC4gQW5vdGhlciBQZXJsIGV4dGVuc2lvbiBpcyBuZWdhdGlvbiwgd2hpY2ggIGlzICBpbmRpY2F0ZWQKKyAgICAgICBUaGUgbmFtZSAid29yZCIgaXMgYSBQZXJsIGV4dGVuc2lvbiwgYW5kICJibGFuayIgIGlzICBhICBHTlUgIGV4dGVuc2lvbgorICAgICAgIGZyb20gIFBlcmwgIDUuOC4gQW5vdGhlciBQZXJsIGV4dGVuc2lvbiBpcyBuZWdhdGlvbiwgd2hpY2ggaXMgaW5kaWNhdGVkCiAgICAgICAgYnkgYSBeIGNoYXJhY3RlciBhZnRlciB0aGUgY29sb24uIEZvciBleGFtcGxlLAogCiAgICAgICAgICBbMTJbOl5kaWdpdDpdXQogCi0gICAgICAgbWF0Y2hlcyAgIjEiLCAiMiIsIG9yIGFueSBub24tZGlnaXQuIFBDUkUgKGFuZCBQZXJsKSBhbHNvIHJlY29nbml6ZSB0aGUKKyAgICAgICBtYXRjaGVzICIxIiwgIjIiLCBvciBhbnkgbm9uLWRpZ2l0LiBQQ1JFIChhbmQgUGVybCkgYWxzbyByZWNvZ25pemUgIHRoZQogICAgICAgIFBPU0lYIHN5bnRheCBbLmNoLl0gYW5kIFs9Y2g9XSB3aGVyZSAiY2giIGlzIGEgImNvbGxhdGluZyBlbGVtZW50IiwgYnV0CiAgICAgICAgdGhlc2UgYXJlIG5vdCBzdXBwb3J0ZWQsIGFuZCBhbiBlcnJvciBpcyBnaXZlbiBpZiB0aGV5IGFyZSBlbmNvdW50ZXJlZC4KIAogICAgICAgIEJ5IGRlZmF1bHQsIGNoYXJhY3RlcnMgd2l0aCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyOCBkbyBub3QgbWF0Y2ggYW55IG9mCi0gICAgICAgdGhlIFBPU0lYIGNoYXJhY3RlciBjbGFzc2VzLiBIb3dldmVyLCBpZiB0aGUgUENSRV9VQ1Agb3B0aW9uIGlzICBwYXNzZWQKLSAgICAgICB0byAgcGNyZV9jb21waWxlKCksICBzb21lICBvZiAgdGhlICBjbGFzc2VzIGFyZSBjaGFuZ2VkIHNvIHRoYXQgVW5pY29kZQotICAgICAgIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGFyZSB1c2VkLiBUaGlzIGlzIGFjaGlldmVkICBieSAgcmVwbGFjaW5nICBjZXJ0YWluCisgICAgICAgdGhlICBQT1NJWCBjaGFyYWN0ZXIgY2xhc3Nlcy4gSG93ZXZlciwgaWYgdGhlIFBDUkVfVUNQIG9wdGlvbiBpcyBwYXNzZWQKKyAgICAgICB0byBwY3JlX2NvbXBpbGUoKSwgc29tZSBvZiB0aGUgY2xhc3NlcyAgYXJlICBjaGFuZ2VkICBzbyAgdGhhdCAgVW5pY29kZQorICAgICAgIGNoYXJhY3RlciAgcHJvcGVydGllcyAgYXJlICB1c2VkLiBUaGlzIGlzIGFjaGlldmVkIGJ5IHJlcGxhY2luZyBjZXJ0YWluCiAgICAgICAgUE9TSVggY2xhc3NlcyBieSBvdGhlciBzZXF1ZW5jZXMsIGFzIGZvbGxvd3M6CiAKICAgICAgICAgIFs6YWxudW06XSAgYmVjb21lcyAgXHB7WGFufQpAQCAtNTkwNCwxMCArNTkxNywxMCBAQAogICAgICAgICAgWzp1cHBlcjpdICBiZWNvbWVzICBccHtMdX0KICAgICAgICAgIFs6d29yZDpdICAgYmVjb21lcyAgXHB7WHdkfQogCi0gICAgICAgTmVnYXRlZCAgdmVyc2lvbnMsIHN1Y2ggYXMgWzpeYWxwaGE6XSB1c2UgXFAgaW5zdGVhZCBvZiBccC4gVGhyZWUgb3RoZXIKKyAgICAgICBOZWdhdGVkIHZlcnNpb25zLCBzdWNoIGFzIFs6XmFscGhhOl0gdXNlIFxQIGluc3RlYWQgb2YgXHAuIFRocmVlICBvdGhlcgogICAgICAgIFBPU0lYIGNsYXNzZXMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGluIFVDUCBtb2RlOgogCi0gICAgICAgWzpncmFwaDpdIFRoaXMgbWF0Y2hlcyBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBnbHlwaHMgdGhhdCBtYXJrICB0aGUgIHBhZ2UKKyAgICAgICBbOmdyYXBoOl0gVGhpcyAgbWF0Y2hlcyAgY2hhcmFjdGVycyB0aGF0IGhhdmUgZ2x5cGhzIHRoYXQgbWFyayB0aGUgcGFnZQogICAgICAgICAgICAgICAgICB3aGVuIHByaW50ZWQuIEluIFVuaWNvZGUgcHJvcGVydHkgdGVybXMsIGl0IG1hdGNoZXMgYWxsIGNoYXItCiAgICAgICAgICAgICAgICAgIGFjdGVycyB3aXRoIHRoZSBMLCBNLCBOLCBQLCBTLCBvciBDZiBwcm9wZXJ0aWVzLCBleGNlcHQgZm9yOgogCkBAIC01OTE2LDU4ICs1OTI5LDU4IEBACiAgICAgICAgICAgICAgICAgICAgVSsyMDY2IC0gVSsyMDY5ICBWYXJpb3VzICJpc29sYXRlInMKIAogCi0gICAgICAgWzpwcmludDpdIFRoaXMgbWF0Y2hlcyB0aGUgc2FtZSAgY2hhcmFjdGVycyAgYXMgIFs6Z3JhcGg6XSAgcGx1cyAgc3BhY2UKLSAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyAgdGhhdCAgYXJlICBub3QgY29udHJvbHMsIHRoYXQgaXMsIGNoYXJhY3RlcnMgd2l0aAorICAgICAgIFs6cHJpbnQ6XSBUaGlzICBtYXRjaGVzICB0aGUgIHNhbWUgIGNoYXJhY3RlcnMgIGFzIFs6Z3JhcGg6XSBwbHVzIHNwYWNlCisgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGNvbnRyb2xzLCB0aGF0ICBpcywgIGNoYXJhY3RlcnMgIHdpdGgKICAgICAgICAgICAgICAgICAgdGhlIFpzIHByb3BlcnR5LgogCiAgICAgICAgWzpwdW5jdDpdIFRoaXMgbWF0Y2hlcyBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmUgdGhlIFVuaWNvZGUgUCAocHVuY3R1YS0KLSAgICAgICAgICAgICAgICAgdGlvbikgIHByb3BlcnR5LCAgcGx1cyB0aG9zZSBjaGFyYWN0ZXJzIHdob3NlIGNvZGUgcG9pbnRzIGFyZQorICAgICAgICAgICAgICAgICB0aW9uKSBwcm9wZXJ0eSwgcGx1cyB0aG9zZSBjaGFyYWN0ZXJzIHdob3NlIGNvZGUgIHBvaW50cyAgYXJlCiAgICAgICAgICAgICAgICAgIGxlc3MgdGhhbiAxMjggdGhhdCBoYXZlIHRoZSBTIChTeW1ib2wpIHByb3BlcnR5LgogCi0gICAgICAgVGhlIG90aGVyIFBPU0lYIGNsYXNzZXMgYXJlIHVuY2hhbmdlZCwgYW5kIG1hdGNoIG9ubHkgIGNoYXJhY3RlcnMgIHdpdGgKKyAgICAgICBUaGUgIG90aGVyICBQT1NJWCBjbGFzc2VzIGFyZSB1bmNoYW5nZWQsIGFuZCBtYXRjaCBvbmx5IGNoYXJhY3RlcnMgd2l0aAogICAgICAgIGNvZGUgcG9pbnRzIGxlc3MgdGhhbiAxMjguCiAKIAogQ09NUEFUSUJJTElUWSBGRUFUVVJFIEZPUiBXT1JEIEJPVU5EQVJJRVMKIAotICAgICAgIEluICB0aGUgUE9TSVguMiBjb21wbGlhbnQgbGlicmFyeSB0aGF0IHdhcyBpbmNsdWRlZCBpbiA0LjRCU0QgVW5peCwgdGhlCi0gICAgICAgdWdseSBzeW50YXggW1s6PDpdXSBhbmQgW1s6PjpdXSBpcyB1c2VkIGZvciBtYXRjaGluZyAgInN0YXJ0ICBvZiAgd29yZCIKKyAgICAgICBJbiB0aGUgUE9TSVguMiBjb21wbGlhbnQgbGlicmFyeSB0aGF0IHdhcyBpbmNsdWRlZCBpbiA0LjRCU0QgVW5peCwgIHRoZQorICAgICAgIHVnbHkgIHN5bnRheCAgW1s6PDpdXSAgYW5kIFtbOj46XV0gaXMgdXNlZCBmb3IgbWF0Y2hpbmcgInN0YXJ0IG9mIHdvcmQiCiAgICAgICAgYW5kICJlbmQgb2Ygd29yZCIuIFBDUkUgdHJlYXRzIHRoZXNlIGl0ZW1zIGFzIGZvbGxvd3M6CiAKICAgICAgICAgIFtbOjw6XV0gIGlzIGNvbnZlcnRlZCB0byAgXGIoPz1cdykKICAgICAgICAgIFtbOj46XV0gIGlzIGNvbnZlcnRlZCB0byAgXGIoPzw9XHcpCiAKICAgICAgICBPbmx5IHRoZXNlIGV4YWN0IGNoYXJhY3RlciBzZXF1ZW5jZXMgYXJlIHJlY29nbml6ZWQuIEEgc2VxdWVuY2Ugc3VjaCBhcwotICAgICAgIFthWzo8Ol1iXSBwcm92b2tlcyBlcnJvciBmb3IgYW4gdW5yZWNvZ25pemVkICBQT1NJWCAgY2xhc3MgIG5hbWUuICBUaGlzCi0gICAgICAgc3VwcG9ydCAgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBQZXJsLiBJdCBpcyBwcm92aWRlZCB0byBoZWxwIG1pZ3JhdGlvbnMKKyAgICAgICBbYVs6PDpdYl0gIHByb3Zva2VzICBlcnJvciAgZm9yICBhbiB1bnJlY29nbml6ZWQgUE9TSVggY2xhc3MgbmFtZS4gVGhpcworICAgICAgIHN1cHBvcnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBQZXJsLiBJdCBpcyBwcm92aWRlZCB0byBoZWxwICBtaWdyYXRpb25zCiAgICAgICAgZnJvbSBvdGhlciBlbnZpcm9ubWVudHMsIGFuZCBpcyBiZXN0IG5vdCB1c2VkIGluIGFueSBuZXcgcGF0dGVybnMuIE5vdGUKLSAgICAgICB0aGF0ICBcYiBtYXRjaGVzIGF0IHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiBhIHdvcmQgKHNlZSAiU2ltcGxlIGFzc2VyLQotICAgICAgIHRpb25zIiBhYm92ZSksIGFuZCBpbiBhIFBlcmwtc3R5bGUgcGF0dGVybiB0aGUgcHJlY2VkaW5nICBvciAgZm9sbG93aW5nCi0gICAgICAgY2hhcmFjdGVyICBub3JtYWxseSAgc2hvd3MgIHdoaWNoICBpcyAgd2FudGVkLCB3aXRob3V0IHRoZSBuZWVkIGZvciB0aGUKLSAgICAgICBhc3NlcnRpb25zIHRoYXQgYXJlIHVzZWQgYWJvdmUgaW4gb3JkZXIgdG8gZ2l2ZSBleGFjdGx5IHRoZSAgUE9TSVggIGJlLQorICAgICAgIHRoYXQgXGIgbWF0Y2hlcyBhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgYSB3b3JkIChzZWUgIlNpbXBsZSAgYXNzZXItCisgICAgICAgdGlvbnMiICBhYm92ZSksICBhbmQgaW4gYSBQZXJsLXN0eWxlIHBhdHRlcm4gdGhlIHByZWNlZGluZyBvciBmb2xsb3dpbmcKKyAgICAgICBjaGFyYWN0ZXIgbm9ybWFsbHkgc2hvd3Mgd2hpY2ggaXMgd2FudGVkLCAgd2l0aG91dCAgdGhlICBuZWVkICBmb3IgIHRoZQorICAgICAgIGFzc2VydGlvbnMgIHRoYXQgIGFyZSB1c2VkIGFib3ZlIGluIG9yZGVyIHRvIGdpdmUgZXhhY3RseSB0aGUgUE9TSVggYmUtCiAgICAgICAgaGF2aW91ci4KIAogCiBWRVJUSUNBTCBCQVIKIAotICAgICAgIFZlcnRpY2FsICBiYXIgY2hhcmFjdGVycyBhcmUgdXNlZCB0byBzZXBhcmF0ZSBhbHRlcm5hdGl2ZSBwYXR0ZXJucy4gRm9yCisgICAgICAgVmVydGljYWwgYmFyIGNoYXJhY3RlcnMgYXJlIHVzZWQgdG8gc2VwYXJhdGUgYWx0ZXJuYXRpdmUgcGF0dGVybnMuICBGb3IKICAgICAgICBleGFtcGxlLCB0aGUgcGF0dGVybgogCiAgICAgICAgICBnaWxiZXJ0fHN1bGxpdmFuCiAKLSAgICAgICBtYXRjaGVzIGVpdGhlciAiZ2lsYmVydCIgb3IgInN1bGxpdmFuIi4gQW55IG51bWJlciBvZiBhbHRlcm5hdGl2ZXMgIG1heQotICAgICAgIGFwcGVhciwgIGFuZCAgYW4gIGVtcHR5ICBhbHRlcm5hdGl2ZSAgaXMgIHBlcm1pdHRlZCAobWF0Y2hpbmcgdGhlIGVtcHR5CisgICAgICAgbWF0Y2hlcyAgZWl0aGVyICJnaWxiZXJ0IiBvciAic3VsbGl2YW4iLiBBbnkgbnVtYmVyIG9mIGFsdGVybmF0aXZlcyBtYXkKKyAgICAgICBhcHBlYXIsIGFuZCBhbiBlbXB0eSAgYWx0ZXJuYXRpdmUgIGlzICBwZXJtaXR0ZWQgIChtYXRjaGluZyAgdGhlICBlbXB0eQogICAgICAgIHN0cmluZykuIFRoZSBtYXRjaGluZyBwcm9jZXNzIHRyaWVzIGVhY2ggYWx0ZXJuYXRpdmUgaW4gdHVybiwgZnJvbSBsZWZ0Ci0gICAgICAgdG8gIHJpZ2h0LCBhbmQgdGhlIGZpcnN0IG9uZSB0aGF0IHN1Y2NlZWRzIGlzIHVzZWQuIElmIHRoZSBhbHRlcm5hdGl2ZXMKLSAgICAgICBhcmUgd2l0aGluIGEgc3VicGF0dGVybiAoZGVmaW5lZCBiZWxvdyksICJzdWNjZWVkcyIgbWVhbnMgbWF0Y2hpbmcgIHRoZQorICAgICAgIHRvIHJpZ2h0LCBhbmQgdGhlIGZpcnN0IG9uZSB0aGF0IHN1Y2NlZWRzIGlzIHVzZWQuIElmIHRoZSAgYWx0ZXJuYXRpdmVzCisgICAgICAgYXJlICB3aXRoaW4gYSBzdWJwYXR0ZXJuIChkZWZpbmVkIGJlbG93KSwgInN1Y2NlZWRzIiBtZWFucyBtYXRjaGluZyB0aGUKICAgICAgICByZXN0IG9mIHRoZSBtYWluIHBhdHRlcm4gYXMgd2VsbCBhcyB0aGUgYWx0ZXJuYXRpdmUgaW4gdGhlIHN1YnBhdHRlcm4uCiAKIAogSU5URVJOQUwgT1BUSU9OIFNFVFRJTkcKIAotICAgICAgIFRoZSAgc2V0dGluZ3MgIG9mICB0aGUgIFBDUkVfQ0FTRUxFU1MsIFBDUkVfTVVMVElMSU5FLCBQQ1JFX0RPVEFMTCwgYW5kCi0gICAgICAgUENSRV9FWFRFTkRFRCBvcHRpb25zICh3aGljaCBhcmUgUGVybC1jb21wYXRpYmxlKSBjYW4gYmUgIGNoYW5nZWQgIGZyb20KLSAgICAgICB3aXRoaW4gIHRoZSAgcGF0dGVybiAgYnkgIGEgIHNlcXVlbmNlICBvZiAgUGVybCBvcHRpb24gbGV0dGVycyBlbmNsb3NlZAorICAgICAgIFRoZSBzZXR0aW5ncyBvZiB0aGUgIFBDUkVfQ0FTRUxFU1MsICBQQ1JFX01VTFRJTElORSwgIFBDUkVfRE9UQUxMLCAgYW5kCisgICAgICAgUENSRV9FWFRFTkRFRCAgb3B0aW9ucyAgKHdoaWNoIGFyZSBQZXJsLWNvbXBhdGlibGUpIGNhbiBiZSBjaGFuZ2VkIGZyb20KKyAgICAgICB3aXRoaW4gdGhlIHBhdHRlcm4gYnkgIGEgIHNlcXVlbmNlICBvZiAgUGVybCAgb3B0aW9uICBsZXR0ZXJzICBlbmNsb3NlZAogICAgICAgIGJldHdlZW4gIig/IiBhbmQgIikiLiAgVGhlIG9wdGlvbiBsZXR0ZXJzIGFyZQogCiAgICAgICAgICBpICBmb3IgUENSRV9DQVNFTEVTUwpAQCAtNTk3Nyw1MSArNTk5MCw1MSBAQAogCiAgICAgICAgRm9yIGV4YW1wbGUsICg/aW0pIHNldHMgY2FzZWxlc3MsIG11bHRpbGluZSBtYXRjaGluZy4gSXQgaXMgYWxzbyBwb3NzaS0KICAgICAgICBibGUgdG8gdW5zZXQgdGhlc2Ugb3B0aW9ucyBieSBwcmVjZWRpbmcgdGhlIGxldHRlciB3aXRoIGEgaHlwaGVuLCBhbmQgYQotICAgICAgIGNvbWJpbmVkIHNldHRpbmcgYW5kIHVuc2V0dGluZyBzdWNoIGFzICg/aW0tc3gpLCB3aGljaCBzZXRzICBQQ1JFX0NBU0UtCi0gICAgICAgTEVTUyAgYW5kIFBDUkVfTVVMVElMSU5FIHdoaWxlIHVuc2V0dGluZyBQQ1JFX0RPVEFMTCBhbmQgUENSRV9FWFRFTkRFRCwKLSAgICAgICBpcyBhbHNvIHBlcm1pdHRlZC4gSWYgYSAgbGV0dGVyICBhcHBlYXJzICBib3RoICBiZWZvcmUgIGFuZCAgYWZ0ZXIgIHRoZQorICAgICAgIGNvbWJpbmVkICBzZXR0aW5nIGFuZCB1bnNldHRpbmcgc3VjaCBhcyAoP2ltLXN4KSwgd2hpY2ggc2V0cyBQQ1JFX0NBU0UtCisgICAgICAgTEVTUyBhbmQgUENSRV9NVUxUSUxJTkUgd2hpbGUgdW5zZXR0aW5nIFBDUkVfRE9UQUxMIGFuZCAgUENSRV9FWFRFTkRFRCwKKyAgICAgICBpcyAgYWxzbyAgcGVybWl0dGVkLiAgSWYgIGEgIGxldHRlciAgYXBwZWFycyAgYm90aCBiZWZvcmUgYW5kIGFmdGVyIHRoZQogICAgICAgIGh5cGhlbiwgdGhlIG9wdGlvbiBpcyB1bnNldC4KIAotICAgICAgIFRoZSAgUENSRS1zcGVjaWZpYyBvcHRpb25zIFBDUkVfRFVQTkFNRVMsIFBDUkVfVU5HUkVFRFksIGFuZCBQQ1JFX0VYVFJBCi0gICAgICAgY2FuIGJlIGNoYW5nZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBQZXJsLWNvbXBhdGlibGUgb3B0aW9ucyBieSAgdXNpbmcKKyAgICAgICBUaGUgUENSRS1zcGVjaWZpYyBvcHRpb25zIFBDUkVfRFVQTkFNRVMsIFBDUkVfVU5HUkVFRFksIGFuZCAgUENSRV9FWFRSQQorICAgICAgIGNhbiAgYmUgY2hhbmdlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIFBlcmwtY29tcGF0aWJsZSBvcHRpb25zIGJ5IHVzaW5nCiAgICAgICAgdGhlIGNoYXJhY3RlcnMgSiwgVSBhbmQgWCByZXNwZWN0aXZlbHkuCiAKLSAgICAgICBXaGVuICBvbmUgIG9mICB0aGVzZSAgb3B0aW9uICBjaGFuZ2VzIG9jY3VycyBhdCB0b3AgbGV2ZWwgKHRoYXQgaXMsIG5vdAotICAgICAgIGluc2lkZSBzdWJwYXR0ZXJuIHBhcmVudGhlc2VzKSwgdGhlIGNoYW5nZSBhcHBsaWVzIHRvIHRoZSByZW1haW5kZXIgIG9mCisgICAgICAgV2hlbiBvbmUgb2YgdGhlc2Ugb3B0aW9uIGNoYW5nZXMgb2NjdXJzIGF0ICB0b3AgIGxldmVsICAodGhhdCAgaXMsICBub3QKKyAgICAgICBpbnNpZGUgIHN1YnBhdHRlcm4gcGFyZW50aGVzZXMpLCB0aGUgY2hhbmdlIGFwcGxpZXMgdG8gdGhlIHJlbWFpbmRlciBvZgogICAgICAgIHRoZSBwYXR0ZXJuIHRoYXQgZm9sbG93cy4gSWYgdGhlIGNoYW5nZSBpcyBwbGFjZWQgcmlnaHQgYXQgdGhlIHN0YXJ0IG9mCiAgICAgICAgYSBwYXR0ZXJuLCBQQ1JFIGV4dHJhY3RzIGl0IGludG8gdGhlIGdsb2JhbCBvcHRpb25zIChhbmQgaXQgd2lsbCB0aGVyZS0KICAgICAgICBmb3JlIHNob3cgdXAgaW4gZGF0YSBleHRyYWN0ZWQgYnkgdGhlIHBjcmVfZnVsbGluZm8oKSBmdW5jdGlvbikuCiAKLSAgICAgICBBbiAgb3B0aW9uICBjaGFuZ2UgIHdpdGhpbiBhIHN1YnBhdHRlcm4gKHNlZSBiZWxvdyBmb3IgYSBkZXNjcmlwdGlvbiBvZgotICAgICAgIHN1YnBhdHRlcm5zKSBhZmZlY3RzIG9ubHkgdGhhdCBwYXJ0IG9mIHRoZSBzdWJwYXR0ZXJuIHRoYXQgZm9sbG93cyAgaXQsCisgICAgICAgQW4gb3B0aW9uIGNoYW5nZSB3aXRoaW4gYSBzdWJwYXR0ZXJuIChzZWUgYmVsb3cgZm9yICBhICBkZXNjcmlwdGlvbiAgb2YKKyAgICAgICBzdWJwYXR0ZXJucykgIGFmZmVjdHMgb25seSB0aGF0IHBhcnQgb2YgdGhlIHN1YnBhdHRlcm4gdGhhdCBmb2xsb3dzIGl0LAogICAgICAgIHNvCiAKICAgICAgICAgIChhKD9pKWIpYwogCiAgICAgICAgbWF0Y2hlcyBhYmMgYW5kIGFCYyBhbmQgbm8gb3RoZXIgc3RyaW5ncyAoYXNzdW1pbmcgUENSRV9DQVNFTEVTUyBpcyBub3QKLSAgICAgICB1c2VkKS4gIEJ5IHRoaXMgbWVhbnMsIG9wdGlvbnMgY2FuIGJlIG1hZGUgdG8gaGF2ZSAgZGlmZmVyZW50ICBzZXR0aW5ncwotICAgICAgIGluICBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHBhdHRlcm4uIEFueSBjaGFuZ2VzIG1hZGUgaW4gb25lIGFsdGVybmF0aXZlCi0gICAgICAgZG8gY2Fycnkgb24gaW50byBzdWJzZXF1ZW50IGJyYW5jaGVzIHdpdGhpbiB0aGUgIHNhbWUgIHN1YnBhdHRlcm4uICBGb3IKKyAgICAgICB1c2VkKS4gICBCeSAgdGhpcyBtZWFucywgb3B0aW9ucyBjYW4gYmUgbWFkZSB0byBoYXZlIGRpZmZlcmVudCBzZXR0aW5ncworICAgICAgIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgcGF0dGVybi4gQW55IGNoYW5nZXMgbWFkZSBpbiBvbmUgIGFsdGVybmF0aXZlCisgICAgICAgZG8gIGNhcnJ5ICBvbiAgaW50byBzdWJzZXF1ZW50IGJyYW5jaGVzIHdpdGhpbiB0aGUgc2FtZSBzdWJwYXR0ZXJuLiBGb3IKICAgICAgICBleGFtcGxlLAogCiAgICAgICAgICAoYSg/aSlifGMpCiAKLSAgICAgICBtYXRjaGVzICAiYWIiLCAgImFCIiwgICJjIiwgIGFuZCAiQyIsIGV2ZW4gdGhvdWdoIHdoZW4gbWF0Y2hpbmcgIkMiIHRoZQotICAgICAgIGZpcnN0IGJyYW5jaCBpcyBhYmFuZG9uZWQgYmVmb3JlIHRoZSBvcHRpb24gc2V0dGluZy4gIFRoaXMgIGlzICBiZWNhdXNlCi0gICAgICAgdGhlICBlZmZlY3RzICBvZiBvcHRpb24gc2V0dGluZ3MgaGFwcGVuIGF0IGNvbXBpbGUgdGltZS4gVGhlcmUgd291bGQgYmUKKyAgICAgICBtYXRjaGVzICJhYiIsICJhQiIsICJjIiwgYW5kICJDIiwgZXZlbiB0aG91Z2ggIHdoZW4gIG1hdGNoaW5nICAiQyIgIHRoZQorICAgICAgIGZpcnN0ICBicmFuY2ggIGlzICBhYmFuZG9uZWQgYmVmb3JlIHRoZSBvcHRpb24gc2V0dGluZy4gVGhpcyBpcyBiZWNhdXNlCisgICAgICAgdGhlIGVmZmVjdHMgb2Ygb3B0aW9uIHNldHRpbmdzIGhhcHBlbiBhdCBjb21waWxlIHRpbWUuIFRoZXJlICB3b3VsZCAgYmUKICAgICAgICBzb21lIHZlcnkgd2VpcmQgYmVoYXZpb3VyIG90aGVyd2lzZS4KIAotICAgICAgIE5vdGU6IFRoZXJlIGFyZSBvdGhlciBQQ1JFLXNwZWNpZmljIG9wdGlvbnMgdGhhdCAgY2FuICBiZSAgc2V0ICBieSAgdGhlCi0gICAgICAgYXBwbGljYXRpb24gIHdoZW4gIHRoZSAgY29tcGlsaW5nICBvciBtYXRjaGluZyBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gSW4KLSAgICAgICBzb21lIGNhc2VzIHRoZSBwYXR0ZXJuIGNhbiBjb250YWluIHNwZWNpYWwgbGVhZGluZyAgc2VxdWVuY2VzICBzdWNoICBhcwotICAgICAgICgqQ1JMRikgIHRvICBvdmVycmlkZSAgd2hhdCAgdGhlICBhcHBsaWNhdGlvbiAgaGFzIHNldCBvciB3aGF0IGhhcyBiZWVuCi0gICAgICAgZGVmYXVsdGVkLiAgRGV0YWlscyAgYXJlICBnaXZlbiAgaW4gIHRoZSAgc2VjdGlvbiAgIGVudGl0bGVkICAgIk5ld2xpbmUKLSAgICAgICBzZXF1ZW5jZXMiICBhYm92ZS4gIFRoZXJlICBhcmUgYWxzbyB0aGUgKCpVVEY4KSwgKCpVVEYxNiksKCpVVEYzMiksIGFuZAotICAgICAgICgqVUNQKSBsZWFkaW5nIHNlcXVlbmNlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCBVVEYgYW5kIFVuaWNvZGUgIHByb3AtCi0gICAgICAgZXJ0eSAgbW9kZXM7ICB0aGV5IGFyZSBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIFBDUkVfVVRGOCwgUENSRV9VVEYxNiwKLSAgICAgICBQQ1JFX1VURjMyIGFuZCB0aGUgUENSRV9VQ1Agb3B0aW9ucywgcmVzcGVjdGl2ZWx5LiBUaGUgKCpVVEYpICBzZXF1ZW5jZQotICAgICAgIGlzICBhICBnZW5lcmljIHZlcnNpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGFueSBvZiB0aGUgbGlicmFyaWVzLiBIb3ctCi0gICAgICAgZXZlciwgdGhlIGFwcGxpY2F0aW9uIGNhbiBzZXQgdGhlIFBDUkVfTkVWRVJfVVRGICBvcHRpb24sICB3aGljaCAgbG9ja3MKKyAgICAgICBOb3RlOiAgVGhlcmUgIGFyZSAgb3RoZXIgIFBDUkUtc3BlY2lmaWMgIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0IGJ5IHRoZQorICAgICAgIGFwcGxpY2F0aW9uIHdoZW4gdGhlIGNvbXBpbGluZyBvciBtYXRjaGluZyAgZnVuY3Rpb25zICBhcmUgIGNhbGxlZC4gIEluCisgICAgICAgc29tZSAgY2FzZXMgIHRoZSAgcGF0dGVybiBjYW4gY29udGFpbiBzcGVjaWFsIGxlYWRpbmcgc2VxdWVuY2VzIHN1Y2ggYXMKKyAgICAgICAoKkNSTEYpIHRvIG92ZXJyaWRlIHdoYXQgdGhlIGFwcGxpY2F0aW9uICBoYXMgIHNldCAgb3IgIHdoYXQgIGhhcyAgYmVlbgorICAgICAgIGRlZmF1bHRlZC4gICBEZXRhaWxzICAgYXJlICBnaXZlbiAgaW4gIHRoZSAgc2VjdGlvbiAgZW50aXRsZWQgICJOZXdsaW5lCisgICAgICAgc2VxdWVuY2VzIiBhYm92ZS4gVGhlcmUgYXJlIGFsc28gdGhlICAoKlVURjgpLCAgKCpVVEYxNiksKCpVVEYzMiksICBhbmQKKyAgICAgICAoKlVDUCkgIGxlYWRpbmcgc2VxdWVuY2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IFVURiBhbmQgVW5pY29kZSBwcm9wLQorICAgICAgIGVydHkgbW9kZXM7IHRoZXkgYXJlIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgIFBDUkVfVVRGOCwgIFBDUkVfVVRGMTYsCisgICAgICAgUENSRV9VVEYzMiAgYW5kIHRoZSBQQ1JFX1VDUCBvcHRpb25zLCByZXNwZWN0aXZlbHkuIFRoZSAoKlVURikgc2VxdWVuY2UKKyAgICAgICBpcyBhIGdlbmVyaWMgdmVyc2lvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggYW55IG9mIHRoZSAgbGlicmFyaWVzLiAgSG93LQorICAgICAgIGV2ZXIsICB0aGUgIGFwcGxpY2F0aW9uICBjYW4gc2V0IHRoZSBQQ1JFX05FVkVSX1VURiBvcHRpb24sIHdoaWNoIGxvY2tzCiAgICAgICAgb3V0IHRoZSB1c2Ugb2YgdGhlICgqVVRGKSBzZXF1ZW5jZXMuCiAKIApAQCAtNjAzNCwxOCArNjA0NywxOCBAQAogCiAgICAgICAgICBjYXQoYXJhY3R8ZXJwaWxsYXJ8KQogCi0gICAgICAgbWF0Y2hlcyAiY2F0YXJhY3QiLCAiY2F0ZXJwaWxsYXIiLCBvciAiY2F0Ii4gV2l0aG91dCAgdGhlICBwYXJlbnRoZXNlcywKKyAgICAgICBtYXRjaGVzICAiY2F0YXJhY3QiLCAgImNhdGVycGlsbGFyIiwgb3IgImNhdCIuIFdpdGhvdXQgdGhlIHBhcmVudGhlc2VzLAogICAgICAgIGl0IHdvdWxkIG1hdGNoICJjYXRhcmFjdCIsICJlcnBpbGxhciIgb3IgYW4gZW1wdHkgc3RyaW5nLgogCi0gICAgICAgMi4gIEl0ICBzZXRzICB1cCAgdGhlICBzdWJwYXR0ZXJuIGFzIGEgY2FwdHVyaW5nIHN1YnBhdHRlcm4uIFRoaXMgbWVhbnMKLSAgICAgICB0aGF0LCB3aGVuIHRoZSB3aG9sZSBwYXR0ZXJuICBtYXRjaGVzLCAgdGhhdCAgcG9ydGlvbiAgb2YgIHRoZSAgc3ViamVjdAorICAgICAgIDIuIEl0IHNldHMgdXAgdGhlIHN1YnBhdHRlcm4gYXMgIGEgIGNhcHR1cmluZyAgc3VicGF0dGVybi4gIFRoaXMgIG1lYW5zCisgICAgICAgdGhhdCwgIHdoZW4gIHRoZSAgd2hvbGUgIHBhdHRlcm4gIG1hdGNoZXMsICB0aGF0IHBvcnRpb24gb2YgdGhlIHN1YmplY3QKICAgICAgICBzdHJpbmcgdGhhdCBtYXRjaGVkIHRoZSBzdWJwYXR0ZXJuIGlzIHBhc3NlZCBiYWNrIHRvIHRoZSBjYWxsZXIgdmlhIHRoZQotICAgICAgIG92ZWN0b3IgYXJndW1lbnQgb2YgdGhlIG1hdGNoaW5nIGZ1bmN0aW9uLiAoVGhpcyBhcHBsaWVzICBvbmx5ICB0byAgdGhlCi0gICAgICAgdHJhZGl0aW9uYWwgIG1hdGNoaW5nIGZ1bmN0aW9uczsgdGhlIERGQSBtYXRjaGluZyBmdW5jdGlvbnMgZG8gbm90IHN1cC0KKyAgICAgICBvdmVjdG9yICBhcmd1bWVudCAgb2YgIHRoZSBtYXRjaGluZyBmdW5jdGlvbi4gKFRoaXMgYXBwbGllcyBvbmx5IHRvIHRoZQorICAgICAgIHRyYWRpdGlvbmFsIG1hdGNoaW5nIGZ1bmN0aW9uczsgdGhlIERGQSBtYXRjaGluZyBmdW5jdGlvbnMgZG8gbm90ICBzdXAtCiAgICAgICAgcG9ydCBjYXB0dXJpbmcuKQogCiAgICAgICAgT3BlbmluZyBwYXJlbnRoZXNlcyBhcmUgY291bnRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgKHN0YXJ0aW5nIGZyb20gMSkgdG8KLSAgICAgICBvYnRhaW4gIG51bWJlcnMgIGZvciAgdGhlICBjYXB0dXJpbmcgIHN1YnBhdHRlcm5zLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQorICAgICAgIG9idGFpbiBudW1iZXJzIGZvciB0aGUgIGNhcHR1cmluZyAgc3VicGF0dGVybnMuICBGb3IgIGV4YW1wbGUsICBpZiAgdGhlCiAgICAgICAgc3RyaW5nICJ0aGUgcmVkIGtpbmciIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgcGF0dGVybgogCiAgICAgICAgICB0aGUgKChyZWR8d2hpdGUpIChraW5nfHF1ZWVuKSkKQEAgLTYwNTMsMTIgKzYwNjYsMTIgQEAKICAgICAgICB0aGUgY2FwdHVyZWQgc3Vic3RyaW5ncyBhcmUgInJlZCBraW5nIiwgInJlZCIsIGFuZCAia2luZyIsIGFuZCBhcmUgbnVtLQogICAgICAgIGJlcmVkIDEsIDIsIGFuZCAzLCByZXNwZWN0aXZlbHkuCiAKLSAgICAgICBUaGUgIGZhY3QgIHRoYXQgIHBsYWluICBwYXJlbnRoZXNlcyAgZnVsZmlsIHR3byBmdW5jdGlvbnMgaXMgbm90IGFsd2F5cwotICAgICAgIGhlbHBmdWwuICBUaGVyZSBhcmUgb2Z0ZW4gdGltZXMgd2hlbiBhIGdyb3VwaW5nIHN1YnBhdHRlcm4gaXMgIHJlcXVpcmVkCi0gICAgICAgd2l0aG91dCAgYSBjYXB0dXJpbmcgcmVxdWlyZW1lbnQuIElmIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMgaXMgZm9sbG93ZWQKLSAgICAgICBieSBhIHF1ZXN0aW9uIG1hcmsgYW5kIGEgY29sb24sIHRoZSBzdWJwYXR0ZXJuIGRvZXMgbm90IGRvIGFueSAgY2FwdHVyLQotICAgICAgIGluZywgIGFuZCAgaXMgIG5vdCAgY291bnRlZCB3aGVuIGNvbXB1dGluZyB0aGUgbnVtYmVyIG9mIGFueSBzdWJzZXF1ZW50Ci0gICAgICAgY2FwdHVyaW5nIHN1YnBhdHRlcm5zLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHN0cmluZyAidGhlIHdoaXRlIHF1ZWVuIiAgaXMKKyAgICAgICBUaGUgZmFjdCB0aGF0IHBsYWluIHBhcmVudGhlc2VzIGZ1bGZpbCAgdHdvICBmdW5jdGlvbnMgIGlzICBub3QgIGFsd2F5cworICAgICAgIGhlbHBmdWwuICAgVGhlcmUgYXJlIG9mdGVuIHRpbWVzIHdoZW4gYSBncm91cGluZyBzdWJwYXR0ZXJuIGlzIHJlcXVpcmVkCisgICAgICAgd2l0aG91dCBhIGNhcHR1cmluZyByZXF1aXJlbWVudC4gSWYgYW4gb3BlbmluZyBwYXJlbnRoZXNpcyBpcyAgZm9sbG93ZWQKKyAgICAgICBieSAgYSBxdWVzdGlvbiBtYXJrIGFuZCBhIGNvbG9uLCB0aGUgc3VicGF0dGVybiBkb2VzIG5vdCBkbyBhbnkgY2FwdHVyLQorICAgICAgIGluZywgYW5kIGlzIG5vdCBjb3VudGVkIHdoZW4gY29tcHV0aW5nIHRoZSAgbnVtYmVyICBvZiAgYW55ICBzdWJzZXF1ZW50CisgICAgICAgY2FwdHVyaW5nICBzdWJwYXR0ZXJucy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcgInRoZSB3aGl0ZSBxdWVlbiIgaXMKICAgICAgICBtYXRjaGVkIGFnYWluc3QgdGhlIHBhdHRlcm4KIAogICAgICAgICAgdGhlICgoPzpyZWR8d2hpdGUpIChraW5nfHF1ZWVuKSkKQEAgLTYwNjYsMzcgKzYwNzksMzcgQEAKICAgICAgICB0aGUgY2FwdHVyZWQgc3Vic3RyaW5ncyBhcmUgIndoaXRlIHF1ZWVuIiBhbmQgInF1ZWVuIiwgYW5kIGFyZSBudW1iZXJlZAogICAgICAgIDEgYW5kIDIuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjYXB0dXJpbmcgc3VicGF0dGVybnMgaXMgNjU1MzUuCiAKLSAgICAgICBBcyBhIGNvbnZlbmllbnQgc2hvcnRoYW5kLCBpZiBhbnkgb3B0aW9uIHNldHRpbmdzIGFyZSByZXF1aXJlZCAgYXQgIHRoZQotICAgICAgIHN0YXJ0ICBvZiAgYSAgbm9uLWNhcHR1cmluZyAgc3VicGF0dGVybiwgIHRoZSBvcHRpb24gbGV0dGVycyBtYXkgYXBwZWFyCisgICAgICAgQXMgIGEgIGNvbnZlbmllbnQgc2hvcnRoYW5kLCBpZiBhbnkgb3B0aW9uIHNldHRpbmdzIGFyZSByZXF1aXJlZCBhdCB0aGUKKyAgICAgICBzdGFydCBvZiBhIG5vbi1jYXB0dXJpbmcgc3VicGF0dGVybiwgIHRoZSAgb3B0aW9uICBsZXR0ZXJzICBtYXkgIGFwcGVhcgogICAgICAgIGJldHdlZW4gdGhlICI/IiBhbmQgdGhlICI6Ii4gVGh1cyB0aGUgdHdvIHBhdHRlcm5zCiAKICAgICAgICAgICg/aTpzYXR1cmRheXxzdW5kYXkpCiAgICAgICAgICAoPzooP2kpc2F0dXJkYXl8c3VuZGF5KQogCiAgICAgICAgbWF0Y2ggZXhhY3RseSB0aGUgc2FtZSBzZXQgb2Ygc3RyaW5ncy4gQmVjYXVzZSBhbHRlcm5hdGl2ZSBicmFuY2hlcyBhcmUKLSAgICAgICB0cmllZCAgZnJvbSAgbGVmdCAgdG8gcmlnaHQsIGFuZCBvcHRpb25zIGFyZSBub3QgcmVzZXQgdW50aWwgdGhlIGVuZCBvZgotICAgICAgIHRoZSBzdWJwYXR0ZXJuIGlzIHJlYWNoZWQsIGFuIG9wdGlvbiBzZXR0aW5nIGluIG9uZSBicmFuY2ggZG9lcyAgYWZmZWN0Ci0gICAgICAgc3Vic2VxdWVudCAgYnJhbmNoZXMsICBzbyAgdGhlIGFib3ZlIHBhdHRlcm5zIG1hdGNoICJTVU5EQVkiIGFzIHdlbGwgYXMKKyAgICAgICB0cmllZCBmcm9tIGxlZnQgdG8gcmlnaHQsIGFuZCBvcHRpb25zIGFyZSBub3QgcmVzZXQgdW50aWwgIHRoZSAgZW5kICBvZgorICAgICAgIHRoZSAgc3VicGF0dGVybiBpcyByZWFjaGVkLCBhbiBvcHRpb24gc2V0dGluZyBpbiBvbmUgYnJhbmNoIGRvZXMgYWZmZWN0CisgICAgICAgc3Vic2VxdWVudCBicmFuY2hlcywgc28gdGhlIGFib3ZlIHBhdHRlcm5zIG1hdGNoICJTVU5EQVkiICBhcyAgd2VsbCAgYXMKICAgICAgICAiU2F0dXJkYXkiLgogCiAKIERVUExJQ0FURSBTVUJQQVRURVJOIE5VTUJFUlMKIAogICAgICAgIFBlcmwgNS4xMCBpbnRyb2R1Y2VkIGEgZmVhdHVyZSB3aGVyZWJ5IGVhY2ggYWx0ZXJuYXRpdmUgaW4gYSBzdWJwYXR0ZXJuCi0gICAgICAgdXNlcyAgdGhlIHNhbWUgbnVtYmVycyBmb3IgaXRzIGNhcHR1cmluZyBwYXJlbnRoZXNlcy4gU3VjaCBhIHN1YnBhdHRlcm4KLSAgICAgICBzdGFydHMgd2l0aCAoP3wgYW5kIGlzIGl0c2VsZiBhIG5vbi1jYXB0dXJpbmcgc3VicGF0dGVybi4gRm9yICBleGFtcGxlLAorICAgICAgIHVzZXMgdGhlIHNhbWUgbnVtYmVycyBmb3IgaXRzIGNhcHR1cmluZyBwYXJlbnRoZXNlcy4gU3VjaCBhICBzdWJwYXR0ZXJuCisgICAgICAgc3RhcnRzICB3aXRoICg/fCBhbmQgaXMgaXRzZWxmIGEgbm9uLWNhcHR1cmluZyBzdWJwYXR0ZXJuLiBGb3IgZXhhbXBsZSwKICAgICAgICBjb25zaWRlciB0aGlzIHBhdHRlcm46CiAKICAgICAgICAgICg/fChTYXQpdXJ8KFN1bikpZGF5CiAKLSAgICAgICBCZWNhdXNlICB0aGUgdHdvIGFsdGVybmF0aXZlcyBhcmUgaW5zaWRlIGEgKD98IGdyb3VwLCBib3RoIHNldHMgb2YgY2FwLQotICAgICAgIHR1cmluZyBwYXJlbnRoZXNlcyBhcmUgbnVtYmVyZWQgb25lLiBUaHVzLCB3aGVuICB0aGUgIHBhdHRlcm4gIG1hdGNoZXMsCi0gICAgICAgeW91ICBjYW4gIGxvb2sgIGF0IGNhcHR1cmVkIHN1YnN0cmluZyBudW1iZXIgb25lLCB3aGljaGV2ZXIgYWx0ZXJuYXRpdmUKLSAgICAgICBtYXRjaGVkLiBUaGlzIGNvbnN0cnVjdCBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byAgY2FwdHVyZSAgcGFydCwgIGJ1dAorICAgICAgIEJlY2F1c2UgdGhlIHR3byBhbHRlcm5hdGl2ZXMgYXJlIGluc2lkZSBhICg/fCBncm91cCwgYm90aCBzZXRzIG9mICBjYXAtCisgICAgICAgdHVyaW5nICBwYXJlbnRoZXNlcyAgYXJlICBudW1iZXJlZCBvbmUuIFRodXMsIHdoZW4gdGhlIHBhdHRlcm4gbWF0Y2hlcywKKyAgICAgICB5b3UgY2FuIGxvb2sgYXQgY2FwdHVyZWQgc3Vic3RyaW5nIG51bWJlciAgb25lLCAgd2hpY2hldmVyICBhbHRlcm5hdGl2ZQorICAgICAgIG1hdGNoZWQuICBUaGlzICBjb25zdHJ1Y3QgIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGNhcHR1cmUgcGFydCwgYnV0CiAgICAgICAgbm90IGFsbCwgb2Ygb25lIG9mIGEgbnVtYmVyIG9mIGFsdGVybmF0aXZlcy4gSW5zaWRlIGEgKD98IGdyb3VwLCBwYXJlbi0KLSAgICAgICB0aGVzZXMgYXJlIG51bWJlcmVkIGFzIHVzdWFsLCBidXQgdGhlIG51bWJlciBpcyByZXNldCBhdCB0aGUgIHN0YXJ0ICBvZgotICAgICAgIGVhY2ggIGJyYW5jaC4gIFRoZSBudW1iZXJzIG9mIGFueSBjYXB0dXJpbmcgcGFyZW50aGVzZXMgdGhhdCBmb2xsb3cgdGhlCi0gICAgICAgc3VicGF0dGVybiBzdGFydCBhZnRlciB0aGUgaGlnaGVzdCBudW1iZXIgdXNlZCBpbiBhbnkgYnJhbmNoLiBUaGUgIGZvbC0KKyAgICAgICB0aGVzZXMgIGFyZSAgbnVtYmVyZWQgYXMgdXN1YWwsIGJ1dCB0aGUgbnVtYmVyIGlzIHJlc2V0IGF0IHRoZSBzdGFydCBvZgorICAgICAgIGVhY2ggYnJhbmNoLiBUaGUgbnVtYmVycyBvZiBhbnkgY2FwdHVyaW5nIHBhcmVudGhlc2VzIHRoYXQgIGZvbGxvdyAgdGhlCisgICAgICAgc3VicGF0dGVybiAgc3RhcnQgYWZ0ZXIgdGhlIGhpZ2hlc3QgbnVtYmVyIHVzZWQgaW4gYW55IGJyYW5jaC4gVGhlIGZvbC0KICAgICAgICBsb3dpbmcgZXhhbXBsZSBpcyB0YWtlbiBmcm9tIHRoZSBQZXJsIGRvY3VtZW50YXRpb24uIFRoZSBudW1iZXJzIHVuZGVyLQogICAgICAgIG5lYXRoIHNob3cgaW4gd2hpY2ggYnVmZmVyIHRoZSBjYXB0dXJlZCBjb250ZW50IHdpbGwgYmUgc3RvcmVkLgogCkBAIC02MTA0LDU4ICs2MTE3LDU4IEBACiAgICAgICAgICAvICggYSApICAoP3wgeCAoIHkgKSB6IHwgKHAgKHEpIHIpIHwgKHQpIHUgKHYpICkgKCB6ICkgL3gKICAgICAgICAgICMgMSAgICAgICAgICAgIDIgICAgICAgICAyICAzICAgICAgICAyICAgICAzICAgICA0CiAKLSAgICAgICBBIGJhY2sgcmVmZXJlbmNlIHRvIGEgbnVtYmVyZWQgc3VicGF0dGVybiB1c2VzIHRoZSAgbW9zdCAgcmVjZW50ICB2YWx1ZQotICAgICAgIHRoYXQgIGlzICBzZXQgIGZvciB0aGF0IG51bWJlciBieSBhbnkgc3VicGF0dGVybi4gVGhlIGZvbGxvd2luZyBwYXR0ZXJuCisgICAgICAgQSAgYmFjayAgcmVmZXJlbmNlICB0byBhIG51bWJlcmVkIHN1YnBhdHRlcm4gdXNlcyB0aGUgbW9zdCByZWNlbnQgdmFsdWUKKyAgICAgICB0aGF0IGlzIHNldCBmb3IgdGhhdCBudW1iZXIgYnkgYW55IHN1YnBhdHRlcm4uICBUaGUgIGZvbGxvd2luZyAgcGF0dGVybgogICAgICAgIG1hdGNoZXMgImFiY2FiYyIgb3IgImRlZmRlZiI6CiAKICAgICAgICAgIC8oP3woYWJjKXwoZGVmKSlcMS8KIAotICAgICAgIEluIGNvbnRyYXN0LCBhIHN1YnJvdXRpbmUgY2FsbCB0byBhIG51bWJlcmVkIHN1YnBhdHRlcm4gIGFsd2F5cyAgcmVmZXJzCi0gICAgICAgdG8gIHRoZSAgZmlyc3QgIG9uZSBpbiB0aGUgcGF0dGVybiB3aXRoIHRoZSBnaXZlbiBudW1iZXIuIFRoZSBmb2xsb3dpbmcKKyAgICAgICBJbiAgY29udHJhc3QsICBhIHN1YnJvdXRpbmUgY2FsbCB0byBhIG51bWJlcmVkIHN1YnBhdHRlcm4gYWx3YXlzIHJlZmVycworICAgICAgIHRvIHRoZSBmaXJzdCBvbmUgaW4gdGhlIHBhdHRlcm4gd2l0aCB0aGUgZ2l2ZW4gIG51bWJlci4gIFRoZSAgZm9sbG93aW5nCiAgICAgICAgcGF0dGVybiBtYXRjaGVzICJhYmNhYmMiIG9yICJkZWZhYmMiOgogCiAgICAgICAgICAvKD98KGFiYyl8KGRlZikpKD8xKS8KIAotICAgICAgIElmIGEgY29uZGl0aW9uIHRlc3QgZm9yIGEgc3VicGF0dGVybidzIGhhdmluZyBtYXRjaGVkIHJlZmVycyB0byBhICBub24tCi0gICAgICAgdW5pcXVlICBudW1iZXIsIHRoZSB0ZXN0IGlzIHRydWUgaWYgYW55IG9mIHRoZSBzdWJwYXR0ZXJucyBvZiB0aGF0IG51bS0KKyAgICAgICBJZiAgYSBjb25kaXRpb24gdGVzdCBmb3IgYSBzdWJwYXR0ZXJuJ3MgaGF2aW5nIG1hdGNoZWQgcmVmZXJzIHRvIGEgbm9uLQorICAgICAgIHVuaXF1ZSBudW1iZXIsIHRoZSB0ZXN0IGlzIHRydWUgaWYgYW55IG9mIHRoZSBzdWJwYXR0ZXJucyBvZiB0aGF0ICBudW0tCiAgICAgICAgYmVyIGhhdmUgbWF0Y2hlZC4KIAotICAgICAgIEFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIHVzaW5nIHRoaXMgImJyYW5jaCByZXNldCIgZmVhdHVyZSBpcyB0byAgdXNlCisgICAgICAgQW4gIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIHVzaW5nIHRoaXMgImJyYW5jaCByZXNldCIgZmVhdHVyZSBpcyB0byB1c2UKICAgICAgICBkdXBsaWNhdGUgbmFtZWQgc3VicGF0dGVybnMsIGFzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLgogCiAKIE5BTUVEIFNVQlBBVFRFUk5TCiAKLSAgICAgICBJZGVudGlmeWluZyAgY2FwdHVyaW5nICBwYXJlbnRoZXNlcyAgYnkgbnVtYmVyIGlzIHNpbXBsZSwgYnV0IGl0IGNhbiBiZQotICAgICAgIHZlcnkgaGFyZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXJzIGluIGNvbXBsaWNhdGVkICByZWd1bGFyICBleHByZXMtCi0gICAgICAgc2lvbnMuICBGdXJ0aGVybW9yZSwgIGlmICBhbiAgZXhwcmVzc2lvbiAgaXMgIG1vZGlmaWVkLCB0aGUgbnVtYmVycyBtYXkKLSAgICAgICBjaGFuZ2UuIFRvIGhlbHAgd2l0aCB0aGlzIGRpZmZpY3VsdHksIFBDUkUgc3VwcG9ydHMgdGhlIG5hbWluZyBvZiAgc3ViLQorICAgICAgIElkZW50aWZ5aW5nIGNhcHR1cmluZyBwYXJlbnRoZXNlcyBieSBudW1iZXIgaXMgc2ltcGxlLCBidXQgIGl0ICBjYW4gIGJlCisgICAgICAgdmVyeSAgaGFyZCAgdG8ga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVycyBpbiBjb21wbGljYXRlZCByZWd1bGFyIGV4cHJlcy0KKyAgICAgICBzaW9ucy4gRnVydGhlcm1vcmUsIGlmIGFuICBleHByZXNzaW9uICBpcyAgbW9kaWZpZWQsICB0aGUgIG51bWJlcnMgIG1heQorICAgICAgIGNoYW5nZS4gIFRvIGhlbHAgd2l0aCB0aGlzIGRpZmZpY3VsdHksIFBDUkUgc3VwcG9ydHMgdGhlIG5hbWluZyBvZiBzdWItCiAgICAgICAgcGF0dGVybnMuIFRoaXMgZmVhdHVyZSB3YXMgbm90IGFkZGVkIHRvIFBlcmwgdW50aWwgcmVsZWFzZSA1LjEwLiBQeXRob24KLSAgICAgICBoYWQgdGhlIGZlYXR1cmUgZWFybGllciwgYW5kIFBDUkUgaW50cm9kdWNlZCBpdCBhdCByZWxlYXNlICA0LjAsICB1c2luZwotICAgICAgIHRoZSAgUHl0aG9uIHN5bnRheC4gUENSRSBub3cgc3VwcG9ydHMgYm90aCB0aGUgUGVybCBhbmQgdGhlIFB5dGhvbiBzeW4tCi0gICAgICAgdGF4LiBQZXJsIGFsbG93cyBpZGVudGljYWxseSBudW1iZXJlZCAgc3VicGF0dGVybnMgIHRvICBoYXZlICBkaWZmZXJlbnQKKyAgICAgICBoYWQgIHRoZSAgZmVhdHVyZSBlYXJsaWVyLCBhbmQgUENSRSBpbnRyb2R1Y2VkIGl0IGF0IHJlbGVhc2UgNC4wLCB1c2luZworICAgICAgIHRoZSBQeXRob24gc3ludGF4LiBQQ1JFIG5vdyBzdXBwb3J0cyBib3RoIHRoZSBQZXJsIGFuZCB0aGUgUHl0aG9uICBzeW4tCisgICAgICAgdGF4LiAgUGVybCAgYWxsb3dzICBpZGVudGljYWxseSAgbnVtYmVyZWQgc3VicGF0dGVybnMgdG8gaGF2ZSBkaWZmZXJlbnQKICAgICAgICBuYW1lcywgYnV0IFBDUkUgZG9lcyBub3QuCiAKLSAgICAgICBJbiAgUENSRSwgIGEgc3VicGF0dGVybiBjYW4gYmUgbmFtZWQgaW4gb25lIG9mIHRocmVlIHdheXM6ICg/PG5hbWU+Li4uKQotICAgICAgIG9yICg/J25hbWUnLi4uKSBhcyBpbiBQZXJsLCBvciAoP1A8bmFtZT4uLi4pIGFzIGluICBQeXRob24uICBSZWZlcmVuY2VzCi0gICAgICAgdG8gIGNhcHR1cmluZyBwYXJlbnRoZXNlcyBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBwYXR0ZXJuLCBzdWNoIGFzIGJhY2sKLSAgICAgICByZWZlcmVuY2VzLCByZWN1cnNpb24sIGFuZCBjb25kaXRpb25zLCBjYW4gYmUgbWFkZSBieSBuYW1lIGFzICB3ZWxsICBhcworICAgICAgIEluIFBDUkUsIGEgc3VicGF0dGVybiBjYW4gYmUgbmFtZWQgaW4gb25lIG9mIHRocmVlICB3YXlzOiAgKD88bmFtZT4uLi4pCisgICAgICAgb3IgICg/J25hbWUnLi4uKSAgYXMgaW4gUGVybCwgb3IgKD9QPG5hbWU+Li4uKSBhcyBpbiBQeXRob24uIFJlZmVyZW5jZXMKKyAgICAgICB0byBjYXB0dXJpbmcgcGFyZW50aGVzZXMgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgcGF0dGVybiwgc3VjaCBhcyAgYmFjaworICAgICAgIHJlZmVyZW5jZXMsICByZWN1cnNpb24sICBhbmQgY29uZGl0aW9ucywgY2FuIGJlIG1hZGUgYnkgbmFtZSBhcyB3ZWxsIGFzCiAgICAgICAgYnkgbnVtYmVyLgogCi0gICAgICAgTmFtZXMgIGNvbnNpc3Qgb2YgdXAgdG8gMzIgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLCBidXQKLSAgICAgICBtdXN0IHN0YXJ0IHdpdGggYSBub24tZGlnaXQuICBOYW1lZCAgY2FwdHVyaW5nICBwYXJlbnRoZXNlcyAgYXJlICBzdGlsbAotICAgICAgIGFsbG9jYXRlZCAgbnVtYmVycyAgYXMgIHdlbGwgYXMgbmFtZXMsIGV4YWN0bHkgYXMgaWYgdGhlIG5hbWVzIHdlcmUgbm90Ci0gICAgICAgcHJlc2VudC4gVGhlIFBDUkUgQVBJIHByb3ZpZGVzIGZ1bmN0aW9uIGNhbGxzIGZvciBleHRyYWN0aW5nIHRoZSAgbmFtZS0KLSAgICAgICB0by1udW1iZXIgIHRyYW5zbGF0aW9uICB0YWJsZSAgZnJvbSBhIGNvbXBpbGVkIHBhdHRlcm4uIFRoZXJlIGlzIGFsc28gYQorICAgICAgIE5hbWVzIGNvbnNpc3Qgb2YgdXAgdG8gMzIgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLCAgYnV0CisgICAgICAgbXVzdCAgc3RhcnQgIHdpdGggIGEgIG5vbi1kaWdpdC4gIE5hbWVkIGNhcHR1cmluZyBwYXJlbnRoZXNlcyBhcmUgc3RpbGwKKyAgICAgICBhbGxvY2F0ZWQgbnVtYmVycyBhcyB3ZWxsIGFzIG5hbWVzLCBleGFjdGx5IGFzIGlmIHRoZSAgbmFtZXMgIHdlcmUgIG5vdAorICAgICAgIHByZXNlbnQuICBUaGUgUENSRSBBUEkgcHJvdmlkZXMgZnVuY3Rpb24gY2FsbHMgZm9yIGV4dHJhY3RpbmcgdGhlIG5hbWUtCisgICAgICAgdG8tbnVtYmVyIHRyYW5zbGF0aW9uIHRhYmxlIGZyb20gYSBjb21waWxlZCBwYXR0ZXJuLiBUaGVyZSAgaXMgIGFsc28gIGEKICAgICAgICBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyBhIGNhcHR1cmVkIHN1YnN0cmluZyBieSBuYW1lLgogCi0gICAgICAgQnkgZGVmYXVsdCwgYSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIHBhdHRlcm4sIGJ1dCBpdCBpcyAgcG9zc2libGUKKyAgICAgICBCeSAgZGVmYXVsdCwgYSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIHBhdHRlcm4sIGJ1dCBpdCBpcyBwb3NzaWJsZQogICAgICAgIHRvIHJlbGF4IHRoaXMgY29uc3RyYWludCBieSBzZXR0aW5nIHRoZSBQQ1JFX0RVUE5BTUVTIG9wdGlvbiBhdCBjb21waWxlCi0gICAgICAgdGltZS4gKER1cGxpY2F0ZSBuYW1lcyBhcmUgYWxzbyBhbHdheXMgcGVybWl0dGVkIGZvciAgc3VicGF0dGVybnMgIHdpdGgKLSAgICAgICB0aGUgIHNhbWUgIG51bWJlciwgc2V0IHVwIGFzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4pIER1cGxpLQotICAgICAgIGNhdGUgbmFtZXMgY2FuIGJlIHVzZWZ1bCBmb3IgcGF0dGVybnMgd2hlcmUgb25seSBvbmUgIGluc3RhbmNlICBvZiAgdGhlCi0gICAgICAgbmFtZWQgIHBhcmVudGhlc2VzICBjYW4gIG1hdGNoLiBTdXBwb3NlIHlvdSB3YW50IHRvIG1hdGNoIHRoZSBuYW1lIG9mIGEKLSAgICAgICB3ZWVrZGF5LCBlaXRoZXIgYXMgYSAzLWxldHRlciBhYmJyZXZpYXRpb24gb3IgYXMgdGhlIGZ1bGwgbmFtZSwgYW5kICBpbgorICAgICAgIHRpbWUuICAoRHVwbGljYXRlICBuYW1lcyBhcmUgYWxzbyBhbHdheXMgcGVybWl0dGVkIGZvciBzdWJwYXR0ZXJucyB3aXRoCisgICAgICAgdGhlIHNhbWUgbnVtYmVyLCBzZXQgdXAgYXMgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyAgc2VjdGlvbi4pICBEdXBsaS0KKyAgICAgICBjYXRlICBuYW1lcyAgY2FuICBiZSB1c2VmdWwgZm9yIHBhdHRlcm5zIHdoZXJlIG9ubHkgb25lIGluc3RhbmNlIG9mIHRoZQorICAgICAgIG5hbWVkIHBhcmVudGhlc2VzIGNhbiBtYXRjaC4gU3VwcG9zZSB5b3Ugd2FudCB0byBtYXRjaCB0aGUgIG5hbWUgIG9mICBhCisgICAgICAgd2Vla2RheSwgIGVpdGhlciBhcyBhIDMtbGV0dGVyIGFiYnJldmlhdGlvbiBvciBhcyB0aGUgZnVsbCBuYW1lLCBhbmQgaW4KICAgICAgICBib3RoIGNhc2VzIHlvdSB3YW50IHRvIGV4dHJhY3QgdGhlIGFiYnJldmlhdGlvbi4gVGhpcyBwYXR0ZXJuIChpZ25vcmluZwogICAgICAgIHRoZSBsaW5lIGJyZWFrcykgZG9lcyB0aGUgam9iOgogCkBAIC02MTY1LDE4ICs2MTc4LDE4IEBACiAgICAgICAgICAoPzxETj5UaHUpKD86cnNkYXkpP3wKICAgICAgICAgICg/PEROPlNhdCkoPzp1cmRheSk/CiAKLSAgICAgICBUaGVyZSBhcmUgZml2ZSBjYXB0dXJpbmcgc3Vic3RyaW5ncywgYnV0IG9ubHkgb25lIGlzIGV2ZXIgc2V0ICBhZnRlciAgYQorICAgICAgIFRoZXJlICBhcmUgIGZpdmUgY2FwdHVyaW5nIHN1YnN0cmluZ3MsIGJ1dCBvbmx5IG9uZSBpcyBldmVyIHNldCBhZnRlciBhCiAgICAgICAgbWF0Y2guICAoQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIHNvbHZpbmcgdGhpcyBwcm9ibGVtIGlzIHRvIHVzZSBhICJicmFuY2gKICAgICAgICByZXNldCIgc3VicGF0dGVybiwgYXMgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLikKIAotICAgICAgIFRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyB0aGUgZGF0YSBieSAgbmFtZSAgcmV0dXJucyAgdGhlCi0gICAgICAgc3Vic3RyaW5nICBmb3IgIHRoZSBmaXJzdCAoYW5kIGluIHRoaXMgZXhhbXBsZSwgdGhlIG9ubHkpIHN1YnBhdHRlcm4gb2YKLSAgICAgICB0aGF0IG5hbWUgdGhhdCBtYXRjaGVkLiBUaGlzIHNhdmVzIHNlYXJjaGluZyAgdG8gIGZpbmQgIHdoaWNoICBudW1iZXJlZAorICAgICAgIFRoZSAgY29udmVuaWVuY2UgIGZ1bmN0aW9uICBmb3IgZXh0cmFjdGluZyB0aGUgZGF0YSBieSBuYW1lIHJldHVybnMgdGhlCisgICAgICAgc3Vic3RyaW5nIGZvciB0aGUgZmlyc3QgKGFuZCBpbiB0aGlzIGV4YW1wbGUsIHRoZSBvbmx5KSAgc3VicGF0dGVybiAgb2YKKyAgICAgICB0aGF0ICBuYW1lICB0aGF0ICBtYXRjaGVkLiAgVGhpcyBzYXZlcyBzZWFyY2hpbmcgdG8gZmluZCB3aGljaCBudW1iZXJlZAogICAgICAgIHN1YnBhdHRlcm4gaXQgd2FzLgogCi0gICAgICAgSWYgIHlvdSAgbWFrZSAgYSAgYmFjayAgcmVmZXJlbmNlIHRvIGEgbm9uLXVuaXF1ZSBuYW1lZCBzdWJwYXR0ZXJuIGZyb20KLSAgICAgICBlbHNld2hlcmUgaW4gdGhlIHBhdHRlcm4sIHRoZSBzdWJwYXR0ZXJucyB0byB3aGljaCB0aGUgbmFtZSByZWZlcnMgIGFyZQotICAgICAgIGNoZWNrZWQgIGluICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIG92ZXJhbGwgcGF0dGVybi4gVGhlCisgICAgICAgSWYgeW91IG1ha2UgYSBiYWNrIHJlZmVyZW5jZSB0byAgYSAgbm9uLXVuaXF1ZSAgbmFtZWQgIHN1YnBhdHRlcm4gIGZyb20KKyAgICAgICBlbHNld2hlcmUgIGluIHRoZSBwYXR0ZXJuLCB0aGUgc3VicGF0dGVybnMgdG8gd2hpY2ggdGhlIG5hbWUgcmVmZXJzIGFyZQorICAgICAgIGNoZWNrZWQgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBvdmVyYWxsICBwYXR0ZXJuLiAgVGhlCiAgICAgICAgZmlyc3Qgb25lIHRoYXQgaXMgc2V0IGlzIHVzZWQgZm9yIHRoZSByZWZlcmVuY2UuIEZvciBleGFtcGxlLCB0aGlzIHBhdC0KICAgICAgICB0ZXJuIG1hdGNoZXMgYm90aCAiZm9vZm9vIiBhbmQgImJhcmJhciIgYnV0IG5vdCAiZm9vYmFyIiBvciAiYmFyZm9vIjoKIApAQCAtNjE4NCwyOSArNjE5NywyOSBAQAogCiAKICAgICAgICBJZiB5b3UgbWFrZSBhIHN1YnJvdXRpbmUgY2FsbCB0byBhIG5vbi11bmlxdWUgbmFtZWQgc3VicGF0dGVybiwgdGhlIG9uZQotICAgICAgIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIG5hbWUgaXMgIHVzZWQuICBJbiAgdGhlCisgICAgICAgdGhhdCAgY29ycmVzcG9uZHMgIHRvICB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgbmFtZSBpcyB1c2VkLiBJbiB0aGUKICAgICAgICBhYnNlbmNlIG9mIGR1cGxpY2F0ZSBudW1iZXJzIChzZWUgdGhlIHByZXZpb3VzIHNlY3Rpb24pIHRoaXMgaXMgdGhlIG9uZQogICAgICAgIHdpdGggdGhlIGxvd2VzdCBudW1iZXIuCiAKICAgICAgICBJZiB5b3UgdXNlIGEgbmFtZWQgcmVmZXJlbmNlIGluIGEgY29uZGl0aW9uIHRlc3QgKHNlZSB0aGUgc2VjdGlvbiBhYm91dAogICAgICAgIGNvbmRpdGlvbnMgYmVsb3cpLCBlaXRoZXIgdG8gY2hlY2sgd2hldGhlciBhIHN1YnBhdHRlcm4gaGFzIG1hdGNoZWQsIG9yCi0gICAgICAgdG8gY2hlY2sgZm9yIHJlY3Vyc2lvbiwgYWxsIHN1YnBhdHRlcm5zIHdpdGggdGhlIHNhbWUgbmFtZSBhcmUgIHRlc3RlZC4KLSAgICAgICBJZiAgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIGZvciBhbnkgb25lIG9mIHRoZW0sIHRoZSBvdmVyYWxsIGNvbmRpdGlvbiBpcwotICAgICAgIHRydWUuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzICB0ZXN0aW5nICBieSAgbnVtYmVyLiAgRm9yICBmdXJ0aGVyCi0gICAgICAgZGV0YWlscyAgb2YgIHRoZSAgaW50ZXJmYWNlcyAgZm9yICBoYW5kbGluZyAgbmFtZWQgc3VicGF0dGVybnMsIHNlZSB0aGUKKyAgICAgICB0byAgY2hlY2sgZm9yIHJlY3Vyc2lvbiwgYWxsIHN1YnBhdHRlcm5zIHdpdGggdGhlIHNhbWUgbmFtZSBhcmUgdGVzdGVkLgorICAgICAgIElmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBmb3IgYW55IG9uZSBvZiB0aGVtLCB0aGUgb3ZlcmFsbCBjb25kaXRpb24gIGlzCisgICAgICAgdHJ1ZS4gIFRoaXMgIGlzICB0aGUgIHNhbWUgIGJlaGF2aW91ciBhcyB0ZXN0aW5nIGJ5IG51bWJlci4gRm9yIGZ1cnRoZXIKKyAgICAgICBkZXRhaWxzIG9mIHRoZSBpbnRlcmZhY2VzICBmb3IgIGhhbmRsaW5nICBuYW1lZCAgc3VicGF0dGVybnMsICBzZWUgIHRoZQogICAgICAgIHBjcmVhcGkgZG9jdW1lbnRhdGlvbi4KIAogICAgICAgIFdhcm5pbmc6IFlvdSBjYW5ub3QgdXNlIGRpZmZlcmVudCBuYW1lcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHR3byBzdWItCi0gICAgICAgcGF0dGVybnMgIHdpdGggIHRoZSBzYW1lIG51bWJlciBiZWNhdXNlIFBDUkUgdXNlcyBvbmx5IHRoZSBudW1iZXJzIHdoZW4KKyAgICAgICBwYXR0ZXJucyB3aXRoIHRoZSBzYW1lIG51bWJlciBiZWNhdXNlIFBDUkUgdXNlcyBvbmx5IHRoZSAgbnVtYmVycyAgd2hlbgogICAgICAgIG1hdGNoaW5nLiBGb3IgdGhpcyByZWFzb24sIGFuIGVycm9yIGlzIGdpdmVuIGF0IGNvbXBpbGUgdGltZSBpZiBkaWZmZXItCi0gICAgICAgZW50ICBuYW1lcyAgYXJlIGdpdmVuIHRvIHN1YnBhdHRlcm5zIHdpdGggdGhlIHNhbWUgbnVtYmVyLiBIb3dldmVyLCB5b3UKKyAgICAgICBlbnQgbmFtZXMgYXJlIGdpdmVuIHRvIHN1YnBhdHRlcm5zIHdpdGggdGhlIHNhbWUgbnVtYmVyLiAgSG93ZXZlciwgIHlvdQogICAgICAgIGNhbiBhbHdheXMgZ2l2ZSB0aGUgc2FtZSBuYW1lIHRvIHN1YnBhdHRlcm5zIHdpdGggdGhlIHNhbWUgbnVtYmVyLCBldmVuCiAgICAgICAgd2hlbiBQQ1JFX0RVUE5BTUVTIGlzIG5vdCBzZXQuCiAKIAogUkVQRVRJVElPTgogCi0gICAgICAgUmVwZXRpdGlvbiAgaXMgIHNwZWNpZmllZCAgYnkgIHF1YW50aWZpZXJzLCB3aGljaCBjYW4gZm9sbG93IGFueSBvZiB0aGUKKyAgICAgICBSZXBldGl0aW9uIGlzIHNwZWNpZmllZCBieSBxdWFudGlmaWVycywgd2hpY2ggY2FuICBmb2xsb3cgIGFueSAgb2YgIHRoZQogICAgICAgIGZvbGxvd2luZyBpdGVtczoKIAogICAgICAgICAgYSBsaXRlcmFsIGRhdGEgY2hhcmFjdGVyCkBAIC02MjIwLDE3ICs2MjMzLDE3IEBACiAgICAgICAgICBhIHBhcmVudGhlc2l6ZWQgc3VicGF0dGVybiAoaW5jbHVkaW5nIGFzc2VydGlvbnMpCiAgICAgICAgICBhIHN1YnJvdXRpbmUgY2FsbCB0byBhIHN1YnBhdHRlcm4gKHJlY3Vyc2l2ZSBvciBvdGhlcndpc2UpCiAKLSAgICAgICBUaGUgZ2VuZXJhbCByZXBldGl0aW9uIHF1YW50aWZpZXIgc3BlY2lmaWVzIGEgbWluaW11bSBhbmQgbWF4aW11bSAgbnVtLQotICAgICAgIGJlciAgb2YgIHBlcm1pdHRlZCBtYXRjaGVzLCBieSBnaXZpbmcgdGhlIHR3byBudW1iZXJzIGluIGN1cmx5IGJyYWNrZXRzCi0gICAgICAgKGJyYWNlcyksIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBUaGUgbnVtYmVycyBtdXN0IGJlICBsZXNzICB0aGFuICA2NTUzNiwKKyAgICAgICBUaGUgIGdlbmVyYWwgcmVwZXRpdGlvbiBxdWFudGlmaWVyIHNwZWNpZmllcyBhIG1pbmltdW0gYW5kIG1heGltdW0gbnVtLQorICAgICAgIGJlciBvZiBwZXJtaXR0ZWQgbWF0Y2hlcywgYnkgZ2l2aW5nIHRoZSB0d28gbnVtYmVycyBpbiAgY3VybHkgIGJyYWNrZXRzCisgICAgICAgKGJyYWNlcyksICBzZXBhcmF0ZWQgIGJ5ICBhIGNvbW1hLiBUaGUgbnVtYmVycyBtdXN0IGJlIGxlc3MgdGhhbiA2NTUzNiwKICAgICAgICBhbmQgdGhlIGZpcnN0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQuIEZvciBleGFtcGxlOgogCiAgICAgICAgICB6ezIsNH0KIAotICAgICAgIG1hdGNoZXMgICJ6eiIsICAienp6IiwgIG9yICAienp6eiIuIEEgY2xvc2luZyBicmFjZSBvbiBpdHMgb3duIGlzIG5vdCBhCi0gICAgICAgc3BlY2lhbCBjaGFyYWN0ZXIuIElmIHRoZSBzZWNvbmQgbnVtYmVyIGlzIG9taXR0ZWQsIGJ1dCAgdGhlICBjb21tYSAgaXMKLSAgICAgICBwcmVzZW50LCAgdGhlcmUgIGlzICBubyB1cHBlciBsaW1pdDsgaWYgdGhlIHNlY29uZCBudW1iZXIgYW5kIHRoZSBjb21tYQotICAgICAgIGFyZSBib3RoIG9taXR0ZWQsIHRoZSBxdWFudGlmaWVyIHNwZWNpZmllcyBhbiBleGFjdCBudW1iZXIgb2YgIHJlcXVpcmVkCisgICAgICAgbWF0Y2hlcyAienoiLCAienp6Iiwgb3IgInp6enoiLiBBIGNsb3NpbmcgYnJhY2Ugb24gaXRzICBvd24gIGlzICBub3QgIGEKKyAgICAgICBzcGVjaWFsICBjaGFyYWN0ZXIuICBJZiAgdGhlIHNlY29uZCBudW1iZXIgaXMgb21pdHRlZCwgYnV0IHRoZSBjb21tYSBpcworICAgICAgIHByZXNlbnQsIHRoZXJlIGlzIG5vIHVwcGVyIGxpbWl0OyBpZiB0aGUgc2Vjb25kIG51bWJlciAgYW5kICB0aGUgIGNvbW1hCisgICAgICAgYXJlICBib3RoIG9taXR0ZWQsIHRoZSBxdWFudGlmaWVyIHNwZWNpZmllcyBhbiBleGFjdCBudW1iZXIgb2YgcmVxdWlyZWQKICAgICAgICBtYXRjaGVzLiBUaHVzCiAKICAgICAgICAgIFthZWlvdV17Myx9CkBAIC02MjM5LDUwICs2MjUyLDUwIEBACiAKICAgICAgICAgIFxkezh9CiAKLSAgICAgICBtYXRjaGVzICBleGFjdGx5ICA4ICBkaWdpdHMuIEFuIG9wZW5pbmcgY3VybHkgYnJhY2tldCB0aGF0IGFwcGVhcnMgaW4gYQotICAgICAgIHBvc2l0aW9uIHdoZXJlIGEgcXVhbnRpZmllciBpcyBub3QgYWxsb3dlZCwgb3Igb25lIHRoYXQgZG9lcyBub3QgIG1hdGNoCi0gICAgICAgdGhlICBzeW50YXggb2YgYSBxdWFudGlmaWVyLCBpcyB0YWtlbiBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLiBGb3IgZXhhbS0KKyAgICAgICBtYXRjaGVzIGV4YWN0bHkgOCBkaWdpdHMuIEFuIG9wZW5pbmcgY3VybHkgYnJhY2tldCB0aGF0ICBhcHBlYXJzICBpbiAgYQorICAgICAgIHBvc2l0aW9uICB3aGVyZSBhIHF1YW50aWZpZXIgaXMgbm90IGFsbG93ZWQsIG9yIG9uZSB0aGF0IGRvZXMgbm90IG1hdGNoCisgICAgICAgdGhlIHN5bnRheCBvZiBhIHF1YW50aWZpZXIsIGlzIHRha2VuIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIuIEZvciAgZXhhbS0KICAgICAgICBwbGUsIHssNn0gaXMgbm90IGEgcXVhbnRpZmllciwgYnV0IGEgbGl0ZXJhbCBzdHJpbmcgb2YgZm91ciBjaGFyYWN0ZXJzLgogCiAgICAgICAgSW4gVVRGIG1vZGVzLCBxdWFudGlmaWVycyBhcHBseSB0byBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHRvIGluZGl2aWR1YWwKLSAgICAgICBkYXRhICB1bml0cy4gVGh1cywgZm9yIGV4YW1wbGUsIFx4ezEwMH17Mn0gbWF0Y2hlcyB0d28gY2hhcmFjdGVycywgZWFjaAorICAgICAgIGRhdGEgdW5pdHMuIFRodXMsIGZvciBleGFtcGxlLCBceHsxMDB9ezJ9IG1hdGNoZXMgdHdvIGNoYXJhY3RlcnMsICBlYWNoCiAgICAgICAgb2Ygd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYSB0d28tYnl0ZSBzZXF1ZW5jZSBpbiBhIFVURi04IHN0cmluZy4gU2ltaS0KLSAgICAgICBsYXJseSwgIFxYezN9IG1hdGNoZXMgdGhyZWUgVW5pY29kZSBleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVycywgZWFjaCBvZgotICAgICAgIHdoaWNoIG1heSBiZSBzZXZlcmFsIGRhdGEgdW5pdHMgbG9uZyAoYW5kICB0aGV5ICBtYXkgIGJlICBvZiAgZGlmZmVyZW50CisgICAgICAgbGFybHksIFxYezN9IG1hdGNoZXMgdGhyZWUgVW5pY29kZSBleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVycywgZWFjaCAgb2YKKyAgICAgICB3aGljaCAgbWF5ICBiZSAgc2V2ZXJhbCAgZGF0YSAgdW5pdHMgbG9uZyAoYW5kIHRoZXkgbWF5IGJlIG9mIGRpZmZlcmVudAogICAgICAgIGxlbmd0aHMpLgogCiAgICAgICAgVGhlIHF1YW50aWZpZXIgezB9IGlzIHBlcm1pdHRlZCwgY2F1c2luZyB0aGUgZXhwcmVzc2lvbiB0byBiZWhhdmUgYXMgaWYKICAgICAgICB0aGUgcHJldmlvdXMgaXRlbSBhbmQgdGhlIHF1YW50aWZpZXIgd2VyZSBub3QgcHJlc2VudC4gVGhpcyBtYXkgYmUgdXNlLQotICAgICAgIGZ1bCAgZm9yICBzdWJwYXR0ZXJucyB0aGF0IGFyZSByZWZlcmVuY2VkIGFzIHN1YnJvdXRpbmVzIGZyb20gZWxzZXdoZXJlCisgICAgICAgZnVsIGZvciBzdWJwYXR0ZXJucyB0aGF0IGFyZSByZWZlcmVuY2VkIGFzIHN1YnJvdXRpbmVzICBmcm9tICBlbHNld2hlcmUKICAgICAgICBpbiB0aGUgcGF0dGVybiAoYnV0IHNlZSBhbHNvIHRoZSBzZWN0aW9uIGVudGl0bGVkICJEZWZpbmluZyBzdWJwYXR0ZXJucwotICAgICAgIGZvciAgdXNlICBieSAgcmVmZXJlbmNlIG9ubHkiIGJlbG93KS4gSXRlbXMgb3RoZXIgdGhhbiBzdWJwYXR0ZXJucyB0aGF0CisgICAgICAgZm9yIHVzZSBieSByZWZlcmVuY2Ugb25seSIgYmVsb3cpLiBJdGVtcyBvdGhlciAgdGhhbiAgc3VicGF0dGVybnMgIHRoYXQKICAgICAgICBoYXZlIGEgezB9IHF1YW50aWZpZXIgYXJlIG9taXR0ZWQgZnJvbSB0aGUgY29tcGlsZWQgcGF0dGVybi4KIAotICAgICAgIEZvciBjb252ZW5pZW5jZSwgdGhlIHRocmVlIG1vc3QgY29tbW9uIHF1YW50aWZpZXJzIGhhdmUgIHNpbmdsZS1jaGFyYWMtCisgICAgICAgRm9yICBjb252ZW5pZW5jZSwgdGhlIHRocmVlIG1vc3QgY29tbW9uIHF1YW50aWZpZXJzIGhhdmUgc2luZ2xlLWNoYXJhYy0KICAgICAgICB0ZXIgYWJicmV2aWF0aW9uczoKIAogICAgICAgICAgKiAgICBpcyBlcXVpdmFsZW50IHRvIHswLH0KICAgICAgICAgICsgICAgaXMgZXF1aXZhbGVudCB0byB7MSx9CiAgICAgICAgICA/ICAgIGlzIGVxdWl2YWxlbnQgdG8gezAsMX0KIAotICAgICAgIEl0ICBpcyAgcG9zc2libGUgIHRvIGNvbnN0cnVjdCBpbmZpbml0ZSBsb29wcyBieSBmb2xsb3dpbmcgYSBzdWJwYXR0ZXJuCisgICAgICAgSXQgaXMgcG9zc2libGUgdG8gY29uc3RydWN0IGluZmluaXRlIGxvb3BzIGJ5ICBmb2xsb3dpbmcgIGEgIHN1YnBhdHRlcm4KICAgICAgICB0aGF0IGNhbiBtYXRjaCBubyBjaGFyYWN0ZXJzIHdpdGggYSBxdWFudGlmaWVyIHRoYXQgaGFzIG5vIHVwcGVyIGxpbWl0LAogICAgICAgIGZvciBleGFtcGxlOgogCiAgICAgICAgICAoYT8pKgogCiAgICAgICAgRWFybGllciB2ZXJzaW9ucyBvZiBQZXJsIGFuZCBQQ1JFIHVzZWQgdG8gZ2l2ZSBhbiBlcnJvciBhdCBjb21waWxlIHRpbWUKLSAgICAgICBmb3Igc3VjaCBwYXR0ZXJucy4gSG93ZXZlciwgYmVjYXVzZSB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhpcyAgY2FuICBiZQotICAgICAgIHVzZWZ1bCwgIHN1Y2ggIHBhdHRlcm5zICBhcmUgbm93IGFjY2VwdGVkLCBidXQgaWYgYW55IHJlcGV0aXRpb24gb2YgdGhlCi0gICAgICAgc3VicGF0dGVybiBkb2VzIGluIGZhY3QgbWF0Y2ggbm8gY2hhcmFjdGVycywgdGhlIGxvb3AgaXMgZm9yY2libHkgIGJyby0KKyAgICAgICBmb3IgIHN1Y2ggIHBhdHRlcm5zLiBIb3dldmVyLCBiZWNhdXNlIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGlzIGNhbiBiZQorICAgICAgIHVzZWZ1bCwgc3VjaCBwYXR0ZXJucyBhcmUgbm93IGFjY2VwdGVkLCBidXQgaWYgYW55ICByZXBldGl0aW9uICBvZiAgdGhlCisgICAgICAgc3VicGF0dGVybiAgZG9lcyBpbiBmYWN0IG1hdGNoIG5vIGNoYXJhY3RlcnMsIHRoZSBsb29wIGlzIGZvcmNpYmx5IGJyby0KICAgICAgICBrZW4uCiAKLSAgICAgICBCeSAgZGVmYXVsdCwgIHRoZSBxdWFudGlmaWVycyBhcmUgImdyZWVkeSIsIHRoYXQgaXMsIHRoZXkgbWF0Y2ggYXMgbXVjaAotICAgICAgIGFzIHBvc3NpYmxlICh1cCB0byB0aGUgbWF4aW11bSAgbnVtYmVyICBvZiAgcGVybWl0dGVkICB0aW1lcyksICB3aXRob3V0Ci0gICAgICAgY2F1c2luZyAgdGhlICByZXN0IG9mIHRoZSBwYXR0ZXJuIHRvIGZhaWwuIFRoZSBjbGFzc2ljIGV4YW1wbGUgb2Ygd2hlcmUKKyAgICAgICBCeSBkZWZhdWx0LCB0aGUgcXVhbnRpZmllcnMgYXJlICJncmVlZHkiLCB0aGF0IGlzLCB0aGV5IG1hdGNoICBhcyAgbXVjaAorICAgICAgIGFzICBwb3NzaWJsZSAgKHVwICB0byAgdGhlICBtYXhpbXVtIG51bWJlciBvZiBwZXJtaXR0ZWQgdGltZXMpLCB3aXRob3V0CisgICAgICAgY2F1c2luZyB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiB0byBmYWlsLiBUaGUgY2xhc3NpYyBleGFtcGxlICBvZiAgd2hlcmUKICAgICAgICB0aGlzIGdpdmVzIHByb2JsZW1zIGlzIGluIHRyeWluZyB0byBtYXRjaCBjb21tZW50cyBpbiBDIHByb2dyYW1zLiBUaGVzZQotICAgICAgIGFwcGVhciAgYmV0d2VlbiAgLyogIGFuZCAgKi8gYW5kIHdpdGhpbiB0aGUgY29tbWVudCwgaW5kaXZpZHVhbCAqIGFuZCAvCi0gICAgICAgY2hhcmFjdGVycyBtYXkgYXBwZWFyLiBBbiBhdHRlbXB0IHRvIG1hdGNoIEMgY29tbWVudHMgYnkgIGFwcGx5aW5nICB0aGUKKyAgICAgICBhcHBlYXIgYmV0d2VlbiAvKiBhbmQgKi8gYW5kIHdpdGhpbiB0aGUgY29tbWVudCwgIGluZGl2aWR1YWwgICogIGFuZCAgLworICAgICAgIGNoYXJhY3RlcnMgIG1heSAgYXBwZWFyLiBBbiBhdHRlbXB0IHRvIG1hdGNoIEMgY29tbWVudHMgYnkgYXBwbHlpbmcgdGhlCiAgICAgICAgcGF0dGVybgogCiAgICAgICAgICAvXCouKlwqLwpAQCAtNjI5MSwxOSArNjMwNCwxOSBAQAogCiAgICAgICAgICAvKiBmaXJzdCBjb21tZW50ICovICBub3QgY29tbWVudCAgLyogc2Vjb25kIGNvbW1lbnQgKi8KIAotICAgICAgIGZhaWxzLCAgYmVjYXVzZSBpdCBtYXRjaGVzIHRoZSBlbnRpcmUgc3RyaW5nIG93aW5nIHRvIHRoZSBncmVlZGluZXNzIG9mCisgICAgICAgZmFpbHMsIGJlY2F1c2UgaXQgbWF0Y2hlcyB0aGUgZW50aXJlIHN0cmluZyBvd2luZyB0byB0aGUgZ3JlZWRpbmVzcyAgb2YKICAgICAgICB0aGUgLiogIGl0ZW0uCiAKLSAgICAgICBIb3dldmVyLCBpZiBhIHF1YW50aWZpZXIgaXMgZm9sbG93ZWQgYnkgYSBxdWVzdGlvbiBtYXJrLCBpdCAgY2Vhc2VzICB0bworICAgICAgIEhvd2V2ZXIsICBpZiAgYSBxdWFudGlmaWVyIGlzIGZvbGxvd2VkIGJ5IGEgcXVlc3Rpb24gbWFyaywgaXQgY2Vhc2VzIHRvCiAgICAgICAgYmUgZ3JlZWR5LCBhbmQgaW5zdGVhZCBtYXRjaGVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiB0aW1lcyBwb3NzaWJsZSwgc28KICAgICAgICB0aGUgcGF0dGVybgogCiAgICAgICAgICAvXCouKj9cKi8KIAotICAgICAgIGRvZXMgdGhlIHJpZ2h0IHRoaW5nIHdpdGggdGhlIEMgY29tbWVudHMuIFRoZSBtZWFuaW5nICBvZiAgdGhlICB2YXJpb3VzCi0gICAgICAgcXVhbnRpZmllcnMgIGlzICBub3QgIG90aGVyd2lzZSAgY2hhbmdlZCwgIGp1c3QgdGhlIHByZWZlcnJlZCBudW1iZXIgb2YKLSAgICAgICBtYXRjaGVzLiAgRG8gbm90IGNvbmZ1c2UgdGhpcyB1c2Ugb2YgcXVlc3Rpb24gbWFyayB3aXRoIGl0cyAgdXNlICBhcyAgYQotICAgICAgIHF1YW50aWZpZXIgIGluIGl0cyBvd24gcmlnaHQuIEJlY2F1c2UgaXQgaGFzIHR3byB1c2VzLCBpdCBjYW4gc29tZXRpbWVzCisgICAgICAgZG9lcyAgdGhlICByaWdodCAgdGhpbmcgd2l0aCB0aGUgQyBjb21tZW50cy4gVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMKKyAgICAgICBxdWFudGlmaWVycyBpcyBub3Qgb3RoZXJ3aXNlIGNoYW5nZWQsICBqdXN0ICB0aGUgIHByZWZlcnJlZCAgbnVtYmVyICBvZgorICAgICAgIG1hdGNoZXMuICAgRG8gIG5vdCAgY29uZnVzZSB0aGlzIHVzZSBvZiBxdWVzdGlvbiBtYXJrIHdpdGggaXRzIHVzZSBhcyBhCisgICAgICAgcXVhbnRpZmllciBpbiBpdHMgb3duIHJpZ2h0LiBCZWNhdXNlIGl0IGhhcyB0d28gdXNlcywgaXQgY2FuICBzb21ldGltZXMKICAgICAgICBhcHBlYXIgZG91YmxlZCwgYXMgaW4KIAogICAgICAgICAgXGQ/P1xkCkBAIC02MzExLDQ1ICs2MzI0LDQ1IEBACiAgICAgICAgd2hpY2ggbWF0Y2hlcyBvbmUgZGlnaXQgYnkgcHJlZmVyZW5jZSwgYnV0IGNhbiBtYXRjaCB0d28gaWYgdGhhdCBpcyB0aGUKICAgICAgICBvbmx5IHdheSB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiBtYXRjaGVzLgogCi0gICAgICAgSWYgIHRoZSBQQ1JFX1VOR1JFRURZIG9wdGlvbiBpcyBzZXQgKGFuIG9wdGlvbiB0aGF0IGlzIG5vdCBhdmFpbGFibGUgaW4KLSAgICAgICBQZXJsKSwgdGhlIHF1YW50aWZpZXJzIGFyZSBub3QgZ3JlZWR5IGJ5IGRlZmF1bHQsIGJ1dCAgaW5kaXZpZHVhbCAgb25lcwotICAgICAgIGNhbiAgYmUgIG1hZGUgIGdyZWVkeSAgYnkgZm9sbG93aW5nIHRoZW0gd2l0aCBhIHF1ZXN0aW9uIG1hcmsuIEluIG90aGVyCisgICAgICAgSWYgdGhlIFBDUkVfVU5HUkVFRFkgb3B0aW9uIGlzIHNldCAoYW4gb3B0aW9uIHRoYXQgaXMgbm90IGF2YWlsYWJsZSAgaW4KKyAgICAgICBQZXJsKSwgIHRoZSAgcXVhbnRpZmllcnMgYXJlIG5vdCBncmVlZHkgYnkgZGVmYXVsdCwgYnV0IGluZGl2aWR1YWwgb25lcworICAgICAgIGNhbiBiZSBtYWRlIGdyZWVkeSBieSBmb2xsb3dpbmcgdGhlbSB3aXRoIGEgIHF1ZXN0aW9uICBtYXJrLiAgSW4gIG90aGVyCiAgICAgICAgd29yZHMsIGl0IGludmVydHMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgogCi0gICAgICAgV2hlbiBhIHBhcmVudGhlc2l6ZWQgc3VicGF0dGVybiBpcyBxdWFudGlmaWVkICB3aXRoICBhICBtaW5pbXVtICByZXBlYXQKLSAgICAgICBjb3VudCAgdGhhdCBpcyBncmVhdGVyIHRoYW4gMSBvciB3aXRoIGEgbGltaXRlZCBtYXhpbXVtLCBtb3JlIG1lbW9yeSBpcwotICAgICAgIHJlcXVpcmVkIGZvciB0aGUgY29tcGlsZWQgcGF0dGVybiwgaW4gcHJvcG9ydGlvbiB0byAgdGhlICBzaXplICBvZiAgdGhlCisgICAgICAgV2hlbiAgYSAgcGFyZW50aGVzaXplZCAgc3VicGF0dGVybiAgaXMgcXVhbnRpZmllZCB3aXRoIGEgbWluaW11bSByZXBlYXQKKyAgICAgICBjb3VudCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiAxIG9yIHdpdGggYSBsaW1pdGVkIG1heGltdW0sIG1vcmUgbWVtb3J5ICBpcworICAgICAgIHJlcXVpcmVkICBmb3IgIHRoZSAgY29tcGlsZWQgIHBhdHRlcm4sIGluIHByb3BvcnRpb24gdG8gdGhlIHNpemUgb2YgdGhlCiAgICAgICAgbWluaW11bSBvciBtYXhpbXVtLgogCiAgICAgICAgSWYgYSBwYXR0ZXJuIHN0YXJ0cyB3aXRoIC4qIG9yIC57MCx9IGFuZCB0aGUgUENSRV9ET1RBTEwgb3B0aW9uIChlcXVpdi0KLSAgICAgICBhbGVudCB0byBQZXJsJ3MgL3MpIGlzIHNldCwgdGh1cyBhbGxvd2luZyB0aGUgZG90ICB0byAgbWF0Y2ggIG5ld2xpbmVzLAotICAgICAgIHRoZSAgcGF0dGVybiAgaXMgIGltcGxpY2l0bHkgYW5jaG9yZWQsIGJlY2F1c2Ugd2hhdGV2ZXIgZm9sbG93cyB3aWxsIGJlCi0gICAgICAgdHJpZWQgYWdhaW5zdCBldmVyeSBjaGFyYWN0ZXIgcG9zaXRpb24gaW4gdGhlIHN1YmplY3Qgc3RyaW5nLCBzbyAgdGhlcmUKLSAgICAgICBpcyAgbm8gIHBvaW50ICBpbiAgcmV0cnlpbmcgdGhlIG92ZXJhbGwgbWF0Y2ggYXQgYW55IHBvc2l0aW9uIGFmdGVyIHRoZQotICAgICAgIGZpcnN0LiBQQ1JFIG5vcm1hbGx5IHRyZWF0cyBzdWNoIGEgcGF0dGVybiBhcyB0aG91Z2ggaXQgIHdlcmUgIHByZWNlZGVkCisgICAgICAgYWxlbnQgIHRvICBQZXJsJ3MgIC9zKSBpcyBzZXQsIHRodXMgYWxsb3dpbmcgdGhlIGRvdCB0byBtYXRjaCBuZXdsaW5lcywKKyAgICAgICB0aGUgcGF0dGVybiBpcyBpbXBsaWNpdGx5IGFuY2hvcmVkLCBiZWNhdXNlIHdoYXRldmVyICBmb2xsb3dzICB3aWxsICBiZQorICAgICAgIHRyaWVkICBhZ2FpbnN0IGV2ZXJ5IGNoYXJhY3RlciBwb3NpdGlvbiBpbiB0aGUgc3ViamVjdCBzdHJpbmcsIHNvIHRoZXJlCisgICAgICAgaXMgbm8gcG9pbnQgaW4gcmV0cnlpbmcgdGhlIG92ZXJhbGwgbWF0Y2ggYXQgIGFueSAgcG9zaXRpb24gIGFmdGVyICB0aGUKKyAgICAgICBmaXJzdC4gIFBDUkUgIG5vcm1hbGx5IHRyZWF0cyBzdWNoIGEgcGF0dGVybiBhcyB0aG91Z2ggaXQgd2VyZSBwcmVjZWRlZAogICAgICAgIGJ5IFxBLgogCi0gICAgICAgSW4gIGNhc2VzICB3aGVyZSAgaXQgIGlzIGtub3duIHRoYXQgdGhlIHN1YmplY3Qgc3RyaW5nIGNvbnRhaW5zIG5vIG5ldy0KLSAgICAgICBsaW5lcywgaXQgaXMgd29ydGggc2V0dGluZyBQQ1JFX0RPVEFMTCBpbiBvcmRlciB0byAgb2J0YWluICB0aGlzICBvcHRpLQorICAgICAgIEluIGNhc2VzIHdoZXJlIGl0IGlzIGtub3duIHRoYXQgdGhlIHN1YmplY3QgIHN0cmluZyAgY29udGFpbnMgIG5vICBuZXctCisgICAgICAgbGluZXMsICBpdCAgaXMgIHdvcnRoIHNldHRpbmcgUENSRV9ET1RBTEwgaW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgb3B0aS0KICAgICAgICBtaXphdGlvbiwgb3IgYWx0ZXJuYXRpdmVseSB1c2luZyBeIHRvIGluZGljYXRlIGFuY2hvcmluZyBleHBsaWNpdGx5LgogCi0gICAgICAgSG93ZXZlciwgIHRoZXJlICBhcmUgIHNvbWUgY2FzZXMgd2hlcmUgdGhlIG9wdGltaXphdGlvbiBjYW5ub3QgYmUgdXNlZC4KKyAgICAgICBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSB0aGUgb3B0aW1pemF0aW9uICBjYW5ub3QgIGJlICB1c2VkLgogICAgICAgIFdoZW4gLiogIGlzIGluc2lkZSBjYXB0dXJpbmcgcGFyZW50aGVzZXMgdGhhdCBhcmUgdGhlIHN1YmplY3Qgb2YgYSBiYWNrCiAgICAgICAgcmVmZXJlbmNlIGVsc2V3aGVyZSBpbiB0aGUgcGF0dGVybiwgYSBtYXRjaCBhdCB0aGUgc3RhcnQgbWF5IGZhaWwgd2hlcmUKICAgICAgICBhIGxhdGVyIG9uZSBzdWNjZWVkcy4gQ29uc2lkZXIsIGZvciBleGFtcGxlOgogCiAgICAgICAgICAoLiopYWJjXDEKIAotICAgICAgIElmIHRoZSBzdWJqZWN0IGlzICJ4eXoxMjNhYmMxMjMiIHRoZSBtYXRjaCBwb2ludCBpcyB0aGUgZm91cnRoICBjaGFyYWMtCisgICAgICAgSWYgIHRoZSBzdWJqZWN0IGlzICJ4eXoxMjNhYmMxMjMiIHRoZSBtYXRjaCBwb2ludCBpcyB0aGUgZm91cnRoIGNoYXJhYy0KICAgICAgICB0ZXIuIEZvciB0aGlzIHJlYXNvbiwgc3VjaCBhIHBhdHRlcm4gaXMgbm90IGltcGxpY2l0bHkgYW5jaG9yZWQuCiAKLSAgICAgICBBbm90aGVyICBjYXNlIHdoZXJlIGltcGxpY2l0IGFuY2hvcmluZyBpcyBub3QgYXBwbGllZCBpcyB3aGVuIHRoZSBsZWFkLQotICAgICAgIGluZyAuKiBpcyBpbnNpZGUgYW4gYXRvbWljIGdyb3VwLiBPbmNlIGFnYWluLCBhIG1hdGNoIGF0IHRoZSBzdGFydCAgbWF5CisgICAgICAgQW5vdGhlciBjYXNlIHdoZXJlIGltcGxpY2l0IGFuY2hvcmluZyBpcyBub3QgYXBwbGllZCBpcyB3aGVuIHRoZSAgbGVhZC0KKyAgICAgICBpbmcgIC4qIGlzIGluc2lkZSBhbiBhdG9taWMgZ3JvdXAuIE9uY2UgYWdhaW4sIGEgbWF0Y2ggYXQgdGhlIHN0YXJ0IG1heQogICAgICAgIGZhaWwgd2hlcmUgYSBsYXRlciBvbmUgc3VjY2VlZHMuIENvbnNpZGVyIHRoaXMgcGF0dGVybjoKIAogICAgICAgICAgKD8+Lio/YSliCiAKLSAgICAgICBJdCAgbWF0Y2hlcyAiYWIiIGluIHRoZSBzdWJqZWN0ICJhYWIiLiBUaGUgdXNlIG9mIHRoZSBiYWNrdHJhY2tpbmcgY29uLQorICAgICAgIEl0IG1hdGNoZXMgImFiIiBpbiB0aGUgc3ViamVjdCAiYWFiIi4gVGhlIHVzZSBvZiB0aGUgYmFja3RyYWNraW5nICBjb24tCiAgICAgICAgdHJvbCB2ZXJicyAoKlBSVU5FKSBhbmQgKCpTS0lQKSBhbHNvIGRpc2FibGUgdGhpcyBvcHRpbWl6YXRpb24uCiAKICAgICAgICBXaGVuIGEgY2FwdHVyaW5nIHN1YnBhdHRlcm4gaXMgcmVwZWF0ZWQsIHRoZSB2YWx1ZSBjYXB0dXJlZCBpcyB0aGUgc3ViLQpAQCAtNjM1OCw4ICs2MzcxLDggQEAKICAgICAgICAgICh0d2VlZGxlW2R1bWVdezN9XHMqKSsKIAogICAgICAgIGhhcyBtYXRjaGVkICJ0d2VlZGxlZHVtIHR3ZWVkbGVkZWUiIHRoZSB2YWx1ZSBvZiB0aGUgY2FwdHVyZWQgc3Vic3RyaW5nCi0gICAgICAgaXMgInR3ZWVkbGVkZWUiLiBIb3dldmVyLCBpZiB0aGVyZSBhcmUgIG5lc3RlZCAgY2FwdHVyaW5nICBzdWJwYXR0ZXJucywKLSAgICAgICB0aGUgIGNvcnJlc3BvbmRpbmcgY2FwdHVyZWQgdmFsdWVzIG1heSBoYXZlIGJlZW4gc2V0IGluIHByZXZpb3VzIGl0ZXJhLQorICAgICAgIGlzICAidHdlZWRsZWRlZSIuICBIb3dldmVyLCAgaWYgdGhlcmUgYXJlIG5lc3RlZCBjYXB0dXJpbmcgc3VicGF0dGVybnMsCisgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2FwdHVyZWQgdmFsdWVzIG1heSBoYXZlIGJlZW4gc2V0IGluIHByZXZpb3VzICBpdGVyYS0KICAgICAgICB0aW9ucy4gRm9yIGV4YW1wbGUsIGFmdGVyCiAKICAgICAgICAgIC8oYXwoYikpKy8KQEAgLTYzNjksNTMgKzYzODIsNTMgQEAKIAogQVRPTUlDIEdST1VQSU5HIEFORCBQT1NTRVNTSVZFIFFVQU5USUZJRVJTCiAKLSAgICAgICBXaXRoIGJvdGggbWF4aW1pemluZyAoImdyZWVkeSIpIGFuZCBtaW5pbWl6aW5nICgidW5ncmVlZHkiICBvciAgImxhenkiKQotICAgICAgIHJlcGV0aXRpb24sICBmYWlsdXJlICBvZiB3aGF0IGZvbGxvd3Mgbm9ybWFsbHkgY2F1c2VzIHRoZSByZXBlYXRlZCBpdGVtCi0gICAgICAgdG8gYmUgcmUtZXZhbHVhdGVkIHRvIHNlZSBpZiBhIGRpZmZlcmVudCBudW1iZXIgb2YgcmVwZWF0cyAgYWxsb3dzICB0aGUKLSAgICAgICByZXN0ICBvZiAgdGhlIHBhdHRlcm4gdG8gbWF0Y2guIFNvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gcHJldmVudCB0aGlzLAotICAgICAgIGVpdGhlciB0byBjaGFuZ2UgdGhlIG5hdHVyZSBvZiB0aGUgbWF0Y2gsIG9yIHRvIGNhdXNlIGl0ICBmYWlsICBlYXJsaWVyCi0gICAgICAgdGhhbiAgaXQgb3RoZXJ3aXNlIG1pZ2h0LCB3aGVuIHRoZSBhdXRob3Igb2YgdGhlIHBhdHRlcm4ga25vd3MgdGhlcmUgaXMKKyAgICAgICBXaXRoICBib3RoICBtYXhpbWl6aW5nICgiZ3JlZWR5IikgYW5kIG1pbmltaXppbmcgKCJ1bmdyZWVkeSIgb3IgImxhenkiKQorICAgICAgIHJlcGV0aXRpb24sIGZhaWx1cmUgb2Ygd2hhdCBmb2xsb3dzIG5vcm1hbGx5IGNhdXNlcyB0aGUgIHJlcGVhdGVkICBpdGVtCisgICAgICAgdG8gIGJlICByZS1ldmFsdWF0ZWQgdG8gc2VlIGlmIGEgZGlmZmVyZW50IG51bWJlciBvZiByZXBlYXRzIGFsbG93cyB0aGUKKyAgICAgICByZXN0IG9mIHRoZSBwYXR0ZXJuIHRvIG1hdGNoLiBTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvICBwcmV2ZW50ICB0aGlzLAorICAgICAgIGVpdGhlciAgdG8gIGNoYW5nZSB0aGUgbmF0dXJlIG9mIHRoZSBtYXRjaCwgb3IgdG8gY2F1c2UgaXQgZmFpbCBlYXJsaWVyCisgICAgICAgdGhhbiBpdCBvdGhlcndpc2UgbWlnaHQsIHdoZW4gdGhlIGF1dGhvciBvZiB0aGUgcGF0dGVybiBrbm93cyB0aGVyZSAgaXMKICAgICAgICBubyBwb2ludCBpbiBjYXJyeWluZyBvbi4KIAotICAgICAgIENvbnNpZGVyLCBmb3IgZXhhbXBsZSwgdGhlIHBhdHRlcm4gXGQrZm9vIHdoZW4gYXBwbGllZCB0byAgdGhlICBzdWJqZWN0CisgICAgICAgQ29uc2lkZXIsICBmb3IgIGV4YW1wbGUsIHRoZSBwYXR0ZXJuIFxkK2ZvbyB3aGVuIGFwcGxpZWQgdG8gdGhlIHN1YmplY3QKICAgICAgICBsaW5lCiAKICAgICAgICAgIDEyMzQ1NmJhcgogCiAgICAgICAgQWZ0ZXIgbWF0Y2hpbmcgYWxsIDYgZGlnaXRzIGFuZCB0aGVuIGZhaWxpbmcgdG8gbWF0Y2ggImZvbyIsIHRoZSBub3JtYWwKLSAgICAgICBhY3Rpb24gb2YgdGhlIG1hdGNoZXIgaXMgdG8gdHJ5IGFnYWluIHdpdGggb25seSA1IGRpZ2l0cyAgbWF0Y2hpbmcgIHRoZQotICAgICAgIFxkKyAgaXRlbSwgIGFuZCAgdGhlbiAgd2l0aCAgNCwgIGFuZCAgc28gb24sIGJlZm9yZSB1bHRpbWF0ZWx5IGZhaWxpbmcuCi0gICAgICAgIkF0b21pYyBncm91cGluZyIgKGEgdGVybSB0YWtlbiBmcm9tIEplZmZyZXkgIEZyaWVkbCdzICBib29rKSAgcHJvdmlkZXMKLSAgICAgICB0aGUgIG1lYW5zIGZvciBzcGVjaWZ5aW5nIHRoYXQgb25jZSBhIHN1YnBhdHRlcm4gaGFzIG1hdGNoZWQsIGl0IGlzIG5vdAorICAgICAgIGFjdGlvbiAgb2YgIHRoZSBtYXRjaGVyIGlzIHRvIHRyeSBhZ2FpbiB3aXRoIG9ubHkgNSBkaWdpdHMgbWF0Y2hpbmcgdGhlCisgICAgICAgXGQrIGl0ZW0sIGFuZCB0aGVuIHdpdGggIDQsICBhbmQgIHNvICBvbiwgIGJlZm9yZSAgdWx0aW1hdGVseSAgZmFpbGluZy4KKyAgICAgICAiQXRvbWljICBncm91cGluZyIgIChhICB0ZXJtIHRha2VuIGZyb20gSmVmZnJleSBGcmllZGwncyBib29rKSBwcm92aWRlcworICAgICAgIHRoZSBtZWFucyBmb3Igc3BlY2lmeWluZyB0aGF0IG9uY2UgYSBzdWJwYXR0ZXJuIGhhcyBtYXRjaGVkLCBpdCBpcyAgbm90CiAgICAgICAgdG8gYmUgcmUtZXZhbHVhdGVkIGluIHRoaXMgd2F5LgogCi0gICAgICAgSWYgd2UgdXNlIGF0b21pYyBncm91cGluZyBmb3IgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSAgbWF0Y2hlciAgZ2l2ZXMKLSAgICAgICB1cCAgaW1tZWRpYXRlbHkgIG9uIGZhaWxpbmcgdG8gbWF0Y2ggImZvbyIgdGhlIGZpcnN0IHRpbWUuIFRoZSBub3RhdGlvbgorICAgICAgIElmICB3ZSAgdXNlIGF0b21pYyBncm91cGluZyBmb3IgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSBtYXRjaGVyIGdpdmVzCisgICAgICAgdXAgaW1tZWRpYXRlbHkgb24gZmFpbGluZyB0byBtYXRjaCAiZm9vIiB0aGUgZmlyc3QgdGltZS4gIFRoZSAgbm90YXRpb24KICAgICAgICBpcyBhIGtpbmQgb2Ygc3BlY2lhbCBwYXJlbnRoZXNpcywgc3RhcnRpbmcgd2l0aCAoPz4gYXMgaW4gdGhpcyBleGFtcGxlOgogCiAgICAgICAgICAoPz5cZCspZm9vCiAKLSAgICAgICBUaGlzIGtpbmQgb2YgcGFyZW50aGVzaXMgImxvY2tzIHVwIiB0aGUgIHBhcnQgb2YgdGhlICBwYXR0ZXJuICBpdCAgY29uLQotICAgICAgIHRhaW5zICBvbmNlICBpdCAgaGFzIG1hdGNoZWQsIGFuZCBhIGZhaWx1cmUgZnVydGhlciBpbnRvIHRoZSBwYXR0ZXJuIGlzCi0gICAgICAgcHJldmVudGVkIGZyb20gYmFja3RyYWNraW5nIGludG8gaXQuIEJhY2t0cmFja2luZyBwYXN0IGl0ICB0byAgcHJldmlvdXMKKyAgICAgICBUaGlzICBraW5kICBvZiAgcGFyZW50aGVzaXMgImxvY2tzIHVwIiB0aGUgIHBhcnQgb2YgdGhlIHBhdHRlcm4gaXQgY29uLQorICAgICAgIHRhaW5zIG9uY2UgaXQgaGFzIG1hdGNoZWQsIGFuZCBhIGZhaWx1cmUgZnVydGhlciBpbnRvICB0aGUgIHBhdHRlcm4gIGlzCisgICAgICAgcHJldmVudGVkICBmcm9tICBiYWNrdHJhY2tpbmcgaW50byBpdC4gQmFja3RyYWNraW5nIHBhc3QgaXQgdG8gcHJldmlvdXMKICAgICAgICBpdGVtcywgaG93ZXZlciwgd29ya3MgYXMgbm9ybWFsLgogCi0gICAgICAgQW4gIGFsdGVybmF0aXZlICBkZXNjcmlwdGlvbiAgaXMgdGhhdCBhIHN1YnBhdHRlcm4gb2YgdGhpcyB0eXBlIG1hdGNoZXMKLSAgICAgICB0aGUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCBhbiAgaWRlbnRpY2FsICBzdGFuZGFsb25lICBwYXR0ZXJuICB3b3VsZAorICAgICAgIEFuIGFsdGVybmF0aXZlIGRlc2NyaXB0aW9uIGlzIHRoYXQgYSBzdWJwYXR0ZXJuIG9mICB0aGlzICB0eXBlICBtYXRjaGVzCisgICAgICAgdGhlICBzdHJpbmcgIG9mICBjaGFyYWN0ZXJzICB0aGF0IGFuIGlkZW50aWNhbCBzdGFuZGFsb25lIHBhdHRlcm4gd291bGQKICAgICAgICBtYXRjaCwgaWYgYW5jaG9yZWQgYXQgdGhlIGN1cnJlbnQgcG9pbnQgaW4gdGhlIHN1YmplY3Qgc3RyaW5nLgogCiAgICAgICAgQXRvbWljIGdyb3VwaW5nIHN1YnBhdHRlcm5zIGFyZSBub3QgY2FwdHVyaW5nIHN1YnBhdHRlcm5zLiBTaW1wbGUgY2FzZXMKICAgICAgICBzdWNoIGFzIHRoZSBhYm92ZSBleGFtcGxlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgbWF4aW1pemluZyByZXBlYXQgdGhhdAotICAgICAgIG11c3QgIHN3YWxsb3cgIGV2ZXJ5dGhpbmcgIGl0IGNhbi4gU28sIHdoaWxlIGJvdGggXGQrIGFuZCBcZCs/IGFyZSBwcmUtCi0gICAgICAgcGFyZWQgdG8gYWRqdXN0IHRoZSBudW1iZXIgb2YgZGlnaXRzIHRoZXkgbWF0Y2ggaW4gb3JkZXIgIHRvICBtYWtlICB0aGUKKyAgICAgICBtdXN0IHN3YWxsb3cgZXZlcnl0aGluZyBpdCBjYW4uIFNvLCB3aGlsZSBib3RoIFxkKyBhbmQgIFxkKz8gIGFyZSAgcHJlLQorICAgICAgIHBhcmVkICB0byAgYWRqdXN0ICB0aGUgbnVtYmVyIG9mIGRpZ2l0cyB0aGV5IG1hdGNoIGluIG9yZGVyIHRvIG1ha2UgdGhlCiAgICAgICAgcmVzdCBvZiB0aGUgcGF0dGVybiBtYXRjaCwgKD8+XGQrKSBjYW4gb25seSBtYXRjaCBhbiBlbnRpcmUgc2VxdWVuY2Ugb2YKICAgICAgICBkaWdpdHMuCiAKLSAgICAgICBBdG9taWMgZ3JvdXBzIGluIGdlbmVyYWwgY2FuIG9mIGNvdXJzZSBjb250YWluIGFyYml0cmFyaWx5ICBjb21wbGljYXRlZAotICAgICAgIHN1YnBhdHRlcm5zLCAgYW5kICBjYW4gIGJlICBuZXN0ZWQuIEhvd2V2ZXIsIHdoZW4gdGhlIHN1YnBhdHRlcm4gZm9yIGFuCisgICAgICAgQXRvbWljICBncm91cHMgaW4gZ2VuZXJhbCBjYW4gb2YgY291cnNlIGNvbnRhaW4gYXJiaXRyYXJpbHkgY29tcGxpY2F0ZWQKKyAgICAgICBzdWJwYXR0ZXJucywgYW5kIGNhbiBiZSBuZXN0ZWQuIEhvd2V2ZXIsIHdoZW4gIHRoZSAgc3VicGF0dGVybiAgZm9yICBhbgogICAgICAgIGF0b21pYyBncm91cCBpcyBqdXN0IGEgc2luZ2xlIHJlcGVhdGVkIGl0ZW0sIGFzIGluIHRoZSBleGFtcGxlIGFib3ZlLCBhCi0gICAgICAgc2ltcGxlciAgbm90YXRpb24sICBjYWxsZWQgIGEgInBvc3Nlc3NpdmUgcXVhbnRpZmllciIgY2FuIGJlIHVzZWQuIFRoaXMKLSAgICAgICBjb25zaXN0cyBvZiBhbiBhZGRpdGlvbmFsICsgY2hhcmFjdGVyICBmb2xsb3dpbmcgIGEgIHF1YW50aWZpZXIuICBVc2luZworICAgICAgIHNpbXBsZXIgbm90YXRpb24sIGNhbGxlZCBhICJwb3NzZXNzaXZlIHF1YW50aWZpZXIiIGNhbiAgYmUgIHVzZWQuICBUaGlzCisgICAgICAgY29uc2lzdHMgIG9mICBhbiAgYWRkaXRpb25hbCAgKyBjaGFyYWN0ZXIgZm9sbG93aW5nIGEgcXVhbnRpZmllci4gVXNpbmcKICAgICAgICB0aGlzIG5vdGF0aW9uLCB0aGUgcHJldmlvdXMgZXhhbXBsZSBjYW4gYmUgcmV3cml0dGVuIGFzCiAKICAgICAgICAgIFxkKytmb28KQEAgLTY0MjUsNDUgKzY0MzgsNDUgQEAKIAogICAgICAgICAgKGFiY3x4eXopezIsM30rCiAKLSAgICAgICBQb3NzZXNzaXZlICBxdWFudGlmaWVycyAgYXJlICBhbHdheXMgIGdyZWVkeTsgIHRoZSAgIHNldHRpbmcgICBvZiAgIHRoZQorICAgICAgIFBvc3Nlc3NpdmUgICBxdWFudGlmaWVycyAgIGFyZSAgIGFsd2F5cyAgZ3JlZWR5OyAgdGhlICBzZXR0aW5nICBvZiAgdGhlCiAgICAgICAgUENSRV9VTkdSRUVEWSBvcHRpb24gaXMgaWdub3JlZC4gVGhleSBhcmUgYSBjb252ZW5pZW50IG5vdGF0aW9uIGZvciB0aGUKLSAgICAgICBzaW1wbGVyIGZvcm1zIG9mIGF0b21pYyBncm91cC4gSG93ZXZlciwgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSAgaW4gIHRoZQotICAgICAgIG1lYW5pbmcgIG9mICBhICBwb3NzZXNzaXZlICBxdWFudGlmaWVyIGFuZCB0aGUgZXF1aXZhbGVudCBhdG9taWMgZ3JvdXAsCi0gICAgICAgdGhvdWdoIHRoZXJlIG1heSBiZSBhIHBlcmZvcm1hbmNlICBkaWZmZXJlbmNlOyAgcG9zc2Vzc2l2ZSAgcXVhbnRpZmllcnMKKyAgICAgICBzaW1wbGVyICBmb3JtcyAgb2YgYXRvbWljIGdyb3VwLiBIb3dldmVyLCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGluIHRoZQorICAgICAgIG1lYW5pbmcgb2YgYSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgYW5kICB0aGUgIGVxdWl2YWxlbnQgIGF0b21pYyAgZ3JvdXAsCisgICAgICAgdGhvdWdoICB0aGVyZSAgbWF5ICBiZSBhIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2U7IHBvc3Nlc3NpdmUgcXVhbnRpZmllcnMKICAgICAgICBzaG91bGQgYmUgc2xpZ2h0bHkgZmFzdGVyLgogCi0gICAgICAgVGhlICBwb3NzZXNzaXZlICBxdWFudGlmaWVyIHN5bnRheCBpcyBhbiBleHRlbnNpb24gdG8gdGhlIFBlcmwgNS44IHN5bi0KLSAgICAgICB0YXguICBKZWZmcmV5IEZyaWVkbCBvcmlnaW5hdGVkIHRoZSBpZGVhIChhbmQgdGhlIG5hbWUpICBpbiAgdGhlICBmaXJzdAorICAgICAgIFRoZSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgc3ludGF4IGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgUGVybCAgNS44ICBzeW4tCisgICAgICAgdGF4LiAgIEplZmZyZXkgIEZyaWVkbCAgb3JpZ2luYXRlZCB0aGUgaWRlYSAoYW5kIHRoZSBuYW1lKSBpbiB0aGUgZmlyc3QKICAgICAgICBlZGl0aW9uIG9mIGhpcyBib29rLiBNaWtlIE1jQ2xvc2tleSBsaWtlZCBpdCwgc28gaW1wbGVtZW50ZWQgaXQgd2hlbiBoZQotICAgICAgIGJ1aWx0IFN1bidzIEphdmEgcGFja2FnZSwgYW5kIFBDUkUgY29waWVkIGl0IGZyb20gdGhlcmUuIEl0ICB1bHRpbWF0ZWx5CisgICAgICAgYnVpbHQgIFN1bidzIEphdmEgcGFja2FnZSwgYW5kIFBDUkUgY29waWVkIGl0IGZyb20gdGhlcmUuIEl0IHVsdGltYXRlbHkKICAgICAgICBmb3VuZCBpdHMgd2F5IGludG8gUGVybCBhdCByZWxlYXNlIDUuMTAuCiAKICAgICAgICBQQ1JFIGhhcyBhbiBvcHRpbWl6YXRpb24gdGhhdCBhdXRvbWF0aWNhbGx5ICJwb3NzZXNzaWZpZXMiIGNlcnRhaW4gc2ltLQotICAgICAgIHBsZSBwYXR0ZXJuIGNvbnN0cnVjdHMuIEZvciBleGFtcGxlLCB0aGUgc2VxdWVuY2UgIEErQiAgaXMgIHRyZWF0ZWQgIGFzCi0gICAgICAgQSsrQiAgYmVjYXVzZSAgdGhlcmUgaXMgbm8gcG9pbnQgaW4gYmFja3RyYWNraW5nIGludG8gYSBzZXF1ZW5jZSBvZiBBJ3MKKyAgICAgICBwbGUgIHBhdHRlcm4gIGNvbnN0cnVjdHMuICBGb3IgIGV4YW1wbGUsIHRoZSBzZXF1ZW5jZSBBK0IgaXMgdHJlYXRlZCBhcworICAgICAgIEErK0IgYmVjYXVzZSB0aGVyZSBpcyBubyBwb2ludCBpbiBiYWNrdHJhY2tpbmcgaW50byBhIHNlcXVlbmNlICBvZiAgQSdzCiAgICAgICAgd2hlbiBCIG11c3QgZm9sbG93LgogCi0gICAgICAgV2hlbiBhIHBhdHRlcm4gY29udGFpbnMgYW4gdW5saW1pdGVkIHJlcGVhdCBpbnNpZGUgIGEgIHN1YnBhdHRlcm4gIHRoYXQKLSAgICAgICBjYW4gIGl0c2VsZiAgYmUgIHJlcGVhdGVkICBhbiAgdW5saW1pdGVkIG51bWJlciBvZiB0aW1lcywgdGhlIHVzZSBvZiBhbgotICAgICAgIGF0b21pYyBncm91cCBpcyB0aGUgb25seSB3YXkgdG8gYXZvaWQgc29tZSAgZmFpbGluZyAgbWF0Y2hlcyAgdGFraW5nICBhCisgICAgICAgV2hlbiAgYSAgcGF0dGVybiAgY29udGFpbnMgYW4gdW5saW1pdGVkIHJlcGVhdCBpbnNpZGUgYSBzdWJwYXR0ZXJuIHRoYXQKKyAgICAgICBjYW4gaXRzZWxmIGJlIHJlcGVhdGVkIGFuIHVubGltaXRlZCBudW1iZXIgb2YgIHRpbWVzLCAgdGhlICB1c2UgIG9mICBhbgorICAgICAgIGF0b21pYyAgZ3JvdXAgIGlzICB0aGUgIG9ubHkgd2F5IHRvIGF2b2lkIHNvbWUgZmFpbGluZyBtYXRjaGVzIHRha2luZyBhCiAgICAgICAgdmVyeSBsb25nIHRpbWUgaW5kZWVkLiBUaGUgcGF0dGVybgogCiAgICAgICAgICAoXEQrfDxcZCs+KSpbIT9dCiAKLSAgICAgICBtYXRjaGVzICBhbiAgdW5saW1pdGVkIG51bWJlciBvZiBzdWJzdHJpbmdzIHRoYXQgZWl0aGVyIGNvbnNpc3Qgb2Ygbm9uLQotICAgICAgIGRpZ2l0cywgb3IgZGlnaXRzIGVuY2xvc2VkIGluIDw+LCBmb2xsb3dlZCBieSBlaXRoZXIgISBvciAgPy4gIFdoZW4gIGl0CisgICAgICAgbWF0Y2hlcyBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIHN1YnN0cmluZ3MgdGhhdCBlaXRoZXIgY29uc2lzdCAgb2YgIG5vbi0KKyAgICAgICBkaWdpdHMsICBvciAgZGlnaXRzICBlbmNsb3NlZCBpbiA8PiwgZm9sbG93ZWQgYnkgZWl0aGVyICEgb3IgPy4gV2hlbiBpdAogICAgICAgIG1hdGNoZXMsIGl0IHJ1bnMgcXVpY2tseS4gSG93ZXZlciwgaWYgaXQgaXMgYXBwbGllZCB0bwogCiAgICAgICAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhCiAKLSAgICAgICBpdCAgdGFrZXMgIGEgIGxvbmcgIHRpbWUgIGJlZm9yZSByZXBvcnRpbmcgZmFpbHVyZS4gVGhpcyBpcyBiZWNhdXNlIHRoZQotICAgICAgIHN0cmluZyBjYW4gYmUgZGl2aWRlZCBiZXR3ZWVuIHRoZSBpbnRlcm5hbCBcRCsgcmVwZWF0IGFuZCB0aGUgIGV4dGVybmFsCi0gICAgICAgKiAgcmVwZWF0ICBpbiAgYSAgbGFyZ2UgIG51bWJlciBvZiB3YXlzLCBhbmQgYWxsIGhhdmUgdG8gYmUgdHJpZWQuIChUaGUKLSAgICAgICBleGFtcGxlIHVzZXMgWyE/XSByYXRoZXIgdGhhbiBhIHNpbmdsZSBjaGFyYWN0ZXIgYXQgIHRoZSAgZW5kLCAgYmVjYXVzZQotICAgICAgIGJvdGggIFBDUkUgIGFuZCAgUGVybCBoYXZlIGFuIG9wdGltaXphdGlvbiB0aGF0IGFsbG93cyBmb3IgZmFzdCBmYWlsdXJlCi0gICAgICAgd2hlbiBhIHNpbmdsZSBjaGFyYWN0ZXIgaXMgdXNlZC4gVGhleSByZW1lbWJlciB0aGUgbGFzdCBzaW5nbGUgIGNoYXJhYy0KLSAgICAgICB0ZXIgIHRoYXQgIGlzIHJlcXVpcmVkIGZvciBhIG1hdGNoLCBhbmQgZmFpbCBlYXJseSBpZiBpdCBpcyBub3QgcHJlc2VudAotICAgICAgIGluIHRoZSBzdHJpbmcuKSBJZiB0aGUgcGF0dGVybiBpcyBjaGFuZ2VkIHNvIHRoYXQgIGl0ICB1c2VzICBhbiAgYXRvbWljCisgICAgICAgaXQgdGFrZXMgYSBsb25nIHRpbWUgYmVmb3JlIHJlcG9ydGluZyAgZmFpbHVyZS4gIFRoaXMgIGlzICBiZWNhdXNlICB0aGUKKyAgICAgICBzdHJpbmcgIGNhbiBiZSBkaXZpZGVkIGJldHdlZW4gdGhlIGludGVybmFsIFxEKyByZXBlYXQgYW5kIHRoZSBleHRlcm5hbAorICAgICAgICogcmVwZWF0IGluIGEgbGFyZ2UgbnVtYmVyIG9mIHdheXMsIGFuZCBhbGwgIGhhdmUgIHRvICBiZSAgdHJpZWQuICAoVGhlCisgICAgICAgZXhhbXBsZSAgdXNlcyAgWyE/XSAgcmF0aGVyIHRoYW4gYSBzaW5nbGUgY2hhcmFjdGVyIGF0IHRoZSBlbmQsIGJlY2F1c2UKKyAgICAgICBib3RoIFBDUkUgYW5kIFBlcmwgaGF2ZSBhbiBvcHRpbWl6YXRpb24gdGhhdCBhbGxvd3MgIGZvciAgZmFzdCAgZmFpbHVyZQorICAgICAgIHdoZW4gIGEgc2luZ2xlIGNoYXJhY3RlciBpcyB1c2VkLiBUaGV5IHJlbWVtYmVyIHRoZSBsYXN0IHNpbmdsZSBjaGFyYWMtCisgICAgICAgdGVyIHRoYXQgaXMgcmVxdWlyZWQgZm9yIGEgbWF0Y2gsIGFuZCBmYWlsIGVhcmx5IGlmIGl0IGlzICBub3QgIHByZXNlbnQKKyAgICAgICBpbiAgdGhlICBzdHJpbmcuKSAgSWYgIHRoZSBwYXR0ZXJuIGlzIGNoYW5nZWQgc28gdGhhdCBpdCB1c2VzIGFuIGF0b21pYwogICAgICAgIGdyb3VwLCBsaWtlIHRoaXM6CiAKICAgICAgICAgICgoPz5cRCspfDxcZCs+KSpbIT9dCkBAIC02NDc1LDI4ICs2NDg4LDI4IEBACiAKICAgICAgICBPdXRzaWRlIGEgY2hhcmFjdGVyIGNsYXNzLCBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhIGRpZ2l0IGdyZWF0ZXIgdGhhbgogICAgICAgIDAgKGFuZCBwb3NzaWJseSBmdXJ0aGVyIGRpZ2l0cykgaXMgYSBiYWNrIHJlZmVyZW5jZSB0byBhIGNhcHR1cmluZyBzdWItCi0gICAgICAgcGF0dGVybiAgZWFybGllciAgKHRoYXQgaXMsIHRvIGl0cyBsZWZ0KSBpbiB0aGUgcGF0dGVybiwgcHJvdmlkZWQgdGhlcmUKKyAgICAgICBwYXR0ZXJuIGVhcmxpZXIgKHRoYXQgaXMsIHRvIGl0cyBsZWZ0KSBpbiB0aGUgcGF0dGVybiwgIHByb3ZpZGVkICB0aGVyZQogICAgICAgIGhhdmUgYmVlbiB0aGF0IG1hbnkgcHJldmlvdXMgY2FwdHVyaW5nIGxlZnQgcGFyZW50aGVzZXMuCiAKICAgICAgICBIb3dldmVyLCBpZiB0aGUgZGVjaW1hbCBudW1iZXIgZm9sbG93aW5nIHRoZSBiYWNrc2xhc2ggaXMgbGVzcyB0aGFuIDEwLAotICAgICAgIGl0ICBpcyAgYWx3YXlzICB0YWtlbiAgYXMgYSBiYWNrIHJlZmVyZW5jZSwgYW5kIGNhdXNlcyBhbiBlcnJvciBvbmx5IGlmCi0gICAgICAgdGhlcmUgYXJlIG5vdCB0aGF0IG1hbnkgY2FwdHVyaW5nIGxlZnQgcGFyZW50aGVzZXMgaW4gdGhlICBlbnRpcmUgIHBhdC0KLSAgICAgICB0ZXJuLiAgSW4gIG90aGVyIHdvcmRzLCB0aGUgcGFyZW50aGVzZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBuZWVkIG5vdCBiZQotICAgICAgIHRvIHRoZSBsZWZ0IG9mIHRoZSByZWZlcmVuY2UgZm9yIG51bWJlcnMgbGVzcyB0aGFuIDEwLiBBICJmb3J3YXJkICBiYWNrCi0gICAgICAgcmVmZXJlbmNlIiAgb2YgIHRoaXMgIHR5cGUgY2FuIG1ha2Ugc2Vuc2Ugd2hlbiBhIHJlcGV0aXRpb24gaXMgaW52b2x2ZWQKLSAgICAgICBhbmQgdGhlIHN1YnBhdHRlcm4gdG8gdGhlIHJpZ2h0IGhhcyBwYXJ0aWNpcGF0ZWQgaW4gYW4gIGVhcmxpZXIgIGl0ZXJhLQorICAgICAgIGl0IGlzIGFsd2F5cyB0YWtlbiBhcyBhIGJhY2sgcmVmZXJlbmNlLCBhbmQgY2F1c2VzICBhbiAgZXJyb3IgIG9ubHkgIGlmCisgICAgICAgdGhlcmUgIGFyZSAgbm90IHRoYXQgbWFueSBjYXB0dXJpbmcgbGVmdCBwYXJlbnRoZXNlcyBpbiB0aGUgZW50aXJlIHBhdC0KKyAgICAgICB0ZXJuLiBJbiBvdGhlciB3b3JkcywgdGhlIHBhcmVudGhlc2VzIHRoYXQgYXJlIHJlZmVyZW5jZWQgbmVlZCAgbm90ICBiZQorICAgICAgIHRvICB0aGUgbGVmdCBvZiB0aGUgcmVmZXJlbmNlIGZvciBudW1iZXJzIGxlc3MgdGhhbiAxMC4gQSAiZm9yd2FyZCBiYWNrCisgICAgICAgcmVmZXJlbmNlIiBvZiB0aGlzIHR5cGUgY2FuIG1ha2Ugc2Vuc2Ugd2hlbiBhICByZXBldGl0aW9uICBpcyAgaW52b2x2ZWQKKyAgICAgICBhbmQgIHRoZSAgc3VicGF0dGVybiB0byB0aGUgcmlnaHQgaGFzIHBhcnRpY2lwYXRlZCBpbiBhbiBlYXJsaWVyIGl0ZXJhLQogICAgICAgIHRpb24uCiAKLSAgICAgICBJdCAgaXMgIG5vdCAgcG9zc2libGUgdG8gaGF2ZSBhIG51bWVyaWNhbCAiZm9yd2FyZCBiYWNrIHJlZmVyZW5jZSIgdG8gYQotICAgICAgIHN1YnBhdHRlcm4gd2hvc2UgbnVtYmVyIGlzIDEwIG9yICBtb3JlICB1c2luZyAgdGhpcyAgc3ludGF4ICBiZWNhdXNlICBhCi0gICAgICAgc2VxdWVuY2UgIHN1Y2ggIGFzICBcNTAgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjaGFyYWN0ZXIgZGVmaW5lZCBpbiBvY3RhbC4KKyAgICAgICBJdCBpcyBub3QgcG9zc2libGUgdG8gaGF2ZSBhIG51bWVyaWNhbCAiZm9yd2FyZCBiYWNrICByZWZlcmVuY2UiICB0byAgYQorICAgICAgIHN1YnBhdHRlcm4gIHdob3NlICBudW1iZXIgIGlzICAxMCAgb3IgIG1vcmUgdXNpbmcgdGhpcyBzeW50YXggYmVjYXVzZSBhCisgICAgICAgc2VxdWVuY2Ugc3VjaCBhcyBcNTAgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjaGFyYWN0ZXIgIGRlZmluZWQgIGluICBvY3RhbC4KICAgICAgICBTZWUgdGhlIHN1YnNlY3Rpb24gZW50aXRsZWQgIk5vbi1wcmludGluZyBjaGFyYWN0ZXJzIiBhYm92ZSBmb3IgZnVydGhlcgotICAgICAgIGRldGFpbHMgIG9mICB0aGUgIGhhbmRsaW5nIG9mIGRpZ2l0cyBmb2xsb3dpbmcgYSBiYWNrc2xhc2guIFRoZXJlIGlzIG5vCi0gICAgICAgc3VjaCBwcm9ibGVtIHdoZW4gbmFtZWQgcGFyZW50aGVzZXMgYXJlIHVzZWQuIEEgYmFjayByZWZlcmVuY2UgIHRvICBhbnkKKyAgICAgICBkZXRhaWxzIG9mIHRoZSBoYW5kbGluZyBvZiBkaWdpdHMgZm9sbG93aW5nIGEgYmFja3NsYXNoLiAgVGhlcmUgIGlzICBubworICAgICAgIHN1Y2ggIHByb2JsZW0gIHdoZW4gbmFtZWQgcGFyZW50aGVzZXMgYXJlIHVzZWQuIEEgYmFjayByZWZlcmVuY2UgdG8gYW55CiAgICAgICAgc3VicGF0dGVybiBpcyBwb3NzaWJsZSB1c2luZyBuYW1lZCBwYXJlbnRoZXNlcyAoc2VlIGJlbG93KS4KIAotICAgICAgIEFub3RoZXIgIHdheSAgb2YgIGF2b2lkaW5nICB0aGUgYW1iaWd1aXR5IGluaGVyZW50IGluIHRoZSB1c2Ugb2YgZGlnaXRzCi0gICAgICAgZm9sbG93aW5nIGEgYmFja3NsYXNoIGlzIHRvIHVzZSB0aGUgXGcgIGVzY2FwZSAgc2VxdWVuY2UuICBUaGlzICBlc2NhcGUKKyAgICAgICBBbm90aGVyIHdheSBvZiBhdm9pZGluZyB0aGUgYW1iaWd1aXR5IGluaGVyZW50IGluICB0aGUgIHVzZSAgb2YgIGRpZ2l0cworICAgICAgIGZvbGxvd2luZyAgYSAgYmFja3NsYXNoICBpcyAgdG8gdXNlIHRoZSBcZyBlc2NhcGUgc2VxdWVuY2UuIFRoaXMgZXNjYXBlCiAgICAgICAgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiB1bnNpZ25lZCBudW1iZXIgb3IgYSBuZWdhdGl2ZSBudW1iZXIsIG9wdGlvbmFsbHkKICAgICAgICBlbmNsb3NlZCBpbiBicmFjZXMuIFRoZXNlIGV4YW1wbGVzIGFyZSBhbGwgaWRlbnRpY2FsOgogCkBAIC02NTA0LDcgKzY1MTcsNyBAQAogICAgICAgICAgKHJpbmcpLCBcZzEKICAgICAgICAgIChyaW5nKSwgXGd7MX0KIAotICAgICAgIEFuIHVuc2lnbmVkIG51bWJlciBzcGVjaWZpZXMgYW4gYWJzb2x1dGUgcmVmZXJlbmNlIHdpdGhvdXQgdGhlICBhbWJpZ3UtCisgICAgICAgQW4gIHVuc2lnbmVkIG51bWJlciBzcGVjaWZpZXMgYW4gYWJzb2x1dGUgcmVmZXJlbmNlIHdpdGhvdXQgdGhlIGFtYmlndS0KICAgICAgICBpdHkgdGhhdCBpcyBwcmVzZW50IGluIHRoZSBvbGRlciBzeW50YXguIEl0IGlzIGFsc28gdXNlZnVsIHdoZW4gbGl0ZXJhbAogICAgICAgIGRpZ2l0cyBmb2xsb3cgdGhlIHJlZmVyZW5jZS4gQSBuZWdhdGl2ZSBudW1iZXIgaXMgYSByZWxhdGl2ZSByZWZlcmVuY2UuCiAgICAgICAgQ29uc2lkZXIgdGhpcyBleGFtcGxlOgpAQCAtNjUxMywzMyArNjUyNiwzMyBAQAogCiAgICAgICAgVGhlIHNlcXVlbmNlIFxney0xfSBpcyBhIHJlZmVyZW5jZSB0byB0aGUgbW9zdCByZWNlbnRseSBzdGFydGVkIGNhcHR1ci0KICAgICAgICBpbmcgc3VicGF0dGVybiBiZWZvcmUgXGcsIHRoYXQgaXMsIGlzIGl0IGVxdWl2YWxlbnQgdG8gXDIgaW4gdGhpcyBleGFtLQotICAgICAgIHBsZS4gICBTaW1pbGFybHksIFxney0yfSB3b3VsZCBiZSBlcXVpdmFsZW50IHRvIFwxLiBUaGUgdXNlIG9mIHJlbGF0aXZlCi0gICAgICAgcmVmZXJlbmNlcyBjYW4gYmUgaGVscGZ1bCBpbiBsb25nIHBhdHRlcm5zLCBhbmQgYWxzbyBpbiAgcGF0dGVybnMgIHRoYXQKLSAgICAgICBhcmUgIGNyZWF0ZWQgIGJ5ICBqb2luaW5nICB0b2dldGhlciAgZnJhZ21lbnRzICB0aGF0IGNvbnRhaW4gcmVmZXJlbmNlcworICAgICAgIHBsZS4gIFNpbWlsYXJseSwgXGd7LTJ9IHdvdWxkIGJlIGVxdWl2YWxlbnQgdG8gXDEuIFRoZSB1c2Ugb2YgIHJlbGF0aXZlCisgICAgICAgcmVmZXJlbmNlcyAgY2FuICBiZSBoZWxwZnVsIGluIGxvbmcgcGF0dGVybnMsIGFuZCBhbHNvIGluIHBhdHRlcm5zIHRoYXQKKyAgICAgICBhcmUgY3JlYXRlZCBieSAgam9pbmluZyAgdG9nZXRoZXIgIGZyYWdtZW50cyAgdGhhdCAgY29udGFpbiAgcmVmZXJlbmNlcwogICAgICAgIHdpdGhpbiB0aGVtc2VsdmVzLgogCi0gICAgICAgQSBiYWNrIHJlZmVyZW5jZSBtYXRjaGVzIHdoYXRldmVyIGFjdHVhbGx5IG1hdGNoZWQgdGhlICBjYXB0dXJpbmcgIHN1Yi0KLSAgICAgICBwYXR0ZXJuICBpbiAgdGhlICBjdXJyZW50IHN1YmplY3Qgc3RyaW5nLCByYXRoZXIgdGhhbiBhbnl0aGluZyBtYXRjaGluZworICAgICAgIEEgIGJhY2sgIHJlZmVyZW5jZSBtYXRjaGVzIHdoYXRldmVyIGFjdHVhbGx5IG1hdGNoZWQgdGhlIGNhcHR1cmluZyBzdWItCisgICAgICAgcGF0dGVybiBpbiB0aGUgY3VycmVudCBzdWJqZWN0IHN0cmluZywgcmF0aGVyICB0aGFuICBhbnl0aGluZyAgbWF0Y2hpbmcKICAgICAgICB0aGUgc3VicGF0dGVybiBpdHNlbGYgKHNlZSAiU3VicGF0dGVybnMgYXMgc3Vicm91dGluZXMiIGJlbG93IGZvciBhIHdheQogICAgICAgIG9mIGRvaW5nIHRoYXQpLiBTbyB0aGUgcGF0dGVybgogCiAgICAgICAgICAoc2Vuc3xyZXNwb25zKWUgYW5kIFwxaWJpbGl0eQogCi0gICAgICAgbWF0Y2hlcyAgInNlbnNlIGFuZCBzZW5zaWJpbGl0eSIgYW5kICJyZXNwb25zZSBhbmQgcmVzcG9uc2liaWxpdHkiLCBidXQKLSAgICAgICBub3QgInNlbnNlIGFuZCByZXNwb25zaWJpbGl0eSIuIElmIGNhc2VmdWwgbWF0Y2hpbmcgaXMgaW4gZm9yY2UgYXQgIHRoZQotICAgICAgIHRpbWUgIG9mIHRoZSBiYWNrIHJlZmVyZW5jZSwgdGhlIGNhc2Ugb2YgbGV0dGVycyBpcyByZWxldmFudC4gRm9yIGV4YW0tCisgICAgICAgbWF0Y2hlcyAic2Vuc2UgYW5kIHNlbnNpYmlsaXR5IiBhbmQgInJlc3BvbnNlIGFuZCByZXNwb25zaWJpbGl0eSIsICBidXQKKyAgICAgICBub3QgICJzZW5zZSBhbmQgcmVzcG9uc2liaWxpdHkiLiBJZiBjYXNlZnVsIG1hdGNoaW5nIGlzIGluIGZvcmNlIGF0IHRoZQorICAgICAgIHRpbWUgb2YgdGhlIGJhY2sgcmVmZXJlbmNlLCB0aGUgY2FzZSBvZiBsZXR0ZXJzIGlzIHJlbGV2YW50LiBGb3IgIGV4YW0tCiAgICAgICAgcGxlLAogCiAgICAgICAgICAoKD9pKXJhaClccytcMQogCi0gICAgICAgbWF0Y2hlcyAicmFoIHJhaCIgYW5kICJSQUggUkFIIiwgYnV0IG5vdCAiUkFIICByYWgiLCAgZXZlbiAgdGhvdWdoICB0aGUKKyAgICAgICBtYXRjaGVzICAicmFoICByYWgiICBhbmQgICJSQUggUkFIIiwgYnV0IG5vdCAiUkFIIHJhaCIsIGV2ZW4gdGhvdWdoIHRoZQogICAgICAgIG9yaWdpbmFsIGNhcHR1cmluZyBzdWJwYXR0ZXJuIGlzIG1hdGNoZWQgY2FzZWxlc3NseS4KIAotICAgICAgIFRoZXJlICBhcmUgIHNldmVyYWwgIGRpZmZlcmVudCB3YXlzIG9mIHdyaXRpbmcgYmFjayByZWZlcmVuY2VzIHRvIG5hbWVkCi0gICAgICAgc3VicGF0dGVybnMuIFRoZSAuTkVUIHN5bnRheCBca3tuYW1lfSBhbmQgdGhlIFBlcmwgc3ludGF4ICBcazxuYW1lPiAgb3IKLSAgICAgICBcayduYW1lJyAgYXJlIHN1cHBvcnRlZCwgYXMgaXMgdGhlIFB5dGhvbiBzeW50YXggKD9QPW5hbWUpLiBQZXJsIDUuMTAncworICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIGRpZmZlcmVudCB3YXlzIG9mIHdyaXRpbmcgYmFjayAgcmVmZXJlbmNlcyAgdG8gIG5hbWVkCisgICAgICAgc3VicGF0dGVybnMuICBUaGUgIC5ORVQgc3ludGF4IFxre25hbWV9IGFuZCB0aGUgUGVybCBzeW50YXggXGs8bmFtZT4gb3IKKyAgICAgICBcayduYW1lJyBhcmUgc3VwcG9ydGVkLCBhcyBpcyB0aGUgUHl0aG9uIHN5bnRheCAoP1A9bmFtZSkuIFBlcmwgIDUuMTAncwogICAgICAgIHVuaWZpZWQgYmFjayByZWZlcmVuY2Ugc3ludGF4LCBpbiB3aGljaCBcZyBjYW4gYmUgdXNlZCBmb3IgYm90aCBudW1lcmljCi0gICAgICAgYW5kICBuYW1lZCAgcmVmZXJlbmNlcywgIGlzICBhbHNvIHN1cHBvcnRlZC4gV2UgY291bGQgcmV3cml0ZSB0aGUgYWJvdmUKKyAgICAgICBhbmQgbmFtZWQgcmVmZXJlbmNlcywgaXMgYWxzbyBzdXBwb3J0ZWQuIFdlICBjb3VsZCAgcmV3cml0ZSAgdGhlICBhYm92ZQogICAgICAgIGV4YW1wbGUgaW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgd2F5czoKIAogICAgICAgICAgKD88cDE+KD9pKXJhaClccytcazxwMT4KQEAgLTY1NDcsODQgKzY1NjAsODQgQEAKICAgICAgICAgICg/UDxwMT4oP2kpcmFoKVxzKyg/UD1wMSkKICAgICAgICAgICg/PHAxPig/aSlyYWgpXHMrXGd7cDF9CiAKLSAgICAgICBBIHN1YnBhdHRlcm4gdGhhdCBpcyByZWZlcmVuY2VkIGJ5ICBuYW1lICBtYXkgIGFwcGVhciAgaW4gIHRoZSAgcGF0dGVybgorICAgICAgIEEgIHN1YnBhdHRlcm4gIHRoYXQgIGlzICByZWZlcmVuY2VkICBieSAgbmFtZSBtYXkgYXBwZWFyIGluIHRoZSBwYXR0ZXJuCiAgICAgICAgYmVmb3JlIG9yIGFmdGVyIHRoZSByZWZlcmVuY2UuCiAKLSAgICAgICBUaGVyZSAgbWF5IGJlIG1vcmUgdGhhbiBvbmUgYmFjayByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3VicGF0dGVybi4gSWYgYQotICAgICAgIHN1YnBhdHRlcm4gaGFzIG5vdCBhY3R1YWxseSBiZWVuIHVzZWQgaW4gYSBwYXJ0aWN1bGFyIG1hdGNoLCAgYW55ICBiYWNrCisgICAgICAgVGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgYmFjayByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3VicGF0dGVybi4gSWYgIGEKKyAgICAgICBzdWJwYXR0ZXJuICBoYXMgIG5vdCBhY3R1YWxseSBiZWVuIHVzZWQgaW4gYSBwYXJ0aWN1bGFyIG1hdGNoLCBhbnkgYmFjawogICAgICAgIHJlZmVyZW5jZXMgdG8gaXQgYWx3YXlzIGZhaWwgYnkgZGVmYXVsdC4gRm9yIGV4YW1wbGUsIHRoZSBwYXR0ZXJuCiAKICAgICAgICAgIChhfChiYykpXDIKIAotICAgICAgIGFsd2F5cyAgZmFpbHMgIGlmICBpdCBzdGFydHMgdG8gbWF0Y2ggImEiIHJhdGhlciB0aGFuICJiYyIuIEhvd2V2ZXIsIGlmCisgICAgICAgYWx3YXlzIGZhaWxzIGlmIGl0IHN0YXJ0cyB0byBtYXRjaCAiYSIgcmF0aGVyIHRoYW4gICJiYyIuICBIb3dldmVyLCAgaWYKICAgICAgICB0aGUgUENSRV9KQVZBU0NSSVBUX0NPTVBBVCBvcHRpb24gaXMgc2V0IGF0IGNvbXBpbGUgdGltZSwgYSBiYWNrIHJlZmVyLQogICAgICAgIGVuY2UgdG8gYW4gdW5zZXQgdmFsdWUgbWF0Y2hlcyBhbiBlbXB0eSBzdHJpbmcuCiAKLSAgICAgICBCZWNhdXNlICB0aGVyZSBtYXkgYmUgbWFueSBjYXB0dXJpbmcgcGFyZW50aGVzZXMgaW4gYSBwYXR0ZXJuLCBhbGwgZGlnLQotICAgICAgIGl0cyBmb2xsb3dpbmcgYSBiYWNrc2xhc2ggYXJlIHRha2VuIGFzIHBhcnQgb2YgYSBwb3RlbnRpYWwgYmFjayAgcmVmZXItCi0gICAgICAgZW5jZSAgbnVtYmVyLiAgIElmICB0aGUgIHBhdHRlcm4gY29udGludWVzIHdpdGggYSBkaWdpdCBjaGFyYWN0ZXIsIHNvbWUKLSAgICAgICBkZWxpbWl0ZXIgbXVzdCAgYmUgIHVzZWQgIHRvICB0ZXJtaW5hdGUgIHRoZSAgYmFjayAgcmVmZXJlbmNlLiAgSWYgIHRoZQotICAgICAgIFBDUkVfRVhURU5ERUQgIG9wdGlvbiAgaXMgIHNldCwgdGhpcyBjYW4gYmUgd2hpdGUgc3BhY2UuIE90aGVyd2lzZSwgdGhlCisgICAgICAgQmVjYXVzZSB0aGVyZSBtYXkgYmUgbWFueSBjYXB0dXJpbmcgcGFyZW50aGVzZXMgaW4gYSBwYXR0ZXJuLCBhbGwgIGRpZy0KKyAgICAgICBpdHMgIGZvbGxvd2luZyBhIGJhY2tzbGFzaCBhcmUgdGFrZW4gYXMgcGFydCBvZiBhIHBvdGVudGlhbCBiYWNrIHJlZmVyLQorICAgICAgIGVuY2UgbnVtYmVyLiAgSWYgdGhlIHBhdHRlcm4gY29udGludWVzIHdpdGggIGEgIGRpZ2l0ICBjaGFyYWN0ZXIsICBzb21lCisgICAgICAgZGVsaW1pdGVyICBtdXN0ICBiZSAgdXNlZCAgdG8gIHRlcm1pbmF0ZSAgdGhlICBiYWNrICByZWZlcmVuY2UuICBJZiB0aGUKKyAgICAgICBQQ1JFX0VYVEVOREVEIG9wdGlvbiBpcyBzZXQsIHRoaXMgY2FuIGJlIHdoaXRlICBzcGFjZS4gIE90aGVyd2lzZSwgIHRoZQogICAgICAgIFxneyBzeW50YXggb3IgYW4gZW1wdHkgY29tbWVudCAoc2VlICJDb21tZW50cyIgYmVsb3cpIGNhbiBiZSB1c2VkLgogCiAgICBSZWN1cnNpdmUgYmFjayByZWZlcmVuY2VzCiAKLSAgICAgICBBIGJhY2sgcmVmZXJlbmNlIHRoYXQgb2NjdXJzIGluc2lkZSB0aGUgcGFyZW50aGVzZXMgdG8gd2hpY2ggaXQgIHJlZmVycwotICAgICAgIGZhaWxzICB3aGVuICB0aGUgc3VicGF0dGVybiBpcyBmaXJzdCB1c2VkLCBzbywgZm9yIGV4YW1wbGUsIChhXDEpIG5ldmVyCi0gICAgICAgbWF0Y2hlcy4gIEhvd2V2ZXIsIHN1Y2ggcmVmZXJlbmNlcyBjYW4gYmUgdXNlZnVsIGluc2lkZSAgcmVwZWF0ZWQgIHN1Yi0KKyAgICAgICBBICBiYWNrIHJlZmVyZW5jZSB0aGF0IG9jY3VycyBpbnNpZGUgdGhlIHBhcmVudGhlc2VzIHRvIHdoaWNoIGl0IHJlZmVycworICAgICAgIGZhaWxzIHdoZW4gdGhlIHN1YnBhdHRlcm4gaXMgZmlyc3QgdXNlZCwgc28sIGZvciBleGFtcGxlLCAgKGFcMSkgIG5ldmVyCisgICAgICAgbWF0Y2hlcy4gICBIb3dldmVyLCAgc3VjaCByZWZlcmVuY2VzIGNhbiBiZSB1c2VmdWwgaW5zaWRlIHJlcGVhdGVkIHN1Yi0KICAgICAgICBwYXR0ZXJucy4gRm9yIGV4YW1wbGUsIHRoZSBwYXR0ZXJuCiAKICAgICAgICAgIChhfGJcMSkrCiAKICAgICAgICBtYXRjaGVzIGFueSBudW1iZXIgb2YgImEicyBhbmQgYWxzbyAiYWJhIiwgImFiYWJiYWEiIGV0Yy4gQXQgZWFjaCBpdGVyLQotICAgICAgIGF0aW9uIG9mIHRoZSBzdWJwYXR0ZXJuLCAgdGhlICBiYWNrICByZWZlcmVuY2UgIG1hdGNoZXMgIHRoZSAgY2hhcmFjdGVyCi0gICAgICAgc3RyaW5nICBjb3JyZXNwb25kaW5nICB0byAgdGhlIHByZXZpb3VzIGl0ZXJhdGlvbi4gSW4gb3JkZXIgZm9yIHRoaXMgdG8KLSAgICAgICB3b3JrLCB0aGUgcGF0dGVybiBtdXN0IGJlIHN1Y2ggdGhhdCB0aGUgZmlyc3QgaXRlcmF0aW9uIGRvZXMgIG5vdCAgbmVlZAotICAgICAgIHRvICBtYXRjaCB0aGUgYmFjayByZWZlcmVuY2UuIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgYWx0ZXJuYXRpb24sIGFzIGluCisgICAgICAgYXRpb24gIG9mICB0aGUgIHN1YnBhdHRlcm4sICB0aGUgIGJhY2sgIHJlZmVyZW5jZSBtYXRjaGVzIHRoZSBjaGFyYWN0ZXIKKyAgICAgICBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUgcHJldmlvdXMgaXRlcmF0aW9uLiBJbiBvcmRlciAgZm9yICB0aGlzICB0bworICAgICAgIHdvcmssICB0aGUgIHBhdHRlcm4gbXVzdCBiZSBzdWNoIHRoYXQgdGhlIGZpcnN0IGl0ZXJhdGlvbiBkb2VzIG5vdCBuZWVkCisgICAgICAgdG8gbWF0Y2ggdGhlIGJhY2sgcmVmZXJlbmNlLiBUaGlzIGNhbiBiZSBkb25lIHVzaW5nIGFsdGVybmF0aW9uLCBhcyAgaW4KICAgICAgICB0aGUgZXhhbXBsZSBhYm92ZSwgb3IgYnkgYSBxdWFudGlmaWVyIHdpdGggYSBtaW5pbXVtIG9mIHplcm8uCiAKLSAgICAgICBCYWNrIHJlZmVyZW5jZXMgb2YgdGhpcyB0eXBlIGNhdXNlIHRoZSBncm91cCB0aGF0IHRoZXkgcmVmZXJlbmNlIHRvICBiZQotICAgICAgIHRyZWF0ZWQgIGFzICBhbiBhdG9taWMgZ3JvdXAuICBPbmNlIHRoZSB3aG9sZSBncm91cCBoYXMgYmVlbiBtYXRjaGVkLCBhCi0gICAgICAgc3Vic2VxdWVudCBtYXRjaGluZyBmYWlsdXJlIGNhbm5vdCBjYXVzZSBiYWNrdHJhY2tpbmcgaW50byAgdGhlICBtaWRkbGUKKyAgICAgICBCYWNrICByZWZlcmVuY2VzIG9mIHRoaXMgdHlwZSBjYXVzZSB0aGUgZ3JvdXAgdGhhdCB0aGV5IHJlZmVyZW5jZSB0byBiZQorICAgICAgIHRyZWF0ZWQgYXMgYW4gYXRvbWljIGdyb3VwLiAgT25jZSB0aGUgd2hvbGUgZ3JvdXAgaGFzIGJlZW4gIG1hdGNoZWQsICBhCisgICAgICAgc3Vic2VxdWVudCAgbWF0Y2hpbmcgIGZhaWx1cmUgY2Fubm90IGNhdXNlIGJhY2t0cmFja2luZyBpbnRvIHRoZSBtaWRkbGUKICAgICAgICBvZiB0aGUgZ3JvdXAuCiAKIAogQVNTRVJUSU9OUwogCi0gICAgICAgQW4gIGFzc2VydGlvbiAgaXMgIGEgIHRlc3Qgb24gdGhlIGNoYXJhY3RlcnMgZm9sbG93aW5nIG9yIHByZWNlZGluZyB0aGUKLSAgICAgICBjdXJyZW50IG1hdGNoaW5nIHBvaW50IHRoYXQgZG9lcyBub3QgYWN0dWFsbHkgY29uc3VtZSAgYW55ICBjaGFyYWN0ZXJzLgotICAgICAgIFRoZSAgc2ltcGxlICBhc3NlcnRpb25zICBjb2RlZCAgYXMgIFxiLCBcQiwgXEEsIFxHLCBcWiwgXHosIF4gYW5kICQgYXJlCisgICAgICAgQW4gYXNzZXJ0aW9uIGlzIGEgdGVzdCBvbiB0aGUgY2hhcmFjdGVycyAgZm9sbG93aW5nICBvciAgcHJlY2VkaW5nICB0aGUKKyAgICAgICBjdXJyZW50ICBtYXRjaGluZyAgcG9pbnQgdGhhdCBkb2VzIG5vdCBhY3R1YWxseSBjb25zdW1lIGFueSBjaGFyYWN0ZXJzLgorICAgICAgIFRoZSBzaW1wbGUgYXNzZXJ0aW9ucyBjb2RlZCBhcyBcYiwgXEIsIFxBLCBcRywgXFosICBceiwgIF4gIGFuZCAgJCAgYXJlCiAgICAgICAgZGVzY3JpYmVkIGFib3ZlLgogCi0gICAgICAgTW9yZSBjb21wbGljYXRlZCBhc3NlcnRpb25zIGFyZSBjb2RlZCBhcyAgc3VicGF0dGVybnMuICBUaGVyZSAgYXJlICB0d28KLSAgICAgICBraW5kczogIHRob3NlICB0aGF0ICBsb29rICBhaGVhZCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc3ViamVjdAotICAgICAgIHN0cmluZywgYW5kIHRob3NlIHRoYXQgbG9vayAgYmVoaW5kICBpdC4gIEFuICBhc3NlcnRpb24gIHN1YnBhdHRlcm4gIGlzCi0gICAgICAgbWF0Y2hlZCAgaW4gIHRoZSAgbm9ybWFsIHdheSwgZXhjZXB0IHRoYXQgaXQgZG9lcyBub3QgY2F1c2UgdGhlIGN1cnJlbnQKKyAgICAgICBNb3JlICBjb21wbGljYXRlZCAgYXNzZXJ0aW9ucyAgYXJlICBjb2RlZCBhcyBzdWJwYXR0ZXJucy4gVGhlcmUgYXJlIHR3bworICAgICAgIGtpbmRzOiB0aG9zZSB0aGF0IGxvb2sgYWhlYWQgb2YgdGhlIGN1cnJlbnQgIHBvc2l0aW9uICBpbiAgdGhlICBzdWJqZWN0CisgICAgICAgc3RyaW5nLCAgYW5kICB0aG9zZSAgdGhhdCAgbG9vayAgYmVoaW5kICBpdC4gQW4gYXNzZXJ0aW9uIHN1YnBhdHRlcm4gaXMKKyAgICAgICBtYXRjaGVkIGluIHRoZSBub3JtYWwgd2F5LCBleGNlcHQgdGhhdCBpdCBkb2VzIG5vdCAgY2F1c2UgIHRoZSAgY3VycmVudAogICAgICAgIG1hdGNoaW5nIHBvc2l0aW9uIHRvIGJlIGNoYW5nZWQuCiAKLSAgICAgICBBc3NlcnRpb24gc3VicGF0dGVybnMgYXJlIG5vdCBjYXB0dXJpbmcgc3VicGF0dGVybnMuIElmIHN1Y2ggYW4gIGFzc2VyLQotICAgICAgIHRpb24gIGNvbnRhaW5zICBjYXB0dXJpbmcgIHN1YnBhdHRlcm5zIHdpdGhpbiBpdCwgdGhlc2UgYXJlIGNvdW50ZWQgZm9yCi0gICAgICAgdGhlIHB1cnBvc2VzIG9mIG51bWJlcmluZyB0aGUgY2FwdHVyaW5nIHN1YnBhdHRlcm5zIGluIHRoZSAgd2hvbGUgIHBhdC0KLSAgICAgICB0ZXJuLiAgSG93ZXZlciwgIHN1YnN0cmluZyAgY2FwdHVyaW5nICBpcyBjYXJyaWVkIG91dCBvbmx5IGZvciBwb3NpdGl2ZQorICAgICAgIEFzc2VydGlvbiAgc3VicGF0dGVybnMgYXJlIG5vdCBjYXB0dXJpbmcgc3VicGF0dGVybnMuIElmIHN1Y2ggYW4gYXNzZXItCisgICAgICAgdGlvbiBjb250YWlucyBjYXB0dXJpbmcgc3VicGF0dGVybnMgd2l0aGluIGl0LCB0aGVzZSAgYXJlICBjb3VudGVkICBmb3IKKyAgICAgICB0aGUgIHB1cnBvc2VzICBvZiBudW1iZXJpbmcgdGhlIGNhcHR1cmluZyBzdWJwYXR0ZXJucyBpbiB0aGUgd2hvbGUgcGF0LQorICAgICAgIHRlcm4uIEhvd2V2ZXIsIHN1YnN0cmluZyBjYXB0dXJpbmcgaXMgY2FycmllZCAgb3V0ICBvbmx5ICBmb3IgIHBvc2l0aXZlCiAgICAgICAgYXNzZXJ0aW9ucy4gKFBlcmwgc29tZXRpbWVzLCBidXQgbm90IGFsd2F5cywgZG9lcyBkbyBjYXB0dXJpbmcgaW4gbmVnYS0KICAgICAgICB0aXZlIGFzc2VydGlvbnMuKQogCi0gICAgICAgRm9yICBjb21wYXRpYmlsaXR5ICB3aXRoICBQZXJsLCAgYXNzZXJ0aW9uIHN1YnBhdHRlcm5zIG1heSBiZSByZXBlYXRlZDsKLSAgICAgICB0aG91Z2ggaXQgbWFrZXMgbm8gc2Vuc2UgdG8gYXNzZXJ0IHRoZSBzYW1lIHRoaW5nICBzZXZlcmFsICB0aW1lcywgIHRoZQotICAgICAgIHNpZGUgIGVmZmVjdCAgb2YgIGNhcHR1cmluZyAgcGFyZW50aGVzZXMgbWF5IG9jY2FzaW9uYWxseSBiZSB1c2VmdWwuIEluCisgICAgICAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBQZXJsLCBhc3NlcnRpb24gIHN1YnBhdHRlcm5zICBtYXkgIGJlICByZXBlYXRlZDsKKyAgICAgICB0aG91Z2ggIGl0ICBtYWtlcyAgbm8gc2Vuc2UgdG8gYXNzZXJ0IHRoZSBzYW1lIHRoaW5nIHNldmVyYWwgdGltZXMsIHRoZQorICAgICAgIHNpZGUgZWZmZWN0IG9mIGNhcHR1cmluZyBwYXJlbnRoZXNlcyBtYXkgIG9jY2FzaW9uYWxseSAgYmUgIHVzZWZ1bC4gIEluCiAgICAgICAgcHJhY3RpY2UsIHRoZXJlIG9ubHkgdGhyZWUgY2FzZXM6CiAKLSAgICAgICAoMSkgSWYgdGhlIHF1YW50aWZpZXIgaXMgezB9LCB0aGUgIGFzc2VydGlvbiAgaXMgIG5ldmVyICBvYmV5ZWQgIGR1cmluZwotICAgICAgIG1hdGNoaW5nLiAgIEhvd2V2ZXIsICBpdCAgbWF5ICBjb250YWluIGludGVybmFsIGNhcHR1cmluZyBwYXJlbnRoZXNpemVkCisgICAgICAgKDEpICBJZiAgdGhlICBxdWFudGlmaWVyICBpcyAgezB9LCB0aGUgYXNzZXJ0aW9uIGlzIG5ldmVyIG9iZXllZCBkdXJpbmcKKyAgICAgICBtYXRjaGluZy4gIEhvd2V2ZXIsIGl0IG1heSAgY29udGFpbiAgaW50ZXJuYWwgIGNhcHR1cmluZyAgcGFyZW50aGVzaXplZAogICAgICAgIGdyb3VwcyB0aGF0IGFyZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUgdmlhIHRoZSBzdWJyb3V0aW5lIG1lY2hhbmlzbS4KIAotICAgICAgICgyKSBJZiBxdWFudGlmaWVyIGlzIHswLG59IHdoZXJlIG4gaXMgZ3JlYXRlciB0aGFuIHplcm8sIGl0IGlzICB0cmVhdGVkCi0gICAgICAgYXMgIGlmICBpdCAgd2VyZSAgezAsMX0uICBBdCBydW4gdGltZSwgdGhlIHJlc3Qgb2YgdGhlIHBhdHRlcm4gbWF0Y2ggaXMKKyAgICAgICAoMikgIElmIHF1YW50aWZpZXIgaXMgezAsbn0gd2hlcmUgbiBpcyBncmVhdGVyIHRoYW4gemVybywgaXQgaXMgdHJlYXRlZAorICAgICAgIGFzIGlmIGl0IHdlcmUgezAsMX0uIEF0IHJ1biB0aW1lLCB0aGUgcmVzdCAgb2YgIHRoZSAgcGF0dGVybiAgbWF0Y2ggIGlzCiAgICAgICAgdHJpZWQgd2l0aCBhbmQgd2l0aG91dCB0aGUgYXNzZXJ0aW9uLCB0aGUgb3JkZXIgZGVwZW5kaW5nIG9uIHRoZSBncmVlZC0KICAgICAgICBpbmVzcyBvZiB0aGUgcXVhbnRpZmllci4KIAotICAgICAgICgzKSAgSWYgIHRoZSBtaW5pbXVtIHJlcGV0aXRpb24gaXMgZ3JlYXRlciB0aGFuIHplcm8sIHRoZSBxdWFudGlmaWVyIGlzCi0gICAgICAgaWdub3JlZC4gIFRoZSBhc3NlcnRpb24gaXMgb2JleWVkIGp1c3QgIG9uY2UgIHdoZW4gIGVuY291bnRlcmVkICBkdXJpbmcKKyAgICAgICAoMykgSWYgdGhlIG1pbmltdW0gcmVwZXRpdGlvbiBpcyBncmVhdGVyIHRoYW4gemVybywgdGhlICBxdWFudGlmaWVyICBpcworICAgICAgIGlnbm9yZWQuICAgVGhlICBhc3NlcnRpb24gIGlzICBvYmV5ZWQganVzdCBvbmNlIHdoZW4gZW5jb3VudGVyZWQgZHVyaW5nCiAgICAgICAgbWF0Y2hpbmcuCiAKICAgIExvb2thaGVhZCBhc3NlcnRpb25zCkBAIC02NjM0LDM4ICs2NjQ3LDM4IEBACiAKICAgICAgICAgIFx3Kyg/PTspCiAKLSAgICAgICBtYXRjaGVzIGEgd29yZCBmb2xsb3dlZCBieSBhIHNlbWljb2xvbiwgYnV0IGRvZXMgbm90IGluY2x1ZGUgdGhlICBzZW1pLQorICAgICAgIG1hdGNoZXMgIGEgd29yZCBmb2xsb3dlZCBieSBhIHNlbWljb2xvbiwgYnV0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNlbWktCiAgICAgICAgY29sb24gaW4gdGhlIG1hdGNoLCBhbmQKIAogICAgICAgICAgZm9vKD8hYmFyKQogCi0gICAgICAgbWF0Y2hlcyAgYW55ICBvY2N1cnJlbmNlICBvZiAgImZvbyIgdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgImJhciIuIE5vdGUKKyAgICAgICBtYXRjaGVzIGFueSBvY2N1cnJlbmNlIG9mICJmb28iIHRoYXQgaXMgbm90ICBmb2xsb3dlZCAgYnkgICJiYXIiLiAgTm90ZQogICAgICAgIHRoYXQgdGhlIGFwcGFyZW50bHkgc2ltaWxhciBwYXR0ZXJuCiAKICAgICAgICAgICg/IWZvbyliYXIKIAotICAgICAgIGRvZXMgbm90IGZpbmQgYW4gb2NjdXJyZW5jZSBvZiAiYmFyIiAgdGhhdCAgaXMgIHByZWNlZGVkICBieSAgc29tZXRoaW5nCi0gICAgICAgb3RoZXIgIHRoYW4gImZvbyI7IGl0IGZpbmRzIGFueSBvY2N1cnJlbmNlIG9mICJiYXIiIHdoYXRzb2V2ZXIsIGJlY2F1c2UKKyAgICAgICBkb2VzICBub3QgIGZpbmQgIGFuICBvY2N1cnJlbmNlICBvZiAiYmFyIiB0aGF0IGlzIHByZWNlZGVkIGJ5IHNvbWV0aGluZworICAgICAgIG90aGVyIHRoYW4gImZvbyI7IGl0IGZpbmRzIGFueSBvY2N1cnJlbmNlIG9mICJiYXIiIHdoYXRzb2V2ZXIsICBiZWNhdXNlCiAgICAgICAgdGhlIGFzc2VydGlvbiAoPyFmb28pIGlzIGFsd2F5cyB0cnVlIHdoZW4gdGhlIG5leHQgdGhyZWUgY2hhcmFjdGVycyBhcmUKICAgICAgICAiYmFyIi4gQSBsb29rYmVoaW5kIGFzc2VydGlvbiBpcyBuZWVkZWQgdG8gYWNoaWV2ZSB0aGUgb3RoZXIgZWZmZWN0LgogCiAgICAgICAgSWYgeW91IHdhbnQgdG8gZm9yY2UgYSBtYXRjaGluZyBmYWlsdXJlIGF0IHNvbWUgcG9pbnQgaW4gYSBwYXR0ZXJuLCB0aGUKLSAgICAgICBtb3N0IGNvbnZlbmllbnQgd2F5IHRvIGRvIGl0IGlzICB3aXRoICAoPyEpICBiZWNhdXNlICBhbiAgZW1wdHkgIHN0cmluZwotICAgICAgIGFsd2F5cyAgbWF0Y2hlcywgc28gYW4gYXNzZXJ0aW9uIHRoYXQgcmVxdWlyZXMgdGhlcmUgbm90IHRvIGJlIGFuIGVtcHR5CisgICAgICAgbW9zdCAgY29udmVuaWVudCAgd2F5ICB0byAgZG8gIGl0ICBpcyB3aXRoICg/ISkgYmVjYXVzZSBhbiBlbXB0eSBzdHJpbmcKKyAgICAgICBhbHdheXMgbWF0Y2hlcywgc28gYW4gYXNzZXJ0aW9uIHRoYXQgcmVxdWlyZXMgdGhlcmUgbm90IHRvIGJlIGFuICBlbXB0eQogICAgICAgIHN0cmluZyBtdXN0IGFsd2F5cyBmYWlsLiAgVGhlIGJhY2t0cmFja2luZyBjb250cm9sIHZlcmIgKCpGQUlMKSBvciAoKkYpCiAgICAgICAgaXMgYSBzeW5vbnltIGZvciAoPyEpLgogCiAgICBMb29rYmVoaW5kIGFzc2VydGlvbnMKIAotICAgICAgIExvb2tiZWhpbmQgIGFzc2VydGlvbnMgc3RhcnQgd2l0aCAoPzw9IGZvciBwb3NpdGl2ZSBhc3NlcnRpb25zIGFuZCAoPzwhCisgICAgICAgTG9va2JlaGluZCBhc3NlcnRpb25zIHN0YXJ0IHdpdGggKD88PSBmb3IgcG9zaXRpdmUgYXNzZXJ0aW9ucyBhbmQgICg/PCEKICAgICAgICBmb3IgbmVnYXRpdmUgYXNzZXJ0aW9ucy4gRm9yIGV4YW1wbGUsCiAKICAgICAgICAgICg/PCFmb28pYmFyCiAKLSAgICAgICBkb2VzIGZpbmQgYW4gb2NjdXJyZW5jZSBvZiAiYmFyIiB0aGF0IGlzIG5vdCAgcHJlY2VkZWQgIGJ5ICAiZm9vIi4gIFRoZQotICAgICAgIGNvbnRlbnRzICBvZiAgYSAgbG9va2JlaGluZCAgYXNzZXJ0aW9uIGFyZSByZXN0cmljdGVkIHN1Y2ggdGhhdCBhbGwgdGhlCisgICAgICAgZG9lcyAgZmluZCAgYW4gIG9jY3VycmVuY2UgIG9mICJiYXIiIHRoYXQgaXMgbm90IHByZWNlZGVkIGJ5ICJmb28iLiBUaGUKKyAgICAgICBjb250ZW50cyBvZiBhIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGFyZSByZXN0cmljdGVkICBzdWNoICB0aGF0ICBhbGwgIHRoZQogICAgICAgIHN0cmluZ3MgaXQgbWF0Y2hlcyBtdXN0IGhhdmUgYSBmaXhlZCBsZW5ndGguIEhvd2V2ZXIsIGlmIHRoZXJlIGFyZSBzZXYtCi0gICAgICAgZXJhbCAgdG9wLWxldmVsICBhbHRlcm5hdGl2ZXMsICB0aGV5ICBkbyAgbm90IGFsbCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUKKyAgICAgICBlcmFsIHRvcC1sZXZlbCBhbHRlcm5hdGl2ZXMsIHRoZXkgZG8gbm90IGFsbCAgaGF2ZSAgdG8gIGhhdmUgIHRoZSAgc2FtZQogICAgICAgIGZpeGVkIGxlbmd0aC4gVGh1cwogCiAgICAgICAgICAoPzw9YnVsbG9ja3xkb25rZXkpCkBAIC02Njc0LDYyICs2Njg3LDYyIEBACiAKICAgICAgICAgICg/PCFkb2dzP3xjYXRzPykKIAotICAgICAgIGNhdXNlcyBhbiBlcnJvciBhdCBjb21waWxlIHRpbWUuIEJyYW5jaGVzIHRoYXQgbWF0Y2ggIGRpZmZlcmVudCAgbGVuZ3RoCi0gICAgICAgc3RyaW5ncyAgYXJlIHBlcm1pdHRlZCBvbmx5IGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBsb29rYmVoaW5kIGFzc2VydGlvbi4KKyAgICAgICBjYXVzZXMgIGFuICBlcnJvciBhdCBjb21waWxlIHRpbWUuIEJyYW5jaGVzIHRoYXQgbWF0Y2ggZGlmZmVyZW50IGxlbmd0aAorICAgICAgIHN0cmluZ3MgYXJlIHBlcm1pdHRlZCBvbmx5IGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBsb29rYmVoaW5kICBhc3NlcnRpb24uCiAgICAgICAgVGhpcyBpcyBhbiBleHRlbnNpb24gY29tcGFyZWQgd2l0aCBQZXJsLCB3aGljaCByZXF1aXJlcyBhbGwgYnJhbmNoZXMgdG8KICAgICAgICBtYXRjaCB0aGUgc2FtZSBsZW5ndGggb2Ygc3RyaW5nLiBBbiBhc3NlcnRpb24gc3VjaCBhcwogCiAgICAgICAgICAoPzw9YWIoY3xkZSkpCiAKLSAgICAgICBpcyAgbm90ICBwZXJtaXR0ZWQsICBiZWNhdXNlICBpdHMgc2luZ2xlIHRvcC1sZXZlbCBicmFuY2ggY2FuIG1hdGNoIHR3bworICAgICAgIGlzIG5vdCBwZXJtaXR0ZWQsIGJlY2F1c2UgaXRzIHNpbmdsZSB0b3AtbGV2ZWwgIGJyYW5jaCAgY2FuICBtYXRjaCAgdHdvCiAgICAgICAgZGlmZmVyZW50IGxlbmd0aHMsIGJ1dCBpdCBpcyBhY2NlcHRhYmxlIHRvIFBDUkUgaWYgcmV3cml0dGVuIHRvIHVzZSB0d28KICAgICAgICB0b3AtbGV2ZWwgYnJhbmNoZXM6CiAKICAgICAgICAgICg/PD1hYmN8YWJkZSkKIAotICAgICAgIEluICBzb21lICBjYXNlcywgdGhlIGVzY2FwZSBzZXF1ZW5jZSBcSyAoc2VlIGFib3ZlKSBjYW4gYmUgdXNlZCBpbnN0ZWFkCisgICAgICAgSW4gc29tZSBjYXNlcywgdGhlIGVzY2FwZSBzZXF1ZW5jZSBcSyAoc2VlIGFib3ZlKSBjYW4gYmUgIHVzZWQgIGluc3RlYWQKICAgICAgICBvZiBhIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIHRvIGdldCByb3VuZCB0aGUgZml4ZWQtbGVuZ3RoIHJlc3RyaWN0aW9uLgogCi0gICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBpcywgZm9yICBlYWNoICBhbHRlcm5hdGl2ZSwKLSAgICAgICB0byAgdGVtcG9yYXJpbHkgIG1vdmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gYmFjayBieSB0aGUgZml4ZWQgbGVuZ3RoIGFuZAorICAgICAgIFRoZSAgaW1wbGVtZW50YXRpb24gIG9mIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBpcywgZm9yIGVhY2ggYWx0ZXJuYXRpdmUsCisgICAgICAgdG8gdGVtcG9yYXJpbHkgbW92ZSB0aGUgY3VycmVudCBwb3NpdGlvbiBiYWNrIGJ5IHRoZSBmaXhlZCAgbGVuZ3RoICBhbmQKICAgICAgICB0aGVuIHRyeSB0byBtYXRjaC4gSWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgY3VyLQogICAgICAgIHJlbnQgcG9zaXRpb24sIHRoZSBhc3NlcnRpb24gZmFpbHMuCiAKLSAgICAgICBJbiAgYSBVVEYgbW9kZSwgUENSRSBkb2VzIG5vdCBhbGxvdyB0aGUgXEMgZXNjYXBlICh3aGljaCBtYXRjaGVzIGEgc2luLQotICAgICAgIGdsZSBkYXRhIHVuaXQgZXZlbiBpbiBhIFVURiBtb2RlKSB0byBhcHBlYXIgaW4gIGxvb2tiZWhpbmQgIGFzc2VydGlvbnMsCi0gICAgICAgYmVjYXVzZSAgaXQgIG1ha2VzIGl0IGltcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlIGxvb2tiZS0KLSAgICAgICBoaW5kLiBUaGUgXFggYW5kIFxSIGVzY2FwZXMsIHdoaWNoIGNhbiBtYXRjaCBkaWZmZXJlbnQgbnVtYmVycyBvZiAgZGF0YQorICAgICAgIEluIGEgVVRGIG1vZGUsIFBDUkUgZG9lcyBub3QgYWxsb3cgdGhlIFxDIGVzY2FwZSAod2hpY2ggbWF0Y2hlcyBhICBzaW4tCisgICAgICAgZ2xlICBkYXRhICB1bml0IGV2ZW4gaW4gYSBVVEYgbW9kZSkgdG8gYXBwZWFyIGluIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucywKKyAgICAgICBiZWNhdXNlIGl0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgIHRoZSAgbG9va2JlLQorICAgICAgIGhpbmQuICBUaGUgXFggYW5kIFxSIGVzY2FwZXMsIHdoaWNoIGNhbiBtYXRjaCBkaWZmZXJlbnQgbnVtYmVycyBvZiBkYXRhCiAgICAgICAgdW5pdHMsIGFyZSBhbHNvIG5vdCBwZXJtaXR0ZWQuCiAKLSAgICAgICAiU3Vicm91dGluZSIgIGNhbGxzICAoc2VlIGJlbG93KSBzdWNoIGFzICg/Mikgb3IgKD8mWCkgYXJlIHBlcm1pdHRlZCBpbgotICAgICAgIGxvb2tiZWhpbmRzLCBhcyBsb25nIGFzIHRoZSBzdWJwYXR0ZXJuIG1hdGNoZXMgYSAgZml4ZWQtbGVuZ3RoICBzdHJpbmcuCisgICAgICAgIlN1YnJvdXRpbmUiIGNhbGxzIChzZWUgYmVsb3cpIHN1Y2ggYXMgKD8yKSBvciAoPyZYKSBhcmUgIHBlcm1pdHRlZCAgaW4KKyAgICAgICBsb29rYmVoaW5kcywgIGFzICBsb25nIGFzIHRoZSBzdWJwYXR0ZXJuIG1hdGNoZXMgYSBmaXhlZC1sZW5ndGggc3RyaW5nLgogICAgICAgIFJlY3Vyc2lvbiwgaG93ZXZlciwgaXMgbm90IHN1cHBvcnRlZC4KIAotICAgICAgIFBvc3Nlc3NpdmUgIHF1YW50aWZpZXJzICBjYW4gIGJlICB1c2VkICBpbiAgY29uanVuY3Rpb24gd2l0aCBsb29rYmVoaW5kCisgICAgICAgUG9zc2Vzc2l2ZSBxdWFudGlmaWVycyBjYW4gIGJlICB1c2VkICBpbiAgY29uanVuY3Rpb24gIHdpdGggIGxvb2tiZWhpbmQKICAgICAgICBhc3NlcnRpb25zIHRvIHNwZWNpZnkgZWZmaWNpZW50IG1hdGNoaW5nIG9mIGZpeGVkLWxlbmd0aCBzdHJpbmdzIGF0IHRoZQogICAgICAgIGVuZCBvZiBzdWJqZWN0IHN0cmluZ3MuIENvbnNpZGVyIGEgc2ltcGxlIHBhdHRlcm4gc3VjaCBhcwogCiAgICAgICAgICBhYmNkJAogCi0gICAgICAgd2hlbiAgYXBwbGllZCAgdG8gIGEgIGxvbmcgc3RyaW5nIHRoYXQgZG9lcyBub3QgbWF0Y2guIEJlY2F1c2UgbWF0Y2hpbmcKKyAgICAgICB3aGVuIGFwcGxpZWQgdG8gYSBsb25nIHN0cmluZyB0aGF0IGRvZXMgIG5vdCAgbWF0Y2guICBCZWNhdXNlICBtYXRjaGluZwogICAgICAgIHByb2NlZWRzIGZyb20gbGVmdCB0byByaWdodCwgUENSRSB3aWxsIGxvb2sgZm9yIGVhY2ggImEiIGluIHRoZSBzdWJqZWN0Ci0gICAgICAgYW5kICB0aGVuICBzZWUgIGlmIHdoYXQgZm9sbG93cyBtYXRjaGVzIHRoZSByZXN0IG9mIHRoZSBwYXR0ZXJuLiBJZiB0aGUKKyAgICAgICBhbmQgdGhlbiBzZWUgaWYgd2hhdCBmb2xsb3dzIG1hdGNoZXMgdGhlIHJlc3Qgb2YgdGhlICBwYXR0ZXJuLiAgSWYgIHRoZQogICAgICAgIHBhdHRlcm4gaXMgc3BlY2lmaWVkIGFzCiAKICAgICAgICAgIF4uKmFiY2QkCiAKLSAgICAgICB0aGUgaW5pdGlhbCAuKiBtYXRjaGVzIHRoZSBlbnRpcmUgc3RyaW5nIGF0IGZpcnN0LCBidXQgd2hlbiB0aGlzICBmYWlscworICAgICAgIHRoZSAgaW5pdGlhbCAuKiBtYXRjaGVzIHRoZSBlbnRpcmUgc3RyaW5nIGF0IGZpcnN0LCBidXQgd2hlbiB0aGlzIGZhaWxzCiAgICAgICAgKGJlY2F1c2UgdGhlcmUgaXMgbm8gZm9sbG93aW5nICJhIiksIGl0IGJhY2t0cmFja3MgdG8gbWF0Y2ggYWxsIGJ1dCB0aGUKLSAgICAgICBsYXN0IGNoYXJhY3RlciwgdGhlbiBhbGwgYnV0IHRoZSBsYXN0IHR3byBjaGFyYWN0ZXJzLCBhbmQgc28gIG9uLiAgT25jZQotICAgICAgIGFnYWluICB0aGUgc2VhcmNoIGZvciAiYSIgY292ZXJzIHRoZSBlbnRpcmUgc3RyaW5nLCBmcm9tIHJpZ2h0IHRvIGxlZnQsCisgICAgICAgbGFzdCAgY2hhcmFjdGVyLCAgdGhlbiBhbGwgYnV0IHRoZSBsYXN0IHR3byBjaGFyYWN0ZXJzLCBhbmQgc28gb24uIE9uY2UKKyAgICAgICBhZ2FpbiB0aGUgc2VhcmNoIGZvciAiYSIgY292ZXJzIHRoZSBlbnRpcmUgc3RyaW5nLCBmcm9tIHJpZ2h0IHRvICBsZWZ0LAogICAgICAgIHNvIHdlIGFyZSBubyBiZXR0ZXIgb2ZmLiBIb3dldmVyLCBpZiB0aGUgcGF0dGVybiBpcyB3cml0dGVuIGFzCiAKICAgICAgICAgIF4uKisoPzw9YWJjZCkKIAotICAgICAgIHRoZXJlIGNhbiBiZSBubyBiYWNrdHJhY2tpbmcgZm9yIHRoZSAuKisgaXRlbTsgaXQgY2FuICBtYXRjaCAgb25seSAgdGhlCi0gICAgICAgZW50aXJlICBzdHJpbmcuICBUaGUgc3Vic2VxdWVudCBsb29rYmVoaW5kIGFzc2VydGlvbiBkb2VzIGEgc2luZ2xlIHRlc3QKLSAgICAgICBvbiB0aGUgbGFzdCBmb3VyIGNoYXJhY3RlcnMuIElmIGl0IGZhaWxzLCB0aGUgbWF0Y2ggZmFpbHMgIGltbWVkaWF0ZWx5LgotICAgICAgIEZvciAgbG9uZyAgc3RyaW5ncywgdGhpcyBhcHByb2FjaCBtYWtlcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgdG8gdGhlCisgICAgICAgdGhlcmUgIGNhbiAgYmUgIG5vIGJhY2t0cmFja2luZyBmb3IgdGhlIC4qKyBpdGVtOyBpdCBjYW4gbWF0Y2ggb25seSB0aGUKKyAgICAgICBlbnRpcmUgc3RyaW5nLiBUaGUgc3Vic2VxdWVudCBsb29rYmVoaW5kIGFzc2VydGlvbiBkb2VzIGEgIHNpbmdsZSAgdGVzdAorICAgICAgIG9uICB0aGUgbGFzdCBmb3VyIGNoYXJhY3RlcnMuIElmIGl0IGZhaWxzLCB0aGUgbWF0Y2ggZmFpbHMgaW1tZWRpYXRlbHkuCisgICAgICAgRm9yIGxvbmcgc3RyaW5ncywgdGhpcyBhcHByb2FjaCBtYWtlcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgIHRvICB0aGUKICAgICAgICBwcm9jZXNzaW5nIHRpbWUuCiAKICAgIFVzaW5nIG11bHRpcGxlIGFzc2VydGlvbnMKQEAgLTY3MzgsMTggKzY3NTEsMTggQEAKIAogICAgICAgICAgKD88PVxkezN9KSg/PCE5OTkpZm9vCiAKLSAgICAgICBtYXRjaGVzICJmb28iIHByZWNlZGVkIGJ5IHRocmVlIGRpZ2l0cyB0aGF0IGFyZSBub3QgIjk5OSIuIE5vdGljZSAgdGhhdAotICAgICAgIGVhY2ggIG9mICB0aGUgIGFzc2VydGlvbnMgaXMgYXBwbGllZCBpbmRlcGVuZGVudGx5IGF0IHRoZSBzYW1lIHBvaW50IGluCi0gICAgICAgdGhlIHN1YmplY3Qgc3RyaW5nLiBGaXJzdCB0aGVyZSBpcyBhICBjaGVjayAgdGhhdCAgdGhlICBwcmV2aW91cyAgdGhyZWUKLSAgICAgICBjaGFyYWN0ZXJzICBhcmUgIGFsbCAgZGlnaXRzLCAgYW5kICB0aGVuIHRoZXJlIGlzIGEgY2hlY2sgdGhhdCB0aGUgc2FtZQorICAgICAgIG1hdGNoZXMgICJmb28iIHByZWNlZGVkIGJ5IHRocmVlIGRpZ2l0cyB0aGF0IGFyZSBub3QgIjk5OSIuIE5vdGljZSB0aGF0CisgICAgICAgZWFjaCBvZiB0aGUgYXNzZXJ0aW9ucyBpcyBhcHBsaWVkIGluZGVwZW5kZW50bHkgYXQgdGhlICBzYW1lICBwb2ludCAgaW4KKyAgICAgICB0aGUgIHN1YmplY3QgIHN0cmluZy4gIEZpcnN0ICB0aGVyZSAgaXMgYSBjaGVjayB0aGF0IHRoZSBwcmV2aW91cyB0aHJlZQorICAgICAgIGNoYXJhY3RlcnMgYXJlIGFsbCBkaWdpdHMsIGFuZCB0aGVuIHRoZXJlIGlzICBhICBjaGVjayAgdGhhdCAgdGhlICBzYW1lCiAgICAgICAgdGhyZWUgY2hhcmFjdGVycyBhcmUgbm90ICI5OTkiLiAgVGhpcyBwYXR0ZXJuIGRvZXMgbm90IG1hdGNoICJmb28iIHByZS0KLSAgICAgICBjZWRlZCAgYnkgIHNpeCAgY2hhcmFjdGVycywgIHRoZSBmaXJzdCBvZiB3aGljaCBhcmUgZGlnaXRzIGFuZCB0aGUgbGFzdAotICAgICAgIHRocmVlIG9mIHdoaWNoIGFyZSBub3QgIjk5OSIuIEZvciBleGFtcGxlLCBpdCAgZG9lc24ndCAgbWF0Y2ggICIxMjNhYmMtCisgICAgICAgY2VkZWQgYnkgc2l4IGNoYXJhY3RlcnMsIHRoZSBmaXJzdCBvZiB3aGljaCBhcmUgIGRpZ2l0cyAgYW5kICB0aGUgIGxhc3QKKyAgICAgICB0aHJlZSAgb2YgIHdoaWNoICBhcmUgbm90ICI5OTkiLiBGb3IgZXhhbXBsZSwgaXQgZG9lc24ndCBtYXRjaCAiMTIzYWJjLQogICAgICAgIGZvbyIuIEEgcGF0dGVybiB0byBkbyB0aGF0IGlzCiAKICAgICAgICAgICg/PD1cZHszfS4uLikoPzwhOTk5KWZvbwogCi0gICAgICAgVGhpcyAgdGltZSAgdGhlICBmaXJzdCBhc3NlcnRpb24gbG9va3MgYXQgdGhlIHByZWNlZGluZyBzaXggY2hhcmFjdGVycywKKyAgICAgICBUaGlzIHRpbWUgdGhlIGZpcnN0IGFzc2VydGlvbiBsb29rcyBhdCB0aGUgIHByZWNlZGluZyAgc2l4ICBjaGFyYWN0ZXJzLAogICAgICAgIGNoZWNraW5nIHRoYXQgdGhlIGZpcnN0IHRocmVlIGFyZSBkaWdpdHMsIGFuZCB0aGVuIHRoZSBzZWNvbmQgYXNzZXJ0aW9uCiAgICAgICAgY2hlY2tzIHRoYXQgdGhlIHByZWNlZGluZyB0aHJlZSBjaGFyYWN0ZXJzIGFyZSBub3QgIjk5OSIuCiAKQEAgLTY3NTcsMjkgKzY3NzAsMjkgQEAKIAogICAgICAgICAgKD88PSg/PCFmb28pYmFyKWJhegogCi0gICAgICAgbWF0Y2hlcyAgYW4gb2NjdXJyZW5jZSBvZiAiYmF6IiB0aGF0IGlzIHByZWNlZGVkIGJ5ICJiYXIiIHdoaWNoIGluIHR1cm4KKyAgICAgICBtYXRjaGVzIGFuIG9jY3VycmVuY2Ugb2YgImJheiIgdGhhdCBpcyBwcmVjZWRlZCBieSAiYmFyIiB3aGljaCBpbiAgdHVybgogICAgICAgIGlzIG5vdCBwcmVjZWRlZCBieSAiZm9vIiwgd2hpbGUKIAogICAgICAgICAgKD88PVxkezN9KD8hOTk5KS4uLilmb28KIAotICAgICAgIGlzIGFub3RoZXIgcGF0dGVybiB0aGF0IG1hdGNoZXMgImZvbyIgcHJlY2VkZWQgYnkgdGhyZWUgZGlnaXRzIGFuZCAgYW55CisgICAgICAgaXMgIGFub3RoZXIgcGF0dGVybiB0aGF0IG1hdGNoZXMgImZvbyIgcHJlY2VkZWQgYnkgdGhyZWUgZGlnaXRzIGFuZCBhbnkKICAgICAgICB0aHJlZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCAiOTk5Ii4KIAogCiBDT05ESVRJT05BTCBTVUJQQVRURVJOUwogCi0gICAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIGNhdXNlIHRoZSBtYXRjaGluZyBwcm9jZXNzIHRvIG9iZXkgYSBzdWJwYXR0ZXJuIGNvbi0KLSAgICAgICBkaXRpb25hbGx5IG9yIHRvIGNob29zZSBiZXR3ZWVuIHR3byBhbHRlcm5hdGl2ZSBzdWJwYXR0ZXJucywgIGRlcGVuZGluZwotICAgICAgIG9uICB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlvbiwgb3Igd2hldGhlciBhIHNwZWNpZmljIGNhcHR1cmluZyBzdWJwYXQtCi0gICAgICAgdGVybiBoYXMgYWxyZWFkeSBiZWVuIG1hdGNoZWQuIFRoZSB0d28gcG9zc2libGUgIGZvcm1zICBvZiAgY29uZGl0aW9uYWwKKyAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBjYXVzZSB0aGUgbWF0Y2hpbmcgcHJvY2VzcyB0byBvYmV5IGEgc3VicGF0dGVybiAgY29uLQorICAgICAgIGRpdGlvbmFsbHkgIG9yIHRvIGNob29zZSBiZXR3ZWVuIHR3byBhbHRlcm5hdGl2ZSBzdWJwYXR0ZXJucywgZGVwZW5kaW5nCisgICAgICAgb24gdGhlIHJlc3VsdCBvZiBhbiBhc3NlcnRpb24sIG9yIHdoZXRoZXIgYSBzcGVjaWZpYyBjYXB0dXJpbmcgIHN1YnBhdC0KKyAgICAgICB0ZXJuICBoYXMgIGFscmVhZHkgIGJlZW4gbWF0Y2hlZC4gVGhlIHR3byBwb3NzaWJsZSBmb3JtcyBvZiBjb25kaXRpb25hbAogICAgICAgIHN1YnBhdHRlcm4gYXJlOgogCiAgICAgICAgICAoPyhjb25kaXRpb24peWVzLXBhdHRlcm4pCiAgICAgICAgICAoPyhjb25kaXRpb24peWVzLXBhdHRlcm58bm8tcGF0dGVybikKIAotICAgICAgIElmICB0aGUgIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQsIHRoZSB5ZXMtcGF0dGVybiBpcyB1c2VkOyBvdGhlcndpc2UgdGhlCi0gICAgICAgbm8tcGF0dGVybiAoaWYgcHJlc2VudCkgaXMgdXNlZC4gSWYgdGhlcmUgYXJlIG1vcmUgIHRoYW4gIHR3byAgYWx0ZXJuYS0KLSAgICAgICB0aXZlcyAgaW4gIHRoZSBzdWJwYXR0ZXJuLCBhIGNvbXBpbGUtdGltZSBlcnJvciBvY2N1cnMuIEVhY2ggb2YgdGhlIHR3bworICAgICAgIElmIHRoZSBjb25kaXRpb24gaXMgc2F0aXNmaWVkLCB0aGUgeWVzLXBhdHRlcm4gaXMgdXNlZDsgIG90aGVyd2lzZSAgdGhlCisgICAgICAgbm8tcGF0dGVybiAgKGlmICBwcmVzZW50KSAgaXMgdXNlZC4gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0d28gYWx0ZXJuYS0KKyAgICAgICB0aXZlcyBpbiB0aGUgc3VicGF0dGVybiwgYSBjb21waWxlLXRpbWUgZXJyb3Igb2NjdXJzLiBFYWNoIG9mICB0aGUgIHR3bwogICAgICAgIGFsdGVybmF0aXZlcyBtYXkgaXRzZWxmIGNvbnRhaW4gbmVzdGVkIHN1YnBhdHRlcm5zIG9mIGFueSBmb3JtLCBpbmNsdWQtCiAgICAgICAgaW5nICBjb25kaXRpb25hbCAgc3VicGF0dGVybnM7ICB0aGUgIHJlc3RyaWN0aW9uICB0byAgdHdvICBhbHRlcm5hdGl2ZXMKICAgICAgICBhcHBsaWVzIG9ubHkgYXQgdGhlIGxldmVsIG9mIHRoZSBjb25kaXRpb24uIFRoaXMgcGF0dGVybiBmcmFnbWVudCBpcyBhbgpAQCAtNjc4OCw2OCArNjgwMSw2OCBAQAogICAgICAgICAgKD8oMSkgKEF8QnxDKSB8IChEIHwgKD8oMilFfEYpIHwgRSkgKQogCiAKLSAgICAgICBUaGVyZSAgYXJlICBmb3VyICBraW5kcyBvZiBjb25kaXRpb246IHJlZmVyZW5jZXMgdG8gc3VicGF0dGVybnMsIHJlZmVyLQorICAgICAgIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIGNvbmRpdGlvbjogcmVmZXJlbmNlcyAgdG8gIHN1YnBhdHRlcm5zLCAgcmVmZXItCiAgICAgICAgZW5jZXMgdG8gcmVjdXJzaW9uLCBhIHBzZXVkby1jb25kaXRpb24gY2FsbGVkIERFRklORSwgYW5kIGFzc2VydGlvbnMuCiAKICAgIENoZWNraW5nIGZvciBhIHVzZWQgc3VicGF0dGVybiBieSBudW1iZXIKIAotICAgICAgIElmIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHBhcmVudGhlc2VzIGNvbnNpc3RzIG9mIGEgc2VxdWVuY2UgIG9mICBkaWdpdHMsCisgICAgICAgSWYgIHRoZSAgdGV4dCBiZXR3ZWVuIHRoZSBwYXJlbnRoZXNlcyBjb25zaXN0cyBvZiBhIHNlcXVlbmNlIG9mIGRpZ2l0cywKICAgICAgICB0aGUgY29uZGl0aW9uIGlzIHRydWUgaWYgYSBjYXB0dXJpbmcgc3VicGF0dGVybiBvZiB0aGF0IG51bWJlciBoYXMgcHJlLQotICAgICAgIHZpb3VzbHkgbWF0Y2hlZC4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSAgY2FwdHVyaW5nICBzdWJwYXR0ZXJuICB3aXRoCi0gICAgICAgdGhlICBzYW1lICBudW1iZXIgIChzZWUgIHRoZSBlYXJsaWVyIHNlY3Rpb24gYWJvdXQgZHVwbGljYXRlIHN1YnBhdHRlcm4KLSAgICAgICBudW1iZXJzKSwgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIGlmIGFueSBvZiB0aGVtIGhhdmUgbWF0Y2hlZC4gQW4gIGFsdGVyLQotICAgICAgIG5hdGl2ZSAgbm90YXRpb24gaXMgdG8gcHJlY2VkZSB0aGUgZGlnaXRzIHdpdGggYSBwbHVzIG9yIG1pbnVzIHNpZ24uIEluCi0gICAgICAgdGhpcyBjYXNlLCB0aGUgc3VicGF0dGVybiBudW1iZXIgaXMgcmVsYXRpdmUgcmF0aGVyIHRoYW4gYWJzb2x1dGUuICBUaGUKLSAgICAgICBtb3N0ICByZWNlbnRseSBvcGVuZWQgcGFyZW50aGVzZXMgY2FuIGJlIHJlZmVyZW5jZWQgYnkgKD8oLTEpLCB0aGUgbmV4dAotICAgICAgIG1vc3QgcmVjZW50IGJ5ICg/KC0yKSwgYW5kIHNvIG9uLiBJbnNpZGUgbG9vcHMgaXQgY2FuIGFsc28gIG1ha2UgIHNlbnNlCisgICAgICAgdmlvdXNseSAgbWF0Y2hlZC4gIElmICB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGNhcHR1cmluZyBzdWJwYXR0ZXJuIHdpdGgKKyAgICAgICB0aGUgc2FtZSBudW1iZXIgKHNlZSB0aGUgZWFybGllciAgc2VjdGlvbiAgYWJvdXQgIGR1cGxpY2F0ZSAgc3VicGF0dGVybgorICAgICAgIG51bWJlcnMpLCAgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIGlmIGFueSBvZiB0aGVtIGhhdmUgbWF0Y2hlZC4gQW4gYWx0ZXItCisgICAgICAgbmF0aXZlIG5vdGF0aW9uIGlzIHRvIHByZWNlZGUgdGhlIGRpZ2l0cyB3aXRoIGEgcGx1cyBvciBtaW51cyBzaWduLiAgSW4KKyAgICAgICB0aGlzICBjYXNlLCB0aGUgc3VicGF0dGVybiBudW1iZXIgaXMgcmVsYXRpdmUgcmF0aGVyIHRoYW4gYWJzb2x1dGUuIFRoZQorICAgICAgIG1vc3QgcmVjZW50bHkgb3BlbmVkIHBhcmVudGhlc2VzIGNhbiBiZSByZWZlcmVuY2VkIGJ5ICg/KC0xKSwgdGhlICBuZXh0CisgICAgICAgbW9zdCAgcmVjZW50ICBieSAoPygtMiksIGFuZCBzbyBvbi4gSW5zaWRlIGxvb3BzIGl0IGNhbiBhbHNvIG1ha2Ugc2Vuc2UKICAgICAgICB0byByZWZlciB0byBzdWJzZXF1ZW50IGdyb3Vwcy4gVGhlIG5leHQgcGFyZW50aGVzZXMgdG8gYmUgb3BlbmVkIGNhbiBiZQotICAgICAgIHJlZmVyZW5jZWQgYXMgKD8oKzEpLCBhbmQgc28gb24uIChUaGUgdmFsdWUgemVybyBpbiBhbnkgb2YgdGhlc2UgIGZvcm1zCisgICAgICAgcmVmZXJlbmNlZCAgYXMgKD8oKzEpLCBhbmQgc28gb24uIChUaGUgdmFsdWUgemVybyBpbiBhbnkgb2YgdGhlc2UgZm9ybXMKICAgICAgICBpcyBub3QgdXNlZDsgaXQgcHJvdm9rZXMgYSBjb21waWxlLXRpbWUgZXJyb3IuKQogCi0gICAgICAgQ29uc2lkZXIgIHRoZSAgZm9sbG93aW5nICBwYXR0ZXJuLCB3aGljaCBjb250YWlucyBub24tc2lnbmlmaWNhbnQgd2hpdGUKKyAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIHBhdHRlcm4sIHdoaWNoICBjb250YWlucyAgbm9uLXNpZ25pZmljYW50ICB3aGl0ZQogICAgICAgIHNwYWNlIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZSAoYXNzdW1lIHRoZSBQQ1JFX0VYVEVOREVEIG9wdGlvbikgYW5kIHRvCiAgICAgICAgZGl2aWRlIGl0IGludG8gdGhyZWUgcGFydHMgZm9yIGVhc2Ugb2YgZGlzY3Vzc2lvbjoKIAogICAgICAgICAgKCBcKCApPyAgICBbXigpXSsgICAgKD8oMSkgXCkgKQogCi0gICAgICAgVGhlICBmaXJzdCAgcGFydCAgbWF0Y2hlcyAgYW4gb3B0aW9uYWwgb3BlbmluZyBwYXJlbnRoZXNpcywgYW5kIGlmIHRoYXQKKyAgICAgICBUaGUgZmlyc3QgcGFydCBtYXRjaGVzIGFuIG9wdGlvbmFsIG9wZW5pbmcgIHBhcmVudGhlc2lzLCAgYW5kICBpZiAgdGhhdAogICAgICAgIGNoYXJhY3RlciBpcyBwcmVzZW50LCBzZXRzIGl0IGFzIHRoZSBmaXJzdCBjYXB0dXJlZCBzdWJzdHJpbmcuIFRoZSBzZWMtCi0gICAgICAgb25kICBwYXJ0ICBtYXRjaGVzIG9uZSBvciBtb3JlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHBhcmVudGhlc2VzLiBUaGUKLSAgICAgICB0aGlyZCBwYXJ0IGlzIGEgY29uZGl0aW9uYWwgc3VicGF0dGVybiB0aGF0IHRlc3RzIHdoZXRoZXIgIG9yICBub3QgIHRoZQotICAgICAgIGZpcnN0ICBzZXQgIG9mICBwYXJlbnRoZXNlcyAgbWF0Y2hlZC4gIElmIHRoZXkgZGlkLCB0aGF0IGlzLCBpZiBzdWJqZWN0Ci0gICAgICAgc3RhcnRlZCB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgYW5kIHNvICB0aGUKLSAgICAgICB5ZXMtcGF0dGVybiAgaXMgIGV4ZWN1dGVkIGFuZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgaXMgcmVxdWlyZWQuIE90aGVyLQotICAgICAgIHdpc2UsIHNpbmNlIG5vLXBhdHRlcm4gaXMgbm90IHByZXNlbnQsIHRoZSBzdWJwYXR0ZXJuIG1hdGNoZXMgIG5vdGhpbmcuCi0gICAgICAgSW4gIG90aGVyICB3b3JkcywgIHRoaXMgIHBhdHRlcm4gbWF0Y2hlcyBhIHNlcXVlbmNlIG9mIG5vbi1wYXJlbnRoZXNlcywKKyAgICAgICBvbmQgcGFydCBtYXRjaGVzIG9uZSBvciBtb3JlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90ICBwYXJlbnRoZXNlcy4gIFRoZQorICAgICAgIHRoaXJkICBwYXJ0ICBpcyAgYSBjb25kaXRpb25hbCBzdWJwYXR0ZXJuIHRoYXQgdGVzdHMgd2hldGhlciBvciBub3QgdGhlCisgICAgICAgZmlyc3Qgc2V0IG9mIHBhcmVudGhlc2VzIG1hdGNoZWQuIElmIHRoZXkgIGRpZCwgIHRoYXQgIGlzLCAgaWYgIHN1YmplY3QKKyAgICAgICBzdGFydGVkICB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgYW5kIHNvIHRoZQorICAgICAgIHllcy1wYXR0ZXJuIGlzIGV4ZWN1dGVkIGFuZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgaXMgIHJlcXVpcmVkLiAgT3RoZXItCisgICAgICAgd2lzZSwgIHNpbmNlIG5vLXBhdHRlcm4gaXMgbm90IHByZXNlbnQsIHRoZSBzdWJwYXR0ZXJuIG1hdGNoZXMgbm90aGluZy4KKyAgICAgICBJbiBvdGhlciB3b3JkcywgdGhpcyBwYXR0ZXJuIG1hdGNoZXMgIGEgIHNlcXVlbmNlICBvZiAgbm9uLXBhcmVudGhlc2VzLAogICAgICAgIG9wdGlvbmFsbHkgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMuCiAKLSAgICAgICBJZiB5b3Ugd2VyZSBlbWJlZGRpbmcgdGhpcyBwYXR0ZXJuIGluIGEgbGFyZ2VyIG9uZSwgIHlvdSAgY291bGQgIHVzZSAgYQorICAgICAgIElmICB5b3UgIHdlcmUgIGVtYmVkZGluZyAgdGhpcyBwYXR0ZXJuIGluIGEgbGFyZ2VyIG9uZSwgeW91IGNvdWxkIHVzZSBhCiAgICAgICAgcmVsYXRpdmUgcmVmZXJlbmNlOgogCiAgICAgICAgICAuLi5vdGhlciBzdHVmZi4uLiAoIFwoICk/ICAgIFteKCldKyAgICAoPygtMSkgXCkgKSAuLi4KIAotICAgICAgIFRoaXMgIG1ha2VzICB0aGUgIGZyYWdtZW50IGluZGVwZW5kZW50IG9mIHRoZSBwYXJlbnRoZXNlcyBpbiB0aGUgbGFyZ2VyCisgICAgICAgVGhpcyBtYWtlcyB0aGUgZnJhZ21lbnQgaW5kZXBlbmRlbnQgb2YgdGhlIHBhcmVudGhlc2VzICBpbiAgdGhlICBsYXJnZXIKICAgICAgICBwYXR0ZXJuLgogCiAgICBDaGVja2luZyBmb3IgYSB1c2VkIHN1YnBhdHRlcm4gYnkgbmFtZQogCi0gICAgICAgUGVybCB1c2VzIHRoZSBzeW50YXggKD8oPG5hbWU+KS4uLikgb3IgKD8oJ25hbWUnKS4uLikgIHRvICB0ZXN0ICBmb3IgIGEKLSAgICAgICB1c2VkICBzdWJwYXR0ZXJuICBieSAgbmFtZS4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZgotICAgICAgIFBDUkUsIHdoaWNoIGhhZCB0aGlzIGZhY2lsaXR5IGJlZm9yZSBQZXJsLCB0aGUgc3ludGF4ICAoPyhuYW1lKS4uLikgIGlzCisgICAgICAgUGVybCAgdXNlcyAgdGhlICBzeW50YXggICg/KDxuYW1lPikuLi4pIG9yICg/KCduYW1lJykuLi4pIHRvIHRlc3QgZm9yIGEKKyAgICAgICB1c2VkIHN1YnBhdHRlcm4gYnkgbmFtZS4gRm9yIGNvbXBhdGliaWxpdHkgIHdpdGggIGVhcmxpZXIgIHZlcnNpb25zICBvZgorICAgICAgIFBDUkUsICB3aGljaCAgaGFkIHRoaXMgZmFjaWxpdHkgYmVmb3JlIFBlcmwsIHRoZSBzeW50YXggKD8obmFtZSkuLi4pIGlzCiAgICAgICAgYWxzbyByZWNvZ25pemVkLgogCiAgICAgICAgUmV3cml0aW5nIHRoZSBhYm92ZSBleGFtcGxlIHRvIHVzZSBhIG5hbWVkIHN1YnBhdHRlcm4gZ2l2ZXMgdGhpczoKIAogICAgICAgICAgKD88T1BFTj4gXCggKT8gICAgW14oKV0rICAgICg/KDxPUEVOPikgXCkgKQogCi0gICAgICAgSWYgIHRoZSAgbmFtZSB1c2VkIGluIGEgY29uZGl0aW9uIG9mIHRoaXMga2luZCBpcyBhIGR1cGxpY2F0ZSwgdGhlIHRlc3QKLSAgICAgICBpcyBhcHBsaWVkIHRvIGFsbCBzdWJwYXR0ZXJucyBvZiB0aGUgc2FtZSBuYW1lLCBhbmQgaXMgdHJ1ZSBpZiBhbnkgIG9uZQorICAgICAgIElmIHRoZSBuYW1lIHVzZWQgaW4gYSBjb25kaXRpb24gb2YgdGhpcyBraW5kIGlzIGEgZHVwbGljYXRlLCAgdGhlICB0ZXN0CisgICAgICAgaXMgIGFwcGxpZWQgdG8gYWxsIHN1YnBhdHRlcm5zIG9mIHRoZSBzYW1lIG5hbWUsIGFuZCBpcyB0cnVlIGlmIGFueSBvbmUKICAgICAgICBvZiB0aGVtIGhhcyBtYXRjaGVkLgogCiAgICBDaGVja2luZyBmb3IgcGF0dGVybiByZWN1cnNpb24KIAogICAgICAgIElmIHRoZSBjb25kaXRpb24gaXMgdGhlIHN0cmluZyAoUiksIGFuZCB0aGVyZSBpcyBubyBzdWJwYXR0ZXJuIHdpdGggdGhlCi0gICAgICAgbmFtZSBSLCB0aGUgY29uZGl0aW9uIGlzIHRydWUgaWYgYSByZWN1cnNpdmUgY2FsbCB0byB0aGUgd2hvbGUgIHBhdHRlcm4KKyAgICAgICBuYW1lICBSLCB0aGUgY29uZGl0aW9uIGlzIHRydWUgaWYgYSByZWN1cnNpdmUgY2FsbCB0byB0aGUgd2hvbGUgcGF0dGVybgogICAgICAgIG9yIGFueSBzdWJwYXR0ZXJuIGhhcyBiZWVuIG1hZGUuIElmIGRpZ2l0cyBvciBhIG5hbWUgcHJlY2VkZWQgYnkgYW1wZXItCiAgICAgICAgc2FuZCBmb2xsb3cgdGhlIGxldHRlciBSLCBmb3IgZXhhbXBsZToKIApAQCAtNjg1Nyw1MSArNjg3MCw1MSBAQAogCiAgICAgICAgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIGlmIHRoZSBtb3N0IHJlY2VudCByZWN1cnNpb24gaXMgaW50byBhIHN1YnBhdHRlcm4KICAgICAgICB3aG9zZSBudW1iZXIgb3IgbmFtZSBpcyBnaXZlbi4gVGhpcyBjb25kaXRpb24gZG9lcyBub3QgY2hlY2sgdGhlIGVudGlyZQotICAgICAgIHJlY3Vyc2lvbiBzdGFjay4gSWYgdGhlIG5hbWUgdXNlZCBpbiBhIGNvbmRpdGlvbiAgb2YgIHRoaXMgIGtpbmQgIGlzICBhCisgICAgICAgcmVjdXJzaW9uICBzdGFjay4gIElmICB0aGUgIG5hbWUgIHVzZWQgaW4gYSBjb25kaXRpb24gb2YgdGhpcyBraW5kIGlzIGEKICAgICAgICBkdXBsaWNhdGUsIHRoZSB0ZXN0IGlzIGFwcGxpZWQgdG8gYWxsIHN1YnBhdHRlcm5zIG9mIHRoZSBzYW1lIG5hbWUsIGFuZAogICAgICAgIGlzIHRydWUgaWYgYW55IG9uZSBvZiB0aGVtIGlzIHRoZSBtb3N0IHJlY2VudCByZWN1cnNpb24uCiAKLSAgICAgICBBdCAidG9wIGxldmVsIiwgYWxsIHRoZXNlIHJlY3Vyc2lvbiB0ZXN0ICBjb25kaXRpb25zICBhcmUgIGZhbHNlLiAgIFRoZQorICAgICAgIEF0ICAidG9wICBsZXZlbCIsICBhbGwgIHRoZXNlIHJlY3Vyc2lvbiB0ZXN0IGNvbmRpdGlvbnMgYXJlIGZhbHNlLiAgVGhlCiAgICAgICAgc3ludGF4IGZvciByZWN1cnNpdmUgcGF0dGVybnMgaXMgZGVzY3JpYmVkIGJlbG93LgogCiAgICBEZWZpbmluZyBzdWJwYXR0ZXJucyBmb3IgdXNlIGJ5IHJlZmVyZW5jZSBvbmx5CiAKLSAgICAgICBJZiAgdGhlICBjb25kaXRpb24gIGlzICB0aGUgc3RyaW5nIChERUZJTkUpLCBhbmQgdGhlcmUgaXMgbm8gc3VicGF0dGVybgotICAgICAgIHdpdGggdGhlIG5hbWUgREVGSU5FLCB0aGUgY29uZGl0aW9uIGlzICBhbHdheXMgIGZhbHNlLiAgSW4gIHRoaXMgIGNhc2UsCi0gICAgICAgdGhlcmUgIG1heSAgYmUgIG9ubHkgIG9uZSAgYWx0ZXJuYXRpdmUgIGluIHRoZSBzdWJwYXR0ZXJuLiBJdCBpcyBhbHdheXMKLSAgICAgICBza2lwcGVkIGlmIGNvbnRyb2wgcmVhY2hlcyB0aGlzIHBvaW50ICBpbiAgdGhlICBwYXR0ZXJuOyAgdGhlICBpZGVhICBvZgotICAgICAgIERFRklORSAgaXMgdGhhdCBpdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgc3Vicm91dGluZXMgdGhhdCBjYW4gYmUgcmVmZXItCi0gICAgICAgZW5jZWQgZnJvbSBlbHNld2hlcmUuIChUaGUgdXNlIG9mIHN1YnJvdXRpbmVzIGlzIGRlc2NyaWJlZCBiZWxvdy4pICBGb3IKLSAgICAgICBleGFtcGxlLCAgYSAgcGF0dGVybiAgdG8gbWF0Y2ggYW4gSVB2NCBhZGRyZXNzIHN1Y2ggYXMgIjE5Mi4xNjguMjMuMjQ1IgorICAgICAgIElmIHRoZSBjb25kaXRpb24gaXMgdGhlIHN0cmluZyAoREVGSU5FKSwgYW5kICB0aGVyZSAgaXMgIG5vICBzdWJwYXR0ZXJuCisgICAgICAgd2l0aCAgdGhlICBuYW1lICBERUZJTkUsICB0aGUgIGNvbmRpdGlvbiBpcyBhbHdheXMgZmFsc2UuIEluIHRoaXMgY2FzZSwKKyAgICAgICB0aGVyZSBtYXkgYmUgb25seSBvbmUgYWx0ZXJuYXRpdmUgIGluICB0aGUgIHN1YnBhdHRlcm4uICBJdCAgaXMgIGFsd2F5cworICAgICAgIHNraXBwZWQgIGlmICBjb250cm9sICByZWFjaGVzICB0aGlzICBwb2ludCAgaW4gdGhlIHBhdHRlcm47IHRoZSBpZGVhIG9mCisgICAgICAgREVGSU5FIGlzIHRoYXQgaXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHN1YnJvdXRpbmVzIHRoYXQgY2FuIGJlICByZWZlci0KKyAgICAgICBlbmNlZCAgZnJvbSBlbHNld2hlcmUuIChUaGUgdXNlIG9mIHN1YnJvdXRpbmVzIGlzIGRlc2NyaWJlZCBiZWxvdy4pIEZvcgorICAgICAgIGV4YW1wbGUsIGEgcGF0dGVybiB0byBtYXRjaCBhbiBJUHY0IGFkZHJlc3MgIHN1Y2ggIGFzICAiMTkyLjE2OC4yMy4yNDUiCiAgICAgICAgY291bGQgYmUgd3JpdHRlbiBsaWtlIHRoaXMgKGlnbm9yZSB3aGl0ZSBzcGFjZSBhbmQgbGluZSBicmVha3MpOgogCiAgICAgICAgICAoPyhERUZJTkUpICg/PGJ5dGU+IDJbMC00XVxkIHwgMjVbMC01XSB8IDFcZFxkIHwgWzEtOV0/XGQpICkKICAgICAgICAgIFxiICg/JmJ5dGUpIChcLig/JmJ5dGUpKXszfSBcYgogCi0gICAgICAgVGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhdHRlcm4gaXMgYSBERUZJTkUgZ3JvdXAgaW5zaWRlIHdoaWNoIGEgIGFub3RoZXIKLSAgICAgICBncm91cCAgbmFtZWQgImJ5dGUiIGlzIGRlZmluZWQuIFRoaXMgbWF0Y2hlcyBhbiBpbmRpdmlkdWFsIGNvbXBvbmVudCBvZgotICAgICAgIGFuIElQdjQgYWRkcmVzcyAoYSBudW1iZXIgbGVzcyB0aGFuIDI1NikuIFdoZW4gIG1hdGNoaW5nICB0YWtlcyAgcGxhY2UsCi0gICAgICAgdGhpcyAgcGFydCAgb2YgIHRoZSBwYXR0ZXJuIGlzIHNraXBwZWQgYmVjYXVzZSBERUZJTkUgYWN0cyBsaWtlIGEgZmFsc2UKLSAgICAgICBjb25kaXRpb24uIFRoZSByZXN0IG9mIHRoZSBwYXR0ZXJuIHVzZXMgcmVmZXJlbmNlcyB0byB0aGUgIG5hbWVkICBncm91cAotICAgICAgIHRvICBtYXRjaCB0aGUgZm91ciBkb3Qtc2VwYXJhdGVkIGNvbXBvbmVudHMgb2YgYW4gSVB2NCBhZGRyZXNzLCBpbnNpc3QtCisgICAgICAgVGhlICBmaXJzdCBwYXJ0IG9mIHRoZSBwYXR0ZXJuIGlzIGEgREVGSU5FIGdyb3VwIGluc2lkZSB3aGljaCBhIGFub3RoZXIKKyAgICAgICBncm91cCBuYW1lZCAiYnl0ZSIgaXMgZGVmaW5lZC4gVGhpcyBtYXRjaGVzIGFuIGluZGl2aWR1YWwgY29tcG9uZW50ICBvZgorICAgICAgIGFuICBJUHY0ICBhZGRyZXNzICAoYSBudW1iZXIgbGVzcyB0aGFuIDI1NikuIFdoZW4gbWF0Y2hpbmcgdGFrZXMgcGxhY2UsCisgICAgICAgdGhpcyBwYXJ0IG9mIHRoZSBwYXR0ZXJuIGlzIHNraXBwZWQgYmVjYXVzZSBERUZJTkUgYWN0cyAgbGlrZSAgYSAgZmFsc2UKKyAgICAgICBjb25kaXRpb24uICBUaGUgIHJlc3Qgb2YgdGhlIHBhdHRlcm4gdXNlcyByZWZlcmVuY2VzIHRvIHRoZSBuYW1lZCBncm91cAorICAgICAgIHRvIG1hdGNoIHRoZSBmb3VyIGRvdC1zZXBhcmF0ZWQgY29tcG9uZW50cyBvZiBhbiBJUHY0IGFkZHJlc3MsICBpbnNpc3QtCiAgICAgICAgaW5nIG9uIGEgd29yZCBib3VuZGFyeSBhdCBlYWNoIGVuZC4KIAogICAgQXNzZXJ0aW9uIGNvbmRpdGlvbnMKIAotICAgICAgIElmIHRoZSBjb25kaXRpb24gaXMgbm90IGluIGFueSBvZiB0aGUgYWJvdmUgIGZvcm1hdHMsICBpdCAgbXVzdCAgYmUgIGFuCi0gICAgICAgYXNzZXJ0aW9uLiAgIFRoaXMgbWF5IGJlIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbG9va2FoZWFkIG9yIGxvb2tiZWhpbmQKLSAgICAgICBhc3NlcnRpb24uIENvbnNpZGVyICB0aGlzICBwYXR0ZXJuLCAgYWdhaW4gIGNvbnRhaW5pbmcgIG5vbi1zaWduaWZpY2FudAorICAgICAgIElmICB0aGUgIGNvbmRpdGlvbiAgaXMgIG5vdCAgaW4gYW55IG9mIHRoZSBhYm92ZSBmb3JtYXRzLCBpdCBtdXN0IGJlIGFuCisgICAgICAgYXNzZXJ0aW9uLiAgVGhpcyBtYXkgYmUgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBsb29rYWhlYWQgb3IgIGxvb2tiZWhpbmQKKyAgICAgICBhc3NlcnRpb24uICBDb25zaWRlciAgdGhpcyAgcGF0dGVybiwgIGFnYWluICBjb250YWluaW5nIG5vbi1zaWduaWZpY2FudAogICAgICAgIHdoaXRlIHNwYWNlLCBhbmQgd2l0aCB0aGUgdHdvIGFsdGVybmF0aXZlcyBvbiB0aGUgc2Vjb25kIGxpbmU6CiAKICAgICAgICAgICg/KD89W15hLXpdKlthLXpdKQogICAgICAgICAgXGR7Mn0tW2Etel17M30tXGR7Mn0gIHwgIFxkezJ9LVxkezJ9LVxkezJ9ICkKIAotICAgICAgIFRoZSAgY29uZGl0aW9uICBpcyAgYSAgcG9zaXRpdmUgIGxvb2thaGVhZCAgYXNzZXJ0aW9uICB0aGF0ICBtYXRjaGVzIGFuCi0gICAgICAgb3B0aW9uYWwgc2VxdWVuY2Ugb2Ygbm9uLWxldHRlcnMgZm9sbG93ZWQgYnkgYSBsZXR0ZXIuIEluIG90aGVyICB3b3JkcywKLSAgICAgICBpdCAgdGVzdHMgIGZvciB0aGUgcHJlc2VuY2Ugb2YgYXQgbGVhc3Qgb25lIGxldHRlciBpbiB0aGUgc3ViamVjdC4gSWYgYQotICAgICAgIGxldHRlciBpcyBmb3VuZCwgdGhlIHN1YmplY3QgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaXJzdCAgYWx0ZXJuYXRpdmU7Ci0gICAgICAgb3RoZXJ3aXNlICBpdCAgaXMgIG1hdGNoZWQgIGFnYWluc3QgIHRoZSAgc2Vjb25kLiAgVGhpcyBwYXR0ZXJuIG1hdGNoZXMKLSAgICAgICBzdHJpbmdzIGluIG9uZSBvZiB0aGUgdHdvIGZvcm1zIGRkLWFhYS1kZCBvciBkZC1kZC1kZCwgIHdoZXJlICBhYWEgIGFyZQorICAgICAgIFRoZSBjb25kaXRpb24gIGlzICBhICBwb3NpdGl2ZSAgbG9va2FoZWFkICBhc3NlcnRpb24gIHRoYXQgIG1hdGNoZXMgIGFuCisgICAgICAgb3B0aW9uYWwgIHNlcXVlbmNlIG9mIG5vbi1sZXR0ZXJzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyLiBJbiBvdGhlciB3b3JkcywKKyAgICAgICBpdCB0ZXN0cyBmb3IgdGhlIHByZXNlbmNlIG9mIGF0IGxlYXN0IG9uZSBsZXR0ZXIgaW4gdGhlIHN1YmplY3QuICBJZiAgYQorICAgICAgIGxldHRlciAgaXMgZm91bmQsIHRoZSBzdWJqZWN0IGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgZmlyc3QgYWx0ZXJuYXRpdmU7CisgICAgICAgb3RoZXJ3aXNlIGl0IGlzICBtYXRjaGVkICBhZ2FpbnN0ICB0aGUgIHNlY29uZC4gIFRoaXMgIHBhdHRlcm4gIG1hdGNoZXMKKyAgICAgICBzdHJpbmdzICBpbiAgb25lICBvZiB0aGUgdHdvIGZvcm1zIGRkLWFhYS1kZCBvciBkZC1kZC1kZCwgd2hlcmUgYWFhIGFyZQogICAgICAgIGxldHRlcnMgYW5kIGRkIGFyZSBkaWdpdHMuCiAKIApAQCAtNjkxMCw0MSArNjkyMyw0MSBAQAogICAgICAgIFRoZXJlIGFyZSB0d28gd2F5cyBvZiBpbmNsdWRpbmcgY29tbWVudHMgaW4gcGF0dGVybnMgdGhhdCBhcmUgcHJvY2Vzc2VkCiAgICAgICAgYnkgUENSRS4gSW4gYm90aCBjYXNlcywgdGhlIHN0YXJ0IG9mIHRoZSBjb21tZW50IG11c3Qgbm90IGJlIGluIGEgY2hhci0KICAgICAgICBhY3RlciBjbGFzcywgbm9yIGluIHRoZSBtaWRkbGUgb2YgYW55IG90aGVyIHNlcXVlbmNlIG9mIHJlbGF0ZWQgY2hhcmFjLQotICAgICAgIHRlcnMgc3VjaCBhcyAoPzogb3IgYSBzdWJwYXR0ZXJuIG5hbWUgb3IgbnVtYmVyLiAgVGhlICBjaGFyYWN0ZXJzICB0aGF0CisgICAgICAgdGVycyAgc3VjaCAgYXMgICg/OiBvciBhIHN1YnBhdHRlcm4gbmFtZSBvciBudW1iZXIuIFRoZSBjaGFyYWN0ZXJzIHRoYXQKICAgICAgICBtYWtlIHVwIGEgY29tbWVudCBwbGF5IG5vIHBhcnQgaW4gdGhlIHBhdHRlcm4gbWF0Y2hpbmcuCiAKLSAgICAgICBUaGUgIHNlcXVlbmNlICg/IyBtYXJrcyB0aGUgc3RhcnQgb2YgYSBjb21tZW50IHRoYXQgY29udGludWVzIHVwIHRvIHRoZQotICAgICAgIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpcy4gTmVzdGVkIHBhcmVudGhlc2VzIGFyZSBub3QgcGVybWl0dGVkLiBJZiAgdGhlCisgICAgICAgVGhlIHNlcXVlbmNlICg/IyBtYXJrcyB0aGUgc3RhcnQgb2YgYSBjb21tZW50IHRoYXQgY29udGludWVzIHVwIHRvICB0aGUKKyAgICAgICBuZXh0ICBjbG9zaW5nIHBhcmVudGhlc2lzLiBOZXN0ZWQgcGFyZW50aGVzZXMgYXJlIG5vdCBwZXJtaXR0ZWQuIElmIHRoZQogICAgICAgIFBDUkVfRVhURU5ERUQgb3B0aW9uIGlzIHNldCwgYW4gdW5lc2NhcGVkICMgY2hhcmFjdGVyIGFsc28gaW50cm9kdWNlcyBhCi0gICAgICAgY29tbWVudCwgd2hpY2ggaW4gdGhpcyBjYXNlIGNvbnRpbnVlcyB0byAgaW1tZWRpYXRlbHkgIGFmdGVyICB0aGUgIG5leHQKLSAgICAgICBuZXdsaW5lICBjaGFyYWN0ZXIgIG9yIGNoYXJhY3RlciBzZXF1ZW5jZSBpbiB0aGUgcGF0dGVybi4gV2hpY2ggY2hhcmFjLQorICAgICAgIGNvbW1lbnQsICB3aGljaCAgaW4gIHRoaXMgIGNhc2UgY29udGludWVzIHRvIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBuZXh0CisgICAgICAgbmV3bGluZSBjaGFyYWN0ZXIgb3IgY2hhcmFjdGVyIHNlcXVlbmNlIGluIHRoZSBwYXR0ZXJuLiAgV2hpY2ggIGNoYXJhYy0KICAgICAgICB0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBuZXdsaW5lcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBvcHRpb25zIHBhc3NlZCB0bwotICAgICAgIGEgIGNvbXBpbGluZyBmdW5jdGlvbiBvciBieSBhIHNwZWNpYWwgc2VxdWVuY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXQtCisgICAgICAgYSBjb21waWxpbmcgZnVuY3Rpb24gb3IgYnkgYSBzcGVjaWFsIHNlcXVlbmNlIGF0IHRoZSBzdGFydCBvZiB0aGUgIHBhdC0KICAgICAgICB0ZXJuLCBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgIk5ld2xpbmUgY29udmVudGlvbnMiIGFib3ZlLgogICAgICAgIE5vdGUgdGhhdCB0aGUgZW5kIG9mIHRoaXMgdHlwZSBvZiBjb21tZW50IGlzIGEgbGl0ZXJhbCBuZXdsaW5lIHNlcXVlbmNlCi0gICAgICAgaW4gdGhlIHBhdHRlcm47IGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBoYXBwZW4gdG8gcmVwcmVzZW50IGEgbmV3bGluZSAgZG8KLSAgICAgICBub3QgIGNvdW50LiAgRm9yICBleGFtcGxlLCAgY29uc2lkZXIgdGhpcyBwYXR0ZXJuIHdoZW4gUENSRV9FWFRFTkRFRCBpcworICAgICAgIGluICB0aGUgcGF0dGVybjsgZXNjYXBlIHNlcXVlbmNlcyB0aGF0IGhhcHBlbiB0byByZXByZXNlbnQgYSBuZXdsaW5lIGRvCisgICAgICAgbm90IGNvdW50LiBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhpcyAgcGF0dGVybiAgd2hlbiAgUENSRV9FWFRFTkRFRCAgaXMKICAgICAgICBzZXQsIGFuZCB0aGUgZGVmYXVsdCBuZXdsaW5lIGNvbnZlbnRpb24gaXMgaW4gZm9yY2U6CiAKICAgICAgICAgIGFiYyAjY29tbWVudCBcbiBzdGlsbCBjb21tZW50CiAKLSAgICAgICBPbiBlbmNvdW50ZXJpbmcgdGhlICMgY2hhcmFjdGVyLCBwY3JlX2NvbXBpbGUoKSAgc2tpcHMgIGFsb25nLCAgbG9va2luZwotICAgICAgIGZvciAgYSBuZXdsaW5lIGluIHRoZSBwYXR0ZXJuLiBUaGUgc2VxdWVuY2UgXG4gaXMgc3RpbGwgbGl0ZXJhbCBhdCB0aGlzCi0gICAgICAgc3RhZ2UsIHNvIGl0IGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY29tbWVudC4gT25seSBhbiAgYWN0dWFsICBjaGFyYWN0ZXIKKyAgICAgICBPbiAgZW5jb3VudGVyaW5nICB0aGUgICMgY2hhcmFjdGVyLCBwY3JlX2NvbXBpbGUoKSBza2lwcyBhbG9uZywgbG9va2luZworICAgICAgIGZvciBhIG5ld2xpbmUgaW4gdGhlIHBhdHRlcm4uIFRoZSBzZXF1ZW5jZSBcbiBpcyBzdGlsbCBsaXRlcmFsIGF0ICB0aGlzCisgICAgICAgc3RhZ2UsICBzbyAgaXQgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjb21tZW50LiBPbmx5IGFuIGFjdHVhbCBjaGFyYWN0ZXIKICAgICAgICB3aXRoIHRoZSBjb2RlIHZhbHVlIDB4MGEgKHRoZSBkZWZhdWx0IG5ld2xpbmUpIGRvZXMgc28uCiAKIAogUkVDVVJTSVZFIFBBVFRFUk5TCiAKLSAgICAgICBDb25zaWRlciAgdGhlIHByb2JsZW0gb2YgbWF0Y2hpbmcgYSBzdHJpbmcgaW4gcGFyZW50aGVzZXMsIGFsbG93aW5nIGZvcgotICAgICAgIHVubGltaXRlZCBuZXN0ZWQgcGFyZW50aGVzZXMuIFdpdGhvdXQgdGhlIHVzZSBvZiAgcmVjdXJzaW9uLCAgdGhlICBiZXN0Ci0gICAgICAgdGhhdCAgY2FuICBiZSAgZG9uZSAgaXMgIHRvIHVzZSBhIHBhdHRlcm4gdGhhdCBtYXRjaGVzIHVwIHRvIHNvbWUgZml4ZWQKLSAgICAgICBkZXB0aCBvZiBuZXN0aW5nLiBJdCBpcyBub3QgcG9zc2libGUgdG8gIGhhbmRsZSAgYW4gIGFyYml0cmFyeSAgbmVzdGluZworICAgICAgIENvbnNpZGVyIHRoZSBwcm9ibGVtIG9mIG1hdGNoaW5nIGEgc3RyaW5nIGluIHBhcmVudGhlc2VzLCBhbGxvd2luZyAgZm9yCisgICAgICAgdW5saW1pdGVkICBuZXN0ZWQgIHBhcmVudGhlc2VzLiAgV2l0aG91dCB0aGUgdXNlIG9mIHJlY3Vyc2lvbiwgdGhlIGJlc3QKKyAgICAgICB0aGF0IGNhbiBiZSBkb25lIGlzIHRvIHVzZSBhIHBhdHRlcm4gdGhhdCAgbWF0Y2hlcyAgdXAgIHRvICBzb21lICBmaXhlZAorICAgICAgIGRlcHRoICBvZiAgbmVzdGluZy4gIEl0ICBpcyBub3QgcG9zc2libGUgdG8gaGFuZGxlIGFuIGFyYml0cmFyeSBuZXN0aW5nCiAgICAgICAgZGVwdGguCiAKICAgICAgICBGb3Igc29tZSB0aW1lLCBQZXJsIGhhcyBwcm92aWRlZCBhIGZhY2lsaXR5IHRoYXQgYWxsb3dzIHJlZ3VsYXIgZXhwcmVzLQotICAgICAgIHNpb25zIHRvIHJlY3Vyc2UgKGFtb25nc3Qgb3RoZXIgdGhpbmdzKS4gSXQgZG9lcyB0aGlzIGJ5ICBpbnRlcnBvbGF0aW5nCi0gICAgICAgUGVybCAgY29kZSBpbiB0aGUgZXhwcmVzc2lvbiBhdCBydW4gdGltZSwgYW5kIHRoZSBjb2RlIGNhbiByZWZlciB0byB0aGUKKyAgICAgICBzaW9ucyAgdG8gcmVjdXJzZSAoYW1vbmdzdCBvdGhlciB0aGluZ3MpLiBJdCBkb2VzIHRoaXMgYnkgaW50ZXJwb2xhdGluZworICAgICAgIFBlcmwgY29kZSBpbiB0aGUgZXhwcmVzc2lvbiBhdCBydW4gdGltZSwgYW5kIHRoZSBjb2RlIGNhbiByZWZlciB0byAgdGhlCiAgICAgICAgZXhwcmVzc2lvbiBpdHNlbGYuIEEgUGVybCBwYXR0ZXJuIHVzaW5nIGNvZGUgaW50ZXJwb2xhdGlvbiB0byBzb2x2ZSB0aGUKICAgICAgICBwYXJlbnRoZXNlcyBwcm9ibGVtIGNhbiBiZSBjcmVhdGVkIGxpa2UgdGhpczoKIApAQCAtNjk1NCwyMDEgKzY5NjcsMjAxIEBACiAgICAgICAgcmVmZXJzIHJlY3Vyc2l2ZWx5IHRvIHRoZSBwYXR0ZXJuIGluIHdoaWNoIGl0IGFwcGVhcnMuCiAKICAgICAgICBPYnZpb3VzbHksIFBDUkUgY2Fubm90IHN1cHBvcnQgdGhlIGludGVycG9sYXRpb24gb2YgUGVybCBjb2RlLiBJbnN0ZWFkLAotICAgICAgIGl0ICBzdXBwb3J0cyAgc3BlY2lhbCAgc3ludGF4ICBmb3IgcmVjdXJzaW9uIG9mIHRoZSBlbnRpcmUgcGF0dGVybiwgYW5kCi0gICAgICAgYWxzbyBmb3IgaW5kaXZpZHVhbCBzdWJwYXR0ZXJuIHJlY3Vyc2lvbi4gIEFmdGVyICBpdHMgIGludHJvZHVjdGlvbiAgaW4KLSAgICAgICBQQ1JFICBhbmQgIFB5dGhvbiwgIHRoaXMgIGtpbmQgb2YgcmVjdXJzaW9uIHdhcyBzdWJzZXF1ZW50bHkgaW50cm9kdWNlZAorICAgICAgIGl0IHN1cHBvcnRzIHNwZWNpYWwgc3ludGF4IGZvciByZWN1cnNpb24gb2YgIHRoZSAgZW50aXJlICBwYXR0ZXJuLCAgYW5kCisgICAgICAgYWxzbyAgZm9yICBpbmRpdmlkdWFsICBzdWJwYXR0ZXJuICByZWN1cnNpb24uIEFmdGVyIGl0cyBpbnRyb2R1Y3Rpb24gaW4KKyAgICAgICBQQ1JFIGFuZCBQeXRob24sIHRoaXMga2luZCBvZiAgcmVjdXJzaW9uICB3YXMgIHN1YnNlcXVlbnRseSAgaW50cm9kdWNlZAogICAgICAgIGludG8gUGVybCBhdCByZWxlYXNlIDUuMTAuCiAKLSAgICAgICBBIHNwZWNpYWwgaXRlbSB0aGF0IGNvbnNpc3RzIG9mICg/IGZvbGxvd2VkIGJ5IGEgIG51bWJlciAgZ3JlYXRlciAgdGhhbgotICAgICAgIHplcm8gIGFuZCAgYSAgY2xvc2luZyBwYXJlbnRoZXNpcyBpcyBhIHJlY3Vyc2l2ZSBzdWJyb3V0aW5lIGNhbGwgb2YgdGhlCi0gICAgICAgc3VicGF0dGVybiBvZiB0aGUgZ2l2ZW4gbnVtYmVyLCBwcm92aWRlZCB0aGF0ICBpdCAgb2NjdXJzICBpbnNpZGUgIHRoYXQKLSAgICAgICBzdWJwYXR0ZXJuLiAgKElmICBub3QsICBpdCBpcyBhIG5vbi1yZWN1cnNpdmUgc3Vicm91dGluZSBjYWxsLCB3aGljaCBpcwotICAgICAgIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLikgVGhlIHNwZWNpYWwgaXRlbSAgKD9SKSAgb3IgICg/MCkgIGlzICBhCisgICAgICAgQSAgc3BlY2lhbCAgaXRlbSAgdGhhdCBjb25zaXN0cyBvZiAoPyBmb2xsb3dlZCBieSBhIG51bWJlciBncmVhdGVyIHRoYW4KKyAgICAgICB6ZXJvIGFuZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgaXMgYSByZWN1cnNpdmUgc3Vicm91dGluZSAgY2FsbCAgb2YgIHRoZQorICAgICAgIHN1YnBhdHRlcm4gIG9mICB0aGUgIGdpdmVuICBudW1iZXIsIHByb3ZpZGVkIHRoYXQgaXQgb2NjdXJzIGluc2lkZSB0aGF0CisgICAgICAgc3VicGF0dGVybi4gKElmIG5vdCwgaXQgaXMgYSBub24tcmVjdXJzaXZlIHN1YnJvdXRpbmUgIGNhbGwsICB3aGljaCAgaXMKKyAgICAgICBkZXNjcmliZWQgIGluICB0aGUgIG5leHQgIHNlY3Rpb24uKSAgVGhlIHNwZWNpYWwgaXRlbSAoP1IpIG9yICg/MCkgaXMgYQogICAgICAgIHJlY3Vyc2l2ZSBjYWxsIG9mIHRoZSBlbnRpcmUgcmVndWxhciBleHByZXNzaW9uLgogCi0gICAgICAgVGhpcyAgUENSRSAgcGF0dGVybiAgc29sdmVzICB0aGUgbmVzdGVkIHBhcmVudGhlc2VzIHByb2JsZW0gKGFzc3VtZSB0aGUKKyAgICAgICBUaGlzIFBDUkUgcGF0dGVybiBzb2x2ZXMgdGhlIG5lc3RlZCAgcGFyZW50aGVzZXMgIHByb2JsZW0gIChhc3N1bWUgIHRoZQogICAgICAgIFBDUkVfRVhURU5ERUQgb3B0aW9uIGlzIHNldCBzbyB0aGF0IHdoaXRlIHNwYWNlIGlzIGlnbm9yZWQpOgogCiAgICAgICAgICBcKCAoIFteKCldKysgfCAoP1IpICkqIFwpCiAKLSAgICAgICBGaXJzdCBpdCBtYXRjaGVzIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMuIFRoZW4gaXQgbWF0Y2hlcyBhbnkgbnVtYmVyICBvZgotICAgICAgIHN1YnN0cmluZ3MgIHdoaWNoICBjYW4gIGVpdGhlciAgYmUgIGEgc2VxdWVuY2Ugb2Ygbm9uLXBhcmVudGhlc2VzLCBvciBhCi0gICAgICAgcmVjdXJzaXZlIG1hdGNoIG9mIHRoZSBwYXR0ZXJuIGl0c2VsZiAodGhhdCBpcywgYSAgY29ycmVjdGx5ICBwYXJlbnRoZS0KKyAgICAgICBGaXJzdCAgaXQgbWF0Y2hlcyBhbiBvcGVuaW5nIHBhcmVudGhlc2lzLiBUaGVuIGl0IG1hdGNoZXMgYW55IG51bWJlciBvZgorICAgICAgIHN1YnN0cmluZ3Mgd2hpY2ggY2FuIGVpdGhlciBiZSBhICBzZXF1ZW5jZSAgb2YgIG5vbi1wYXJlbnRoZXNlcywgIG9yICBhCisgICAgICAgcmVjdXJzaXZlICBtYXRjaCAgb2YgdGhlIHBhdHRlcm4gaXRzZWxmICh0aGF0IGlzLCBhIGNvcnJlY3RseSBwYXJlbnRoZS0KICAgICAgICBzaXplZCBzdWJzdHJpbmcpLiAgRmluYWxseSB0aGVyZSBpcyBhIGNsb3NpbmcgcGFyZW50aGVzaXMuIE5vdGUgdGhlIHVzZQogICAgICAgIG9mIGEgcG9zc2Vzc2l2ZSBxdWFudGlmaWVyIHRvIGF2b2lkIGJhY2t0cmFja2luZyBpbnRvIHNlcXVlbmNlcyBvZiBub24tCiAgICAgICAgcGFyZW50aGVzZXMuCiAKLSAgICAgICBJZiAgdGhpcyAgd2VyZSAgcGFydCBvZiBhIGxhcmdlciBwYXR0ZXJuLCB5b3Ugd291bGQgbm90IHdhbnQgdG8gcmVjdXJzZQorICAgICAgIElmIHRoaXMgd2VyZSBwYXJ0IG9mIGEgbGFyZ2VyIHBhdHRlcm4sIHlvdSB3b3VsZCBub3QgIHdhbnQgIHRvICByZWN1cnNlCiAgICAgICAgdGhlIGVudGlyZSBwYXR0ZXJuLCBzbyBpbnN0ZWFkIHlvdSBjb3VsZCB1c2UgdGhpczoKIAogICAgICAgICAgKCBcKCAoIFteKCldKysgfCAoPzEpICkqIFwpICkKIAotICAgICAgIFdlIGhhdmUgcHV0IHRoZSBwYXR0ZXJuIGludG8gcGFyZW50aGVzZXMsIGFuZCBjYXVzZWQgdGhlICByZWN1cnNpb24gIHRvCisgICAgICAgV2UgIGhhdmUgIHB1dCB0aGUgcGF0dGVybiBpbnRvIHBhcmVudGhlc2VzLCBhbmQgY2F1c2VkIHRoZSByZWN1cnNpb24gdG8KICAgICAgICByZWZlciB0byB0aGVtIGluc3RlYWQgb2YgdGhlIHdob2xlIHBhdHRlcm4uCiAKLSAgICAgICBJbiAgYSAgbGFyZ2VyICBwYXR0ZXJuLCAga2VlcGluZyAgdHJhY2sgIG9mICBwYXJlbnRoZXNpcyBudW1iZXJzIGNhbiBiZQotICAgICAgIHRyaWNreS4gVGhpcyBpcyBtYWRlIGVhc2llciBieSB0aGUgdXNlIG9mIHJlbGF0aXZlIHJlZmVyZW5jZXMuICBJbnN0ZWFkCisgICAgICAgSW4gYSBsYXJnZXIgcGF0dGVybiwgIGtlZXBpbmcgIHRyYWNrICBvZiAgcGFyZW50aGVzaXMgIG51bWJlcnMgIGNhbiAgYmUKKyAgICAgICB0cmlja3kuICBUaGlzIGlzIG1hZGUgZWFzaWVyIGJ5IHRoZSB1c2Ugb2YgcmVsYXRpdmUgcmVmZXJlbmNlcy4gSW5zdGVhZAogICAgICAgIG9mICg/MSkgaW4gdGhlIHBhdHRlcm4gYWJvdmUgeW91IGNhbiB3cml0ZSAoPy0yKSB0byByZWZlciB0byB0aGUgc2Vjb25kCi0gICAgICAgbW9zdCByZWNlbnRseSBvcGVuZWQgcGFyZW50aGVzZXMgIHByZWNlZGluZyAgdGhlICByZWN1cnNpb24uICBJbiAgb3RoZXIKLSAgICAgICB3b3JkcywgIGEgIG5lZ2F0aXZlICBudW1iZXIgY291bnRzIGNhcHR1cmluZyBwYXJlbnRoZXNlcyBsZWZ0d2FyZHMgZnJvbQorICAgICAgIG1vc3QgIHJlY2VudGx5ICBvcGVuZWQgIHBhcmVudGhlc2VzICBwcmVjZWRpbmcgIHRoZSByZWN1cnNpb24uIEluIG90aGVyCisgICAgICAgd29yZHMsIGEgbmVnYXRpdmUgbnVtYmVyIGNvdW50cyBjYXB0dXJpbmcgIHBhcmVudGhlc2VzICBsZWZ0d2FyZHMgIGZyb20KICAgICAgICB0aGUgcG9pbnQgYXQgd2hpY2ggaXQgaXMgZW5jb3VudGVyZWQuCiAKLSAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHJlZmVyIHRvICBzdWJzZXF1ZW50bHkgIG9wZW5lZCAgcGFyZW50aGVzZXMsICBieQotICAgICAgIHdyaXRpbmcgIHJlZmVyZW5jZXMgIHN1Y2ggIGFzICg/KzIpLiBIb3dldmVyLCB0aGVzZSBjYW5ub3QgYmUgcmVjdXJzaXZlCi0gICAgICAgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIGlzIG5vdCBpbnNpZGUgdGhlICBwYXJlbnRoZXNlcyAgdGhhdCAgYXJlICByZWZlci0KLSAgICAgICBlbmNlZC4gIFRoZXkgYXJlIGFsd2F5cyBub24tcmVjdXJzaXZlIHN1YnJvdXRpbmUgY2FsbHMsIGFzIGRlc2NyaWJlZCBpbgorICAgICAgIEl0ICBpcyAgYWxzbyAgcG9zc2libGUgIHRvIHJlZmVyIHRvIHN1YnNlcXVlbnRseSBvcGVuZWQgcGFyZW50aGVzZXMsIGJ5CisgICAgICAgd3JpdGluZyByZWZlcmVuY2VzIHN1Y2ggYXMgKD8rMikuIEhvd2V2ZXIsIHRoZXNlICBjYW5ub3QgIGJlICByZWN1cnNpdmUKKyAgICAgICBiZWNhdXNlICB0aGUgIHJlZmVyZW5jZSAgaXMgIG5vdCBpbnNpZGUgdGhlIHBhcmVudGhlc2VzIHRoYXQgYXJlIHJlZmVyLQorICAgICAgIGVuY2VkLiBUaGV5IGFyZSBhbHdheXMgbm9uLXJlY3Vyc2l2ZSBzdWJyb3V0aW5lIGNhbGxzLCBhcyBkZXNjcmliZWQgIGluCiAgICAgICAgdGhlIG5leHQgc2VjdGlvbi4KIAotICAgICAgIEFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlzIHRvIHVzZSBuYW1lZCBwYXJlbnRoZXNlcyBpbnN0ZWFkLiAgVGhlICBQZXJsCi0gICAgICAgc3ludGF4ICBmb3IgIHRoaXMgIGlzICg/Jm5hbWUpOyBQQ1JFJ3MgZWFybGllciBzeW50YXggKD9QPm5hbWUpIGlzIGFsc28KKyAgICAgICBBbiAgYWx0ZXJuYXRpdmUgIGFwcHJvYWNoIGlzIHRvIHVzZSBuYW1lZCBwYXJlbnRoZXNlcyBpbnN0ZWFkLiBUaGUgUGVybAorICAgICAgIHN5bnRheCBmb3IgdGhpcyBpcyAoPyZuYW1lKTsgUENSRSdzIGVhcmxpZXIgc3ludGF4ICAoP1A+bmFtZSkgIGlzICBhbHNvCiAgICAgICAgc3VwcG9ydGVkLiBXZSBjb3VsZCByZXdyaXRlIHRoZSBhYm92ZSBleGFtcGxlIGFzIGZvbGxvd3M6CiAKICAgICAgICAgICg/PHBuPiBcKCAoIFteKCldKysgfCAoPyZwbikgKSogXCkgKQogCi0gICAgICAgSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBzdWJwYXR0ZXJuIHdpdGggdGhlIHNhbWUgbmFtZSwgIHRoZSAgZWFybGllc3QKKyAgICAgICBJZiAgdGhlcmUgIGlzIG1vcmUgdGhhbiBvbmUgc3VicGF0dGVybiB3aXRoIHRoZSBzYW1lIG5hbWUsIHRoZSBlYXJsaWVzdAogICAgICAgIG9uZSBpcyB1c2VkLgogCi0gICAgICAgVGhpcyAgcGFydGljdWxhciAgZXhhbXBsZSBwYXR0ZXJuIHRoYXQgd2UgaGF2ZSBiZWVuIGxvb2tpbmcgYXQgY29udGFpbnMKKyAgICAgICBUaGlzIHBhcnRpY3VsYXIgZXhhbXBsZSBwYXR0ZXJuIHRoYXQgd2UgaGF2ZSBiZWVuIGxvb2tpbmcgIGF0ICBjb250YWlucwogICAgICAgIG5lc3RlZCB1bmxpbWl0ZWQgcmVwZWF0cywgYW5kIHNvIHRoZSB1c2Ugb2YgYSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgZm9yCiAgICAgICAgbWF0Y2hpbmcgc3RyaW5ncyBvZiBub24tcGFyZW50aGVzZXMgaXMgaW1wb3J0YW50IHdoZW4gYXBwbHlpbmcgdGhlIHBhdC0KLSAgICAgICB0ZXJuIHRvIHN0cmluZ3MgdGhhdCBkbyBub3QgbWF0Y2guIEZvciBleGFtcGxlLCB3aGVuICB0aGlzICBwYXR0ZXJuICBpcworICAgICAgIHRlcm4gIHRvICBzdHJpbmdzICB0aGF0IGRvIG5vdCBtYXRjaC4gRm9yIGV4YW1wbGUsIHdoZW4gdGhpcyBwYXR0ZXJuIGlzCiAgICAgICAgYXBwbGllZCB0bwogCiAgICAgICAgICAoYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEoKQogCi0gICAgICAgaXQgIHlpZWxkcyAgIm5vICBtYXRjaCIgcXVpY2tseS4gSG93ZXZlciwgaWYgYSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgaXMKLSAgICAgICBub3QgdXNlZCwgdGhlIG1hdGNoIHJ1bnMgZm9yIGEgdmVyeSBsb25nIHRpbWUgaW5kZWVkIGJlY2F1c2UgdGhlcmUgIGFyZQotICAgICAgIHNvICBtYW55ICBkaWZmZXJlbnQgIHdheXMgdGhlICsgYW5kICogcmVwZWF0cyBjYW4gY2FydmUgdXAgdGhlIHN1YmplY3QsCisgICAgICAgaXQgeWllbGRzICJubyBtYXRjaCIgcXVpY2tseS4gSG93ZXZlciwgaWYgYSAgcG9zc2Vzc2l2ZSAgcXVhbnRpZmllciAgaXMKKyAgICAgICBub3QgIHVzZWQsIHRoZSBtYXRjaCBydW5zIGZvciBhIHZlcnkgbG9uZyB0aW1lIGluZGVlZCBiZWNhdXNlIHRoZXJlIGFyZQorICAgICAgIHNvIG1hbnkgZGlmZmVyZW50IHdheXMgdGhlICsgYW5kICogcmVwZWF0cyBjYW4gY2FydmUgIHVwICB0aGUgIHN1YmplY3QsCiAgICAgICAgYW5kIGFsbCBoYXZlIHRvIGJlIHRlc3RlZCBiZWZvcmUgZmFpbHVyZSBjYW4gYmUgcmVwb3J0ZWQuCiAKLSAgICAgICBBdCB0aGUgZW5kIG9mIGEgbWF0Y2gsIHRoZSB2YWx1ZXMgb2YgY2FwdHVyaW5nICBwYXJlbnRoZXNlcyAgYXJlICB0aG9zZQotICAgICAgIGZyb20gIHRoZSBvdXRlcm1vc3QgbGV2ZWwuIElmIHlvdSB3YW50IHRvIG9idGFpbiBpbnRlcm1lZGlhdGUgdmFsdWVzLCBhCi0gICAgICAgY2FsbG91dCBmdW5jdGlvbiBjYW4gYmUgdXNlZCAoc2VlIGJlbG93IGFuZCB0aGUgcGNyZWNhbGxvdXQgIGRvY3VtZW50YS0KKyAgICAgICBBdCAgdGhlICBlbmQgIG9mIGEgbWF0Y2gsIHRoZSB2YWx1ZXMgb2YgY2FwdHVyaW5nIHBhcmVudGhlc2VzIGFyZSB0aG9zZQorICAgICAgIGZyb20gdGhlIG91dGVybW9zdCBsZXZlbC4gSWYgeW91IHdhbnQgdG8gb2J0YWluIGludGVybWVkaWF0ZSB2YWx1ZXMsICBhCisgICAgICAgY2FsbG91dCAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgKHNlZSBiZWxvdyBhbmQgdGhlIHBjcmVjYWxsb3V0IGRvY3VtZW50YS0KICAgICAgICB0aW9uKS4gSWYgdGhlIHBhdHRlcm4gYWJvdmUgaXMgbWF0Y2hlZCBhZ2FpbnN0CiAKICAgICAgICAgIChhYihjZCllZikKIAotICAgICAgIHRoZSAgdmFsdWUgIGZvciAgdGhlICBpbm5lciBjYXB0dXJpbmcgcGFyZW50aGVzZXMgKG51bWJlcmVkIDIpIGlzICJlZiIsCi0gICAgICAgd2hpY2ggaXMgdGhlIGxhc3QgdmFsdWUgdGFrZW4gb24gYXQgdGhlIHRvcCBsZXZlbC4gSWYgYSBjYXB0dXJpbmcgIHN1Yi0KLSAgICAgICBwYXR0ZXJuICBpcyAgbm90ICBtYXRjaGVkIGF0IHRoZSB0b3AgbGV2ZWwsIGl0cyBmaW5hbCBjYXB0dXJlZCB2YWx1ZSBpcwotICAgICAgIHVuc2V0LCBldmVuIGlmIGl0IHdhcyAodGVtcG9yYXJpbHkpIHNldCBhdCBhIGRlZXBlciAgbGV2ZWwgIGR1cmluZyAgdGhlCisgICAgICAgdGhlIHZhbHVlIGZvciB0aGUgaW5uZXIgY2FwdHVyaW5nIHBhcmVudGhlc2VzICAobnVtYmVyZWQgIDIpICBpcyAgImVmIiwKKyAgICAgICB3aGljaCAgaXMgdGhlIGxhc3QgdmFsdWUgdGFrZW4gb24gYXQgdGhlIHRvcCBsZXZlbC4gSWYgYSBjYXB0dXJpbmcgc3ViLQorICAgICAgIHBhdHRlcm4gaXMgbm90IG1hdGNoZWQgYXQgdGhlIHRvcCBsZXZlbCwgaXRzIGZpbmFsICBjYXB0dXJlZCAgdmFsdWUgIGlzCisgICAgICAgdW5zZXQsICBldmVuICBpZiAgaXQgd2FzICh0ZW1wb3JhcmlseSkgc2V0IGF0IGEgZGVlcGVyIGxldmVsIGR1cmluZyB0aGUKICAgICAgICBtYXRjaGluZyBwcm9jZXNzLgogCi0gICAgICAgSWYgIHRoZXJlIGFyZSBtb3JlIHRoYW4gMTUgY2FwdHVyaW5nIHBhcmVudGhlc2VzIGluIGEgcGF0dGVybiwgUENSRSBoYXMKLSAgICAgICB0byBvYnRhaW4gZXh0cmEgbWVtb3J5IHRvIHN0b3JlIGRhdGEgZHVyaW5nIGEgcmVjdXJzaW9uLCB3aGljaCBpdCAgZG9lcworICAgICAgIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gMTUgY2FwdHVyaW5nIHBhcmVudGhlc2VzIGluIGEgcGF0dGVybiwgUENSRSAgaGFzCisgICAgICAgdG8gIG9idGFpbiBleHRyYSBtZW1vcnkgdG8gc3RvcmUgZGF0YSBkdXJpbmcgYSByZWN1cnNpb24sIHdoaWNoIGl0IGRvZXMKICAgICAgICBieSB1c2luZyBwY3JlX21hbGxvYywgZnJlZWluZyBpdCB2aWEgcGNyZV9mcmVlIGFmdGVyd2FyZHMuIElmIG5vIG1lbW9yeQogICAgICAgIGNhbiBiZSBvYnRhaW5lZCwgdGhlIG1hdGNoIGZhaWxzIHdpdGggdGhlIFBDUkVfRVJST1JfTk9NRU1PUlkgZXJyb3IuCiAKLSAgICAgICBEbyBub3QgY29uZnVzZSB0aGUgKD9SKSBpdGVtIHdpdGggdGhlIGNvbmRpdGlvbiAoUiksICB3aGljaCAgdGVzdHMgIGZvcgotICAgICAgIHJlY3Vyc2lvbi4gICBDb25zaWRlciAgdGhpcyBwYXR0ZXJuLCB3aGljaCBtYXRjaGVzIHRleHQgaW4gYW5nbGUgYnJhY2stCi0gICAgICAgZXRzLCBhbGxvd2luZyBmb3IgYXJiaXRyYXJ5IG5lc3RpbmcuIE9ubHkgZGlnaXRzIGFyZSBhbGxvd2VkIGluICBuZXN0ZWQKLSAgICAgICBicmFja2V0cyAgKHRoYXQgaXMsIHdoZW4gcmVjdXJzaW5nKSwgd2hlcmVhcyBhbnkgY2hhcmFjdGVycyBhcmUgcGVybWl0LQorICAgICAgIERvICBub3QgIGNvbmZ1c2UgIHRoZSAoP1IpIGl0ZW0gd2l0aCB0aGUgY29uZGl0aW9uIChSKSwgd2hpY2ggdGVzdHMgZm9yCisgICAgICAgcmVjdXJzaW9uLiAgQ29uc2lkZXIgdGhpcyBwYXR0ZXJuLCB3aGljaCBtYXRjaGVzIHRleHQgaW4gIGFuZ2xlICBicmFjay0KKyAgICAgICBldHMsICBhbGxvd2luZyBmb3IgYXJiaXRyYXJ5IG5lc3RpbmcuIE9ubHkgZGlnaXRzIGFyZSBhbGxvd2VkIGluIG5lc3RlZAorICAgICAgIGJyYWNrZXRzICh0aGF0IGlzLCB3aGVuIHJlY3Vyc2luZyksIHdoZXJlYXMgYW55IGNoYXJhY3RlcnMgYXJlICBwZXJtaXQtCiAgICAgICAgdGVkIGF0IHRoZSBvdXRlciBsZXZlbC4KIAogICAgICAgICAgPCAoPzogKD8oUikgXGQrKyAgfCBbXjw+XSorKSB8ICg/UikpICogPgogCi0gICAgICAgSW4gdGhpcyBwYXR0ZXJuLCAoPyhSKSBpcyB0aGUgc3RhcnQgb2YgYSBjb25kaXRpb25hbCAgc3VicGF0dGVybiwgIHdpdGgKLSAgICAgICB0d28gIGRpZmZlcmVudCAgYWx0ZXJuYXRpdmVzIGZvciB0aGUgcmVjdXJzaXZlIGFuZCBub24tcmVjdXJzaXZlIGNhc2VzLgorICAgICAgIEluICB0aGlzICBwYXR0ZXJuLCAoPyhSKSBpcyB0aGUgc3RhcnQgb2YgYSBjb25kaXRpb25hbCBzdWJwYXR0ZXJuLCB3aXRoCisgICAgICAgdHdvIGRpZmZlcmVudCBhbHRlcm5hdGl2ZXMgZm9yIHRoZSByZWN1cnNpdmUgYW5kICBub24tcmVjdXJzaXZlICBjYXNlcy4KICAgICAgICBUaGUgKD9SKSBpdGVtIGlzIHRoZSBhY3R1YWwgcmVjdXJzaXZlIGNhbGwuCiAKICAgIERpZmZlcmVuY2VzIGluIHJlY3Vyc2lvbiBwcm9jZXNzaW5nIGJldHdlZW4gUENSRSBhbmQgUGVybAogCi0gICAgICAgUmVjdXJzaW9uIHByb2Nlc3NpbmcgaW4gUENSRSBkaWZmZXJzIGZyb20gUGVybCBpbiB0d28gIGltcG9ydGFudCAgd2F5cy4KLSAgICAgICBJbiAgUENSRSAobGlrZSBQeXRob24sIGJ1dCB1bmxpa2UgUGVybCksIGEgcmVjdXJzaXZlIHN1YnBhdHRlcm4gY2FsbCBpcworICAgICAgIFJlY3Vyc2lvbiAgcHJvY2Vzc2luZyAgaW4gUENSRSBkaWZmZXJzIGZyb20gUGVybCBpbiB0d28gaW1wb3J0YW50IHdheXMuCisgICAgICAgSW4gUENSRSAobGlrZSBQeXRob24sIGJ1dCB1bmxpa2UgUGVybCksIGEgcmVjdXJzaXZlIHN1YnBhdHRlcm4gY2FsbCAgaXMKICAgICAgICBhbHdheXMgdHJlYXRlZCBhcyBhbiBhdG9taWMgZ3JvdXAuIFRoYXQgaXMsIG9uY2UgaXQgaGFzIG1hdGNoZWQgc29tZSBvZgogICAgICAgIHRoZSBzdWJqZWN0IHN0cmluZywgaXQgaXMgbmV2ZXIgcmUtZW50ZXJlZCwgZXZlbiBpZiBpdCBjb250YWlucyB1bnRyaWVkCi0gICAgICAgYWx0ZXJuYXRpdmVzIGFuZCB0aGVyZSBpcyBhIHN1YnNlcXVlbnQgbWF0Y2hpbmcgZmFpbHVyZS4gIFRoaXMgIGNhbiAgYmUKLSAgICAgICBpbGx1c3RyYXRlZCAgYnkgdGhlIGZvbGxvd2luZyBwYXR0ZXJuLCB3aGljaCBwdXJwb3J0cyB0byBtYXRjaCBhIHBhbGluLQotICAgICAgIGRyb21pYyBzdHJpbmcgdGhhdCBjb250YWlucyBhbiBvZGQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgIChmb3IgIGV4YW1wbGUsCisgICAgICAgYWx0ZXJuYXRpdmVzICBhbmQgIHRoZXJlICBpcyBhIHN1YnNlcXVlbnQgbWF0Y2hpbmcgZmFpbHVyZS4gVGhpcyBjYW4gYmUKKyAgICAgICBpbGx1c3RyYXRlZCBieSB0aGUgZm9sbG93aW5nIHBhdHRlcm4sIHdoaWNoIHB1cnBvcnRzIHRvIG1hdGNoIGEgIHBhbGluLQorICAgICAgIGRyb21pYyAgc3RyaW5nICB0aGF0IGNvbnRhaW5zIGFuIG9kZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsCiAgICAgICAgImEiLCAiYWJhIiwgImFiY2JhIiwgImFiY2RjYmEiKToKIAogICAgICAgICAgXigufCguKSg/MSlcMikkCiAKICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGl0IGVpdGhlciBtYXRjaGVzIGEgc2luZ2xlIGNoYXJhY3Rlciwgb3IgdHdvIGlkZW50aWNhbAotICAgICAgIGNoYXJhY3RlcnMgc3Vycm91bmRpbmcgYSBzdWItcGFsaW5kcm9tZS4gSW4gUGVybCwgdGhpcyAgcGF0dGVybiAgd29ya3M7Ci0gICAgICAgaW4gIFBDUkUgIGl0ICBkb2VzICBub3QgaWYgdGhlIHBhdHRlcm4gaXMgbG9uZ2VyIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4KKyAgICAgICBjaGFyYWN0ZXJzICBzdXJyb3VuZGluZyAgYSBzdWItcGFsaW5kcm9tZS4gSW4gUGVybCwgdGhpcyBwYXR0ZXJuIHdvcmtzOworICAgICAgIGluIFBDUkUgaXQgZG9lcyBub3QgaWYgdGhlIHBhdHRlcm4gaXMgIGxvbmdlciAgdGhhbiAgdGhyZWUgIGNoYXJhY3RlcnMuCiAgICAgICAgQ29uc2lkZXIgdGhlIHN1YmplY3Qgc3RyaW5nICJhYmNiYSI6CiAKLSAgICAgICBBdCB0aGUgdG9wIGxldmVsLCB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG1hdGNoZWQsIGJ1dCBhcyBpdCBpcyAgbm90ICBhdAorICAgICAgIEF0ICB0aGUgIHRvcCBsZXZlbCwgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBtYXRjaGVkLCBidXQgYXMgaXQgaXMgbm90IGF0CiAgICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgZmFpbHM7IHRoZSBzZWNvbmQgYWx0ZXJuYS0KICAgICAgICB0aXZlIGlzIHRha2VuIGFuZCB0aGUgcmVjdXJzaW9uIGtpY2tzIGluLiBUaGUgcmVjdXJzaXZlIGNhbGwgdG8gc3VicGF0LQotICAgICAgIHRlcm4gIDEgIHN1Y2Nlc3NmdWxseSAgbWF0Y2hlcyB0aGUgbmV4dCBjaGFyYWN0ZXIgKCJiIikuIChOb3RlIHRoYXQgdGhlCisgICAgICAgdGVybiAxIHN1Y2Nlc3NmdWxseSBtYXRjaGVzIHRoZSBuZXh0IGNoYXJhY3RlciAoImIiKS4gIChOb3RlICB0aGF0ICB0aGUKICAgICAgICBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsaW5lIHRlc3RzIGFyZSBub3QgcGFydCBvZiB0aGUgcmVjdXJzaW9uKS4KIAotICAgICAgIEJhY2sgYXQgdGhlIHRvcCBsZXZlbCwgdGhlIG5leHQgY2hhcmFjdGVyICgiYyIpIGlzIGNvbXBhcmVkICB3aXRoICB3aGF0Ci0gICAgICAgc3VicGF0dGVybiAgMiBtYXRjaGVkLCB3aGljaCB3YXMgImEiLiBUaGlzIGZhaWxzLiBCZWNhdXNlIHRoZSByZWN1cnNpb24KLSAgICAgICBpcyB0cmVhdGVkIGFzIGFuIGF0b21pYyBncm91cCwgdGhlcmUgYXJlIG5vdyAgbm8gIGJhY2t0cmFja2luZyAgcG9pbnRzLAotICAgICAgIGFuZCAgc28gIHRoZSAgZW50aXJlICBtYXRjaCBmYWlscy4gKFBlcmwgaXMgYWJsZSwgYXQgdGhpcyBwb2ludCwgdG8gcmUtCi0gICAgICAgZW50ZXIgdGhlIHJlY3Vyc2lvbiBhbmQgdHJ5IHRoZSBzZWNvbmQgYWx0ZXJuYXRpdmUuKSAgSG93ZXZlciwgIGlmICB0aGUKKyAgICAgICBCYWNrICBhdCAgdGhlIHRvcCBsZXZlbCwgdGhlIG5leHQgY2hhcmFjdGVyICgiYyIpIGlzIGNvbXBhcmVkIHdpdGggd2hhdAorICAgICAgIHN1YnBhdHRlcm4gMiBtYXRjaGVkLCB3aGljaCB3YXMgImEiLiBUaGlzIGZhaWxzLiBCZWNhdXNlIHRoZSAgcmVjdXJzaW9uCisgICAgICAgaXMgIHRyZWF0ZWQgIGFzICBhbiBhdG9taWMgZ3JvdXAsIHRoZXJlIGFyZSBub3cgbm8gYmFja3RyYWNraW5nIHBvaW50cywKKyAgICAgICBhbmQgc28gdGhlIGVudGlyZSBtYXRjaCBmYWlscy4gKFBlcmwgaXMgYWJsZSwgYXQgIHRoaXMgIHBvaW50LCAgdG8gIHJlLQorICAgICAgIGVudGVyICB0aGUgIHJlY3Vyc2lvbiAgYW5kIHRyeSB0aGUgc2Vjb25kIGFsdGVybmF0aXZlLikgSG93ZXZlciwgaWYgdGhlCiAgICAgICAgcGF0dGVybiBpcyB3cml0dGVuIHdpdGggdGhlIGFsdGVybmF0aXZlcyBpbiB0aGUgb3RoZXIgb3JkZXIsIHRoaW5ncyBhcmUKICAgICAgICBkaWZmZXJlbnQ6CiAKICAgICAgICAgIF4oKC4pKD8xKVwyfC4pJAogCi0gICAgICAgVGhpcyB0aW1lLCB0aGUgcmVjdXJzaW5nIGFsdGVybmF0aXZlIGlzIHRyaWVkIGZpcnN0LCBhbmQgIGNvbnRpbnVlcyAgdG8KLSAgICAgICByZWN1cnNlICB1bnRpbCAgaXQgcnVucyBvdXQgb2YgY2hhcmFjdGVycywgYXQgd2hpY2ggcG9pbnQgdGhlIHJlY3Vyc2lvbgotICAgICAgIGZhaWxzLiBCdXQgdGhpcyB0aW1lIHdlIGRvIGhhdmUgIGFub3RoZXIgIGFsdGVybmF0aXZlICB0byAgdHJ5ICBhdCAgdGhlCi0gICAgICAgaGlnaGVyICBsZXZlbC4gIFRoYXQgIGlzICB0aGUgIGJpZyBkaWZmZXJlbmNlOiBpbiB0aGUgcHJldmlvdXMgY2FzZSB0aGUKKyAgICAgICBUaGlzICB0aW1lLCAgdGhlIHJlY3Vyc2luZyBhbHRlcm5hdGl2ZSBpcyB0cmllZCBmaXJzdCwgYW5kIGNvbnRpbnVlcyB0bworICAgICAgIHJlY3Vyc2UgdW50aWwgaXQgcnVucyBvdXQgb2YgY2hhcmFjdGVycywgYXQgd2hpY2ggcG9pbnQgIHRoZSAgcmVjdXJzaW9uCisgICAgICAgZmFpbHMuICBCdXQgIHRoaXMgIHRpbWUgIHdlICBkbyAgaGF2ZSBhbm90aGVyIGFsdGVybmF0aXZlIHRvIHRyeSBhdCB0aGUKKyAgICAgICBoaWdoZXIgbGV2ZWwuIFRoYXQgaXMgdGhlIGJpZyBkaWZmZXJlbmNlOiAgaW4gIHRoZSAgcHJldmlvdXMgIGNhc2UgIHRoZQogICAgICAgIHJlbWFpbmluZyBhbHRlcm5hdGl2ZSBpcyBhdCBhIGRlZXBlciByZWN1cnNpb24gbGV2ZWwsIHdoaWNoIFBDUkUgY2Fubm90CiAgICAgICAgdXNlLgogCi0gICAgICAgVG8gIGNoYW5nZSAgdGhlIHBhdHRlcm4gc28gdGhhdCBpdCBtYXRjaGVzIGFsbCBwYWxpbmRyb21pYyBzdHJpbmdzLCBub3QKLSAgICAgICBqdXN0IHRob3NlIHdpdGggYW4gb2RkIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBpdCBpcyB0ZW1wdGluZyAgdG8gIGNoYW5nZQorICAgICAgIFRvIGNoYW5nZSB0aGUgcGF0dGVybiBzbyB0aGF0IGl0IG1hdGNoZXMgYWxsIHBhbGluZHJvbWljICBzdHJpbmdzLCAgbm90CisgICAgICAganVzdCAgdGhvc2UgIHdpdGggYW4gb2RkIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBpdCBpcyB0ZW1wdGluZyB0byBjaGFuZ2UKICAgICAgICB0aGUgcGF0dGVybiB0byB0aGlzOgogCiAgICAgICAgICBeKCguKSg/MSlcMnwuPykkCiAKLSAgICAgICBBZ2FpbiwgIHRoaXMgIHdvcmtzICBpbiBQZXJsLCBidXQgbm90IGluIFBDUkUsIGFuZCBmb3IgdGhlIHNhbWUgcmVhc29uLgotICAgICAgIFdoZW4gYSBkZWVwZXIgcmVjdXJzaW9uIGhhcyBtYXRjaGVkIGEgc2luZ2xlIGNoYXJhY3RlciwgIGl0ICBjYW5ub3QgIGJlCi0gICAgICAgZW50ZXJlZCAgYWdhaW4gIGluICBvcmRlciAgdG8gbWF0Y2ggYW4gZW1wdHkgc3RyaW5nLiBUaGUgc29sdXRpb24gaXMgdG8KLSAgICAgICBzZXBhcmF0ZSB0aGUgdHdvIGNhc2VzLCBhbmQgd3JpdGUgb3V0IHRoZSBvZGQgYW5kIGV2ZW4gY2FzZXMgYXMgIGFsdGVyLQorICAgICAgIEFnYWluLCB0aGlzIHdvcmtzIGluIFBlcmwsIGJ1dCBub3QgaW4gUENSRSwgYW5kIGZvciAgdGhlICBzYW1lICByZWFzb24uCisgICAgICAgV2hlbiAgYSAgZGVlcGVyICByZWN1cnNpb24gaGFzIG1hdGNoZWQgYSBzaW5nbGUgY2hhcmFjdGVyLCBpdCBjYW5ub3QgYmUKKyAgICAgICBlbnRlcmVkIGFnYWluIGluIG9yZGVyIHRvIG1hdGNoIGFuIGVtcHR5IHN0cmluZy4gIFRoZSAgc29sdXRpb24gIGlzICB0bworICAgICAgIHNlcGFyYXRlICB0aGUgdHdvIGNhc2VzLCBhbmQgd3JpdGUgb3V0IHRoZSBvZGQgYW5kIGV2ZW4gY2FzZXMgYXMgYWx0ZXItCiAgICAgICAgbmF0aXZlcyBhdCB0aGUgaGlnaGVyIGxldmVsOgogCiAgICAgICAgICBeKD86KCguKSg/MSlcMnwpfCgoLikoPzMpXDR8LikpCiAKLSAgICAgICBJZiAgeW91ICB3YW50ICB0byBtYXRjaCB0eXBpY2FsIHBhbGluZHJvbWljIHBocmFzZXMsIHRoZSBwYXR0ZXJuIGhhcyB0bworICAgICAgIElmIHlvdSB3YW50IHRvIG1hdGNoIHR5cGljYWwgcGFsaW5kcm9taWMgcGhyYXNlcywgdGhlICBwYXR0ZXJuICBoYXMgIHRvCiAgICAgICAgaWdub3JlIGFsbCBub24td29yZCBjaGFyYWN0ZXJzLCB3aGljaCBjYW4gYmUgZG9uZSBsaWtlIHRoaXM6CiAKICAgICAgICAgIF5cVyorKD86KCguKVxXKisoPzEpXFcqK1wyfCl8KCguKVxXKisoPzMpXFcqK1w0fFxXKisuXFcqKykpXFcqKyQKIAogICAgICAgIElmIHJ1biB3aXRoIHRoZSBQQ1JFX0NBU0VMRVNTIG9wdGlvbiwgdGhpcyBwYXR0ZXJuIG1hdGNoZXMgcGhyYXNlcyBzdWNoCiAgICAgICAgYXMgIkEgbWFuLCBhIHBsYW4sIGEgY2FuYWw6IFBhbmFtYSEiIGFuZCBpdCB3b3JrcyB3ZWxsIGluIGJvdGggUENSRSBhbmQKLSAgICAgICBQZXJsLiBOb3RlIHRoZSB1c2Ugb2YgdGhlIHBvc3Nlc3NpdmUgcXVhbnRpZmllciAqKyB0byBhdm9pZCAgYmFja3RyYWNrLQotICAgICAgIGluZyAgaW50byAgc2VxdWVuY2VzIG9mIG5vbi13b3JkIGNoYXJhY3RlcnMuIFdpdGhvdXQgdGhpcywgUENSRSB0YWtlcyBhCi0gICAgICAgZ3JlYXQgZGVhbCBsb25nZXIgKHRlbiB0aW1lcyBvciBtb3JlKSB0byAgbWF0Y2ggIHR5cGljYWwgIHBocmFzZXMsICBhbmQKKyAgICAgICBQZXJsLiAgTm90ZSB0aGUgdXNlIG9mIHRoZSBwb3NzZXNzaXZlIHF1YW50aWZpZXIgKisgdG8gYXZvaWQgYmFja3RyYWNrLQorICAgICAgIGluZyBpbnRvIHNlcXVlbmNlcyBvZiBub24td29yZCBjaGFyYWN0ZXJzLiBXaXRob3V0IHRoaXMsIFBDUkUgIHRha2VzICBhCisgICAgICAgZ3JlYXQgIGRlYWwgIGxvbmdlciAgKHRlbiAgdGltZXMgb3IgbW9yZSkgdG8gbWF0Y2ggdHlwaWNhbCBwaHJhc2VzLCBhbmQKICAgICAgICBQZXJsIHRha2VzIHNvIGxvbmcgdGhhdCB5b3UgdGhpbmsgaXQgaGFzIGdvbmUgaW50byBhIGxvb3AuCiAKLSAgICAgICBXQVJOSU5HOiAgVGhlICBwYWxpbmRyb21lLW1hdGNoaW5nIHBhdHRlcm5zIGFib3ZlIHdvcmsgb25seSBpZiB0aGUgc3ViLQotICAgICAgIGplY3Qgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggYSBwYWxpbmRyb21lIHRoYXQgaXMgc2hvcnRlciAgdGhhbiAgdGhlCi0gICAgICAgZW50aXJlICBzdHJpbmcuICBGb3IgZXhhbXBsZSwgYWx0aG91Z2ggImFiY2JhIiBpcyBjb3JyZWN0bHkgbWF0Y2hlZCwgaWYKLSAgICAgICB0aGUgc3ViamVjdCBpcyAiYWJhYmEiLCBQQ1JFIGZpbmRzIHRoZSBwYWxpbmRyb21lICJhYmEiIGF0ICB0aGUgIHN0YXJ0LAotICAgICAgIHRoZW4gIGZhaWxzIGF0IHRvcCBsZXZlbCBiZWNhdXNlIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBkb2VzIG5vdCBmb2xsb3cuCi0gICAgICAgT25jZSBhZ2FpbiwgaXQgY2Fubm90IGp1bXAgYmFjayBpbnRvIHRoZSByZWN1cnNpb24gdG8gdHJ5IG90aGVyICBhbHRlci0KKyAgICAgICBXQVJOSU5HOiBUaGUgcGFsaW5kcm9tZS1tYXRjaGluZyBwYXR0ZXJucyBhYm92ZSB3b3JrIG9ubHkgaWYgIHRoZSAgc3ViLQorICAgICAgIGplY3QgIHN0cmluZyAgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIHBhbGluZHJvbWUgdGhhdCBpcyBzaG9ydGVyIHRoYW4gdGhlCisgICAgICAgZW50aXJlIHN0cmluZy4gIEZvciBleGFtcGxlLCBhbHRob3VnaCAiYWJjYmEiIGlzIGNvcnJlY3RseSBtYXRjaGVkLCAgaWYKKyAgICAgICB0aGUgIHN1YmplY3QgIGlzICJhYmFiYSIsIFBDUkUgZmluZHMgdGhlIHBhbGluZHJvbWUgImFiYSIgYXQgdGhlIHN0YXJ0LAorICAgICAgIHRoZW4gZmFpbHMgYXQgdG9wIGxldmVsIGJlY2F1c2UgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGRvZXMgbm90ICBmb2xsb3cuCisgICAgICAgT25jZSAgYWdhaW4sIGl0IGNhbm5vdCBqdW1wIGJhY2sgaW50byB0aGUgcmVjdXJzaW9uIHRvIHRyeSBvdGhlciBhbHRlci0KICAgICAgICBuYXRpdmVzLCBzbyB0aGUgZW50aXJlIG1hdGNoIGZhaWxzLgogCi0gICAgICAgVGhlICBzZWNvbmQgIHdheSAgaW4gd2hpY2ggUENSRSBhbmQgUGVybCBkaWZmZXIgaW4gdGhlaXIgcmVjdXJzaW9uIHByby0KLSAgICAgICBjZXNzaW5nIGlzIGluIHRoZSBoYW5kbGluZyBvZiBjYXB0dXJlZCB2YWx1ZXMuIEluIFBlcmwsIHdoZW4gYSAgc3VicGF0LQotICAgICAgIHRlcm4gIGlzICBjYWxsZWQgcmVjdXJzaXZlbHkgb3IgYXMgYSBzdWJwYXR0ZXJuIChzZWUgdGhlIG5leHQgc2VjdGlvbiksCi0gICAgICAgaXQgaGFzIG5vIGFjY2VzcyB0byBhbnkgdmFsdWVzIHRoYXQgd2VyZSBjYXB0dXJlZCAgb3V0c2lkZSAgdGhlICByZWN1ci0KLSAgICAgICBzaW9uLCAgd2hlcmVhcyAgaW4gIFBDUkUgIHRoZXNlIHZhbHVlcyBjYW4gYmUgcmVmZXJlbmNlZC4gQ29uc2lkZXIgdGhpcworICAgICAgIFRoZSBzZWNvbmQgd2F5IGluIHdoaWNoIFBDUkUgYW5kIFBlcmwgZGlmZmVyIGluICB0aGVpciAgcmVjdXJzaW9uICBwcm8tCisgICAgICAgY2Vzc2luZyAgaXMgaW4gdGhlIGhhbmRsaW5nIG9mIGNhcHR1cmVkIHZhbHVlcy4gSW4gUGVybCwgd2hlbiBhIHN1YnBhdC0KKyAgICAgICB0ZXJuIGlzIGNhbGxlZCByZWN1cnNpdmVseSBvciBhcyBhIHN1YnBhdHRlcm4gKHNlZSB0aGUgIG5leHQgIHNlY3Rpb24pLAorICAgICAgIGl0ICBoYXMgIG5vICBhY2Nlc3MgdG8gYW55IHZhbHVlcyB0aGF0IHdlcmUgY2FwdHVyZWQgb3V0c2lkZSB0aGUgcmVjdXItCisgICAgICAgc2lvbiwgd2hlcmVhcyBpbiBQQ1JFIHRoZXNlIHZhbHVlcyBjYW4gIGJlICByZWZlcmVuY2VkLiAgQ29uc2lkZXIgIHRoaXMKICAgICAgICBwYXR0ZXJuOgogCiAgICAgICAgICBeKC4pKFwxfGEoPzIpKQogCi0gICAgICAgSW4gUENSRSwgdGhpcyBwYXR0ZXJuIG1hdGNoZXMgImJhYiIuIFRoZSAgZmlyc3QgIGNhcHR1cmluZyAgcGFyZW50aGVzZXMKLSAgICAgICBtYXRjaCAgImIiLCAgdGhlbiBpbiB0aGUgc2Vjb25kIGdyb3VwLCB3aGVuIHRoZSBiYWNrIHJlZmVyZW5jZSBcMSBmYWlscwotICAgICAgIHRvIG1hdGNoICJiIiwgdGhlIHNlY29uZCBhbHRlcm5hdGl2ZSBtYXRjaGVzICJhIiBhbmQgdGhlbiByZWN1cnNlcy4gIEluCi0gICAgICAgdGhlICByZWN1cnNpb24sICBcMSBkb2VzIG5vdyBtYXRjaCAiYiIgYW5kIHNvIHRoZSB3aG9sZSBtYXRjaCBzdWNjZWVkcy4KLSAgICAgICBJbiBQZXJsLCB0aGUgcGF0dGVybiBmYWlscyB0byBtYXRjaCBiZWNhdXNlIGluc2lkZSB0aGUgIHJlY3Vyc2l2ZSAgY2FsbAorICAgICAgIEluICBQQ1JFLCAgdGhpcyAgcGF0dGVybiBtYXRjaGVzICJiYWIiLiBUaGUgZmlyc3QgY2FwdHVyaW5nIHBhcmVudGhlc2VzCisgICAgICAgbWF0Y2ggImIiLCB0aGVuIGluIHRoZSBzZWNvbmQgZ3JvdXAsIHdoZW4gdGhlIGJhY2sgcmVmZXJlbmNlICBcMSAgZmFpbHMKKyAgICAgICB0byAgbWF0Y2ggImIiLCB0aGUgc2Vjb25kIGFsdGVybmF0aXZlIG1hdGNoZXMgImEiIGFuZCB0aGVuIHJlY3Vyc2VzLiBJbgorICAgICAgIHRoZSByZWN1cnNpb24sIFwxIGRvZXMgbm93IG1hdGNoICJiIiBhbmQgc28gdGhlIHdob2xlICBtYXRjaCAgc3VjY2VlZHMuCisgICAgICAgSW4gIFBlcmwsICB0aGUgcGF0dGVybiBmYWlscyB0byBtYXRjaCBiZWNhdXNlIGluc2lkZSB0aGUgcmVjdXJzaXZlIGNhbGwKICAgICAgICBcMSBjYW5ub3QgYWNjZXNzIHRoZSBleHRlcm5hbGx5IHNldCB2YWx1ZS4KIAogCiBTVUJQQVRURVJOUyBBUyBTVUJST1VUSU5FUwogCi0gICAgICAgSWYgIHRoZSAgc3ludGF4IGZvciBhIHJlY3Vyc2l2ZSBzdWJwYXR0ZXJuIGNhbGwgKGVpdGhlciBieSBudW1iZXIgb3IgYnkKLSAgICAgICBuYW1lKSBpcyB1c2VkIG91dHNpZGUgdGhlIHBhcmVudGhlc2VzIHRvIHdoaWNoIGl0IHJlZmVycywgIGl0ICBvcGVyYXRlcwotICAgICAgIGxpa2UgIGEgc3Vicm91dGluZSBpbiBhIHByb2dyYW1taW5nIGxhbmd1YWdlLiBUaGUgY2FsbGVkIHN1YnBhdHRlcm4gbWF5Ci0gICAgICAgYmUgZGVmaW5lZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIHJlZmVyZW5jZS4gQSBudW1iZXJlZCByZWZlcmVuY2UgIGNhbiAgYmUKKyAgICAgICBJZiB0aGUgc3ludGF4IGZvciBhIHJlY3Vyc2l2ZSBzdWJwYXR0ZXJuIGNhbGwgKGVpdGhlciBieSBudW1iZXIgIG9yICBieQorICAgICAgIG5hbWUpICBpcyAgdXNlZCBvdXRzaWRlIHRoZSBwYXJlbnRoZXNlcyB0byB3aGljaCBpdCByZWZlcnMsIGl0IG9wZXJhdGVzCisgICAgICAgbGlrZSBhIHN1YnJvdXRpbmUgaW4gYSBwcm9ncmFtbWluZyBsYW5ndWFnZS4gVGhlIGNhbGxlZCBzdWJwYXR0ZXJuICBtYXkKKyAgICAgICBiZSAgZGVmaW5lZCAgYmVmb3JlIG9yIGFmdGVyIHRoZSByZWZlcmVuY2UuIEEgbnVtYmVyZWQgcmVmZXJlbmNlIGNhbiBiZQogICAgICAgIGFic29sdXRlIG9yIHJlbGF0aXZlLCBhcyBpbiB0aGVzZSBleGFtcGxlczoKIAogICAgICAgICAgKC4uLihhYnNvbHV0ZSkuLi4pLi4uKD8yKS4uLgpAQCAtNzE1OSw3OSArNzE3Miw3OSBAQAogCiAgICAgICAgICAoc2Vuc3xyZXNwb25zKWUgYW5kIFwxaWJpbGl0eQogCi0gICAgICAgbWF0Y2hlcyAgInNlbnNlIGFuZCBzZW5zaWJpbGl0eSIgYW5kICJyZXNwb25zZSBhbmQgcmVzcG9uc2liaWxpdHkiLCBidXQKKyAgICAgICBtYXRjaGVzICJzZW5zZSBhbmQgc2Vuc2liaWxpdHkiIGFuZCAicmVzcG9uc2UgYW5kIHJlc3BvbnNpYmlsaXR5IiwgIGJ1dAogICAgICAgIG5vdCAic2Vuc2UgYW5kIHJlc3BvbnNpYmlsaXR5Ii4gSWYgaW5zdGVhZCB0aGUgcGF0dGVybgogCiAgICAgICAgICAoc2Vuc3xyZXNwb25zKWUgYW5kICg/MSlpYmlsaXR5CiAKLSAgICAgICBpcyB1c2VkLCBpdCBkb2VzIG1hdGNoICJzZW5zZSBhbmQgcmVzcG9uc2liaWxpdHkiIGFzIHdlbGwgYXMgdGhlICBvdGhlcgotICAgICAgIHR3byAgc3RyaW5ncy4gIEFub3RoZXIgIGV4YW1wbGUgIGlzICBnaXZlbiAgaW4gdGhlIGRpc2N1c3Npb24gb2YgREVGSU5FCisgICAgICAgaXMgIHVzZWQsIGl0IGRvZXMgbWF0Y2ggInNlbnNlIGFuZCByZXNwb25zaWJpbGl0eSIgYXMgd2VsbCBhcyB0aGUgb3RoZXIKKyAgICAgICB0d28gc3RyaW5ncy4gQW5vdGhlciBleGFtcGxlIGlzICBnaXZlbiAgaW4gIHRoZSAgZGlzY3Vzc2lvbiAgb2YgIERFRklORQogICAgICAgIGFib3ZlLgogCi0gICAgICAgQWxsIHN1YnJvdXRpbmUgY2FsbHMsIHdoZXRoZXIgcmVjdXJzaXZlIG9yIG5vdCwgYXJlIGFsd2F5cyAgdHJlYXRlZCAgYXMKLSAgICAgICBhdG9taWMgIGdyb3Vwcy4gVGhhdCBpcywgb25jZSBhIHN1YnJvdXRpbmUgaGFzIG1hdGNoZWQgc29tZSBvZiB0aGUgc3ViLQorICAgICAgIEFsbCAgc3Vicm91dGluZSAgY2FsbHMsIHdoZXRoZXIgcmVjdXJzaXZlIG9yIG5vdCwgYXJlIGFsd2F5cyB0cmVhdGVkIGFzCisgICAgICAgYXRvbWljIGdyb3Vwcy4gVGhhdCBpcywgb25jZSBhIHN1YnJvdXRpbmUgaGFzIG1hdGNoZWQgc29tZSBvZiB0aGUgIHN1Yi0KICAgICAgICBqZWN0IHN0cmluZywgaXQgaXMgbmV2ZXIgcmUtZW50ZXJlZCwgZXZlbiBpZiBpdCBjb250YWlucyB1bnRyaWVkIGFsdGVyLQotICAgICAgIG5hdGl2ZXMgIGFuZCAgdGhlcmUgIGlzICBhICBzdWJzZXF1ZW50ICBtYXRjaGluZyBmYWlsdXJlLiBBbnkgY2FwdHVyaW5nCi0gICAgICAgcGFyZW50aGVzZXMgdGhhdCBhcmUgc2V0IGR1cmluZyB0aGUgc3Vicm91dGluZSAgY2FsbCAgcmV2ZXJ0ICB0byAgdGhlaXIKKyAgICAgICBuYXRpdmVzIGFuZCB0aGVyZSBpcyAgYSAgc3Vic2VxdWVudCAgbWF0Y2hpbmcgIGZhaWx1cmUuICBBbnkgIGNhcHR1cmluZworICAgICAgIHBhcmVudGhlc2VzICB0aGF0ICBhcmUgIHNldCAgZHVyaW5nIHRoZSBzdWJyb3V0aW5lIGNhbGwgcmV2ZXJ0IHRvIHRoZWlyCiAgICAgICAgcHJldmlvdXMgdmFsdWVzIGFmdGVyd2FyZHMuCiAKLSAgICAgICBQcm9jZXNzaW5nICBvcHRpb25zICBzdWNoIGFzIGNhc2UtaW5kZXBlbmRlbmNlIGFyZSBmaXhlZCB3aGVuIGEgc3VicGF0LQotICAgICAgIHRlcm4gaXMgZGVmaW5lZCwgc28gaWYgaXQgaXMgdXNlZCBhcyBhIHN1YnJvdXRpbmUsIHN1Y2ggb3B0aW9ucyAgY2Fubm90CisgICAgICAgUHJvY2Vzc2luZyBvcHRpb25zIHN1Y2ggYXMgY2FzZS1pbmRlcGVuZGVuY2UgYXJlIGZpeGVkIHdoZW4gIGEgIHN1YnBhdC0KKyAgICAgICB0ZXJuICBpcyBkZWZpbmVkLCBzbyBpZiBpdCBpcyB1c2VkIGFzIGEgc3Vicm91dGluZSwgc3VjaCBvcHRpb25zIGNhbm5vdAogICAgICAgIGJlIGNoYW5nZWQgZm9yIGRpZmZlcmVudCBjYWxscy4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoaXMgcGF0dGVybjoKIAogICAgICAgICAgKGFiYykoP2k6KD8tMSkpCiAKLSAgICAgICBJdCAgbWF0Y2hlcyAgImFiY2FiYyIuIEl0IGRvZXMgbm90IG1hdGNoICJhYmNBQkMiIGJlY2F1c2UgdGhlIGNoYW5nZSBvZgorICAgICAgIEl0IG1hdGNoZXMgImFiY2FiYyIuIEl0IGRvZXMgbm90IG1hdGNoICJhYmNBQkMiIGJlY2F1c2UgdGhlICBjaGFuZ2UgIG9mCiAgICAgICAgcHJvY2Vzc2luZyBvcHRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBjYWxsZWQgc3VicGF0dGVybi4KIAogCiBPTklHVVJVTUEgU1VCUk9VVElORSBTWU5UQVgKIAotICAgICAgIEZvciBjb21wYXRpYmlsaXR5IHdpdGggT25pZ3VydW1hLCB0aGUgbm9uLVBlcmwgc3ludGF4IFxnIGZvbGxvd2VkIGJ5ICBhCisgICAgICAgRm9yICBjb21wYXRpYmlsaXR5IHdpdGggT25pZ3VydW1hLCB0aGUgbm9uLVBlcmwgc3ludGF4IFxnIGZvbGxvd2VkIGJ5IGEKICAgICAgICBuYW1lIG9yIGEgbnVtYmVyIGVuY2xvc2VkIGVpdGhlciBpbiBhbmdsZSBicmFja2V0cyBvciBzaW5nbGUgcXVvdGVzLCBpcwotICAgICAgIGFuIGFsdGVybmF0aXZlIHN5bnRheCBmb3IgcmVmZXJlbmNpbmcgYSAgc3VicGF0dGVybiAgYXMgIGEgIHN1YnJvdXRpbmUsCi0gICAgICAgcG9zc2libHkgIHJlY3Vyc2l2ZWx5LiBIZXJlIGFyZSB0d28gb2YgdGhlIGV4YW1wbGVzIHVzZWQgYWJvdmUsIHJld3JpdC0KKyAgICAgICBhbiAgYWx0ZXJuYXRpdmUgIHN5bnRheCAgZm9yICByZWZlcmVuY2luZyBhIHN1YnBhdHRlcm4gYXMgYSBzdWJyb3V0aW5lLAorICAgICAgIHBvc3NpYmx5IHJlY3Vyc2l2ZWx5LiBIZXJlIGFyZSB0d28gb2YgdGhlIGV4YW1wbGVzIHVzZWQgYWJvdmUsICByZXdyaXQtCiAgICAgICAgdGVuIHVzaW5nIHRoaXMgc3ludGF4OgogCiAgICAgICAgICAoPzxwbj4gXCggKCAoPz5bXigpXSspIHwgXGc8cG4+ICkqIFwpICkKICAgICAgICAgIChzZW5zfHJlc3BvbnMpZSBhbmQgXGcnMSdpYmlsaXR5CiAKLSAgICAgICBQQ1JFIHN1cHBvcnRzIGFuIGV4dGVuc2lvbiB0byBPbmlndXJ1bWE6IGlmIGEgbnVtYmVyIGlzIHByZWNlZGVkICBieSAgYQorICAgICAgIFBDUkUgIHN1cHBvcnRzICBhbiBleHRlbnNpb24gdG8gT25pZ3VydW1hOiBpZiBhIG51bWJlciBpcyBwcmVjZWRlZCBieSBhCiAgICAgICAgcGx1cyBvciBhIG1pbnVzIHNpZ24gaXQgaXMgdGFrZW4gYXMgYSByZWxhdGl2ZSByZWZlcmVuY2UuIEZvciBleGFtcGxlOgogCiAgICAgICAgICAoYWJjKSg/aTpcZzwtMT4pCiAKLSAgICAgICBOb3RlICB0aGF0IFxney4uLn0gKFBlcmwgc3ludGF4KSBhbmQgXGc8Li4uPiAoT25pZ3VydW1hIHN5bnRheCkgYXJlIG5vdAotICAgICAgIHN5bm9ueW1vdXMuIFRoZSBmb3JtZXIgaXMgYSBiYWNrIHJlZmVyZW5jZTsgdGhlIGxhdHRlciBpcyBhICBzdWJyb3V0aW5lCisgICAgICAgTm90ZSB0aGF0IFxney4uLn0gKFBlcmwgc3ludGF4KSBhbmQgXGc8Li4uPiAoT25pZ3VydW1hIHN5bnRheCkgYXJlICBub3QKKyAgICAgICBzeW5vbnltb3VzLiAgVGhlIGZvcm1lciBpcyBhIGJhY2sgcmVmZXJlbmNlOyB0aGUgbGF0dGVyIGlzIGEgc3Vicm91dGluZQogICAgICAgIGNhbGwuCiAKIAogQ0FMTE9VVFMKIAogICAgICAgIFBlcmwgaGFzIGEgZmVhdHVyZSB3aGVyZWJ5IHVzaW5nIHRoZSBzZXF1ZW5jZSAoP3suLi59KSBjYXVzZXMgYXJiaXRyYXJ5Ci0gICAgICAgUGVybCBjb2RlIHRvIGJlIG9iZXllZCBpbiB0aGUgbWlkZGxlIG9mIG1hdGNoaW5nIGEgcmVndWxhciAgZXhwcmVzc2lvbi4KKyAgICAgICBQZXJsICBjb2RlIHRvIGJlIG9iZXllZCBpbiB0aGUgbWlkZGxlIG9mIG1hdGNoaW5nIGEgcmVndWxhciBleHByZXNzaW9uLgogICAgICAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUsIGFtb25nc3Qgb3RoZXIgdGhpbmdzLCB0byBleHRyYWN0IGRpZmZlcmVudCBzdWItCiAgICAgICAgc3RyaW5ncyB0aGF0IG1hdGNoIHRoZSBzYW1lIHBhaXIgb2YgcGFyZW50aGVzZXMgd2hlbiB0aGVyZSBpcyBhIHJlcGV0aS0KICAgICAgICB0aW9uLgogCiAgICAgICAgUENSRSBwcm92aWRlcyBhIHNpbWlsYXIgZmVhdHVyZSwgYnV0IG9mIGNvdXJzZSBpdCBjYW5ub3Qgb2JleSBhcmJpdHJhcnkKICAgICAgICBQZXJsIGNvZGUuIFRoZSBmZWF0dXJlIGlzIGNhbGxlZCAiY2FsbG91dCIuIFRoZSBjYWxsZXIgb2YgUENSRSBwcm92aWRlcwotICAgICAgIGFuICBleHRlcm5hbCBmdW5jdGlvbiBieSBwdXR0aW5nIGl0cyBlbnRyeSBwb2ludCBpbiB0aGUgZ2xvYmFsIHZhcmlhYmxlCi0gICAgICAgcGNyZV9jYWxsb3V0ICg4LWJpdCBsaWJyYXJ5KSBvciBwY3JlWzE2fDMyXV9jYWxsb3V0ICgxNi1iaXQgIG9yICAzMi1iaXQKLSAgICAgICBsaWJyYXJ5KS4gICBCeSBkZWZhdWx0LCB0aGlzIHZhcmlhYmxlIGNvbnRhaW5zIE5VTEwsIHdoaWNoIGRpc2FibGVzIGFsbAorICAgICAgIGFuIGV4dGVybmFsIGZ1bmN0aW9uIGJ5IHB1dHRpbmcgaXRzIGVudHJ5IHBvaW50IGluIHRoZSBnbG9iYWwgIHZhcmlhYmxlCisgICAgICAgcGNyZV9jYWxsb3V0ICAoOC1iaXQgIGxpYnJhcnkpIG9yIHBjcmVbMTZ8MzJdX2NhbGxvdXQgKDE2LWJpdCBvciAzMi1iaXQKKyAgICAgICBsaWJyYXJ5KS4gIEJ5IGRlZmF1bHQsIHRoaXMgdmFyaWFibGUgY29udGFpbnMgTlVMTCwgd2hpY2ggZGlzYWJsZXMgIGFsbAogICAgICAgIGNhbGxpbmcgb3V0LgogCi0gICAgICAgV2l0aGluIGEgcmVndWxhciBleHByZXNzaW9uLCAoP0MpIGluZGljYXRlcyB0aGUgIHBvaW50cyAgYXQgIHdoaWNoICB0aGUKLSAgICAgICBleHRlcm5hbCAgZnVuY3Rpb24gIGlzICB0byBiZSBjYWxsZWQuIElmIHlvdSB3YW50IHRvIGlkZW50aWZ5IGRpZmZlcmVudAotICAgICAgIGNhbGxvdXQgcG9pbnRzLCB5b3UgY2FuIHB1dCBhIG51bWJlciBsZXNzIHRoYW4gMjU2IGFmdGVyIHRoZSBsZXR0ZXIgIEMuCi0gICAgICAgVGhlICBkZWZhdWx0ICB2YWx1ZSBpcyB6ZXJvLiAgRm9yIGV4YW1wbGUsIHRoaXMgcGF0dGVybiBoYXMgdHdvIGNhbGxvdXQKKyAgICAgICBXaXRoaW4gIGEgIHJlZ3VsYXIgIGV4cHJlc3Npb24sICAoP0MpIGluZGljYXRlcyB0aGUgcG9pbnRzIGF0IHdoaWNoIHRoZQorICAgICAgIGV4dGVybmFsIGZ1bmN0aW9uIGlzIHRvIGJlIGNhbGxlZC4gSWYgeW91IHdhbnQgIHRvICBpZGVudGlmeSAgZGlmZmVyZW50CisgICAgICAgY2FsbG91dCAgcG9pbnRzLCB5b3UgY2FuIHB1dCBhIG51bWJlciBsZXNzIHRoYW4gMjU2IGFmdGVyIHRoZSBsZXR0ZXIgQy4KKyAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB6ZXJvLiAgRm9yIGV4YW1wbGUsIHRoaXMgcGF0dGVybiBoYXMgIHR3byAgY2FsbG91dAogICAgICAgIHBvaW50czoKIAogICAgICAgICAgKD9DMSlhYmMoP0MyKWRlZgogCi0gICAgICAgSWYgdGhlIFBDUkVfQVVUT19DQUxMT1VUIGZsYWcgaXMgcGFzc2VkIHRvIGEgY29tcGlsaW5nIGZ1bmN0aW9uLCAgY2FsbC0KLSAgICAgICBvdXRzICBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgYmVmb3JlIGVhY2ggaXRlbSBpbiB0aGUgcGF0dGVybi4gVGhleQotICAgICAgIGFyZSBhbGwgbnVtYmVyZWQgMjU1LiBJZiB0aGVyZSBpcyBhIGNvbmRpdGlvbmFsIGdyb3VwICBpbiAgdGhlICBwYXR0ZXJuCisgICAgICAgSWYgIHRoZSBQQ1JFX0FVVE9fQ0FMTE9VVCBmbGFnIGlzIHBhc3NlZCB0byBhIGNvbXBpbGluZyBmdW5jdGlvbiwgY2FsbC0KKyAgICAgICBvdXRzIGFyZSBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZCBiZWZvcmUgZWFjaCBpdGVtIGluIHRoZSBwYXR0ZXJuLiAgVGhleQorICAgICAgIGFyZSAgYWxsICBudW1iZXJlZCAgMjU1LiBJZiB0aGVyZSBpcyBhIGNvbmRpdGlvbmFsIGdyb3VwIGluIHRoZSBwYXR0ZXJuCiAgICAgICAgd2hvc2UgY29uZGl0aW9uIGlzIGFuIGFzc2VydGlvbiwgYW4gYWRkaXRpb25hbCBjYWxsb3V0IGlzIGluc2VydGVkIGp1c3QKICAgICAgICBiZWZvcmUgdGhlIGNvbmRpdGlvbi4gQW4gZXhwbGljaXQgY2FsbG91dCBtYXkgYWxzbyBiZSBzZXQgYXQgdGhpcyBwb3NpLQogICAgICAgIHRpb24sIGFzIGluIHRoaXMgZXhhbXBsZToKQEAgLTcyNDEsMTIwICs3MjU0LDEyMCBAQAogICAgICAgIE5vdGUgdGhhdCB0aGlzIGFwcGxpZXMgb25seSB0byBhc3NlcnRpb24gY29uZGl0aW9ucywgbm90IHRvIG90aGVyIHR5cGVzCiAgICAgICAgb2YgY29uZGl0aW9uLgogCi0gICAgICAgRHVyaW5nIG1hdGNoaW5nLCB3aGVuIFBDUkUgcmVhY2hlcyBhIGNhbGxvdXQgcG9pbnQsIHRoZSBleHRlcm5hbCAgZnVuYy0KLSAgICAgICB0aW9uICBpcyAgY2FsbGVkLiAgSXQgIGlzICBwcm92aWRlZCB3aXRoIHRoZSBudW1iZXIgb2YgdGhlIGNhbGxvdXQsIHRoZQotICAgICAgIHBvc2l0aW9uIGluIHRoZSBwYXR0ZXJuLCBhbmQsIG9wdGlvbmFsbHksIG9uZSBpdGVtIG9mICBkYXRhICBvcmlnaW5hbGx5Ci0gICAgICAgc3VwcGxpZWQgIGJ5ICB0aGUgY2FsbGVyIG9mIHRoZSBtYXRjaGluZyBmdW5jdGlvbi4gVGhlIGNhbGxvdXQgZnVuY3Rpb24KKyAgICAgICBEdXJpbmcgIG1hdGNoaW5nLCB3aGVuIFBDUkUgcmVhY2hlcyBhIGNhbGxvdXQgcG9pbnQsIHRoZSBleHRlcm5hbCBmdW5jLQorICAgICAgIHRpb24gaXMgY2FsbGVkLiBJdCBpcyBwcm92aWRlZCB3aXRoIHRoZSAgbnVtYmVyICBvZiAgdGhlICBjYWxsb3V0LCAgdGhlCisgICAgICAgcG9zaXRpb24gIGluICB0aGUgcGF0dGVybiwgYW5kLCBvcHRpb25hbGx5LCBvbmUgaXRlbSBvZiBkYXRhIG9yaWdpbmFsbHkKKyAgICAgICBzdXBwbGllZCBieSB0aGUgY2FsbGVyIG9mIHRoZSBtYXRjaGluZyBmdW5jdGlvbi4gVGhlICBjYWxsb3V0ICBmdW5jdGlvbgogICAgICAgIG1heSBjYXVzZSBtYXRjaGluZyB0byBwcm9jZWVkLCB0byBiYWNrdHJhY2ssIG9yIHRvIGZhaWwgYWx0b2dldGhlci4KIAotICAgICAgIEJ5IGRlZmF1bHQsIFBDUkUgaW1wbGVtZW50cyBhIG51bWJlciBvZiBvcHRpbWl6YXRpb25zIGF0ICBjb21waWxlICB0aW1lCi0gICAgICAgYW5kICBtYXRjaGluZyAgdGltZSwgYW5kIG9uZSBzaWRlLWVmZmVjdCBpcyB0aGF0IHNvbWV0aW1lcyBjYWxsb3V0cyBhcmUKLSAgICAgICBza2lwcGVkLiBJZiB5b3UgbmVlZCBhbGwgcG9zc2libGUgY2FsbG91dHMgdG8gaGFwcGVuLCB5b3UgbmVlZCAgdG8gIHNldAotICAgICAgIG9wdGlvbnMgIHRoYXQgIGRpc2FibGUgIHRoZSByZWxldmFudCBvcHRpbWl6YXRpb25zLiBNb3JlIGRldGFpbHMsIGFuZCBhCi0gICAgICAgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgdGhlIGludGVyZmFjZSAgdG8gIHRoZSAgY2FsbG91dCAgZnVuY3Rpb24sICBhcmUKKyAgICAgICBCeSAgZGVmYXVsdCwgIFBDUkUgaW1wbGVtZW50cyBhIG51bWJlciBvZiBvcHRpbWl6YXRpb25zIGF0IGNvbXBpbGUgdGltZQorICAgICAgIGFuZCBtYXRjaGluZyB0aW1lLCBhbmQgb25lIHNpZGUtZWZmZWN0IGlzIHRoYXQgc29tZXRpbWVzICBjYWxsb3V0cyAgYXJlCisgICAgICAgc2tpcHBlZC4gIElmICB5b3UgbmVlZCBhbGwgcG9zc2libGUgY2FsbG91dHMgdG8gaGFwcGVuLCB5b3UgbmVlZCB0byBzZXQKKyAgICAgICBvcHRpb25zIHRoYXQgZGlzYWJsZSB0aGUgcmVsZXZhbnQgb3B0aW1pemF0aW9ucy4gTW9yZSAgZGV0YWlscywgIGFuZCAgYQorICAgICAgIGNvbXBsZXRlICBkZXNjcmlwdGlvbiAgb2YgIHRoZSAgaW50ZXJmYWNlICB0byB0aGUgY2FsbG91dCBmdW5jdGlvbiwgYXJlCiAgICAgICAgZ2l2ZW4gaW4gdGhlIHBjcmVjYWxsb3V0IGRvY3VtZW50YXRpb24uCiAKIAogQkFDS1RSQUNLSU5HIENPTlRST0wKIAotICAgICAgIFBlcmwgIDUuMTAgaW50cm9kdWNlZCBhIG51bWJlciBvZiAiU3BlY2lhbCBCYWNrdHJhY2tpbmcgQ29udHJvbCBWZXJicyIsCi0gICAgICAgd2hpY2ggYXJlIHN0aWxsIGRlc2NyaWJlZCBpbiB0aGUgUGVybCAgZG9jdW1lbnRhdGlvbiAgYXMgICJleHBlcmltZW50YWwKLSAgICAgICBhbmQgIHN1YmplY3QgdG8gY2hhbmdlIG9yIHJlbW92YWwgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQZXJsIi4gSXQgZ29lcwotICAgICAgIG9uIHRvIHNheTogIlRoZWlyIHVzYWdlIGluIHByb2R1Y3Rpb24gY29kZSBzaG91bGQgIGJlICBub3RlZCAgdG8gIGF2b2lkCi0gICAgICAgcHJvYmxlbXMgIGR1cmluZyB1cGdyYWRlcy4iIFRoZSBzYW1lIHJlbWFya3MgYXBwbHkgdG8gdGhlIFBDUkUgZmVhdHVyZXMKKyAgICAgICBQZXJsIDUuMTAgaW50cm9kdWNlZCBhIG51bWJlciBvZiAiU3BlY2lhbCBCYWNrdHJhY2tpbmcgQ29udHJvbCAgVmVyYnMiLAorICAgICAgIHdoaWNoICBhcmUgIHN0aWxsICBkZXNjcmliZWQgaW4gdGhlIFBlcmwgZG9jdW1lbnRhdGlvbiBhcyAiZXhwZXJpbWVudGFsCisgICAgICAgYW5kIHN1YmplY3QgdG8gY2hhbmdlIG9yIHJlbW92YWwgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQZXJsIi4gSXQgIGdvZXMKKyAgICAgICBvbiAgdG8gIHNheTogICJUaGVpciAgdXNhZ2UgaW4gcHJvZHVjdGlvbiBjb2RlIHNob3VsZCBiZSBub3RlZCB0byBhdm9pZAorICAgICAgIHByb2JsZW1zIGR1cmluZyB1cGdyYWRlcy4iIFRoZSBzYW1lIHJlbWFya3MgYXBwbHkgdG8gdGhlIFBDUkUgIGZlYXR1cmVzCiAgICAgICAgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbi4KIAotICAgICAgIFRoZSBuZXcgdmVyYnMgbWFrZSB1c2Ugb2Ygd2hhdCB3YXMgcHJldmlvdXNseSBpbnZhbGlkIHN5bnRheDogYW4gIG9wZW4tCisgICAgICAgVGhlICBuZXcgdmVyYnMgbWFrZSB1c2Ugb2Ygd2hhdCB3YXMgcHJldmlvdXNseSBpbnZhbGlkIHN5bnRheDogYW4gb3Blbi0KICAgICAgICBpbmcgcGFyZW50aGVzaXMgZm9sbG93ZWQgYnkgYW4gYXN0ZXJpc2suIFRoZXkgYXJlIGdlbmVyYWxseSBvZiB0aGUgZm9ybQotICAgICAgICgqVkVSQikgb3IgKCpWRVJCOk5BTUUpLiBTb21lIG1heSB0YWtlIGVpdGhlciBmb3JtLCAgcG9zc2libHkgIGJlaGF2aW5nCi0gICAgICAgZGlmZmVyZW50bHkgIGRlcGVuZGluZyAgb24gIHdoZXRoZXIgb3Igbm90IGEgbmFtZSBpcyBwcmVzZW50LiBBIG5hbWUgaXMKKyAgICAgICAoKlZFUkIpICBvciAgKCpWRVJCOk5BTUUpLiBTb21lIG1heSB0YWtlIGVpdGhlciBmb3JtLCBwb3NzaWJseSBiZWhhdmluZworICAgICAgIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCBhIG5hbWUgaXMgcHJlc2VudC4gIEEgIG5hbWUgIGlzCiAgICAgICAgYW55IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIGEgY2xvc2luZyBwYXJlbnRoZXNpcy4KICAgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgbmFtZSBpcyAyNTUgaW4gdGhlIDgtYml0IGxpYnJhcnkgYW5kIDY1NTM1IGluIHRoZQotICAgICAgIDE2LWJpdCBhbmQgMzItYml0IGxpYnJhcmllcy4gSWYgdGhlIG5hbWUgaXMgIGVtcHR5LCAgdGhhdCAgaXMsICBpZiAgdGhlCi0gICAgICAgY2xvc2luZyAgcGFyZW50aGVzaXMgaW1tZWRpYXRlbHkgZm9sbG93cyB0aGUgY29sb24sIHRoZSBlZmZlY3QgaXMgYXMgaWYKLSAgICAgICB0aGUgY29sb24gd2VyZSBub3QgdGhlcmUuICBBbnkgbnVtYmVyIG9mIHRoZXNlIHZlcmJzICBtYXkgIG9jY3VyICBpbiAgYQorICAgICAgIDE2LWJpdCAgYW5kICAzMi1iaXQgIGxpYnJhcmllcy4gIElmICB0aGUgbmFtZSBpcyBlbXB0eSwgdGhhdCBpcywgaWYgdGhlCisgICAgICAgY2xvc2luZyBwYXJlbnRoZXNpcyBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBjb2xvbiwgdGhlIGVmZmVjdCBpcyBhcyAgaWYKKyAgICAgICB0aGUgIGNvbG9uICB3ZXJlICBub3QgIHRoZXJlLiAgQW55IG51bWJlciBvZiB0aGVzZSB2ZXJicyBtYXkgb2NjdXIgaW4gYQogICAgICAgIHBhdHRlcm4uCiAKLSAgICAgICBTaW5jZSAgdGhlc2UgIHZlcmJzICBhcmUgIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGJhY2t0cmFja2luZywgbW9zdCBvZgotICAgICAgIHRoZW0gY2FuIGJlIHVzZWQgb25seSB3aGVuIHRoZSBwYXR0ZXJuIGlzIHRvIGJlIG1hdGNoZWQgIHVzaW5nICBvbmUgIG9mCi0gICAgICAgdGhlICB0cmFkaXRpb25hbCAgbWF0Y2hpbmcgIGZ1bmN0aW9ucywgYmVjYXVzZSB0aGVzZSB1c2UgYSBiYWNrdHJhY2tpbmcKLSAgICAgICBhbGdvcml0aG0uIFdpdGggdGhlIGV4Y2VwdGlvbiBvZiAoKkZBSUwpLCB3aGljaCBiZWhhdmVzIGxpa2UgYSAgZmFpbGluZwotICAgICAgIG5lZ2F0aXZlICBhc3NlcnRpb24sICB0aGUgIGJhY2t0cmFja2luZyBjb250cm9sIHZlcmJzIGNhdXNlIGFuIGVycm9yIGlmCisgICAgICAgU2luY2UgdGhlc2UgdmVyYnMgYXJlIHNwZWNpZmljYWxseSByZWxhdGVkICB0byAgYmFja3RyYWNraW5nLCAgbW9zdCAgb2YKKyAgICAgICB0aGVtICBjYW4gIGJlICB1c2VkIG9ubHkgd2hlbiB0aGUgcGF0dGVybiBpcyB0byBiZSBtYXRjaGVkIHVzaW5nIG9uZSBvZgorICAgICAgIHRoZSB0cmFkaXRpb25hbCBtYXRjaGluZyBmdW5jdGlvbnMsIGJlY2F1c2UgdGhlc2UgIHVzZSAgYSAgYmFja3RyYWNraW5nCisgICAgICAgYWxnb3JpdGhtLiAgV2l0aCB0aGUgZXhjZXB0aW9uIG9mICgqRkFJTCksIHdoaWNoIGJlaGF2ZXMgbGlrZSBhIGZhaWxpbmcKKyAgICAgICBuZWdhdGl2ZSBhc3NlcnRpb24sIHRoZSBiYWNrdHJhY2tpbmcgY29udHJvbCB2ZXJicyBjYXVzZSAgYW4gIGVycm9yICBpZgogICAgICAgIGVuY291bnRlcmVkIGJ5IGEgREZBIG1hdGNoaW5nIGZ1bmN0aW9uLgogCi0gICAgICAgVGhlIGJlaGF2aW91ciBvZiB0aGVzZSB2ZXJicyBpbiByZXBlYXRlZCAgZ3JvdXBzLCAgYXNzZXJ0aW9ucywgIGFuZCAgaW4KKyAgICAgICBUaGUgIGJlaGF2aW91ciAgb2YgIHRoZXNlICB2ZXJicyBpbiByZXBlYXRlZCBncm91cHMsIGFzc2VydGlvbnMsIGFuZCBpbgogICAgICAgIHN1YnBhdHRlcm5zIGNhbGxlZCBhcyBzdWJyb3V0aW5lcyAod2hldGhlciBvciBub3QgcmVjdXJzaXZlbHkpIGlzIGRvY3UtCiAgICAgICAgbWVudGVkIGJlbG93LgogCiAgICBPcHRpbWl6YXRpb25zIHRoYXQgYWZmZWN0IGJhY2t0cmFja2luZyB2ZXJicwogCi0gICAgICAgUENSRSBjb250YWlucyBzb21lIG9wdGltaXphdGlvbnMgdGhhdCBhcmUgdXNlZCB0byBzcGVlZCB1cCBtYXRjaGluZyAgYnkKKyAgICAgICBQQ1JFICBjb250YWlucyBzb21lIG9wdGltaXphdGlvbnMgdGhhdCBhcmUgdXNlZCB0byBzcGVlZCB1cCBtYXRjaGluZyBieQogICAgICAgIHJ1bm5pbmcgc29tZSBjaGVja3MgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggbWF0Y2ggYXR0ZW1wdC4gRm9yIGV4YW1wbGUsIGl0Ci0gICAgICAgbWF5IGtub3cgdGhlIG1pbmltdW0gbGVuZ3RoIG9mIG1hdGNoaW5nIHN1YmplY3QsIG9yIHRoYXQgIGEgIHBhcnRpY3VsYXIKKyAgICAgICBtYXkgIGtub3cgIHRoZSBtaW5pbXVtIGxlbmd0aCBvZiBtYXRjaGluZyBzdWJqZWN0LCBvciB0aGF0IGEgcGFydGljdWxhcgogICAgICAgIGNoYXJhY3RlciBtdXN0IGJlIHByZXNlbnQuIFdoZW4gb25lIG9mIHRoZXNlIG9wdGltaXphdGlvbnMgYnlwYXNzZXMgdGhlCi0gICAgICAgcnVubmluZyBvZiBhIG1hdGNoLCAgYW55ICBpbmNsdWRlZCAgYmFja3RyYWNraW5nICB2ZXJicyAgd2lsbCAgbm90LCAgb2YKKyAgICAgICBydW5uaW5nICBvZiAgYSAgbWF0Y2gsICBhbnkgIGluY2x1ZGVkICBiYWNrdHJhY2tpbmcgIHZlcmJzIHdpbGwgbm90LCBvZgogICAgICAgIGNvdXJzZSwgYmUgcHJvY2Vzc2VkLiBZb3UgY2FuIHN1cHByZXNzIHRoZSBzdGFydC1vZi1tYXRjaCBvcHRpbWl6YXRpb25zCi0gICAgICAgYnkgc2V0dGluZyB0aGUgUENSRV9OT19TVEFSVF9PUFRJTUlaRSAgb3B0aW9uICB3aGVuICBjYWxsaW5nICBwY3JlX2NvbS0KKyAgICAgICBieSAgc2V0dGluZyAgdGhlICBQQ1JFX05PX1NUQVJUX09QVElNSVpFICBvcHRpb24gd2hlbiBjYWxsaW5nIHBjcmVfY29tLQogICAgICAgIHBpbGUoKSBvciBwY3JlX2V4ZWMoKSwgb3IgYnkgc3RhcnRpbmcgdGhlIHBhdHRlcm4gd2l0aCAoKk5PX1NUQVJUX09QVCkuCiAgICAgICAgVGhlcmUgaXMgbW9yZSBkaXNjdXNzaW9uIG9mIHRoaXMgb3B0aW9uIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkICJPcHRpb24KICAgICAgICBiaXRzIGZvciBwY3JlX2V4ZWMoKSIgaW4gdGhlIHBjcmVhcGkgZG9jdW1lbnRhdGlvbi4KIAotICAgICAgIEV4cGVyaW1lbnRzICB3aXRoICBQZXJsICBzdWdnZXN0IHRoYXQgaXQgdG9vIGhhcyBzaW1pbGFyIG9wdGltaXphdGlvbnMsCisgICAgICAgRXhwZXJpbWVudHMgd2l0aCBQZXJsIHN1Z2dlc3QgdGhhdCBpdCB0b28gIGhhcyAgc2ltaWxhciAgb3B0aW1pemF0aW9ucywKICAgICAgICBzb21ldGltZXMgbGVhZGluZyB0byBhbm9tYWxvdXMgcmVzdWx0cy4KIAogICAgVmVyYnMgdGhhdCBhY3QgaW1tZWRpYXRlbHkKIAotICAgICAgIFRoZSBmb2xsb3dpbmcgdmVyYnMgYWN0IGFzIHNvb24gYXMgdGhleSBhcmUgZW5jb3VudGVyZWQuIFRoZXkgIG1heSAgbm90CisgICAgICAgVGhlICBmb2xsb3dpbmcgIHZlcmJzIGFjdCBhcyBzb29uIGFzIHRoZXkgYXJlIGVuY291bnRlcmVkLiBUaGV5IG1heSBub3QKICAgICAgICBiZSBmb2xsb3dlZCBieSBhIG5hbWUuCiAKICAgICAgICAgICAoKkFDQ0VQVCkKIAotICAgICAgIFRoaXMgIHZlcmIgY2F1c2VzIHRoZSBtYXRjaCB0byBlbmQgc3VjY2Vzc2Z1bGx5LCBza2lwcGluZyB0aGUgcmVtYWluZGVyCi0gICAgICAgb2YgdGhlIHBhdHRlcm4uIEhvd2V2ZXIsIHdoZW4gaXQgaXMgaW5zaWRlIGEgc3VicGF0dGVybiB0aGF0IGlzICBjYWxsZWQKLSAgICAgICBhcyAgYSAgc3Vicm91dGluZSwgb25seSB0aGF0IHN1YnBhdHRlcm4gaXMgZW5kZWQgc3VjY2Vzc2Z1bGx5LiBNYXRjaGluZworICAgICAgIFRoaXMgdmVyYiBjYXVzZXMgdGhlIG1hdGNoIHRvIGVuZCBzdWNjZXNzZnVsbHksIHNraXBwaW5nIHRoZSAgcmVtYWluZGVyCisgICAgICAgb2YgIHRoZSBwYXR0ZXJuLiBIb3dldmVyLCB3aGVuIGl0IGlzIGluc2lkZSBhIHN1YnBhdHRlcm4gdGhhdCBpcyBjYWxsZWQKKyAgICAgICBhcyBhIHN1YnJvdXRpbmUsIG9ubHkgdGhhdCBzdWJwYXR0ZXJuIGlzIGVuZGVkICBzdWNjZXNzZnVsbHkuICBNYXRjaGluZwogICAgICAgIHRoZW4gY29udGludWVzIGF0IHRoZSBvdXRlciBsZXZlbC4gSWYgKCpBQ0NFUFQpIGluIHRyaWdnZXJlZCBpbiBhIHBvc2ktCi0gICAgICAgdGl2ZSAgYXNzZXJ0aW9uLCAgdGhlICBhc3NlcnRpb24gc3VjY2VlZHM7IGluIGEgbmVnYXRpdmUgYXNzZXJ0aW9uLCB0aGUKKyAgICAgICB0aXZlIGFzc2VydGlvbiwgdGhlIGFzc2VydGlvbiBzdWNjZWVkczsgaW4gYSAgbmVnYXRpdmUgIGFzc2VydGlvbiwgIHRoZQogICAgICAgIGFzc2VydGlvbiBmYWlscy4KIAotICAgICAgIElmICgqQUNDRVBUKSBpcyBpbnNpZGUgY2FwdHVyaW5nIHBhcmVudGhlc2VzLCB0aGUgZGF0YSBzbyBmYXIgIGlzICBjYXAtCisgICAgICAgSWYgICgqQUNDRVBUKSAgaXMgaW5zaWRlIGNhcHR1cmluZyBwYXJlbnRoZXNlcywgdGhlIGRhdGEgc28gZmFyIGlzIGNhcC0KICAgICAgICB0dXJlZC4gRm9yIGV4YW1wbGU6CiAKICAgICAgICAgIEEoKD86QXxCKCpBQ0NFUFQpfEMpRCkKIAotICAgICAgIFRoaXMgIG1hdGNoZXMgICJBQiIsICJBQUQiLCBvciAiQUNEIjsgd2hlbiBpdCBtYXRjaGVzICJBQiIsICJCIiBpcyBjYXAtCisgICAgICAgVGhpcyBtYXRjaGVzICJBQiIsICJBQUQiLCBvciAiQUNEIjsgd2hlbiBpdCBtYXRjaGVzICJBQiIsICJCIiAgaXMgIGNhcC0KICAgICAgICB0dXJlZCBieSB0aGUgb3V0ZXIgcGFyZW50aGVzZXMuCiAKICAgICAgICAgICgqRkFJTCkgb3IgKCpGKQogCi0gICAgICAgVGhpcyB2ZXJiIGNhdXNlcyBhIG1hdGNoaW5nIGZhaWx1cmUsIGZvcmNpbmcgYmFja3RyYWNraW5nIHRvIG9jY3VyLiAgSXQKLSAgICAgICBpcyAgZXF1aXZhbGVudCB0byAoPyEpIGJ1dCBlYXNpZXIgdG8gcmVhZC4gVGhlIFBlcmwgZG9jdW1lbnRhdGlvbiBub3RlcwotICAgICAgIHRoYXQgaXQgaXMgcHJvYmFibHkgdXNlZnVsIG9ubHkgd2hlbiBjb21iaW5lZCAgd2l0aCAgKD97fSkgIG9yICAoPz97fSkuCi0gICAgICAgVGhvc2UgIGFyZSwgIG9mIGNvdXJzZSwgUGVybCBmZWF0dXJlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiBQQ1JFLiBUaGUKLSAgICAgICBuZWFyZXN0IGVxdWl2YWxlbnQgaXMgdGhlIGNhbGxvdXQgZmVhdHVyZSwgYXMgZm9yIGV4YW1wbGUgaW4gdGhpcyAgcGF0LQorICAgICAgIFRoaXMgIHZlcmIgY2F1c2VzIGEgbWF0Y2hpbmcgZmFpbHVyZSwgZm9yY2luZyBiYWNrdHJhY2tpbmcgdG8gb2NjdXIuIEl0CisgICAgICAgaXMgZXF1aXZhbGVudCB0byAoPyEpIGJ1dCBlYXNpZXIgdG8gcmVhZC4gVGhlIFBlcmwgZG9jdW1lbnRhdGlvbiAgbm90ZXMKKyAgICAgICB0aGF0ICBpdCAgaXMgIHByb2JhYmx5ICB1c2VmdWwgb25seSB3aGVuIGNvbWJpbmVkIHdpdGggKD97fSkgb3IgKD8/e30pLgorICAgICAgIFRob3NlIGFyZSwgb2YgY291cnNlLCBQZXJsIGZlYXR1cmVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluICBQQ1JFLiAgVGhlCisgICAgICAgbmVhcmVzdCAgZXF1aXZhbGVudCBpcyB0aGUgY2FsbG91dCBmZWF0dXJlLCBhcyBmb3IgZXhhbXBsZSBpbiB0aGlzIHBhdC0KICAgICAgICB0ZXJuOgogCiAgICAgICAgICBhKyg/QykoKkZBSUwpCiAKLSAgICAgICBBICBtYXRjaCAgd2l0aCB0aGUgc3RyaW5nICJhYWFhIiBhbHdheXMgZmFpbHMsIGJ1dCB0aGUgY2FsbG91dCBpcyB0YWtlbgorICAgICAgIEEgbWF0Y2ggd2l0aCB0aGUgc3RyaW5nICJhYWFhIiBhbHdheXMgZmFpbHMsIGJ1dCB0aGUgY2FsbG91dCAgaXMgIHRha2VuCiAgICAgICAgYmVmb3JlIGVhY2ggYmFja3RyYWNrIGhhcHBlbnMgKGluIHRoaXMgZXhhbXBsZSwgMTAgdGltZXMpLgogCiAgICBSZWNvcmRpbmcgd2hpY2ggcGF0aCB3YXMgdGFrZW4KIAotICAgICAgIFRoZXJlIGlzIG9uZSB2ZXJiIHdob3NlIG1haW4gcHVycG9zZSAgaXMgIHRvICB0cmFjayAgaG93ICBhICBtYXRjaCAgd2FzCi0gICAgICAgYXJyaXZlZCAgYXQsICB0aG91Z2ggIGl0ICBhbHNvICBoYXMgYSBzZWNvbmRhcnkgdXNlIGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgICBUaGVyZSAgaXMgIG9uZSAgdmVyYiAgd2hvc2UgIG1haW4gIHB1cnBvc2UgIGlzIHRvIHRyYWNrIGhvdyBhIG1hdGNoIHdhcworICAgICAgIGFycml2ZWQgYXQsIHRob3VnaCBpdCBhbHNvIGhhcyBhICBzZWNvbmRhcnkgIHVzZSAgaW4gIGNvbmp1bmN0aW9uICB3aXRoCiAgICAgICAgYWR2YW5jaW5nIHRoZSBtYXRjaCBzdGFydGluZyBwb2ludCAoc2VlICgqU0tJUCkgYmVsb3cpLgogCiAgICAgICAgICAoKk1BUks6TkFNRSkgb3IgKCo6TkFNRSkKIAotICAgICAgIEEgbmFtZSBpcyBhbHdheXMgIHJlcXVpcmVkICB3aXRoICB0aGlzICB2ZXJiLiAgVGhlcmUgIG1heSAgYmUgIGFzICBtYW55Ci0gICAgICAgaW5zdGFuY2VzICBvZiAgKCpNQVJLKSBhcyB5b3UgbGlrZSBpbiBhIHBhdHRlcm4sIGFuZCB0aGVpciBuYW1lcyBkbyBub3QKKyAgICAgICBBICBuYW1lICBpcyAgYWx3YXlzICByZXF1aXJlZCAgd2l0aCAgdGhpcyAgdmVyYi4gIFRoZXJlICBtYXkgYmUgYXMgbWFueQorICAgICAgIGluc3RhbmNlcyBvZiAoKk1BUkspIGFzIHlvdSBsaWtlIGluIGEgcGF0dGVybiwgYW5kIHRoZWlyIG5hbWVzICBkbyAgbm90CiAgICAgICAgaGF2ZSB0byBiZSB1bmlxdWUuCiAKLSAgICAgICBXaGVuIGEgbWF0Y2ggc3VjY2VlZHMsIHRoZSBuYW1lIG9mIHRoZSAgbGFzdC1lbmNvdW50ZXJlZCAgKCpNQVJLOk5BTUUpLAotICAgICAgICgqUFJVTkU6TkFNRSksICBvciAgKCpUSEVOOk5BTUUpIG9uIHRoZSBtYXRjaGluZyBwYXRoIGlzIHBhc3NlZCBiYWNrIHRvCi0gICAgICAgdGhlIGNhbGxlciBhcyAgZGVzY3JpYmVkICBpbiAgdGhlICBzZWN0aW9uICBlbnRpdGxlZCAgIkV4dHJhICBkYXRhICBmb3IKLSAgICAgICBwY3JlX2V4ZWMoKSIgIGluICB0aGUgIHBjcmVhcGkgIGRvY3VtZW50YXRpb24uICBIZXJlICBpcyAgYW4gZXhhbXBsZSBvZgotICAgICAgIHBjcmV0ZXN0IG91dHB1dCwgd2hlcmUgdGhlIC9LIG1vZGlmaWVyIHJlcXVlc3RzIHRoZSByZXRyaWV2YWwgYW5kICBvdXQtCisgICAgICAgV2hlbiAgYSAgbWF0Y2ggc3VjY2VlZHMsIHRoZSBuYW1lIG9mIHRoZSBsYXN0LWVuY291bnRlcmVkICgqTUFSSzpOQU1FKSwKKyAgICAgICAoKlBSVU5FOk5BTUUpLCBvciAoKlRIRU46TkFNRSkgb24gdGhlIG1hdGNoaW5nIHBhdGggaXMgcGFzc2VkICBiYWNrICB0bworICAgICAgIHRoZSAgY2FsbGVyICBhcyAgZGVzY3JpYmVkICBpbiAgdGhlICBzZWN0aW9uICBlbnRpdGxlZCAgIkV4dHJhIGRhdGEgZm9yCisgICAgICAgcGNyZV9leGVjKCkiIGluIHRoZSAgcGNyZWFwaSAgZG9jdW1lbnRhdGlvbi4gIEhlcmUgIGlzICBhbiAgZXhhbXBsZSAgb2YKKyAgICAgICBwY3JldGVzdCAgb3V0cHV0LCB3aGVyZSB0aGUgL0sgbW9kaWZpZXIgcmVxdWVzdHMgdGhlIHJldHJpZXZhbCBhbmQgb3V0LQogICAgICAgIHB1dHRpbmcgb2YgKCpNQVJLKSBkYXRhOgogCiAgICAgICAgICAgIHJlPiAvWCgqTUFSSzpBKVl8WCgqTUFSSzpCKVovSwpAQCAtNzM2Niw3MyArNzM3OSw3MyBAQAogICAgICAgICAgTUs6IEIKIAogICAgICAgIFRoZSAoKk1BUkspIG5hbWUgaXMgdGFnZ2VkIHdpdGggIk1LOiIgaW4gdGhpcyBvdXRwdXQsIGFuZCBpbiB0aGlzIGV4YW0tCi0gICAgICAgcGxlIGl0IGluZGljYXRlcyB3aGljaCBvZiB0aGUgdHdvIGFsdGVybmF0aXZlcyBtYXRjaGVkLiBUaGlzIGlzIGEgIG1vcmUKLSAgICAgICBlZmZpY2llbnQgIHdheSBvZiBvYnRhaW5pbmcgdGhpcyBpbmZvcm1hdGlvbiB0aGFuIHB1dHRpbmcgZWFjaCBhbHRlcm5hLQorICAgICAgIHBsZSAgaXQgaW5kaWNhdGVzIHdoaWNoIG9mIHRoZSB0d28gYWx0ZXJuYXRpdmVzIG1hdGNoZWQuIFRoaXMgaXMgYSBtb3JlCisgICAgICAgZWZmaWNpZW50IHdheSBvZiBvYnRhaW5pbmcgdGhpcyBpbmZvcm1hdGlvbiB0aGFuIHB1dHRpbmcgZWFjaCAgYWx0ZXJuYS0KICAgICAgICB0aXZlIGluIGl0cyBvd24gY2FwdHVyaW5nIHBhcmVudGhlc2VzLgogCi0gICAgICAgSWYgYSB2ZXJiIHdpdGggYSBuYW1lIGlzIGVuY291bnRlcmVkIGluIGEgcG9zaXRpdmUgIGFzc2VydGlvbiAgdGhhdCAgaXMKLSAgICAgICB0cnVlLCAgdGhlICBuYW1lICBpcyByZWNvcmRlZCBhbmQgcGFzc2VkIGJhY2sgaWYgaXQgaXMgdGhlIGxhc3QtZW5jb3VuLQorICAgICAgIElmICBhICB2ZXJiICB3aXRoIGEgbmFtZSBpcyBlbmNvdW50ZXJlZCBpbiBhIHBvc2l0aXZlIGFzc2VydGlvbiB0aGF0IGlzCisgICAgICAgdHJ1ZSwgdGhlIG5hbWUgaXMgcmVjb3JkZWQgYW5kIHBhc3NlZCBiYWNrIGlmIGl0ICBpcyAgdGhlICBsYXN0LWVuY291bi0KICAgICAgICB0ZXJlZC4gVGhpcyBkb2VzIG5vdCBoYXBwZW4gZm9yIG5lZ2F0aXZlIGFzc2VydGlvbnMgb3IgZmFpbGluZyBwb3NpdGl2ZQogICAgICAgIGFzc2VydGlvbnMuCiAKLSAgICAgICBBZnRlciAgYSAgcGFydGlhbCBtYXRjaCBvciBhIGZhaWxlZCBtYXRjaCwgdGhlIGxhc3QgZW5jb3VudGVyZWQgbmFtZSBpbgorICAgICAgIEFmdGVyIGEgcGFydGlhbCBtYXRjaCBvciBhIGZhaWxlZCBtYXRjaCwgdGhlIGxhc3QgZW5jb3VudGVyZWQgIG5hbWUgIGluCiAgICAgICAgdGhlIGVudGlyZSBtYXRjaCBwcm9jZXNzIGlzIHJldHVybmVkLiBGb3IgZXhhbXBsZToKIAogICAgICAgICAgICByZT4gL1goKk1BUks6QSlZfFgoKk1BUks6QilaL0sKICAgICAgICAgIGRhdGE+IFhQCiAgICAgICAgICBObyBtYXRjaCwgbWFyayA9IEIKIAotICAgICAgIE5vdGUgdGhhdCBpbiB0aGlzIHVuYW5jaG9yZWQgZXhhbXBsZSB0aGUgIG1hcmsgIGlzICByZXRhaW5lZCAgZnJvbSAgdGhlCisgICAgICAgTm90ZSAgdGhhdCAgaW4gIHRoaXMgIHVuYW5jaG9yZWQgIGV4YW1wbGUgdGhlIG1hcmsgaXMgcmV0YWluZWQgZnJvbSB0aGUKICAgICAgICBtYXRjaCBhdHRlbXB0IHRoYXQgc3RhcnRlZCBhdCB0aGUgbGV0dGVyICJYIiBpbiB0aGUgc3ViamVjdC4gU3Vic2VxdWVudAogICAgICAgIG1hdGNoIGF0dGVtcHRzIHN0YXJ0aW5nIGF0ICJQIiBhbmQgdGhlbiB3aXRoIGFuIGVtcHR5IHN0cmluZyBkbyBub3QgZ2V0CiAgICAgICAgYXMgZmFyIGFzIHRoZSAoKk1BUkspIGl0ZW0sIGJ1dCBuZXZlcnRoZWxlc3MgZG8gbm90IHJlc2V0IGl0LgogCi0gICAgICAgSWYgIHlvdSAgYXJlICBpbnRlcmVzdGVkICBpbiAgKCpNQVJLKSAgdmFsdWVzIGFmdGVyIGZhaWxlZCBtYXRjaGVzLCB5b3UKLSAgICAgICBzaG91bGQgcHJvYmFibHkgc2V0IHRoZSBQQ1JFX05PX1NUQVJUX09QVElNSVpFIG9wdGlvbiAgKHNlZSAgYWJvdmUpICB0bworICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiAgKCpNQVJLKSAgdmFsdWVzICBhZnRlciAgZmFpbGVkICBtYXRjaGVzLCAgeW91CisgICAgICAgc2hvdWxkICBwcm9iYWJseSAgc2V0ICB0aGUgUENSRV9OT19TVEFSVF9PUFRJTUlaRSBvcHRpb24gKHNlZSBhYm92ZSkgdG8KICAgICAgICBlbnN1cmUgdGhhdCB0aGUgbWF0Y2ggaXMgYWx3YXlzIGF0dGVtcHRlZC4KIAogICAgVmVyYnMgdGhhdCBhY3QgYWZ0ZXIgYmFja3RyYWNraW5nCiAKICAgICAgICBUaGUgZm9sbG93aW5nIHZlcmJzIGRvIG5vdGhpbmcgd2hlbiB0aGV5IGFyZSBlbmNvdW50ZXJlZC4gTWF0Y2hpbmcgY29uLQotICAgICAgIHRpbnVlcyB3aXRoIHdoYXQgZm9sbG93cywgYnV0IGlmIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgbWF0Y2gsICBjYXVzaW5nCi0gICAgICAgYSAgYmFja3RyYWNrICB0byAgdGhlICB2ZXJiLCBhIGZhaWx1cmUgaXMgZm9yY2VkLiBUaGF0IGlzLCBiYWNrdHJhY2tpbmcKLSAgICAgICBjYW5ub3QgcGFzcyB0byB0aGUgbGVmdCBvZiB0aGUgdmVyYi4gSG93ZXZlciwgd2hlbiBvbmUgb2YgIHRoZXNlICB2ZXJicworICAgICAgIHRpbnVlcyAgd2l0aCB3aGF0IGZvbGxvd3MsIGJ1dCBpZiB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IG1hdGNoLCBjYXVzaW5nCisgICAgICAgYSBiYWNrdHJhY2sgdG8gdGhlIHZlcmIsIGEgZmFpbHVyZSBpcyAgZm9yY2VkLiAgVGhhdCAgaXMsICBiYWNrdHJhY2tpbmcKKyAgICAgICBjYW5ub3QgIHBhc3MgIHRvIHRoZSBsZWZ0IG9mIHRoZSB2ZXJiLiBIb3dldmVyLCB3aGVuIG9uZSBvZiB0aGVzZSB2ZXJicwogICAgICAgIGFwcGVhcnMgaW5zaWRlIGFuIGF0b21pYyBncm91cCBvciBhbiBhc3NlcnRpb24gdGhhdCBpcyB0cnVlLCBpdHMgZWZmZWN0Ci0gICAgICAgaXMgY29uZmluZWQgdG8gdGhhdCBncm91cCwgYmVjYXVzZSBvbmNlIHRoZSAgZ3JvdXAgIGhhcyAgYmVlbiAgbWF0Y2hlZCwKLSAgICAgICB0aGVyZSAgaXMgbmV2ZXIgYW55IGJhY2t0cmFja2luZyBpbnRvIGl0LiBJbiB0aGlzIHNpdHVhdGlvbiwgYmFja3RyYWNrLQotICAgICAgIGluZyBjYW4gImp1bXAgYmFjayIgdG8gdGhlIGxlZnQgb2YgdGhlIGVudGlyZSBhdG9taWMgIGdyb3VwICBvciAgYXNzZXItCi0gICAgICAgdGlvbi4gIChSZW1lbWJlciAgYWxzbywgIGFzICBzdGF0ZWQgIGFib3ZlLCB0aGF0IHRoaXMgbG9jYWxpemF0aW9uIGFsc28KKyAgICAgICBpcyAgY29uZmluZWQgIHRvICB0aGF0ICBncm91cCwgYmVjYXVzZSBvbmNlIHRoZSBncm91cCBoYXMgYmVlbiBtYXRjaGVkLAorICAgICAgIHRoZXJlIGlzIG5ldmVyIGFueSBiYWNrdHJhY2tpbmcgaW50byBpdC4gSW4gdGhpcyBzaXR1YXRpb24sICBiYWNrdHJhY2stCisgICAgICAgaW5nICBjYW4gICJqdW1wICBiYWNrIiB0byB0aGUgbGVmdCBvZiB0aGUgZW50aXJlIGF0b21pYyBncm91cCBvciBhc3Nlci0KKyAgICAgICB0aW9uLiAoUmVtZW1iZXIgYWxzbywgYXMgc3RhdGVkICBhYm92ZSwgIHRoYXQgIHRoaXMgIGxvY2FsaXphdGlvbiAgYWxzbwogICAgICAgIGFwcGxpZXMgaW4gc3Vicm91dGluZSBjYWxscy4pCiAKLSAgICAgICBUaGVzZSB2ZXJicyBkaWZmZXIgaW4gZXhhY3RseSB3aGF0IGtpbmQgb2YgZmFpbHVyZSAgb2NjdXJzICB3aGVuICBiYWNrLQotICAgICAgIHRyYWNraW5nICByZWFjaGVzICB0aGVtLiAgVGhlIGJlaGF2aW91ciBkZXNjcmliZWQgYmVsb3cgaXMgd2hhdCBoYXBwZW5zCi0gICAgICAgd2hlbiB0aGUgdmVyYiBpcyBub3QgaW4gYSBzdWJyb3V0aW5lIG9yIGFuIGFzc2VydGlvbi4gIFN1YnNlcXVlbnQgIHNlYy0KKyAgICAgICBUaGVzZSAgdmVyYnMgIGRpZmZlciAgaW4gZXhhY3RseSB3aGF0IGtpbmQgb2YgZmFpbHVyZSBvY2N1cnMgd2hlbiBiYWNrLQorICAgICAgIHRyYWNraW5nIHJlYWNoZXMgdGhlbS4gVGhlIGJlaGF2aW91ciBkZXNjcmliZWQgYmVsb3cgIGlzICB3aGF0ICBoYXBwZW5zCisgICAgICAgd2hlbiAgdGhlICB2ZXJiIGlzIG5vdCBpbiBhIHN1YnJvdXRpbmUgb3IgYW4gYXNzZXJ0aW9uLiBTdWJzZXF1ZW50IHNlYy0KICAgICAgICB0aW9ucyBjb3ZlciB0aGVzZSBzcGVjaWFsIGNhc2VzLgogCiAgICAgICAgICAoKkNPTU1JVCkKIAotICAgICAgIFRoaXMgIHZlcmIsIHdoaWNoIG1heSBub3QgYmUgZm9sbG93ZWQgYnkgYSBuYW1lLCBjYXVzZXMgdGhlIHdob2xlIG1hdGNoCisgICAgICAgVGhpcyB2ZXJiLCB3aGljaCBtYXkgbm90IGJlIGZvbGxvd2VkIGJ5IGEgbmFtZSwgY2F1c2VzIHRoZSB3aG9sZSAgbWF0Y2gKICAgICAgICB0byBmYWlsIG91dHJpZ2h0IGlmIHRoZXJlIGlzIGEgbGF0ZXIgbWF0Y2hpbmcgZmFpbHVyZSB0aGF0IGNhdXNlcyBiYWNrLQotICAgICAgIHRyYWNraW5nICB0byAgcmVhY2ggIGl0LiAgRXZlbiBpZiB0aGUgcGF0dGVybiBpcyB1bmFuY2hvcmVkLCBubyBmdXJ0aGVyCisgICAgICAgdHJhY2tpbmcgdG8gcmVhY2ggaXQuIEV2ZW4gaWYgdGhlIHBhdHRlcm4gIGlzICB1bmFuY2hvcmVkLCAgbm8gIGZ1cnRoZXIKICAgICAgICBhdHRlbXB0cyB0byBmaW5kIGEgbWF0Y2ggYnkgYWR2YW5jaW5nIHRoZSBzdGFydGluZyBwb2ludCB0YWtlIHBsYWNlLiBJZgotICAgICAgICgqQ09NTUlUKSAgaXMgIHRoZSAgb25seSBiYWNrdHJhY2tpbmcgdmVyYiB0aGF0IGlzIGVuY291bnRlcmVkLCBvbmNlIGl0CisgICAgICAgKCpDT01NSVQpIGlzIHRoZSBvbmx5IGJhY2t0cmFja2luZyB2ZXJiIHRoYXQgaXMgIGVuY291bnRlcmVkLCAgb25jZSAgaXQKICAgICAgICBoYXMgYmVlbiBwYXNzZWQgcGNyZV9leGVjKCkgaXMgY29tbWl0dGVkIHRvIGZpbmRpbmcgYSBtYXRjaCBhdCB0aGUgY3VyLQogICAgICAgIHJlbnQgc3RhcnRpbmcgcG9pbnQsIG9yIG5vdCBhdCBhbGwuIEZvciBleGFtcGxlOgogCiAgICAgICAgICBhKygqQ09NTUlUKWIKIAotICAgICAgIFRoaXMgIG1hdGNoZXMgICJ4eGFhYiIgYnV0IG5vdCAiYWFjYWFiIi4gSXQgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBraW5kCisgICAgICAgVGhpcyBtYXRjaGVzICJ4eGFhYiIgYnV0IG5vdCAiYWFjYWFiIi4gSXQgY2FuIGJlIHRob3VnaHQgb2YgYXMgIGEgIGtpbmQKICAgICAgICBvZiBkeW5hbWljIGFuY2hvciwgb3IgIkkndmUgc3RhcnRlZCwgc28gSSBtdXN0IGZpbmlzaC4iIFRoZSBuYW1lIG9mIHRoZQotICAgICAgIG1vc3QgIHJlY2VudGx5IHBhc3NlZCAoKk1BUkspIGluIHRoZSBwYXRoIGlzIHBhc3NlZCBiYWNrIHdoZW4gKCpDT01NSVQpCisgICAgICAgbW9zdCByZWNlbnRseSBwYXNzZWQgKCpNQVJLKSBpbiB0aGUgcGF0aCBpcyBwYXNzZWQgYmFjayB3aGVuICAoKkNPTU1JVCkKICAgICAgICBmb3JjZXMgYSBtYXRjaCBmYWlsdXJlLgogCi0gICAgICAgSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBiYWNrdHJhY2tpbmcgdmVyYiBpbiBhIHBhdHRlcm4sICBhICBkaWZmZXJlbnQKLSAgICAgICBvbmUgIHRoYXQgIGZvbGxvd3MgICgqQ09NTUlUKSBtYXkgYmUgdHJpZ2dlcmVkIGZpcnN0LCBzbyBtZXJlbHkgcGFzc2luZworICAgICAgIElmICB0aGVyZSAgaXMgbW9yZSB0aGFuIG9uZSBiYWNrdHJhY2tpbmcgdmVyYiBpbiBhIHBhdHRlcm4sIGEgZGlmZmVyZW50CisgICAgICAgb25lIHRoYXQgZm9sbG93cyAoKkNPTU1JVCkgbWF5IGJlIHRyaWdnZXJlZCBmaXJzdCwgIHNvICBtZXJlbHkgIHBhc3NpbmcKICAgICAgICAoKkNPTU1JVCkgZHVyaW5nIGEgbWF0Y2ggZG9lcyBub3QgYWx3YXlzIGd1YXJhbnRlZSB0aGF0IGEgbWF0Y2ggbXVzdCBiZQogICAgICAgIGF0IHRoaXMgc3RhcnRpbmcgcG9pbnQuCiAKLSAgICAgICBOb3RlICB0aGF0ICAoKkNPTU1JVCkgIGF0ICB0aGUgc3RhcnQgb2YgYSBwYXR0ZXJuIGlzIG5vdCB0aGUgc2FtZSBhcyBhbgotICAgICAgIGFuY2hvciwgdW5sZXNzIFBDUkUncyBzdGFydC1vZi1tYXRjaCBvcHRpbWl6YXRpb25zIGFyZSB0dXJuZWQgIG9mZiwgIGFzCisgICAgICAgTm90ZSB0aGF0ICgqQ09NTUlUKSBhdCB0aGUgc3RhcnQgb2YgYSBwYXR0ZXJuIGlzIG5vdCAgdGhlICBzYW1lICBhcyAgYW4KKyAgICAgICBhbmNob3IsICB1bmxlc3MgIFBDUkUncyBzdGFydC1vZi1tYXRjaCBvcHRpbWl6YXRpb25zIGFyZSB0dXJuZWQgb2ZmLCBhcwogICAgICAgIHNob3duIGluIHRoaXMgb3V0cHV0IGZyb20gcGNyZXRlc3Q6CiAKICAgICAgICAgICAgcmU+IC8oKkNPTU1JVClhYmMvCkBAIC03NDQzLDIwNyArNzQ1NiwyMDcgQEAKIAogICAgICAgIEZvciB0aGlzIHBhdHRlcm4sIFBDUkUga25vd3MgdGhhdCBhbnkgbWF0Y2ggbXVzdCBzdGFydCB3aXRoICJhIiwgc28gdGhlCiAgICAgICAgb3B0aW1pemF0aW9uIHNraXBzIGFsb25nIHRoZSBzdWJqZWN0IHRvICJhIiBiZWZvcmUgYXBwbHlpbmcgdGhlIHBhdHRlcm4KLSAgICAgICB0byAgdGhlIGZpcnN0IHNldCBvZiBkYXRhLiBUaGUgbWF0Y2ggYXR0ZW1wdCB0aGVuIHN1Y2NlZWRzLiBJbiB0aGUgc2VjLQotICAgICAgIG9uZCBzZXQgb2YgZGF0YSwgdGhlIGVzY2FwZSBzZXF1ZW5jZSBcWSBpcyBpbnRlcnByZXRlZCBieSB0aGUgIHBjcmV0ZXN0Ci0gICAgICAgcHJvZ3JhbS4gIEl0ICBjYXVzZXMgIHRoZSAgUENSRV9OT19TVEFSVF9PUFRJTUlaRSBvcHRpb24gdG8gYmUgc2V0IHdoZW4KKyAgICAgICB0byB0aGUgZmlyc3Qgc2V0IG9mIGRhdGEuIFRoZSBtYXRjaCBhdHRlbXB0IHRoZW4gc3VjY2VlZHMuIEluIHRoZSAgc2VjLQorICAgICAgIG9uZCAgc2V0IG9mIGRhdGEsIHRoZSBlc2NhcGUgc2VxdWVuY2UgXFkgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlIHBjcmV0ZXN0CisgICAgICAgcHJvZ3JhbS4gSXQgY2F1c2VzIHRoZSBQQ1JFX05PX1NUQVJUX09QVElNSVpFIG9wdGlvbiAgdG8gIGJlICBzZXQgIHdoZW4KICAgICAgICBwY3JlX2V4ZWMoKSBpcyBjYWxsZWQuICBUaGlzIGRpc2FibGVzIHRoZSBvcHRpbWl6YXRpb24gdGhhdCBza2lwcyBhbG9uZwogICAgICAgIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIFRoZSBwYXR0ZXJuIGlzIG5vdyBhcHBsaWVkIHN0YXJ0aW5nIGF0ICJ4IiwgYW5kCi0gICAgICAgc28gdGhlICgqQ09NTUlUKSBjYXVzZXMgdGhlIG1hdGNoIHRvICBmYWlsICB3aXRob3V0ICB0cnlpbmcgIGFueSAgb3RoZXIKKyAgICAgICBzbyAgdGhlICAoKkNPTU1JVCkgIGNhdXNlcyAgdGhlICBtYXRjaCB0byBmYWlsIHdpdGhvdXQgdHJ5aW5nIGFueSBvdGhlcgogICAgICAgIHN0YXJ0aW5nIHBvaW50cy4KIAogICAgICAgICAgKCpQUlVORSkgb3IgKCpQUlVORTpOQU1FKQogCi0gICAgICAgVGhpcyAgdmVyYiBjYXVzZXMgdGhlIG1hdGNoIHRvIGZhaWwgYXQgdGhlIGN1cnJlbnQgc3RhcnRpbmcgcG9zaXRpb24gaW4KKyAgICAgICBUaGlzIHZlcmIgY2F1c2VzIHRoZSBtYXRjaCB0byBmYWlsIGF0IHRoZSBjdXJyZW50IHN0YXJ0aW5nIHBvc2l0aW9uICBpbgogICAgICAgIHRoZSBzdWJqZWN0IGlmIHRoZXJlIGlzIGEgbGF0ZXIgbWF0Y2hpbmcgZmFpbHVyZSB0aGF0IGNhdXNlcyBiYWNrdHJhY2stCi0gICAgICAgaW5nICB0byAgcmVhY2ggaXQuIElmIHRoZSBwYXR0ZXJuIGlzIHVuYW5jaG9yZWQsIHRoZSBub3JtYWwgImJ1bXBhbG9uZyIKLSAgICAgICBhZHZhbmNlIHRvIHRoZSBuZXh0IHN0YXJ0aW5nIGNoYXJhY3RlciB0aGVuIGhhcHBlbnMuICBCYWNrdHJhY2tpbmcgIGNhbgotICAgICAgIG9jY3VyICBhcyAgdXN1YWwgdG8gdGhlIGxlZnQgb2YgKCpQUlVORSksIGJlZm9yZSBpdCBpcyByZWFjaGVkLCBvciB3aGVuCi0gICAgICAgbWF0Y2hpbmcgdG8gdGhlIHJpZ2h0IG9mICgqUFJVTkUpLCBidXQgaWYgdGhlcmUgIGlzICBubyAgbWF0Y2ggIHRvICB0aGUKLSAgICAgICByaWdodCwgIGJhY2t0cmFja2luZyBjYW5ub3QgY3Jvc3MgKCpQUlVORSkuIEluIHNpbXBsZSBjYXNlcywgdGhlIHVzZSBvZgotICAgICAgICgqUFJVTkUpIGlzIGp1c3QgYW4gYWx0ZXJuYXRpdmUgdG8gYW4gYXRvbWljIGdyb3VwIG9yIHBvc3Nlc3NpdmUgIHF1YW4tCisgICAgICAgaW5nIHRvIHJlYWNoIGl0LiBJZiB0aGUgcGF0dGVybiBpcyB1bmFuY2hvcmVkLCB0aGUgIG5vcm1hbCAgImJ1bXBhbG9uZyIKKyAgICAgICBhZHZhbmNlICB0byAgdGhlIG5leHQgc3RhcnRpbmcgY2hhcmFjdGVyIHRoZW4gaGFwcGVucy4gQmFja3RyYWNraW5nIGNhbgorICAgICAgIG9jY3VyIGFzIHVzdWFsIHRvIHRoZSBsZWZ0IG9mICgqUFJVTkUpLCBiZWZvcmUgaXQgaXMgcmVhY2hlZCwgIG9yICB3aGVuCisgICAgICAgbWF0Y2hpbmcgIHRvICB0aGUgIHJpZ2h0ICBvZiAgKCpQUlVORSksIGJ1dCBpZiB0aGVyZSBpcyBubyBtYXRjaCB0byB0aGUKKyAgICAgICByaWdodCwgYmFja3RyYWNraW5nIGNhbm5vdCBjcm9zcyAoKlBSVU5FKS4gSW4gc2ltcGxlIGNhc2VzLCB0aGUgdXNlICBvZgorICAgICAgICgqUFJVTkUpICBpcyBqdXN0IGFuIGFsdGVybmF0aXZlIHRvIGFuIGF0b21pYyBncm91cCBvciBwb3NzZXNzaXZlIHF1YW4tCiAgICAgICAgdGlmaWVyLCBidXQgdGhlcmUgYXJlIHNvbWUgdXNlcyBvZiAoKlBSVU5FKSB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgaW4KLSAgICAgICBhbnkgb3RoZXIgd2F5LiBJbiBhbiBhbmNob3JlZCBwYXR0ZXJuICgqUFJVTkUpIGhhcyB0aGUgc2FtZSAgZWZmZWN0ICBhcworICAgICAgIGFueSAgb3RoZXIgIHdheS4gSW4gYW4gYW5jaG9yZWQgcGF0dGVybiAoKlBSVU5FKSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCiAgICAgICAgKCpDT01NSVQpLgogCiAgICAgICAgVGhlICAgYmVoYXZpb3VyICAgb2YgICAoKlBSVU5FOk5BTUUpICAgaXMgICB0aGUgICBub3QgICB0aGUgICBzYW1lICAgYXMKLSAgICAgICAoKk1BUks6TkFNRSkoKlBSVU5FKS4gIEl0IGlzIGxpa2UgKCpNQVJLOk5BTUUpICBpbiAgdGhhdCAgdGhlICBuYW1lICBpcwotICAgICAgIHJlbWVtYmVyZWQgIGZvciAgcGFzc2luZyAgYmFjayAgdG8gIHRoZSAgY2FsbGVyLiAgSG93ZXZlciwgKCpTS0lQOk5BTUUpCisgICAgICAgKCpNQVJLOk5BTUUpKCpQUlVORSkuICAgSXQgIGlzICBsaWtlICAoKk1BUks6TkFNRSkgIGluIHRoYXQgdGhlIG5hbWUgaXMKKyAgICAgICByZW1lbWJlcmVkIGZvciAgcGFzc2luZyAgYmFjayAgdG8gIHRoZSAgY2FsbGVyLiAgSG93ZXZlciwgICgqU0tJUDpOQU1FKQogICAgICAgIHNlYXJjaGVzIG9ubHkgZm9yIG5hbWVzIHNldCB3aXRoICgqTUFSSykuCiAKICAgICAgICAgICgqU0tJUCkKIAotICAgICAgIFRoaXMgdmVyYiwgd2hlbiBnaXZlbiB3aXRob3V0IGEgbmFtZSwgaXMgbGlrZSAoKlBSVU5FKSwgZXhjZXB0IHRoYXQgIGlmCi0gICAgICAgdGhlICBwYXR0ZXJuICBpcyB1bmFuY2hvcmVkLCB0aGUgImJ1bXBhbG9uZyIgYWR2YW5jZSBpcyBub3QgdG8gdGhlIG5leHQKKyAgICAgICBUaGlzICB2ZXJiLCB3aGVuIGdpdmVuIHdpdGhvdXQgYSBuYW1lLCBpcyBsaWtlICgqUFJVTkUpLCBleGNlcHQgdGhhdCBpZgorICAgICAgIHRoZSBwYXR0ZXJuIGlzIHVuYW5jaG9yZWQsIHRoZSAiYnVtcGFsb25nIiBhZHZhbmNlIGlzIG5vdCB0byAgdGhlICBuZXh0CiAgICAgICAgY2hhcmFjdGVyLCBidXQgdG8gdGhlIHBvc2l0aW9uIGluIHRoZSBzdWJqZWN0IHdoZXJlICgqU0tJUCkgd2FzIGVuY291bi0KLSAgICAgICB0ZXJlZC4gICgqU0tJUCkgIHNpZ25pZmllcyB0aGF0IHdoYXRldmVyIHRleHQgd2FzIG1hdGNoZWQgbGVhZGluZyB1cCB0bworICAgICAgIHRlcmVkLiAoKlNLSVApIHNpZ25pZmllcyB0aGF0IHdoYXRldmVyIHRleHQgd2FzIG1hdGNoZWQgbGVhZGluZyAgdXAgIHRvCiAgICAgICAgaXQgY2Fubm90IGJlIHBhcnQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiBDb25zaWRlcjoKIAogICAgICAgICAgYSsoKlNLSVApYgogCi0gICAgICAgSWYgdGhlIHN1YmplY3QgaXMgImFhYWFjLi4uIiwgIGFmdGVyICB0aGUgIGZpcnN0ICBtYXRjaCAgYXR0ZW1wdCAgZmFpbHMKLSAgICAgICAoc3RhcnRpbmcgIGF0ICB0aGUgIGZpcnN0ICBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyksIHRoZSBzdGFydGluZyBwb2ludAorICAgICAgIElmICB0aGUgIHN1YmplY3QgIGlzICAiYWFhYWMuLi4iLCAgYWZ0ZXIgIHRoZSBmaXJzdCBtYXRjaCBhdHRlbXB0IGZhaWxzCisgICAgICAgKHN0YXJ0aW5nIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlICBzdHJpbmcpLCAgdGhlICBzdGFydGluZyAgcG9pbnQKICAgICAgICBza2lwcyBvbiB0byBzdGFydCB0aGUgbmV4dCBhdHRlbXB0IGF0ICJjIi4gTm90ZSB0aGF0IGEgcG9zc2Vzc2l2ZSBxdWFuLQotICAgICAgIHRpZmVyICBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIGV4YW1wbGU7IGFsdGhvdWdoIGl0IHdvdWxkCi0gICAgICAgc3VwcHJlc3MgYmFja3RyYWNraW5nICBkdXJpbmcgIHRoZSAgZmlyc3QgIG1hdGNoICBhdHRlbXB0LCAgdGhlICBzZWNvbmQKLSAgICAgICBhdHRlbXB0ICB3b3VsZCAgc3RhcnQgYXQgdGhlIHNlY29uZCBjaGFyYWN0ZXIgaW5zdGVhZCBvZiBza2lwcGluZyBvbiB0bworICAgICAgIHRpZmVyIGRvZXMgbm90IGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgZXhhbXBsZTsgYWx0aG91Z2ggaXQgIHdvdWxkCisgICAgICAgc3VwcHJlc3MgIGJhY2t0cmFja2luZyAgZHVyaW5nICB0aGUgIGZpcnN0ICBtYXRjaCAgYXR0ZW1wdCwgIHRoZSBzZWNvbmQKKyAgICAgICBhdHRlbXB0IHdvdWxkIHN0YXJ0IGF0IHRoZSBzZWNvbmQgY2hhcmFjdGVyIGluc3RlYWQgb2Ygc2tpcHBpbmcgIG9uICB0bwogICAgICAgICJjIi4KIAogICAgICAgICAgKCpTS0lQOk5BTUUpCiAKICAgICAgICBXaGVuICgqU0tJUCkgaGFzIGFuIGFzc29jaWF0ZWQgbmFtZSwgaXRzIGJlaGF2aW91ciBpcyBtb2RpZmllZC4gV2hlbiBpdAogICAgICAgIGlzIHRyaWdnZXJlZCwgdGhlIHByZXZpb3VzIHBhdGggdGhyb3VnaCB0aGUgcGF0dGVybiBpcyBzZWFyY2hlZCBmb3IgdGhlCi0gICAgICAgbW9zdCByZWNlbnQgKCpNQVJLKSB0aGF0IGhhcyB0aGUgIHNhbWUgIG5hbWUuICBJZiAgb25lICBpcyAgZm91bmQsICB0aGUKKyAgICAgICBtb3N0ICByZWNlbnQgICgqTUFSSykgIHRoYXQgIGhhcyAgdGhlICBzYW1lICBuYW1lLiBJZiBvbmUgaXMgZm91bmQsIHRoZQogICAgICAgICJidW1wYWxvbmciIGFkdmFuY2UgaXMgdG8gdGhlIHN1YmplY3QgcG9zaXRpb24gdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0CiAgICAgICAgKCpNQVJLKSBpbnN0ZWFkIG9mIHRvIHdoZXJlICgqU0tJUCkgd2FzIGVuY291bnRlcmVkLiBJZiBubyAoKk1BUkspIHdpdGgKICAgICAgICBhIG1hdGNoaW5nIG5hbWUgaXMgZm91bmQsIHRoZSAoKlNLSVApIGlzIGlnbm9yZWQuCiAKLSAgICAgICBOb3RlICB0aGF0ICgqU0tJUDpOQU1FKSBzZWFyY2hlcyBvbmx5IGZvciBuYW1lcyBzZXQgYnkgKCpNQVJLOk5BTUUpLiBJdAorICAgICAgIE5vdGUgdGhhdCAoKlNLSVA6TkFNRSkgc2VhcmNoZXMgb25seSBmb3IgbmFtZXMgc2V0IGJ5ICgqTUFSSzpOQU1FKS4gIEl0CiAgICAgICAgaWdub3JlcyBuYW1lcyB0aGF0IGFyZSBzZXQgYnkgKCpQUlVORTpOQU1FKSBvciAoKlRIRU46TkFNRSkuCiAKICAgICAgICAgICgqVEhFTikgb3IgKCpUSEVOOk5BTUUpCiAKLSAgICAgICBUaGlzIHZlcmIgY2F1c2VzIGEgc2tpcCB0byB0aGUgbmV4dCBpbm5lcm1vc3QgIGFsdGVybmF0aXZlICB3aGVuICBiYWNrLQotICAgICAgIHRyYWNraW5nICByZWFjaGVzICBpdC4gIFRoYXQgIGlzLCAgaXQgIGNhbmNlbHMgYW55IGZ1cnRoZXIgYmFja3RyYWNraW5nCi0gICAgICAgd2l0aGluIHRoZSBjdXJyZW50IGFsdGVybmF0aXZlLiBJdHMgbmFtZSAgY29tZXMgIGZyb20gIHRoZSAgb2JzZXJ2YXRpb24KKyAgICAgICBUaGlzICB2ZXJiICBjYXVzZXMgIGEgc2tpcCB0byB0aGUgbmV4dCBpbm5lcm1vc3QgYWx0ZXJuYXRpdmUgd2hlbiBiYWNrLQorICAgICAgIHRyYWNraW5nIHJlYWNoZXMgaXQuIFRoYXQgIGlzLCAgaXQgIGNhbmNlbHMgIGFueSAgZnVydGhlciAgYmFja3RyYWNraW5nCisgICAgICAgd2l0aGluICB0aGUgIGN1cnJlbnQgIGFsdGVybmF0aXZlLiAgSXRzIG5hbWUgY29tZXMgZnJvbSB0aGUgb2JzZXJ2YXRpb24KICAgICAgICB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciBhIHBhdHRlcm4tYmFzZWQgaWYtdGhlbi1lbHNlIGJsb2NrOgogCiAgICAgICAgICAoIENPTkQxICgqVEhFTikgRk9PIHwgQ09ORDIgKCpUSEVOKSBCQVIgfCBDT05EMyAoKlRIRU4pIEJBWiApIC4uLgogCi0gICAgICAgSWYgIHRoZSBDT05EMSBwYXR0ZXJuIG1hdGNoZXMsIEZPTyBpcyB0cmllZCAoYW5kIHBvc3NpYmx5IGZ1cnRoZXIgaXRlbXMKLSAgICAgICBhZnRlciB0aGUgZW5kIG9mIHRoZSBncm91cCBpZiBGT08gc3VjY2VlZHMpOyBvbiAgZmFpbHVyZSwgIHRoZSAgbWF0Y2hlcgotICAgICAgIHNraXBzICB0byAgdGhlIHNlY29uZCBhbHRlcm5hdGl2ZSBhbmQgdHJpZXMgQ09ORDIsIHdpdGhvdXQgYmFja3RyYWNraW5nCi0gICAgICAgaW50byBDT05EMS4gSWYgdGhhdCBzdWNjZWVkcyBhbmQgQkFSIGZhaWxzLCBDT05EMyBpcyB0cmllZC4gIElmICBzdWJzZS0KLSAgICAgICBxdWVudGx5ICBCQVogZmFpbHMsIHRoZXJlIGFyZSBubyBtb3JlIGFsdGVybmF0aXZlcywgc28gdGhlcmUgaXMgYSBiYWNrLQotICAgICAgIHRyYWNrIHRvIHdoYXRldmVyIGNhbWUgYmVmb3JlIHRoZSAgZW50aXJlICBncm91cC4gIElmICAoKlRIRU4pICBpcyAgbm90CisgICAgICAgSWYgdGhlIENPTkQxIHBhdHRlcm4gbWF0Y2hlcywgRk9PIGlzIHRyaWVkIChhbmQgcG9zc2libHkgZnVydGhlciAgaXRlbXMKKyAgICAgICBhZnRlciAgdGhlICBlbmQgIG9mIHRoZSBncm91cCBpZiBGT08gc3VjY2VlZHMpOyBvbiBmYWlsdXJlLCB0aGUgbWF0Y2hlcgorICAgICAgIHNraXBzIHRvIHRoZSBzZWNvbmQgYWx0ZXJuYXRpdmUgYW5kIHRyaWVzIENPTkQyLCAgd2l0aG91dCAgYmFja3RyYWNraW5nCisgICAgICAgaW50byAgQ09ORDEuICBJZiB0aGF0IHN1Y2NlZWRzIGFuZCBCQVIgZmFpbHMsIENPTkQzIGlzIHRyaWVkLiBJZiBzdWJzZS0KKyAgICAgICBxdWVudGx5IEJBWiBmYWlscywgdGhlcmUgYXJlIG5vIG1vcmUgYWx0ZXJuYXRpdmVzLCBzbyB0aGVyZSBpcyBhICBiYWNrLQorICAgICAgIHRyYWNrICB0byAgd2hhdGV2ZXIgIGNhbWUgIGJlZm9yZSAgdGhlICBlbnRpcmUgZ3JvdXAuIElmICgqVEhFTikgaXMgbm90CiAgICAgICAgaW5zaWRlIGFuIGFsdGVybmF0aW9uLCBpdCBhY3RzIGxpa2UgKCpQUlVORSkuCiAKLSAgICAgICBUaGUgICAgYmVoYXZpb3VyICAgb2YgICAoKlRIRU46TkFNRSkgICBpcyAgIHRoZSAgIG5vdCAgIHRoZSAgIHNhbWUgICBhcwotICAgICAgICgqTUFSSzpOQU1FKSgqVEhFTikuICBJdCBpcyBsaWtlICAoKk1BUks6TkFNRSkgIGluICB0aGF0ICB0aGUgIG5hbWUgIGlzCi0gICAgICAgcmVtZW1iZXJlZCAgZm9yICBwYXNzaW5nICBiYWNrICB0byAgdGhlICBjYWxsZXIuICBIb3dldmVyLCAoKlNLSVA6TkFNRSkKKyAgICAgICBUaGUgICBiZWhhdmlvdXIgICBvZiAgICgqVEhFTjpOQU1FKSAgIGlzICAgdGhlICAgbm90ICAgdGhlICAgc2FtZSAgICBhcworICAgICAgICgqTUFSSzpOQU1FKSgqVEhFTikuICAgSXQgIGlzICBsaWtlICAoKk1BUks6TkFNRSkgIGluICB0aGF0IHRoZSBuYW1lIGlzCisgICAgICAgcmVtZW1iZXJlZCBmb3IgIHBhc3NpbmcgIGJhY2sgIHRvICB0aGUgIGNhbGxlci4gIEhvd2V2ZXIsICAoKlNLSVA6TkFNRSkKICAgICAgICBzZWFyY2hlcyBvbmx5IGZvciBuYW1lcyBzZXQgd2l0aCAoKk1BUkspLgogCi0gICAgICAgQSBzdWJwYXR0ZXJuIHRoYXQgZG9lcyBub3QgY29udGFpbiBhIHwgY2hhcmFjdGVyIGlzIGp1c3QgYSBwYXJ0IG9mICB0aGUKLSAgICAgICBlbmNsb3NpbmcgIGFsdGVybmF0aXZlOyAgaXQgIGlzICBub3QgYSBuZXN0ZWQgYWx0ZXJuYXRpb24gd2l0aCBvbmx5IG9uZQotICAgICAgIGFsdGVybmF0aXZlLiBUaGUgZWZmZWN0IG9mICgqVEhFTikgZXh0ZW5kcyBiZXlvbmQgc3VjaCBhIHN1YnBhdHRlcm4gIHRvCi0gICAgICAgdGhlICBlbmNsb3NpbmcgYWx0ZXJuYXRpdmUuIENvbnNpZGVyIHRoaXMgcGF0dGVybiwgd2hlcmUgQSwgQiwgZXRjLiBhcmUKLSAgICAgICBjb21wbGV4IHBhdHRlcm4gZnJhZ21lbnRzIHRoYXQgZG8gbm90IGNvbnRhaW4gYW55IHwgY2hhcmFjdGVycyBhdCAgdGhpcworICAgICAgIEEgIHN1YnBhdHRlcm4gdGhhdCBkb2VzIG5vdCBjb250YWluIGEgfCBjaGFyYWN0ZXIgaXMganVzdCBhIHBhcnQgb2YgdGhlCisgICAgICAgZW5jbG9zaW5nIGFsdGVybmF0aXZlOyBpdCBpcyBub3QgYSBuZXN0ZWQgIGFsdGVybmF0aW9uICB3aXRoICBvbmx5ICBvbmUKKyAgICAgICBhbHRlcm5hdGl2ZS4gIFRoZSBlZmZlY3Qgb2YgKCpUSEVOKSBleHRlbmRzIGJleW9uZCBzdWNoIGEgc3VicGF0dGVybiB0bworICAgICAgIHRoZSBlbmNsb3NpbmcgYWx0ZXJuYXRpdmUuIENvbnNpZGVyIHRoaXMgcGF0dGVybiwgd2hlcmUgQSwgQiwgZXRjLiAgYXJlCisgICAgICAgY29tcGxleCAgcGF0dGVybiBmcmFnbWVudHMgdGhhdCBkbyBub3QgY29udGFpbiBhbnkgfCBjaGFyYWN0ZXJzIGF0IHRoaXMKICAgICAgICBsZXZlbDoKIAogICAgICAgICAgQSAoQigqVEhFTilDKSB8IEQKIAotICAgICAgIElmICBBIGFuZCBCIGFyZSBtYXRjaGVkLCBidXQgdGhlcmUgaXMgYSBmYWlsdXJlIGluIEMsIG1hdGNoaW5nIGRvZXMgbm90CisgICAgICAgSWYgQSBhbmQgQiBhcmUgbWF0Y2hlZCwgYnV0IHRoZXJlIGlzIGEgZmFpbHVyZSBpbiBDLCBtYXRjaGluZyBkb2VzICBub3QKICAgICAgICBiYWNrdHJhY2sgaW50byBBOyBpbnN0ZWFkIGl0IG1vdmVzIHRvIHRoZSBuZXh0IGFsdGVybmF0aXZlLCB0aGF0IGlzLCBELgotICAgICAgIEhvd2V2ZXIsICBpZiB0aGUgc3VicGF0dGVybiBjb250YWluaW5nICgqVEhFTikgaXMgZ2l2ZW4gYW4gYWx0ZXJuYXRpdmUsCisgICAgICAgSG93ZXZlciwgaWYgdGhlIHN1YnBhdHRlcm4gY29udGFpbmluZyAoKlRIRU4pIGlzIGdpdmVuIGFuICBhbHRlcm5hdGl2ZSwKICAgICAgICBpdCBiZWhhdmVzIGRpZmZlcmVudGx5OgogCiAgICAgICAgICBBIChCKCpUSEVOKUMgfCAoKkZBSUwpKSB8IEQKIAotICAgICAgIFRoZSBlZmZlY3Qgb2YgKCpUSEVOKSBpcyBub3cgY29uZmluZWQgdG8gdGhlIGlubmVyIHN1YnBhdHRlcm4uIEFmdGVyICBhCisgICAgICAgVGhlICBlZmZlY3Qgb2YgKCpUSEVOKSBpcyBub3cgY29uZmluZWQgdG8gdGhlIGlubmVyIHN1YnBhdHRlcm4uIEFmdGVyIGEKICAgICAgICBmYWlsdXJlIGluIEMsIG1hdGNoaW5nIG1vdmVzIHRvICgqRkFJTCksIHdoaWNoIGNhdXNlcyB0aGUgd2hvbGUgc3VicGF0LQotICAgICAgIHRlcm4gdG8gZmFpbCBiZWNhdXNlIHRoZXJlIGFyZSBubyBtb3JlIGFsdGVybmF0aXZlcyAgdG8gIHRyeS4gIEluICB0aGlzCisgICAgICAgdGVybiAgdG8gIGZhaWwgIGJlY2F1c2UgIHRoZXJlIGFyZSBubyBtb3JlIGFsdGVybmF0aXZlcyB0byB0cnkuIEluIHRoaXMKICAgICAgICBjYXNlLCBtYXRjaGluZyBkb2VzIG5vdyBiYWNrdHJhY2sgaW50byBBLgogCi0gICAgICAgTm90ZSAgdGhhdCAgYSAgY29uZGl0aW9uYWwgIHN1YnBhdHRlcm4gIGlzIG5vdCBjb25zaWRlcmVkIGFzIGhhdmluZyB0d28KLSAgICAgICBhbHRlcm5hdGl2ZXMsIGJlY2F1c2Ugb25seSBvbmUgaXMgZXZlciB1c2VkLiAgSW4gIG90aGVyICB3b3JkcywgIHRoZSAgfAorICAgICAgIE5vdGUgdGhhdCBhIGNvbmRpdGlvbmFsIHN1YnBhdHRlcm4gaXMgIG5vdCAgY29uc2lkZXJlZCAgYXMgIGhhdmluZyAgdHdvCisgICAgICAgYWx0ZXJuYXRpdmVzLCAgYmVjYXVzZSAgb25seSAgb25lICBpcyAgZXZlciB1c2VkLiBJbiBvdGhlciB3b3JkcywgdGhlIHwKICAgICAgICBjaGFyYWN0ZXIgaW4gYSBjb25kaXRpb25hbCBzdWJwYXR0ZXJuIGhhcyBhIGRpZmZlcmVudCBtZWFuaW5nLiBJZ25vcmluZwogICAgICAgIHdoaXRlIHNwYWNlLCBjb25zaWRlcjoKIAogICAgICAgICAgXi4qPyAoPyg/PWEpIGEgfCBiKCpUSEVOKWMgKQogCi0gICAgICAgSWYgdGhlIHN1YmplY3QgaXMgImJhIiwgdGhpcyBwYXR0ZXJuIGRvZXMgbm90ICBtYXRjaC4gIEJlY2F1c2UgIC4qPyAgaXMKLSAgICAgICB1bmdyZWVkeSwgIGl0ICBpbml0aWFsbHkgIG1hdGNoZXMgIHplcm8gY2hhcmFjdGVycy4gVGhlIGNvbmRpdGlvbiAoPz1hKQotICAgICAgIHRoZW4gZmFpbHMsIHRoZSBjaGFyYWN0ZXIgImIiIGlzIG1hdGNoZWQsICBidXQgICJjIiAgaXMgIG5vdC4gIEF0ICB0aGlzCi0gICAgICAgcG9pbnQsICBtYXRjaGluZyBkb2VzIG5vdCBiYWNrdHJhY2sgdG8gLio/IGFzIG1pZ2h0IHBlcmhhcHMgYmUgZXhwZWN0ZWQKLSAgICAgICBmcm9tIHRoZSBwcmVzZW5jZSBvZiB0aGUgfCBjaGFyYWN0ZXIuICBUaGUgIGNvbmRpdGlvbmFsICBzdWJwYXR0ZXJuICBpcworICAgICAgIElmICB0aGUgIHN1YmplY3QgIGlzICAiYmEiLCB0aGlzIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2guIEJlY2F1c2UgLio/IGlzCisgICAgICAgdW5ncmVlZHksIGl0IGluaXRpYWxseSBtYXRjaGVzIHplcm8gIGNoYXJhY3RlcnMuICBUaGUgIGNvbmRpdGlvbiAgKD89YSkKKyAgICAgICB0aGVuICBmYWlscywgIHRoZSAgY2hhcmFjdGVyICAiYiIgIGlzICBtYXRjaGVkLCBidXQgImMiIGlzIG5vdC4gQXQgdGhpcworICAgICAgIHBvaW50LCBtYXRjaGluZyBkb2VzIG5vdCBiYWNrdHJhY2sgdG8gLio/IGFzIG1pZ2h0IHBlcmhhcHMgYmUgIGV4cGVjdGVkCisgICAgICAgZnJvbSAgdGhlICBwcmVzZW5jZSAgb2YgIHRoZSB8IGNoYXJhY3Rlci4gVGhlIGNvbmRpdGlvbmFsIHN1YnBhdHRlcm4gaXMKICAgICAgICBwYXJ0IG9mIHRoZSBzaW5nbGUgYWx0ZXJuYXRpdmUgdGhhdCBjb21wcmlzZXMgdGhlIHdob2xlIHBhdHRlcm4sIGFuZCBzbwotICAgICAgIHRoZSBtYXRjaCBmYWlscy4gKElmIHRoZXJlIHdhcyBhIGJhY2t0cmFjayBpbnRvICAuKj8sICBhbGxvd2luZyAgaXQgIHRvCisgICAgICAgdGhlICBtYXRjaCAgZmFpbHMuICAoSWYgIHRoZXJlIHdhcyBhIGJhY2t0cmFjayBpbnRvIC4qPywgYWxsb3dpbmcgaXQgdG8KICAgICAgICBtYXRjaCAiYiIsIHRoZSBtYXRjaCB3b3VsZCBzdWNjZWVkLikKIAotICAgICAgIFRoZSAgdmVyYnMganVzdCBkZXNjcmliZWQgcHJvdmlkZSBmb3VyIGRpZmZlcmVudCAic3RyZW5ndGhzIiBvZiBjb250cm9sCisgICAgICAgVGhlIHZlcmJzIGp1c3QgZGVzY3JpYmVkIHByb3ZpZGUgZm91ciBkaWZmZXJlbnQgInN0cmVuZ3RocyIgb2YgIGNvbnRyb2wKICAgICAgICB3aGVuIHN1YnNlcXVlbnQgbWF0Y2hpbmcgZmFpbHMuICgqVEhFTikgaXMgdGhlIHdlYWtlc3QsIGNhcnJ5aW5nIG9uIHRoZQotICAgICAgIG1hdGNoICBhdCAgdGhlIG5leHQgYWx0ZXJuYXRpdmUuICgqUFJVTkUpIGNvbWVzIG5leHQsIGZhaWxpbmcgdGhlIG1hdGNoCi0gICAgICAgYXQgdGhlIGN1cnJlbnQgc3RhcnRpbmcgcG9zaXRpb24sIGJ1dCBhbGxvd2luZyBhbiBhZHZhbmNlIHRvICB0aGUgIG5leHQKLSAgICAgICBjaGFyYWN0ZXIgIChmb3IgYW4gdW5hbmNob3JlZCBwYXR0ZXJuKS4gKCpTS0lQKSBpcyBzaW1pbGFyLCBleGNlcHQgdGhhdAorICAgICAgIG1hdGNoIGF0IHRoZSBuZXh0IGFsdGVybmF0aXZlLiAoKlBSVU5FKSBjb21lcyBuZXh0LCBmYWlsaW5nICB0aGUgIG1hdGNoCisgICAgICAgYXQgIHRoZSAgY3VycmVudCBzdGFydGluZyBwb3NpdGlvbiwgYnV0IGFsbG93aW5nIGFuIGFkdmFuY2UgdG8gdGhlIG5leHQKKyAgICAgICBjaGFyYWN0ZXIgKGZvciBhbiB1bmFuY2hvcmVkIHBhdHRlcm4pLiAoKlNLSVApIGlzIHNpbWlsYXIsIGV4Y2VwdCAgdGhhdAogICAgICAgIHRoZSBhZHZhbmNlIG1heSBiZSBtb3JlIHRoYW4gb25lIGNoYXJhY3Rlci4gKCpDT01NSVQpIGlzIHRoZSBzdHJvbmdlc3QsCiAgICAgICAgY2F1c2luZyB0aGUgZW50aXJlIG1hdGNoIHRvIGZhaWwuCiAKICAgIE1vcmUgdGhhbiBvbmUgYmFja3RyYWNraW5nIHZlcmIKIAotICAgICAgIElmICBtb3JlICB0aGFuICBvbmUgIGJhY2t0cmFja2luZyB2ZXJiIGlzIHByZXNlbnQgaW4gYSBwYXR0ZXJuLCB0aGUgb25lCi0gICAgICAgdGhhdCBpcyBiYWNrdHJhY2tlZCBvbnRvIGZpcnN0IGFjdHMuIEZvciBleGFtcGxlLCAgY29uc2lkZXIgIHRoaXMgIHBhdC0KKyAgICAgICBJZiBtb3JlIHRoYW4gb25lIGJhY2t0cmFja2luZyB2ZXJiIGlzIHByZXNlbnQgaW4gIGEgIHBhdHRlcm4sICB0aGUgIG9uZQorICAgICAgIHRoYXQgIGlzICBiYWNrdHJhY2tlZCAgb250byBmaXJzdCBhY3RzLiBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhpcyBwYXQtCiAgICAgICAgdGVybiwgd2hlcmUgQSwgQiwgZXRjLiBhcmUgY29tcGxleCBwYXR0ZXJuIGZyYWdtZW50czoKIAogICAgICAgICAgKEEoKkNPTU1JVClCKCpUSEVOKUN8QUJEKQogCi0gICAgICAgSWYgIEEgbWF0Y2hlcyBidXQgQiBmYWlscywgdGhlIGJhY2t0cmFjayB0byAoKkNPTU1JVCkgY2F1c2VzIHRoZSBlbnRpcmUKKyAgICAgICBJZiBBIG1hdGNoZXMgYnV0IEIgZmFpbHMsIHRoZSBiYWNrdHJhY2sgdG8gKCpDT01NSVQpIGNhdXNlcyB0aGUgIGVudGlyZQogICAgICAgIG1hdGNoIHRvIGZhaWwuIEhvd2V2ZXIsIGlmIEEgYW5kIEIgbWF0Y2gsIGJ1dCBDIGZhaWxzLCB0aGUgYmFja3RyYWNrIHRvCi0gICAgICAgKCpUSEVOKSAgY2F1c2VzICB0aGUgbmV4dCBhbHRlcm5hdGl2ZSAoQUJEKSB0byBiZSB0cmllZC4gVGhpcyBiZWhhdmlvdXIKLSAgICAgICBpcyBjb25zaXN0ZW50LCBidXQgaXMgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyBQZXJsJ3MuIEl0IG1lYW5zICB0aGF0ICBpZgotICAgICAgIHR3byAgb3IgIG1vcmUgYmFja3RyYWNraW5nIHZlcmJzIGFwcGVhciBpbiBzdWNjZXNzaW9uLCBhbGwgdGhlIHRoZSBsYXN0CisgICAgICAgKCpUSEVOKSBjYXVzZXMgdGhlIG5leHQgYWx0ZXJuYXRpdmUgKEFCRCkgdG8gYmUgdHJpZWQuICBUaGlzICBiZWhhdmlvdXIKKyAgICAgICBpcyAgY29uc2lzdGVudCwgIGJ1dCBpcyBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFBlcmwncy4gSXQgbWVhbnMgdGhhdCBpZgorICAgICAgIHR3byBvciBtb3JlIGJhY2t0cmFja2luZyB2ZXJicyBhcHBlYXIgaW4gc3VjY2Vzc2lvbiwgYWxsIHRoZSAgdGhlICBsYXN0CiAgICAgICAgb2YgdGhlbSBoYXMgbm8gZWZmZWN0LiBDb25zaWRlciB0aGlzIGV4YW1wbGU6CiAKICAgICAgICAgIC4uLigqQ09NTUlUKSgqUFJVTkUpLi4uCiAKICAgICAgICBJZiB0aGVyZSBpcyBhIG1hdGNoaW5nIGZhaWx1cmUgdG8gdGhlIHJpZ2h0LCBiYWNrdHJhY2tpbmcgb250byAoKlBSVU5FKQotICAgICAgIGNhdXNlcyAgaXQgdG8gYmUgdHJpZ2dlcmVkLCBhbmQgaXRzIGFjdGlvbiBpcyB0YWtlbi4gVGhlcmUgY2FuIG5ldmVyIGJlCisgICAgICAgY2F1c2VzIGl0IHRvIGJlIHRyaWdnZXJlZCwgYW5kIGl0cyBhY3Rpb24gaXMgdGFrZW4uIFRoZXJlIGNhbiBuZXZlciAgYmUKICAgICAgICBhIGJhY2t0cmFjayBvbnRvICgqQ09NTUlUKS4KIAogICAgQmFja3RyYWNraW5nIHZlcmJzIGluIHJlcGVhdGVkIGdyb3VwcwogCi0gICAgICAgUENSRSBkaWZmZXJzIGZyb20gIFBlcmwgIGluICBpdHMgIGhhbmRsaW5nICBvZiAgYmFja3RyYWNraW5nICB2ZXJicyAgaW4KKyAgICAgICBQQ1JFICBkaWZmZXJzICBmcm9tICBQZXJsICBpbiAgaXRzICBoYW5kbGluZyAgb2YgIGJhY2t0cmFja2luZyB2ZXJicyBpbgogICAgICAgIHJlcGVhdGVkIGdyb3Vwcy4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyOgogCiAgICAgICAgICAvKGEoKkNPTU1JVCliKSthYy8KIAotICAgICAgIElmICB0aGUgIHN1YmplY3QgIGlzICAiYWJhYyIsICBQZXJsIG1hdGNoZXMsIGJ1dCBQQ1JFIGZhaWxzIGJlY2F1c2UgdGhlCisgICAgICAgSWYgdGhlIHN1YmplY3QgaXMgImFiYWMiLCBQZXJsIG1hdGNoZXMsICBidXQgIFBDUkUgIGZhaWxzICBiZWNhdXNlICB0aGUKICAgICAgICAoKkNPTU1JVCkgaW4gdGhlIHNlY29uZCByZXBlYXQgb2YgdGhlIGdyb3VwIGFjdHMuCiAKICAgIEJhY2t0cmFja2luZyB2ZXJicyBpbiBhc3NlcnRpb25zCiAKLSAgICAgICAoKkZBSUwpIGluIGFuIGFzc2VydGlvbiBoYXMgaXRzIG5vcm1hbCBlZmZlY3Q6IGl0IGZvcmNlcyAgYW4gIGltbWVkaWF0ZQorICAgICAgICgqRkFJTCkgIGluICBhbiBhc3NlcnRpb24gaGFzIGl0cyBub3JtYWwgZWZmZWN0OiBpdCBmb3JjZXMgYW4gaW1tZWRpYXRlCiAgICAgICAgYmFja3RyYWNrLgogCiAgICAgICAgKCpBQ0NFUFQpIGluIGEgcG9zaXRpdmUgYXNzZXJ0aW9uIGNhdXNlcyB0aGUgYXNzZXJ0aW9uIHRvIHN1Y2NlZWQgd2l0aC0KLSAgICAgICBvdXQgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZy4gSW4gYSBuZWdhdGl2ZSBhc3NlcnRpb24sICAoKkFDQ0VQVCkgIGNhdXNlcworICAgICAgIG91dCAgYW55ICBmdXJ0aGVyIHByb2Nlc3NpbmcuIEluIGEgbmVnYXRpdmUgYXNzZXJ0aW9uLCAoKkFDQ0VQVCkgY2F1c2VzCiAgICAgICAgdGhlIGFzc2VydGlvbiB0byBmYWlsIHdpdGhvdXQgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZy4KIAotICAgICAgIFRoZSAgb3RoZXIgIGJhY2t0cmFja2luZyB2ZXJicyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5IGlmIHRoZXkgYXBwZWFyCi0gICAgICAgaW4gYSBwb3NpdGl2ZSBhc3NlcnRpb24uIEluICBwYXJ0aWN1bGFyLCAgKCpUSEVOKSAgc2tpcHMgIHRvICB0aGUgIG5leHQKLSAgICAgICBhbHRlcm5hdGl2ZSAgaW4gIHRoZSAgaW5uZXJtb3N0ICBlbmNsb3NpbmcgZ3JvdXAgdGhhdCBoYXMgYWx0ZXJuYXRpb25zLAorICAgICAgIFRoZSBvdGhlciBiYWNrdHJhY2tpbmcgdmVyYnMgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseSBpZiAgdGhleSAgYXBwZWFyCisgICAgICAgaW4gIGEgIHBvc2l0aXZlICBhc3NlcnRpb24uICBJbiAgcGFydGljdWxhciwgICgqVEhFTikgc2tpcHMgdG8gdGhlIG5leHQKKyAgICAgICBhbHRlcm5hdGl2ZSBpbiB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyAgZ3JvdXAgIHRoYXQgIGhhcyAgYWx0ZXJuYXRpb25zLAogICAgICAgIHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgd2l0aGluIHRoZSBhc3NlcnRpb24uCiAKLSAgICAgICBOZWdhdGl2ZSBhc3NlcnRpb25zIGFyZSwgaG93ZXZlciwgZGlmZmVyZW50LCBpbiBvcmRlciAgdG8gIGVuc3VyZSAgdGhhdAotICAgICAgIGNoYW5naW5nICBhICBwb3NpdGl2ZSAgYXNzZXJ0aW9uICBpbnRvIGEgbmVnYXRpdmUgYXNzZXJ0aW9uIGNoYW5nZXMgaXRzCisgICAgICAgTmVnYXRpdmUgIGFzc2VydGlvbnMgIGFyZSwgIGhvd2V2ZXIsIGRpZmZlcmVudCwgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQKKyAgICAgICBjaGFuZ2luZyBhIHBvc2l0aXZlIGFzc2VydGlvbiBpbnRvIGEgIG5lZ2F0aXZlICBhc3NlcnRpb24gIGNoYW5nZXMgIGl0cwogICAgICAgIHJlc3VsdC4gQmFja3RyYWNraW5nIGludG8gKCpDT01NSVQpLCAoKlNLSVApLCBvciAoKlBSVU5FKSBjYXVzZXMgYSBuZWctCiAgICAgICAgYXRpdmUgYXNzZXJ0aW9uIHRvIGJlIHRydWUsIHdpdGhvdXQgY29uc2lkZXJpbmcgYW55IGZ1cnRoZXIgYWx0ZXJuYXRpdmUKICAgICAgICBicmFuY2hlcyBpbiB0aGUgYXNzZXJ0aW9uLiAgQmFja3RyYWNraW5nIGludG8gKCpUSEVOKSBjYXVzZXMgaXQgdG8gc2tpcAotICAgICAgIHRvICB0aGUgbmV4dCBlbmNsb3NpbmcgYWx0ZXJuYXRpdmUgd2l0aGluIHRoZSBhc3NlcnRpb24gKHRoZSBub3JtYWwgYmUtCi0gICAgICAgaGF2aW91ciksIGJ1dCBpZiB0aGUgYXNzZXJ0aW9uICBkb2VzICBub3QgIGhhdmUgIHN1Y2ggIGFuICBhbHRlcm5hdGl2ZSwKKyAgICAgICB0byB0aGUgbmV4dCBlbmNsb3NpbmcgYWx0ZXJuYXRpdmUgd2l0aGluIHRoZSBhc3NlcnRpb24gKHRoZSBub3JtYWwgIGJlLQorICAgICAgIGhhdmlvdXIpLCAgYnV0ICBpZiAgdGhlICBhc3NlcnRpb24gIGRvZXMgIG5vdCBoYXZlIHN1Y2ggYW4gYWx0ZXJuYXRpdmUsCiAgICAgICAgKCpUSEVOKSBiZWhhdmVzIGxpa2UgKCpQUlVORSkuCiAKICAgIEJhY2t0cmFja2luZyB2ZXJicyBpbiBzdWJyb3V0aW5lcwogCi0gICAgICAgVGhlc2UgIGJlaGF2aW91cnMgIG9jY3VyIHdoZXRoZXIgb3Igbm90IHRoZSBzdWJwYXR0ZXJuIGlzIGNhbGxlZCByZWN1ci0KKyAgICAgICBUaGVzZSBiZWhhdmlvdXJzIG9jY3VyIHdoZXRoZXIgb3Igbm90IHRoZSBzdWJwYXR0ZXJuIGlzICBjYWxsZWQgIHJlY3VyLQogICAgICAgIHNpdmVseS4gIFBlcmwncyB0cmVhdG1lbnQgb2Ygc3Vicm91dGluZXMgaXMgZGlmZmVyZW50IGluIHNvbWUgY2FzZXMuCiAKLSAgICAgICAoKkZBSUwpIGluIGEgc3VicGF0dGVybiBjYWxsZWQgYXMgYSBzdWJyb3V0aW5lIGhhcyBpdHMgIG5vcm1hbCAgZWZmZWN0OgorICAgICAgICgqRkFJTCkgIGluICBhIHN1YnBhdHRlcm4gY2FsbGVkIGFzIGEgc3Vicm91dGluZSBoYXMgaXRzIG5vcm1hbCBlZmZlY3Q6CiAgICAgICAgaXQgZm9yY2VzIGFuIGltbWVkaWF0ZSBiYWNrdHJhY2suCiAKLSAgICAgICAoKkFDQ0VQVCkgIGluIGEgc3VicGF0dGVybiBjYWxsZWQgYXMgYSBzdWJyb3V0aW5lIGNhdXNlcyB0aGUgc3Vicm91dGluZQotICAgICAgIG1hdGNoIHRvIHN1Y2NlZWQgd2l0aG91dCBhbnkgZnVydGhlciBwcm9jZXNzaW5nLiBNYXRjaGluZyB0aGVuICBjb250aW4tCisgICAgICAgKCpBQ0NFUFQpIGluIGEgc3VicGF0dGVybiBjYWxsZWQgYXMgYSBzdWJyb3V0aW5lIGNhdXNlcyB0aGUgIHN1YnJvdXRpbmUKKyAgICAgICBtYXRjaCAgdG8gc3VjY2VlZCB3aXRob3V0IGFueSBmdXJ0aGVyIHByb2Nlc3NpbmcuIE1hdGNoaW5nIHRoZW4gY29udGluLQogICAgICAgIHVlcyBhZnRlciB0aGUgc3Vicm91dGluZSBjYWxsLgogCiAgICAgICAgKCpDT01NSVQpLCAoKlNLSVApLCBhbmQgKCpQUlVORSkgaW4gYSBzdWJwYXR0ZXJuIGNhbGxlZCBhcyBhIHN1YnJvdXRpbmUKICAgICAgICBjYXVzZSB0aGUgc3Vicm91dGluZSBtYXRjaCB0byBmYWlsLgogCi0gICAgICAgKCpUSEVOKSBza2lwcyB0byB0aGUgbmV4dCBhbHRlcm5hdGl2ZSBpbiB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyAgZ3JvdXAKLSAgICAgICB3aXRoaW4gIHRoZSBzdWJwYXR0ZXJuIHRoYXQgaGFzIGFsdGVybmF0aXZlcy4gSWYgdGhlcmUgaXMgbm8gc3VjaCBncm91cAorICAgICAgICgqVEhFTikgIHNraXBzIHRvIHRoZSBuZXh0IGFsdGVybmF0aXZlIGluIHRoZSBpbm5lcm1vc3QgZW5jbG9zaW5nIGdyb3VwCisgICAgICAgd2l0aGluIHRoZSBzdWJwYXR0ZXJuIHRoYXQgaGFzIGFsdGVybmF0aXZlcy4gSWYgdGhlcmUgaXMgbm8gc3VjaCAgZ3JvdXAKICAgICAgICB3aXRoaW4gdGhlIHN1YnBhdHRlcm4sICgqVEhFTikgY2F1c2VzIHRoZSBzdWJyb3V0aW5lIG1hdGNoIHRvIGZhaWwuCiAKIAogU0VFIEFMU08KIAotICAgICAgIHBjcmVhcGkoMyksIHBjcmVjYWxsb3V0KDMpLCAgcGNyZW1hdGNoaW5nKDMpLCAgcGNyZXN5bnRheCgzKSwgIHBjcmUoMyksCisgICAgICAgcGNyZWFwaSgzKSwgIHBjcmVjYWxsb3V0KDMpLCAgcGNyZW1hdGNoaW5nKDMpLCAgcGNyZXN5bnRheCgzKSwgcGNyZSgzKSwKICAgICAgICBwY3JlMTYoMyksIHBjcmUzMigzKS4KIAogCkBAIC03NjU2LDggKzc2NjksOCBAQAogCiBSRVZJU0lPTgogCi0gICAgICAgTGFzdCB1cGRhdGVkOiAwOCBKYW51YXJ5IDIwMTQKLSAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAxNCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZS4KKyAgICAgICBMYXN0IHVwZGF0ZWQ6IDE0IEp1bmUgMjAxNQorICAgICAgIENvcHlyaWdodCAoYykgMTk5Ny0yMDE1IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIApkaWZmIC0tZ2l0IGEvZGlzdC9kb2MvcGNyZXBhdHRlcm4uMyBiL2Rpc3QvZG9jL3BjcmVwYXR0ZXJuLjMKaW5kZXggZDBjNmVlYi4uM2I4YzYzOSAxMDA2NDQKLS0tIGEvZGlzdC9kb2MvcGNyZXBhdHRlcm4uMworKysgYi9kaXN0L2RvYy9wY3JlcGF0dGVybi4zCkBAIC0xLDQgKzEsNCBAQAotLlRIIFBDUkVQQVRURVJOIDMgIjA4IEphbnVhcnkgMjAxNCIgIlBDUkUgOC4zNSIKKy5USCBQQ1JFUEFUVEVSTiAzICIxNCBKdW5lIDIwMTUiICJQQ1JFIDguMzgiCiAuU0ggTkFNRQogUENSRSAtIFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zCiAuU0ggIlBDUkUgUkVHVUxBUiBFWFBSRVNTSU9OIERFVEFJTFMiCkBAIC0zMDgsNyArMzA4LDggQEAKIGluIHBhdHRlcm5zIGluIGEgdmlzaWJsZSBtYW5uZXIuIFRoZXJlIGlzIG5vIHJlc3RyaWN0aW9uIG9uIHRoZSBhcHBlYXJhbmNlIG9mCiBub24tcHJpbnRpbmcgY2hhcmFjdGVycywgYXBhcnQgZnJvbSB0aGUgYmluYXJ5IHplcm8gdGhhdCB0ZXJtaW5hdGVzIGEgcGF0dGVybiwKIGJ1dCB3aGVuIGEgcGF0dGVybiBpcyBiZWluZyBwcmVwYXJlZCBieSB0ZXh0IGVkaXRpbmcsIGl0IGlzIG9mdGVuIGVhc2llciB0byB1c2UKLW9uZSBvZiB0aGUgZm9sbG93aW5nIGVzY2FwZSBzZXF1ZW5jZXMgdGhhbiB0aGUgYmluYXJ5IGNoYXJhY3RlciBpdCByZXByZXNlbnRzOgorb25lIG9mIHRoZSBmb2xsb3dpbmcgZXNjYXBlIHNlcXVlbmNlcyB0aGFuIHRoZSBiaW5hcnkgY2hhcmFjdGVyIGl0IHJlcHJlc2VudHMuCitJbiBhbiBBU0NJSSBvciBVbmljb2RlIGVudmlyb25tZW50LCB0aGVzZSBlc2NhcGVzIGFyZSBhcyBmb2xsb3dzOgogLnNwCiAgIFxlYSAgICAgICAgYWxhcm0sIHRoYXQgaXMsIHRoZSBCRUwgY2hhcmFjdGVyIChoZXggMDcpCiAgIFxlY3ggICAgICAgImNvbnRyb2wteCIsIHdoZXJlIHggaXMgYW55IEFTQ0lJIGNoYXJhY3RlcgpAQCAtMzMxLDE4ICszMzIsMzAgQEAKIGRhdGEgaXRlbSAoYnl0ZSBvciAxNi1iaXQgdmFsdWUpIGZvbGxvd2luZyBcZWMgaGFzIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDEyNywgYQogY29tcGlsZS10aW1lIGVycm9yIG9jY3Vycy4gVGhpcyBsb2NrcyBvdXQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gYWxsIG1vZGVzLgogLlAKLVRoZSBcZWMgZmFjaWxpdHkgd2FzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBBU0NJSSBjaGFyYWN0ZXJzLCBidXQgd2l0aCB0aGUKLWV4dGVuc2lvbiB0byBVbmljb2RlIGl0IGlzIGV2ZW4gbGVzcyB1c2VmdWwgdGhhbiBpdCBvbmNlIHdhcy4gSXQgaXMsIGhvd2V2ZXIsCi1yZWNvZ25pemVkIHdoZW4gUENSRSBpcyBjb21waWxlZCBpbiBFQkNESUMgbW9kZSwgd2hlcmUgZGF0YSBpdGVtcyBhcmUgYWx3YXlzCi1ieXRlcy4gSW4gdGhpcyBtb2RlLCBhbGwgdmFsdWVzIGFyZSB2YWxpZCBhZnRlciBcZWMuIElmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyBhCi1sb3dlciBjYXNlIGxldHRlciwgaXQgaXMgY29udmVydGVkIHRvIHVwcGVyIGNhc2UuIFRoZW4gdGhlIDB4YzAgYml0cyBvZiB0aGUKLWJ5dGUgYXJlIGludmVydGVkLiBUaHVzIFxlY0EgYmVjb21lcyBoZXggMDEsIGFzIGluIEFTQ0lJIChBIGlzIEMxKSwgYnV0IGJlY2F1c2UKLXRoZSBFQkNESUMgbGV0dGVycyBhcmUgZGlzam9pbnQsIFxlY1ogYmVjb21lcyBoZXggMjkgKFogaXMgRTkpLCBhbmQgb3RoZXIKLWNoYXJhY3RlcnMgYWxzbyBnZW5lcmF0ZSBkaWZmZXJlbnQgdmFsdWVzLgorV2hlbiBQQ1JFIGlzIGNvbXBpbGVkIGluIEVCQ0RJQyBtb2RlLCBcZWEsIFxlZSwgXGVmLCBcZW4sIFxlciwgYW5kIFxldAorZ2VuZXJhdGUgdGhlIGFwcHJvcHJpYXRlIEVCQ0RJQyBjb2RlIHZhbHVlcy4gVGhlIFxlYyBlc2NhcGUgaXMgcHJvY2Vzc2VkCithcyBzcGVjaWZpZWQgZm9yIFBlcmwgaW4gdGhlIFxmQnBlcmxlYmNkaWNcZlAgZG9jdW1lbnQuIFRoZSBvbmx5IGNoYXJhY3RlcnMKK3RoYXQgYXJlIGFsbG93ZWQgYWZ0ZXIgXGVjIGFyZSBBLVosIGEteiwgb3Igb25lIG9mIEAsIFssIFxlLCBdLCBeLCBfLCBvciA/LiBBbnkKK290aGVyIGNoYXJhY3RlciBwcm92b2tlcyBhIGNvbXBpbGUtdGltZSBlcnJvci4gVGhlIHNlcXVlbmNlIFxlQCBlbmNvZGVzCitjaGFyYWN0ZXIgY29kZSAwOyB0aGUgbGV0dGVycyAoaW4gZWl0aGVyIGNhc2UpIGVuY29kZSBjaGFyYWN0ZXJzIDEtMjYgKGhleCAwMQordG8gaGV4IDFBKTsgWywgXGUsIF0sIF4sIGFuZCBfIGVuY29kZSBjaGFyYWN0ZXJzIDI3LTMxIChoZXggMUIgdG8gaGV4IDFGKSwgYW5kCitcZT8gYmVjb21lcyBlaXRoZXIgMjU1IChoZXggRkYpIG9yIDk1IChoZXggNUYpLgorLlAKK1RodXMsIGFwYXJ0IGZyb20gXGU/LCB0aGVzZSBlc2NhcGVzIGdlbmVyYXRlIHRoZSBzYW1lIGNoYXJhY3RlciBjb2RlIHZhbHVlcyBhcwordGhleSBkbyBpbiBhbiBBU0NJSSBlbnZpcm9ubWVudCwgdGhvdWdoIHRoZSBtZWFuaW5ncyBvZiB0aGUgdmFsdWVzIG1vc3RseQorZGlmZmVyLiBGb3IgZXhhbXBsZSwgXGVHIGFsd2F5cyBnZW5lcmF0ZXMgY29kZSB2YWx1ZSA3LCB3aGljaCBpcyBCRUwgaW4gQVNDSUkKK2J1dCBERUwgaW4gRUJDRElDLgorLlAKK1RoZSBzZXF1ZW5jZSBcZT8gZ2VuZXJhdGVzIERFTCAoMTI3LCBoZXggN0YpIGluIGFuIEFTQ0lJIGVudmlyb25tZW50LCBidXQKK2JlY2F1c2UgMTI3IGlzIG5vdCBhIGNvbnRyb2wgY2hhcmFjdGVyIGluIEVCQ0RJQywgUGVybCBtYWtlcyBpdCBnZW5lcmF0ZSB0aGUKK0FQQyBjaGFyYWN0ZXIuIFVuZm9ydHVuYXRlbHksIHRoZXJlIGFyZSBzZXZlcmFsIHZhcmlhbnRzIG9mIEVCQ0RJQy4gSW4gbW9zdCBvZgordGhlbSB0aGUgQVBDIGNoYXJhY3RlciBoYXMgdGhlIHZhbHVlIDI1NSAoaGV4IEZGKSwgYnV0IGluIHRoZSBvbmUgUGVybCBjYWxscworUE9TSVgtQkMgaXRzIHZhbHVlIGlzIDk1IChoZXggNUYpLiBJZiBjZXJ0YWluIG90aGVyIGNoYXJhY3RlcnMgaGF2ZSBQT1NJWC1CQwordmFsdWVzLCBQQ1JFIG1ha2VzIFxlPyBnZW5lcmF0ZSA5NTsgb3RoZXJ3aXNlIGl0IGdlbmVyYXRlcyAyNTUuCiAuUAogQWZ0ZXIgXGUwIHVwIHRvIHR3byBmdXJ0aGVyIG9jdGFsIGRpZ2l0cyBhcmUgcmVhZC4gSWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gdHdvCi1kaWdpdHMsIGp1c3QgdGhvc2UgdGhhdCBhcmUgcHJlc2VudCBhcmUgdXNlZC4gVGh1cyB0aGUgc2VxdWVuY2UgXGUwXGV4XGUwNwotc3BlY2lmaWVzIHR3byBiaW5hcnkgemVyb3MgZm9sbG93ZWQgYnkgYSBCRUwgY2hhcmFjdGVyIChjb2RlIHZhbHVlIDcpLiBNYWtlCitkaWdpdHMsIGp1c3QgdGhvc2UgdGhhdCBhcmUgcHJlc2VudCBhcmUgdXNlZC4gVGh1cyB0aGUgc2VxdWVuY2UgXGUwXGV4XGUwMTUKK3NwZWNpZmllcyB0d28gYmluYXJ5IHplcm9zIGZvbGxvd2VkIGJ5IGEgQ1IgY2hhcmFjdGVyIChjb2RlIHZhbHVlIDEzKS4gTWFrZQogc3VyZSB5b3Ugc3VwcGx5IHR3byBkaWdpdHMgYWZ0ZXIgdGhlIGluaXRpYWwgemVybyBpZiB0aGUgcGF0dGVybiBjaGFyYWN0ZXIgdGhhdAogZm9sbG93cyBpcyBpdHNlbGYgYW4gb2N0YWwgZGlnaXQuCiAuUApAQCAtMzI4Myw2ICszMjk2LDYgQEAKIC5ycwogLnNwCiAubmYKLUxhc3QgdXBkYXRlZDogMDggSmFudWFyeSAyMDE0Ci1Db3B5cmlnaHQgKGMpIDE5OTctMjAxNCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZS4KK0xhc3QgdXBkYXRlZDogMTQgSnVuZSAyMDE1CitDb3B5cmlnaHQgKGMpIDE5OTctMjAxNSBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZS4KIC5maQpkaWZmIC0tZ2l0IGEvZGlzdC9wY3JlLmguZ2VuZXJpYyBiL2Rpc3QvcGNyZS5oLmdlbmVyaWMKaW5kZXggNThlZDQ2YS4uYmY2MzUxZiAxMDA2NDQKLS0tIGEvZGlzdC9wY3JlLmguZ2VuZXJpYworKysgYi9kaXN0L3BjcmUuaC5nZW5lcmljCkBAIC00Miw5ICs0Miw5IEBACiAvKiBUaGUgY3VycmVudCBQQ1JFIHZlcnNpb24gaW5mb3JtYXRpb24uICovCiAKICNkZWZpbmUgUENSRV9NQUpPUiAgICAgICAgICA4Ci0jZGVmaW5lIFBDUkVfTUlOT1IgICAgICAgICAgMzcKKyNkZWZpbmUgUENSRV9NSU5PUiAgICAgICAgICAzOAogI2RlZmluZSBQQ1JFX1BSRVJFTEVBU0UgICAgIAotI2RlZmluZSBQQ1JFX0RBVEUgICAgICAgICAgIDIwMTUtMDQtMjgKKyNkZWZpbmUgUENSRV9EQVRFICAgICAgICAgICAyMDE1LTExLTIzCiAKIC8qIFdoZW4gYW4gYXBwbGljYXRpb24gbGlua3MgdG8gYSBQQ1JFIERMTCBpbiBXaW5kb3dzLCB0aGUgc3ltYm9scyB0aGF0IGFyZQogaW1wb3J0ZWQgaGF2ZSB0byBiZSBpZGVudGlmaWVkIGFzIHN1Y2guIFdoZW4gYnVpbGRpbmcgUENSRSwgdGhlIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9kaXN0L3BjcmVfY29tcGlsZS5jIGIvZGlzdC9wY3JlX2NvbXBpbGUuYwppbmRleCAwZWZhZDI2Li40ZDNiMzEzIDEwMDY0NAotLS0gYS9kaXN0L3BjcmVfY29tcGlsZS5jCisrKyBiL2Rpc3QvcGNyZV9jb21waWxlLmMKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAtRVNDX1osICAgICAgICAgICAgICAgICAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULAogICAgICBDSEFSX0JBQ0tTTEFTSCwgICAgICAgICAgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCwKICAgICAgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVCwgIENIQVJfVU5ERVJTQ09SRSwKLSAgICAgQ0hBUl9HUkFWRV9BQ0NFTlQsICAgICAgIDcsCisgICAgIENIQVJfR1JBVkVfQUNDRU5ULCAgICAgICBFU0NfYSwKICAgICAgLUVTQ19iLCAgICAgICAgICAgICAgICAgIDAsCiAgICAgIC1FU0NfZCwgICAgICAgICAgICAgICAgICBFU0NfZSwKICAgICAgRVNDX2YsICAgICAgICAgICAgICAgICAgIDAsCkBAIC0yMDIsOSArMjAyLDkgQEAKIC8qICA2OCAqLyAgICAgMCwgICAgIDAsICAgICd8JywgICAgICcsJywgICAgJyUnLCAgICdfJywgICAgJz4nLCAgICAnPycsCiAvKiAgNzAgKi8gICAgIDAsICAgICAwLCAgICAgIDAsICAgICAgIDAsICAgICAgMCwgICAgIDAsICAgICAgMCwgICAgICAwLAogLyogIDc4ICovICAgICAwLCAgICdgJywgICAgJzonLCAgICAgJyMnLCAgICAnQCcsICAnXCcnLCAgICAnPScsICAgICciJywKLS8qICA4MCAqLyAgICAgMCwgICAgIDcsIC1FU0NfYiwgICAgICAgMCwgLUVTQ19kLCBFU0NfZSwgIEVTQ19mLCAgICAgIDAsCisvKiAgODAgKi8gICAgIDAsIEVTQ19hLCAtRVNDX2IsICAgICAgIDAsIC1FU0NfZCwgRVNDX2UsICBFU0NfZiwgICAgICAwLAogLyogIDg4ICovLUVTQ19oLCAgICAgMCwgICAgICAwLCAgICAgJ3snLCAgICAgIDAsICAgICAwLCAgICAgIDAsICAgICAgMCwKLS8qICA5MCAqLyAgICAgMCwgICAgIDAsIC1FU0NfaywgICAgICdsJywgICAgICAwLCBFU0NfbiwgICAgICAwLCAtRVNDX3AsCisvKiAgOTAgKi8gICAgIDAsICAgICAwLCAtRVNDX2ssICAgICAgIDAsICAgICAgMCwgRVNDX24sICAgICAgMCwgLUVTQ19wLAogLyogIDk4ICovICAgICAwLCBFU0NfciwgICAgICAwLCAgICAgJ30nLCAgICAgIDAsICAgICAwLCAgICAgIDAsICAgICAgMCwKIC8qICBBMCAqLyAgICAgMCwgICAnficsIC1FU0NfcywgRVNDX3RlZSwgICAgICAwLC1FU0NfdiwgLUVTQ193LCAgICAgIDAsCiAvKiAgQTggKi8gICAgIDAsLUVTQ196LCAgICAgIDAsICAgICAgIDAsICAgICAgMCwgICAnWycsICAgICAgMCwgICAgICAwLApAQCAtMjE5LDYgKzIxOSwxMiBAQAogLyogIEYwICovICAgICAwLCAgICAgMCwgICAgICAwLCAgICAgICAwLCAgICAgIDAsICAgICAwLCAgICAgIDAsICAgICAgMCwKIC8qICBGOCAqLyAgICAgMCwgICAgIDAsICAgICAgMCwgICAgICAgMCwgICAgICAwLCAgICAgMCwgICAgICAwLCAgICAgIDAKIH07CisKKy8qIFdlIGFsc28gbmVlZCBhIHRhYmxlIG9mIGNoYXJhY3RlcnMgdGhhdCBtYXkgZm9sbG93IFxjIGluIGFuIEVCQ0RJQworZW52aXJvbm1lbnQgZm9yIGNoYXJhY3RlcnMgMC0zMS4gKi8KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgZWJjZGljX2VzY2FwZV9jW10gPSAiQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fIjsKKwogI2VuZGlmCiAKIApAQCAtNDU4LDcgKzQ2NCw3IEBACiAgICJyYW5nZSBvdXQgb2Ygb3JkZXIgaW4gY2hhcmFjdGVyIGNsYXNzXDAiCiAgICJub3RoaW5nIHRvIHJlcGVhdFwwIgogICAvKiAxMCAqLwotICAib3BlcmFuZCBvZiB1bmxpbWl0ZWQgcmVwZWF0IGNvdWxkIG1hdGNoIHRoZSBlbXB0eSBzdHJpbmdcMCIgIC8qKiBERUFEICoqLworICAiaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgZm9yd2FyZCByZWZlcmVuY2Ugb2Zmc2V0XDAiCiAgICJpbnRlcm5hbCBlcnJvcjogdW5leHBlY3RlZCByZXBlYXRcMCIKICAgInVucmVjb2duaXplZCBjaGFyYWN0ZXIgYWZ0ZXIgKD8gb3IgKD8tXDAiCiAgICJQT1NJWCBuYW1lZCBjbGFzc2VzIGFyZSBzdXBwb3J0ZWQgb25seSB3aXRoaW4gYSBjbGFzc1wwIgpAQCAtNTI3LDcgKzUzMywxMSBAQAogICAiZGlmZmVyZW50IG5hbWVzIGZvciBzdWJwYXR0ZXJucyBvZiB0aGUgc2FtZSBudW1iZXIgYXJlIG5vdCBhbGxvd2VkXDAiCiAgICIoKk1BUkspIG11c3QgaGF2ZSBhbiBhcmd1bWVudFwwIgogICAidGhpcyB2ZXJzaW9uIG9mIFBDUkUgaXMgbm90IGNvbXBpbGVkIHdpdGggVW5pY29kZSBwcm9wZXJ0eSBzdXBwb3J0XDAiCisjaWZuZGVmIEVCQ0RJQwogICAiXFxjIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gQVNDSUkgY2hhcmFjdGVyXDAiCisjZWxzZQorICAiXFxjIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3Igb25lIG9mIFtcXF1eXz9cMCIKKyNlbmRpZgogICAiXFxrIGlzIG5vdCBmb2xsb3dlZCBieSBhIGJyYWNlZCwgYW5nbGUtYnJhY2tldGVkLCBvciBxdW90ZWQgbmFtZVwwIgogICAvKiA3MCAqLwogICAiaW50ZXJuYWwgZXJyb3I6IHVua25vd24gb3Bjb2RlIGluIGZpbmRfZml4ZWRsZW5ndGgoKVwwIgpAQCAtMTQyNSw3ICsxNDM1LDE2IEBACiAgICAgYyBePSAweDQwOwogI2Vsc2UgICAgICAgICAgICAgLyogRUJDRElDIGNvZGluZyAqLwogICAgIGlmIChjID49IENIQVJfYSAmJiBjIDw9IENIQVJfeikgYyArPSA2NDsKLSAgICBjIF49IDB4QzA7CisgICAgaWYgKGMgPT0gQ0hBUl9RVUVTVElPTl9NQVJLKQorICAgICAgYyA9ICgnXFwnID09IDE4OCAmJiAnYCcgPT0gNzQpPyAweDVmIDogMHhmZjsKKyAgICBlbHNlCisgICAgICB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykKKyAgICAgICAgeworICAgICAgICBpZiAoYyA9PSBlYmNkaWNfZXNjYXBlX2NbaV0pIGJyZWFrOworICAgICAgICB9CisgICAgICBpZiAoaSA8IDMyKSBjID0gaTsgZWxzZSAqZXJyb3Jjb2RlcHRyID0gRVJSNjg7CisgICAgICB9CiAjZW5kaWYKICAgICBicmVhazsKIApAQCAtMTc5OSw3ICsxODE4LDcgQEAKICAgICBjYXNlIE9QX0FTU0VSVEJBQ0s6CiAgICAgY2FzZSBPUF9BU1NFUlRCQUNLX05PVDoKICAgICBkbyBjYyArPSBHRVQoY2MsIDEpOyB3aGlsZSAoKmNjID09IE9QX0FMVCk7Ci0gICAgY2MgKz0gUFJJVihPUF9sZW5ndGhzKVsqY2NdOworICAgIGNjICs9IDEgKyBMSU5LX1NJWkU7CiAgICAgYnJlYWs7CiAKICAgICAvKiBTa2lwIG92ZXIgdGhpbmdzIHRoYXQgZG9uJ3QgbWF0Y2ggY2hhcnMgKi8KQEAgLTI0ODcsNyArMjUwNiw3IEBACiAgIGlmIChjID09IE9QX0JSQSAgfHwgYyA9PSBPUF9CUkFQT1MgfHwKICAgICAgIGMgPT0gT1BfQ0JSQSB8fCBjID09IE9QX0NCUkFQT1MgfHwKICAgICAgIGMgPT0gT1BfT05DRSB8fCBjID09IE9QX09OQ0VfTkMgfHwKLSAgICAgIGMgPT0gT1BfQ09ORCkKKyAgICAgIGMgPT0gT1BfQ09ORCB8fCBjID09IE9QX1NDT05EKQogICAgIHsKICAgICBCT09MIGVtcHR5X2JyYW5jaDsKICAgICBpZiAoR0VUKGNvZGUsIDEpID09IDApIHJldHVybiBUUlVFOyAgICAvKiBIaXQgdW5jbG9zZWQgYnJhY2tldCAqLwpAQCAtMzg4NiwxMSArMzkwNSwxMSBAQAogVGhlIHByb2JsZW0gaW4gdHJ5aW5nIHRvIGJlIGV4YWN0bHkgbGlrZSBQZXJsIGlzIGluIHRoZSBoYW5kbGluZyBvZiBlc2NhcGVzLiBXZQogaGF2ZSB0byBiZSBzdXJlIHRoYXQgW2FiY1s6eFxdcHFyXSBpcyAqbm90KiB0cmVhdGVkIGFzIGNvbnRhaW5pbmcgYSBQT1NJWAogY2xhc3MsIGJ1dCBbYWJjWzp4XF1wcXI6XV0gaXMgKHNvIHRoYXQgYW4gZXJyb3IgY2FuIGJlIGdlbmVyYXRlZCkuIFRoZSBjb2RlCi1iZWxvdyBoYW5kbGVzIHRoZSBzcGVjaWFsIGNhc2Ugb2YgXF0sIGJ1dCBkb2VzIG5vdCB0cnkgdG8gZG8gYW55IG90aGVyIGVzY2FwZQotcHJvY2Vzc2luZy4gVGhpcyBtYWtlcyBpdCBkaWZmZXJlbnQgZnJvbSBQZXJsIGZvciBjYXNlcyBzdWNoIGFzIFs6bFxvd2VyOl0KLXdoZXJlIFBlcmwgcmVjb2duaXplcyBpdCBhcyB0aGUgUE9TSVggY2xhc3MgImxvd2VyIiBidXQgUENSRSBkb2VzIG5vdCByZWNvZ25pemUKLSJsXG93ZXIiLiBUaGlzIGlzIGEgbGVzc2VyIGV2aWwgdGhhbiBub3QgZGlhZ25vc2luZyBiYWQgY2xhc3NlcyB3aGVuIFBlcmwgZG9lcywKLUkgdGhpbmsuCitiZWxvdyBoYW5kbGVzIHRoZSBzcGVjaWFsIGNhc2VzIFxcIGFuZCBcXSwgYnV0IGRvZXMgbm90IHRyeSB0byBkbyBhbnkgb3RoZXIKK2VzY2FwZSBwcm9jZXNzaW5nLiBUaGlzIG1ha2VzIGl0IGRpZmZlcmVudCBmcm9tIFBlcmwgZm9yIGNhc2VzIHN1Y2ggYXMKK1s6bFxvd2VyOl0gd2hlcmUgUGVybCByZWNvZ25pemVzIGl0IGFzIHRoZSBQT1NJWCBjbGFzcyAibG93ZXIiIGJ1dCBQQ1JFIGRvZXMKK25vdCByZWNvZ25pemUgImxcb3dlciIuIFRoaXMgaXMgYSBsZXNzZXIgZXZpbCB0aGFuIG5vdCBkaWFnbm9zaW5nIGJhZCBjbGFzc2VzCit3aGVuIFBlcmwgZG9lcywgSSB0aGluay4KIAogQSB1c2VyIHBvaW50ZWQgb3V0IHRoYXQgUENSRSB3YXMgcmVqZWN0aW5nIFs6YVs6ZGlnaXQ6XV0gd2hlcmVhcyBQZXJsIHdhcyBub3QuCiBJdCBzZWVtcyB0aGF0IHRoZSBhcHBlYXJhbmNlIG9mIGEgbmVzdGVkIFBPU0lYIGNsYXNzIHN1cGVyc2VkZXMgYW4gYXBwYXJlbnQKQEAgLTM5MTcsMjEgKzM5MzYsMTYgQEAKIHRlcm1pbmF0b3IgPSAqKCsrcHRyKTsgICAvKiBjb21waWxlciB3YXJucyBhYm91dCAibm9uLWNvbnN0YW50IiBpbml0aWFsaXplci4gKi8KIGZvciAoKytwdHI7ICpwdHIgIT0gQ0hBUl9OVUxMOyBwdHIrKykKICAgewotICBpZiAoKnB0ciA9PSBDSEFSX0JBQ0tTTEFTSCAmJiBwdHJbMV0gPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkKKyAgaWYgKCpwdHIgPT0gQ0hBUl9CQUNLU0xBU0ggJiYKKyAgICAgIChwdHJbMV0gPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCB8fAorICAgICAgIHB0clsxXSA9PSBDSEFSX0JBQ0tTTEFTSCkpCiAgICAgcHRyKys7Ci0gIGVsc2UgaWYgKCpwdHIgPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkgcmV0dXJuIEZBTFNFOwotICBlbHNlCisgIGVsc2UgaWYgKCgqcHRyID09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCAmJiBwdHJbMV0gPT0gdGVybWluYXRvcikgfHwKKyAgICAgICAgICAgICpwdHIgPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkgcmV0dXJuIEZBTFNFOworICBlbHNlIGlmICgqcHRyID09IHRlcm1pbmF0b3IgJiYgcHRyWzFdID09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpCiAgICAgewotICAgIGlmICgqcHRyID09IHRlcm1pbmF0b3IgJiYgcHRyWzFdID09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpCi0gICAgICB7Ci0gICAgICAqZW5kcHRyID0gcHRyOwotICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICB9Ci0gICAgaWYgKCpwdHIgPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUICYmCi0gICAgICAgICAocHRyWzFdID09IENIQVJfQ09MT04gfHwgcHRyWzFdID09IENIQVJfRE9UIHx8Ci0gICAgICAgICAgcHRyWzFdID09IENIQVJfRVFVQUxTX1NJR04pICYmCi0gICAgICAgIGNoZWNrX3Bvc2l4X3N5bnRheChwdHIsIGVuZHB0cikpCi0gICAgICByZXR1cm4gRkFMU0U7CisgICAgKmVuZHB0ciA9IHB0cjsKKyAgICByZXR1cm4gVFJVRTsKICAgICB9CiAgIH0KIHJldHVybiBGQUxTRTsKQEAgLTM5ODUsMTEgKzM5OTksMTIgQEAKIGlzIGNhbGxlZCwgdGhlIHBhcnRpYWxseSBjb21waWxlZCByZWdleCBtdXN0IGJlIHRlbXBvcmFyaWx5IHRlcm1pbmF0ZWQgd2l0aAogT1BfRU5ELgogCi1UaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGV4dGVuZGVkIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIGZvcndhcmQgcmVmZXJlbmNlcyBmb3IKLXJlY3Vyc2lvbnMgYW5kIHN1YnJvdXRpbmUgY2FsbHMuIEl0IG11c3QgYWxzbyBjaGVjayB0aGUgbGlzdCBvZiBzdWNoIHJlZmVyZW5jZXMKLWZvciB0aGUgZ3JvdXAgd2UgYXJlIGRlYWxpbmcgd2l0aC4gSWYgaXQgZmluZHMgdGhhdCBvbmUgb2YgdGhlIHJlY3Vyc2lvbnMgaW4KLXRoZSBjdXJyZW50IGdyb3VwIGlzIG9uIHRoaXMgbGlzdCwgaXQgYWRqdXN0cyB0aGUgb2Zmc2V0IGluIHRoZSBsaXN0LCBub3QgdGhlCi12YWx1ZSBpbiB0aGUgcmVmZXJlbmNlICh3aGljaCBpcyBhIGdyb3VwIG51bWJlcikuCitUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGV4dGVuZGVkIHRvIGNvcGUgd2l0aCBmb3J3YXJkIHJlZmVyZW5jZXMgZm9yIHJlY3Vyc2lvbnMKK2FuZCBzdWJyb3V0aW5lIGNhbGxzLiBJdCBtdXN0IGNoZWNrIHRoZSBsaXN0IG9mIHN1Y2ggcmVmZXJlbmNlcyBmb3IgdGhlCitncm91cCB3ZSBhcmUgZGVhbGluZyB3aXRoLiBJZiBpdCBmaW5kcyB0aGF0IG9uZSBvZiB0aGUgcmVjdXJzaW9ucyBpbiB0aGUKK2N1cnJlbnQgZ3JvdXAgaXMgb24gdGhpcyBsaXN0LCBpdCBkb2VzIG5vdCBhZGp1c3QgdGhlIHZhbHVlIGluIHRoZSByZWZlcmVuY2UKKyh3aGljaCBpcyBhIGdyb3VwIG51bWJlcikuIEFmdGVyIHRoZSBncm91cCBoYXMgYmVlbiBzY2FubmVkLCBhbGwgdGhlIG9mZnNldHMgaW4KK3RoZSBmb3J3YXJkIHJlZmVyZW5jZSBsaXN0IGZvciB0aGUgZ3JvdXAgYXJlIGFkanVzdGVkLgogCiBBcmd1bWVudHM6CiAgIGdyb3VwICAgICAgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgZ3JvdXAKQEAgLTQwMDUsMjkgKzQwMjAsMjEgQEAKIGFkanVzdF9yZWN1cnNlKHBjcmVfdWNoYXIgKmdyb3VwLCBpbnQgYWRqdXN0LCBCT09MIHV0ZiwgY29tcGlsZV9kYXRhICpjZCwKICAgc2l6ZV90IHNhdmVfaHdtX29mZnNldCkKIHsKK2ludCBvZmZzZXQ7CitwY3JlX3VjaGFyICpoYzsKIHBjcmVfdWNoYXIgKnB0ciA9IGdyb3VwOwogCiB3aGlsZSAoKHB0ciA9IChwY3JlX3VjaGFyICopZmluZF9yZWN1cnNlKHB0ciwgdXRmKSkgIT0gTlVMTCkKICAgewotICBpbnQgb2Zmc2V0OwotICBwY3JlX3VjaGFyICpoYzsKLQotICAvKiBTZWUgaWYgdGhpcyByZWN1cnNpb24gaXMgb24gdGhlIGZvcndhcmQgcmVmZXJlbmNlIGxpc3QuIElmIHNvLCBhZGp1c3QgdGhlCi0gIHJlZmVyZW5jZS4gKi8KLQogICBmb3IgKGhjID0gKHBjcmVfdWNoYXIgKiljZC0+c3RhcnRfd29ya3NwYWNlICsgc2F2ZV9od21fb2Zmc2V0OyBoYyA8IGNkLT5od207CiAgICAgICAgaGMgKz0gTElOS19TSVpFKQogICAgIHsKICAgICBvZmZzZXQgPSAoaW50KUdFVChoYywgMCk7Ci0gICAgaWYgKGNkLT5zdGFydF9jb2RlICsgb2Zmc2V0ID09IHB0ciArIDEpCi0gICAgICB7Ci0gICAgICBQVVQoaGMsIDAsIG9mZnNldCArIGFkanVzdCk7Ci0gICAgICBicmVhazsKLSAgICAgIH0KKyAgICBpZiAoY2QtPnN0YXJ0X2NvZGUgKyBvZmZzZXQgPT0gcHRyICsgMSkgYnJlYWs7CiAgICAgfQogCi0gIC8qIE90aGVyd2lzZSwgYWRqdXN0IHRoZSByZWN1cnNpb24gb2Zmc2V0IGlmIGl0J3MgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoaXMKLSAgZ3JvdXAuICovCisgIC8qIElmIHdlIGhhdmUgbm90IGZvdW5kIHRoaXMgcmVjdXJzaW9uIG9uIHRoZSBmb3J3YXJkIHJlZmVyZW5jZSBsaXN0LCBhZGp1c3QKKyAgdGhlIHJlY3Vyc2lvbidzIG9mZnNldCBpZiBpdCdzIGFmdGVyIHRoZSBzdGFydCBvZiB0aGlzIGdyb3VwLiAqLwogCiAgIGlmIChoYyA+PSBjZC0+aHdtKQogICAgIHsKQEAgLTQwMzcsNiArNDA0NCwxNSBAQAogCiAgIHB0ciArPSAxICsgTElOS19TSVpFOwogICB9CisKKy8qIE5vdyBhZGp1c3QgYWxsIGZvcndhcmQgcmVmZXJlbmNlIG9mZnNldHMgZm9yIHRoZSBncm91cC4gKi8KKworZm9yIChoYyA9IChwY3JlX3VjaGFyICopY2QtPnN0YXJ0X3dvcmtzcGFjZSArIHNhdmVfaHdtX29mZnNldDsgaGMgPCBjZC0+aHdtOworICAgICBoYyArPSBMSU5LX1NJWkUpCisgIHsKKyAgb2Zmc2V0ID0gKGludClHRVQoaGMsIDApOworICBQVVQoaGMsIDAsIG9mZnNldCArIGFkanVzdCk7CisgIH0KIH0KIAogCkBAIC00NDY1LDcgKzQ0ODEsNyBAQAogY29uc3QgcGNyZV91Y2hhciAqbmVzdHB0ciA9IE5VTEw7CiBwY3JlX3VjaGFyICpwcmV2aW91cyA9IE5VTEw7CiBwY3JlX3VjaGFyICpwcmV2aW91c19jYWxsb3V0ID0gTlVMTDsKLXNpemVfdCBzYXZlX2h3bV9vZmZzZXQgPSAwOworc2l6ZV90IGl0ZW1faHdtX29mZnNldCA9IDA7CiBwY3JlX3VpbnQ4IGNsYXNzYml0c1szMl07CiAKIC8qIFdlIGNhbiBmaXNoIG91dCB0aGUgVVRGLTggc2V0dGluZyBvbmNlIGFuZCBmb3IgYWxsIGludG8gYSBCT09MLCBidXQgd2UKQEAgLTQ2MjMsOCArNDYzOSw3IEBACiAgIC8qIEluIHRoZSByZWFsIGNvbXBpbGUgcGhhc2UsIGp1c3QgY2hlY2sgdGhlIHdvcmtzcGFjZSB1c2VkIGJ5IHRoZSBmb3J3YXJkCiAgIHJlZmVyZW5jZSBsaXN0LiAqLwogCi0gIGVsc2UgaWYgKGNkLT5od20gPiBjZC0+c3RhcnRfd29ya3NwYWNlICsgY2QtPndvcmtzcGFjZV9zaXplIC0KLSAgICAgICAgICAgV09SS19TSVpFX1NBRkVUWV9NQVJHSU4pCisgIGVsc2UgaWYgKGNkLT5od20gPiBjZC0+c3RhcnRfd29ya3NwYWNlICsgY2QtPndvcmtzcGFjZV9zaXplKQogICAgIHsKICAgICAqZXJyb3Jjb2RlcHRyID0gRVJSNTI7CiAgICAgZ290byBGQUlMRUQ7CkBAIC00NzY3LDYgKzQ3ODIsNyBAQAogICAgIHplcm9yZXFjaGFyID0gcmVxY2hhcjsKICAgICB6ZXJvcmVxY2hhcmZsYWdzID0gcmVxY2hhcmZsYWdzOwogICAgIHByZXZpb3VzID0gY29kZTsKKyAgICBpdGVtX2h3bV9vZmZzZXQgPSBjZC0+aHdtIC0gY2QtPnN0YXJ0X3dvcmtzcGFjZTsKICAgICAqY29kZSsrID0gKChvcHRpb25zICYgUENSRV9ET1RBTEwpICE9IDApPyBPUF9BTExBTlk6IE9QX0FOWTsKICAgICBicmVhazsKIApAQCAtNDgxOCw2ICs0ODM0LDcgQEAKICAgICAvKiBIYW5kbGUgYSByZWFsIGNoYXJhY3RlciBjbGFzcy4gKi8KIAogICAgIHByZXZpb3VzID0gY29kZTsKKyAgICBpdGVtX2h3bV9vZmZzZXQgPSBjZC0+aHdtIC0gY2QtPnN0YXJ0X3dvcmtzcGFjZTsKIAogICAgIC8qIFBDUkUgc3VwcG9ydHMgUE9TSVggY2xhc3Mgc3R1ZmYgaW5zaWRlIGEgY2xhc3MuIFBlcmwgZ2l2ZXMgYW4gZXJyb3IgaWYKICAgICB0aGV5IGFyZSBlbmNvdW50ZXJlZCBhdCB0aGUgdG9wIGxldmVsLCBzbyB3ZSdsbCBkbyB0aGF0IHRvby4gKi8KQEAgLTQ5MjMsOSArNDk0MCwxMCBAQAogICAgICAgKHdoaWNoIGlzIG9uIHRoZSBzdGFjaykuIFdlIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCB0aGVyZSB3YXMgWENMQVNTIGRhdGEsCiAgICAgICBob3dldmVyLiAqLwogCisgICAgICBpZiAoY2xhc3NfdWNoYXJkYXRhID4gY2xhc3NfdWNoYXJkYXRhX2Jhc2UpIHhjbGFzcyA9IFRSVUU7CisKICAgICAgIGlmIChsZW5ndGhwdHIgIT0gTlVMTCAmJiBjbGFzc191Y2hhcmRhdGEgPiBjbGFzc191Y2hhcmRhdGFfYmFzZSkKICAgICAgICAgewotICAgICAgICB4Y2xhc3MgPSBUUlVFOwogICAgICAgICAqbGVuZ3RocHRyICs9IChpbnQpKGNsYXNzX3VjaGFyZGF0YSAtIGNsYXNzX3VjaGFyZGF0YV9iYXNlKTsKICAgICAgICAgY2xhc3NfdWNoYXJkYXRhID0gY2xhc3NfdWNoYXJkYXRhX2Jhc2U7CiAgICAgICAgIH0KQEAgLTUwMjgsMTAgKzUwNDYsMjYgQEAKICAgICAgICAgICAgIHB0ciA9IHRlbXBwdHIgKyAxOwogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIC8qIEZvciBhbGwgb3RoZXIgUE9TSVggY2xhc3Nlcywgbm8gc3BlY2lhbCBhY3Rpb24gaXMgdGFrZW4gaW4gVUNQCi0gICAgICAgICAgICBtb2RlLiBGYWxsIHRocm91Z2ggdG8gdGhlIG5vbl9VQ1AgY2FzZS4gKi8KKyAgICAgICAgICAgIC8qIEZvciB0aGUgb3RoZXIgUE9TSVggY2xhc3NlcyAoYXNjaWksIHhkaWdpdCkgd2UgYXJlIGdvaW5nIHRvIGZhbGwKKyAgICAgICAgICAgIHRocm91Z2ggdG8gdGhlIG5vbi1VQ1AgY2FzZSBhbmQgYnVpbGQgYSBiaXQgbWFwIGZvciBjaGFyYWN0ZXJzIHdpdGgKKyAgICAgICAgICAgIGNvZGUgcG9pbnRzIGxlc3MgdGhhbiAyNTYuIElmIHdlIGFyZSBpbiBhIG5lZ2F0ZWQgUE9TSVggY2xhc3MKKyAgICAgICAgICAgIHdpdGhpbiBhIG5vbi1uZWdhdGVkIG92ZXJhbGwgY2xhc3MsIGNoYXJhY3RlcnMgd2l0aCBjb2RlIHBvaW50cworICAgICAgICAgICAgZ3JlYXRlciB0aGFuIDI1NSBtdXN0IGFsbCBtYXRjaC4gSW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBoYXZlCisgICAgICAgICAgICBub3QgeWV0IGdlbmVyYXRlZCBhbnkgeGNsYXNzIGRhdGEsIGFuZCB0aGlzIGlzIHRoZSBmaW5hbCBpdGVtIGluCisgICAgICAgICAgICB0aGUgb3ZlcmFsbCBjbGFzcywgd2UgbmVlZCBkbyBub3RoaW5nOiBsYXRlciBvbiwgdGhlIG9wY29kZQorICAgICAgICAgICAgT1BfTkNMQVNTIHdpbGwgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDI1NQorICAgICAgICAgICAgYXJlIGFjY2VwdGFibGUuIElmIHdlIGhhdmUgYWxyZWFkeSBzZWVuIGFuIHhjbGFzcyBpdGVtIG9yIG9uZSBtYXkKKyAgICAgICAgICAgIGZvbGxvdyAod2UgaGF2ZSB0byBhc3N1bWUgdGhhdCBpdCBtaWdodCBpZiB0aGlzIGlzIG5vdCB0aGUgZW5kIG9mCisgICAgICAgICAgICB0aGUgY2xhc3MpLCBleHBsaWNpdGx5IG1hdGNoIGFsbCB3aWRlIGNvZGVwb2ludHMuICovCiAKICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIW5lZ2F0ZV9jbGFzcyAmJiBsb2NhbF9uZWdhdGUgJiYKKyAgICAgICAgICAgICAgICAoeGNsYXNzIHx8IHRlbXBwdHJbMl0gIT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgKmNsYXNzX3VjaGFyZGF0YSsrID0gWENMX1JBTkdFOworICAgICAgICAgICAgICBjbGFzc191Y2hhcmRhdGEgKz0gUFJJVihvcmQydXRmKSgweDEwMCwgY2xhc3NfdWNoYXJkYXRhKTsKKyAgICAgICAgICAgICAgY2xhc3NfdWNoYXJkYXRhICs9IFBSSVYob3JkMnV0ZikoMHgxMGZmZmYsIGNsYXNzX3VjaGFyZGF0YSk7CisgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0KQEAgLTUxOTUsOSArNTIyOSw5IEBACiAgICAgICAgICAgICAgIGNkLCBQUklWKHZzcGFjZV9saXN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKIAotI2lmZGVmIFNVUFBPUlRfVUNQCiAgICAgICAgICAgICBjYXNlIEVTQ19wOgogICAgICAgICAgICAgY2FzZSBFU0NfUDoKKyNpZmRlZiBTVVBQT1JUX1VDUAogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIEJPT0wgbmVnYXRlZDsKICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHB0eXBlID0gMCwgcGRhdGEgPSAwOwpAQCAtNTIxMSw2ICs1MjQ1LDkgQEAKICAgICAgICAgICAgICAgY2xhc3NfaGFzXzhiaXRjaGFyLS07ICAgICAgICAgICAgICAgIC8qIFVuZG8hICovCiAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgKmVycm9yY29kZXB0ciA9IEVSUjQ1OworICAgICAgICAgICAgZ290byBGQUlMRUQ7CiAjZW5kaWYKICAgICAgICAgICAgIC8qIFVucmVjb2duaXplZCBlc2NhcGVzIGFyZSBmYXVsdGVkIGlmIFBDUkUgaXMgcnVubmluZyBpbiBpdHMKICAgICAgICAgICAgIHN0cmljdCBtb2RlLiBCeSBkZWZhdWx0LCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFBlcmwsIHRoZXkgYXJlCkBAIC01MzY3LDE2ICs1NDA0LDIwIEBACiAgICAgICBDTEFTU19TSU5HTEVfQ0hBUkFDVEVSOgogICAgICAgaWYgKGNsYXNzX29uZV9jaGFyIDwgMikgY2xhc3Nfb25lX2NoYXIrKzsKIAotICAgICAgLyogSWYgY2xhc3Nfb25lX2NoYXIgaXMgMSwgd2UgaGF2ZSB0aGUgZmlyc3Qgc2luZ2xlIGNoYXJhY3RlciBpbiB0aGUKLSAgICAgIGNsYXNzLCBhbmQgdGhlcmUgaGF2ZSBiZWVuIG5vIHByaW9yIHJhbmdlcywgb3IgWENMQVNTIGl0ZW1zIGdlbmVyYXRlZCBieQotICAgICAgZXNjYXBlcy4gSWYgdGhpcyBpcyB0aGUgZmluYWwgY2hhcmFjdGVyIGluIHRoZSBjbGFzcywgd2UgY2FuIG9wdGltaXplIGJ5Ci0gICAgICB0dXJuaW5nIHRoZSBpdGVtIGludG8gYSAxLWNoYXJhY3RlciBPUF9DSEFSW0ldIGlmIGl0J3MgcG9zaXRpdmUsIG9yCi0gICAgICBPUF9OT1RbSV0gaWYgaXQncyBuZWdhdGl2ZS4gSW4gdGhlIHBvc2l0aXZlIGNhc2UsIGl0IGNhbiBjYXVzZSBmaXJzdGNoYXIKLSAgICAgIHRvIGJlIHNldC4gT3RoZXJ3aXNlLCB0aGVyZSBjYW4gYmUgbm8gZmlyc3QgY2hhciBpZiB0aGlzIGl0ZW0gaXMgZmlyc3QsCi0gICAgICB3aGF0ZXZlciByZXBlYXQgY291bnQgbWF5IGZvbGxvdy4gSW4gdGhlIGNhc2Ugb2YgcmVxY2hhciwgc2F2ZSB0aGUKLSAgICAgIHByZXZpb3VzIHZhbHVlIGZvciByZWluc3RhdGluZy4gKi8KKyAgICAgIC8qIElmIHhjbGFzc19oYXNfcHJvcCBpcyBmYWxzZSBhbmQgY2xhc3Nfb25lX2NoYXIgaXMgMSwgd2UgaGF2ZSB0aGUgZmlyc3QKKyAgICAgIHNpbmdsZSBjaGFyYWN0ZXIgaW4gdGhlIGNsYXNzLCBhbmQgdGhlcmUgaGF2ZSBiZWVuIG5vIHByaW9yIHJhbmdlcywgb3IKKyAgICAgIFhDTEFTUyBpdGVtcyBnZW5lcmF0ZWQgYnkgZXNjYXBlcy4gSWYgdGhpcyBpcyB0aGUgZmluYWwgY2hhcmFjdGVyIGluIHRoZQorICAgICAgY2xhc3MsIHdlIGNhbiBvcHRpbWl6ZSBieSB0dXJuaW5nIHRoZSBpdGVtIGludG8gYSAxLWNoYXJhY3RlciBPUF9DSEFSW0ldCisgICAgICBpZiBpdCdzIHBvc2l0aXZlLCBvciBPUF9OT1RbSV0gaWYgaXQncyBuZWdhdGl2ZS4gSW4gdGhlIHBvc2l0aXZlIGNhc2UsIGl0CisgICAgICBjYW4gY2F1c2UgZmlyc3RjaGFyIHRvIGJlIHNldC4gT3RoZXJ3aXNlLCB0aGVyZSBjYW4gYmUgbm8gZmlyc3QgY2hhciBpZgorICAgICAgdGhpcyBpdGVtIGlzIGZpcnN0LCB3aGF0ZXZlciByZXBlYXQgY291bnQgbWF5IGZvbGxvdy4gSW4gdGhlIGNhc2Ugb2YKKyAgICAgIHJlcWNoYXIsIHNhdmUgdGhlIHByZXZpb3VzIHZhbHVlIGZvciByZWluc3RhdGluZy4gKi8KIAotICAgICAgaWYgKCFpbmVzY3EgJiYgY2xhc3Nfb25lX2NoYXIgPT0gMSAmJiBwdHJbMV0gPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkKKyAgICAgIGlmICghaW5lc2NxICYmCisjaWZkZWYgU1VQUE9SVF9VQ1AKKyAgICAgICAgICAheGNsYXNzX2hhc19wcm9wICYmCisjZW5kaWYKKyAgICAgICAgICBjbGFzc19vbmVfY2hhciA9PSAxICYmIHB0clsxXSA9PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUKQogICAgICAgICB7CiAgICAgICAgIHB0cisrOwogICAgICAgICB6ZXJvcmVxY2hhciA9IHJlcWNoYXI7CkBAIC01NDkyLDkgKzU1MzMsMTAgQEAKICAgICBhY3R1YWwgY29tcGlsZWQgY29kZS4gKi8KIAogI2lmZGVmIFNVUFBPUlRfVVRGCi0gICAgaWYgKHhjbGFzcyAmJiAoIXNob3VsZF9mbGlwX25lZ2F0aW9uIHx8IChvcHRpb25zICYgUENSRV9VQ1ApICE9IDApKQorICAgIGlmICh4Y2xhc3MgJiYgKHhjbGFzc19oYXNfcHJvcCB8fCAhc2hvdWxkX2ZsaXBfbmVnYXRpb24gfHwKKyAgICAgICAgKG9wdGlvbnMgJiBQQ1JFX1VDUCkgIT0gMCkpCiAjZWxpZiAhZGVmaW5lZCBDT01QSUxFX1BDUkU4Ci0gICAgaWYgKHhjbGFzcyAmJiAhc2hvdWxkX2ZsaXBfbmVnYXRpb24pCisgICAgaWYgKHhjbGFzcyAmJiAoeGNsYXNzX2hhc19wcm9wIHx8ICFzaG91bGRfZmxpcF9uZWdhdGlvbikpCiAjZW5kaWYKICNpZiBkZWZpbmVkIFNVUFBPUlRfVVRGIHx8ICFkZWZpbmVkIENPTVBJTEVfUENSRTgKICAgICAgIHsKQEAgLTU5MzAsNyArNTk3Miw3IEBACiAgICAgICB7CiAgICAgICByZWdpc3RlciBpbnQgaTsKICAgICAgIGludCBsZW4gPSAoaW50KShjb2RlIC0gcHJldmlvdXMpOwotICAgICAgc2l6ZV90IGJhc2VfaHdtX29mZnNldCA9IHNhdmVfaHdtX29mZnNldDsKKyAgICAgIHNpemVfdCBiYXNlX2h3bV9vZmZzZXQgPSBpdGVtX2h3bV9vZmZzZXQ7CiAgICAgICBwY3JlX3VjaGFyICpicmFsaW5rID0gTlVMTDsKICAgICAgIHBjcmVfdWNoYXIgKmJyYXplcm9wdHIgPSBOVUxMOwogCkBAIC01OTg1LDcgKzYwMjcsNyBAQAogICAgICAgICBpZiAocmVwZWF0X21heCA8PSAxKSAgICAvKiBDb3ZlcnMgMCwgMSwgYW5kIHVubGltaXRlZCAqLwogICAgICAgICAgIHsKICAgICAgICAgICAqY29kZSA9IE9QX0VORDsKLSAgICAgICAgICBhZGp1c3RfcmVjdXJzZShwcmV2aW91cywgMSwgdXRmLCBjZCwgc2F2ZV9od21fb2Zmc2V0KTsKKyAgICAgICAgICBhZGp1c3RfcmVjdXJzZShwcmV2aW91cywgMSwgdXRmLCBjZCwgaXRlbV9od21fb2Zmc2V0KTsKICAgICAgICAgICBtZW1tb3ZlKHByZXZpb3VzICsgMSwgcHJldmlvdXMsIElOX1VDSEFSUyhsZW4pKTsKICAgICAgICAgICBjb2RlKys7CiAgICAgICAgICAgaWYgKHJlcGVhdF9tYXggPT0gMCkKQEAgLTYwMDksNyArNjA1MSw3IEBACiAgICAgICAgICAgewogICAgICAgICAgIGludCBvZmZzZXQ7CiAgICAgICAgICAgKmNvZGUgPSBPUF9FTkQ7Ci0gICAgICAgICAgYWRqdXN0X3JlY3Vyc2UocHJldmlvdXMsIDIgKyBMSU5LX1NJWkUsIHV0ZiwgY2QsIHNhdmVfaHdtX29mZnNldCk7CisgICAgICAgICAgYWRqdXN0X3JlY3Vyc2UocHJldmlvdXMsIDIgKyBMSU5LX1NJWkUsIHV0ZiwgY2QsIGl0ZW1faHdtX29mZnNldCk7CiAgICAgICAgICAgbWVtbW92ZShwcmV2aW91cyArIDIgKyBMSU5LX1NJWkUsIHByZXZpb3VzLCBJTl9VQ0hBUlMobGVuKSk7CiAgICAgICAgICAgY29kZSArPSAyICsgTElOS19TSVpFOwogICAgICAgICAgICpwcmV2aW91cysrID0gT1BfQlJBWkVSTyArIHJlcGVhdF90eXBlOwpAQCAtNjI1NCw2ICs2Mjk2LDEyIEBACiAgICAgICAgICAgICB3aGlsZSAoKnNjb2RlID09IE9QX0FMVCk7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAvKiBBIGNvbmRpdGlvbmFsIGdyb3VwIHdpdGggb25seSBvbmUgYnJhbmNoIGhhcyBhbiBpbXBsaWNpdCBlbXB0eQorICAgICAgICAgIGFsdGVybmF0aXZlIGJyYW5jaC4gKi8KKworICAgICAgICAgIGlmICgqYnJhY29kZSA9PSBPUF9DT05EICYmIGJyYWNvZGVbR0VUKGJyYWNvZGUsMSldICE9IE9QX0FMVCkKKyAgICAgICAgICAgICpicmFjb2RlID0gT1BfU0NPTkQ7CisKICAgICAgICAgICAvKiBIYW5kbGUgcG9zc2Vzc2l2ZSBxdWFudGlmaWVycy4gKi8KIAogICAgICAgICAgIGlmIChwb3NzZXNzaXZlX3F1YW50aWZpZXIpCkBAIC02MjY3LDExICs2MzE1LDExIEBACiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgaW50IG5sZW4gPSAoaW50KShjb2RlIC0gYnJhY29kZSk7CiAgICAgICAgICAgICAgICpjb2RlID0gT1BfRU5EOwotICAgICAgICAgICAgICBhZGp1c3RfcmVjdXJzZShicmFjb2RlLCAxICsgTElOS19TSVpFLCB1dGYsIGNkLCBzYXZlX2h3bV9vZmZzZXQpOworICAgICAgICAgICAgICBhZGp1c3RfcmVjdXJzZShicmFjb2RlLCAxICsgTElOS19TSVpFLCB1dGYsIGNkLCBpdGVtX2h3bV9vZmZzZXQpOwogICAgICAgICAgICAgICBtZW1tb3ZlKGJyYWNvZGUgKyAxICsgTElOS19TSVpFLCBicmFjb2RlLCBJTl9VQ0hBUlMobmxlbikpOwogICAgICAgICAgICAgICBjb2RlICs9IDEgKyBMSU5LX1NJWkU7CiAgICAgICAgICAgICAgIG5sZW4gKz0gMSArIExJTktfU0laRTsKLSAgICAgICAgICAgICAgKmJyYWNvZGUgPSBPUF9CUkFQT1M7CisgICAgICAgICAgICAgICpicmFjb2RlID0gKCpicmFjb2RlID09IE9QX0NPTkQpPyBPUF9CUkFQT1MgOiBPUF9TQlJBUE9TOwogICAgICAgICAgICAgICAqY29kZSsrID0gT1BfS0VUUlBPUzsKICAgICAgICAgICAgICAgUFVUSU5DKGNvZGUsIDAsIG5sZW4pOwogICAgICAgICAgICAgICBQVVQoYnJhY29kZSwgMSwgbmxlbik7CkBAIC02NDAxLDcgKzY0NDksNyBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgewogICAgICAgICAgICpjb2RlID0gT1BfRU5EOwotICAgICAgICAgIGFkanVzdF9yZWN1cnNlKHRlbXBjb2RlLCAxICsgTElOS19TSVpFLCB1dGYsIGNkLCBzYXZlX2h3bV9vZmZzZXQpOworICAgICAgICAgIGFkanVzdF9yZWN1cnNlKHRlbXBjb2RlLCAxICsgTElOS19TSVpFLCB1dGYsIGNkLCBpdGVtX2h3bV9vZmZzZXQpOwogICAgICAgICAgIG1lbW1vdmUodGVtcGNvZGUgKyAxICsgTElOS19TSVpFLCB0ZW1wY29kZSwgSU5fVUNIQVJTKGxlbikpOwogICAgICAgICAgIGNvZGUgKz0gMSArIExJTktfU0laRTsKICAgICAgICAgICBsZW4gKz0gMSArIExJTktfU0laRTsKQEAgLTY0NTAsNyArNjQ5OCw3IEBACiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgKmNvZGUgPSBPUF9FTkQ7Ci0gICAgICAgIGFkanVzdF9yZWN1cnNlKHRlbXBjb2RlLCAxICsgTElOS19TSVpFLCB1dGYsIGNkLCBzYXZlX2h3bV9vZmZzZXQpOworICAgICAgICBhZGp1c3RfcmVjdXJzZSh0ZW1wY29kZSwgMSArIExJTktfU0laRSwgdXRmLCBjZCwgaXRlbV9od21fb2Zmc2V0KTsKICAgICAgICAgbWVtbW92ZSh0ZW1wY29kZSArIDEgKyBMSU5LX1NJWkUsIHRlbXBjb2RlLCBJTl9VQ0hBUlMobGVuKSk7CiAgICAgICAgIGNvZGUgKz0gMSArIExJTktfU0laRTsKICAgICAgICAgbGVuICs9IDEgKyBMSU5LX1NJWkU7CkBAIC02NTg2LDkgKzY2MzQsMTcgQEAKICAgICAgICAgICAgICAgZ290byBGQUlMRUQ7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldHZlcmIgPSAqY29kZSsrID0gdmVyYnNbaV0ub3BfYXJnOwotICAgICAgICAgICAgKmNvZGUrKyA9IGFyZ2xlbjsKLSAgICAgICAgICAgIG1lbWNweShjb2RlLCBhcmcsIElOX1VDSEFSUyhhcmdsZW4pKTsKLSAgICAgICAgICAgIGNvZGUgKz0gYXJnbGVuOworICAgICAgICAgICAgaWYgKGxlbmd0aHB0ciAhPSBOVUxMKSAgICAvKiBJbiBwYXNzIDEganVzdCBhZGQgaW4gdGhlIGxlbmd0aCAqLworICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAvKiB0byBhdm9pZCBwb3RlbnRpYWwgd29ya3NwYWNlICovCisgICAgICAgICAgICAgICpsZW5ndGhwdHIgKz0gYXJnbGVuOyAgIC8qIG92ZXJmbG93LiAqLworICAgICAgICAgICAgICAqY29kZSsrID0gMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICpjb2RlKysgPSBhcmdsZW47CisgICAgICAgICAgICAgIG1lbWNweShjb2RlLCBhcmcsIElOX1VDSEFSUyhhcmdsZW4pKTsKKyAgICAgICAgICAgICAgY29kZSArPSBhcmdsZW47CisgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpjb2RlKysgPSAwOwogICAgICAgICAgICAgfQogCkBAIC02NjIzLDcgKzY2NzksNyBAQAogICAgIG5ld29wdGlvbnMgPSBvcHRpb25zOwogICAgIHNraXBieXRlcyA9IDA7CiAgICAgYnJhdmFsdWUgPSBPUF9DQlJBOwotICAgIHNhdmVfaHdtX29mZnNldCA9IGNkLT5od20gLSBjZC0+c3RhcnRfd29ya3NwYWNlOworICAgIGl0ZW1faHdtX29mZnNldCA9IGNkLT5od20gLSBjZC0+c3RhcnRfd29ya3NwYWNlOwogICAgIHJlc2V0X2JyYWNvdW50ID0gRkFMU0U7CiAKICAgICAvKiBEZWFsIHdpdGggdGhlIGV4dGVuZGVkIHBhcmVudGhlc2VzOyBhbGwgYXJlIGludHJvZHVjZWQgYnkgJz8nLCBhbmQgdGhlCkBAIC02NjQxLDYgKzY2OTcsNyBAQAogICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICAgICAgICAgY2FzZSBDSEFSX1ZFUlRJQ0FMX0xJTkU6ICAvKiBSZXNldCBjYXB0dXJlIGNvdW50IGZvciBlYWNoIGJyYW5jaCAqLwogICAgICAgICByZXNldF9icmFjb3VudCA9IFRSVUU7CisgICAgICAgIGNkLT5kdXBncm91cHMgPSBUUlVFOyAgICAgLyogUmVjb3JkICg/fCBlbmNvdW50ZXJlZCAqLwogICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8KIAogICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTY3NDEsNiArNjc5OCwxMiBAQAogICAgICAgICAgIHsKICAgICAgICAgICB3aGlsZSAoSVNfRElHSVQoKnB0cikpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICBpZiAocmVjbm8gPiBJTlRfTUFYIC8gMTAgLSAxKSAgLyogSW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHdoaWxlIChJU19ESUdJVCgqcHRyKSkgcHRyKys7CisgICAgICAgICAgICAgICplcnJvcmNvZGVwdHIgPSBFUlI2MTsKKyAgICAgICAgICAgICAgZ290byBGQUlMRUQ7CisgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlY25vID0gcmVjbm8gKiAxMCArIChpbnQpKCpwdHIgLSBDSEFSXzApOwogICAgICAgICAgICAgcHRyKys7CiAgICAgICAgICAgICB9CkBAIC02NzY5LDcgKzY4MzIsNyBAQAogICAgICAgICAgICAgcHRyKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgbmFtZWxlbiA9IChpbnQpKHB0ciAtIG5hbWUpOwotICAgICAgICAgIGlmIChsZW5ndGhwdHIgIT0gTlVMTCkgKmxlbmd0aHB0ciArPSBJTU0yX1NJWkU7CisgICAgICAgICAgaWYgKGxlbmd0aHB0ciAhPSBOVUxMKSBza2lwYnl0ZXMgKz0gSU1NMl9TSVpFOwogICAgICAgICAgIH0KIAogICAgICAgICAvKiBDaGVjayB0aGUgdGVybWluYXRvciAqLwpAQCAtNjg3NSw2ICs2OTM4LDExIEBACiAgICAgICAgICAgICAgICplcnJvcmNvZGVwdHIgPSBFUlIxNTsKICAgICAgICAgICAgICAgZ290byBGQUlMRUQ7CiAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZWNubyA+IElOVF9NQVggLyAxMCAtIDEpICAgLyogSW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICplcnJvcmNvZGVwdHIgPSBFUlI2MTsKKyAgICAgICAgICAgICAgZ290byBGQUlMRUQ7CisgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlY25vID0gcmVjbm8gKiAxMCArIG5hbWVbaV0gLSBDSEFSXzA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgaWYgKHJlY25vID09IDApIHJlY25vID0gUlJFRl9BTlk7CkBAIC03MTUxLDYgKzcyMTksNyBAQAogICAgICAgICBpZiAobGVuZ3RocHRyICE9IE5VTEwpCiAgICAgICAgICAgewogICAgICAgICAgIG5hbWVkX2dyb3VwICpuZzsKKyAgICAgICAgICByZWNubyA9IDA7CiAKICAgICAgICAgICBpZiAobmFtZWxlbiA9PSAwKQogICAgICAgICAgICAgewpAQCAtNzE2OCwyMCArNzIzNyw2IEBACiAgICAgICAgICAgICBnb3RvIEZBSUxFRDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgIC8qIFRoZSBuYW1lIHRhYmxlIGRvZXMgbm90IGV4aXN0IGluIHRoZSBmaXJzdCBwYXNzOyBpbnN0ZWFkIHdlIG11c3QKLSAgICAgICAgICBzY2FuIHRoZSBsaXN0IG9mIG5hbWVzIGVuY291bnRlcmVkIHNvIGZhciBpbiBvcmRlciB0byBnZXQgdGhlCi0gICAgICAgICAgbnVtYmVyLiBJZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIHNldCB0aGUgdmFsdWUgdG8gMCBmb3IgYSBmb3J3YXJkCi0gICAgICAgICAgcmVmZXJlbmNlLiAqLwotCi0gICAgICAgICAgbmcgPSBjZC0+bmFtZWRfZ3JvdXBzOwotICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjZC0+bmFtZXNfZm91bmQ7IGkrKywgbmcrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lbGVuID09IG5nLT5sZW5ndGggJiYKLSAgICAgICAgICAgICAgICBTVFJOQ01QX1VDX1VDKG5hbWUsIG5nLT5uYW1lLCBuYW1lbGVuKSA9PSAwKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICByZWNubyA9IChpIDwgY2QtPm5hbWVzX2ZvdW5kKT8gbmctPm51bWJlciA6IDA7Ci0KICAgICAgICAgICAvKiBDb3VudCBuYW1lZCBiYWNrIHJlZmVyZW5jZXMuICovCiAKICAgICAgICAgICBpZiAoIWlzX3JlY3Vyc2UpIGNkLT5uYW1lZHJlZmNvdW50Kys7CkBAIC03MTkxLDYgKzcyNDYsNTYgQEAKICAgICAgICAgICAxNi1iaXQgZGF0YSBpdGVtLiAqLwogCiAgICAgICAgICAgKmxlbmd0aHB0ciArPSBJTU0yX1NJWkU7CisKKyAgICAgICAgICAvKiBJZiB0aGlzIGlzIGEgZm9yd2FyZCByZWZlcmVuY2UgYW5kIHdlIGFyZSB3aXRoaW4gYSAoP3wuLi4pIGdyb3VwLAorICAgICAgICAgIHRoZSByZWZlcmVuY2UgbWF5IGVuZCB1cCBhcyB0aGUgbnVtYmVyIG9mIGEgZ3JvdXAgd2hpY2ggd2UgYXJlCisgICAgICAgICAgY3VycmVudGx5IGluc2lkZSwgdGhhdCBpcywgaXQgY291bGQgYmUgYSByZWN1cnNpdmUgcmVmZXJlbmNlLiBJbiB0aGUKKyAgICAgICAgICByZWFsIGNvbXBpbGUgdGhpcyB3aWxsIGJlIHBpY2tlZCB1cCBhbmQgdGhlIHJlZmVyZW5jZSB3cmFwcGVkIHdpdGgKKyAgICAgICAgICBPUF9PTkNFIHRvIG1ha2UgaXQgYXRvbWljLCBzbyB3ZSBtdXN0IHNwYWNlIGluIGNhc2UgdGhpcyBvY2N1cnMuICovCisKKyAgICAgICAgICAvKiBJbiBmYWN0LCB0aGlzIGNhbiBoYXBwZW4gZm9yIGEgbm9uLWZvcndhcmQgcmVmZXJlbmNlIGJlY2F1c2UKKyAgICAgICAgICBhbm90aGVyIGdyb3VwIHdpdGggdGhlIHNhbWUgbnVtYmVyIG1pZ2h0IGJlIGNyZWF0ZWQgbGF0ZXIuIFRoaXMKKyAgICAgICAgICBpc3N1ZSBpcyBmaXhlZCAicHJvcGVybHkiIGluIFBDUkUyLiBBcyBQQ1JFMSBpcyBub3cgaW4gbWFpbnRlbmFuY2UKKyAgICAgICAgICBvbmx5IG1vZGUsIHdlIGZpbmVzc2UgdGhlIGJ1ZyBieSBhbGxvd2luZyBtb3JlIG1lbW9yeSBhbHdheXMuICovCisKKyAgICAgICAgICAqbGVuZ3RocHRyICs9IDIgKyAyKkxJTktfU0laRTsKKworICAgICAgICAgIC8qIEl0IGlzIGV2ZW4gd29yc2UgdGhhbiB0aGF0LiBUaGUgY3VycmVudCByZWZlcmVuY2UgbWF5IGJlIHRvIGFuCisgICAgICAgICAgZXhpc3RpbmcgbmFtZWQgZ3JvdXAgd2l0aCBhIGRpZmZlcmVudCBudW1iZXIgKHNvIGFwcGFyZW50bHkgbm90CisgICAgICAgICAgcmVjdXJzaXZlKSBidXQgd2hpY2ggbGF0ZXIgb24gaXMgYWxzbyBhdHRhY2hlZCB0byBhIGdyb3VwIHdpdGggdGhlCisgICAgICAgICAgY3VycmVudCBudW1iZXIuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmICQofCBoYXMgYmVlbiBwcmV2aW91cworICAgICAgICAgIGVuY291bnRlcmVkLiBJbiB0aGF0IGNhc2UsIHdlIGFsbG93IHlldCBtb3JlIG1lbW9yeSwganVzdCBpbiBjYXNlLgorICAgICAgICAgIChBZ2FpbiwgdGhpcyBpcyBmaXhlZCAicHJvcGVybHkiIGluIFBDUkUyLiAqLworCisgICAgICAgICAgaWYgKGNkLT5kdXBncm91cHMpICpsZW5ndGhwdHIgKz0gNCArIDQqTElOS19TSVpFOworCisgICAgICAgICAgLyogT3RoZXJ3aXNlLCBjaGVjayBmb3IgcmVjdXJzaW9uIGhlcmUuIFRoZSBuYW1lIHRhYmxlIGRvZXMgbm90IGV4aXN0CisgICAgICAgICAgaW4gdGhlIGZpcnN0IHBhc3M7IGluc3RlYWQgd2UgbXVzdCBzY2FuIHRoZSBsaXN0IG9mIG5hbWVzIGVuY291bnRlcmVkCisgICAgICAgICAgc28gZmFyIGluIG9yZGVyIHRvIGdldCB0aGUgbnVtYmVyLiBJZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIGxlYXZlCisgICAgICAgICAgdGhlIHZhbHVlIG9mIHJlY25vIGFzIDAgZm9yIGEgZm9yd2FyZCByZWZlcmVuY2UuICovCisKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICBuZyA9IGNkLT5uYW1lZF9ncm91cHM7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2QtPm5hbWVzX2ZvdW5kOyBpKyssIG5nKyspCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKG5hbWVsZW4gPT0gbmctPmxlbmd0aCAmJgorICAgICAgICAgICAgICAgICAgU1RSTkNNUF9VQ19VQyhuYW1lLCBuZy0+bmFtZSwgbmFtZWxlbikgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3Blbl9jYXBpdGVtICpvYzsKKyAgICAgICAgICAgICAgICByZWNubyA9IG5nLT5udW1iZXI7CisgICAgICAgICAgICAgICAgaWYgKGlzX3JlY3Vyc2UpIGJyZWFrOworICAgICAgICAgICAgICAgIGZvciAob2MgPSBjZC0+b3Blbl9jYXBzOyBvYyAhPSBOVUxMOyBvYyA9IG9jLT5uZXh0KQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWYgKG9jLT5udW1iZXIgPT0gcmVjbm8pCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb2MtPmZsYWcgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgIH0KIAogICAgICAgICAvKiBJbiB0aGUgcmVhbCBjb21waWxlLCBzZWFyY2ggdGhlIG5hbWUgdGFibGUuIFdlIGNoZWNrIHRoZSBuYW1lCkBAIC03MjM3LDggKzczNDIsNiBAQAogICAgICAgICAgIGZvciAoaSsrOyBpIDwgY2QtPm5hbWVzX2ZvdW5kOyBpKyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBpZiAoU1RSQ01QX1VDX1VDKHNsb3QgKyBJTU0yX1NJWkUsIGNzbG90ICsgSU1NMl9TSVpFKSAhPSAwKSBicmVhazsKLQotCiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgY3Nsb3QgKz0gY2QtPm5hbWVfZW50cnlfc2l6ZTsKICAgICAgICAgICAgIH0KQEAgLTcyNDcsNiArNzM1MCw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZmlyc3RjaGFyZmxhZ3MgPT0gUkVRX1VOU0VUKSBmaXJzdGNoYXJmbGFncyA9IFJFUV9OT05FOwogICAgICAgICAgICAgcHJldmlvdXMgPSBjb2RlOworICAgICAgICAgICAgaXRlbV9od21fb2Zmc2V0ID0gY2QtPmh3bSAtIGNkLT5zdGFydF93b3Jrc3BhY2U7CiAgICAgICAgICAgICAqY29kZSsrID0gKChvcHRpb25zICYgUENSRV9DQVNFTEVTUykgIT0gMCk/IE9QX0ROUkVGSSA6IE9QX0ROUkVGOwogICAgICAgICAgICAgUFVUMklOQyhjb2RlLCAwLCBpbmRleCk7CiAgICAgICAgICAgICBQVVQySU5DKGNvZGUsIDAsIGNvdW50KTsKQEAgLTcyODQsOSArNzM4OCwxNCBAQAogCiAKICAgICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gICAgICAgIGNhc2UgQ0hBUl9SOiAgICAgICAgICAgICAgLyogUmVjdXJzaW9uICovCi0gICAgICAgIHB0cisrOyAgICAgICAgICAgICAgICAgICAgLyogU2FtZSBhcyAoPzApICAgICAgKi8KLSAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgQ0hBUl9SOiAgICAgICAgICAgICAgLyogUmVjdXJzaW9uLCBzYW1lIGFzICg/MCkgKi8KKyAgICAgICAgcmVjbm8gPSAwOworICAgICAgICBpZiAoKigrK3B0cikgIT0gQ0hBUl9SSUdIVF9QQVJFTlRIRVNJUykKKyAgICAgICAgICB7CisgICAgICAgICAgKmVycm9yY29kZXB0ciA9IEVSUjI5OworICAgICAgICAgIGdvdG8gRkFJTEVEOworICAgICAgICAgIH0KKyAgICAgICAgZ290byBIQU5ETEVfUkVDVVJTSU9OOwogCiAKICAgICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC03MzIzLDcgKzc0MzIsMTUgQEAKIAogICAgICAgICAgIHJlY25vID0gMDsKICAgICAgICAgICB3aGlsZShJU19ESUdJVCgqcHRyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChyZWNubyA+IElOVF9NQVggLyAxMCAtIDEpIC8qIEludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICB3aGlsZSAoSVNfRElHSVQoKnB0cikpIHB0cisrOworICAgICAgICAgICAgICAqZXJyb3Jjb2RlcHRyID0gRVJSNjE7CisgICAgICAgICAgICAgIGdvdG8gRkFJTEVEOworICAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZWNubyA9IHJlY25vICogMTAgKyAqcHRyKysgLSBDSEFSXzA7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICBpZiAoKnB0ciAhPSAocGNyZV91Y2hhcil0ZXJtaW5hdG9yKQogICAgICAgICAgICAgewpAQCAtNzM2MCw2ICs3NDc3LDcgQEAKICAgICAgICAgICBIQU5ETEVfUkVDVVJTSU9OOgogCiAgICAgICAgICAgcHJldmlvdXMgPSBjb2RlOworICAgICAgICAgIGl0ZW1faHdtX29mZnNldCA9IGNkLT5od20gLSBjZC0+c3RhcnRfd29ya3NwYWNlOwogICAgICAgICAgIGNhbGxlZCA9IGNkLT5zdGFydF9jb2RlOwogCiAgICAgICAgICAgLyogV2hlbiB3ZSBhcmUgYWN0dWFsbHkgY29tcGlsaW5nLCBmaW5kIHRoZSBicmFja2V0IHRoYXQgaXMgYmVpbmcKQEAgLTc1NjEsNyArNzY3OSwxMSBAQAogICAgICAgcHJldmlvdXMgPSBOVUxMOwogICAgICAgY2QtPmlzY29uZGFzc2VydCA9IEZBTFNFOwogICAgICAgfQotICAgIGVsc2UgcHJldmlvdXMgPSBjb2RlOworICAgIGVsc2UKKyAgICAgIHsKKyAgICAgIHByZXZpb3VzID0gY29kZTsKKyAgICAgIGl0ZW1faHdtX29mZnNldCA9IGNkLT5od20gLSBjZC0+c3RhcnRfd29ya3NwYWNlOworICAgICAgfQogCiAgICAgKmNvZGUgPSBicmF2YWx1ZTsKICAgICB0ZW1wY29kZSA9IGNvZGU7CkBAIC03ODA5LDcgKzc5MzEsNyBAQAogICAgICAgICBjb25zdCBwY3JlX3VjaGFyICpwOwogICAgICAgICBwY3JlX3VpbnQzMiBjZjsKIAotICAgICAgICBzYXZlX2h3bV9vZmZzZXQgPSBjZC0+aHdtIC0gY2QtPnN0YXJ0X3dvcmtzcGFjZTsgICAvKiBOb3JtYWxseSB0aGlzIGlzIHNldCB3aGVuICcoJyBpcyByZWFkICovCisgICAgICAgIGl0ZW1faHdtX29mZnNldCA9IGNkLT5od20gLSBjZC0+c3RhcnRfd29ya3NwYWNlOyAgIC8qIE5vcm1hbGx5IHRoaXMgaXMgc2V0IHdoZW4gJygnIGlzIHJlYWQgKi8KICAgICAgICAgdGVybWluYXRvciA9ICgqKCsrcHRyKSA9PSBDSEFSX0xFU1NfVEhBTl9TSUdOKT8KICAgICAgICAgICBDSEFSX0dSRUFURVJfVEhBTl9TSUdOIDogQ0hBUl9BUE9TVFJPUEhFOwogCkBAIC03ODM4LDcgKzc5NjAsNyBAQAogICAgICAgICBpZiAoKnAgIT0gKHBjcmVfdWNoYXIpdGVybWluYXRvcikKICAgICAgICAgICB7CiAgICAgICAgICAgKmVycm9yY29kZXB0ciA9IEVSUjU3OwotICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGdvdG8gRkFJTEVEOwogICAgICAgICAgIH0KICAgICAgICAgcHRyKys7CiAgICAgICAgIGdvdG8gSEFORExFX05VTUVSSUNBTF9SRUNVUlNJT047CkBAIC03ODUzLDcgKzc5NzUsNyBAQAogICAgICAgICAgIHB0clsxXSAhPSBDSEFSX0FQT1NUUk9QSEUgJiYgcHRyWzFdICE9IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUKSkKICAgICAgICAgICB7CiAgICAgICAgICAgKmVycm9yY29kZXB0ciA9IEVSUjY5OwotICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGdvdG8gRkFJTEVEOwogICAgICAgICAgIH0KICAgICAgICAgaXNfcmVjdXJzZSA9IEZBTFNFOwogICAgICAgICB0ZXJtaW5hdG9yID0gKCooKytwdHIpID09IENIQVJfTEVTU19USEFOX1NJR04pPwpAQCAtNzg3Nyw2ICs3OTk5LDcgQEAKICAgICAgICAgSEFORExFX1JFRkVSRU5DRToKICAgICAgICAgaWYgKGZpcnN0Y2hhcmZsYWdzID09IFJFUV9VTlNFVCkgZmlyc3RjaGFyZmxhZ3MgPSBSRVFfTk9ORTsKICAgICAgICAgcHJldmlvdXMgPSBjb2RlOworICAgICAgICBpdGVtX2h3bV9vZmZzZXQgPSBjZC0+aHdtIC0gY2QtPnN0YXJ0X3dvcmtzcGFjZTsKICAgICAgICAgKmNvZGUrKyA9ICgob3B0aW9ucyAmIFBDUkVfQ0FTRUxFU1MpICE9IDApPyBPUF9SRUZJIDogT1BfUkVGOwogICAgICAgICBQVVQySU5DKGNvZGUsIDAsIHJlY25vKTsKICAgICAgICAgY2QtPmJhY2tyZWZfbWFwIHw9IChyZWNubyA8IDMyKT8gKDEgPDwgcmVjbm8pIDogMTsKQEAgLTc5MDYsNiArODAyOSw3IEBACiAgICAgICAgIGlmICghZ2V0X3VjcCgmcHRyLCAmbmVnYXRlZCwgJnB0eXBlLCAmcGRhdGEsIGVycm9yY29kZXB0cikpCiAgICAgICAgICAgZ290byBGQUlMRUQ7CiAgICAgICAgIHByZXZpb3VzID0gY29kZTsKKyAgICAgICAgaXRlbV9od21fb2Zmc2V0ID0gY2QtPmh3bSAtIGNkLT5zdGFydF93b3Jrc3BhY2U7CiAgICAgICAgICpjb2RlKysgPSAoKGVzY2FwZSA9PSBFU0NfcCkgIT0gbmVnYXRlZCk/IE9QX1BST1AgOiBPUF9OT1RQUk9QOwogICAgICAgICAqY29kZSsrID0gcHR5cGU7CiAgICAgICAgICpjb2RlKysgPSBwZGF0YTsKQEAgLTc5NDYsNiArODA3MCw3IEBACiAKICAgICAgICAgICB7CiAgICAgICAgICAgcHJldmlvdXMgPSAoZXNjYXBlID4gRVNDX2IgJiYgZXNjYXBlIDwgRVNDX1opPyBjb2RlIDogTlVMTDsKKyAgICAgICAgICBpdGVtX2h3bV9vZmZzZXQgPSBjZC0+aHdtIC0gY2QtPnN0YXJ0X3dvcmtzcGFjZTsKICAgICAgICAgICAqY29kZSsrID0gKCF1dGYgJiYgZXNjYXBlID09IEVTQ19DKT8gT1BfQUxMQU5ZIDogZXNjYXBlOwogICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzk4OSw2ICs4MTE0LDcgQEAKIAogICAgIE9ORV9DSEFSOgogICAgIHByZXZpb3VzID0gY29kZTsKKyAgICBpdGVtX2h3bV9vZmZzZXQgPSBjZC0+aHdtIC0gY2QtPnN0YXJ0X3dvcmtzcGFjZTsKIAogICAgIC8qIEZvciBjYXNlbGVzcyBVVEYtOCBtb2RlIHdoZW4gVUNQIHN1cHBvcnQgaXMgYXZhaWxhYmxlLCBjaGVjayB3aGV0aGVyCiAgICAgdGhpcyBjaGFyYWN0ZXIgaGFzIG1vcmUgdGhhbiBvbmUgb3RoZXIgY2FzZS4gSWYgc28sIGdlbmVyYXRlIGEgc3BlY2lhbApAQCAtOTE2NCw2ICs5MjkwLDcgQEAKIGNkLT5uYW1lX2VudHJ5X3NpemUgPSAwOwogY2QtPm5hbWVfdGFibGUgPSBOVUxMOwogY2QtPmR1cG5hbWVzID0gRkFMU0U7CitjZC0+ZHVwZ3JvdXBzID0gRkFMU0U7CiBjZC0+bmFtZWRyZWZjb3VudCA9IDA7CiBjZC0+c3RhcnRfY29kZSA9IGN3b3Jrc3BhY2U7CiBjZC0+aHdtID0gY3dvcmtzcGFjZTsKQEAgLTkzMzYsNiArOTQ2MywxNiBAQAogICAgIGludCBvZmZzZXQsIHJlY25vOwogICAgIGNkLT5od20gLT0gTElOS19TSVpFOwogICAgIG9mZnNldCA9IEdFVChjZC0+aHdtLCAwKTsKKworICAgIC8qIENoZWNrIHRoYXQgdGhlIGh3bSBoYW5kbGluZyBoYXNuJ3QgZ29uZSB3cm9uZy4gVGhpcyB3aG9sZSBhcmVhIGlzCisgICAgcmV3cml0dGVuIGluIFBDUkUyIGJlY2F1c2UgdGhlcmUgYXJlIHNvbWUgb2JzY3VyZSBjYXNlcy4gKi8KKworICAgIGlmIChvZmZzZXQgPT0gMCB8fCBjb2Rlc3RhcnRbb2Zmc2V0LTFdICE9IE9QX1JFQ1VSU0UpCisgICAgICB7CisgICAgICBlcnJvcmNvZGUgPSBFUlIxMDsKKyAgICAgIGJyZWFrOworICAgICAgfQorCiAgICAgcmVjbm8gPSBHRVQoY29kZXN0YXJ0LCBvZmZzZXQpOwogICAgIGlmIChyZWNubyAhPSBwcmV2X3JlY25vKQogICAgICAgewpAQCAtOTM2Niw3ICs5NTAzLDcgQEAKICJjb25zdCIgYXR0cmlidXRlIGlmIHRoZSBjYXN0IChwY3JlX3VjaGFyICopY29kZXN0YXJ0IGlzIHVzZWQgZGlyZWN0bHkgaW4gdGhlCiBmdW5jdGlvbiBjYWxsLiAqLwogCi1pZiAoKG9wdGlvbnMgJiBQQ1JFX05PX0FVVE9fUE9TU0VTUykgPT0gMCkKK2lmIChlcnJvcmNvZGUgPT0gMCAmJiAob3B0aW9ucyAmIFBDUkVfTk9fQVVUT19QT1NTRVNTKSA9PSAwKQogICB7CiAgIHBjcmVfdWNoYXIgKnRlbXAgPSAocGNyZV91Y2hhciAqKWNvZGVzdGFydDsKICAgYXV0b19wb3NzZXNzaWZ5KHRlbXAsIHV0ZiwgY2QpOwpAQCAtOTM4MCw3ICs5NTE3LDcgQEAKIGV4Y2VwdGlvbmFsIG9uZXMgZm9yZ28gdGhpcy4gV2Ugc2NhbiB0aGUgcGF0dGVybiB0byBjaGVjayB0aGF0IHRoZXkgYXJlIGZpeGVkCiBsZW5ndGgsIGFuZCBzZXQgdGhlaXIgbGVuZ3Rocy4gKi8KIAotaWYgKGNkLT5jaGVja19sb29rYmVoaW5kKQoraWYgKGVycm9yY29kZSA9PSAwICYmIGNkLT5jaGVja19sb29rYmVoaW5kKQogICB7CiAgIHBjcmVfdWNoYXIgKmNjID0gKHBjcmVfdWNoYXIgKiljb2Rlc3RhcnQ7CiAKQEAgLTk1OTMsNCArOTczMCwzIEBACiB9CiAKIC8qIEVuZCBvZiBwY3JlX2NvbXBpbGUuYyAqLwotCmRpZmYgLS1naXQgYS9kaXN0L3BjcmVfZXhlYy5jIGIvZGlzdC9wY3JlX2V4ZWMuYwppbmRleCBjMDIxZmUxLi4yNGIyM2NhIDEwMDY0NAotLS0gYS9kaXN0L3BjcmVfZXhlYy5jCisrKyBiL2Rpc3QvcGNyZV9leGVjLmMKQEAgLTY2ODUsNyArNjY4NSw4IEBACiAgIHJlZ2lzdGVyIGludCAqaWVuZCA9IGlwdHIgLSByZS0+dG9wX2JyYWNrZXQ7CiAgIGlmIChpZW5kIDwgbWQtPm9mZnNldF92ZWN0b3IgKyAyKSBpZW5kID0gbWQtPm9mZnNldF92ZWN0b3IgKyAyOwogICB3aGlsZSAoLS1pcHRyID49IGllbmQpICppcHRyID0gLTE7Ci0gIG1kLT5vZmZzZXRfdmVjdG9yWzBdID0gbWQtPm9mZnNldF92ZWN0b3JbMV0gPSAtMTsKKyAgaWYgKG9mZnNldGNvdW50ID4gMCkgbWQtPm9mZnNldF92ZWN0b3JbMF0gPSAtMTsKKyAgaWYgKG9mZnNldGNvdW50ID4gMSkgbWQtPm9mZnNldF92ZWN0b3JbMV0gPSAtMTsKICAgfQogCiAvKiBTZXQgdXAgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBtYXRjaCwgaWYgYXZhaWxhYmxlLiBUaGUgZmlyc3RfY2hhciB2YWx1ZSBpcwpkaWZmIC0tZ2l0IGEvZGlzdC9wY3JlX2ludGVybmFsLmggYi9kaXN0L3BjcmVfaW50ZXJuYWwuaAppbmRleCBkZDBhYzdmLi5mN2E1ZWU3IDEwMDY0NAotLS0gYS9kaXN0L3BjcmVfaW50ZXJuYWwuaAorKysgYi9kaXN0L3BjcmVfaW50ZXJuYWwuaApAQCAtOTg0LDcgKzk4NCw3IEBACiAjaWZuZGVmIEVCQ0RJQwogCiAjZGVmaW5lIEhTUEFDRV9MSVNUIFwKLSAgQ0hBUl9IVCwgQ0hBUl9TUEFDRSwgMHhhMCwgXAorICBDSEFSX0hULCBDSEFSX1NQQUNFLCBDSEFSX05CU1AsIFwKICAgMHgxNjgwLCAweDE4MGUsIDB4MjAwMCwgMHgyMDAxLCAweDIwMDIsIDB4MjAwMywgMHgyMDA0LCAweDIwMDUsIFwKICAgMHgyMDA2LCAweDIwMDcsIDB4MjAwOCwgMHgyMDA5LCAweDIwMEEsIDB4MjAyZiwgMHgyMDVmLCAweDMwMDAsIFwKICAgTk9UQUNIQVIKQEAgLTEwMTAsNyArMTAxMCw3IEBACiAjZGVmaW5lIEhTUEFDRV9CWVRFX0NBU0VTIFwKICAgY2FzZSBDSEFSX0hUOiBcCiAgIGNhc2UgQ0hBUl9TUEFDRTogXAotICBjYXNlIDB4YTAgICAgIC8qIE5CU1AgKi8KKyAgY2FzZSBDSEFSX05CU1AKIAogI2RlZmluZSBIU1BBQ0VfQ0FTRVMgXAogICBIU1BBQ0VfQllURV9DQVNFUzogXApAQCAtMTAzNywxMSArMTAzNywxMiBAQAogLyogLS0tLS0tIEVCQ0RJQyBlbnZpcm9ubWVudHMgLS0tLS0tICovCiAKICNlbHNlCi0jZGVmaW5lIEhTUEFDRV9MSVNUIENIQVJfSFQsIENIQVJfU1BBQ0UKKyNkZWZpbmUgSFNQQUNFX0xJU1QgQ0hBUl9IVCwgQ0hBUl9TUEFDRSwgQ0hBUl9OQlNQLCBOT1RBQ0hBUgogCiAjZGVmaW5lIEhTUEFDRV9CWVRFX0NBU0VTIFwKICAgY2FzZSBDSEFSX0hUOiBcCi0gIGNhc2UgQ0hBUl9TUEFDRQorICBjYXNlIENIQVJfU1BBQ0U6IFwKKyAgY2FzZSBDSEFSX05CU1AKIAogI2RlZmluZSBIU1BBQ0VfQ0FTRVMgSFNQQUNFX0JZVEVfQ0FTRVMKIApAQCAtMTIxNSw2ICsxMjE2LDcgQEAKIAogI2RlZmluZSBDSEFSX0VTQyAgICAgICAgICAgICAgICAgICAgJ1wwNDcnCiAjZGVmaW5lIENIQVJfREVMICAgICAgICAgICAgICAgICAgICAnXDAwNycKKyNkZWZpbmUgQ0hBUl9OQlNQICAgICAgICAgICAgICAgICAgICdceDQxJwogI2RlZmluZSBTVFJfRVNDICAgICAgICAgICAgICAgICAgICAgIlwwNDciCiAjZGVmaW5lIFNUUl9ERUwgICAgICAgICAgICAgICAgICAgICAiXDAwNyIKIApAQCAtMTIyOSw2ICsxMjMxLDcgQEAKICNkZWZpbmUgQ0hBUl9ORUwgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciknXHg4NScpCiAjZGVmaW5lIENIQVJfRVNDICAgICAgICAgICAgICAgICAgICAnXDAzMycKICNkZWZpbmUgQ0hBUl9ERUwgICAgICAgICAgICAgICAgICAgICdcMTc3JworI2RlZmluZSBDSEFSX05CU1AgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKSdceGEwJykKIAogI2RlZmluZSBTVFJfTEYgICAgICAgICAgICAgICAgICAgICAgIlxuIgogI2RlZmluZSBTVFJfTkwgICAgICAgICAgICAgICAgICAgICAgU1RSX0xGCkBAIC0xNjA2LDYgKzE2MDksNyBAQAogI2RlZmluZSBDSEFSX1ZFUlRJQ0FMX0xJTkUgICAgICAgICAgJ1wxNzQnCiAjZGVmaW5lIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVCAgICAnXDE3NScKICNkZWZpbmUgQ0hBUl9USUxERSAgICAgICAgICAgICAgICAgICdcMTc2JworI2RlZmluZSBDSEFSX05CU1AgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKSdceGEwJykKIAogI2RlZmluZSBTVFJfSFQgICAgICAgICAgICAgICAgICAgICAgIlwwMTEiCiAjZGVmaW5lIFNUUl9WVCAgICAgICAgICAgICAgICAgICAgICAiXDAxMyIKQEAgLTE3NjIsNiArMTc2NiwxMCBAQAogCiAvKiBFc2NhcGUgaXRlbXMgdGhhdCBhcmUganVzdCBhbiBlbmNvZGluZyBvZiBhIHBhcnRpY3VsYXIgZGF0YSB2YWx1ZS4gKi8KIAorI2lmbmRlZiBFU0NfYQorI2RlZmluZSBFU0NfYSBDSEFSX0JFTAorI2VuZGlmCisKICNpZm5kZWYgRVNDX2UKICNkZWZpbmUgRVNDX2UgQ0hBUl9FU0MKICNlbmRpZgpAQCAtMjQ0Niw2ICsyNDU0LDcgQEAKICAgQk9PTCBoYWRfcHJ1bmVvcnNraXA7ICAgICAgICAgICAgIC8qICgqUFJVTkUpIG9yICgqU0tJUCkgZW5jb3VudGVyZWQgKi8KICAgQk9PTCBjaGVja19sb29rYmVoaW5kOyAgICAgICAgICAgIC8qIExvb2tiZWhpbmRzIG5lZWQgbGF0ZXIgY2hlY2tpbmcgKi8KICAgQk9PTCBkdXBuYW1lczsgICAgICAgICAgICAgICAgICAgIC8qIER1cGxpY2F0ZSBuYW1lcyBleGlzdCAqLworICBCT09MIGR1cGdyb3VwczsgICAgICAgICAgICAgICAgICAgLyogRHVwbGljYXRlIGdyb3VwcyBleGlzdDogKD98IGZvdW5kICovCiAgIEJPT0wgaXNjb25kYXNzZXJ0OyAgICAgICAgICAgICAgICAvKiBOZXh0IGFzc2VydCBpcyBhIGNvbmRpdGlvbiAqLwogICBpbnQgIG5sdHlwZTsgICAgICAgICAgICAgICAgICAgICAgLyogTmV3bGluZSB0eXBlICovCiAgIGludCAgbmxsZW47ICAgICAgICAgICAgICAgICAgICAgICAvKiBOZXdsaW5lIHN0cmluZyBsZW5ndGggKi8KZGlmZiAtLWdpdCBhL2Rpc3QvcGNyZV9qaXRfY29tcGlsZS5jIGIvZGlzdC9wY3JlX2ppdF9jb21waWxlLmMKaW5kZXggZGViZGY2ZS4uNDQ1ZGUwYyAxMDA2NDQKLS0tIGEvZGlzdC9wY3JlX2ppdF9jb21waWxlLmMKKysrIGIvZGlzdC9wY3JlX2ppdF9jb21waWxlLmMKQEAgLTEwNjQsNiArMTA2NCw3IEBACiBwY3JlX3VjaGFyICplbmQgPSBOVUxMOwogaW50IHByaXZhdGVfZGF0YV9wdHIgPSAqcHJpdmF0ZV9kYXRhX3N0YXJ0OwogaW50IHNwYWNlLCBzaXplLCBicmFja2V0bGVuOworQk9PTCByZXBlYXRfY2hlY2sgPSBUUlVFOwogCiB3aGlsZSAoY2MgPCBjY2VuZCkKICAgewpAQCAtMTA3MSw5ICsxMDcyLDEwIEBACiAgIHNpemUgPSAwOwogICBicmFja2V0bGVuID0gMDsKICAgaWYgKHByaXZhdGVfZGF0YV9wdHIgPiBTTEpJVF9NQVhfTE9DQUxfU0laRSkKLSAgICByZXR1cm47CisgICAgYnJlYWs7CiAKLSAgaWYgKCpjYyA9PSBPUF9PTkNFIHx8ICpjYyA9PSBPUF9PTkNFX05DIHx8ICpjYyA9PSBPUF9CUkEgfHwgKmNjID09IE9QX0NCUkEgfHwgKmNjID09IE9QX0NPTkQpCisgIGlmIChyZXBlYXRfY2hlY2sgJiYgKCpjYyA9PSBPUF9PTkNFIHx8ICpjYyA9PSBPUF9PTkNFX05DIHx8ICpjYyA9PSBPUF9CUkEgfHwgKmNjID09IE9QX0NCUkEgfHwgKmNjID09IE9QX0NPTkQpKQorICAgIHsKICAgICBpZiAoZGV0ZWN0X3JlcGVhdChjb21tb24sIGNjKSkKICAgICAgIHsKICAgICAgIC8qIFRoZXNlIGJyYWNrZXRzIGFyZSBjb252ZXJ0ZWQgdG8gcmVwZWF0cywgc28gbm8gZ2xvYmFsCkBAIC0xMDgxLDYgKzEwODMsOCBAQAogICAgICAgaWYgKGNjID49IGVuZCkKICAgICAgICAgZW5kID0gYnJhY2tldGVuZChjYyk7CiAgICAgICB9CisgICAgfQorICByZXBlYXRfY2hlY2sgPSBUUlVFOwogCiAgIHN3aXRjaCgqY2MpCiAgICAgewpAQCAtMTEzNiw2ICsxMTQwLDEzIEBACiAgICAgYnJhY2tldGxlbiA9IDEgKyBMSU5LX1NJWkUgKyBJTU0yX1NJWkU7CiAgICAgYnJlYWs7CiAKKyAgICBjYXNlIE9QX0JSQVpFUk86CisgICAgY2FzZSBPUF9CUkFNSU5aRVJPOgorICAgIGNhc2UgT1BfQlJBUE9TWkVSTzoKKyAgICByZXBlYXRfY2hlY2sgPSBGQUxTRTsKKyAgICBzaXplID0gMTsKKyAgICBicmVhazsKKwogICAgIENBU0VfSVRFUkFUT1JfUFJJVkFURV9EQVRBXzEKICAgICBzcGFjZSA9IDE7CiAgICAgc2l6ZSA9IC0yOwpAQCAtMTE2MiwxMiArMTE3MywxNyBAQAogICAgIHNpemUgPSAxOwogICAgIGJyZWFrOwogCi0gICAgQ0FTRV9JVEVSQVRPUl9UWVBFX1BSSVZBVEVfREFUQV8yQgorICAgIGNhc2UgT1BfVFlQRVVQVE86CiAgICAgaWYgKGNjWzEgKyBJTU0yX1NJWkVdICE9IE9QX0FOWU5MICYmIGNjWzEgKyBJTU0yX1NJWkVdICE9IE9QX0VYVFVOSSkKICAgICAgIHNwYWNlID0gMjsKICAgICBzaXplID0gMSArIElNTTJfU0laRTsKICAgICBicmVhazsKIAorICAgIGNhc2UgT1BfVFlQRU1JTlVQVE86CisgICAgc3BhY2UgPSAyOworICAgIHNpemUgPSAxICsgSU1NMl9TSVpFOworICAgIGJyZWFrOworCiAgICAgY2FzZSBPUF9DTEFTUzoKICAgICBjYXNlIE9QX05DTEFTUzoKICAgICBzaXplICs9IDEgKyAzMiAvIHNpemVvZihwY3JlX3VjaGFyKTsKQEAgLTEzMTYsNiArMTMzMiwxMyBAQAogICAgIGNjICs9IDEgKyBMSU5LX1NJWkUgKyBJTU0yX1NJWkU7CiAgICAgYnJlYWs7CiAKKyAgICBjYXNlIE9QX1RIRU46CisgICAgc3RhY2tfcmVzdG9yZSA9IFRSVUU7CisgICAgaWYgKGNvbW1vbi0+Y29udHJvbF9oZWFkX3B0ciAhPSAwKQorICAgICAgKm5lZWRzX2NvbnRyb2xfaGVhZCA9IFRSVUU7CisgICAgY2MgKys7CisgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgIHN0YWNrX3Jlc3RvcmUgPSBUUlVFOwogICAgIC8qIEZhbGwgdGhyb3VnaC4gKi8KQEAgLTIyMjAsNiArMjI0Myw3IEBACiAgICAgU0xKSVRfQVNTRVJUX1NUT1AoKTsKICAgICBicmVhazsKICAgICB9CisgIFNMSklUX0FTU0VSVChjdXJyZW50ID4gKHNsaml0X3N3KiljdXJyZW50Wy0xXSk7CiAgIGN1cnJlbnQgPSAoc2xqaXRfc3cqKWN1cnJlbnRbLTFdOwogICB9CiByZXR1cm4gLTE7CkBAIC0zMjA5LDcgKzMyMzMsNyBAQAogYnl0ZXNbMF0gPSBsZW47CiB9CiAKLXN0YXRpYyBpbnQgc2Nhbl9wcmVmaXgoY29tcGlsZXJfY29tbW9uICpjb21tb24sIHBjcmVfdWNoYXIgKmNjLCBwY3JlX3VpbnQzMiAqY2hhcnMsIHBjcmVfdWludDggKmJ5dGVzLCBpbnQgbWF4X2NoYXJzKQorc3RhdGljIGludCBzY2FuX3ByZWZpeChjb21waWxlcl9jb21tb24gKmNvbW1vbiwgcGNyZV91Y2hhciAqY2MsIHBjcmVfdWludDMyICpjaGFycywgcGNyZV91aW50OCAqYnl0ZXMsIGludCBtYXhfY2hhcnMsIHBjcmVfdWludDMyICpyZWNfY291bnQpCiB7CiAvKiBSZWN1cnNpdmUgZnVuY3Rpb24sIHdoaWNoIHNjYW5zIHByZWZpeCBsaXRlcmFscy4gKi8KIEJPT0wgbGFzdCwgYW55LCBjYXNlbGVzczsKQEAgLTMyMjcsOSArMzI1MSwxNCBAQAogcmVwZWF0ID0gMTsKIHdoaWxlIChUUlVFKQogICB7CisgIGlmICgqcmVjX2NvdW50ID09IDApCisgICAgcmV0dXJuIDA7CisgICgqcmVjX2NvdW50KS0tOworCiAgIGxhc3QgPSBUUlVFOwogICBhbnkgPSBGQUxTRTsKICAgY2FzZWxlc3MgPSBGQUxTRTsKKwogICBzd2l0Y2ggKCpjYykKICAgICB7CiAgICAgY2FzZSBPUF9DSEFSSToKQEAgLTMyOTEsNyArMzMyMCw3IEBACiAjaWZkZWYgU1VQUE9SVF9VVEYKICAgICBpZiAoY29tbW9uLT51dGYgJiYgSEFTX0VYVFJBTEVOKCpjYykpIGxlbiArPSBHRVRfRVhUUkFMRU4oKmNjKTsKICNlbmRpZgotICAgIG1heF9jaGFycyA9IHNjYW5fcHJlZml4KGNvbW1vbiwgY2MgKyBsZW4sIGNoYXJzLCBieXRlcywgbWF4X2NoYXJzKTsKKyAgICBtYXhfY2hhcnMgPSBzY2FuX3ByZWZpeChjb21tb24sIGNjICsgbGVuLCBjaGFycywgYnl0ZXMsIG1heF9jaGFycywgcmVjX2NvdW50KTsKICAgICBpZiAobWF4X2NoYXJzID09IDApCiAgICAgICByZXR1cm4gY29uc3VtZWQ7CiAgICAgbGFzdCA9IEZBTFNFOwpAQCAtMzMxNCw3ICszMzQzLDcgQEAKICAgICBhbHRlcm5hdGl2ZSA9IGNjICsgR0VUKGNjLCAxKTsKICAgICB3aGlsZSAoKmFsdGVybmF0aXZlID09IE9QX0FMVCkKICAgICAgIHsKLSAgICAgIG1heF9jaGFycyA9IHNjYW5fcHJlZml4KGNvbW1vbiwgYWx0ZXJuYXRpdmUgKyAxICsgTElOS19TSVpFLCBjaGFycywgYnl0ZXMsIG1heF9jaGFycyk7CisgICAgICBtYXhfY2hhcnMgPSBzY2FuX3ByZWZpeChjb21tb24sIGFsdGVybmF0aXZlICsgMSArIExJTktfU0laRSwgY2hhcnMsIGJ5dGVzLCBtYXhfY2hhcnMsIHJlY19jb3VudCk7CiAgICAgICBpZiAobWF4X2NoYXJzID09IDApCiAgICAgICAgIHJldHVybiBjb25zdW1lZDsKICAgICAgIGFsdGVybmF0aXZlICs9IEdFVChhbHRlcm5hdGl2ZSwgMSk7CkBAIC0zNTU2LDYgKzM1ODUsNyBAQAogaW50IHJhbmdlX3JpZ2h0ID0gLTEsIHJhbmdlX2xlbiA9IDMgLSAxOwogc2xqaXRfdWIgKnVwZGF0ZV90YWJsZSA9IE5VTEw7CiBCT09MIGluX3JhbmdlOworcGNyZV91aW50MzIgcmVjX2NvdW50OwogCiBmb3IgKGkgPSAwOyBpIDwgTUFYX05fQ0hBUlM7IGkrKykKICAgewpAQCAtMzU2NCw3ICszNTk0LDggQEAKICAgYnl0ZXNbaSAqIE1BWF9OX0JZVEVTXSA9IDA7CiAgIH0KIAotbWF4ID0gc2Nhbl9wcmVmaXgoY29tbW9uLCBjb21tb24tPnN0YXJ0LCBjaGFycywgYnl0ZXMsIE1BWF9OX0NIQVJTKTsKK3JlY19jb3VudCA9IDEwMDAwOworbWF4ID0gc2Nhbl9wcmVmaXgoY29tbW9uLCBjb21tb24tPnN0YXJ0LCBjaGFycywgYnl0ZXMsIE1BWF9OX0NIQVJTLCAmcmVjX2NvdW50KTsKIAogaWYgKG1heCA8PSAxKQogICByZXR1cm4gRkFMU0U7CkBAIC00MzExLDggKzQzNDIsMTAgQEAKICAgY2FzZSA0OgogICBpZiAoKHJhbmdlc1sxXSAtIHJhbmdlc1swXSkgPT0gKHJhbmdlc1szXSAtIHJhbmdlc1syXSkKICAgICAgICYmIChyYW5nZXNbMF0gfCAocmFuZ2VzWzJdIC0gcmFuZ2VzWzBdKSkgPT0gcmFuZ2VzWzJdCisgICAgICAmJiAocmFuZ2VzWzFdICYgKHJhbmdlc1syXSAtIHJhbmdlc1swXSkpID09IDAKICAgICAgICYmIGlzX3Bvd2Vyb2YyKHJhbmdlc1syXSAtIHJhbmdlc1swXSkpCiAgICAgeworICAgIFNMSklUX0FTU0VSVCgocmFuZ2VzWzBdICYgKHJhbmdlc1syXSAtIHJhbmdlc1swXSkpID09IDAgJiYgKHJhbmdlc1syXSAmIHJhbmdlc1szXSAmIChyYW5nZXNbMl0gLSByYW5nZXNbMF0pKSAhPSAwKTsKICAgICBPUDIoU0xKSVRfT1IsIFRNUDEsIDAsIFRNUDEsIDAsIFNMSklUX0lNTSwgcmFuZ2VzWzJdIC0gcmFuZ2VzWzBdKTsKICAgICBpZiAocmFuZ2VzWzJdICsgMSAhPSByYW5nZXNbM10pCiAgICAgICB7CkBAIC00OTAwLDkgKzQ5MzMsMTAgQEAKICAgaWYgKCFjaGVja19jbGFzc19yYW5nZXMoY29tbW9uLCAoY29uc3QgcGNyZV91aW50OCAqKWNjLCBGQUxTRSwgVFJVRSwgbGlzdCkpCiAgICAgewogI2lmZGVmIENPTVBJTEVfUENSRTgKLSAgICBTTEpJVF9BU1NFUlQoY29tbW9uLT51dGYpOworICAgIGp1bXAgPSBOVUxMOworICAgIGlmIChjb21tb24tPnV0ZikKICNlbmRpZgotICAgIGp1bXAgPSBDTVAoU0xKSVRfR1JFQVRFUiwgVE1QMSwgMCwgU0xKSVRfSU1NLCAyNTUpOworICAgICAganVtcCA9IENNUChTTEpJVF9HUkVBVEVSLCBUTVAxLCAwLCBTTEpJVF9JTU0sIDI1NSk7CiAKICAgICBPUDIoU0xKSVRfQU5ELCBUTVAyLCAwLCBUTVAxLCAwLCBTTEpJVF9JTU0sIDB4Nyk7CiAgICAgT1AyKFNMSklUX0xTSFIsIFRNUDEsIDAsIFRNUDEsIDAsIFNMSklUX0lNTSwgMyk7CkBAIC00OTExLDcgKzQ5NDUsMTAgQEAKICAgICBPUDIoU0xKSVRfQU5EIHwgU0xKSVRfU0VUX0UsIFNMSklUX1VOVVNFRCwgMCwgVE1QMSwgMCwgVE1QMiwgMCk7CiAgICAgYWRkX2p1bXAoY29tcGlsZXIsIGxpc3QsIEpVTVAoU0xKSVRfTk9UX1pFUk8pKTsKIAotICAgIEpVTVBIRVJFKGp1bXApOworI2lmZGVmIENPTVBJTEVfUENSRTgKKyAgICBpZiAoY29tbW9uLT51dGYpCisjZW5kaWYKKyAgICAgIEpVTVBIRVJFKGp1bXApOwogICAgIH0KIAogICBPUDEoU0xKSVRfTU9WLCBUTVAxLCAwLCBUTVAzLCAwKTsKQEAgLTUyMTksNyArNTI1Niw3IEBACiAgICAgICBPUF9GTEFHUyhTTEpJVF9NT1YsIFRNUDIsIDAsIFNMSklUX1VOVVNFRCwgMCwgU0xKSVRfTEVTU19FUVVBTCk7CiAKICAgICAgIFNFVF9DSEFSX09GRlNFVCgwKTsKLSAgICAgIE9QMihTTEpJVF9TVUIgfCBTTEpJVF9TRVRfVSwgU0xKSVRfVU5VU0VELCAwLCBUTVAxLCAwLCBTTEpJVF9JTU0sIDB4ZmYpOworICAgICAgT1AyKFNMSklUX1NVQiB8IFNMSklUX1NFVF9VLCBTTEpJVF9VTlVTRUQsIDAsIFRNUDEsIDAsIFNMSklUX0lNTSwgMHg3Zik7CiAgICAgICBPUF9GTEFHUyhTTEpJVF9BTkQsIFRNUDIsIDAsIFRNUDIsIDAsIFNMSklUX0xFU1NfRVFVQUwpOwogCiAgICAgICBTRVRfVFlQRV9PRkZTRVQodWNwX1BjKTsKQEAgLTc2NjUsNiArNzcwMiwxMCBAQAogICAgICAgT1AxKFNMSklUX01PViwgU0xKSVRfTUVNMShTVEFDS19UT1ApLCBTVEFDSygwKSwgU1RSX1BUUiwgMCk7CiAgICAgICB9CiAKKyAgICAvKiBFdmVuIGlmIHRoZSBtYXRjaCBpcyBlbXB0eSwgd2UgbmVlZCB0byByZXNldCB0aGUgY29udHJvbCBoZWFkLiAqLworICAgIGlmIChuZWVkc19jb250cm9sX2hlYWQpCisgICAgICBPUDEoU0xKSVRfTU9WLCBTTEpJVF9NRU0xKFNMSklUX1NQKSwgY29tbW9uLT5jb250cm9sX2hlYWRfcHRyLCBTTEpJVF9NRU0xKFNUQUNLX1RPUCksIFNUQUNLKHN0YWNrKSk7CisKICAgICBpZiAob3Bjb2RlID09IE9QX1NCUkFQT1MgfHwgb3Bjb2RlID09IE9QX1NDQlJBUE9TKQogICAgICAgYWRkX2p1bXAoY29tcGlsZXIsICZlbXB0eW1hdGNoLCBDTVAoU0xKSVRfRVFVQUwsIFRNUDEsIDAsIFNUUl9QVFIsIDApKTsKIApAQCAtNzY5Miw2ICs3NzMzLDEwIEBACiAgICAgICBPUDEoU0xKSVRfTU9WLCBTTEpJVF9NRU0xKFRNUDIpLCAoZnJhbWVzaXplICsgMSkgKiBzaXplb2Yoc2xqaXRfc3cpLCBTVFJfUFRSLCAwKTsKICAgICAgIH0KIAorICAgIC8qIEV2ZW4gaWYgdGhlIG1hdGNoIGlzIGVtcHR5LCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBjb250cm9sIGhlYWQuICovCisgICAgaWYgKG5lZWRzX2NvbnRyb2xfaGVhZCkKKyAgICAgIE9QMShTTEpJVF9NT1YsIFNMSklUX01FTTEoU0xKSVRfU1ApLCBjb21tb24tPmNvbnRyb2xfaGVhZF9wdHIsIFNMSklUX01FTTEoU1RBQ0tfVE9QKSwgU1RBQ0soc3RhY2spKTsKKwogICAgIGlmIChvcGNvZGUgPT0gT1BfU0JSQVBPUyB8fCBvcGNvZGUgPT0gT1BfU0NCUkFQT1MpCiAgICAgICBhZGRfanVtcChjb21waWxlciwgJmVtcHR5bWF0Y2gsIENNUChTTEpJVF9FUVVBTCwgVE1QMSwgMCwgU1RSX1BUUiwgMCkpOwogCkBAIC03NzA0LDkgKzc3NDksNiBAQAogICAgICAgfQogICAgIH0KIAotICBpZiAobmVlZHNfY29udHJvbF9oZWFkKQotICAgIE9QMShTTEpJVF9NT1YsIFNMSklUX01FTTEoU0xKSVRfU1ApLCBjb21tb24tPmNvbnRyb2xfaGVhZF9wdHIsIFNMSklUX01FTTEoU1RBQ0tfVE9QKSwgU1RBQ0soc3RhY2spKTsKLQogICBKVU1QVE8oU0xKSVRfSlVNUCwgbG9vcCk7CiAgIGZsdXNoX3N0dWJzKGNvbW1vbik7CiAKQEAgLTg0NDEsOCArODQ4Myw3IEBACiAgICAgICBPUDEoU0xKSVRfTU9WLCBTTEpJVF9NRU0xKFNUQUNLX1RPUCksIFNUQUNLKDEpLCBTVFJfUFRSLCAwKTsKICAgICAgIH0KICAgICBCQUNLVFJBQ0tfQVMoYnJhbWluemVyb19iYWNrdHJhY2spLT5tYXRjaGluZ3BhdGggPSBMQUJFTCgpOwotICAgIGlmIChjY1sxXSA+IE9QX0FTU0VSVEJBQ0tfTk9UKQotICAgICAgY291bnRfbWF0Y2goY29tbW9uKTsKKyAgICBjb3VudF9tYXRjaChjb21tb24pOwogICAgIGJyZWFrOwogCiAgICAgY2FzZSBPUF9PTkNFOgpAQCAtOTYyNCw3ICs5NjY1LDcgQEAKIERFRklORV9DT01QSUxFUjsKIHBjcmVfdWNoYXIgKmNjID0gY29tbW9uLT5zdGFydCArIGNvbW1vbi0+Y3VycmVudGVudHJ5LT5zdGFydDsKIHBjcmVfdWNoYXIgKmNjYmVnaW4gPSBjYyArIDEgKyBMSU5LX1NJWkUgKyAoKmNjID09IE9QX0JSQSA/IDAgOiBJTU0yX1NJWkUpOwotcGNyZV91Y2hhciAqY2NlbmQgPSBicmFja2V0ZW5kKGNjKTsKK3BjcmVfdWNoYXIgKmNjZW5kID0gYnJhY2tldGVuZChjYykgLSAoMSArIExJTktfU0laRSk7CiBCT09MIG5lZWRzX2NvbnRyb2xfaGVhZDsKIGludCBmcmFtZXNpemUgPSBnZXRfZnJhbWVzaXplKGNvbW1vbiwgY2MsIE5VTEwsIFRSVUUsICZuZWVkc19jb250cm9sX2hlYWQpOwogaW50IHByaXZhdGVfZGF0YV9zaXplID0gZ2V0X3ByaXZhdGVfZGF0YV9jb3B5X2xlbmd0aChjb21tb24sIGNjYmVnaW4sIGNjZW5kLCBuZWVkc19jb250cm9sX2hlYWQpOwpAQCAtOTY0OCw2ICs5Njg5LDcgQEAKIAogc2xqaXRfZW1pdF9mYXN0X2VudGVyKGNvbXBpbGVyLCBUTVAyLCAwKTsKIGFsbG9jYXRlX3N0YWNrKGNvbW1vbiwgcHJpdmF0ZV9kYXRhX3NpemUgKyBmcmFtZXNpemUgKyBhbHRlcm5hdGl2ZXNpemUpOworY291bnRfbWF0Y2goY29tbW9uKTsKIE9QMShTTEpJVF9NT1YsIFNMSklUX01FTTEoU1RBQ0tfVE9QKSwgU1RBQ0socHJpdmF0ZV9kYXRhX3NpemUgKyBmcmFtZXNpemUgKyBhbHRlcm5hdGl2ZXNpemUgLSAxKSwgVE1QMiwgMCk7CiBjb3B5X3ByaXZhdGVfZGF0YShjb21tb24sIGNjYmVnaW4sIGNjZW5kLCBUUlVFLCBwcml2YXRlX2RhdGFfc2l6ZSArIGZyYW1lc2l6ZSArIGFsdGVybmF0aXZlc2l6ZSwgZnJhbWVzaXplICsgYWx0ZXJuYXRpdmVzaXplLCBuZWVkc19jb250cm9sX2hlYWQpOwogaWYgKG5lZWRzX2NvbnRyb2xfaGVhZCkKQEAgLTk5OTIsNiArMTAwMzQsNyBAQAogT1AxKFNMSklUX01PVl9VSSwgVE1QMSwgMCwgU0xKSVRfTUVNMShUTVAxKSwgU0xKSVRfT0ZGU0VUT0Yoaml0X2FyZ3VtZW50cywgbGltaXRfbWF0Y2gpKTsKIE9QMShTTEpJVF9NT1YsIFNUQUNLX1RPUCwgMCwgU0xKSVRfTUVNMShUTVAyKSwgU0xKSVRfT0ZGU0VUT0Yoc3RydWN0IHNsaml0X3N0YWNrLCBiYXNlKSk7CiBPUDEoU0xKSVRfTU9WLCBTVEFDS19MSU1JVCwgMCwgU0xKSVRfTUVNMShUTVAyKSwgU0xKSVRfT0ZGU0VUT0Yoc3RydWN0IHNsaml0X3N0YWNrLCBsaW1pdCkpOworT1AyKFNMSklUX0FERCwgVE1QMSwgMCwgVE1QMSwgMCwgU0xKSVRfSU1NLCAxKTsKIE9QMShTTEpJVF9NT1YsIFNMSklUX01FTTEoU0xKSVRfU1ApLCBMSU1JVF9NQVRDSCwgVE1QMSwgMCk7CiAKIGlmIChtb2RlID09IEpJVF9QQVJUSUFMX1NPRlRfQ09NUElMRSkKZGlmZiAtLWdpdCBhL2Rpc3QvcGNyZV9qaXRfdGVzdC5jIGIvZGlzdC9wY3JlX2ppdF90ZXN0LmMKaW5kZXggZDAzOTkzYi4uMTczNzg5NSAxMDA2NDQKLS0tIGEvZGlzdC9wY3JlX2ppdF90ZXN0LmMKKysrIGIvZGlzdC9wY3JlX2ppdF90ZXN0LmMKQEAgLTE4Miw2ICsxODIsNyBAQAogCXsgQ01VQVAsIDAsICJceGYwXHg5MFx4OTBceDgwezJ9IiwgIlx4ZjBceDkwXHg5MFx4ODAjXHhmMFx4OTBceDkwXHhhOFx4ZjBceDkwXHg5MFx4ODAiIH0sCiAJeyBDTVVBUCwgMCwgIlx4ZjBceDkwXHg5MFx4YTh7Mn0iLCAiXHhmMFx4OTBceDkwXHg4MCNceGYwXHg5MFx4OTBceGE4XHhmMFx4OTBceDkwXHg4MCIgfSwKIAl7IENNVUFQLCAwLCAiXHhlMVx4YmRceGI4XHhlMVx4YmZceGI4IiwgIlx4ZTFceGJmXHhiOFx4ZTFceGJkXHhiOCIgfSwKKwl7IE1BLCAwLCAiWzMtNTctOV0iLCAiNSIgfSwKIAogCS8qIEFzc2VydGlvbnMuICovCiAJeyBNVUEsIDAsICJcXGJbXkFdIiwgIkFfQiMiIH0sCmRpZmYgLS1naXQgYS9kaXN0L3BjcmVfc3R1ZHkuYyBiL2Rpc3QvcGNyZV9zdHVkeS5jCmluZGV4IDk5OGZlMjMuLjdmZDBiYTAgMTAwNjQ0Ci0tLSBhL2Rpc3QvcGNyZV9zdHVkeS5jCisrKyBiL2Rpc3QvcGNyZV9zdHVkeS5jCkBAIC03MSw2ICs3MSw3IEBACiAgIHN0YXJ0Y29kZSAgICAgICBwb2ludGVyIHRvIHN0YXJ0IG9mIHRoZSB3aG9sZSBwYXR0ZXJuJ3MgY29kZQogICBvcHRpb25zICAgICAgICAgdGhlIGNvbXBpbGluZyBvcHRpb25zCiAgIHJlY3Vyc2VzICAgICAgICBjaGFpbiBvZiByZWN1cnNlX2NoZWNrIHRvIGNhdGNoIG11dHVhbCByZWN1cnNpb24KKyAgY291bnRwdHIgICAgICAgIHBvaW50ZXIgdG8gY2FsbCBjb3VudCAodG8gY2F0Y2ggb3ZlciBjb21wbGV4aXR5KQogCiBSZXR1cm5zOiAgIHRoZSBtaW5pbXVtIGxlbmd0aAogICAgICAgICAgICAtMSBpZiBcQyBpbiBVVEYtOCBtb2RlIG9yICgqQUNDRVBUKSB3YXMgZW5jb3VudGVyZWQKQEAgLTgwLDcgKzgxLDggQEAKIAogc3RhdGljIGludAogZmluZF9taW5sZW5ndGgoY29uc3QgUkVBTF9QQ1JFICpyZSwgY29uc3QgcGNyZV91Y2hhciAqY29kZSwKLSAgY29uc3QgcGNyZV91Y2hhciAqc3RhcnRjb2RlLCBpbnQgb3B0aW9ucywgcmVjdXJzZV9jaGVjayAqcmVjdXJzZXMpCisgIGNvbnN0IHBjcmVfdWNoYXIgKnN0YXJ0Y29kZSwgaW50IG9wdGlvbnMsIHJlY3Vyc2VfY2hlY2sgKnJlY3Vyc2VzLAorICBpbnQgKmNvdW50cHRyKQogewogaW50IGxlbmd0aCA9IC0xOwogLyogUENSRV9VVEYxNiBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgUENSRV9VVEY4LiAqLwpAQCAtOTAsNiArOTIsOCBAQAogcmVnaXN0ZXIgaW50IGJyYW5jaGxlbmd0aCA9IDA7CiByZWdpc3RlciBwY3JlX3VjaGFyICpjYyA9IChwY3JlX3VjaGFyICopY29kZSArIDEgKyBMSU5LX1NJWkU7CiAKK2lmICgoKmNvdW50cHRyKSsrID4gMTAwMCkgcmV0dXJuIC0xOyAgIC8qIHRvbyBjb21wbGV4ICovCisKIGlmICgqY29kZSA9PSBPUF9DQlJBIHx8ICpjb2RlID09IE9QX1NDQlJBIHx8CiAgICAgKmNvZGUgPT0gT1BfQ0JSQVBPUyB8fCAqY29kZSA9PSBPUF9TQ0JSQVBPUykgY2MgKz0gSU1NMl9TSVpFOwogCkBAIC0xMzEsNyArMTM1LDcgQEAKICAgICBjYXNlIE9QX1NCUkFQT1M6CiAgICAgY2FzZSBPUF9PTkNFOgogICAgIGNhc2UgT1BfT05DRV9OQzoKLSAgICBkID0gZmluZF9taW5sZW5ndGgocmUsIGNjLCBzdGFydGNvZGUsIG9wdGlvbnMsIHJlY3Vyc2VzKTsKKyAgICBkID0gZmluZF9taW5sZW5ndGgocmUsIGNjLCBzdGFydGNvZGUsIG9wdGlvbnMsIHJlY3Vyc2VzLCBjb3VudHB0cik7CiAgICAgaWYgKGQgPCAwKSByZXR1cm4gZDsKICAgICBicmFuY2hsZW5ndGggKz0gZDsKICAgICBkbyBjYyArPSBHRVQoY2MsIDEpOyB3aGlsZSAoKmNjID09IE9QX0FMVCk7CkBAIC00MTUsNyArNDE5LDggQEAKICAgICAgICAgICAgIGludCBkZDsKICAgICAgICAgICAgIHRoaXNfcmVjdXJzZS5wcmV2ID0gcmVjdXJzZXM7CiAgICAgICAgICAgICB0aGlzX3JlY3Vyc2UuZ3JvdXAgPSBjczsKLSAgICAgICAgICAgIGRkID0gZmluZF9taW5sZW5ndGgocmUsIGNzLCBzdGFydGNvZGUsIG9wdGlvbnMsICZ0aGlzX3JlY3Vyc2UpOworICAgICAgICAgICAgZGQgPSBmaW5kX21pbmxlbmd0aChyZSwgY3MsIHN0YXJ0Y29kZSwgb3B0aW9ucywgJnRoaXNfcmVjdXJzZSwKKyAgICAgICAgICAgICAgY291bnRwdHIpOwogICAgICAgICAgICAgaWYgKGRkIDwgZCkgZCA9IGRkOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0KQEAgLTQ1MSw3ICs0NTYsOCBAQAogICAgICAgICAgIHsKICAgICAgICAgICB0aGlzX3JlY3Vyc2UucHJldiA9IHJlY3Vyc2VzOwogICAgICAgICAgIHRoaXNfcmVjdXJzZS5ncm91cCA9IGNzOwotICAgICAgICAgIGQgPSBmaW5kX21pbmxlbmd0aChyZSwgY3MsIHN0YXJ0Y29kZSwgb3B0aW9ucywgJnRoaXNfcmVjdXJzZSk7CisgICAgICAgICAgZCA9IGZpbmRfbWlubGVuZ3RoKHJlLCBjcywgc3RhcnRjb2RlLCBvcHRpb25zLCAmdGhpc19yZWN1cnNlLAorICAgICAgICAgICAgY291bnRwdHIpOwogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtNTE0LDcgKzUyMCw3IEBACiAgICAgICAgIHRoaXNfcmVjdXJzZS5wcmV2ID0gcmVjdXJzZXM7CiAgICAgICAgIHRoaXNfcmVjdXJzZS5ncm91cCA9IGNzOwogICAgICAgICBicmFuY2hsZW5ndGggKz0gZmluZF9taW5sZW5ndGgocmUsIGNzLCBzdGFydGNvZGUsIG9wdGlvbnMsCi0gICAgICAgICAgJnRoaXNfcmVjdXJzZSk7CisgICAgICAgICAgJnRoaXNfcmVjdXJzZSwgY291bnRwdHIpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgY2MgKz0gMSArIExJTktfU0laRTsKQEAgLTE0NTMsNiArMTQ1OSw3IEBACiAjZW5kaWYKIHsKIGludCBtaW47CitpbnQgY291bnQgPSAwOwogQk9PTCBiaXRzX3NldCA9IEZBTFNFOwogcGNyZV91aW50OCBzdGFydF9iaXRzWzMyXTsKIFBVQkwoZXh0cmEpICpleHRyYSA9IE5VTEw7CkBAIC0xNTM5LDcgKzE1NDYsNyBAQAogCiAvKiBGaW5kIHRoZSBtaW5pbXVtIGxlbmd0aCBvZiBzdWJqZWN0IHN0cmluZy4gKi8KIAotc3dpdGNoKG1pbiA9IGZpbmRfbWlubGVuZ3RoKHJlLCBjb2RlLCBjb2RlLCByZS0+b3B0aW9ucywgTlVMTCkpCitzd2l0Y2gobWluID0gZmluZF9taW5sZW5ndGgocmUsIGNvZGUsIGNvZGUsIHJlLT5vcHRpb25zLCBOVUxMLCAmY291bnQpKQogICB7CiAgIGNhc2UgLTI6ICplcnJvcnB0ciA9ICJpbnRlcm5hbCBlcnJvcjogbWlzc2luZyBjYXB0dXJpbmcgYnJhY2tldCI7IHJldHVybiBOVUxMOwogICBjYXNlIC0zOiAqZXJyb3JwdHIgPSAiaW50ZXJuYWwgZXJyb3I6IG9wY29kZSBub3QgcmVjb2duaXplZCI7IHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvZGlzdC9wY3JlX3hjbGFzcy5jIGIvZGlzdC9wY3JlX3hjbGFzcy5jCmluZGV4IGMyYjYxZjAuLmVmNzU5YTUgMTAwNjQ0Ci0tLSBhL2Rpc3QvcGNyZV94Y2xhc3MuYworKysgYi9kaXN0L3BjcmVfeGNsYXNzLmMKQEAgLTI0Niw3ICsyNDYsNyBAQAogCiAgICAgICBjYXNlIFBUX1BYUFVOQ1Q6CiAgICAgICBpZiAoKFBSSVYodWNwX2dlbnR5cGUpW3Byb3AtPmNoYXJ0eXBlXSA9PSB1Y3BfUCB8fAotICAgICAgICAgICAgKGMgPCAyNTYgJiYgUFJJVih1Y3BfZ2VudHlwZSlbcHJvcC0+Y2hhcnR5cGVdID09IHVjcF9TKSkgPT0gaXNwcm9wKQorICAgICAgICAgICAgKGMgPCAxMjggJiYgUFJJVih1Y3BfZ2VudHlwZSlbcHJvcC0+Y2hhcnR5cGVdID09IHVjcF9TKSkgPT0gaXNwcm9wKQogICAgICAgICByZXR1cm4gIW5lZ2F0ZWQ7CiAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvZGlzdC9wY3JlZ3JlcC5jIGIvZGlzdC9wY3JlZ3JlcC5jCmluZGV4IGM0OWE3NGYuLjY0OTg2YjAgMTAwNjQ0Ci0tLSBhL2Rpc3QvcGNyZWdyZXAuYworKysgYi9kaXN0L3BjcmVncmVwLmMKQEAgLTE2OTIsOSArMTY5MiwxMyBAQAogCiAgICAgaWYgKGZpbGVuYW1lcyA9PSBGTl9OT01BVENIX09OTFkpIHJldHVybiAxOwogCisgICAgLyogSWYgYWxsIHdlIHdhbnQgaXMgYSB5ZXMvbm8gYW5zd2VyLCBzdG9wIG5vdy4gKi8KKworICAgIGlmIChxdWlldCkgcmV0dXJuIDA7CisKICAgICAvKiBKdXN0IGNvdW50IGlmIGp1c3QgY291bnRpbmcgaXMgd2FudGVkLiAqLwogCi0gICAgaWYgKGNvdW50X29ubHkpIGNvdW50Kys7CisgICAgZWxzZSBpZiAoY291bnRfb25seSkgY291bnQrKzsKIAogICAgIC8qIFdoZW4gaGFuZGxpbmcgYSBiaW5hcnkgZmlsZSBhbmQgYmluYXJ5LWZpbGVzPT1iaW5hcnksIHRoZSAiYmluYXJ5IgogICAgIHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRydWUgKGl0J3MgZmFsc2UgaW4gYWxsIG90aGVyIGNhc2VzKS4gSW4gdGhpcwpAQCAtMTcxNSwxMCArMTcxOSw2IEBACiAgICAgICByZXR1cm4gMDsKICAgICAgIH0KIAotICAgIC8qIExpa2V3aXNlLCBpZiBhbGwgd2Ugd2FudCBpcyBhIHllcy9ubyBhbnN3ZXIuICovCi0KLSAgICBlbHNlIGlmIChxdWlldCkgcmV0dXJuIDA7Ci0KICAgICAvKiBUaGUgLS1vbmx5LW1hdGNoaW5nIG9wdGlvbiBwcmludHMganVzdCB0aGUgc3Vic3RyaW5nIHRoYXQgbWF0Y2hlZCwKICAgICBhbmQvb3Igb25lIG9yIG1vcmUgY2FwdHVyZWQgcG9ydGlvbnMgb2YgaXQsIGFzIGxvbmcgYXMgdGhlc2Ugc3RyaW5ncyBhcmUKICAgICBub3QgZW1wdHkuIFRoZSAtLWZpbGUtb2Zmc2V0cyBhbmQgLS1saW5lLW9mZnNldHMgb3B0aW9ucyBvdXRwdXQgb2Zmc2V0cyBmb3IKQEAgLTIwODksNyArMjA4OSw3IEBACiAKIC8qIFByaW50IHRoZSBtYXRjaCBjb3VudCBpZiB3YW50ZWQgKi8KIAotaWYgKGNvdW50X29ubHkpCitpZiAoY291bnRfb25seSAmJiAhcXVpZXQpCiAgIHsKICAgaWYgKGNvdW50ID4gMCB8fCAhb21pdF96ZXJvX2NvdW50KQogICAgIHsKZGlmZiAtLWdpdCBhL2Rpc3QvcGNyZXRlc3QuYyBiL2Rpc3QvcGNyZXRlc3QuYwppbmRleCAyNzEwN2NhLi40ODhlNDE5IDEwMDY0NAotLS0gYS9kaXN0L3BjcmV0ZXN0LmMKKysrIGIvZGlzdC9wY3JldGVzdC5jCkBAIC00NjIxLDkgKzQ2MjEsOSBAQAogCiAgICAgICBlbHNlIHN3aXRjaCAoKGMgPSAqcCsrKSkKICAgICAgICAgewotICAgICAgICBjYXNlICdhJzogYyA9ICAgIDc7IGJyZWFrOworICAgICAgICBjYXNlICdhJzogYyA9ICBDSEFSX0JFTDsgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2InOiBjID0gJ1xiJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2UnOiBjID0gICAyNzsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOiBjID0gIENIQVJfRVNDOyBicmVhazsKICAgICAgICAgY2FzZSAnZic6IGMgPSAnXGYnOyBicmVhazsKICAgICAgICAgY2FzZSAnbic6IGMgPSAnXG4nOyBicmVhazsKICAgICAgICAgY2FzZSAncic6IGMgPSAnXHInOyBicmVhazsKZGlmZiAtLWdpdCBhL2Rpc3Qvc2xqaXQvc2xqaXRDb25maWcuaCBiL2Rpc3Qvc2xqaXQvc2xqaXRDb25maWcuaAppbmRleCAxMDM2NGMzLi4xYzhhNTIxIDEwMDY0NAotLS0gYS9kaXN0L3Nsaml0L3Nsaml0Q29uZmlnLmgKKysrIGIvZGlzdC9zbGppdC9zbGppdENvbmZpZy5oCkBAIC05Niw2ICs5NiwxNSBAQAogI2RlZmluZSBTTEpJVF9FWEVDVVRBQkxFX0FMTE9DQVRPUiAxCiAjZW5kaWYKIAorLyogRm9yY2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9uIGV2ZW4gaWYgYSBiZXR0ZXIgY2FsbGluZworICAgY29udmVudGlvbiAoZS5nLiBmYXN0Y2FsbCkgaXMgc3VwcG9ydGVkIGJ5IHRoZSBDIGNvbXBpbGVyLgorICAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgQyBmdW5jdGlvbnMgd2l0aG91dAorICAgU0xKSVRfQ0FMTCBjYW4gYWxzbyBiZSBjYWxsZWQgZnJvbSBKSVQgY29kZS4gKi8KKyNpZm5kZWYgU0xKSVRfVVNFX0NERUNMX0NBTExJTkdfQ09OVkVOVElPTgorLyogRGlzYWJsZWQgYnkgZGVmYXVsdCAqLworI2RlZmluZSBTTEpJVF9VU0VfQ0RFQ0xfQ0FMTElOR19DT05WRU5USU9OIDAKKyNlbmRpZgorCiAvKiBSZXR1cm4gd2l0aCBlcnJvciB3aGVuIGFuIGludmFsaWQgYXJndW1lbnQgaXMgcGFzc2VkLiAqLwogI2lmbmRlZiBTTEpJVF9BUkdVTUVOVF9DSEVDS1MKIC8qIERpc2FibGVkIGJ5IGRlZmF1bHQgKi8KZGlmZiAtLWdpdCBhL2Rpc3Qvc2xqaXQvc2xqaXRDb25maWdJbnRlcm5hbC5oIGIvZGlzdC9zbGppdC9zbGppdENvbmZpZ0ludGVybmFsLmgKaW5kZXggMzI4NDAxMi4uMTZlMzU0NyAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdENvbmZpZ0ludGVybmFsLmgKKysrIGIvZGlzdC9zbGppdC9zbGppdENvbmZpZ0ludGVybmFsLmgKQEAgLTQ2OCw3ICs0NjgsMTIgQEAKIAogI2lmbmRlZiBTTEpJVF9DQUxMCiAKLSNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfWDg2XzMyICYmIFNMSklUX0NPTkZJR19YODZfMzIpCisjaWYgKGRlZmluZWQgU0xKSVRfVVNFX0NERUNMX0NBTExJTkdfQ09OVkVOVElPTiAmJiBTTEpJVF9VU0VfQ0RFQ0xfQ0FMTElOR19DT05WRU5USU9OKQorCisvKiBGb3JjZSBjZGVjbC4gKi8KKyNkZWZpbmUgU0xKSVRfQ0FMTAorCisjZWxpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfWDg2XzMyICYmIFNMSklUX0NPTkZJR19YODZfMzIpCiAKICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCiAKQEAgLTYwOCw2ICs2MTMsMTIgQEAKICNkZWZpbmUgU0xKSVRfTE9DQUxTX09GRlNFVF9CQVNFICgoMjMgKyAxKSAqIHNpemVvZihzbGppdF9zdykpCiAjZW5kaWYKIAorI2VsaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1RJTEVHWCAmJiBTTEpJVF9DT05GSUdfVElMRUdYKQorCisjZGVmaW5lIFNMSklUX05VTUJFUl9PRl9SRUdJU1RFUlMgMTAKKyNkZWZpbmUgU0xKSVRfTlVNQkVSX09GX1NBVkVEX1JFR0lTVEVSUyA1CisjZGVmaW5lIFNMSklUX0xPQ0FMU19PRkZTRVRfQkFTRSAwCisKICNlbGlmIChkZWZpbmVkIFNMSklUX0NPTkZJR19VTlNVUFBPUlRFRCAmJiBTTEpJVF9DT05GSUdfVU5TVVBQT1JURUQpCiAKICNkZWZpbmUgU0xKSVRfTlVNQkVSX09GX1JFR0lTVEVSUyAwCmRpZmYgLS1naXQgYS9kaXN0L3Nsaml0L3Nsaml0TGlyLmMgYi9kaXN0L3Nsaml0L3Nsaml0TGlyLmMKaW5kZXggNTAzOWE3ZS4uMGYxYjFjOSAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdExpci5jCisrKyBiL2Rpc3Qvc2xqaXQvc2xqaXRMaXIuYwpAQCAtODQ1LDggKzg0NSw4IEBACiAJfQogCiBzdGF0aWMgU0xKSVRfQ09OU1QgY2hhciogb3AwX25hbWVzW10gPSB7Ci0JKGNoYXIqKSJicmVha3BvaW50IiwgKGNoYXIqKSJub3AiLAotCShjaGFyKikibHVtdWwiLCAoY2hhciopImxzbXVsIiwgKGNoYXIqKSJsdWRpdiIsIChjaGFyKikibHNkaXYiLAorCShjaGFyKikiYnJlYWtwb2ludCIsIChjaGFyKikibm9wIiwgKGNoYXIqKSJsdW11bCIsIChjaGFyKikibHNtdWwiLAorCShjaGFyKikidWRpdm1vZCIsIChjaGFyKikic2Rpdm1vZCIsIChjaGFyKikidWRpdmkiLCAoY2hhciopInNkaXZpIgogfTsKIAogc3RhdGljIFNMSklUX0NPTlNUIGNoYXIqIG9wMV9uYW1lc1tdID0gewpAQCAtMTAzNiw3ICsxMDM2LDcgQEAKIHsKICNpZiAoZGVmaW5lZCBTTEpJVF9BUkdVTUVOVF9DSEVDS1MgJiYgU0xKSVRfQVJHVU1FTlRfQ0hFQ0tTKQogCUNIRUNLX0FSR1VNRU5UKChvcCA+PSBTTEpJVF9CUkVBS1BPSU5UICYmIG9wIDw9IFNMSklUX0xTTVVMKQotCQl8fCAoKG9wICYgflNMSklUX0lOVF9PUCkgPj0gU0xKSVRfTFVESVYgJiYgKG9wICYgflNMSklUX0lOVF9PUCkgPD0gU0xKSVRfTFNESVYpKTsKKwkJfHwgKChvcCAmIH5TTEpJVF9JTlRfT1ApID49IFNMSklUX1VESVZNT0QgJiYgKG9wICYgflNMSklUX0lOVF9PUCkgPD0gU0xKSVRfU0RJVkkpKTsKIAlDSEVDS19BUkdVTUVOVChvcCA8IFNMSklUX0xVTVVMIHx8IGNvbXBpbGVyLT5zY3JhdGNoZXMgPj0gMik7CiAjZW5kaWYKICNpZiAoZGVmaW5lZCBTTEpJVF9WRVJCT1NFICYmIFNMSklUX1ZFUkJPU0UpCkBAIC0xNDQ3LDYgKzE0NDcsOCBAQAogCiBzdGF0aWMgU0xKSVRfSU5MSU5FIENIRUNLX1JFVFVSTl9UWVBFIGNoZWNrX3Nsaml0X2dldF9sb2NhbF9iYXNlKHN0cnVjdCBzbGppdF9jb21waWxlciAqY29tcGlsZXIsIHNsaml0X3NpIGRzdCwgc2xqaXRfc3cgZHN0dywgc2xqaXRfc3cgb2Zmc2V0KQogeworCVNMSklUX1VOVVNFRF9BUkcob2Zmc2V0KTsKKwogI2lmIChkZWZpbmVkIFNMSklUX0FSR1VNRU5UX0NIRUNLUyAmJiBTTEpJVF9BUkdVTUVOVF9DSEVDS1MpCiAJRlVOQ1RJT05fQ0hFQ0tfRFNUKGRzdCwgZHN0dyk7CiAjZW5kaWYKQEAgLTE0NjIsNiArMTQ2NCw4IEBACiAKIHN0YXRpYyBTTEpJVF9JTkxJTkUgQ0hFQ0tfUkVUVVJOX1RZUEUgY2hlY2tfc2xqaXRfZW1pdF9jb25zdChzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLCBzbGppdF9zaSBkc3QsIHNsaml0X3N3IGRzdHcsIHNsaml0X3N3IGluaXRfdmFsdWUpCiB7CisJU0xKSVRfVU5VU0VEX0FSRyhpbml0X3ZhbHVlKTsKKwogI2lmIChkZWZpbmVkIFNMSklUX0FSR1VNRU5UX0NIRUNLUyAmJiBTTEpJVF9BUkdVTUVOVF9DSEVDS1MpCiAJRlVOQ1RJT05fQ0hFQ0tfRFNUKGRzdCwgZHN0dyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2Rpc3Qvc2xqaXQvc2xqaXRMaXIuaCBiL2Rpc3Qvc2xqaXQvc2xqaXRMaXIuaAppbmRleCAyNGMwZjYwLi4yZTJlOWFjIDEwMDY0NAotLS0gYS9kaXN0L3Nsaml0L3Nsaml0TGlyLmgKKysrIGIvZGlzdC9zbGppdC9zbGppdExpci5oCkBAIC02ODcsNyArNjg3LDcgQEAKICNkZWZpbmUgU0xKSVRfT1AwX0JBU0UJCQkwCiAKIC8qIEZsYWdzOiAtIChuZXZlciBzZXQgYW55IGZsYWdzKQotICAgTm90ZTogYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFsbCBhcmNoaXRlY3R1cmVzIChuYW1lbHkgcHBjKQorICAgTm90ZTogYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFsbCBhcmNoaXRlY3R1cmVzIChlLmcuIHBwYykKICAgICAgICAgIEl0IGZhbGxzIGJhY2sgdG8gU0xKSVRfTk9QIGluIHRob3NlIGNhc2VzLiAqLwogI2RlZmluZSBTTEpJVF9CUkVBS1BPSU5UCQkoU0xKSVRfT1AwX0JBU0UgKyAwKQogLyogRmxhZ3M6IC0gKG5ldmVyIHNldCBhbnkgZmxhZ3MpCkBAIC02OTYsMjQgKzY5Niw0MiBAQAogI2RlZmluZSBTTEpJVF9OT1AJCQkoU0xKSVRfT1AwX0JBU0UgKyAxKQogLyogRmxhZ3M6IC0gKG1heSBkZXN0cm95IGZsYWdzKQogICAgVW5zaWduZWQgbXVsdGlwbGljYXRpb24gb2YgU0xKSVRfUjAgYW5kIFNMSklUX1IxLgotICAgUmVzdWx0IGdvZXMgdG8gU0xKSVRfUjE6U0xKSVRfUjAgKGhpZ2g6bG93KSB3b3JkICovCisgICBSZXN1bHQgaXMgcGxhY2VkIGludG8gU0xKSVRfUjE6U0xKSVRfUjAgKGhpZ2g6bG93KSB3b3JkICovCiAjZGVmaW5lIFNMSklUX0xVTVVMCQkJKFNMSklUX09QMF9CQVNFICsgMikKIC8qIEZsYWdzOiAtIChtYXkgZGVzdHJveSBmbGFncykKICAgIFNpZ25lZCBtdWx0aXBsaWNhdGlvbiBvZiBTTEpJVF9SMCBhbmQgU0xKSVRfUjEuCi0gICBSZXN1bHQgZ29lcyB0byBTTEpJVF9SMTpTTEpJVF9SMCAoaGlnaDpsb3cpIHdvcmQgKi8KKyAgIFJlc3VsdCBpcyBwbGFjZWQgaW50byBTTEpJVF9SMTpTTEpJVF9SMCAoaGlnaDpsb3cpIHdvcmQgKi8KICNkZWZpbmUgU0xKSVRfTFNNVUwJCQkoU0xKSVRfT1AwX0JBU0UgKyAzKQogLyogRmxhZ3M6IEkgLSAobWF5IGRlc3Ryb3kgZmxhZ3MpCiAgICBVbnNpZ25lZCBkaXZpZGUgb2YgdGhlIHZhbHVlIGluIFNMSklUX1IwIGJ5IHRoZSB2YWx1ZSBpbiBTTEpJVF9SMS4KLSAgIFRoZSByZXN1bHQgaXMgcGxhY2VkIGluIFNMSklUX1IwIGFuZCB0aGUgcmVtYWluZGVyIGdvZXMgdG8gU0xKSVRfUjEuCi0gICBOb3RlOiBpZiBTTEpJVF9SMSBjb250YWlucyAwLCB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gKi8KLSNkZWZpbmUgU0xKSVRfTFVESVYJCQkoU0xKSVRfT1AwX0JBU0UgKyA0KQotI2RlZmluZSBTTEpJVF9JTFVESVYJCQkoU0xKSVRfTFVESVYgfCBTTEpJVF9JTlRfT1ApCisgICBUaGUgcmVzdWx0IGlzIHBsYWNlZCBpbnRvIFNMSklUX1IwIGFuZCB0aGUgcmVtYWluZGVyIGludG8gU0xKSVRfUjEuCisgICBOb3RlOiBpZiBTTEpJVF9SMSBpcyAwLCB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gKi8KKyNkZWZpbmUgU0xKSVRfVURJVk1PRAkJCShTTEpJVF9PUDBfQkFTRSArIDQpCisjZGVmaW5lIFNMSklUX0lVRElWTU9ECQkJKFNMSklUX1VESVZNT0QgfCBTTEpJVF9JTlRfT1ApCiAvKiBGbGFnczogSSAtIChtYXkgZGVzdHJveSBmbGFncykKICAgIFNpZ25lZCBkaXZpZGUgb2YgdGhlIHZhbHVlIGluIFNMSklUX1IwIGJ5IHRoZSB2YWx1ZSBpbiBTTEpJVF9SMS4KLSAgIFRoZSByZXN1bHQgaXMgcGxhY2VkIGluIFNMSklUX1IwIGFuZCB0aGUgcmVtYWluZGVyIGdvZXMgdG8gU0xKSVRfUjEuCi0gICBOb3RlOiBpZiBTTEpJVF9SMSBjb250YWlucyAwLCB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gKi8KLSNkZWZpbmUgU0xKSVRfTFNESVYJCQkoU0xKSVRfT1AwX0JBU0UgKyA1KQotI2RlZmluZSBTTEpJVF9JTFNESVYJCQkoU0xKSVRfTFNESVYgfCBTTEpJVF9JTlRfT1ApCisgICBUaGUgcmVzdWx0IGlzIHBsYWNlZCBpbnRvIFNMSklUX1IwIGFuZCB0aGUgcmVtYWluZGVyIGludG8gU0xKSVRfUjEuCisgICBOb3RlOiBpZiBTTEpJVF9SMSBpcyAwLCB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4KKyAgIE5vdGU6IGlmIFNMSklUX1IxIGlzIC0xIGFuZCBTTEpJVF9SMCBpcyBpbnRlZ2VyIG1pbiAoMHg4MDAuLjAwKSwKKyAgICAgICAgIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiAqLworI2RlZmluZSBTTEpJVF9TRElWTU9ECQkJKFNMSklUX09QMF9CQVNFICsgNSkKKyNkZWZpbmUgU0xKSVRfSVNESVZNT0QJCQkoU0xKSVRfU0RJVk1PRCB8IFNMSklUX0lOVF9PUCkKKy8qIEZsYWdzOiBJIC0gKG1heSBkZXN0cm95IGZsYWdzKQorICAgVW5zaWduZWQgZGl2aWRlIG9mIHRoZSB2YWx1ZSBpbiBTTEpJVF9SMCBieSB0aGUgdmFsdWUgaW4gU0xKSVRfUjEuCisgICBUaGUgcmVzdWx0IGlzIHBsYWNlZCBpbnRvIFNMSklUX1IwLiBTTEpJVF9SMSBwcmVzZXJ2ZXMgaXRzIHZhbHVlLgorICAgTm90ZTogaWYgU0xKSVRfUjEgaXMgMCwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCisgICBOb3RlOiBTTEpJVF9TRElWIGlzIHNpbmdsZSBwcmVjaXNpb24gZGl2aWRlLiAqLworI2RlZmluZSBTTEpJVF9VRElWSQkJCShTTEpJVF9PUDBfQkFTRSArIDYpCisjZGVmaW5lIFNMSklUX0lVRElWSQkJCShTTEpJVF9VRElWSSB8IFNMSklUX0lOVF9PUCkKKy8qIEZsYWdzOiBJIC0gKG1heSBkZXN0cm95IGZsYWdzKQorICAgU2lnbmVkIGRpdmlkZSBvZiB0aGUgdmFsdWUgaW4gU0xKSVRfUjAgYnkgdGhlIHZhbHVlIGluIFNMSklUX1IxLgorICAgVGhlIHJlc3VsdCBpcyBwbGFjZWQgaW50byBTTEpJVF9SMC4gU0xKSVRfUjEgcHJlc2VydmVzIGl0cyB2YWx1ZS4KKyAgIE5vdGU6IGlmIFNMSklUX1IxIGlzIDAsIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLgorICAgTm90ZTogaWYgU0xKSVRfUjEgaXMgLTEgYW5kIFNMSklUX1IwIGlzIGludGVnZXIgbWluICgweDgwMC4uMDApLAorICAgICAgICAgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCisgICBOb3RlOiBTTEpJVF9TRElWIGlzIHNpbmdsZSBwcmVjaXNpb24gZGl2aWRlLiAqLworI2RlZmluZSBTTEpJVF9TRElWSQkJCShTTEpJVF9PUDBfQkFTRSArIDcpCisjZGVmaW5lIFNMSklUX0lTRElWSQkJCShTTEpJVF9TRElWSSB8IFNMSklUX0lOVF9PUCkKIAogU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHNsaml0X3NpIHNsaml0X2VtaXRfb3AwKHN0cnVjdCBzbGppdF9jb21waWxlciAqY29tcGlsZXIsIHNsaml0X3NpIG9wKTsKIApAQCAtODUxLDM0ICs4NjksNiBAQAogCXNsaml0X3NpIHNyYzEsIHNsaml0X3N3IHNyYzF3LAogCXNsaml0X3NpIHNyYzIsIHNsaml0X3N3IHNyYzJ3KTsKIAotLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3Igc2xqaXRfZW1pdF9vcF9jdXN0b20uCi0gICBJdCByZXR1cm5zIHdpdGggdGhlIHJlYWwgbWFjaGluZSByZWdpc3RlciBpbmRleCAoID49MCApIG9mIGFueSBTTEpJVF9SLAotICAgU0xKSVRfUyBhbmQgU0xKSVRfU1AgcmVnaXN0ZXJzLgotCi0gICBOb3RlOiBpdCByZXR1cm5zIHdpdGggLTEgZm9yIHZpcnR1YWwgcmVnaXN0ZXJzIChvbmx5IG9uIHg4Ni0zMikuICovCi0KLVNMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9nZXRfcmVnaXN0ZXJfaW5kZXgoc2xqaXRfc2kgcmVnKTsKLQotLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3Igc2xqaXRfZW1pdF9vcF9jdXN0b20uCi0gICBJdCByZXR1cm5zIHdpdGggdGhlIHJlYWwgbWFjaGluZSByZWdpc3RlciBpbmRleCBvZiBhbnkgU0xKSVRfRkxPQVQgcmVnaXN0ZXIuCi0KLSAgIE5vdGU6IHRoZSBpbmRleCBpcyBhbHdheXMgYW4gZXZlbiBudW1iZXIgb24gQVJNIChleGNlcHQgQVJNLTY0KSwgTUlQUywgYW5kIFNQQVJDLiAqLwotCi1TTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfZ2V0X2Zsb2F0X3JlZ2lzdGVyX2luZGV4KHNsaml0X3NpIHJlZyk7Ci0KLS8qIEFueSBpbnN0cnVjdGlvbiBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIGJ5Ci0gICBzbGppdF9lbWl0X29wX2N1c3RvbS4gSXQgaGFzIGEgc2ltaWxhciBwdXJwb3NlIGFzIGlubGluZSBhc3NlbWJseS4KLSAgIFRoZSBzaXplIHBhcmFtZXRlciBtdXN0IG1hdGNoIHRvIHRoZSBpbnN0cnVjdGlvbiBzaXplIG9mIHRoZSB0YXJnZXQKLSAgIGFyY2hpdGVjdHVyZToKLQotICAgICAgICAgeDg2OiAwIDwgc2l6ZSA8PSAxNS4gVGhlIGluc3RydWN0aW9uIGFyZ3VtZW50IGNhbiBiZSBieXRlIGFsaWduZWQuCi0gICAgICBUaHVtYjI6IGlmIHNpemUgPT0gMiwgdGhlIGluc3RydWN0aW9uIGFyZ3VtZW50IG11c3QgYmUgMiBieXRlIGFsaWduZWQuCi0gICAgICAgICAgICAgIGlmIHNpemUgPT0gNCwgdGhlIGluc3RydWN0aW9uIGFyZ3VtZW50IG11c3QgYmUgNCBieXRlIGFsaWduZWQuCi0gICBPdGhlcndpc2U6IHNpemUgbXVzdCBiZSA0IGFuZCBpbnN0cnVjdGlvbiBhcmd1bWVudCBtdXN0IGJlIDQgYnl0ZSBhbGlnbmVkLiAqLwotCi1TTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfZW1pdF9vcF9jdXN0b20oc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwKLQl2b2lkICppbnN0cnVjdGlvbiwgc2xqaXRfc2kgc2l6ZSk7Ci0KIC8qIFJldHVybnMgd2l0aCBub24temVybyBpZiBmcHUgaXMgYXZhaWxhYmxlLiAqLwogCiBTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfaXNfZnB1X2F2YWlsYWJsZSh2b2lkKTsKQEAgLTExOTYsNCArMTE4Niw2NCBAQAogCiAjZW5kaWYgLyogIShkZWZpbmVkIFNMSklUX0lORElSRUNUX0NBTEwgJiYgU0xKSVRfSU5ESVJFQ1RfQ0FMTCkgKi8KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgQ1BVIHNwZWNpZmljIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBzbGppdF9lbWl0X29wX2N1c3RvbS4KKyAgIEl0IHJldHVybnMgd2l0aCB0aGUgcmVhbCBtYWNoaW5lIHJlZ2lzdGVyIGluZGV4ICggPj0wICkgb2YgYW55IFNMSklUX1IsCisgICBTTEpJVF9TIGFuZCBTTEpJVF9TUCByZWdpc3RlcnMuCisKKyAgIE5vdGU6IGl0IHJldHVybnMgd2l0aCAtMSBmb3IgdmlydHVhbCByZWdpc3RlcnMgKG9ubHkgb24geDg2LTMyKS4gKi8KKworU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHNsaml0X3NpIHNsaml0X2dldF9yZWdpc3Rlcl9pbmRleChzbGppdF9zaSByZWcpOworCisvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBzbGppdF9lbWl0X29wX2N1c3RvbS4KKyAgIEl0IHJldHVybnMgd2l0aCB0aGUgcmVhbCBtYWNoaW5lIHJlZ2lzdGVyIGluZGV4IG9mIGFueSBTTEpJVF9GTE9BVCByZWdpc3Rlci4KKworICAgTm90ZTogdGhlIGluZGV4IGlzIGFsd2F5cyBhbiBldmVuIG51bWJlciBvbiBBUk0gKGV4Y2VwdCBBUk0tNjQpLCBNSVBTLCBhbmQgU1BBUkMuICovCisKK1NMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9nZXRfZmxvYXRfcmVnaXN0ZXJfaW5kZXgoc2xqaXRfc2kgcmVnKTsKKworLyogQW55IGluc3RydWN0aW9uIGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0gYnkKKyAgIHNsaml0X2VtaXRfb3BfY3VzdG9tLiBJdCBoYXMgYSBzaW1pbGFyIHB1cnBvc2UgYXMgaW5saW5lIGFzc2VtYmx5LgorICAgVGhlIHNpemUgcGFyYW1ldGVyIG11c3QgbWF0Y2ggdG8gdGhlIGluc3RydWN0aW9uIHNpemUgb2YgdGhlIHRhcmdldAorICAgYXJjaGl0ZWN0dXJlOgorCisgICAgICAgICB4ODY6IDAgPCBzaXplIDw9IDE1LiBUaGUgaW5zdHJ1Y3Rpb24gYXJndW1lbnQgY2FuIGJlIGJ5dGUgYWxpZ25lZC4KKyAgICAgIFRodW1iMjogaWYgc2l6ZSA9PSAyLCB0aGUgaW5zdHJ1Y3Rpb24gYXJndW1lbnQgbXVzdCBiZSAyIGJ5dGUgYWxpZ25lZC4KKyAgICAgICAgICAgICAgaWYgc2l6ZSA9PSA0LCB0aGUgaW5zdHJ1Y3Rpb24gYXJndW1lbnQgbXVzdCBiZSA0IGJ5dGUgYWxpZ25lZC4KKyAgIE90aGVyd2lzZTogc2l6ZSBtdXN0IGJlIDQgYW5kIGluc3RydWN0aW9uIGFyZ3VtZW50IG11c3QgYmUgNCBieXRlIGFsaWduZWQuICovCisKK1NMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9lbWl0X29wX2N1c3RvbShzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLAorCXZvaWQgKmluc3RydWN0aW9uLCBzbGppdF9zaSBzaXplKTsKKworI2lmIChkZWZpbmVkIFNMSklUX0NPTkZJR19YODYgJiYgU0xKSVRfQ09ORklHX1g4NikKKworLyogUmV0dXJucyB3aXRoIG5vbi16ZXJvIGlmIHNzZTIgaXMgYXZhaWxhYmxlLiAqLworCitTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfeDg2X2lzX3NzZTJfYXZhaWxhYmxlKHZvaWQpOworCisvKiBSZXR1cm5zIHdpdGggbm9uLXplcm8gaWYgY21vdiBpbnN0cnVjdGlvbiBpcyBhdmFpbGFibGUuICovCisKK1NMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF94ODZfaXNfY21vdl9hdmFpbGFibGUodm9pZCk7CisKKy8qIEVtaXQgYSBjb25kaXRpb25hbCBtb3YgaW5zdHJ1Y3Rpb24gb24geDg2IENQVXMuIFRoaXMgaW5zdHJ1Y3Rpb24KKyAgIG1vdmVzIHNyYyB0byBkZXN0aW5hdGlvbiwgaWYgdGhlIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQuIFVubGlrZQorICAgb3RoZXIgYXJpdGhtZXRpYyBpbnN0cnVjdGlvbnMsIGRlc3RpbmF0aW9uIG11c3QgYmUgYSByZWdpc3Rlci4KKyAgIEJlZm9yZSBzdWNoIGluc3RydWN0aW9ucyBhcmUgZW1pdHRlZCwgY21vdiBzdXBwb3J0IHNob3VsZCBiZQorICAgY2hlY2tlZCBieSBzbGppdF94ODZfaXNfY21vdl9hdmFpbGFibGUgZnVuY3Rpb24uCisgICAgdHlwZSBtdXN0IGJlIGJldHdlZW4gU0xKSVRfRVFVQUwgYW5kIFNMSklUX1NfT1JERVJFRAorICAgIGRzdF9yZWcgbXVzdCBiZSBhIHZhbGlkIHJlZ2lzdGVyIGFuZCBpdCBjYW4gYmUgY29tYmluZWQKKyAgICAgIHdpdGggU0xKSVRfSU5UX09QIHRvIHBlcmZvcm0gMzIgYml0IGFyaXRobWV0aWMKKyAgIEZsYWdzOiBJIC0gKG5ldmVyIHNldCBhbnkgZmxhZ3MpCisgKi8KKworU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHNsaml0X3NpIHNsaml0X3g4Nl9lbWl0X2Ntb3Yoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwKKwlzbGppdF9zaSB0eXBlLAorCXNsaml0X3NpIGRzdF9yZWcsCisJc2xqaXRfc2kgc3JjLCBzbGppdF9zdyBzcmN3KTsKKworI2VuZGlmCisKICNlbmRpZiAvKiBfU0xKSVRfTElSX0hfICovCmRpZmYgLS1naXQgYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlQVJNXzMyLmMgYi9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlQVJNXzMyLmMKaW5kZXggYWNhMWQzMS4uNWNkNGM3MSAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdE5hdGl2ZUFSTV8zMi5jCisrKyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVBUk1fMzIuYwpAQCAtMTgzMywxOCArMTgzMywzMyBAQAogCQkJfCAocmVnX21hcFtTTEpJVF9SMF0gPDwgOCkKIAkJCXwgcmVnX21hcFtUTVBfUkVHMV0pOwogI2VuZGlmCi0JY2FzZSBTTEpJVF9MVURJVjoKLQljYXNlIFNMSklUX0xTRElWOgotCQlpZiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKQorCWNhc2UgU0xKSVRfVURJVk1PRDoKKwljYXNlIFNMSklUX1NESVZNT0Q6CisJY2FzZSBTTEpJVF9VRElWSToKKwljYXNlIFNMSklUX1NESVZJOgorCQlTTEpJVF9DT01QSUxFX0FTU0VSVCgoU0xKSVRfVURJVk1PRCAmIDB4MikgPT0gMCAmJiBTTEpJVF9VRElWSSAtIDB4MiA9PSBTTEpJVF9VRElWTU9ELCBiYWRfZGl2X29wY29kZV9hc3NpZ25tZW50cyk7CisJCVNMSklUX0NPTVBJTEVfQVNTRVJUKHJlZ19tYXBbMl0gPT0gMSAmJiByZWdfbWFwWzNdID09IDIsIGJhZF9yZWdpc3Rlcl9tYXBwaW5nKTsKKworCQlpZiAoKG9wID49IFNMSklUX1VESVZJKSAmJiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKSkgewogCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIDB4ZTUyZDIwMDggLyogc3RyIHIyLCBbc3AsICMtOF0hICovKSk7CisJCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgMHhlNThkMTAwNCAvKiBzdHIgcjEsIFtzcCwgIzRdICovKSk7CisJCX0KKwkJZWxzZSBpZiAoKG9wID49IFNMSklUX1VESVZJKSB8fCAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKSkKKwkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCAweGU1MmQwMDA4IHwgKG9wID49IFNMSklUX1VESVZJID8gMHgxMDAwIDogMHgyMDAwKSAvKiBzdHIgcjEvcjIsIFtzcCwgIy04XSEgKi8pKTsKKwogI2lmIGRlZmluZWQoX19HTlVDX18pCiAJCUZBSUxfSUYoc2xqaXRfZW1pdF9panVtcChjb21waWxlciwgU0xKSVRfRkFTVF9DQUxMLCBTTEpJVF9JTU0sCi0JCQkob3AgPT0gU0xKSVRfTFVESVYgPyBTTEpJVF9GVU5DX09GRlNFVChfX2FlYWJpX3VpZGl2bW9kKSA6IFNMSklUX0ZVTkNfT0ZGU0VUKF9fYWVhYmlfaWRpdm1vZCkpKSk7CisJCQkoKG9wIHwgMHgyKSA9PSBTTEpJVF9VRElWSSA/IFNMSklUX0ZVTkNfT0ZGU0VUKF9fYWVhYmlfdWlkaXZtb2QpIDogU0xKSVRfRlVOQ19PRkZTRVQoX19hZWFiaV9pZGl2bW9kKSkpKTsKICNlbHNlCiAjZXJyb3IgIlNvZnR3YXJlIGRpdm1vZCBmdW5jdGlvbnMgYXJlIG5lZWRlZCIKICNlbmRpZgotCQlpZiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKQotCQkJcmV0dXJuIHB1c2hfaW5zdChjb21waWxlciwgMHhlNDlkMjAwOCAvKiBsZHIgcjIsIFtzcF0sICM4ICovKTsKKworCQlpZiAoKG9wID49IFNMSklUX1VESVZJKSAmJiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKSkgeworCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIDB4ZTU5ZDEwMDQgLyogbGRyIHIxLCBbc3AsICM0XSAqLykpOworCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIDB4ZTQ5ZDIwMDggLyogbGRyIHIyLCBbc3BdLCAjOCAqLykpOworCQl9CisJCWVsc2UgaWYgKChvcCA+PSBTTEpJVF9VRElWSSkgfHwgKGNvbXBpbGVyLT5zY3JhdGNoZXMgPj0gMykpCisJCQlyZXR1cm4gcHVzaF9pbnN0KGNvbXBpbGVyLCAweGU0OWQwMDA4IHwgKG9wID49IFNMSklUX1VESVZJID8gMHgxMDAwIDogMHgyMDAwKSAvKiBsZHIgcjEvcjIsIFtzcF0sICM4ICovKTsKIAkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAJfQogCmRpZmYgLS1naXQgYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlQVJNXzY0LmMgYi9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlQVJNXzY0LmMKaW5kZXggYjY2NDU1Zi4uMDQ0YTY3NSAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdE5hdGl2ZUFSTV82NC5jCisrKyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVBUk1fNjQuYwpAQCAtMTA4NywxNCArMTA4NywyMCBAQAogCQkJc2F2ZWRfcmVnc19zaXplICs9IHNpemVvZihzbGppdF9zdyk7CiAJCX0KIAkJbG9jYWxfc2l6ZSAtPSBzYXZlZF9yZWdzX3NpemUgKyBTTEpJVF9MT0NBTFNfT0ZGU0VUOwotCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgU1VCSSB8IFJEKFRNUF9TUCkgfCBSTihUTVBfU1ApIHwgKHNhdmVkX3JlZ3Nfc2l6ZSA8PCAxMCkpKTsKKwkJaWYgKHNhdmVkX3JlZ3Nfc2l6ZSA+IDApCisJCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgU1VCSSB8IFJEKFRNUF9TUCkgfCBSTihUTVBfU1ApIHwgKHNhdmVkX3JlZ3Nfc2l6ZSA8PCAxMCkpKTsKIAl9CiAKIAl0bXAgPSBzYXZlZHMgPCBTTEpJVF9OVU1CRVJfT0ZfU0FWRURfUkVHSVNURVJTID8gKFNMSklUX1MwICsgMSAtIHNhdmVkcykgOiBTTEpJVF9GSVJTVF9TQVZFRF9SRUc7CiAJcHJldiA9IC0xOwogCWZvciAoaSA9IFNMSklUX1MwOyBpID49IHRtcDsgaS0tKSB7CiAJCWlmIChwcmV2ID09IC0xKSB7Ci0JCQlwcmV2ID0gaTsKKwkJCWlmICghKG9mZnMgJiAoMSA8PCAxNSkpKSB7CisJCQkJcHJldiA9IGk7CisJCQkJY29udGludWU7CisJCQl9CisJCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgU1RSSSB8IFJUKGkpIHwgUk4oVE1QX1NQKSB8IChvZmZzID4+IDUpKSk7CisJCQlvZmZzICs9IDEgPDwgMTU7CiAJCQljb250aW51ZTsKIAkJfQogCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgU1RQIHwgUlQocHJldikgfCBSVDIoaSkgfCBSTihUTVBfU1ApIHwgb2ZmcykpOwpAQCAtMTEwNCw3ICsxMTEwLDEyIEBACiAKIAlmb3IgKGkgPSBzY3JhdGNoZXM7IGkgPj0gU0xKSVRfRklSU1RfU0FWRURfUkVHOyBpLS0pIHsKIAkJaWYgKHByZXYgPT0gLTEpIHsKLQkJCXByZXYgPSBpOworCQkJaWYgKCEob2ZmcyAmICgxIDw8IDE1KSkpIHsKKwkJCQlwcmV2ID0gaTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBTVFJJIHwgUlQoaSkgfCBSTihUTVBfU1ApIHwgKG9mZnMgPj4gNSkpKTsKKwkJCW9mZnMgKz0gMSA8PCAxNTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBTVFAgfCBSVChwcmV2KSB8IFJUMihpKSB8IFJOKFRNUF9TUCkgfCBvZmZzKSk7CkBAIC0xMTEyLDggKzExMjMsNyBAQAogCQlwcmV2ID0gLTE7CiAJfQogCi0JaWYgKHByZXYgIT0gLTEpCi0JCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBTVFJJIHwgUlQocHJldikgfCBSTihUTVBfU1ApIHwgKG9mZnMgPj4gNSkpKTsKKwlTTEpJVF9BU1NFUlQocHJldiA9PSAtMSk7CiAKIAlpZiAoY29tcGlsZXItPmxvY2FsX3NpemUgPiAoNjMgKiBzaXplb2Yoc2xqaXRfc3cpKSkgewogCQkvKiBUaGUgbG9jYWxfc2l6ZSBpcyBhbHJlYWR5IGFkanVzdGVkIGJ5IHRoZSBzYXZlZCByZWdpc3RlcnMuICovCkBAIC0xMTg4LDcgKzExOTgsMTIgQEAKIAlwcmV2ID0gLTE7CiAJZm9yIChpID0gU0xKSVRfUzA7IGkgPj0gdG1wOyBpLS0pIHsKIAkJaWYgKHByZXYgPT0gLTEpIHsKLQkJCXByZXYgPSBpOworCQkJaWYgKCEob2ZmcyAmICgxIDw8IDE1KSkpIHsKKwkJCQlwcmV2ID0gaTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBMRFJJIHwgUlQoaSkgfCBSTihUTVBfU1ApIHwgKG9mZnMgPj4gNSkpKTsKKwkJCW9mZnMgKz0gMSA8PCAxNTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBMRFAgfCBSVChwcmV2KSB8IFJUMihpKSB8IFJOKFRNUF9TUCkgfCBvZmZzKSk7CkBAIC0xMTk4LDcgKzEyMTMsMTIgQEAKIAogCWZvciAoaSA9IGNvbXBpbGVyLT5zY3JhdGNoZXM7IGkgPj0gU0xKSVRfRklSU1RfU0FWRURfUkVHOyBpLS0pIHsKIAkJaWYgKHByZXYgPT0gLTEpIHsKLQkJCXByZXYgPSBpOworCQkJaWYgKCEob2ZmcyAmICgxIDw8IDE1KSkpIHsKKwkJCQlwcmV2ID0gaTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBMRFJJIHwgUlQoaSkgfCBSTihUTVBfU1ApIHwgKG9mZnMgPj4gNSkpKTsKKwkJCW9mZnMgKz0gMSA8PCAxNTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBMRFAgfCBSVChwcmV2KSB8IFJUMihpKSB8IFJOKFRNUF9TUCkgfCBvZmZzKSk7CkBAIC0xMjA2LDEzICsxMjI2LDEyIEBACiAJCXByZXYgPSAtMTsKIAl9CiAKLQlpZiAocHJldiAhPSAtMSkKLQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIExEUkkgfCBSVChwcmV2KSB8IFJOKFRNUF9TUCkgfCAob2ZmcyA+PiA1KSkpOworCVNMSklUX0FTU0VSVChwcmV2ID09IC0xKTsKIAogCWlmIChjb21waWxlci0+bG9jYWxfc2l6ZSA8PSAoNjMgKiBzaXplb2Yoc2xqaXRfc3cpKSkgewogCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgTERQX1BTVCB8IDI5IHwgUlQyKFRNUF9MUikKIAkJCXwgUk4oVE1QX1NQKSB8ICgoKGxvY2FsX3NpemUgPj4gMykgJiAweDdmKSA8PCAxNSkpKTsKLQl9IGVsc2UgeworCX0gZWxzZSBpZiAoc2F2ZWRfcmVnc19zaXplID4gMCkgewogCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgQURESSB8IFJEKFRNUF9TUCkgfCBSTihUTVBfU1ApIHwgKHNhdmVkX3JlZ3Nfc2l6ZSA8PCAxMCkpKTsKIAl9CiAKQEAgLTEyNDIsMTIgKzEyNjEsMTUgQEAKIAkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE9SUiB8IFJEKFRNUF9SRUcxKSB8IFJOKFRNUF9aRVJPKSB8IFJNKFNMSklUX1IwKSkpOwogCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgTUFERCB8IFJEKFNMSklUX1IwKSB8IFJOKFNMSklUX1IwKSB8IFJNKFNMSklUX1IxKSB8IFJUMihUTVBfWkVSTykpKTsKIAkJcmV0dXJuIHB1c2hfaW5zdChjb21waWxlciwgKG9wID09IFNMSklUX0xVTVVMID8gVU1VTEggOiBTTVVMSCkgfCBSRChTTEpJVF9SMSkgfCBSTihUTVBfUkVHMSkgfCBSTShTTEpJVF9SMSkpOwotCWNhc2UgU0xKSVRfTFVESVY6Ci0JY2FzZSBTTEpJVF9MU0RJVjoKKwljYXNlIFNMSklUX1VESVZNT0Q6CisJY2FzZSBTTEpJVF9TRElWTU9EOgogCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKE9SUiBeIGludl9iaXRzKSB8IFJEKFRNUF9SRUcxKSB8IFJOKFRNUF9aRVJPKSB8IFJNKFNMSklUX1IwKSkpOwotCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKChvcCA9PSBTTEpJVF9MVURJViA/IFVESVYgOiBTRElWKSBeIGludl9iaXRzKSB8IFJEKFNMSklUX1IwKSB8IFJOKFNMSklUX1IwKSB8IFJNKFNMSklUX1IxKSkpOworCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKChvcCA9PSBTTEpJVF9VRElWTU9EID8gVURJViA6IFNESVYpIF4gaW52X2JpdHMpIHwgUkQoU0xKSVRfUjApIHwgUk4oU0xKSVRfUjApIHwgUk0oU0xKSVRfUjEpKSk7CiAJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCAoTUFERCBeIGludl9iaXRzKSB8IFJEKFNMSklUX1IxKSB8IFJOKFNMSklUX1IwKSB8IFJNKFNMSklUX1IxKSB8IFJUMihUTVBfWkVSTykpKTsKIAkJcmV0dXJuIHB1c2hfaW5zdChjb21waWxlciwgKFNVQiBeIGludl9iaXRzKSB8IFJEKFNMSklUX1IxKSB8IFJOKFRNUF9SRUcxKSB8IFJNKFNMSklUX1IxKSk7CisJY2FzZSBTTEpJVF9VRElWSToKKwljYXNlIFNMSklUX1NESVZJOgorCQlyZXR1cm4gcHVzaF9pbnN0KGNvbXBpbGVyLCAoKG9wID09IFNMSklUX1VESVZJID8gVURJViA6IFNESVYpIF4gaW52X2JpdHMpIHwgUkQoU0xKSVRfUjApIHwgUk4oU0xKSVRfUjApIHwgUk0oU0xKSVRfUjEpKTsKIAl9CiAKIAlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKZGlmZiAtLWdpdCBhL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVBUk1fVDJfMzIuYyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVBUk1fVDJfMzIuYwppbmRleCA2ZTM4Y2VjLi5mOTgwM2Y1IDEwMDY0NAotLS0gYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlQVJNX1QyXzMyLmMKKysrIGIvZGlzdC9zbGppdC9zbGppdE5hdGl2ZUFSTV9UMl8zMi5jCkBAIC0xMjM5LDYgKzEyMzksOSBAQAogCiBTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfZW1pdF9vcDAoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwgc2xqaXRfc2kgb3ApCiB7CisJc2xqaXRfc3cgc2F2ZWRfcmVnX2xpc3RbM107CisJc2xqaXRfc3cgc2F2ZWRfcmVnX2NvdW50OworCiAJQ0hFQ0tfRVJST1IoKTsKIAlDSEVDSyhjaGVja19zbGppdF9lbWl0X29wMChjb21waWxlciwgb3ApKTsKIApAQCAtMTI1NSwyNCArMTI1OCw1MyBAQAogCQkJfCAocmVnX21hcFtTTEpJVF9SMF0gPDwgMTIpCiAJCQl8IChyZWdfbWFwW1NMSklUX1IwXSA8PCAxNikKIAkJCXwgcmVnX21hcFtTTEpJVF9SMV0pOwotCWNhc2UgU0xKSVRfTFVESVY6Ci0JY2FzZSBTTEpJVF9MU0RJVjoKLQkJaWYgKGNvbXBpbGVyLT5zY3JhdGNoZXMgPj0gNCkgewotCQkJRkFJTF9JRihwdXNoX2luc3QzMihjb21waWxlciwgMHhmODRkMmQwNCAvKiBzdHIgcjIsIFtzcCwgIy00XSEgKi8pKTsKLQkJCUZBSUxfSUYocHVzaF9pbnN0MzIoY29tcGlsZXIsIDB4Zjg0ZGNkMDQgLyogc3RyIGlwLCBbc3AsICMtNF0hICovKSk7Ci0JCX0gZWxzZSBpZiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKQotCQkJRkFJTF9JRihwdXNoX2luc3QzMihjb21waWxlciwgMHhmODRkMmQwOCAvKiBzdHIgcjIsIFtzcCwgIy04XSEgKi8pKTsKKwljYXNlIFNMSklUX1VESVZNT0Q6CisJY2FzZSBTTEpJVF9TRElWTU9EOgorCWNhc2UgU0xKSVRfVURJVkk6CisJY2FzZSBTTEpJVF9TRElWSToKKwkJU0xKSVRfQ09NUElMRV9BU1NFUlQoKFNMSklUX1VESVZNT0QgJiAweDIpID09IDAgJiYgU0xKSVRfVURJVkkgLSAweDIgPT0gU0xKSVRfVURJVk1PRCwgYmFkX2Rpdl9vcGNvZGVfYXNzaWdubWVudHMpOworCQlTTEpJVF9DT01QSUxFX0FTU0VSVChyZWdfbWFwWzJdID09IDEgJiYgcmVnX21hcFszXSA9PSAyICYmIHJlZ19tYXBbNF0gPT0gMTIsIGJhZF9yZWdpc3Rlcl9tYXBwaW5nKTsKKworCQlzYXZlZF9yZWdfY291bnQgPSAwOworCQlpZiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSA0KQorCQkJc2F2ZWRfcmVnX2xpc3Rbc2F2ZWRfcmVnX2NvdW50KytdID0gMTI7CisJCWlmIChjb21waWxlci0+c2NyYXRjaGVzID49IDMpCisJCQlzYXZlZF9yZWdfbGlzdFtzYXZlZF9yZWdfY291bnQrK10gPSAyOworCQlpZiAob3AgPj0gU0xKSVRfVURJVkkpCisJCQlzYXZlZF9yZWdfbGlzdFtzYXZlZF9yZWdfY291bnQrK10gPSAxOworCisJCWlmIChzYXZlZF9yZWdfY291bnQgPiAwKSB7CisJCQlGQUlMX0lGKHB1c2hfaW5zdDMyKGNvbXBpbGVyLCAweGY4NGQwZDAwIHwgKHNhdmVkX3JlZ19jb3VudCA+PSAzID8gMTYgOiA4KQorCQkJCQkJfCAoc2F2ZWRfcmVnX2xpc3RbMF0gPDwgMTIpIC8qIHN0ciByWCwgW3NwLCAjLTgvLTE2XSEgKi8pKTsKKwkJCWlmIChzYXZlZF9yZWdfY291bnQgPj0gMikgeworCQkJCVNMSklUX0FTU0VSVChzYXZlZF9yZWdfbGlzdFsxXSA8IDgpOworCQkJCUZBSUxfSUYocHVzaF9pbnN0MTYoY29tcGlsZXIsIDB4OTAwMSB8IChzYXZlZF9yZWdfbGlzdFsxXSA8PCA4KSAvKiBzdHIgclgsIFtzcCwgIzRdICovKSk7CisJCQl9CisJCQlpZiAoc2F2ZWRfcmVnX2NvdW50ID49IDMpIHsKKwkJCQlTTEpJVF9BU1NFUlQoc2F2ZWRfcmVnX2xpc3RbMl0gPCA4KTsKKwkJCQlGQUlMX0lGKHB1c2hfaW5zdDE2KGNvbXBpbGVyLCAweDkwMDIgfCAoc2F2ZWRfcmVnX2xpc3RbMl0gPDwgOCkgLyogc3RyIHJYLCBbc3AsICM4XSAqLykpOworCQkJfQorCQl9CisKICNpZiBkZWZpbmVkKF9fR05VQ19fKQogCQlGQUlMX0lGKHNsaml0X2VtaXRfaWp1bXAoY29tcGlsZXIsIFNMSklUX0ZBU1RfQ0FMTCwgU0xKSVRfSU1NLAotCQkJKG9wID09IFNMSklUX0xVRElWID8gU0xKSVRfRlVOQ19PRkZTRVQoX19hZWFiaV91aWRpdm1vZCkgOiBTTEpJVF9GVU5DX09GRlNFVChfX2FlYWJpX2lkaXZtb2QpKSkpOworCQkJKChvcCB8IDB4MikgPT0gU0xKSVRfVURJVkkgPyBTTEpJVF9GVU5DX09GRlNFVChfX2FlYWJpX3VpZGl2bW9kKSA6IFNMSklUX0ZVTkNfT0ZGU0VUKF9fYWVhYmlfaWRpdm1vZCkpKSk7CiAjZWxzZQogI2Vycm9yICJTb2Z0d2FyZSBkaXZtb2QgZnVuY3Rpb25zIGFyZSBuZWVkZWQiCiAjZW5kaWYKLQkJaWYgKGNvbXBpbGVyLT5zY3JhdGNoZXMgPj0gNCkgewotCQkJRkFJTF9JRihwdXNoX2luc3QzMihjb21waWxlciwgMHhmODVkY2IwNCAvKiBsZHIgaXAsIFtzcF0sICM0ICovKSk7Ci0JCQlyZXR1cm4gcHVzaF9pbnN0MzIoY29tcGlsZXIsIDB4Zjg1ZDJiMDQgLyogbGRyIHIyLCBbc3BdLCAjNCAqLyk7Ci0JCX0gZWxzZSBpZiAoY29tcGlsZXItPnNjcmF0Y2hlcyA+PSAzKQotCQkJcmV0dXJuIHB1c2hfaW5zdDMyKGNvbXBpbGVyLCAweGY4NWQyYjA4IC8qIGxkciByMiwgW3NwXSwgIzggKi8pOworCisJCWlmIChzYXZlZF9yZWdfY291bnQgPiAwKSB7CisJCQlpZiAoc2F2ZWRfcmVnX2NvdW50ID49IDMpIHsKKwkJCQlTTEpJVF9BU1NFUlQoc2F2ZWRfcmVnX2xpc3RbMl0gPCA4KTsKKwkJCQlGQUlMX0lGKHB1c2hfaW5zdDE2KGNvbXBpbGVyLCAweDk4MDIgfCAoc2F2ZWRfcmVnX2xpc3RbMl0gPDwgOCkgLyogbGRyIHJYLCBbc3AsICM4XSAqLykpOworCQkJfQorCQkJaWYgKHNhdmVkX3JlZ19jb3VudCA+PSAyKSB7CisJCQkJU0xKSVRfQVNTRVJUKHNhdmVkX3JlZ19saXN0WzFdIDwgOCk7CisJCQkJRkFJTF9JRihwdXNoX2luc3QxNihjb21waWxlciwgMHg5ODAxIHwgKHNhdmVkX3JlZ19saXN0WzFdIDw8IDgpIC8qIGxkciByWCwgW3NwLCAjNF0gKi8pKTsKKwkJCX0KKwkJCXJldHVybiBwdXNoX2luc3QzMihjb21waWxlciwgMHhmODVkMGIwMCB8IChzYXZlZF9yZWdfY291bnQgPj0gMyA/IDE2IDogOCkKKwkJCQkJCXwgKHNhdmVkX3JlZ19saXN0WzBdIDw8IDEyKSAvKiBsZHIgclgsIFtzcF0sICM4LzE2ICovKTsKKwkJfQogCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIAl9CiAKZGlmZiAtLWdpdCBhL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jIGIvZGlzdC9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMKaW5kZXggM2UyYzlmMC4uY2YzNTM1ZiAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMKKysrIGIvZGlzdC9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMKQEAgLTEwNTMsOCArMTA1MywxMSBAQAogI2VuZGlmCiAJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBNRkxPIHwgRChTTEpJVF9SMCksIERSKFNMSklUX1IwKSkpOwogCQlyZXR1cm4gcHVzaF9pbnN0KGNvbXBpbGVyLCBNRkhJIHwgRChTTEpJVF9SMSksIERSKFNMSklUX1IxKSk7Ci0JY2FzZSBTTEpJVF9MVURJVjoKLQljYXNlIFNMSklUX0xTRElWOgorCWNhc2UgU0xKSVRfVURJVk1PRDoKKwljYXNlIFNMSklUX1NESVZNT0Q6CisJY2FzZSBTTEpJVF9VRElWSToKKwljYXNlIFNMSklUX1NESVZJOgorCQlTTEpJVF9DT01QSUxFX0FTU0VSVCgoU0xKSVRfVURJVk1PRCAmIDB4MikgPT0gMCAmJiBTTEpJVF9VRElWSSAtIDB4MiA9PSBTTEpJVF9VRElWTU9ELCBiYWRfZGl2X29wY29kZV9hc3NpZ25tZW50cyk7CiAjaWYgIShkZWZpbmVkIFNMSklUX01JUFNfUjEgJiYgU0xKSVRfTUlQU19SMSkKIAkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE5PUCwgVU5NT1ZBQkxFX0lOUykpOwogCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgTk9QLCBVTk1PVkFCTEVfSU5TKSk7CkBAIC0xMDYyLDE1ICsxMDY1LDE1IEBACiAKICNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfTUlQU182NCAmJiBTTEpJVF9DT05GSUdfTUlQU182NCkKIAkJaWYgKGludF9vcCkKLQkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCAob3AgPT0gU0xKSVRfTFVESVYgPyBESVZVIDogRElWKSB8IFMoU0xKSVRfUjApIHwgVChTTEpJVF9SMSksIE1PVkFCTEVfSU5TKSk7CisJCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKChvcCB8IDB4MikgPT0gU0xKSVRfVURJVkkgPyBESVZVIDogRElWKSB8IFMoU0xKSVRfUjApIHwgVChTTEpJVF9SMSksIE1PVkFCTEVfSU5TKSk7CiAJCWVsc2UKLQkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCAob3AgPT0gU0xKSVRfTFVESVYgPyBERElWVSA6IERESVYpIHwgUyhTTEpJVF9SMCkgfCBUKFNMSklUX1IxKSwgTU9WQUJMRV9JTlMpKTsKKwkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCAoKG9wIHwgMHgyKSA9PSBTTEpJVF9VRElWSSA/IERESVZVIDogRERJVikgfCBTKFNMSklUX1IwKSB8IFQoU0xKSVRfUjEpLCBNT1ZBQkxFX0lOUykpOwogI2Vsc2UKLQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIChvcCA9PSBTTEpJVF9MVURJViA/IERJVlUgOiBESVYpIHwgUyhTTEpJVF9SMCkgfCBUKFNMSklUX1IxKSwgTU9WQUJMRV9JTlMpKTsKKwkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsICgob3AgfCAweDIpID09IFNMSklUX1VESVZJID8gRElWVSA6IERJVikgfCBTKFNMSklUX1IwKSB8IFQoU0xKSVRfUjEpLCBNT1ZBQkxFX0lOUykpOwogI2VuZGlmCiAKIAkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE1GTE8gfCBEKFNMSklUX1IwKSwgRFIoU0xKSVRfUjApKSk7Ci0JCXJldHVybiBwdXNoX2luc3QoY29tcGlsZXIsIE1GSEkgfCBEKFNMSklUX1IxKSwgRFIoU0xKSVRfUjEpKTsKKwkJcmV0dXJuIChvcCA+PSBTTEpJVF9VRElWSSkgPyBTTEpJVF9TVUNDRVNTIDogcHVzaF9pbnN0KGNvbXBpbGVyLCBNRkhJIHwgRChTTEpJVF9SMSksIERSKFNMSklUX1IxKSk7CiAJfQogCiAJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CmRpZmYgLS1naXQgYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlUFBDX2NvbW1vbi5jIGIvZGlzdC9zbGppdC9zbGppdE5hdGl2ZVBQQ19jb21tb24uYwppbmRleCAwOGQ1MzU2Li5iNmEwNDNmIDEwMDY0NAotLS0gYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlUFBDX2NvbW1vbi5jCisrKyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVQUENfY29tbW9uLmMKQEAgLTEyNjcsMjIgKzEyNjcsMjMgQEAKIAkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE1VTExXIHwgRChTTEpJVF9SMCkgfCBBKFRNUF9SRUcxKSB8IEIoU0xKSVRfUjEpKSk7CiAJCXJldHVybiBwdXNoX2luc3QoY29tcGlsZXIsIChvcCA9PSBTTEpJVF9MVU1VTCA/IE1VTEhXVSA6IE1VTEhXKSB8IEQoU0xKSVRfUjEpIHwgQShUTVBfUkVHMSkgfCBCKFNMSklUX1IxKSk7CiAjZW5kaWYKLQljYXNlIFNMSklUX0xVRElWOgotCWNhc2UgU0xKSVRfTFNESVY6CisJY2FzZSBTTEpJVF9VRElWTU9EOgorCWNhc2UgU0xKSVRfU0RJVk1PRDoKIAkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE9SIHwgUyhTTEpJVF9SMCkgfCBBKFRNUF9SRUcxKSB8IEIoU0xKSVRfUjApKSk7CiAjaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1BQQ182NCAmJiBTTEpJVF9DT05GSUdfUFBDXzY0KQotCQlpZiAoaW50X29wKSB7Ci0JCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKG9wID09IFNMSklUX0xVRElWID8gRElWV1UgOiBESVZXKSB8IEQoU0xKSVRfUjApIHwgQShUTVBfUkVHMSkgfCBCKFNMSklUX1IxKSkpOwotCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE1VTExXIHwgRChTTEpJVF9SMSkgfCBBKFNMSklUX1IwKSB8IEIoU0xKSVRfUjEpKSk7Ci0JCX0gZWxzZSB7Ci0JCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKG9wID09IFNMSklUX0xVRElWID8gRElWRFUgOiBESVZEKSB8IEQoU0xKSVRfUjApIHwgQShUTVBfUkVHMSkgfCBCKFNMSklUX1IxKSkpOwotCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIE1VTExEIHwgRChTTEpJVF9SMSkgfCBBKFNMSklUX1IwKSB8IEIoU0xKSVRfUjEpKSk7Ci0JCX0KLQkJcmV0dXJuIHB1c2hfaW5zdChjb21waWxlciwgU1VCRiB8IEQoU0xKSVRfUjEpIHwgQShTTEpJVF9SMSkgfCBCKFRNUF9SRUcxKSk7CisJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCAoaW50X29wID8gKG9wID09IFNMSklUX1VESVZNT0QgPyBESVZXVSA6IERJVlcpIDogKG9wID09IFNMSklUX1VESVZNT0QgPyBESVZEVSA6IERJVkQpKSB8IEQoU0xKSVRfUjApIHwgQShTTEpJVF9SMCkgfCBCKFNMSklUX1IxKSkpOworCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKGludF9vcCA/IE1VTExXIDogTVVMTEQpIHwgRChTTEpJVF9SMSkgfCBBKFNMSklUX1IwKSB8IEIoU0xKSVRfUjEpKSk7CiAjZWxzZQotCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKG9wID09IFNMSklUX0xVRElWID8gRElWV1UgOiBESVZXKSB8IEQoU0xKSVRfUjApIHwgQShUTVBfUkVHMSkgfCBCKFNMSklUX1IxKSkpOworCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgKG9wID09IFNMSklUX1VESVZNT0QgPyBESVZXVSA6IERJVlcpIHwgRChTTEpJVF9SMCkgfCBBKFNMSklUX1IwKSB8IEIoU0xKSVRfUjEpKSk7CiAJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBNVUxMVyB8IEQoU0xKSVRfUjEpIHwgQShTTEpJVF9SMCkgfCBCKFNMSklUX1IxKSkpOworI2VuZGlmCiAJCXJldHVybiBwdXNoX2luc3QoY29tcGlsZXIsIFNVQkYgfCBEKFNMSklUX1IxKSB8IEEoU0xKSVRfUjEpIHwgQihUTVBfUkVHMSkpOworCWNhc2UgU0xKSVRfVURJVkk6CisJY2FzZSBTTEpJVF9TRElWSToKKyNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfUFBDXzY0ICYmIFNMSklUX0NPTkZJR19QUENfNjQpCisJCXJldHVybiBwdXNoX2luc3QoY29tcGlsZXIsIChpbnRfb3AgPyAob3AgPT0gU0xKSVRfVURJVkkgPyBESVZXVSA6IERJVlcpIDogKG9wID09IFNMSklUX1VESVZJID8gRElWRFUgOiBESVZEKSkgfCBEKFNMSklUX1IwKSB8IEEoU0xKSVRfUjApIHwgQihTTEpJVF9SMSkpOworI2Vsc2UKKwkJcmV0dXJuIHB1c2hfaW5zdChjb21waWxlciwgKG9wID09IFNMSklUX1VESVZJID8gRElWV1UgOiBESVZXKSB8IEQoU0xKSVRfUjApIHwgQShTTEpJVF9SMCkgfCBCKFNMSklUX1IxKSk7CiAjZW5kaWYKIAl9CiAKZGlmZiAtLWdpdCBhL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVTUEFSQ19jb21tb24uYyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVTUEFSQ19jb21tb24uYwppbmRleCAwYjE5MjdhLi4zMjdjNDI2IDEwMDY0NAotLS0gYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlU1BBUkNfY29tbW9uLmMKKysrIGIvZGlzdC9zbGppdC9zbGppdE5hdGl2ZVNQQVJDX2NvbW1vbi5jCkBAIC03NzcsMjAgKzc3NywyNSBAQAogI2Vsc2UKICNlcnJvciAiSW1wbGVtZW50YXRpb24gcmVxdWlyZWQiCiAjZW5kaWYKLQljYXNlIFNMSklUX0xVRElWOgotCWNhc2UgU0xKSVRfTFNESVY6CisJY2FzZSBTTEpJVF9VRElWTU9EOgorCWNhc2UgU0xKSVRfU0RJVk1PRDoKKwljYXNlIFNMSklUX1VESVZJOgorCWNhc2UgU0xKSVRfU0RJVkk6CisJCVNMSklUX0NPTVBJTEVfQVNTRVJUKChTTEpJVF9VRElWTU9EICYgMHgyKSA9PSAwICYmIFNMSklUX1VESVZJIC0gMHgyID09IFNMSklUX1VESVZNT0QsIGJhZF9kaXZfb3Bjb2RlX2Fzc2lnbm1lbnRzKTsKICNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfU1BBUkNfMzIgJiYgU0xKSVRfQ09ORklHX1NQQVJDXzMyKQotCQlpZiAob3AgPT0gU0xKSVRfTFVESVYpCisJCWlmICgob3AgfCAweDIpID09IFNMSklUX1VESVZJKQogCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIFdSWSB8IFMxKDApLCBNT1ZBQkxFX0lOUykpOwogCQllbHNlIHsKIAkJCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBTUkEgfCBEKFRNUF9SRUcxKSB8IFMxKFNMSklUX1IwKSB8IElNTSgzMSksIERSKFRNUF9SRUcxKSkpOwogCQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIFdSWSB8IFMxKFRNUF9SRUcxKSwgTU9WQUJMRV9JTlMpKTsKIAkJfQotCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgT1IgfCBEKFRNUF9SRUcyKSB8IFMxKDApIHwgUzIoU0xKSVRfUjApLCBEUihUTVBfUkVHMikpKTsKLQkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIChvcCA9PSBTTEpJVF9MVURJViA/IFVESVYgOiBTRElWKSB8IEQoU0xKSVRfUjApIHwgUzEoU0xKSVRfUjApIHwgUzIoU0xKSVRfUjEpLCBEUihTTEpJVF9SMCkpKTsKKwkJaWYgKG9wIDw9IFNMSklUX1NESVZNT0QpCisJCQlGQUlMX0lGKHB1c2hfaW5zdChjb21waWxlciwgT1IgfCBEKFRNUF9SRUcyKSB8IFMxKDApIHwgUzIoU0xKSVRfUjApLCBEUihUTVBfUkVHMikpKTsKKwkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsICgob3AgfCAweDIpID09IFNMSklUX1VESVZJID8gVURJViA6IFNESVYpIHwgRChTTEpJVF9SMCkgfCBTMShTTEpJVF9SMCkgfCBTMihTTEpJVF9SMSksIERSKFNMSklUX1IwKSkpOworCQlpZiAob3AgPj0gU0xKSVRfVURJVkkpCisJCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIAkJRkFJTF9JRihwdXNoX2luc3QoY29tcGlsZXIsIFNNVUwgfCBEKFNMSklUX1IxKSB8IFMxKFNMSklUX1IwKSB8IFMyKFNMSklUX1IxKSwgRFIoU0xKSVRfUjEpKSk7Ci0JCUZBSUxfSUYocHVzaF9pbnN0KGNvbXBpbGVyLCBTVUIgfCBEKFNMSklUX1IxKSB8IFMxKFRNUF9SRUcyKSB8IFMyKFNMSklUX1IxKSwgRFIoU0xKSVRfUjEpKSk7Ci0JCXJldHVybiBTTEpJVF9TVUNDRVNTOworCQlyZXR1cm4gcHVzaF9pbnN0KGNvbXBpbGVyLCBTVUIgfCBEKFNMSklUX1IxKSB8IFMxKFRNUF9SRUcyKSB8IFMyKFNMSklUX1IxKSwgRFIoU0xKSVRfUjEpKTsKICNlbHNlCiAjZXJyb3IgIkltcGxlbWVudGF0aW9uIHJlcXVpcmVkIgogI2VuZGlmCmRpZmYgLS1naXQgYS9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlVElMRUdYXzY0LmMgYi9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlVElMRUdYXzY0LmMKaW5kZXggMWQ2YWE1YS4uNGQ0MDM5MiAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdE5hdGl2ZVRJTEVHWF82NC5jCisrKyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVUSUxFR1hfNjQuYwpAQCAtMzUsMjEgKzM1LDIxIEBACiAjZGVmaW5lIFNJTU1fMTZCSVRfTUlOICgtMHg4MDAwKQogI2RlZmluZSBTSU1NXzE3QklUX01BWCAoMHhmZmZmKQogI2RlZmluZSBTSU1NXzE3QklUX01JTiAoLTB4MTAwMDApCi0jZGVmaW5lIFNJTU1fMzJCSVRfTUlOICgtMHg4MDAwMDAwMCkKICNkZWZpbmUgU0lNTV8zMkJJVF9NQVggKDB4N2ZmZmZmZmYpCi0jZGVmaW5lIFNJTU1fNDhCSVRfTUlOICgweDgwMDAwMDAwMDAwMEwpCisjZGVmaW5lIFNJTU1fMzJCSVRfTUlOICgtMHg3ZmZmZmZmZiAtIDEpCiAjZGVmaW5lIFNJTU1fNDhCSVRfTUFYICgweDdmZmZmZmZmMDAwMEwpCisjZGVmaW5lIFNJTU1fNDhCSVRfTUlOICgtMHg4MDAwMDAwMDAwMDBMKQogI2RlZmluZSBJTU0xNihpbW0pICgoaW1tKSAmIDB4ZmZmZikKIAogI2RlZmluZSBVSU1NXzE2QklUX01BWCAoMHhmZmZmKQogCi0jZGVmaW5lIFRNUF9SRUcxIChTTEpJVF9OT19SRUdJU1RFUlMgKyAxKQotI2RlZmluZSBUTVBfUkVHMiAoU0xKSVRfTk9fUkVHSVNURVJTICsgMikKLSNkZWZpbmUgVE1QX1JFRzMgKFNMSklUX05PX1JFR0lTVEVSUyArIDMpCi0jZGVmaW5lIEFERFJfVE1QIChTTEpJVF9OT19SRUdJU1RFUlMgKyA0KQorI2RlZmluZSBUTVBfUkVHMSAoU0xKSVRfTlVNQkVSX09GX1JFR0lTVEVSUyArIDIpCisjZGVmaW5lIFRNUF9SRUcyIChTTEpJVF9OVU1CRVJfT0ZfUkVHSVNURVJTICsgMykKKyNkZWZpbmUgVE1QX1JFRzMgKFNMSklUX05VTUJFUl9PRl9SRUdJU1RFUlMgKyA0KQorI2RlZmluZSBBRERSX1RNUCAoU0xKSVRfTlVNQkVSX09GX1JFR0lTVEVSUyArIDUpCiAjZGVmaW5lIFBJQ19BRERSX1JFRyBUTVBfUkVHMgogCi1zdGF0aWMgU0xKSVRfQ09OU1Qgc2xqaXRfdWIgcmVnX21hcFtTTEpJVF9OT19SRUdJU1RFUlMgKyA1XSA9IHsKK3N0YXRpYyBTTEpJVF9DT05TVCBzbGppdF91YiByZWdfbWFwW1NMSklUX05VTUJFUl9PRl9SRUdJU1RFUlMgKyA2XSA9IHsKIAk2MywgMCwgMSwgMiwgMywgNCwgMzAsIDMxLCAzMiwgMzMsIDM0LCA1NCwgNSwgMTYsIDYsIDcKIH07CiAKQEAgLTU4LDExICs1OCw2IEBACiAjZGVmaW5lIFRNUF9SRUcyX21hcHBlZCAxNgogI2RlZmluZSBUTVBfUkVHM19tYXBwZWQgNgogI2RlZmluZSBBRERSX1RNUF9tYXBwZWQgNwotI2RlZmluZSBTTEpJVF9TQVZFRF9SRUcxX21hcHBlZCAzMAotI2RlZmluZSBTTEpJVF9TQVZFRF9SRUcyX21hcHBlZCAzMQotI2RlZmluZSBTTEpJVF9TQVZFRF9SRUczX21hcHBlZCAzMgotI2RlZmluZSBTTEpJVF9TQVZFRF9FUkVHMV9tYXBwZWQgMzMKLSNkZWZpbmUgU0xKSVRfU0FWRURfRVJFRzJfbWFwcGVkIDM0CiAKIC8qIEZsYWdzIGFyZSBrZWVwdCBpbiB2b2xhdGlsZSByZWdpc3RlcnMuICovCiAjZGVmaW5lIEVRVUFMX0ZMQUcgOApAQCAtMzk5LDYgKzM5NCw5IEBACiAjZGVmaW5lIFNVQihkc3QsIHNyY2EsIHNyY2IpIFwKIAlwdXNoXzNfYnVmZmVyKGNvbXBpbGVyLCBUSUxFR1hfT1BDX1NVQiwgZHN0LCBzcmNhLCBzcmNiLCBfX0xJTkVfXykKIAorI2RlZmluZSBNVUwoZHN0LCBzcmNhLCBzcmNiKSBcCisJcHVzaF8zX2J1ZmZlcihjb21waWxlciwgVElMRUdYX09QQ19NVUxYLCBkc3QsIHNyY2EsIHNyY2IsIF9fTElORV9fKQorCiAjZGVmaW5lIE5PUihkc3QsIHNyY2EsIHNyY2IpIFwKIAlwdXNoXzNfYnVmZmVyKGNvbXBpbGVyLCBUSUxFR1hfT1BDX05PUiwgZHN0LCBzcmNhLCBzcmNiLCBfX0xJTkVfXykKIApAQCAtNTQ3LDggKzU0NSw4IEBACiAKIAljb25zdCBzdHJ1Y3QgRm9ybWF0KiBtYXRjaCA9IE5VTEw7CiAJY29uc3Qgc3RydWN0IEZvcm1hdCAqYiA9IE5VTEw7Ci0JdW5zaWduZWQgaW50IGkgPSAwOwotCWZvciAoaTsgaSA8IHNpemVvZiBmb3JtYXRzIC8gc2l6ZW9mIGZvcm1hdHNbMF07IGkrKykgeworCXVuc2lnbmVkIGludCBpOworCWZvciAoaSA9IDA7IGkgPCBzaXplb2YgZm9ybWF0cyAvIHNpemVvZiBmb3JtYXRzWzBdOyBpKyspIHsKIAkJYiA9ICZmb3JtYXRzW2ldOwogCQlpZiAoKGItPnBpcGVfbWFzayAmIGNvbXBhdGlibGVfcGlwZXMpID09IGItPnBpcGVfbWFzaykgewogCQkJbWF0Y2ggPSBiOwpAQCAtNjI1LDcgKzYyMyw2IEBACiAKIHN0YXRpYyBzbGppdF9zaSB1cGRhdGVfYnVmZmVyKHN0cnVjdCBzbGppdF9jb21waWxlciAqY29tcGlsZXIpCiB7Ci0JaW50IGNvdW50OwogCWludCBpOwogCWludCBvcmlnX2luZGV4ID0gaW5zdF9idWZfaW5kZXg7CiAJc3RydWN0IGppdF9pbnN0ciBpbnN0MCA9IGluc3RfYnVmWzBdOwpAQCAtNzM4LDggKzczNSwxMCBAQAogCiBzdGF0aWMgc2xqaXRfc2kgZmx1c2hfYnVmZmVyKHN0cnVjdCBzbGppdF9jb21waWxlciAqY29tcGlsZXIpCiB7Ci0Jd2hpbGUgKGluc3RfYnVmX2luZGV4ICE9IDApCi0JCXVwZGF0ZV9idWZmZXIoY29tcGlsZXIpOworCXdoaWxlIChpbnN0X2J1Zl9pbmRleCAhPSAwKSB7CisJCUZBSUxfSUYodXBkYXRlX2J1ZmZlcihjb21waWxlcikpOworCX0KKwlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIH0KIAogc3RhdGljIHNsaml0X3NpIHB1c2hfNF9idWZmZXIoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwgdGlsZWd4X21uZW1vbmljIG9wYywgaW50IG9wMCwgaW50IG9wMSwgaW50IG9wMiwgaW50IG9wMywgaW50IGxpbmUpCkBAIC03ODcsNiArNzg2LDcgQEAKIAljYXNlIFRJTEVHWF9PUENfQUREOgogCWNhc2UgVElMRUdYX09QQ19BTkQ6CiAJY2FzZSBUSUxFR1hfT1BDX1NVQjoKKwljYXNlIFRJTEVHWF9PUENfTVVMWDoKIAljYXNlIFRJTEVHWF9PUENfT1I6CiAJY2FzZSBUSUxFR1hfT1BDX1hPUjoKIAljYXNlIFRJTEVHWF9PUENfTk9SOgpAQCAtOTA1LDcgKzkwNSw2IEBACiAJc2xqaXRfc3cgZGlmZjsKIAlzbGppdF91dyB0YXJnZXRfYWRkcjsKIAlzbGppdF9pbnMgKmluc3Q7Ci0Jc2xqaXRfaW5zIHNhdmVkX2luc3Q7CiAKIAlpZiAoanVtcC0+ZmxhZ3MgJiBTTEpJVF9SRVdSSVRBQkxFX0pVTVApCiAJCXJldHVybiBjb2RlX3B0cjsKQEAgLTEwMDksNyArMTAwOCw3IEBACiAJc3RydWN0IHNsaml0X2NvbnN0ICpjb25zdF87CiAKIAlDSEVDS19FUlJPUl9QVFIoKTsKLQljaGVja19zbGppdF9nZW5lcmF0ZV9jb2RlKGNvbXBpbGVyKTsKKwlDSEVDS19QVFIoY2hlY2tfc2xqaXRfZ2VuZXJhdGVfY29kZShjb21waWxlcikpOwogCXJldmVyc2VfYnVmKGNvbXBpbGVyKTsKIAogCWNvZGUgPSAoc2xqaXRfaW5zICopU0xKSVRfTUFMTE9DX0VYRUMoY29tcGlsZXItPnNpemUgKiBzaXplb2Yoc2xqaXRfaW5zKSk7CkBAIC0xMTc4LDEzICsxMTc3LDEzIEBACiAJc2xqaXRfc2kgZnNjcmF0Y2hlcywgc2xqaXRfc2kgZnNhdmVkcywgc2xqaXRfc2kgbG9jYWxfc2l6ZSkKIHsKIAlzbGppdF9pbnMgYmFzZTsKLQlzbGppdF9pbnMgYnVuZGxlID0gMDsKLQorCXNsaml0X3NpIGksIHRtcDsKKyAKIAlDSEVDS19FUlJPUigpOwotCWNoZWNrX3Nsaml0X2VtaXRfZW50ZXIoY29tcGlsZXIsIG9wdGlvbnMsIGFyZ3MsIHNjcmF0Y2hlcywgc2F2ZWRzLCBmc2NyYXRjaGVzLCBmc2F2ZWRzLCBsb2NhbF9zaXplKTsKKwlDSEVDSyhjaGVja19zbGppdF9lbWl0X2VudGVyKGNvbXBpbGVyLCBvcHRpb25zLCBhcmdzLCBzY3JhdGNoZXMsIHNhdmVkcywgZnNjcmF0Y2hlcywgZnNhdmVkcywgbG9jYWxfc2l6ZSkpOwogCXNldF9lbWl0X2VudGVyKGNvbXBpbGVyLCBvcHRpb25zLCBhcmdzLCBzY3JhdGNoZXMsIHNhdmVkcywgZnNjcmF0Y2hlcywgZnNhdmVkcywgbG9jYWxfc2l6ZSk7CiAKLQlsb2NhbF9zaXplICs9IChzYXZlZHMgKyAxKSAqIHNpemVvZihzbGppdF9zdyk7CisJbG9jYWxfc2l6ZSArPSBHRVRfU0FWRURfUkVHSVNURVJTX1NJWkUoc2NyYXRjaGVzLCBzYXZlZHMsIDEpOwogCWxvY2FsX3NpemUgPSAobG9jYWxfc2l6ZSArIDcpICYgfjc7CiAJY29tcGlsZXItPmxvY2FsX3NpemUgPSBsb2NhbF9zaXplOwogCkBAIC0xMjAwLDU2ICsxMTk5LDUyIEBACiAJCWxvY2FsX3NpemUgPSAwOwogCX0KIAorCS8qIFNhdmUgdGhlIHJldHVybiBhZGRyZXNzLiAqLwogCUZBSUxfSUYoQURETEkoQUREUl9UTVBfbWFwcGVkLCBiYXNlLCBsb2NhbF9zaXplIC0gOCkpOwogCUZBSUxfSUYoU1RfQUREKEFERFJfVE1QX21hcHBlZCwgUkEsIC04KSk7CiAKLQlpZiAoc2F2ZWRzID49IDEpCi0JCUZBSUxfSUYoU1RfQUREKEFERFJfVE1QX21hcHBlZCwgU0xKSVRfU0FWRURfUkVHMV9tYXBwZWQsIC04KSk7CisJLyogU2F2ZSB0aGUgUyByZWdpc3RlcnMuICovCisJdG1wID0gc2F2ZWRzIDwgU0xKSVRfTlVNQkVSX09GX1NBVkVEX1JFR0lTVEVSUyA/IChTTEpJVF9TMCArIDEgLSBzYXZlZHMpIDogU0xKSVRfRklSU1RfU0FWRURfUkVHOworCWZvciAoaSA9IFNMSklUX1MwOyBpID49IHRtcDsgaS0tKSB7CisJCUZBSUxfSUYoU1RfQUREKEFERFJfVE1QX21hcHBlZCwgcmVnX21hcFtpXSwgLTgpKTsKKwl9CiAKLQlpZiAoc2F2ZWRzID49IDIpCi0JCUZBSUxfSUYoU1RfQUREKEFERFJfVE1QX21hcHBlZCwgU0xKSVRfU0FWRURfUkVHMl9tYXBwZWQsIC04KSk7CisJLyogU2F2ZSB0aGUgUiByZWdpc3RlcnMgdGhhdCBuZWVkIHRvIGJlIHJlc2VydmVkLiAqLworCWZvciAoaSA9IHNjcmF0Y2hlczsgaSA+PSBTTEpJVF9GSVJTVF9TQVZFRF9SRUc7IGktLSkgeworCQlGQUlMX0lGKFNUX0FERChBRERSX1RNUF9tYXBwZWQsIHJlZ19tYXBbaV0sIC04KSk7CisJfQogCi0JaWYgKHNhdmVkcyA+PSAzKQotCQlGQUlMX0lGKFNUX0FERChBRERSX1RNUF9tYXBwZWQsIFNMSklUX1NBVkVEX1JFRzNfbWFwcGVkLCAtOCkpOwotCi0JaWYgKHNhdmVkcyA+PSA0KQotCQlGQUlMX0lGKFNUX0FERChBRERSX1RNUF9tYXBwZWQsIFNMSklUX1NBVkVEX0VSRUcxX21hcHBlZCwgLTgpKTsKLQotCWlmIChzYXZlZHMgPj0gNSkKLQkJRkFJTF9JRihTVF9BREQoQUREUl9UTVBfbWFwcGVkLCBTTEpJVF9TQVZFRF9FUkVHMl9tYXBwZWQsIC04KSk7Ci0KLQlpZiAoYXJncyA+PSAxKQotCQlGQUlMX0lGKEFERChTTEpJVF9TQVZFRF9SRUcxX21hcHBlZCwgMCwgWkVSTykpOwotCi0JaWYgKGFyZ3MgPj0gMikKLQkJRkFJTF9JRihBREQoU0xKSVRfU0FWRURfUkVHMl9tYXBwZWQsIDEsIFpFUk8pKTsKLQotCWlmIChhcmdzID49IDMpCi0JCUZBSUxfSUYoQUREKFNMSklUX1NBVkVEX1JFRzNfbWFwcGVkLCAyLCBaRVJPKSk7CisJLyogTW92ZSB0aGUgYXJndW1lbnRzIHRvIFMgcmVnaXN0ZXJzLiAqLworCWZvciAoaSA9IDA7IGkgPCBhcmdzOyBpKyspIHsKKwkJRkFJTF9JRihBREQocmVnX21hcFtTTEpJVF9TMCAtIGldLCBpLCBaRVJPKSk7CisJfQogCiAJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiB9CiAKLVNMSklUX0FQSV9GVU5DX0FUVFJJQlVURSB2b2lkIHNsaml0X3NldF9jb250ZXh0KHN0cnVjdCBzbGppdF9jb21waWxlciAqY29tcGlsZXIsCitTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfc2V0X2NvbnRleHQoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwKIAlzbGppdF9zaSBvcHRpb25zLCBzbGppdF9zaSBhcmdzLCBzbGppdF9zaSBzY3JhdGNoZXMsIHNsaml0X3NpIHNhdmVkcywKIAlzbGppdF9zaSBmc2NyYXRjaGVzLCBzbGppdF9zaSBmc2F2ZWRzLCBzbGppdF9zaSBsb2NhbF9zaXplKQogewotCUNIRUNLX0VSUk9SX1ZPSUQoKTsKLQljaGVja19zbGppdF9zZXRfY29udGV4dChjb21waWxlciwgb3B0aW9ucywgYXJncywgc2NyYXRjaGVzLCBzYXZlZHMsIGZzY3JhdGNoZXMsIGZzYXZlZHMsIGxvY2FsX3NpemUpOworCUNIRUNLX0VSUk9SKCk7CisJQ0hFQ0soY2hlY2tfc2xqaXRfc2V0X2NvbnRleHQoY29tcGlsZXIsIG9wdGlvbnMsIGFyZ3MsIHNjcmF0Y2hlcywgc2F2ZWRzLCBmc2NyYXRjaGVzLCBmc2F2ZWRzLCBsb2NhbF9zaXplKSk7CiAJc2V0X3NldF9jb250ZXh0KGNvbXBpbGVyLCBvcHRpb25zLCBhcmdzLCBzY3JhdGNoZXMsIHNhdmVkcywgZnNjcmF0Y2hlcywgZnNhdmVkcywgbG9jYWxfc2l6ZSk7CiAKLQlsb2NhbF9zaXplICs9IChzYXZlZHMgKyAxKSAqIHNpemVvZihzbGppdF9zdyk7CisJbG9jYWxfc2l6ZSArPSBHRVRfU0FWRURfUkVHSVNURVJTX1NJWkUoc2NyYXRjaGVzLCBzYXZlZHMsIDEpOwogCWNvbXBpbGVyLT5sb2NhbF9zaXplID0gKGxvY2FsX3NpemUgKyA3KSAmIH43OworCisJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiB9CiAKIFNMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9lbWl0X3JldHVybihzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLCBzbGppdF9zaSBvcCwgc2xqaXRfc2kgc3JjLCBzbGppdF9zdyBzcmN3KQogewogCXNsaml0X3NpIGxvY2FsX3NpemU7CiAJc2xqaXRfaW5zIGJhc2U7Ci0JaW50IGFkZHJfaW5pdGlhbGl6ZWQgPSAwOworCXNsaml0X3NpIGksIHRtcDsKKwlzbGppdF9zaSBzYXZlZHM7CiAKIAlDSEVDS19FUlJPUigpOwotCWNoZWNrX3Nsaml0X2VtaXRfcmV0dXJuKGNvbXBpbGVyLCBvcCwgc3JjLCBzcmN3KTsKKwlDSEVDSyhjaGVja19zbGppdF9lbWl0X3JldHVybihjb21waWxlciwgb3AsIHNyYywgc3JjdykpOwogCiAJRkFJTF9JRihlbWl0X21vdl9iZWZvcmVfcmV0dXJuKGNvbXBpbGVyLCBvcCwgc3JjLCBzcmN3KSk7CiAKQEAgLTEyNjMsNTAgKzEyNTgsMjAgQEAKIAkJbG9jYWxfc2l6ZSA9IDA7CiAJfQogCisJLyogUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuICovCiAJRkFJTF9JRihBRERMSShBRERSX1RNUF9tYXBwZWQsIGJhc2UsIGxvY2FsX3NpemUgLSA4KSk7Ci0JRkFJTF9JRihMRChSQSwgQUREUl9UTVBfbWFwcGVkKSk7CisJRkFJTF9JRihMRF9BREQoUkEsIEFERFJfVE1QX21hcHBlZCwgLTgpKTsKIAotCWlmIChjb21waWxlci0+c2F2ZWRzID49IDUpIHsKLQkJRkFJTF9JRihBRERMSShBRERSX1RNUF9tYXBwZWQsIGJhc2UsIGxvY2FsX3NpemUgLSA0OCkpOwotCQlhZGRyX2luaXRpYWxpemVkID0gMTsKLQotCQlGQUlMX0lGKExEX0FERChTTEpJVF9TQVZFRF9FUkVHMl9tYXBwZWQsIEFERFJfVE1QX21hcHBlZCwgOCkpOworCS8qIFJlc3RvcmUgdGhlIFMgcmVnaXN0ZXJzLiAqLworCXNhdmVkcyA9IGNvbXBpbGVyLT5zYXZlZHM7CisJdG1wID0gc2F2ZWRzIDwgU0xKSVRfTlVNQkVSX09GX1NBVkVEX1JFR0lTVEVSUyA/IChTTEpJVF9TMCArIDEgLSBzYXZlZHMpIDogU0xKSVRfRklSU1RfU0FWRURfUkVHOworCWZvciAoaSA9IFNMSklUX1MwOyBpID49IHRtcDsgaS0tKSB7CisJCUZBSUxfSUYoTERfQUREKHJlZ19tYXBbaV0sIEFERFJfVE1QX21hcHBlZCwgLTgpKTsKIAl9CiAKLQlpZiAoY29tcGlsZXItPnNhdmVkcyA+PSA0KSB7Ci0JCWlmIChhZGRyX2luaXRpYWxpemVkID09IDApIHsKLQkJCUZBSUxfSUYoQURETEkoQUREUl9UTVBfbWFwcGVkLCBiYXNlLCBsb2NhbF9zaXplIC0gNDApKTsKLQkJCWFkZHJfaW5pdGlhbGl6ZWQgPSAxOwotCQl9Ci0KLQkJRkFJTF9JRihMRF9BREQoU0xKSVRfU0FWRURfRVJFRzFfbWFwcGVkLCBBRERSX1RNUF9tYXBwZWQsIDgpKTsKLQl9Ci0KLQlpZiAoY29tcGlsZXItPnNhdmVkcyA+PSAzKSB7Ci0JCWlmIChhZGRyX2luaXRpYWxpemVkID09IDApIHsKLQkJCUZBSUxfSUYoQURETEkoQUREUl9UTVBfbWFwcGVkLCBiYXNlLCBsb2NhbF9zaXplIC0gMzIpKTsKLQkJCWFkZHJfaW5pdGlhbGl6ZWQgPSAxOwotCQl9Ci0KLQkJRkFJTF9JRihMRF9BREQoU0xKSVRfU0FWRURfUkVHM19tYXBwZWQsIEFERFJfVE1QX21hcHBlZCwgOCkpOwotCX0KLQotCWlmIChjb21waWxlci0+c2F2ZWRzID49IDIpIHsKLQkJaWYgKGFkZHJfaW5pdGlhbGl6ZWQgPT0gMCkgewotCQkJRkFJTF9JRihBRERMSShBRERSX1RNUF9tYXBwZWQsIGJhc2UsIGxvY2FsX3NpemUgLSAyNCkpOwotCQkJYWRkcl9pbml0aWFsaXplZCA9IDE7Ci0JCX0KLQotCQlGQUlMX0lGKExEX0FERChTTEpJVF9TQVZFRF9SRUcyX21hcHBlZCwgQUREUl9UTVBfbWFwcGVkLCA4KSk7Ci0JfQotCi0JaWYgKGNvbXBpbGVyLT5zYXZlZHMgPj0gMSkgewotCQlpZiAoYWRkcl9pbml0aWFsaXplZCA9PSAwKSB7Ci0JCQlGQUlMX0lGKEFERExJKEFERFJfVE1QX21hcHBlZCwgYmFzZSwgbG9jYWxfc2l6ZSAtIDE2KSk7Ci0JCQkvKiBhZGRyX2luaXRpYWxpemVkID0gMTsgbm8gbmVlZCB0byBpbml0aWFsaXplIGFzIGl0J3MgdGhlIGxhc3Qgb25lLiAqLwotCQl9Ci0KLQkJRkFJTF9JRihMRF9BREQoU0xKSVRfU0FWRURfUkVHMV9tYXBwZWQsIEFERFJfVE1QX21hcHBlZCwgOCkpOworCS8qIFJlc3RvcmUgdGhlIFIgcmVnaXN0ZXJzIHRoYXQgbmVlZCB0byBiZSByZXNlcnZlZC4gKi8KKwlmb3IgKGkgPSBjb21waWxlci0+c2NyYXRjaGVzOyBpID49IFNMSklUX0ZJUlNUX1NBVkVEX1JFRzsgaS0tKSB7CisJCUZBSUxfSUYoTERfQUREKHJlZ19tYXBbaV0sIEFERFJfVE1QX21hcHBlZCwgLTgpKTsKIAl9CiAKIAlpZiAoY29tcGlsZXItPmxvY2FsX3NpemUgPD0gU0lNTV8xNkJJVF9NQVgpCkBAIC0xNTg1LDcgKzE1NTAsNyBAQAogU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHNsaml0X3NpIHNsaml0X2VtaXRfZmFzdF9lbnRlcihzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLCBzbGppdF9zaSBkc3QsIHNsaml0X3N3IGRzdHcpCiB7CiAJQ0hFQ0tfRVJST1IoKTsKLQljaGVja19zbGppdF9lbWl0X2Zhc3RfZW50ZXIoY29tcGlsZXIsIGRzdCwgZHN0dyk7CisJQ0hFQ0soY2hlY2tfc2xqaXRfZW1pdF9mYXN0X2VudGVyKGNvbXBpbGVyLCBkc3QsIGRzdHcpKTsKIAlBREpVU1RfTE9DQUxfT0ZGU0VUKGRzdCwgZHN0dyk7CiAKIAkvKiBGb3IgVU5VU0VEIGRzdC4gVW5jb21tb24sIGJ1dCBwb3NzaWJsZS4gKi8KQEAgLTE2MDIsNyArMTU2Nyw3IEBACiBTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfZW1pdF9mYXN0X3JldHVybihzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLCBzbGppdF9zaSBzcmMsIHNsaml0X3N3IHNyY3cpCiB7CiAJQ0hFQ0tfRVJST1IoKTsKLQljaGVja19zbGppdF9lbWl0X2Zhc3RfcmV0dXJuKGNvbXBpbGVyLCBzcmMsIHNyY3cpOworCUNIRUNLKGNoZWNrX3Nsaml0X2VtaXRfZmFzdF9yZXR1cm4oY29tcGlsZXIsIHNyYywgc3JjdykpOwogCUFESlVTVF9MT0NBTF9PRkZTRVQoc3JjLCBzcmN3KTsKIAogCWlmIChGQVNUX0lTX1JFRyhzcmMpKQpAQCAtMTYzNiw5ICsxNjAxLDExIEBACiAJCQlpZiAob3AgPT0gU0xKSVRfTU9WX1NJKQogCQkJCXJldHVybiBCRkVYVFMocmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzJdLCAwLCAzMSk7CiAKLQkJcmV0dXJuIEJGRVhUVShyZWdfbWFwW2RzdF0sIHJlZ19tYXBbc3JjMl0sIDAsIDMxKTsKLQkJfSBlbHNlIGlmIChkc3QgIT0gc3JjMikKLQkJCVNMSklUX0FTU0VSVF9TVE9QKCk7CisJCQlyZXR1cm4gQkZFWFRVKHJlZ19tYXBbZHN0XSwgcmVnX21hcFtzcmMyXSwgMCwgMzEpOworCQl9IGVsc2UgaWYgKGRzdCAhPSBzcmMyKSB7CisJCQlTTEpJVF9BU1NFUlQoc3JjMiA9PSAwKTsKKwkJCXJldHVybiBBREQocmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzJdLCBaRVJPKTsKKwkJfQogCiAJCXJldHVybiBTTEpJVF9TVUNDRVNTOwogCkBAIC0xNjUwLDggKzE2MTcsMTAgQEAKIAkJCQlyZXR1cm4gQkZFWFRTKHJlZ19tYXBbZHN0XSwgcmVnX21hcFtzcmMyXSwgMCwgNyk7CiAKIAkJCXJldHVybiBCRkVYVFUocmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzJdLCAwLCA3KTsKLQkJfSBlbHNlIGlmIChkc3QgIT0gc3JjMikKLQkJCVNMSklUX0FTU0VSVF9TVE9QKCk7CisJCX0gZWxzZSBpZiAoZHN0ICE9IHNyYzIpIHsKKwkJCVNMSklUX0FTU0VSVChzcmMyID09IDApOworCQkJcmV0dXJuIEFERChyZWdfbWFwW2RzdF0sIHJlZ19tYXBbc3JjMl0sIFpFUk8pOworCQl9CiAKIAkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAKQEAgLTE2NjMsOCArMTYzMiwxMCBAQAogCQkJCXJldHVybiBCRkVYVFMocmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzJdLCAwLCAxNSk7CiAKIAkJCXJldHVybiBCRkVYVFUocmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzJdLCAwLCAxNSk7Ci0JCX0gZWxzZSBpZiAoZHN0ICE9IHNyYzIpCi0JCQlTTEpJVF9BU1NFUlRfU1RPUCgpOworCQl9IGVsc2UgaWYgKGRzdCAhPSBzcmMyKSB7CisJCQlTTEpJVF9BU1NFUlQoc3JjMiA9PSAwKTsKKwkJCXJldHVybiBBREQocmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzJdLCBaRVJPKTsKKwkJfQogCiAJCXJldHVybiBTTEpJVF9TVUNDRVNTOwogCkBAIC0xODExLDcgKzE3ODIsNiBAQAogCQkJCWVsc2UgewogCQkJCQkvKiBSYXJlIG9jYXNpb24uICovCiAJCQkJCUZBSUxfSUYoQUREKFRNUF9FUkVHMiwgcmVnX21hcFtzcmMxXSwgWkVSTykpOwotCQogCQkJCQlvdmVyZmxvd19yYSA9IFRNUF9FUkVHMjsKIAkJCQl9CiAJCQl9CkBAIC0xOTAzLDYgKzE4NzMsMTcgQEAKIAogCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIAorCWNhc2UgU0xKSVRfTVVMOgorCQlpZiAoZmxhZ3MgJiBTUkMyX0lNTSkgeworCQkJRkFJTF9JRihsb2FkX2ltbWVkaWF0ZShjb21waWxlciwgVE1QX1JFRzJfbWFwcGVkLCBzcmMyKSk7CisJCQlzcmMyID0gVE1QX1JFRzI7CisJCQlmbGFncyAmPSB+U1JDMl9JTU07CisJCX0KKworCQlGQUlMX0lGKE1VTChyZWdfbWFwW2RzdF0sIHJlZ19tYXBbc3JjMV0sIHJlZ19tYXBbc3JjMl0pKTsKKworCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKKwogI2RlZmluZSBFTUlUX0xPR0lDQUwob3BfaW1tLCBvcF9ub3JtKSBcCiAJaWYgKGZsYWdzICYgU1JDMl9JTU0pIHsgXAogCQlGQUlMX0lGKGxvYWRfaW1tZWRpYXRlKGNvbXBpbGVyLCBBRERSX1RNUF9tYXBwZWQsIHNyYzIpKTsgXApAQCAtMTk1MCw4ICsxOTMxLDggQEAKIAl9IGVsc2UgeyBcCiAJCWlmIChvcCAmIFNMSklUX1NFVF9FKSBcCiAJCQlGQUlMX0lGKHB1c2hfM19idWZmZXIoIFwKLQkJCQljb21waWxlciwgb3BfaW1tLCByZWdfbWFwW2RzdF0sIHJlZ19tYXBbc3JjMV0sIFwKLQkJCQlzcmMyICYgMHgzRiwgX19MSU5FX18pKTsgXAorCQkJCWNvbXBpbGVyLCBvcF9ub3JtLCBFUVVBTF9GTEFHLCByZWdfbWFwW3NyYzFdLCBcCisJCQkJcmVnX21hcFtzcmMyXSwgX19MSU5FX18pKTsgXAogCQlpZiAoQ0hFQ0tfRkxBR1MoU0xKSVRfU0VUX0UpKSBcCiAJCQlGQUlMX0lGKHB1c2hfM19idWZmZXIoIFwKIAkJCQljb21waWxlciwgb3Bfbm9ybSwgcmVnX21hcFtkc3RdLCByZWdfbWFwW3NyYzFdLCBcCkBAIC0yMTA1LDY2ICsyMDg2LDYxIEBACiB7CiAJc2xqaXRfc2kgc3VnZ19kc3RfYXIsIGRzdF9hcjsKIAlzbGppdF9zaSBmbGFncyA9IEdFVF9BTExfRkxBR1Mob3ApOworCXNsaml0X3NpIG1lbV90eXBlID0gKG9wICYgU0xKSVRfSU5UX09QKSA/IChJTlRfREFUQSB8IFNJR05FRF9EQVRBKSA6IFdPUkRfREFUQTsKIAogCUNIRUNLX0VSUk9SKCk7Ci0JY2hlY2tfc2xqaXRfZW1pdF9vcF9mbGFncyhjb21waWxlciwgb3AsIGRzdCwgZHN0dywgc3JjLCBzcmN3LCB0eXBlKTsKKwlDSEVDSyhjaGVja19zbGppdF9lbWl0X29wX2ZsYWdzKGNvbXBpbGVyLCBvcCwgZHN0LCBkc3R3LCBzcmMsIHNyY3csIHR5cGUpKTsKIAlBREpVU1RfTE9DQUxfT0ZGU0VUKGRzdCwgZHN0dyk7CiAKIAlpZiAoZHN0ID09IFNMSklUX1VOVVNFRCkKIAkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAKIAlvcCA9IEdFVF9PUENPREUob3ApOworCWlmIChvcCA9PSBTTEpJVF9NT1ZfU0kgfHwgb3AgPT0gU0xKSVRfTU9WX1VJKQorCQltZW1fdHlwZSA9IElOVF9EQVRBIHwgU0lHTkVEX0RBVEE7CiAJc3VnZ19kc3RfYXIgPSByZWdfbWFwWyhvcCA8IFNMSklUX0FERCAmJiBGQVNUX0lTX1JFRyhkc3QpKSA/IGRzdCA6IFRNUF9SRUcyXTsKIAogCWNvbXBpbGVyLT5jYWNoZV9hcmcgPSAwOwogCWNvbXBpbGVyLT5jYWNoZV9hcmd3ID0gMDsKIAlpZiAob3AgPj0gU0xKSVRfQUREICYmIChzcmMgJiBTTEpJVF9NRU0pKSB7CiAJCUFESlVTVF9MT0NBTF9PRkZTRVQoc3JjLCBzcmN3KTsKLQkJRkFJTF9JRihlbWl0X29wX21lbTIoY29tcGlsZXIsIFdPUkRfREFUQSB8IExPQURfREFUQSwgVE1QX1JFRzFfbWFwcGVkLCBzcmMsIHNyY3csIGRzdCwgZHN0dykpOworCQlGQUlMX0lGKGVtaXRfb3BfbWVtMihjb21waWxlciwgbWVtX3R5cGUgfCBMT0FEX0RBVEEsIFRNUF9SRUcxX21hcHBlZCwgc3JjLCBzcmN3LCBkc3QsIGRzdHcpKTsKIAkJc3JjID0gVE1QX1JFRzE7CiAJCXNyY3cgPSAwOwogCX0KIAotCXN3aXRjaCAodHlwZSkgewotCWNhc2UgU0xKSVRfQ19FUVVBTDoKLQljYXNlIFNMSklUX0NfTk9UX0VRVUFMOgorCXN3aXRjaCAodHlwZSAmIDB4ZmYpIHsKKwljYXNlIFNMSklUX0VRVUFMOgorCWNhc2UgU0xKSVRfTk9UX0VRVUFMOgogCQlGQUlMX0lGKENNUExUVUkoc3VnZ19kc3RfYXIsIEVRVUFMX0ZMQUcsIDEpKTsKIAkJZHN0X2FyID0gc3VnZ19kc3RfYXI7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19MRVNTOgotCWNhc2UgU0xKSVRfQ19HUkVBVEVSX0VRVUFMOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9MRVNTOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9HUkVBVEVSX0VRVUFMOgorCWNhc2UgU0xKSVRfTEVTUzoKKwljYXNlIFNMSklUX0dSRUFURVJfRVFVQUw6CiAJCWRzdF9hciA9IFVMRVNTX0ZMQUc7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19HUkVBVEVSOgotCWNhc2UgU0xKSVRfQ19MRVNTX0VRVUFMOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9HUkVBVEVSOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9MRVNTX0VRVUFMOgorCWNhc2UgU0xKSVRfR1JFQVRFUjoKKwljYXNlIFNMSklUX0xFU1NfRVFVQUw6CiAJCWRzdF9hciA9IFVHUkVBVEVSX0ZMQUc7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19TSUdfTEVTUzoKLQljYXNlIFNMSklUX0NfU0lHX0dSRUFURVJfRVFVQUw6CisJY2FzZSBTTEpJVF9TSUdfTEVTUzoKKwljYXNlIFNMSklUX1NJR19HUkVBVEVSX0VRVUFMOgogCQlkc3RfYXIgPSBMRVNTX0ZMQUc7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19TSUdfR1JFQVRFUjoKLQljYXNlIFNMSklUX0NfU0lHX0xFU1NfRVFVQUw6CisJY2FzZSBTTEpJVF9TSUdfR1JFQVRFUjoKKwljYXNlIFNMSklUX1NJR19MRVNTX0VRVUFMOgogCQlkc3RfYXIgPSBHUkVBVEVSX0ZMQUc7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19PVkVSRkxPVzoKLQljYXNlIFNMSklUX0NfTk9UX09WRVJGTE9XOgorCWNhc2UgU0xKSVRfT1ZFUkZMT1c6CisJY2FzZSBTTEpJVF9OT1RfT1ZFUkZMT1c6CiAJCWRzdF9hciA9IE9WRVJGTE9XX0ZMQUc7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19NVUxfT1ZFUkZMT1c6Ci0JY2FzZSBTTEpJVF9DX01VTF9OT1RfT1ZFUkZMT1c6CisJY2FzZSBTTEpJVF9NVUxfT1ZFUkZMT1c6CisJY2FzZSBTTEpJVF9NVUxfTk9UX09WRVJGTE9XOgogCQlGQUlMX0lGKENNUExUVUkoc3VnZ19kc3RfYXIsIE9WRVJGTE9XX0ZMQUcsIDEpKTsKIAkJZHN0X2FyID0gc3VnZ19kc3RfYXI7CiAJCXR5cGUgXj0gMHgxOyAvKiBGbGlwIHR5cGUgYml0IGZvciB0aGUgWE9SSSBiZWxvdy4gKi8KIAkJYnJlYWs7Ci0JY2FzZSBTTEpJVF9DX0ZMT0FUX0VRVUFMOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9OT1RfRVFVQUw6Ci0JCWRzdF9hciA9IEVRVUFMX0ZMQUc7Ci0JCWJyZWFrOwogCiAJZGVmYXVsdDoKIAkJU0xKSVRfQVNTRVJUX1NUT1AoKTsKQEAgLTIxODAsMTEgKzIxNTYsMTEgQEAKIAlpZiAob3AgPj0gU0xKSVRfQUREKSB7CiAJCWlmIChUTVBfUkVHMl9tYXBwZWQgIT0gZHN0X2FyKQogCQkJRkFJTF9JRihBREQoVE1QX1JFRzJfbWFwcGVkLCBkc3RfYXIsIFpFUk8pKTsKLQkJcmV0dXJuIGVtaXRfb3AoY29tcGlsZXIsIG9wIHwgZmxhZ3MsIENVTVVMQVRJVkVfT1AgfCBMT0dJQ0FMX09QIHwgSU1NX09QIHwgQUxUX0tFRVBfQ0FDSEUsIGRzdCwgZHN0dywgc3JjLCBzcmN3LCBUTVBfUkVHMiwgMCk7CisJCXJldHVybiBlbWl0X29wKGNvbXBpbGVyLCBvcCB8IGZsYWdzLCBtZW1fdHlwZSB8IENVTVVMQVRJVkVfT1AgfCBMT0dJQ0FMX09QIHwgSU1NX09QIHwgQUxUX0tFRVBfQ0FDSEUsIGRzdCwgZHN0dywgc3JjLCBzcmN3LCBUTVBfUkVHMiwgMCk7CiAJfQogCiAJaWYgKGRzdCAmIFNMSklUX01FTSkKLQkJcmV0dXJuIGVtaXRfb3BfbWVtKGNvbXBpbGVyLCBXT1JEX0RBVEEsIGRzdF9hciwgZHN0LCBkc3R3KTsKKwkJcmV0dXJuIGVtaXRfb3BfbWVtKGNvbXBpbGVyLCBtZW1fdHlwZSwgZHN0X2FyLCBkc3QsIGRzdHcpOwogCiAJaWYgKHN1Z2dfZHN0X2FyICE9IGRzdF9hcikKIAkJcmV0dXJuIEFERChzdWdnX2RzdF9hciwgZHN0X2FyLCBaRVJPKTsKQEAgLTIxOTQsNyArMjE3MCw3IEBACiAKIFNMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9lbWl0X29wMChzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLCBzbGppdF9zaSBvcCkgewogCUNIRUNLX0VSUk9SKCk7Ci0JY2hlY2tfc2xqaXRfZW1pdF9vcDAoY29tcGlsZXIsIG9wKTsKKwlDSEVDSyhjaGVja19zbGppdF9lbWl0X29wMChjb21waWxlciwgb3ApKTsKIAogCW9wID0gR0VUX09QQ09ERShvcCk7CiAJc3dpdGNoIChvcCkgewpAQCAtMjIwNCwxMCArMjE4MCwxMCBAQAogCWNhc2UgU0xKSVRfQlJFQUtQT0lOVDoKIAkJcmV0dXJuIFBJKEJQVCk7CiAKLQljYXNlIFNMSklUX1VNVUw6Ci0JY2FzZSBTTEpJVF9TTVVMOgotCWNhc2UgU0xKSVRfVURJVjoKLQljYXNlIFNMSklUX1NESVY6CisJY2FzZSBTTEpJVF9MVU1VTDoKKwljYXNlIFNMSklUX0xTTVVMOgorCWNhc2UgU0xKSVRfVURJVkk6CisJY2FzZSBTTEpJVF9TRElWSToKIAkJU0xKSVRfQVNTRVJUX1NUT1AoKTsKIAl9CiAKQEAgLTIyMTcsNyArMjE5Myw3IEBACiBTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfZW1pdF9vcDEoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwgc2xqaXRfc2kgb3AsIHNsaml0X3NpIGRzdCwgc2xqaXRfc3cgZHN0dywgc2xqaXRfc2kgc3JjLCBzbGppdF9zdyBzcmN3KQogewogCUNIRUNLX0VSUk9SKCk7Ci0JY2hlY2tfc2xqaXRfZW1pdF9vcDEoY29tcGlsZXIsIG9wLCBkc3QsIGRzdHcsIHNyYywgc3Jjdyk7CisJQ0hFQ0soY2hlY2tfc2xqaXRfZW1pdF9vcDEoY29tcGlsZXIsIG9wLCBkc3QsIGRzdHcsIHNyYywgc3JjdykpOwogCUFESlVTVF9MT0NBTF9PRkZTRVQoZHN0LCBkc3R3KTsKIAlBREpVU1RfTE9DQUxfT0ZGU0VUKHNyYywgc3Jjdyk7CiAKQEAgLTIyNzMsNyArMjI0OSw3IEBACiAJCXJldHVybiBlbWl0X29wKGNvbXBpbGVyLCBTTEpJVF9TVUIgfCBHRVRfQUxMX0ZMQUdTKG9wKSwgSU1NX09QLCBkc3QsIGRzdHcsIFNMSklUX0lNTSwgMCwgc3JjLCBzcmN3KTsKIAogCWNhc2UgU0xKSVRfQ0xaOgotCQlyZXR1cm4gZW1pdF9vcChjb21waWxlciwgb3AsIDAsIGRzdCwgZHN0dywgVE1QX1JFRzEsIDAsIHNyYywgc3Jjdyk7CisJCXJldHVybiBlbWl0X29wKGNvbXBpbGVyLCBvcCwgKG9wICYgU0xKSVRfSU5UX09QKSA/IElOVF9EQVRBIDogV09SRF9EQVRBLCBkc3QsIGRzdHcsIFRNUF9SRUcxLCAwLCBzcmMsIHNyY3cpOwogCX0KIAogCXJldHVybiBTTEpJVF9TVUNDRVNTOwpAQCAtMjI4Miw3ICsyMjU4LDcgQEAKIFNMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9lbWl0X29wMihzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLCBzbGppdF9zaSBvcCwgc2xqaXRfc2kgZHN0LCBzbGppdF9zdyBkc3R3LCBzbGppdF9zaSBzcmMxLCBzbGppdF9zdyBzcmMxdywgc2xqaXRfc2kgc3JjMiwgc2xqaXRfc3cgc3JjMncpCiB7CiAJQ0hFQ0tfRVJST1IoKTsKLQljaGVja19zbGppdF9lbWl0X29wMihjb21waWxlciwgb3AsIGRzdCwgZHN0dywgc3JjMSwgc3JjMXcsIHNyYzIsIHNyYzJ3KTsKKwlDSEVDSyhjaGVja19zbGppdF9lbWl0X29wMihjb21waWxlciwgb3AsIGRzdCwgZHN0dywgc3JjMSwgc3JjMXcsIHNyYzIsIHNyYzJ3KSk7CiAJQURKVVNUX0xPQ0FMX09GRlNFVChkc3QsIGRzdHcpOwogCUFESlVTVF9MT0NBTF9PRkZTRVQoc3JjMSwgc3JjMXcpOwogCUFESlVTVF9MT0NBTF9PRkZTRVQoc3JjMiwgc3JjMncpOwpAQCAtMjMyNSw3ICsyMzAxLDcgQEAKIAlmbHVzaF9idWZmZXIoY29tcGlsZXIpOwogCiAJQ0hFQ0tfRVJST1JfUFRSKCk7Ci0JY2hlY2tfc2xqaXRfZW1pdF9sYWJlbChjb21waWxlcik7CisJQ0hFQ0tfUFRSKGNoZWNrX3Nsaml0X2VtaXRfbGFiZWwoY29tcGlsZXIpKTsKIAogCWlmIChjb21waWxlci0+bGFzdF9sYWJlbCAmJiBjb21waWxlci0+bGFzdF9sYWJlbC0+c2l6ZSA9PSBjb21waWxlci0+c2l6ZSkKIAkJcmV0dXJuIGNvbXBpbGVyLT5sYXN0X2xhYmVsOwpAQCAtMjM0NCw3ICsyMzIwLDcgQEAKIAlmbHVzaF9idWZmZXIoY29tcGlsZXIpOwogCiAJQ0hFQ0tfRVJST1IoKTsKLQljaGVja19zbGppdF9lbWl0X2lqdW1wKGNvbXBpbGVyLCB0eXBlLCBzcmMsIHNyY3cpOworCUNIRUNLKGNoZWNrX3Nsaml0X2VtaXRfaWp1bXAoY29tcGlsZXIsIHR5cGUsIHNyYywgc3JjdykpOwogCUFESlVTVF9MT0NBTF9PRkZTRVQoc3JjLCBzcmN3KTsKIAogCWlmIChGQVNUX0lTX1JFRyhzcmMpKSB7CkBAIC0yNDA0LDggKzIzODAsMTAgQEAKIAogCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIAotCX0gZWxzZSBpZiAoc3JjICYgU0xKSVRfTUVNKQorCX0gZWxzZSBpZiAoc3JjICYgU0xKSVRfTUVNKSB7CiAJCUZBSUxfSUYoZW1pdF9vcChjb21waWxlciwgU0xKSVRfTU9WLCBXT1JEX0RBVEEsIFRNUF9SRUcyLCAwLCBUTVBfUkVHMSwgMCwgc3JjLCBzcmN3KSk7CisJCWZsdXNoX2J1ZmZlcihjb21waWxlcik7CisJfQogCiAJRkFJTF9JRihKUl9TT0xPKHJlZ19tYXBbc3JjX3JdKSk7CiAKQEAgLTI0MzIsNyArMjQxMCw3IEBACiAJZmx1c2hfYnVmZmVyKGNvbXBpbGVyKTsKIAogCUNIRUNLX0VSUk9SX1BUUigpOwotCWNoZWNrX3Nsaml0X2VtaXRfanVtcChjb21waWxlciwgdHlwZSk7CisJQ0hFQ0tfUFRSKGNoZWNrX3Nsaml0X2VtaXRfanVtcChjb21waWxlciwgdHlwZSkpOwogCiAJanVtcCA9IChzdHJ1Y3Qgc2xqaXRfanVtcCAqKWVuc3VyZV9hYnVmKGNvbXBpbGVyLCBzaXplb2Yoc3RydWN0IHNsaml0X2p1bXApKTsKIAlQVFJfRkFJTF9JRighanVtcCk7CkBAIC0yNDQwLDQ4ICsyNDE4LDQyIEBACiAJdHlwZSAmPSAweGZmOwogCiAJc3dpdGNoICh0eXBlKSB7Ci0JY2FzZSBTTEpJVF9DX0VRVUFMOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9OT1RfRVFVQUw6CisJY2FzZSBTTEpJVF9FUVVBTDoKIAkJQlJfTlooRVFVQUxfRkxBRyk7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19OT1RfRVFVQUw6Ci0JY2FzZSBTTEpJVF9DX0ZMT0FUX0VRVUFMOgorCWNhc2UgU0xKSVRfTk9UX0VRVUFMOgogCQlCUl9aKEVRVUFMX0ZMQUcpOwogCQlicmVhazsKLQljYXNlIFNMSklUX0NfTEVTUzoKLQljYXNlIFNMSklUX0NfRkxPQVRfTEVTUzoKKwljYXNlIFNMSklUX0xFU1M6CiAJCUJSX1ooVUxFU1NfRkxBRyk7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19HUkVBVEVSX0VRVUFMOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9HUkVBVEVSX0VRVUFMOgorCWNhc2UgU0xKSVRfR1JFQVRFUl9FUVVBTDoKIAkJQlJfTlooVUxFU1NfRkxBRyk7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19HUkVBVEVSOgotCWNhc2UgU0xKSVRfQ19GTE9BVF9HUkVBVEVSOgorCWNhc2UgU0xKSVRfR1JFQVRFUjoKIAkJQlJfWihVR1JFQVRFUl9GTEFHKTsKIAkJYnJlYWs7Ci0JY2FzZSBTTEpJVF9DX0xFU1NfRVFVQUw6Ci0JY2FzZSBTTEpJVF9DX0ZMT0FUX0xFU1NfRVFVQUw6CisJY2FzZSBTTEpJVF9MRVNTX0VRVUFMOgogCQlCUl9OWihVR1JFQVRFUl9GTEFHKTsKIAkJYnJlYWs7Ci0JY2FzZSBTTEpJVF9DX1NJR19MRVNTOgorCWNhc2UgU0xKSVRfU0lHX0xFU1M6CiAJCUJSX1ooTEVTU19GTEFHKTsKIAkJYnJlYWs7Ci0JY2FzZSBTTEpJVF9DX1NJR19HUkVBVEVSX0VRVUFMOgorCWNhc2UgU0xKSVRfU0lHX0dSRUFURVJfRVFVQUw6CiAJCUJSX05aKExFU1NfRkxBRyk7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19TSUdfR1JFQVRFUjoKKwljYXNlIFNMSklUX1NJR19HUkVBVEVSOgogCQlCUl9aKEdSRUFURVJfRkxBRyk7CiAJCWJyZWFrOwotCWNhc2UgU0xKSVRfQ19TSUdfTEVTU19FUVVBTDoKKwljYXNlIFNMSklUX1NJR19MRVNTX0VRVUFMOgogCQlCUl9OWihHUkVBVEVSX0ZMQUcpOwogCQlicmVhazsKLQljYXNlIFNMSklUX0NfT1ZFUkZMT1c6Ci0JY2FzZSBTTEpJVF9DX01VTF9PVkVSRkxPVzoKKwljYXNlIFNMSklUX09WRVJGTE9XOgorCWNhc2UgU0xKSVRfTVVMX09WRVJGTE9XOgogCQlCUl9aKE9WRVJGTE9XX0ZMQUcpOwogCQlicmVhazsKLQljYXNlIFNMSklUX0NfTk9UX09WRVJGTE9XOgotCWNhc2UgU0xKSVRfQ19NVUxfTk9UX09WRVJGTE9XOgorCWNhc2UgU0xKSVRfTk9UX09WRVJGTE9XOgorCWNhc2UgU0xKSVRfTVVMX05PVF9PVkVSRkxPVzoKIAkJQlJfTlooT1ZFUkZMT1dfRkxBRyk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CkBAIC0yNTM2LDcgKzI1MDgsNyBAQAogCWZsdXNoX2J1ZmZlcihjb21waWxlcik7CiAKIAlDSEVDS19FUlJPUl9QVFIoKTsKLQljaGVja19zbGppdF9lbWl0X2NvbnN0KGNvbXBpbGVyLCBkc3QsIGRzdHcsIGluaXRfdmFsdWUpOworCUNIRUNLX1BUUihjaGVja19zbGppdF9lbWl0X2NvbnN0KGNvbXBpbGVyLCBkc3QsIGRzdHcsIGluaXRfdmFsdWUpKTsKIAlBREpVU1RfTE9DQUxfT0ZGU0VUKGRzdCwgZHN0dyk7CiAKIAljb25zdF8gPSAoc3RydWN0IHNsaml0X2NvbnN0ICopZW5zdXJlX2FidWYoY29tcGlsZXIsIHNpemVvZihzdHJ1Y3Qgc2xqaXRfY29uc3QpKTsKQEAgLTI1NzIsMyArMjU0NCwxOCBAQAogCWluc3RbM10gPSAoaW5zdFszXSAmIH4oMHhGRkZGTCA8PCA0MykpIHwgKChuZXdfY29uc3RhbnQgJiAweEZGRkZMKSA8PCA0Myk7CiAJU0xKSVRfQ0FDSEVfRkxVU0goaW5zdCwgaW5zdCArIDQpOwogfQorCitTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfZ2V0X3JlZ2lzdGVyX2luZGV4KHNsaml0X3NpIHJlZykKK3sKKwlDSEVDS19SRUdfSU5ERVgoY2hlY2tfc2xqaXRfZ2V0X3JlZ2lzdGVyX2luZGV4KHJlZykpOworCXJldHVybiByZWdfbWFwW3JlZ107Cit9CisKK1NMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF9lbWl0X29wX2N1c3RvbShzdHJ1Y3Qgc2xqaXRfY29tcGlsZXIgKmNvbXBpbGVyLAorCXZvaWQgKmluc3RydWN0aW9uLCBzbGppdF9zaSBzaXplKQoreworCUNIRUNLX0VSUk9SKCk7CisJQ0hFQ0soY2hlY2tfc2xqaXRfZW1pdF9vcF9jdXN0b20oY29tcGlsZXIsIGluc3RydWN0aW9uLCBzaXplKSk7CisJcmV0dXJuIFNMSklUX0VSUl9VTlNVUFBPUlRFRDsKK30KKwpkaWZmIC0tZ2l0IGEvZGlzdC9zbGppdC9zbGppdE5hdGl2ZVg4Nl9jb21tb24uYyBiL2Rpc3Qvc2xqaXQvc2xqaXROYXRpdmVYODZfY29tbW9uLmMKaW5kZXggMjJhMTYzZi4uNDE2YzE1YSAxMDA2NDQKLS0tIGEvZGlzdC9zbGppdC9zbGppdE5hdGl2ZVg4Nl9jb21tb24uYworKysgYi9kaXN0L3Nsaml0L3Nsaml0TmF0aXZlWDg2X2NvbW1vbi5jCkBAIC0yNzMsNyArMjczLDkgQEAKICNlbmRpZgogc3RhdGljIHNsaml0X3NpIGNwdV9oYXNfY21vdiA9IC0xOwogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTQwMAorI2lmZGVmIF9XSU4zMl9XQ0UKKyNpbmNsdWRlIDxjbW5pbnRyaW4uaD4KKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDAKICNpbmNsdWRlIDxpbnRyaW4uaD4KICNlbmRpZgogCkBAIC03NDIsOCArNzQ0LDEwIEBACiAJCWJyZWFrOwogCWNhc2UgU0xKSVRfTFVNVUw6CiAJY2FzZSBTTEpJVF9MU01VTDoKLQljYXNlIFNMSklUX0xVRElWOgotCWNhc2UgU0xKSVRfTFNESVY6CisJY2FzZSBTTEpJVF9VRElWTU9EOgorCWNhc2UgU0xKSVRfU0RJVk1PRDoKKwljYXNlIFNMSklUX1VESVZJOgorCWNhc2UgU0xKSVRfU0RJVkk6CiAJCWNvbXBpbGVyLT5mbGFnc19zYXZlZCA9IDA7CiAjaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1g4Nl82NCAmJiBTTEpJVF9DT05GSUdfWDg2XzY0KQogI2lmZGVmIF9XSU42NApAQCAtNzYxLDkgKzc2NSwxMCBAQAogI2VuZGlmCiAJCWNvbXBpbGVyLT5tb2RlMzIgPSBvcCAmIFNMSklUX0lOVF9PUDsKICNlbmRpZgorCQlTTEpJVF9DT01QSUxFX0FTU0VSVCgoU0xKSVRfVURJVk1PRCAmIDB4MikgPT0gMCAmJiBTTEpJVF9VRElWSSAtIDB4MiA9PSBTTEpJVF9VRElWTU9ELCBiYWRfZGl2X29wY29kZV9hc3NpZ25tZW50cyk7CiAKIAkJb3AgPSBHRVRfT1BDT0RFKG9wKTsKLQkJaWYgKG9wID09IFNMSklUX0xVRElWKSB7CisJCWlmICgob3AgfCAweDIpID09IFNMSklUX1VESVZJKSB7CiAjaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1g4Nl8zMiAmJiBTTEpJVF9DT05GSUdfWDg2XzMyKSB8fCBkZWZpbmVkKF9XSU42NCkKIAkJCUVNSVRfTU9WKGNvbXBpbGVyLCBUTVBfUkVHMSwgMCwgU0xKSVRfUjEsIDApOwogCQkJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAxLCBTTEpJVF9SMSwgMCwgU0xKSVRfUjEsIDApOwpAQCAtNzc0LDcgKzc3OSw3IEBACiAJCQkqaW5zdCA9IFhPUl9yX3JtOwogCQl9CiAKLQkJaWYgKG9wID09IFNMSklUX0xTRElWKSB7CisJCWlmICgob3AgfCAweDIpID09IFNMSklUX1NESVZJKSB7CiAjaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1g4Nl8zMiAmJiBTTEpJVF9DT05GSUdfWDg2XzMyKSB8fCBkZWZpbmVkKF9XSU42NCkKIAkJCUVNSVRfTU9WKGNvbXBpbGVyLCBUTVBfUkVHMSwgMCwgU0xKSVRfUjEsIDApOwogI2VuZGlmCkBAIC04MDUsMTAgKzgxMCwxMCBAQAogCQlGQUlMX0lGKCFpbnN0KTsKIAkJSU5DX1NJWkUoMik7CiAJCSppbnN0KysgPSBHUk9VUF9GNzsKLQkJKmluc3QgPSBNT0RfUkVHIHwgKChvcCA+PSBTTEpJVF9MVURJVikgPyByZWdfbWFwW1RNUF9SRUcxXSA6IHJlZ19tYXBbU0xKSVRfUjFdKTsKKwkJKmluc3QgPSBNT0RfUkVHIHwgKChvcCA+PSBTTEpJVF9VRElWTU9EKSA/IHJlZ19tYXBbVE1QX1JFRzFdIDogcmVnX21hcFtTTEpJVF9SMV0pOwogI2Vsc2UKICNpZmRlZiBfV0lONjQKLQkJc2l6ZSA9ICghY29tcGlsZXItPm1vZGUzMiB8fCBvcCA+PSBTTEpJVF9MVURJVikgPyAzIDogMjsKKwkJc2l6ZSA9ICghY29tcGlsZXItPm1vZGUzMiB8fCBvcCA+PSBTTEpJVF9VRElWTU9EKSA/IDMgOiAyOwogI2Vsc2UKIAkJc2l6ZSA9ICghY29tcGlsZXItPm1vZGUzMikgPyAzIDogMjsKICNlbmRpZgpAQCAtODE3LDExICs4MjIsMTEgQEAKIAkJSU5DX1NJWkUoc2l6ZSk7CiAjaWZkZWYgX1dJTjY0CiAJCWlmICghY29tcGlsZXItPm1vZGUzMikKLQkJCSppbnN0KysgPSBSRVhfVyB8ICgob3AgPj0gU0xKSVRfTFVESVYpID8gUkVYX0IgOiAwKTsKLQkJZWxzZSBpZiAob3AgPj0gU0xKSVRfTFVESVYpCisJCQkqaW5zdCsrID0gUkVYX1cgfCAoKG9wID49IFNMSklUX1VESVZNT0QpID8gUkVYX0IgOiAwKTsKKwkJZWxzZSBpZiAob3AgPj0gU0xKSVRfVURJVk1PRCkKIAkJCSppbnN0KysgPSBSRVhfQjsKIAkJKmluc3QrKyA9IEdST1VQX0Y3OwotCQkqaW5zdCA9IE1PRF9SRUcgfCAoKG9wID49IFNMSklUX0xVRElWKSA/IHJlZ19sbWFwW1RNUF9SRUcxXSA6IHJlZ19sbWFwW1NMSklUX1IxXSk7CisJCSppbnN0ID0gTU9EX1JFRyB8ICgob3AgPj0gU0xKSVRfVURJVk1PRCkgPyByZWdfbG1hcFtUTVBfUkVHMV0gOiByZWdfbG1hcFtTTEpJVF9SMV0pOwogI2Vsc2UKIAkJaWYgKCFjb21waWxlci0+bW9kZTMyKQogCQkJKmluc3QrKyA9IFJFWF9XOwpAQCAtODM2LDE1ICs4NDEsMjEgQEAKIAkJY2FzZSBTTEpJVF9MU01VTDoKIAkJCSppbnN0IHw9IElNVUw7CiAJCQlicmVhazsKLQkJY2FzZSBTTEpJVF9MVURJVjoKKwkJY2FzZSBTTEpJVF9VRElWTU9EOgorCQljYXNlIFNMSklUX1VESVZJOgogCQkJKmluc3QgfD0gRElWOwogCQkJYnJlYWs7Ci0JCWNhc2UgU0xKSVRfTFNESVY6CisJCWNhc2UgU0xKSVRfU0RJVk1PRDoKKwkJY2FzZSBTTEpJVF9TRElWSToKIAkJCSppbnN0IHw9IElESVY7CiAJCQlicmVhazsKIAkJfQogI2lmIChkZWZpbmVkIFNMSklUX0NPTkZJR19YODZfNjQgJiYgU0xKSVRfQ09ORklHX1g4Nl82NCkgJiYgIWRlZmluZWQoX1dJTjY0KQotCQlFTUlUX01PVihjb21waWxlciwgU0xKSVRfUjEsIDAsIFRNUF9SRUcxLCAwKTsKKwkJaWYgKG9wIDw9IFNMSklUX1NESVZNT0QpCisJCQlFTUlUX01PVihjb21waWxlciwgU0xKSVRfUjEsIDAsIFRNUF9SRUcxLCAwKTsKKyNlbHNlCisJCWlmIChvcCA+PSBTTEpJVF9VRElWSSkKKwkJCUVNSVRfTU9WKGNvbXBpbGVyLCBTTEpJVF9SMSwgMCwgVE1QX1JFRzEsIDApOwogI2VuZGlmCiAJCWJyZWFrOwogCX0KQEAgLTE5MDUsNjAgKzE5MTYsNjIgQEAKIAkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAJfQogCi0JaWYgKEZBU1RfSVNfUkVHKHNyYzEpKSB7CisJaWYgKCEoc3JjMSAmIFNMSklUX0lNTSkpIHsKIAkJaWYgKHNyYzIgJiBTTEpJVF9JTU0pIHsKICNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfWDg2XzY0ICYmIFNMSklUX0NPTkZJR19YODZfNjQpCiAJCQlpZiAoSVNfSEFMRldPUkQoc3JjMncpIHx8IGNvbXBpbGVyLT5tb2RlMzIpIHsKLQkJCQlpbnN0ID0gZW1pdF94ODZfaW5zdHJ1Y3Rpb24oY29tcGlsZXIsIDEsIFNMSklUX0lNTSwgc3JjMncsIHNyYzEsIDApOworCQkJCWluc3QgPSBlbWl0X3g4Nl9pbnN0cnVjdGlvbihjb21waWxlciwgMSwgU0xKSVRfSU1NLCBzcmMydywgc3JjMSwgc3JjMXcpOwogCQkJCUZBSUxfSUYoIWluc3QpOwogCQkJCSppbnN0ID0gR1JPVVBfRjc7CiAJCQl9CiAJCQllbHNlIHsKIAkJCQlGQUlMX0lGKGVtaXRfbG9hZF9pbW02NChjb21waWxlciwgVE1QX1JFRzIsIHNyYzJ3KSk7Ci0JCQkJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAxLCBUTVBfUkVHMiwgMCwgc3JjMSwgMCk7CisJCQkJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAxLCBUTVBfUkVHMiwgMCwgc3JjMSwgc3JjMXcpOwogCQkJCUZBSUxfSUYoIWluc3QpOwogCQkJCSppbnN0ID0gVEVTVF9ybV9yOwogCQkJfQogI2Vsc2UKLQkJCWluc3QgPSBlbWl0X3g4Nl9pbnN0cnVjdGlvbihjb21waWxlciwgMSwgU0xKSVRfSU1NLCBzcmMydywgc3JjMSwgMCk7CisJCQlpbnN0ID0gZW1pdF94ODZfaW5zdHJ1Y3Rpb24oY29tcGlsZXIsIDEsIFNMSklUX0lNTSwgc3JjMncsIHNyYzEsIHNyYzF3KTsKIAkJCUZBSUxfSUYoIWluc3QpOwogCQkJKmluc3QgPSBHUk9VUF9GNzsKICNlbmRpZgorCQkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAJCX0KLQkJZWxzZSB7CisJCWVsc2UgaWYgKEZBU1RfSVNfUkVHKHNyYzEpKSB7CiAJCQlpbnN0ID0gZW1pdF94ODZfaW5zdHJ1Y3Rpb24oY29tcGlsZXIsIDEsIHNyYzEsIDAsIHNyYzIsIHNyYzJ3KTsKIAkJCUZBSUxfSUYoIWluc3QpOwogCQkJKmluc3QgPSBURVNUX3JtX3I7CisJCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIAkJfQotCQlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKIAl9CiAKLQlpZiAoRkFTVF9JU19SRUcoc3JjMikpIHsKKwlpZiAoIShzcmMyICYgU0xKSVRfSU1NKSkgewogCQlpZiAoc3JjMSAmIFNMSklUX0lNTSkgewogI2lmIChkZWZpbmVkIFNMSklUX0NPTkZJR19YODZfNjQgJiYgU0xKSVRfQ09ORklHX1g4Nl82NCkKIAkJCWlmIChJU19IQUxGV09SRChzcmMxdykgfHwgY29tcGlsZXItPm1vZGUzMikgewotCQkJCWluc3QgPSBlbWl0X3g4Nl9pbnN0cnVjdGlvbihjb21waWxlciwgMSwgU0xKSVRfSU1NLCBzcmMxdywgc3JjMiwgMCk7CisJCQkJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAxLCBTTEpJVF9JTU0sIHNyYzF3LCBzcmMyLCBzcmMydyk7CiAJCQkJRkFJTF9JRighaW5zdCk7CiAJCQkJKmluc3QgPSBHUk9VUF9GNzsKIAkJCX0KIAkJCWVsc2UgewogCQkJCUZBSUxfSUYoZW1pdF9sb2FkX2ltbTY0KGNvbXBpbGVyLCBUTVBfUkVHMiwgc3JjMXcpKTsKLQkJCQlpbnN0ID0gZW1pdF94ODZfaW5zdHJ1Y3Rpb24oY29tcGlsZXIsIDEsIFRNUF9SRUcyLCAwLCBzcmMyLCAwKTsKKwkJCQlpbnN0ID0gZW1pdF94ODZfaW5zdHJ1Y3Rpb24oY29tcGlsZXIsIDEsIFRNUF9SRUcyLCAwLCBzcmMyLCBzcmMydyk7CiAJCQkJRkFJTF9JRighaW5zdCk7CiAJCQkJKmluc3QgPSBURVNUX3JtX3I7CiAJCQl9CiAjZWxzZQotCQkJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAxLCBzcmMxLCBzcmMxdywgc3JjMiwgMCk7CisJCQlpbnN0ID0gZW1pdF94ODZfaW5zdHJ1Y3Rpb24oY29tcGlsZXIsIDEsIHNyYzEsIHNyYzF3LCBzcmMyLCBzcmMydyk7CiAJCQlGQUlMX0lGKCFpbnN0KTsKIAkJCSppbnN0ID0gR1JPVVBfRjc7CiAjZW5kaWYKKwkJCXJldHVybiBTTEpJVF9TVUNDRVNTOwogCQl9Ci0JCWVsc2UgeworCQllbHNlIGlmIChGQVNUX0lTX1JFRyhzcmMyKSkgewogCQkJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAxLCBzcmMyLCAwLCBzcmMxLCBzcmMxdyk7CiAJCQlGQUlMX0lGKCFpbnN0KTsKIAkJCSppbnN0ID0gVEVTVF9ybV9yOworCQkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAJCX0KLQkJcmV0dXJuIFNMSklUX1NVQ0NFU1M7CiAJfQogCiAJRU1JVF9NT1YoY29tcGlsZXIsIFRNUF9SRUcxLCAwLCBzcmMxLCBzcmMxdyk7CkBAIC0yOTIzLDMgKzI5MzYsNjkgQEAKIHsKIAkqKHNsaml0X3N3KilhZGRyID0gbmV3X2NvbnN0YW50OwogfQorCitTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfc2kgc2xqaXRfeDg2X2lzX3NzZTJfYXZhaWxhYmxlKHZvaWQpCit7CisjaWYgKGRlZmluZWQgU0xKSVRfREVURUNUX1NTRTIgJiYgU0xKSVRfREVURUNUX1NTRTIpCisJaWYgKGNwdV9oYXNfc3NlMiA9PSAtMSkKKwkJZ2V0X2NwdV9mZWF0dXJlcygpOworCXJldHVybiBjcHVfaGFzX3NzZTI7CisjZWxzZQorCXJldHVybiAxOworI2VuZGlmCit9CisKK1NMSklUX0FQSV9GVU5DX0FUVFJJQlVURSBzbGppdF9zaSBzbGppdF94ODZfaXNfY21vdl9hdmFpbGFibGUodm9pZCkKK3sKKwlpZiAoY3B1X2hhc19jbW92ID09IC0xKQorCQlnZXRfY3B1X2ZlYXR1cmVzKCk7CisJcmV0dXJuIGNwdV9oYXNfY21vdjsKK30KKworU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHNsaml0X3NpIHNsaml0X3g4Nl9lbWl0X2Ntb3Yoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWxlciwKKwlzbGppdF9zaSB0eXBlLAorCXNsaml0X3NpIGRzdF9yZWcsCisJc2xqaXRfc2kgc3JjLCBzbGppdF9zdyBzcmN3KQoreworCXNsaml0X3ViKiBpbnN0OworCisJQ0hFQ0tfRVJST1IoKTsKKyNpZiAoZGVmaW5lZCBTTEpJVF9BUkdVTUVOVF9DSEVDS1MgJiYgU0xKSVRfQVJHVU1FTlRfQ0hFQ0tTKQorCUNIRUNLX0FSR1VNRU5UKHNsaml0X3g4Nl9pc19jbW92X2F2YWlsYWJsZSgpKTsKKwlDSEVDS19BUkdVTUVOVCghKHR5cGUgJiB+KDB4ZmYgfCBTTEpJVF9JTlRfT1ApKSk7CisJQ0hFQ0tfQVJHVU1FTlQoKHR5cGUgJiAweGZmKSA+PSBTTEpJVF9FUVVBTCAmJiAodHlwZSAmIDB4ZmYpIDw9IFNMSklUX0RfT1JERVJFRCk7CisJQ0hFQ0tfQVJHVU1FTlQoRlVOQ1RJT05fQ0hFQ0tfSVNfUkVHKGRzdF9yZWcgJiB+U0xKSVRfSU5UX09QKSk7CisJRlVOQ1RJT05fQ0hFQ0tfU1JDKHNyYywgc3Jjdyk7CisjZW5kaWYKKyNpZiAoZGVmaW5lZCBTTEpJVF9WRVJCT1NFICYmIFNMSklUX1ZFUkJPU0UpCisJaWYgKFNMSklUX1VOTElLRUxZKCEhY29tcGlsZXItPnZlcmJvc2UpKSB7CisJCWZwcmludGYoY29tcGlsZXItPnZlcmJvc2UsICIgIHg4Nl9jbW92JXMgJXMlcywgIiwKKwkJCSEoZHN0X3JlZyAmIFNMSklUX0lOVF9PUCkgPyAiIiA6ICIuaSIsCisJCQlKVU1QX1BSRUZJWCh0eXBlKSwganVtcF9uYW1lc1t0eXBlICYgMHhmZl0pOworCQlzbGppdF92ZXJib3NlX3JlZyhjb21waWxlciwgZHN0X3JlZyAmIH5TTEpJVF9JTlRfT1ApOworCQlmcHJpbnRmKGNvbXBpbGVyLT52ZXJib3NlLCAiLCAiKTsKKwkJc2xqaXRfdmVyYm9zZV9wYXJhbShjb21waWxlciwgc3JjLCBzcmN3KTsKKwkJZnByaW50Zihjb21waWxlci0+dmVyYm9zZSwgIlxuIik7CisJfQorI2VuZGlmCisKKwlBREpVU1RfTE9DQUxfT0ZGU0VUKHNyYywgc3Jjdyk7CisJQ0hFQ0tfRVhUUkFfUkVHUyhzcmMsIHNyY3csICh2b2lkKTApOworCisjaWYgKGRlZmluZWQgU0xKSVRfQ09ORklHX1g4Nl82NCAmJiBTTEpJVF9DT05GSUdfWDg2XzY0KQorCWNvbXBpbGVyLT5tb2RlMzIgPSBkc3RfcmVnICYgU0xKSVRfSU5UX09QOworI2VuZGlmCisJZHN0X3JlZyAmPSB+U0xKSVRfSU5UX09QOworCisJaWYgKFNMSklUX1VOTElLRUxZKHNyYyAmIFNMSklUX0lNTSkpIHsKKwkJRU1JVF9NT1YoY29tcGlsZXIsIFRNUF9SRUcxLCAwLCBTTEpJVF9JTU0sIHNyY3cpOworCQlzcmMgPSBUTVBfUkVHMTsKKwkJc3JjdyA9IDA7CisJfQorCisJaW5zdCA9IGVtaXRfeDg2X2luc3RydWN0aW9uKGNvbXBpbGVyLCAyLCBkc3RfcmVnLCAwLCBzcmMsIHNyY3cpOworCUZBSUxfSUYoIWluc3QpOworCSppbnN0KysgPSBHUk9VUF8wRjsKKwkqaW5zdCA9IGdldF9qdW1wX2NvZGUodHlwZSAmIDB4ZmYpIC0gMHg0MDsKKwlyZXR1cm4gU0xKSVRfU1VDQ0VTUzsKK30KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvZ3JlcG91dHB1dCBiL2Rpc3QvdGVzdGRhdGEvZ3JlcG91dHB1dAppbmRleCA0ZDYxNzUyLi5mMjNkYWM3IDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL2dyZXBvdXRwdXQKKysrIGIvZGlzdC90ZXN0ZGF0YS9ncmVwb3V0cHV0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MSBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MQppbmRleCA3M2MyZjRkLi44Mzc5Y2UwIDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDEKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxCkBAIC01NzMwLDQgKzU3MzAsNyBAQAogIig/MSkoPyM/Jyl7OH0oYSkiCiAgICAgYmFhYWFhYWFhYWMKIAorIig/fChcaydQbScpfCg/J1BtJykpIgorICAgIGFiY2QKKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQxIC0tLwpkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxMSBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MTEKaW5kZXggNjVhNGIwMy4uYWM5ZDIyOCAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxMQorKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDExCkBAIC0xMzYsNCArMTM2LDYgQEAKIAogLygoPysxKShcMSkpL0IKIAorLy4oKD8yKSg/UilcMSkoKS9CCisKIC8tLSBFbmQgb2YgdGVzdGlucHV0MTEgLS0vCmRpZmYgLS1naXQgYS9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDEyIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxMgppbmRleCBkNjg1NTFmLi45NDRiZTY5IDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDEyCisrKyBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MTIKQEAgLTgsNiArOCw4IEBACiAKIC8oPyg/QzEpKD89YSlhKS9TIStJCiAKKy9iKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYiovUytJCisKIC9hYmMvUytJPnRlc3RzYXZlZHJlZ2V4CiAKIDx0ZXN0c2F2ZWRyZWdleApAQCAtOTUsNCArOTcsMTEgQEAKIAogLyhhKD86YXxifGN8ZHxlKWIpezgsMTZ9L1MrKwogCisvKD86fGF8KXsxMDB9eC9TKysKKworLyh4KD8xKSl7NH0vUysrCisKKy8oLnwuKSo/YngvCisgICAgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYXgKKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQxMiAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MTQgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDE0CmluZGV4IDMyNWVkOWUuLjE5MmI4ZDYgMTAwNjQ0Ci0tLSBhL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MTQKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxNApAQCAtMzQwLDQgKzM0MCw2IEBACiAKIC9bXlxzXSpccyogW15cV10rXFcrIFteXGRdKj9cZDAgW15cZFx3XXs0LDZ9P1x3KkEvQloKIAorLyg/J0FCQydbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXShbYmFyXSgqVEhFTjpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpLworCiAvLS0gRW5kIG9mIHRlc3RpbnB1dDE0IC0tLwpkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxNyBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MTcKaW5kZXggMWQ5MzNjNy4uYzQ4ZTc3ZiAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQxNworKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDE3CkBAIC0zMDQsNCArMzA0LDYgQEAKIC9eW1x4ezEyMzR9XHh7NDMyMX1dezIsNH0/LwogICAgIFx4ezEyMzR9XHh7MTIzNH1ceHsxMjM0fQogCisvKCpUSEVOOkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBKS8KKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQxNyAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MiBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0MgppbmRleCA1OGZlNTNiLi5lMmU1MjBmIDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDIKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQyCkBAIC0xMzgwLDcgKzEzODAsNyBAQAogICAgIDFYCiAgICAgMTIzNDU2XFAKIAotLy9LRj4vZGV2L251bGwKKy8vS0Y+dGVzdHNhdmVkcmVnZXgKIAogL2FiYy9JUz50ZXN0c2F2ZWRyZWdleAogPHRlc3RzYXZlZHJlZ2V4CkBAIC00MTUyLDQgKzQxNTIsNjkgQEAKIAogLygoPzIpezczfSg/MikpKCg/MSkpLwogCisvLigoPzIpKD9SKVwxKSgpL0JaCisKKy8oPzEpKCkoKCgoKChcMSsrKSlceDg1KSspfCkpLworCisvKFw5KisoPzIpO1wzKysoKTJ8KSsrey8KKworL1xWXHg4NVw5KisoKD8yKVwzKysoKTIpKjoyLworCisvKCgoPyhSKSl7MCwyfSkgKD8nJygoPydSJykoKD8nUicpKSkpKS9KCisKKy8oKCg/KFgpKXswLDJ9KSAoPycnKCg/J1gnKSgoPydYJykpKSkpL0oKKworLygoKD8oUikpezAsMn0pICg/JycoKD8nWCcpKCg/J1InKSkpKSkvCisKKyIoP0opKD8nZCcoPydkJ1xne2R9KSkiCisKKyIuKj9caC4rLlwuK1xSKj9ceGQoP2kpKD89ISg/PWJgYmBiYFxgYlx4YTliISlgXGFgYmJiYmJiYmJiYmJiYmBiYmJiYmJiYmJiYmIqUlx4ODViYmJiYmJiXEM/eygoPzIpKD8pKSgoCitcSCl7OCg/PD0oPzEpezI5fVx4YThiYmJiXHgxNlx4ZFx4YzZeKCQoPzwhICkoXHhhOUg0KXs0fWh9MSlCKSlceDE1JykiCisKKyIoP0o6KD98KD8nUicpKFxrJ1InKXwoKD8nUicpKSkpIgorCisvKD88PXwoXCxcJCg/NzM1OTE2MjA0NDkwMDU4Mjg4MTYpXHhhOC57N30pezZ9XHgwOSkvCisKKy8vCitcTzEKKworL14oPzooPygxKXh8KSspKyQoKS9CWgorCisvKD89ZGkoPzw9KD8xKSl8KD89KC4pKSkpLworCisvKD8oUikpKisvQloKKworL1tbOlxcXSg/J2FiYycpW2E6XS8KKworIltbWy5ceGU4TnFceGZmcVx4ZmZceGUwXHgyfHx8OjpOcVx4ZmZxXHhmZlx4ZTBceDZceDJ8fHw6OltbWzpbOjo6Ojo6W1tbW1s6Ojo6Ojo6Ols6W1tbOls6OjpbW1tbW1tbW1tbW1s6Ojo6Ojo6Ojo6Ojo6Ojo6OltbLlx4ZThOcVx4ZmZxXHhmZlx4ZTBceDJ8fHw6Ok5xXHhmZnFceGZmXHhlMFx4Nlx4Mnx8fDo6W1tbOls6Ojo6OjpbW1tbWzo6Ojo6Ojo6WzpbW1s6Wzo6OltbW1tbW1tbW1tbW1tbOjo6RVtbWzpbOltbOls6OjpbWzo6OkVbW1s6WzpbWzonWzo6Ojo6RVtbWzpbOjo6Ojo6W1tbOltbW1tbW1s6OkVbW1s6Wzo6Ojo6OltbWzpbW1tbW1tbWzpbWzo6Wzo6OjpbWzo6Ojo6OjpbWzpbW1tbW1tbOltbOjpbOltbOlt+IgorCisvKCkoPyhSKTApKisvQloKKworLyg/Ui06KD88LworCisvKD8xKXszOTE4fSgoKCgoMChcaydSJykpKSkoP0opKD8nUicoPydSJ1wzKXs5OX0pKSkvSQorCisvKD9KOig/fCg6KD98KD8nUicpKFxrJ1InKXwoKD8nUicpKSlIJ1JrJ1JmKXxzKD8nUicpKSkvCisKKy8wKD8wKXwoMSkoKlRIRU4pKCpTS0lQOjApKCpGQUlMKS8KKyAgICAwMQorCisvKCg/KFI4MDAwMDAwMDAwKSkpLyAKKworLyg/KDgwMDAwMDAwMDAvCisKKy8oPzphYik/KD86YWIpKD86YWIpLworICAgIGFiYWIKKyAgICBhYmFiYWIKKyAgICBhYmEKKworLygoKk1BUks6QSkpKythKCpTS0lQOkIpYi8KKyAgICBhYWNiCisKKy8oP0o6KD98KDooP3woPydSJykoXHooP3woPydSJykoXGsnUicpfCgoPydSJykpKWsnUicpfCgoPydSJykpKUgnQWsnUmYpfHMoPydSJykpKS8KKworLyg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPzxhPjEpLworCisvYVtbOnB1bmN0Ol1iXS9CWgorCiAvLS0gRW5kIG9mIHRlc3RpbnB1dDIgLS0vCmRpZmYgLS1naXQgYS9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDYgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDYKaW5kZXggMDJjZWYwZC4uYWViNjJhMCAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQ2CisrKyBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0NgpAQCAtMTUwMiw0ICsxNTAyLDU1IEBACiAvXENcWCpRVC84CiAgICAg04VceDBhVAogCisvW1xwUyNtb3FdLworICAgID0KKworL1tbOnB1bmN0Ol1dLzhXCisgICAgXHhjMlx4YjQKKyAgICBceHtiNH0gCisKKy9bWzpeYXNjaWk6XV0vOFcKKyAgICBceHsxMDB9CisgICAgXHh7MjAwfQorICAgIFx4ezMwMH0KKyAgICBceHszN2V9CisgICAgYQorICAgIDkKKyAgICBnCisKKy9bWzpeYXNjaWk6XVx3XS84VworICAgIGEKKyAgICA5CisgICAgZworICAgIFx4ezEwMH0KKyAgICBceHsyMDB9CisgICAgXHh7MzAwfQorICAgIFx4ezM3ZX0KKworL1tcd1s6XmFzY2lpOl1dLzhXCisgICAgYQorICAgIDkKKyAgICBnCisgICAgXHh7MTAwfQorICAgIFx4ezIwMH0KKyAgICBceHszMDB9CisgICAgXHh7MzdlfQorCisvW15bOmFzY2lpOl1cV10vOFcKKyAgICBhCisgICAgOQorICAgIGcKKyAgICBceHsxMDB9CisgICAgXHh7MjAwfQorICAgIFx4ezMwMH0KKyAgICBceHszN2V9CisKKy9bWzpeYXNjaWk6XWFdLzhXCisgICAgYQorICAgIDkKKyAgICBnCisgICAgXHh7MTAwfQorICAgIFx4ezIwMH0KKyAgICBceHszN2V9CisKIC8tLSBFbmQgb2YgdGVzdGlucHV0NiAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0NyBiL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0NwppbmRleCA3YTY2MDI1Li5lNDExYTRiIDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RpbnB1dDcKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXQ3CkBAIC04MzgsNCArODM4LDE5IEBACiAvXnM/Yy9taThJCiAgICAgc2NhdAogCisvW1xXXHB7QW55fV0vQloKKyAgICBhYmMKKyAgICAxMjMgCisKKy9bXFdccExdL0JaCisgICAgYWJjCisgICAgKiogRmFpbGVycyAKKyAgICAxMjMgICAgIAorCisvYVtbOnB1bmN0Ol1iXS9XQloKKworL2FbWzpwdW5jdDpdYl0vOFdCWgorCisvYVtiWzpwdW5jdDpdXS84V0JaCisKIC8tLSBFbmQgb2YgdGVzdGlucHV0NyAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdGlucHV0RUJDIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXRFQkMKaW5kZXggNTZlZmNkMC4uMzc4NzU1ZCAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXRFQkMKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0aW5wdXRFQkMKQEAgLTI5LDEzICsyOSwxNiBAQAogCiAvXkFciC8KICAgICBBIEIKKyAgICBBXHg0MUIKIAogLy0tIFRlc3QgXEggLS0vCiAKIC9eQVzILwogICAgIEFCCisgICAgQVx4NDJCCiAgICAgKiogRmFpbAogICAgIEEgQgorICAgIEFceDQxQgogCiAvLS0gVGVzdCBcUiAtLS8KIApkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MSBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDEKaW5kZXggMGE1M2ZkMC4uZTg1MmFiOSAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MQorKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxCkBAIC05NDI5LDQgKzk0MjksOSBAQAogIDA6IGFhYWFhYWFhYQogIDE6IGEKIAorIig/fChcaydQbScpfCg/J1BtJykpIgorICAgIGFiY2QKKyAwOiAKKyAxOiAKKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQxIC0tLwpkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTEtMTYgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxMS0xNgppbmRleCA0MjJmMmFkLi45YTBhMTJkIDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxMS0xNgorKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxMS0xNgpAQCAtMjMxLDcgKzIzMSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLyg/UDxhPmEpLi4uKD9QPWEpYmJiKD9QPmEpZC9CTQotTWVtb3J5IGFsbG9jYXRpb24gKGNvZGUgc3BhY2UpOiA2MQorTWVtb3J5IGFsbG9jYXRpb24gKGNvZGUgc3BhY2UpOiA3NwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDAgIDI0IEJyYQogICAyICAgNSBDQnJhIDEKQEAgLTY1MCwxOCArNjUwLDE4IEBACiAKIC9bWzpeYWxwaGE6XVs6XmNudHJsOl1dKy84V0IKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAwICAyNiBCcmEKLSAgMiAgICAgWyAtflx4ODAtXHhmZlxQe0x9XSsrCi0gMjYgIDI2IEtldAotIDI4ICAgICBFbmQKKyAgMCAgMzAgQnJhCisgIDIgICAgIFsgLX5ceDgwLVx4ZmZcUHtMfVx4ezEwMH0tXHh7MTBmZmZmfV0rKworIDMwICAzMCBLZXQKKyAzMiAgICAgRW5kCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogL1tbOl5jbnRybDpdWzpeYWxwaGE6XV0rLzhXQgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIDAgIDI2IEJyYQotICAyICAgICBbIC1+XHg4MC1ceGZmXFB7TH1dKysKLSAyNiAgMjYgS2V0Ci0gMjggICAgIEVuZAorICAwICAzMCBCcmEKKyAgMiAgICAgWyAtflx4ODAtXHhmZlx4ezEwMH0tXHh7MTBmZmZmfVxQe0x9XSsrCisgMzAgIDMwIEtldAorIDMyICAgICBFbmQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvW1s6YWxwaGE6XV0rLzhXQgpAQCAtNzQ4LDQgKzc0OCwyMSBAQAogIDIyICAgICBFbmQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisvLigoPzIpKD9SKVwxKSgpL0IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAwICAyMyBCcmEKKyAgMiAgICAgQW55CisgIDMgIDEzIE9uY2UKKyAgNSAgIDkgQ0JyYSAxCisgIDggIDE4IFJlY3Vyc2UKKyAxMCAgIDAgUmVjdXJzZQorIDEyICAgICBcMQorIDE0ICAgOSBLZXQKKyAxNiAgMTMgS2V0CisgMTggICAzIENCcmEgMgorIDIxICAgMyBLZXQKKyAyMyAgMjMgS2V0CisgMjUgICAgIEVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIC8tLSBFbmQgb2YgdGVzdGlucHV0MTEgLS0vCmRpZmYgLS1naXQgYS9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxMS0zMiBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDExLTMyCmluZGV4IGQ5NTNlYzguLjU3ZTVkYTAgMTAwNjQ0Ci0tLSBhL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDExLTMyCisrKyBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDExLTMyCkBAIC0yMzEsNyArMjMxLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvKD9QPGE+YSkuLi4oP1A9YSliYmIoP1A+YSlkL0JNCi1NZW1vcnkgYWxsb2NhdGlvbiAoY29kZSBzcGFjZSk6IDEyNQorTWVtb3J5IGFsbG9jYXRpb24gKGNvZGUgc3BhY2UpOiAxNTcKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAwICAyNCBCcmEKICAgMiAgIDUgQ0JyYSAxCkBAIC02NTAsMTggKzY1MCwxOCBAQAogCiAvW1s6XmFscGhhOl1bOl5jbnRybDpdXSsvOFdCCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgMCAgMTggQnJhCi0gIDIgICAgIFsgLX5ceDgwLVx4ZmZcUHtMfV0rKwotIDE4ICAxOCBLZXQKLSAyMCAgICAgRW5kCisgIDAgIDIxIEJyYQorICAyICAgICBbIC1+XHg4MC1ceGZmXFB7TH1ceHsxMDB9LVx4ezEwZmZmZn1dKysKKyAyMSAgMjEgS2V0CisgMjMgICAgIEVuZAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC9bWzpeY250cmw6XVs6XmFscGhhOl1dKy84V0IKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAwICAxOCBCcmEKLSAgMiAgICAgWyAtflx4ODAtXHhmZlxQe0x9XSsrCi0gMTggIDE4IEtldAotIDIwICAgICBFbmQKKyAgMCAgMjEgQnJhCisgIDIgICAgIFsgLX5ceDgwLVx4ZmZceHsxMDB9LVx4ezEwZmZmZn1cUHtMfV0rKworIDIxICAyMSBLZXQKKyAyMyAgICAgRW5kCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogL1tbOmFscGhhOl1dKy84V0IKQEAgLTc0OCw0ICs3NDgsMjEgQEAKICAyMiAgICAgRW5kCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorLy4oKD8yKSg/UilcMSkoKS9CCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMCAgMjMgQnJhCisgIDIgICAgIEFueQorICAzICAxMyBPbmNlCisgIDUgICA5IENCcmEgMQorICA4ICAxOCBSZWN1cnNlCisgMTAgICAwIFJlY3Vyc2UKKyAxMiAgICAgXDEKKyAxNCAgIDkgS2V0CisgMTYgIDEzIEtldAorIDE4ICAgMyBDQnJhIDIKKyAyMSAgIDMgS2V0CisgMjMgIDIzIEtldAorIDI1ICAgICBFbmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAvLS0gRW5kIG9mIHRlc3RpbnB1dDExIC0tLwpkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTEtOCBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDExLTgKaW5kZXggNmVjMThlYy4uNzQ4NTQ4YSAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTEtOAorKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxMS04CkBAIC0yMzEsNyArMjMxLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvKD9QPGE+YSkuLi4oP1A9YSliYmIoP1A+YSlkL0JNCi1NZW1vcnkgYWxsb2NhdGlvbiAoY29kZSBzcGFjZSk6IDM4CitNZW1vcnkgYWxsb2NhdGlvbiAoY29kZSBzcGFjZSk6IDUwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMCAgMzAgQnJhCiAgIDMgICA3IENCcmEgMQpAQCAtNjUwLDE4ICs2NTAsMTggQEAKIAogL1tbOl5hbHBoYTpdWzpeY250cmw6XV0rLzhXQgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIDAgIDQ0IEJyYQotICAzICAgICBbIC1+XHg4MC1ceGZmXFB7TH1dKysKLSA0NCAgNDQgS2V0Ci0gNDcgICAgIEVuZAorICAwICA1MSBCcmEKKyAgMyAgICAgWyAtflx4ODAtXHhmZlxQe0x9XHh7MTAwfS1ceHsxMGZmZmZ9XSsrCisgNTEgIDUxIEtldAorIDU0ICAgICBFbmQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvW1s6XmNudHJsOl1bOl5hbHBoYTpdXSsvOFdCCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgMCAgNDQgQnJhCi0gIDMgICAgIFsgLX5ceDgwLVx4ZmZcUHtMfV0rKwotIDQ0ICA0NCBLZXQKLSA0NyAgICAgRW5kCisgIDAgIDUxIEJyYQorICAzICAgICBbIC1+XHg4MC1ceGZmXHh7MTAwfS1ceHsxMGZmZmZ9XFB7TH1dKysKKyA1MSAgNTEgS2V0CisgNTQgICAgIEVuZAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC9bWzphbHBoYTpdXSsvOFdCCkBAIC03NDgsNCArNzQ4LDIxIEBACiAgMzQgICAgIEVuZAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy8uKCg/MikoP1IpXDEpKCkvQgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDAgIDM1IEJyYQorICAzICAgICBBbnkKKyAgNCAgMjAgT25jZQorICA3ICAxNCBDQnJhIDEKKyAxMiAgMjcgUmVjdXJzZQorIDE1ICAgMCBSZWN1cnNlCisgMTggICAgIFwxCisgMjEgIDE0IEtldAorIDI0ICAyMCBLZXQKKyAyNyAgIDUgQ0JyYSAyCisgMzIgICA1IEtldAorIDM1ICAzNSBLZXQKKyAzOCAgICAgRW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQxMSAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDEyIGIvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTIKaW5kZXggN2ExY2Y2OS4uODc5MTEwOCAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTIKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTIKQEAgLTMwLDYgKzMwLDE1IEBACiBObyBzdGFydGluZyBjaGFyIGxpc3QKIEpJVCBzdHVkeSB3YXMgbm90IHN1Y2Nlc3NmdWwKIAorL2IqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKmIqYipiKi9TK0kKK0NhcHR1cmluZyBzdWJwYXR0ZXJuIGNvdW50ID0gMAorTWF5IG1hdGNoIGVtcHR5IHN0cmluZworTm8gb3B0aW9ucworTm8gZmlyc3QgY2hhcgorTm8gbmVlZCBjaGFyCitTdHVkeSByZXR1cm5lZCBOVUxMCitKSVQgc3R1ZHkgd2FzIG5vdCBzdWNjZXNzZnVsCisKIC9hYmMvUytJPnRlc3RzYXZlZHJlZ2V4CiBDYXB0dXJpbmcgc3VicGF0dGVybiBjb3VudCA9IDAKIE5vIG9wdGlvbnMKQEAgLTE4NCw0ICsxOTMsMTIgQEAKIAogLyhhKD86YXxifGN8ZHxlKWIpezgsMTZ9L1MrKwogCisvKD86fGF8KXsxMDB9eC9TKysKKworLyh4KD8xKSl7NH0vUysrCisKKy8oLnwuKSo/YngvCisgICAgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYXgKK0Vycm9yIC04IChtYXRjaCBsaW1pdCBleGNlZWRlZCkKKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQxMiAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDE0IGIvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTQKaW5kZXggYWU4NTY4MS4uMDIwZjUxZSAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTQKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MTQKQEAgLTUyNyw0ICs1MjcsNiBAQAogICAgICAgICBFbmQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisvKD8nQUJDJ1tiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKFtiYXJdKCpUSEVOOkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkvCisKIC8tLSBFbmQgb2YgdGVzdGlucHV0MTQgLS0vCmRpZmYgLS1naXQgYS9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQxNyBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDE3CmluZGV4IDFhM2I0OTIuLjllZjZjNzIgMTAwNjQ0Ci0tLSBhL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDE3CisrKyBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDE3CkBAIC01NTUsNCArNTU1LDYgQEAKICAgICBceHsxMjM0fVx4ezEyMzR9XHh7MTIzNH0KICAwOiBceHsxMjM0fVx4ezEyMzR9CiAKKy8oKlRIRU46QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEpLworCiAvLS0gRW5kIG9mIHRlc3RpbnB1dDE3IC0tLwpkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MiBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDIKaW5kZXggYjcxOGRmMC4uODVjNTY1ZCAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0MgorKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQyCkBAIC01NjE0LDkgKzU2MTQsOSBAQAogICAgIDEyMzQ1NlxQCiBObyBtYXRjaAogCi0vL0tGPi9kZXYvbnVsbAotQ29tcGlsZWQgcGF0dGVybiB3cml0dGVuIHRvIC9kZXYvbnVsbAotU3R1ZHkgZGF0YSB3cml0dGVuIHRvIC9kZXYvbnVsbAorLy9LRj50ZXN0c2F2ZWRyZWdleAorQ29tcGlsZWQgcGF0dGVybiB3cml0dGVuIHRvIHRlc3RzYXZlZHJlZ2V4CitTdHVkeSBkYXRhIHdyaXR0ZW4gdG8gdGVzdHNhdmVkcmVnZXgKIAogL2FiYy9JUz50ZXN0c2F2ZWRyZWdleAogQ2FwdHVyaW5nIHN1YnBhdHRlcm4gY291bnQgPSAwCkBAIC05MTM1LDEwICs5MTM1LDEwIEBACiBGYWlsZWQ6IHN1YnBhdHRlcm4gbmFtZSBleHBlY3RlZCBhdCBvZmZzZXQgMwogCiAvXGsvCi1GYWlsZWQ6IFxrIGlzIG5vdCBmb2xsb3dlZCBieSBhIGJyYWNlZCwgYW5nbGUtYnJhY2tldGVkLCBvciBxdW90ZWQgbmFtZSBhdCBvZmZzZXQgMgorRmFpbGVkOiBcayBpcyBub3QgZm9sbG93ZWQgYnkgYSBicmFjZWQsIGFuZ2xlLWJyYWNrZXRlZCwgb3IgcXVvdGVkIG5hbWUgYXQgb2Zmc2V0IDEKIAogL1xrYWJjLwotRmFpbGVkOiBcayBpcyBub3QgZm9sbG93ZWQgYnkgYSBicmFjZWQsIGFuZ2xlLWJyYWNrZXRlZCwgb3IgcXVvdGVkIG5hbWUgYXQgb2Zmc2V0IDUKK0ZhaWxlZDogXGsgaXMgbm90IGZvbGxvd2VkIGJ5IGEgYnJhY2VkLCBhbmdsZS1icmFja2V0ZWQsIG9yIHF1b3RlZCBuYW1lIGF0IG9mZnNldCAxCiAKIC8oP1A9KS8KIEZhaWxlZDogc3VicGF0dGVybiBuYW1lIGV4cGVjdGVkIGF0IG9mZnNldCA0CkBAIC05MTg2LDcgKzkxODYsNyBAQAogRmFpbGVkOiB1bmtub3duIFBPU0lYIGNsYXNzIG5hbWUgYXQgb2Zmc2V0IDMKIAogLyheKGF8YlxnPC0xJ2MpKS8KLUZhaWxlZDogXGcgaXMgbm90IGZvbGxvd2VkIGJ5IGEgYnJhY2VkLCBhbmdsZS1icmFja2V0ZWQsIG9yIHF1b3RlZCBuYW1lL251bWJlciBvciBieSBhIHBsYWluIG51bWJlciBhdCBvZmZzZXQgMTUKK0ZhaWxlZDogXGcgaXMgbm90IGZvbGxvd2VkIGJ5IGEgYnJhY2VkLCBhbmdsZS1icmFja2V0ZWQsIG9yIHF1b3RlZCBuYW1lL251bWJlciBvciBieSBhIHBsYWluIG51bWJlciBhdCBvZmZzZXQgOAogCiAvXig/KzEpKD88YT54fHkpezB9ei8KICAgICB4enh4CkBAIC0xNDA5OCwxMCArMTQwOTgsMTAgQEAKIEZhaWxlZDogZ3JvdXAgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBub24tZGlnaXQgYXQgb2Zmc2V0IDQKIAogL1xnJzNnaCcvCi1GYWlsZWQ6IFxnIGlzIG5vdCBmb2xsb3dlZCBieSBhIGJyYWNlZCwgYW5nbGUtYnJhY2tldGVkLCBvciBxdW90ZWQgbmFtZS9udW1iZXIgb3IgYnkgYSBwbGFpbiBudW1iZXIgYXQgb2Zmc2V0IDcKK0ZhaWxlZDogXGcgaXMgbm90IGZvbGxvd2VkIGJ5IGEgYnJhY2VkLCBhbmdsZS1icmFja2V0ZWQsIG9yIHF1b3RlZCBuYW1lL251bWJlciBvciBieSBhIHBsYWluIG51bWJlciBhdCBvZmZzZXQgMgogCiAvXGc8NWZnPi8KLUZhaWxlZDogXGcgaXMgbm90IGZvbGxvd2VkIGJ5IGEgYnJhY2VkLCBhbmdsZS1icmFja2V0ZWQsIG9yIHF1b3RlZCBuYW1lL251bWJlciBvciBieSBhIHBsYWluIG51bWJlciBhdCBvZmZzZXQgNworRmFpbGVkOiBcZyBpcyBub3QgZm9sbG93ZWQgYnkgYSBicmFjZWQsIGFuZ2xlLWJyYWNrZXRlZCwgb3IgcXVvdGVkIG5hbWUvbnVtYmVyIG9yIGJ5IGEgcGxhaW4gbnVtYmVyIGF0IG9mZnNldCAyCiAKIC8oPyg8NGdoPilhYmMpLwogRmFpbGVkOiBncm91cCBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIG5vbi1kaWdpdCBhdCBvZmZzZXQgNApAQCAtMTQ0MjMsNCArMTQ0MjMsMTU1IEBACiAKIC8oKD8yKXs3M30oPzIpKSgoPzEpKS8KIAorLy4oKD8yKSg/UilcMSkoKS9CWgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIEJyYQorICAgICAgICBBbnkKKyAgICAgICAgT25jZQorICAgICAgICBDQnJhIDEKKyAgICAgICAgUmVjdXJzZQorICAgICAgICBSZWN1cnNlCisgICAgICAgIFwxCisgICAgICAgIEtldAorICAgICAgICBLZXQKKyAgICAgICAgQ0JyYSAyCisgICAgICAgIEtldAorICAgICAgICBLZXQKKyAgICAgICAgRW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyg/MSkoKSgoKCgoKFwxKyspKVx4ODUpKyl8KSkvCisKKy8oXDkqKyg/Mik7XDMrKygpMnwpKyt7LworRmFpbGVkOiByZWZlcmVuY2UgdG8gbm9uLWV4aXN0ZW50IHN1YnBhdHRlcm4gYXQgb2Zmc2V0IDIyCisKKy9cVlx4ODVcOSorKCg/MilcMysrKCkyKSo6Mi8KK0ZhaWxlZDogcmVmZXJlbmNlIHRvIG5vbi1leGlzdGVudCBzdWJwYXR0ZXJuIGF0IG9mZnNldCAyNgorCisvKCgoPyhSKSl7MCwyfSkgKD8nJygoPydSJykoKD8nUicpKSkpKS9KCisKKy8oKCg/KFgpKXswLDJ9KSAoPycnKCg/J1gnKSgoPydYJykpKSkpL0oKKworLygoKD8oUikpezAsMn0pICg/JycoKD8nWCcpKCg/J1InKSkpKSkvCisKKyIoP0opKD8nZCcoPydkJ1xne2R9KSkiCisKKyIuKj9caC4rLlwuK1xSKj9ceGQoP2kpKD89ISg/PWJgYmBiYFxgYlx4YTliISlgXGFgYmJiYmJiYmJiYmJiYmBiYmJiYmJiYmJiYmIqUlx4ODViYmJiYmJiXEM/eygoPzIpKD8pKSgoCitcSCl7OCg/PD0oPzEpezI5fVx4YThiYmJiXHgxNlx4ZFx4YzZeKCQoPzwhICkoXHhhOUg0KXs0fWh9MSlCKSlceDE1JykiCisKKyIoP0o6KD98KD8nUicpKFxrJ1InKXwoKD8nUicpKSkpIgorCisvKD88PXwoXCxcJCg/NzM1OTE2MjA0NDkwMDU4Mjg4MTYpXHhhOC57N30pezZ9XHgwOSkvCitGYWlsZWQ6IG51bWJlciBpcyB0b28gYmlnIGF0IG9mZnNldCAzMgorCisvLworXE8xCitNYXRjaGVkLCBidXQgdG9vIG1hbnkgc3Vic3RyaW5ncworCisvXig/Oig/KDEpeHwpKykrJCgpL0JaCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgQnJhCisgICAgICAgIF4KKyAgICAgICAgU0JyYQorICAgICAgICBTQ29uZAorICAgICAgMSBDb25kIHJlZgorICAgICAgICB4CisgICAgICAgIEFsdAorICAgICAgICBLZXRSbWF4CisgICAgICAgIEtldFJtYXgKKyAgICAgICAgJAorICAgICAgICBDQnJhIDEKKyAgICAgICAgS2V0CisgICAgICAgIEtldAorICAgICAgICBFbmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKD89ZGkoPzw9KD8xKSl8KD89KC4pKSkpLworRmFpbGVkOiB1bm1hdGNoZWQgcGFyZW50aGVzZXMgYXQgb2Zmc2V0IDIzCisKKy8oPyhSKSkqKy9CWgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIEJyYQorICAgICAgICBCcmFwb3N6ZXJvCisgICAgICAgIFNCcmFQb3MKKyAgICAgICAgU0NvbmQKKyAgICAgICAgQ29uZCByZWN1cnNlIGFueQorICAgICAgICBLZXQKKyAgICAgICAgS2V0UnBvcworICAgICAgICBLZXQKKyAgICAgICAgRW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworL1tbOlxcXSg/J2FiYycpW2E6XS8KKworIltbWy5ceGU4TnFceGZmcVx4ZmZceGUwXHgyfHx8OjpOcVx4ZmZxXHhmZlx4ZTBceDZceDJ8fHw6OltbWzpbOjo6Ojo6W1tbW1s6Ojo6Ojo6Ols6W1tbOls6OjpbW1tbW1tbW1tbW1s6Ojo6Ojo6Ojo6Ojo6Ojo6OltbLlx4ZThOcVx4ZmZxXHhmZlx4ZTBceDJ8fHw6Ok5xXHhmZnFceGZmXHhlMFx4Nlx4Mnx8fDo6W1tbOls6Ojo6OjpbW1tbWzo6Ojo6Ojo6WzpbW1s6Wzo6OltbW1tbW1tbW1tbW1tbOjo6RVtbWzpbOltbOls6OjpbWzo6OkVbW1s6WzpbWzonWzo6Ojo6RVtbWzpbOjo6Ojo6W1tbOltbW1tbW1s6OkVbW1s6Wzo6Ojo6OltbWzpbW1tbW1tbWzpbWzo6Wzo6OjpbWzo6Ojo6OjpbWzpbW1tbW1tbOltbOjpbOltbOlt+IgorRmFpbGVkOiBtaXNzaW5nIHRlcm1pbmF0aW5nIF0gZm9yIGNoYXJhY3RlciBjbGFzcyBhdCBvZmZzZXQgMzUzCisKKy8oKSg/KFIpMCkqKy9CWgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIEJyYQorICAgICAgICBDQnJhIDEKKyAgICAgICAgS2V0CisgICAgICAgIEJyYXBvc3plcm8KKyAgICAgICAgU0JyYVBvcworICAgICAgICBTQ29uZAorICAgICAgICBDb25kIHJlY3Vyc2UgYW55CisgICAgICAgIDAKKyAgICAgICAgS2V0CisgICAgICAgIEtldFJwb3MKKyAgICAgICAgS2V0CisgICAgICAgIEVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8oP1ItOig/PC8KK0ZhaWxlZDogKD9SIG9yICg/WystXWRpZ2l0cyBtdXN0IGJlIGZvbGxvd2VkIGJ5ICkgYXQgb2Zmc2V0IDMKKworLyg/MSl7MzkxOH0oKCgoKDAoXGsnUicpKSkpKD9KKSg/J1InKD8nUidcMyl7OTl9KSkpL0kKK0NhcHR1cmluZyBzdWJwYXR0ZXJuIGNvdW50ID0gOAorTWF4IGJhY2sgcmVmZXJlbmNlID0gOAorTmFtZWQgY2FwdHVyaW5nIHN1YnBhdHRlcm5zOgorICBSICAgNworICBSICAgOAorTm8gb3B0aW9ucworRHVwbGljYXRlIG5hbWUgc3RhdHVzIGNoYW5nZXMKK05vIGZpcnN0IGNoYXIKK05lZWQgY2hhciA9ICcwJworCisvKD9KOig/fCg6KD98KD8nUicpKFxrJ1InKXwoKD8nUicpKSlIJ1JrJ1JmKXxzKD8nUicpKSkvCisKKy8wKD8wKXwoMSkoKlRIRU4pKCpTS0lQOjApKCpGQUlMKS8KKyAgICAwMQorTm8gbWF0Y2gKKworLygoPyhSODAwMDAwMDAwMCkpKS8gCitGYWlsZWQ6IG51bWJlciBpcyB0b28gYmlnIGF0IG9mZnNldCAxNgorCisvKD8oODAwMDAwMDAwMC8KK0ZhaWxlZDogbnVtYmVyIGlzIHRvbyBiaWcgYXQgb2Zmc2V0IDEzCisKKy8oPzphYik/KD86YWIpKD86YWIpLworICAgIGFiYWIKKyAwOiBhYmFiCisgICAgYWJhYmFiCisgMDogYWJhYmFiCisgICAgYWJhCitObyBtYXRjaAorCisvKCgqTUFSSzpBKSkrK2EoKlNLSVA6QiliLworICAgIGFhY2IKK05vIG1hdGNoCisKKy8oP0o6KD98KDooP3woPydSJykoXHooP3woPydSJykoXGsnUicpfCgoPydSJykpKWsnUicpfCgoPydSJykpKUgnQWsnUmYpfHMoPydSJykpKS8KKworLyg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPyZhKSg/JmEpKD8mYSkoPzxhPjEpLworCisvYVtbOnB1bmN0Ol1iXS9CWgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIEJyYQorICAgICAgICBhCisgICAgICAgIFshLS86LUBbLWBiey1+XQorICAgICAgICBLZXQKKyAgICAgICAgRW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogLy0tIEVuZCBvZiB0ZXN0aW5wdXQyIC0tLwpkaWZmIC0tZ2l0IGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0NiBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDYKaW5kZXggM2YwMzViOC4uYmViODVhYSAxMDA2NDQKLS0tIGEvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0NgorKysgYi9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQ2CkBAIC0yNDY5LDQgKzI0NjksOTIgQEAKICAgICDThVx4MGFUCiBObyBtYXRjaAogCisvW1xwUyNtb3FdLworICAgID0KKyAwOiA9CisKKy9bWzpwdW5jdDpdXS84VworICAgIFx4YzJceGI0CitObyBtYXRjaAorICAgIFx4e2I0fSAKK05vIG1hdGNoCisKKy9bWzpeYXNjaWk6XV0vOFcKKyAgICBceHsxMDB9CisgMDogXHh7MTAwfQorICAgIFx4ezIwMH0KKyAwOiBceHsyMDB9CisgICAgXHh7MzAwfQorIDA6IFx4ezMwMH0KKyAgICBceHszN2V9CisgMDogXHh7MzdlfQorICAgIGEKK05vIG1hdGNoCisgICAgOQorTm8gbWF0Y2gKKyAgICBnCitObyBtYXRjaAorCisvW1s6XmFzY2lpOl1cd10vOFcKKyAgICBhCisgMDogYQorICAgIDkKKyAwOiA5CisgICAgZworIDA6IGcKKyAgICBceHsxMDB9CisgMDogXHh7MTAwfQorICAgIFx4ezIwMH0KKyAwOiBceHsyMDB9CisgICAgXHh7MzAwfQorIDA6IFx4ezMwMH0KKyAgICBceHszN2V9CisgMDogXHh7MzdlfQorCisvW1x3WzpeYXNjaWk6XV0vOFcKKyAgICBhCisgMDogYQorICAgIDkKKyAwOiA5CisgICAgZworIDA6IGcKKyAgICBceHsxMDB9CisgMDogXHh7MTAwfQorICAgIFx4ezIwMH0KKyAwOiBceHsyMDB9CisgICAgXHh7MzAwfQorIDA6IFx4ezMwMH0KKyAgICBceHszN2V9CisgMDogXHh7MzdlfQorCisvW15bOmFzY2lpOl1cV10vOFcKKyAgICBhCitObyBtYXRjaAorICAgIDkKK05vIG1hdGNoCisgICAgZworTm8gbWF0Y2gKKyAgICBceHsxMDB9CisgMDogXHh7MTAwfQorICAgIFx4ezIwMH0KKyAwOiBceHsyMDB9CisgICAgXHh7MzAwfQorTm8gbWF0Y2gKKyAgICBceHszN2V9CitObyBtYXRjaAorCisvW1s6XmFzY2lpOl1hXS84VworICAgIGEKKyAwOiBhCisgICAgOQorTm8gbWF0Y2gKKyAgICBnCitObyBtYXRjaAorICAgIFx4ezEwMH0KKyAwOiBceHsxMDB9CisgICAgXHh7MjAwfQorIDA6IFx4ezIwMH0KKyAgICBceHszN2V9CisgMDogXHh7MzdlfQorCiAvLS0gRW5kIG9mIHRlc3RpbnB1dDYgLS0vCmRpZmYgLS1naXQgYS9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQ3IGIvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0NwppbmRleCBlZTQ2YmRiLi5jYzllYmRkIDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXQ3CisrKyBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dDcKQEAgLTk0OSw3ICs5NDksNyBAQAogL1tbOl5hbHBoYTpdWzpeY250cmw6XV0rLzhXQloKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICBCcmEKLSAgICAgICAgWyAtflx4ODAtXHhmZlxQe0x9XSsrCisgICAgICAgIFsgLX5ceDgwLVx4ZmZcUHtMfVx4ezEwMH0tXHh7MTBmZmZmfV0rKwogICAgICAgICBLZXQKICAgICAgICAgRW5kCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk2MSw3ICs5NjEsNyBAQAogL1tbOl5jbnRybDpdWzpeYWxwaGE6XV0rLzhXQloKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICBCcmEKLSAgICAgICAgWyAtflx4ODAtXHhmZlxQe0x9XSsrCisgICAgICAgIFsgLX5ceDgwLVx4ZmZceHsxMDB9LVx4ezEwZmZmZn1cUHtMfV0rKwogICAgICAgICBLZXQKICAgICAgICAgRW5kCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIyOTUsNCArMjI5NSw1NyBAQAogICAgIHNjYXQKICAwOiBzYwogCisvW1xXXHB7QW55fV0vQloKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBCcmEKKyAgICAgICAgW1x4MDAtLzotQFstXmB7LVx4ZmZccHtBbnl9XQorICAgICAgICBLZXQKKyAgICAgICAgRW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBhYmMKKyAwOiBhCisgICAgMTIzIAorIDA6IDEKKworL1tcV1xwTF0vQloKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBCcmEKKyAgICAgICAgW1x4MDAtLzotQFstXmB7LVx4ZmZccHtMfV0KKyAgICAgICAgS2V0CisgICAgICAgIEVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgYWJjCisgMDogYQorICAgICoqIEZhaWxlcnMgCisgMDogKgorICAgIDEyMyAgICAgCitObyBtYXRjaAorCisvYVtbOnB1bmN0Ol1iXS9XQloKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBCcmEKKyAgICAgICAgYQorICAgICAgICBbYls6cHVuY3Q6XV0KKyAgICAgICAgS2V0CisgICAgICAgIEVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy9hW1s6cHVuY3Q6XWJdLzhXQloKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBCcmEKKyAgICAgICAgYQorICAgICAgICBbYls6cHVuY3Q6XV0KKyAgICAgICAgS2V0CisgICAgICAgIEVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy9hW2JbOnB1bmN0Ol1dLzhXQloKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBCcmEKKyAgICAgICAgYQorICAgICAgICBbYls6cHVuY3Q6XV0KKyAgICAgICAgS2V0CisgICAgICAgIEVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIC8tLSBFbmQgb2YgdGVzdGlucHV0NyAtLS8KZGlmZiAtLWdpdCBhL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dEVCQyBiL2Rpc3QvdGVzdGRhdGEvdGVzdG91dHB1dEVCQwppbmRleCBhYmJmZGM0Li43MmI2ZmEzIDEwMDY0NAotLS0gYS9kaXN0L3Rlc3RkYXRhL3Rlc3RvdXRwdXRFQkMKKysrIGIvZGlzdC90ZXN0ZGF0YS90ZXN0b3V0cHV0RUJDCkBAIC00MSwxNiArNDEsMjIgQEAKIC9eQVyILwogICAgIEEgQgogIDA6IEFceDIwCisgICAgQVx4NDFCCisgMDogQUEKIAogLy0tIFRlc3QgXEggLS0vCiAKIC9eQVzILwogICAgIEFCCiAgMDogQUIKKyAgICBBXHg0MkIKKyAwOiBBQgogICAgICoqIEZhaWwKIE5vIG1hdGNoCiAgICAgQSBCCiBObyBtYXRjaAorICAgIEFceDQxQgorTm8gbWF0Y2gKIAogLy0tIFRlc3QgXFIgLS0vCiAKZGlmZiAtLWdpdCBhL3BjcmUuaCBiL3BjcmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggNGQyMDZhNy4uMDAwMDAwMAotLS0gYS9wY3JlLmgKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1kaXN0L3BjcmUuaC5nZW5lcmljClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGNyZS5oIGIvcGNyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNjM1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9wY3JlLmgKQEAgLTAsMCArMSw2NzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgIFBlcmwtQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVGhpcyBpcyB0aGUgcHVibGljIGhlYWRlciBmaWxlIGZvciB0aGUgUENSRSBsaWJyYXJ5LCB0byBiZSAjaW5jbHVkZWQgYnkKK2FwcGxpY2F0aW9ucyB0aGF0IGNhbGwgdGhlIFBDUkUgZnVuY3Rpb25zLgorCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ny0yMDE0IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2Ugbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCitBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKK0xJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKyNpZm5kZWYgX1BDUkVfSAorI2RlZmluZSBfUENSRV9ICisKKy8qIFRoZSBjdXJyZW50IFBDUkUgdmVyc2lvbiBpbmZvcm1hdGlvbi4gKi8KKworI2RlZmluZSBQQ1JFX01BSk9SICAgICAgICAgIDgKKyNkZWZpbmUgUENSRV9NSU5PUiAgICAgICAgICAzOAorI2RlZmluZSBQQ1JFX1BSRVJFTEVBU0UgICAgIAorI2RlZmluZSBQQ1JFX0RBVEUgICAgICAgICAgIDIwMTUtMTEtMjMKKworLyogV2hlbiBhbiBhcHBsaWNhdGlvbiBsaW5rcyB0byBhIFBDUkUgRExMIGluIFdpbmRvd3MsIHRoZSBzeW1ib2xzIHRoYXQgYXJlCitpbXBvcnRlZCBoYXZlIHRvIGJlIGlkZW50aWZpZWQgYXMgc3VjaC4gV2hlbiBidWlsZGluZyBQQ1JFLCB0aGUgYXBwcm9wcmlhdGUKK2V4cG9ydCBzZXR0aW5nIGlzIGRlZmluZWQgaW4gcGNyZV9pbnRlcm5hbC5oLCB3aGljaCBpbmNsdWRlcyB0aGlzIGZpbGUuIFNvIHdlCitkb24ndCBjaGFuZ2UgZXhpc3RpbmcgZGVmaW5pdGlvbnMgb2YgUENSRV9FWFBfREVDTCBhbmQgUENSRUNQUF9FWFBfREVDTC4gKi8KKworI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChQQ1JFX1NUQVRJQykKKyMgIGlmbmRlZiBQQ1JFX0VYUF9ERUNMCisjICAgIGRlZmluZSBQQ1JFX0VYUF9ERUNMICBleHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICBlbmRpZgorIyAgaWZkZWYgX19jcGx1c3BsdXMKKyMgICAgaWZuZGVmIFBDUkVDUFBfRVhQX0RFQ0wKKyMgICAgICBkZWZpbmUgUENSRUNQUF9FWFBfREVDTCAgZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICBlbmRpZgorIyAgICBpZm5kZWYgUENSRUNQUF9FWFBfREVGTgorIyAgICAgIGRlZmluZSBQQ1JFQ1BQX0VYUF9ERUZOICBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworLyogQnkgZGVmYXVsdCwgd2UgdXNlIHRoZSBzdGFuZGFyZCAiZXh0ZXJuIiBkZWNsYXJhdGlvbnMuICovCisKKyNpZm5kZWYgUENSRV9FWFBfREVDTAorIyAgaWZkZWYgX19jcGx1c3BsdXMKKyMgICAgZGVmaW5lIFBDUkVfRVhQX0RFQ0wgIGV4dGVybiAiQyIKKyMgIGVsc2UKKyMgICAgZGVmaW5lIFBDUkVfRVhQX0RFQ0wgIGV4dGVybgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyMgIGlmbmRlZiBQQ1JFQ1BQX0VYUF9ERUNMCisjICAgIGRlZmluZSBQQ1JFQ1BQX0VYUF9ERUNMICBleHRlcm4KKyMgIGVuZGlmCisjICBpZm5kZWYgUENSRUNQUF9FWFBfREVGTgorIyAgICBkZWZpbmUgUENSRUNQUF9FWFBfREVGTgorIyAgZW5kaWYKKyNlbmRpZgorCisvKiBIYXZlIHRvIGluY2x1ZGUgc3RkbGliLmggaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgc2l6ZV90IGlzIGRlZmluZWQ7CitpdCBpcyBuZWVkZWQgaGVyZSBmb3IgbWFsbG9jLiAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8qIEFsbG93IGZvciBDKysgdXNlcnMgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBQdWJsaWMgb3B0aW9ucy4gU29tZSBhcmUgY29tcGlsZS10aW1lIG9ubHksIHNvbWUgYXJlIHJ1bi10aW1lIG9ubHksIGFuZCBzb21lCithcmUgYm90aC4gTW9zdCBvZiB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgYXJlIHNhdmVkIHdpdGggdGhlIGNvbXBpbGVkIHJlZ2V4IHNvCit0aGF0IHRoZXkgY2FuIGJlIGluc3BlY3RlZCBkdXJpbmcgc3R1ZHlpbmcgKGFuZCB0aGVyZWZvcmUgSklUIGNvbXBpbGluZykuIE5vdGUKK3RoYXQgcGNyZV9zdHVkeSgpIGhhcyBpdHMgb3duIHNldCBvZiBvcHRpb25zLiBPcmlnaW5hbGx5LCBhbGwgdGhlIG9wdGlvbnMKK2RlZmluZWQgaGVyZSB1c2VkIGRpc3RpbmN0IGJpdHMuIEhvd2V2ZXIsIGFsbW9zdCBhbGwgdGhlIGJpdHMgaW4gYSAzMi1iaXQgd29yZAorYXJlIG5vdyB1c2VkLCBzbyBpbiBvcmRlciB0byBjb25zZXJ2ZSB0aGVtLCBvcHRpb24gYml0cyB0aGF0IHdlcmUgcHJldmlvdXNseQorb25seSByZWNvZ25pemVkIGF0IG1hdGNoaW5nIHRpbWUgKGkuZS4gYnkgcGNyZV9leGVjKCkgb3IgcGNyZV9kZmFfZXhlYygpKSBtYXkKK2Fsc28gYmUgdXNlZCBmb3IgY29tcGlsZS10aW1lIG9wdGlvbnMgdGhhdCBhZmZlY3Qgb25seSBjb21waWxpbmcgYW5kIGFyZSBub3QKK3JlbGV2YW50IGZvciBzdHVkeWluZyBvciBKSVQgY29tcGlsaW5nLgorCitTb21lIG9wdGlvbnMgZm9yIHBjcmVfY29tcGlsZSgpIGNoYW5nZSBpdHMgYmVoYXZpb3VyIGJ1dCBkbyBub3QgYWZmZWN0IHRoZQorYmVoYXZpb3VyIG9mIHRoZSBleGVjdXRpb24gZnVuY3Rpb25zLiBPdGhlciBvcHRpb25zIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUKK2V4ZWN1dGlvbiBmdW5jdGlvbnMgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlvdXIsIHdpdGggb3Igd2l0aG91dCBhZmZlY3RpbmcgdGhlCitiZWhhdmlvdXIgb2YgcGNyZV9jb21waWxlKCkuCisKK09wdGlvbnMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHBjcmVfY29tcGlsZSgpIGFyZSB0YWdnZWQgQ3ggYmVsb3csIHdpdGggdGhlc2UKK3ZhcmlhbnRzOgorCitDMSAgIEFmZmVjdHMgY29tcGlsZSBvbmx5CitDMiAgIERvZXMgbm90IGFmZmVjdCBjb21waWxlOyBhZmZlY3RzIGV4ZWMsIGRmYV9leGVjCitDMyAgIEFmZmVjdHMgY29tcGlsZSwgZXhlYywgZGZhX2V4ZWMKK0M0ICAgQWZmZWN0cyBjb21waWxlLCBleGVjLCBkZmFfZXhlYywgc3R1ZHkKK0M1ICAgQWZmZWN0cyBjb21waWxlLCBleGVjLCBzdHVkeQorCitPcHRpb25zIHRoYXQgY2FuIGJlIHNldCBmb3IgcGNyZV9leGVjKCkgYW5kL29yIHBjcmVfZGZhX2V4ZWMoKSBhcmUgZmxhZ2dlZCB3aXRoCitFIGFuZCBELCByZXNwZWN0aXZlbHkuIFRoZXkgdGFrZSBwcmVjZWRlbmNlIG92ZXIgQzMsIEM0LCBhbmQgQzUgc2V0dGluZ3MgcGFzc2VkCitmcm9tIHBjcmVfY29tcGlsZSgpLiBUaG9zZSB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggSklUIGV4ZWN1dGlvbiBhcmUgZmxhZ2dlZAord2l0aCBKLiAqLworCisjZGVmaW5lIFBDUkVfQ0FTRUxFU1MgICAgICAgICAgIDB4MDAwMDAwMDEgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfTVVMVElMSU5FICAgICAgICAgIDB4MDAwMDAwMDIgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfRE9UQUxMICAgICAgICAgICAgIDB4MDAwMDAwMDQgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfRVhURU5ERUQgICAgICAgICAgIDB4MDAwMDAwMDggIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfQU5DSE9SRUQgICAgICAgICAgIDB4MDAwMDAwMTAgIC8qIEM0IEUgRCAgICovCisjZGVmaW5lIFBDUkVfRE9MTEFSX0VORE9OTFkgICAgIDB4MDAwMDAwMjAgIC8qIEMyICAgICAgICovCisjZGVmaW5lIFBDUkVfRVhUUkEgICAgICAgICAgICAgIDB4MDAwMDAwNDAgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfTk9UQk9MICAgICAgICAgICAgIDB4MDAwMDAwODAgIC8qICAgIEUgRCBKICovCisjZGVmaW5lIFBDUkVfTk9URU9MICAgICAgICAgICAgIDB4MDAwMDAxMDAgIC8qICAgIEUgRCBKICovCisjZGVmaW5lIFBDUkVfVU5HUkVFRFkgICAgICAgICAgIDB4MDAwMDAyMDAgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfTk9URU1QVFkgICAgICAgICAgIDB4MDAwMDA0MDAgIC8qICAgIEUgRCBKICovCisjZGVmaW5lIFBDUkVfVVRGOCAgICAgICAgICAgICAgIDB4MDAwMDA4MDAgIC8qIEM0ICAgICAgICApICAgICAgICAgICovCisjZGVmaW5lIFBDUkVfVVRGMTYgICAgICAgICAgICAgIDB4MDAwMDA4MDAgIC8qIEM0ICAgICAgICApIFN5bm9ueW1zICovCisjZGVmaW5lIFBDUkVfVVRGMzIgICAgICAgICAgICAgIDB4MDAwMDA4MDAgIC8qIEM0ICAgICAgICApICAgICAgICAgICovCisjZGVmaW5lIFBDUkVfTk9fQVVUT19DQVBUVVJFICAgIDB4MDAwMDEwMDAgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfTk9fVVRGOF9DSEVDSyAgICAgIDB4MDAwMDIwMDAgIC8qIEMxIEUgRCBKICApICAgICAgICAgICovCisjZGVmaW5lIFBDUkVfTk9fVVRGMTZfQ0hFQ0sgICAgIDB4MDAwMDIwMDAgIC8qIEMxIEUgRCBKICApIFN5bm9ueW1zICovCisjZGVmaW5lIFBDUkVfTk9fVVRGMzJfQ0hFQ0sgICAgIDB4MDAwMDIwMDAgIC8qIEMxIEUgRCBKICApICAgICAgICAgICovCisjZGVmaW5lIFBDUkVfQVVUT19DQUxMT1VUICAgICAgIDB4MDAwMDQwMDAgIC8qIEMxICAgICAgICovCisjZGVmaW5lIFBDUkVfUEFSVElBTF9TT0ZUICAgICAgIDB4MDAwMDgwMDAgIC8qICAgIEUgRCBKICApIFN5bm9ueW1zICovCisjZGVmaW5lIFBDUkVfUEFSVElBTCAgICAgICAgICAgIDB4MDAwMDgwMDAgIC8qICAgIEUgRCBKICApICAgICAgICAgICovCisKKy8qIFRoaXMgcGFpciB1c2UgdGhlIHNhbWUgYml0LiAqLworI2RlZmluZSBQQ1JFX05FVkVSX1VURiAgICAgICAgICAweDAwMDEwMDAwICAvKiBDMSAgICAgICAgKSBPdmVybGFpZCAqLworI2RlZmluZSBQQ1JFX0RGQV9TSE9SVEVTVCAgICAgICAweDAwMDEwMDAwICAvKiAgICAgIEQgICAgKSBPdmVybGFpZCAqLworCisvKiBUaGlzIHBhaXIgdXNlIHRoZSBzYW1lIGJpdC4gKi8KKyNkZWZpbmUgUENSRV9OT19BVVRPX1BPU1NFU1MgICAgMHgwMDAyMDAwMCAgLyogQzEgICAgICAgICkgT3ZlcmxhaWQgKi8KKyNkZWZpbmUgUENSRV9ERkFfUkVTVEFSVCAgICAgICAgMHgwMDAyMDAwMCAgLyogICAgICBEICAgICkgT3ZlcmxhaWQgKi8KKworI2RlZmluZSBQQ1JFX0ZJUlNUTElORSAgICAgICAgICAweDAwMDQwMDAwICAvKiBDMyAgICAgICAqLworI2RlZmluZSBQQ1JFX0RVUE5BTUVTICAgICAgICAgICAweDAwMDgwMDAwICAvKiBDMSAgICAgICAqLworI2RlZmluZSBQQ1JFX05FV0xJTkVfQ1IgICAgICAgICAweDAwMTAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX05FV0xJTkVfTEYgICAgICAgICAweDAwMjAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX05FV0xJTkVfQ1JMRiAgICAgICAweDAwMzAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX05FV0xJTkVfQU5ZICAgICAgICAweDAwNDAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX05FV0xJTkVfQU5ZQ1JMRiAgICAweDAwNTAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX0JTUl9BTllDUkxGICAgICAgICAweDAwODAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX0JTUl9VTklDT0RFICAgICAgICAweDAxMDAwMDAwICAvKiBDMyBFIEQgICAqLworI2RlZmluZSBQQ1JFX0pBVkFTQ1JJUFRfQ09NUEFUICAweDAyMDAwMDAwICAvKiBDNSAgICAgICAqLworI2RlZmluZSBQQ1JFX05PX1NUQVJUX09QVElNSVpFICAweDA0MDAwMDAwICAvKiBDMiBFIEQgICAgKSBTeW5vbnltcyAqLworI2RlZmluZSBQQ1JFX05PX1NUQVJUX09QVElNSVNFICAweDA0MDAwMDAwICAvKiBDMiBFIEQgICAgKSAgICAgICAgICAqLworI2RlZmluZSBQQ1JFX1BBUlRJQUxfSEFSRCAgICAgICAweDA4MDAwMDAwICAvKiAgICBFIEQgSiAqLworI2RlZmluZSBQQ1JFX05PVEVNUFRZX0FUU1RBUlQgICAweDEwMDAwMDAwICAvKiAgICBFIEQgSiAqLworI2RlZmluZSBQQ1JFX1VDUCAgICAgICAgICAgICAgICAweDIwMDAwMDAwICAvKiBDMyAgICAgICAqLworCisvKiBFeGVjLXRpbWUgYW5kIGdldC9zZXQtdGltZSBlcnJvciBjb2RlcyAqLworCisjZGVmaW5lIFBDUkVfRVJST1JfTk9NQVRDSCAgICAgICAgICAoLTEpCisjZGVmaW5lIFBDUkVfRVJST1JfTlVMTCAgICAgICAgICAgICAoLTIpCisjZGVmaW5lIFBDUkVfRVJST1JfQkFET1BUSU9OICAgICAgICAoLTMpCisjZGVmaW5lIFBDUkVfRVJST1JfQkFETUFHSUMgICAgICAgICAoLTQpCisjZGVmaW5lIFBDUkVfRVJST1JfVU5LTk9XTl9PUENPREUgICAoLTUpCisjZGVmaW5lIFBDUkVfRVJST1JfVU5LTk9XTl9OT0RFICAgICAoLTUpICAvKiBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqLworI2RlZmluZSBQQ1JFX0VSUk9SX05PTUVNT1JZICAgICAgICAgKC02KQorI2RlZmluZSBQQ1JFX0VSUk9SX05PU1VCU1RSSU5HICAgICAgKC03KQorI2RlZmluZSBQQ1JFX0VSUk9SX01BVENITElNSVQgICAgICAgKC04KQorI2RlZmluZSBQQ1JFX0VSUk9SX0NBTExPVVQgICAgICAgICAgKC05KSAgLyogTmV2ZXIgdXNlZCBieSBQQ1JFIGl0c2VsZiAqLworI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFVURjggICAgICAgICAoLTEwKSAgLyogU2FtZSBmb3IgOC8xNi8zMiAqLworI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFVURjE2ICAgICAgICAoLTEwKSAgLyogU2FtZSBmb3IgOC8xNi8zMiAqLworI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFVURjMyICAgICAgICAoLTEwKSAgLyogU2FtZSBmb3IgOC8xNi8zMiAqLworI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFVURjhfT0ZGU0VUICAoLTExKSAgLyogU2FtZSBmb3IgOC8xNiAqLworI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFVURjE2X09GRlNFVCAoLTExKSAgLyogU2FtZSBmb3IgOC8xNiAqLworI2RlZmluZSBQQ1JFX0VSUk9SX1BBUlRJQUwgICAgICAgICAoLTEyKQorI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFBBUlRJQUwgICAgICAoLTEzKQorI2RlZmluZSBQQ1JFX0VSUk9SX0lOVEVSTkFMICAgICAgICAoLTE0KQorI2RlZmluZSBQQ1JFX0VSUk9SX0JBRENPVU5UICAgICAgICAoLTE1KQorI2RlZmluZSBQQ1JFX0VSUk9SX0RGQV9VSVRFTSAgICAgICAoLTE2KQorI2RlZmluZSBQQ1JFX0VSUk9SX0RGQV9VQ09ORCAgICAgICAoLTE3KQorI2RlZmluZSBQQ1JFX0VSUk9SX0RGQV9VTUxJTUlUICAgICAoLTE4KQorI2RlZmluZSBQQ1JFX0VSUk9SX0RGQV9XU1NJWkUgICAgICAoLTE5KQorI2RlZmluZSBQQ1JFX0VSUk9SX0RGQV9SRUNVUlNFICAgICAoLTIwKQorI2RlZmluZSBQQ1JFX0VSUk9SX1JFQ1VSU0lPTkxJTUlUICAoLTIxKQorI2RlZmluZSBQQ1JFX0VSUk9SX05VTExXU0xJTUlUICAgICAoLTIyKSAgLyogTm8gbG9uZ2VyIGFjdHVhbGx5IHVzZWQgKi8KKyNkZWZpbmUgUENSRV9FUlJPUl9CQURORVdMSU5FICAgICAgKC0yMykKKyNkZWZpbmUgUENSRV9FUlJPUl9CQURPRkZTRVQgICAgICAgKC0yNCkKKyNkZWZpbmUgUENSRV9FUlJPUl9TSE9SVFVURjggICAgICAgKC0yNSkKKyNkZWZpbmUgUENSRV9FUlJPUl9TSE9SVFVURjE2ICAgICAgKC0yNSkgIC8qIFNhbWUgZm9yIDgvMTYgKi8KKyNkZWZpbmUgUENSRV9FUlJPUl9SRUNVUlNFTE9PUCAgICAgKC0yNikKKyNkZWZpbmUgUENSRV9FUlJPUl9KSVRfU1RBQ0tMSU1JVCAgKC0yNykKKyNkZWZpbmUgUENSRV9FUlJPUl9CQURNT0RFICAgICAgICAgKC0yOCkKKyNkZWZpbmUgUENSRV9FUlJPUl9CQURFTkRJQU5ORVNTICAgKC0yOSkKKyNkZWZpbmUgUENSRV9FUlJPUl9ERkFfQkFEUkVTVEFSVCAgKC0zMCkKKyNkZWZpbmUgUENSRV9FUlJPUl9KSVRfQkFET1BUSU9OICAgKC0zMSkKKyNkZWZpbmUgUENSRV9FUlJPUl9CQURMRU5HVEggICAgICAgKC0zMikKKyNkZWZpbmUgUENSRV9FUlJPUl9VTlNFVCAgICAgICAgICAgKC0zMykKKworLyogU3BlY2lmaWMgZXJyb3IgY29kZXMgZm9yIFVURi04IHZhbGlkaXR5IGNoZWNrcyAqLworCisjZGVmaW5lIFBDUkVfVVRGOF9FUlIwICAgICAgICAgICAgICAgMAorI2RlZmluZSBQQ1JFX1VURjhfRVJSMSAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjIgICAgICAgICAgICAgICAyCisjZGVmaW5lIFBDUkVfVVRGOF9FUlIzICAgICAgICAgICAgICAgMworI2RlZmluZSBQQ1JFX1VURjhfRVJSNCAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjUgICAgICAgICAgICAgICA1CisjZGVmaW5lIFBDUkVfVVRGOF9FUlI2ICAgICAgICAgICAgICAgNgorI2RlZmluZSBQQ1JFX1VURjhfRVJSNyAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjggICAgICAgICAgICAgICA4CisjZGVmaW5lIFBDUkVfVVRGOF9FUlI5ICAgICAgICAgICAgICAgOQorI2RlZmluZSBQQ1JFX1VURjhfRVJSMTAgICAgICAgICAgICAgMTAKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjExICAgICAgICAgICAgIDExCisjZGVmaW5lIFBDUkVfVVRGOF9FUlIxMiAgICAgICAgICAgICAxMgorI2RlZmluZSBQQ1JFX1VURjhfRVJSMTMgICAgICAgICAgICAgMTMKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjE0ICAgICAgICAgICAgIDE0CisjZGVmaW5lIFBDUkVfVVRGOF9FUlIxNSAgICAgICAgICAgICAxNQorI2RlZmluZSBQQ1JFX1VURjhfRVJSMTYgICAgICAgICAgICAgMTYKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjE3ICAgICAgICAgICAgIDE3CisjZGVmaW5lIFBDUkVfVVRGOF9FUlIxOCAgICAgICAgICAgICAxOAorI2RlZmluZSBQQ1JFX1VURjhfRVJSMTkgICAgICAgICAgICAgMTkKKyNkZWZpbmUgUENSRV9VVEY4X0VSUjIwICAgICAgICAgICAgIDIwCisjZGVmaW5lIFBDUkVfVVRGOF9FUlIyMSAgICAgICAgICAgICAyMQorI2RlZmluZSBQQ1JFX1VURjhfRVJSMjIgICAgICAgICAgICAgMjIgIC8qIFVudXNlZCAod2FzIG5vbi1jaGFyYWN0ZXIpICovCisKKy8qIFNwZWNpZmljIGVycm9yIGNvZGVzIGZvciBVVEYtMTYgdmFsaWRpdHkgY2hlY2tzICovCisKKyNkZWZpbmUgUENSRV9VVEYxNl9FUlIwICAgICAgICAgICAgICAwCisjZGVmaW5lIFBDUkVfVVRGMTZfRVJSMSAgICAgICAgICAgICAgMQorI2RlZmluZSBQQ1JFX1VURjE2X0VSUjIgICAgICAgICAgICAgIDIKKyNkZWZpbmUgUENSRV9VVEYxNl9FUlIzICAgICAgICAgICAgICAzCisjZGVmaW5lIFBDUkVfVVRGMTZfRVJSNCAgICAgICAgICAgICAgNCAgLyogVW51c2VkICh3YXMgbm9uLWNoYXJhY3RlcikgKi8KKworLyogU3BlY2lmaWMgZXJyb3IgY29kZXMgZm9yIFVURi0zMiB2YWxpZGl0eSBjaGVja3MgKi8KKworI2RlZmluZSBQQ1JFX1VURjMyX0VSUjAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgUENSRV9VVEYzMl9FUlIxICAgICAgICAgICAgICAxCisjZGVmaW5lIFBDUkVfVVRGMzJfRVJSMiAgICAgICAgICAgICAgMiAgLyogVW51c2VkICh3YXMgbm9uLWNoYXJhY3RlcikgKi8KKyNkZWZpbmUgUENSRV9VVEYzMl9FUlIzICAgICAgICAgICAgICAzCisKKy8qIFJlcXVlc3QgdHlwZXMgZm9yIHBjcmVfZnVsbGluZm8oKSAqLworCisjZGVmaW5lIFBDUkVfSU5GT19PUFRJT05TICAgICAgICAgICAgMAorI2RlZmluZSBQQ1JFX0lORk9fU0laRSAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgUENSRV9JTkZPX0NBUFRVUkVDT1VOVCAgICAgICAyCisjZGVmaW5lIFBDUkVfSU5GT19CQUNLUkVGTUFYICAgICAgICAgMworI2RlZmluZSBQQ1JFX0lORk9fRklSU1RCWVRFICAgICAgICAgIDQKKyNkZWZpbmUgUENSRV9JTkZPX0ZJUlNUQ0hBUiAgICAgICAgICA0ICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KKyNkZWZpbmUgUENSRV9JTkZPX0ZJUlNUVEFCTEUgICAgICAgICA1CisjZGVmaW5lIFBDUkVfSU5GT19MQVNUTElURVJBTCAgICAgICAgNgorI2RlZmluZSBQQ1JFX0lORk9fTkFNRUVOVFJZU0laRSAgICAgIDcKKyNkZWZpbmUgUENSRV9JTkZPX05BTUVDT1VOVCAgICAgICAgICA4CisjZGVmaW5lIFBDUkVfSU5GT19OQU1FVEFCTEUgICAgICAgICAgOQorI2RlZmluZSBQQ1JFX0lORk9fU1RVRFlTSVpFICAgICAgICAgMTAKKyNkZWZpbmUgUENSRV9JTkZPX0RFRkFVTFRfVEFCTEVTICAgIDExCisjZGVmaW5lIFBDUkVfSU5GT19PS1BBUlRJQUwgICAgICAgICAxMgorI2RlZmluZSBQQ1JFX0lORk9fSkNIQU5HRUQgICAgICAgICAgMTMKKyNkZWZpbmUgUENSRV9JTkZPX0hBU0NST1JMRiAgICAgICAgIDE0CisjZGVmaW5lIFBDUkVfSU5GT19NSU5MRU5HVEggICAgICAgICAxNQorI2RlZmluZSBQQ1JFX0lORk9fSklUICAgICAgICAgICAgICAgMTYKKyNkZWZpbmUgUENSRV9JTkZPX0pJVFNJWkUgICAgICAgICAgIDE3CisjZGVmaW5lIFBDUkVfSU5GT19NQVhMT09LQkVISU5EICAgICAxOAorI2RlZmluZSBQQ1JFX0lORk9fRklSU1RDSEFSQUNURVIgICAgMTkKKyNkZWZpbmUgUENSRV9JTkZPX0ZJUlNUQ0hBUkFDVEVSRkxBR1MgMjAKKyNkZWZpbmUgUENSRV9JTkZPX1JFUVVJUkVEQ0hBUiAgICAgIDIxCisjZGVmaW5lIFBDUkVfSU5GT19SRVFVSVJFRENIQVJGTEFHUyAyMgorI2RlZmluZSBQQ1JFX0lORk9fTUFUQ0hMSU1JVCAgICAgICAgMjMKKyNkZWZpbmUgUENSRV9JTkZPX1JFQ1VSU0lPTkxJTUlUICAgIDI0CisjZGVmaW5lIFBDUkVfSU5GT19NQVRDSF9FTVBUWSAgICAgICAyNQorCisvKiBSZXF1ZXN0IHR5cGVzIGZvciBwY3JlX2NvbmZpZygpLiBEbyBub3QgcmUtYXJyYW5nZSwgaW4gb3JkZXIgdG8gcmVtYWluCitjb21wYXRpYmxlLiAqLworCisjZGVmaW5lIFBDUkVfQ09ORklHX1VURjggICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgUENSRV9DT05GSUdfTkVXTElORSAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBQQ1JFX0NPTkZJR19MSU5LX1NJWkUgICAgICAgICAgICAgICAyCisjZGVmaW5lIFBDUkVfQ09ORklHX1BPU0lYX01BTExPQ19USFJFU0hPTEQgIDMKKyNkZWZpbmUgUENSRV9DT05GSUdfTUFUQ0hfTElNSVQgICAgICAgICAgICAgNAorI2RlZmluZSBQQ1JFX0NPTkZJR19TVEFDS1JFQ1VSU0UgICAgICAgICAgICA1CisjZGVmaW5lIFBDUkVfQ09ORklHX1VOSUNPREVfUFJPUEVSVElFUyAgICAgIDYKKyNkZWZpbmUgUENSRV9DT05GSUdfTUFUQ0hfTElNSVRfUkVDVVJTSU9OICAgNworI2RlZmluZSBQQ1JFX0NPTkZJR19CU1IgICAgICAgICAgICAgICAgICAgICA4CisjZGVmaW5lIFBDUkVfQ09ORklHX0pJVCAgICAgICAgICAgICAgICAgICAgIDkKKyNkZWZpbmUgUENSRV9DT05GSUdfVVRGMTYgICAgICAgICAgICAgICAgICAxMAorI2RlZmluZSBQQ1JFX0NPTkZJR19KSVRUQVJHRVQgICAgICAgICAgICAgIDExCisjZGVmaW5lIFBDUkVfQ09ORklHX1VURjMyICAgICAgICAgICAgICAgICAgMTIKKyNkZWZpbmUgUENSRV9DT05GSUdfUEFSRU5TX0xJTUlUICAgICAgICAgICAxMworCisvKiBSZXF1ZXN0IHR5cGVzIGZvciBwY3JlX3N0dWR5KCkuIERvIG5vdCByZS1hcnJhbmdlLCBpbiBvcmRlciB0byByZW1haW4KK2NvbXBhdGlibGUuICovCisKKyNkZWZpbmUgUENSRV9TVFVEWV9KSVRfQ09NUElMRSAgICAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgUENSRV9TVFVEWV9KSVRfUEFSVElBTF9TT0ZUX0NPTVBJTEUgICAweDAwMDIKKyNkZWZpbmUgUENSRV9TVFVEWV9KSVRfUEFSVElBTF9IQVJEX0NPTVBJTEUgICAweDAwMDQKKyNkZWZpbmUgUENSRV9TVFVEWV9FWFRSQV9ORUVERUQgICAgICAgICAgICAgICAweDAwMDgKKworLyogQml0IGZsYWdzIGZvciB0aGUgcGNyZVsxNnwzMl1fZXh0cmEgc3RydWN0dXJlLiBEbyBub3QgcmUtYXJyYW5nZSBvciByZWRlZmluZQordGhlc2UgYml0cywganVzdCBhZGQgbmV3IG9uZXMgb24gdGhlIGVuZCwgaW4gb3JkZXIgdG8gcmVtYWluIGNvbXBhdGlibGUuICovCisKKyNkZWZpbmUgUENSRV9FWFRSQV9TVFVEWV9EQVRBICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBQQ1JFX0VYVFJBX01BVENIX0xJTUlUICAgICAgICAgICAgMHgwMDAyCisjZGVmaW5lIFBDUkVfRVhUUkFfQ0FMTE9VVF9EQVRBICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgUENSRV9FWFRSQV9UQUJMRVMgICAgICAgICAgICAgICAgIDB4MDAwOAorI2RlZmluZSBQQ1JFX0VYVFJBX01BVENIX0xJTUlUX1JFQ1VSU0lPTiAgMHgwMDEwCisjZGVmaW5lIFBDUkVfRVhUUkFfTUFSSyAgICAgICAgICAgICAgICAgICAweDAwMjAKKyNkZWZpbmUgUENSRV9FWFRSQV9FWEVDVVRBQkxFX0pJVCAgICAgICAgIDB4MDA0MAorCisvKiBUeXBlcyAqLworCitzdHJ1Y3QgcmVhbF9wY3JlOyAgICAgICAgICAgICAgICAgLyogZGVjbGFyYXRpb247IHRoZSBkZWZpbml0aW9uIGlzIHByaXZhdGUgICovCit0eXBlZGVmIHN0cnVjdCByZWFsX3BjcmUgcGNyZTsKKworc3RydWN0IHJlYWxfcGNyZTE2OyAgICAgICAgICAgICAgIC8qIGRlY2xhcmF0aW9uOyB0aGUgZGVmaW5pdGlvbiBpcyBwcml2YXRlICAqLwordHlwZWRlZiBzdHJ1Y3QgcmVhbF9wY3JlMTYgcGNyZTE2OworCitzdHJ1Y3QgcmVhbF9wY3JlMzI7ICAgICAgICAgICAgICAgLyogZGVjbGFyYXRpb247IHRoZSBkZWZpbml0aW9uIGlzIHByaXZhdGUgICovCit0eXBlZGVmIHN0cnVjdCByZWFsX3BjcmUzMiBwY3JlMzI7CisKK3N0cnVjdCByZWFsX3BjcmVfaml0X3N0YWNrOyAgICAgICAvKiBkZWNsYXJhdGlvbjsgdGhlIGRlZmluaXRpb24gaXMgcHJpdmF0ZSAgKi8KK3R5cGVkZWYgc3RydWN0IHJlYWxfcGNyZV9qaXRfc3RhY2sgcGNyZV9qaXRfc3RhY2s7CisKK3N0cnVjdCByZWFsX3BjcmUxNl9qaXRfc3RhY2s7ICAgICAvKiBkZWNsYXJhdGlvbjsgdGhlIGRlZmluaXRpb24gaXMgcHJpdmF0ZSAgKi8KK3R5cGVkZWYgc3RydWN0IHJlYWxfcGNyZTE2X2ppdF9zdGFjayBwY3JlMTZfaml0X3N0YWNrOworCitzdHJ1Y3QgcmVhbF9wY3JlMzJfaml0X3N0YWNrOyAgICAgLyogZGVjbGFyYXRpb247IHRoZSBkZWZpbml0aW9uIGlzIHByaXZhdGUgICovCit0eXBlZGVmIHN0cnVjdCByZWFsX3BjcmUzMl9qaXRfc3RhY2sgcGNyZTMyX2ppdF9zdGFjazsKKworLyogSWYgUENSRSBpcyBjb21waWxlZCB3aXRoIDE2IGJpdCBjaGFyYWN0ZXIgc3VwcG9ydCwgUENSRV9VQ0hBUjE2IG11c3QgY29udGFpbgorYSAxNiBiaXQgd2lkZSBzaWduZWQgZGF0YSB0eXBlLiBPdGhlcndpc2UgaXQgY2FuIGJlIGEgZHVtbXkgZGF0YSB0eXBlIHNpbmNlCitwY3JlMTYgZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuIFRoZXJlIGlzIGEgY2hlY2sgZm9yIHRoaXMgaW4gcGNyZV9pbnRlcm5hbC5oLiAqLworI2lmbmRlZiBQQ1JFX1VDSEFSMTYKKyNkZWZpbmUgUENSRV9VQ0hBUjE2IHVuc2lnbmVkIHNob3J0CisjZW5kaWYKKworI2lmbmRlZiBQQ1JFX1NQVFIxNgorI2RlZmluZSBQQ1JFX1NQVFIxNiBjb25zdCBQQ1JFX1VDSEFSMTYgKgorI2VuZGlmCisKKy8qIElmIFBDUkUgaXMgY29tcGlsZWQgd2l0aCAzMiBiaXQgY2hhcmFjdGVyIHN1cHBvcnQsIFBDUkVfVUNIQVIzMiBtdXN0IGNvbnRhaW4KK2EgMzIgYml0IHdpZGUgc2lnbmVkIGRhdGEgdHlwZS4gT3RoZXJ3aXNlIGl0IGNhbiBiZSBhIGR1bW15IGRhdGEgdHlwZSBzaW5jZQorcGNyZTMyIGZ1bmN0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkLiBUaGVyZSBpcyBhIGNoZWNrIGZvciB0aGlzIGluIHBjcmVfaW50ZXJuYWwuaC4gKi8KKyNpZm5kZWYgUENSRV9VQ0hBUjMyCisjZGVmaW5lIFBDUkVfVUNIQVIzMiB1bnNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWZuZGVmIFBDUkVfU1BUUjMyCisjZGVmaW5lIFBDUkVfU1BUUjMyIGNvbnN0IFBDUkVfVUNIQVIzMiAqCisjZW5kaWYKKworLyogV2hlbiBQQ1JFIGlzIGNvbXBpbGVkIGFzIGEgQysrIGxpYnJhcnksIHRoZSBzdWJqZWN0IHBvaW50ZXIgdHlwZSBjYW4gYmUKK3JlcGxhY2VkIHdpdGggYSBjdXN0b20gdHlwZS4gRm9yIGNvbnZlbnRpb25hbCB1c2UsIHRoZSBwdWJsaWMgaW50ZXJmYWNlIGlzIGEKK2NvbnN0IGNoYXIgKi4gKi8KKworI2lmbmRlZiBQQ1JFX1NQVFIKKyNkZWZpbmUgUENSRV9TUFRSIGNvbnN0IGNoYXIgKgorI2VuZGlmCisKKy8qIFRoZSBzdHJ1Y3R1cmUgZm9yIHBhc3NpbmcgYWRkaXRpb25hbCBkYXRhIHRvIHBjcmVfZXhlYygpLiBUaGlzIGlzIGRlZmluZWQgaW4KK3N1Y2ggYXMgd2F5IGFzIHRvIGJlIGV4dGVuc2libGUuIEFsd2F5cyBhZGQgbmV3IGZpZWxkcyBhdCB0aGUgZW5kLCBpbiBvcmRlciB0bworcmVtYWluIGNvbXBhdGlibGUuICovCisKK3R5cGVkZWYgc3RydWN0IHBjcmVfZXh0cmEgeworICB1bnNpZ25lZCBsb25nIGludCBmbGFnczsgICAgICAgIC8qIEJpdHMgZm9yIHdoaWNoIGZpZWxkcyBhcmUgc2V0ICovCisgIHZvaWQgKnN0dWR5X2RhdGE7ICAgICAgICAgICAgICAgLyogT3BhcXVlIGRhdGEgZnJvbSBwY3JlX3N0dWR5KCkgKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgbWF0Y2hfbGltaXQ7ICAvKiBNYXhpbXVtIG51bWJlciBvZiBjYWxscyB0byBtYXRjaCgpICovCisgIHZvaWQgKmNhbGxvdXRfZGF0YTsgICAgICAgICAgICAgLyogRGF0YSBwYXNzZWQgYmFjayBpbiBjYWxsb3V0cyAqLworICBjb25zdCB1bnNpZ25lZCBjaGFyICp0YWJsZXM7ICAgIC8qIFBvaW50ZXIgdG8gY2hhcmFjdGVyIHRhYmxlcyAqLworICB1bnNpZ25lZCBsb25nIGludCBtYXRjaF9saW1pdF9yZWN1cnNpb247IC8qIE1heCByZWN1cnNpdmUgY2FsbHMgdG8gbWF0Y2goKSAqLworICB1bnNpZ25lZCBjaGFyICoqbWFyazsgICAgICAgICAgIC8qIEZvciBwYXNzaW5nIGJhY2sgYSBtYXJrIHBvaW50ZXIgKi8KKyAgdm9pZCAqZXhlY3V0YWJsZV9qaXQ7ICAgICAgICAgICAvKiBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBjb21waWxlZCBqaXQgY29kZSAqLworfSBwY3JlX2V4dHJhOworCisvKiBTYW1lIHN0cnVjdHVyZSBhcyBhYm92ZSwgYnV0IHdpdGggMTYgYml0IGNoYXIgcG9pbnRlcnMuICovCisKK3R5cGVkZWYgc3RydWN0IHBjcmUxNl9leHRyYSB7CisgIHVuc2lnbmVkIGxvbmcgaW50IGZsYWdzOyAgICAgICAgLyogQml0cyBmb3Igd2hpY2ggZmllbGRzIGFyZSBzZXQgKi8KKyAgdm9pZCAqc3R1ZHlfZGF0YTsgICAgICAgICAgICAgICAvKiBPcGFxdWUgZGF0YSBmcm9tIHBjcmVfc3R1ZHkoKSAqLworICB1bnNpZ25lZCBsb25nIGludCBtYXRjaF9saW1pdDsgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNhbGxzIHRvIG1hdGNoKCkgKi8KKyAgdm9pZCAqY2FsbG91dF9kYXRhOyAgICAgICAgICAgICAvKiBEYXRhIHBhc3NlZCBiYWNrIGluIGNhbGxvdXRzICovCisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhYmxlczsgICAgLyogUG9pbnRlciB0byBjaGFyYWN0ZXIgdGFibGVzICovCisgIHVuc2lnbmVkIGxvbmcgaW50IG1hdGNoX2xpbWl0X3JlY3Vyc2lvbjsgLyogTWF4IHJlY3Vyc2l2ZSBjYWxscyB0byBtYXRjaCgpICovCisgIFBDUkVfVUNIQVIxNiAqKm1hcms7ICAgICAgICAgICAgLyogRm9yIHBhc3NpbmcgYmFjayBhIG1hcmsgcG9pbnRlciAqLworICB2b2lkICpleGVjdXRhYmxlX2ppdDsgICAgICAgICAgIC8qIENvbnRhaW5zIGEgcG9pbnRlciB0byBhIGNvbXBpbGVkIGppdCBjb2RlICovCit9IHBjcmUxNl9leHRyYTsKKworLyogU2FtZSBzdHJ1Y3R1cmUgYXMgYWJvdmUsIGJ1dCB3aXRoIDMyIGJpdCBjaGFyIHBvaW50ZXJzLiAqLworCit0eXBlZGVmIHN0cnVjdCBwY3JlMzJfZXh0cmEgeworICB1bnNpZ25lZCBsb25nIGludCBmbGFnczsgICAgICAgIC8qIEJpdHMgZm9yIHdoaWNoIGZpZWxkcyBhcmUgc2V0ICovCisgIHZvaWQgKnN0dWR5X2RhdGE7ICAgICAgICAgICAgICAgLyogT3BhcXVlIGRhdGEgZnJvbSBwY3JlX3N0dWR5KCkgKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgbWF0Y2hfbGltaXQ7ICAvKiBNYXhpbXVtIG51bWJlciBvZiBjYWxscyB0byBtYXRjaCgpICovCisgIHZvaWQgKmNhbGxvdXRfZGF0YTsgICAgICAgICAgICAgLyogRGF0YSBwYXNzZWQgYmFjayBpbiBjYWxsb3V0cyAqLworICBjb25zdCB1bnNpZ25lZCBjaGFyICp0YWJsZXM7ICAgIC8qIFBvaW50ZXIgdG8gY2hhcmFjdGVyIHRhYmxlcyAqLworICB1bnNpZ25lZCBsb25nIGludCBtYXRjaF9saW1pdF9yZWN1cnNpb247IC8qIE1heCByZWN1cnNpdmUgY2FsbHMgdG8gbWF0Y2goKSAqLworICBQQ1JFX1VDSEFSMzIgKiptYXJrOyAgICAgICAgICAgIC8qIEZvciBwYXNzaW5nIGJhY2sgYSBtYXJrIHBvaW50ZXIgKi8KKyAgdm9pZCAqZXhlY3V0YWJsZV9qaXQ7ICAgICAgICAgICAvKiBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBjb21waWxlZCBqaXQgY29kZSAqLworfSBwY3JlMzJfZXh0cmE7CisKKy8qIFRoZSBzdHJ1Y3R1cmUgZm9yIHBhc3Npbmcgb3V0IGRhdGEgdmlhIHRoZSBwY3JlX2NhbGxvdXRfZnVuY3Rpb24uIFdlIHVzZSBhCitzdHJ1Y3R1cmUgc28gdGhhdCBuZXcgZmllbGRzIGNhbiBiZSBhZGRlZCBvbiB0aGUgZW5kIGluIGZ1dHVyZSB2ZXJzaW9ucywKK3dpdGhvdXQgY2hhbmdpbmcgdGhlIEFQSSBvZiB0aGUgZnVuY3Rpb24sIHRoZXJlYnkgYWxsb3dpbmcgb2xkIGNsaWVudHMgdG8gd29yaword2l0aG91dCBtb2RpZmljYXRpb24uICovCisKK3R5cGVkZWYgc3RydWN0IHBjcmVfY2FsbG91dF9ibG9jayB7CisgIGludCAgICAgICAgICB2ZXJzaW9uOyAgICAgICAgICAgLyogSWRlbnRpZmllcyB2ZXJzaW9uIG9mIGJsb2NrICovCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWZXJzaW9uIDAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICBpbnQgICAgICAgICAgY2FsbG91dF9udW1iZXI7ICAgIC8qIE51bWJlciBjb21waWxlZCBpbnRvIHBhdHRlcm4gKi8KKyAgaW50ICAgICAgICAgKm9mZnNldF92ZWN0b3I7ICAgICAvKiBUaGUgb2Zmc2V0IHZlY3RvciAqLworICBQQ1JFX1NQVFIgICAgc3ViamVjdDsgICAgICAgICAgIC8qIFRoZSBzdWJqZWN0IGJlaW5nIG1hdGNoZWQgKi8KKyAgaW50ICAgICAgICAgIHN1YmplY3RfbGVuZ3RoOyAgICAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBzdWJqZWN0ICovCisgIGludCAgICAgICAgICBzdGFydF9tYXRjaDsgICAgICAgLyogT2Zmc2V0IHRvIHN0YXJ0IG9mIHRoaXMgbWF0Y2ggYXR0ZW1wdCAqLworICBpbnQgICAgICAgICAgY3VycmVudF9wb3NpdGlvbjsgIC8qIFdoZXJlIHdlIGN1cnJlbnRseSBhcmUgaW4gdGhlIHN1YmplY3QgKi8KKyAgaW50ICAgICAgICAgIGNhcHR1cmVfdG9wOyAgICAgICAvKiBNYXggY3VycmVudCBjYXB0dXJlICovCisgIGludCAgICAgICAgICBjYXB0dXJlX2xhc3Q7ICAgICAgLyogTW9zdCByZWNlbnRseSBjbG9zZWQgY2FwdHVyZSAqLworICB2b2lkICAgICAgICAqY2FsbG91dF9kYXRhOyAgICAgIC8qIERhdGEgcGFzc2VkIGluIHdpdGggdGhlIGNhbGwgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRlZCBmb3IgVmVyc2lvbiAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGludCAgICAgICAgICBwYXR0ZXJuX3Bvc2l0aW9uOyAgLyogT2Zmc2V0IHRvIG5leHQgaXRlbSBpbiB0aGUgcGF0dGVybiAqLworICBpbnQgICAgICAgICAgbmV4dF9pdGVtX2xlbmd0aDsgIC8qIExlbmd0aCBvZiBuZXh0IGl0ZW0gaW4gdGhlIHBhdHRlcm4gKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRlZCBmb3IgVmVyc2lvbiAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1hcms7ICAgICAgLyogUG9pbnRlciB0byBjdXJyZW50IG1hcmsgb3IgTlVMTCAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK30gcGNyZV9jYWxsb3V0X2Jsb2NrOworCisvKiBTYW1lIHN0cnVjdHVyZSBhcyBhYm92ZSwgYnV0IHdpdGggMTYgYml0IGNoYXIgcG9pbnRlcnMuICovCisKK3R5cGVkZWYgc3RydWN0IHBjcmUxNl9jYWxsb3V0X2Jsb2NrIHsKKyAgaW50ICAgICAgICAgIHZlcnNpb247ICAgICAgICAgICAvKiBJZGVudGlmaWVzIHZlcnNpb24gb2YgYmxvY2sgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZlcnNpb24gMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGludCAgICAgICAgICBjYWxsb3V0X251bWJlcjsgICAgLyogTnVtYmVyIGNvbXBpbGVkIGludG8gcGF0dGVybiAqLworICBpbnQgICAgICAgICAqb2Zmc2V0X3ZlY3RvcjsgICAgIC8qIFRoZSBvZmZzZXQgdmVjdG9yICovCisgIFBDUkVfU1BUUjE2ICBzdWJqZWN0OyAgICAgICAgICAgLyogVGhlIHN1YmplY3QgYmVpbmcgbWF0Y2hlZCAqLworICBpbnQgICAgICAgICAgc3ViamVjdF9sZW5ndGg7ICAgIC8qIFRoZSBsZW5ndGggb2YgdGhlIHN1YmplY3QgKi8KKyAgaW50ICAgICAgICAgIHN0YXJ0X21hdGNoOyAgICAgICAvKiBPZmZzZXQgdG8gc3RhcnQgb2YgdGhpcyBtYXRjaCBhdHRlbXB0ICovCisgIGludCAgICAgICAgICBjdXJyZW50X3Bvc2l0aW9uOyAgLyogV2hlcmUgd2UgY3VycmVudGx5IGFyZSBpbiB0aGUgc3ViamVjdCAqLworICBpbnQgICAgICAgICAgY2FwdHVyZV90b3A7ICAgICAgIC8qIE1heCBjdXJyZW50IGNhcHR1cmUgKi8KKyAgaW50ICAgICAgICAgIGNhcHR1cmVfbGFzdDsgICAgICAvKiBNb3N0IHJlY2VudGx5IGNsb3NlZCBjYXB0dXJlICovCisgIHZvaWQgICAgICAgICpjYWxsb3V0X2RhdGE7ICAgICAgLyogRGF0YSBwYXNzZWQgaW4gd2l0aCB0aGUgY2FsbCAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tIEFkZGVkIGZvciBWZXJzaW9uIDEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgaW50ICAgICAgICAgIHBhdHRlcm5fcG9zaXRpb247ICAvKiBPZmZzZXQgdG8gbmV4dCBpdGVtIGluIHRoZSBwYXR0ZXJuICovCisgIGludCAgICAgICAgICBuZXh0X2l0ZW1fbGVuZ3RoOyAgLyogTGVuZ3RoIG9mIG5leHQgaXRlbSBpbiB0aGUgcGF0dGVybiAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tIEFkZGVkIGZvciBWZXJzaW9uIDIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgY29uc3QgUENSRV9VQ0hBUjE2ICptYXJrOyAgICAgICAvKiBQb2ludGVyIHRvIGN1cnJlbnQgbWFyayBvciBOVUxMICAgICovCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworfSBwY3JlMTZfY2FsbG91dF9ibG9jazsKKworLyogU2FtZSBzdHJ1Y3R1cmUgYXMgYWJvdmUsIGJ1dCB3aXRoIDMyIGJpdCBjaGFyIHBvaW50ZXJzLiAqLworCit0eXBlZGVmIHN0cnVjdCBwY3JlMzJfY2FsbG91dF9ibG9jayB7CisgIGludCAgICAgICAgICB2ZXJzaW9uOyAgICAgICAgICAgLyogSWRlbnRpZmllcyB2ZXJzaW9uIG9mIGJsb2NrICovCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWZXJzaW9uIDAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICBpbnQgICAgICAgICAgY2FsbG91dF9udW1iZXI7ICAgIC8qIE51bWJlciBjb21waWxlZCBpbnRvIHBhdHRlcm4gKi8KKyAgaW50ICAgICAgICAgKm9mZnNldF92ZWN0b3I7ICAgICAvKiBUaGUgb2Zmc2V0IHZlY3RvciAqLworICBQQ1JFX1NQVFIzMiAgc3ViamVjdDsgICAgICAgICAgIC8qIFRoZSBzdWJqZWN0IGJlaW5nIG1hdGNoZWQgKi8KKyAgaW50ICAgICAgICAgIHN1YmplY3RfbGVuZ3RoOyAgICAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBzdWJqZWN0ICovCisgIGludCAgICAgICAgICBzdGFydF9tYXRjaDsgICAgICAgLyogT2Zmc2V0IHRvIHN0YXJ0IG9mIHRoaXMgbWF0Y2ggYXR0ZW1wdCAqLworICBpbnQgICAgICAgICAgY3VycmVudF9wb3NpdGlvbjsgIC8qIFdoZXJlIHdlIGN1cnJlbnRseSBhcmUgaW4gdGhlIHN1YmplY3QgKi8KKyAgaW50ICAgICAgICAgIGNhcHR1cmVfdG9wOyAgICAgICAvKiBNYXggY3VycmVudCBjYXB0dXJlICovCisgIGludCAgICAgICAgICBjYXB0dXJlX2xhc3Q7ICAgICAgLyogTW9zdCByZWNlbnRseSBjbG9zZWQgY2FwdHVyZSAqLworICB2b2lkICAgICAgICAqY2FsbG91dF9kYXRhOyAgICAgIC8qIERhdGEgcGFzc2VkIGluIHdpdGggdGhlIGNhbGwgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRlZCBmb3IgVmVyc2lvbiAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGludCAgICAgICAgICBwYXR0ZXJuX3Bvc2l0aW9uOyAgLyogT2Zmc2V0IHRvIG5leHQgaXRlbSBpbiB0aGUgcGF0dGVybiAqLworICBpbnQgICAgICAgICAgbmV4dF9pdGVtX2xlbmd0aDsgIC8qIExlbmd0aCBvZiBuZXh0IGl0ZW0gaW4gdGhlIHBhdHRlcm4gKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRlZCBmb3IgVmVyc2lvbiAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNvbnN0IFBDUkVfVUNIQVIzMiAqbWFyazsgICAgICAgLyogUG9pbnRlciB0byBjdXJyZW50IG1hcmsgb3IgTlVMTCAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK30gcGNyZTMyX2NhbGxvdXRfYmxvY2s7CisKKy8qIEluZGlyZWN0aW9uIGZvciBzdG9yZSBnZXQgYW5kIGZyZWUgZnVuY3Rpb25zLiBUaGVzZSBjYW4gYmUgc2V0IHRvCithbHRlcm5hdGl2ZSBtYWxsb2MvZnJlZSBmdW5jdGlvbnMgaWYgcmVxdWlyZWQuIFNwZWNpYWwgb25lcyBhcmUgdXNlZCBpbiB0aGUKK25vbi1yZWN1cnNpdmUgY2FzZSBmb3IgImZyYW1lcyIuIFRoZXJlIGlzIGFsc28gYW4gb3B0aW9uYWwgY2FsbG91dCBmdW5jdGlvbgordGhhdCBpcyB0cmlnZ2VyZWQgYnkgdGhlICg/KSByZWdleCBpdGVtLiBGb3IgVmlydHVhbCBQYXNjYWwsIHRoZXNlIGRlZmluaXRpb25zCitoYXZlIHRvIHRha2UgYW5vdGhlciBmb3JtLiAqLworCisjaWZuZGVmIFZQQ09NUEFUCitQQ1JFX0VYUF9ERUNMIHZvaWQgKigqcGNyZV9tYWxsb2MpKHNpemVfdCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgICgqcGNyZV9mcmVlKSh2b2lkICopOworUENSRV9FWFBfREVDTCB2b2lkICooKnBjcmVfc3RhY2tfbWFsbG9jKShzaXplX3QpOworUENSRV9FWFBfREVDTCB2b2lkICAoKnBjcmVfc3RhY2tfZnJlZSkodm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICAgKCpwY3JlX2NhbGxvdXQpKHBjcmVfY2FsbG91dF9ibG9jayAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICAgKCpwY3JlX3N0YWNrX2d1YXJkKSh2b2lkKTsKKworUENSRV9FWFBfREVDTCB2b2lkICooKnBjcmUxNl9tYWxsb2MpKHNpemVfdCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgICgqcGNyZTE2X2ZyZWUpKHZvaWQgKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgKigqcGNyZTE2X3N0YWNrX21hbGxvYykoc2l6ZV90KTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAgKCpwY3JlMTZfc3RhY2tfZnJlZSkodm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICAgKCpwY3JlMTZfY2FsbG91dCkocGNyZTE2X2NhbGxvdXRfYmxvY2sgKik7CitQQ1JFX0VYUF9ERUNMIGludCAgICgqcGNyZTE2X3N0YWNrX2d1YXJkKSh2b2lkKTsKKworUENSRV9FWFBfREVDTCB2b2lkICooKnBjcmUzMl9tYWxsb2MpKHNpemVfdCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgICgqcGNyZTMyX2ZyZWUpKHZvaWQgKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgKigqcGNyZTMyX3N0YWNrX21hbGxvYykoc2l6ZV90KTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAgKCpwY3JlMzJfc3RhY2tfZnJlZSkodm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICAgKCpwY3JlMzJfY2FsbG91dCkocGNyZTMyX2NhbGxvdXRfYmxvY2sgKik7CitQQ1JFX0VYUF9ERUNMIGludCAgICgqcGNyZTMyX3N0YWNrX2d1YXJkKSh2b2lkKTsKKyNlbHNlICAgLyogVlBDT01QQVQgKi8KK1BDUkVfRVhQX0RFQ0wgdm9pZCAqcGNyZV9tYWxsb2Moc2l6ZV90KTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAgcGNyZV9mcmVlKHZvaWQgKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgKnBjcmVfc3RhY2tfbWFsbG9jKHNpemVfdCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgIHBjcmVfc3RhY2tfZnJlZSh2b2lkICopOworUENSRV9FWFBfREVDTCBpbnQgICBwY3JlX2NhbGxvdXQocGNyZV9jYWxsb3V0X2Jsb2NrICopOworUENSRV9FWFBfREVDTCBpbnQgICBwY3JlX3N0YWNrX2d1YXJkKHZvaWQpOworCitQQ1JFX0VYUF9ERUNMIHZvaWQgKnBjcmUxNl9tYWxsb2Moc2l6ZV90KTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAgcGNyZTE2X2ZyZWUodm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAqcGNyZTE2X3N0YWNrX21hbGxvYyhzaXplX3QpOworUENSRV9FWFBfREVDTCB2b2lkICBwY3JlMTZfc3RhY2tfZnJlZSh2b2lkICopOworUENSRV9FWFBfREVDTCBpbnQgICBwY3JlMTZfY2FsbG91dChwY3JlMTZfY2FsbG91dF9ibG9jayAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICAgcGNyZTE2X3N0YWNrX2d1YXJkKHZvaWQpOworCitQQ1JFX0VYUF9ERUNMIHZvaWQgKnBjcmUzMl9tYWxsb2Moc2l6ZV90KTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAgcGNyZTMyX2ZyZWUodm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCAqcGNyZTMyX3N0YWNrX21hbGxvYyhzaXplX3QpOworUENSRV9FWFBfREVDTCB2b2lkICBwY3JlMzJfc3RhY2tfZnJlZSh2b2lkICopOworUENSRV9FWFBfREVDTCBpbnQgICBwY3JlMzJfY2FsbG91dChwY3JlMzJfY2FsbG91dF9ibG9jayAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICAgcGNyZTMyX3N0YWNrX2d1YXJkKHZvaWQpOworI2VuZGlmICAvKiBWUENPTVBBVCAqLworCisvKiBVc2VyIGRlZmluZWQgY2FsbGJhY2sgd2hpY2ggcHJvdmlkZXMgYSBzdGFjayBqdXN0IGJlZm9yZSB0aGUgbWF0Y2ggc3RhcnRzLiAqLworCit0eXBlZGVmIHBjcmVfaml0X3N0YWNrICooKnBjcmVfaml0X2NhbGxiYWNrKSh2b2lkICopOwordHlwZWRlZiBwY3JlMTZfaml0X3N0YWNrICooKnBjcmUxNl9qaXRfY2FsbGJhY2spKHZvaWQgKik7Cit0eXBlZGVmIHBjcmUzMl9qaXRfc3RhY2sgKigqcGNyZTMyX2ppdF9jYWxsYmFjaykodm9pZCAqKTsKKworLyogRXhwb3J0ZWQgUENSRSBmdW5jdGlvbnMgKi8KKworUENSRV9FWFBfREVDTCBwY3JlICpwY3JlX2NvbXBpbGUoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiosIGludCAqLAorICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKTsKK1BDUkVfRVhQX0RFQ0wgcGNyZTE2ICpwY3JlMTZfY29tcGlsZShQQ1JFX1NQVFIxNiwgaW50LCBjb25zdCBjaGFyICoqLCBpbnQgKiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CitQQ1JFX0VYUF9ERUNMIHBjcmUzMiAqcGNyZTMyX2NvbXBpbGUoUENSRV9TUFRSMzIsIGludCwgY29uc3QgY2hhciAqKiwgaW50ICosCisgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBwY3JlICpwY3JlX2NvbXBpbGUyKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQgKiwgY29uc3QgY2hhciAqKiwKKyAgICAgICAgICAgICAgICAgIGludCAqLCBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBwY3JlMTYgKnBjcmUxNl9jb21waWxlMihQQ1JFX1NQVFIxNiwgaW50LCBpbnQgKiwgY29uc3QgY2hhciAqKiwKKyAgICAgICAgICAgICAgICAgIGludCAqLCBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBwY3JlMzIgKnBjcmUzMl9jb21waWxlMihQQ1JFX1NQVFIzMiwgaW50LCBpbnQgKiwgY29uc3QgY2hhciAqKiwKKyAgICAgICAgICAgICAgICAgIGludCAqLCBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmVfY29uZmlnKGludCwgdm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMTZfY29uZmlnKGludCwgdm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfY29uZmlnKGludCwgdm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlX2NvcHlfbmFtZWRfc3Vic3RyaW5nKGNvbnN0IHBjcmUgKiwgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgaW50ICosIGludCwgY29uc3QgY2hhciAqLCBjaGFyICosIGludCk7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZTE2X2NvcHlfbmFtZWRfc3Vic3RyaW5nKGNvbnN0IHBjcmUxNiAqLCBQQ1JFX1NQVFIxNiwKKyAgICAgICAgICAgICAgICAgIGludCAqLCBpbnQsIFBDUkVfU1BUUjE2LCBQQ1JFX1VDSEFSMTYgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfY29weV9uYW1lZF9zdWJzdHJpbmcoY29uc3QgcGNyZTMyICosIFBDUkVfU1BUUjMyLAorICAgICAgICAgICAgICAgICAgaW50ICosIGludCwgUENSRV9TUFRSMzIsIFBDUkVfVUNIQVIzMiAqLCBpbnQpOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmVfY29weV9zdWJzdHJpbmcoY29uc3QgY2hhciAqLCBpbnQgKiwgaW50LCBpbnQsCisgICAgICAgICAgICAgICAgICBjaGFyICosIGludCk7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZTE2X2NvcHlfc3Vic3RyaW5nKFBDUkVfU1BUUjE2LCBpbnQgKiwgaW50LCBpbnQsCisgICAgICAgICAgICAgICAgICBQQ1JFX1VDSEFSMTYgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfY29weV9zdWJzdHJpbmcoUENSRV9TUFRSMzIsIGludCAqLCBpbnQsIGludCwKKyAgICAgICAgICAgICAgICAgIFBDUkVfVUNIQVIzMiAqLCBpbnQpOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmVfZGZhX2V4ZWMoY29uc3QgcGNyZSAqLCBjb25zdCBwY3JlX2V4dHJhICosCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCAqLCBpbnQgLCBpbnQgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMTZfZGZhX2V4ZWMoY29uc3QgcGNyZTE2ICosIGNvbnN0IHBjcmUxNl9leHRyYSAqLAorICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMTYsIGludCwgaW50LCBpbnQsIGludCAqLCBpbnQgLCBpbnQgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfZGZhX2V4ZWMoY29uc3QgcGNyZTMyICosIGNvbnN0IHBjcmUzMl9leHRyYSAqLAorICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMzIsIGludCwgaW50LCBpbnQsIGludCAqLCBpbnQgLCBpbnQgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlX2V4ZWMoY29uc3QgcGNyZSAqLCBjb25zdCBwY3JlX2V4dHJhICosIFBDUkVfU1BUUiwKKyAgICAgICAgICAgICAgICAgICBpbnQsIGludCwgaW50LCBpbnQgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMTZfZXhlYyhjb25zdCBwY3JlMTYgKiwgY29uc3QgcGNyZTE2X2V4dHJhICosCisgICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMTYsIGludCwgaW50LCBpbnQsIGludCAqLCBpbnQpOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUzMl9leGVjKGNvbnN0IHBjcmUzMiAqLCBjb25zdCBwY3JlMzJfZXh0cmEgKiwKKyAgICAgICAgICAgICAgICAgICBQQ1JFX1NQVFIzMiwgaW50LCBpbnQsIGludCwgaW50ICosIGludCk7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZV9qaXRfZXhlYyhjb25zdCBwY3JlICosIGNvbnN0IHBjcmVfZXh0cmEgKiwKKyAgICAgICAgICAgICAgICAgICBQQ1JFX1NQVFIsIGludCwgaW50LCBpbnQsIGludCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgcGNyZV9qaXRfc3RhY2sgKik7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZTE2X2ppdF9leGVjKGNvbnN0IHBjcmUxNiAqLCBjb25zdCBwY3JlMTZfZXh0cmEgKiwKKyAgICAgICAgICAgICAgICAgICBQQ1JFX1NQVFIxNiwgaW50LCBpbnQsIGludCwgaW50ICosIGludCwKKyAgICAgICAgICAgICAgICAgICBwY3JlMTZfaml0X3N0YWNrICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUzMl9qaXRfZXhlYyhjb25zdCBwY3JlMzIgKiwgY29uc3QgcGNyZTMyX2V4dHJhICosCisgICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMzIsIGludCwgaW50LCBpbnQsIGludCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgcGNyZTMyX2ppdF9zdGFjayAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlX2ZyZWVfc3Vic3RyaW5nKGNvbnN0IGNoYXIgKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZTE2X2ZyZWVfc3Vic3RyaW5nKFBDUkVfU1BUUjE2KTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlMzJfZnJlZV9zdWJzdHJpbmcoUENSRV9TUFRSMzIpOworUENSRV9FWFBfREVDTCB2b2lkIHBjcmVfZnJlZV9zdWJzdHJpbmdfbGlzdChjb25zdCBjaGFyICoqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlMTZfZnJlZV9zdWJzdHJpbmdfbGlzdChQQ1JFX1NQVFIxNiAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlMzJfZnJlZV9zdWJzdHJpbmdfbGlzdChQQ1JFX1NQVFIzMiAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlX2Z1bGxpbmZvKGNvbnN0IHBjcmUgKiwgY29uc3QgcGNyZV9leHRyYSAqLCBpbnQsCisgICAgICAgICAgICAgICAgICB2b2lkICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUxNl9mdWxsaW5mbyhjb25zdCBwY3JlMTYgKiwgY29uc3QgcGNyZTE2X2V4dHJhICosIGludCwKKyAgICAgICAgICAgICAgICAgIHZvaWQgKik7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZTMyX2Z1bGxpbmZvKGNvbnN0IHBjcmUzMiAqLCBjb25zdCBwY3JlMzJfZXh0cmEgKiwgaW50LAorICAgICAgICAgICAgICAgICAgdm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlX2dldF9uYW1lZF9zdWJzdHJpbmcoY29uc3QgcGNyZSAqLCBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICBpbnQgKiwgaW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUxNl9nZXRfbmFtZWRfc3Vic3RyaW5nKGNvbnN0IHBjcmUxNiAqLCBQQ1JFX1NQVFIxNiwKKyAgICAgICAgICAgICAgICAgIGludCAqLCBpbnQsIFBDUkVfU1BUUjE2LCBQQ1JFX1NQVFIxNiAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfZ2V0X25hbWVkX3N1YnN0cmluZyhjb25zdCBwY3JlMzIgKiwgUENSRV9TUFRSMzIsCisgICAgICAgICAgICAgICAgICBpbnQgKiwgaW50LCBQQ1JFX1NQVFIzMiwgUENSRV9TUFRSMzIgKik7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZV9nZXRfc3RyaW5nbnVtYmVyKGNvbnN0IHBjcmUgKiwgY29uc3QgY2hhciAqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMTZfZ2V0X3N0cmluZ251bWJlcihjb25zdCBwY3JlMTYgKiwgUENSRV9TUFRSMTYpOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUzMl9nZXRfc3RyaW5nbnVtYmVyKGNvbnN0IHBjcmUzMiAqLCBQQ1JFX1NQVFIzMik7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZV9nZXRfc3RyaW5ndGFibGVfZW50cmllcyhjb25zdCBwY3JlICosIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgIGNoYXIgKiosIGNoYXIgKiopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUxNl9nZXRfc3RyaW5ndGFibGVfZW50cmllcyhjb25zdCBwY3JlMTYgKiwgUENSRV9TUFRSMTYsCisgICAgICAgICAgICAgICAgICBQQ1JFX1VDSEFSMTYgKiosIFBDUkVfVUNIQVIxNiAqKik7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZTMyX2dldF9zdHJpbmd0YWJsZV9lbnRyaWVzKGNvbnN0IHBjcmUzMiAqLCBQQ1JFX1NQVFIzMiwKKyAgICAgICAgICAgICAgICAgIFBDUkVfVUNIQVIzMiAqKiwgUENSRV9VQ0hBUjMyICoqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlX2dldF9zdWJzdHJpbmcoY29uc3QgY2hhciAqLCBpbnQgKiwgaW50LCBpbnQsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMTZfZ2V0X3N1YnN0cmluZyhQQ1JFX1NQVFIxNiwgaW50ICosIGludCwgaW50LAorICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMTYgKik7CitQQ1JFX0VYUF9ERUNMIGludCAgcGNyZTMyX2dldF9zdWJzdHJpbmcoUENSRV9TUFRSMzIsIGludCAqLCBpbnQsIGludCwKKyAgICAgICAgICAgICAgICAgIFBDUkVfU1BUUjMyICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmVfZ2V0X3N1YnN0cmluZ19saXN0KGNvbnN0IGNoYXIgKiwgaW50ICosIGludCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKioqKTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMTZfZ2V0X3N1YnN0cmluZ19saXN0KFBDUkVfU1BUUjE2LCBpbnQgKiwgaW50LAorICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMTYgKiopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUzMl9nZXRfc3Vic3RyaW5nX2xpc3QoUENSRV9TUFRSMzIsIGludCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICBQQ1JFX1NQVFIzMiAqKik7CitQQ1JFX0VYUF9ERUNMIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBjcmVfbWFrZXRhYmxlcyh2b2lkKTsKK1BDUkVfRVhQX0RFQ0wgY29uc3QgdW5zaWduZWQgY2hhciAqcGNyZTE2X21ha2V0YWJsZXModm9pZCk7CitQQ1JFX0VYUF9ERUNMIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBjcmUzMl9tYWtldGFibGVzKHZvaWQpOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmVfcmVmY291bnQocGNyZSAqLCBpbnQpOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUxNl9yZWZjb3VudChwY3JlMTYgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfcmVmY291bnQocGNyZTMyICosIGludCk7CitQQ1JFX0VYUF9ERUNMIHBjcmVfZXh0cmEgKnBjcmVfc3R1ZHkoY29uc3QgcGNyZSAqLCBpbnQsIGNvbnN0IGNoYXIgKiopOworUENSRV9FWFBfREVDTCBwY3JlMTZfZXh0cmEgKnBjcmUxNl9zdHVkeShjb25zdCBwY3JlMTYgKiwgaW50LCBjb25zdCBjaGFyICoqKTsKK1BDUkVfRVhQX0RFQ0wgcGNyZTMyX2V4dHJhICpwY3JlMzJfc3R1ZHkoY29uc3QgcGNyZTMyICosIGludCwgY29uc3QgY2hhciAqKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZV9mcmVlX3N0dWR5KHBjcmVfZXh0cmEgKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZTE2X2ZyZWVfc3R1ZHkocGNyZTE2X2V4dHJhICopOworUENSRV9FWFBfREVDTCB2b2lkIHBjcmUzMl9mcmVlX3N0dWR5KHBjcmUzMl9leHRyYSAqKTsKK1BDUkVfRVhQX0RFQ0wgY29uc3QgY2hhciAqcGNyZV92ZXJzaW9uKHZvaWQpOworUENSRV9FWFBfREVDTCBjb25zdCBjaGFyICpwY3JlMTZfdmVyc2lvbih2b2lkKTsKK1BDUkVfRVhQX0RFQ0wgY29uc3QgY2hhciAqcGNyZTMyX3ZlcnNpb24odm9pZCk7CisKKy8qIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBieXRlIG9yZGVyIHN3YXBzLiAqLworUENSRV9FWFBfREVDTCBpbnQgIHBjcmVfcGF0dGVybl90b19ob3N0X2J5dGVfb3JkZXIocGNyZSAqLCBwY3JlX2V4dHJhICosCisgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUxNl9wYXR0ZXJuX3RvX2hvc3RfYnl0ZV9vcmRlcihwY3JlMTYgKiwgcGNyZTE2X2V4dHJhICosCisgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUzMl9wYXR0ZXJuX3RvX2hvc3RfYnl0ZV9vcmRlcihwY3JlMzIgKiwgcGNyZTMyX2V4dHJhICosCisgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICopOworUENSRV9FWFBfREVDTCBpbnQgIHBjcmUxNl91dGYxNl90b19ob3N0X2J5dGVfb3JkZXIoUENSRV9VQ0hBUjE2ICosCisgICAgICAgICAgICAgICAgICBQQ1JFX1NQVFIxNiwgaW50LCBpbnQgKiwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgaW50ICBwY3JlMzJfdXRmMzJfdG9faG9zdF9ieXRlX29yZGVyKFBDUkVfVUNIQVIzMiAqLAorICAgICAgICAgICAgICAgICAgUENSRV9TUFRSMzIsIGludCwgaW50ICosIGludCk7CisKKy8qIEpJVCBjb21waWxlciByZWxhdGVkIGZ1bmN0aW9ucy4gKi8KKworUENSRV9FWFBfREVDTCBwY3JlX2ppdF9zdGFjayAqcGNyZV9qaXRfc3RhY2tfYWxsb2MoaW50LCBpbnQpOworUENSRV9FWFBfREVDTCBwY3JlMTZfaml0X3N0YWNrICpwY3JlMTZfaml0X3N0YWNrX2FsbG9jKGludCwgaW50KTsKK1BDUkVfRVhQX0RFQ0wgcGNyZTMyX2ppdF9zdGFjayAqcGNyZTMyX2ppdF9zdGFja19hbGxvYyhpbnQsIGludCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZV9qaXRfc3RhY2tfZnJlZShwY3JlX2ppdF9zdGFjayAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlMTZfaml0X3N0YWNrX2ZyZWUocGNyZTE2X2ppdF9zdGFjayAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlMzJfaml0X3N0YWNrX2ZyZWUocGNyZTMyX2ppdF9zdGFjayAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlX2Fzc2lnbl9qaXRfc3RhY2socGNyZV9leHRyYSAqLAorICAgICAgICAgICAgICAgICAgcGNyZV9qaXRfY2FsbGJhY2ssIHZvaWQgKik7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZTE2X2Fzc2lnbl9qaXRfc3RhY2socGNyZTE2X2V4dHJhICosCisgICAgICAgICAgICAgICAgICBwY3JlMTZfaml0X2NhbGxiYWNrLCB2b2lkICopOworUENSRV9FWFBfREVDTCB2b2lkIHBjcmUzMl9hc3NpZ25faml0X3N0YWNrKHBjcmUzMl9leHRyYSAqLAorICAgICAgICAgICAgICAgICAgcGNyZTMyX2ppdF9jYWxsYmFjaywgdm9pZCAqKTsKK1BDUkVfRVhQX0RFQ0wgdm9pZCBwY3JlX2ppdF9mcmVlX3VudXNlZF9tZW1vcnkodm9pZCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZTE2X2ppdF9mcmVlX3VudXNlZF9tZW1vcnkodm9pZCk7CitQQ1JFX0VYUF9ERUNMIHZvaWQgcGNyZTMyX2ppdF9mcmVlX3VudXNlZF9tZW1vcnkodm9pZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAgLyogZXh0ZXJuICJDIiAqLworI2VuZGlmCisKKyNlbmRpZiAvKiBFbmQgb2YgcGNyZS5oICovCg==