ZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS8uZWRpdG9yY29uZmlnIGIvdGhpcmRfcGFydHkvYnJvdGxpLy5lZGl0b3Jjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlZDNjMQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS8uZWRpdG9yY29uZmlnCkBAIC0wLDAgKzEsNDAgQEAKKyMgaHR0cDovL2VkaXRvcmNvbmZpZy5vcmcKKyMgQ29uc2lzdGVudCBjb2Rpbmcgc3R5bGUgYWNyb3NzIGRpZmZlcmVudCBlZGl0b3JzLgorCisjIFRvcC1tb3N0IGZpbGUKK3Jvb3QgPSB0cnVlCisKKyMgR2xvYmFsIHN0eWxlczoKKyMgICAtIGluZGVudCAyIHNwYWNlcworIyAgIC0gYWRkIGZpbmFsIG5ldyBsaW5lCisjICAgLSB0cmltIHRyYWlsaW5nIHdoaXRlc3BhY2UKK1sqXQorY2hhcnNldCA9IHV0Zi04CitlbmRfb2ZfbGluZSA9IGxmCitpbmRlbnRfc2l6ZSA9IDIKK2luZGVudF9zdHlsZSA9IHNwYWNlCitpbnNlcnRfZmluYWxfbmV3bGluZSA9IHRydWUKK3RyaW1fdHJhaWxpbmdfd2hpdGVzcGFjZSA9IHRydWUKKworIyBCVUlMRDoKKyMgICAtIGluZGVudCA0IHNwYWNlcworW0JVSUxEXQoraW5kZW50X3NpemUgPSA0CisKKyMgTWFrZWZpbGU6CisjICAgLSBpbmRlbnQgMSB0YWIKK1tNYWtlZmlsZV0KK2luZGVudF9zaXplID0gdGFiCitpbmRlbnRfc3R5bGUgPSB0YWIKKworIyBNYXJrZG93bjoKKyMgICAtIGluZGVudCA0IHNwYWNlcworIyAgIC0gdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyBzaWduaWZpY2FudAorWyoubWRdCitpbmRlbnRfc2l6ZSA9IDQKK3RyaW1fdHJhaWxpbmdfd2hpdGVzcGFjZSA9IGZhbHNlCisKKyMgUHl0aG9uCisjICAgLSBpbmRlbnQgNCBzcGFjZXMKK1sqLnB5XQoraW5kZW50X3NpemUgPSA0CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvLmdpdGF0dHJpYnV0ZXMgYi90aGlyZF9wYXJ0eS9icm90bGkvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1NWJjOQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS8uZ2l0YXR0cmlidXRlcwpAQCAtMCwwICsxLDIgQEAKK3Rlc3RzL3Rlc3RkYXRhLyogYmluYXJ5CisKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS8uZ2l0aWdub3JlIGIvdGhpcmRfcGFydHkvYnJvdGxpLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyNjljYgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMTkgQEAKKyMgQworKi5vCisqLm9iagorYmluLworYnVpbGRmaWxlcy8KKyoqL29iai8KK2Rpc3QvCisqKi9iYXplbC0qCisKKyMgUHl0aG9uCitfX3B5Y2FjaGVfXy8KKyoucHlbY29kXQorKi5zbworKi5lZ2ctaW5mby8KKworIyBUZXN0cworKi50eHQudW5jb21wcmVzc2VkCisqLmJyCisqLnVuYnIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS8udHJhdmlzLnltbCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjhlNjgwCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMjI5IEBACitsYW5ndWFnZTogYworc3VkbzogZmFsc2UKK2JyYW5jaGVzOgorICBvbmx5OgorICAtIG1hc3RlcgorbWF0cml4OgorICBpbmNsdWRlOgorICAgICMjIworICAgICMjIExpbnV4IGJ1aWxkcyB1c2luZyB2YXJpb3VzIHZlcnNpb25zIG9mIEdDQy4KKyAgICAjIyMKKyAgICAtIG9zOiBsaW51eAorICAgICAgZW52OiBCVUlMRF9TWVNURU09Y21ha2UgQ19DT01QSUxFUj1nY2MtNyBDWFhfQ09NUElMRVI9ZysrLTcKKyAgICAgIGFkZG9uczoKKyAgICAgICAgYXB0OgorICAgICAgICAgIHNvdXJjZXM6CisgICAgICAgICAgLSB1YnVudHUtdG9vbGNoYWluLXItdGVzdAorICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gZ2NjLTcKKyAgICAgICAgICAtIGcrKy03CisgICAgLSBvczogbGludXgKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPWNtYWtlIENfQ09NUElMRVI9Z2NjLTQuNCBDWFhfQ09NUElMRVI9ZysrLTQuNAorICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAtIHVidW50dS10b29sY2hhaW4tci10ZXN0CisgICAgICAgICAgcGFja2FnZXM6CisgICAgICAgICAgLSBnY2MtNC40CisgICAgICAgICAgLSBnKystNC40CisKKyAgICAjIyMKKyAgICAjIyBUZXN0IHRoYXQgQXV0b3Rvb2xzIGJ1aWxkIHdvcmtzLgorICAgICMjIworICAgIC0gb3M6IGxpbnV4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1hdXRvdG9vbHMgQ19DT01QSUxFUj1nY2MtNSBDWFhfQ09NUElMRVI9ZysrLTUKKyAgICAgIGFkZG9uczoKKyAgICAgICAgYXB0OgorICAgICAgICAgIHNvdXJjZXM6CisgICAgICAgICAgLSB1YnVudHUtdG9vbGNoYWluLXItdGVzdAorICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gZ2NjLTUKKyAgICAgICAgICAtIGcrKy01CisKKyAgICAjIyMKKyAgICAjIyBUZXN0IHRoYXQgZnV6emVyIGlzIGNvbXBpbGluZyAvIHdvcmtpbmcuCisgICAgIyMjCisgICAgLSBvczogbGludXgKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPWZ1enogQ19DT01QSUxFUj1jbGFuZy03IENYWF9DT01QSUxFUj1jbGFuZysrLTcgQVNBTl9PUFRJT05TPWRldGVjdF9sZWFrcz0wCisgICAgICBhZGRvbnM6CisgICAgICAgIGFwdDoKKyAgICAgICAgICBzb3VyY2VzOgorICAgICAgICAgIC0gdWJ1bnR1LXRvb2xjaGFpbi1yLXRlc3QKKyAgICAgICAgICAtIGxsdm0tdG9vbGNoYWluLXhlbmlhbC03CisgICAgICAgICAgcGFja2FnZXM6CisgICAgICAgICAgLSBjbGFuZy03CisKKyAgICAjIyMKKyAgICAjIyBjbGFuZyBvbiBMaW51eAorICAgICMjIworICAgIC0gb3M6IGxpbnV4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1jbWFrZSBDX0NPTVBJTEVSPWNsYW5nLTcgQ1hYX0NPTVBJTEVSPWNsYW5nKystNworICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAtIGxsdm0tdG9vbGNoYWluLXhlbmlhbC03CisgICAgICAgICAgLSB1YnVudHUtdG9vbGNoYWluLXItdGVzdAorICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gY2xhbmctNworICAgIC0gb3M6IGxpbnV4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1jbWFrZSBDX0NPTVBJTEVSPWNsYW5nLTMuNSBDWFhfQ09NUElMRVI9Y2xhbmcrKy0zLjUKKyAgICAgIGFkZG9uczoKKyAgICAgICAgYXB0OgorICAgICAgICAgIHNvdXJjZXM6CisgICAgICAgICAgLSBsbHZtLXRvb2xjaGFpbi10cnVzdHktMy41CisgICAgICAgICAgLSB1YnVudHUtdG9vbGNoYWluLXItdGVzdAorICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gY2xhbmctMy41CisKKyAgICAjIyMKKyAgICAjIyB0ZXN0aW5nIGFybSB2aWEgcWVtdSBvbiBMaW51eAorICAgICMjIworICAgIC0gb3M6IGxpbnV4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1jbWFrZSBDX0NPTVBJTEVSPWFybS1saW51eC1nbnVlYWJpaGYtZ2NjIENYWF9DT01QSUxFUj1hcm0tbGludXgtZ251ZWFiaWhmLWcrKyBDRkxBR1M9Ii1tYXJjaD1hcm12Ny1hIC1tZmxvYXQtYWJpPWhhcmQgLW1mcHU9bmVvbiIKKyAgICAgIGFkZG9uczoKKyAgICAgICAgYXB0OgorICAgICAgICAgIHNvdXJjZXM6CisgICAgICAgICAgLSB1YnVudHUtdG9vbGNoYWluLXItdGVzdAorICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gcWVtdQorICAgICAgICAgIC0gZ2NjLWFybS1saW51eC1nbnVlYWJpaGYKKyAgICAgICAgICAtIGxpYmM2LWRldi1hcm1oZi1jcm9zcworCisgICAgIyMjCisgICAgIyMgUEdJIENvbW11bml0eSBFZGl0aW9uIG9uIExpbnV4CisgICAgIyMjCisgICAgIyBJbnN0YWxsZXIgaXMgY3VycmVudGx5IGJyb2tlbgorICAgICMtIG9zOiBsaW51eAorICAgICMgIGVudjogQlVJTERfU1lTVEVNPWNtYWtlIENfQ09NUElMRVI9cGdjYyBDWFhfQ09NUElMRVI9cGdjKysKKworICAgICMjIworICAgICMjIFB5dGhvbiAyLjcgYW5kIDMuNiBidWlsZHMgb24gTGludXgKKyAgICAjIyMKKyAgICAtIG9zOiBsaW51eAorICAgICAgbGFuZ3VhZ2U6IHB5dGhvbgorICAgICAgcHl0aG9uOiAyLjcKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPXB5dGhvbiBDX0NPTVBJTEVSPWdjYy01IENYWF9DT01QSUxFUj1nKystNQorICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAtIHVidW50dS10b29sY2hhaW4tci10ZXN0CisgICAgICAgICAgcGFja2FnZXM6CisgICAgICAgICAgLSBnY2MtNQorICAgICAgICAgIC0gZysrLTUKKyAgICAtIG9zOiBsaW51eAorICAgICAgbGFuZ3VhZ2U6IHB5dGhvbgorICAgICAgcHl0aG9uOiAzLjYKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPXB5dGhvbiBDX0NPTVBJTEVSPWdjYy01IENYWF9DT01QSUxFUj1nKystNQorICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAtIHVidW50dS10b29sY2hhaW4tci10ZXN0CisgICAgICAgICAgcGFja2FnZXM6CisgICAgICAgICAgLSBnY2MtNQorICAgICAgICAgIC0gZysrLTUKKworICAgICMjIworICAgICMjIENNYWtlIG9uIE9TIFgKKyAgICAjIworICAgICMjIFRoZXNlIGFsbCB3b3JrLCBidXQgaXQgc2VlbXMgdW5uZWNlc3NhcnkgdG8gYWN0dWFsbHkgYnVpbGQgdGhlbQorICAgICMjIGFsbCBzaW5jZSB3ZSBhbHJlYWR5IHRlc3QgYWxsIHRoZXNlIHZlcnNpb25zIG9mIEdDQyBvbiBMaW51eC4KKyAgICAjIyBXZSdsbCBqdXN0IHRlc3QgNC40IGFuZCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKyAgICAjIyMKKyAgICAtIG9zOiBvc3gKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPWNtYWtlIENfQ09NUElMRVI9Z2NjIENYWF9DT01QSUxFUj1nKysKKyAgICAtIG9zOiBvc3gKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPWNtYWtlIENfQ09NUElMRVI9Z2NjLTQuOSBDWFhfQ09NUElMRVI9ZysrLTQuOQorICAgIC0gb3M6IG9zeAorICAgICAgZW52OiBCVUlMRF9TWVNURU09Y21ha2UKKworICAgICMjIworICAgICMjIFB5dGhvbiAyLjcgT1MgWCBidWlsZCAodXNpbmcgdGhlIHN5c3RlbSAvdXNyL2Jpbi9weXRob24pCisgICAgIyMjCisgICAgLSBvczogb3N4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1weXRob24gQ19DT01QSUxFUj1nY2MgQ1hYX0NPTVBJTEVSPWcrKworCisgICAgIyMjCisgICAgIyMgU2FuaXRpemVycworICAgICMjIworICAgIC0gb3M6IGxpbnV4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1jbWFrZSBDX0NPTVBJTEVSPWNsYW5nLTcgQ1hYX0NPTVBJTEVSPWNsYW5nKystNyBTQU5JVElaRVI9YWRkcmVzcyBBU0FOX09QVElPTlM9ZGV0ZWN0X2xlYWtzPTAKKyAgICAgIGFkZG9uczoKKyAgICAgICAgYXB0OgorICAgICAgICAgIHNvdXJjZXM6CisgICAgICAgICAgLSB1YnVudHUtdG9vbGNoYWluLXItdGVzdAorICAgICAgICAgIC0gbGx2bS10b29sY2hhaW4teGVuaWFsLTcKKyAgICAgICAgICBwYWNrYWdlczoKKyAgICAgICAgICAtIGNsYW5nLTcKKyAgICAtIG9zOiBsaW51eAorICAgICAgZW52OiBCVUlMRF9TWVNURU09Y21ha2UgQ19DT01QSUxFUj1jbGFuZy03IENYWF9DT01QSUxFUj1jbGFuZysrLTcgU0FOSVRJWkVSPXRocmVhZAorICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAtIHVidW50dS10b29sY2hhaW4tci10ZXN0CisgICAgICAgICAgLSBsbHZtLXRvb2xjaGFpbi14ZW5pYWwtNworICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gY2xhbmctNworICAgIC0gb3M6IGxpbnV4CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1jbWFrZSBDX0NPTVBJTEVSPWNsYW5nLTcgQ1hYX0NPTVBJTEVSPWNsYW5nKystNyBTQU5JVElaRVI9dW5kZWZpbmVkIENGTEFHUz0iLWZuby1zYW5pdGl6ZS1yZWNvdmVyPXVuZGVmaW5lZCxpbnRlZ2VyIgorICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAtIHVidW50dS10b29sY2hhaW4tci10ZXN0CisgICAgICAgICAgLSBsbHZtLXRvb2xjaGFpbi14ZW5pYWwtNworICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgIC0gY2xhbmctNworCisgICAgLSBvczogbGludXgKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPW1hdmVuCisgICAgICBqZGs6CisgICAgICAjIG1hdmVuICsgamRrMTEgKyBqYXZhZG9jID09IHRyb3VibGUKKyAgICAgIC0gb3BlbmpkazEwCisgICAgICBsYW5ndWFnZTogamF2YQorCisgICAgLSBvczogbGludXgKKyAgICAgIHN1ZG86IHJlcXVpcmVkCisgICAgICBsYW5ndWFnZTogamF2YQorICAgICAgamRrOiBvcmFjbGVqZGs5CisgICAgICBlbnY6IEJVSUxEX1NZU1RFTT1iYXplbAorICAgICAgYWRkb25zOgorICAgICAgICBhcHQ6CisgICAgICAgICAgc291cmNlczoKKyAgICAgICAgICAgIC0gc291cmNlbGluZTogImRlYiBbYXJjaD1hbWQ2NF0gaHR0cDovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYmF6ZWwtYXB0IHN0YWJsZSBqZGsxLjgiCisgICAgICAgICAgICAgIGtleV91cmw6ICJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYmF6ZWwtYXB0L2RvYy9hcHQta2V5LnB1Yi5ncGciCisgICAgICAgICAgICAtIHVidW50dS10b29sY2hhaW4tci10ZXN0CisgICAgICAgICAgcGFja2FnZXM6CisgICAgICAgICAgICAtIGJhemVsCisKKyAgICAtIG9zOiBvc3gKKyAgICAgIGVudjogQlVJTERfU1lTVEVNPWJhemVsCisgICAgICBvc3hfaW1hZ2U6IHhjb2RlMTEuMworICAgICAgbGFuZ3VhZ2U6IGphdmEKKworYmVmb3JlX2luc3RhbGw6CisjIyMKKyMjIElmIHdlIHVzZSB0aGUgbWF0cml4IHRvIHNldCBDQy9DWFggVHJhdmlzLCBvdmVyd3JpdGVzIHRoZSB2YWx1ZXMsCisjIyBzbyBpbnN0ZWFkIHdlIHVzZSBDL0NYWF9DT01QSUxFUiwgdGhlbiBjb3B5IHRoZSB2YWx1ZXMgdG8gQ0MvQ1hYCisjIyBoZXJlIChhZnRlciBUcmF2aXMgaGFzIHNldCBDQy9DWFgpLgorIyMjCistIGlmIFsgLW4gIiR7Q19DT01QSUxFUn0iIF07IHRoZW4gZXhwb3J0IENDPSIke0NfQ09NUElMRVJ9IjsgZmkKKy0gaWYgWyAtbiAiJHtDWFhfQ09NUElMRVJ9IiBdOyB0aGVuIGV4cG9ydCBDWFg9IiR7Q1hYX0NPTVBJTEVSfSI7IGZpCistIHNjcmlwdHMvLnRyYXZpcy5zaCBiZWZvcmVfaW5zdGFsbAoraW5zdGFsbDoKKy0gc2NyaXB0cy8udHJhdmlzLnNoIGluc3RhbGwKK3NjcmlwdDoKKy0gc2NyaXB0cy8udHJhdmlzLnNoIHNjcmlwdAorYWZ0ZXJfc3VjY2VzczoKKy0gc2NyaXB0cy8udHJhdmlzLnNoIGFmdGVyX3N1Y2Nlc3MKKworYmVmb3JlX2RlcGxveToKKy0gc2NyaXB0cy8udHJhdmlzLnNoIGJlZm9yZV9kZXBsb3kKKworZGVwbG95OgorLSBwcm92aWRlcjogYmludHJheQorICBmaWxlOiAic2NyaXB0cy8uYmludHJheS5qc29uIgorICB1c2VyOiAiZXVzdGFzIgorICBrZXk6CisgICAgc2VjdXJlOiAiS2JhbS9sVEFkejcyZlppdmJzNnJpSlQrWTRQYnVLUDdyNnQ1UEFXeEp4QUF5a2p3bllUUmUzekY0NzJnOUhDRTE0S1lNc2RCK0tTWVNnZzZUR0pucUdDOWdMOXhoaEdVOVUvV21BK3ZiTVdTL01Tbk1XcEs5SVJwcDc3cE0yaTJOS1pENHYzM0p1RXdLRkNCSlAzVmo2UVE1UWQxTktkb2J1WEp5em5oZ253PSIKKyAgb246CisgICAgY29uZGl0aW9uOiAiJHtCVUlMRF9TWVNURU19ID0gYmF6ZWwiCisgIHNraXBfY2xlYW51cDogdHJ1ZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL0JVSUxELmduIGIvdGhpcmRfcGFydHkvYnJvdGxpL0JVSUxELmduCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNTc4M2YKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvQlVJTEQuZ24KQEAgLTAsMCArMSwyNjQgQEAKKyMgQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworaW1wb3J0KCIvL3Rlc3RpbmcvbGliZnV6emVyL2Z1enplcl90ZXN0LmduaSIpCisKK2lmIChpc193aW4pIHsKKyAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy93aW4vdmlzdWFsX3N0dWRpb192ZXJzaW9uLmduaSIpCit9CisKK2NvbmZpZygiaW5jbHVkZXMiKSB7CisgIGlmIChpc19zdGFyYm9hcmQpIHsKKyAgICBpbmNsdWRlX2RpcnMgPSBbICJjL2luY2x1ZGUiIF0KKyAgfSBlbHNlIHsKKyAgICBpbmNsdWRlX2RpcnMgPSBbICJpbmNsdWRlIiBdCisgIH0KK30KKworc291cmNlX3NldCgiaGVhZGVycyIpIHsKKyAgaWYgKGlzX3N0YXJib2FyZCkgeworICAgIHNvdXJjZXMgPSBbCisgICAgICAiYy9pbmNsdWRlL2Jyb3RsaS9kZWNvZGUuaCIsCisgICAgICAiYy9pbmNsdWRlL2Jyb3RsaS9lbmNvZGUuaCIsCisgICAgICAiYy9pbmNsdWRlL2Jyb3RsaS9wb3J0LmgiLAorICAgICAgImMvaW5jbHVkZS9icm90bGkvdHlwZXMuaCIsCisgICAgXQorICB9IGVsc2UgeworICAgIHNvdXJjZXMgPSBbCisgICAgICAiaW5jbHVkZS9icm90bGkvZGVjb2RlLmgiLAorICAgICAgImluY2x1ZGUvYnJvdGxpL2VuY29kZS5oIiwKKyAgICAgICJpbmNsdWRlL2Jyb3RsaS9wb3J0LmgiLAorICAgICAgImluY2x1ZGUvYnJvdGxpL3R5cGVzLmgiLAorICAgIF0KKyAgfQorfQorCitpZiAoaXNfc3RhcmJvYXJkKSB7CisgIGNvbW1vbl9zb3VyY2VzID0gWworICAgICJjL2NvbW1vbi9jb25zdGFudHMuYyIsCisgICAgImMvY29tbW9uL2NvbnN0YW50cy5oIiwKKyAgICAiYy9jb21tb24vY29udGV4dC5jIiwKKyAgICAiYy9jb21tb24vY29udGV4dC5oIiwKKyAgICAiYy9jb21tb24vZGljdGlvbmFyeS5jIiwKKyAgICAiYy9jb21tb24vZGljdGlvbmFyeS5oIiwKKyAgICAiYy9jb21tb24vcGxhdGZvcm0uYyIsCisgICAgImMvY29tbW9uL3BsYXRmb3JtLmgiLAorICAgICJjL2NvbW1vbi90cmFuc2Zvcm0uYyIsCisgICAgImMvY29tbW9uL3RyYW5zZm9ybS5oIiwKKyAgICAiYy9jb21tb24vdmVyc2lvbi5oIiwKKyAgXQorfSBlbHNlIHsKKyAgY29tbW9uX3NvdXJjZXMgPSBbCisgICAgImNvbW1vbi9jb25zdGFudHMuYyIsCisgICAgImNvbW1vbi9jb25zdGFudHMuaCIsCisgICAgImNvbW1vbi9jb250ZXh0LmMiLAorICAgICJjb21tb24vY29udGV4dC5oIiwKKyAgICAiY29tbW9uL2RpY3Rpb25hcnkuYyIsCisgICAgImNvbW1vbi9kaWN0aW9uYXJ5LmgiLAorICAgICJjb21tb24vcGxhdGZvcm0uYyIsCisgICAgImNvbW1vbi9wbGF0Zm9ybS5oIiwKKyAgICAiY29tbW9uL3RyYW5zZm9ybS5jIiwKKyAgICAiY29tbW9uL3RyYW5zZm9ybS5oIiwKKyAgICAiY29tbW9uL3ZlcnNpb24uaCIsCisgIF0KK30KKworc3RhdGljX2xpYnJhcnkoImNvbW1vbiIpIHsKKyAgc291cmNlcyA9IGNvbW1vbl9zb3VyY2VzCisgIHB1YmxpY19jb25maWdzID0gWyAiOmluY2x1ZGVzIiBdCisgIGRlcHMgPSBbICI6aGVhZGVycyIgXQorfQorCitzdGF0aWNfbGlicmFyeSgiY29tbW9uX25vX2RpY3Rpb25hcnlfZGF0YSIpIHsKKyAgc291cmNlcyA9IGNvbW1vbl9zb3VyY2VzCisgIHB1YmxpY19jb25maWdzID0gWyAiOmluY2x1ZGVzIiBdCisgIGRlcHMgPSBbICI6aGVhZGVycyIgXQorICBkZWZpbmVzID0gWyAiQlJPVExJX0VYVEVSTkFMX0RJQ1RJT05BUllfREFUQSIgXQorfQorCitpZiAoaXNfc3RhcmJvYXJkKSB7CisgIGRlY19zb3VyY2VzID0gWworICAgICJjL2RlYy9iaXRfcmVhZGVyLmMiLAorICAgICJjL2RlYy9iaXRfcmVhZGVyLmgiLAorICAgICJjL2RlYy9kZWNvZGUuYyIsCisgICAgImMvZGVjL2h1ZmZtYW4uYyIsCisgICAgImMvZGVjL2h1ZmZtYW4uaCIsCisgICAgImMvZGVjL3ByZWZpeC5oIiwKKyAgICAiYy9kZWMvc3RhdGUuYyIsCisgICAgImMvZGVjL3N0YXRlLmgiLAorICBdCit9IGVsc2UgeworICBkZWNfc291cmNlcyA9IFsKKyAgICAiZGVjL2JpdF9yZWFkZXIuYyIsCisgICAgImRlYy9iaXRfcmVhZGVyLmgiLAorICAgICJkZWMvZGVjb2RlLmMiLAorICAgICJkZWMvaHVmZm1hbi5jIiwKKyAgICAiZGVjL2h1ZmZtYW4uaCIsCisgICAgImRlYy9wcmVmaXguaCIsCisgICAgImRlYy9zdGF0ZS5jIiwKKyAgICAiZGVjL3N0YXRlLmgiLAorICBdCisKKyAgZW5jX3NvdXJjZXMgPSBbCisgICAgImVuYy9iYWNrd2FyZF9yZWZlcmVuY2VzX2hxLmMiLAorICAgICJlbmMvYmFja3dhcmRfcmVmZXJlbmNlc19ocS5oIiwKKyAgICAiZW5jL2JhY2t3YXJkX3JlZmVyZW5jZXNfaW5jLmgiLAorICAgICJlbmMvYmFja3dhcmRfcmVmZXJlbmNlcy5jIiwKKyAgICAiZW5jL2JhY2t3YXJkX3JlZmVyZW5jZXMuaCIsCisgICAgImVuYy9iaXRfY29zdF9pbmMuaCIsCisgICAgImVuYy9iaXRfY29zdC5jIiwKKyAgICAiZW5jL2JpdF9jb3N0LmgiLAorICAgICJlbmMvYmxvY2tfZW5jb2Rlcl9pbmMuaCIsCisgICAgImVuYy9ibG9ja19zcGxpdHRlcl9pbmMuaCIsCisgICAgImVuYy9ibG9ja19zcGxpdHRlci5jIiwKKyAgICAiZW5jL2Jsb2NrX3NwbGl0dGVyLmgiLAorICAgICJlbmMvYnJvdGxpX2JpdF9zdHJlYW0uYyIsCisgICAgImVuYy9icm90bGlfYml0X3N0cmVhbS5oIiwKKyAgICAiZW5jL2NsdXN0ZXJfaW5jLmgiLAorICAgICJlbmMvY2x1c3Rlci5jIiwKKyAgICAiZW5jL2NsdXN0ZXIuaCIsCisgICAgImVuYy9jb21tYW5kLmMiLAorICAgICJlbmMvY29tbWFuZC5oIiwKKyAgICAiZW5jL2NvbXByZXNzX2ZyYWdtZW50X3R3b19wYXNzLmMiLAorICAgICJlbmMvY29tcHJlc3NfZnJhZ21lbnRfdHdvX3Bhc3MuaCIsCisgICAgImVuYy9jb21wcmVzc19mcmFnbWVudC5jIiwKKyAgICAiZW5jL2NvbXByZXNzX2ZyYWdtZW50LmgiLAorICAgICJlbmMvZGljdGlvbmFyeV9oYXNoLmMiLAorICAgICJlbmMvZGljdGlvbmFyeV9oYXNoLmgiLAorICAgICJlbmMvZW5jb2RlLmMiLAorICAgICJlbmMvZW5jb2Rlcl9kaWN0LmMiLAorICAgICJlbmMvZW5jb2Rlcl9kaWN0LmgiLAorICAgICJlbmMvZW50cm9weV9lbmNvZGVfc3RhdGljLmgiLAorICAgICJlbmMvZW50cm9weV9lbmNvZGUuYyIsCisgICAgImVuYy9lbnRyb3B5X2VuY29kZS5oIiwKKyAgICAiZW5jL2Zhc3RfbG9nLmMiLAorICAgICJlbmMvZmFzdF9sb2cuaCIsCisgICAgImVuYy9maW5kX21hdGNoX2xlbmd0aC5oIiwKKyAgICAiZW5jL2hhc2hfY29tcG9zaXRlX2luYy5oIiwKKyAgICAiZW5jL2hhc2hfZm9yZ2V0ZnVsX2NoYWluX2luYy5oIiwKKyAgICAiZW5jL2hhc2hfbG9uZ2VzdF9tYXRjaF9pbmMuaCIsCisgICAgImVuYy9oYXNoX2xvbmdlc3RfbWF0Y2hfcXVpY2tseV9pbmMuaCIsCisgICAgImVuYy9oYXNoX2xvbmdlc3RfbWF0Y2g2NF9pbmMuaCIsCisgICAgImVuYy9oYXNoX3JvbGxpbmdfaW5jLmgiLAorICAgICJlbmMvaGFzaF90b19iaW5hcnlfdHJlZV9pbmMuaCIsCisgICAgImVuYy9oYXNoLmgiLAorICAgICJlbmMvaGlzdG9ncmFtX2luYy5oIiwKKyAgICAiZW5jL2hpc3RvZ3JhbS5jIiwKKyAgICAiZW5jL2hpc3RvZ3JhbS5oIiwKKyAgICAiZW5jL2xpdGVyYWxfY29zdC5jIiwKKyAgICAiZW5jL2xpdGVyYWxfY29zdC5oIiwKKyAgICAiZW5jL21lbW9yeS5jIiwKKyAgICAiZW5jL21lbW9yeS5oIiwKKyAgICAiZW5jL21ldGFibG9ja19pbmMuaCIsCisgICAgImVuYy9tZXRhYmxvY2suYyIsCisgICAgImVuYy9tZXRhYmxvY2suaCIsCisgICAgImVuYy9wYXJhbXMuaCIsCisgICAgImVuYy9wcmVmaXguaCIsCisgICAgImVuYy9xdWFsaXR5LmgiLAorICAgICJlbmMvcmluZ2J1ZmZlci5oIiwKKyAgICAiZW5jL3N0YXRpY19kaWN0X2x1dC5oIiwKKyAgICAiZW5jL3N0YXRpY19kaWN0LmMiLAorICAgICJlbmMvc3RhdGljX2RpY3QuaCIsCisgICAgImVuYy91dGY4X3V0aWwuYyIsCisgICAgImVuYy91dGY4X3V0aWwuaCIsCisgICAgImVuYy93cml0ZV9iaXRzLmgiLAorICBdCit9CisKK3N0YXRpY19saWJyYXJ5KCJkZWMiKSB7CisgIHNvdXJjZXMgPSBkZWNfc291cmNlcworICBwdWJsaWNfY29uZmlncyA9IFsgIjppbmNsdWRlcyIgXQorICBwdWJsaWNfZGVwcyA9IFsgIjpoZWFkZXJzIiBdCisgIGRlcHMgPSBbICI6Y29tbW9uIiBdCisKKyAgaWYgKGlzX3N0YXJib2FyZCkgeworICAgIGNvbmZpZ3MgLT0gWyAiLy9zdGFyYm9hcmQvYnVpbGQvY29uZmlnOnNpemUiIF0KKyAgICBjb25maWdzICs9IFsgIi8vc3RhcmJvYXJkL2J1aWxkL2NvbmZpZzpzcGVlZCIgXQorCisgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiBdCisgIH0gZWxzZSB7CisgICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiBdCisKKyAgICAjIFNpbmNlIHdlIG5ldmVyIGRlYnVnIGJyb3RsaSwgZnJlZXplIHRoZSBvcHRpbWl6YXRpb25zIHRvIC1PMi4KKyAgICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmRlZmF1bHRfb3B0aW1pemF0aW9uIiBdCisgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpvcHRpbWl6ZV9tYXgiIF0KKyAgfQorfQorCitzdGF0aWNfbGlicmFyeSgiZGVjX25vX2RpY3Rpb25hcnlfZGF0YSIpIHsKKyAgc291cmNlcyA9IGRlY19zb3VyY2VzCisgIHB1YmxpY19jb25maWdzID0gWyAiOmluY2x1ZGVzIiBdCisgIHB1YmxpY19kZXBzID0gWyAiOmhlYWRlcnMiIF0KKyAgZGVwcyA9IFsgIjpjb21tb25fbm9fZGljdGlvbmFyeV9kYXRhIiBdCisKKyAgaWYgKGlzX3N0YXJib2FyZCkgeworICAgIGNvbmZpZ3MgLT0gWyAiLy9zdGFyYm9hcmQvYnVpbGQvY29uZmlnOnNpemUiIF0KKyAgICBjb25maWdzICs9IFsgIi8vc3RhcmJvYXJkL2J1aWxkL2NvbmZpZzpzcGVlZCIgXQorCisgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiBdCisgIH0gZWxzZSB7CisgICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiBdCisKKyAgICAjIFNpbmNlIHdlIG5ldmVyIGRlYnVnIGJyb3RsaSwgZnJlZXplIHRoZSBvcHRpbWl6YXRpb25zIHRvIC1PMi4KKyAgICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmRlZmF1bHRfb3B0aW1pemF0aW9uIiBdCisgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpvcHRpbWl6ZV9tYXgiIF0KKyAgfQorfQorCitpZiAoIWlzX3N0YXJib2FyZCkgeworICBzdGF0aWNfbGlicmFyeSgiZW5jIikgeworICAgIHNvdXJjZXMgPSBlbmNfc291cmNlcworICAgIHB1YmxpY19jb25maWdzID0gWyAiOmluY2x1ZGVzIiBdCisKKyAgICBwdWJsaWNfZGVwcyA9IFsgIjpoZWFkZXJzIiBdCisgICAgZGVwcyA9IFsgIjpjb21tb24iIF0KKworICAgIGlmIChpc19zdGFyYm9hcmQpIHsKKyAgICAgIGNvbmZpZ3MgLT0gWyAiLy9zdGFyYm9hcmQvYnVpbGQvY29uZmlnOnNpemUiIF0KKyAgICAgIGNvbmZpZ3MgKz0gWyAiLy9zdGFyYm9hcmQvYnVpbGQvY29uZmlnOnNwZWVkIiBdCisgICAgfSBlbHNlIHsKKyAgICAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICAgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiBdCisgICAgICAjIFNpbmNlIHdlIG5ldmVyIGRlYnVnIGJyb3RsaSwgZnJlZXplIHRoZSBvcHRpbWl6YXRpb25zIHRvIC1PMi4KKworICAgICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpkZWZhdWx0X29wdGltaXphdGlvbiIgXQorICAgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpvcHRpbWl6ZV9tYXgiIF0KKyAgICB9CisgIH0KKworICBpZiAoY3VycmVudF90b29sY2hhaW4gPT0gaG9zdF90b29sY2hhaW4pIHsKKyAgICBleGVjdXRhYmxlKCJicm90bGkiKSB7CisgICAgICBzb3VyY2VzID0gWyAidG9vbHMvYnJvdGxpLmMiIF0KKyAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOmluY2x1ZGVzIiBdCisKKyAgICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29tbW9uIiwKKyAgICAgICAgIjpkZWMiLAorICAgICAgICAiOmVuYyIsCisgICAgICAgICI6aGVhZGVycyIsCisgICAgICAgICIvL2J1aWxkL3dpbjpkZWZhdWx0X2V4ZV9tYW5pZmVzdCIsCisgICAgICBdCisKKyAgICAgIGlmIChpc193aW4gJiYgdmlzdWFsX3N0dWRpb192ZXJzaW9uID09ICIyMDE1IikgeworICAgICAgICAjIERpc2FibGluZyAicmVzdWx0IG9mIDMyLWJpdCBzaGlmdCBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byA2NCBiaXRzIiwKKyAgICAgICAgIyBjYXVzZWQgYnkgY29kZSBsaWtlOiBmb28gfD0gKDEgPDwgaSk7ICAgLy8gd2FybmluZyA0MzM0CisgICAgICAgIGNmbGFncyA9IFsgIi93ZDQzMzQiIF0KKyAgICAgIH0KKworICAgICAgIyBBbHdheXMgYnVpbGQgcmVsZWFzZSBzaW5jZSB0aGlzIGlzIGEgYnVpbGQgdG9vbC4KKyAgICAgIGlmIChpc19kZWJ1ZykgeworICAgICAgICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnOmRlYnVnIiBdCisgICAgICAgIGNvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWc6cmVsZWFzZSIgXQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGZ1enplcl90ZXN0KCJicm90bGlfZnV6emVyIikgeworICAgIHNvdXJjZXMgPSBbICJmdXp6L2RlY29kZV9mdXp6ZXIuY2MiIF0KKyAgICBkZXBzID0gWyAiOmRlYyIgXQorICAgIGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4X2xlbj0xMjgwIiBdCisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9NRVRBREFUQSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9NRVRBREFUQQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yjk3MzgxCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL01FVEFEQVRBCkBAIC0wLDAgKzEsMjUgQEAKK25hbWU6ICJicm90bGkiCitkZXNjcmlwdGlvbjoKKyAgIlN1YnRyZWUgYXQgdGhpcmRfcGFydHkvYnJvdGxpLiIKKwordGhpcmRfcGFydHkgeworICB1cmwgeworICAgIHR5cGU6IExPQ0FMX1NPVVJDRQorICAgIHZhbHVlOiAiL3RoaXJkX3BhcnR5L2Jyb3RsaV9taXJyb3IiCisgIH0KKyAgdXJsIHsKKyAgICB0eXBlOiBHSVQKKyAgICB2YWx1ZTogImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvYnJvdGxpLmdpdCIKKyAgfQorICB2ZXJzaW9uOiAiZTYxNzQ1YTZiN2FkZDUwZDM4MGNmZDdkMzg4M2RkNmM2MmZjMmM3MSIKKyAgbGFzdF91cGdyYWRlX2RhdGUgeworICAgIHllYXI6IDIwMjAKKyAgICBtb250aDogOAorICAgIGRheTogMjcKKyAgfQorICBsaWNlbnNlX3R5cGU6IE5PVElDRQorICBsb2NhbF9tb2RpZmljYXRpb25zOgorICAgICcxMS8zLzIxIC0gQWRkZWQgQlVJTEQuZ24gYXMgcGFydCBvZiBHTiBtaWdyYXRpb24uJworICAgICdDb250ZW50cyB0YWtlbiBmcm9tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy83NzFjZTg5ZmM4NTMyYjk3ODIyNzFlNTIzMThlYjQyYmQwNjJjZTUzL3RoaXJkX3BhcnR5L2Jyb3RsaS9CVUlMRC5nbicKKyAgICAnYW5kIG1vZGlmaWVkIGZvciBDb2JhbHQuJworfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2MvY29tbW9uL2RpY3Rpb25hcnkuYmluIGIvdGhpcmRfcGFydHkvYnJvdGxpL2MvY29tbW9uL2RpY3Rpb25hcnkuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ODVjMGUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvYy9jb21tb24vZGljdGlvbmFyeS5iaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2MvZnV6ei9kZWNvZGVfZnV6emVyLmMgYi90aGlyZF9wYXJ0eS9icm90bGkvYy9mdXp6L2RlY29kZV9mdXp6ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjE0NGUwCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2MvZnV6ei9kZWNvZGVfZnV6emVyLmMKQEAgLTAsMCArMSw1OCBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxicm90bGkvZGVjb2RlLmg+CisKKy8vIEVudHJ5IHBvaW50IGZvciBMaWJGdXp6ZXIuCitpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBzaXplX3QgYWRkZW5kID0gMDsKKyAgaWYgKHNpemUgPiAwKQorICAgIGFkZGVuZCA9IGRhdGFbc2l6ZSAtIDFdICYgNzsKKyAgY29uc3QgdWludDhfdCogbmV4dF9pbiA9IGRhdGE7CisKKyAgY29uc3QgaW50IGtCdWZmZXJTaXplID0gMTAyNDsKKyAgdWludDhfdCogYnVmZmVyID0gKHVpbnQ4X3QqKSBtYWxsb2Moa0J1ZmZlclNpemUpOworICBpZiAoIWJ1ZmZlcikgeworICAgIC8vIE9PTSBpcyBvdXQtb2Ytc2NvcGUgaGVyZS4KKyAgICByZXR1cm4gMDsKKyAgfQorICAvKiBUaGUgYmlnZ2VzdCAibWFnaWMgbnVtYmVyIiBpbiBicm90bGkgaXMgMTZNaUIgLSAxNiwgc28gbm8gbmVlZCB0byBjaGVjaworICAgICB0aGUgY2FzZXMgd2l0aCBtdWNoIGxvbmdlciBvdXRwdXQuICovCisgIGNvbnN0IHNpemVfdCB0b3RhbF9vdXRfbGltaXQgPSAoYWRkZW5kID09IDApID8gKDEgPDwgMjYpIDogKDEgPDwgMjQpOworICBzaXplX3QgdG90YWxfb3V0ID0gMDsKKworICBCcm90bGlEZWNvZGVyU3RhdGUqIHN0YXRlID0gQnJvdGxpRGVjb2RlckNyZWF0ZUluc3RhbmNlKDAsIDAsIDApOworCisgIGlmIChhZGRlbmQgPT0gMCkKKyAgICBhZGRlbmQgPSBzaXplOworICAvKiBUZXN0IGJvdGggZmFzdCAoYWRkZW5kID09IHNpemUpIGFuZCBzbG93IChhZGRlbmQgPD0gNykgZGVjb2RpbmcgcGF0aHMuICovCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTspIHsKKyAgICBzaXplX3QgbmV4dF9pID0gaSArIGFkZGVuZDsKKyAgICBpZiAobmV4dF9pID4gc2l6ZSkKKyAgICAgIG5leHRfaSA9IHNpemU7CisgICAgc2l6ZV90IGF2YWlsX2luID0gbmV4dF9pIC0gaTsKKyAgICBpID0gbmV4dF9pOworICAgIEJyb3RsaURlY29kZXJSZXN1bHQgcmVzdWx0ID0gQlJPVExJX0RFQ09ERVJfUkVTVUxUX05FRURTX01PUkVfT1VUUFVUOworICAgIHdoaWxlIChyZXN1bHQgPT0gQlJPVExJX0RFQ09ERVJfUkVTVUxUX05FRURTX01PUkVfT1VUUFVUKSB7CisgICAgICBzaXplX3QgYXZhaWxfb3V0ID0ga0J1ZmZlclNpemU7CisgICAgICB1aW50OF90KiBuZXh0X291dCA9IGJ1ZmZlcjsKKyAgICAgIHJlc3VsdCA9IEJyb3RsaURlY29kZXJEZWNvbXByZXNzU3RyZWFtKAorICAgICAgICAgIHN0YXRlLCAmYXZhaWxfaW4sICZuZXh0X2luLCAmYXZhaWxfb3V0LCAmbmV4dF9vdXQsICZ0b3RhbF9vdXQpOworICAgICAgaWYgKHRvdGFsX291dCA+IHRvdGFsX291dF9saW1pdCkKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICh0b3RhbF9vdXQgPiB0b3RhbF9vdXRfbGltaXQpCisgICAgICBicmVhazsKKyAgICBpZiAocmVzdWx0ICE9IEJST1RMSV9ERUNPREVSX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUKQorICAgICAgYnJlYWs7CisgIH0KKworICBCcm90bGlEZWNvZGVyRGVzdHJveUluc3RhbmNlKHN0YXRlKTsKKyAgZnJlZShidWZmZXIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jL2Z1enovcnVuX2RlY29kZV9mdXp6ZXIuYyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jL2Z1enovcnVuX2RlY29kZV9mdXp6ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODRmOThhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2MvZnV6ei9ydW5fZGVjb2RlX2Z1enplci5jCkBAIC0wLDAgKzEsNDQgQEAKKy8qIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKKy8qIFNpbXBsZSBydW5uZXIgZm9yIGRlY29kZV9mdXp6ZXIuY2MgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3ZvaWQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiAqYXJndikgeworICBpZiAoYXJnYyAhPSAyKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJFeGFjdGx5IG9uZSBhcmd1bWVudCBpcyBleHBlY3RlZC5cbiIpOworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgfQorCisgIEZJTEUqIGYgPSBmb3Blbihhcmd2WzFdLCAiciIpOworICBpZiAoIWYpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBvcGVuIGlucHV0IGZpbGUuIik7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICB9CisKKyAgc2l6ZV90IG1heF9sZW4gPSAxIDw8IDIwOworICB1bnNpZ25lZCBjaGFyKiB0bXAgPSAodW5zaWduZWQgY2hhciopbWFsbG9jKG1heF9sZW4pOworICBzaXplX3QgbGVuID0gZnJlYWQodG1wLCAxLCBtYXhfbGVuLCBmKTsKKyAgaWYgKGZlcnJvcihmKSkgeworICAgIGZjbG9zZShmKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCByZWFkIGlucHV0IGZpbGUuIik7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICB9CisgIC8qIE1ha2UgZGF0YSBhZnRlciB0aGUgZW5kICJpbmFjY2Vzc2libGUiLiAqLworICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYyhsZW4pOworICBtZW1jcHkoZGF0YSwgdG1wLCBsZW4pOworICBmcmVlKHRtcCk7CisKKyAgTExWTUZ1enplclRlc3RPbmVJbnB1dChkYXRhLCBsZW4pOworICBmcmVlKGRhdGEpOworICBleGl0KEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvYy9mdXp6L3Rlc3RfZnV6emVyLnNoIGIvdGhpcmRfcGFydHkvYnJvdGxpL2MvZnV6ei90ZXN0X2Z1enplci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45OTg1MTk0Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2MvZnV6ei90ZXN0X2Z1enplci5zaApAQCAtMCwwICsxLDMzIEBACisjIS91c3IvYmluL2VudiBiYXNoCitzZXQgLWUKKworZXhwb3J0IENDPSR7Q0M6LWNjfQorCitCUk9UTEk9IiQoIGNkICIkKCBkaXJuYW1lICIke0JBU0hfU09VUkNFWzBdfSIgKS8uLi8uLiIgJiYgcHdkICkiCitTUkM9JEJST1RMSS9jCisKK2NkICRCUk9UTEkKKworcm0gLXJmIGJpbgorbWtkaXIgYmluCitjZCBiaW4KKworY21ha2UgJEJST1RMSSAtRENNQUtFX0NfQ09NUElMRVI9IiRDQyIgXAorICAgIC1EQlVJTERfVEVTVElORz1PRkYgLURFTkFCTEVfU0FOSVRJWkVSPWFkZHJlc3MKK21ha2UgLWokKG5wcm9jKSBicm90bGlkZWMtc3RhdGljCisKKyR7Q0N9IC1vIHJ1bl9kZWNvZGVfZnV6emVyIC1zdGQ9Yzk5IC1mc2FuaXRpemU9YWRkcmVzcyAtSSRTUkMvaW5jbHVkZSBcCisgICAgJFNSQy9mdXp6L2RlY29kZV9mdXp6ZXIuYyAkU1JDL2Z1enovcnVuX2RlY29kZV9mdXp6ZXIuYyBcCisgICAgLi9saWJicm90bGlkZWMtc3RhdGljLmEgLi9saWJicm90bGljb21tb24tc3RhdGljLmEKKworbWtkaXIgZGVjb2RlX2NvcnBvcmEKK3VuemlwICRCUk9UTEkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL2Z1enpfZGF0YS56aXAgLWQgZGVjb2RlX2NvcnBvcmEKKworZm9yIGYgaW4gYGxzIGRlY29kZV9jb3Jwb3JhYAorZG8KKyBlY2hvICJUZXN0aW5nICRmIgorIC4vcnVuX2RlY29kZV9mdXp6ZXIgZGVjb2RlX2NvcnBvcmEvJGYKK2RvbmUKKworY2QgJEJST1RMSQorcm0gLXJmIGJpbgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9pbmplY3RlZF9jb2RlLnR4dCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvaW5qZWN0ZWRfY29kZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmMTI5YgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvaW5qZWN0ZWRfY29kZS50eHQKQEAgLTAsMCArMSwzMiBAQAorLy8gPHtbSU5KRUNURUQgQ09ERV19PgorCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDYW5SZWFkIHsKKwkJCWdldCB7cmV0dXJuIHRydWU7fQorCQl9CisKKwkJcHVibGljIG92ZXJyaWRlIGJvb2wgQ2FuU2VlayB7CisJCQlnZXQge3JldHVybiBmYWxzZTt9CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIGxvbmcgTGVuZ3RoIHsKKwkJCWdldCB7dGhyb3cgbmV3IFN5c3RlbS5Ob3RTdXBwb3J0ZWRFeGNlcHRpb24oKTt9CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIGxvbmcgUG9zaXRpb24geworCQkJZ2V0IHt0aHJvdyBuZXcgU3lzdGVtLk5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpO30KKwkJCXNldCB7dGhyb3cgbmV3IFN5c3RlbS5Ob3RTdXBwb3J0ZWRFeGNlcHRpb24oKTt9CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIGxvbmcgU2Vlayhsb25nIG9mZnNldCwgU3lzdGVtLklPLlNlZWtPcmlnaW4gb3JpZ2luKSB7CisJCQl0aHJvdyBuZXcgU3lzdGVtLk5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOworCQl9CisJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldExlbmd0aChsb25nIHZhbHVlKXsKKwkJCXRocm93IG5ldyBTeXN0ZW0uTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7CisJCX0KKworCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDYW5Xcml0ZXtnZXR7cmV0dXJuIGZhbHNlO319CisJCXB1YmxpYyBvdmVycmlkZSBTeXN0ZW0uSUFzeW5jUmVzdWx0IEJlZ2luV3JpdGUoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwKKwkJCQlpbnQgY291bnQsIFN5c3RlbS5Bc3luY0NhbGxiYWNrIGNhbGxiYWNrLCBvYmplY3Qgc3RhdGUpIHsKKwkJCXRocm93IG5ldyBTeXN0ZW0uTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIHZvaWQgV3JpdGUoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IGNvdW50KSB7CisJCQl0aHJvdyBuZXcgU3lzdGVtLk5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOworCQl9CisKKwkJcHVibGljIG92ZXJyaWRlIHZvaWQgRmx1c2goKSB7fQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9CaXRSZWFkZXIuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0JpdFJlYWRlci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2YxYTNmCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9CaXRSZWFkZXIuY3MKQEAgLTAsMCArMSwyNzEgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PkJpdCByZWFkaW5nIGhlbHBlcnMuPC9zdW1tYXJ5Pg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgQml0UmVhZGVyDQorCXsNCisJCS8vLyA8c3VtbWFyeT4NCisJCS8vLyBJbnB1dCBieXRlIGJ1ZmZlciwgY29uc2lzdCBvZiBhIHJpbmctYnVmZmVyIGFuZCBhICJzbGFjayIgcmVnaW9uIHdoZXJlIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mDQorCQkvLy8gdGhlIHJpbmctYnVmZmVyIGFyZSBjb3BpZWQuDQorCQkvLy8gPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSBjb25zdCBpbnQgQ2FwYWNpdHkgPSAxMDI0Ow0KKw0KKwkJcHJpdmF0ZSBjb25zdCBpbnQgU2xhY2sgPSAxNjsNCisNCisJCXByaXZhdGUgY29uc3QgaW50IEludEJ1ZmZlclNpemUgPSBDYXBhY2l0eSArIFNsYWNrOw0KKw0KKwkJcHJpdmF0ZSBjb25zdCBpbnQgQnl0ZVJlYWRTaXplID0gQ2FwYWNpdHkgPDwgMjsNCisNCisJCXByaXZhdGUgY29uc3QgaW50IEJ5dGVCdWZmZXJTaXplID0gSW50QnVmZmVyU2l6ZSA8PCAyOw0KKw0KKwkJcHJpdmF0ZSByZWFkb25seSBieXRlW10gYnl0ZUJ1ZmZlciA9IG5ldyBieXRlW0J5dGVCdWZmZXJTaXplXTsNCisNCisJCXByaXZhdGUgcmVhZG9ubHkgaW50W10gaW50QnVmZmVyID0gbmV3IGludFtJbnRCdWZmZXJTaXplXTsNCisNCisJCXByaXZhdGUgcmVhZG9ubHkgT3JnLkJyb3RsaS5EZWMuSW50UmVhZGVyIGludFJlYWRlciA9IG5ldyBPcmcuQnJvdGxpLkRlYy5JbnRSZWFkZXIoKTsNCisNCisJCXByaXZhdGUgU3lzdGVtLklPLlN0cmVhbSBpbnB1dDsNCisNCisJCS8vLyA8c3VtbWFyeT5JbnB1dCBzdHJlYW0gaXMgZmluaXNoZWQuPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSBib29sIGVuZE9mU3RyZWFtUmVhY2hlZDsNCisNCisJCS8vLyA8c3VtbWFyeT5QcmUtZmV0Y2hlZCBiaXRzLjwvc3VtbWFyeT4NCisJCWludGVybmFsIGxvbmcgYWNjdW11bGF0b3I7DQorDQorCQkvLy8gPHN1bW1hcnk+Q3VycmVudCBiaXQtcmVhZGluZyBwb3NpdGlvbiBpbiBhY2N1bXVsYXRvci48L3N1bW1hcnk+DQorCQlpbnRlcm5hbCBpbnQgYml0T2Zmc2V0Ow0KKw0KKwkJLy8vIDxzdW1tYXJ5Pk9mZnNldCBvZiBuZXh0IGl0ZW0gaW4gaW50QnVmZmVyLjwvc3VtbWFyeT4NCisJCXByaXZhdGUgaW50IGludE9mZnNldDsNCisNCisJCXByaXZhdGUgaW50IHRhaWxCeXRlcyA9IDA7DQorDQorCQkvKiBOdW1iZXIgb2YgYnl0ZXMgaW4gdW5maW5pc2hlZCAiaW50IiBpdGVtLiAqLw0KKwkJLy8vIDxzdW1tYXJ5PkZpbGxzIHVwIHRoZSBpbnB1dCBidWZmZXIuPC9zdW1tYXJ5Pg0KKwkJLy8vIDxyZW1hcmtzPg0KKwkJLy8vIEZpbGxzIHVwIHRoZSBpbnB1dCBidWZmZXIuDQorCQkvLy8gPHA+IE5vLW9wIGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAzNiBieXRlcyBwcmVzZW50IGFmdGVyIGN1cnJlbnQgcG9zaXRpb24uDQorCQkvLy8gPHA+IEFmdGVyIGVuY291bnRlcmluZyB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJlYW0sIDY0IGFkZGl0aW9uYWwgemVybyBieXRlcyBhcmUgY29waWVkIHRvIHRoZQ0KKwkJLy8vIGJ1ZmZlci4NCisJCS8vLyA8L3JlbWFya3M+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZWFkTW9yZUlucHV0KE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBicikNCisJCXsNCisJCQkvLyBUT0RPOiBTcGxpdCB0byBjaGVjayBhbmQgcmVhZDsgbW92ZSByZWFkIG91dHNpZGUgb2YgZGVjb2RpbmcgbG9vcC4NCisJCQlpZiAoYnIuaW50T2Zmc2V0IDw9IENhcGFjaXR5IC0gOSkNCisJCQl7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJaWYgKGJyLmVuZE9mU3RyZWFtUmVhY2hlZCkNCisJCQl7DQorCQkJCWlmIChJbnRBdmFpbGFibGUoYnIpID49IC0yKQ0KKwkJCQl7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIk5vIG1vcmUgaW5wdXQiKTsNCisJCQl9DQorCQkJaW50IHJlYWRPZmZzZXQgPSBici5pbnRPZmZzZXQgPDwgMjsNCisJCQlpbnQgYnl0ZXNSZWFkID0gQnl0ZVJlYWRTaXplIC0gcmVhZE9mZnNldDsNCisJCQlTeXN0ZW0uQXJyYXkuQ29weShici5ieXRlQnVmZmVyLCByZWFkT2Zmc2V0LCBici5ieXRlQnVmZmVyLCAwLCBieXRlc1JlYWQpOw0KKwkJCWJyLmludE9mZnNldCA9IDA7DQorCQkJdHJ5DQorCQkJew0KKwkJCQl3aGlsZSAoYnl0ZXNSZWFkIDwgQnl0ZVJlYWRTaXplKQ0KKwkJCQl7DQorCQkJCQlpbnQgbGVuID0gYnIuaW5wdXQuUmVhZChici5ieXRlQnVmZmVyLCBieXRlc1JlYWQsIEJ5dGVSZWFkU2l6ZSAtIGJ5dGVzUmVhZCk7DQorCQkJCQkvLyBFT0YgaXMgLTEgaW4gSmF2YSwgYnV0IDAgaW4gQyMuDQorCQkJCQlpZiAobGVuIDw9IDApDQorCQkJCQl7DQorCQkJCQkJYnIuZW5kT2ZTdHJlYW1SZWFjaGVkID0gdHJ1ZTsNCisJCQkJCQlici50YWlsQnl0ZXMgPSBieXRlc1JlYWQ7DQorCQkJCQkJYnl0ZXNSZWFkICs9IDM7DQorCQkJCQkJYnJlYWs7DQorCQkJCQl9DQorCQkJCQlieXRlc1JlYWQgKz0gbGVuOw0KKwkJCQl9DQorCQkJfQ0KKwkJCWNhdGNoIChTeXN0ZW0uSU8uSU9FeGNlcHRpb24gZSkNCisJCQl7DQorCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJGYWlsZWQgdG8gcmVhZCBpbnB1dCIsIGUpOw0KKwkJCX0NCisJCQlPcmcuQnJvdGxpLkRlYy5JbnRSZWFkZXIuQ29udmVydChici5pbnRSZWFkZXIsIGJ5dGVzUmVhZCA+PiAyKTsNCisJCX0NCisNCisJCWludGVybmFsIHN0YXRpYyB2b2lkIENoZWNrSGVhbHRoKE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBiciwgYm9vbCBlbmRPZlN0cmVhbSkNCisJCXsNCisJCQlpZiAoIWJyLmVuZE9mU3RyZWFtUmVhY2hlZCkNCisJCQl7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJaW50IGJ5dGVPZmZzZXQgPSAoYnIuaW50T2Zmc2V0IDw8IDIpICsgKChici5iaXRPZmZzZXQgKyA3KSA+PiAzKSAtIDg7DQorCQkJaWYgKGJ5dGVPZmZzZXQgPiBici50YWlsQnl0ZXMpDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiUmVhZCBhZnRlciBlbmQiKTsNCisJCQl9DQorCQkJaWYgKGVuZE9mU3RyZWFtICYmIChieXRlT2Zmc2V0ICE9IGJyLnRhaWxCeXRlcykpDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiVW51c2VkIGJ5dGVzIGFmdGVyIGVuZCIpOw0KKwkJCX0NCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT5BZHZhbmNlcyB0aGUgUmVhZCBidWZmZXIgYnkgNSBieXRlcyB0byBtYWtlIHJvb20gZm9yIHJlYWRpbmcgbmV4dCAyNCBiaXRzLjwvc3VtbWFyeT4NCisJCWludGVybmFsIHN0YXRpYyB2b2lkIEZpbGxCaXRXaW5kb3coT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWlmIChici5iaXRPZmZzZXQgPj0gMzIpDQorCQkJew0KKwkJCQlici5hY2N1bXVsYXRvciA9ICgobG9uZylici5pbnRCdWZmZXJbYnIuaW50T2Zmc2V0KytdIDw8IDMyKSB8ICgobG9uZykoKCh1bG9uZylici5hY2N1bXVsYXRvcikgPj4gMzIpKTsNCisJCQkJYnIuYml0T2Zmc2V0IC09IDMyOw0KKwkJCX0NCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT5SZWFkcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzIGZyb20gUmVhZCBCdWZmZXIuPC9zdW1tYXJ5Pg0KKwkJaW50ZXJuYWwgc3RhdGljIGludCBSZWFkQml0cyhPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIgYnIsIGludCBuKQ0KKwkJew0KKwkJCUZpbGxCaXRXaW5kb3coYnIpOw0KKwkJCWludCB2YWwgPSAoaW50KSgobG9uZykoKCh1bG9uZylici5hY2N1bXVsYXRvcikgPj4gYnIuYml0T2Zmc2V0KSkgJiAoKDEgPDwgbikgLSAxKTsNCisJCQlici5iaXRPZmZzZXQgKz0gbjsNCisJCQlyZXR1cm4gdmFsOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PkluaXRpYWxpemUgYml0IHJlYWRlci48L3N1bW1hcnk+DQorCQkvLy8gPHJlbWFya3M+DQorCQkvLy8gSW5pdGlhbGl6ZSBiaXQgcmVhZGVyLg0KKwkJLy8vIDxwPiBJbml0aWFsaXNhdGlvbiB0dXJucyBiaXQgcmVhZGVyIHRvIGEgcmVhZHkgc3RhdGUuIEFsc28gYSBudW1iZXIgb2YgYnl0ZXMgaXMgcHJlZmV0Y2hlZCB0bw0KKwkJLy8vIGFjY3VtdWxhdG9yLiBCZWNhdXNlIG9mIHRoYXQgdGhpcyBtZXRob2QgbWF5IGJsb2NrIHVudGlsIGVub3VnaCBkYXRhIGNvdWxkIGJlIHJlYWQgZnJvbSBpbnB1dC4NCisJCS8vLyA8L3JlbWFya3M+DQorCQkvLy8gPHBhcmFtIG5hbWU9ImJyIj5CaXRSZWFkZXIgUE9KTzwvcGFyYW0+DQorCQkvLy8gPHBhcmFtIG5hbWU9ImlucHV0Ij5kYXRhIHNvdXJjZTwvcGFyYW0+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBJbml0KE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBiciwgU3lzdGVtLklPLlN0cmVhbSBpbnB1dCkNCisJCXsNCisJCQlpZiAoYnIuaW5wdXQgIT0gbnVsbCkNCisJCQl7DQorCQkJCXRocm93IG5ldyBTeXN0ZW0uSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiQml0IHJlYWRlciBhbHJlYWR5IGhhcyBhc3NvY2lhdGVkIGlucHV0IHN0cmVhbSIpOw0KKwkJCX0NCisJCQlPcmcuQnJvdGxpLkRlYy5JbnRSZWFkZXIuSW5pdChici5pbnRSZWFkZXIsIGJyLmJ5dGVCdWZmZXIsIGJyLmludEJ1ZmZlcik7DQorCQkJYnIuaW5wdXQgPSBpbnB1dDsNCisJCQlici5hY2N1bXVsYXRvciA9IDA7DQorCQkJYnIuYml0T2Zmc2V0ID0gNjQ7DQorCQkJYnIuaW50T2Zmc2V0ID0gQ2FwYWNpdHk7DQorCQkJYnIuZW5kT2ZTdHJlYW1SZWFjaGVkID0gZmFsc2U7DQorCQkJUHJlcGFyZShicik7DQorCQl9DQorDQorCQlwcml2YXRlIHN0YXRpYyB2b2lkIFByZXBhcmUoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCVJlYWRNb3JlSW5wdXQoYnIpOw0KKwkJCUNoZWNrSGVhbHRoKGJyLCBmYWxzZSk7DQorCQkJRmlsbEJpdFdpbmRvdyhicik7DQorCQkJRmlsbEJpdFdpbmRvdyhicik7DQorCQl9DQorDQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZWxvYWQoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWlmIChici5iaXRPZmZzZXQgPT0gNjQpDQorCQkJew0KKwkJCQlQcmVwYXJlKGJyKTsNCisJCQl9DQorCQl9DQorDQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iLz4NCisJCWludGVybmFsIHN0YXRpYyB2b2lkIENsb3NlKE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBicikNCisJCXsNCisJCQlTeXN0ZW0uSU8uU3RyZWFtIEBpcyA9IGJyLmlucHV0Ow0KKwkJCWJyLmlucHV0ID0gbnVsbDsNCisJCQlpZiAoQGlzICE9IG51bGwpDQorCQkJew0KKwkJCQlAaXMuQ2xvc2UoKTsNCisJCQl9DQorCQl9DQorDQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBKdW1wVG9CeXRlQm91bmRhcnkoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWludCBwYWRkaW5nID0gKDY0IC0gYnIuYml0T2Zmc2V0KSAmIDc7DQorCQkJaWYgKHBhZGRpbmcgIT0gMCkNCisJCQl7DQorCQkJCWludCBwYWRkaW5nQml0cyA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgcGFkZGluZyk7DQorCQkJCWlmIChwYWRkaW5nQml0cyAhPSAwKQ0KKwkJCQl7DQorCQkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiQ29ycnVwdGVkIHBhZGRpbmcgYml0cyIpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIGludCBJbnRBdmFpbGFibGUoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWludCBsaW1pdCA9IENhcGFjaXR5Ow0KKwkJCWlmIChici5lbmRPZlN0cmVhbVJlYWNoZWQpDQorCQkJew0KKwkJCQlsaW1pdCA9IChici50YWlsQnl0ZXMgKyAzKSA+PiAyOw0KKwkJCX0NCisJCQlyZXR1cm4gbGltaXQgLSBici5pbnRPZmZzZXQ7DQorCQl9DQorDQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBDb3B5Qnl0ZXMoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyLCBieXRlW10gZGF0YSwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkNCisJCXsNCisJCQlpZiAoKGJyLmJpdE9mZnNldCAmIDcpICE9IDApDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiVW5hbGlnbmVkIGNvcHlCeXRlcyIpOw0KKwkJCX0NCisJCQkvLyBEcmFpbiBhY2N1bXVsYXRvci4NCisJCQl3aGlsZSAoKGJyLmJpdE9mZnNldCAhPSA2NCkgJiYgKGxlbmd0aCAhPSAwKSkNCisJCQl7DQorCQkJCWRhdGFbb2Zmc2V0KytdID0gdW5jaGVja2VkKChieXRlKSgobG9uZykoKCh1bG9uZylici5hY2N1bXVsYXRvcikgPj4gYnIuYml0T2Zmc2V0KSkpOw0KKwkJCQlici5iaXRPZmZzZXQgKz0gODsNCisJCQkJbGVuZ3RoLS07DQorCQkJfQ0KKwkJCWlmIChsZW5ndGggPT0gMCkNCisJCQl7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJLy8gR2V0IGRhdGEgZnJvbSBzaGFkb3cgYnVmZmVyIHdpdGggInNpemVvZihpbnQpIiBncmFudWxhcml0eS4NCisJCQlpbnQgY29weUludHMgPSBTeXN0ZW0uTWF0aC5NaW4oSW50QXZhaWxhYmxlKGJyKSwgbGVuZ3RoID4+IDIpOw0KKwkJCWlmIChjb3B5SW50cyA+IDApDQorCQkJew0KKwkJCQlpbnQgcmVhZE9mZnNldCA9IGJyLmludE9mZnNldCA8PCAyOw0KKwkJCQlTeXN0ZW0uQXJyYXkuQ29weShici5ieXRlQnVmZmVyLCByZWFkT2Zmc2V0LCBkYXRhLCBvZmZzZXQsIGNvcHlJbnRzIDw8IDIpOw0KKwkJCQlvZmZzZXQgKz0gY29weUludHMgPDwgMjsNCisJCQkJbGVuZ3RoIC09IGNvcHlJbnRzIDw8IDI7DQorCQkJCWJyLmludE9mZnNldCArPSBjb3B5SW50czsNCisJCQl9DQorCQkJaWYgKGxlbmd0aCA9PSAwKQ0KKwkJCXsNCisJCQkJcmV0dXJuOw0KKwkJCX0NCisJCQkvLyBSZWFkIHRhaWwgYnl0ZXMuDQorCQkJaWYgKEludEF2YWlsYWJsZShicikgPiAwKQ0KKwkJCXsNCisJCQkJLy8gbGVuZ3RoID0gMS4uMw0KKwkJCQlGaWxsQml0V2luZG93KGJyKTsNCisJCQkJd2hpbGUgKGxlbmd0aCAhPSAwKQ0KKwkJCQl7DQorCQkJCQlkYXRhW29mZnNldCsrXSA9IHVuY2hlY2tlZCgoYnl0ZSkoKGxvbmcpKCgodWxvbmcpYnIuYWNjdW11bGF0b3IpID4+IGJyLmJpdE9mZnNldCkpKTsNCisJCQkJCWJyLmJpdE9mZnNldCArPSA4Ow0KKwkJCQkJbGVuZ3RoLS07DQorCQkJCX0NCisJCQkJQ2hlY2tIZWFsdGgoYnIsIGZhbHNlKTsNCisJCQkJcmV0dXJuOw0KKwkJCX0NCisJCQkvLyBOb3cgaXQgaXMgcG9zc2libGUgdG8gY29weSBieXRlcyBkaXJlY3RseS4NCisJCQl0cnkNCisJCQl7DQorCQkJCXdoaWxlIChsZW5ndGggPiAwKQ0KKwkJCQl7DQorCQkJCQlpbnQgbGVuID0gYnIuaW5wdXQuUmVhZChkYXRhLCBvZmZzZXQsIGxlbmd0aCk7DQorCQkJCQlpZiAobGVuID09IC0xKQ0KKwkJCQkJew0KKwkJCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpOw0KKwkJCQkJfQ0KKwkJCQkJb2Zmc2V0ICs9IGxlbjsNCisJCQkJCWxlbmd0aCAtPSBsZW47DQorCQkJCX0NCisJCQl9DQorCQkJY2F0Y2ggKFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiBlKQ0KKwkJCXsNCisJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkZhaWxlZCB0byByZWFkIGlucHV0IiwgZSk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvQml0UmVhZGVyVGVzdC5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvQml0UmVhZGVyVGVzdC5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTQwM2VkCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9CaXRSZWFkZXJUZXN0LmNzCkBAIC0wLDAgKzEsMzMgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5Pg0KKwkvLy8gVGVzdHMgZm9yDQorCS8vLyA8c2VlIGNyZWY9IkJpdFJlYWRlciIvPg0KKwkvLy8gLg0KKwkvLy8gPC9zdW1tYXJ5Pg0KKwlwdWJsaWMgY2xhc3MgQml0UmVhZGVyVGVzdA0KKwl7DQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RSZWFkQWZ0ZXJFb3MoKQ0KKwkJew0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciByZWFkZXIgPSBuZXcgT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyKCk7DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLkluaXQocmVhZGVyLCBuZXcgU3lzdGVtLklPLk1lbW9yeVN0cmVhbShuZXcgYnl0ZVsxXSkpOw0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhyZWFkZXIsIDkpOw0KKwkJCXRyeQ0KKwkJCXsNCisJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLkNoZWNrSGVhbHRoKHJlYWRlciwgZmFsc2UpOw0KKwkJCX0NCisJCQljYXRjaCAoT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbikNCisJCQl7DQorCQkJCS8vIFRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkLg0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCU5Vbml0LkZyYW1ld29yay5Bc3NlcnQuRmFpbCgiQnJvdGxpUnVudGltZUV4Y2VwdGlvbiBzaG91bGQgaGF2ZSBiZWVuIHRocm93biBieSBCaXRSZWFkZXIuY2hlY2tIZWFsdGgiKTsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0Jyb3RsaUlucHV0U3RyZWFtLmNzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9Ccm90bGlJbnB1dFN0cmVhbS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmY4MTI4Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9Ccm90bGlJbnB1dFN0cmVhbS5jcwpAQCAtMCwwICsxLDIyMyBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisNCitEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4NCitTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KKyovDQorbmFtZXNwYWNlIE9yZy5Ccm90bGkuRGVjDQorew0KKwkvLy8gPHN1bW1hcnk+DQorCS8vLyA8c2VlIGNyZWY9IlN5c3RlbS5JTy5TdHJlYW0iLz4NCisJLy8vIGRlY29yYXRvciB0aGF0IGRlY29tcHJlc3NlcyBicm90bGkgZGF0YS4NCisJLy8vIDxwPiBOb3QgdGhyZWFkLXNhZmUuDQorCS8vLyA8L3N1bW1hcnk+DQorCXB1YmxpYyBjbGFzcyBCcm90bGlJbnB1dFN0cmVhbSA6IFN5c3RlbS5JTy5TdHJlYW0NCisJew0KKwkJcHVibGljIGNvbnN0IGludCBEZWZhdWx0SW50ZXJuYWxCdWZmZXJTaXplID0gMTYzODQ7DQorDQorCQkvLy8gPHN1bW1hcnk+SW50ZXJuYWwgYnVmZmVyIHVzZWQgZm9yIGVmZmljaWVudCBieXRlLWJ5LWJ5dGUgcmVhZGluZy48L3N1bW1hcnk+DQorCQlwcml2YXRlIGJ5dGVbXSBidWZmZXI7DQorDQorCQkvLy8gPHN1bW1hcnk+TnVtYmVyIG9mIGRlY29kZWQgYnV0IHN0aWxsIHVudXNlZCBieXRlcyBpbiBpbnRlcm5hbCBidWZmZXIuPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSBpbnQgcmVtYWluaW5nQnVmZmVyQnl0ZXM7DQorDQorCQkvLy8gPHN1bW1hcnk+TmV4dCB1bnVzZWQgYnl0ZSBvZmZzZXQuPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSBpbnQgYnVmZmVyT2Zmc2V0Ow0KKw0KKwkJLy8vIDxzdW1tYXJ5PkRlY29kZXIgc3RhdGUuPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSByZWFkb25seSBPcmcuQnJvdGxpLkRlYy5TdGF0ZSBzdGF0ZSA9IG5ldyBPcmcuQnJvdGxpLkRlYy5TdGF0ZSgpOw0KKw0KKwkJLy8vIDxzdW1tYXJ5Pg0KKwkJLy8vIENyZWF0ZXMgYQ0KKwkJLy8vIDxzZWUgY3JlZj0iU3lzdGVtLklPLlN0cmVhbSIvPg0KKwkJLy8vIHdyYXBwZXIgdGhhdCBkZWNvbXByZXNzZXMgYnJvdGxpIGRhdGEuDQorCQkvLy8gPHA+IEZvciBieXRlLWJ5LWJ5dGUgcmVhZGluZyAoDQorCQkvLy8gPHNlZSBjcmVmPSJSZWFkQnl0ZSgpIi8+DQorCQkvLy8gKSBpbnRlcm5hbCBidWZmZXIgd2l0aA0KKwkJLy8vIDxzZWUgY3JlZj0iRGVmYXVsdEludGVybmFsQnVmZmVyU2l6ZSIvPg0KKwkJLy8vIHNpemUgaXMgYWxsb2NhdGVkIGFuZCB1c2VkLg0KKwkJLy8vIDxwPiBXaWxsIGJsb2NrIHRoZSB0aHJlYWQgdW50aWwgZmlyc3Qga2lsb2J5dGUgb2YgZGF0YSBvZiBzb3VyY2UgaXMgYXZhaWxhYmxlLg0KKwkJLy8vIDwvc3VtbWFyeT4NCisJCS8vLyA8cGFyYW0gbmFtZT0ic291cmNlIj51bmRlcmx5aW5nIGRhdGEgc291cmNlPC9wYXJhbT4NCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiI+aW4gY2FzZSBvZiBjb3JydXB0ZWQgZGF0YSBvciBzb3VyY2Ugc3RyZWFtIHByb2JsZW1zPC9leGNlcHRpb24+DQorCQlwdWJsaWMgQnJvdGxpSW5wdXRTdHJlYW0oU3lzdGVtLklPLlN0cmVhbSBzb3VyY2UpDQorCQkJOiB0aGlzKHNvdXJjZSwgRGVmYXVsdEludGVybmFsQnVmZmVyU2l6ZSwgbnVsbCkNCisJCXsNCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT4NCisJCS8vLyBDcmVhdGVzIGENCisJCS8vLyA8c2VlIGNyZWY9IlN5c3RlbS5JTy5TdHJlYW0iLz4NCisJCS8vLyB3cmFwcGVyIHRoYXQgZGVjb21wcmVzc2VzIGJyb3RsaSBkYXRhLg0KKwkJLy8vIDxwPiBGb3IgYnl0ZS1ieS1ieXRlIHJlYWRpbmcgKA0KKwkJLy8vIDxzZWUgY3JlZj0iUmVhZEJ5dGUoKSIvPg0KKwkJLy8vICkgaW50ZXJuYWwgYnVmZmVyIG9mIHNwZWNpZmllZCBzaXplIGlzDQorCQkvLy8gYWxsb2NhdGVkIGFuZCB1c2VkLg0KKwkJLy8vIDxwPiBXaWxsIGJsb2NrIHRoZSB0aHJlYWQgdW50aWwgZmlyc3Qga2lsb2J5dGUgb2YgZGF0YSBvZiBzb3VyY2UgaXMgYXZhaWxhYmxlLg0KKwkJLy8vIDwvc3VtbWFyeT4NCisJCS8vLyA8cGFyYW0gbmFtZT0ic291cmNlIj5jb21wcmVzc2VkIGRhdGEgc291cmNlPC9wYXJhbT4NCisJCS8vLyA8cGFyYW0gbmFtZT0iYnl0ZVJlYWRCdWZmZXJTaXplIj4NCisJCS8vLyBzaXplIG9mIGludGVybmFsIGJ1ZmZlciB1c2VkIGluIGNhc2Ugb2YNCisJCS8vLyBieXRlLWJ5LWJ5dGUgcmVhZGluZw0KKwkJLy8vIDwvcGFyYW0+DQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iPmluIGNhc2Ugb2YgY29ycnVwdGVkIGRhdGEgb3Igc291cmNlIHN0cmVhbSBwcm9ibGVtczwvZXhjZXB0aW9uPg0KKwkJcHVibGljIEJyb3RsaUlucHV0U3RyZWFtKFN5c3RlbS5JTy5TdHJlYW0gc291cmNlLCBpbnQgYnl0ZVJlYWRCdWZmZXJTaXplKQ0KKwkJCTogdGhpcyhzb3VyY2UsIGJ5dGVSZWFkQnVmZmVyU2l6ZSwgbnVsbCkNCisJCXsNCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT4NCisJCS8vLyBDcmVhdGVzIGENCisJCS8vLyA8c2VlIGNyZWY9IlN5c3RlbS5JTy5TdHJlYW0iLz4NCisJCS8vLyB3cmFwcGVyIHRoYXQgZGVjb21wcmVzc2VzIGJyb3RsaSBkYXRhLg0KKwkJLy8vIDxwPiBGb3IgYnl0ZS1ieS1ieXRlIHJlYWRpbmcgKA0KKwkJLy8vIDxzZWUgY3JlZj0iUmVhZEJ5dGUoKSIvPg0KKwkJLy8vICkgaW50ZXJuYWwgYnVmZmVyIG9mIHNwZWNpZmllZCBzaXplIGlzDQorCQkvLy8gYWxsb2NhdGVkIGFuZCB1c2VkLg0KKwkJLy8vIDxwPiBXaWxsIGJsb2NrIHRoZSB0aHJlYWQgdW50aWwgZmlyc3Qga2lsb2J5dGUgb2YgZGF0YSBvZiBzb3VyY2UgaXMgYXZhaWxhYmxlLg0KKwkJLy8vIDwvc3VtbWFyeT4NCisJCS8vLyA8cGFyYW0gbmFtZT0ic291cmNlIj5jb21wcmVzc2VkIGRhdGEgc291cmNlPC9wYXJhbT4NCisJCS8vLyA8cGFyYW0gbmFtZT0iYnl0ZVJlYWRCdWZmZXJTaXplIj4NCisJCS8vLyBzaXplIG9mIGludGVybmFsIGJ1ZmZlciB1c2VkIGluIGNhc2Ugb2YNCisJCS8vLyBieXRlLWJ5LWJ5dGUgcmVhZGluZw0KKwkJLy8vIDwvcGFyYW0+DQorCQkvLy8gPHBhcmFtIG5hbWU9ImN1c3RvbURpY3Rpb25hcnkiPg0KKwkJLy8vIGN1c3RvbSBkaWN0aW9uYXJ5IGRhdGE7DQorCQkvLy8gPHNlZSBsYW5nd29yZD0ibnVsbCIvPg0KKwkJLy8vIGlmIG5vdCB1c2VkDQorCQkvLy8gPC9wYXJhbT4NCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiI+aW4gY2FzZSBvZiBjb3JydXB0ZWQgZGF0YSBvciBzb3VyY2Ugc3RyZWFtIHByb2JsZW1zPC9leGNlcHRpb24+DQorCQlwdWJsaWMgQnJvdGxpSW5wdXRTdHJlYW0oU3lzdGVtLklPLlN0cmVhbSBzb3VyY2UsIGludCBieXRlUmVhZEJ1ZmZlclNpemUsIGJ5dGVbXSBjdXN0b21EaWN0aW9uYXJ5KQ0KKwkJew0KKwkJCWlmIChieXRlUmVhZEJ1ZmZlclNpemUgPD0gMCkNCisJCQl7DQorCQkJCXRocm93IG5ldyBTeXN0ZW0uQXJndW1lbnRFeGNlcHRpb24oIkJhZCBidWZmZXIgc2l6ZToiICsgYnl0ZVJlYWRCdWZmZXJTaXplKTsNCisJCQl9DQorCQkJZWxzZSBpZiAoc291cmNlID09IG51bGwpDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgU3lzdGVtLkFyZ3VtZW50RXhjZXB0aW9uKCJzb3VyY2UgaXMgbnVsbCIpOw0KKwkJCX0NCisJCQl0aGlzLmJ1ZmZlciA9IG5ldyBieXRlW2J5dGVSZWFkQnVmZmVyU2l6ZV07DQorCQkJdGhpcy5yZW1haW5pbmdCdWZmZXJCeXRlcyA9IDA7DQorCQkJdGhpcy5idWZmZXJPZmZzZXQgPSAwOw0KKwkJCXRyeQ0KKwkJCXsNCisJCQkJT3JnLkJyb3RsaS5EZWMuU3RhdGUuU2V0SW5wdXQoc3RhdGUsIHNvdXJjZSk7DQorCQkJfQ0KKwkJCWNhdGNoIChPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uIGV4KQ0KKwkJCXsNCisJCQkJdGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbigiQnJvdGxpIGRlY29kZXIgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiwgZXgpOw0KKwkJCX0NCisJCQlpZiAoY3VzdG9tRGljdGlvbmFyeSAhPSBudWxsKQ0KKwkJCXsNCisJCQkJT3JnLkJyb3RsaS5EZWMuRGVjb2RlLlNldEN1c3RvbURpY3Rpb25hcnkoc3RhdGUsIGN1c3RvbURpY3Rpb25hcnkpOw0KKwkJCX0NCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT48aW5oZXJpdERvYy8+PC9zdW1tYXJ5Pg0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBDbG9zZSgpDQorCQl7DQorCQkJT3JnLkJyb3RsaS5EZWMuU3RhdGUuQ2xvc2Uoc3RhdGUpOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5Pjxpbmhlcml0RG9jLz48L3N1bW1hcnk+DQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iLz4NCisJCXB1YmxpYyBvdmVycmlkZSBpbnQgUmVhZEJ5dGUoKQ0KKwkJew0KKwkJCWlmIChidWZmZXJPZmZzZXQgPj0gcmVtYWluaW5nQnVmZmVyQnl0ZXMpDQorCQkJew0KKwkJCQlyZW1haW5pbmdCdWZmZXJCeXRlcyA9IFJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsNCisJCQkJYnVmZmVyT2Zmc2V0ID0gMDsNCisJCQkJaWYgKHJlbWFpbmluZ0J1ZmZlckJ5dGVzID09IC0xKQ0KKwkJCQl7DQorCQkJCQlyZXR1cm4gLTE7DQorCQkJCX0NCisJCQl9DQorCQkJcmV0dXJuIGJ1ZmZlcltidWZmZXJPZmZzZXQrK10gJiB1bmNoZWNrZWQoKGludCkoMHhGRikpOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5Pjxpbmhlcml0RG9jLz48L3N1bW1hcnk+DQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iLz4NCisJCXB1YmxpYyBvdmVycmlkZSBpbnQgUmVhZChieXRlW10gZGVzdEJ1ZmZlciwgaW50IGRlc3RPZmZzZXQsIGludCBkZXN0TGVuKQ0KKwkJew0KKwkJCWlmIChkZXN0T2Zmc2V0IDwgMCkNCisJCQl7DQorCQkJCXRocm93IG5ldyBTeXN0ZW0uQXJndW1lbnRFeGNlcHRpb24oIkJhZCBvZmZzZXQ6ICIgKyBkZXN0T2Zmc2V0KTsNCisJCQl9DQorCQkJZWxzZSBpZiAoZGVzdExlbiA8IDApDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgU3lzdGVtLkFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgbGVuZ3RoOiAiICsgZGVzdExlbik7DQorCQkJfQ0KKwkJCWVsc2UgaWYgKGRlc3RPZmZzZXQgKyBkZXN0TGVuID4gZGVzdEJ1ZmZlci5MZW5ndGgpDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgU3lzdGVtLkFyZ3VtZW50RXhjZXB0aW9uKCJCdWZmZXIgb3ZlcmZsb3c6ICIgKyAoZGVzdE9mZnNldCArIGRlc3RMZW4pICsgIiA+ICIgKyBkZXN0QnVmZmVyLkxlbmd0aCk7DQorCQkJfQ0KKwkJCWVsc2UgaWYgKGRlc3RMZW4gPT0gMCkNCisJCQl7DQorCQkJCXJldHVybiAwOw0KKwkJCX0NCisJCQlpbnQgY29weUxlbiA9IFN5c3RlbS5NYXRoLk1heChyZW1haW5pbmdCdWZmZXJCeXRlcyAtIGJ1ZmZlck9mZnNldCwgMCk7DQorCQkJaWYgKGNvcHlMZW4gIT0gMCkNCisJCQl7DQorCQkJCWNvcHlMZW4gPSBTeXN0ZW0uTWF0aC5NaW4oY29weUxlbiwgZGVzdExlbik7DQorCQkJCVN5c3RlbS5BcnJheS5Db3B5KGJ1ZmZlciwgYnVmZmVyT2Zmc2V0LCBkZXN0QnVmZmVyLCBkZXN0T2Zmc2V0LCBjb3B5TGVuKTsNCisJCQkJYnVmZmVyT2Zmc2V0ICs9IGNvcHlMZW47DQorCQkJCWRlc3RPZmZzZXQgKz0gY29weUxlbjsNCisJCQkJZGVzdExlbiAtPSBjb3B5TGVuOw0KKwkJCQlpZiAoZGVzdExlbiA9PSAwKQ0KKwkJCQl7DQorCQkJCQlyZXR1cm4gY29weUxlbjsNCisJCQkJfQ0KKwkJCX0NCisJCQl0cnkNCisJCQl7DQorCQkJCXN0YXRlLm91dHB1dCA9IGRlc3RCdWZmZXI7DQorCQkJCXN0YXRlLm91dHB1dE9mZnNldCA9IGRlc3RPZmZzZXQ7DQorCQkJCXN0YXRlLm91dHB1dExlbmd0aCA9IGRlc3RMZW47DQorCQkJCXN0YXRlLm91dHB1dFVzZWQgPSAwOw0KKwkJCQlPcmcuQnJvdGxpLkRlYy5EZWNvZGUuRGVjb21wcmVzcyhzdGF0ZSk7DQorCQkJCWlmIChzdGF0ZS5vdXRwdXRVc2VkID09IDApDQorCQkJCXsNCisJCQkJCXJldHVybiAtMTsNCisJCQkJfQ0KKwkJCQlyZXR1cm4gc3RhdGUub3V0cHV0VXNlZCArIGNvcHlMZW47DQorCQkJfQ0KKwkJCWNhdGNoIChPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uIGV4KQ0KKwkJCXsNCisJCQkJdGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbigiQnJvdGxpIHN0cmVhbSBkZWNvZGluZyBmYWlsZWQiLCBleCk7DQorCQkJfQ0KKwkJfQ0KKwkJLy8gPHtbSU5KRUNURUQgQ09ERV19PgorCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDYW5SZWFkIHsKKwkJCWdldCB7cmV0dXJuIHRydWU7fQorCQl9CisKKwkJcHVibGljIG92ZXJyaWRlIGJvb2wgQ2FuU2VlayB7CisJCQlnZXQge3JldHVybiBmYWxzZTt9CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIGxvbmcgTGVuZ3RoIHsKKwkJCWdldCB7dGhyb3cgbmV3IFN5c3RlbS5Ob3RTdXBwb3J0ZWRFeGNlcHRpb24oKTt9CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIGxvbmcgUG9zaXRpb24geworCQkJZ2V0IHt0aHJvdyBuZXcgU3lzdGVtLk5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpO30KKwkJCXNldCB7dGhyb3cgbmV3IFN5c3RlbS5Ob3RTdXBwb3J0ZWRFeGNlcHRpb24oKTt9CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIGxvbmcgU2Vlayhsb25nIG9mZnNldCwgU3lzdGVtLklPLlNlZWtPcmlnaW4gb3JpZ2luKSB7CisJCQl0aHJvdyBuZXcgU3lzdGVtLk5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOworCQl9CisJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldExlbmd0aChsb25nIHZhbHVlKXsKKwkJCXRocm93IG5ldyBTeXN0ZW0uTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7CisJCX0KKworCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDYW5Xcml0ZXtnZXR7cmV0dXJuIGZhbHNlO319CisJCXB1YmxpYyBvdmVycmlkZSBTeXN0ZW0uSUFzeW5jUmVzdWx0IEJlZ2luV3JpdGUoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwKKwkJCQlpbnQgY291bnQsIFN5c3RlbS5Bc3luY0NhbGxiYWNrIGNhbGxiYWNrLCBvYmplY3Qgc3RhdGUpIHsKKwkJCXRocm93IG5ldyBTeXN0ZW0uTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7CisJCX0KKwkJcHVibGljIG92ZXJyaWRlIHZvaWQgV3JpdGUoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IGNvdW50KSB7CisJCQl0aHJvdyBuZXcgU3lzdGVtLk5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOworCQl9CisKKwkJcHVibGljIG92ZXJyaWRlIHZvaWQgRmx1c2goKSB7fQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvQnJvdGxpUnVudGltZUV4Y2VwdGlvbi5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvQnJvdGxpUnVudGltZUV4Y2VwdGlvbi5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTBhZWYwCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9Ccm90bGlSdW50aW1lRXhjZXB0aW9uLmNzCkBAIC0wLDAgKzEsMjIgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PlVuY2hlY2tlZCBleGNlcHRpb24gdXNlZCBpbnRlcm5hbGx5Ljwvc3VtbWFyeT4NCisJW1N5c3RlbS5TZXJpYWxpemFibGVdDQorCWludGVybmFsIGNsYXNzIEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24gOiBTeXN0ZW0uRXhjZXB0aW9uDQorCXsNCisJCWludGVybmFsIEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oc3RyaW5nIG1lc3NhZ2UpDQorCQkJOiBiYXNlKG1lc3NhZ2UpDQorCQl7DQorCQl9DQorDQorCQlpbnRlcm5hbCBCcm90bGlSdW50aW1lRXhjZXB0aW9uKHN0cmluZyBtZXNzYWdlLCBTeXN0ZW0uRXhjZXB0aW9uIGNhdXNlKQ0KKwkJCTogYmFzZShtZXNzYWdlLCBjYXVzZSkNCisJCXsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0NvbnRleHQuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0NvbnRleHQuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5MDBlNAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvQ29udGV4dC5jcwpAQCAtMCwwICsxLDU3IEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKw0KK0Rpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLg0KK1NlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQorKi8NCituYW1lc3BhY2UgT3JnLkJyb3RsaS5EZWMNCit7DQorCS8vLyA8c3VtbWFyeT5Db21tb24gY29udGV4dCBsb29rdXAgdGFibGUgZm9yIGFsbCBjb250ZXh0IG1vZGVzLjwvc3VtbWFyeT4NCisJaW50ZXJuYWwgc2VhbGVkIGNsYXNzIENvbnRleHQNCisJew0KKwkJaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IGludFtdIExvb2t1cCA9IG5ldyBpbnRbXSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDQsIDAsIDAsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgsIDEyLCAxNiwgMTIsIDEyLCAyMCwgMTIsIDE2LCAyNCwgMjgsIDEyLCAxMiwgMzIsIDEyLCAzNiwgMTIsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NA0KKwkJCSwgNDQsIDQ0LCAzMiwgMzIsIDI0LCA0MCwgMjgsIDEyLCAxMiwgNDgsIDUyLCA1MiwgNTIsIDQ4LCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAyNCwgMTIsIDI4LCAxMiwgMTIsIDEyLCA1NiwgNjAsIDYwLCA2MCwgNTYsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MA0KKwkJCSwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDI0LCAxMiwgMjgsIDEyLCAwLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCANCisJCQkyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCANCisJCQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCANCisJCQkxLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCANCisJCQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCANCisJCQkwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCANCisJCQkzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCANCisJCQk0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCANCisJCQk2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA3LCAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCANCisJCQkxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCANCisJCQkyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCANCisJCQkzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCANCisJCQk0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDU2LCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgNCisJCQksIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCANCisJCQkzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUNCisJCQksIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCANCisJCQkzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA3LCA3LCA3LCA3LCA4LCA4LCA4LCA4LCA5LCA5LCA5LCA5LCANCisJCQkxMCwgMTAsIDEwLCAxMCwgMTEsIDExLCAxMSwgMTEsIDEyLCAxMiwgMTIsIDEyLCAxMywgMTMsIDEzLCAxMywgMTQsIDE0LCAxNCwgMTQsIDE1LCAxNSwgMTUsIDE1LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAyMiwgMjIsIDIyLCAyMiwgMjMsIDIzLCAyMywgMjMsIDI0LCAyNCwgMjQsIDI0LCANCisJCQkyNSwgMjUsIDI1LCAyNSwgMjYsIDI2LCAyNiwgMjYsIDI3LCAyNywgMjcsIDI3LCAyOCwgMjgsIDI4LCAyOCwgMjksIDI5LCAyOSwgMjksIDMwLCAzMCwgMzAsIDMwLCAzMSwgMzEsIDMxLCAzMSwgMzIsIDMyLCAzMiwgMzIsIDMzLCAzMywgMzMsIDMzLCAzNCwgMzQsIDM0LCAzNCwgMzUsIDM1LCAzNSwgMzUsIDM2LCAzNiwgMzYsIDM2LCAzNywgMzcsIDM3LCAzNywgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOSwgMzksIDM5LCANCisJCQk0MCwgNDAsIDQwLCA0MCwgNDEsIDQxLCA0MSwgNDEsIDQyLCA0MiwgNDIsIDQyLCA0MywgNDMsIDQzLCA0MywgNDQsIDQ0LCA0NCwgNDQsIDQ1LCA0NSwgNDUsIDQ1LCA0NiwgNDYsIDQ2LCA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNDksIDQ5LCA0OSwgNTAsIDUwLCA1MCwgNTAsIDUxLCA1MSwgNTEsIDUxLCA1MiwgNTIsIDUyLCA1MiwgNTMsIDUzLCA1MywgNTMsIDU0LCA1NCwgNTQsIDU0LCANCisJCQk1NSwgNTUsIDU1LCA1NSwgNTYsIDU2LCA1NiwgNTYsIDU3LCA1NywgNTcsIDU3LCA1OCwgNTgsIDU4LCA1OCwgNTksIDU5LCA1OSwgNTksIDYwLCA2MCwgNjAsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYzLCA2MywgNjMsIDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCANCisJCQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCANCisJCQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCANCisJCQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07DQorDQorCQlpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgaW50W10gTG9va3VwT2Zmc2V0cyA9IG5ldyBpbnRbXSB7IDEwMjQsIDE1MzYsIDEyODAsIDE1MzYsIDAsIDI1NiwgNzY4LCA1MTIgfTsNCisJCS8vIENPTlRFWFRfVVRGOCwgbGFzdCBieXRlLg0KKwkJLy8gQVNDSUkgcmFuZ2UuDQorCQkvLyBVVEY4IGNvbnRpbnVhdGlvbiBieXRlIHJhbmdlLg0KKwkJLy8gVVRGOCBsZWFkIGJ5dGUgcmFuZ2UuDQorCQkvLyBDT05URVhUX1VURjggc2Vjb25kIGxhc3QgYnl0ZS4NCisJCS8vIEFTQ0lJIHJhbmdlLg0KKwkJLy8gVVRGOCBjb250aW51YXRpb24gYnl0ZSByYW5nZS4NCisJCS8vIFVURjggbGVhZCBieXRlIHJhbmdlLg0KKwkJLy8gQ09OVEVYVF9TSUdORUQsIHNlY29uZCBsYXN0IGJ5dGUuDQorCQkvLyBDT05URVhUX1NJR05FRCwgbGFzdCBieXRlLCBzYW1lIGFzIHRoZSBhYm92ZSB2YWx1ZXMgc2hpZnRlZCBieSAzIGJpdHMuDQorCQkvLyBDT05URVhUX0xTQjYsIGxhc3QgYnl0ZS4NCisJCS8vIENPTlRFWFRfTVNCNiwgbGFzdCBieXRlLg0KKwkJLy8gQ09OVEVYVF97TSxMfVNCNiwgc2Vjb25kIGxhc3QgYnl0ZSwNCisJCS8vIENPTlRFWFRfTFNCNg0KKwkJLy8gQ09OVEVYVF9NU0I2DQorCQkvLyBDT05URVhUX1VURjgNCisJCS8vIENPTlRFWFRfU0lHTkVEDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9EZWNvZGUuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0RlY29kZS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGM4NzA5Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9EZWNvZGUuY3MKQEAgLTAsMCArMSw5OTIgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PkFQSSBmb3IgQnJvdGxpIGRlY29tcHJlc3Npb24uPC9zdW1tYXJ5Pg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgRGVjb2RlDQorCXsNCisJCXByaXZhdGUgY29uc3QgaW50IERlZmF1bHRDb2RlTGVuZ3RoID0gODsNCisNCisJCXByaXZhdGUgY29uc3QgaW50IENvZGVMZW5ndGhSZXBlYXRDb2RlID0gMTY7DQorDQorCQlwcml2YXRlIGNvbnN0IGludCBOdW1MaXRlcmFsQ29kZXMgPSAyNTY7DQorDQorCQlwcml2YXRlIGNvbnN0IGludCBOdW1JbnNlcnRBbmRDb3B5Q29kZXMgPSA3MDQ7DQorDQorCQlwcml2YXRlIGNvbnN0IGludCBOdW1CbG9ja0xlbmd0aENvZGVzID0gMjY7DQorDQorCQlwcml2YXRlIGNvbnN0IGludCBMaXRlcmFsQ29udGV4dEJpdHMgPSA2Ow0KKw0KKwkJcHJpdmF0ZSBjb25zdCBpbnQgRGlzdGFuY2VDb250ZXh0Qml0cyA9IDI7DQorDQorCQlwcml2YXRlIGNvbnN0IGludCBIdWZmbWFuVGFibGVCaXRzID0gODsNCisNCisJCXByaXZhdGUgY29uc3QgaW50IEh1ZmZtYW5UYWJsZU1hc2sgPSB1bmNoZWNrZWQoKGludCkoMHhGRikpOw0KKw0KKwkJcHJpdmF0ZSBjb25zdCBpbnQgQ29kZUxlbmd0aENvZGVzID0gMTg7DQorDQorCQlwcml2YXRlIHN0YXRpYyByZWFkb25seSBpbnRbXSBDb2RlTGVuZ3RoQ29kZU9yZGVyID0gbmV3IGludFtdIHsgMSwgMiwgMywgNCwgMCwgNSwgMTcsIDYsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH07DQorDQorCQlwcml2YXRlIGNvbnN0IGludCBOdW1EaXN0YW5jZVNob3J0Q29kZXMgPSAxNjsNCisNCisJCXByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGludFtdIERpc3RhbmNlU2hvcnRDb2RlSW5kZXhPZmZzZXQgPSBuZXcgaW50W10geyAzLCAyLCAxLCAwLCAzLCAzLCAzLCAzLCAzLCAzLCAyLCAyLCAyLCAyLCAyLCAyIH07DQorDQorCQlwcml2YXRlIHN0YXRpYyByZWFkb25seSBpbnRbXSBEaXN0YW5jZVNob3J0Q29kZVZhbHVlT2Zmc2V0ID0gbmV3IGludFtdIHsgMCwgMCwgMCwgMCwgLTEsIDEsIC0yLCAyLCAtMywgMywgLTEsIDEsIC0yLCAyLCAtMywgMyB9Ow0KKw0KKwkJLy8vIDxzdW1tYXJ5PlN0YXRpYyBIdWZmbWFuIGNvZGUgZm9yIHRoZSBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMuPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgaW50W10gRml4ZWRUYWJsZSA9IG5ldyBpbnRbXSB7IHVuY2hlY2tlZCgoaW50KSgweDAyMDAwMCkpLCB1bmNoZWNrZWQoKGludCkoMHgwMjAwMDQpKSwgdW5jaGVja2VkKChpbnQpKDB4MDIwMDAzKSksIHVuY2hlY2tlZCgoaW50KSgweDAzMDAwMikpLCB1bmNoZWNrZWQoKGludCkoMHgwMjAwMDApKSwgdW5jaGVja2VkKChpbnQpKDB4MDIwMDA0KSksIHVuY2hlY2tlZCgoaW50KSgweDAyMDAwMw0KKwkJCSkpLCB1bmNoZWNrZWQoKGludCkoMHgwNDAwMDEpKSwgdW5jaGVja2VkKChpbnQpKDB4MDIwMDAwKSksIHVuY2hlY2tlZCgoaW50KSgweDAyMDAwNCkpLCB1bmNoZWNrZWQoKGludCkoMHgwMjAwMDMpKSwgdW5jaGVja2VkKChpbnQpKDB4MDMwMDAyKSksIHVuY2hlY2tlZCgoaW50KSgweDAyMDAwMCkpLCB1bmNoZWNrZWQoKGludCkoMHgwMjAwMDQpKSwgdW5jaGVja2VkKChpbnQpKDB4MDIwMDAzKSksIHVuY2hlY2tlZCgoaW50DQorCQkJKSgweDA0MDAwNSkpIH07DQorDQorCQkvLy8gPHN1bW1hcnk+RGVjb2RlcyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAuLjI1NV0sIGJ5IHJlYWRpbmcgMSAtIDExIGJpdHMuPC9zdW1tYXJ5Pg0KKwkJcHJpdmF0ZSBzdGF0aWMgaW50IERlY29kZVZhckxlblVuc2lnbmVkQnl0ZShPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIgYnIpDQorCQl7DQorCQkJaWYgKE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMSkgIT0gMCkNCisJCQl7DQorCQkJCWludCBuID0gT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCAzKTsNCisJCQkJaWYgKG4gPT0gMCkNCisJCQkJew0KKwkJCQkJcmV0dXJuIDE7DQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQl7DQorCQkJCQlyZXR1cm4gT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCBuKSArICgxIDw8IG4pOw0KKwkJCQl9DQorCQkJfQ0KKwkJCXJldHVybiAwOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBEZWNvZGVNZXRhQmxvY2tMZW5ndGgoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyLCBPcmcuQnJvdGxpLkRlYy5TdGF0ZSBzdGF0ZSkNCisJCXsNCisJCQlzdGF0ZS5pbnB1dEVuZCA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMSkgPT0gMTsNCisJCQlzdGF0ZS5tZXRhQmxvY2tMZW5ndGggPSAwOw0KKwkJCXN0YXRlLmlzVW5jb21wcmVzc2VkID0gZmFsc2U7DQorCQkJc3RhdGUuaXNNZXRhZGF0YSA9IGZhbHNlOw0KKwkJCWlmIChzdGF0ZS5pbnB1dEVuZCAmJiBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIDEpICE9IDApDQorCQkJew0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCWludCBzaXplTmliYmxlcyA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMikgKyA0Ow0KKwkJCWlmIChzaXplTmliYmxlcyA9PSA3KQ0KKwkJCXsNCisJCQkJc3RhdGUuaXNNZXRhZGF0YSA9IHRydWU7DQorCQkJCWlmIChPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIDEpICE9IDApDQorCQkJCXsNCisJCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJDb3JydXB0ZWQgcmVzZXJ2ZWQgYml0Iik7DQorCQkJCX0NCisJCQkJaW50IHNpemVCeXRlcyA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMik7DQorCQkJCWlmIChzaXplQnl0ZXMgPT0gMCkNCisJCQkJew0KKwkJCQkJcmV0dXJuOw0KKwkJCQl9DQorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZUJ5dGVzOyBpKyspDQorCQkJCXsNCisJCQkJCWludCBiaXRzID0gT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCA4KTsNCisJCQkJCWlmIChiaXRzID09IDAgJiYgaSArIDEgPT0gc2l6ZUJ5dGVzICYmIHNpemVCeXRlcyA+IDEpDQorCQkJCQl7DQorCQkJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkV4dWJlcmFudCBuaWJibGUiKTsNCisJCQkJCX0NCisJCQkJCXN0YXRlLm1ldGFCbG9ja0xlbmd0aCB8PSBiaXRzIDw8IChpICogOCk7DQorCQkJCX0NCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplTmliYmxlczsgaSsrKQ0KKwkJCQl7DQorCQkJCQlpbnQgYml0cyA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgNCk7DQorCQkJCQlpZiAoYml0cyA9PSAwICYmIGkgKyAxID09IHNpemVOaWJibGVzICYmIHNpemVOaWJibGVzID4gNCkNCisJCQkJCXsNCisJCQkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiRXh1YmVyYW50IG5pYmJsZSIpOw0KKwkJCQkJfQ0KKwkJCQkJc3RhdGUubWV0YUJsb2NrTGVuZ3RoIHw9IGJpdHMgPDwgKGkgKiA0KTsNCisJCQkJfQ0KKwkJCX0NCisJCQlzdGF0ZS5tZXRhQmxvY2tMZW5ndGgrKzsNCisJCQlpZiAoIXN0YXRlLmlucHV0RW5kKQ0KKwkJCXsNCisJCQkJc3RhdGUuaXNVbmNvbXByZXNzZWQgPSBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIDEpID09IDE7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PkRlY29kZXMgdGhlIG5leHQgSHVmZm1hbiBjb2RlIGZyb20gYml0LXN0cmVhbS48L3N1bW1hcnk+DQorCQlwcml2YXRlIHN0YXRpYyBpbnQgUmVhZFN5bWJvbChpbnRbXSB0YWJsZSwgaW50IG9mZnNldCwgT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWludCB2YWwgPSAoaW50KSgobG9uZykoKCh1bG9uZylici5hY2N1bXVsYXRvcikgPj4gYnIuYml0T2Zmc2V0KSk7DQorCQkJb2Zmc2V0ICs9IHZhbCAmIEh1ZmZtYW5UYWJsZU1hc2s7DQorCQkJaW50IGJpdHMgPSB0YWJsZVtvZmZzZXRdID4+IDE2Ow0KKwkJCWludCBzeW0gPSB0YWJsZVtvZmZzZXRdICYgdW5jaGVja2VkKChpbnQpKDB4RkZGRikpOw0KKwkJCWlmIChiaXRzIDw9IEh1ZmZtYW5UYWJsZUJpdHMpDQorCQkJew0KKwkJCQlici5iaXRPZmZzZXQgKz0gYml0czsNCisJCQkJcmV0dXJuIHN5bTsNCisJCQl9DQorCQkJb2Zmc2V0ICs9IHN5bTsNCisJCQlpbnQgbWFzayA9ICgxIDw8IGJpdHMpIC0gMTsNCisJCQlvZmZzZXQgKz0gKGludCkoKCh1aW50KSh2YWwgJiBtYXNrKSkgPj4gSHVmZm1hblRhYmxlQml0cyk7DQorCQkJYnIuYml0T2Zmc2V0ICs9ICgodGFibGVbb2Zmc2V0XSA+PiAxNikgKyBIdWZmbWFuVGFibGVCaXRzKTsNCisJCQlyZXR1cm4gdGFibGVbb2Zmc2V0XSAmIHVuY2hlY2tlZCgoaW50KSgweEZGRkYpKTsNCisJCX0NCisNCisJCXByaXZhdGUgc3RhdGljIGludCBSZWFkQmxvY2tMZW5ndGgoaW50W10gdGFibGUsIGludCBvZmZzZXQsIE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBicikNCisJCXsNCisJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuRmlsbEJpdFdpbmRvdyhicik7DQorCQkJaW50IGNvZGUgPSBSZWFkU3ltYm9sKHRhYmxlLCBvZmZzZXQsIGJyKTsNCisJCQlpbnQgbiA9IE9yZy5Ccm90bGkuRGVjLlByZWZpeC5CbG9ja0xlbmd0aE5CaXRzW2NvZGVdOw0KKwkJCXJldHVybiBPcmcuQnJvdGxpLkRlYy5QcmVmaXguQmxvY2tMZW5ndGhPZmZzZXRbY29kZV0gKyBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIG4pOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgaW50IFRyYW5zbGF0ZVNob3J0Q29kZXMoaW50IGNvZGUsIGludFtdIHJpbmdCdWZmZXIsIGludCBpbmRleCkNCisJCXsNCisJCQlpZiAoY29kZSA8IE51bURpc3RhbmNlU2hvcnRDb2RlcykNCisJCQl7DQorCQkJCWluZGV4ICs9IERpc3RhbmNlU2hvcnRDb2RlSW5kZXhPZmZzZXRbY29kZV07DQorCQkJCWluZGV4ICY9IDM7DQorCQkJCXJldHVybiByaW5nQnVmZmVyW2luZGV4XSArIERpc3RhbmNlU2hvcnRDb2RlVmFsdWVPZmZzZXRbY29kZV07DQorCQkJfQ0KKwkJCXJldHVybiBjb2RlIC0gTnVtRGlzdGFuY2VTaG9ydENvZGVzICsgMTsNCisJCX0NCisNCisJCXByaXZhdGUgc3RhdGljIHZvaWQgTW92ZVRvRnJvbnQoaW50W10gdiwgaW50IGluZGV4KQ0KKwkJew0KKwkJCWludCB2YWx1ZSA9IHZbaW5kZXhdOw0KKwkJCWZvciAoOyBpbmRleCA+IDA7IGluZGV4LS0pDQorCQkJew0KKwkJCQl2W2luZGV4XSA9IHZbaW5kZXggLSAxXTsNCisJCQl9DQorCQkJdlswXSA9IHZhbHVlOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBJbnZlcnNlTW92ZVRvRnJvbnRUcmFuc2Zvcm0oYnl0ZVtdIHYsIGludCB2TGVuKQ0KKwkJew0KKwkJCWludFtdIG10ZiA9IG5ldyBpbnRbMjU2XTsNCisJCQlmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSsrKQ0KKwkJCXsNCisJCQkJbXRmW2ldID0gaTsNCisJCQl9DQorCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB2TGVuOyBpKyspDQorCQkJew0KKwkJCQlpbnQgaW5kZXggPSB2W2ldICYgdW5jaGVja2VkKChpbnQpKDB4RkYpKTsNCisJCQkJdltpXSA9IHVuY2hlY2tlZCgoYnl0ZSltdGZbaW5kZXhdKTsNCisJCQkJaWYgKGluZGV4ICE9IDApDQorCQkJCXsNCisJCQkJCU1vdmVUb0Zyb250KG10ZiwgaW5kZXgpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBSZWFkSHVmZm1hbkNvZGVMZW5ndGhzKGludFtdIGNvZGVMZW5ndGhDb2RlTGVuZ3RocywgaW50IG51bVN5bWJvbHMsIGludFtdIGNvZGVMZW5ndGhzLCBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIgYnIpDQorCQl7DQorCQkJaW50IHN5bWJvbCA9IDA7DQorCQkJaW50IHByZXZDb2RlTGVuID0gRGVmYXVsdENvZGVMZW5ndGg7DQorCQkJaW50IHJlcGVhdCA9IDA7DQorCQkJaW50IHJlcGVhdENvZGVMZW4gPSAwOw0KKwkJCWludCBzcGFjZSA9IDMyNzY4Ow0KKwkJCWludFtdIHRhYmxlID0gbmV3IGludFszMl07DQorCQkJT3JnLkJyb3RsaS5EZWMuSHVmZm1hbi5CdWlsZEh1ZmZtYW5UYWJsZSh0YWJsZSwgMCwgNSwgY29kZUxlbmd0aENvZGVMZW5ndGhzLCBDb2RlTGVuZ3RoQ29kZXMpOw0KKwkJCXdoaWxlIChzeW1ib2wgPCBudW1TeW1ib2xzICYmIHNwYWNlID4gMCkNCisJCQl7DQorCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkTW9yZUlucHV0KGJyKTsNCisJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLkZpbGxCaXRXaW5kb3coYnIpOw0KKwkJCQlpbnQgcCA9IChpbnQpKCgobG9uZykoKCh1bG9uZylici5hY2N1bXVsYXRvcikgPj4gYnIuYml0T2Zmc2V0KSkpICYgMzE7DQorCQkJCWJyLmJpdE9mZnNldCArPSB0YWJsZVtwXSA+PiAxNjsNCisJCQkJaW50IGNvZGVMZW4gPSB0YWJsZVtwXSAmIHVuY2hlY2tlZCgoaW50KSgweEZGRkYpKTsNCisJCQkJaWYgKGNvZGVMZW4gPCBDb2RlTGVuZ3RoUmVwZWF0Q29kZSkNCisJCQkJew0KKwkJCQkJcmVwZWF0ID0gMDsNCisJCQkJCWNvZGVMZW5ndGhzW3N5bWJvbCsrXSA9IGNvZGVMZW47DQorCQkJCQlpZiAoY29kZUxlbiAhPSAwKQ0KKwkJCQkJew0KKwkJCQkJCXByZXZDb2RlTGVuID0gY29kZUxlbjsNCisJCQkJCQlzcGFjZSAtPSAzMjc2OCA+PiBjb2RlTGVuOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJCWVsc2UNCisJCQkJew0KKwkJCQkJaW50IGV4dHJhQml0cyA9IGNvZGVMZW4gLSAxNDsNCisJCQkJCWludCBuZXdMZW4gPSAwOw0KKwkJCQkJaWYgKGNvZGVMZW4gPT0gQ29kZUxlbmd0aFJlcGVhdENvZGUpDQorCQkJCQl7DQorCQkJCQkJbmV3TGVuID0gcHJldkNvZGVMZW47DQorCQkJCQl9DQorCQkJCQlpZiAocmVwZWF0Q29kZUxlbiAhPSBuZXdMZW4pDQorCQkJCQl7DQorCQkJCQkJcmVwZWF0ID0gMDsNCisJCQkJCQlyZXBlYXRDb2RlTGVuID0gbmV3TGVuOw0KKwkJCQkJfQ0KKwkJCQkJaW50IG9sZFJlcGVhdCA9IHJlcGVhdDsNCisJCQkJCWlmIChyZXBlYXQgPiAwKQ0KKwkJCQkJew0KKwkJCQkJCXJlcGVhdCAtPSAyOw0KKwkJCQkJCXJlcGVhdCA8PD0gZXh0cmFCaXRzOw0KKwkJCQkJfQ0KKwkJCQkJcmVwZWF0ICs9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgZXh0cmFCaXRzKSArIDM7DQorCQkJCQlpbnQgcmVwZWF0RGVsdGEgPSByZXBlYXQgLSBvbGRSZXBlYXQ7DQorCQkJCQlpZiAoc3ltYm9sICsgcmVwZWF0RGVsdGEgPiBudW1TeW1ib2xzKQ0KKwkJCQkJew0KKwkJCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJzeW1ib2wgKyByZXBlYXREZWx0YSA+IG51bVN5bWJvbHMiKTsNCisJCQkJCX0NCisJCQkJCS8vIENPVl9ORl9MSU5FDQorCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdERlbHRhOyBpKyspDQorCQkJCQl7DQorCQkJCQkJY29kZUxlbmd0aHNbc3ltYm9sKytdID0gcmVwZWF0Q29kZUxlbjsNCisJCQkJCX0NCisJCQkJCWlmIChyZXBlYXRDb2RlTGVuICE9IDApDQorCQkJCQl7DQorCQkJCQkJc3BhY2UgLT0gcmVwZWF0RGVsdGEgPDwgKDE1IC0gcmVwZWF0Q29kZUxlbik7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQkJaWYgKHNwYWNlICE9IDApDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiVW51c2VkIHNwYWNlIik7DQorCQkJfQ0KKwkJCS8vIENPVl9ORl9MSU5FDQorCQkJLy8gVE9ETzogUGFzcyBtYXhfc3ltYm9sIHRvIEh1ZmZtYW4gdGFibGUgYnVpbGRlciBpbnN0ZWFkPw0KKwkJCU9yZy5Ccm90bGkuRGVjLlV0aWxzLkZpbGxXaXRoWmVyb2VzKGNvZGVMZW5ndGhzLCBzeW1ib2wsIG51bVN5bWJvbHMgLSBzeW1ib2wpOw0KKwkJfQ0KKw0KKwkJLy8gVE9ETzogVXNlIHNwZWNpYWxpemVkIHZlcnNpb25zIGZvciBzbWFsbGVyIHRhYmxlcy4NCisJCWludGVybmFsIHN0YXRpYyB2b2lkIFJlYWRIdWZmbWFuQ29kZShpbnQgYWxwaGFiZXRTaXplLCBpbnRbXSB0YWJsZSwgaW50IG9mZnNldCwgT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWJvb2wgb2sgPSB0cnVlOw0KKwkJCWludCBzaW1wbGVDb2RlT3JTa2lwOw0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkTW9yZUlucHV0KGJyKTsNCisJCQkvLyBUT0RPOiBBdm9pZCBhbGxvY2F0aW9uLg0KKwkJCWludFtdIGNvZGVMZW5ndGhzID0gbmV3IGludFthbHBoYWJldFNpemVdOw0KKwkJCXNpbXBsZUNvZGVPclNraXAgPSBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIDIpOw0KKwkJCWlmIChzaW1wbGVDb2RlT3JTa2lwID09IDEpDQorCQkJew0KKwkJCQkvLyBSZWFkIHN5bWJvbHMsIGNvZGVzICYgY29kZSBsZW5ndGhzIGRpcmVjdGx5Lg0KKwkJCQlpbnQgbWF4Qml0c0NvdW50ZXIgPSBhbHBoYWJldFNpemUgLSAxOw0KKwkJCQlpbnQgbWF4Qml0cyA9IDA7DQorCQkJCWludFtdIHN5bWJvbHMgPSBuZXcgaW50WzRdOw0KKwkJCQlpbnQgbnVtU3ltYm9scyA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMikgKyAxOw0KKwkJCQl3aGlsZSAobWF4Qml0c0NvdW50ZXIgIT0gMCkNCisJCQkJew0KKwkJCQkJbWF4Qml0c0NvdW50ZXIgPj49IDE7DQorCQkJCQltYXhCaXRzKys7DQorCQkJCX0NCisJCQkJLy8gVE9ETzogdW5jb21tZW50IHdoZW4gY29kZUxlbmd0aHMgaXMgcmV1c2VkLg0KKwkJCQkvLyBVdGlscy5maWxsV2l0aFplcm9lcyhjb2RlTGVuZ3RocywgMCwgYWxwaGFiZXRTaXplKTsNCisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1TeW1ib2xzOyBpKyspDQorCQkJCXsNCisJCQkJCXN5bWJvbHNbaV0gPSBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIG1heEJpdHMpICUgYWxwaGFiZXRTaXplOw0KKwkJCQkJY29kZUxlbmd0aHNbc3ltYm9sc1tpXV0gPSAyOw0KKwkJCQl9DQorCQkJCWNvZGVMZW5ndGhzW3N5bWJvbHNbMF1dID0gMTsNCisJCQkJc3dpdGNoIChudW1TeW1ib2xzKQ0KKwkJCQl7DQorCQkJCQljYXNlIDE6DQorCQkJCQl7DQorCQkJCQkJYnJlYWs7DQorCQkJCQl9DQorDQorCQkJCQljYXNlIDI6DQorCQkJCQl7DQorCQkJCQkJb2sgPSBzeW1ib2xzWzBdICE9IHN5bWJvbHNbMV07DQorCQkJCQkJY29kZUxlbmd0aHNbc3ltYm9sc1sxXV0gPSAxOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJfQ0KKw0KKwkJCQkJY2FzZSAzOg0KKwkJCQkJew0KKwkJCQkJCW9rID0gc3ltYm9sc1swXSAhPSBzeW1ib2xzWzFdICYmIHN5bWJvbHNbMF0gIT0gc3ltYm9sc1syXSAmJiBzeW1ib2xzWzFdICE9IHN5bWJvbHNbMl07DQorCQkJCQkJYnJlYWs7DQorCQkJCQl9DQorDQorCQkJCQljYXNlIDQ6DQorCQkJCQlkZWZhdWx0Og0KKwkJCQkJew0KKwkJCQkJCW9rID0gc3ltYm9sc1swXSAhPSBzeW1ib2xzWzFdICYmIHN5bWJvbHNbMF0gIT0gc3ltYm9sc1syXSAmJiBzeW1ib2xzWzBdICE9IHN5bWJvbHNbM10gJiYgc3ltYm9sc1sxXSAhPSBzeW1ib2xzWzJdICYmIHN5bWJvbHNbMV0gIT0gc3ltYm9sc1szXSAmJiBzeW1ib2xzWzJdICE9IHN5bWJvbHNbM107DQorCQkJCQkJaWYgKE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMSkgPT0gMSkNCisJCQkJCQl7DQorCQkJCQkJCWNvZGVMZW5ndGhzW3N5bWJvbHNbMl1dID0gMzsNCisJCQkJCQkJY29kZUxlbmd0aHNbc3ltYm9sc1szXV0gPSAzOw0KKwkJCQkJCX0NCisJCQkJCQllbHNlDQorCQkJCQkJew0KKwkJCQkJCQljb2RlTGVuZ3Roc1tzeW1ib2xzWzBdXSA9IDI7DQorCQkJCQkJfQ0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCS8vIERlY29kZSBIdWZmbWFuLWNvZGVkIGNvZGUgbGVuZ3Rocy4NCisJCQkJaW50W10gY29kZUxlbmd0aENvZGVMZW5ndGhzID0gbmV3IGludFtDb2RlTGVuZ3RoQ29kZXNdOw0KKwkJCQlpbnQgc3BhY2UgPSAzMjsNCisJCQkJaW50IG51bUNvZGVzID0gMDsNCisJCQkJZm9yIChpbnQgaSA9IHNpbXBsZUNvZGVPclNraXA7IGkgPCBDb2RlTGVuZ3RoQ29kZXMgJiYgc3BhY2UgPiAwOyBpKyspDQorCQkJCXsNCisJCQkJCWludCBjb2RlTGVuSWR4ID0gQ29kZUxlbmd0aENvZGVPcmRlcltpXTsNCisJCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5GaWxsQml0V2luZG93KGJyKTsNCisJCQkJCWludCBwID0gKGludCkoKGxvbmcpKCgodWxvbmcpYnIuYWNjdW11bGF0b3IpID4+IGJyLmJpdE9mZnNldCkpICYgMTU7DQorCQkJCQkvLyBUT0RPOiBEZW11bHRpcGxleCBGSVhFRF9UQUJMRS4NCisJCQkJCWJyLmJpdE9mZnNldCArPSBGaXhlZFRhYmxlW3BdID4+IDE2Ow0KKwkJCQkJaW50IHYgPSBGaXhlZFRhYmxlW3BdICYgdW5jaGVja2VkKChpbnQpKDB4RkZGRikpOw0KKwkJCQkJY29kZUxlbmd0aENvZGVMZW5ndGhzW2NvZGVMZW5JZHhdID0gdjsNCisJCQkJCWlmICh2ICE9IDApDQorCQkJCQl7DQorCQkJCQkJc3BhY2UgLT0gKDMyID4+IHYpOw0KKwkJCQkJCW51bUNvZGVzKys7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJb2sgPSAobnVtQ29kZXMgPT0gMSB8fCBzcGFjZSA9PSAwKTsNCisJCQkJUmVhZEh1ZmZtYW5Db2RlTGVuZ3Rocyhjb2RlTGVuZ3RoQ29kZUxlbmd0aHMsIGFscGhhYmV0U2l6ZSwgY29kZUxlbmd0aHMsIGJyKTsNCisJCQl9DQorCQkJaWYgKCFvaykNCisJCQl7DQorCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCByZWFkSHVmZm1hbkNvZGUiKTsNCisJCQl9DQorCQkJLy8gQ09WX05GX0xJTkUNCisJCQlPcmcuQnJvdGxpLkRlYy5IdWZmbWFuLkJ1aWxkSHVmZm1hblRhYmxlKHRhYmxlLCBvZmZzZXQsIEh1ZmZtYW5UYWJsZUJpdHMsIGNvZGVMZW5ndGhzLCBhbHBoYWJldFNpemUpOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgaW50IERlY29kZUNvbnRleHRNYXAoaW50IGNvbnRleHRNYXBTaXplLCBieXRlW10gY29udGV4dE1hcCwgT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkTW9yZUlucHV0KGJyKTsNCisJCQlpbnQgbnVtVHJlZXMgPSBEZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoYnIpICsgMTsNCisJCQlpZiAobnVtVHJlZXMgPT0gMSkNCisJCQl7DQorCQkJCU9yZy5Ccm90bGkuRGVjLlV0aWxzLkZpbGxXaXRoWmVyb2VzKGNvbnRleHRNYXAsIDAsIGNvbnRleHRNYXBTaXplKTsNCisJCQkJcmV0dXJuIG51bVRyZWVzOw0KKwkJCX0NCisJCQlib29sIHVzZVJsZUZvclplcm9zID0gT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCAxKSA9PSAxOw0KKwkJCWludCBtYXhSdW5MZW5ndGhQcmVmaXggPSAwOw0KKwkJCWlmICh1c2VSbGVGb3JaZXJvcykNCisJCQl7DQorCQkJCW1heFJ1bkxlbmd0aFByZWZpeCA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgNCkgKyAxOw0KKwkJCX0NCisJCQlpbnRbXSB0YWJsZSA9IG5ldyBpbnRbT3JnLkJyb3RsaS5EZWMuSHVmZm1hbi5IdWZmbWFuTWF4VGFibGVTaXplXTsNCisJCQlSZWFkSHVmZm1hbkNvZGUobnVtVHJlZXMgKyBtYXhSdW5MZW5ndGhQcmVmaXgsIHRhYmxlLCAwLCBicik7DQorCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb250ZXh0TWFwU2l6ZTsgKQ0KKwkJCXsNCisJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRNb3JlSW5wdXQoYnIpOw0KKwkJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuRmlsbEJpdFdpbmRvdyhicik7DQorCQkJCWludCBjb2RlID0gUmVhZFN5bWJvbCh0YWJsZSwgMCwgYnIpOw0KKwkJCQlpZiAoY29kZSA9PSAwKQ0KKwkJCQl7DQorCQkJCQljb250ZXh0TWFwW2ldID0gMDsNCisJCQkJCWkrKzsNCisJCQkJfQ0KKwkJCQllbHNlIGlmIChjb2RlIDw9IG1heFJ1bkxlbmd0aFByZWZpeCkNCisJCQkJew0KKwkJCQkJaW50IHJlcHMgPSAoMSA8PCBjb2RlKSArIE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgY29kZSk7DQorCQkJCQl3aGlsZSAocmVwcyAhPSAwKQ0KKwkJCQkJew0KKwkJCQkJCWlmIChpID49IGNvbnRleHRNYXBTaXplKQ0KKwkJCQkJCXsNCisJCQkJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkNvcnJ1cHRlZCBjb250ZXh0IG1hcCIpOw0KKwkJCQkJCX0NCisJCQkJCQkvLyBDT1ZfTkZfTElORQ0KKwkJCQkJCWNvbnRleHRNYXBbaV0gPSAwOw0KKwkJCQkJCWkrKzsNCisJCQkJCQlyZXBzLS07DQorCQkJCQl9DQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQl7DQorCQkJCQljb250ZXh0TWFwW2ldID0gdW5jaGVja2VkKChieXRlKShjb2RlIC0gbWF4UnVuTGVuZ3RoUHJlZml4KSk7DQorCQkJCQlpKys7DQorCQkJCX0NCisJCQl9DQorCQkJaWYgKE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMSkgPT0gMSkNCisJCQl7DQorCQkJCUludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9ybShjb250ZXh0TWFwLCBjb250ZXh0TWFwU2l6ZSk7DQorCQkJfQ0KKwkJCXJldHVybiBudW1UcmVlczsNCisJCX0NCisNCisJCXByaXZhdGUgc3RhdGljIHZvaWQgRGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKE9yZy5Ccm90bGkuRGVjLlN0YXRlIHN0YXRlLCBpbnQgdHJlZVR5cGUpDQorCQl7DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyID0gc3RhdGUuYnI7DQorCQkJaW50W10gcmluZ0J1ZmZlcnMgPSBzdGF0ZS5ibG9ja1R5cGVSYjsNCisJCQlpbnQgb2Zmc2V0ID0gdHJlZVR5cGUgKiAyOw0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5GaWxsQml0V2luZG93KGJyKTsNCisJCQlpbnQgYmxvY2tUeXBlID0gUmVhZFN5bWJvbChzdGF0ZS5ibG9ja1R5cGVUcmVlcywgdHJlZVR5cGUgKiBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuLkh1ZmZtYW5NYXhUYWJsZVNpemUsIGJyKTsNCisJCQlzdGF0ZS5ibG9ja0xlbmd0aFt0cmVlVHlwZV0gPSBSZWFkQmxvY2tMZW5ndGgoc3RhdGUuYmxvY2tMZW5UcmVlcywgdHJlZVR5cGUgKiBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuLkh1ZmZtYW5NYXhUYWJsZVNpemUsIGJyKTsNCisJCQlpZiAoYmxvY2tUeXBlID09IDEpDQorCQkJew0KKwkJCQlibG9ja1R5cGUgPSByaW5nQnVmZmVyc1tvZmZzZXQgKyAxXSArIDE7DQorCQkJfQ0KKwkJCWVsc2UgaWYgKGJsb2NrVHlwZSA9PSAwKQ0KKwkJCXsNCisJCQkJYmxvY2tUeXBlID0gcmluZ0J1ZmZlcnNbb2Zmc2V0XTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJYmxvY2tUeXBlIC09IDI7DQorCQkJfQ0KKwkJCWlmIChibG9ja1R5cGUgPj0gc3RhdGUubnVtQmxvY2tUeXBlc1t0cmVlVHlwZV0pDQorCQkJew0KKwkJCQlibG9ja1R5cGUgLT0gc3RhdGUubnVtQmxvY2tUeXBlc1t0cmVlVHlwZV07DQorCQkJfQ0KKwkJCXJpbmdCdWZmZXJzW29mZnNldF0gPSByaW5nQnVmZmVyc1tvZmZzZXQgKyAxXTsNCisJCQlyaW5nQnVmZmVyc1tvZmZzZXQgKyAxXSA9IGJsb2NrVHlwZTsNCisJCX0NCisNCisJCXByaXZhdGUgc3RhdGljIHZvaWQgRGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKE9yZy5Ccm90bGkuRGVjLlN0YXRlIHN0YXRlKQ0KKwkJew0KKwkJCURlY29kZUJsb2NrVHlwZUFuZExlbmd0aChzdGF0ZSwgMCk7DQorCQkJaW50IGxpdGVyYWxCbG9ja1R5cGUgPSBzdGF0ZS5ibG9ja1R5cGVSYlsxXTsNCisJCQlzdGF0ZS5jb250ZXh0TWFwU2xpY2UgPSBsaXRlcmFsQmxvY2tUeXBlIDw8IExpdGVyYWxDb250ZXh0Qml0czsNCisJCQlzdGF0ZS5saXRlcmFsVHJlZUluZGV4ID0gc3RhdGUuY29udGV4dE1hcFtzdGF0ZS5jb250ZXh0TWFwU2xpY2VdICYgdW5jaGVja2VkKChpbnQpKDB4RkYpKTsNCisJCQlzdGF0ZS5saXRlcmFsVHJlZSA9IHN0YXRlLmhHcm91cDAudHJlZXNbc3RhdGUubGl0ZXJhbFRyZWVJbmRleF07DQorCQkJaW50IGNvbnRleHRNb2RlID0gc3RhdGUuY29udGV4dE1vZGVzW2xpdGVyYWxCbG9ja1R5cGVdOw0KKwkJCXN0YXRlLmNvbnRleHRMb29rdXBPZmZzZXQxID0gT3JnLkJyb3RsaS5EZWMuQ29udGV4dC5Mb29rdXBPZmZzZXRzW2NvbnRleHRNb2RlXTsNCisJCQlzdGF0ZS5jb250ZXh0TG9va3VwT2Zmc2V0MiA9IE9yZy5Ccm90bGkuRGVjLkNvbnRleHQuTG9va3VwT2Zmc2V0c1tjb250ZXh0TW9kZSArIDFdOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBEZWNvZGVDb21tYW5kQmxvY2tTd2l0Y2goT3JnLkJyb3RsaS5EZWMuU3RhdGUgc3RhdGUpDQorCQl7DQorCQkJRGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKHN0YXRlLCAxKTsNCisJCQlzdGF0ZS50cmVlQ29tbWFuZE9mZnNldCA9IHN0YXRlLmhHcm91cDEudHJlZXNbc3RhdGUuYmxvY2tUeXBlUmJbM11dOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBEZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKE9yZy5Ccm90bGkuRGVjLlN0YXRlIHN0YXRlKQ0KKwkJew0KKwkJCURlY29kZUJsb2NrVHlwZUFuZExlbmd0aChzdGF0ZSwgMik7DQorCQkJc3RhdGUuZGlzdENvbnRleHRNYXBTbGljZSA9IHN0YXRlLmJsb2NrVHlwZVJiWzVdIDw8IERpc3RhbmNlQ29udGV4dEJpdHM7DQorCQl9DQorDQorCQlwcml2YXRlIHN0YXRpYyB2b2lkIE1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIoT3JnLkJyb3RsaS5EZWMuU3RhdGUgc3RhdGUpDQorCQl7DQorCQkJaW50IG5ld1NpemUgPSBzdGF0ZS5tYXhSaW5nQnVmZmVyU2l6ZTsNCisJCQlpZiAoKGxvbmcpbmV3U2l6ZSA+IHN0YXRlLmV4cGVjdGVkVG90YWxTaXplKQ0KKwkJCXsNCisJCQkJLyogVE9ETzogSGFuZGxlIDJHQisgY2FzZXMgbW9yZSBncmFjZWZ1bGx5LiAqLw0KKwkJCQlpbnQgbWluaW1hbE5ld1NpemUgPSAoaW50KXN0YXRlLmV4cGVjdGVkVG90YWxTaXplICsgc3RhdGUuY3VzdG9tRGljdGlvbmFyeS5MZW5ndGg7DQorCQkJCXdoaWxlICgobmV3U2l6ZSA+PiAxKSA+IG1pbmltYWxOZXdTaXplKQ0KKwkJCQl7DQorCQkJCQluZXdTaXplID4+PSAxOw0KKwkJCQl9DQorCQkJCWlmICghc3RhdGUuaW5wdXRFbmQgJiYgbmV3U2l6ZSA8IDE2Mzg0ICYmIHN0YXRlLm1heFJpbmdCdWZmZXJTaXplID49IDE2Mzg0KQ0KKwkJCQl7DQorCQkJCQluZXdTaXplID0gMTYzODQ7DQorCQkJCX0NCisJCQl9DQorCQkJaWYgKG5ld1NpemUgPD0gc3RhdGUucmluZ0J1ZmZlclNpemUpDQorCQkJew0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCWludCByaW5nQnVmZmVyU2l6ZVdpdGhTbGFjayA9IG5ld1NpemUgKyBPcmcuQnJvdGxpLkRlYy5EaWN0aW9uYXJ5Lk1heFRyYW5zZm9ybWVkV29yZExlbmd0aDsNCisJCQlieXRlW10gbmV3QnVmZmVyID0gbmV3IGJ5dGVbcmluZ0J1ZmZlclNpemVXaXRoU2xhY2tdOw0KKwkJCWlmIChzdGF0ZS5yaW5nQnVmZmVyICE9IG51bGwpDQorCQkJew0KKwkJCQlTeXN0ZW0uQXJyYXkuQ29weShzdGF0ZS5yaW5nQnVmZmVyLCAwLCBuZXdCdWZmZXIsIDAsIHN0YXRlLnJpbmdCdWZmZXJTaXplKTsNCisJCQl9DQorCQkJZWxzZSBpZiAoc3RhdGUuY3VzdG9tRGljdGlvbmFyeS5MZW5ndGggIT0gMCkNCisJCQl7DQorCQkJCS8qIFByZXBlbmQgY3VzdG9tIGRpY3Rpb25hcnksIGlmIGFueS4gKi8NCisJCQkJaW50IGxlbmd0aCA9IHN0YXRlLmN1c3RvbURpY3Rpb25hcnkuTGVuZ3RoOw0KKwkJCQlpbnQgb2Zmc2V0ID0gMDsNCisJCQkJaWYgKGxlbmd0aCA+IHN0YXRlLm1heEJhY2t3YXJkRGlzdGFuY2UpDQorCQkJCXsNCisJCQkJCW9mZnNldCA9IGxlbmd0aCAtIHN0YXRlLm1heEJhY2t3YXJkRGlzdGFuY2U7DQorCQkJCQlsZW5ndGggPSBzdGF0ZS5tYXhCYWNrd2FyZERpc3RhbmNlOw0KKwkJCQl9DQorCQkJCVN5c3RlbS5BcnJheS5Db3B5KHN0YXRlLmN1c3RvbURpY3Rpb25hcnksIG9mZnNldCwgbmV3QnVmZmVyLCAwLCBsZW5ndGgpOw0KKwkJCQlzdGF0ZS5wb3MgPSBsZW5ndGg7DQorCQkJCXN0YXRlLmJ5dGVzVG9JZ25vcmUgPSBsZW5ndGg7DQorCQkJfQ0KKwkJCXN0YXRlLnJpbmdCdWZmZXIgPSBuZXdCdWZmZXI7DQorCQkJc3RhdGUucmluZ0J1ZmZlclNpemUgPSBuZXdTaXplOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PlJlYWRzIG5leHQgbWV0YWJsb2NrIGhlYWRlci48L3N1bW1hcnk+DQorCQkvLy8gPHBhcmFtIG5hbWU9InN0YXRlIj5kZWNvZGluZyBzdGF0ZTwvcGFyYW0+DQorCQlwcml2YXRlIHN0YXRpYyB2b2lkIFJlYWRNZXRhYmxvY2tJbmZvKE9yZy5Ccm90bGkuRGVjLlN0YXRlIHN0YXRlKQ0KKwkJew0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBiciA9IHN0YXRlLmJyOw0KKwkJCWlmIChzdGF0ZS5pbnB1dEVuZCkNCisJCQl7DQorCQkJCXN0YXRlLm5leHRSdW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuRmluaXNoZWQ7DQorCQkJCXN0YXRlLmJ5dGVzVG9Xcml0ZSA9IHN0YXRlLnBvczsNCisJCQkJc3RhdGUuYnl0ZXNXcml0dGVuID0gMDsNCisJCQkJc3RhdGUucnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLldyaXRlOw0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCS8vIFRPRE86IFJlc2V0PyBEbyB3ZSBuZWVkIHRoaXM/DQorCQkJc3RhdGUuaEdyb3VwMC5jb2RlcyA9IG51bGw7DQorCQkJc3RhdGUuaEdyb3VwMC50cmVlcyA9IG51bGw7DQorCQkJc3RhdGUuaEdyb3VwMS5jb2RlcyA9IG51bGw7DQorCQkJc3RhdGUuaEdyb3VwMS50cmVlcyA9IG51bGw7DQorCQkJc3RhdGUuaEdyb3VwMi5jb2RlcyA9IG51bGw7DQorCQkJc3RhdGUuaEdyb3VwMi50cmVlcyA9IG51bGw7DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRNb3JlSW5wdXQoYnIpOw0KKwkJCURlY29kZU1ldGFCbG9ja0xlbmd0aChiciwgc3RhdGUpOw0KKwkJCWlmIChzdGF0ZS5tZXRhQmxvY2tMZW5ndGggPT0gMCAmJiAhc3RhdGUuaXNNZXRhZGF0YSkNCisJCQl7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJaWYgKHN0YXRlLmlzVW5jb21wcmVzc2VkIHx8IHN0YXRlLmlzTWV0YWRhdGEpDQorCQkJew0KKwkJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuSnVtcFRvQnl0ZUJvdW5kYXJ5KGJyKTsNCisJCQkJc3RhdGUucnVubmluZ1N0YXRlID0gc3RhdGUuaXNNZXRhZGF0YSA/IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5SZWFkTWV0YWRhdGEgOiBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ29weVVuY29tcHJlc3NlZDsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJc3RhdGUucnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkNvbXByZXNzZWRCbG9ja1N0YXJ0Ow0KKwkJCX0NCisJCQlpZiAoc3RhdGUuaXNNZXRhZGF0YSkNCisJCQl7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJc3RhdGUuZXhwZWN0ZWRUb3RhbFNpemUgKz0gc3RhdGUubWV0YUJsb2NrTGVuZ3RoOw0KKwkJCWlmIChzdGF0ZS5yaW5nQnVmZmVyU2l6ZSA8IHN0YXRlLm1heFJpbmdCdWZmZXJTaXplKQ0KKwkJCXsNCisJCQkJTWF5YmVSZWFsbG9jYXRlUmluZ0J1ZmZlcihzdGF0ZSk7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBSZWFkTWV0YWJsb2NrSHVmZm1hbkNvZGVzQW5kQ29udGV4dE1hcHMoT3JnLkJyb3RsaS5EZWMuU3RhdGUgc3RhdGUpDQorCQl7DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyID0gc3RhdGUuYnI7DQorCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspDQorCQkJew0KKwkJCQlzdGF0ZS5udW1CbG9ja1R5cGVzW2ldID0gRGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKGJyKSArIDE7DQorCQkJCXN0YXRlLmJsb2NrTGVuZ3RoW2ldID0gMSA8PCAyODsNCisJCQkJaWYgKHN0YXRlLm51bUJsb2NrVHlwZXNbaV0gPiAxKQ0KKwkJCQl7DQorCQkJCQlSZWFkSHVmZm1hbkNvZGUoc3RhdGUubnVtQmxvY2tUeXBlc1tpXSArIDIsIHN0YXRlLmJsb2NrVHlwZVRyZWVzLCBpICogT3JnLkJyb3RsaS5EZWMuSHVmZm1hbi5IdWZmbWFuTWF4VGFibGVTaXplLCBicik7DQorCQkJCQlSZWFkSHVmZm1hbkNvZGUoTnVtQmxvY2tMZW5ndGhDb2Rlcywgc3RhdGUuYmxvY2tMZW5UcmVlcywgaSAqIE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW4uSHVmZm1hbk1heFRhYmxlU2l6ZSwgYnIpOw0KKwkJCQkJc3RhdGUuYmxvY2tMZW5ndGhbaV0gPSBSZWFkQmxvY2tMZW5ndGgoc3RhdGUuYmxvY2tMZW5UcmVlcywgaSAqIE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW4uSHVmZm1hbk1heFRhYmxlU2l6ZSwgYnIpOw0KKwkJCQl9DQorCQkJfQ0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkTW9yZUlucHV0KGJyKTsNCisJCQlzdGF0ZS5kaXN0YW5jZVBvc3RmaXhCaXRzID0gT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCAyKTsNCisJCQlzdGF0ZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzID0gTnVtRGlzdGFuY2VTaG9ydENvZGVzICsgKE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgNCkgPDwgc3RhdGUuZGlzdGFuY2VQb3N0Zml4Qml0cyk7DQorCQkJc3RhdGUuZGlzdGFuY2VQb3N0Zml4TWFzayA9ICgxIDw8IHN0YXRlLmRpc3RhbmNlUG9zdGZpeEJpdHMpIC0gMTsNCisJCQlpbnQgbnVtRGlzdGFuY2VDb2RlcyA9IHN0YXRlLm51bURpcmVjdERpc3RhbmNlQ29kZXMgKyAoNDggPDwgc3RhdGUuZGlzdGFuY2VQb3N0Zml4Qml0cyk7DQorCQkJLy8gVE9ETzogUmV1c2U/DQorCQkJc3RhdGUuY29udGV4dE1vZGVzID0gbmV3IGJ5dGVbc3RhdGUubnVtQmxvY2tUeXBlc1swXV07DQorCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0ZS5udW1CbG9ja1R5cGVzWzBdOyApDQorCQkJew0KKwkJCQkvKiBFbnN1cmUgdGhhdCBsZXNzIHRoYW4gMjU2IGJpdHMgcmVhZCBiZXR3ZWVuIHJlYWRNb3JlSW5wdXQuICovDQorCQkJCWludCBsaW1pdCA9IFN5c3RlbS5NYXRoLk1pbihpICsgOTYsIHN0YXRlLm51bUJsb2NrVHlwZXNbMF0pOw0KKwkJCQlmb3IgKDsgaSA8IGxpbWl0OyArK2kpDQorCQkJCXsNCisJCQkJCXN0YXRlLmNvbnRleHRNb2Rlc1tpXSA9IHVuY2hlY2tlZCgoYnl0ZSkoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCAyKSA8PCAxKSk7DQorCQkJCX0NCisJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRNb3JlSW5wdXQoYnIpOw0KKwkJCX0NCisJCQkvLyBUT0RPOiBSZXVzZT8NCisJCQlzdGF0ZS5jb250ZXh0TWFwID0gbmV3IGJ5dGVbc3RhdGUubnVtQmxvY2tUeXBlc1swXSA8PCBMaXRlcmFsQ29udGV4dEJpdHNdOw0KKwkJCWludCBudW1MaXRlcmFsVHJlZXMgPSBEZWNvZGVDb250ZXh0TWFwKHN0YXRlLm51bUJsb2NrVHlwZXNbMF0gPDwgTGl0ZXJhbENvbnRleHRCaXRzLCBzdGF0ZS5jb250ZXh0TWFwLCBicik7DQorCQkJc3RhdGUudHJpdmlhbExpdGVyYWxDb250ZXh0ID0gdHJ1ZTsNCisJCQlmb3IgKGludCBqID0gMDsgaiA8IHN0YXRlLm51bUJsb2NrVHlwZXNbMF0gPDwgTGl0ZXJhbENvbnRleHRCaXRzOyBqKyspDQorCQkJew0KKwkJCQlpZiAoc3RhdGUuY29udGV4dE1hcFtqXSAhPSBqID4+IExpdGVyYWxDb250ZXh0Qml0cykNCisJCQkJew0KKwkJCQkJc3RhdGUudHJpdmlhbExpdGVyYWxDb250ZXh0ID0gZmFsc2U7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCQkvLyBUT0RPOiBSZXVzZT8NCisJCQlzdGF0ZS5kaXN0Q29udGV4dE1hcCA9IG5ldyBieXRlW3N0YXRlLm51bUJsb2NrVHlwZXNbMl0gPDwgRGlzdGFuY2VDb250ZXh0Qml0c107DQorCQkJaW50IG51bURpc3RUcmVlcyA9IERlY29kZUNvbnRleHRNYXAoc3RhdGUubnVtQmxvY2tUeXBlc1syXSA8PCBEaXN0YW5jZUNvbnRleHRCaXRzLCBzdGF0ZS5kaXN0Q29udGV4dE1hcCwgYnIpOw0KKwkJCU9yZy5Ccm90bGkuRGVjLkh1ZmZtYW5UcmVlR3JvdXAuSW5pdChzdGF0ZS5oR3JvdXAwLCBOdW1MaXRlcmFsQ29kZXMsIG51bUxpdGVyYWxUcmVlcyk7DQorCQkJT3JnLkJyb3RsaS5EZWMuSHVmZm1hblRyZWVHcm91cC5Jbml0KHN0YXRlLmhHcm91cDEsIE51bUluc2VydEFuZENvcHlDb2Rlcywgc3RhdGUubnVtQmxvY2tUeXBlc1sxXSk7DQorCQkJT3JnLkJyb3RsaS5EZWMuSHVmZm1hblRyZWVHcm91cC5Jbml0KHN0YXRlLmhHcm91cDIsIG51bURpc3RhbmNlQ29kZXMsIG51bURpc3RUcmVlcyk7DQorCQkJT3JnLkJyb3RsaS5EZWMuSHVmZm1hblRyZWVHcm91cC5EZWNvZGUoc3RhdGUuaEdyb3VwMCwgYnIpOw0KKwkJCU9yZy5Ccm90bGkuRGVjLkh1ZmZtYW5UcmVlR3JvdXAuRGVjb2RlKHN0YXRlLmhHcm91cDEsIGJyKTsNCisJCQlPcmcuQnJvdGxpLkRlYy5IdWZmbWFuVHJlZUdyb3VwLkRlY29kZShzdGF0ZS5oR3JvdXAyLCBicik7DQorCQkJc3RhdGUuY29udGV4dE1hcFNsaWNlID0gMDsNCisJCQlzdGF0ZS5kaXN0Q29udGV4dE1hcFNsaWNlID0gMDsNCisJCQlzdGF0ZS5jb250ZXh0TG9va3VwT2Zmc2V0MSA9IE9yZy5Ccm90bGkuRGVjLkNvbnRleHQuTG9va3VwT2Zmc2V0c1tzdGF0ZS5jb250ZXh0TW9kZXNbMF1dOw0KKwkJCXN0YXRlLmNvbnRleHRMb29rdXBPZmZzZXQyID0gT3JnLkJyb3RsaS5EZWMuQ29udGV4dC5Mb29rdXBPZmZzZXRzW3N0YXRlLmNvbnRleHRNb2Rlc1swXSArIDFdOw0KKwkJCXN0YXRlLmxpdGVyYWxUcmVlSW5kZXggPSAwOw0KKwkJCXN0YXRlLmxpdGVyYWxUcmVlID0gc3RhdGUuaEdyb3VwMC50cmVlc1swXTsNCisJCQlzdGF0ZS50cmVlQ29tbWFuZE9mZnNldCA9IHN0YXRlLmhHcm91cDEudHJlZXNbMF07DQorCQkJLy8gVE9ETzogPT0gMD8NCisJCQlzdGF0ZS5ibG9ja1R5cGVSYlswXSA9IHN0YXRlLmJsb2NrVHlwZVJiWzJdID0gc3RhdGUuYmxvY2tUeXBlUmJbNF0gPSAxOw0KKwkJCXN0YXRlLmJsb2NrVHlwZVJiWzFdID0gc3RhdGUuYmxvY2tUeXBlUmJbM10gPSBzdGF0ZS5ibG9ja1R5cGVSYls1XSA9IDA7DQorCQl9DQorDQorCQlwcml2YXRlIHN0YXRpYyB2b2lkIENvcHlVbmNvbXByZXNzZWREYXRhKE9yZy5Ccm90bGkuRGVjLlN0YXRlIHN0YXRlKQ0KKwkJew0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBiciA9IHN0YXRlLmJyOw0KKwkJCWJ5dGVbXSByaW5nQnVmZmVyID0gc3RhdGUucmluZ0J1ZmZlcjsNCisJCQkvLyBDb3VsZCBoYXBwZW4gaWYgYmxvY2sgZW5kcyBhdCByaW5nIGJ1ZmZlciBlbmQuDQorCQkJaWYgKHN0YXRlLm1ldGFCbG9ja0xlbmd0aCA8PSAwKQ0KKwkJCXsNCisJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlbG9hZChicik7DQorCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5CbG9ja1N0YXJ0Ow0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCWludCBjaHVua0xlbmd0aCA9IFN5c3RlbS5NYXRoLk1pbihzdGF0ZS5yaW5nQnVmZmVyU2l6ZSAtIHN0YXRlLnBvcywgc3RhdGUubWV0YUJsb2NrTGVuZ3RoKTsNCisJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuQ29weUJ5dGVzKGJyLCByaW5nQnVmZmVyLCBzdGF0ZS5wb3MsIGNodW5rTGVuZ3RoKTsNCisJCQlzdGF0ZS5tZXRhQmxvY2tMZW5ndGggLT0gY2h1bmtMZW5ndGg7DQorCQkJc3RhdGUucG9zICs9IGNodW5rTGVuZ3RoOw0KKwkJCWlmIChzdGF0ZS5wb3MgPT0gc3RhdGUucmluZ0J1ZmZlclNpemUpDQorCQkJew0KKwkJCQlzdGF0ZS5uZXh0UnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkNvcHlVbmNvbXByZXNzZWQ7DQorCQkJCXN0YXRlLmJ5dGVzVG9Xcml0ZSA9IHN0YXRlLnJpbmdCdWZmZXJTaXplOw0KKwkJCQlzdGF0ZS5ieXRlc1dyaXR0ZW4gPSAwOw0KKwkJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuV3JpdGU7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlbG9hZChicik7DQorCQkJc3RhdGUucnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkJsb2NrU3RhcnQ7DQorCQl9DQorDQorCQlwcml2YXRlIHN0YXRpYyBib29sIFdyaXRlUmluZ0J1ZmZlcihPcmcuQnJvdGxpLkRlYy5TdGF0ZSBzdGF0ZSkNCisJCXsNCisJCQkvKiBJZ25vcmUgY3VzdG9tIGRpY3Rpb25hcnkgYnl0ZXMuICovDQorCQkJaWYgKHN0YXRlLmJ5dGVzVG9JZ25vcmUgIT0gMCkNCisJCQl7DQorCQkJCXN0YXRlLmJ5dGVzV3JpdHRlbiArPSBzdGF0ZS5ieXRlc1RvSWdub3JlOw0KKwkJCQlzdGF0ZS5ieXRlc1RvSWdub3JlID0gMDsNCisJCQl9DQorCQkJaW50IHRvV3JpdGUgPSBTeXN0ZW0uTWF0aC5NaW4oc3RhdGUub3V0cHV0TGVuZ3RoIC0gc3RhdGUub3V0cHV0VXNlZCwgc3RhdGUuYnl0ZXNUb1dyaXRlIC0gc3RhdGUuYnl0ZXNXcml0dGVuKTsNCisJCQlpZiAodG9Xcml0ZSAhPSAwKQ0KKwkJCXsNCisJCQkJU3lzdGVtLkFycmF5LkNvcHkoc3RhdGUucmluZ0J1ZmZlciwgc3RhdGUuYnl0ZXNXcml0dGVuLCBzdGF0ZS5vdXRwdXQsIHN0YXRlLm91dHB1dE9mZnNldCArIHN0YXRlLm91dHB1dFVzZWQsIHRvV3JpdGUpOw0KKwkJCQlzdGF0ZS5vdXRwdXRVc2VkICs9IHRvV3JpdGU7DQorCQkJCXN0YXRlLmJ5dGVzV3JpdHRlbiArPSB0b1dyaXRlOw0KKwkJCX0NCisJCQlyZXR1cm4gc3RhdGUub3V0cHV0VXNlZCA8IHN0YXRlLm91dHB1dExlbmd0aDsNCisJCX0NCisNCisJCWludGVybmFsIHN0YXRpYyB2b2lkIFNldEN1c3RvbURpY3Rpb25hcnkoT3JnLkJyb3RsaS5EZWMuU3RhdGUgc3RhdGUsIGJ5dGVbXSBkYXRhKQ0KKwkJew0KKwkJCXN0YXRlLmN1c3RvbURpY3Rpb25hcnkgPSAoZGF0YSA9PSBudWxsKSA/IG5ldyBieXRlWzBdIDogZGF0YTsNCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT5BY3R1YWwgZGVjb21wcmVzcyBpbXBsZW1lbnRhdGlvbi48L3N1bW1hcnk+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBEZWNvbXByZXNzKE9yZy5Ccm90bGkuRGVjLlN0YXRlIHN0YXRlKQ0KKwkJew0KKwkJCWlmIChzdGF0ZS5ydW5uaW5nU3RhdGUgPT0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLlVuaW5pdGlhbGl6ZWQpDQorCQkJew0KKwkJCQl0aHJvdyBuZXcgU3lzdGVtLkludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkNhbid0IGRlY29tcHJlc3MgdW50aWwgaW5pdGlhbGl6ZWQiKTsNCisJCQl9DQorCQkJaWYgKHN0YXRlLnJ1bm5pbmdTdGF0ZSA9PSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ2xvc2VkKQ0KKwkJCXsNCisJCQkJdGhyb3cgbmV3IFN5c3RlbS5JbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJDYW4ndCBkZWNvbXByZXNzIGFmdGVyIGNsb3NlIik7DQorCQkJfQ0KKwkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBiciA9IHN0YXRlLmJyOw0KKwkJCWludCByaW5nQnVmZmVyTWFzayA9IHN0YXRlLnJpbmdCdWZmZXJTaXplIC0gMTsNCisJCQlieXRlW10gcmluZ0J1ZmZlciA9IHN0YXRlLnJpbmdCdWZmZXI7DQorCQkJd2hpbGUgKHN0YXRlLnJ1bm5pbmdTdGF0ZSAhPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuRmluaXNoZWQpDQorCQkJew0KKwkJCQlzd2l0Y2ggKHN0YXRlLnJ1bm5pbmdTdGF0ZSkNCisJCQkJew0KKwkJCQkJY2FzZSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQmxvY2tTdGFydDoNCisJCQkJCXsNCisJCQkJCQkvLyBUT0RPOiBleHRyYWN0IGNhc2VzIHRvIG1ldGhvZHMgZm9yIHRoZSBiZXR0ZXIgcmVhZGFiaWxpdHkuDQorCQkJCQkJaWYgKHN0YXRlLm1ldGFCbG9ja0xlbmd0aCA8IDApDQorCQkJCQkJew0KKwkJCQkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBtZXRhYmxvY2sgbGVuZ3RoIik7DQorCQkJCQkJfQ0KKwkJCQkJCVJlYWRNZXRhYmxvY2tJbmZvKHN0YXRlKTsNCisJCQkJCQkvKiBSaW5nLWJ1ZmZlciB3b3VsZCBiZSByZWFsbG9jYXRlZCBoZXJlLiAqLw0KKwkJCQkJCXJpbmdCdWZmZXJNYXNrID0gc3RhdGUucmluZ0J1ZmZlclNpemUgLSAxOw0KKwkJCQkJCXJpbmdCdWZmZXIgPSBzdGF0ZS5yaW5nQnVmZmVyOw0KKwkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJfQ0KKw0KKwkJCQkJY2FzZSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ29tcHJlc3NlZEJsb2NrU3RhcnQ6DQorCQkJCQl7DQorCQkJCQkJUmVhZE1ldGFibG9ja0h1ZmZtYW5Db2Rlc0FuZENvbnRleHRNYXBzKHN0YXRlKTsNCisJCQkJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuTWFpbkxvb3A7DQorCQkJCQkJZ290byBjYXNlIE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5NYWluTG9vcDsNCisJCQkJCX0NCisNCisJCQkJCWNhc2UgT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLk1haW5Mb29wOg0KKwkJCQkJew0KKwkJCQkJCS8vIEZhbGwgdGhyb3VnaA0KKwkJCQkJCWlmIChzdGF0ZS5tZXRhQmxvY2tMZW5ndGggPD0gMCkNCisJCQkJCQl7DQorCQkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5CbG9ja1N0YXJ0Ow0KKwkJCQkJCQljb250aW51ZTsNCisJCQkJCQl9DQorCQkJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRNb3JlSW5wdXQoYnIpOw0KKwkJCQkJCWlmIChzdGF0ZS5ibG9ja0xlbmd0aFsxXSA9PSAwKQ0KKwkJCQkJCXsNCisJCQkJCQkJRGVjb2RlQ29tbWFuZEJsb2NrU3dpdGNoKHN0YXRlKTsNCisJCQkJCQl9DQorCQkJCQkJc3RhdGUuYmxvY2tMZW5ndGhbMV0tLTsNCisJCQkJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuRmlsbEJpdFdpbmRvdyhicik7DQorCQkJCQkJaW50IGNtZENvZGUgPSBSZWFkU3ltYm9sKHN0YXRlLmhHcm91cDEuY29kZXMsIHN0YXRlLnRyZWVDb21tYW5kT2Zmc2V0LCBicik7DQorCQkJCQkJaW50IHJhbmdlSWR4ID0gKGludCkoKCh1aW50KWNtZENvZGUpID4+IDYpOw0KKwkJCQkJCXN0YXRlLmRpc3RhbmNlQ29kZSA9IDA7DQorCQkJCQkJaWYgKHJhbmdlSWR4ID49IDIpDQorCQkJCQkJew0KKwkJCQkJCQlyYW5nZUlkeCAtPSAyOw0KKwkJCQkJCQlzdGF0ZS5kaXN0YW5jZUNvZGUgPSAtMTsNCisJCQkJCQl9DQorCQkJCQkJaW50IGluc2VydENvZGUgPSBPcmcuQnJvdGxpLkRlYy5QcmVmaXguSW5zZXJ0UmFuZ2VMdXRbcmFuZ2VJZHhdICsgKCgoaW50KSgoKHVpbnQpY21kQ29kZSkgPj4gMykpICYgNyk7DQorCQkJCQkJaW50IGNvcHlDb2RlID0gT3JnLkJyb3RsaS5EZWMuUHJlZml4LkNvcHlSYW5nZUx1dFtyYW5nZUlkeF0gKyAoY21kQ29kZSAmIDcpOw0KKwkJCQkJCXN0YXRlLmluc2VydExlbmd0aCA9IE9yZy5Ccm90bGkuRGVjLlByZWZpeC5JbnNlcnRMZW5ndGhPZmZzZXRbaW5zZXJ0Q29kZV0gKyBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIE9yZy5Ccm90bGkuRGVjLlByZWZpeC5JbnNlcnRMZW5ndGhOQml0c1tpbnNlcnRDb2RlXSk7DQorCQkJCQkJc3RhdGUuY29weUxlbmd0aCA9IE9yZy5Ccm90bGkuRGVjLlByZWZpeC5Db3B5TGVuZ3RoT2Zmc2V0W2NvcHlDb2RlXSArIE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgT3JnLkJyb3RsaS5EZWMuUHJlZml4LkNvcHlMZW5ndGhOQml0c1tjb3B5Q29kZV0pOw0KKwkJCQkJCXN0YXRlLmogPSAwOw0KKwkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5JbnNlcnRMb29wOw0KKwkJCQkJCWdvdG8gY2FzZSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuSW5zZXJ0TG9vcDsNCisJCQkJCX0NCisNCisJCQkJCWNhc2UgT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkluc2VydExvb3A6DQorCQkJCQl7DQorCQkJCQkJLy8gRmFsbCB0aHJvdWdoDQorCQkJCQkJaWYgKHN0YXRlLnRyaXZpYWxMaXRlcmFsQ29udGV4dCkNCisJCQkJCQl7DQorCQkJCQkJCXdoaWxlIChzdGF0ZS5qIDwgc3RhdGUuaW5zZXJ0TGVuZ3RoKQ0KKwkJCQkJCQl7DQorCQkJCQkJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZE1vcmVJbnB1dChicik7DQorCQkJCQkJCQlpZiAoc3RhdGUuYmxvY2tMZW5ndGhbMF0gPT0gMCkNCisJCQkJCQkJCXsNCisJCQkJCQkJCQlEZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2goc3RhdGUpOw0KKwkJCQkJCQkJfQ0KKwkJCQkJCQkJc3RhdGUuYmxvY2tMZW5ndGhbMF0tLTsNCisJCQkJCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5GaWxsQml0V2luZG93KGJyKTsNCisJCQkJCQkJCXJpbmdCdWZmZXJbc3RhdGUucG9zXSA9IHVuY2hlY2tlZCgoYnl0ZSlSZWFkU3ltYm9sKHN0YXRlLmhHcm91cDAuY29kZXMsIHN0YXRlLmxpdGVyYWxUcmVlLCBicikpOw0KKwkJCQkJCQkJc3RhdGUuaisrOw0KKwkJCQkJCQkJaWYgKHN0YXRlLnBvcysrID09IHJpbmdCdWZmZXJNYXNrKQ0KKwkJCQkJCQkJew0KKwkJCQkJCQkJCXN0YXRlLm5leHRSdW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuSW5zZXJ0TG9vcDsNCisJCQkJCQkJCQlzdGF0ZS5ieXRlc1RvV3JpdGUgPSBzdGF0ZS5yaW5nQnVmZmVyU2l6ZTsNCisJCQkJCQkJCQlzdGF0ZS5ieXRlc1dyaXR0ZW4gPSAwOw0KKwkJCQkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5Xcml0ZTsNCisJCQkJCQkJCQlicmVhazsNCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCQllbHNlDQorCQkJCQkJew0KKwkJCQkJCQlpbnQgcHJldkJ5dGUxID0gcmluZ0J1ZmZlclsoc3RhdGUucG9zIC0gMSkgJiByaW5nQnVmZmVyTWFza10gJiB1bmNoZWNrZWQoKGludCkoMHhGRikpOw0KKwkJCQkJCQlpbnQgcHJldkJ5dGUyID0gcmluZ0J1ZmZlclsoc3RhdGUucG9zIC0gMikgJiByaW5nQnVmZmVyTWFza10gJiB1bmNoZWNrZWQoKGludCkoMHhGRikpOw0KKwkJCQkJCQl3aGlsZSAoc3RhdGUuaiA8IHN0YXRlLmluc2VydExlbmd0aCkNCisJCQkJCQkJew0KKwkJCQkJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRNb3JlSW5wdXQoYnIpOw0KKwkJCQkJCQkJaWYgKHN0YXRlLmJsb2NrTGVuZ3RoWzBdID09IDApDQorCQkJCQkJCQl7DQorCQkJCQkJCQkJRGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKHN0YXRlKTsNCisJCQkJCQkJCX0NCisJCQkJCQkJCWludCBsaXRlcmFsVHJlZUluZGV4ID0gc3RhdGUuY29udGV4dE1hcFtzdGF0ZS5jb250ZXh0TWFwU2xpY2UgKyAoT3JnLkJyb3RsaS5EZWMuQ29udGV4dC5Mb29rdXBbc3RhdGUuY29udGV4dExvb2t1cE9mZnNldDEgKyBwcmV2Qnl0ZTFdIHwgT3JnLkJyb3RsaS5EZWMuQ29udGV4dC5Mb29rdXBbc3RhdGUuY29udGV4dExvb2t1cE9mZnNldDIgKyBwcmV2Qnl0ZTJdKV0gJiB1bmNoZWNrZWQoKGludCkoMHhGRikpOw0KKwkJCQkJCQkJc3RhdGUuYmxvY2tMZW5ndGhbMF0tLTsNCisJCQkJCQkJCXByZXZCeXRlMiA9IHByZXZCeXRlMTsNCisJCQkJCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5GaWxsQml0V2luZG93KGJyKTsNCisJCQkJCQkJCXByZXZCeXRlMSA9IFJlYWRTeW1ib2woc3RhdGUuaEdyb3VwMC5jb2Rlcywgc3RhdGUuaEdyb3VwMC50cmVlc1tsaXRlcmFsVHJlZUluZGV4XSwgYnIpOw0KKwkJCQkJCQkJcmluZ0J1ZmZlcltzdGF0ZS5wb3NdID0gdW5jaGVja2VkKChieXRlKXByZXZCeXRlMSk7DQorCQkJCQkJCQlzdGF0ZS5qKys7DQorCQkJCQkJCQlpZiAoc3RhdGUucG9zKysgPT0gcmluZ0J1ZmZlck1hc2spDQorCQkJCQkJCQl7DQorCQkJCQkJCQkJc3RhdGUubmV4dFJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5JbnNlcnRMb29wOw0KKwkJCQkJCQkJCXN0YXRlLmJ5dGVzVG9Xcml0ZSA9IHN0YXRlLnJpbmdCdWZmZXJTaXplOw0KKwkJCQkJCQkJCXN0YXRlLmJ5dGVzV3JpdHRlbiA9IDA7DQorCQkJCQkJCQkJc3RhdGUucnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLldyaXRlOw0KKwkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJCWlmIChzdGF0ZS5ydW5uaW5nU3RhdGUgIT0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkluc2VydExvb3ApDQorCQkJCQkJew0KKwkJCQkJCQljb250aW51ZTsNCisJCQkJCQl9DQorCQkJCQkJc3RhdGUubWV0YUJsb2NrTGVuZ3RoIC09IHN0YXRlLmluc2VydExlbmd0aDsNCisJCQkJCQlpZiAoc3RhdGUubWV0YUJsb2NrTGVuZ3RoIDw9IDApDQorCQkJCQkJew0KKwkJCQkJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuTWFpbkxvb3A7DQorCQkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJCX0NCisJCQkJCQlpZiAoc3RhdGUuZGlzdGFuY2VDb2RlIDwgMCkNCisJCQkJCQl7DQorCQkJCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkTW9yZUlucHV0KGJyKTsNCisJCQkJCQkJaWYgKHN0YXRlLmJsb2NrTGVuZ3RoWzJdID09IDApDQorCQkJCQkJCXsNCisJCQkJCQkJCURlY29kZURpc3RhbmNlQmxvY2tTd2l0Y2goc3RhdGUpOw0KKwkJCQkJCQl9DQorCQkJCQkJCXN0YXRlLmJsb2NrTGVuZ3RoWzJdLS07DQorCQkJCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5GaWxsQml0V2luZG93KGJyKTsNCisJCQkJCQkJc3RhdGUuZGlzdGFuY2VDb2RlID0gUmVhZFN5bWJvbChzdGF0ZS5oR3JvdXAyLmNvZGVzLCBzdGF0ZS5oR3JvdXAyLnRyZWVzW3N0YXRlLmRpc3RDb250ZXh0TWFwW3N0YXRlLmRpc3RDb250ZXh0TWFwU2xpY2UgKyAoc3RhdGUuY29weUxlbmd0aCA+IDQgPyAzIDogc3RhdGUuY29weUxlbmd0aCAtIDIpXSAmIHVuY2hlY2tlZCgoaW50KSgweEZGKSldLCBicik7DQorCQkJCQkJCWlmIChzdGF0ZS5kaXN0YW5jZUNvZGUgPj0gc3RhdGUubnVtRGlyZWN0RGlzdGFuY2VDb2RlcykNCisJCQkJCQkJew0KKwkJCQkJCQkJc3RhdGUuZGlzdGFuY2VDb2RlIC09IHN0YXRlLm51bURpcmVjdERpc3RhbmNlQ29kZXM7DQorCQkJCQkJCQlpbnQgcG9zdGZpeCA9IHN0YXRlLmRpc3RhbmNlQ29kZSAmIHN0YXRlLmRpc3RhbmNlUG9zdGZpeE1hc2s7DQorCQkJCQkJCQlzdGF0ZS5kaXN0YW5jZUNvZGUgPSAoaW50KSgoKHVpbnQpc3RhdGUuZGlzdGFuY2VDb2RlKSA+PiBzdGF0ZS5kaXN0YW5jZVBvc3RmaXhCaXRzKTsNCisJCQkJCQkJCWludCBuID0gKChpbnQpKCgodWludClzdGF0ZS5kaXN0YW5jZUNvZGUpID4+IDEpKSArIDE7DQorCQkJCQkJCQlpbnQgb2Zmc2V0ID0gKCgyICsgKHN0YXRlLmRpc3RhbmNlQ29kZSAmIDEpKSA8PCBuKSAtIDQ7DQorCQkJCQkJCQlzdGF0ZS5kaXN0YW5jZUNvZGUgPSBzdGF0ZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzICsgcG9zdGZpeCArICgob2Zmc2V0ICsgT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCBuKSkgPDwgc3RhdGUuZGlzdGFuY2VQb3N0Zml4Qml0cyk7DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQkJLy8gQ29udmVydCB0aGUgZGlzdGFuY2UgY29kZSB0byB0aGUgYWN0dWFsIGRpc3RhbmNlIGJ5IHBvc3NpYmx5IGxvb2tpbmcgdXAgcGFzdCBkaXN0YW5jZXMNCisJCQkJCQkvLyBmcm9tIHRoZSByaW5nQnVmZmVyLg0KKwkJCQkJCXN0YXRlLmRpc3RhbmNlID0gVHJhbnNsYXRlU2hvcnRDb2RlcyhzdGF0ZS5kaXN0YW5jZUNvZGUsIHN0YXRlLmRpc3RSYiwgc3RhdGUuZGlzdFJiSWR4KTsNCisJCQkJCQlpZiAoc3RhdGUuZGlzdGFuY2UgPCAwKQ0KKwkJCQkJCXsNCisJCQkJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIk5lZ2F0aXZlIGRpc3RhbmNlIik7DQorCQkJCQkJfQ0KKwkJCQkJCS8vIENPVl9ORl9MSU5FDQorCQkJCQkJaWYgKHN0YXRlLm1heERpc3RhbmNlICE9IHN0YXRlLm1heEJhY2t3YXJkRGlzdGFuY2UgJiYgc3RhdGUucG9zIDwgc3RhdGUubWF4QmFja3dhcmREaXN0YW5jZSkNCisJCQkJCQl7DQorCQkJCQkJCXN0YXRlLm1heERpc3RhbmNlID0gc3RhdGUucG9zOw0KKwkJCQkJCX0NCisJCQkJCQllbHNlDQorCQkJCQkJew0KKwkJCQkJCQlzdGF0ZS5tYXhEaXN0YW5jZSA9IHN0YXRlLm1heEJhY2t3YXJkRGlzdGFuY2U7DQorCQkJCQkJfQ0KKwkJCQkJCXN0YXRlLmNvcHlEc3QgPSBzdGF0ZS5wb3M7DQorCQkJCQkJaWYgKHN0YXRlLmRpc3RhbmNlID4gc3RhdGUubWF4RGlzdGFuY2UpDQorCQkJCQkJew0KKwkJCQkJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuVHJhbnNmb3JtOw0KKwkJCQkJCQljb250aW51ZTsNCisJCQkJCQl9DQorCQkJCQkJaWYgKHN0YXRlLmRpc3RhbmNlQ29kZSA+IDApDQorCQkJCQkJew0KKwkJCQkJCQlzdGF0ZS5kaXN0UmJbc3RhdGUuZGlzdFJiSWR4ICYgM10gPSBzdGF0ZS5kaXN0YW5jZTsNCisJCQkJCQkJc3RhdGUuZGlzdFJiSWR4Kys7DQorCQkJCQkJfQ0KKwkJCQkJCWlmIChzdGF0ZS5jb3B5TGVuZ3RoID4gc3RhdGUubWV0YUJsb2NrTGVuZ3RoKQ0KKwkJCQkJCXsNCisJCQkJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlIik7DQorCQkJCQkJfQ0KKwkJCQkJCS8vIENPVl9ORl9MSU5FDQorCQkJCQkJc3RhdGUuaiA9IDA7DQorCQkJCQkJc3RhdGUucnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkNvcHlMb29wOw0KKwkJCQkJCWdvdG8gY2FzZSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ29weUxvb3A7DQorCQkJCQl9DQorDQorCQkJCQljYXNlIE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5Db3B5TG9vcDoNCisJCQkJCXsNCisJCQkJCQkvLyBmYWxsIHRocm91Z2gNCisJCQkJCQlpbnQgc3JjID0gKHN0YXRlLnBvcyAtIHN0YXRlLmRpc3RhbmNlKSAmIHJpbmdCdWZmZXJNYXNrOw0KKwkJCQkJCWludCBkc3QgPSBzdGF0ZS5wb3M7DQorCQkJCQkJaW50IGNvcHlMZW5ndGggPSBzdGF0ZS5jb3B5TGVuZ3RoIC0gc3RhdGUuajsNCisJCQkJCQlpZiAoKHNyYyArIGNvcHlMZW5ndGggPCByaW5nQnVmZmVyTWFzaykgJiYgKGRzdCArIGNvcHlMZW5ndGggPCByaW5nQnVmZmVyTWFzaykpDQorCQkJCQkJew0KKwkJCQkJCQlmb3IgKGludCBrID0gMDsgayA8IGNvcHlMZW5ndGg7ICsraykNCisJCQkJCQkJew0KKwkJCQkJCQkJcmluZ0J1ZmZlcltkc3QrK10gPSByaW5nQnVmZmVyW3NyYysrXTsNCisJCQkJCQkJfQ0KKwkJCQkJCQlzdGF0ZS5qICs9IGNvcHlMZW5ndGg7DQorCQkJCQkJCXN0YXRlLm1ldGFCbG9ja0xlbmd0aCAtPSBjb3B5TGVuZ3RoOw0KKwkJCQkJCQlzdGF0ZS5wb3MgKz0gY29weUxlbmd0aDsNCisJCQkJCQl9DQorCQkJCQkJZWxzZQ0KKwkJCQkJCXsNCisJCQkJCQkJZm9yICg7IHN0YXRlLmogPCBzdGF0ZS5jb3B5TGVuZ3RoOyApDQorCQkJCQkJCXsNCisJCQkJCQkJCXJpbmdCdWZmZXJbc3RhdGUucG9zXSA9IHJpbmdCdWZmZXJbKHN0YXRlLnBvcyAtIHN0YXRlLmRpc3RhbmNlKSAmIHJpbmdCdWZmZXJNYXNrXTsNCisJCQkJCQkJCXN0YXRlLm1ldGFCbG9ja0xlbmd0aC0tOw0KKwkJCQkJCQkJc3RhdGUuaisrOw0KKwkJCQkJCQkJaWYgKHN0YXRlLnBvcysrID09IHJpbmdCdWZmZXJNYXNrKQ0KKwkJCQkJCQkJew0KKwkJCQkJCQkJCXN0YXRlLm5leHRSdW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ29weUxvb3A7DQorCQkJCQkJCQkJc3RhdGUuYnl0ZXNUb1dyaXRlID0gc3RhdGUucmluZ0J1ZmZlclNpemU7DQorCQkJCQkJCQkJc3RhdGUuYnl0ZXNXcml0dGVuID0gMDsNCisJCQkJCQkJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuV3JpdGU7DQorCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQl9DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQkJaWYgKHN0YXRlLnJ1bm5pbmdTdGF0ZSA9PSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ29weUxvb3ApDQorCQkJCQkJew0KKwkJCQkJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuTWFpbkxvb3A7DQorCQkJCQkJfQ0KKwkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJfQ0KKw0KKwkJCQkJY2FzZSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuVHJhbnNmb3JtOg0KKwkJCQkJew0KKwkJCQkJCWlmIChzdGF0ZS5jb3B5TGVuZ3RoID49IE9yZy5Ccm90bGkuRGVjLkRpY3Rpb25hcnkuTWluV29yZExlbmd0aCAmJiBzdGF0ZS5jb3B5TGVuZ3RoIDw9IE9yZy5Ccm90bGkuRGVjLkRpY3Rpb25hcnkuTWF4V29yZExlbmd0aCkNCisJCQkJCQl7DQorCQkJCQkJCWludCBvZmZzZXQgPSBPcmcuQnJvdGxpLkRlYy5EaWN0aW9uYXJ5Lk9mZnNldHNCeUxlbmd0aFtzdGF0ZS5jb3B5TGVuZ3RoXTsNCisJCQkJCQkJaW50IHdvcmRJZCA9IHN0YXRlLmRpc3RhbmNlIC0gc3RhdGUubWF4RGlzdGFuY2UgLSAxOw0KKwkJCQkJCQlpbnQgc2hpZnQgPSBPcmcuQnJvdGxpLkRlYy5EaWN0aW9uYXJ5LlNpemVCaXRzQnlMZW5ndGhbc3RhdGUuY29weUxlbmd0aF07DQorCQkJCQkJCWludCBtYXNrID0gKDEgPDwgc2hpZnQpIC0gMTsNCisJCQkJCQkJaW50IHdvcmRJZHggPSB3b3JkSWQgJiBtYXNrOw0KKwkJCQkJCQlpbnQgdHJhbnNmb3JtSWR4ID0gKGludCkoKCh1aW50KXdvcmRJZCkgPj4gc2hpZnQpOw0KKwkJCQkJCQlvZmZzZXQgKz0gd29yZElkeCAqIHN0YXRlLmNvcHlMZW5ndGg7DQorCQkJCQkJCWlmICh0cmFuc2Zvcm1JZHggPCBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0uVHJhbnNmb3Jtcy5MZW5ndGgpDQorCQkJCQkJCXsNCisJCQkJCQkJCWludCBsZW4gPSBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0uVHJhbnNmb3JtRGljdGlvbmFyeVdvcmQocmluZ0J1ZmZlciwgc3RhdGUuY29weURzdCwgT3JnLkJyb3RsaS5EZWMuRGljdGlvbmFyeS5HZXREYXRhKCksIG9mZnNldCwgc3RhdGUuY29weUxlbmd0aCwgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtLlRyYW5zZm9ybXNbdHJhbnNmb3JtSWR4XSk7DQorCQkJCQkJCQlzdGF0ZS5jb3B5RHN0ICs9IGxlbjsNCisJCQkJCQkJCXN0YXRlLnBvcyArPSBsZW47DQorCQkJCQkJCQlzdGF0ZS5tZXRhQmxvY2tMZW5ndGggLT0gbGVuOw0KKwkJCQkJCQkJaWYgKHN0YXRlLmNvcHlEc3QgPj0gc3RhdGUucmluZ0J1ZmZlclNpemUpDQorCQkJCQkJCQl7DQorCQkJCQkJCQkJc3RhdGUubmV4dFJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5Db3B5V3JhcEJ1ZmZlcjsNCisJCQkJCQkJCQlzdGF0ZS5ieXRlc1RvV3JpdGUgPSBzdGF0ZS5yaW5nQnVmZmVyU2l6ZTsNCisJCQkJCQkJCQlzdGF0ZS5ieXRlc1dyaXR0ZW4gPSAwOw0KKwkJCQkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5Xcml0ZTsNCisJCQkJCQkJCQljb250aW51ZTsNCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCQllbHNlDQorCQkJCQkJCXsNCisJCQkJCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSIpOw0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJCWVsc2UNCisJCQkJCQl7DQorCQkJCQkJCS8vIENPVl9ORl9MSU5FDQorCQkJCQkJCXRocm93IG5ldyBPcmcuQnJvdGxpLkRlYy5Ccm90bGlSdW50aW1lRXhjZXB0aW9uKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSIpOw0KKwkJCQkJCX0NCisJCQkJCQkvLyBDT1ZfTkZfTElORQ0KKwkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5NYWluTG9vcDsNCisJCQkJCQljb250aW51ZTsNCisJCQkJCX0NCisNCisJCQkJCWNhc2UgT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLkNvcHlXcmFwQnVmZmVyOg0KKwkJCQkJew0KKwkJCQkJCVN5c3RlbS5BcnJheS5Db3B5KHJpbmdCdWZmZXIsIHN0YXRlLnJpbmdCdWZmZXJTaXplLCByaW5nQnVmZmVyLCAwLCBzdGF0ZS5jb3B5RHN0IC0gc3RhdGUucmluZ0J1ZmZlclNpemUpOw0KKwkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5NYWluTG9vcDsNCisJCQkJCQljb250aW51ZTsNCisJCQkJCX0NCisNCisJCQkJCWNhc2UgT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLlJlYWRNZXRhZGF0YToNCisJCQkJCXsNCisJCQkJCQl3aGlsZSAoc3RhdGUubWV0YUJsb2NrTGVuZ3RoID4gMCkNCisJCQkJCQl7DQorCQkJCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkTW9yZUlucHV0KGJyKTsNCisJCQkJCQkJLy8gT3B0aW1pemUNCisJCQkJCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCA4KTsNCisJCQkJCQkJc3RhdGUubWV0YUJsb2NrTGVuZ3RoLS07DQorCQkJCQkJfQ0KKwkJCQkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5CbG9ja1N0YXJ0Ow0KKwkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJfQ0KKw0KKwkJCQkJY2FzZSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQ29weVVuY29tcHJlc3NlZDoNCisJCQkJCXsNCisJCQkJCQlDb3B5VW5jb21wcmVzc2VkRGF0YShzdGF0ZSk7DQorCQkJCQkJY29udGludWU7DQorCQkJCQl9DQorDQorCQkJCQljYXNlIE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5Xcml0ZToNCisJCQkJCXsNCisJCQkJCQlpZiAoIVdyaXRlUmluZ0J1ZmZlcihzdGF0ZSkpDQorCQkJCQkJew0KKwkJCQkJCQkvLyBPdXRwdXQgYnVmZmVyIGlzIGZ1bGwuDQorCQkJCQkJCXJldHVybjsNCisJCQkJCQl9DQorCQkJCQkJaWYgKHN0YXRlLnBvcyA+PSBzdGF0ZS5tYXhCYWNrd2FyZERpc3RhbmNlKQ0KKwkJCQkJCXsNCisJCQkJCQkJc3RhdGUubWF4RGlzdGFuY2UgPSBzdGF0ZS5tYXhCYWNrd2FyZERpc3RhbmNlOw0KKwkJCQkJCX0NCisJCQkJCQlzdGF0ZS5wb3MgJj0gcmluZ0J1ZmZlck1hc2s7DQorCQkJCQkJc3RhdGUucnVubmluZ1N0YXRlID0gc3RhdGUubmV4dFJ1bm5pbmdTdGF0ZTsNCisJCQkJCQljb250aW51ZTsNCisJCQkJCX0NCisNCisJCQkJCWRlZmF1bHQ6DQorCQkJCQl7DQorCQkJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIlVuZXhwZWN0ZWQgc3RhdGUgIiArIHN0YXRlLnJ1bm5pbmdTdGF0ZSk7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQkJaWYgKHN0YXRlLnJ1bm5pbmdTdGF0ZSA9PSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuRmluaXNoZWQpDQorCQkJew0KKwkJCQlpZiAoc3RhdGUubWV0YUJsb2NrTGVuZ3RoIDwgMCkNCisJCQkJew0KKwkJCQkJdGhyb3cgbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgbWV0YWJsb2NrIGxlbmd0aCIpOw0KKwkJCQl9DQorCQkJCU9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5KdW1wVG9CeXRlQm91bmRhcnkoYnIpOw0KKwkJCQlPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuQ2hlY2tIZWFsdGgoc3RhdGUuYnIsIHRydWUpOw0KKwkJCX0NCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0RlY29kZVRlc3QuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0RlY29kZVRlc3QuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZmYWQ4YwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvRGVjb2RlVGVzdC5jcwpAQCAtMCwwICsxLDE3MSBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisNCitEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4NCitTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KKyovDQorbmFtZXNwYWNlIE9yZy5Ccm90bGkuRGVjDQorew0KKwkvLy8gPHN1bW1hcnk+DQorCS8vLyBUZXN0cyBmb3INCisJLy8vIDxzZWUgY3JlZj0iRGVjb2RlIi8+DQorCS8vLyAuDQorCS8vLyA8L3N1bW1hcnk+DQorCXB1YmxpYyBjbGFzcyBEZWNvZGVUZXN0DQorCXsNCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiIvPg0KKwkJcHJpdmF0ZSBieXRlW10gRGVjb21wcmVzcyhieXRlW10gZGF0YSwgYm9vbCBieUJ5dGUpDQorCQl7DQorCQkJYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWzY1NTM2XTsNCisJCQlTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtIGlucHV0ID0gbmV3IFN5c3RlbS5JTy5NZW1vcnlTdHJlYW0oZGF0YSk7DQorCQkJU3lzdGVtLklPLk1lbW9yeVN0cmVhbSBvdXRwdXQgPSBuZXcgU3lzdGVtLklPLk1lbW9yeVN0cmVhbSgpOw0KKwkJCU9yZy5Ccm90bGkuRGVjLkJyb3RsaUlucHV0U3RyZWFtIGJyb3RsaUlucHV0ID0gbmV3IE9yZy5Ccm90bGkuRGVjLkJyb3RsaUlucHV0U3RyZWFtKGlucHV0KTsNCisJCQlpZiAoYnlCeXRlKQ0KKwkJCXsNCisJCQkJYnl0ZVtdIG9uZUJ5dGUgPSBuZXcgYnl0ZVsxXTsNCisJCQkJd2hpbGUgKHRydWUpDQorCQkJCXsNCisJCQkJCWludCBuZXh0ID0gYnJvdGxpSW5wdXQuUmVhZEJ5dGUoKTsNCisJCQkJCWlmIChuZXh0ID09IC0xKQ0KKwkJCQkJew0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJfQ0KKwkJCQkJb25lQnl0ZVswXSA9IHVuY2hlY2tlZCgoYnl0ZSluZXh0KTsNCisJCQkJCW91dHB1dC5Xcml0ZShvbmVCeXRlLCAwLCAxKTsNCisJCQkJfQ0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQl3aGlsZSAodHJ1ZSkNCisJCQkJew0KKwkJCQkJaW50IGxlbiA9IGJyb3RsaUlucHV0LlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsNCisJCQkJCWlmIChsZW4gPD0gMCkNCisJCQkJCXsNCisJCQkJCQlicmVhazsNCisJCQkJCX0NCisJCQkJCW91dHB1dC5Xcml0ZShidWZmZXIsIDAsIGxlbik7DQorCQkJCX0NCisJCQl9DQorCQkJYnJvdGxpSW5wdXQuQ2xvc2UoKTsNCisJCQlyZXR1cm4gb3V0cHV0LlRvQXJyYXkoKTsNCisJCX0NCisNCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiIvPg0KKwkJcHJpdmF0ZSBieXRlW10gRGVjb21wcmVzc1dpdGhEaWN0aW9uYXJ5KGJ5dGVbXSBkYXRhLCBieXRlW10gZGljdGlvbmFyeSkNCisJCXsNCisJCQlieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbNjU1MzZdOw0KKwkJCVN5c3RlbS5JTy5NZW1vcnlTdHJlYW0gaW5wdXQgPSBuZXcgU3lzdGVtLklPLk1lbW9yeVN0cmVhbShkYXRhKTsNCisJCQlTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtIG91dHB1dCA9IG5ldyBTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtKCk7DQorCQkJT3JnLkJyb3RsaS5EZWMuQnJvdGxpSW5wdXRTdHJlYW0gYnJvdGxpSW5wdXQgPSBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpSW5wdXRTdHJlYW0oaW5wdXQsIE9yZy5Ccm90bGkuRGVjLkJyb3RsaUlucHV0U3RyZWFtLkRlZmF1bHRJbnRlcm5hbEJ1ZmZlclNpemUsIGRpY3Rpb25hcnkpOw0KKwkJCXdoaWxlICh0cnVlKQ0KKwkJCXsNCisJCQkJaW50IGxlbiA9IGJyb3RsaUlucHV0LlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsNCisJCQkJaWYgKGxlbiA8PSAwKQ0KKwkJCQl7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCQlvdXRwdXQuV3JpdGUoYnVmZmVyLCAwLCBsZW4pOw0KKwkJCX0NCisJCQlicm90bGlJbnB1dC5DbG9zZSgpOw0KKwkJCXJldHVybiBvdXRwdXQuVG9BcnJheSgpOw0KKwkJfQ0KKw0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlwcml2YXRlIHZvaWQgQ2hlY2tEZWNvZGVSZXNvdXJjZVdpdGhEaWN0aW9uYXJ5KHN0cmluZyBleHBlY3RlZCwgc3RyaW5nIGNvbXByZXNzZWQsIHN0cmluZyBkaWN0aW9uYXJ5KQ0KKwkJew0KKwkJCWJ5dGVbXSBleHBlY3RlZEJ5dGVzID0gT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtLlJlYWRVbmlCeXRlcyhleHBlY3RlZCk7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWRCeXRlcyA9IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybS5SZWFkVW5pQnl0ZXMoY29tcHJlc3NlZCk7DQorCQkJYnl0ZVtdIGRpY3Rpb25hcnlCeXRlcyA9IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybS5SZWFkVW5pQnl0ZXMoZGljdGlvbmFyeSk7DQorCQkJYnl0ZVtdIGFjdHVhbCA9IERlY29tcHJlc3NXaXRoRGljdGlvbmFyeShjb21wcmVzc2VkQnl0ZXMsIGRpY3Rpb25hcnlCeXRlcyk7DQorCQkJTlVuaXQuRnJhbWV3b3JrLkFzc2VydC5BcmVFcXVhbChleHBlY3RlZEJ5dGVzLCBhY3R1YWwpOw0KKwkJfQ0KKw0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlwcml2YXRlIHZvaWQgQ2hlY2tEZWNvZGVSZXNvdXJjZShzdHJpbmcgZXhwZWN0ZWQsIHN0cmluZyBjb21wcmVzc2VkKQ0KKwkJew0KKwkJCWJ5dGVbXSBleHBlY3RlZEJ5dGVzID0gT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtLlJlYWRVbmlCeXRlcyhleHBlY3RlZCk7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWRCeXRlcyA9IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybS5SZWFkVW5pQnl0ZXMoY29tcHJlc3NlZCk7DQorCQkJYnl0ZVtdIGFjdHVhbCA9IERlY29tcHJlc3MoY29tcHJlc3NlZEJ5dGVzLCBmYWxzZSk7DQorCQkJTlVuaXQuRnJhbWV3b3JrLkFzc2VydC5BcmVFcXVhbChleHBlY3RlZEJ5dGVzLCBhY3R1YWwpOw0KKwkJCWJ5dGVbXSBhY3R1YWxCeUJ5dGUgPSBEZWNvbXByZXNzKGNvbXByZXNzZWRCeXRlcywgdHJ1ZSk7DQorCQkJTlVuaXQuRnJhbWV3b3JrLkFzc2VydC5BcmVFcXVhbChleHBlY3RlZEJ5dGVzLCBhY3R1YWxCeUJ5dGUpOw0KKwkJfQ0KKw0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RFbXB0eSgpDQorCQl7DQorCQkJQ2hlY2tEZWNvZGVSZXNvdXJjZShzdHJpbmcuRW1wdHksICJcdTAwMDYiKTsNCisJCX0NCisNCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiIvPg0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0WCgpDQorCQl7DQorCQkJQ2hlY2tEZWNvZGVSZXNvdXJjZSgiWCIsICJcdTAwMEJcdTAwMDBcdTAwODBYXHUwMDAzIik7DQorCQl9DQorDQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iLz4NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdFgxMFkxMCgpDQorCQl7DQorCQkJQ2hlY2tEZWNvZGVSZXNvdXJjZSgiWFhYWFhYWFhYWFlZWVlZWVlZWVkiLCAiXHUwMDFCXHUwMDEzXHUwMDAwXHUwMDAwXHUwMEE0XHUwMEIwXHUwMEIyXHUwMEVBXHUwMDgxR1x1MDAwMlx1MDA4QSIpOw0KKwkJfQ0KKw0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RYNjQoKQ0KKwkJew0KKwkJCUNoZWNrRGVjb2RlUmVzb3VyY2UoIlhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgiLCAiXHUwMDFCXHUwMDNGXHUwMDAwXHUwMDAwJFx1MDBCMFx1MDBFMlx1MDA5OVx1MDA4MFx1MDAxMiIpOw0KKwkJfQ0KKw0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RVa2tvbm9vYSgpDQorCQl7DQorCQkJQ2hlY2tEZWNvZGVSZXNvdXJjZSgidWtrbyBub29hLCB1a2tvIG5vb2Egb2xpIGt1bm5vbiBtaWVzLCBrdW4gaGFuIG1lbmkgc2F1bmFhbiwgIiArICJwaXN0aSBsYXVrdW4gbmF1bGFhbiwgdWtrbyBub29hLCB1a2tvIG5vb2Egb2xpIGt1bm5vbiBtaWVzLiIsICJcdTAwMUJ2XHUwMDAwXHUwMDAwXHUwMDE0Slx1MDBBQ1x1MDA5QnpcdTAwQkRcdTAwRTFcdTAwOTdcdTAwOURcdTAwN0ZcdTAwOEVcdTAwQzJcdTAwODIiICsgIjZcdTAwMEVcdTAwOUNcdTAwRTBcdTAwOTBcdTAwMDNcdTAwRjdcdTAwOEJcdTAwOUU4XHUwMEU2XHUwMEI2XHUwMDAwXHUwMEFCXHUwMEMzXHUwMENBIg0KKwkJCQkgKyAiXHUwMEEwXHUwMEMyXHUwMERBZjZcdTAwRENcdTAwQ0RcdTAwODBcdTAwOEQuIVx1MDBEN25cdTAwRTNcdTAwRUFMXHUwMEI4XHUwMEYwXHUwMEQyIiArICJcdTAwQjhcdTAwQzdcdTAwQzJwTTpcdTAwRjBpflx1MDBBMVx1MDBCOEVzXHUwMEFCXHUwMEM0V1x1MDAxRSIpOw0KKwkJfQ0KKw0KKwkJLy8vIDxleGNlcHRpb24gY3JlZj0iU3lzdGVtLklPLklPRXhjZXB0aW9uIi8+DQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RNb25rZXkoKQ0KKwkJew0KKwkJCUNoZWNrRGVjb2RlUmVzb3VyY2UoInpueGN2bm16LHh2bm0uLHp4Y252Lix4Y24ueix2bi56dm4uenhjdm4uLHp4Y24udm4udix6bm0uLHZuenguLHZuenhjLnZuLnosdm56Lixudi56LG52bXoiICsgInhjLG52enhjdmNubS4sdmN6eHZuenhjbnZteGMuem1jbnZ6bS4sbnZtYyxuenhtYyx2bi5tbm5tenhjLHZueGNubXYsem52enhjbm12LC54Y252bSx6eGMiICsgIm56eHYuengscXdlcnl3ZXVycWlvd2V1cHJvcHF3dXRpb3dldXBxcmlvd2V1dGlvcHdldXJpb3B3ZXVyaW9wcXd1cmlvcHV0aW9wcXd1cmlvd3VxZXJpb3UiDQorCQkJCSArICJwcXdlcm9wdXdlcm9wcXd1cndldXFyaW9wdXJvcHF3dXJpb3B1cXdyaW9wdXF3ZW9wcnVpb3F3ZXVycXdldXJpb3Vxd2VvcHJ1aW91cHFpeXRpb3F0eWlvIiArICJ3dHlxcHR5cHJ5b3F3ZXV0aW9pb3F0d2VxcnVvd3FleXRpb3dxdWlvdXJvd2V0eW9xd3VwaW90d2V1cWlvcndldXFyb2lwaXR1cXdpb3Jxd3Rpb3dldXJpIiArICJvdXl0dWlvZXJ5dHVpb3dlcnl1aXRvd2V5dHVpd2V5dWl0eWVydWlydHl1cXJpcXdldXJvcHF3ZWlydWlvcXdldXJpb3F3dWVyaW9xd3l1aXR1aWVyd290Ig0KKwkJCQkgKyAidWVyeXVpb3R3ZXlydHVpd2VydHlpb3dlcnlydWVpb3FwdHlpb3J1eWlvcHF3dGprYXNkZmhsYWZobGFzZGhmamtsYXNoamtmaGFzamtsZmhrbGFzamRmaCIgKyAia2xhc2RoZmprYWxzZGhma2xhc2RoamtmbGFoc2pka2Zoa2xhc2Zoamthc2RmaGFzZmprYXNkaGZrbHNkaGFsZ2hoYWY7aGRrbGFzZmhqa2xhc2hqa2xmYSIgKyAic2RoZmFzZGprbGZoc2Rqa2xhZnNkO2hrbGRhZGZqamtsYXNkaGZqYXNkZGZqa2xmaGFramtsYXNkamZrbDthc2RqZmFzZmxqYXNkZmhqa2xhc2RmaGprYSINCisJCQkJICsgImdoamthc2hmO2RqZmtsYXNkamZrbGphc2RrbGZqa2xhc2RqZmtsamFzZGZrbGpha2xmaiIsICJcdTAwMUJKXHUwMDAzXHUwMDAwXHUwMDhDXHUwMDk0blx1MDBERVx1MDBCNFx1MDBEN1x1MDA5Nlx1MDBCMXhcdTAwODZcdTAwRjItXHUwMEUxXHUwMDFBIiArICJcdTAwQkNcdTAwMEJcdTAwMUNcdTAwQkFcdTAwQTlcdTAwQzdcdTAwRjdcdTAwQ0NuXHUwMEIyQjRRRFx1MDA4Qk5cdTAwMTNcYlx1MDBBMFx1MDBDRG4iDQorCQkJCSArICJcdTAwRTgsXHUwMEE1U1x1MDBBMVx1MDA5Q10sXHUwMDFEI1x1MDAxQVx1MDBEMlZcdTAwQkVcdTAwREJcdTAwRUImXHUwMEJBXHUwMDAzZXxcdTAwOTZqIiArICJcdTAwQTJ2XHUwMEVDXHUwMEVGXHUwMDg3RzNcdTAwRDZcJ1x1MDAwRWNcdTAwOTVcdTAwRTJcdTAwMURcdTAwOEQsXHUwMEM1XHUwMEQxKFx1MDA5RmAiICsgIlx1MDA5NG9cdTAwMDJcdTAwOEJcdTAwRERcdTAwQUFkXHUwMDk0LFx1MDAxRTtlfFx1MDAwN0VaXHUwMEIyXHUwMEUyXHUwMEZDSVx1MDA4MSxcdTAwOUYiDQorCQkJCSArICJAXHUwMEFFXHUwMEVGaFx1MDA4MVx1MDBBQ1x1MDAxNnpcdTAwMEZcdTAwRjU7bVx1MDAxQ1x1MDBCOVx1MDAxRS1fXHUwMEQ1XHUwMEM4XHUwMEFGXiIgKyAiXHUwMDg1XHUwMEFBXHUwMDA1XHUwMEJFU3VcdTAwQzJcdTAwQjBcIlx1MDA4QVx1MDAxNVx1MDBDNlx1MDBBM1x1MDBCMVx1MDBFNkJcdTAwMTQiICsgIlx1MDBGNFx1MDA4NFRTXHUwMDE5X1x1MDBCRVx1MDBDM1x1MDBGMlx1MDAxRFx1MDBEMVx1MDBCN1x1MDBFNVx1MDBERFx1MDBCNlx1MDBEOSNcdTAwQzYiDQorCQkJCSArICJcdTAwRjZcdTAwOUZcdTAwOUVcdTAwRjZNZTBcdTAwRkJcdTAwQzBxRVx1MDAwNFx1MDBBRFx1MDAwM1x1MDBCNVx1MDBCRVx1MDBDOVx1MDBDQiIgKyAiXHUwMEZEXHUwMEUyUFpGdFx1MDAwNFxyXHUwMEZGIFx1MDAwNHdcdTAwQjJtXCdcdTAwQkZHXHUwMEE5XHUwMDlEXHUwMDFCXHUwMDk2LGJcdTAwOTAjIiArICJcdTAwOEJcdTAwRTBcdTAwRjhcdTAwMURcdTAwQ0ZcdTAwQUZcdTAwMUQ9XHUwMEVFXHUwMDhBXHUwMEM4dSNmXHUwMEREXHUwMERFXHUwMEQ2bSINCisJCQkJICsgIlx1MDBFMypcdTAwODJcdTAwOEF4XHUwMDhBXHUwMERCXHUwMEU2IExcdTAwQjdcXGNcdTAwQkEwXHUwMEUzP1x1MDBCNlx1MDBFRVx1MDA4Q1wiIiArICJcdTAwQTIqXHUwMEIwXCJcblx1MDA5OVx1MDBGRj1iUVx1MDBFRVxiXHUwMEY2PUpcdTAwRTRcdTAwQ0NcdTAwRUZcIlx1MDA4N1x1MDAxMVx1MDBFMiIgKyAiXHUwMDgzKFx1MDBFNFx1MDBGNVx1MDA4RjVcdTAwMTljW1x1MDBFMVpcdTAwOTJzXHUwMEREXHUwMEExUFx1MDA5RDhcXFx1MDBFQlx1MDBCNVx1MDAwMyINCisJCQkJICsgImpkXHUwMDkwXHUwMDk0XHUwMEM4XHUwMDhEXHUwMEZCL1x1MDA4QVx1MDA4NlwiXHUwMENDXHUwMDFEXHUwMDg3XHUwMEUwSFxuXHUwMDk2d1x1MDA5MDkiICsgIlx1MDBDNiMjSFx1MDBGQlx1MDAxMUdWXHUwMENBIFx1MDBFM0JcdTAwODFcdTAwRjd3Mlx1MDBDMVx1MDBBNVxcQCFlXHUwMDE3QClcdTAwMTdcdTAwMTciICsgImxWMlx1MDA5ODhcdTAwMDZcdTAwRENcdTAwOTlNMylcdTAwQkJcdTAwMDJcdTAwREZMJlx1MDA5M2xcdTAwMTdcdTAwODJcdTAwODYgXHUwMEQ3Ig0KKwkJCQkgKyAiXHUwMDAzeX1cdTAwOUFcdTAwMDBcdTAwRDdcdTAwODdcdTAwMDBcdTAwRTdcdTAwMEJmXHUwMEUzTGZxZ1xiMlx1MDBGOVxiPlx1MDA4MTNcdTAwQ0QiICsgIlx1MDAxN3IxXHUwMEYwXHUwMEI4XHUwMDk0UktcdTAwOTAxXHUwMDhFaFx1MDBDMVx1MDBFRlx1MDA5MFx1MDBDOVx1MDBFNVx1MDBGMmFcdHIlIiArICJcdTAwQURcdTAwRUNcdTAwQzViXHUwMEMwXHUwMDBCXHUwMDEyXHUwMDA1XHUwMEY3XHUwMDkxdVxyXHUwMEVFYS4uXHUwMDE5XHRcdTAwQzJcdTAwMDMiDQorCQkJCSk7DQorCQl9DQorDQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iLz4NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdEZveCgpDQorCQl7DQorCQkJQ2hlY2tEZWNvZGVSZXNvdXJjZSgiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZyIsICJcdTAwMUIqXHUwMDAwXHUwMDAwXHUwMDA0XHUwMDA0XHUwMEJBRjpcdTAwODVcdTAwMDNcdTAwRTlcdTAwRkFcZlx1MDA5MVx1MDAwMkhcdTAwMTEsIiArICJcdTAwRjNcdTAwOEE6XHUwMEEzVlx1MDA3Rlx1MDAxQVx1MDBBRVx1MDBCRlx1MDBBNFx1MDBBQlx1MDA4RU1cdTAwQkZcdTAwRURcdTAwRTJcdTAwMDRLIg0KKwkJCQkgKyAiXHUwMDkxXHUwMEZGXHUwMDg3XHUwMEU5XHUwMDFFIik7DQorCQl9DQorDQorCQkvLy8gPGV4Y2VwdGlvbiBjcmVmPSJTeXN0ZW0uSU8uSU9FeGNlcHRpb24iLz4NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdEZveEZveCgpDQorCQl7DQorCQkJQ2hlY2tEZWNvZGVSZXNvdXJjZVdpdGhEaWN0aW9uYXJ5KCJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nIiwgIlx1MDAxQipcdTAwMDBcdTAwMDAgXHUwMDAwXHUwMEMyXHUwMDk4XHUwMEIwXHUwMENBXHUwMDAxIiwgIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2ciKTsNCisJCX0NCisNCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdFV0aWxzKCkNCisJCXsNCisJCQluZXcgT3JnLkJyb3RsaS5EZWMuQ29udGV4dCgpOw0KKwkJCW5ldyBPcmcuQnJvdGxpLkRlYy5EZWNvZGUoKTsNCisJCQluZXcgT3JnLkJyb3RsaS5EZWMuRGljdGlvbmFyeSgpOw0KKwkJCW5ldyBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuKCk7DQorCQkJbmV3IE9yZy5Ccm90bGkuRGVjLlByZWZpeCgpOw0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeS5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDQ1ZjgwCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9EaWN0aW9uYXJ5LmNzCkBAIC0wLDAgKzEsOTcgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PkNvbGxlY3Rpb24gb2Ygc3RhdGljIGRpY3Rpb25hcnkgd29yZHMuPC9zdW1tYXJ5Pg0KKwkvLy8gPHJlbWFya3M+DQorCS8vLyBDb2xsZWN0aW9uIG9mIHN0YXRpYyBkaWN0aW9uYXJ5IHdvcmRzLg0KKwkvLy8gPHA+RGljdGlvbmFyeSBjb250ZW50IGlzIGxvYWRlZCBmcm9tIGJpbmFyeSByZXNvdXJjZSB3aGVuDQorCS8vLyA8c2VlIGNyZWY9IkdldERhdGEoKSIvPg0KKwkvLy8gaXMgZXhlY3V0ZWQgZm9yIHRoZQ0KKwkvLy8gZmlyc3QgdGltZS4gQ29uc2VxdWVudGx5LCBpdCBzYXZlcyBtZW1vcnkgYW5kIENQVSBpbiBjYXNlIGRpY3Rpb25hcnkgaXMgbm90IHJlcXVpcmVkLg0KKwkvLy8gPHA+T25lIHBvc3NpYmxlIGRyYXdiYWNrIGlzIHRoYXQgbXVsdGlwbGUgdGhyZWFkcyB0aGF0IG5lZWQgZGljdGlvbmFyeSBkYXRhIG1heSBiZSBibG9ja2VkIChvbmx5DQorCS8vLyBvbmNlIGluIGVhY2ggY2xhc3N3b3JsZCkuIFRvIGF2b2lkIHRoaXMsIGl0IGlzIGVub3VnaCB0byBjYWxsDQorCS8vLyA8c2VlIGNyZWY9IkdldERhdGEoKSIvPg0KKwkvLy8gcHJvYWN0aXZlbHkuDQorCS8vLyA8L3JlbWFya3M+DQorCWludGVybmFsIHNlYWxlZCBjbGFzcyBEaWN0aW9uYXJ5DQorCXsNCisJCS8vLyA8c3VtbWFyeT4iSW5pdGlhbGl6YXRpb24tb24tZGVtYW5kIGhvbGRlciBpZGlvbSIgaW1wbGVtZW50YXRpb24uPC9zdW1tYXJ5Pg0KKwkJLy8vIDxyZW1hcmtzPg0KKwkJLy8vICJJbml0aWFsaXphdGlvbi1vbi1kZW1hbmQgaG9sZGVyIGlkaW9tIiBpbXBsZW1lbnRhdGlvbi4NCisJCS8vLyA8cD5UaGlzIHN0YXRpYyBjbGFzcyBkZWZpbml0aW9uIGlzIG5vdCBpbml0aWFsaXplZCB1bnRpbCB0aGUgSlZNIGRldGVybWluZXMgdGhhdCBpdCBtdXN0IGJlDQorCQkvLy8gZXhlY3V0ZWQgKHdoZW4gdGhlIHN0YXRpYyBtZXRob2QNCisJCS8vLyA8c2VlIGNyZWY9IkdldERhdGEoKSIvPg0KKwkJLy8vIGlzIGludm9rZWQpLg0KKwkJLy8vIDwvcmVtYXJrcz4NCisJCXByaXZhdGUgY2xhc3MgRGF0YUhvbGRlcjANCisJCXsNCisJCQlpbnRlcm5hbCBzdGF0aWMgc3RyaW5nIEdldERhdGEoKQ0KKwkJCXsNCisJCQkJcmV0dXJuICJ0aW1lZG93bmxpZmVsZWZ0YmFja2NvZGVkYXRhc2hvd29ubHlzaXRlY2l0eW9wZW5qdXN0bGlrZWZyZWV3b3JrdGV4dHllYXJvdmVyYm9keWxvdmVmb3JtYm9va3BsYXlsaXZlbGluZWhlbHBob21lc2lkZW1vcmV3b3JkbG9uZ3RoZW12aWV3ZmluZHBhZ2VkYXlzZnVsbGhlYWR0ZXJtZWFjaGFyZWFmcm9tdHJ1ZW1hcmthYmxldXBvbmhpZ2hkYXRlbGFuZG5ld3NldmVubmV4dGNhc2Vib3RocG9zdHVzZWRtYWRlaGFuZGhlcmV3aGF0bmFtZUxpbmtibG9nc2l6ZWJhc2VoZWxkbWFrZW1haW51c2VyJykgK2hvbGRlbmRzd2l0aE5ld3NyZWFkd2VyZXNpZ250YWtlaGF2ZWdhbWVzZWVuY2FsbHBhdGh3ZWxscGx1c21lbnVmaWxtcGFydGpvaW50aGlzbGlzdGdvb2RuZWVkd2F5c3dlc3Rqb2JzbWluZGFsc29sb2dvcmljaHVzZXNsYXN0dGVhbWFybXlmb29ka2luZ3dpbGxlYXN0d2FyZGJlc3RmaXJlUGFnZWtub3dhd2F5LnBuZ21vdmV0aGFubG9hZGdpdmVzZWxmbm90ZW11Y2hmZWVkbWFueXJvY2tpY29ub25jZWxvb2toaWRlZGllZEhvbWVydWxlaG9zdGFqYXhpbmZvY2x1Ymxhd3NsZXNzaGFsZnNvbWVzdWNoem9uZTEwMCVvbmVzY2FyZVRpbWVyYWNlYmx1ZWZvdXJ3ZWVrZmFjZWhvcGVnYXZlaGFyZGxvc3R3aGVucGFya2tlcHRwYXNzc2hpcHJvb21IVE1McGxhblR5cGVkb25lc2F2ZWtlZXBmbGFnbGlua3NvbGRmaXZldG9va3JhdGV0b3duanVtcHRodXNkYXJrY2FyZGZpbGVmZWFyc3RheWtpbGx0aGF0ZmFsbGF1dG9ldmVyLmNvbXRhbGtzaG9wdm90ZWRlZXBtb2RlcmVzdHR1cm5ib3JuYmFuZGZlbGxyb3NldXJsKHNraW5yb2xlY29tZWFjdHNhZ2VzbWVldGdvbGQuanBnaXRlbXZhcnlmZWx0dGhlbnNlbmRkcm9wVmlld2NvcHkxLjBcIjwvYT5zdG9wZWxzZWxpZXN0b3VycGFjay5naWZwYXN0Y3NzP2dyYXltZWFuJmd0O3JpZGVzaG90bGF0ZXNhaWRyb2FkdmFyIGZlZWxqb2hucmlja3BvcnRmYXN0J1VBLWRlYWQ8L2I+cG9vcmJpbGx0eXBlVS5TLndvb2RtdXN0MnB4O0luZm9yYW5rd2lkZXdhbnR3YWxsbGVhZFswXTtwYXVsd2F2ZXN1cmUkKCcjd2FpdG1hc3Nhcm1zZ29lc2dhaW5sYW5ncGFpZCEtLSBsb2NrdW5pdHJvb3R3YWxrZmlybXdpZmV4bWxcInNvbmd0ZXN0MjBweGtpbmRyb3dzdG9vbGZvbnRtYWlsc2FmZXN0YXJtYXBzY29yZXJhaW5mbG93YmFieXNwYW5zYXlzNHB4OzZweDthcnRzZm9vdHJlYWx3aWtpaGVhdHN0ZXB0cmlwb3JnL2xha2V3ZWFrdG9sZEZvcm1jYXN0ZmFuc2Jhbmt2ZXJ5cnVuc2p1bHl0YXNrMXB4O2dvYWxncmV3c2xvd2VkZ2VpZD1cInNldHM1cHg7LmpzPzQwcHhpZiAoc29vbnNlYXRub25ldHViZXplcm9zZW50cmVlZGZhY3RpbnRvZ2lmdGhhcm0xOHB4Y2FtZWhpbGxib2xkem9vbXZvaWRlYXN5cmluZ2ZpbGxwZWFraW5pdGNvc3QzcHg7amFja3RhZ3NiaXRzcm9sbGVkaXRrbmV3bmVhcjwhLS1ncm93SlNPTmR1dHlOYW1lc2FsZXlvdSBsb3RzcGFpbmphenpjb2xkZXllc2Zpc2h3d3cucmlza3RhYnNwcmV2MTBweHJpc2UyNXB4Qmx1ZWRpbmczMDAsYmFsbGZvcmRlYXJud2lsZGJveC5mYWlybGFja3ZlcnNwYWlyanVuZXRlY2hpZighcGlja2V2aWwkKFwiI3dhcm1sb3JkZG9lc3B1bGwsMDAwaWRlYWRyYXdodWdlc3BvdGZ1bmRidXJuaHJlZmNlbGxrZXlzdGlja2hvdXJsb3NzZnVlbDEycHhzdWl0ZGVhbFJTU1wiYWdlZGdyZXlHRVRcImVhc2VhaW1zZ2lybGFpZHM4cHg7bmF2eWdyaWR0aXBzIzk5OXdhcnNsYWR5Y2Fycyk7IH1waHA/aGVsbHRhbGx3aG9temg6XHUwMEU1Ki9cclxuIDEwMGhhbGwuXG5cbkE3cHg7cHVzaGNoYXQwcHg7Y3JldyovPC9oYXNoNzVweGZsYXRyYXJlICYmIHRlbGxjYW1wb250b2xhaWRtaXNzc2tpcHRlbnRmaW5lbWFsZWdldHNwbG90NDAwLFxyXG5cclxuY29vbGZlZXQucGhwPGJyPmVyaWNtb3N0Z3VpZGJlbGxkZXNjaGFpcm1hdGhhdG9tL2ltZyYjODJsdWNrY2VudDAwMDt0aW55Z29uZWh0bWxzZWxsZHJ1Z0ZSRUVub2Rlbmljaz9pZD1sb3NlbnVsbHZhc3R3aW5kUlNTIHdlYXJyZWx5YmVlbnNhbWVkdWtlbmFzYWNhcGV3aXNoZ3VsZlQyMzpoaXRzc2xvdGdhdGVraWNrYmx1cnRoZXkxNXB4JycpOyk7XCI+bXNpZXdpbnNiaXJkc29ydGJldGFzZWVrVDE4Om9yZHN0cmVlbWFsbDYwcHhmYXJtXHUwMEUyXHUwMDgwXHUwMDk5c2JveXNbMF0uJyk7XCJQT1NUYmVhcmtpZHMpO319bWFyeXRlbmQoVUspcXVhZHpoOlx1MDBFNi1zaXotLS0tcHJvcCcpO1xybGlmdFQxOTp2aWNlYW5keWRlYnQ+UlNTcG9vbG5lY2tibG93VDE2OmRvb3JldmFsVDE3OmxldHNmYWlsb3JhbHBvbGxub3ZhY29sc2dlbmUgXHUwMEUyXHUwMDgwXHUwMDk0c29mdHJvbWV0aWxscm9zczxoMz5wb3VyZmFkZXBpbms8dHI+bWluaSl8IShtaW5lemg6XHUwMEU4YmFyc2hlYXIwMCk7bWlsayAtLT5pcm9uZnJlZGRpc2t3ZW50c29pbHB1dHMvanMvaG9seVQyMjpJU0JOVDIwOmFkYW1zZWVzPGgyPmpzb24nLCAnY29udFQyMTogUlNTbG9vcGFzaWFtb29uPC9wPnNvdWxMSU5FZm9ydGNhcnRUMTQ6PGgxPjgwcHghLS08OXB4O1QwNDptaWtlOjQ2Wm5pY2VpbmNoWW9ya3JpY2V6aDpcdTAwRTQnKSk7cHVyZW1hZ2VwYXJhdG9uZWJvbmQ6MzdaX29mXyddKTswMDAsemg6XHUwMEU3dGFua3lhcmRib3dsYnVzaDo1NlpKYXZhMzBweFxufH1cbiVDMyU6MzRaamVmZkVYUEljYXNodmlzYWdvbGZzbm93emg6XHUwMEU5cXVlci5jc3NzaWNrbWVhdG1pbi5iaW5kZGVsbGhpcmVwaWNzcmVudDozNlpIVFRQLTIwMWZvdG93b2xmRU5EIHhib3g6NTRaQk9EWWRpY2s7XG59XG5leGl0OjM1WnZhcnNiZWF0J30pO2RpZXQ5OTk7YW5uZX19PC9baV0uTGFuZ2ttXHUwMEMyXHUwMEIyd2lyZXRveXNhZGRzc2VhbGFsZXg7XG5cdH1lY2hvbmluZS5vcmcwMDUpdG9ueWpld3NzYW5kbGVnc3Jvb2YwMDApIDIwMHdpbmVnZWFyZG9nc2Jvb3RnYXJ5Y3V0c3R5bGV0ZW1wdGlvbi54bWxjb2NrZ2FuZyQoJy41MHB4UGguRG1pc2NhbGFubG9hbmRlc2ttaWxlcnlhbnVuaXhkaXNjKTt9XG5kdXN0Y2xpcCkuXG5cbjcwcHgtMjAwRFZEczddPjx0YXBlZGVtb2krKyl3YWdlZXVyb3BoaWxvcHRzaG9sZUZBUXNhc2luLTI2VGxhYnNwZXRzVVJMIGJ1bGtjb29rO31cclxuSEVBRFswXSlhYmJyanVhbigxOThsZXNodHdpbjwvaT5zb255Z3V5c2Z1Y2twaXBlfC1cbiEwMDIpbmRvd1sxXTtbXTtcbkxvZyBzYWx0XHJcblx0XHRiYW5ndHJpbWJhdGgpe1xyXG4wMHB4XG59KTtrbzpcdTAwRUNmZWVzYWQ+XHJzOi8vIFtdO3RvbGxwbHVnKCl7XG57XHJcbiAuanMnMjAwcGR1YWxib2F0LkpQRyk7XG59cXVvdCk7XG5cbicpO1xuXHJcbn1ccjIwMTQyMDE1MjAxNjIwMTcyMDE4MjAxOTIwMjAyMDIxMjAyMjIwMjMyMDI0MjAyNTIwMjYyMDI3MjAyODIwMjkyMDMwMjAzMTIwMzIyMDMzMjAzNDIwMzUyMDM2MjAzNzIwMTMyMDEyMjAxMTIwMTAyMDA5MjAwODIwMDcyMDA2MjAwNTIwMDQyMDAzMjAwMjIwMDEyMDAwMTk5OTE5OTgxOTk3MTk5NjE5OTUxOTk0MTk5MzE5OTIxOTkxMTk5MDE5ODkxOTg4MTk4NzE5ODYxOTg1MTk4NDE5ODMxOTgyMTk4MTE5ODAxOTc5MTk3ODE5NzcxOTc2MTk3NTE5NzQxOTczMTk3MjE5NzExOTcwMTk2OTE5NjgxOTY3MTk2NjE5NjUxOTY0MTk2MzE5NjIxOTYxMTk2MDE5NTkxOTU4MTk1NzE5NTYxOTU1MTk1NDE5NTMxOTUyMTk1MTE5NTAxMDAwMTAyNDEzOTQwMDAwOTk5OWNvbW9tXHUwMEMzXHUwMEExc2VzdGVlc3RhcGVyb3RvZG9oYWNlY2FkYWFcdTAwQzNcdTAwQjFvYmllbmRcdTAwQzNcdTAwQURhYXNcdTAwQzNcdTAwQUR2aWRhY2Fzb290cm9mb3Jvc29sb290cmFjdWFsZGlqb3NpZG9ncmFudGlwb3RlbWFkZWJlYWxnb3F1XHUwMEMzXHUwMEE5ZXN0b25hZGF0cmVzcG9jb2Nhc2FiYWpvdG9kYXNpbm9hZ3VhcHVlc3Vub3NhbnRlZGljZWx1aXNlbGxhbWF5b3pvbmFhbW9ycGlzb29icmFjbGljZWxsb2Rpb3Nob3JhY2FzaVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMFx1MDA5RFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4Qlx1MDBEMFx1MDA5Mlx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDA5RFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMFx1MDA5Rlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBBMFx1MDBEMFx1MDBBNFx1MDBEMFx1MDA5RFx1MDBEMFx1MDBCNVx1MDBEMFx1MDA5Q1x1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDA5RVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDA5N1x1MDBEMFx1MDBCMFx1MDBEMFx1MDA5NFx1MDBEMFx1MDBCMFx1MDBEMFx1MDA5RFx1MDBEMVx1MDA4M1x1MDBEMFx1MDA5RVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDA5OFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBBMlx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNlx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4OFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4MVx1MDBEOVx1MDA4OVx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBNVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4QVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4QVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4M1x1MDBEOFx1MDBCNFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCNGZpcnN0dmlkZW9saWdodHdvcmxkbWVkaWF3aGl0ZWNsb3NlYmxhY2tyaWdodHNtYWxsYm9va3NwbGFjZW11c2ljZmllbGRvcmRlcnBvaW50dmFsdWVsZXZlbHRhYmxlYm9hcmRob3VzZWdyb3Vwd29ya3N5ZWFyc3N0YXRldG9kYXl3YXRlcnN0YXJ0c3R5bGVkZWF0aHBvd2VycGhvbmVuaWdodGVycm9yaW5wdXRhYm91dHRlcm1zdGl0bGV0b29sc2V2ZW50bG9jYWx0aW1lc2xhcmdld29yZHNnYW1lc3Nob3J0c3BhY2Vmb2N1c2NsZWFybW9kZWxibG9ja2d1aWRlcmFkaW9zaGFyZXdvbWVuYWdhaW5tb25leWltYWdlbmFtZXN5b3VuZ2xpbmVzbGF0ZXJjb2xvcmdyZWVuZnJvbnQmYW1wO3dhdGNoZm9yY2VwcmljZXJ1bGVzYmVnaW5hZnRlcnZpc2l0aXNzdWVhcmVhc2JlbG93aW5kZXh0b3RhbGhvdXJzbGFiZWxwcmludHByZXNzYnVpbHRsaW5rc3NwZWVkc3R1ZHl0cmFkZWZvdW5kc2Vuc2V1bmRlcnNob3duZm9ybXNyYW5nZWFkZGVkc3RpbGxtb3ZlZHRha2VuYWJvdmVmbGFzaGZpeGVkb2Z0ZW5vdGhlcnZpZXdzY2hlY2tsZWdhbHJpdmVyaXRlbXNxdWlja3NoYXBlaHVtYW5leGlzdGdvaW5nbW92aWV0aGlyZGJhc2ljcGVhY2VzdGFnZXdpZHRobG9naW5pZGVhc3dyb3RlcGFnZXN1c2Vyc2RyaXZlc3RvcmVicmVha3NvdXRodm9pY2VzaXRlc21vbnRod2hlcmVidWlsZHdoaWNoZWFydGhmb3J1bXRocmVlc3BvcnRwYXJ0eUNsaWNrbG93ZXJsaXZlc2NsYXNzbGF5ZXJlbnRyeXN0b3J5dXNhZ2Vzb3VuZGNvdXJ0eW91ciBiaXJ0aHBvcHVwdHlwZXNhcHBseUltYWdlYmVpbmd1cHBlcm5vdGVzZXZlcnlzaG93c21lYW5zZXh0cmFtYXRjaHRyYWNra25vd25lYXJseWJlZ2Fuc3VwZXJwYXBlcm5vcnRobGVhcm5naXZlbm5hbWVkZW5kZWRUZXJtc3BhcnRzR3JvdXBicmFuZHVzaW5nd29tYW5mYWxzZXJlYWR5YXVkaW90YWtlc3doaWxlLmNvbS9saXZlZGNhc2VzZGFpbHljaGlsZGdyZWF0anVkZ2V0aG9zZXVuaXRzbmV2ZXJicm9hZGNvYXN0Y292ZXJhcHBsZWZpbGVzY3ljbGVzY2VuZXBsYW5zY2xpY2t3cml0ZXF1ZWVucGllY2VlbWFpbGZyYW1lb2xkZXJwaG90b2xpbWl0Y2FjaGVjaXZpbHNjYWxlZW50ZXJ0aGVtZXRoZXJldG91Y2hib3VuZHJveWFsYXNrZWR3aG9sZXNpbmNlc3RvY2sgbmFtZWZhaXRoaGVhcnRlbXB0eW9mZmVyc2NvcGVvd25lZG1pZ2h0YWxidW10aGlua2Jsb29kYXJyYXltYWpvcnRydXN0Y2Fub251bmlvbmNvdW50dmFsaWRzdG9uZVN0eWxlTG9naW5oYXBweW9jY3VybGVmdDpmcmVzaHF1aXRlZmlsbXNncmFkZW5lZWRzdXJiYW5maWdodGJhc2lzaG92ZXJhdXRvO3JvdXRlLmh0bWxtaXhlZGZpbmFsWW91ciBzbGlkZXRvcGljYnJvd25hbG9uZWRyYXduc3BsaXRyZWFjaFJpZ2h0ZGF0ZXNtYXJjaHF1b3RlZ29vZHNMaW5rc2RvdWJ0YXN5bmN0aHVtYmFsbG93Y2hpZWZ5b3V0aG5vdmVsMTBweDtzZXJ2ZXVudGlsaGFuZHNDaGVja1NwYWNlcXVlcnlqYW1lc2VxdWFsdHdpY2UwLDAwMFN0YXJ0cGFuZWxzb25nc3JvdW5kZWlnaHRzaGlmdHdvcnRocG9zdHNsZWFkc3dlZWtzYXZvaWR0aGVzZW1pbGVzcGxhbmVzbWFydGFscGhhcGxhbnRtYXJrc3JhdGVzcGxheXNjbGFpbXNhbGVzdGV4dHNzdGFyc3dyb25nPC9oMz50aGluZy5vcmcvbXVsdGloZWFyZFBvd2Vyc3RhbmR0b2tlbnNvbGlkKHRoaXNicmluZ3NoaXBzc3RhZmZ0cmllZGNhbGxzZnVsbHlmYWN0c2FnZW50VGhpcyAvLy0tPmFkbWluZWd5cHRFdmVudDE1cHg7RW1haWx0cnVlXCJjcm9zc3NwZW50YmxvZ3Nib3hcIj5ub3RlZGxlYXZlY2hpbmFzaXplc2d1ZXN0PC9oND5yb2JvdGhlYXZ5dHJ1ZSxzZXZlbmdyYW5kY3JpbWVzaWduc2F3YXJlZGFuY2VwaGFzZT48IS0tZW5fVVMmIzM5OzIwMHB4X25hbWVsYXRpbmVuam95YWpheC5hdGlvbnNtaXRoVS5TLiBob2xkc3BldGVyaW5kaWFuYXZcIj5jaGFpbnNjb3JlY29tZXNkb2luZ3ByaW9yU2hhcmUxOTkwc3JvbWFubGlzdHNqYXBhbmZhbGxzdHJpYWxvd25lcmFncmVlPC9oMj5hYnVzZWFsZXJ0b3BlcmFcIi0vL1djYXJkc2hpbGxzdGVhbXNQaG90b3RydXRoY2xlYW4ucGhwP3NhaW50bWV0YWxsb3Vpc21lYW50cHJvb2ZicmllZnJvd1wiPmdlbnJldHJ1Y2tsb29rc1ZhbHVlRnJhbWUubmV0Ly0tPlxuPHRyeSB7XG52YXIgbWFrZXNjb3N0c3BsYWluYWR1bHRxdWVzdHRyYWlubGFib3JoZWxwc2NhdXNlbWFnaWNtb3RvcnRoZWlyMjUwcHhsZWFzdHN0ZXBzQ291bnRjb3VsZGdsYXNzc2lkZXNmdW5kc2hvdGVsYXdhcmRtb3V0aG1vdmVzcGFyaXNnaXZlc2R1dGNodGV4YXNmcnVpdG51bGwsfHxbXTt0b3BcIj5cbjwhLS1QT1NUXCJvY2Vhbjxici8+Zmxvb3JzcGVha2RlcHRoIHNpemViYW5rc2NhdGNoY2hhcnQyMHB4O2FsaWduZGVhbHN3b3VsZDUwcHg7dXJsPVwicGFya3Ntb3VzZU1vc3QgLi4uPC9hbW9uZ2JyYWluYm9keSBub25lO2Jhc2VkY2FycnlkcmFmdHJlZmVycGFnZV9ob21lLm1ldGVyZGVsYXlkcmVhbXByb3Zlam9pbnQ8L3RyPmRydWdzPCEtLSBhcHJpbGlkZWFsYWxsZW5leGFjdGZvcnRoY29kZXNsb2dpY1ZpZXcgc2VlbXNibGFua3BvcnRzICgyMDBzYXZlZF9saW5rZ29hbHNncmFudGdyZWVraG9tZXNyaW5nc3JhdGVkMzBweDt3aG9zZXBhcnNlKCk7XCIgQmxvY2tsaW51eGpvbmVzcGl4ZWwnKTtcIj4pO2lmKC1sZWZ0ZGF2aWRob3JzZUZvY3VzcmFpc2Vib3hlc1RyYWNrZW1lbnQ8L2VtPmJhclwiPi5zcmM9dG93ZXJhbHQ9XCJjYWJsZWhlbnJ5MjRweDtzZXR1cGl0YWx5c2hhcnBtaW5vcnRhc3Rld2FudHN0aGlzLnJlc2V0d2hlZWxnaXJscy9jc3MvMTAwJTtjbHVic3N0dWZmYmlibGV2b3RlcyAxMDAwa29yZWF9KTtcclxuYmFuZHNxdWV1ZT0ge307ODBweDtja2luZ3tcclxuXHRcdGFoZWFkY2xvY2tpcmlzaGxpa2UgcmF0aW9zdGF0c0Zvcm1cInlhaG9vKVswXTtBYm91dGZpbmRzPC9oMT5kZWJ1Z3Rhc2tzVVJMID1jZWxsc30pKCk7MTJweDtwcmltZXRlbGxzdHVybnMweDYwMC5qcGdcInNwYWluYmVhY2h0YXhlc21pY3JvYW5nZWwtLT48L2dpZnRzc3RldmUtbGlua2JvZHkufSk7XG5cdG1vdW50ICgxOTlGQVE8L3JvZ2VyZnJhbmtDbGFzczI4cHg7ZmVlZHM8aDE+PHNjb3R0dGVzdHMyMnB4O2RyaW5rKSB8fCBsZXdpc3NoYWxsIzAzOTsgZm9yIGxvdmVkd2FzdGUwMHB4O2phOlx1MDBFM1x1MDA4MnNpbW9uPGZvbnRyZXBseW1lZXRzdW50ZXJjaGVhcHRpZ2h0QnJhbmQpICE9IGRyZXNzY2xpcHNyb29tc29ua2V5bW9iaWxtYWluLk5hbWUgcGxhdGVmdW5ueXRyZWVzY29tL1wiMS5qcGd3bW9kZXBhcmFtU1RBUlRsZWZ0IGlkZGVuLCAyMDEpO1xufVxuZm9ybS52aXJ1c2NoYWlydHJhbnN3b3JzdFBhZ2VzaXRpb25wYXRjaDwhLS1cbm8tY2FjZmlybXN0b3VycywwMDAgYXNpYW5pKyspe2Fkb2JlJylbMF1pZD0xMGJvdGg7bWVudSAuMi5taS5wbmdcImtldmluY29hY2hDaGlsZGJydWNlMi5qcGdVUkwpKy5qcGd8c3VpdGVzbGljZWhhcnJ5MTIwXCIgc3dlZXR0cj5cclxubmFtZT1kaWVnb3BhZ2Ugc3dpc3MtLT5cblxuI2ZmZjtcIj5Mb2cuY29tXCJ0cmVhdHNoZWV0KSAmJiAxNHB4O3NsZWVwbnRlbnRmaWxlZGphOlx1MDBFM1x1MDA4M2lkPVwiY05hbWVcIndvcnNlc2hvdHMtYm94LWRlbHRhXG4mbHQ7YmVhcnM6NDhaPGRhdGEtcnVyYWw8L2E+IHNwZW5kYmFrZXJzaG9wcz0gXCJcIjtwaHBcIj5jdGlvbjEzcHg7YnJpYW5oZWxsb3NpemU9bz0lMkYgam9pbm1heWJlPGltZyBpbWdcIj4sIGZqc2ltZ1wiIFwiKVswXU1Ub3BCVHlwZVwibmV3bHlEYW5za2N6ZWNodHJhaWxrbm93czwvaDU+ZmFxXCI+emgtY24xMCk7XG4tMVwiKTt0eXBlPWJsdWVzdHJ1bHlkYXZpcy5qcyc7PlxyXG48IXN0ZWVsIHlvdSBoMj5cclxuZm9ybSBqZXN1czEwMCUgbWVudS5cclxuXHRcclxud2FsZXNyaXNrc3VtZW50ZGRpbmdiLWxpa3RlYWNoZ2lmXCIgdmVnYXNkYW5za2Vlc3Rpc2hxaXBzdW9taXNvYnJlZGVzZGVlbnRyZXRvZG9zcHVlZGVhXHUwMEMzXHUwMEIxb3Nlc3RcdTAwQzNcdTAwQTF0aWVuZWhhc3Rhb3Ryb3NwYXJ0ZWRvbmRlbnVldm9oYWNlcmZvcm1hbWlzbW9tZWpvcm11bmRvYXF1XHUwMEMzXHUwMEFEZFx1MDBDM1x1MDBBRGFzc1x1MDBDM1x1MDBCM2xvYXl1ZGFmZWNoYXRvZGFzdGFudG9tZW5vc2RhdG9zb3RyYXNzaXRpb211Y2hvYWhvcmFsdWdhcm1heW9yZXN0b3Nob3Jhc3RlbmVyYW50ZXNmb3Rvc2VzdGFzcGFcdTAwQzNcdTAwQURzbnVldmFzYWx1ZGZvcm9zbWVkaW9xdWllbm1lc2VzcG9kZXJjaGlsZXNlclx1MDBDM1x1MDBBMXZlY2VzZGVjaXJqb3NcdTAwQzNcdTAwQTllc3RhcnZlbnRhZ3J1cG9oZWNob2VsbG9zdGVuZ29hbWlnb2Nvc2Fzbml2ZWxnZW50ZW1pc21hYWlyZXNqdWxpb3RlbWFzaGFjaWFmYXZvcmp1bmlvbGlicmVwdW50b2J1ZW5vYXV0b3JhYnJpbGJ1ZW5hdGV4dG9tYXJ6b3NhYmVybGlzdGFsdWVnb2NcdTAwQzNcdTAwQjNtb2VuZXJvanVlZ29wZXJcdTAwQzNcdTAwQkFoYWJlcmVzdG95bnVuY2FtdWplcnZhbG9yZnVlcmFsaWJyb2d1c3RhaWd1YWx2b3Rvc2Nhc29zZ3VcdTAwQzNcdTAwQURhcHVlZG9zb21vc2F2aXNvdXN0ZWRkZWJlbm5vY2hlYnVzY2FmYWx0YWV1cm9zc2VyaWVkaWNob2N1cnNvY2xhdmVjYXNhc2xlXHUwMEMzXHUwMEIzbnBsYXpvbGFyZ29vYnJhc3Zpc3RhYXBveW9qdW50b3RyYXRhdmlzdG9jcmVhcmNhbXBvaGVtb3NjaW5jb2NhcmdvcGlzb3NvcmRlbmhhY2VuXHUwMEMzXHUwMEExcmVhZGlzY29wZWRyb2NlcmNhcHVlZGFwYXBlbG1lbm9yXHUwMEMzXHUwMEJBdGlsY2xhcm9qb3JnZWNhbGxlcG9uZXJ0YXJkZW5hZGllbWFyY2FzaWd1ZWVsbGFzc2lnbG9jb2NoZW1vdG9zbWFkcmVjbGFzZXJlc3RvbmlcdTAwQzNcdTAwQjFvcXVlZGFwYXNhcmJhbmNvaGlqb3N2aWFqZXBhYmxvXHUwMEMzXHUwMEE5c3RldmllbmVyZWlub2RlamFyZm9uZG9jYW5hbG5vcnRlbGV0cmFjYXVzYXRvbWFybWFub3NsdW5lc2F1dG9zdmlsbGF2ZW5kb3Blc2FydGlwb3N0ZW5nYW1hcmNvbGxldmFwYWRyZXVuaWRvdmFtb3N6b25hc2FtYm9zYmFuZGFtYXJpYWFidXNvbXVjaGFzdWJpcnJpb2phdml2aXJncmFkb2NoaWNhYWxsXHUwMEMzXHUwMEFEam92ZW5kaWNoYWVzdGFudGFsZXNzYWxpcnN1ZWxvcGVzb3NmaW5lc2xsYW1hYnVzY29cdTAwQzNcdTAwQTlzdGFsbGVnYW5lZ3JvcGxhemFodW1vcnBhZ2FyanVudGFkb2JsZWlzbGFzYm9sc2FiYVx1MDBDM1x1MDBCMW9oYWJsYWx1Y2hhXHUwMEMzXHUwMDgxcmVhZGljZW5qdWdhcm5vdGFzdmFsbGVhbGxcdTAwQzNcdTAwQTFjYXJnYWRvbG9yYWJham9lc3RcdTAwQzNcdTAwQTlndXN0b21lbnRlbWFyaW9maXJtYWNvc3RvZmljaGFwbGF0YWhvZ2FyYXJ0ZXNsZXllc2FxdWVsbXVzZW9iYXNlc3BvY29zbWl0YWRjaWVsb2NoaWNvbWllZG9nYW5hcnNhbnRvZXRhcGFkZWJlc3BsYXlhcmVkZXNzaWV0ZWNvcnRlY29yZWFkdWRhc2Rlc2Vvdmllam9kZXNlYWFndWFzJnF1b3Q7ZG9tYWluY29tbW9uc3RhdHVzZXZlbnRzbWFzdGVyc3lzdGVtYWN0aW9uYmFubmVycmVtb3Zlc2Nyb2xsdXBkYXRlZ2xvYmFsbWVkaXVtZmlsdGVybnVtYmVyY2hhbmdlcmVzdWx0cHVibGljc2NyZWVuY2hvb3Nlbm9ybWFsdHJhdmVsaXNzdWVzc291cmNldGFyZ2V0c3ByaW5nbW9kdWxlbW9iaWxlc3dpdGNocGhvdG9zYm9yZGVycmVnaW9uaXRzZWxmc29jaWFsYWN0aXZlY29sdW1ucmVjb3JkZm9sbG93dGl0bGU+ZWl0aGVybGVuZ3RoZmFtaWx5ZnJpZW5kbGF5b3V0YXV0aG9yY3JlYXRlcmV2aWV3c3VtbWVyc2VydmVycGxheWVkcGxheWVyZXhwYW5kcG9saWN5Zm9ybWF0ZG91YmxlcG9pbnRzc2VyaWVzcGVyc29ubGl2aW5nZGVzaWdubW9udGhzZm9yY2VzdW5pcXVld2VpZ2h0cGVvcGxlZW5lcmd5bmF0dXJlc2VhcmNoZmlndXJlaGF2aW5nY3VzdG9tb2Zmc2V0bGV0dGVyd2luZG93c3VibWl0cmVuZGVyZ3JvdXBzdXBsb2FkaGVhbHRobWV0aG9kdmlkZW9zc2Nob29sZnV0dXJlc2hhZG93ZGViYXRldmFsdWVzT2JqZWN0b3RoZXJzcmlnaHRzbGVhZ3VlY2hyb21lc2ltcGxlbm90aWNlc2hhcmVkZW5kaW5nc2Vhc29ucmVwb3J0b25saW5lc3F1YXJlYnV0dG9uaW1hZ2VzZW5hYmxlbW92aW5nbGF0ZXN0d2ludGVyRnJhbmNlcGVyaW9kc3Ryb25ncmVwZWF0TG9uZG9uZGV0YWlsZm9ybWVkZGVtYW5kc2VjdXJlcGFzc2VkdG9nZ2xlcGxhY2VzZGV2aWNlc3RhdGljY2l0aWVzc3RyZWFteWVsbG93YXR0YWNrc3RyZWV0ZmxpZ2h0aGlkZGVuaW5mb1wiPm9wZW5lZHVzZWZ1bHZhbGxleWNhdXNlc2xlYWRlcnNlY3JldHNlY29uZGRhbWFnZXNwb3J0c2V4Y2VwdHJhdGluZ3NpZ25lZHRoaW5nc2VmZmVjdGZpZWxkc3N0YXRlc29mZmljZXZpc3VhbGVkaXRvcnZvbHVtZVJlcG9ydG11c2V1bW1vdmllc3BhcmVudGFjY2Vzc21vc3RseW1vdGhlclwiIGlkPVwibWFya2V0Z3JvdW5kY2hhbmNlc3VydmV5YmVmb3Jlc3ltYm9sbW9tZW50c3BlZWNobW90aW9uaW5zaWRlbWF0dGVyQ2VudGVyb2JqZWN0ZXhpc3RzbWlkZGxlRXVyb3BlZ3Jvd3RobGVnYWN5bWFubmVyZW5vdWdoY2FyZWVyYW5zd2Vyb3JpZ2lucG9ydGFsY2xpZW50c2VsZWN0cmFuZG9tY2xvc2VkdG9waWNzY29taW5nZmF0aGVyb3B0aW9uc2ltcGx5cmFpc2VkZXNjYXBlY2hvc2VuY2h1cmNoZGVmaW5lcmVhc29uY29ybmVyb3V0cHV0bWVtb3J5aWZyYW1lcG9saWNlbW9kZWxzTnVtYmVyZHVyaW5nb2ZmZXJzc3R5bGVza2lsbGVkbGlzdGVkY2FsbGVkc2lsdmVybWFyZ2luZGVsZXRlYmV0dGVyYnJvd3NlbGltaXRzR2xvYmFsc2luZ2xld2lkZ2V0Y2VudGVyYnVkZ2V0bm93cmFwY3JlZGl0Y2xhaW1zZW5naW5lc2FmZXR5Y2hvaWNlc3Bpcml0LXN0eWxlc3ByZWFkbWFraW5nbmVlZGVkcnVzc2lhcGxlYXNlZXh0ZW50U2NyaXB0YnJva2VuYWxsb3dzY2hhcmdlZGl2aWRlZmFjdG9ybWVtYmVyLWJhc2VkdGhlb3J5Y29uZmlnYXJvdW5kd29ya2VkaGVscGVkQ2h1cmNoaW1wYWN0c2hvdWxkYWx3YXlzbG9nb1wiIGJvdHRvbWxpc3RcIj4pe3ZhciBwcmVmaXhvcmFuZ2VIZWFkZXIucHVzaChjb3VwbGVnYXJkZW5icmlkZ2VsYXVuY2hSZXZpZXd0YWtpbmd2aXNpb25saXR0bGVkYXRpbmdCdXR0b25iZWF1dHl0aGVtZXNmb3Jnb3RTZWFyY2hhbmNob3JhbG1vc3Rsb2FkZWRDaGFuZ2VyZXR1cm5zdHJpbmdyZWxvYWRNb2JpbGVpbmNvbWVzdXBwbHlTb3VyY2VvcmRlcnN2aWV3ZWQmbmJzcDtjb3Vyc2VBYm91dCBpc2xhbmQ8aHRtbCBjb29raWVuYW1lPVwiYW1hem9ubW9kZXJuYWR2aWNlaW48L2E+OiBUaGUgZGlhbG9naG91c2VzQkVHSU4gTWV4aWNvc3RhcnRzY2VudHJlaGVpZ2h0YWRkaW5nSXNsYW5kYXNzZXRzRW1waXJlU2Nob29sZWZmb3J0ZGlyZWN0bmVhcmx5bWFudWFsU2VsZWN0LlxuXG5PbmVqb2luZWRtZW51XCI+UGhpbGlwYXdhcmRzaGFuZGxlaW1wb3J0T2ZmaWNlcmVnYXJkc2tpbGxzbmF0aW9uU3BvcnRzZGVncmVld2Vla2x5IChlLmcuYmVoaW5kZG9jdG9ybG9nZ2VkdW5pdGVkPC9iPjwvYmVnaW5zcGxhbnRzYXNzaXN0YXJ0aXN0aXNzdWVkMzAwcHh8Y2FuYWRhYWdlbmN5c2NoZW1lcmVtYWluQnJhemlsc2FtcGxlbG9nb1wiPmJleW9uZC1zY2FsZWFjY2VwdHNlcnZlZG1hcmluZUZvb3RlcmNhbWVyYTwvaDE+XG5fZm9ybVwibGVhdmVzc3RyZXNzXCIgLz5cclxuLmdpZlwiIG9ubG9hZGxvYWRlck94Zm9yZHNpc3RlcnN1cnZpdmxpc3RlbmZlbWFsZURlc2lnbnNpemU9XCJhcHBlYWx0ZXh0XCI+bGV2ZWxzdGhhbmtzaGlnaGVyZm9yY2VkYW5pbWFsYW55b25lQWZyaWNhYWdyZWVkcmVjZW50UGVvcGxlPGJyIC8+d29uZGVycHJpY2VzdHVybmVkfHwge307bWFpblwiPmlubGluZXN1bmRheXdyYXBcIj5mYWlsZWRjZW5zdXNtaW51dGViZWFjb25xdW90ZXMxNTBweHxlc3RhdGVyZW1vdGVlbWFpbFwibGlua2VkcmlnaHQ7c2lnbmFsZm9ybWFsMS5odG1sc2lnbnVwcHJpbmNlZmxvYXQ6LnBuZ1wiIGZvcnVtLkFjY2Vzc3BhcGVyc3NvdW5kc2V4dGVuZEhlaWdodHNsaWRlclVURi04XCImYW1wOyBCZWZvcmUuIFdpdGhzdHVkaW9vd25lcnNtYW5hZ2Vwcm9maXRqUXVlcnlhbm51YWxwYXJhbXNib3VnaHRmYW1vdXNnb29nbGVsb25nZXJpKyspIHtpc3JhZWxzYXlpbmdkZWNpZGVob21lXCI+aGVhZGVyZW5zdXJlYnJhbmNocGllY2VzYmxvY2s7c3RhdGVkdG9wXCI+PHJhY2luZ3Jlc2l6ZS0tJmd0O3BhY2l0eXNleHVhbGJ1cmVhdS5qcGdcIiAxMCwwMDBvYnRhaW50aXRsZXNhbW91bnQsIEluYy5jb21lZHltZW51XCIgbHlyaWNzdG9kYXkuaW5kZWVkY291bnR5X2xvZ28uRmFtaWx5bG9va2VkTWFya2V0bHNlIGlmUGxheWVydHVya2V5KTt2YXIgZm9yZXN0Z2l2aW5nZXJyb3JzRG9tYWlufWVsc2V7aW5zZXJ0QmxvZzwvZm9vdGVybG9naW4uZmFzdGVyYWdlbnRzPGJvZHkgMTBweCAwcHJhZ21hZnJpZGF5anVuaW9yZG9sbGFycGxhY2VkY292ZXJzcGx1Z2luNSwwMDAgcGFnZVwiPmJvc3Rvbi50ZXN0KGF2YXRhcnRlc3RlZF9jb3VudGZvcnVtc3NjaGVtYWluZGV4LGZpbGxlZHNoYXJlc3JlYWRlcmFsZXJ0KGFwcGVhclN1Ym1pdGxpbmVcIj5ib2R5XCI+XG4qIFRoZVRob3VnaHNlZWluZ2plcnNleU5ld3M8L3ZlcmlmeWV4cGVydGluanVyeXdpZHRoPUNvb2tpZVNUQVJUIGFjcm9zc19pbWFnZXRocmVhZG5hdGl2ZXBvY2tldGJveFwiPlxuU3lzdGVtIERhdmlkY2FuY2VydGFibGVzcHJvdmVkQXByaWwgcmVhbGx5ZHJpdmVyaXRlbVwiPm1vcmVcIj5ib2FyZHNjb2xvcnNjYW1wdXNmaXJzdCB8fCBbXTttZWRpYS5ndWl0YXJmaW5pc2h3aWR0aDpzaG93ZWRPdGhlciAucGhwXCIgYXNzdW1lbGF5ZXJzd2lsc29uc3RvcmVzcmVsaWVmc3dlZGVuQ3VzdG9tZWFzaWx5IHlvdXIgU3RyaW5nXG5cbldoaWx0YXlsb3JjbGVhcjpyZXNvcnRmcmVuY2h0aG91Z2hcIikgKyBcIjxib2R5PmJ1eWluZ2JyYW5kc01lbWJlcm5hbWVcIj5vcHBpbmdzZWN0b3I1cHg7XCI+dnNwYWNlcG9zdGVybWFqb3IgY29mZmVlbWFydGlubWF0dXJlaGFwcGVuPC9uYXY+a2Fuc2FzbGlua1wiPkltYWdlcz1mYWxzZXdoaWxlIGhzcGFjZTAmYW1wOyBcblxuSW4gIHBvd2VyUG9sc2tpLWNvbG9yam9yZGFuQm90dG9tU3RhcnQgLWNvdW50Mi5odG1sbmV3c1wiPjAxLmpwZ09ubGluZS1yaWdodG1pbGxlcnNlbmlvcklTQk4gMDAsMDAwIGd1aWRlc3ZhbHVlKWVjdGlvbnJlcGFpci54bWxcIiAgcmlnaHRzLmh0bWwtYmxvY2tyZWdFeHA6aG92ZXJ3aXRoaW52aXJnaW5waG9uZXM8L3RyPlxydXNpbmcgXG5cdHZhciA+Jyk7XG5cdDwvdGQ+XG48L3RyPlxuYmFoYXNhYnJhc2lsZ2FsZWdvbWFneWFycG9sc2tpc3Jwc2tpXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDg4XHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU3XHUwMEFFXHUwMDgwXHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU3XHUwMEI5XHUwMDgxXHUwMEU5XHUwMEFCXHUwMDk0XHUwMEU0XHUwMEJGXHUwMEExXHUwMEU2XHUwMDgxXHUwMEFGXHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU2XHUwMDg4XHUwMDkxXHUwMEU0XHUwMEJCXHUwMEFDXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU1XHUwMDg1XHUwMEFDXHUwMEU1XHUwMDhGXHUwMEI4XHUwMEU3XHUwMEFFXHUwMEExXHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU4XHUwMEFFXHUwMEJBXHUwMEU1XHUwMDlEXHUwMDlCXHUwMEU1XHUwMDhGXHUwMEFGXHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU2XHUwMDlDXHUwMDhEXHUwMEU1XHUwMDhBXHUwMEExXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU5XHUwMDk3XHUwMEI0XHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU0XHUwMEJBXHUwMEE3XHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU4XHUwMDg3XHUwMEFBXHUwMEU1XHUwMEI3XHUwMEIxXHUwMEU0XHUwMEJDXHUwMDgxXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU2XHUwMDlGXHUwMEE1XHUwMEU3XHUwMDlDXHUwMDhCXHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU4XHUwMDgxXHUwMDk0XHUwMEU3XHUwMEIzXHUwMEJCXHUwMEU2XHUwMEIyXHUwMEExXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU3XHUwMEFCXHUwMDk5XHUwMEU2XHUwMDg5XHUwMDgwXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU4XHUwMEFGXHUwMDg0XHUwMEU4XHUwMEFFXHUwMEJBXHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU1XHUwMEJGXHUwMDgzXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU3XHUwMEFCXHUwMEEwXHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU2XHUwMDg4XHUwMEI3XHUwMEU5XHUwMEE2XHUwMDk2XHUwMEU5XHUwMEExXHUwMEI1XHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU4XHUwMDgwXHUwMDg1XHUwMEU2XHUwMDhBXHUwMDgwXHUwMEU2XHUwMDlDXHUwMEFGXHUwMEU5XHUwMDk3XHUwMEFFXHUwMEU5XHUwMEEyXHUwMDk4XHUwMEU3XHUwMDlCXHUwMEI4XHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU0XHUwMEI4XHUwMDhCXHUwMEU4XHUwMEJEXHUwMEJEXHUwMEU2XHUwMDkwXHUwMDlDXHUwMEU3XHUwMEI0XHUwMEEyXHUwMEU0XHUwMEJEXHUwMEJGXHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU4XHUwMEJEXHUwMEFGXHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU1XHUwMDlDXHUwMEE4XHUwMEU3XHUwMEJBXHUwMEJGXHUwMEU0XHUwMEI4XHUwMEJCXHUwMEU5XHUwMEEyXHUwMDk4XHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU2XHUwMDk2XHUwMDk5XHUwMEU4XHUwMEE3XHUwMDg2XHUwMEU5XHUwMEEyXHUwMDkxXHUwMEU1XHUwMDlCXHUwMDlFXHUwMEU1XHUwMEE0XHUwMDhEXHUwMEU2XHUwMEIzXHUwMEE4XHUwMEU1XHUwMDg2XHUwMDhDXHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU3XHUwMEJCXHUwMDlDXHUwMEU2XHUwMDk0XHUwMEI2XHUwMEU4XHUwMDk3XHUwMDhGXHUwMEU1XHUwMDg2XHUwMDg1XHUwMEU1XHUwMEFFXHUwMEI5XHUwMEU2XHUwMDhFXHUwMEE4XHUwMEU4XHUwMDhEXHUwMDkwXHUwMEU1XHUwMEI4XHUwMDgyXHUwMEU1XHUwMDlDXHUwMEJBXHUwMEU2XHUwMEI2XHUwMDg4XHUwMEU2XHUwMDgxXHUwMEFGXHUwMEU3XHUwMEE5XHUwMEJBXHUwMEU5XHUwMDk3XHUwMEI0XHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU1XHUwMEI4XHUwMDgzXHUwMEU0XHUwMEJCXHUwMDgwXHUwMEU0XHUwMEI5XHUwMDg4XHUwMEU1XHUwMEE1XHUwMEJEXHUwMEU1XHUwMDhGXHUwMDhCXHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU2XHUwMEI0XHUwMEJCXHUwMEU1XHUwMDlCXHUwMEJFXHUwMEU3XHUwMDg5XHUwMDg3XHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU1XHUwMEIxXHUwMDk1XHUwMEU1XHUwMEE2XHUwMDgyXHUwMEU2XHUwMDlFXHUwMDlDXHUwMEU2XHUwMDg5XHUwMDhCXHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU5XHUwMDk3XHUwMEJCXHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU1XHUwMEJDXHUwMDhGXHUwMEU1XHUwMDhDXHUwMDk3XHUwMEU0XHUwMEJBXHUwMEFDXHUwMEU2XHUwMDhGXHUwMDkwXHUwMEU0XHUwMEJFXHUwMDlCXHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU2XHUwMDlCXHUwMEI0XHUwMEU1XHUwMEE0XHUwMDlBXHUwMEU4XHUwMEJGXHUwMDk5XHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU3XHUwMEIzXHUwMEJCXHUwMEU3XHUwMEJCXHUwMDlGXHUwMEU3XHUwMDlGXHUwMEE1XHUwMEU5XHUwMDgxXHUwMDkzXHUwMEU2XHUwMEI4XHUwMEI4XHUwMEU2XHUwMDg4XHUwMDhGXHUwMEU1XHUwMEI5XHUwMEJGXHUwMEU1XHUwMDkxXHUwMDhBXHUwMEU1XHUwMDg1XHUwMEI2XHUwMEU0XHUwMEJCXHUwMDk2XHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU4XHUwMEExXHUwMEE4XHUwMEU1XHUwMEFFXHUwMDg5XHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU3XHUwMEFDXHUwMEFDXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU0XHUwMEJDXHUwMDlBXHUwMEU1XHUwMDkxXHUwMDk4XHUwMEU4XHUwMEJGXHUwMDlCXHUwMEU4XHUwMEExXHUwMDhDXHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU1XHUwMDg3XHUwMEJCXHUwMEU3XHUwMDg5XHUwMDg4XHUwMEU2XHUwMDlEXHUwMDgzXHUwMEU3XHUwMDk0XHUwMEI1XHUwMEU1XHUwMEFEXHUwMDkwXHUwMEU0XHUwMEI4XHUwMDk2XHUwMEU3XHUwMDk1XHUwMDhDXHUwMEU4XHUwMEFFXHUwMEJFXHUwMEU4XHUwMEFFXHUwMEExXHUwMEU1XHUwMDg1XHUwMDhEXHUwMEU4XHUwMEI0XHUwMEI5XHUwMEU2XHUwMDk1XHUwMDk5XHUwMEU4XHUwMDgyXHUwMEIyXHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU1XHUwMDg1XHUwMEE1XHUwMEU2XHUwMEI0XHUwMEJCXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU0XHUwMEJCXHUwMDk2XHUwMEU0XHUwMEJCXHUwMEFDXHUwMEU1XHUwMDk1XHUwMDg2XHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU1XHUwMDhEXHUwMDlBXHUwMEU1XHUwMEFFXHUwMEEyXHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU1XHUwMDlDXHUwMEE4XHUwMEU0XHUwMEI4XHUwMDhBXHUwMEU2XHUwMEI1XHUwMEI3XHUwMEU1XHUwMEE2XHUwMDgyXHUwMEU0XHUwMEJEXHUwMDk1XHUwMEU1XHUwMEI3XHUwMEIyXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU3XHUwMDk1XHUwMDk5XHUwMEU4XHUwMEE4XHUwMDgwXHUwMEU4XHUwMEFGXHUwMEE2XHUwMEU3XHUwMEJCXHUwMDg2XHUwMEU3XHUwMEE0XHUwMEJFXHUwMEU1XHUwMDhDXHUwMEJBXHUwMEU3XHUwMDk5XHUwMEJCXHUwMEU1XHUwMEJEXHUwMDk1XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU3XHUwMEFCXHUwMDk5XHUwMEU5XHUwMDlDXHUwMDgwXHUwMEU4XHUwMEE2XHUwMDgxXHUwMEU0XHUwMEJCXHUwMEI3XHUwMEU2XHUwMEEwXHUwMEJDXHUwMEU2XHUwMDk0XHUwMEFGXHUwMEU2XHUwMDhDXHUwMDgxXHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU5XHUwMDk5XHUwMDg1XHUwMEU5XHUwMDkzXHUwMEJFXHUwMEU2XHUwMDhFXHUwMEE1XHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU1XHUwMEJCXHUwMEJBXHUwMEU4XHUwMEFFXHUwMEJFXHUwMEU2XHUwMDlDXHUwMDhCXHUwMEU1XHUwMDhGXHUwMDhCXHUwMEU5XHUwMDk4XHUwMDg1XHUwMEU4XHUwMEFGXHUwMEJCXHUwMEU2XHUwMEIzXHUwMDk1XHUwMEU1XHUwMEJFXHUwMDhCXHUwMEU0XHUwMEJEXHUwMDhEXHUwMEU3XHUwMEJEXHUwMEFFXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU2XHUwMEI1XHUwMDhFXHUwMEU5XHUwMDgwXHUwMDg5XHUwMEU2XHUwMDhCXHUwMEE5XHUwMEU4XHUwMEJGXHUwMDk5XHUwMEU2XHUwMEEwXHUwMEI3XHUwMEU1XHUwMEJEXHUwMDkzXHUwMEU1XHUwMDg5XHUwMDhEXHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU3XHUwMEIxXHUwMEJCXHUwMEU2XHUwMDhFXHUwMDkyXHUwMEU4XHUwMEExXHUwMDhDXHUwMEU1XHUwMDlCXHUwMEEwXHUwMEU0XHUwMEI4XHUwMEJBXHUwMEU0XHUwMEJBXHUwMEE0XHUwMEU2XHUwMDk4XHUwMDkzXHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU1XHUwMDkwXHUwMDhFXHUwMEU5XHUwMDlGXHUwMEIzXHUwMEU0XHUwMEI5XHUwMDkwXHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU5XHUwMDgwXHUwMDlBXHUwMEU4XHUwMEJGXHUwMDg3XHUwMEU4XHUwMEExXHUwMDhDXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU3XHUwMEE3XHUwMDkxXHUwMEU2XHUwMDhBXHUwMDgwXHUwMEU1XHUwMDhGXHUwMEFGXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU4XHUwMEFFXHUwMEJFXHUwMEU1XHUwMEE0XHUwMDg3XHUwMEU1XHUwMDkwXHUwMDg4XHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU3XHUwMEE0XHUwMEJFXHUwMEU0XHUwMEJDXHUwMDlBXHUwMEU3XHUwMEEwXHUwMDk0XHUwMEU3XHUwMEE5XHUwMEI2XHUwMEU0XHUwMEI4XHUwMDkzXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU5XHUwMDgzXHUwMEE4XHUwMEU5XHUwMEExXHUwMEI5XHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU4XHUwMEJGXHUwMDk5XHUwMEU5XHUwMDg3XHUwMDhDXHUwMEU4XHUwMEJGXHUwMDk4XHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU1XHUwMEJDXHUwMDgwXHUwMEU1XHUwMEE3XHUwMDhCXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU1XHUwMDg2XHUwMEI1XHUwMEU3XHUwMDk0XHUwMEI1XHUwMEU4XHUwMDg0XHUwMDkxXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU3XHUwMDg5XHUwMDhDXHUwMEU1XHUwMEI4XHUwMEFFXHUwMEU1XHUwMDhBXHUwMEE5XHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU1XHUwMDhDXHUwMDk2XHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU2XHUwMEJBXHUwMDkwXHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU0XHUwMEI5XHUwMEEwXHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU1XHUwMDlEXHUwMDgwXHUwMEU2XHUwMEI1XHUwMDhGXHUwMEU4XHUwMEE3XHUwMDg4XHUwMEU2XHUwMDhBXHUwMDk1XHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU3XHUwMEE4XHUwMDhCXHUwMEU4XHUwMEE2XHUwMDgxXHUwMEU2XHUwMEIxXHUwMDgyXHUwMEU2XHUwMDgwXHUwMDhFXHUwMEU0XHUwMEI5XHUwMDg4XHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU1XHUwMDgwXHUwMDk5XHUwMEU1XHUwMDhBXHUwMDlGXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU0XHUwMEI4XHUwMEJCXHUwMEU4XHUwMEE2XHUwMDgxXHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU1XHUwMDg5XHUwMDhEXHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU4XHUwMEFFXHUwMEFGXHUwMEU1XHUwMDlGXHUwMDhFXHUwMEU1XHUwMEI4XHUwMDgyXHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU2XHUwMEIzXHUwMDk1XHUwMEU3XHUwMDk0XHUwMEI1XHUwMEU1XHUwMEJEXHUwMEIxXHUwMEU2XHUwMDhCXHUwMDlCXHUwMEU4XHUwMDgxXHUwMDk4XHUwMEU1XHUwMEEzXHUwMEIwXHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU0XHUwMEJCXHUwMEJCXHUwMEU0XHUwMEJEXHUwMDk1XHUwMEU1XHUwMDgxXHUwMEE1XHUwMEU1XHUwMEJBXHUwMEI3XHUwMEU2XHUwMDk1XHUwMEIwXHUwMEU2XHUwMDhEXHUwMEFFXHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU2XHUwMEIxXHUwMEJEXHUwMEU4XHUwMEJEXHUwMEE2XHUwMEU0XHUwMEJCXHUwMDhCXHUwMEU3XHUwMEJCXHUwMDhEXHUwMEU0XHUwMEJEXHUwMDg2XHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU0XHUwMEJBXHUwMEE0XHUwMEU2XHUwMEI1XHUwMDgxXHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU0XHUwMEJBXHUwMEE3XHUwMEU2XHUwMDg5XHUwMDgwXHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU3XHUwMDk0XHUwMEI1XHUwMEU4XHUwMEFGXHUwMDlEXHUwMEU2XHUwMDk4XHUwMEJFXHUwMEU3XHUwMEE0XHUwMEJBXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU0XHUwMEJBXHUwMDlCXHUwMEU1XHUwMDhEXHUwMDk1XHUwMEU0XHUwMEJEXHUwMDhEXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU1XHUwMDkxXHUwMDk4XHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU2XHUwMDlFXHUwMDkwXHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU1XHUwMDlCXHUwMEJFXHUwMEU2XHUwMDk3XHUwMDg1XHUwMEU2XHUwMEI4XHUwMEI4XHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU1XHUwMDg1XHUwMEI3XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU3XHUwMEIzXHUwMEJCXHUwMEU1XHUwMDg4XHUwMDk3XHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU1XHUwMDhGXHUwMDhCXHUwMEU1XHUwMEI4XHUwMDk2XHUwMEU1XHUwMEFEXHUwMDkwXHUwMEU1XHUwMEFGXHUwMDg2XHUwMEU3XHUwMEEwXHUwMDgxXHUwMEU5XHUwMEEyXHUwMDkxXHUwMEU5XHUwMDgxXHUwMDkzXHUwMEU2XHUwMDhFXHUwMEE3XHUwMEU1XHUwMDg4XHUwMEI2XHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU1XHUwMDhDXHUwMEJBXHUwMEU1XHUwMDlGXHUwMEJBXHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU0XHUwMEI4XHUwMDhBXHUwMEU5XHUwMDg3XHUwMDhEXHUwMEU4XHUwMEE2XHUwMDgxXHUwMEU3XHUwMEFDXHUwMEFDXHUwMEU0XHUwMEJBXHUwMDhDXHUwMEU1XHUwMDk2XHUwMDlDXHUwMEU2XHUwMEFDXHUwMEEyXHUwMEU4XHUwMEJGXHUwMDlCXHUwMEU1XHUwMDg1XHUwMEE1XHUwMEU1XHUwMDhGXHUwMDhCXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU4XHUwMEJGXHUwMDk5XHUwMEU0XHUwMEJBXHUwMDlCXHUwMEU4XHUwMDgwXHUwMDgzXHUwMEU4XHUwMEFGXHUwMDk1XHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU1XHUwMDlGXHUwMEI5XHUwMEU4XHUwMEFFXHUwMEFEXHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU0XHUwMEI4XHUwMDhBXHUwMEU2XHUwMDk0XHUwMEJGXHUwMEU1XHUwMEJBXHUwMDlDXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU0XHUwMEI4XHUwMEJBXHUwMEU3XHUwMDhFXHUwMEFGXHUwMEU1XHUwMEEyXHUwMDgzXHUwMEU5XHUwMEE2XHUwMDk5XHUwMEU2XHUwMEI4XHUwMEFGXHUwMEU1XHUwMDkwXHUwMDhDXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU1XHUwMEE4XHUwMEIxXHUwMEU0XHUwMEI5XHUwMDkwXHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU5XHUwMDgwXHUwMDgxXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU1XHUwMEFFXHUwMDlBXHUwMEU1XHUwMEJDXHUwMDgwXHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU2XHUwMEEwXHUwMDg3XHUwMEU1XHUwMDg3XHUwMDg2XHUwMEU2XHUwMEFDXHUwMEEyXHUwMEU4XHUwMEJGXHUwMDhFXHUwMEU4XHUwMEE3XHUwMEEzXHUwMEU1XHUwMDg2XHUwMEIzXHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU0XHUwMEI4XHUwMDhCXHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU1XHUwMDhGXHUwMDhBXHUwMEU4XHUwMEI0XHUwMEEzXHUwMEU0XHUwMEJCXHUwMEJCXHUwMEU2XHUwMDg4XHUwMDk2XHUwMEU4XHUwMDgwXHUwMDg1XHUwMEU1XHUwMEFFXHUwMEEyXHUwMEU2XHUwMDg4XHUwMEI3XHUwMEU0XHUwMEJCXHUwMEEzXHUwMEU4XHUwMEExXHUwMEE4XHUwMEU3XHUwMEE3XHUwMEFGXHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU1XHUwMEE1XHUwMEIzXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU2XHUwMDk1XHUwMEIwXHUwMEU3XHUwMEEwXHUwMDgxXHUwMEU5XHUwMDk0XHUwMDgwXHUwMEU1XHUwMDk0XHUwMEFFXHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU3XHUwMEE2XHUwMEJCXHUwMEU3XHUwMEJBXHUwMEJGXHUwMEU1XHUwMEJBXHUwMDk0XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU1XHUwMDg4XHUwMDk3XHUwMEU4XHUwMEExXHUwMEE4XHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU1XHUwMDkwXHUwMDhDXHUwMEU3XHUwMEJDXHUwMDk2XHUwMEU4XHUwMEJFXHUwMDkxXHUwMEU3XHUwMEJCXHUwMDlGXHUwMEU4XHUwMEFFXHUwMEExXHUwMEU2XHUwMDlGXHUwMEE1XHUwMEU4XHUwMEFGXHUwMEEyXHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU4XHUwMEE2XHUwMDgxXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU2XHUwMDlFXHUwMDg0XHUwMEU1XHUwMEJFXHUwMDg4XHUwMEU1XHUwMEE0XHUwMDlBXHUwMEU2XHUwMDkyXHUwMEFEXHUwMEU2XHUwMDk0XHUwMEJFXHUwMEU3XHUwMEJCXHUwMDg0XHUwMEU3XHUwMEJCXHUwMDg3XHUwMEU2XHUwMDk0XHUwMEJGXHUwMEU3XHUwMEFEXHUwMDk2XHUwMEU3XHUwMDlCXHUwMEI0XHUwMEU2XHUwMDhFXHUwMEE1XHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU1XHUwMDhBXHUwMDlCXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU2XHUwMEJBXHUwMDkwXHUwMEU2XHUwMDk5XHUwMDgyXHUwMEU5XHUwMDk2XHUwMDkzXHUwMEU3XHUwMDlDXHUwMDhCXHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU3XHUwMDgzXHUwMEFEXHUwMEU5XHUwMDk3XHUwMEE4XHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU5XHUwMDk0XHUwMEFFXHUwMEU0XHUwMEI4XHUwMDkzXHUwMEU1XHUwMDhDXHUwMEJBXHUwMEU5XHUwMDlEXHUwMDlFXHUwMEU1XHUwMEI4XHUwMEI4XHUwMEU4XHUwMDhCXHUwMEIxXHUwMEU4XHUwMEFGXHUwMEFEXHUwMEU3XHUwMDk5XHUwMEJFXHUwMEU1XHUwMEJBXHUwMEE2XHUwMEU1XHUwMEI4XHUwMDhDXHUwMEU2XHUwMDlDXHUwMDlCXHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU1XHUwMEE1XHUwMEIzXHUwMEU2XHUwMEFGXHUwMDk0XHUwMEU4XHUwMEJFXHUwMDgzXHUwMEU3XHUwMDlGXHUwMEE1XHUwMEU4XHUwMEFGXHUwMDg2XHUwMEU4XHUwMEE3XHUwMDg0XHUwMEU1XHUwMEFFXHUwMDlBXHUwMEU1XHUwMEJCXHUwMEJBXHUwMEU4XHUwMEFFXHUwMEFFXHUwMEU5XHUwMDgzXHUwMEE4XHUwMEU5XHUwMDk3XHUwMEE4XHUwMEU2XHUwMDg0XHUwMDhGXHUwMEU4XHUwMEE3XHUwMDgxXHUwMEU3XHUwMEIyXHUwMEJFXHUwMEU1XHUwMEJEXHUwMEE5XHUwMEU2XHUwMDk3XHUwMEE1XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU2XHUwMDhGXHUwMDkwXHUwMEU5XHUwMEFCXHUwMDk4XHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU4XHUwMEE4XHUwMDgwXHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU5XHUwMDlEXHUwMEEyXHUwMEU1XHUwMDlGXHUwMEJBXHUwMEU5XHUwMDg3XHUwMDkxXHUwMEU1XHUwMEE0XHUwMDg0XHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU2XHUwMDlEXHUwMDgzXHUwMEU5XHUwMDk5XHUwMDkwXHUwMEU1XHUwMEJEXHUwMEIxXHUwMEU3XHUwMDg5XHUwMDg3XHUwMEU5XHUwMDkzXHUwMEI2XHUwMEU4XHUwMEExXHUwMDhDXHUwMEU4XHUwMEJGXHUwMDk4XHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU0XHUwMEJBXHUwMEFCXHUwMEU3XHUwMDg5XHUwMEE5XHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU4XHUwMDkwXHUwMEE1XHUwMEU2XHUwMEI3XHUwMEJCXHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU0XHUwMEI4XHUwMDkzXHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU4XHUwMEJGXHUwMDk5XHUwMEU3XHUwMEE3XHUwMDhEXHUwMEU4XHUwMEFGXHUwMDlEXHUwMEU5XHUwMEEyXHUwMDk4XHUwMEU4XHUwMEI1XHUwMEI3XHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU1XHUwMDhBXHUwMEExXHUwMEU1XHUwMDg1XHUwMEFDXHUwMEU1XHUwMDkxXHUwMDhBXHUwMEU4XHUwMEFFXHUwMEIwXHUwMEU1XHUwMEJEXHUwMDk1XHUwMEU3XHUwMEFFXHUwMDgwXHUwMEU0XHUwMEJCXHUwMDhCXHUwMEU4XHUwMEI0XHUwMEE4XHUwMEU5XHUwMDg3XHUwMDhGXHUwMEU3XHUwMDk0XHUwMEI3XHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU1XHUwMEJEXHUwMEIxXHUwMEU1XHUwMDkzXHUwMDhEXHUwMEU1XHUwMEJDXHUwMDk1XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU2XHUwMDhBXHUwMEE1XHUwMEU1XHUwMDkxXHUwMDhBXHUwMEU5XHUwMDgzXHUwMEE4XHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU1XHUwMEJGXHUwMEFCXHUwMEU5XHUwMDgwXHUwMDlGXHUwMEU1XHUwMDkyXHUwMEE4XHUwMEU4XHUwMEFGXHUwMEEyXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU1XHUwMEIwXHUwMDlBXHUwMEU2XHUwMEIzXHUwMEE4XHUwMEU2XHUwMDg0XHUwMDhGXHUwMEU3XHUwMDk0XHUwMEIzXHUwMEU4XHUwMEFGXHUwMEI3XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU2XHUwMEEwXHUwMEExXHUwMEU1XHUwMEJBXHUwMDk0XHUwMEU4XHUwMEFGXHUwMEE1XHUwMEU1XHUwMDhFXHUwMDg2XHUwMEU1XHUwMDhGXHUwMEIyXHUwMEU1XHUwMDhGXHUwMEFBXHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU4XHUwMEJGXHUwMDk0XHUwMEU1XHUwMDlCXHUwMDlFXHUwMEU4XHUwMEI0XHUwMEFEXHUwMEU0XHUwMEI5XHUwMEIwXHUwMEU1XHUwMDkwXHUwMDhEXHUwMEU3XHUwMEE3XHUwMEIwXHUwMEU0XHUwMEI4XHUwMEJBXHUwMEU0XHUwMEJBXHUwMDg2XHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU1XHUwMDhBXHUwMDlGXHUwMEU4XHUwMEFGXHUwMEI0XHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU0XHUwMEJFXHUwMDlCXHUwMEU1XHUwMEJBXHUwMDk0XHUwMEU1XHUwMEFEXHUwMEE5XHUwMEU1XHUwMEFEXHUwMDkwXHUwMEU0XHUwMEI4XHUwMDkzXHUwMEU5XHUwMEEyXHUwMDk4XHUwMEU3XHUwMEE4XHUwMDhCXHUwMEU1XHUwMEJBXHUwMDhGXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU4XHUwMDg4XHUwMEFDXHUwMEU2XHUwMDlDXHUwMDgzXHUwMEU1XHUwMDkzXHUwMEExXHUwMEU1XHUwMDhGXHUwMEFBXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU1XHUwMDg1XHUwMEI2XHUwMEU1XHUwMEFFXHUwMDgzXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU2XHUwMDhBXHUwMEE0XHUwMEU4XHUwMDgwXHUwMDhDXHUwMEU0XHUwMEI4XHUwMDk0XHUwMEU0XHUwMEJCXHUwMDhBXHUwMEU1XHUwMEE0XHUwMEE5XHUwMEU3XHUwMEFBXHUwMDk3XHUwMEU1XHUwMDhGXHUwMEEzXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU2XHUwMDgwXHUwMDgxXHUwMEU3XHUwMDhBXHUwMEI2XHUwMEU2XHUwMDgwXHUwMDgxXHUwMEU3XHUwMDg5XHUwMEI5XHUwMEU1XHUwMDg4XHUwMEFCXHUwMEU4XHUwMEFFXHUwMEE0XHUwMEU0XHUwMEI4XHUwMEJBXHUwMEU1XHUwMEJGXHUwMDg1XHUwMEU5XHUwMEExXHUwMEJCXHUwMEU2XHUwMDlCXHUwMEI0XHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU1XHUwMEIwXHUwMDhGXHUwMEU4XHUwMEFGXHUwMEI0XHUwMEU2XHUwMDg4XHUwMDkxXHUwMEU1XHUwMDgwXHUwMDkxXHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU0XHUwMEI4XHUwMEJBXHUwMEU1XHUwMEFBXHUwMDkyXHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU1XHUwMDhDXHUwMDg1XHUwMEU2XHUwMDhCXHUwMEFDXHUwMEU5XHUwMDgyXHUwMEEzXHUwMEU0XHUwMEI5XHUwMDg4XHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU2XHUwMEEwXHUwMEI3XHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU1XHUwMDg2XHUwMDg1XHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU1XHUwMDkwXHUwMEE2XHUwMEU2XHUwMEEwXHUwMEI5XHUwMEU2XHUwMDhEXHUwMEFFXHUwMEU3XHUwMDk0XHUwMEI1XHUwMEU4XHUwMEE3XHUwMDg2XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU5XHUwMDk5XHUwMEEyXHUwMEU1XHUwMDg1XHUwMEI3XHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU4XHUwMEJGXHUwMDg3XHUwMEU3XHUwMEE4XHUwMDhCXHUwMEU3XHUwMDk0XHUwMEIxXHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU2XHUwMDg5XHUwMDhEXHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU4XHUwMEJGXHUwMDg3XHUwMEU2XHUwMEFEXHUwMEEzXHUwMEU1XHUwMDlDXHUwMEE4XHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU2XHUwMDk4XHUwMDlGXHUwMEU2XHUwMDk1XHUwMDg1XHUwMEU0XHUwMEJBXHUwMDhCXHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU3XHUwMEIzXHUwMEJCXHUwMEU2XHUwMEEwXHUwMDg3XHUwMEU5XHUwMEEyXHUwMDk4XHUwMEU1XHUwMDk1XHUwMDg2XHUwMEU1XHUwMDhBXHUwMEExXHUwMEU4XHUwMEJFXHUwMDkzXHUwMEU1XHUwMDg1XHUwMEE1XHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU3XHUwMDlCXHUwMEI0XHUwMEU1XHUwMDlGXHUwMEJBXHUwMEU3XHUwMEExXHUwMDgwXHUwMEU2XHUwMDk1XHUwMDk5XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU0XHUwMEJBXHUwMDg2XHUwMEU4XHUwMEE3XHUwMEEzXHUwMEU1XHUwMEJCXHUwMEJBXHUwMEU3XHUwMEFEXHUwMDkxXHUwMEU3XHUwMEJCXHUwMDkzXHUwMEU2XHUwMDlFXHUwMDlDXHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU3XHUwMDkwXHUwMDgzXHUwMEU5XHUwMDgwXHUwMDlBXHUwMEU3XHUwMDlGXHUwMEE1XHUwMEU4XHUwMEFFXHUwMEExXHUwMEU1XHUwMDg4XHUwMDkyXHUwMEU1XHUwMEFGXHUwMEI5XHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU4XHUwMDg5XHUwMEJBXHUwMEU2XHUwMDlDXHUwMEFGXHUwMEU3XHUwMDlCXHUwMEI4XHUwMEU1XHUwMDg2XHUwMDhDXHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU3XHUwMDlDXHUwMDlGXHUwMEU3XHUwMDlBXHUwMDg0XHUwMEU1XHUwMEJCXHUwMEJBXHUwMEU3XHUwMEFCXHUwMDhCXHUwMEU3XHUwMEFEXHUwMDg5XHUwMEU3XHUwMEJBXHUwMEE3XHUwMEU3XHUwMEIxXHUwMEJCXHUwMEU1XHUwMDlFXHUwMDhCXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU5XHUwMEFBXHUwMDhDXHUwMEU1XHUwMEFFXHUwMDlFXHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU1XHUwMDg4XHUwMEI2XHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU4XHUwMDg3XHUwMEFBXHUwMEU2XHUwMEEwXHUwMDg3XHUwMEU3XHUwMEFEXHUwMEJFXHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU0XHUwMEI4XHUwMDhCXHUwMEU1XHUwMDhFXHUwMDlGXHUwMEU1XHUwMDg4XHUwMDlCXHUwMEU2XHUwMDk3XHUwMEEwXHUwMEU2XHUwMEIzXHUwMDk1XHUwMEU1XHUwMDg1XHUwMEI2XHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU1XHUwMDgwXHUwMDhCXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU1XHUwMDg4XHUwMDg3XHUwMEU2XHUwMDhDXHUwMDg3XHUwMEU1XHUwMDhEXHUwMDk3XHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU5XHUwMDk3XHUwMEFEXHUwMEU5XHUwMDlCXHUwMDg2XHUwMEU1XHUwMDlCXHUwMEEyXHUwMEU3XHUwMEFDXHUwMEFDXHUwMEU0XHUwMEI4XHUwMDg5XHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU2XHUwMEIzXHUwMEE4XHUwMEU1XHUwMDlCXHUwMEEwXHUwMEU2XHUwMEFEXHUwMEE0XHUwMEU3XHUwMDg1XHUwMEE3XHUwMEU3XHUwMDg5XHUwMDg3XHUwMEU2XHUwMEI3XHUwMEIxXHUwMEU1XHUwMDlDXHUwMEIzXHUwMEU1XHUwMDk1XHUwMDg2XHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU1XHUwMEI5XHUwMEJGXHUwMEU1XHUwMEI3XHUwMDlFXHUwMEU2XHUwMDk3XHUwMEE1XHUwMEU2XHUwMDlDXHUwMDlGXHUwMEU5XHUwMEFCXHUwMDk4XHUwMEU3XHUwMEJBXHUwMEE3XHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU4XHUwMEJGXHUwMDkxXHUwMEU3XHUwMEJCXHUwMEJDXHUwMEU1XHUwMDkwXHUwMDg4XHUwMEU4XHUwMEExXHUwMEE4XHUwMEU3XHUwMEE0XHUwMEJBXHUwMEU0XHUwMEI4XHUwMDkzXHUwMEU4XHUwMEJFXHUwMDkxXHUwMEU4XHUwMEExXHUwMDhDXHUwMEU0XHUwMEI4XHUwMEJBXHUwMEU0XHUwMEJBXHUwMEE0XHUwMEU5XHUwMDgwXHUwMDlBXHUwMEU4XHUwMEFGXHUwMDg0XHUwMEU0XHUwMEJCXHUwMEI3XHUwMEU4XHUwMEE3XHUwMDg5XHUwMEU1XHUwMEJFXHUwMDk3XHUwMEU3XHUwMEIyXHUwMEJFXHUwMEU1XHUwMDhEXHUwMDhFXHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU1XHUwMEJBXHUwMEFEXHUwMEU1XHUwMEFFXHUwMDhDXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU2XHUwMDg0XHUwMDlGXHUwMEU4XHUwMEE3XHUwMDg5XHUwMEU1XHUwMEFFXHUwMDg5XHUwMEU4XHUwMEEzXHUwMDg1XHUwMEU1XHUwMEJFXHUwMDk3XHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU5XHUwMDgyXHUwMEFFXHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU1XHUwMDg4XHUwMEI2XHUwMEU1XHUwMEJBXHUwMEE2XHUwMEU5XHUwMEEzXHUwMDlGXHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU4XHUwMDk5XHUwMEJEXHUwMEU3XHUwMDg0XHUwMEI2XHUwMEU4XHUwMEJEXHUwMEFDXHUwMEU4XHUwMEJEXHUwMEJEXHUwMEU2XHUwMDhBXHUwMEE1XHUwMEU0XHUwMEJCXHUwMEI3XHUwMEU4XHUwMEFFXHUwMEIwXHUwMEU4XHUwMDgwXHUwMDg1XHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU2XHUwMEExXHUwMDg4XHUwMEU4XHUwMEExXHUwMDhDXHUwMEU2XHUwMDk0XHUwMEJGXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU2XHUwMEIwXHUwMDkxXHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU0XHUwMEI4XHUwMDlDXHUwMEU4XHUwMEE1XHUwMEJGXHUwMEU2XHUwMDhGXHUwMDkwXHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU5XHUwMDg1XHUwMDkyXHUwMEU1XHUwMEJBXHUwMDk3XHUwMEU3XHUwMDg0XHUwMEI2XHUwMEU1XHUwMDkwXHUwMDhFXHUwMEU0XHUwMEJCXHUwMDk4XHUwMEU2XHUwMEFDXHUwMEJFXHUwMEU3XHUwMDgzXHUwMEFEXHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU1XHUwMDg5XHUwMDhEXHUwMEU1XHUwMEFFXHUwMDhDXHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU1XHUwMDhGXHUwMDkxXHUwMEU1XHUwMEI4XHUwMDk2XHUwMEU4XHUwMEFFXHUwMEJFXHUwMEU3XHUwMEJEXHUwMEFFXHUwMEU5XHUwMEEyXHUwMDg2XHUwMEU1XHUwMEFGXHUwMEJDXHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU1XHUwMDhDXHUwMEJCXHUwMEU5XHUwMDk5XHUwMEEyXHUwMEU3XHUwMDlDXHUwMDhCXHUwMEU3XHUwMDlDXHUwMDhCXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU1XHUwMDg1XHUwMEI4XHUwMEU1XHUwMDhFXHUwMDlGXHUwMEU1XHUwMDlCXHUwMEEwXHUwMEU1XHUwMEI5XHUwMEIzXHUwMEU1XHUwMDhGXHUwMEIwXHUwMEU1XHUwMDkwXHUwMDg0XHUwMEU3XHUwMEE3XHUwMDhEXHUwMEU1XHUwMEEyXHUwMDlFXHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU2XHUwMDlEXHUwMDkwXHUwMEU2XHUwMDk2XHUwMDk5XHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU1XHUwMEEyXHUwMDlFXHUwMEU0XHUwMEI5XHUwMDhCXHUwMEU1XHUwMDkwXHUwMDhFXHUwMEU4XHUwMDgxXHUwMDhDXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU2XHUwMDk1XHUwMDg4XHUwMEU2XHUwMDlFXHUwMDlDXHUwMEU0XHUwMEJCXHUwMDhBXHUwMEU1XHUwMEI5XHUwMEI0XHUwMEU4XHUwMEFFXHUwMEJBXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU2XHUwMDg4XHUwMDkxXHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU1XHUwMDkxXHUwMDhBXHUwMEU4XHUwMEFGXHUwMDg5XHUwMEU3XHUwMDg5XHUwMDg4XHUwMEU0XHUwMEI4XHUwMEJCXHUwMEU0XHUwMEJGXHUwMEFFXHUwMEU2XHUwMDk0XHUwMEI5XHUwMEU1XHUwMDhGXHUwMDgyXHUwMEU0XHUwMEI4XHUwMDhFXHUwMEU2XHUwMDg5XHUwMDkzXHUwMEU1XHUwMDhEXHUwMEIwXHUwMEU1XHUwMEJGXHUwMEFCXHUwMEU0XHUwMEI5XHUwMDkwXHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU2XHUwMEEyXHUwMEIwXHUwMEU4XHUwMEE3XHUwMDgyXHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU1XHUwMEFEXHUwMDk4XHUwMEU1XHUwMDlDXHUwMEE4XHUwMEU3XHUwMEIyXHUwMEJFXHUwMEU3XHUwMEE1XHUwMDlFXHUwMEU4XHUwMDhFXHUwMEI3XHUwMEU1XHUwMEJFXHUwMDk3XHUwMEU1XHUwMDg4XHUwMEE5XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU3XHUwMEJCXHUwMEE3XHUwMEU3XHUwMEJCXHUwMEFEXHUwMEU0XHUwMEJEXHUwMEEwXHUwMEU0XHUwMEJCXHUwMEFDXHUwMEU4XHUwMEJGXHUwMDk5XHUwMEU0XHUwMEI5XHUwMDg4XHUwMEU2XHUwMEE4XHUwMEExXHUwMEU1XHUwMEJDXHUwMDhGXHUwMEU4XHUwMEFGXHUwMEFEXHUwMEU4XHUwMEE4XHUwMDgwXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU1XHUwMEE0XHUwMDlGXHUwMEU5XHUwMDlCXHUwMDg1XHUwMEU4XHUwMDk5XHUwMDhFXHUwMEU2XHUwMDkzXHUwMDhEXHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU5XHUwMEEzXHUwMDhFXHUwMEU2XHUwMEEwXHUwMEJDXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU4XHUwMEI1XHUwMEI3XHUwMEU3XHUwMEE3XHUwMDkxXHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU4XHUwMDgyXHUwMEIyXHUwMEU3XHUwMDlGXHUwMEFEXHUwMEU0XHUwMEJGXHUwMEExXHUwMEU2XHUwMDlEXHUwMEExXHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU2XHUwMEIyXHUwMEJCXHUwMEU3XHUwMDk2XHUwMDk3XHUwMEU4XHUwMEJGXHUwMDkwXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU0XHUwMEJBXHUwMEE3XHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU0XHUwMEJDXHUwMDlBXHUwMEU4XHUwMEFFXHUwMEFFXHUwMEU1XHUwMEFGXHUwMEJDXHUwMEU4XHUwMDg4XHUwMEFBXHUwMEU1XHUwMDg1XHUwMDg4XHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU4XHUwMDgxXHUwMDk0XHUwMEU3XHUwMDlCXHUwMDlGXHUwMEU1XHUwMDhGXHUwMEFGXHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU1XHUwMDk1XHUwMDhGXHUwMEU5XHUwMEExXHUwMDhDXHUwMEU3XHUwMEJCXHUwMDkzXHUwMEU2XHUwMDlFXHUwMDg0XHUwMEU0XHUwMEJEXHUwMDlDXHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU4XHUwMEIwXHUwMDgzXHUwMEU2XHUwMDlGXHUwMEE1XHUwMEU4XHUwMEIzXHUwMDg3XHUwMEU2XHUwMDk2XHUwMDk5XHUwMEU4XHUwMDg3XHUwMEFBXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU4XHUwMEI0XHUwMDlGXHUwMEU4XHUwMEI0XHUwMEEzXHUwMEU1XHUwMDg2XHUwMDlDXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU4XHUwMEFFXHUwMEJGXHUwMEU5XHUwMDk3XHUwMEFFXHUwMEU1XHUwMEFFXHUwMDlFXHUwMEU2XHUwMDk2XHUwMEJEXHUwMEU2XHUwMDhFXHUwMEE1XHUwMEU1XHUwMDhGXHUwMDk3XHUwMEU4XHUwMEFFXHUwMEE4XHUwMEU4XHUwMEFFXHUwMEJBXHUwMEU5XHUwMDgyXHUwMEEzXHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU1XHUwMDhGXHUwMDhEXHUwMEU5XHUwMEE2XHUwMDg4XHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU1XHUwMEJDXHUwMEJBXHUwMEU1XHUwMEE1XHUwMEIzXHUwMEU2XHUwMDgwXHUwMEE3XHUwMEU4XHUwMDhDXHUwMDgzXHUwMEU1XHUwMDlCXHUwMEI0XHUwMEU2XHUwMDlDXHUwMDhEXHUwMEU1XHUwMDhCXHUwMDk5XHUwMEU0XHUwMEJDXHUwMDkxXHUwMEU5XHUwMDk3XHUwMEIyXHUwMEU0XHUwMEJCXHUwMDhBXHUwMEU2XHUwMDk3XHUwMEE1XHUwMEU1XHUwMEFFXHUwMEEyXHUwMEU2XHUwMDlDXHUwMDhEXHUwMEU4XHUwMEE3XHUwMDgwXHUwMEU3XHUwMDlDXHUwMDhCXHUwMEU1XHUwMDhGXHUwMDgyXHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU3XHUwMDlBXHUwMDg0XHUwMEU4XHUwMEFGXHUwMDlEXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU4XHUwMEFGXHUwMDgxXHUwMEU1XHUwMDlCXHUwMEJFXHUwMEU0XHUwMEI5XHUwMEE2XHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU2XHUwMDk1XHUwMDg4XHUwMEU2XHUwMEI1XHUwMDhCXHUwMEU4XHUwMEFGXHUwMDk1XHUwMEU3XHUwMEE3XHUwMEJCXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU2XHUwMDg5XHUwMDhEXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU1XHUwMDg2XHUwMEIzXHUwMEU1XHUwMEFFXHUwMDlBXHUwMEU4XHUwMDgyXHUwMEExXHUwMEU3XHUwMEE1XHUwMEE4XHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU2XHUwMDk2XHUwMEFEXHUwMEU5XHUwMDlDXHUwMDgwXHUwMEU2XHUwMEIxXHUwMDgyXHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU1XHUwMEJFXHUwMDk3XHUwMEU1XHUwMDhBXHUwMDlFXHUwMEU2XHUwMEIzXHUwMDk1XHUwMEU0XHUwMEI5XHUwMDhCXHUwMEU5XHUwMDk3XHUwMEI0XHUwMEU5XHUwMDg3XHUwMDg3XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU4XHUwMDkwXHUwMEE1XHUwMEU5XHUwMDk0XHUwMDgwXHUwMEU2XHUwMDhBXHUwMDk1XHUwMEU4XHUwMEFGXHUwMDg5XHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU2XHUwMEEwXHUwMDg3XHUwMEU3XHUwMDg4XHUwMEIxXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU2XHUwMDkxXHUwMDg0XHUwMEU1XHUwMEJEXHUwMEIxXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU0XHUwMEJBXHUwMDlCXHUwMEU4XHUwMEE0XHUwMDg3XHUwMEU4XHUwMEEzXHUwMEJEXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU0XHUwMEJDXHUwMDlBXHUwMEU2XHUwMDk1XHUwMEIwXHUwMEU1XHUwMEFEXHUwMDk3XHUwMEU4XHUwMEEzXHUwMDg1XHUwMEU0XHUwMEJGXHUwMEFFXHUwMEU4XHUwMEI0XHUwMEFEXHUwMEU3XHUwMDg5XHUwMEE5XHUwMEU1XHUwMDg2XHUwMDlDXHUwMEU2XHUwMDlEXHUwMDkxXHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU5XHUwMDlEXHUwMEEyXHUwMEU3XHUwMEIyXHUwMEJFXHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU1XHUwMDg1XHUwMEI2XHUwMEU1XHUwMEFFXHUwMDlFXHUwMEU0XHUwMEJBXHUwMDhCXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU2XHUwMEIwXHUwMEI0XHUwMEU1XHUwMEI5XHUwMEIzXHUwMEU2XHUwMDhGXHUwMDkwXHUwMEU3XHUwMEE0XHUwMEJBXHUwMEU0XHUwMEI4XHUwMDhBXHUwMEU1XHUwMEI4XHUwMDgyXHUwMEU4XHUwMEIwXHUwMEEyXHUwMEU4XHUwMEIwXHUwMEEyXHUwMEU2XHUwMDk5XHUwMEFFXHUwMEU5XHUwMDgwXHUwMDlBXHUwMEU2XHUwMDk1XHUwMDk5XHUwMEU1XHUwMEI4XHUwMDg4XHUwMEU0XHUwMEI4XHUwMDhBXHUwMEU0XHUwMEJDXHUwMEEwXHUwMEU3XHUwMEIxXHUwMEJCXHUwMEU1XHUwMDg4XHUwMEFCXHUwMEU2XHUwMEFEXHUwMDhDXHUwMEU2XHUwMDlCXHUwMEIyXHUwMEU2XHUwMDhCXHUwMEE1XHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU1XHUwMDg4XHUwMDlCXHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU5XHUwMDg1XHUwMDhEXHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU1XHUwMDhGXHUwMEFBXHUwMEU4XHUwMEE2XHUwMDgxXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU0XHUwMEJCXHUwMEEzXHUwMEU4XHUwMEIzXHUwMDg3XHUwMEU4XHUwMEE4XHUwMDhBXHUwMEU4XHUwMEJFXHUwMEJFXHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU4XHUwMEFFXHUwMEEyXHUwMEU5XHUwMDk4XHUwMDg1XHUwMEU4XHUwMDgwXHUwMDgxXHUwMEU1XHUwMEI4XHUwMDg4XHUwMEU1XHUwMEIxXHUwMDk1XHUwMEU3XHUwMEE0XHUwMEJBXHUwMEU1XHUwMEJGXHUwMDgzXHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU4XHUwMEI0XHUwMEI0XHUwMEU1XHUwMEFEXHUwMDkwXHUwMEU3XHUwMEI2XHUwMEIyXHUwMEU3XHUwMEFCXHUwMDk5XHUwMEU0XHUwMEI4XHUwMEJCXHUwMEU5XHUwMEExXHUwMDhDXHUwMEU4XHUwMDg3XHUwMEFBXHUwMEU3XHUwMDg0XHUwMEI2XHUwMEU3XHUwMEJBXHUwMEE3XHUwMEU1XHUwMDg4XHUwMEFCXHUwMEU3XHUwMEFFXHUwMDgwXHUwMEU1XHUwMDhEXHUwMDk1XHUwMEU2XHUwMDk0XHUwMEI5XHUwMEU5XHUwMDlEXHUwMEE5XHUwMEU5XHUwMDgyXHUwMEEzXHUwMEU0XHUwMEJBXHUwMDlCXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU4XHUwMEFGXHUwMEI0XHUwMEU2XHUwMDg5XHUwMDkzXHUwMEU1XHUwMEJDXHUwMDgwXHUwMEU0XHUwMEJCXHUwMEEzXHUwMEU3XHUwMEEwXHUwMDgxXHUwMEU1XHUwMDg4XHUwMEEwXHUwMEU5XHUwMDk5XHUwMEE0XHUwMEU4XHUwMEFGXHUwMDgxXHUwMEU1XHUwMDg4XHUwMEI4XHUwMEU4XHUwMDhBXHUwMDgyXHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU5XHUwMDg3XHUwMDhEXHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU2XHUwMEFDXHUwMEExXHUwMEU2XHUwMDk1XHUwMEI4XHUwMEU1XHUwMEE0XHUwMDlBXHUwMEU1XHUwMEIwXHUwMDkxXHUwMEU4XHUwMEE3XHUwMDg0XHUwMEU1XHUwMDg4XHUwMDkyXHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU5XHUwMDg3XHUwMDkxXHUwMEU2XHUwMDg5XHUwMEJFXHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU1XHUwMDkwXHUwMDhFXHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU0XHUwMEI4XHUwMEJCXHUwMEU5XHUwMEExXHUwMEI1XHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU0XHUwMEJEXHUwMEIzXHUwMEU1XHUwMDlCXHUwMDlFXHUwMEU3XHUwMEFEXHUwMDk0XHUwMEU1XHUwMEE0XHUwMEE5XHUwMEU0XHUwMEI4XHUwMDhCXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU5XHUwMDlBXHUwMDlDXHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU0XHUwMEJCXHUwMEEzXHUwMEU2XHUwMEEzXHUwMDgwXHUwMEU2XHUwMDlGXHUwMEE1XHUwMEU2XHUwMDhBXHUwMDk1XHUwMEU3XHUwMEE1XHUwMEE4XHUwMEU1XHUwMEIwXHUwMDhGXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU2XHUwMEIyXHUwMDkyXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU2XHUwMEFEXHUwMEEzXHUwMEU1XHUwMEI4XHUwMEI4XHUwMEU3XHUwMDk0XHUwMDlBXHUwMEU4XHUwMDg3XHUwMEIzXHUwMEU0XHUwMEJCXHUwMEEzXHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU1XHUwMEJEXHUwMDk1XHUwMEU1XHUwMDg1XHUwMEFDXHUwMEU1XHUwMEJDXHUwMDgwXHUwMEU1XHUwMEE0XHUwMDhEXHUwMEU1XHUwMDg4XHUwMEI2XHUwMEU5XHUwMDg3XHUwMDkxXHUwMEU4XHUwMDlFXHUwMDhEXHUwMEU1XHUwMEI5XHUwMEI4XHUwMEU3XHUwMEE2XHUwMDhGXHUwMEU3XHUwMDg5XHUwMDg4XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU1XHUwMEJEXHUwMEEyXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU1XHUwMDg3XHUwMDg2XHUwMEU1XHUwMEE0XHUwMDg3XHUwMEU4XHUwMEExXHUwMDhDXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU1XHUwMDlCXHUwMDlFXHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU2XHUwMDgwXHUwMDlEXHUwMEU2XHUwMDgzXHUwMEIzXHUwMEU2XHUwMDgwXHUwMDhFXHUwMEU2XHUwMEEwXHUwMEI3XHUwMEU1XHUwMDhEXHUwMDhGXHUwMEU4XHUwMEFFXHUwMEFFXHUwMEU4XHUwMEFFXHUwMEE0XHUwMEU4XHUwMEFGXHUwMDgxXHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU1XHUwMEE1XHUwMEJEXHUwMEU0XHUwMEJBXHUwMEE3XHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU2XHUwMDhDXHUwMDg5XHUwMEU3XHUwMDg1XHUwMEE3XHUwMEU2XHUwMDlDXHUwMDhEXHUwMEU4XHUwMEEzXHUwMDg1XHUwMEU1XHUwMEI5XHUwMEJGXHUwMEU0XHUwMEI4XHUwMDlDXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU2XHUwMEJDXHUwMEFCXHUwMEU5XHUwMDg3XHUwMDg3XHUwMEU4XHUwMEI0XHUwMEFEXHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU2XHUwMDg5XHUwMDhCXHUwMEU3XHUwMEJCXHUwMDg0XHUwMEU1XHUwMDlCXHUwMEJFXHUwMEU5XHUwMDlEXHUwMEEyXHUwMEU2XHUwMDlEXHUwMEJGXHUwMEU1XHUwMDhGXHUwMDgyXHUwMEU4XHUwMDgwXHUwMDgzXHUwMEU2XHUwMDk0XHUwMEJGXHUwMEU2XHUwMEIyXHUwMEJCXHUwMEU1XHUwMEFFXHUwMEI5XHUwMEU2XHUwMDk4XHUwMDkzXHUwMEU1XHUwMEE0XHUwMEE5XHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU1XHUwMDhBXHUwMEFBXHUwMEU1XHUwMDhBXHUwMDlCXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU0XHUwMEJCXHUwMEFDXHUwMEU1XHUwMDhEXHUwMDg3XHUwMEU3XHUwMEJBXHUwMEE3XHUwMEU5XHUwMDgwXHUwMDlGXHUwMEU1XHUwMEJBXHUwMEE2XHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU3XHUwMDg5XHUwMEE5XHUwMEU4XHUwMEIwXHUwMDgzXHUwMEU2XHUwMDk1XHUwMEI0XHUwMEU2XHUwMEI1XHUwMDgxXHUwMEU4XHUwMEExXHUwMDhDXHUwMEU5XHUwMDgwXHUwMEEwXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU1XHUwMEFEXHUwMDk3XHUwMEU5XHUwMDlGXHUwMEE5XHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU4XHUwMEI0XHUwMEI4XHUwMEU2XHUwMDk4XHUwMDkzXHUwMEU1XHUwMEJDXHUwMDgwXHUwMEU1XHUwMEIxXHUwMDk1XHUwMEU3XHUwMDlCXHUwMEI4XHUwMEU5XHUwMDk3XHUwMDlDXHUwMEU4XHUwMEExXHUwMEE4XHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU1XHUwMEJEXHUwMEIxXHUwMEU4XHUwMEE3XHUwMDg2XHUwMEU1XHUwMEE2XHUwMDgyXHUwMEU2XHUwMEFEXHUwMEE0XHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU1XHUwMEFFXHUwMEI5XHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU1XHUwMEIwXHUwMDhGXHUwMEU2XHUwMDhBXHUwMEE1XHUwMEU5XHUwMDgxXHUwMDkzXHUwMEU2XHUwMDlEXHUwMEExXHUwMEU2XHUwMEFDXHUwMEJFXHUwMEU1XHUwMEJGXHUwMDgzXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU4XHUwMEFFXHUwMEI4XHUwMEU1XHUwMEE0XHUwMDlBXHUwMEU2XHUwMEIzXHUwMDk1XHUwMEU4XHUwMEE3XHUwMDg0XHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU1XHUwMEIxXHUwMDg1XHUwMEU0XHUwMEI5XHUwMEE2XHUwMEU1XHUwMEJBXHUwMDk3XHUwMEU4XHUwMEJGXHUwMDlFXHUwMEU2XHUwMDhFXHUwMEE1XHUwMEU3XHUwMEFCXHUwMDhCXHUwMEU1XHUwMDhEXHUwMEIzXHUwMEU0XHUwMEI4XHUwMEJFXHUwMEU2XHUwMDhBXHUwMEE1XHUwMEU2XHUwMDhBXHUwMDgwXHUwMEU1XHUwMEI3XHUwMEE3XHUwMEU1XHUwMEE1XHUwMEE1XHUwMEU4XHUwMEJGXHUwMDkwXHUwMEU3XHUwMDk5XHUwMEJCXHUwMEU1XHUwMDg1XHUwMEE1XHUwMEU0XHUwMEJCXHUwMEE1XHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU4XHUwMEFFXHUwMEJBXHUwMEU0XHUwMEJBXHUwMDhCXHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU4XHUwMDg3XHUwMEFBXHUwMEU3XHUwMDk0XHUwMEIxXHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU1XHUwMDhEXHUwMDhFXHUwMEU1XHUwMDhBXHUwMDlFXHUwMEU1XHUwMDg1XHUwMEFDXHUwMEU1XHUwMEE2XHUwMDg4XHUwMEU1XHUwMEE2XHUwMDg4XHUwMEU3XHUwMDlDXHUwMDlGXHUwMEU2XHUwMEFEXHUwMEEzXHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU5XHUwMDk0XHUwMDk5XHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU1XHUwMDkwXHUwMDg4XHUwMEU1XHUwMDkwXHUwMDhDXHUwMEU0XHUwMEJCXHUwMEI3XHUwMEU1XHUwMDgwXHUwMEJDXHUwMEU1XHUwMDg4XHUwMEFCXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU3XHUwMDlCXHUwMDkxXHUwMEU3XHUwMDlEXHUwMEEzXHUwMEU1XHUwMDg1XHUwMEI3XHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU0XHUwMEI4XHUwMDk2XHUwMEU3XHUwMEJBXHUwMEFBXHUwMEU1XHUwMDlCXHUwMEEyXHUwMEU5XHUwMDk4XHUwMDlGXHUwMEU1XHUwMDg4XHUwMDlCXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU2XHUwMDg5XHUwMEJGXHUwMEU2XHUwMDhCXHUwMDg1XHUwMEU1XHUwMEEyXHUwMDlFXHUwMEU5XHUwMDk1XHUwMEJGXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU2XHUwMDhDXHUwMDgxXHUwMEU1XHUwMDk1XHUwMDg2XHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU3XHUwMEJCXHUwMEI0XHUwMEU0XHUwMEJGXHUwMEFFXHUwMEU1XHUwMDhGXHUwMEIwXHUwMEU2XHUwMEI5XHUwMEJFXHUwMEU1XHUwMEI3XHUwMEE2XHUwMEU1XHUwMDhGXHUwMEIzXHUwMEU4XHUwMDgyXHUwMEExXHUwMEU0XHUwMEJCXHUwMEJEXHUwMEU3XHUwMEFEXHUwMDk0XHUwMEU2XHUwMEExXHUwMDg4XHUwMEU1XHUwMEFFXHUwMDlFXHUwMEU5XHUwMDk5XHUwMDg1XHUwMEU3XHUwMDk0XHUwMEI1XHUwMEU0XHUwMEJGXHUwMEExXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU1XHUwMDkxXHUwMEJEXHUwMEU1XHUwMEFFXHUwMEEzXHUwMEU0XHUwMEJDXHUwMEEwXHUwMEU0XHUwMEJCXHUwMEJCXHUwMEU1XHUwMDhBXHUwMEExXHUwMEU2XHUwMEFEXHUwMEEzXHUwMEU1XHUwMEJDXHUwMDhGXHUwMEU3XHUwMDg5XHUwMEI5XHUwMEU4XHUwMDg5XHUwMEIyXHUwMEU0XHUwMEI4XHUwMDhCXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU1XHUwMDhEXHUwMDhGXHUwMEU0XHUwMEJDXHUwMDlBXHUwMEU1XHUwMDhGXHUwMEFBXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU1XHUwMEJEXHUwMDkzXHUwMEU3XHUwMDg0XHUwMEI2XHUwMEU5XHUwMDg3XHUwMDhEXHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU1XHUwMDg1XHUwMEE3XHUwMEU1XHUwMEFFXHUwMEI5XHUwMEU2XHUwMDhDXHUwMDg3XHUwMEU1XHUwMEFGXHUwMEJDXHUwMEU4XHUwMEJGXHUwMDkwXHUwMEU4XHUwMEExXHUwMDhDXHUwMEU2XHUwMDk3XHUwMEE1XHUwMEU1XHUwMEJGXHUwMDk3XHUwMEU4XHUwMEIzXHUwMEEzXHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU4XHUwMEI2XHUwMDg1XHUwMEU4XHUwMEJGXHUwMDg3XHUwMEU1XHUwMDlDXHUwMDlGXHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU2XHUwMEI1XHUwMDk5XHUwMEU2XHUwMEIxXHUwMDlGXHUwMEU2XHUwMDk0XHUwMEFGXHUwMEU0XHUwMEJCXHUwMDk4XHUwMEU2XHUwMDhFXHUwMEE4XHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU3XHUwMEFCXHUwMDk5XHUwMEU5XHUwMDk1XHUwMEJGXHUwMEU2XHUwMDlEXHUwMEFEXHUwMEU1XHUwMEI3XHUwMDlFXHUwMEU2XHUwMDg5XHUwMEE3XHUwMEU4XHUwMEExXHUwMDhDXHUwMEU1XHUwMDg4XHUwMEI2XHUwMEU5XHUwMDgwXHUwMEEwXHUwMEU0XHUwMEI5XHUwMDhCXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU2XHUwMDhFXHUwMEE4XHUwMEU1XHUwMEI5XHUwMEJGXHUwMEU3XHUwMDhFXHUwMEIwXHUwMEU1XHUwMDlDXHUwMEJBXHUwMEU2XHUwMDhGXHUwMDhGXHUwMEU4XHUwMEJGXHUwMEIwXHUwMEU1XHUwMDhGXHUwMDk4XHUwMEU1XHUwMDhDXHUwMDk2XHUwMEU0XHUwMEJDXHUwMEEwXHUwMEU3XHUwMEJCXHUwMDlGXHUwMEU2XHUwMEFEXHUwMDhDXHUwMEU2XHUwMDg5XHUwMDhCXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU5XHUwMDk5XHUwMEE5XHUwMEU4XHUwMEFGXHUwMEJFXHUwMEU3XHUwMEE4XHUwMDhCXHUwMEU1XHUwMDhDXHUwMEJCXHUwMEU3XHUwMDk2XHUwMDk3XHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU4XHUwMEJGXHUwMDg3XHUwMEU4XHUwMEJGXHUwMDg3XHUwMEU1XHUwMDhFXHUwMEJCXHUwMEU0XHUwMEI5XHUwMDhCXHUwMEU1XHUwMDg5XHUwMDhEXHUwMEU2XHUwMDk0XHUwMEI2XHUwMEU1XHUwMDg1XHUwMEE1XHUwMEU1XHUwMEI5XHUwMEI0XHUwMEU1XHUwMEJBXHUwMEE2XHUwMEU2XHUwMDlEXHUwMDgyXHUwMEU1XHUwMEJGXHUwMDk3XHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU0XHUwMEI4XHUwMEJEXHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU5XHUwMEFCXHUwMDk4XHUwMEU3XHUwMDk5XHUwMEJCXHUwMEU5XHUwMDk5XHUwMDg2XHUwMEU2XHUwMDlDXHUwMEFBXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU1XHUwMDg1XHUwMDhEXHUwMEU4XHUwMEI0XHUwMEEzXHUwMEU2XHUwMDk1XHUwMDk5XHUwMEU3XHUwMEE4XHUwMDhCXHUwMEU3XHUwMDg5XHUwMDg4XHUwMEU1XHUwMDlEXHUwMDk3XHUwMEU4XHUwMEJBXHUwMEFCXHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU5XHUwMDg3XHUwMDhEXHUwMEU1XHUwMEJBXHUwMDg2XHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU1XHUwMDk0XHUwMEFFXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU1XHUwMEJEXHUwMEEyXHUwMEU1XHUwMEJDXHUwMDhGXHUwMEU1XHUwMDlDXHUwMDlGXHUwMEU4XHUwMEIxXHUwMDg2XHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU1XHUwMDgzXHUwMEI5XHUwMEU0XHUwMEI4XHUwMDlDXHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU5XHUwMDgyXHUwMEFFXHUwMEU3XHUwMEFFXHUwMEIxXHUwMEU1XHUwMDhEXHUwMDk3XHUwMEU0XHUwMEJBXHUwMEFDXHUwMEU2XHUwMEIxXHUwMDgyXHUwMEU4XHUwMDgxXHUwMDhDXHUwMEU1XHUwMDhGXHUwMDk2XHUwMEU1XHUwMEJFXHUwMDk3XHUwMEU4XHUwMDgxXHUwMDhDXHUwMEU0XHUwMEJEXHUwMDhEXHUwMEU3XHUwMDlCXHUwMEI4XHUwMEU0XHUwMEJGXHUwMEExXHUwMEU5XHUwMEExXHUwMEI1XHUwMEU5XHUwMDlEXHUwMEEyXHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU5XHUwMDkyXHUwMDlGXHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU5XHUwMEExXHUwMEI1XHUwMEU3XHUwMEExXHUwMEFFXHUwMEU1XHUwMEFFXHUwMDlBXHUwMEU1XHUwMDlCXHUwMEJFXHUwMEU0XHUwMEJFXHUwMDhCXHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU1XHUwMDlEXHUwMDgwXHUwMEU3XHUwMEE3XHUwMEFGXHUwMEU2XHUwMDlFXHUwMDgxXHUwMEU5XHUwMDk0XHUwMDk5XHUwMEU4XHUwMEFGXHUwMEFGXHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU3XHUwMDlBXHUwMDg0XHUwMEU1XHUwMEFFXHUwMDlEXHUwMEU4XHUwMEI0XHUwMDlEXHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU1XHUwMDg1XHUwMEIzXHUwMEU5XHUwMEEzXHUwMDhFXHUwMEU5XHUwMDk5XHUwMEE5XHUwMEU2XHUwMDhFXHUwMDg4XHUwMEU2XHUwMDlEXHUwMDgzXHUwMEU3XHUwMDk3XHUwMDg1XHUwMEU2XHUwMEFGXHUwMDkyXHUwMEU1XHUwMEFFXHUwMEEwXHUwMEU3XHUwMDg5XHUwMEE5XHUwMEU5XHUwMDk5XHUwMEE0XHUwMEU0XHUwMEJBXHUwMDg2XHUwMEU4XHUwMEE5XHUwMDk1XHUwMEU4XHUwMEFCXHUwMDk2XHUwMEU3XHUwMDk2XHUwMEJFXHUwMEU3XHUwMDk3XHUwMDg1XHUwMEU1XHUwMDhGXHUwMDhBXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU2XHUwMEIxXHUwMDgyXHUwMEU4XHUwMEI0XHUwMEFEXHUwMEU3XHUwMEFCXHUwMDk5XHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU1XHUwMDg0XHUwMEJGXHUwMEU3XHUwMEFCXHUwMEE1XHUwMEU2XHUwMEFGXHUwMDhGXHUwMEU1XHUwMEE0XHUwMEE5XHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU1XHUwMEE0XHUwMEFFXHUwMEU4XHUwMEFFXHUwMEE0XHUwMEU4XHUwMEFGXHUwMDg2XHUwMEU2XHUwMEFGXHUwMDhGXHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU1XHUwMEE0XHUwMEE5XHUwMEU2XHUwMEI0XHUwMEE1XHUwMEU1XHUwMEFEXHUwMDk3XHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU1XHUwMDhGXHUwMEIwXHUwMEU3XHUwMDgxXHUwMEEzXHUwMEU3XHUwMEJCXHUwMEI0XHUwMEU2XHUwMDhBXHUwMEE0XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU5XHUwMEExXHUwMEI1XHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU2XHUwMDgwXHUwMEE3XHUwMEU1XHUwMEFFXHUwMDk4XHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU1XHUwMEI4XHUwMEI4XHUwMEU4XHUwMEE3XHUwMDgxXHUwMEU3XHUwMDlCXHUwMEI4XHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU2XHUwMDg4XHUwMDk4XHUwMEU3XHUwMDk1XHUwMEE1XHUwMEU1XHUwMEJBXHUwMDk0XHUwMEU1XHUwMEJEXHUwMDkzXHUwMEU1XHUwMEJFXHUwMDhCXHUwMEU1XHUwMEI4XHUwMDg4XHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU0XHUwMEJFXHUwMEJGXHUwMEU2XHUwMEEwXHUwMEExXHUwMEU1XHUwMDlCXHUwMEFEXHUwMEU4XHUwMDgyXHUwMEExXHUwMEU1XHUwMEI4XHUwMDgyXHUwMEU2XHUwMDg4XHUwMEJGXHUwMEU1XHUwMEIxXHUwMDhCXHUwMEU2XHUwMEEwXHUwMDhGXHUwMEU3XHUwMDlCXHUwMEFFXHUwMEU1XHUwMDkxXHUwMDk4XHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU1XHUwMEFGXHUwMEJDXHUwMEU4XHUwMDg3XHUwMEI0XHUwMEU3XHUwMEFBXHUwMDgxXHUwMEU3XHUwMDg0XHUwMEI2XHUwMEU5XHUwMDgxXHUwMDkzXHUwMEU1XHUwMDg1XHUwMEI3XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU3XHUwMEJEXHUwMDkxXHUwMEU3XHUwMEJCXHUwMDkzXHUwMEU1XHUwMDkwXHUwMDg4XHUwMEU2XHUwMEExXHUwMEEzXHUwMEU2XHUwMEExXHUwMDg4XHUwMEU1XHUwMDhBXHUwMEIzXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU1XHUwMDhGXHUwMEE2XHUwMEU1XHUwMEE0XHUwMDk2XHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU1XHUwMDg1XHUwMDgzXHUwMEU1XHUwMEJDXHUwMDk1XHUwMEU4XHUwMEI1XHUwMEI3XHUwMEU2XHUwMDk0XHUwMEI5XHUwMEU1XHUwMDhGXHUwMDk4XHUwMEU3XHUwMEFDXHUwMEFDXHUwMEU1XHUwMDlCXHUwMDlCXHUwMEU0XHUwMEJDXHUwMDlBXHUwMEU4XHUwMEFFXHUwMEExXHUwMEU4XHUwMEFBXHUwMEFBXHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU5XHUwMDlBXHUwMDkwXHUwMEU3XHUwMEE3XHUwMDgxXHUwMEU1XHUwMEFFXHUwMDlEXHUwMEU1XHUwMEFFXHUwMDlEXHUwMEU4XHUwMEE3XHUwMDg0XHUwMEU4XHUwMDhDXHUwMDgzXHUwMEU2XHUwMEI2XHUwMDg4XHUwMEU4XHUwMEI0XHUwMEI5XHUwMEU1XHUwMDg1XHUwMEIxXHUwMEU1XHUwMDkwXHUwMDhDXHUwMEU1XHUwMEJGXHUwMDk4XHUwMEU4XHUwMEFFXHUwMEIwXHUwMEU0XHUwMEJEXHUwMDkzXHUwMEU3XHUwMEIzXHUwMEJCXHUwMEU1XHUwMEI4XHUwMEE2XHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU1XHUwMDkwXHUwMDhEXHUwMEU1XHUwMEFEXHUwMDk3XHUwMEU3XHUwMDk5XHUwMEJDXHUwMEU4XHUwMEExXHUwMEE4XHUwMEU1XHUwMEJDXHUwMDgwXHUwMEU2XHUwMDk0XHUwMEJFXHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU3XHUwMDlCXHUwMDlGXHUwMEU1XHUwMDhGXHUwMDk3XHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU0XHUwMEJBXHUwMDhDXHUwMEU2XHUwMDg5XHUwMDhCXHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU5XHUwMDg3XHUwMDhGXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU0XHUwMEJBXHUwMEJBXHUwMEU2XHUwMDk1XHUwMEIwXHUwMEU5XHUwMDg3XHUwMDhGXHUwMEU1XHUwMDg1XHUwMEIxXHUwMEU0XHUwMEJBXHUwMEFCXHUwMEU1XHUwMDhDXHUwMEJBXHUwMEU1XHUwMDlGXHUwMDlGXHUwMEU1XHUwMEE1XHUwMEIzXHUwMEU1XHUwMEFEXHUwMEE5XHUwMEU1XHUwMDhFXHUwMDlGXHUwMEU1XHUwMDg4XHUwMDk5XHUwMEU2XHUwMDg5XHUwMDgwXHUwMEU1XHUwMDlDXHUwMEE4XHUwMEU3XHUwMEJCXHUwMDkzXHUwMEU2XHUwMDlEXHUwMDlGXHUwMEU5XHUwMDgwXHUwMDlBXHUwMEU0XHUwMEJGXHUwMEExXHUwMEU4XHUwMEI2XHUwMDg1XHUwMEU3XHUwMEJBXHUwMEE3XHUwMEU5XHUwMDg1XHUwMDhEXHUwMEU3XHUwMEJEXHUwMEFFXHUwMEU1XHUwMEJEXHUwMDkzXHUwMEU2XHUwMDk3XHUwMEI2XHUwMEU0XHUwMEJDXHUwMDk4XHUwMEU3XHUwMEE3XHUwMDgwXHUwMEU2XHUwMDgwXHUwMEE3XHUwMEU2XHUwMDg0XHUwMDlGXHUwMEU2XHUwMDg4XHUwMEJGXHUwMEU0XHUwMEJBXHUwMEE3XHUwMEU5XHUwMDgxXHUwMDhBXHUwMEU2XHUwMDg4XHUwMEIyXHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU1XHUwMDhGXHUwMEEzXHUwMEU2XHUwMDhGXHUwMDkwXHUwMEU0XHUwMEJBXHUwMEE0XHUwMEU1XHUwMEIwXHUwMEIxXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU1XHUwMDgxXHUwMEE1XHUwMEU3XHUwMEE4XHUwMDhCXHUwMEU1XHUwMEJBXHUwMEE2XHUwMEU1XHUwMDhGXHUwMDgyXHUwMEU2XHUwMDk1XHUwMEIwXHUwMEU0XHUwMEJBXHUwMDhCXHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU2XHUwMDk1XHUwMEI0XHUwMEU0XHUwMEI4XHUwMEFBXHUwMEU1XHUwMEIxXHUwMEIxXHUwMEU0XHUwMEI4XHUwMDlDXHUwMEU2XHUwMDgzXHUwMDg1XHUwMEU2XHUwMDg0XHUwMDlGXHUwMEU3XHUwMDg5XHUwMEI5XHUwMEU2XHUwMEFFXHUwMDhBXHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU5XHUwMEExXHUwMDlFXHUwMEU2XHUwMDkwXHUwMDlDXHUwMEU1XHUwMEIwXHUwMDhCXHUwMEU1XHUwMEIxXHUwMDlFXHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU5XHUwMDk3XHUwMEE4XHUwMEU2XHUwMDg4XHUwMEI3XHUwMEU4XHUwMEI0XHUwMEEyXHUwMEU1XHUwMDhBXHUwMEExXHUwMEU1XHUwMEEzXHUwMEIwXHUwMEU5XHUwMDlGXHUwMEIzXHUwMEU1XHUwMDhGXHUwMDhBXHUwMEU1XHUwMDg1XHUwMEI2XHUwMEU4XHUwMEI0XHUwMEEyXHUwMEU3XHUwMEJCXHUwMDhGXHUwMEU1XHUwMDlEXHUwMDlBXHUwMEU2XHUwMDhDXHUwMDgxXHUwMEU1XHUwMEI5XHUwMEIyXHUwMEU5XHUwMDgzXHUwMEE4XHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU3XHUwMEFCXHUwMDhCXHUwMEU1XHUwMDg4XHUwMEE5XHUwMEU3XHUwMDlCXHUwMDhBXHUwMEU4XHUwMDgwXHUwMDgzXHUwMEU4XHUwMDk5XHUwMDkxXHUwMEU2XHUwMDg4XHUwMDkwXHUwMEU5XHUwMDgzXHUwMEJEXHUwMEU1XHUwMDhDXHUwMDg1XHUwMEU4XHUwMEEzXHUwMDg1XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU2XHUwMDg4XHUwMEI2XHUwMEU2XHUwMEFGXHUwMDk0XHUwMEU4XHUwMEI1XHUwMDlCXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU2XHUwMDhCXHUwMDlCXHUwMEU1XHUwMDk1XHUwMDg2XHUwMEU1XHUwMEFFXHUwMDhDXHUwMEU2XHUwMDk1XHUwMEI0XHUwMEU3XHUwMDlDXHUwMDlGXHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU3XHUwMDlDXHUwMEJDXHUwMEU3XHUwMDlEXHUwMDlCXHUwMEU0XHUwMEJDXHUwMDk5XHUwMEU0XHUwMEJDXHUwMEI0XHUwMEU1XHUwMEE4XHUwMDgxXHUwMEU2XHUwMDlDXHUwMDlCXHUwMEU5XHUwMEEyXHUwMDg2XHUwMEU1XHUwMDlGXHUwMDlGXHUwMEU1XHUwMDhEXHUwMEFCXHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU0XHUwMEJDXHUwMDk4XHUwMEU2XHUwMDgzXHUwMEEwXHUwMEU4XHUwMEFCXHUwMDk2XHUwMEU1XHUwMEEzXHUwMDg3XHUwMEU1XHUwMDg1XHUwMEFDXHUwMEU1XHUwMDg1XHUwMEIxXHUwMEU4XHUwMDg5XHUwMEFGXHUwMEU1XHUwMEE1XHUwMEJEXHUwMEU1XHUwMDg1XHUwMDg1XHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU3XHUwMEFDXHUwMEE2XHUwMEU1XHUwMDkwXHUwMDg4XHUwMEU5XHUwMDk5XHUwMDg0XHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU3XHUwMDg5XHUwMEI5XHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU1XHUwMDhGXHUwMEFGXHUwMEU4XHUwMDhCXHUwMEIxXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU0XHUwMEJBXHUwMEE3XHUwMEU2XHUwMEEwXHUwMEI5XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU2XHUwMDk4XHUwMEJFXHUwMEU1XHUwMEFGXHUwMDg2XHUwMEU3XHUwMEEyXHUwMEJDXHUwMEU1XHUwMDg1XHUwMEFDXHUwMEU0XHUwMEJDXHUwMDk3XHUwMEU2XHUwMEIwXHUwMDkxXHUwMEU2XHUwMDk3XHUwMDhGXHUwMEU2XHUwMDlCXHUwMEI0XHUwMEU1XHUwMDhBXHUwMEEwXHUwMEU0XHUwMEJBXHUwMEFCXHUwMEU1XHUwMDhGXHUwMDk3XHUwMEU1XHUwMDkwXHUwMDhDXHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU1XHUwMDkwXHUwMEFGXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU5XHUwMDgwXHUwMDgyXHUwMEU1XHUwMDkwXHUwMDg4XHUwMEU1XHUwMDhFXHUwMDlGXHUwMEU2XHUwMDlEXHUwMEE1XHUwMEU5XHUwMDk3XHUwMEFFXHUwMEU3XHUwMEFEXHUwMDk0XHUwMEU2XHUwMDlDXHUwMEFDXHUwMEU2XHUwMDk2XHUwMDg3XHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU5XHUwMEEzXHUwMDlGXHUwMEU3XHUwMEJCXHUwMEJGXHUwMEU4XHUwMDg5XHUwMEIyXHUwMEU3XHUwMEE4XHUwMEIzXHUwMEU1XHUwMEFFXHUwMDlBXHUwMEU3XHUwMEJCXHUwMDg4XHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU3XHUwMDk0XHUwMDlGXHUwMEU3XHUwMDg5XHUwMEE5XHUwMEU0XHUwMEJFXHUwMDlCXHUwMEU2XHUwMEIxXHUwMDgyXHUwMEU2XHUwMDkwXHUwMDlDXHUwMEU3XHUwMDhCXHUwMDkwXHUwMEU1XHUwMDhBXHUwMDlCXHUwMEU5XHUwMDg3XHUwMDhGXHUwMEU0XHUwMEI4XHUwMEE1XHUwMEU5XHUwMDg3XHUwMDhEXHUwMEU2XHUwMEIwXHUwMEI4XHUwMEU4XHUwMEJGXHUwMDlDXHUwMEU1XHUwMDg2XHUwMDk5XHUwMEU3XHUwMDlDXHUwMDlGXHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU5XHUwMDk5XHUwMDkwXHUwMEU3XHUwMEFCXHUwMDlFXHUwMEU0XHUwMEJBXHUwMDg5XHUwMEU1XHUwMEFGXHUwMEI5XHUwMEU4XHUwMEIxXHUwMEExXHUwMEU4XHUwMEI0XHUwMEI5XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU1XHUwMEE1XHUwMEJEXHUwMEU3XHUwMEJCXHUwMDlEXHUwMEU1XHUwMEFGXHUwMEI5XHUwMEU1XHUwMDhEXHUwMDgxXHUwMEU1XHUwMDg4XHUwMDg2XHUwMEU0XHUwMEJGXHUwMDgzXHUwMEU4XHUwMEJGXHUwMDlCXHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU4XHUwMEFGXHUwMDg0XHUwMEU1XHUwMEJEXHUwMEIxXHUwMEU5XHUwMDlGXHUwMEIzXHUwMEU0XHUwMEJDXHUwMDk4XHUwMEU1XHUwMDhBXHUwMEJGXHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU1XHUwMEIwXHUwMDkxXHUwMEU2XHUwMEFDXHUwMEEzXHUwMEU4XHUwMEI1XHUwMDhGXHUwMEU1XHUwMEI5XHUwMEI2XHUwMEU0XHUwMEI4XHUwMDk0XHUwMEU2XHUwMDlDXHUwMDg5XHUwMEU3XHUwMDgyXHUwMEI5XHUwMEU2XHUwMDk2XHUwMEI5XHUwMEU1XHUwMDkwXHUwMDkxXHUwMEU1XHUwMDg1XHUwMEE4XHUwMEU2XHUwMDk2XHUwMEIwXHUwMEU0XHUwMEJGXHUwMEExXHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU4XHUwMEFFXHUwMEJFXHUwMEU2XHUwMDk2XHUwMEJEXHUwMEU1XHUwMEJEXHUwMEEyXHUwMEU4XHUwMEIxXHUwMEExXHUwMEU4XHUwMEI1XHUwMDg0XHUwMEU2XHUwMEEwXHUwMEJDXHUwMEU3XHUwMEFBXHUwMDgxXHUwMEU3XHUwMEEwXHUwMEI0XHUwMEU5XHUwMDlBXHUwMDhGXHUwMEU3XHUwMDlEXHUwMDgwXHUwMEU5XHUwMDg3XHUwMDhEXHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU2XHUwMDk4XHUwMEFGXHUwMEU2XHUwMEFGXHUwMDk1XHUwMEU0XHUwMEI4XHUwMDlBXHUwMEU2XHUwMDk5XHUwMEJBXHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU1XHUwMDhDXHUwMDk2XHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU1XHUwMEFFXHUwMDhDXHUwMEU3XHUwMEJFXHUwMDhFXHUwMEU1XHUwMDk1XHUwMDg2XHUwMEU1XHUwMDlGXHUwMDhFXHUwMEU3XHUwMEJCXHUwMDlGXHUwMEU0XHUwMEI4XHUwMDgwXHUwMEU1XHUwMDg3XHUwMEJBXHUwMEU3XHUwMDg5XHUwMDg4XHUwMEU2XHUwMDg5XHUwMDkzXHUwMEU5XHUwMDgwXHUwMEEwXHUwMEU3XHUwMDk0XHUwMEEyXHUwMEU1XHUwMDkzXHUwMDgxXHUwMEU2XHUwMEE2XHUwMDgyXHUwMEU1XHUwMDg2XHUwMEI1XHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU0XHUwMEJBXHUwMDhFXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU3XHUwMDk1XHUwMDk5XHUwMEU1XHUwMDlCXHUwMEEwXHUwMEU3XHUwMEI0XHUwMEEwXHUwMEU0XHUwMEI4XHUwMEFEXHUwMEU1XHUwMDlDXHUwMDhCXHUwMEU1XHUwMEFEXHUwMDk4XHUwMEU1XHUwMDgyXHUwMEE4XHUwMEU4XHUwMEI0XHUwMEI0XHUwMEU1XHUwMDlCXHUwMEJFXHUwMEU2XHUwMDlDXHUwMDgwXHUwMEU2XHUwMDg0XHUwMDlCXHUwMEU5XHUwMDk1XHUwMEJGXHUwMEU2XHUwMDlDXHUwMDlGXHUwMEU1XHUwMDhGXHUwMEEzXHUwMEU0XHUwMEJCXHUwMEI3XHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU4XHUwMEI0XHUwMEEyXHUwMEU1XHUwMDlGXHUwMEJBXHUwMEU1XHUwMDlDXHUwMEIwXHUwMEU1XHUwMEFFXHUwMDg5XHUwMEU2XHUwMDhFXHUwMDkyXHUwMEU2XHUwMEFEXHUwMEE2XHUwMEU2XHUwMEIxXHUwMDg5XHUwMEU5XHUwMDg3XHUwMDhDXHUwMEU5XHUwMDlEXHUwMEEyXHUwMEU1XHUwMDg4XHUwMDlCXHUwMEU1XHUwMEJCXHUwMEJBXHUwMEU1XHUwMEE0XHUwMEE5XHUwMEU3XHUwMEE5XHUwMEJBXHUwMEU5XHUwMEE2XHUwMDk2XHUwMEU1XHUwMDg1XHUwMDg4XHUwMEU1XHUwMEFFXHUwMDhDXHUwMEU1XHUwMDk2XHUwMDg0XHUwMEU5XHUwMEE5XHUwMEIxXHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU0XHUwMEI4XHUwMDhCXHUwMEU5XHUwMDlEXHUwMEEyXHUwMEU0XHUwMEI4XHUwMDhEXHUwMEU1XHUwMDg2XHUwMDhEXHUwMEU4XHUwMEFGXHUwMDlBXHUwMEU0XHUwMEJGXHUwMEExXHUwMEU2XHUwMDg0XHUwMDhGXHUwMEU0XHUwMEI5XHUwMDg5XHUwMEU5XHUwMDk4XHUwMEIzXHUwMEU1XHUwMDg1XHUwMDg5XHUwMEU4XHUwMDhCXHUwMEIxXHUwMEU1XHUwMDlCXHUwMEJEXHUwMEU2XHUwMEJDXHUwMDgyXHUwMEU0XHUwMEJBXHUwMEFFXHUwMEU1XHUwMDg2XHUwMDlCXHUwMEU0XHUwMEJBXHUwMDhCXHUwMEU3XHUwMDhFXHUwMEE5XHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU3XHUwMEJFXHUwMEE0XHUwMEU0XHUwMEJDXHUwMDk3XHUwMEU1XHUwMDg2XHUwMDlDXHUwMEU2XHUwMEIwXHUwMDkxXHUwMEU1XHUwMDhEXHUwMEIzXHUwMEU1XHUwMDhGXHUwMEFGXHUwMEU1XHUwMDkwXHUwMDhEXHUwMEU3XHUwMEE4XHUwMEIxXHUwMEU1XHUwMEFFXHUwMEI2XHUwMEU1XHUwMDg1XHUwMEI3XHUwMEU1XHUwMDhBXHUwMEE4XHUwMEU3XHUwMDk0XHUwMEJCXHUwMEU2XHUwMDgzXHUwMEIzXHUwMEU1XHUwMDg4XHUwMEIwXHUwMEU2XHUwMEIzXHUwMEE4XHUwMEU2XHUwMDk4XHUwMDhFXHUwMEU1XHUwMEIwXHUwMDhGXHUwMEU1XHUwMEFEXHUwMEE2XHUwMEU2XHUwMDgwXHUwMEE3XHUwMEU4XHUwMDgzXHUwMEJEXHUwMEU4XHUwMDgwXHUwMDgzXHUwMEU3XHUwMEEwXHUwMDk0XHUwMEU3XHUwMEExXHUwMEFDXHUwMEU0XHUwMEJCXHUwMEI2XHUwMEU4XHUwMEE3XHUwMDgyXHUwMEU3XHUwMDlDXHUwMDhCXHUwMEU2XHUwMEI4XHUwMDg1XHUwMEU2XHUwMEE1XHUwMDlBXHUwMEU2XHUwMDkwXHUwMDlFXHUwMEU3XHUwMEFDXHUwMDkxXHUwMEU5XHUwMEE2XHUwMDk2XHUwMEU5XHUwMEEwXHUwMDgxXHUwMEU5XHUwMEJCXHUwMDg0XHUwMEU5XHUwMDg3XHUwMDkxXHUwMEU5XHUwMDgwXHUwMDgyXHUwMEU3XHUwMDk0XHUwMEE4XHUwMEU2XHUwMEIxXHUwMDlGXHUwMEU4XHUwMDhCXHUwMDhGXHUwMEU3XHUwMDlDXHUwMDlGXHUwMEU1XHUwMEFFXHUwMDlFXHUwMEU0XHUwMEI4XHUwMEJCXHUwMEU3XHUwMEFFXHUwMEExXHUwMEU5XHUwMDk4XHUwMEI2XHUwMEU2XHUwMEFFXHUwMEI1XHUwMEU4XHUwMEE4XHUwMEJCXHUwMEU1XHUwMDg2XHUwMDhBXHUwMEU3XHUwMEJGXHUwMEJCXHUwMEU4XHUwMEFGXHUwMDkxXHUwMEU2XHUwMDlEXHUwMDgzXHUwMEU1XHUwMDg4XHUwMEE5XHUwMEU1XHUwMDgxXHUwMDlBXHUwMEU1XHUwMEE1XHUwMEJEXHUwMEU0XHUwMEJDXHUwMEJDXHUwMEU0XHUwMEI5XHUwMDhFXHUwMEU5XHUwMDgwXHUwMDlBXHUwMEU4XHUwMEFFXHUwMEFGXHUwMEU2XHUwMDk2XHUwMEJEXHUwMEU1XHUwMEI3XHUwMEE1XHUwMEU3XHUwMDhCXHUwMDgwXHUwMEU2XHUwMDg1XHUwMDhCXHUwMEU0XHUwMEI5XHUwMDlGXHUwMEU4XHUwMEFFXHUwMEI4XHUwMEU3XHUwMDhFXHUwMEFGXHUwMEU0XHUwMEJGXHUwMDlEXHUwMEU1XHUwMDlGXHUwMEI5XHUwMEU1XHUwMDg1XHUwMEJCXHUwMEU2XHUwMEE2XHUwMDgyXHUwMEU1XHUwMEJGXHUwMEI1XHUwMEU1XHUwMEE0XHUwMEE3XHUwMEU1XHUwMDlFXHUwMDhCXHUwMEU2XHUwMDlDXHUwMEJBXHUwMEU3XHUwMEE1XHUwMEE4XHUwMEU3XHUwMDkwXHUwMDg2XHUwMEU4XHUwMEE3XHUwMEEzXHUwMEU1XHUwMDhDXHUwMEJGXHUwMEU1XHUwMDkwXHUwMDhEY3VhbmRvZW52aWFybWFkcmlkYnVzY2FyaW5pY2lvdGllbXBvcG9ycXVlY3VlbnRhZXN0YWRvcHVlZGVuanVlZ29zY29udHJhZXN0XHUwMEMzXHUwMEExbm5vbWJyZXRpZW5lbnBlcmZpbG1hbmVyYWFtaWdvc2NpdWRhZGNlbnRyb2F1bnF1ZXB1ZWRlc2RlbnRyb3ByaW1lcnByZWNpb3NlZ1x1MDBDM1x1MDBCQW5idWVub3N2b2x2ZXJwdW50b3NzZW1hbmFoYWJcdTAwQzNcdTAwQURhYWdvc3RvbnVldm9zdW5pZG9zY2FybG9zZXF1aXBvbmlcdTAwQzNcdTAwQjFvc211Y2hvc2FsZ3VuYWNvcnJlb2ltYWdlbnBhcnRpcmFycmliYW1hclx1MDBDM1x1MDBBRGFob21icmVlbXBsZW92ZXJkYWRjYW1iaW9tdWNoYXNmdWVyb25wYXNhZG9sXHUwMEMzXHUwMEFEbmVhcGFyZWNlbnVldmFzY3Vyc29zZXN0YWJhcXVpZXJvbGlicm9zY3VhbnRvYWNjZXNvbWlndWVsdmFyaW9zY3VhdHJvdGllbmVzZ3J1cG9zc2VyXHUwMEMzXHUwMEExbmV1cm9wYW1lZGlvc2ZyZW50ZWFjZXJjYWRlbVx1MDBDM1x1MDBBMXNvZmVydGFjb2NoZXNtb2RlbG9pdGFsaWFsZXRyYXNhbGdcdTAwQzNcdTAwQkFuY29tcHJhY3VhbGVzZXhpc3RlY3VlcnBvc2llbmRvcHJlbnNhbGxlZ2FydmlhamVzZGluZXJvbXVyY2lhcG9kclx1MDBDM1x1MDBBMXB1ZXN0b2RpYXJpb3B1ZWJsb3F1aWVyZW1hbnVlbHByb3Bpb2NyaXNpc2NpZXJ0b3NlZ3Vyb211ZXJ0ZWZ1ZW50ZWNlcnJhcmdyYW5kZWVmZWN0b3BhcnRlc21lZGlkYXByb3BpYW9mcmVjZXRpZXJyYWUtbWFpbHZhcmlhc2Zvcm1hc2Z1dHVyb29iamV0b3NlZ3VpcnJpZXNnb25vcm1hc21pc21vc1x1MDBDM1x1MDBCQW5pY29jYW1pbm9zaXRpb3NyYXpcdTAwQzNcdTAwQjNuZGViaWRvcHJ1ZWJhdG9sZWRvdGVuXHUwMEMzXHUwMEFEYWplc1x1MDBDM1x1MDBCQXNlc3Blcm9jb2NpbmFvcmlnZW50aWVuZGFjaWVudG9jXHUwMEMzXHUwMEExZGl6aGFibGFyc2VyXHUwMEMzXHUwMEFEYWxhdGluYWZ1ZXJ6YWVzdGlsb2d1ZXJyYWVudHJhclx1MDBDM1x1MDBBOXhpdG9sXHUwMEMzXHUwMEIzcGV6YWdlbmRhdlx1MDBDM1x1MDBBRGRlb2V2aXRhcnBhZ2luYW1ldHJvc2phdmllcnBhZHJlc2ZcdTAwQzNcdTAwQTFjaWxjYWJlemFcdTAwQzNcdTAwQTFyZWFzc2FsaWRhZW52XHUwMEMzXHUwMEFEb2phcFx1MDBDM1x1MDBCM25hYnVzb3NiaWVuZXN0ZXh0b3NsbGV2YXJwdWVkYW5mdWVydGVjb21cdTAwQzNcdTAwQkFuY2xhc2VzaHVtYW5vdGVuaWRvYmlsYmFvdW5pZGFkZXN0XHUwMEMzXHUwMEExc2VkaXRhcmNyZWFkb1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4N1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4RFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4OVx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNVx1MDBEMFx1MDA5QVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDA5Mlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBBRFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4N1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDA5NFx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Rlx1MDBEMFx1MDA5Rlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBBMVx1MDBEMFx1MDBBOFx1MDBEMFx1MDA5MFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBBN1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4M1x1MDBEMFx1MDBBMlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4RFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4RFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4M1x1MDBEMFx1MDA5Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Rlx1MDBEMFx1MDA5Mlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMFx1MDA5Mlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCMVx1MDBEMFx1MDA5RVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNVx1MDBEMFx1MDA5RVx1MDBEMFx1MDA5RVx1MDBEMFx1MDA5RVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Nlx1MDBEMVx1MDA4RFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDA5RVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4OFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5NFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA4Rlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNFx1MDBCRWphZ3Jhblx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDA4OFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDA4Rlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5OFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDA4OFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA4OFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA4Rlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDA4OFx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5M1x1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBRFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4MFx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OVx1MDBEOFx1MDBBNVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OVx1MDBEOVx1MDA4N1x1MDBEOFx1MDBCMFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBMlx1MDBEOFx1MDBBRVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OVx1MDBEOVx1MDA4N1x1MDBEOFx1MDBCMFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBCNVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCQVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCNlx1MDBEOFx1MDBCMFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4N1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4QVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4OVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBRVx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCN1x1MDBEOFx1MDBCOVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBRlx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBNVx1MDBEOFx1MDBCMFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBRFx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBNVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4MVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCNlx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4QVx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBQlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4OFx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBCM1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBCOVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBCMFx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBM1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBQlx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBRFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBM1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBRVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCNVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCNlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBRVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBMVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCNVx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBM1x1MDBEOFx1MDBBRFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBRFx1MDBEOFx1MDBBOVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4N1x1MDBEOFx1MDBBOVx1MDBEOFx1MDBCM1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBOVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBCQVx1MDBEOFx1MDBCMlx1MDBEOFx1MDBBOVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4MVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCOVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBM1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBMVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4MVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBRFx1MDBEOFx1MDBCM1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBCMVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOHByb2ZpbGVzZXJ2aWNlZGVmYXVsdGhpbXNlbGZkZXRhaWxzY29udGVudHN1cHBvcnRzdGFydGVkbWVzc2FnZXN1Y2Nlc3NmYXNoaW9uPHRpdGxlPmNvdW50cnlhY2NvdW50Y3JlYXRlZHN0b3JpZXNyZXN1bHRzcnVubmluZ3Byb2Nlc3N3cml0aW5nb2JqZWN0c3Zpc2libGV3ZWxjb21lYXJ0aWNsZXVua25vd25uZXR3b3JrY29tcGFueWR5bmFtaWNicm93c2VycHJpdmFjeXByb2JsZW1TZXJ2aWNlcmVzcGVjdGRpc3BsYXlyZXF1ZXN0cmVzZXJ2ZXdlYnNpdGVoaXN0b3J5ZnJpZW5kc29wdGlvbnN3b3JraW5ndmVyc2lvbm1pbGxpb25jaGFubmVsd2luZG93LmFkZHJlc3N2aXNpdGVkd2VhdGhlcmNvcnJlY3Rwcm9kdWN0ZWRpcmVjdGZvcndhcmR5b3UgY2FucmVtb3ZlZHN1YmplY3Rjb250cm9sYXJjaGl2ZWN1cnJlbnRyZWFkaW5nbGlicmFyeWxpbWl0ZWRtYW5hZ2VyZnVydGhlcnN1bW1hcnltYWNoaW5lbWludXRlc3ByaXZhdGVjb250ZXh0cHJvZ3JhbXNvY2lldHludW1iZXJzd3JpdHRlbmVuYWJsZWR0cmlnZ2Vyc291cmNlc2xvYWRpbmdlbGVtZW50cGFydG5lcmZpbmFsbHlwZXJmZWN0bWVhbmluZ3N5c3RlbXNrZWVwaW5nY3VsdHVyZSZxdW90Oyxqb3VybmFscHJvamVjdHN1cmZhY2VzJnF1b3Q7ZXhwaXJlc3Jldmlld3NiYWxhbmNlRW5nbGlzaENvbnRlbnR0aHJvdWdoUGxlYXNlIG9waW5pb25jb250YWN0YXZlcmFnZXByaW1hcnl2aWxsYWdlU3BhbmlzaGdhbGxlcnlkZWNsaW5lbWVldGluZ21pc3Npb25wb3B1bGFycXVhbGl0eW1lYXN1cmVnZW5lcmFsc3BlY2llc3Nlc3Npb25zZWN0aW9ud3JpdGVyc2NvdW50ZXJpbml0aWFscmVwb3J0c2ZpZ3VyZXNtZW1iZXJzaG9sZGluZ2Rpc3B1dGVlYXJsaWVyZXhwcmVzc2RpZ2l0YWxwaWN0dXJlQW5vdGhlcm1hcnJpZWR0cmFmZmljbGVhZGluZ2NoYW5nZWRjZW50cmFsdmljdG9yeWltYWdlcy9yZWFzb25zc3R1ZGllc2ZlYXR1cmVsaXN0aW5nbXVzdCBiZXNjaG9vbHNWZXJzaW9udXN1YWxseWVwaXNvZGVwbGF5aW5nZ3Jvd2luZ29idmlvdXNvdmVybGF5cHJlc2VudGFjdGlvbnM8L3VsPlxyXG53cmFwcGVyYWxyZWFkeWNlcnRhaW5yZWFsaXR5c3RvcmFnZWFub3RoZXJkZXNrdG9wb2ZmZXJlZHBhdHRlcm51bnVzdWFsRGlnaXRhbGNhcGl0YWxXZWJzaXRlZmFpbHVyZWNvbm5lY3RyZWR1Y2VkQW5kcm9pZGRlY2FkZXNyZWd1bGFyICZhbXA7IGFuaW1hbHNyZWxlYXNlQXV0b21hdGdldHRpbmdtZXRob2Rzbm90aGluZ1BvcHVsYXJjYXB0aW9ubGV0dGVyc2NhcHR1cmVzY2llbmNlbGljZW5zZWNoYW5nZXNFbmdsYW5kPTEmYW1wO0hpc3RvcnkgPSBuZXcgQ2VudHJhbHVwZGF0ZWRTcGVjaWFsTmV0d29ya3JlcXVpcmVjb21tZW50d2FybmluZ0NvbGxlZ2V0b29sYmFycmVtYWluc2JlY2F1c2VlbGVjdGVkRGV1dHNjaGZpbmFuY2V3b3JrZXJzcXVpY2tseWJldHdlZW5leGFjdGx5c2V0dGluZ2Rpc2Vhc2VTb2NpZXR5d2VhcG9uc2V4aGliaXQmbHQ7IS0tQ29udHJvbGNsYXNzZXNjb3ZlcmVkb3V0bGluZWF0dGFja3NkZXZpY2VzKHdpbmRvd3B1cnBvc2V0aXRsZT1cIk1vYmlsZSBraWxsaW5nc2hvd2luZ0l0YWxpYW5kcm9wcGVkaGVhdmlseWVmZmVjdHMtMSddKTtcbmNvbmZpcm1DdXJyZW50YWR2YW5jZXNoYXJpbmdvcGVuaW5nZHJhd2luZ2JpbGxpb25vcmRlcmVkR2VybWFueXJlbGF0ZWQ8L2Zvcm0+aW5jbHVkZXdoZXRoZXJkZWZpbmVkU2NpZW5jZWNhdGFsb2dBcnRpY2xlYnV0dG9uc2xhcmdlc3R1bmlmb3Jtam91cm5leXNpZGViYXJDaGljYWdvaG9saWRheUdlbmVyYWxwYXNzYWdlLCZxdW90O2FuaW1hdGVmZWVsaW5nYXJyaXZlZHBhc3NpbmduYXR1cmFscm91Z2hseS5cblxuVGhlIGJ1dCBub3RkZW5zaXR5QnJpdGFpbkNoaW5lc2VsYWNrIG9mdHJpYnV0ZUlyZWxhbmRcIiBkYXRhLWZhY3RvcnNyZWNlaXZldGhhdCBpc0xpYnJhcnlodXNiYW5kaW4gZmFjdGFmZmFpcnNDaGFybGVzcmFkaWNhbGJyb3VnaHRmaW5kaW5nbGFuZGluZzpsYW5nPVwicmV0dXJuIGxlYWRlcnNwbGFubmVkcHJlbWl1bXBhY2thZ2VBbWVyaWNhRWRpdGlvbl0mcXVvdDtNZXNzYWdlbmVlZCB0b3ZhbHVlPVwiY29tcGxleGxvb2tpbmdzdGF0aW9uYmVsaWV2ZXNtYWxsZXItbW9iaWxlcmVjb3Jkc3dhbnQgdG9raW5kIG9mRmlyZWZveHlvdSBhcmVzaW1pbGFyc3R1ZGllZG1heGltdW1oZWFkaW5ncmFwaWRseWNsaW1hdGVraW5nZG9tZW1lcmdlZGFtb3VudHNmb3VuZGVkcGlvbmVlcmZvcm11bGFkeW5hc3R5aG93IHRvIFN1cHBvcnRyZXZlbnVlZWNvbm9teVJlc3VsdHNicm90aGVyc29sZGllcmxhcmdlbHljYWxsaW5nLiZxdW90O0FjY291bnRFZHdhcmQgc2VnbWVudFJvYmVydCBlZmZvcnRzUGFjaWZpY2xlYXJuZWR1cCB3aXRoaGVpZ2h0OndlIGhhdmVBbmdlbGVzbmF0aW9uc19zZWFyY2hhcHBsaWVkYWNxdWlyZW1hc3NpdmVncmFudGVkOiBmYWxzZXRyZWF0ZWRiaWdnZXN0YmVuZWZpdGRyaXZpbmdTdHVkaWVzbWluaW11bXBlcmhhcHNtb3JuaW5nc2VsbGluZ2lzIHVzZWRyZXZlcnNldmFyaWFudCByb2xlPVwibWlzc2luZ2FjaGlldmVwcm9tb3Rlc3R1ZGVudHNvbWVvbmVleHRyZW1lcmVzdG9yZWJvdHRvbTpldm9sdmVkYWxsIHRoZXNpdGVtYXBlbmdsaXNod2F5IHRvICBBdWd1c3RzeW1ib2xzQ29tcGFueW1hdHRlcnNtdXNpY2FsYWdhaW5zdHNlcnZpbmd9KSgpO1xyXG5wYXltZW50dHJvdWJsZWNvbmNlcHRjb21wYXJlcGFyZW50c3BsYXllcnNyZWdpb25zbW9uaXRvciAnJ1RoZSB3aW5uaW5nZXhwbG9yZWFkYXB0ZWRHYWxsZXJ5cHJvZHVjZWFiaWxpdHllbmhhbmNlY2FyZWVycykuIFRoZSBjb2xsZWN0U2VhcmNoIGFuY2llbnRleGlzdGVkZm9vdGVyIGhhbmRsZXJwcmludGVkY29uc29sZUVhc3Rlcm5leHBvcnRzd2luZG93c0NoYW5uZWxpbGxlZ2FsbmV1dHJhbHN1Z2dlc3RfaGVhZGVyc2lnbmluZy5odG1sXCI+c2V0dGxlZHdlc3Rlcm5jYXVzaW5nLXdlYmtpdGNsYWltZWRKdXN0aWNlY2hhcHRlcnZpY3RpbXNUaG9tYXMgbW96aWxsYXByb21pc2VwYXJ0aWVzZWRpdGlvbm91dHNpZGU6ZmFsc2UsaHVuZHJlZE9seW1waWNfYnV0dG9uYXV0aG9yc3JlYWNoZWRjaHJvbmljZGVtYW5kc3NlY29uZHNwcm90ZWN0YWRvcHRlZHByZXBhcmVuZWl0aGVyZ3JlYXRseWdyZWF0ZXJvdmVyYWxsaW1wcm92ZWNvbW1hbmRzcGVjaWFsc2VhcmNoLndvcnNoaXBmdW5kaW5ndGhvdWdodGhpZ2hlc3RpbnN0ZWFkdXRpbGl0eXF1YXJ0ZXJDdWx0dXJldGVzdGluZ2NsZWFybHlleHBvc2VkQnJvd3NlcmxpYmVyYWx9IGNhdGNoUHJvamVjdGV4YW1wbGVoaWRlKCk7RmxvcmlkYWFuc3dlcnNhbGxvd2VkRW1wZXJvcmRlZmVuc2VzZXJpb3VzZnJlZWRvbVNldmVyYWwtYnV0dG9uRnVydGhlcm91dCBvZiAhPSBudWxsdHJhaW5lZERlbm1hcmt2b2lkKDApL2FsbC5qc3ByZXZlbnRSZXF1ZXN0U3RlcGhlblxuXG5XaGVuIG9ic2VydmU8L2gyPlxyXG5Nb2Rlcm4gcHJvdmlkZVwiIGFsdD1cImJvcmRlcnMuXG5cbkZvciBcblxuTWFueSBhcnRpc3RzcG93ZXJlZHBlcmZvcm1maWN0aW9udHlwZSBvZm1lZGljYWx0aWNrZXRzb3Bwb3NlZENvdW5jaWx3aXRuZXNzanVzdGljZUdlb3JnZSBCZWxnaXVtLi4uPC9hPnR3aXR0ZXJub3RhYmx5d2FpdGluZ3dhcmZhcmUgT3RoZXIgcmFua2luZ3BocmFzZXNtZW50aW9uc3Vydml2ZXNjaG9sYXI8L3A+XHJcbiBDb3VudHJ5aWdub3JlZGxvc3Mgb2ZqdXN0IGFzR2VvcmdpYXN0cmFuZ2U8aGVhZD48c3RvcHBlZDEnXSk7XHJcbmlzbGFuZHNub3RhYmxlYm9yZGVyOmxpc3Qgb2ZjYXJyaWVkMTAwLDAwMDwvaDM+XG4gc2V2ZXJhbGJlY29tZXNzZWxlY3Qgd2VkZGluZzAwLmh0bWxtb25hcmNob2ZmIHRoZXRlYWNoZXJoaWdobHkgYmlvbG9neWxpZmUgb2ZvciBldmVucmlzZSBvZiZyYXF1bztwbHVzb25laHVudGluZyh0aG91Z2hEb3VnbGFzam9pbmluZ2NpcmNsZXNGb3IgdGhlQW5jaWVudFZpZXRuYW12ZWhpY2xlc3VjaCBhc2NyeXN0YWx2YWx1ZSA9V2luZG93c2Vuam95ZWRhIHNtYWxsYXNzdW1lZDxhIGlkPVwiZm9yZWlnbiBBbGwgcmlob3cgdGhlRGlzcGxheXJldGlyZWRob3dldmVyaGlkZGVuO2JhdHRsZXNzZWVraW5nY2FiaW5ldHdhcyBub3Rsb29rIGF0Y29uZHVjdGdldCB0aGVKYW51YXJ5aGFwcGVuc3R1cm5pbmdhOmhvdmVyT25saW5lIEZyZW5jaCBsYWNraW5ndHlwaWNhbGV4dHJhY3RlbmVtaWVzZXZlbiBpZmdlbmVyYXRkZWNpZGVkYXJlIG5vdC9zZWFyY2hiZWxpZWZzLWltYWdlOmxvY2F0ZWRzdGF0aWMubG9naW5cIj5jb252ZXJ0dmlvbGVudGVudGVyZWRmaXJzdFwiPmNpcmN1aXRGaW5sYW5kY2hlbWlzdHNoZSB3YXMxMHB4O1wiPmFzIHN1Y2hkaXZpZGVkPC9zcGFuPndpbGwgYmVsaW5lIG9mYSBncmVhdG15c3RlcnkvaW5kZXguZmFsbGluZ2R1ZSB0byByYWlsd2F5Y29sbGVnZW1vbnN0ZXJkZXNjZW50aXQgd2l0aG51Y2xlYXJKZXdpc2ggcHJvdGVzdEJyaXRpc2hmbG93ZXJzcHJlZGljdHJlZm9ybXNidXR0b24gd2hvIHdhc2xlY3R1cmVpbnN0YW50c3VpY2lkZWdlbmVyaWNwZXJpb2RzbWFya2V0c1NvY2lhbCBmaXNoaW5nY29tYmluZWdyYXBoaWN3aW5uZXJzPGJyIC8+PGJ5IHRoZSBOYXR1cmFsUHJpdmFjeWNvb2tpZXNvdXRjb21lcmVzb2x2ZVN3ZWRpc2hicmllZmx5UGVyc2lhbnNvIG11Y2hDZW50dXJ5ZGVwaWN0c2NvbHVtbnNob3VzaW5nc2NyaXB0c25leHQgdG9iZWFyaW5nbWFwcGluZ3JldmlzZWRqUXVlcnkoLXdpZHRoOnRpdGxlXCI+dG9vbHRpcFNlY3Rpb25kZXNpZ25zVHVya2lzaHlvdW5nZXIubWF0Y2gofSkoKTtcblxuYnVybmluZ29wZXJhdGVkZWdyZWVzc291cmNlPVJpY2hhcmRjbG9zZWx5cGxhc3RpY2VudHJpZXM8L3RyPlxyXG5jb2xvcjojdWwgaWQ9XCJwb3NzZXNzcm9sbGluZ3BoeXNpY3NmYWlsaW5nZXhlY3V0ZWNvbnRlc3RsaW5rIHRvRGVmYXVsdDxiciAvPlxuOiB0cnVlLGNoYXJ0ZXJ0b3VyaXNtY2xhc3NpY3Byb2NlZWRleHBsYWluPC9oMT5cclxub25saW5lLj94bWwgdmVoZWxwaW5nZGlhbW9uZHVzZSB0aGVhaXJsaW5lZW5kIC0tPikuYXR0cihyZWFkZXJzaG9zdGluZyNmZmZmZmZyZWFsaXplVmluY2VudHNpZ25hbHMgc3JjPVwiL1Byb2R1Y3RkZXNwaXRlZGl2ZXJzZXRlbGxpbmdQdWJsaWMgaGVsZCBpbkpvc2VwaCB0aGVhdHJlYWZmZWN0czxzdHlsZT5hIGxhcmdlZG9lc24ndGxhdGVyLCBFbGVtZW50ZmF2aWNvbmNyZWF0b3JIdW5nYXJ5QWlycG9ydHNlZSB0aGVzbyB0aGF0TWljaGFlbFN5c3RlbXNQcm9ncmFtcywgYW5kICB3aWR0aD1lJnF1b3Q7dHJhZGluZ2xlZnRcIj5cbnBlcnNvbnNHb2xkZW4gQWZmYWlyc2dyYW1tYXJmb3JtaW5nZGVzdHJveWlkZWEgb2ZjYXNlIG9mb2xkZXN0IHRoaXMgaXMuc3JjID0gY2FydG9vbnJlZ2lzdHJDb21tb25zTXVzbGltc1doYXQgaXNpbiBtYW55bWFya2luZ3JldmVhbHNJbmRlZWQsZXF1YWxseS9zaG93X2FvdXRkb29yZXNjYXBlKEF1c3RyaWFnZW5ldGljc3lzdGVtLEluIHRoZSBzaXR0aW5nSGUgYWxzb0lzbGFuZHNBY2FkZW15XG5cdFx0PCEtLURhbmllbCBiaW5kaW5nYmxvY2tcIj5pbXBvc2VkdXRpbGl6ZUFicmFoYW0oZXhjZXB0e3dpZHRoOnB1dHRpbmcpLmh0bWwofHwgW107XG5EQVRBWyAqa2l0Y2hlbm1vdW50ZWRhY3R1YWwgZGlhbGVjdG1haW5seSBfYmxhbmsnaW5zdGFsbGV4cGVydHNpZih0eXBlSXQgYWxzbyZjb3B5OyBcIj5UZXJtc2Jvcm4gaW5PcHRpb25zZWFzdGVybnRhbGtpbmdjb25jZXJuZ2FpbmVkIG9uZ29pbmdqdXN0aWZ5Y3JpdGljc2ZhY3RvcnlpdHMgb3duYXNzYXVsdGludml0ZWRsYXN0aW5naGlzIG93bmhyZWY9XCIvXCIgcmVsPVwiZGV2ZWxvcGNvbmNlcnRkaWFncmFtZG9sbGFyc2NsdXN0ZXJwaHA/aWQ9YWxjb2hvbCk7fSkoKTt1c2luZyBhPjxzcGFuPnZlc3NlbHNyZXZpdmFsQWRkcmVzc2FtYXRldXJhbmRyb2lkYWxsZWdlZGlsbG5lc3N3YWxraW5nY2VudGVyc3F1YWxpZnltYXRjaGVzdW5pZmllZGV4dGluY3REZWZlbnNlZGllZCBpblxuXHQ8IS0tIGN1c3RvbXNsaW5raW5nTGl0dGxlIEJvb2sgb2ZldmVuaW5nbWluLmpzP2FyZSB0aGVrb250YWt0dG9kYXkncy5odG1sXCIgdGFyZ2V0PXdlYXJpbmdBbGwgUmlnO1xufSkoKTtyYWlzaW5nIEFsc28sIGNydWNpYWxhYm91dFwiPmRlY2xhcmUtLT5cbjxzY2ZpcmVmb3hhcyBtdWNoYXBwbGllc2luZGV4LCBzLCBidXQgdHlwZSA9IFxuXHJcbjwhLS10b3dhcmRzUmVjb3Jkc1ByaXZhdGVGb3JlaWduUHJlbWllcmNob2ljZXNWaXJ0dWFscmV0dXJuc0NvbW1lbnRQb3dlcmVkaW5saW5lO3BvdmVydHljaGFtYmVyTGl2aW5nIHZvbHVtZXNBbnRob255bG9naW5cIiBSZWxhdGVkRWNvbm9teXJlYWNoZXNjdXR0aW5nZ3Jhdml0eWxpZmUgaW5DaGFwdGVyLXNoYWRvd05vdGFibGU8L3RkPlxyXG4gcmV0dXJuc3RhZGl1bXdpZGdldHN2YXJ5aW5ndHJhdmVsc2hlbGQgYnl3aG8gYXJld29yayBpbmZhY3VsdHlhbmd1bGFyd2hvIGhhZGFpcnBvcnR0b3duIG9mXG5cblNvbWUgJ2NsaWNrJ2NoYXJnZXNrZXl3b3JkaXQgd2lsbGNpdHkgb2YodGhpcyk7QW5kcmV3IHVuaXF1ZSBjaGVja2Vkb3IgbW9yZTMwMHB4OyByZXR1cm47cnNpb249XCJwbHVnaW5zd2l0aGluIGhlcnNlbGZTdGF0aW9uRmVkZXJhbHZlbnR1cmVwdWJsaXNoc2VudCB0b3RlbnNpb25hY3RyZXNzY29tZSB0b2ZpbmdlcnNEdWtlIG9mcGVvcGxlLGV4cGxvaXR3aGF0IGlzaGFybW9ueWEgbWFqb3JcIjpcImh0dHBpbiBoaXMgbWVudVwiPlxubW9udGhseW9mZmljZXJjb3VuY2lsZ2FpbmluZ2V2ZW4gaW5TdW1tYXJ5ZGF0ZSBvZmxveWFsdHlmaXRuZXNzYW5kIHdhc2VtcGVyb3JzdXByZW1lU2Vjb25kIGhlYXJpbmdSdXNzaWFubG9uZ2VzdEFsYmVydGFsYXRlcmFsc2V0IG9mIHNtYWxsXCI+LmFwcGVuZGRvIHdpdGhmZWRlcmFsYmFuayBvZmJlbmVhdGhEZXNwaXRlQ2FwaXRhbGdyb3VuZHMpLCBhbmQgcGVyY2VudGl0IGZyb21jbG9zaW5nY29udGFpbkluc3RlYWRmaWZ0ZWVuYXMgd2VsbC55YWhvby5yZXNwb25kZmlnaHRlcm9ic2N1cmVyZWZsZWN0b3JnYW5pYz0gTWF0aC5lZGl0aW5nb25saW5lIHBhZGRpbmdhIHdob2xlb25lcnJvcnllYXIgb2ZlbmQgb2YgYmFycmllcndoZW4gaXRoZWFkZXIgaG9tZSBvZnJlc3VtZWRyZW5hbWVkc3Ryb25nPmhlYXRpbmdyZXRhaW5zY2xvdWRmcndheSBvZiBNYXJjaCAxa25vd2luZ2luIHBhcnRCZXR3ZWVubGVzc29uc2Nsb3Nlc3R2aXJ0dWFsbGlua3NcIj5jcm9zc2VkRU5EIC0tPmZhbW91cyBhd2FyZGVkTGljZW5zZUhlYWx0aCBmYWlybHkgd2VhbHRoeW1pbmltYWxBZnJpY2FuY29tcGV0ZWxhYmVsXCI+c2luZ2luZ2Zhcm1lcnNCcmFzaWwpZGlzY3Vzc3JlcGxhY2VHcmVnb3J5Zm9udCBjb3B1cnN1ZWRhcHBlYXJzbWFrZSB1cHJvdW5kZWRib3RoIG9mYmxvY2tlZHNhdyB0aGVvZmZpY2VzY29sb3Vyc2lmKGRvY3V3aGVuIGhlZW5mb3JjZXB1c2goZnVBdWd1c3QgVVRGLThcIj5GYW50YXN5aW4gbW9zdGluanVyZWRVc3VhbGx5ZmFybWluZ2Nsb3N1cmVvYmplY3QgZGVmZW5jZXVzZSBvZiBNZWRpY2FsPGJvZHk+XG5ldmlkZW50YmUgdXNlZGtleUNvZGVzaXh0ZWVuSXNsYW1pYyMwMDAwMDBlbnRpcmUgd2lkZWx5IGFjdGl2ZSAodHlwZW9mb25lIGNhbmNvbG9yID1zcGVha2VyZXh0ZW5kc1BoeXNpY3N0ZXJyYWluPHRib2R5PmZ1bmVyYWx2aWV3aW5nbWlkZGxlIGNyaWNrZXRwcm9waGV0c2hpZnRlZGRvY3RvcnNSdXNzZWxsIHRhcmdldGNvbXBhY3RhbGdlYnJhc29jaWFsLWJ1bGsgb2ZtYW4gYW5kPC90ZD5cbiBoZSBsZWZ0KS52YWwoKWZhbHNlKTtsb2dpY2FsYmFua2luZ2hvbWUgdG9uYW1pbmcgQXJpem9uYWNyZWRpdHMpO1xufSk7XG5mb3VuZGVyaW4gdHVybkNvbGxpbnNiZWZvcmUgQnV0IHRoZWNoYXJnZWRUaXRsZVwiPkNhcHRhaW5zcGVsbGVkZ29kZGVzc1RhZyAtLT5BZGRpbmc6YnV0IHdhc1JlY2VudCBwYXRpZW50YmFjayBpbj1mYWxzZSZMaW5jb2xud2Uga25vd0NvdW50ZXJKdWRhaXNtc2NyaXB0IGFsdGVyZWQnXSk7XG4gIGhhcyB0aGV1bmNsZWFyRXZlbnQnLGJvdGggaW5ub3QgYWxsXG5cbjwhLS0gcGxhY2luZ2hhcmQgdG8gY2VudGVyc29ydCBvZmNsaWVudHNzdHJlZXRzQmVybmFyZGFzc2VydHN0ZW5kIHRvZmFudGFzeWRvd24gaW5oYXJib3VyRnJlZWRvbWpld2VscnkvYWJvdXQuLnNlYXJjaGxlZ2VuZHNpcyBtYWRlbW9kZXJuIG9ubHkgb25vbmx5IHRvaW1hZ2VcIiBsaW5lYXIgcGFpbnRlcmFuZCBub3RyYXJlbHkgYWNyb255bWRlbGl2ZXJzaG9ydGVyMDAmYW1wO2FzIG1hbnl3aWR0aD1cIi8qIDwhW0N0aXRsZSA9b2YgdGhlIGxvd2VzdCBwaWNrZWQgZXNjYXBlZHVzZXMgb2ZwZW9wbGVzIFB1YmxpY01hdHRoZXd0YWN0aWNzZGFtYWdlZHdheSBmb3JsYXdzIG9mZWFzeSB0byB3aW5kb3dzdHJvbmcgIHNpbXBsZX1jYXRjaChzZXZlbnRoaW5mb2JveHdlbnQgdG9wYWludGVkY2l0aXplbkkgZG9uJ3RyZXRyZWF0LiBTb21lIHd3LlwiKTtcbmJvbWJpbmdtYWlsdG86bWFkZSBpbi4gTWFueSBjYXJyaWVzfHx7fTt3aXdvcmsgb2ZzeW5vbnltZGVmZWF0c2Zhdm9yZWRvcHRpY2FscGFnZVRyYXVubGVzcyBzZW5kaW5nbGVmdFwiPjxjb21TY29yQWxsIHRoZWpRdWVyeS50b3VyaXN0Q2xhc3NpY2ZhbHNlXCIgV2lsaGVsbXN1YnVyYnNnZW51aW5lYmlzaG9wcy5zcGxpdChnbG9iYWwgZm9sbG93c2JvZHkgb2Zub21pbmFsQ29udGFjdHNlY3VsYXJsZWZ0IHRvY2hpZWZseS1oaWRkZW4tYmFubmVyPC9saT5cblxuLiBXaGVuIGluIGJvdGhkaXNtaXNzRXhwbG9yZWFsd2F5cyB2aWEgdGhlc3BhXHUwMEMzXHUwMEIxb2x3ZWxmYXJlcnVsaW5nIGFycmFuZ2VjYXB0YWluaGlzIHNvbnJ1bGUgb2ZoZSB0b29raXRzZWxmLD0wJmFtcDsoY2FsbGVkc2FtcGxlc3RvIG1ha2Vjb20vcGFnTWFydGluIEtlbm5lZHlhY2NlcHRzZnVsbCBvZmhhbmRsZWRCZXNpZGVzLy8tLT48L2FibGUgdG90YXJnZXRzZXNzZW5jZWhpbSB0byBpdHMgYnkgY29tbW9uLm1pbmVyYWx0byB0YWtld2F5cyB0b3Mub3JnL2xhZHZpc2VkcGVuYWx0eXNpbXBsZTppZiB0aGV5TGV0dGVyc2Egc2hvcnRIZXJiZXJ0c3RyaWtlcyBncm91cHMubGVuZ3RoZmxpZ2h0c292ZXJsYXBzbG93bHkgbGVzc2VyIHNvY2lhbCA8L3A+XG5cdFx0aXQgaW50b3JhbmtlZCByYXRlIG9mdWw+XHJcbiAgYXR0ZW1wdHBhaXIgb2ZtYWtlIGl0S29udGFrdEFudG9uaW9oYXZpbmcgcmF0aW5ncyBhY3RpdmVzdHJlYW1zdHJhcHBlZFwiKS5jc3MoaG9zdGlsZWxlYWQgdG9saXR0bGUgZ3JvdXBzLFBpY3R1cmUtLT5cclxuXHJcbiByb3dzPVwiIG9iamVjdGludmVyc2U8Zm9vdGVyQ3VzdG9tVj48XFwvc2Nyc29sdmluZ0NoYW1iZXJzbGF2ZXJ5d291bmRlZHdoZXJlYXMhPSAndW5kZm9yIGFsbHBhcnRseSAtcmlnaHQ6QXJhYmlhbmJhY2tlZCBjZW50dXJ5dW5pdCBvZm1vYmlsZS1FdXJvcGUsaXMgaG9tZXJpc2sgb2ZkZXNpcmVkQ2xpbnRvbmNvc3Qgb2ZhZ2Ugb2YgYmVjb21lIG5vbmUgb2ZwJnF1b3Q7TWlkZGxlIGVhZCcpWzBDcml0aWNzc3R1ZGlvcz4mY29weTtncm91cFwiPmFzc2VtYmxtYWtpbmcgcHJlc3NlZHdpZGdldC5wczpcIiA/IHJlYnVpbHRieSBzb21lRm9ybWVyIGVkaXRvcnNkZWxheWVkQ2Fub25pY2hhZCB0aGVwdXNoaW5nY2xhc3M9XCJidXQgYXJlcGFydGlhbEJhYnlsb25ib3R0b20gY2FycmllckNvbW1hbmRpdHMgdXNlQXMgd2l0aGNvdXJzZXNhIHRoaXJkZGVub3Rlc2Fsc28gaW5Ib3VzdG9uMjBweDtcIj5hY2N1c2VkZG91YmxlIGdvYWwgb2ZGYW1vdXMgKS5iaW5kKHByaWVzdHMgT25saW5laW4gSnVseXN0ICsgXCJnY29uc3VsdGRlY2ltYWxoZWxwZnVscmV2aXZlZGlzIHZlcnlyJysnaXB0bG9zaW5nIGZlbWFsZXNpcyBhbHNvc3RyaW5nc2RheXMgb2ZhcnJpdmFsZnV0dXJlIDxvYmplY3Rmb3JjaW5nU3RyaW5nKFwiIC8+XG5cdFx0aGVyZSBpc2VuY29kZWQuICBUaGUgYmFsbG9vbmRvbmUgYnkvY29tbW9uYmdjb2xvcmxhdyBvZiBJbmRpYW5hYXZvaWRlZGJ1dCB0aGUycHggM3B4anF1ZXJ5LmFmdGVyIGFwb2xpY3kubWVuIGFuZGZvb3Rlci09IHRydWU7Zm9yIHVzZXNjcmVlbi5JbmRpYW4gaW1hZ2UgPWZhbWlseSxodHRwOi8vICZuYnNwO2RyaXZlcnNldGVybmFsc2FtZSBhc25vdGljZWR2aWV3ZXJzfSkoKTtcbiBpcyBtb3Jlc2Vhc29uc2Zvcm1lciB0aGUgbmV3aXMganVzdGNvbnNlbnQgU2VhcmNod2FzIHRoZXdoeSB0aGVzaGlwcGVkYnI+PGJyPndpZHRoOiBoZWlnaHQ9bWFkZSBvZmN1aXNpbmVpcyB0aGF0YSB2ZXJ5IEFkbWlyYWwgZml4ZWQ7bm9ybWFsIE1pc3Npb25QcmVzcywgb250YXJpb2NoYXJzZXR0cnkgdG8gaW52YWRlZD1cInRydWVcInNwYWNpbmdpcyBtb3N0YSBtb3JlIHRvdGFsbHlmYWxsIG9mfSk7XHJcbiAgaW1tZW5zZXRpbWUgaW5zZXQgb3V0c2F0aXNmeXRvIGZpbmRkb3duIHRvbG90IG9mIFBsYXllcnNpbiBKdW5lcXVhbnR1bW5vdCB0aGV0aW1lIHRvZGlzdGFudEZpbm5pc2hzcmMgPSAoc2luZ2xlIGhlbHAgb2ZHZXJtYW4gbGF3IGFuZGxhYmVsZWRmb3Jlc3RzY29va2luZ3NwYWNlXCI+aGVhZGVyLXdlbGwgYXNTdGFubGV5YnJpZGdlcy9nbG9iYWxDcm9hdGlhIEFib3V0IFswXTtcbiAgaXQsIGFuZGdyb3VwZWRiZWluZyBhKXt0aHJvd2hlIG1hZGVsaWdodGVyZXRoaWNhbEZGRkZGRlwiYm90dG9tXCJsaWtlIGEgZW1wbG95c2xpdmUgaW5hcyBzZWVucHJpbnRlcm1vc3Qgb2Z1Yi1saW5rcmVqZWN0c2FuZCB1c2VpbWFnZVwiPnN1Y2NlZWRmZWVkaW5nTnVjbGVhcmluZm9ybWF0byBoZWxwV29tZW4nc05laXRoZXJNZXhpY2FucHJvdGVpbjx0YWJsZSBieSBtYW55aGVhbHRoeWxhd3N1aXRkZXZpc2VkLnB1c2goe3NlbGxlcnNzaW1wbHkgVGhyb3VnaC5jb29raWUgSW1hZ2Uob2xkZXJcIj51cy5qc1wiPiBTaW5jZSB1bml2ZXJzbGFyZ2VyIG9wZW4gdG8hLS0gZW5kbGllcyBpbiddKTtcclxuICBtYXJrZXR3aG8gaXMgKFwiRE9NQ29tYW5hZ2Vkb25lIGZvcnR5cGVvZiBLaW5nZG9tcHJvZml0c3Byb3Bvc2V0byBzaG93Y2VudGVyO21hZGUgaXRkcmVzc2Vkd2VyZSBpbm1peHR1cmVwcmVjaXNlYXJpc2luZ3NyYyA9ICdtYWtlIGEgc2VjdXJlZEJhcHRpc3R2b3RpbmcgXG5cdFx0dmFyIE1hcmNoIDJncmV3IHVwQ2xpbWF0ZS5yZW1vdmVza2lsbGVkd2F5IHRoZTwvaGVhZD5mYWNlIG9mYWN0aW5nIHJpZ2h0XCI+dG8gd29ya3JlZHVjZXNoYXMgaGFkZXJlY3RlZHNob3coKTthY3Rpb249Ym9vayBvZmFuIGFyZWE9PSBcImh0dDxoZWFkZXJcbjxodG1sPmNvbmZvcm1mYWNpbmcgY29va2llLnJlbHkgb25ob3N0ZWQgLmN1c3RvbWhlIHdlbnRidXQgZm9yc3ByZWFkIEZhbWlseSBhIG1lYW5zb3V0IHRoZWZvcnVtcy5mb290YWdlXCI+TW9iaWxDbGVtZW50c1wiIGlkPVwiYXMgaGlnaGludGVuc2UtLT48IS0tZmVtYWxlIGlzIHNlZW5pbXBsaWVkc2V0IHRoZWEgc3RhdGVhbmQgaGlzZmFzdGVzdGJlc2lkZXNidXR0b25fYm91bmRlZFwiPjxpbWcgSW5mb2JveGV2ZW50cyxhIHlvdW5nYW5kIGFyZU5hdGl2ZSBjaGVhcGVyVGltZW91dGFuZCBoYXNlbmdpbmVzd29uIHRoZShtb3N0bHlyaWdodDogZmluZCBhIC1ib3R0b21QcmluY2UgYXJlYSBvZm1vcmUgb2ZzZWFyY2hfbmF0dXJlLGxlZ2FsbHlwZXJpb2QsbGFuZCBvZm9yIHdpdGhpbmR1Y2VkcHJvdmluZ21pc3NpbGVsb2NhbGx5QWdhaW5zdHRoZSB3YXlrJnF1b3Q7cHg7XCI+XHJcbnB1c2hlZCBhYmFuZG9ubnVtZXJhbENlcnRhaW5JbiB0aGlzbW9yZSBpbm9yIHNvbWVuYW1lIGlzYW5kLCBpbmNyb3duZWRJU0JOIDAtY3JlYXRlc09jdG9iZXJtYXkgbm90Y2VudGVyIGxhdGUgaW5EZWZlbmNlZW5hY3RlZHdpc2ggdG9icm9hZGx5Y29vbGluZ29ubG9hZD1pdC4gVGhlcmVjb3Zlck1lbWJlcnNoZWlnaHQgYXNzdW1lczxodG1sPlxucGVvcGxlLmluIG9uZSA9d2luZG93Zm9vdGVyX2EgZ29vZCByZWtsYW1hb3RoZXJzLHRvIHRoaXNfY29va2llcGFuZWxcIj5Mb25kb24sZGVmaW5lc2NydXNoZWRiYXB0aXNtY29hc3RhbHN0YXR1cyB0aXRsZVwiIG1vdmUgdG9sb3N0IGluYmV0dGVyIGltcGxpZXNyaXZhbHJ5c2VydmVycyBTeXN0ZW1QZXJoYXBzZXMgYW5kIGNvbnRlbmRmbG93aW5nbGFzdGVkIHJpc2UgaW5HZW5lc2lzdmlldyBvZnJpc2luZyBzZWVtIHRvYnV0IGluIGJhY2tpbmdoZSB3aWxsZ2l2ZW4gYWdpdmluZyBjaXRpZXMuZmxvdyBvZiBMYXRlciBhbGwgYnV0SGlnaHdheW9ubHkgYnlzaWduIG9maGUgZG9lc2RpZmZlcnNiYXR0ZXJ5JmFtcDtsYXNpbmdsZXN0aHJlYXRzaW50ZWdlcnRha2Ugb25yZWZ1c2VkY2FsbGVkID1VUyZhbXBTZWUgdGhlbmF0aXZlc2J5IHRoaXNzeXN0ZW0uaGVhZCBvZjpob3ZlcixsZXNiaWFuc3VybmFtZWFuZCBhbGxjb21tb24vaGVhZGVyX19wYXJhbXNIYXJ2YXJkL3BpeGVsLnJlbW92YWxzbyBsb25ncm9sZSBvZmpvaW50bHlza3lzY3JhVW5pY29kZWJyIC8+XHJcbkF0bGFudGFudWNsZXVzQ291bnR5LHB1cmVseSBjb3VudFwiPmVhc2lseSBidWlsZCBhb25jbGlja2EgZ2l2ZW5wb2ludGVyaCZxdW90O2V2ZW50cyBlbHNlIHtcbmRpdGlvbnNub3cgdGhlLCB3aXRoIG1hbiB3aG9vcmcvV2Vib25lIGFuZGNhdmFscnlIZSBkaWVkc2VhdHRsZTAwLDAwMCB7d2luZG93aGF2ZSB0b2lmKHdpbmRhbmQgaXRzc29sZWx5IG0mcXVvdDtyZW5ld2VkRGV0cm9pdGFtb25nc3RlaXRoZXIgdGhlbSBpblNlbmF0b3JVczwvYT48S2luZyBvZkZyYW5jaXMtcHJvZHVjaGUgdXNlZGFydCBhbmRoaW0gYW5kdXNlZCBieXNjb3JpbmdhdCBob21ldG8gaGF2ZXJlbGF0ZXNpYmlsaXR5ZmFjdGlvbkJ1ZmZhbG9saW5rXCI+PHdoYXQgaGVmcmVlIHRvQ2l0eSBvZmNvbWUgaW5zZWN0b3JzY291bnRlZG9uZSBkYXluZXJ2b3Vzc3F1YXJlIH07aWYoZ29pbiB3aGF0aW1nXCIgYWxpcyBvbmx5c2VhcmNoL3R1ZXNkYXlsb29zZWx5U29sb21vbnNleHVhbCAtIDxhIGhybWVkaXVtXCJETyBOT1QgRnJhbmNlLHdpdGggYSB3YXIgYW5kc2Vjb25kIHRha2UgYSA+XHJcblxyXG5cclxubWFya2V0LmhpZ2h3YXlkb25lIGluY3Rpdml0eVwibGFzdFwiPm9ibGlnZWRyaXNlIHRvXCJ1bmRlZmltYWRlIHRvIEVhcmx5IHByYWlzZWRpbiBpdHMgZm9yIGhpc2F0aGxldGVKdXBpdGVyWWFob28hIHRlcm1lZCBzbyBtYW55cmVhbGx5IHMuIFRoZSBhIHdvbWFuP3ZhbHVlPWRpcmVjdCByaWdodFwiIGJpY3ljbGVhY2luZz1cImRheSBhbmRzdGF0aW5nUmF0aGVyLGhpZ2hlciBPZmZpY2UgYXJlIG5vd3RpbWVzLCB3aGVuIGEgcGF5IGZvcm9uIHRoaXMtbGlua1wiPjtib3JkZXJhcm91bmQgYW5udWFsIHRoZSBOZXdwdXQgdGhlLmNvbVwiIHRha2luIHRvYSBicmllZihpbiB0aGVncm91cHMuOyB3aWR0aGVuenltZXNzaW1wbGUgaW4gbGF0ZXtyZXR1cm50aGVyYXB5YSBwb2ludGJhbm5pbmdpbmtzXCI+XG4oKTtcIiByZWEgcGxhY2VcXHUwMDNDYWFib3V0IGF0cj5cclxuXHRcdGNjb3VudCBnaXZlcyBhPFNDUklQVFJhaWx3YXl0aGVtZXMvdG9vbGJveEJ5SWQoXCJ4aHVtYW5zLHdhdGNoZXNpbiBzb21lIGlmICh3aWNvbWluZyBmb3JtYXRzIFVuZGVyIGJ1dCBoYXNoYW5kZWQgbWFkZSBieXRoYW4gaW5mZWFyIG9mZGVub3RlZC9pZnJhbWVsZWZ0IGludm9sdGFnZWluIGVhY2hhJnF1b3Q7YmFzZSBvZkluIG1hbnl1bmRlcmdvcmVnaW1lc2FjdGlvbiA8L3A+XHJcbjx1c3RvbVZhOyZndDs8L2ltcG9ydHNvciB0aGF0bW9zdGx5ICZhbXA7cmUgc2l6ZT1cIjwvYT48L2hhIGNsYXNzcGFzc2l2ZUhvc3QgPSBXaGV0aGVyZmVydGlsZVZhcmlvdXM9W107KGZ1Y2FtZXJhcy8+PC90ZD5hY3RzIGFzSW4gc29tZT5cclxuXHJcbjwhb3JnYW5pcyA8YnIgLz5CZWlqaW5nY2F0YWxcdTAwQzNcdTAwQTBkZXV0c2NoZXVyb3BldWV1c2thcmFnYWVpbGdlc3ZlbnNrYWVzcGFcdTAwQzNcdTAwQjFhbWVuc2FqZXVzdWFyaW90cmFiYWpvbVx1MDBDM1x1MDBBOXhpY29wXHUwMEMzXHUwMEExZ2luYXNpZW1wcmVzaXN0ZW1hb2N0dWJyZWR1cmFudGVhXHUwMEMzXHUwMEIxYWRpcmVtcHJlc2Ftb21lbnRvbnVlc3Ryb3ByaW1lcmF0cmF2XHUwMEMzXHUwMEE5c2dyYWNpYXNudWVzdHJhcHJvY2Vzb2VzdGFkb3NjYWxpZGFkcGVyc29uYW5cdTAwQzNcdTAwQkFtZXJvYWN1ZXJkb21cdTAwQzNcdTAwQkFzaWNhbWllbWJyb29mZXJ0YXNhbGd1bm9zcGFcdTAwQzNcdTAwQURzZXNlamVtcGxvZGVyZWNob2FkZW1cdTAwQzNcdTAwQTFzcHJpdmFkb2FncmVnYXJlbmxhY2VzcG9zaWJsZWhvdGVsZXNzZXZpbGxhcHJpbWVyb1x1MDBDM1x1MDBCQWx0aW1vZXZlbnRvc2FyY2hpdm9jdWx0dXJhbXVqZXJlc2VudHJhZGFhbnVuY2lvZW1iYXJnb21lcmNhZG9ncmFuZGVzZXN0dWRpb21lam9yZXNmZWJyZXJvZGlzZVx1MDBDM1x1MDBCMW90dXJpc21vY1x1MDBDM1x1MDBCM2RpZ29wb3J0YWRhZXNwYWNpb2ZhbWlsaWFhbnRvbmlvcGVybWl0ZWd1YXJkYXJhbGd1bmFzcHJlY2lvc2FsZ3VpZW5zZW50aWRvdmlzaXRhc3RcdTAwQzNcdTAwQUR0dWxvY29ub2NlcnNlZ3VuZG9jb25zZWpvZnJhbmNpYW1pbnV0b3NzZWd1bmRhdGVuZW1vc2VmZWN0b3NtXHUwMEMzXHUwMEExbGFnYXNlc2lcdTAwQzNcdTAwQjNucmV2aXN0YWdyYW5hZGFjb21wcmFyaW5ncmVzb2dhcmNcdTAwQzNcdTAwQURhYWNjaVx1MDBDM1x1MDBCM25lY3VhZG9ycXVpZW5lc2luY2x1c29kZWJlclx1MDBDM1x1MDBBMW1hdGVyaWFob21icmVzbXVlc3RyYXBvZHJcdTAwQzNcdTAwQURhbWFcdTAwQzNcdTAwQjFhbmFcdTAwQzNcdTAwQkFsdGltYWVzdGFtb3NvZmljaWFsdGFtYmllbm5pbmdcdTAwQzNcdTAwQkFuc2FsdWRvc3BvZGVtb3NtZWpvcmFycG9zaXRpb25idXNpbmVzc2hvbWVwYWdlc2VjdXJpdHlsYW5ndWFnZXN0YW5kYXJkY2FtcGFpZ25mZWF0dXJlc2NhdGVnb3J5ZXh0ZXJuYWxjaGlsZHJlbnJlc2VydmVkcmVzZWFyY2hleGNoYW5nZWZhdm9yaXRldGVtcGxhdGVtaWxpdGFyeWluZHVzdHJ5c2VydmljZXNtYXRlcmlhbHByb2R1Y3Rzei1pbmRleDpjb21tZW50c3NvZnR3YXJlY29tcGxldGVjYWxlbmRhcnBsYXRmb3JtYXJ0aWNsZXNyZXF1aXJlZG1vdmVtZW50cXVlc3Rpb25idWlsZGluZ3BvbGl0aWNzcG9zc2libGVyZWxpZ2lvbnBoeXNpY2FsZmVlZGJhY2tyZWdpc3RlcnBpY3R1cmVzZGlzYWJsZWRwcm90b2NvbGF1ZGllbmNlc2V0dGluZ3NhY3Rpdml0eWVsZW1lbnRzbGVhcm5pbmdhbnl0aGluZ2Fic3RyYWN0cHJvZ3Jlc3NvdmVydmlld21hZ2F6aW5lZWNvbm9taWN0cmFpbmluZ3ByZXNzdXJldmFyaW91cyA8c3Ryb25nPnByb3BlcnR5c2hvcHBpbmd0b2dldGhlcmFkdmFuY2VkYmVoYXZpb3Jkb3dubG9hZGZlYXR1cmVkZm9vdGJhbGxzZWxlY3RlZExhbmd1YWdlZGlzdGFuY2VyZW1lbWJlcnRyYWNraW5ncGFzc3dvcmRtb2RpZmllZHN0dWRlbnRzZGlyZWN0bHlmaWdodGluZ25vcnRoZXJuZGF0YWJhc2VmZXN0aXZhbGJyZWFraW5nbG9jYXRpb25pbnRlcm5ldGRyb3Bkb3ducHJhY3RpY2VldmlkZW5jZWZ1bmN0aW9ubWFycmlhZ2VyZXNwb25zZXByb2JsZW1zbmVnYXRpdmVwcm9ncmFtc2FuYWx5c2lzcmVsZWFzZWRiYW5uZXJcIj5wdXJjaGFzZXBvbGljaWVzcmVnaW9uYWxjcmVhdGl2ZWFyZ3VtZW50Ym9va21hcmtyZWZlcnJlcmNoZW1pY2FsZGl2aXNpb25jYWxsYmFja3NlcGFyYXRlcHJvamVjdHNjb25mbGljdGhhcmR3YXJlaW50ZXJlc3RkZWxpdmVyeW1vdW50YWlub2J0YWluZWQ9IGZhbHNlO2Zvcih2YXIgYWNjZXB0ZWRjYXBhY2l0eWNvbXB1dGVyaWRlbnRpdHlhaXJjcmFmdGVtcGxveWVkcHJvcG9zZWRkb21lc3RpY2luY2x1ZGVzcHJvdmlkZWRob3NwaXRhbHZlcnRpY2FsY29sbGFwc2VhcHByb2FjaHBhcnRuZXJzbG9nb1wiPjxhZGF1Z2h0ZXJhdXRob3JcIiBjdWx0dXJhbGZhbWlsaWVzL2ltYWdlcy9hc3NlbWJseXBvd2VyZnVsdGVhY2hpbmdmaW5pc2hlZGRpc3RyaWN0Y3JpdGljYWxjZ2ktYmluL3B1cnBvc2VzcmVxdWlyZXNlbGVjdGlvbmJlY29taW5ncHJvdmlkZXNhY2FkZW1pY2V4ZXJjaXNlYWN0dWFsbHltZWRpY2luZWNvbnN0YW50YWNjaWRlbnRNYWdhemluZWRvY3VtZW50c3RhcnRpbmdib3R0b21cIj5vYnNlcnZlZDogJnF1b3Q7ZXh0ZW5kZWRwcmV2aW91c1NvZnR3YXJlY3VzdG9tZXJkZWNpc2lvbnN0cmVuZ3RoZGV0YWlsZWRzbGlnaHRseXBsYW5uaW5ndGV4dGFyZWFjdXJyZW5jeWV2ZXJ5b25lc3RyYWlnaHR0cmFuc2ZlcnBvc2l0aXZlcHJvZHVjZWRoZXJpdGFnZXNoaXBwaW5nYWJzb2x1dGVyZWNlaXZlZHJlbGV2YW50YnV0dG9uXCIgdmlvbGVuY2Vhbnl3aGVyZWJlbmVmaXRzbGF1bmNoZWRyZWNlbnRseWFsbGlhbmNlZm9sbG93ZWRtdWx0aXBsZWJ1bGxldGluaW5jbHVkZWRvY2N1cnJlZGludGVybmFsJCh0aGlzKS5yZXB1YmxpYz48dHI+PHRkY29uZ3Jlc3NyZWNvcmRlZHVsdGltYXRlc29sdXRpb248dWwgaWQ9XCJkaXNjb3ZlckhvbWU8L2E+d2Vic2l0ZXNuZXR3b3Jrc2FsdGhvdWdoZW50aXJlbHltZW1vcmlhbG1lc3NhZ2VzY29udGludWVhY3RpdmVcIj5zb21ld2hhdHZpY3RvcmlhV2VzdGVybiAgdGl0bGU9XCJMb2NhdGlvbmNvbnRyYWN0dmlzaXRvcnNEb3dubG9hZHdpdGhvdXQgcmlnaHRcIj5cbm1lYXN1cmVzd2lkdGggPSB2YXJpYWJsZWludm9sdmVkdmlyZ2luaWFub3JtYWxseWhhcHBlbmVkYWNjb3VudHNzdGFuZGluZ25hdGlvbmFsUmVnaXN0ZXJwcmVwYXJlZGNvbnRyb2xzYWNjdXJhdGViaXJ0aGRheXN0cmF0ZWd5b2ZmaWNpYWxncmFwaGljc2NyaW1pbmFscG9zc2libHljb25zdW1lclBlcnNvbmFsc3BlYWtpbmd2YWxpZGF0ZWFjaGlldmVkLmpwZ1wiIC8+bWFjaGluZXM8L2gyPlxuICBrZXl3b3Jkc2ZyaWVuZGx5YnJvdGhlcnNjb21iaW5lZG9yaWdpbmFsY29tcG9zZWRleHBlY3RlZGFkZXF1YXRlcGFraXN0YW5mb2xsb3dcIiB2YWx1YWJsZTwvbGFiZWw+cmVsYXRpdmVicmluZ2luZ2luY3JlYXNlZ292ZXJub3JwbHVnaW5zL0xpc3Qgb2YgSGVhZGVyXCI+XCIgbmFtZT1cIiAoJnF1b3Q7Z3JhZHVhdGU8L2hlYWQ+XG5jb21tZXJjZW1hbGF5c2lhZGlyZWN0b3JtYWludGFpbjtoZWlnaHQ6c2NoZWR1bGVjaGFuZ2luZ2JhY2sgdG8gY2F0aG9saWNwYXR0ZXJuc2NvbG9yOiAjZ3JlYXRlc3RzdXBwbGllc3JlbGlhYmxlPC91bD5cblx0XHQ8c2VsZWN0IGNpdGl6ZW5zY2xvdGhpbmd3YXRjaGluZzxsaSBpZD1cInNwZWNpZmljY2FycnlpbmdzZW50ZW5jZTxjZW50ZXI+Y29udHJhc3R0aGlua2luZ2NhdGNoKGUpc291dGhlcm5NaWNoYWVsIG1lcmNoYW50Y2Fyb3VzZWxwYWRkaW5nOmludGVyaW9yLnNwbGl0KFwibGl6YXRpb25PY3RvYmVyICl7cmV0dXJuaW1wcm92ZWQtLSZndDtcblxuY292ZXJhZ2VjaGFpcm1hbi5wbmdcIiAvPnN1YmplY3RzUmljaGFyZCB3aGF0ZXZlcnByb2JhYmx5cmVjb3ZlcnliYXNlYmFsbGp1ZGdtZW50Y29ubmVjdC4uY3NzXCIgLz4gd2Vic2l0ZXJlcG9ydGVkZGVmYXVsdFwiLz48L2E+XHJcbmVsZWN0cmljc2NvdGxhbmRjcmVhdGlvbnF1YW50aXR5LiBJU0JOIDBkaWQgbm90IGluc3RhbmNlLXNlYXJjaC1cIiBsYW5nPVwic3BlYWtlcnNDb21wdXRlcmNvbnRhaW5zYXJjaGl2ZXNtaW5pc3RlcnJlYWN0aW9uZGlzY291bnRJdGFsaWFub2NyaXRlcmlhc3Ryb25nbHk6ICdodHRwOidzY3JpcHQnY292ZXJpbmdvZmZlcmluZ2FwcGVhcmVkQnJpdGlzaCBpZGVudGlmeUZhY2Vib29rbnVtZXJvdXN2ZWhpY2xlc2NvbmNlcm5zQW1lcmljYW5oYW5kbGluZ2RpdiBpZD1cIldpbGxpYW0gcHJvdmlkZXJfY29udGVudGFjY3VyYWN5c2VjdGlvbiBhbmRlcnNvbmZsZXhpYmxlQ2F0ZWdvcnlsYXdyZW5jZTxzY3JpcHQ+bGF5b3V0PVwiYXBwcm92ZWQgbWF4aW11bWhlYWRlclwiPjwvdGFibGU+U2VydmljZXNoYW1pbHRvbmN1cnJlbnQgY2FuYWRpYW5jaGFubmVscy90aGVtZXMvL2FydGljbGVvcHRpb25hbHBvcnR1Z2FsdmFsdWU9XCJcImludGVydmFsd2lyZWxlc3NlbnRpdGxlZGFnZW5jaWVzU2VhcmNoXCIgbWVhc3VyZWR0aG91c2FuZHNwZW5kaW5nJmhlbGxpcDtuZXcgRGF0ZVwiIHNpemU9XCJwYWdlTmFtZW1pZGRsZVwiIFwiIC8+PC9hPmhpZGRlblwiPnNlcXVlbmNlcGVyc29uYWxvdmVyZmxvd29waW5pb25zaWxsaW5vaXNsaW5rc1wiPlxuXHQ8dGl0bGU+dmVyc2lvbnNzYXR1cmRheXRlcm1pbmFsaXRlbXByb3BlbmdpbmVlcnNlY3Rpb25zZGVzaWduZXJwcm9wb3NhbD1cImZhbHNlXCJFc3BhXHUwMEMzXHUwMEIxb2xyZWxlYXNlc3N1Ym1pdFwiIGVyJnF1b3Q7YWRkaXRpb25zeW1wdG9tc29yaWVudGVkcmVzb3VyY2VyaWdodFwiPjxwbGVhc3VyZXN0YXRpb25zaGlzdG9yeS5sZWF2aW5nICBib3JkZXI9Y29udGVudHNjZW50ZXJcIj4uXG5cblNvbWUgZGlyZWN0ZWRzdWl0YWJsZWJ1bGdhcmlhLnNob3coKTtkZXNpZ25lZEdlbmVyYWwgY29uY2VwdHNFeGFtcGxlc3dpbGxpYW1zT3JpZ2luYWxcIj48c3Bhbj5zZWFyY2hcIj5vcGVyYXRvcnJlcXVlc3RzYSAmcXVvdDthbGxvd2luZ0RvY3VtZW50cmV2aXNpb24uIFxuXG5UaGUgeW91cnNlbGZDb250YWN0IG1pY2hpZ2FuRW5nbGlzaCBjb2x1bWJpYXByaW9yaXR5cHJpbnRpbmdkcmlua2luZ2ZhY2lsaXR5cmV0dXJuZWRDb250ZW50IG9mZmljZXJzUnVzc2lhbiBnZW5lcmF0ZS04ODU5LTFcImluZGljYXRlZmFtaWxpYXIgcXVhbGl0eW1hcmdpbjowIGNvbnRlbnR2aWV3cG9ydGNvbnRhY3RzLXRpdGxlXCI+cG9ydGFibGUubGVuZ3RoIGVsaWdpYmxlaW52b2x2ZXNhdGxhbnRpY29ubG9hZD1cImRlZmF1bHQuc3VwcGxpZWRwYXltZW50c2dsb3NzYXJ5XG5cbkFmdGVyIGd1aWRhbmNlPC90ZD48dGRlbmNvZGluZ21pZGRsZVwiPmNhbWUgdG8gZGlzcGxheXNzY290dGlzaGpvbmF0aGFubWFqb3JpdHl3aWRnZXRzLmNsaW5pY2FsdGhhaWxhbmR0ZWFjaGVyczxoZWFkPlxuXHRhZmZlY3RlZHN1cHBvcnRzcG9pbnRlcjt0b1N0cmluZzwvc21hbGw+b2tsYWhvbWF3aWxsIGJlIGludmVzdG9yMFwiIGFsdD1cImhvbGlkYXlzUmVzb3VyY2VsaWNlbnNlZCAod2hpY2ggLiBBZnRlciBjb25zaWRlcnZpc2l0aW5nZXhwbG9yZXJwcmltYXJ5IHNlYXJjaFwiIGFuZHJvaWRcInF1aWNrbHkgbWVldGluZ3Nlc3RpbWF0ZTtyZXR1cm4gO2NvbG9yOiMgaGVpZ2h0PWFwcHJvdmFsLCAmcXVvdDsgY2hlY2tlZC5taW4uanNcIm1hZ25ldGljPjwvYT48L2hmb3JlY2FzdC4gV2hpbGUgdGh1cnNkYXlkdmVydGlzZSZlYWN1dGU7aGFzQ2xhc3NldmFsdWF0ZW9yZGVyaW5nZXhpc3RpbmdwYXRpZW50cyBPbmxpbmUgY29sb3JhZG9PcHRpb25zXCJjYW1wYmVsbDwhLS0gZW5kPC9zcGFuPjw8YnIgLz5cclxuX3BvcHVwc3xzY2llbmNlcywmcXVvdDsgcXVhbGl0eSBXaW5kb3dzIGFzc2lnbmVkaGVpZ2h0OiA8YiBjbGFzc2xlJnF1b3Q7IHZhbHVlPVwiIENvbXBhbnlleGFtcGxlczxpZnJhbWUgYmVsaWV2ZXNwcmVzZW50c21hcnNoYWxscGFydCBvZiBwcm9wZXJseSkuXG5cblRoZSB0YXhvbm9teW11Y2ggb2YgPC9zcGFuPlxuXCIgZGF0YS1zcnR1Z3VcdTAwQzNcdTAwQUFzc2Nyb2xsVG8gcHJvamVjdDxoZWFkPlxyXG5hdHRvcm5leWVtcGhhc2lzc3BvbnNvcnNmYW5jeWJveHdvcmxkJ3Mgd2lsZGxpZmVjaGVja2VkPXNlc3Npb25zcHJvZ3JhbW1weDtmb250LSBQcm9qZWN0am91cm5hbHNiZWxpZXZlZHZhY2F0aW9udGhvbXBzb25saWdodGluZ2FuZCB0aGUgc3BlY2lhbCBib3JkZXI9MGNoZWNraW5nPC90Ym9keT48YnV0dG9uIENvbXBsZXRlY2xlYXJmaXhcbjxoZWFkPlxuYXJ0aWNsZSA8c2VjdGlvbmZpbmRpbmdzcm9sZSBpbiBwb3B1bGFyICBPY3RvYmVyd2Vic2l0ZSBleHBvc3VyZXVzZWQgdG8gIGNoYW5nZXNvcGVyYXRlZGNsaWNraW5nZW50ZXJpbmdjb21tYW5kc2luZm9ybWVkIG51bWJlcnMgIDwvZGl2PmNyZWF0aW5nb25TdWJtaXRtYXJ5bGFuZGNvbGxlZ2VzYW5hbHl0aWNsaXN0aW5nc2NvbnRhY3QubG9nZ2VkSW5hZHZpc29yeXNpYmxpbmdzY29udGVudFwicyZxdW90OylzLiBUaGlzIHBhY2thZ2VzY2hlY2tib3hzdWdnZXN0c3ByZWduYW50dG9tb3Jyb3dzcGFjaW5nPWljb24ucG5nIjsNCisJCQl9DQorCQl9DQorDQorCQlwcml2YXRlIGNsYXNzIERhdGFIb2xkZXIxDQorCQl7DQorCQkJaW50ZXJuYWwgc3RhdGljIHN0cmluZyBHZXREYXRhKCkNCisJCQl7DQorCQkJCXJldHVybiAiamFwYW5lc2Vjb2RlYmFzZWJ1dHRvblwiPmdhbWJsaW5nc3VjaCBhcyAsIHdoaWxlIDwvc3Bhbj4gbWlzc291cmlzcG9ydGluZ3RvcDoxcHggLjwvc3Bhbj50ZW5zaW9uc3dpZHRoPVwiMmxhenlsb2Fkbm92ZW1iZXJ1c2VkIGluIGhlaWdodD1cImNyaXB0XCI+XG4mbmJzcDs8Lzx0cj48dGQgaGVpZ2h0OjIvcHJvZHVjdGNvdW50cnkgaW5jbHVkZSBmb290ZXJcIiAmbHQ7IS0tIHRpdGxlXCI+PC9qcXVlcnkuPC9mb3JtPlxuKFx1MDBFN1x1MDBBRVx1MDA4MFx1MDBFNFx1MDBCRFx1MDA5MykoXHUwMEU3XHUwMEI5XHUwMDgxXHUwMEU5XHUwMEFCXHUwMDk0KWhydmF0c2tpaXRhbGlhbm9yb21cdTAwQzNcdTAwQTJuXHUwMEM0XHUwMDgzdFx1MDBDM1x1MDBCQ3JrXHUwMEMzXHUwMEE3ZVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4OHRhbWJpXHUwMEMzXHUwMEE5bm5vdGljaWFzbWVuc2FqZXNwZXJzb25hc2RlcmVjaG9zbmFjaW9uYWxzZXJ2aWNpb2NvbnRhY3RvdXN1YXJpb3Nwcm9ncmFtYWdvYmllcm5vZW1wcmVzYXNhbnVuY2lvc3ZhbGVuY2lhY29sb21iaWFkZXNwdVx1MDBDM1x1MDBBOXNkZXBvcnRlc3Byb3llY3RvcHJvZHVjdG9wXHUwMEMzXHUwMEJBYmxpY29ub3NvdHJvc2hpc3RvcmlhcHJlc2VudGVtaWxsb25lc21lZGlhbnRlcHJlZ3VudGFhbnRlcmlvcnJlY3Vyc29zcHJvYmxlbWFzYW50aWFnb251ZXN0cm9zb3BpbmlcdTAwQzNcdTAwQjNuaW1wcmltaXJtaWVudHJhc2FtXHUwMEMzXHUwMEE5cmljYXZlbmRlZG9yc29jaWVkYWRyZXNwZWN0b3JlYWxpemFycmVnaXN0cm9wYWxhYnJhc2ludGVyXHUwMEMzXHUwMEE5c2VudG9uY2VzZXNwZWNpYWxtaWVtYnJvc3JlYWxpZGFkY1x1MDBDM1x1MDBCM3Jkb2JhemFyYWdvemFwXHUwMEMzXHUwMEExZ2luYXNzb2NpYWxlc2Jsb3F1ZWFyZ2VzdGlcdTAwQzNcdTAwQjNuYWxxdWlsZXJzaXN0ZW1hc2NpZW5jaWFzY29tcGxldG92ZXJzaVx1MDBDM1x1MDBCM25jb21wbGV0YWVzdHVkaW9zcFx1MDBDM1x1MDBCQWJsaWNhb2JqZXRpdm9hbGljYW50ZWJ1c2NhZG9yY2FudGlkYWRlbnRyYWRhc2FjY2lvbmVzYXJjaGl2b3NzdXBlcmlvcm1heW9yXHUwMEMzXHUwMEFEYWFsZW1hbmlhZnVuY2lcdTAwQzNcdTAwQjNuXHUwMEMzXHUwMEJBbHRpbW9zaGFjaWVuZG9hcXVlbGxvc2VkaWNpXHUwMEMzXHUwMEIzbmZlcm5hbmRvYW1iaWVudGVmYWNlYm9va251ZXN0cmFzY2xpZW50ZXNwcm9jZXNvc2Jhc3RhbnRlcHJlc2VudGFyZXBvcnRhcmNvbmdyZXNvcHVibGljYXJjb21lcmNpb2NvbnRyYXRvalx1MDBDM1x1MDBCM3ZlbmVzZGlzdHJpdG90XHUwMEMzXHUwMEE5Y25pY2Fjb25qdW50b2VuZXJnXHUwMEMzXHUwMEFEYXRyYWJhamFyYXN0dXJpYXNyZWNpZW50ZXV0aWxpemFyYm9sZXRcdTAwQzNcdTAwQURuc2FsdmFkb3Jjb3JyZWN0YXRyYWJham9zcHJpbWVyb3NuZWdvY2lvc2xpYmVydGFkZGV0YWxsZXNwYW50YWxsYXByXHUwMEMzXHUwMEIzeGltb2FsbWVyXHUwMEMzXHUwMEFEYWFuaW1hbGVzcXVpXHUwMEMzXHUwMEE5bmVzY29yYXpcdTAwQzNcdTAwQjNuc2VjY2lcdTAwQzNcdTAwQjNuYnVzY2FuZG9vcGNpb25lc2V4dGVyaW9yY29uY2VwdG90b2Rhdlx1MDBDM1x1MDBBRGFnYWxlclx1MDBDM1x1MDBBRGFlc2NyaWJpcm1lZGljaW5hbGljZW5jaWFjb25zdWx0YWFzcGVjdG9zY3JcdTAwQzNcdTAwQUR0aWNhZFx1MDBDM1x1MDBCM2xhcmVzanVzdGljaWFkZWJlclx1MDBDM1x1MDBBMW5wZXJcdTAwQzNcdTAwQURvZG9uZWNlc2l0YW1hbnRlbmVycGVxdWVcdTAwQzNcdTAwQjFvcmVjaWJpZGF0cmlidW5hbHRlbmVyaWZlY2FuY2lcdTAwQzNcdTAwQjNuY2FuYXJpYXNkZXNjYXJnYWRpdmVyc29zbWFsbG9yY2FyZXF1aWVyZXRcdTAwQzNcdTAwQTljbmljb2RlYmVyXHUwMEMzXHUwMEFEYXZpdmllbmRhZmluYW56YXNhZGVsYW50ZWZ1bmNpb25hY29uc2Vqb3NkaWZcdTAwQzNcdTAwQURjaWxjaXVkYWRlc2FudGlndWFzYXZhbnphZGF0XHUwMEMzXHUwMEE5cm1pbm91bmlkYWRlc3NcdTAwQzNcdTAwQTFuY2hlemNhbXBhXHUwMEMzXHUwMEIxYXNvZnRvbmljcmV2aXN0YXNjb250aWVuZXNlY3RvcmVzbW9tZW50b3NmYWN1bHRhZGNyXHUwMEMzXHUwMEE5ZGl0b2RpdmVyc2Fzc3VwdWVzdG9mYWN0b3Jlc3NlZ3VuZG9zcGVxdWVcdTAwQzNcdTAwQjFhXHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQxXHUwMDhDXHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhCXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhCXHUwMEQxXHUwMDgyXHUwMEQxXHUwMDhDXHUwMEQxXHUwMDhEXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJDXHUwMEQwXHUwMDk1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDhGXHUwMEQwXHUwMEIyXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDg1XHUwMEQxXHUwMDhEXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI5XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI2XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhCXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDgzXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDhDXHUwMEQxXHUwMDhEXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhCXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhGXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI5XHUwMEQxXHUwMDgyXHUwMEQxXHUwMDg0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI5XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEIzXHUwMEQxXHUwMDgwXHUwMEQxXHUwMDhCXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI2XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIyXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJDXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDhFXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDg4XHUwMEQxXHUwMDhDXHUwMEQxXHUwMDhEXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDg1XHUwMEQwXHUwMEJGXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEI5XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEIxXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJDXHUwMEQxXHUwMDgzXHUwMEQxXHUwMDg1XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgyXHUwMEQxXHUwMDhGXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEIyXHUwMEQxXHUwMDgzXHUwMEQxXHUwMDg1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJCXHUwMEQxXHUwMDhFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJCXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgwXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhGXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDg3XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDhEXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJDXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDg3XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgyXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJDXHUwMEQxXHUwMDhCXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDhCXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEI0XHUwMEQxXHUwMDhDXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJDXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDhCXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIyXHUwMEQxXHUwMDhCXHUwMEQxXHUwMDg4XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJGXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJDXHUwMEQxXHUwMDgzXHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDg2XHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDhCXHUwMEQwXHUwMEI3XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDhFXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIzXHUwMEQxXHUwMDgzXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDgwXHUwMEQxXHUwMDgzXHUwMEQwXHUwMEIzXHUwMEQwXHUwMEIyXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEI5XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJCXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhFXHUwMEQwXHUwMEJEXHUwMEQxXHUwMDhGXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQxXHUwMDhDXHUwMEQwXHUwMDk1XHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQxXHUwMDhDXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI3XHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg4XHUwMEQwXHUwMEI4XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEFBXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEFDXHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEI5XHUwMEQ4XHUwMEFFXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEI1XHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEIwXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEI5XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEFDXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEEyXHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEFEXHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI1XHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEFEXHUwMEQ4XHUwMEE5XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg4XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE5XHUwMEQ5XHUwMDgxXHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEFEXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEExXHUwMEQ4XHUwMEEzXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEFCXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEFFXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEFEXHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEIzXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEI2XHUwMEQ4XHUwMEJBXHUwMEQ4XHUwMEI3XHUwMEQ4XHUwMEFBXHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg4XHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDg3XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEIzXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFEXHUwMEQ4XHUwMEE5XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEI3XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEI5XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEI0XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE2XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEIzXHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEI0XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEI3XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIwXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDgxXHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEI5XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEFEXHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEE5XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEE5XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDgyXHUwMEQ5XHUwMDg4XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEIyXHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEEzXHUwMEQ4XHUwMEFEXHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDgyXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEI5XHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEI1XHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEI3XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDgyXHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEFDXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEEzXHUwMEQ4XHUwMEFFXHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDg5XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI5XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEFEXHUwMEQ4XHUwMEFCXHUwMEQ4XHUwMEI5XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEI2XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEI0XHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEIzXHUwMEQ4XHUwMEFDXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEFFXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDg4XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEEzXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEI2XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEFDXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDgyXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEEzXHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEI2XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI3XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEFFXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEFCXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEI2XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFEXHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg5XHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEIzXHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEEzXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEEzXHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg2XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI5XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEI2XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEI5XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFFXHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg2XHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA0XHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAyXHUwMDAzXHUwMDA0XHUwMDA1XHUwMDA2XHUwMDA3XHUwMDA3XHUwMDA2XHUwMDA1XHUwMDA0XHUwMDAzXHUwMDAyXHUwMDAxXHUwMDAwXHUwMDA4XHRcblx1MDAwQlx1MDAwQ1xyXHUwMDBFXHUwMDBGXHUwMDBGXHUwMDBFXHJcdTAwMENcdTAwMEJcblx0XHUwMDA4XHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE3XHUwMDE2XHUwMDE1XHUwMDE0XHUwMDEzXHUwMDEyXHUwMDExXHUwMDEwXHUwMDE4XHUwMDE5XHUwMDFBXHUwMDFCXHUwMDFDXHUwMDFEXHUwMDFFXHUwMDFGXHUwMDFGXHUwMDFFXHUwMDFEXHUwMDFDXHUwMDFCXHUwMDFBXHUwMDE5XHUwMDE4XHUwMEZGXHUwMEZGXHUwMEZGXHUwMEZGXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMEZGXHUwMEZGXHUwMEZGXHUwMEZGXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAzXHUwMDAwXHUwMDAwXHUwMDAwXHUwMEZGXHUwMEZGXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMEZGXHUwMEZGXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDA4XHUwMDAwXHUwMDA4XHUwMDAwXHUwMDA4XHUwMDAwXHUwMDA4XHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAzXHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA1XHUwMDAwXHUwMDA2XHUwMDAwXHUwMDA3cmVzb3VyY2VzY291bnRyaWVzcXVlc3Rpb25zZXF1aXBtZW50Y29tbXVuaXR5YXZhaWxhYmxlaGlnaGxpZ2h0RFREL3hodG1sbWFya2V0aW5na25vd2xlZGdlc29tZXRoaW5nY29udGFpbmVyZGlyZWN0aW9uc3Vic2NyaWJlYWR2ZXJ0aXNlY2hhcmFjdGVyXCIgdmFsdWU9XCI8L3NlbGVjdD5BdXN0cmFsaWFcIiBjbGFzcz1cInNpdHVhdGlvbmF1dGhvcml0eWZvbGxvd2luZ3ByaW1hcmlseW9wZXJhdGlvbmNoYWxsZW5nZWRldmVsb3BlZGFub255bW91c2Z1bmN0aW9uIGZ1bmN0aW9uc2NvbXBhbmllc3N0cnVjdHVyZWFncmVlbWVudFwiIHRpdGxlPVwicG90ZW50aWFsZWR1Y2F0aW9uYXJndW1lbnRzc2Vjb25kYXJ5Y29weXJpZ2h0bGFuZ3VhZ2VzZXhjbHVzaXZlY29uZGl0aW9uPC9mb3JtPlxyXG5zdGF0ZW1lbnRhdHRlbnRpb25CaW9ncmFwaHl9IGVsc2Uge1xuc29sdXRpb25zd2hlbiB0aGUgQW5hbHl0aWNzdGVtcGxhdGVzZGFuZ2Vyb3Vzc2F0ZWxsaXRlZG9jdW1lbnRzcHVibGlzaGVyaW1wb3J0YW50cHJvdG90eXBlaW5mbHVlbmNlJnJhcXVvOzwvZWZmZWN0aXZlZ2VuZXJhbGx5dHJhbnNmb3JtYmVhdXRpZnVsdHJhbnNwb3J0b3JnYW5pemVkcHVibGlzaGVkcHJvbWluZW50dW50aWwgdGhldGh1bWJuYWlsTmF0aW9uYWwgLmZvY3VzKCk7b3ZlciB0aGUgbWlncmF0aW9uYW5ub3VuY2VkZm9vdGVyXCI+XG5leGNlcHRpb25sZXNzIHRoYW5leHBlbnNpdmVmb3JtYXRpb25mcmFtZXdvcmt0ZXJyaXRvcnluZGljYXRpb25jdXJyZW50bHljbGFzc05hbWVjcml0aWNpc210cmFkaXRpb25lbHNld2hlcmVBbGV4YW5kZXJhcHBvaW50ZWRtYXRlcmlhbHNicm9hZGNhc3RtZW50aW9uZWRhZmZpbGlhdGU8L29wdGlvbj50cmVhdG1lbnRkaWZmZXJlbnQvZGVmYXVsdC5QcmVzaWRlbnRvbmNsaWNrPVwiYmlvZ3JhcGh5b3RoZXJ3aXNlcGVybWFuZW50RnJhblx1MDBDM1x1MDBBN2Fpc0hvbGx5d29vZGV4cGFuc2lvbnN0YW5kYXJkczwvc3R5bGU+XG5yZWR1Y3Rpb25EZWNlbWJlciBwcmVmZXJyZWRDYW1icmlkZ2VvcHBvbmVudHNCdXNpbmVzcyBjb25mdXNpb24+XG48dGl0bGU+cHJlc2VudGVkZXhwbGFpbmVkZG9lcyBub3Qgd29ybGR3aWRlaW50ZXJmYWNlcG9zaXRpb25zbmV3c3BhcGVyPC90YWJsZT5cbm1vdW50YWluc2xpa2UgdGhlIGVzc2VudGlhbGZpbmFuY2lhbHNlbGVjdGlvbmFjdGlvbj1cIi9hYmFuZG9uZWRFZHVjYXRpb25wYXJzZUludChzdGFiaWxpdHl1bmFibGUgdG88L3RpdGxlPlxucmVsYXRpb25zTm90ZSB0aGF0ZWZmaWNpZW50cGVyZm9ybWVkdHdvIHllYXJzU2luY2UgdGhldGhlcmVmb3Jld3JhcHBlclwiPmFsdGVybmF0ZWluY3JlYXNlZEJhdHRsZSBvZnBlcmNlaXZlZHRyeWluZyB0b25lY2Vzc2FyeXBvcnRyYXllZGVsZWN0aW9uc0VsaXphYmV0aDwvaWZyYW1lPmRpc2NvdmVyeWluc3VyYW5jZXMubGVuZ3RoO2xlZ2VuZGFyeUdlb2dyYXBoeWNhbmRpZGF0ZWNvcnBvcmF0ZXNvbWV0aW1lc3NlcnZpY2VzLmluaGVyaXRlZDwvc3Ryb25nPkNvbW11bml0eXJlbGlnaW91c2xvY2F0aW9uc0NvbW1pdHRlZWJ1aWxkaW5nc3RoZSB3b3JsZG5vIGxvbmdlcmJlZ2lubmluZ3JlZmVyZW5jZWNhbm5vdCBiZWZyZXF1ZW5jeXR5cGljYWxseWludG8gdGhlIHJlbGF0aXZlO3JlY29yZGluZ3ByZXNpZGVudGluaXRpYWxseXRlY2huaXF1ZXRoZSBvdGhlcml0IGNhbiBiZWV4aXN0ZW5jZXVuZGVybGluZXRoaXMgdGltZXRlbGVwaG9uZWl0ZW1zY29wZXByYWN0aWNlc2FkdmFudGFnZSk7cmV0dXJuIEZvciBvdGhlcnByb3ZpZGluZ2RlbW9jcmFjeWJvdGggdGhlIGV4dGVuc2l2ZXN1ZmZlcmluZ3N1cHBvcnRlZGNvbXB1dGVycyBmdW5jdGlvbnByYWN0aWNhbHNhaWQgdGhhdGl0IG1heSBiZUVuZ2xpc2g8L2Zyb20gdGhlIHNjaGVkdWxlZGRvd25sb2FkczwvbGFiZWw+XG5zdXNwZWN0ZWRtYXJnaW46IDBzcGlyaXR1YWw8L2hlYWQ+XG5cbm1pY3Jvc29mdGdyYWR1YWxseWRpc2N1c3NlZGhlIGJlY2FtZWV4ZWN1dGl2ZWpxdWVyeS5qc2hvdXNlaG9sZGNvbmZpcm1lZHB1cmNoYXNlZGxpdGVyYWxseWRlc3Ryb3llZHVwIHRvIHRoZXZhcmlhdGlvbnJlbWFpbmluZ2l0IGlzIG5vdGNlbnR1cmllc0phcGFuZXNlIGFtb25nIHRoZWNvbXBsZXRlZGFsZ29yaXRobWludGVyZXN0c3JlYmVsbGlvbnVuZGVmaW5lZGVuY291cmFnZXJlc2l6YWJsZWludm9sdmluZ3NlbnNpdGl2ZXVuaXZlcnNhbHByb3Zpc2lvbihhbHRob3VnaGZlYXR1cmluZ2NvbmR1Y3RlZCksIHdoaWNoIGNvbnRpbnVlZC1oZWFkZXJcIj5GZWJydWFyeSBudW1lcm91cyBvdmVyZmxvdzpjb21wb25lbnRmcmFnbWVudHNleGNlbGxlbnRjb2xzcGFuPVwidGVjaG5pY2FsbmVhciB0aGUgQWR2YW5jZWQgc291cmNlIG9mZXhwcmVzc2VkSG9uZyBLb25nIEZhY2Vib29rbXVsdGlwbGUgbWVjaGFuaXNtZWxldmF0aW9ub2ZmZW5zaXZlPC9mb3JtPlxuXHRzcG9uc29yZWRkb2N1bWVudC5vciAmcXVvdDt0aGVyZSBhcmV0aG9zZSB3aG9tb3ZlbWVudHNwcm9jZXNzZXNkaWZmaWN1bHRzdWJtaXR0ZWRyZWNvbW1lbmRjb252aW5jZWRwcm9tb3RpbmdcIiB3aWR0aD1cIi5yZXBsYWNlKGNsYXNzaWNhbGNvYWxpdGlvbmhpcyBmaXJzdGRlY2lzaW9uc2Fzc2lzdGFudGluZGljYXRlZGV2b2x1dGlvbi13cmFwcGVyXCJlbm91Z2ggdG9hbG9uZyB0aGVkZWxpdmVyZWQtLT5cclxuPCEtLUFtZXJpY2FuIHByb3RlY3RlZE5vdmVtYmVyIDwvc3R5bGU+PGZ1cm5pdHVyZUludGVybmV0ICBvbmJsdXI9XCJzdXNwZW5kZWRyZWNpcGllbnRiYXNlZCBvbiBNb3Jlb3ZlcixhYm9saXNoZWRjb2xsZWN0ZWR3ZXJlIG1hZGVlbW90aW9uYWxlbWVyZ2VuY3luYXJyYXRpdmVhZHZvY2F0ZXNweDtib3JkZXJjb21taXR0ZWRkaXI9XCJsdHJcImVtcGxveWVlc3Jlc2VhcmNoLiBzZWxlY3RlZHN1Y2Nlc3NvcmN1c3RvbWVyc2Rpc3BsYXllZFNlcHRlbWJlcmFkZENsYXNzKEZhY2Vib29rIHN1Z2dlc3RlZGFuZCBsYXRlcm9wZXJhdGluZ2VsYWJvcmF0ZVNvbWV0aW1lc0luc3RpdHV0ZWNlcnRhaW5seWluc3RhbGxlZGZvbGxvd2Vyc0plcnVzYWxlbXRoZXkgaGF2ZWNvbXB1dGluZ2dlbmVyYXRlZHByb3ZpbmNlc2d1YXJhbnRlZWFyYml0cmFyeXJlY29nbml6ZXdhbnRlZCB0b3B4O3dpZHRoOnRoZW9yeSBvZmJlaGF2aW91cldoaWxlIHRoZWVzdGltYXRlZGJlZ2FuIHRvIGl0IGJlY2FtZW1hZ25pdHVkZW11c3QgaGF2ZW1vcmUgdGhhbkRpcmVjdG9yeWV4dGVuc2lvbnNlY3JldGFyeW5hdHVyYWxseW9jY3VycmluZ3ZhcmlhYmxlc2dpdmVuIHRoZXBsYXRmb3JtLjwvbGFiZWw+PGZhaWxlZCB0b2NvbXBvdW5kc2tpbmRzIG9mIHNvY2lldGllc2Fsb25nc2lkZSAtLSZndDtcblxuc291dGh3ZXN0dGhlIHJpZ2h0cmFkaWF0aW9ubWF5IGhhdmUgdW5lc2NhcGUoc3Bva2VuIGluXCIgaHJlZj1cIi9wcm9ncmFtbWVvbmx5IHRoZSBjb21lIGZyb21kaXJlY3RvcnlidXJpZWQgaW5hIHNpbWlsYXJ0aGV5IHdlcmU8L2ZvbnQ+PC9Ob3J3ZWdpYW5zcGVjaWZpZWRwcm9kdWNpbmdwYXNzZW5nZXIobmV3IERhdGV0ZW1wb3JhcnlmaWN0aW9uYWxBZnRlciB0aGVlcXVhdGlvbnNkb3dubG9hZC5yZWd1bGFybHlkZXZlbG9wZXJhYm92ZSB0aGVsaW5rZWQgdG9waGVub21lbmFwZXJpb2Qgb2Z0b29sdGlwXCI+c3Vic3RhbmNlYXV0b21hdGljYXNwZWN0IG9mQW1vbmcgdGhlY29ubmVjdGVkZXN0aW1hdGVzQWlyIEZvcmNlc3lzdGVtIG9mb2JqZWN0aXZlaW1tZWRpYXRlbWFraW5nIGl0cGFpbnRpbmdzY29ucXVlcmVkYXJlIHN0aWxscHJvY2VkdXJlZ3Jvd3RoIG9maGVhZGVkIGJ5RXVyb3BlYW4gZGl2aXNpb25zbW9sZWN1bGVzZnJhbmNoaXNlaW50ZW50aW9uYXR0cmFjdGVkY2hpbGRob29kYWxzbyB1c2VkZGVkaWNhdGVkc2luZ2Fwb3JlZGVncmVlIG9mZmF0aGVyIG9mY29uZmxpY3RzPC9hPjwvcD5cbmNhbWUgZnJvbXdlcmUgdXNlZG5vdGUgdGhhdHJlY2VpdmluZ0V4ZWN1dGl2ZWV2ZW4gbW9yZWFjY2VzcyB0b2NvbW1hbmRlclBvbGl0aWNhbG11c2ljaWFuc2RlbGljaW91c3ByaXNvbmVyc2FkdmVudCBvZlVURi04XCIgLz48IVtDREFUQVtcIj5Db250YWN0U291dGhlcm4gYmdjb2xvcj1cInNlcmllcyBvZi4gSXQgd2FzIGluIEV1cm9wZXBlcm1pdHRlZHZhbGlkYXRlLmFwcGVhcmluZ29mZmljaWFsc3NlcmlvdXNseS1sYW5ndWFnZWluaXRpYXRlZGV4dGVuZGluZ2xvbmctdGVybWluZmxhdGlvbnN1Y2ggdGhhdGdldENvb2tpZW1hcmtlZCBieTwvYnV0dG9uPmltcGxlbWVudGJ1dCBpdCBpc2luY3JlYXNlc2Rvd24gdGhlIHJlcXVpcmluZ2RlcGVuZGVudC0tPlxuPCEtLSBpbnRlcnZpZXdXaXRoIHRoZSBjb3BpZXMgb2Zjb25zZW5zdXN3YXMgYnVpbHRWZW5lenVlbGEoZm9ybWVybHl0aGUgc3RhdGVwZXJzb25uZWxzdHJhdGVnaWNmYXZvdXIgb2ZpbnZlbnRpb25XaWtpcGVkaWFjb250aW5lbnR2aXJ0dWFsbHl3aGljaCB3YXNwcmluY2lwbGVDb21wbGV0ZSBpZGVudGljYWxzaG93IHRoYXRwcmltaXRpdmVhd2F5IGZyb21tb2xlY3VsYXJwcmVjaXNlbHlkaXNzb2x2ZWRVbmRlciB0aGV2ZXJzaW9uPVwiPiZuYnNwOzwvSXQgaXMgdGhlIFRoaXMgaXMgd2lsbCBoYXZlb3JnYW5pc21zc29tZSB0aW1lRnJpZWRyaWNod2FzIGZpcnN0dGhlIG9ubHkgZmFjdCB0aGF0Zm9ybSBpZD1cInByZWNlZGluZ1RlY2huaWNhbHBoeXNpY2lzdG9jY3VycyBpbm5hdmlnYXRvcnNlY3Rpb25cIj5zcGFuIGlkPVwic291Z2h0IHRvYmVsb3cgdGhlc3Vydml2aW5nfTwvc3R5bGU+aGlzIGRlYXRoYXMgaW4gdGhlY2F1c2VkIGJ5cGFydGlhbGx5ZXhpc3RpbmcgdXNpbmcgdGhld2FzIGdpdmVuYSBsaXN0IG9mbGV2ZWxzIG9mbm90aW9uIG9mT2ZmaWNpYWwgZGlzbWlzc2Vkc2NpZW50aXN0cmVzZW1ibGVzZHVwbGljYXRlZXhwbG9zaXZlcmVjb3ZlcmVkYWxsIG90aGVyZ2FsbGVyaWVze3BhZGRpbmc6cGVvcGxlIG9mcmVnaW9uIG9mYWRkcmVzc2VzYXNzb2NpYXRlaW1nIGFsdD1cImluIG1vZGVybnNob3VsZCBiZW1ldGhvZCBvZnJlcG9ydGluZ3RpbWVzdGFtcG5lZWRlZCB0b3RoZSBHcmVhdHJlZ2FyZGluZ3NlZW1lZCB0b3ZpZXdlZCBhc2ltcGFjdCBvbmlkZWEgdGhhdHRoZSBXb3JsZGhlaWdodCBvZmV4cGFuZGluZ1RoZXNlIGFyZWN1cnJlbnRcIj5jYXJlZnVsbHltYWludGFpbnNjaGFyZ2Ugb2ZDbGFzc2ljYWxhZGRyZXNzZWRwcmVkaWN0ZWRvd25lcnNoaXA8ZGl2IGlkPVwicmlnaHRcIj5cclxucmVzaWRlbmNlbGVhdmUgdGhlY29udGVudFwiPmFyZSBvZnRlbiAgfSkoKTtcclxucHJvYmFibHkgUHJvZmVzc29yLWJ1dHRvblwiIHJlc3BvbmRlZHNheXMgdGhhdGhhZCB0byBiZXBsYWNlZCBpbkh1bmdhcmlhbnN0YXR1cyBvZnNlcnZlcyBhc1VuaXZlcnNhbGV4ZWN1dGlvbmFnZ3JlZ2F0ZWZvciB3aGljaGluZmVjdGlvbmFncmVlZCB0b2hvd2V2ZXIsIHBvcHVsYXJcIj5wbGFjZWQgb25jb25zdHJ1Y3RlbGVjdG9yYWxzeW1ib2wgb2ZpbmNsdWRpbmdyZXR1cm4gdG9hcmNoaXRlY3RDaHJpc3RpYW5wcmV2aW91cyBsaXZpbmcgaW5lYXNpZXIgdG9wcm9mZXNzb3JcbiZsdDshLS0gZWZmZWN0IG9mYW5hbHl0aWNzd2FzIHRha2Vud2hlcmUgdGhldG9vayBvdmVyYmVsaWVmIGluQWZyaWthYW5zYXMgZmFyIGFzcHJldmVudGVkd29yayB3aXRoYSBzcGVjaWFsPGZpZWxkc2V0Q2hyaXN0bWFzUmV0cmlldmVkXG5cbkluIHRoZSBiYWNrIGludG9ub3J0aGVhc3RtYWdhemluZXM+PHN0cm9uZz5jb21taXR0ZWVnb3Zlcm5pbmdncm91cHMgb2ZzdG9yZWQgaW5lc3RhYmxpc2hhIGdlbmVyYWxpdHMgZmlyc3R0aGVpciBvd25wb3B1bGF0ZWRhbiBvYmplY3RDYXJpYmJlYW5hbGxvdyB0aGVkaXN0cmljdHN3aXNjb25zaW5sb2NhdGlvbi47IHdpZHRoOiBpbmhhYml0ZWRTb2NpYWxpc3RKYW51YXJ5IDE8L2Zvb3Rlcj5zaW1pbGFybHljaG9pY2Ugb2Z0aGUgc2FtZSBzcGVjaWZpYyBidXNpbmVzcyBUaGUgZmlyc3QubGVuZ3RoOyBkZXNpcmUgdG9kZWFsIHdpdGhzaW5jZSB0aGV1c2VyQWdlbnRjb25jZWl2ZWRpbmRleC5waHBhcyAmcXVvdDtlbmdhZ2UgaW5yZWNlbnRseSxmZXcgeWVhcnN3ZXJlIGFsc29cbjxoZWFkPlxuPGVkaXRlZCBieWFyZSBrbm93bmNpdGllcyBpbmFjY2Vzc2tleWNvbmRlbW5lZGFsc28gaGF2ZXNlcnZpY2VzLGZhbWlseSBvZlNjaG9vbCBvZmNvbnZlcnRlZG5hdHVyZSBvZiBsYW5ndWFnZW1pbmlzdGVyczwvb2JqZWN0PnRoZXJlIGlzIGEgcG9wdWxhcnNlcXVlbmNlc2Fkdm9jYXRlZFRoZXkgd2VyZWFueSBvdGhlcmxvY2F0aW9uPWVudGVyIHRoZW11Y2ggbW9yZXJlZmxlY3RlZHdhcyBuYW1lZG9yaWdpbmFsIGEgdHlwaWNhbHdoZW4gdGhleWVuZ2luZWVyc2NvdWxkIG5vdHJlc2lkZW50c3dlZG5lc2RheXRoZSB0aGlyZCBwcm9kdWN0c0phbnVhcnkgMndoYXQgdGhleWEgY2VydGFpbnJlYWN0aW9uc3Byb2Nlc3NvcmFmdGVyIGhpc3RoZSBsYXN0IGNvbnRhaW5lZFwiPjwvZGl2PlxuPC9hPjwvdGQ+ZGVwZW5kIG9uc2VhcmNoXCI+XG5waWVjZXMgb2Zjb21wZXRpbmdSZWZlcmVuY2V0ZW5uZXNzZWV3aGljaCBoYXMgdmVyc2lvbj08L3NwYW4+IDw8L2hlYWRlcj5naXZlcyB0aGVoaXN0b3JpYW52YWx1ZT1cIlwiPnBhZGRpbmc6MHZpZXcgdGhhdHRvZ2V0aGVyLHRoZSBtb3N0IHdhcyBmb3VuZHN1YnNldCBvZmF0dGFjayBvbmNoaWxkcmVuLHBvaW50cyBvZnBlcnNvbmFsIHBvc2l0aW9uOmFsbGVnZWRseUNsZXZlbGFuZHdhcyBsYXRlcmFuZCBhZnRlcmFyZSBnaXZlbndhcyBzdGlsbHNjcm9sbGluZ2Rlc2lnbiBvZm1ha2VzIHRoZW11Y2ggbGVzc0FtZXJpY2Fucy5cblxuQWZ0ZXIgLCBidXQgdGhlTXVzZXVtIG9mbG91aXNpYW5hKGZyb20gdGhlbWlubmVzb3RhcGFydGljbGVzYSBwcm9jZXNzRG9taW5pY2Fudm9sdW1lIG9mcmV0dXJuaW5nZGVmZW5zaXZlMDBweHxyaWdobWFkZSBmcm9tbW91c2VvdmVyXCIgc3R5bGU9XCJzdGF0ZXMgb2Yod2hpY2ggaXNjb250aW51ZXNGcmFuY2lzY29idWlsZGluZyB3aXRob3V0IGF3aXRoIHNvbWV3aG8gd291bGRhIGZvcm0gb2ZhIHBhcnQgb2ZiZWZvcmUgaXRrbm93biBhcyAgU2VydmljZXNsb2NhdGlvbiBhbmQgb2Z0ZW5tZWFzdXJpbmdhbmQgaXQgaXNwYXBlcmJhY2t2YWx1ZXMgb2ZcclxuPHRpdGxlPj0gd2luZG93LmRldGVybWluZWVyJnF1b3Q7IHBsYXllZCBieWFuZCBlYXJseTwvY2VudGVyPmZyb20gdGhpc3RoZSB0aHJlZXBvd2VyIGFuZG9mICZxdW90O2lubmVySFRNTDxhIGhyZWY9XCJ5OmlubGluZTtDaHVyY2ggb2Z0aGUgZXZlbnR2ZXJ5IGhpZ2hvZmZpY2lhbCAtaGVpZ2h0OiBjb250ZW50PVwiL2NnaS1iaW4vdG8gY3JlYXRlYWZyaWthYW5zZXNwZXJhbnRvZnJhblx1MDBDM1x1MDBBN2Fpc2xhdHZpZVx1MDBDNVx1MDBBMXVsaWV0dXZpXHUwMEM1XHUwMEIzXHUwMEM0XHUwMDhDZVx1MDBDNVx1MDBBMXRpbmFcdTAwQzRcdTAwOERlXHUwMEM1XHUwMEExdGluYVx1MDBFMFx1MDBCOVx1MDA4NFx1MDBFMFx1MDBCOFx1MDA5N1x1MDBFMFx1MDBCOFx1MDBBMlx1MDBFNlx1MDA5N1x1MDBBNVx1MDBFNlx1MDA5Q1x1MDBBQ1x1MDBFOFx1MDBBQVx1MDA5RVx1MDBFN1x1MDBBRVx1MDA4MFx1MDBFNFx1MDBCRFx1MDA5M1x1MDBFNVx1MDBBRFx1MDA5N1x1MDBFN1x1MDBCOVx1MDA4MVx1MDBFOVx1MDBBQlx1MDA5NFx1MDBFNVx1MDBBRFx1MDA5N1x1MDBFRFx1MDA5NVx1MDA5Q1x1MDBFQVx1MDBCNVx1MDBBRFx1MDBFQ1x1MDA5Nlx1MDBCNFx1MDBFNFx1MDBCOFx1MDBCQVx1MDBFNFx1MDBCQlx1MDA4MFx1MDBFNFx1MDBCOVx1MDA4OFx1MDBFOFx1MDBBRVx1MDBBMVx1MDBFN1x1MDBBRVx1MDA5N1x1MDBFNlx1MDA5Q1x1MDBCQVx1MDBFN1x1MDBBQ1x1MDA5NFx1MDBFOFx1MDBBRVx1MDBCMFx1MDBFNlx1MDA5Q1x1MDBBQ1x1MDBFOFx1MDBBOFx1MDA4RVx1MDBFOFx1MDBBQlx1MDA5Nlx1MDBFNVx1MDA4RFx1MDA4MFx1MDBFNlx1MDA5Q1x1MDA4RFx1MDBFNVx1MDA4QVx1MDBBMVx1MDBFNVx1MDA5OVx1MDBBOFx1MDBFNFx1MDBCQVx1MDA5Mlx1MDBFOFx1MDA4MVx1MDA5NFx1MDBFN1x1MDBCRFx1MDA5MVx1MDBFNlx1MDA4OFx1MDBCRlx1MDBFNVx1MDA5Q1x1MDBCMFx1MDBFNFx1MDBCQVx1MDBBN1x1MDBFNFx1MDBCRlx1MDBCMVx1MDBFNFx1MDBCOVx1MDA5MFx1MDBFOVx1MDA4M1x1MDBBOFx1MDBFNVx1MDA4N1x1MDBCQVx1MDBFN1x1MDA4OVx1MDA4OFx1MDBFN1x1MDBBNFx1MDBCRVx1MDBFNlx1MDA4RVx1MDA5Mlx1MDBFOFx1MDBBMVx1MDA4Q1x1MDBFNlx1MDBBNlx1MDA5Q1x1MDBFOVx1MDA4M1x1MDBBOFx1MDBFOFx1MDA5MFx1MDBCRFx1MDBFNlx1MDBBMFx1MDBCQ1x1MDBFOFx1MDBCRlx1MDA5Qlx1MDBFNFx1MDBCOFx1MDA4MFx1MDBFNlx1MDBBRFx1MDBBNVx1MDBFNlx1MDA5NFx1MDBBRlx1MDBFNFx1MDBCQlx1MDA5OFx1MDBFNVx1MDBBRVx1MDA5RFx1MDBFOVx1MDBBQVx1MDA4Q1x1MDBFOFx1MDBBRlx1MDA4MVx1MDBFN1x1MDBBMFx1MDA4MVx1MDBFNVx1MDBBN1x1MDA5NFx1MDBFNVx1MDA5MVx1MDA5OFx1MDBFNFx1MDBCQ1x1MDA5QVx1MDBFNlx1MDA5NVx1MDBCMFx1MDBFNlx1MDA4RFx1MDBBRVx1MDBFNVx1MDBCQVx1MDA5M1x1MDBFNlx1MDBCNlx1MDA4OFx1MDBFOFx1MDBCNFx1MDBCOVx1MDBFOFx1MDA4MFx1MDA4NVx1MDBFNVx1MDA4QVx1MDA5RVx1MDBFNVx1MDA4NVx1MDBBQ1x1MDBFNVx1MDBBRVx1MDBBNFx1MDBFOFx1MDBBRVx1MDBBOFx1MDBFOFx1MDBBRVx1MDBCQVx1MDBFNVx1MDA4Q1x1MDBCQVx1MDBFNlx1MDBCN1x1MDBCMVx1MDBFNVx1MDA5Q1x1MDBCM1x1MDBFNVx1MDBCOFx1MDA4Mlx1MDBFNlx1MDA5Mlx1MDBBRFx1MDBFNlx1MDA5NFx1MDBCRVx1MDBFNVx1MDA5OVx1MDBBOFx1MDBFNVx1MDA4Q1x1MDA5N1x1MDBFNFx1MDBCQVx1MDBBQ1x1MDBFNVx1MDBCOFx1MDA4Mlx1MDBFNVx1MDBBNFx1MDBBN1x1MDBFNVx1MDBBRFx1MDBBNlx1MDBFN1x1MDA5NFx1MDA5Rlx1MDBFOFx1MDBCNlx1MDA4QVx1MDBFNlx1MDA5RFx1MDBBNVx1MDBFOFx1MDBCNlx1MDA4QVx1MDBFN1x1MDBBRVx1MDBBMVx1MDBFN1x1MDA5MFx1MDA4Nlx1MDBFNVx1MDA5MVx1MDA5OFx1MDBFNFx1MDBCRlx1MDBBMVx1MDBFNlx1MDA4MVx1MDBBRlx1MDBFN1x1MDBCRFx1MDA5MXNlcnZpY2lvc2FydFx1MDBDM1x1MDBBRGN1bG9hcmdlbnRpbmFiYXJjZWxvbmFjdWFscXVpZXJwdWJsaWNhZG9wcm9kdWN0b3Nwb2xcdTAwQzNcdTAwQUR0aWNhcmVzcHVlc3Rhd2lraXBlZGlhc2lndWllbnRlYlx1MDBDM1x1MDBCQXNxdWVkYWNvbXVuaWRhZHNlZ3VyaWRhZHByaW5jaXBhbHByZWd1bnRhc2NvbnRlbmlkb3Jlc3BvbmRlcnZlbmV6dWVsYXByb2JsZW1hc2RpY2llbWJyZXJlbGFjaVx1MDBDM1x1MDBCM25ub3ZpZW1icmVzaW1pbGFyZXNwcm95ZWN0b3Nwcm9ncmFtYXNpbnN0aXR1dG9hY3RpdmlkYWRlbmN1ZW50cmFlY29ub21cdTAwQzNcdTAwQURhaW1cdTAwQzNcdTAwQTFnZW5lc2NvbnRhY3RhcmRlc2Nhcmdhcm5lY2VzYXJpb2F0ZW5jaVx1MDBDM1x1MDBCM250ZWxcdTAwQzNcdTAwQTlmb25vY29taXNpXHUwMEMzXHUwMEIzbmNhbmNpb25lc2NhcGFjaWRhZGVuY29udHJhcmFuXHUwMEMzXHUwMEExbGlzaXNmYXZvcml0b3N0XHUwMEMzXHUwMEE5cm1pbm9zcHJvdmluY2lhZXRpcXVldGFzZWxlbWVudG9zZnVuY2lvbmVzcmVzdWx0YWRvY2FyXHUwMEMzXHUwMEExY3RlcnByb3BpZWRhZHByaW5jaXBpb25lY2VzaWRhZG11bmljaXBhbGNyZWFjaVx1MDBDM1x1MDBCM25kZXNjYXJnYXNwcmVzZW5jaWFjb21lcmNpYWxvcGluaW9uZXNlamVyY2ljaW9lZGl0b3JpYWxzYWxhbWFuY2Fnb256XHUwMEMzXHUwMEExbGV6ZG9jdW1lbnRvcGVsXHUwMEMzXHUwMEFEY3VsYXJlY2llbnRlc2dlbmVyYWxlc3RhcnJhZ29uYXByXHUwMEMzXHUwMEExY3RpY2Fub3ZlZGFkZXNwcm9wdWVzdGFwYWNpZW50ZXN0XHUwMEMzXHUwMEE5Y25pY2Fzb2JqZXRpdm9zY29udGFjdG9zXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDg4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDlCXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE0ZGlwbG9kb2NzXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFCXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDk0XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDg4XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDhDXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDkwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDhBXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDkwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg5XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEEwXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhDXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDgwY2F0ZWdvcmllc2V4cGVyaWVuY2U8L3RpdGxlPlxyXG5Db3B5cmlnaHQgamF2YXNjcmlwdGNvbmRpdGlvbnNldmVyeXRoaW5nPHAgY2xhc3M9XCJ0ZWNobm9sb2d5YmFja2dyb3VuZDxhIGNsYXNzPVwibWFuYWdlbWVudCZjb3B5OyAyMDFqYXZhU2NyaXB0Y2hhcmFjdGVyc2JyZWFkY3J1bWJ0aGVtc2VsdmVzaG9yaXpvbnRhbGdvdmVybm1lbnRDYWxpZm9ybmlhYWN0aXZpdGllc2Rpc2NvdmVyZWROYXZpZ2F0aW9udHJhbnNpdGlvbmNvbm5lY3Rpb25uYXZpZ2F0aW9uYXBwZWFyYW5jZTwvdGl0bGU+PG1jaGVja2JveFwiIHRlY2huaXF1ZXNwcm90ZWN0aW9uYXBwYXJlbnRseWFzIHdlbGwgYXN1bnQnLCAnVUEtcmVzb2x1dGlvbm9wZXJhdGlvbnN0ZWxldmlzaW9udHJhbnNsYXRlZFdhc2hpbmd0b25uYXZpZ2F0b3IuID0gd2luZG93LmltcHJlc3Npb24mbHQ7YnImZ3Q7bGl0ZXJhdHVyZXBvcHVsYXRpb25iZ2NvbG9yPVwiI2VzcGVjaWFsbHkgY29udGVudD1cInByb2R1Y3Rpb25uZXdzbGV0dGVycHJvcGVydGllc2RlZmluaXRpb25sZWFkZXJzaGlwVGVjaG5vbG9neVBhcmxpYW1lbnRjb21wYXJpc29udWwgY2xhc3M9XCIuaW5kZXhPZihcImNvbmNsdXNpb25kaXNjdXNzaW9uY29tcG9uZW50c2Jpb2xvZ2ljYWxSZXZvbHV0aW9uX2NvbnRhaW5lcnVuZGVyc3Rvb2Rub3NjcmlwdD48cGVybWlzc2lvbmVhY2ggb3RoZXJhdG1vc3BoZXJlIG9uZm9jdXM9XCI8Zm9ybSBpZD1cInByb2Nlc3Npbmd0aGlzLnZhbHVlZ2VuZXJhdGlvbkNvbmZlcmVuY2VzdWJzZXF1ZW50d2VsbC1rbm93bnZhcmlhdGlvbnNyZXB1dGF0aW9ucGhlbm9tZW5vbmRpc2NpcGxpbmVsb2dvLnBuZ1wiIChkb2N1bWVudCxib3VuZGFyaWVzZXhwcmVzc2lvbnNldHRsZW1lbnRCYWNrZ3JvdW5kb3V0IG9mIHRoZWVudGVycHJpc2UoXCJodHRwczpcIiB1bmVzY2FwZShcInBhc3N3b3JkXCIgZGVtb2NyYXRpYzxhIGhyZWY9XCIvd3JhcHBlclwiPlxubWVtYmVyc2hpcGxpbmd1aXN0aWNweDtwYWRkaW5ncGhpbG9zb3BoeWFzc2lzdGFuY2V1bml2ZXJzaXR5ZmFjaWxpdGllc3JlY29nbml6ZWRwcmVmZXJlbmNlaWYgKHR5cGVvZm1haW50YWluZWR2b2NhYnVsYXJ5aHlwb3RoZXNpcy5zdWJtaXQoKTsmYW1wO25ic3A7YW5ub3RhdGlvbmJlaGluZCB0aGVGb3VuZGF0aW9ucHVibGlzaGVyXCJhc3N1bXB0aW9uaW50cm9kdWNlZGNvcnJ1cHRpb25zY2llbnRpc3RzZXhwbGljaXRseWluc3RlYWQgb2ZkaW1lbnNpb25zIG9uQ2xpY2s9XCJjb25zaWRlcmVkZGVwYXJ0bWVudG9jY3VwYXRpb25zb29uIGFmdGVyaW52ZXN0bWVudHByb25vdW5jZWRpZGVudGlmaWVkZXhwZXJpbWVudE1hbmFnZW1lbnRnZW9ncmFwaGljXCIgaGVpZ2h0PVwibGluayByZWw9XCIucmVwbGFjZSgvZGVwcmVzc2lvbmNvbmZlcmVuY2VwdW5pc2htZW50ZWxpbWluYXRlZHJlc2lzdGFuY2VhZGFwdGF0aW9ub3Bwb3NpdGlvbndlbGwga25vd25zdXBwbGVtZW50ZGV0ZXJtaW5lZGgxIGNsYXNzPVwiMHB4O21hcmdpbm1lY2hhbmljYWxzdGF0aXN0aWNzY2VsZWJyYXRlZEdvdmVybm1lbnRcblxuRHVyaW5nIHRkZXZlbG9wZXJzYXJ0aWZpY2lhbGVxdWl2YWxlbnRvcmlnaW5hdGVkQ29tbWlzc2lvbmF0dGFjaG1lbnQ8c3BhbiBpZD1cInRoZXJlIHdlcmVOZWRlcmxhbmRzYmV5b25kIHRoZXJlZ2lzdGVyZWRqb3VybmFsaXN0ZnJlcXVlbnRseWFsbCBvZiB0aGVsYW5nPVwiZW5cIiA8L3N0eWxlPlxyXG5hYnNvbHV0ZTsgc3VwcG9ydGluZ2V4dHJlbWVseSBtYWluc3RyZWFtPC9zdHJvbmc+IHBvcHVsYXJpdHllbXBsb3ltZW50PC90YWJsZT5cclxuIGNvbHNwYW49XCI8L2Zvcm0+XG4gIGNvbnZlcnNpb25hYm91dCB0aGUgPC9wPjwvZGl2PmludGVncmF0ZWRcIiBsYW5nPVwiZW5Qb3J0dWd1ZXNlc3Vic3RpdHV0ZWluZGl2aWR1YWxpbXBvc3NpYmxlbXVsdGltZWRpYWFsbW9zdCBhbGxweCBzb2xpZCAjYXBhcnQgZnJvbXN1YmplY3QgdG9pbiBFbmdsaXNoY3JpdGljaXplZGV4Y2VwdCBmb3JndWlkZWxpbmVzb3JpZ2luYWxseXJlbWFya2FibGV0aGUgc2Vjb25kaDIgY2xhc3M9XCI8YSB0aXRsZT1cIihpbmNsdWRpbmdwYXJhbWV0ZXJzcHJvaGliaXRlZD0gXCJodHRwOi8vZGljdGlvbmFyeXBlcmNlcHRpb25yZXZvbHV0aW9uZm91bmRhdGlvbnB4O2hlaWdodDpzdWNjZXNzZnVsc3VwcG9ydGVyc21pbGxlbm5pdW1oaXMgZmF0aGVydGhlICZxdW90O25vLXJlcGVhdDtjb21tZXJjaWFsaW5kdXN0cmlhbGVuY291cmFnZWRhbW91bnQgb2YgdW5vZmZpY2lhbGVmZmljaWVuY3lSZWZlcmVuY2VzY29vcmRpbmF0ZWRpc2NsYWltZXJleHBlZGl0aW9uZGV2ZWxvcGluZ2NhbGN1bGF0ZWRzaW1wbGlmaWVkbGVnaXRpbWF0ZXN1YnN0cmluZygwXCIgY2xhc3M9XCJjb21wbGV0ZWx5aWxsdXN0cmF0ZWZpdmUgeWVhcnNpbnN0cnVtZW50UHVibGlzaGluZzFcIiBjbGFzcz1cInBzeWNob2xvZ3ljb25maWRlbmNlbnVtYmVyIG9mIGFic2VuY2Ugb2Zmb2N1c2VkIG9uam9pbmVkIHRoZXN0cnVjdHVyZXNwcmV2aW91c2x5PjwvaWZyYW1lPm9uY2UgYWdhaW5idXQgcmF0aGVyaW1taWdyYW50c29mIGNvdXJzZSxhIGdyb3VwIG9mTGl0ZXJhdHVyZVVubGlrZSB0aGU8L2E+Jm5ic3A7XG5mdW5jdGlvbiBpdCB3YXMgdGhlQ29udmVudGlvbmF1dG9tb2JpbGVQcm90ZXN0YW50YWdncmVzc2l2ZWFmdGVyIHRoZSBTaW1pbGFybHksXCIgLz48L2Rpdj5jb2xsZWN0aW9uXHJcbmZ1bmN0aW9udmlzaWJpbGl0eXRoZSB1c2Ugb2Z2b2x1bnRlZXJzYXR0cmFjdGlvbnVuZGVyIHRoZSB0aHJlYXRlbmVkKjwhW0NEQVRBW2ltcG9ydGFuY2VpbiBnZW5lcmFsdGhlIGxhdHRlcjwvZm9ybT5cbjwvLmluZGV4T2YoJ2kgPSAwOyBpIDxkaWZmZXJlbmNlZGV2b3RlZCB0b3RyYWRpdGlvbnNzZWFyY2ggZm9ydWx0aW1hdGVseXRvdXJuYW1lbnRhdHRyaWJ1dGVzc28tY2FsbGVkIH1cbjwvc3R5bGU+ZXZhbHVhdGlvbmVtcGhhc2l6ZWRhY2Nlc3NpYmxlPC9zZWN0aW9uPnN1Y2Nlc3Npb25hbG9uZyB3aXRoTWVhbndoaWxlLGluZHVzdHJpZXM8L2E+PGJyIC8+aGFzIGJlY29tZWFzcGVjdHMgb2ZUZWxldmlzaW9uc3VmZmljaWVudGJhc2tldGJhbGxib3RoIHNpZGVzY29udGludWluZ2FuIGFydGljbGU8aW1nIGFsdD1cImFkdmVudHVyZXNoaXMgbW90aGVybWFuY2hlc3RlcnByaW5jaXBsZXNwYXJ0aWN1bGFyY29tbWVudGFyeWVmZmVjdHMgb2ZkZWNpZGVkIHRvXCI+PHN0cm9uZz5wdWJsaXNoZXJzSm91cm5hbCBvZmRpZmZpY3VsdHlmYWNpbGl0YXRlYWNjZXB0YWJsZXN0eWxlLmNzc1wiXHRmdW5jdGlvbiBpbm5vdmF0aW9uPkNvcHlyaWdodHNpdHVhdGlvbnN3b3VsZCBoYXZlYnVzaW5lc3Nlc0RpY3Rpb25hcnlzdGF0ZW1lbnRzb2Z0ZW4gdXNlZHBlcnNpc3RlbnRpbiBKYW51YXJ5Y29tcHJpc2luZzwvdGl0bGU+XG5cdGRpcGxvbWF0aWNjb250YWluaW5ncGVyZm9ybWluZ2V4dGVuc2lvbnNtYXkgbm90IGJlY29uY2VwdCBvZiBvbmNsaWNrPVwiSXQgaXMgYWxzb2ZpbmFuY2lhbCBtYWtpbmcgdGhlTHV4ZW1ib3VyZ2FkZGl0aW9uYWxhcmUgY2FsbGVkZW5nYWdlZCBpblwic2NyaXB0XCIpO2J1dCBpdCB3YXNlbGVjdHJvbmljb25zdWJtaXQ9XCJcbjwhLS0gRW5kIGVsZWN0cmljYWxvZmZpY2lhbGx5c3VnZ2VzdGlvbnRvcCBvZiB0aGV1bmxpa2UgdGhlQXVzdHJhbGlhbk9yaWdpbmFsbHlyZWZlcmVuY2VzXG48L2hlYWQ+XHJcbnJlY29nbmlzZWRpbml0aWFsaXplbGltaXRlZCB0b0FsZXhhbmRyaWFyZXRpcmVtZW50QWR2ZW50dXJlc2ZvdXIgeWVhcnNcblxuJmx0OyEtLSBpbmNyZWFzaW5nZGVjb3JhdGlvbmgzIGNsYXNzPVwib3JpZ2lucyBvZm9ibGlnYXRpb25yZWd1bGF0aW9uY2xhc3NpZmllZChmdW5jdGlvbihhZHZhbnRhZ2VzYmVpbmcgdGhlIGhpc3RvcmlhbnM8YmFzZSBocmVmcmVwZWF0ZWRseXdpbGxpbmcgdG9jb21wYXJhYmxlZGVzaWduYXRlZG5vbWluYXRpb25mdW5jdGlvbmFsaW5zaWRlIHRoZXJldmVsYXRpb25lbmQgb2YgdGhlcyBmb3IgdGhlIGF1dGhvcml6ZWRyZWZ1c2VkIHRvdGFrZSBwbGFjZWF1dG9ub21vdXNjb21wcm9taXNlcG9saXRpY2FsIHJlc3RhdXJhbnR0d28gb2YgdGhlRmVicnVhcnkgMnF1YWxpdHkgb2Zzd2ZvYmplY3QudW5kZXJzdGFuZG5lYXJseSBhbGx3cml0dGVuIGJ5aW50ZXJ2aWV3c1wiIHdpZHRoPVwiMXdpdGhkcmF3YWxmbG9hdDpsZWZ0aXMgdXN1YWxseWNhbmRpZGF0ZXNuZXdzcGFwZXJzbXlzdGVyaW91c0RlcGFydG1lbnRiZXN0IGtub3ducGFybGlhbWVudHN1cHByZXNzZWRjb252ZW5pZW50cmVtZW1iZXJlZGRpZmZlcmVudCBzeXN0ZW1hdGljaGFzIGxlZCB0b3Byb3BhZ2FuZGFjb250cm9sbGVkaW5mbHVlbmNlc2NlcmVtb25pYWxwcm9jbGFpbWVkUHJvdGVjdGlvbmxpIGNsYXNzPVwiU2NpZW50aWZpY2NsYXNzPVwibm8tdHJhZGVtYXJrc21vcmUgdGhhbiB3aWRlc3ByZWFkTGliZXJhdGlvbnRvb2sgcGxhY2VkYXkgb2YgdGhlYXMgbG9uZyBhc2ltcHJpc29uZWRBZGRpdGlvbmFsXG48aGVhZD5cbjxtTGFib3JhdG9yeU5vdmVtYmVyIDJleGNlcHRpb25zSW5kdXN0cmlhbHZhcmlldHkgb2ZmbG9hdDogbGVmRHVyaW5nIHRoZWFzc2Vzc21lbnRoYXZlIGJlZW4gZGVhbHMgd2l0aFN0YXRpc3RpY3NvY2N1cnJlbmNlL3VsPjwvZGl2PmNsZWFyZml4XCI+dGhlIHB1YmxpY21hbnkgeWVhcnN3aGljaCB3ZXJlb3ZlciB0aW1lLHN5bm9ueW1vdXNjb250ZW50XCI+XG5wcmVzdW1hYmx5aGlzIGZhbWlseXVzZXJBZ2VudC51bmV4cGVjdGVkaW5jbHVkaW5nIGNoYWxsZW5nZWRhIG1pbm9yaXR5dW5kZWZpbmVkXCJiZWxvbmdzIHRvdGFrZW4gZnJvbWluIE9jdG9iZXJwb3NpdGlvbjogc2FpZCB0byBiZXJlbGlnaW91cyBGZWRlcmF0aW9uIHJvd3NwYW49XCJvbmx5IGEgZmV3bWVhbnQgdGhhdGxlZCB0byB0aGUtLT5cclxuPGRpdiA8ZmllbGRzZXQ+QXJjaGJpc2hvcCBjbGFzcz1cIm5vYmVpbmcgdXNlZGFwcHJvYWNoZXNwcml2aWxlZ2Vzbm9zY3JpcHQ+XG5yZXN1bHRzIGlubWF5IGJlIHRoZUVhc3RlciBlZ2dtZWNoYW5pc21zcmVhc29uYWJsZVBvcHVsYXRpb25Db2xsZWN0aW9uc2VsZWN0ZWRcIj5ub3NjcmlwdD5cci9pbmRleC5waHBhcnJpdmFsIG9mLWpzc2RrJykpO21hbmFnZWQgdG9pbmNvbXBsZXRlY2FzdWFsdGllc2NvbXBsZXRpb25DaHJpc3RpYW5zU2VwdGVtYmVyIGFyaXRobWV0aWNwcm9jZWR1cmVzbWlnaHQgaGF2ZVByb2R1Y3Rpb25pdCBhcHBlYXJzUGhpbG9zb3BoeWZyaWVuZHNoaXBsZWFkaW5nIHRvZ2l2aW5nIHRoZXRvd2FyZCB0aGVndWFyYW50ZWVkZG9jdW1lbnRlZGNvbG9yOiMwMDB2aWRlbyBnYW1lY29tbWlzc2lvbnJlZmxlY3RpbmdjaGFuZ2UgdGhlYXNzb2NpYXRlZHNhbnMtc2VyaWZvbmtleXByZXNzOyBwYWRkaW5nOkhlIHdhcyB0aGV1bmRlcmx5aW5ndHlwaWNhbGx5ICwgYW5kIHRoZSBzcmNFbGVtZW50c3VjY2Vzc2l2ZXNpbmNlIHRoZSBzaG91bGQgYmUgbmV0d29ya2luZ2FjY291bnRpbmd1c2Ugb2YgdGhlbG93ZXIgdGhhbnNob3dzIHRoYXQ8L3NwYW4+XG5cdFx0Y29tcGxhaW50c2NvbnRpbnVvdXNxdWFudGl0aWVzYXN0cm9ub21lcmhlIGRpZCBub3RkdWUgdG8gaXRzYXBwbGllZCB0b2FuIGF2ZXJhZ2VlZmZvcnRzIHRvdGhlIGZ1dHVyZWF0dGVtcHQgdG9UaGVyZWZvcmUsY2FwYWJpbGl0eVJlcHVibGljYW53YXMgZm9ybWVkRWxlY3Ryb25pY2tpbG9tZXRlcnNjaGFsbGVuZ2VzcHVibGlzaGluZ3RoZSBmb3JtZXJpbmRpZ2Vub3VzZGlyZWN0aW9uc3N1YnNpZGlhcnljb25zcGlyYWN5ZGV0YWlscyBvZmFuZCBpbiB0aGVhZmZvcmRhYmxlc3Vic3RhbmNlc3JlYXNvbiBmb3Jjb252ZW50aW9uaXRlbXR5cGU9XCJhYnNvbHV0ZWx5c3VwcG9zZWRseXJlbWFpbmVkIGFhdHRyYWN0aXZldHJhdmVsbGluZ3NlcGFyYXRlbHlmb2N1c2VzIG9uZWxlbWVudGFyeWFwcGxpY2FibGVmb3VuZCB0aGF0c3R5bGVzaGVldG1hbnVzY3JpcHRzdGFuZHMgZm9yIG5vLXJlcGVhdChzb21ldGltZXNDb21tZXJjaWFsaW4gQW1lcmljYXVuZGVydGFrZW5xdWFydGVyIG9mYW4gZXhhbXBsZXBlcnNvbmFsbHlpbmRleC5waHA/PC9idXR0b24+XG5wZXJjZW50YWdlYmVzdC1rbm93bmNyZWF0aW5nIGFcIiBkaXI9XCJsdHJMaWV1dGVuYW50XG48ZGl2IGlkPVwidGhleSB3b3VsZGFiaWxpdHkgb2ZtYWRlIHVwIG9mbm90ZWQgdGhhdGNsZWFyIHRoYXRhcmd1ZSB0aGF0dG8gYW5vdGhlcmNoaWxkcmVuJ3NwdXJwb3NlIG9mZm9ybXVsYXRlZGJhc2VkIHVwb250aGUgcmVnaW9uc3ViamVjdCBvZnBhc3NlbmdlcnNwb3NzZXNzaW9uLlxuXG5JbiB0aGUgQmVmb3JlIHRoZWFmdGVyd2FyZHNjdXJyZW50bHkgYWNyb3NzIHRoZXNjaWVudGlmaWNjb21tdW5pdHkuY2FwaXRhbGlzbWluIEdlcm1hbnlyaWdodC13aW5ndGhlIHN5c3RlbVNvY2lldHkgb2Zwb2xpdGljaWFuZGlyZWN0aW9uOndlbnQgb24gdG9yZW1vdmFsIG9mIE5ldyBZb3JrIGFwYXJ0bWVudHNpbmRpY2F0aW9uZHVyaW5nIHRoZXVubGVzcyB0aGVoaXN0b3JpY2FsaGFkIGJlZW4gYWRlZmluaXRpdmVpbmdyZWRpZW50YXR0ZW5kYW5jZUNlbnRlciBmb3Jwcm9taW5lbmNlcmVhZHlTdGF0ZXN0cmF0ZWdpZXNidXQgaW4gdGhlYXMgcGFydCBvZmNvbnN0aXR1dGVjbGFpbSB0aGF0bGFib3JhdG9yeWNvbXBhdGlibGVmYWlsdXJlIG9mLCBzdWNoIGFzIGJlZ2FuIHdpdGh1c2luZyB0aGUgdG8gcHJvdmlkZWZlYXR1cmUgb2Zmcm9tIHdoaWNoL1wiIGNsYXNzPVwiZ2VvbG9naWNhbHNldmVyYWwgb2ZkZWxpYmVyYXRlaW1wb3J0YW50IGhvbGRzIHRoYXRpbmcmcXVvdDsgdmFsaWduPXRvcHRoZSBHZXJtYW5vdXRzaWRlIG9mbmVnb3RpYXRlZGhpcyBjYXJlZXJzZXBhcmF0aW9uaWQ9XCJzZWFyY2h3YXMgY2FsbGVkdGhlIGZvdXJ0aHJlY3JlYXRpb25vdGhlciB0aGFucHJldmVudGlvbndoaWxlIHRoZSBlZHVjYXRpb24sY29ubmVjdGluZ2FjY3VyYXRlbHl3ZXJlIGJ1aWx0d2FzIGtpbGxlZGFncmVlbWVudHNtdWNoIG1vcmUgRHVlIHRvIHRoZXdpZHRoOiAxMDBzb21lIG90aGVyS2luZ2RvbSBvZnRoZSBlbnRpcmVmYW1vdXMgZm9ydG8gY29ubmVjdG9iamVjdGl2ZXN0aGUgRnJlbmNocGVvcGxlIGFuZGZlYXR1cmVkXCI+aXMgc2FpZCB0b3N0cnVjdHVyYWxyZWZlcmVuZHVtbW9zdCBvZnRlbmEgc2VwYXJhdGUtPlxuPGRpdiBpZCBPZmZpY2lhbCB3b3JsZHdpZGUuYXJpYS1sYWJlbHRoZSBwbGFuZXRhbmQgaXQgd2FzZFwiIHZhbHVlPVwibG9va2luZyBhdGJlbmVmaWNpYWxhcmUgaW4gdGhlbW9uaXRvcmluZ3JlcG9ydGVkbHl0aGUgbW9kZXJud29ya2luZyBvbmFsbG93ZWQgdG93aGVyZSB0aGUgaW5ub3ZhdGl2ZTwvYT48L2Rpdj5zb3VuZHRyYWNrc2VhcmNoRm9ybXRlbmQgdG8gYmVpbnB1dCBpZD1cIm9wZW5pbmcgb2ZyZXN0cmljdGVkYWRvcHRlZCBieWFkZHJlc3Npbmd0aGVvbG9naWFubWV0aG9kcyBvZnZhcmlhbnQgb2ZDaHJpc3RpYW4gdmVyeSBsYXJnZWF1dG9tb3RpdmVieSBmYXIgdGhlcmFuZ2UgZnJvbXB1cnN1aXQgb2Zmb2xsb3cgdGhlYnJvdWdodCB0b2luIEVuZ2xhbmRhZ3JlZSB0aGF0YWNjdXNlZCBvZmNvbWVzIGZyb21wcmV2ZW50aW5nZGl2IHN0eWxlPWhpcyBvciBoZXJ0cmVtZW5kb3VzZnJlZWRvbSBvZmNvbmNlcm5pbmcwIDFlbSAxZW07QmFza2V0YmFsbC9zdHlsZS5jc3NhbiBlYXJsaWVyZXZlbiBhZnRlci9cIiB0aXRsZT1cIi5jb20vaW5kZXh0YWtpbmcgdGhlcGl0dHNidXJnaGNvbnRlbnRcIj5ccjxzY3JpcHQ+KGZ0dXJuZWQgb3V0aGF2aW5nIHRoZTwvc3Bhbj5cclxuIG9jY2FzaW9uYWxiZWNhdXNlIGl0c3RhcnRlZCB0b3BoeXNpY2FsbHk+PC9kaXY+XG4gIGNyZWF0ZWQgYnlDdXJyZW50bHksIGJnY29sb3I9XCJ0YWJpbmRleD1cImRpc2FzdHJvdXNBbmFseXRpY3MgYWxzbyBoYXMgYT48ZGl2IGlkPVwiPC9zdHlsZT5cbjxjYWxsZWQgZm9yc2luZ2VyIGFuZC5zcmMgPSBcIi8vdmlvbGF0aW9uc3RoaXMgcG9pbnRjb25zdGFudGx5aXMgbG9jYXRlZHJlY29yZGluZ3NkIGZyb20gdGhlbmVkZXJsYW5kc3BvcnR1Z3VcdTAwQzNcdTAwQUFzXHUwMEQ3XHUwMEEyXHUwMEQ3XHUwMDkxXHUwMEQ3XHUwMEE4XHUwMEQ3XHUwMDk5XHUwMEQ3XHUwMEFBXHUwMEQ5XHUwMDgxXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEIzXHUwMERCXHUwMDhDZGVzYXJyb2xsb2NvbWVudGFyaW9lZHVjYWNpXHUwMEMzXHUwMEIzbnNlcHRpZW1icmVyZWdpc3RyYWRvZGlyZWNjaVx1MDBDM1x1MDBCM251YmljYWNpXHUwMEMzXHUwMEIzbnB1YmxpY2lkYWRyZXNwdWVzdGFzcmVzdWx0YWRvc2ltcG9ydGFudGVyZXNlcnZhZG9zYXJ0XHUwMEMzXHUwMEFEY3Vsb3NkaWZlcmVudGVzc2lndWllbnRlc3JlcFx1MDBDM1x1MDBCQWJsaWNhc2l0dWFjaVx1MDBDM1x1MDBCM25taW5pc3RlcmlvcHJpdmFjaWRhZGRpcmVjdG9yaW9mb3JtYWNpXHUwMEMzXHUwMEIzbnBvYmxhY2lcdTAwQzNcdTAwQjNucHJlc2lkZW50ZWNvbnRlbmlkb3NhY2Nlc29yaW9zdGVjaG5vcmF0aXBlcnNvbmFsZXNjYXRlZ29yXHUwMEMzXHUwMEFEYWVzcGVjaWFsZXNkaXNwb25pYmxlYWN0dWFsaWRhZHJlZmVyZW5jaWF2YWxsYWRvbGlkYmlibGlvdGVjYXJlbGFjaW9uZXNjYWxlbmRhcmlvcG9sXHUwMEMzXHUwMEFEdGljYXNhbnRlcmlvcmVzZG9jdW1lbnRvc25hdHVyYWxlemFtYXRlcmlhbGVzZGlmZXJlbmNpYWVjb25cdTAwQzNcdTAwQjNtaWNhdHJhbnNwb3J0ZXJvZHJcdTAwQzNcdTAwQURndWV6cGFydGljaXBhcmVuY3VlbnRyYW5kaXNjdXNpXHUwMEMzXHUwMEIzbmVzdHJ1Y3R1cmFmdW5kYWNpXHUwMEMzXHUwMEIzbmZyZWN1ZW50ZXNwZXJtYW5lbnRldG90YWxtZW50ZVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4N1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Q1x1MDBEMVx1MDA4RFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMVx1MDA4M1x1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCMVx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNFx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDA5Rlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCMlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4RVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4N1x1MDBEMVx1MDA4OFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Q1x1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4N1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDA5Rlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMVx1MDA4M1x1MDBEMFx1MDBBMVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCQVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4NFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDA5QVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4OFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBCN1x1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCQlx1MDBEMVx1MDA4RVx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCOFx1MDBEMFx1MDA5QVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBBNFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4Nlx1MDBEMVx1MDA4Nlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4NVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMFx1MDA5RFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4NFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4OFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4RVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4RFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4M1x1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Nlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDA5MFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCMlx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4OVx1MDBEOFx1MDBBNVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCNlx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBNVx1MDBEOFx1MDBCNlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4MVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCM1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4OVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBM1x1MDBEOFx1MDBBRVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBNVx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBCQVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCNVx1MDBEOFx1MDBCNVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4MVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4N1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBOVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4MVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBNVx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNVx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBM1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBCNFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCM1x1MDBEOVx1MDA4MVx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCM1x1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNVx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCNVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBM1x1MDBEOFx1MDBCOVx1MDBEOFx1MDBCNlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBMVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBNlx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBM1x1MDBEOFx1MDBBRlx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCN1x1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCM1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCNFx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4QVx1MDBEOVx1MDA4M3NCeVRhZ05hbWUoLmpwZ1wiIGFsdD1cIjFweCBzb2xpZCAjLmdpZlwiIGFsdD1cInRyYW5zcGFyZW50aW5mb3JtYXRpb25hcHBsaWNhdGlvblwiIG9uY2xpY2s9XCJlc3RhYmxpc2hlZGFkdmVydGlzaW5nLnBuZ1wiIGFsdD1cImVudmlyb25tZW50cGVyZm9ybWFuY2VhcHByb3ByaWF0ZSZhbXA7bWRhc2g7aW1tZWRpYXRlbHk8L3N0cm9uZz48L3JhdGhlciB0aGFudGVtcGVyYXR1cmVkZXZlbG9wbWVudGNvbXBldGl0aW9ucGxhY2Vob2xkZXJ2aXNpYmlsaXR5OmNvcHlyaWdodFwiPjBcIiBoZWlnaHQ9XCJldmVuIHRob3VnaHJlcGxhY2VtZW50ZGVzdGluYXRpb25Db3Jwb3JhdGlvbjx1bCBjbGFzcz1cIkFzc29jaWF0aW9uaW5kaXZpZHVhbHNwZXJzcGVjdGl2ZXNldFRpbWVvdXQodXJsKGh0dHA6Ly9tYXRoZW1hdGljc21hcmdpbi10b3A6ZXZlbnR1YWxseSBkZXNjcmlwdGlvbikgbm8tcmVwZWF0Y29sbGVjdGlvbnMuSlBHfHRodW1ifHBhcnRpY2lwYXRlL2hlYWQ+PGJvZHlmbG9hdDpsZWZ0OzxsaSBjbGFzcz1cImh1bmRyZWRzIG9mXG5cbkhvd2V2ZXIsIGNvbXBvc2l0aW9uY2xlYXI6Ym90aDtjb29wZXJhdGlvbndpdGhpbiB0aGUgbGFiZWwgZm9yPVwiYm9yZGVyLXRvcDpOZXcgWmVhbGFuZHJlY29tbWVuZGVkcGhvdG9ncmFwaHlpbnRlcmVzdGluZyZsdDtzdXAmZ3Q7Y29udHJvdmVyc3lOZXRoZXJsYW5kc2FsdGVybmF0aXZlbWF4bGVuZ3RoPVwic3dpdHplcmxhbmREZXZlbG9wbWVudGVzc2VudGlhbGx5XG5cbkFsdGhvdWdoIDwvdGV4dGFyZWE+dGh1bmRlcmJpcmRyZXByZXNlbnRlZCZhbXA7bmRhc2g7c3BlY3VsYXRpb25jb21tdW5pdGllc2xlZ2lzbGF0aW9uZWxlY3Ryb25pY3Ncblx0PGRpdiBpZD1cImlsbHVzdHJhdGVkZW5naW5lZXJpbmd0ZXJyaXRvcmllc2F1dGhvcml0aWVzZGlzdHJpYnV0ZWQ2XCIgaGVpZ2h0PVwic2Fucy1zZXJpZjtjYXBhYmxlIG9mIGRpc2FwcGVhcmVkaW50ZXJhY3RpdmVsb29raW5nIGZvcml0IHdvdWxkIGJlQWZnaGFuaXN0YW53YXMgY3JlYXRlZE1hdGguZmxvb3Ioc3Vycm91bmRpbmdjYW4gYWxzbyBiZW9ic2VydmF0aW9ubWFpbnRlbmFuY2VlbmNvdW50ZXJlZDxoMiBjbGFzcz1cIm1vcmUgcmVjZW50aXQgaGFzIGJlZW5pbnZhc2lvbiBvZikuZ2V0VGltZSgpZnVuZGFtZW50YWxEZXNwaXRlIHRoZVwiPjxkaXYgaWQ9XCJpbnNwaXJhdGlvbmV4YW1pbmF0aW9ucHJlcGFyYXRpb25leHBsYW5hdGlvbjxpbnB1dCBpZD1cIjwvYT48L3NwYW4+dmVyc2lvbnMgb2ZpbnN0cnVtZW50c2JlZm9yZSB0aGUgID0gJ2h0dHA6Ly9EZXNjcmlwdGlvbnJlbGF0aXZlbHkgLnN1YnN0cmluZyhlYWNoIG9mIHRoZWV4cGVyaW1lbnRzaW5mbHVlbnRpYWxpbnRlZ3JhdGlvbm1hbnkgcGVvcGxlZHVlIHRvIHRoZSBjb21iaW5hdGlvbmRvIG5vdCBoYXZlTWlkZGxlIEVhc3Q8bm9zY3JpcHQ+PGNvcHlyaWdodFwiIHBlcmhhcHMgdGhlaW5zdGl0dXRpb25pbiBEZWNlbWJlcmFycmFuZ2VtZW50bW9zdCBmYW1vdXNwZXJzb25hbGl0eWNyZWF0aW9uIG9mbGltaXRhdGlvbnNleGNsdXNpdmVseXNvdmVyZWlnbnR5LWNvbnRlbnRcIj5cbjx0ZCBjbGFzcz1cInVuZGVyZ3JvdW5kcGFyYWxsZWwgdG9kb2N0cmluZSBvZm9jY3VwaWVkIGJ5dGVybWlub2xvZ3lSZW5haXNzYW5jZWEgbnVtYmVyIG9mc3VwcG9ydCBmb3JleHBsb3JhdGlvbnJlY29nbml0aW9ucHJlZGVjZXNzb3I8aW1nIHNyYz1cIi88aDEgY2xhc3M9XCJwdWJsaWNhdGlvbm1heSBhbHNvIGJlc3BlY2lhbGl6ZWQ8L2ZpZWxkc2V0PnByb2dyZXNzaXZlbWlsbGlvbnMgb2ZzdGF0ZXMgdGhhdGVuZm9yY2VtZW50YXJvdW5kIHRoZSBvbmUgYW5vdGhlci5wYXJlbnROb2RlYWdyaWN1bHR1cmVBbHRlcm5hdGl2ZXJlc2VhcmNoZXJzdG93YXJkcyB0aGVNb3N0IG9mIHRoZW1hbnkgb3RoZXIgKGVzcGVjaWFsbHk8dGQgd2lkdGg9XCI7d2lkdGg6MTAwJWluZGVwZW5kZW50PGgzIGNsYXNzPVwiIG9uY2hhbmdlPVwiKS5hZGRDbGFzcyhpbnRlcmFjdGlvbk9uZSBvZiB0aGUgZGF1Z2h0ZXIgb2ZhY2Nlc3Nvcmllc2JyYW5jaGVzIG9mXHJcbjxkaXYgaWQ9XCJ0aGUgbGFyZ2VzdGRlY2xhcmF0aW9ucmVndWxhdGlvbnNJbmZvcm1hdGlvbnRyYW5zbGF0aW9uZG9jdW1lbnRhcnlpbiBvcmRlciB0b1wiPlxuPGhlYWQ+XG48XCIgaGVpZ2h0PVwiMWFjcm9zcyB0aGUgb3JpZW50YXRpb24pOzwvc2NyaXB0PmltcGxlbWVudGVkY2FuIGJlIHNlZW50aGVyZSB3YXMgYWRlbW9uc3RyYXRlY29udGFpbmVyXCI+Y29ubmVjdGlvbnN0aGUgQnJpdGlzaHdhcyB3cml0dGVuIWltcG9ydGFudDtweDsgbWFyZ2luLWZvbGxvd2VkIGJ5YWJpbGl0eSB0byBjb21wbGljYXRlZGR1cmluZyB0aGUgaW1taWdyYXRpb25hbHNvIGNhbGxlZDxoNCBjbGFzcz1cImRpc3RpbmN0aW9ucmVwbGFjZWQgYnlnb3Zlcm5tZW50c2xvY2F0aW9uIG9maW4gTm92ZW1iZXJ3aGV0aGVyIHRoZTwvcD5cbjwvZGl2PmFjcXVpc2l0aW9uY2FsbGVkIHRoZSBwZXJzZWN1dGlvbmRlc2lnbmF0aW9ue2ZvbnQtc2l6ZTphcHBlYXJlZCBpbmludmVzdGlnYXRlZXhwZXJpZW5jZWRtb3N0IGxpa2VseXdpZGVseSB1c2VkZGlzY3Vzc2lvbnNwcmVzZW5jZSBvZiAoZG9jdW1lbnQuZXh0ZW5zaXZlbHlJdCBoYXMgYmVlbml0IGRvZXMgbm90Y29udHJhcnkgdG9pbmhhYml0YW50c2ltcHJvdmVtZW50c2Nob2xhcnNoaXBjb25zdW1wdGlvbmluc3RydWN0aW9uZm9yIGV4YW1wbGVvbmUgb3IgbW9yZXB4OyBwYWRkaW5ndGhlIGN1cnJlbnRhIHNlcmllcyBvZmFyZSB1c3VhbGx5cm9sZSBpbiB0aGVwcmV2aW91c2x5IGRlcml2YXRpdmVzZXZpZGVuY2Ugb2ZleHBlcmllbmNlc2NvbG9yc2NoZW1lc3RhdGVkIHRoYXRjZXJ0aWZpY2F0ZTwvYT48L2Rpdj5cbiBzZWxlY3RlZD1cImhpZ2ggc2Nob29scmVzcG9uc2UgdG9jb21mb3J0YWJsZWFkb3B0aW9uIG9mdGhyZWUgeWVhcnN0aGUgY291bnRyeWluIEZlYnJ1YXJ5c28gdGhhdCB0aGVwZW9wbGUgd2hvIHByb3ZpZGVkIGJ5PHBhcmFtIG5hbWVhZmZlY3RlZCBieWluIHRlcm1zIG9mYXBwb2ludG1lbnRJU08tODg1OS0xXCJ3YXMgYm9ybiBpbmhpc3RvcmljYWwgcmVnYXJkZWQgYXNtZWFzdXJlbWVudGlzIGJhc2VkIG9uIGFuZCBvdGhlciA6IGZ1bmN0aW9uKHNpZ25pZmljYW50Y2VsZWJyYXRpb250cmFuc21pdHRlZC9qcy9qcXVlcnkuaXMga25vd24gYXN0aGVvcmV0aWNhbCB0YWJpbmRleD1cIml0IGNvdWxkIGJlPG5vc2NyaXB0PlxuaGF2aW5nIGJlZW5cclxuPGhlYWQ+XHJcbjwgJnF1b3Q7VGhlIGNvbXBpbGF0aW9uaGUgaGFkIGJlZW5wcm9kdWNlZCBieXBoaWxvc29waGVyY29uc3RydWN0ZWRpbnRlbmRlZCB0b2Ftb25nIG90aGVyY29tcGFyZWQgdG90byBzYXkgdGhhdEVuZ2luZWVyaW5nYSBkaWZmZXJlbnRyZWZlcnJlZCB0b2RpZmZlcmVuY2VzYmVsaWVmIHRoYXRwaG90b2dyYXBoc2lkZW50aWZ5aW5nSGlzdG9yeSBvZiBSZXB1YmxpYyBvZm5lY2Vzc2FyaWx5cHJvYmFiaWxpdHl0ZWNobmljYWxseWxlYXZpbmcgdGhlc3BlY3RhY3VsYXJmcmFjdGlvbiBvZmVsZWN0cmljaXR5aGVhZCBvZiB0aGVyZXN0YXVyYW50c3BhcnRuZXJzaGlwZW1waGFzaXMgb25tb3N0IHJlY2VudHNoYXJlIHdpdGggc2F5aW5nIHRoYXRmaWxsZWQgd2l0aGRlc2lnbmVkIHRvaXQgaXMgb2Z0ZW5cIj48L2lmcmFtZT5hcyBmb2xsb3dzOm1lcmdlZCB3aXRodGhyb3VnaCB0aGVjb21tZXJjaWFsIHBvaW50ZWQgb3V0b3Bwb3J0dW5pdHl2aWV3IG9mIHRoZXJlcXVpcmVtZW50ZGl2aXNpb24gb2Zwcm9ncmFtbWluZ2hlIHJlY2VpdmVkc2V0SW50ZXJ2YWxcIj48L3NwYW4+PC9pbiBOZXcgWW9ya2FkZGl0aW9uYWwgY29tcHJlc3Npb25cblxuPGRpdiBpZD1cImluY29ycG9yYXRlOzwvc2NyaXB0PjxhdHRhY2hFdmVudGJlY2FtZSB0aGUgXCIgdGFyZ2V0PVwiX2NhcnJpZWQgb3V0U29tZSBvZiB0aGVzY2llbmNlIGFuZHRoZSB0aW1lIG9mQ29udGFpbmVyXCI+bWFpbnRhaW5pbmdDaHJpc3RvcGhlck11Y2ggb2YgdGhld3JpdGluZ3Mgb2ZcIiBoZWlnaHQ9XCIyc2l6ZSBvZiB0aGV2ZXJzaW9uIG9mIG1peHR1cmUgb2YgYmV0d2VlbiB0aGVFeGFtcGxlcyBvZmVkdWNhdGlvbmFsY29tcGV0aXRpdmUgb25zdWJtaXQ9XCJkaXJlY3RvciBvZmRpc3RpbmN0aXZlL0RURCBYSFRNTCByZWxhdGluZyB0b3RlbmRlbmN5IHRvcHJvdmluY2Ugb2Z3aGljaCB3b3VsZGRlc3BpdGUgdGhlc2NpZW50aWZpYyBsZWdpc2xhdHVyZS5pbm5lckhUTUwgYWxsZWdhdGlvbnNBZ3JpY3VsdHVyZXdhcyB1c2VkIGluYXBwcm9hY2ggdG9pbnRlbGxpZ2VudHllYXJzIGxhdGVyLHNhbnMtc2VyaWZkZXRlcm1pbmluZ1BlcmZvcm1hbmNlYXBwZWFyYW5jZXMsIHdoaWNoIGlzIGZvdW5kYXRpb25zYWJicmV2aWF0ZWRoaWdoZXIgdGhhbnMgZnJvbSB0aGUgaW5kaXZpZHVhbCBjb21wb3NlZCBvZnN1cHBvc2VkIHRvY2xhaW1zIHRoYXRhdHRyaWJ1dGlvbmZvbnQtc2l6ZToxZWxlbWVudHMgb2ZIaXN0b3JpY2FsIGhpcyBicm90aGVyYXQgdGhlIHRpbWVhbm5pdmVyc2FyeWdvdmVybmVkIGJ5cmVsYXRlZCB0byB1bHRpbWF0ZWx5IGlubm92YXRpb25zaXQgaXMgc3RpbGxjYW4gb25seSBiZWRlZmluaXRpb25zdG9HTVRTdHJpbmdBIG51bWJlciBvZmltZyBjbGFzcz1cIkV2ZW50dWFsbHksd2FzIGNoYW5nZWRvY2N1cnJlZCBpbm5laWdoYm9yaW5nZGlzdGluZ3Vpc2h3aGVuIGhlIHdhc2ludHJvZHVjaW5ndGVycmVzdHJpYWxNYW55IG9mIHRoZWFyZ3VlcyB0aGF0YW4gQW1lcmljYW5jb25xdWVzdCBvZndpZGVzcHJlYWQgd2VyZSBraWxsZWRzY3JlZW4gYW5kIEluIG9yZGVyIHRvZXhwZWN0ZWQgdG9kZXNjZW5kYW50c2FyZSBsb2NhdGVkbGVnaXNsYXRpdmVnZW5lcmF0aW9ucyBiYWNrZ3JvdW5kbW9zdCBwZW9wbGV5ZWFycyBhZnRlcnRoZXJlIGlzIG5vdGhlIGhpZ2hlc3RmcmVxdWVudGx5IHRoZXkgZG8gbm90YXJndWVkIHRoYXRzaG93ZWQgdGhhdHByZWRvbWluYW50dGhlb2xvZ2ljYWxieSB0aGUgdGltZWNvbnNpZGVyaW5nc2hvcnQtbGl2ZWQ8L3NwYW4+PC9hPmNhbiBiZSB1c2VkdmVyeSBsaXR0bGVvbmUgb2YgdGhlIGhhZCBhbHJlYWR5aW50ZXJwcmV0ZWRjb21tdW5pY2F0ZWZlYXR1cmVzIG9mZ292ZXJubWVudCw8L25vc2NyaXB0PmVudGVyZWQgdGhlXCIgaGVpZ2h0PVwiM0luZGVwZW5kZW50cG9wdWxhdGlvbnNsYXJnZS1zY2FsZS4gQWx0aG91Z2ggdXNlZCBpbiB0aGVkZXN0cnVjdGlvbnBvc3NpYmlsaXR5c3RhcnRpbmcgaW50d28gb3IgbW9yZWV4cHJlc3Npb25zc3Vib3JkaW5hdGVsYXJnZXIgdGhhbmhpc3RvcnkgYW5kPC9vcHRpb24+XHJcbkNvbnRpbmVudGFsZWxpbWluYXRpbmd3aWxsIG5vdCBiZXByYWN0aWNlIG9maW4gZnJvbnQgb2ZzaXRlIG9mIHRoZWVuc3VyZSB0aGF0dG8gY3JlYXRlIGFtaXNzaXNzaXBwaXBvdGVudGlhbGx5b3V0c3RhbmRpbmdiZXR0ZXIgdGhhbndoYXQgaXMgbm93c2l0dWF0ZWQgaW5tZXRhIG5hbWU9XCJUcmFkaXRpb25hbHN1Z2dlc3Rpb25zVHJhbnNsYXRpb250aGUgZm9ybSBvZmF0bW9zcGhlcmljaWRlb2xvZ2ljYWxlbnRlcnByaXNlc2NhbGN1bGF0aW5nZWFzdCBvZiB0aGVyZW1uYW50cyBvZnBsdWdpbnNwYWdlL2luZGV4LnBocD9yZW1haW5lZCBpbnRyYW5zZm9ybWVkSGUgd2FzIGFsc293YXMgYWxyZWFkeXN0YXRpc3RpY2FsaW4gZmF2b3Igb2ZNaW5pc3RyeSBvZm1vdmVtZW50IG9mZm9ybXVsYXRpb25pcyByZXF1aXJlZDxsaW5rIHJlbD1cIlRoaXMgaXMgdGhlIDxhIGhyZWY9XCIvcG9wdWxhcml6ZWRpbnZvbHZlZCBpbmFyZSB1c2VkIHRvYW5kIHNldmVyYWxtYWRlIGJ5IHRoZXNlZW1zIHRvIGJlbGlrZWx5IHRoYXRQYWxlc3Rpbmlhbm5hbWVkIGFmdGVyaXQgaGFkIGJlZW5tb3N0IGNvbW1vbnRvIHJlZmVyIHRvYnV0IHRoaXMgaXNjb25zZWN1dGl2ZXRlbXBvcmFyaWx5SW4gZ2VuZXJhbCxjb252ZW50aW9uc3Rha2VzIHBsYWNlc3ViZGl2aXNpb250ZXJyaXRvcmlhbG9wZXJhdGlvbmFscGVybWFuZW50bHl3YXMgbGFyZ2VseW91dGJyZWFrIG9maW4gdGhlIHBhc3Rmb2xsb3dpbmcgYSB4bWxuczpvZz1cIj48YSBjbGFzcz1cImNsYXNzPVwidGV4dENvbnZlcnNpb24gbWF5IGJlIHVzZWRtYW51ZmFjdHVyZWFmdGVyIGJlaW5nY2xlYXJmaXhcIj5cbnF1ZXN0aW9uIG9md2FzIGVsZWN0ZWR0byBiZWNvbWUgYWJlY2F1c2Ugb2Ygc29tZSBwZW9wbGVpbnNwaXJlZCBieXN1Y2Nlc3NmdWwgYSB0aW1lIHdoZW5tb3JlIGNvbW1vbmFtb25nc3QgdGhlYW4gb2ZmaWNpYWx3aWR0aDoxMDAlO3RlY2hub2xvZ3ksd2FzIGFkb3B0ZWR0byBrZWVwIHRoZXNldHRsZW1lbnRzbGl2ZSBiaXJ0aHNpbmRleC5odG1sXCJDb25uZWN0aWN1dGFzc2lnbmVkIHRvJmFtcDt0aW1lczthY2NvdW50IGZvcmFsaWduPXJpZ2h0dGhlIGNvbXBhbnlhbHdheXMgYmVlbnJldHVybmVkIHRvaW52b2x2ZW1lbnRCZWNhdXNlIHRoZXRoaXMgcGVyaW9kXCIgbmFtZT1cInFcIiBjb25maW5lZCB0b2EgcmVzdWx0IG9mdmFsdWU9XCJcIiAvPmlzIGFjdHVhbGx5RW52aXJvbm1lbnRcclxuPC9oZWFkPlxyXG5Db252ZXJzZWx5LD5cbjxkaXYgaWQ9XCIwXCIgd2lkdGg9XCIxaXMgcHJvYmFibHloYXZlIGJlY29tZWNvbnRyb2xsaW5ndGhlIHByb2JsZW1jaXRpemVucyBvZnBvbGl0aWNpYW5zcmVhY2hlZCB0aGVhcyBlYXJseSBhczpub25lOyBvdmVyPHRhYmxlIGNlbGx2YWxpZGl0eSBvZmRpcmVjdGx5IHRvb25tb3VzZWRvd253aGVyZSBpdCBpc3doZW4gaXQgd2FzbWVtYmVycyBvZiByZWxhdGlvbiB0b2FjY29tbW9kYXRlYWxvbmcgd2l0aCBJbiB0aGUgbGF0ZXRoZSBFbmdsaXNoZGVsaWNpb3VzXCI+dGhpcyBpcyBub3R0aGUgcHJlc2VudGlmIHRoZXkgYXJlYW5kIGZpbmFsbHlhIG1hdHRlciBvZlxyXG5cdDwvZGl2PlxyXG5cclxuPC9zY3JpcHQ+ZmFzdGVyIHRoYW5tYWpvcml0eSBvZmFmdGVyIHdoaWNoY29tcGFyYXRpdmV0byBtYWludGFpbmltcHJvdmUgdGhlYXdhcmRlZCB0aGVlclwiIGNsYXNzPVwiZnJhbWVib3JkZXJyZXN0b3JhdGlvbmluIHRoZSBzYW1lYW5hbHlzaXMgb2Z0aGVpciBmaXJzdER1cmluZyB0aGUgY29udGluZW50YWxzZXF1ZW5jZSBvZmZ1bmN0aW9uKCl7Zm9udC1zaXplOiB3b3JrIG9uIHRoZTwvc2NyaXB0PlxuPGJlZ2lucyB3aXRoamF2YXNjcmlwdDpjb25zdGl0dWVudHdhcyBmb3VuZGVkZXF1aWxpYnJpdW1hc3N1bWUgdGhhdGlzIGdpdmVuIGJ5bmVlZHMgdG8gYmVjb29yZGluYXRlc3RoZSB2YXJpb3VzYXJlIHBhcnQgb2Zvbmx5IGluIHRoZXNlY3Rpb25zIG9maXMgYSBjb21tb250aGVvcmllcyBvZmRpc2NvdmVyaWVzYXNzb2NpYXRpb25lZGdlIG9mIHRoZXN0cmVuZ3RoIG9mcG9zaXRpb24gaW5wcmVzZW50LWRheXVuaXZlcnNhbGx5dG8gZm9ybSB0aGVidXQgaW5zdGVhZGNvcnBvcmF0aW9uYXR0YWNoZWQgdG9pcyBjb21tb25seXJlYXNvbnMgZm9yICZxdW90O3RoZSBjYW4gYmUgbWFkZXdhcyBhYmxlIHRvd2hpY2ggbWVhbnNidXQgZGlkIG5vdG9uTW91c2VPdmVyYXMgcG9zc2libGVvcGVyYXRlZCBieWNvbWluZyBmcm9tdGhlIHByaW1hcnlhZGRpdGlvbiBvZmZvciBzZXZlcmFsdHJhbnNmZXJyZWRhIHBlcmlvZCBvZmFyZSBhYmxlIHRvaG93ZXZlciwgaXRzaG91bGQgaGF2ZW11Y2ggbGFyZ2VyXG5cdDwvc2NyaXB0PmFkb3B0ZWQgdGhlcHJvcGVydHkgb2ZkaXJlY3RlZCBieWVmZmVjdGl2ZWx5d2FzIGJyb3VnaHRjaGlsZHJlbiBvZlByb2dyYW1taW5nbG9uZ2VyIHRoYW5tYW51c2NyaXB0c3dhciBhZ2FpbnN0YnkgbWVhbnMgb2ZhbmQgbW9zdCBvZnNpbWlsYXIgdG8gcHJvcHJpZXRhcnlvcmlnaW5hdGluZ3ByZXN0aWdpb3VzZ3JhbW1hdGljYWxleHBlcmllbmNlLnRvIG1ha2UgdGhlSXQgd2FzIGFsc29pcyBmb3VuZCBpbmNvbXBldGl0b3JzaW4gdGhlIFUuUy5yZXBsYWNlIHRoZWJyb3VnaHQgdGhlY2FsY3VsYXRpb25mYWxsIG9mIHRoZXRoZSBnZW5lcmFscHJhY3RpY2FsbHlpbiBob25vciBvZnJlbGVhc2VkIGlucmVzaWRlbnRpYWxhbmQgc29tZSBvZmtpbmcgb2YgdGhlcmVhY3Rpb24gdG8xc3QgRWFybCBvZmN1bHR1cmUgYW5kcHJpbmNpcGFsbHk8L3RpdGxlPlxuICB0aGV5IGNhbiBiZWJhY2sgdG8gdGhlc29tZSBvZiBoaXNleHBvc3VyZSB0b2FyZSBzaW1pbGFyZm9ybSBvZiB0aGVhZGRGYXZvcml0ZWNpdGl6ZW5zaGlwcGFydCBpbiB0aGVwZW9wbGUgd2l0aGluIHByYWN0aWNldG8gY29udGludWUmYW1wO21pbnVzO2FwcHJvdmVkIGJ5IHRoZSBmaXJzdCBhbGxvd2VkIHRoZWFuZCBmb3IgdGhlZnVuY3Rpb25pbmdwbGF5aW5nIHRoZXNvbHV0aW9uIHRvaGVpZ2h0PVwiMFwiIGluIGhpcyBib29rbW9yZSB0aGFuIGFmb2xsb3dzIHRoZWNyZWF0ZWQgdGhlcHJlc2VuY2UgaW4mbmJzcDs8L3RkPm5hdGlvbmFsaXN0dGhlIGlkZWEgb2ZhIGNoYXJhY3RlcndlcmUgZm9yY2VkIGNsYXNzPVwiYnRuZGF5cyBvZiB0aGVmZWF0dXJlZCBpbnNob3dpbmcgdGhlaW50ZXJlc3QgaW5pbiBwbGFjZSBvZnR1cm4gb2YgdGhldGhlIGhlYWQgb2ZMb3JkIG9mIHRoZXBvbGl0aWNhbGx5aGFzIGl0cyBvd25FZHVjYXRpb25hbGFwcHJvdmFsIG9mc29tZSBvZiB0aGVlYWNoIG90aGVyLGJlaGF2aW9yIG9mYW5kIGJlY2F1c2VhbmQgYW5vdGhlcmFwcGVhcmVkIG9ucmVjb3JkZWQgaW5ibGFjayZxdW90O21heSBpbmNsdWRldGhlIHdvcmxkJ3NjYW4gbGVhZCB0b3JlZmVycyB0byBhYm9yZGVyPVwiMFwiIGdvdmVybm1lbnQgd2lubmluZyB0aGVyZXN1bHRlZCBpbiB3aGlsZSB0aGUgV2FzaGluZ3Rvbix0aGUgc3ViamVjdGNpdHkgaW4gdGhlPjwvZGl2PlxyXG5cdFx0cmVmbGVjdCB0aGV0byBjb21wbGV0ZWJlY2FtZSBtb3JlcmFkaW9hY3RpdmVyZWplY3RlZCBieXdpdGhvdXQgYW55aGlzIGZhdGhlcix3aGljaCBjb3VsZGNvcHkgb2YgdGhldG8gaW5kaWNhdGVhIHBvbGl0aWNhbGFjY291bnRzIG9mY29uc3RpdHV0ZXN3b3JrZWQgd2l0aGVyPC9hPjwvbGk+b2YgaGlzIGxpZmVhY2NvbXBhbmllZGNsaWVudFdpZHRocHJldmVudCB0aGVMZWdpc2xhdGl2ZWRpZmZlcmVudGx5dG9nZXRoZXIgaW5oYXMgc2V2ZXJhbGZvciBhbm90aGVydGV4dCBvZiB0aGVmb3VuZGVkIHRoZWUgd2l0aCB0aGUgaXMgdXNlZCBmb3JjaGFuZ2VkIHRoZXVzdWFsbHkgdGhlcGxhY2Ugd2hlcmV3aGVyZWFzIHRoZT4gPGEgaHJlZj1cIlwiPjxhIGhyZWY9XCJ0aGVtc2VsdmVzLGFsdGhvdWdoIGhldGhhdCBjYW4gYmV0cmFkaXRpb25hbHJvbGUgb2YgdGhlYXMgYSByZXN1bHRyZW1vdmVDaGlsZGRlc2lnbmVkIGJ5d2VzdCBvZiB0aGVTb21lIHBlb3BsZXByb2R1Y3Rpb24sc2lkZSBvZiB0aGVuZXdzbGV0dGVyc3VzZWQgYnkgdGhlZG93biB0byB0aGVhY2NlcHRlZCBieWxpdmUgaW4gdGhlYXR0ZW1wdHMgdG9vdXRzaWRlIHRoZWZyZXF1ZW5jaWVzSG93ZXZlciwgaW5wcm9ncmFtbWVyc2F0IGxlYXN0IGluYXBwcm94aW1hdGVhbHRob3VnaCBpdHdhcyBwYXJ0IG9mYW5kIHZhcmlvdXNHb3Zlcm5vciBvZnRoZSBhcnRpY2xldHVybmVkIGludG8+PGEgaHJlZj1cIi90aGUgZWNvbm9teWlzIHRoZSBtb3N0bW9zdCB3aWRlbHl3b3VsZCBsYXRlcmFuZCBwZXJoYXBzcmlzZSB0byB0aGVvY2N1cnMgd2hlbnVuZGVyIHdoaWNoY29uZGl0aW9ucy50aGUgd2VzdGVybnRoZW9yeSB0aGF0aXMgcHJvZHVjZWR0aGUgY2l0eSBvZmluIHdoaWNoIGhlc2VlbiBpbiB0aGV0aGUgY2VudHJhbGJ1aWxkaW5nIG9mbWFueSBvZiBoaXNhcmVhIG9mIHRoZWlzIHRoZSBvbmx5bW9zdCBvZiB0aGVtYW55IG9mIHRoZXRoZSBXZXN0ZXJuVGhlcmUgaXMgbm9leHRlbmRlZCB0b1N0YXRpc3RpY2FsY29sc3Bhbj0yIHxzaG9ydCBzdG9yeXBvc3NpYmxlIHRvdG9wb2xvZ2ljYWxjcml0aWNhbCBvZnJlcG9ydGVkIHRvYSBDaHJpc3RpYW5kZWNpc2lvbiB0b2lzIGVxdWFsIHRvcHJvYmxlbXMgb2ZUaGlzIGNhbiBiZW1lcmNoYW5kaXNlZm9yIG1vc3Qgb2ZubyBldmlkZW5jZWVkaXRpb25zIG9mZWxlbWVudHMgaW4mcXVvdDsuIFRoZWNvbS9pbWFnZXMvd2hpY2ggbWFrZXN0aGUgcHJvY2Vzc3JlbWFpbnMgdGhlbGl0ZXJhdHVyZSxpcyBhIG1lbWJlcnRoZSBwb3B1bGFydGhlIGFuY2llbnRwcm9ibGVtcyBpbnRpbWUgb2YgdGhlZGVmZWF0ZWQgYnlib2R5IG9mIHRoZWEgZmV3IHllYXJzbXVjaCBvZiB0aGV0aGUgd29yayBvZkNhbGlmb3JuaWEsc2VydmVkIGFzIGFnb3Zlcm5tZW50LmNvbmNlcHRzIG9mbW92ZW1lbnQgaW5cdFx0PGRpdiBpZD1cIml0XCIgdmFsdWU9XCJsYW5ndWFnZSBvZmFzIHRoZXkgYXJlcHJvZHVjZWQgaW5pcyB0aGF0IHRoZWV4cGxhaW4gdGhlZGl2PjwvZGl2PlxuSG93ZXZlciB0aGVsZWFkIHRvIHRoZVx0PGEgaHJlZj1cIi93YXMgZ3JhbnRlZHBlb3BsZSBoYXZlY29udGludWFsbHl3YXMgc2VlbiBhc2FuZCByZWxhdGVkdGhlIHJvbGUgb2Zwcm9wb3NlZCBieW9mIHRoZSBiZXN0ZWFjaCBvdGhlci5Db25zdGFudGluZXBlb3BsZSBmcm9tZGlhbGVjdHMgb2Z0byByZXZpc2lvbndhcyByZW5hbWVkYSBzb3VyY2Ugb2Z0aGUgaW5pdGlhbGxhdW5jaGVkIGlucHJvdmlkZSB0aGV0byB0aGUgd2VzdHdoZXJlIHRoZXJlYW5kIHNpbWlsYXJiZXR3ZWVuIHR3b2lzIGFsc28gdGhlRW5nbGlzaCBhbmRjb25kaXRpb25zLHRoYXQgaXQgd2FzZW50aXRsZWQgdG90aGVtc2VsdmVzLnF1YW50aXR5IG9mcmFuc3BhcmVuY3l0aGUgc2FtZSBhc3RvIGpvaW4gdGhlY291bnRyeSBhbmR0aGlzIGlzIHRoZVRoaXMgbGVkIHRvYSBzdGF0ZW1lbnRjb250cmFzdCB0b2xhc3RJbmRleE9mdGhyb3VnaCBoaXNpcyBkZXNpZ25lZHRoZSB0ZXJtIGlzaXMgcHJvdmlkZWRwcm90ZWN0IHRoZW5nPC9hPjwvbGk+VGhlIGN1cnJlbnR0aGUgc2l0ZSBvZnN1YnN0YW50aWFsZXhwZXJpZW5jZSxpbiB0aGUgV2VzdHRoZXkgc2hvdWxkc2xvdmVuXHUwMEM0XHUwMDhEaW5hY29tZW50YXJpb3N1bml2ZXJzaWRhZGNvbmRpY2lvbmVzYWN0aXZpZGFkZXNleHBlcmllbmNpYXRlY25vbG9nXHUwMEMzXHUwMEFEYXByb2R1Y2NpXHUwMEMzXHUwMEIzbnB1bnR1YWNpXHUwMEMzXHUwMEIzbmFwbGljYWNpXHUwMEMzXHUwMEIzbmNvbnRyYXNlXHUwMEMzXHUwMEIxYWNhdGVnb3JcdTAwQzNcdTAwQURhc3JlZ2lzdHJhcnNlcHJvZmVzaW9uYWx0cmF0YW1pZW50b3JlZ1x1MDBDM1x1MDBBRHN0cmF0ZXNlY3JldGFyXHUwMEMzXHUwMEFEYXByaW5jaXBhbGVzcHJvdGVjY2lcdTAwQzNcdTAwQjNuaW1wb3J0YW50ZXNpbXBvcnRhbmNpYXBvc2liaWxpZGFkaW50ZXJlc2FudGVjcmVjaW1pZW50b25lY2VzaWRhZGVzc3VzY3JpYmlyc2Vhc29jaWFjaVx1MDBDM1x1MDBCM25kaXNwb25pYmxlc2V2YWx1YWNpXHUwMEMzXHUwMEIzbmVzdHVkaWFudGVzcmVzcG9uc2FibGVyZXNvbHVjaVx1MDBDM1x1MDBCM25ndWFkYWxhamFyYXJlZ2lzdHJhZG9zb3BvcnR1bmlkYWRjb21lcmNpYWxlc2ZvdG9ncmFmXHUwMEMzXHUwMEFEYWF1dG9yaWRhZGVzaW5nZW5pZXJcdTAwQzNcdTAwQURhdGVsZXZpc2lcdTAwQzNcdTAwQjNuY29tcGV0ZW5jaWFvcGVyYWNpb25lc2VzdGFibGVjaWRvc2ltcGxlbWVudGVhY3R1YWxtZW50ZW5hdmVnYWNpXHUwMEMzXHUwMEIzbmNvbmZvcm1pZGFkbGluZS1oZWlnaHQ6Zm9udC1mYW1pbHk6XCIgOiBcImh0dHA6Ly9hcHBsaWNhdGlvbnNsaW5rXCIgaHJlZj1cInNwZWNpZmljYWxseS8vPCFbQ0RBVEFbXG5Pcmdhbml6YXRpb25kaXN0cmlidXRpb24wcHg7IGhlaWdodDpyZWxhdGlvbnNoaXBkZXZpY2Utd2lkdGg8ZGl2IGNsYXNzPVwiPGxhYmVsIGZvcj1cInJlZ2lzdHJhdGlvbjwvbm9zY3JpcHQ+XG4vaW5kZXguaHRtbFwid2luZG93Lm9wZW4oICFpbXBvcnRhbnQ7YXBwbGljYXRpb24vaW5kZXBlbmRlbmNlLy93d3cuZ29vZ2xlb3JnYW5pemF0aW9uYXV0b2NvbXBsZXRlcmVxdWlyZW1lbnRzY29uc2VydmF0aXZlPGZvcm0gbmFtZT1cImludGVsbGVjdHVhbG1hcmdpbi1sZWZ0OjE4dGggY2VudHVyeWFuIGltcG9ydGFudGluc3RpdHV0aW9uc2FiYnJldmlhdGlvbjxpbWcgY2xhc3M9XCJvcmdhbmlzYXRpb25jaXZpbGl6YXRpb24xOXRoIGNlbnR1cnlhcmNoaXRlY3R1cmVpbmNvcnBvcmF0ZWQyMHRoIGNlbnR1cnktY29udGFpbmVyXCI+bW9zdCBub3RhYmx5Lz48L2E+PC9kaXY+bm90aWZpY2F0aW9uJ3VuZGVmaW5lZCcpRnVydGhlcm1vcmUsYmVsaWV2ZSB0aGF0aW5uZXJIVE1MID0gcHJpb3IgdG8gdGhlZHJhbWF0aWNhbGx5cmVmZXJyaW5nIHRvbmVnb3RpYXRpb25zaGVhZHF1YXJ0ZXJzU291dGggQWZyaWNhdW5zdWNjZXNzZnVsUGVubnN5bHZhbmlhQXMgYSByZXN1bHQsPGh0bWwgbGFuZz1cIiZsdDsvc3VwJmd0O2RlYWxpbmcgd2l0aHBoaWxhZGVscGhpYWhpc3RvcmljYWxseSk7PC9zY3JpcHQ+XG5wYWRkaW5nLXRvcDpleHBlcmltZW50YWxnZXRBdHRyaWJ1dGVpbnN0cnVjdGlvbnN0ZWNobm9sb2dpZXNwYXJ0IG9mIHRoZSA9ZnVuY3Rpb24oKXtzdWJzY3JpcHRpb25sLmR0ZFwiPlxyXG48aHRnZW9ncmFwaGljYWxDb25zdGl0dXRpb24nLCBmdW5jdGlvbihzdXBwb3J0ZWQgYnlhZ3JpY3VsdHVyYWxjb25zdHJ1Y3Rpb25wdWJsaWNhdGlvbnNmb250LXNpemU6IDFhIHZhcmlldHkgb2Y8ZGl2IHN0eWxlPVwiRW5jeWNsb3BlZGlhaWZyYW1lIHNyYz1cImRlbW9uc3RyYXRlZGFjY29tcGxpc2hlZHVuaXZlcnNpdGllc0RlbW9ncmFwaGljcyk7PC9zY3JpcHQ+PGRlZGljYXRlZCB0b2tub3dsZWRnZSBvZnNhdGlzZmFjdGlvbnBhcnRpY3VsYXJseTwvZGl2PjwvZGl2PkVuZ2xpc2ggKFVTKWFwcGVuZENoaWxkKHRyYW5zbWlzc2lvbnMuIEhvd2V2ZXIsIGludGVsbGlnZW5jZVwiIHRhYmluZGV4PVwiZmxvYXQ6cmlnaHQ7Q29tbW9ud2VhbHRocmFuZ2luZyBmcm9taW4gd2hpY2ggdGhlYXQgbGVhc3Qgb25lcmVwcm9kdWN0aW9uZW5jeWNsb3BlZGlhO2ZvbnQtc2l6ZToxanVyaXNkaWN0aW9uYXQgdGhhdCB0aW1lXCI+PGEgY2xhc3M9XCJJbiBhZGRpdGlvbixkZXNjcmlwdGlvbitjb252ZXJzYXRpb25jb250YWN0IHdpdGhpcyBnZW5lcmFsbHlyXCIgY29udGVudD1cInJlcHJlc2VudGluZyZsdDttYXRoJmd0O3ByZXNlbnRhdGlvbm9jY2FzaW9uYWxseTxpbWcgd2lkdGg9XCJuYXZpZ2F0aW9uXCI+Y29tcGVuc2F0aW9uY2hhbXBpb25zaGlwbWVkaWE9XCJhbGxcIiB2aW9sYXRpb24gb2ZyZWZlcmVuY2UgdG9yZXR1cm4gdHJ1ZTtTdHJpY3QvL0VOXCIgdHJhbnNhY3Rpb25zaW50ZXJ2ZW50aW9udmVyaWZpY2F0aW9uSW5mb3JtYXRpb24gZGlmZmljdWx0aWVzQ2hhbXBpb25zaGlwY2FwYWJpbGl0aWVzPCFbZW5kaWZdLS0+fVxuPC9zY3JpcHQ+XG5DaHJpc3RpYW5pdHlmb3IgZXhhbXBsZSxQcm9mZXNzaW9uYWxyZXN0cmljdGlvbnNzdWdnZXN0IHRoYXR3YXMgcmVsZWFzZWQoc3VjaCBhcyB0aGVyZW1vdmVDbGFzcyh1bmVtcGxveW1lbnR0aGUgQW1lcmljYW5zdHJ1Y3R1cmUgb2YvaW5kZXguaHRtbCBwdWJsaXNoZWQgaW5zcGFuIGNsYXNzPVwiXCI+PGEgaHJlZj1cIi9pbnRyb2R1Y3Rpb25iZWxvbmdpbmcgdG9jbGFpbWVkIHRoYXRjb25zZXF1ZW5jZXM8bWV0YSBuYW1lPVwiR3VpZGUgdG8gdGhlb3ZlcndoZWxtaW5nYWdhaW5zdCB0aGUgY29uY2VudHJhdGVkLFxuLm5vbnRvdWNoIG9ic2VydmF0aW9uczwvYT5cbjwvZGl2PlxuZiAoZG9jdW1lbnQuYm9yZGVyOiAxcHgge2ZvbnQtc2l6ZToxdHJlYXRtZW50IG9mMFwiIGhlaWdodD1cIjFtb2RpZmljYXRpb25JbmRlcGVuZGVuY2VkaXZpZGVkIGludG9ncmVhdGVyIHRoYW5hY2hpZXZlbWVudHNlc3RhYmxpc2hpbmdKYXZhU2NyaXB0XCIgbmV2ZXJ0aGVsZXNzc2lnbmlmaWNhbmNlQnJvYWRjYXN0aW5nPiZuYnNwOzwvdGQ+Y29udGFpbmVyXCI+XG5zdWNoIGFzIHRoZSBpbmZsdWVuY2Ugb2ZhIHBhcnRpY3VsYXJzcmM9J2h0dHA6Ly9uYXZpZ2F0aW9uXCIgaGFsZiBvZiB0aGUgc3Vic3RhbnRpYWwgJm5ic3A7PC9kaXY+YWR2YW50YWdlIG9mZGlzY292ZXJ5IG9mZnVuZGFtZW50YWwgbWV0cm9wb2xpdGFudGhlIG9wcG9zaXRlXCIgeG1sOmxhbmc9XCJkZWxpYmVyYXRlbHlhbGlnbj1jZW50ZXJldm9sdXRpb24gb2ZwcmVzZXJ2YXRpb25pbXByb3ZlbWVudHNiZWdpbm5pbmcgaW5KZXN1cyBDaHJpc3RQdWJsaWNhdGlvbnNkaXNhZ3JlZW1lbnR0ZXh0LWFsaWduOnIsIGZ1bmN0aW9uKClzaW1pbGFyaXRpZXNib2R5PjwvaHRtbD5pcyBjdXJyZW50bHlhbHBoYWJldGljYWxpcyBzb21ldGltZXN0eXBlPVwiaW1hZ2UvbWFueSBvZiB0aGUgZmxvdzpoaWRkZW47YXZhaWxhYmxlIGluZGVzY3JpYmUgdGhlZXhpc3RlbmNlIG9mYWxsIG92ZXIgdGhldGhlIEludGVybmV0XHQ8dWwgY2xhc3M9XCJpbnN0YWxsYXRpb25uZWlnaGJvcmhvb2Rhcm1lZCBmb3JjZXNyZWR1Y2luZyB0aGVjb250aW51ZXMgdG9Ob25ldGhlbGVzcyx0ZW1wZXJhdHVyZXNcblx0XHQ8YSBocmVmPVwiY2xvc2UgdG8gdGhlZXhhbXBsZXMgb2YgaXMgYWJvdXQgdGhlKHNlZSBiZWxvdykuXCIgaWQ9XCJzZWFyY2hwcm9mZXNzaW9uYWxpcyBhdmFpbGFibGV0aGUgb2ZmaWNpYWxcdFx0PC9zY3JpcHQ+XG5cblx0XHQ8ZGl2IGlkPVwiYWNjZWxlcmF0aW9udGhyb3VnaCB0aGUgSGFsbCBvZiBGYW1lZGVzY3JpcHRpb25zdHJhbnNsYXRpb25zaW50ZXJmZXJlbmNlIHR5cGU9J3RleHQvcmVjZW50IHllYXJzaW4gdGhlIHdvcmxkdmVyeSBwb3B1bGFye2JhY2tncm91bmQ6dHJhZGl0aW9uYWwgc29tZSBvZiB0aGUgY29ubmVjdGVkIHRvZXhwbG9pdGF0aW9uZW1lcmdlbmNlIG9mY29uc3RpdHV0aW9uQSBIaXN0b3J5IG9mc2lnbmlmaWNhbnQgbWFudWZhY3R1cmVkZXhwZWN0YXRpb25zPjxub3NjcmlwdD48Y2FuIGJlIGZvdW5kYmVjYXVzZSB0aGUgaGFzIG5vdCBiZWVubmVpZ2hib3VyaW5nd2l0aG91dCB0aGUgYWRkZWQgdG8gdGhlXHQ8bGkgY2xhc3M9XCJpbnN0cnVtZW50YWxTb3ZpZXQgVW5pb25hY2tub3dsZWRnZWR3aGljaCBjYW4gYmVuYW1lIGZvciB0aGVhdHRlbnRpb24gdG9hdHRlbXB0cyB0byBkZXZlbG9wbWVudHNJbiBmYWN0LCB0aGU8bGkgY2xhc3M9XCJhaW1wbGljYXRpb25zc3VpdGFibGUgZm9ybXVjaCBvZiB0aGUgY29sb25pemF0aW9ucHJlc2lkZW50aWFsY2FuY2VsQnViYmxlIEluZm9ybWF0aW9ubW9zdCBvZiB0aGUgaXMgZGVzY3JpYmVkcmVzdCBvZiB0aGUgbW9yZSBvciBsZXNzaW4gU2VwdGVtYmVySW50ZWxsaWdlbmNlc3JjPVwiaHR0cDovL3B4OyBoZWlnaHQ6IGF2YWlsYWJsZSB0b21hbnVmYWN0dXJlcmh1bWFuIHJpZ2h0c2xpbmsgaHJlZj1cIi9hdmFpbGFiaWxpdHlwcm9wb3J0aW9uYWxvdXRzaWRlIHRoZSBhc3Ryb25vbWljYWxodW1hbiBiZWluZ3NuYW1lIG9mIHRoZSBhcmUgZm91bmQgaW5hcmUgYmFzZWQgb25zbWFsbGVyIHRoYW5hIHBlcnNvbiB3aG9leHBhbnNpb24gb2Zhcmd1aW5nIHRoYXRub3cga25vd24gYXNJbiB0aGUgZWFybHlpbnRlcm1lZGlhdGVkZXJpdmVkIGZyb21TY2FuZGluYXZpYW48L2E+PC9kaXY+XHJcbmNvbnNpZGVyIHRoZWFuIGVzdGltYXRlZHRoZSBOYXRpb25hbDxkaXYgaWQ9XCJwYWdyZXN1bHRpbmcgaW5jb21taXNzaW9uZWRhbmFsb2dvdXMgdG9hcmUgcmVxdWlyZWQvdWw+XG48L2Rpdj5cbndhcyBiYXNlZCBvbmFuZCBiZWNhbWUgYSZuYnNwOyZuYnNwO3RcIiB2YWx1ZT1cIlwiIHdhcyBjYXB0dXJlZG5vIG1vcmUgdGhhbnJlc3BlY3RpdmVseWNvbnRpbnVlIHRvID5cclxuPGhlYWQ+XHJcbjx3ZXJlIGNyZWF0ZWRtb3JlIGdlbmVyYWxpbmZvcm1hdGlvbiB1c2VkIGZvciB0aGVpbmRlcGVuZGVudCB0aGUgSW1wZXJpYWxjb21wb25lbnQgb2Z0byB0aGUgbm9ydGhpbmNsdWRlIHRoZSBDb25zdHJ1Y3Rpb25zaWRlIG9mIHRoZSB3b3VsZCBub3QgYmVmb3IgaW5zdGFuY2VpbnZlbnRpb24gb2Ztb3JlIGNvbXBsZXhjb2xsZWN0aXZlbHliYWNrZ3JvdW5kOiB0ZXh0LWFsaWduOiBpdHMgb3JpZ2luYWxpbnRvIGFjY291bnR0aGlzIHByb2Nlc3NhbiBleHRlbnNpdmVob3dldmVyLCB0aGV0aGV5IGFyZSBub3RyZWplY3RlZCB0aGVjcml0aWNpc20gb2ZkdXJpbmcgd2hpY2hwcm9iYWJseSB0aGV0aGlzIGFydGljbGUoZnVuY3Rpb24oKXtJdCBzaG91bGQgYmVhbiBhZ3JlZW1lbnRhY2NpZGVudGFsbHlkaWZmZXJzIGZyb21BcmNoaXRlY3R1cmViZXR0ZXIga25vd25hcnJhbmdlbWVudHNpbmZsdWVuY2Ugb25hdHRlbmRlZCB0aGVpZGVudGljYWwgdG9zb3V0aCBvZiB0aGVwYXNzIHRocm91Z2h4bWxcIiB0aXRsZT1cIndlaWdodDpib2xkO2NyZWF0aW5nIHRoZWRpc3BsYXk6bm9uZXJlcGxhY2VkIHRoZTxpbWcgc3JjPVwiL2lodHRwczovL3d3dy5Xb3JsZCBXYXIgSUl0ZXN0aW1vbmlhbHNmb3VuZCBpbiB0aGVyZXF1aXJlZCB0byBhbmQgdGhhdCB0aGViZXR3ZWVuIHRoZSB3YXMgZGVzaWduZWRjb25zaXN0cyBvZiBjb25zaWRlcmFibHlwdWJsaXNoZWQgYnl0aGUgbGFuZ3VhZ2VDb25zZXJ2YXRpb25jb25zaXN0ZWQgb2ZyZWZlciB0byB0aGViYWNrIHRvIHRoZSBjc3NcIiBtZWRpYT1cIlBlb3BsZSBmcm9tIGF2YWlsYWJsZSBvbnByb3ZlZCB0byBiZXN1Z2dlc3Rpb25zXCJ3YXMga25vd24gYXN2YXJpZXRpZXMgb2ZsaWtlbHkgdG8gYmVjb21wcmlzZWQgb2ZzdXBwb3J0IHRoZSBoYW5kcyBvZiB0aGVjb3VwbGVkIHdpdGhjb25uZWN0IGFuZCBib3JkZXI6bm9uZTtwZXJmb3JtYW5jZXNiZWZvcmUgYmVpbmdsYXRlciBiZWNhbWVjYWxjdWxhdGlvbnNvZnRlbiBjYWxsZWRyZXNpZGVudHMgb2ZtZWFuaW5nIHRoYXQ+PGxpIGNsYXNzPVwiZXZpZGVuY2UgZm9yZXhwbGFuYXRpb25zZW52aXJvbm1lbnRzXCI+PC9hPjwvZGl2PndoaWNoIGFsbG93c0ludHJvZHVjdGlvbmRldmVsb3BlZCBieWEgd2lkZSByYW5nZW9uIGJlaGFsZiBvZnZhbGlnbj1cInRvcFwicHJpbmNpcGxlIG9mYXQgdGhlIHRpbWUsPC9ub3NjcmlwdD5ccnNhaWQgdG8gaGF2ZWluIHRoZSBmaXJzdHdoaWxlIG90aGVyc2h5cG90aGV0aWNhbHBoaWxvc29waGVyc3Bvd2VyIG9mIHRoZWNvbnRhaW5lZCBpbnBlcmZvcm1lZCBieWluYWJpbGl0eSB0b3dlcmUgd3JpdHRlbnNwYW4gc3R5bGU9XCJpbnB1dCBuYW1lPVwidGhlIHF1ZXN0aW9uaW50ZW5kZWQgZm9ycmVqZWN0aW9uIG9maW1wbGllcyB0aGF0aW52ZW50ZWQgdGhldGhlIHN0YW5kYXJkd2FzIHByb2JhYmx5bGluayBiZXR3ZWVucHJvZmVzc29yIG9maW50ZXJhY3Rpb25zY2hhbmdpbmcgdGhlSW5kaWFuIE9jZWFuIGNsYXNzPVwibGFzdHdvcmtpbmcgd2l0aCdodHRwOi8vd3d3LnllYXJzIGJlZm9yZVRoaXMgd2FzIHRoZXJlY3JlYXRpb25hbGVudGVyaW5nIHRoZW1lYXN1cmVtZW50c2FuIGV4dHJlbWVseXZhbHVlIG9mIHRoZXN0YXJ0IG9mIHRoZVxuPC9zY3JpcHQ+XG5cbmFuIGVmZm9ydCB0b2luY3JlYXNlIHRoZXRvIHRoZSBzb3V0aHNwYWNpbmc9XCIwXCI+c3VmZmljaWVudGx5dGhlIEV1cm9wZWFuY29udmVydGVkIHRvY2xlYXJUaW1lb3V0ZGlkIG5vdCBoYXZlY29uc2VxdWVudGx5Zm9yIHRoZSBuZXh0ZXh0ZW5zaW9uIG9mZWNvbm9taWMgYW5kYWx0aG91Z2ggdGhlYXJlIHByb2R1Y2VkYW5kIHdpdGggdGhlaW5zdWZmaWNpZW50Z2l2ZW4gYnkgdGhlc3RhdGluZyB0aGF0ZXhwZW5kaXR1cmVzPC9zcGFuPjwvYT5cbnRob3VnaHQgdGhhdG9uIHRoZSBiYXNpc2NlbGxwYWRkaW5nPWltYWdlIG9mIHRoZXJldHVybmluZyB0b2luZm9ybWF0aW9uLHNlcGFyYXRlZCBieWFzc2Fzc2luYXRlZHNcIiBjb250ZW50PVwiYXV0aG9yaXR5IG9mbm9ydGh3ZXN0ZXJuPC9kaXY+XG48ZGl2IFwiPjwvZGl2PlxyXG4gIGNvbnN1bHRhdGlvbmNvbW11bml0eSBvZnRoZSBuYXRpb25hbGl0IHNob3VsZCBiZXBhcnRpY2lwYW50cyBhbGlnbj1cImxlZnR0aGUgZ3JlYXRlc3RzZWxlY3Rpb24gb2ZzdXBlcm5hdHVyYWxkZXBlbmRlbnQgb25pcyBtZW50aW9uZWRhbGxvd2luZyB0aGV3YXMgaW52ZW50ZWRhY2NvbXBhbnlpbmdoaXMgcGVyc29uYWxhdmFpbGFibGUgYXRzdHVkeSBvZiB0aGVvbiB0aGUgb3RoZXJleGVjdXRpb24gb2ZIdW1hbiBSaWdodHN0ZXJtcyBvZiB0aGVhc3NvY2lhdGlvbnNyZXNlYXJjaCBhbmRzdWNjZWVkZWQgYnlkZWZlYXRlZCB0aGVhbmQgZnJvbSB0aGVidXQgdGhleSBhcmVjb21tYW5kZXIgb2ZzdGF0ZSBvZiB0aGV5ZWFycyBvZiBhZ2V0aGUgc3R1ZHkgb2Y8dWwgY2xhc3M9XCJzcGxhY2UgaW4gdGhld2hlcmUgaGUgd2FzPGxpIGNsYXNzPVwiZnRoZXJlIGFyZSBub3doaWNoIGJlY2FtZWhlIHB1Ymxpc2hlZGV4cHJlc3NlZCBpbnRvIHdoaWNoIHRoZWNvbW1pc3Npb25lcmZvbnQtd2VpZ2h0OnRlcnJpdG9yeSBvZmV4dGVuc2lvbnNcIj5Sb21hbiBFbXBpcmVlcXVhbCB0byB0aGVJbiBjb250cmFzdCxob3dldmVyLCBhbmRpcyB0eXBpY2FsbHlhbmQgaGlzIHdpZmUoYWxzbyBjYWxsZWQ+PHVsIGNsYXNzPVwiZWZmZWN0aXZlbHkgZXZvbHZlZCBpbnRvc2VlbSB0byBoYXZld2hpY2ggaXMgdGhldGhlcmUgd2FzIG5vYW4gZXhjZWxsZW50YWxsIG9mIHRoZXNlZGVzY3JpYmVkIGJ5SW4gcHJhY3RpY2UsYnJvYWRjYXN0aW5nY2hhcmdlZCB3aXRocmVmbGVjdGVkIGluc3ViamVjdGVkIHRvbWlsaXRhcnkgYW5kdG8gdGhlIHBvaW50ZWNvbm9taWNhbGx5c2V0VGFyZ2V0aW5nYXJlIGFjdHVhbGx5dmljdG9yeSBvdmVyKCk7PC9zY3JpcHQ+Y29udGludW91c2x5cmVxdWlyZWQgZm9yZXZvbHV0aW9uYXJ5YW4gZWZmZWN0aXZlbm9ydGggb2YgdGhlLCB3aGljaCB3YXMgZnJvbnQgb2YgdGhlb3Igb3RoZXJ3aXNlc29tZSBmb3JtIG9maGFkIG5vdCBiZWVuZ2VuZXJhdGVkIGJ5aW5mb3JtYXRpb24ucGVybWl0dGVkIHRvaW5jbHVkZXMgdGhlZGV2ZWxvcG1lbnQsZW50ZXJlZCBpbnRvdGhlIHByZXZpb3VzIjsNCisJCQl9DQorCQl9DQorDQorCQlwcml2YXRlIGNsYXNzIERhdGFIb2xkZXIyDQorCQl7DQorCQkJaW50ZXJuYWwgc3RhdGljIHN0cmluZyBHZXREYXRhKCkNCisJCQl7DQorCQkJCXJldHVybiAiY29uc2lzdGVudGx5YXJlIGtub3duIGFzdGhlIGZpZWxkIG9mdGhpcyB0eXBlIG9mZ2l2ZW4gdG8gdGhldGhlIHRpdGxlIG9mY29udGFpbnMgdGhlaW5zdGFuY2VzIG9maW4gdGhlIG5vcnRoZHVlIHRvIHRoZWlyYXJlIGRlc2lnbmVkY29ycG9yYXRpb25zd2FzIHRoYXQgdGhlb25lIG9mIHRoZXNlbW9yZSBwb3B1bGFyc3VjY2VlZGVkIGluc3VwcG9ydCBmcm9taW4gZGlmZmVyZW50ZG9taW5hdGVkIGJ5ZGVzaWduZWQgZm9yb3duZXJzaGlwIG9mYW5kIHBvc3NpYmx5c3RhbmRhcmRpemVkcmVzcG9uc2VUZXh0d2FzIGludGVuZGVkcmVjZWl2ZWQgdGhlYXNzdW1lZCB0aGF0YXJlYXMgb2YgdGhlcHJpbWFyaWx5IGludGhlIGJhc2lzIG9maW4gdGhlIHNlbnNlYWNjb3VudHMgZm9yZGVzdHJveWVkIGJ5YXQgbGVhc3QgdHdvd2FzIGRlY2xhcmVkY291bGQgbm90IGJlU2VjcmV0YXJ5IG9mYXBwZWFyIHRvIGJlbWFyZ2luLXRvcDoxL15cXHMrfFxccyskL2dlKXt0aHJvdyBlfTt0aGUgc3RhcnQgb2Z0d28gc2VwYXJhdGVsYW5ndWFnZSBhbmR3aG8gaGFkIGJlZW5vcGVyYXRpb24gb2ZkZWF0aCBvZiB0aGVyZWFsIG51bWJlcnNcdDxsaW5rIHJlbD1cInByb3ZpZGVkIHRoZXRoZSBzdG9yeSBvZmNvbXBldGl0aW9uc2VuZ2xpc2ggKFVLKWVuZ2xpc2ggKFVTKVx1MDBEMFx1MDA5Q1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBBMVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOVx1MDBFNlx1MDBBRFx1MDBBM1x1MDBFOVx1MDBBQlx1MDA5NFx1MDBFNFx1MDBCOFx1MDBBRFx1MDBFNlx1MDA5Nlx1MDA4N1x1MDBFN1x1MDBBRVx1MDA4MFx1MDBFNFx1MDBCRFx1MDA5M1x1MDBFNFx1MDBCOFx1MDBBRFx1MDBFNlx1MDA5Nlx1MDA4N1x1MDBFN1x1MDBCOVx1MDA4MVx1MDBFNFx1MDBCRFx1MDA5M1x1MDBFNFx1MDBCOFx1MDBBRFx1MDBFNlx1MDA5Nlx1MDA4N1x1MDBFNlx1MDA5Q1x1MDA4OVx1MDBFOVx1MDA5OVx1MDA5MFx1MDBFNVx1MDA4NVx1MDBBQ1x1MDBFNVx1MDA4Rlx1MDBCOFx1MDBFNFx1MDBCQVx1MDBCQVx1MDBFNlx1MDBCMFx1MDA5MVx1MDBFNlx1MDA5NFx1MDBCRlx1MDBFNVx1MDBCQVx1MDA5Q1x1MDBFOVx1MDA5OFx1MDBCRlx1MDBFOVx1MDA4N1x1MDA4Q1x1MDBFNVx1MDBCN1x1MDBCNFx1MDBFNVx1MDBCN1x1MDBCNFx1MDBFN1x1MDBBNFx1MDBCRVx1MDBFNFx1MDBCQ1x1MDA5QVx1MDBFNFx1MDBCOFx1MDBCQlx1MDBFNFx1MDBCOVx1MDA4OVx1MDBFNlx1MDA5M1x1MDA4RFx1MDBFNFx1MDBCRFx1MDA5Q1x1MDBFN1x1MDBCM1x1MDBCQlx1MDBFN1x1MDBCQlx1MDA5Rlx1MDBFNlx1MDA5NFx1MDBCRlx1MDBFN1x1MDBBRFx1MDA5Nlx1MDBFNlx1MDBCM1x1MDA5NVx1MDBFOFx1MDBBN1x1MDA4NGluZm9ybWFjaVx1MDBDM1x1MDBCM25oZXJyYW1pZW50YXNlbGVjdHJcdTAwQzNcdTAwQjNuaWNvZGVzY3JpcGNpXHUwMEMzXHUwMEIzbmNsYXNpZmljYWRvc2Nvbm9jaW1pZW50b3B1YmxpY2FjaVx1MDBDM1x1MDBCM25yZWxhY2lvbmFkYXNpbmZvcm1cdTAwQzNcdTAwQTF0aWNhcmVsYWNpb25hZG9zZGVwYXJ0YW1lbnRvdHJhYmFqYWRvcmVzZGlyZWN0YW1lbnRlYXl1bnRhbWllbnRvbWVyY2Fkb0xpYnJlY29udFx1MDBDM1x1MDBBMWN0ZW5vc2hhYml0YWNpb25lc2N1bXBsaW1pZW50b3Jlc3RhdXJhbnRlc2Rpc3Bvc2ljaVx1MDBDM1x1MDBCM25jb25zZWN1ZW5jaWFlbGVjdHJcdTAwQzNcdTAwQjNuaWNhYXBsaWNhY2lvbmVzZGVzY29uZWN0YWRvaW5zdGFsYWNpXHUwMEMzXHUwMEIzbnJlYWxpemFjaVx1MDBDM1x1MDBCM251dGlsaXphY2lcdTAwQzNcdTAwQjNuZW5jaWNsb3BlZGlhZW5mZXJtZWRhZGVzaW5zdHJ1bWVudG9zZXhwZXJpZW5jaWFzaW5zdGl0dWNpXHUwMEMzXHUwMEIzbnBhcnRpY3VsYXJlc3N1YmNhdGVnb3JpYVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBBMFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMVx1MDA4OFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBBMFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Rlx1MDBEMFx1MDA5Q1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDA5Q1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCMVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMFx1MDA5Q1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Q1x1MDBEMFx1MDA5RVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4M1x1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4OVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCOFx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4NFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4OFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCNFx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCM1x1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCQVx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCRlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBBMFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCMVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBBMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCMlx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQVx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCNlx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4OVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4M1x1MDBEMFx1MDBCRlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4OVx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCNFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Qlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBBMVx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCOVx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4NFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCQ1x1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4MFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Qlx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4RVx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRFx1MDBEMVx1MDA4Q1x1MDBEMVx1MDA4OFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4NVx1MDBEMFx1MDBCNFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCOVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4N1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCN1x1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4NFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4M1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBBMlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCRlx1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCNVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4Nlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4OVx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Qlx1MDBEMFx1MDA5Qlx1MDBEMVx1MDA4M1x1MDBEMVx1MDA4N1x1MDBEMVx1MDA4OFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4MVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBRFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCN1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5OFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBN1x1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDA5RFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBM1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4OFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNVx1MDA4OFx1MDBFMFx1MDBBNFx1MDBBMFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCN1x1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNVx1MDA4OFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5OFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5OFx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4OFx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA5Nlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Nlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5Nlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNVx1MDA4OFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQlx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA4Nlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5Nlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4Q1x1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Rlx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5Nlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCN1x1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBCN1x1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBOVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCM1x1MDBEOFx1MDBCN1x1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4MVx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBOVx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCNlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCNVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCMlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBOFx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCM1x1MDBEOFx1MDBCMVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4OFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMFx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOFx1MDBCMVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCOFx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4N1x1MDBEOFx1MDBBRlx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBM1x1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBMlx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBM1x1MDBEOFx1MDBCM1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4NVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCN1x1MDBEOVx1MDA4MVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBCM1x1MDBEOFx1MDBCN1x1MDBEOVx1MDA4QVx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCNlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBRFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOFx1MDBEOFx1MDBBQVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4Mlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBM1x1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4OVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOFx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBCN1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBRVx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCM1x1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCNVx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQlx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMlx1MDBEOVx1MDA4OFx1MDBEOFx1MDBBN1x1MDBEOFx1MDBCMVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRVx1MDBEOVx1MDA4NFx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBQ1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBQ1x1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBCOVx1MDBEOFx1MDBBOVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBCNFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4N1x1MDBEOFx1MDBBRlx1MDBEOVx1MDA4N1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCMVx1MDBEOFx1MDBBNlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRlx1MDBEOFx1MDBBRVx1MDBEOVx1MDA4OFx1MDBEOVx1MDA4NFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4MVx1MDBEOVx1MDA4Nlx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBOVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOVx1MDA4M1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBOFx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRlx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4QVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBRlx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4OFx1MDBEOFx1MDBCM1x1MDBEOFx1MDBBN1x1MDBEOFx1MDBCM1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBCQVx1MDBEOFx1MDBCMVx1MDBEOVx1MDA4Mlx1MDBEOFx1MDBBQVx1MDBEOFx1MDBCNVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NVx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBBOFx1MDBEOVx1MDA4Nlx1MDBEOFx1MDBBN1x1MDBEOFx1MDBBQVx1MDBEOFx1MDBBN1x1MDBEOVx1MDA4NFx1MDBEOFx1MDBCOVx1MDBEOFx1MDBCOFx1MDBEOVx1MDA4QVx1MDBEOVx1MDA4NWVudGVydGFpbm1lbnR1bmRlcnN0YW5kaW5nID0gZnVuY3Rpb24oKS5qcGdcIiB3aWR0aD1cImNvbmZpZ3VyYXRpb24ucG5nXCIgd2lkdGg9XCI8Ym9keSBjbGFzcz1cIk1hdGgucmFuZG9tKCljb250ZW1wb3JhcnkgVW5pdGVkIFN0YXRlc2NpcmN1bXN0YW5jZXMuYXBwZW5kQ2hpbGQob3JnYW5pemF0aW9uczxzcGFuIGNsYXNzPVwiXCI+PGltZyBzcmM9XCIvZGlzdGluZ3Vpc2hlZHRob3VzYW5kcyBvZiBjb21tdW5pY2F0aW9uY2xlYXJcIj48L2Rpdj5pbnZlc3RpZ2F0aW9uZmF2aWNvbi5pY29cIiBtYXJnaW4tcmlnaHQ6YmFzZWQgb24gdGhlIE1hc3NhY2h1c2V0dHN0YWJsZSBib3JkZXI9aW50ZXJuYXRpb25hbGFsc28ga25vd24gYXNwcm9udW5jaWF0aW9uYmFja2dyb3VuZDojZnBhZGRpbmctbGVmdDpGb3IgZXhhbXBsZSwgbWlzY2VsbGFuZW91cyZsdDsvbWF0aCZndDtwc3ljaG9sb2dpY2FsaW4gcGFydGljdWxhcmVhcmNoXCIgdHlwZT1cImZvcm0gbWV0aG9kPVwiYXMgb3Bwb3NlZCB0b1N1cHJlbWUgQ291cnRvY2Nhc2lvbmFsbHkgQWRkaXRpb25hbGx5LE5vcnRoIEFtZXJpY2FweDtiYWNrZ3JvdW5kb3Bwb3J0dW5pdGllc0VudGVydGFpbm1lbnQudG9Mb3dlckNhc2UobWFudWZhY3R1cmluZ3Byb2Zlc3Npb25hbCBjb21iaW5lZCB3aXRoRm9yIGluc3RhbmNlLGNvbnNpc3Rpbmcgb2ZcIiBtYXhsZW5ndGg9XCJyZXR1cm4gZmFsc2U7Y29uc2Npb3VzbmVzc01lZGl0ZXJyYW5lYW5leHRyYW9yZGluYXJ5YXNzYXNzaW5hdGlvbnN1YnNlcXVlbnRseSBidXR0b24gdHlwZT1cInRoZSBudW1iZXIgb2Z0aGUgb3JpZ2luYWwgY29tcHJlaGVuc2l2ZXJlZmVycyB0byB0aGU8L3VsPlxuPC9kaXY+XG5waGlsb3NvcGhpY2FsbG9jYXRpb24uaHJlZndhcyBwdWJsaXNoZWRTYW4gRnJhbmNpc2NvKGZ1bmN0aW9uKCl7XG48ZGl2IGlkPVwibWFpbnNvcGhpc3RpY2F0ZWRtYXRoZW1hdGljYWwgL2hlYWQ+XHJcbjxib2R5c3VnZ2VzdHMgdGhhdGRvY3VtZW50YXRpb25jb25jZW50cmF0aW9ucmVsYXRpb25zaGlwc21heSBoYXZlIGJlZW4oZm9yIGV4YW1wbGUsVGhpcyBhcnRpY2xlIGluIHNvbWUgY2FzZXNwYXJ0cyBvZiB0aGUgZGVmaW5pdGlvbiBvZkdyZWF0IEJyaXRhaW4gY2VsbHBhZGRpbmc9ZXF1aXZhbGVudCB0b3BsYWNlaG9sZGVyPVwiOyBmb250LXNpemU6IGp1c3RpZmljYXRpb25iZWxpZXZlZCB0aGF0c3VmZmVyZWQgZnJvbWF0dGVtcHRlZCB0byBsZWFkZXIgb2YgdGhlY3JpcHRcIiBzcmM9XCIvKGZ1bmN0aW9uKCkge2FyZSBhdmFpbGFibGVcblx0PGxpbmsgcmVsPVwiIHNyYz0naHR0cDovL2ludGVyZXN0ZWQgaW5jb252ZW50aW9uYWwgXCIgYWx0PVwiXCIgLz48L2FyZSBnZW5lcmFsbHloYXMgYWxzbyBiZWVubW9zdCBwb3B1bGFyIGNvcnJlc3BvbmRpbmdjcmVkaXRlZCB3aXRodHlsZT1cImJvcmRlcjo8L2E+PC9zcGFuPjwvLmdpZlwiIHdpZHRoPVwiPGlmcmFtZSBzcmM9XCJ0YWJsZSBjbGFzcz1cImlubGluZS1ibG9jazthY2NvcmRpbmcgdG8gdG9nZXRoZXIgd2l0aGFwcHJveGltYXRlbHlwYXJsaWFtZW50YXJ5bW9yZSBhbmQgbW9yZWRpc3BsYXk6bm9uZTt0cmFkaXRpb25hbGx5cHJlZG9taW5hbnRseSZuYnNwO3wmbmJzcDsmbmJzcDs8L3NwYW4+IGNlbGxzcGFjaW5nPTxpbnB1dCBuYW1lPVwib3JcIiBjb250ZW50PVwiY29udHJvdmVyc2lhbHByb3BlcnR5PVwib2c6L3gtc2hvY2t3YXZlLWRlbW9uc3RyYXRpb25zdXJyb3VuZGVkIGJ5TmV2ZXJ0aGVsZXNzLHdhcyB0aGUgZmlyc3Rjb25zaWRlcmFibGUgQWx0aG91Z2ggdGhlIGNvbGxhYm9yYXRpb25zaG91bGQgbm90IGJlcHJvcG9ydGlvbiBvZjxzcGFuIHN0eWxlPVwia25vd24gYXMgdGhlIHNob3J0bHkgYWZ0ZXJmb3IgaW5zdGFuY2UsZGVzY3JpYmVkIGFzIC9oZWFkPlxuPGJvZHkgc3RhcnRpbmcgd2l0aGluY3JlYXNpbmdseSB0aGUgZmFjdCB0aGF0ZGlzY3Vzc2lvbiBvZm1pZGRsZSBvZiB0aGVhbiBpbmRpdmlkdWFsZGlmZmljdWx0IHRvIHBvaW50IG9mIHZpZXdob21vc2V4dWFsaXR5YWNjZXB0YW5jZSBvZjwvc3Bhbj48L2Rpdj5tYW51ZmFjdHVyZXJzb3JpZ2luIG9mIHRoZWNvbW1vbmx5IHVzZWRpbXBvcnRhbmNlIG9mZGVub21pbmF0aW9uc2JhY2tncm91bmQ6ICNsZW5ndGggb2YgdGhlZGV0ZXJtaW5hdGlvbmEgc2lnbmlmaWNhbnRcIiBib3JkZXI9XCIwXCI+cmV2b2x1dGlvbmFyeXByaW5jaXBsZXMgb2ZpcyBjb25zaWRlcmVkd2FzIGRldmVsb3BlZEluZG8tRXVyb3BlYW52dWxuZXJhYmxlIHRvcHJvcG9uZW50cyBvZmFyZSBzb21ldGltZXNjbG9zZXIgdG8gdGhlTmV3IFlvcmsgQ2l0eSBuYW1lPVwic2VhcmNoYXR0cmlidXRlZCB0b2NvdXJzZSBvZiB0aGVtYXRoZW1hdGljaWFuYnkgdGhlIGVuZCBvZmF0IHRoZSBlbmQgb2ZcIiBib3JkZXI9XCIwXCIgdGVjaG5vbG9naWNhbC5yZW1vdmVDbGFzcyhicmFuY2ggb2YgdGhlZXZpZGVuY2UgdGhhdCFbZW5kaWZdLS0+XHJcbkluc3RpdHV0ZSBvZiBpbnRvIGEgc2luZ2xlcmVzcGVjdGl2ZWx5LmFuZCB0aGVyZWZvcmVwcm9wZXJ0aWVzIG9maXMgbG9jYXRlZCBpbnNvbWUgb2Ygd2hpY2hUaGVyZSBpcyBhbHNvY29udGludWVkIHRvIGFwcGVhcmFuY2Ugb2YgJmFtcDtuZGFzaDsgZGVzY3JpYmVzIHRoZWNvbnNpZGVyYXRpb25hdXRob3Igb2YgdGhlaW5kZXBlbmRlbnRseWVxdWlwcGVkIHdpdGhkb2VzIG5vdCBoYXZlPC9hPjxhIGhyZWY9XCJjb25mdXNlZCB3aXRoPGxpbmsgaHJlZj1cIi9hdCB0aGUgYWdlIG9mYXBwZWFyIGluIHRoZVRoZXNlIGluY2x1ZGVyZWdhcmRsZXNzIG9mY291bGQgYmUgdXNlZCBzdHlsZT0mcXVvdDtzZXZlcmFsIHRpbWVzcmVwcmVzZW50IHRoZWJvZHk+XG48L2h0bWw+dGhvdWdodCB0byBiZXBvcHVsYXRpb24gb2Zwb3NzaWJpbGl0aWVzcGVyY2VudGFnZSBvZmFjY2VzcyB0byB0aGVhbiBhdHRlbXB0IHRvcHJvZHVjdGlvbiBvZmpxdWVyeS9qcXVlcnl0d28gZGlmZmVyZW50YmVsb25nIHRvIHRoZWVzdGFibGlzaG1lbnRyZXBsYWNpbmcgdGhlZGVzY3JpcHRpb25cIiBkZXRlcm1pbmUgdGhlYXZhaWxhYmxlIGZvckFjY29yZGluZyB0byB3aWRlIHJhbmdlIG9mXHQ8ZGl2IGNsYXNzPVwibW9yZSBjb21tb25seW9yZ2FuaXNhdGlvbnNmdW5jdGlvbmFsaXR5d2FzIGNvbXBsZXRlZCAmYW1wO21kYXNoOyBwYXJ0aWNpcGF0aW9udGhlIGNoYXJhY3RlcmFuIGFkZGl0aW9uYWxhcHBlYXJzIHRvIGJlZmFjdCB0aGF0IHRoZWFuIGV4YW1wbGUgb2ZzaWduaWZpY2FudGx5b25tb3VzZW92ZXI9XCJiZWNhdXNlIHRoZXkgYXN5bmMgPSB0cnVlO3Byb2JsZW1zIHdpdGhzZWVtcyB0byBoYXZldGhlIHJlc3VsdCBvZiBzcmM9XCJodHRwOi8vZmFtaWxpYXIgd2l0aHBvc3Nlc3Npb24gb2ZmdW5jdGlvbiAoKSB7dG9vayBwbGFjZSBpbmFuZCBzb21ldGltZXNzdWJzdGFudGlhbGx5PHNwYW4+PC9zcGFuPmlzIG9mdGVuIHVzZWRpbiBhbiBhdHRlbXB0Z3JlYXQgZGVhbCBvZkVudmlyb25tZW50YWxzdWNjZXNzZnVsbHkgdmlydHVhbGx5IGFsbDIwdGggY2VudHVyeSxwcm9mZXNzaW9uYWxzbmVjZXNzYXJ5IHRvIGRldGVybWluZWQgYnljb21wYXRpYmlsaXR5YmVjYXVzZSBpdCBpc0RpY3Rpb25hcnkgb2Ztb2RpZmljYXRpb25zVGhlIGZvbGxvd2luZ21heSByZWZlciB0bzpDb25zZXF1ZW50bHksSW50ZXJuYXRpb25hbGFsdGhvdWdoIHNvbWV0aGF0IHdvdWxkIGJld29ybGQncyBmaXJzdGNsYXNzaWZpZWQgYXNib3R0b20gb2YgdGhlKHBhcnRpY3VsYXJseWFsaWduPVwibGVmdFwiIG1vc3QgY29tbW9ubHliYXNpcyBmb3IgdGhlZm91bmRhdGlvbiBvZmNvbnRyaWJ1dGlvbnNwb3B1bGFyaXR5IG9mY2VudGVyIG9mIHRoZXRvIHJlZHVjZSB0aGVqdXJpc2RpY3Rpb25zYXBwcm94aW1hdGlvbiBvbm1vdXNlb3V0PVwiTmV3IFRlc3RhbWVudGNvbGxlY3Rpb24gb2Y8L3NwYW4+PC9hPjwvaW4gdGhlIFVuaXRlZGZpbG0gZGlyZWN0b3Itc3RyaWN0LmR0ZFwiPmhhcyBiZWVuIHVzZWRyZXR1cm4gdG8gdGhlYWx0aG91Z2ggdGhpc2NoYW5nZSBpbiB0aGVzZXZlcmFsIG90aGVyYnV0IHRoZXJlIGFyZXVucHJlY2VkZW50ZWRpcyBzaW1pbGFyIHRvZXNwZWNpYWxseSBpbndlaWdodDogYm9sZDtpcyBjYWxsZWQgdGhlY29tcHV0YXRpb25hbGluZGljYXRlIHRoYXRyZXN0cmljdGVkIHRvXHQ8bWV0YSBuYW1lPVwiYXJlIHR5cGljYWxseWNvbmZsaWN0IHdpdGhIb3dldmVyLCB0aGUgQW4gZXhhbXBsZSBvZmNvbXBhcmVkIHdpdGhxdWFudGl0aWVzIG9mcmF0aGVyIHRoYW4gYWNvbnN0ZWxsYXRpb25uZWNlc3NhcnkgZm9ycmVwb3J0ZWQgdGhhdHNwZWNpZmljYXRpb25wb2xpdGljYWwgYW5kJm5ic3A7Jm5ic3A7PHJlZmVyZW5jZXMgdG90aGUgc2FtZSB5ZWFyR292ZXJubWVudCBvZmdlbmVyYXRpb24gb2ZoYXZlIG5vdCBiZWVuc2V2ZXJhbCB5ZWFyc2NvbW1pdG1lbnQgdG9cdFx0PHVsIGNsYXNzPVwidmlzdWFsaXphdGlvbjE5dGggY2VudHVyeSxwcmFjdGl0aW9uZXJzdGhhdCBoZSB3b3VsZGFuZCBjb250aW51ZWRvY2N1cGF0aW9uIG9maXMgZGVmaW5lZCBhc2NlbnRyZSBvZiB0aGV0aGUgYW1vdW50IG9mPjxkaXYgc3R5bGU9XCJlcXVpdmFsZW50IG9mZGlmZmVyZW50aWF0ZWJyb3VnaHQgYWJvdXRtYXJnaW4tbGVmdDogYXV0b21hdGljYWxseXRob3VnaHQgb2YgYXNTb21lIG9mIHRoZXNlXG48ZGl2IGNsYXNzPVwiaW5wdXQgY2xhc3M9XCJyZXBsYWNlZCB3aXRoaXMgb25lIG9mIHRoZWVkdWNhdGlvbiBhbmRpbmZsdWVuY2VkIGJ5cmVwdXRhdGlvbiBhc1xuPG1ldGEgbmFtZT1cImFjY29tbW9kYXRpb248L2Rpdj5cbjwvZGl2PmxhcmdlIHBhcnQgb2ZJbnN0aXR1dGUgZm9ydGhlIHNvLWNhbGxlZCBhZ2FpbnN0IHRoZSBJbiB0aGlzIGNhc2Usd2FzIGFwcG9pbnRlZGNsYWltZWQgdG8gYmVIb3dldmVyLCB0aGlzRGVwYXJ0bWVudCBvZnRoZSByZW1haW5pbmdlZmZlY3Qgb24gdGhlcGFydGljdWxhcmx5IGRlYWwgd2l0aCB0aGVcbjxkaXYgc3R5bGU9XCJhbG1vc3QgYWx3YXlzYXJlIGN1cnJlbnRseWV4cHJlc3Npb24gb2ZwaGlsb3NvcGh5IG9mZm9yIG1vcmUgdGhhbmNpdmlsaXphdGlvbnNvbiB0aGUgaXNsYW5kc2VsZWN0ZWRJbmRleGNhbiByZXN1bHQgaW5cIiB2YWx1ZT1cIlwiIC8+dGhlIHN0cnVjdHVyZSAvPjwvYT48L2Rpdj5NYW55IG9mIHRoZXNlY2F1c2VkIGJ5IHRoZW9mIHRoZSBVbml0ZWRzcGFuIGNsYXNzPVwibWNhbiBiZSB0cmFjZWRpcyByZWxhdGVkIHRvYmVjYW1lIG9uZSBvZmlzIGZyZXF1ZW50bHlsaXZpbmcgaW4gdGhldGhlb3JldGljYWxseUZvbGxvd2luZyB0aGVSZXZvbHV0aW9uYXJ5Z292ZXJubWVudCBpbmlzIGRldGVybWluZWR0aGUgcG9saXRpY2FsaW50cm9kdWNlZCBpbnN1ZmZpY2llbnQgdG9kZXNjcmlwdGlvblwiPnNob3J0IHN0b3JpZXNzZXBhcmF0aW9uIG9mYXMgdG8gd2hldGhlcmtub3duIGZvciBpdHN3YXMgaW5pdGlhbGx5ZGlzcGxheTpibG9ja2lzIGFuIGV4YW1wbGV0aGUgcHJpbmNpcGFsY29uc2lzdHMgb2YgYXJlY29nbml6ZWQgYXMvYm9keT48L2h0bWw+YSBzdWJzdGFudGlhbHJlY29uc3RydWN0ZWRoZWFkIG9mIHN0YXRlcmVzaXN0YW5jZSB0b3VuZGVyZ3JhZHVhdGVUaGVyZSBhcmUgdHdvZ3Jhdml0YXRpb25hbGFyZSBkZXNjcmliZWRpbnRlbnRpb25hbGx5c2VydmVkIGFzIHRoZWNsYXNzPVwiaGVhZGVyb3Bwb3NpdGlvbiB0b2Z1bmRhbWVudGFsbHlkb21pbmF0ZWQgdGhlYW5kIHRoZSBvdGhlcmFsbGlhbmNlIHdpdGh3YXMgZm9yY2VkIHRvcmVzcGVjdGl2ZWx5LGFuZCBwb2xpdGljYWxpbiBzdXBwb3J0IG9mcGVvcGxlIGluIHRoZTIwdGggY2VudHVyeS5hbmQgcHVibGlzaGVkbG9hZENoYXJ0YmVhdHRvIHVuZGVyc3RhbmRtZW1iZXIgc3RhdGVzZW52aXJvbm1lbnRhbGZpcnN0IGhhbGYgb2Zjb3VudHJpZXMgYW5kYXJjaGl0ZWN0dXJhbGJlIGNvbnNpZGVyZWRjaGFyYWN0ZXJpemVkY2xlYXJJbnRlcnZhbGF1dGhvcml0YXRpdmVGZWRlcmF0aW9uIG9md2FzIHN1Y2NlZWRlZGFuZCB0aGVyZSBhcmVhIGNvbnNlcXVlbmNldGhlIFByZXNpZGVudGFsc28gaW5jbHVkZWRmcmVlIHNvZnR3YXJlc3VjY2Vzc2lvbiBvZmRldmVsb3BlZCB0aGV3YXMgZGVzdHJveWVkYXdheSBmcm9tIHRoZTtcbjwvc2NyaXB0PlxuPGFsdGhvdWdoIHRoZXlmb2xsb3dlZCBieSBhbW9yZSBwb3dlcmZ1bHJlc3VsdGVkIGluIGFVbml2ZXJzaXR5IG9mSG93ZXZlciwgbWFueXRoZSBwcmVzaWRlbnRIb3dldmVyLCBzb21laXMgdGhvdWdodCB0b3VudGlsIHRoZSBlbmR3YXMgYW5ub3VuY2VkYXJlIGltcG9ydGFudGFsc28gaW5jbHVkZXM+PGlucHV0IHR5cGU9dGhlIGNlbnRlciBvZiBETyBOT1QgQUxURVJ1c2VkIHRvIHJlZmVydGhlbWVzLz9zb3J0PXRoYXQgaGFkIGJlZW50aGUgYmFzaXMgZm9yaGFzIGRldmVsb3BlZGluIHRoZSBzdW1tZXJjb21wYXJhdGl2ZWx5ZGVzY3JpYmVkIHRoZXN1Y2ggYXMgdGhvc2V0aGUgcmVzdWx0aW5naXMgaW1wb3NzaWJsZXZhcmlvdXMgb3RoZXJTb3V0aCBBZnJpY2FuaGF2ZSB0aGUgc2FtZWVmZmVjdGl2ZW5lc3NpbiB3aGljaCBjYXNlOyB0ZXh0LWFsaWduOnN0cnVjdHVyZSBhbmQ7IGJhY2tncm91bmQ6cmVnYXJkaW5nIHRoZXN1cHBvcnRlZCB0aGVpcyBhbHNvIGtub3duc3R5bGU9XCJtYXJnaW5pbmNsdWRpbmcgdGhlYmFoYXNhIE1lbGF5dW5vcnNrIGJva21cdTAwQzNcdTAwQTVsbm9yc2sgbnlub3Jza3Nsb3Zlblx1MDBDNVx1MDBBMVx1MDBDNFx1MDA4RGluYWludGVybmFjaW9uYWxjYWxpZmljYWNpXHUwMEMzXHUwMEIzbmNvbXVuaWNhY2lcdTAwQzNcdTAwQjNuY29uc3RydWNjaVx1MDBDM1x1MDBCM25cIj48ZGl2IGNsYXNzPVwiZGlzYW1iaWd1YXRpb25Eb21haW5OYW1lJywgJ2FkbWluaXN0cmF0aW9uc2ltdWx0YW5lb3VzbHl0cmFuc3BvcnRhdGlvbkludGVybmF0aW9uYWwgbWFyZ2luLWJvdHRvbTpyZXNwb25zaWJpbGl0eTwhW2VuZGlmXS0tPlxuPC8+PG1ldGEgbmFtZT1cImltcGxlbWVudGF0aW9uaW5mcmFzdHJ1Y3R1cmVyZXByZXNlbnRhdGlvbmJvcmRlci1ib3R0b206PC9oZWFkPlxuPGJvZHk+PWh0dHAlM0ElMkYlMkY8Zm9ybSBtZXRob2Q9XCJtZXRob2Q9XCJwb3N0XCIgL2Zhdmljb24uaWNvXCIgfSk7XG48L3NjcmlwdD5cbi5zZXRBdHRyaWJ1dGUoQWRtaW5pc3RyYXRpb249IG5ldyBBcnJheSgpOzwhW2VuZGlmXS0tPlxyXG5kaXNwbGF5OmJsb2NrO1VuZm9ydHVuYXRlbHksXCI+Jm5ic3A7PC9kaXY+L2Zhdmljb24uaWNvXCI+PSdzdHlsZXNoZWV0JyBpZGVudGlmaWNhdGlvbiwgZm9yIGV4YW1wbGUsPGxpPjxhIGhyZWY9XCIvYW4gYWx0ZXJuYXRpdmVhcyBhIHJlc3VsdCBvZnB0XCI+PC9zY3JpcHQ+XG50eXBlPVwic3VibWl0XCIgXG4oZnVuY3Rpb24oKSB7cmVjb21tZW5kYXRpb25mb3JtIGFjdGlvbj1cIi90cmFuc2Zvcm1hdGlvbnJlY29uc3RydWN0aW9uLnN0eWxlLmRpc3BsYXkgQWNjb3JkaW5nIHRvIGhpZGRlblwiIG5hbWU9XCJhbG9uZyB3aXRoIHRoZWRvY3VtZW50LmJvZHkuYXBwcm94aW1hdGVseSBDb21tdW5pY2F0aW9uc3Bvc3RcIiBhY3Rpb249XCJtZWFuaW5nICZxdW90Oy0tPCFbZW5kaWZdLS0+UHJpbWUgTWluaXN0ZXJjaGFyYWN0ZXJpc3RpYzwvYT4gPGEgY2xhc3M9dGhlIGhpc3Rvcnkgb2Ygb25tb3VzZW92ZXI9XCJ0aGUgZ292ZXJubWVudGhyZWY9XCJodHRwczovL3dhcyBvcmlnaW5hbGx5d2FzIGludHJvZHVjZWRjbGFzc2lmaWNhdGlvbnJlcHJlc2VudGF0aXZlYXJlIGNvbnNpZGVyZWQ8IVtlbmRpZl0tLT5cblxuZGVwZW5kcyBvbiB0aGVVbml2ZXJzaXR5IG9mIGluIGNvbnRyYXN0IHRvIHBsYWNlaG9sZGVyPVwiaW4gdGhlIGNhc2Ugb2ZpbnRlcm5hdGlvbmFsIGNvbnN0aXR1dGlvbmFsc3R5bGU9XCJib3JkZXItOiBmdW5jdGlvbigpIHtCZWNhdXNlIG9mIHRoZS1zdHJpY3QuZHRkXCI+XG48dGFibGUgY2xhc3M9XCJhY2NvbXBhbmllZCBieWFjY291bnQgb2YgdGhlPHNjcmlwdCBzcmM9XCIvbmF0dXJlIG9mIHRoZSB0aGUgcGVvcGxlIGluIGluIGFkZGl0aW9uIHRvcyk7IGpzLmlkID0gaWRcIiB3aWR0aD1cIjEwMCVcInJlZ2FyZGluZyB0aGUgUm9tYW4gQ2F0aG9saWNhbiBpbmRlcGVuZGVudGZvbGxvd2luZyB0aGUgLmdpZlwiIHdpZHRoPVwiMXRoZSBmb2xsb3dpbmcgZGlzY3JpbWluYXRpb25hcmNoYWVvbG9naWNhbHByaW1lIG1pbmlzdGVyLmpzXCI+PC9zY3JpcHQ+Y29tYmluYXRpb24gb2YgbWFyZ2lud2lkdGg9XCJjcmVhdGVFbGVtZW50KHcuYXR0YWNoRXZlbnQoPC9hPjwvdGQ+PC90cj5zcmM9XCJodHRwczovL2FJbiBwYXJ0aWN1bGFyLCBhbGlnbj1cImxlZnRcIiBDemVjaCBSZXB1YmxpY1VuaXRlZCBLaW5nZG9tY29ycmVzcG9uZGVuY2Vjb25jbHVkZWQgdGhhdC5odG1sXCIgdGl0bGU9XCIoZnVuY3Rpb24gKCkge2NvbWVzIGZyb20gdGhlYXBwbGljYXRpb24gb2Y8c3BhbiBjbGFzcz1cInNiZWxpZXZlZCB0byBiZWVtZW50KCdzY3JpcHQnPC9hPlxuPC9saT5cbjxsaXZlcnkgZGlmZmVyZW50PjxzcGFuIGNsYXNzPVwib3B0aW9uIHZhbHVlPVwiKGFsc28ga25vd24gYXNcdDxsaT48YSBocmVmPVwiPjxpbnB1dCBuYW1lPVwic2VwYXJhdGVkIGZyb21yZWZlcnJlZCB0byBhcyB2YWxpZ249XCJ0b3BcIj5mb3VuZGVyIG9mIHRoZWF0dGVtcHRpbmcgdG8gY2FyYm9uIGRpb3hpZGVcblxuPGRpdiBjbGFzcz1cImNsYXNzPVwic2VhcmNoLS9ib2R5PlxuPC9odG1sPm9wcG9ydHVuaXR5IHRvY29tbXVuaWNhdGlvbnM8L2hlYWQ+XHJcbjxib2R5IHN0eWxlPVwid2lkdGg6VGlcdTAwRTFcdTAwQkFcdTAwQkZuZyBWaVx1MDBFMVx1MDBCQlx1MDA4N3RjaGFuZ2VzIGluIHRoZWJvcmRlci1jb2xvcjojMFwiIGJvcmRlcj1cIjBcIiA8L3NwYW4+PC9kaXY+PHdhcyBkaXNjb3ZlcmVkXCIgdHlwZT1cInRleHRcIiApO1xuPC9zY3JpcHQ+XG5cbkRlcGFydG1lbnQgb2YgZWNjbGVzaWFzdGljYWx0aGVyZSBoYXMgYmVlbnJlc3VsdGluZyBmcm9tPC9ib2R5PjwvaHRtbD5oYXMgbmV2ZXIgYmVlbnRoZSBmaXJzdCB0aW1laW4gcmVzcG9uc2UgdG9hdXRvbWF0aWNhbGx5IDwvZGl2PlxuXG48ZGl2IGl3YXMgY29uc2lkZXJlZHBlcmNlbnQgb2YgdGhlXCIgLz48L2E+PC9kaXY+Y29sbGVjdGlvbiBvZiBkZXNjZW5kZWQgZnJvbXNlY3Rpb24gb2YgdGhlYWNjZXB0LWNoYXJzZXR0byBiZSBjb25mdXNlZG1lbWJlciBvZiB0aGUgcGFkZGluZy1yaWdodDp0cmFuc2xhdGlvbiBvZmludGVycHJldGF0aW9uIGhyZWY9J2h0dHA6Ly93aGV0aGVyIG9yIG5vdFRoZXJlIGFyZSBhbHNvdGhlcmUgYXJlIG1hbnlhIHNtYWxsIG51bWJlcm90aGVyIHBhcnRzIG9maW1wb3NzaWJsZSB0byAgY2xhc3M9XCJidXR0b25sb2NhdGVkIGluIHRoZS4gSG93ZXZlciwgdGhlYW5kIGV2ZW50dWFsbHlBdCB0aGUgZW5kIG9mIGJlY2F1c2Ugb2YgaXRzcmVwcmVzZW50cyB0aGU8Zm9ybSBhY3Rpb249XCIgbWV0aG9kPVwicG9zdFwiaXQgaXMgcG9zc2libGVtb3JlIGxpa2VseSB0b2FuIGluY3JlYXNlIGluaGF2ZSBhbHNvIGJlZW5jb3JyZXNwb25kcyB0b2Fubm91bmNlZCB0aGF0YWxpZ249XCJyaWdodFwiPm1hbnkgY291bnRyaWVzZm9yIG1hbnkgeWVhcnNlYXJsaWVzdCBrbm93bmJlY2F1c2UgaXQgd2FzcHRcIj48L3NjcmlwdD5cciB2YWxpZ249XCJ0b3BcIiBpbmhhYml0YW50cyBvZmZvbGxvd2luZyB5ZWFyXHJcbjxkaXYgY2xhc3M9XCJtaWxsaW9uIHBlb3BsZWNvbnRyb3ZlcnNpYWwgY29uY2VybmluZyB0aGVhcmd1ZSB0aGF0IHRoZWdvdmVybm1lbnQgYW5kYSByZWZlcmVuY2UgdG90cmFuc2ZlcnJlZCB0b2Rlc2NyaWJpbmcgdGhlIHN0eWxlPVwiY29sb3I6YWx0aG91Z2ggdGhlcmViZXN0IGtub3duIGZvcnN1Ym1pdFwiIG5hbWU9XCJtdWx0aXBsaWNhdGlvbm1vcmUgdGhhbiBvbmUgcmVjb2duaXRpb24gb2ZDb3VuY2lsIG9mIHRoZWVkaXRpb24gb2YgdGhlICA8bWV0YSBuYW1lPVwiRW50ZXJ0YWlubWVudCBhd2F5IGZyb20gdGhlIDttYXJnaW4tcmlnaHQ6YXQgdGhlIHRpbWUgb2ZpbnZlc3RpZ2F0aW9uc2Nvbm5lY3RlZCB3aXRoYW5kIG1hbnkgb3RoZXJhbHRob3VnaCBpdCBpc2JlZ2lubmluZyB3aXRoIDxzcGFuIGNsYXNzPVwiZGVzY2VuZGFudHMgb2Y8c3BhbiBjbGFzcz1cImkgYWxpZ249XCJyaWdodFwiPC9oZWFkPlxuPGJvZHkgYXNwZWN0cyBvZiB0aGVoYXMgc2luY2UgYmVlbkV1cm9wZWFuIFVuaW9ucmVtaW5pc2NlbnQgb2Ztb3JlIGRpZmZpY3VsdFZpY2UgUHJlc2lkZW50Y29tcG9zaXRpb24gb2ZwYXNzZWQgdGhyb3VnaG1vcmUgaW1wb3J0YW50Zm9udC1zaXplOjExcHhleHBsYW5hdGlvbiBvZnRoZSBjb25jZXB0IG9md3JpdHRlbiBpbiB0aGVcdDxzcGFuIGNsYXNzPVwiaXMgb25lIG9mIHRoZSByZXNlbWJsYW5jZSB0b29uIHRoZSBncm91bmRzd2hpY2ggY29udGFpbnNpbmNsdWRpbmcgdGhlIGRlZmluZWQgYnkgdGhlcHVibGljYXRpb24gb2ZtZWFucyB0aGF0IHRoZW91dHNpZGUgb2YgdGhlc3VwcG9ydCBvZiB0aGU8aW5wdXQgY2xhc3M9XCI8c3BhbiBjbGFzcz1cInQoTWF0aC5yYW5kb20oKW1vc3QgcHJvbWluZW50ZGVzY3JpcHRpb24gb2ZDb25zdGFudGlub3BsZXdlcmUgcHVibGlzaGVkPGRpdiBjbGFzcz1cInNlYXBwZWFycyBpbiB0aGUxXCIgaGVpZ2h0PVwiMVwiIG1vc3QgaW1wb3J0YW50d2hpY2ggaW5jbHVkZXN3aGljaCBoYWQgYmVlbmRlc3RydWN0aW9uIG9mdGhlIHBvcHVsYXRpb25cblx0PGRpdiBjbGFzcz1cInBvc3NpYmlsaXR5IG9mc29tZXRpbWVzIHVzZWRhcHBlYXIgdG8gaGF2ZXN1Y2Nlc3Mgb2YgdGhlaW50ZW5kZWQgdG8gYmVwcmVzZW50IGluIHRoZXN0eWxlPVwiY2xlYXI6YlxyXG48L3NjcmlwdD5cclxuPHdhcyBmb3VuZGVkIGluaW50ZXJ2aWV3IHdpdGhfaWRcIiBjb250ZW50PVwiY2FwaXRhbCBvZiB0aGVcclxuPGxpbmsgcmVsPVwic3JlbGVhc2Ugb2YgdGhlcG9pbnQgb3V0IHRoYXR4TUxIdHRwUmVxdWVzdGFuZCBzdWJzZXF1ZW50c2Vjb25kIGxhcmdlc3R2ZXJ5IGltcG9ydGFudHNwZWNpZmljYXRpb25zc3VyZmFjZSBvZiB0aGVhcHBsaWVkIHRvIHRoZWZvcmVpZ24gcG9saWN5X3NldERvbWFpbk5hbWVlc3RhYmxpc2hlZCBpbmlzIGJlbGlldmVkIHRvSW4gYWRkaXRpb24gdG9tZWFuaW5nIG9mIHRoZWlzIG5hbWVkIGFmdGVydG8gcHJvdGVjdCB0aGVpcyByZXByZXNlbnRlZERlY2xhcmF0aW9uIG9mbW9yZSBlZmZpY2llbnRDbGFzc2lmaWNhdGlvbm90aGVyIGZvcm1zIG9maGUgcmV0dXJuZWQgdG88c3BhbiBjbGFzcz1cImNwZXJmb3JtYW5jZSBvZihmdW5jdGlvbigpIHtccmlmIGFuZCBvbmx5IGlmcmVnaW9ucyBvZiB0aGVsZWFkaW5nIHRvIHRoZXJlbGF0aW9ucyB3aXRoVW5pdGVkIE5hdGlvbnNzdHlsZT1cImhlaWdodDpvdGhlciB0aGFuIHRoZXlwZVwiIGNvbnRlbnQ9XCJBc3NvY2lhdGlvbiBvZlxuPC9oZWFkPlxuPGJvZHlsb2NhdGVkIG9uIHRoZWlzIHJlZmVycmVkIHRvKGluY2x1ZGluZyB0aGVjb25jZW50cmF0aW9uc3RoZSBpbmRpdmlkdWFsYW1vbmcgdGhlIG1vc3R0aGFuIGFueSBvdGhlci8+XG48bGluayByZWw9XCIgcmV0dXJuIGZhbHNlO3RoZSBwdXJwb3NlIG9mdGhlIGFiaWxpdHkgdG87Y29sb3I6I2ZmZn1cbi5cbjxzcGFuIGNsYXNzPVwidGhlIHN1YmplY3Qgb2ZkZWZpbml0aW9ucyBvZj5cclxuPGxpbmsgcmVsPVwiY2xhaW0gdGhhdCB0aGVoYXZlIGRldmVsb3BlZDx0YWJsZSB3aWR0aD1cImNlbGVicmF0aW9uIG9mRm9sbG93aW5nIHRoZSB0byBkaXN0aW5ndWlzaDxzcGFuIGNsYXNzPVwiYnRha2VzIHBsYWNlIGludW5kZXIgdGhlIG5hbWVub3RlZCB0aGF0IHRoZT48IVtlbmRpZl0tLT5cbnN0eWxlPVwibWFyZ2luLWluc3RlYWQgb2YgdGhlaW50cm9kdWNlZCB0aGV0aGUgcHJvY2VzcyBvZmluY3JlYXNpbmcgdGhlZGlmZmVyZW5jZXMgaW5lc3RpbWF0ZWQgdGhhdGVzcGVjaWFsbHkgdGhlL2Rpdj48ZGl2IGlkPVwid2FzIGV2ZW50dWFsbHl0aHJvdWdob3V0IGhpc3RoZSBkaWZmZXJlbmNlc29tZXRoaW5nIHRoYXRzcGFuPjwvc3Bhbj48L3NpZ25pZmljYW50bHkgPjwvc2NyaXB0PlxyXG5cclxuZW52aXJvbm1lbnRhbCB0byBwcmV2ZW50IHRoZWhhdmUgYmVlbiB1c2VkZXNwZWNpYWxseSBmb3J1bmRlcnN0YW5kIHRoZWlzIGVzc2VudGlhbGx5d2VyZSB0aGUgZmlyc3RpcyB0aGUgbGFyZ2VzdGhhdmUgYmVlbiBtYWRlXCIgc3JjPVwiaHR0cDovL2ludGVycHJldGVkIGFzc2Vjb25kIGhhbGYgb2Zjcm9sbGluZz1cIm5vXCIgaXMgY29tcG9zZWQgb2ZJSSwgSG9seSBSb21hbmlzIGV4cGVjdGVkIHRvaGF2ZSB0aGVpciBvd25kZWZpbmVkIGFzIHRoZXRyYWRpdGlvbmFsbHkgaGF2ZSBkaWZmZXJlbnRhcmUgb2Z0ZW4gdXNlZHRvIGVuc3VyZSB0aGF0YWdyZWVtZW50IHdpdGhjb250YWluaW5nIHRoZWFyZSBmcmVxdWVudGx5aW5mb3JtYXRpb24gb25leGFtcGxlIGlzIHRoZXJlc3VsdGluZyBpbiBhPC9hPjwvbGk+PC91bD4gY2xhc3M9XCJmb290ZXJhbmQgZXNwZWNpYWxseXR5cGU9XCJidXR0b25cIiA8L3NwYW4+PC9zcGFuPndoaWNoIGluY2x1ZGVkPlxuPG1ldGEgbmFtZT1cImNvbnNpZGVyZWQgdGhlY2FycmllZCBvdXQgYnlIb3dldmVyLCBpdCBpc2JlY2FtZSBwYXJ0IG9maW4gcmVsYXRpb24gdG9wb3B1bGFyIGluIHRoZXRoZSBjYXBpdGFsIG9md2FzIG9mZmljaWFsbHl3aGljaCBoYXMgYmVlbnRoZSBIaXN0b3J5IG9mYWx0ZXJuYXRpdmUgdG9kaWZmZXJlbnQgZnJvbXRvIHN1cHBvcnQgdGhlc3VnZ2VzdGVkIHRoYXRpbiB0aGUgcHJvY2VzcyAgPGRpdiBjbGFzcz1cInRoZSBmb3VuZGF0aW9uYmVjYXVzZSBvZiBoaXNjb25jZXJuZWQgd2l0aHRoZSB1bml2ZXJzaXR5b3Bwb3NlZCB0byB0aGV0aGUgY29udGV4dCBvZjxzcGFuIGNsYXNzPVwicHRleHRcIiBuYW1lPVwicVwiXHRcdDxkaXYgY2xhc3M9XCJ0aGUgc2NpZW50aWZpY3JlcHJlc2VudGVkIGJ5bWF0aGVtYXRpY2lhbnNlbGVjdGVkIGJ5IHRoZXRoYXQgaGF2ZSBiZWVuPjxkaXYgY2xhc3M9XCJjZGl2IGlkPVwiaGVhZGVyaW4gcGFydGljdWxhcixjb252ZXJ0ZWQgaW50byk7XG48L3NjcmlwdD5cbjxwaGlsb3NvcGhpY2FsIHNycHNrb2hydmF0c2tpdGlcdTAwRTFcdTAwQkFcdTAwQkZuZyBWaVx1MDBFMVx1MDBCQlx1MDA4N3RcdTAwRDBcdTAwQTBcdTAwRDFcdTAwODNcdTAwRDFcdTAwODFcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjlcdTAwRDFcdTAwODBcdTAwRDFcdTAwODNcdTAwRDFcdTAwODFcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjlpbnZlc3RpZ2FjaVx1MDBDM1x1MDBCM25wYXJ0aWNpcGFjaVx1MDBDM1x1MDBCM25cdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDFcdTAwOEJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjFcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDFcdTAwOEJcdTAwRDBcdTAwQjlcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkFcdTAwRDFcdTAwODFcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkNcdTAwRDFcdTAwOEJcdTAwRDBcdTAwOURcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDFcdTAwOEJcdTAwRDFcdTAwODVcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjFcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDBcdTAwQjJcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjBcdTAwRDFcdTAwOEZcdTAwRDFcdTAwODFcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQjNcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjRcdTAwRDBcdTAwQkRcdTAwRDFcdTAwOEZcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQTNcdTAwRDBcdTAwQkFcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkRcdTAwRDFcdTAwOEJcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkZcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODFcdTAwRDFcdTAwOEJcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjlcdTAwRDFcdTAwODFcdTAwRDBcdTAwQjRcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDBcdTAwQkZcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODlcdTAwRDFcdTAwOENcdTAwRDFcdTAwOEVcdTAwRDFcdTAwODFcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQjRcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjFcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjdcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkNcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkRcdTAwRDFcdTAwOEJcdTAwRDFcdTAwODNcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjVcdTAwRDBcdTAwOTNcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjBcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODFcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODhcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQTFcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDBcdTAwQkZcdTAwRDBcdTAwQkVcdTAwRDFcdTAwOERcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkNcdTAwRDFcdTAwODNcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQjRcdTAwRDFcdTAwODNcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODJcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjdcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODdcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODhcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjNcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQTBcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQjBcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDlcdTAwODZcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQUZcdTAwRDlcdTAwODlcdTAwRDlcdTAwODVcdTAwRDlcdTAwODZcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQUZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDlcdTAwODhcdTAwRDhcdTAwQjZcdTAwRDlcdTAwODhcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQThcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODVcdTAwRDhcdTAwQUNcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDlcdTAwODhcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODJcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQjNcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQTZcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDhcdTAwQjRcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDlcdTAwODNcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTNcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQjZcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQTFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjFcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjZcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjVcdTAwRDlcdTAwODVcdTAwRDlcdTAwOEFcdTAwRDlcdTAwODVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQjZcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQTFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODZcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQTZcdTAwRDhcdTAwQUNcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTNcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQThcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjNcdTAwRDhcdTAwQUNcdTAwRDlcdTAwOEFcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTNcdTAwRDlcdTAwODJcdTAwRDhcdTAwQjNcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjZcdTAwRDhcdTAwQkFcdTAwRDhcdTAwQjdcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODFcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQUZcdTAwRDlcdTAwOEFcdTAwRDlcdTAwODhcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQURcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQThcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUNcdTAwRDhcdTAwQUZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQUZcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjlcdTAwRDlcdTAwODRcdTAwRDlcdTAwOEFcdTAwRDlcdTAwODVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTNcdTAwRDhcdTAwQUVcdTAwRDhcdTAwQThcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODFcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTNcdTAwRDlcdTAwODFcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQUVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDlcdTAwODJcdTAwRDlcdTAwODZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQThcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUVcdTAwRDlcdTAwODhcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjdcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDhcdTAwQUNcdTAwRDhcdTAwQUFcdTAwRDlcdTAwODVcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUZcdTAwRDlcdTAwOEFcdTAwRDlcdTAwODNcdTAwRDlcdTAwODhcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjNcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQURcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQThcdTAwRDhcdTAwQUZcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODRcdTAwRDlcdTAwODdcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQThcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjFcdTAwRDlcdTAwODhcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQThcdTAwRDhcdTAwQjdcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTNcdTAwRDhcdTAwQUZcdTAwRDhcdTAwQThcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUVcdTAwRDhcdTAwQThcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQURcdTAwRDhcdTAwQUZcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQkFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODZcdTAwRDlcdTAwOEFjdXJzb3I6cG9pbnRlcjs8L3RpdGxlPlxuPG1ldGEgXCIgaHJlZj1cImh0dHA6Ly9cIj48c3BhbiBjbGFzcz1cIm1lbWJlcnMgb2YgdGhlIHdpbmRvdy5sb2NhdGlvbnZlcnRpY2FsLWFsaWduOi9hPiB8IDxhIGhyZWY9XCI8IWRvY3R5cGUgaHRtbD5tZWRpYT1cInNjcmVlblwiIDxvcHRpb24gdmFsdWU9XCJmYXZpY29uLmljb1wiIC8+XG5cdFx0PGRpdiBjbGFzcz1cImNoYXJhY3RlcmlzdGljc1wiIG1ldGhvZD1cImdldFwiIC9ib2R5PlxuPC9odG1sPlxuc2hvcnRjdXQgaWNvblwiIGRvY3VtZW50LndyaXRlKHBhZGRpbmctYm90dG9tOnJlcHJlc2VudGF0aXZlc3N1Ym1pdFwiIHZhbHVlPVwiYWxpZ249XCJjZW50ZXJcIiB0aHJvdWdob3V0IHRoZSBzY2llbmNlIGZpY3Rpb25cbiAgPGRpdiBjbGFzcz1cInN1Ym1pdFwiIGNsYXNzPVwib25lIG9mIHRoZSBtb3N0IHZhbGlnbj1cInRvcFwiPjx3YXMgZXN0YWJsaXNoZWQpO1xyXG48L3NjcmlwdD5cclxucmV0dXJuIGZhbHNlO1wiPikuc3R5bGUuZGlzcGxheWJlY2F1c2Ugb2YgdGhlIGRvY3VtZW50LmNvb2tpZTxmb3JtIGFjdGlvbj1cIi99Ym9keXttYXJnaW46MDtFbmN5Y2xvcGVkaWEgb2Z2ZXJzaW9uIG9mIHRoZSAuY3JlYXRlRWxlbWVudChuYW1lXCIgY29udGVudD1cIjwvZGl2PlxuPC9kaXY+XG5cbmFkbWluaXN0cmF0aXZlIDwvYm9keT5cbjwvaHRtbD5oaXN0b3J5IG9mIHRoZSBcIj48aW5wdXQgdHlwZT1cInBvcnRpb24gb2YgdGhlIGFzIHBhcnQgb2YgdGhlICZuYnNwOzxhIGhyZWY9XCJvdGhlciBjb3VudHJpZXNcIj5cbjxkaXYgY2xhc3M9XCI8L3NwYW4+PC9zcGFuPjxJbiBvdGhlciB3b3JkcyxkaXNwbGF5OiBibG9jaztjb250cm9sIG9mIHRoZSBpbnRyb2R1Y3Rpb24gb2YvPlxuPG1ldGEgbmFtZT1cImFzIHdlbGwgYXMgdGhlIGluIHJlY2VudCB5ZWFyc1xyXG5cdDxkaXYgY2xhc3M9XCI8L2Rpdj5cblx0PC9kaXY+XG5pbnNwaXJlZCBieSB0aGV0aGUgZW5kIG9mIHRoZSBjb21wYXRpYmxlIHdpdGhiZWNhbWUga25vd24gYXMgc3R5bGU9XCJtYXJnaW46LmpzXCI+PC9zY3JpcHQ+PCBJbnRlcm5hdGlvbmFsIHRoZXJlIGhhdmUgYmVlbkdlcm1hbiBsYW5ndWFnZSBzdHlsZT1cImNvbG9yOiNDb21tdW5pc3QgUGFydHljb25zaXN0ZW50IHdpdGhib3JkZXI9XCIwXCIgY2VsbCBtYXJnaW5oZWlnaHQ9XCJ0aGUgbWFqb3JpdHkgb2ZcIiBhbGlnbj1cImNlbnRlcnJlbGF0ZWQgdG8gdGhlIG1hbnkgZGlmZmVyZW50IE9ydGhvZG94IENodXJjaHNpbWlsYXIgdG8gdGhlIC8+XG48bGluayByZWw9XCJzd2FzIG9uZSBvZiB0aGUgdW50aWwgaGlzIGRlYXRofSkoKTtcbjwvc2NyaXB0Pm90aGVyIGxhbmd1YWdlc2NvbXBhcmVkIHRvIHRoZXBvcnRpb25zIG9mIHRoZXRoZSBOZXRoZXJsYW5kc3RoZSBtb3N0IGNvbW1vbmJhY2tncm91bmQ6dXJsKGFyZ3VlZCB0aGF0IHRoZXNjcm9sbGluZz1cIm5vXCIgaW5jbHVkZWQgaW4gdGhlTm9ydGggQW1lcmljYW4gdGhlIG5hbWUgb2YgdGhlaW50ZXJwcmV0YXRpb25zdGhlIHRyYWRpdGlvbmFsZGV2ZWxvcG1lbnQgb2YgZnJlcXVlbnRseSB1c2VkYSBjb2xsZWN0aW9uIG9mdmVyeSBzaW1pbGFyIHRvc3Vycm91bmRpbmcgdGhlZXhhbXBsZSBvZiB0aGlzYWxpZ249XCJjZW50ZXJcIj53b3VsZCBoYXZlIGJlZW5pbWFnZV9jYXB0aW9uID1hdHRhY2hlZCB0byB0aGVzdWdnZXN0aW5nIHRoYXRpbiB0aGUgZm9ybSBvZiBpbnZvbHZlZCBpbiB0aGVpcyBkZXJpdmVkIGZyb21uYW1lZCBhZnRlciB0aGVJbnRyb2R1Y3Rpb24gdG9yZXN0cmljdGlvbnMgb24gc3R5bGU9XCJ3aWR0aDogY2FuIGJlIHVzZWQgdG8gdGhlIGNyZWF0aW9uIG9mbW9zdCBpbXBvcnRhbnQgaW5mb3JtYXRpb24gYW5kcmVzdWx0ZWQgaW4gdGhlY29sbGFwc2Ugb2YgdGhlVGhpcyBtZWFucyB0aGF0ZWxlbWVudHMgb2YgdGhld2FzIHJlcGxhY2VkIGJ5YW5hbHlzaXMgb2YgdGhlaW5zcGlyYXRpb24gZm9ycmVnYXJkZWQgYXMgdGhlbW9zdCBzdWNjZXNzZnVsa25vd24gYXMgJnF1b3Q7YSBjb21wcmVoZW5zaXZlSGlzdG9yeSBvZiB0aGUgd2VyZSBjb25zaWRlcmVkcmV0dXJuZWQgdG8gdGhlYXJlIHJlZmVycmVkIHRvVW5zb3VyY2VkIGltYWdlPlxuXHQ8ZGl2IGNsYXNzPVwiY29uc2lzdHMgb2YgdGhlc3RvcFByb3BhZ2F0aW9uaW50ZXJlc3QgaW4gdGhlYXZhaWxhYmlsaXR5IG9mYXBwZWFycyB0byBoYXZlZWxlY3Ryb21hZ25ldGljZW5hYmxlU2VydmljZXMoZnVuY3Rpb24gb2YgdGhlSXQgaXMgaW1wb3J0YW50PC9zY3JpcHQ+PC9kaXY+ZnVuY3Rpb24oKXt2YXIgcmVsYXRpdmUgdG8gdGhlYXMgYSByZXN1bHQgb2YgdGhlIHBvc2l0aW9uIG9mRm9yIGV4YW1wbGUsIGluIG1ldGhvZD1cInBvc3RcIiB3YXMgZm9sbG93ZWQgYnkmYW1wO21kYXNoOyB0aGV0aGUgYXBwbGljYXRpb25qc1wiPjwvc2NyaXB0PlxyXG51bD48L2Rpdj48L2Rpdj5hZnRlciB0aGUgZGVhdGh3aXRoIHJlc3BlY3QgdG9zdHlsZT1cInBhZGRpbmc6aXMgcGFydGljdWxhcmx5ZGlzcGxheTppbmxpbmU7IHR5cGU9XCJzdWJtaXRcIiBpcyBkaXZpZGVkIGludG9cdTAwRTRcdTAwQjhcdTAwQURcdTAwRTZcdTAwOTZcdTAwODcgKFx1MDBFN1x1MDBBRVx1MDA4MFx1MDBFNFx1MDBCRFx1MDA5MylyZXNwb25zYWJpbGlkYWRhZG1pbmlzdHJhY2lcdTAwQzNcdTAwQjNuaW50ZXJuYWNpb25hbGVzY29ycmVzcG9uZGllbnRlXHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEEzXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg5XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgzXHUwMEUwXHUwMEE0XHUwMEI3XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEEwXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEEyXHUwMEUwXHUwMEE0XHUwMEJDXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFCXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDhDXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDlCXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI3XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMDg4XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEEzXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEEyXHUwMEUwXHUwMEE0XHUwMEJDXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEFCXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDlCXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlCXHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMDk4XHUwMEUwXHUwMEE0XHUwMEEzXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE3XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI3XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMEExXHUwMEUwXHUwMEE0XHUwMEJDXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDgzXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE0XHUwMDk4XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDg3cnNzK3htbFwiIHRpdGxlPVwiLXR5cGVcIiBjb250ZW50PVwidGl0bGVcIiBjb250ZW50PVwiYXQgdGhlIHNhbWUgdGltZS5qc1wiPjwvc2NyaXB0PlxuPFwiIG1ldGhvZD1cInBvc3RcIiA8L3NwYW4+PC9hPjwvbGk+dmVydGljYWwtYWxpZ246dC9qcXVlcnkubWluLmpzXCI+LmNsaWNrKGZ1bmN0aW9uKCBzdHlsZT1cInBhZGRpbmctfSkoKTtcbjwvc2NyaXB0PlxuPC9zcGFuPjxhIGhyZWY9XCI8YSBocmVmPVwiaHR0cDovLyk7IHJldHVybiBmYWxzZTt0ZXh0LWRlY29yYXRpb246IHNjcm9sbGluZz1cIm5vXCIgYm9yZGVyLWNvbGxhcHNlOmFzc29jaWF0ZWQgd2l0aCBCYWhhc2EgSW5kb25lc2lhRW5nbGlzaCBsYW5ndWFnZTx0ZXh0IHhtbDpzcGFjZT0uZ2lmXCIgYm9yZGVyPVwiMFwiPC9ib2R5PlxuPC9odG1sPlxub3ZlcmZsb3c6aGlkZGVuO2ltZyBzcmM9XCJodHRwOi8vYWRkRXZlbnRMaXN0ZW5lcnJlc3BvbnNpYmxlIGZvciBzLmpzXCI+PC9zY3JpcHQ+XG4vZmF2aWNvbi5pY29cIiAvPm9wZXJhdGluZyBzeXN0ZW1cIiBzdHlsZT1cIndpZHRoOjF0YXJnZXQ9XCJfYmxhbmtcIj5TdGF0ZSBVbml2ZXJzaXR5dGV4dC1hbGlnbjpsZWZ0O1xuZG9jdW1lbnQud3JpdGUoLCBpbmNsdWRpbmcgdGhlIGFyb3VuZCB0aGUgd29ybGQpO1xyXG48L3NjcmlwdD5cclxuPFwiIHN0eWxlPVwiaGVpZ2h0OjtvdmVyZmxvdzpoaWRkZW5tb3JlIGluZm9ybWF0aW9uYW4gaW50ZXJuYXRpb25hbGEgbWVtYmVyIG9mIHRoZSBvbmUgb2YgdGhlIGZpcnN0Y2FuIGJlIGZvdW5kIGluIDwvZGl2PlxuXHRcdDwvZGl2PlxuZGlzcGxheTogbm9uZTtcIj5cIiAvPlxuPGxpbmsgcmVsPVwiXG4gIChmdW5jdGlvbigpIHt0aGUgMTV0aCBjZW50dXJ5LnByZXZlbnREZWZhdWx0KGxhcmdlIG51bWJlciBvZiBCeXphbnRpbmUgRW1waXJlLmpwZ3x0aHVtYnxsZWZ0fHZhc3QgbWFqb3JpdHkgb2ZtYWpvcml0eSBvZiB0aGUgIGFsaWduPVwiY2VudGVyXCI+VW5pdmVyc2l0eSBQcmVzc2RvbWluYXRlZCBieSB0aGVTZWNvbmQgV29ybGQgV2FyZGlzdHJpYnV0aW9uIG9mIHN0eWxlPVwicG9zaXRpb246dGhlIHJlc3Qgb2YgdGhlIGNoYXJhY3Rlcml6ZWQgYnkgcmVsPVwibm9mb2xsb3dcIj5kZXJpdmVzIGZyb20gdGhlcmF0aGVyIHRoYW4gdGhlIGEgY29tYmluYXRpb24gb2ZzdHlsZT1cIndpZHRoOjEwMEVuZ2xpc2gtc3BlYWtpbmdjb21wdXRlciBzY2llbmNlYm9yZGVyPVwiMFwiIGFsdD1cInRoZSBleGlzdGVuY2Ugb2ZEZW1vY3JhdGljIFBhcnR5XCIgc3R5bGU9XCJtYXJnaW4tRm9yIHRoaXMgcmVhc29uLC5qc1wiPjwvc2NyaXB0PlxuXHRzQnlUYWdOYW1lKHMpWzBdanNcIj48L3NjcmlwdD5cclxuPC5qc1wiPjwvc2NyaXB0PlxyXG5saW5rIHJlbD1cImljb25cIiAnIGFsdD0nJyBjbGFzcz0nZm9ybWF0aW9uIG9mIHRoZXZlcnNpb25zIG9mIHRoZSA8L2E+PC9kaXY+PC9kaXY+L3BhZ2U+XG4gIDxwYWdlPlxuPGRpdiBjbGFzcz1cImNvbnRiZWNhbWUgdGhlIGZpcnN0YmFoYXNhIEluZG9uZXNpYWVuZ2xpc2ggKHNpbXBsZSlcdTAwQ0VcdTAwOTVcdTAwQ0VcdTAwQkJcdTAwQ0VcdTAwQkJcdTAwQ0VcdTAwQjdcdTAwQ0VcdTAwQkRcdTAwQ0VcdTAwQjlcdTAwQ0VcdTAwQkFcdTAwQ0VcdTAwQUNcdTAwRDFcdTAwODVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODJcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQkZcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjhcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkJcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODJcdTAwRDFcdTAwODFcdTAwRDFcdTAwOEZcdTAwRDBcdTAwOTRcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjFcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjdcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjhcdTAwRDFcdTAwOEZcdTAwRDBcdTAwOThcdTAwRDBcdTAwQkRcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODJcdTAwRDBcdTAwOUVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkZcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkRcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODJcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjNcdTAwRDBcdTAwQkVcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODZcdTAwRDFcdTAwOEJcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQjBcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODNcdTAwRDFcdTAwODFcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjhcdTAwRDFcdTAwOEZcdTAwRDFcdTAwODVcdTAwRDBcdTAwQkZcdTAwRDFcdTAwODBcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQjFcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkNcdTAwRDFcdTAwOEJcdTAwRDBcdTAwQkZcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkJcdTAwRDFcdTAwODNcdTAwRDFcdTAwODdcdTAwRDBcdTAwQjhcdTAwRDFcdTAwODJcdTAwRDFcdTAwOENcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkJcdTAwRDFcdTAwOEZcdTAwRDFcdTAwOEVcdTAwRDFcdTAwODJcdTAwRDFcdTAwODFcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjFcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkJcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQkFcdTAwRDBcdTAwQkVcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQkZcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDFcdTAwOEZcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQkNcdTAwRDBcdTAwQjBcdTAwRDBcdTAwQkRcdTAwRDBcdTAwQjhcdTAwRDBcdTAwQjVcdTAwRDFcdTAwODFcdTAwRDFcdTAwODBcdTAwRDBcdTAwQjVcdTAwRDBcdTAwQjRcdTAwRDFcdTAwODFcdTAwRDFcdTAwODJcdTAwRDBcdTAwQjJcdTAwRDBcdTAwQjBcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDlcdTAwODhcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQjNcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODZcdTAwRDhcdTAwQUFcdTAwRDlcdTAwODJcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDhcdTAwQjRcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDlcdTAwODNcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDlcdTAwODNcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjNcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDlcdTAwODNcdTAwRDhcdTAwQUFcdTAwRDlcdTAwODhcdTAwRDhcdTAwQThcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjNcdTAwRDhcdTAwQjlcdTAwRDlcdTAwODhcdTAwRDhcdTAwQUZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQURcdTAwRDhcdTAwQjVcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQTZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQjVcdTAwRDlcdTAwODhcdTAwRDhcdTAwQUFcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODZcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjFcdTAwRDlcdTAwODZcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQUFcdTAwRDhcdTAwQjVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODVcdTAwRDlcdTAwOEFcdTAwRDlcdTAwODVcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTVcdTAwRDhcdTAwQjNcdTAwRDlcdTAwODRcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODVcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDhcdTAwQjRcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQjFcdTAwRDlcdTAwODNcdTAwRDhcdTAwQTlcdTAwRDhcdTAwQTdcdTAwRDlcdTAwODRcdTAwRDlcdTAwODVcdTAwRDhcdTAwQjFcdTAwRDhcdTAwQTZcdTAwRDlcdTAwOEFcdTAwRDhcdTAwQTdcdTAwRDhcdTAwQUFyb2JvdHNcIiBjb250ZW50PVwiPGRpdiBpZD1cImZvb3RlclwiPnRoZSBVbml0ZWQgU3RhdGVzPGltZyBzcmM9XCJodHRwOi8vLmpwZ3xyaWdodHx0aHVtYnwuanNcIj48L3NjcmlwdD5cclxuPGxvY2F0aW9uLnByb3RvY29sZnJhbWVib3JkZXI9XCIwXCIgc1wiIC8+XG48bWV0YSBuYW1lPVwiPC9hPjwvZGl2PjwvZGl2Pjxmb250LXdlaWdodDpib2xkOyZxdW90OyBhbmQgJnF1b3Q7ZGVwZW5kaW5nIG9uIHRoZSBtYXJnaW46MDtwYWRkaW5nOlwiIHJlbD1cIm5vZm9sbG93XCIgUHJlc2lkZW50IG9mIHRoZSB0d2VudGlldGggY2VudHVyeWV2aXNpb24+XG4gIDwvcGFnZUludGVybmV0IEV4cGxvcmVyYS5hc3luYyA9IHRydWU7XHJcbmluZm9ybWF0aW9uIGFib3V0PGRpdiBpZD1cImhlYWRlclwiPlwiIGFjdGlvbj1cImh0dHA6Ly88YSBocmVmPVwiaHR0cHM6Ly88ZGl2IGlkPVwiY29udGVudFwiPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGVyaXZlZCBmcm9tIHRoZSA8aW1nIHNyYz0naHR0cDovL2FjY29yZGluZyB0byB0aGUgXG48L2JvZHk+XG48L2h0bWw+XG5zdHlsZT1cImZvbnQtc2l6ZTpzY3JpcHQgbGFuZ3VhZ2U9XCJBcmlhbCwgSGVsdmV0aWNhLDwvYT48c3BhbiBjbGFzcz1cIjwvc2NyaXB0PjxzY3JpcHQgcG9saXRpY2FsIHBhcnRpZXN0ZD48L3RyPjwvdGFibGU+PGhyZWY9XCJodHRwOi8vd3d3LmludGVycHJldGF0aW9uIG9mcmVsPVwic3R5bGVzaGVldFwiIGRvY3VtZW50LndyaXRlKCc8Y2hhcnNldD1cInV0Zi04XCI+XG5iZWdpbm5pbmcgb2YgdGhlIHJldmVhbGVkIHRoYXQgdGhldGVsZXZpc2lvbiBzZXJpZXNcIiByZWw9XCJub2ZvbGxvd1wiPiB0YXJnZXQ9XCJfYmxhbmtcIj5jbGFpbWluZyB0aGF0IHRoZWh0dHAlM0ElMkYlMkZ3d3cubWFuaWZlc3RhdGlvbnMgb2ZQcmltZSBNaW5pc3RlciBvZmluZmx1ZW5jZWQgYnkgdGhlY2xhc3M9XCJjbGVhcmZpeFwiPi9kaXY+XHJcbjwvZGl2PlxyXG5cclxudGhyZWUtZGltZW5zaW9uYWxDaHVyY2ggb2YgRW5nbGFuZG9mIE5vcnRoIENhcm9saW5hc3F1YXJlIGtpbG9tZXRyZXMuYWRkRXZlbnRMaXN0ZW5lcmRpc3RpbmN0IGZyb20gdGhlY29tbW9ubHkga25vd24gYXNQaG9uZXRpYyBBbHBoYWJldGRlY2xhcmVkIHRoYXQgdGhlY29udHJvbGxlZCBieSB0aGVCZW5qYW1pbiBGcmFua2xpbnJvbGUtcGxheWluZyBnYW1ldGhlIFVuaXZlcnNpdHkgb2ZpbiBXZXN0ZXJuIEV1cm9wZXBlcnNvbmFsIGNvbXB1dGVyUHJvamVjdCBHdXRlbmJlcmdyZWdhcmRsZXNzIG9mIHRoZWhhcyBiZWVuIHByb3Bvc2VkdG9nZXRoZXIgd2l0aCB0aGU+PC9saT48bGkgY2xhc3M9XCJpbiBzb21lIGNvdW50cmllc21pbi5qc1wiPjwvc2NyaXB0Pm9mIHRoZSBwb3B1bGF0aW9ub2ZmaWNpYWwgbGFuZ3VhZ2U8aW1nIHNyYz1cImltYWdlcy9pZGVudGlmaWVkIGJ5IHRoZW5hdHVyYWwgcmVzb3VyY2VzY2xhc3NpZmljYXRpb24gb2ZjYW4gYmUgY29uc2lkZXJlZHF1YW50dW0gbWVjaGFuaWNzTmV2ZXJ0aGVsZXNzLCB0aGVtaWxsaW9uIHllYXJzIGFnbzwvYm9keT5cclxuPC9odG1sPlxyXHUwMENFXHUwMDk1XHUwMENFXHUwMEJCXHUwMENFXHUwMEJCXHUwMENFXHUwMEI3XHUwMENFXHUwMEJEXHUwMENFXHUwMEI5XHUwMENFXHUwMEJBXHUwMENFXHUwMEFDXG50YWtlIGFkdmFudGFnZSBvZmFuZCwgYWNjb3JkaW5nIHRvYXR0cmlidXRlZCB0byB0aGVNaWNyb3NvZnQgV2luZG93c3RoZSBmaXJzdCBjZW50dXJ5dW5kZXIgdGhlIGNvbnRyb2xkaXYgY2xhc3M9XCJoZWFkZXJzaG9ydGx5IGFmdGVyIHRoZW5vdGFibGUgZXhjZXB0aW9udGVucyBvZiB0aG91c2FuZHNzZXZlcmFsIGRpZmZlcmVudGFyb3VuZCB0aGUgd29ybGQucmVhY2hpbmcgbWlsaXRhcnlpc29sYXRlZCBmcm9tIHRoZW9wcG9zaXRpb24gdG8gdGhldGhlIE9sZCBUZXN0YW1lbnRBZnJpY2FuIEFtZXJpY2Fuc2luc2VydGVkIGludG8gdGhlc2VwYXJhdGUgZnJvbSB0aGVtZXRyb3BvbGl0YW4gYXJlYW1ha2VzIGl0IHBvc3NpYmxlYWNrbm93bGVkZ2VkIHRoYXRhcmd1YWJseSB0aGUgbW9zdHR5cGU9XCJ0ZXh0L2Nzc1wiPlxudGhlIEludGVybmF0aW9uYWxBY2NvcmRpbmcgdG8gdGhlIHBlPVwidGV4dC9jc3NcIiAvPlxuY29pbmNpZGUgd2l0aCB0aGV0d28tdGhpcmRzIG9mIHRoZUR1cmluZyB0aGlzIHRpbWUsZHVyaW5nIHRoZSBwZXJpb2Rhbm5vdW5jZWQgdGhhdCBoZXRoZSBpbnRlcm5hdGlvbmFsYW5kIG1vcmUgcmVjZW50bHliZWxpZXZlZCB0aGF0IHRoZWNvbnNjaW91c25lc3MgYW5kZm9ybWVybHkga25vd24gYXNzdXJyb3VuZGVkIGJ5IHRoZWZpcnN0IGFwcGVhcmVkIGlub2NjYXNpb25hbGx5IHVzZWRwb3NpdGlvbjphYnNvbHV0ZTtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcjtqYXgvbGlicy9qcXVlcnkvMS5iYWNrZ3JvdW5kLWNvbG9yOiN0eXBlPVwiYXBwbGljYXRpb24vYW5ndWFnZVwiIGNvbnRlbnQ9XCI8bWV0YSBodHRwLWVxdWl2PVwiUHJpdmFjeSBQb2xpY3k8L2E+ZShcIiUzQ3NjcmlwdCBzcmM9J1wiIHRhcmdldD1cIl9ibGFua1wiPk9uIHRoZSBvdGhlciBoYW5kLC5qcGd8dGh1bWJ8cmlnaHR8MjwvZGl2PjxkaXYgY2xhc3M9XCI8ZGl2IHN0eWxlPVwiZmxvYXQ6bmluZXRlZW50aCBjZW50dXJ5PC9ib2R5PlxyXG48L2h0bWw+XHJcbjxpbWcgc3JjPVwiaHR0cDovL3M7dGV4dC1hbGlnbjpjZW50ZXJmb250LXdlaWdodDogYm9sZDsgQWNjb3JkaW5nIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW5cIiBmcmFtZWJvcmRlcj1cIjBcIiBcIiBzdHlsZT1cInBvc2l0aW9uOmxpbmsgaHJlZj1cImh0dHA6Ly9odG1sNC9sb29zZS5kdGRcIj5cbmR1cmluZyB0aGlzIHBlcmlvZDwvdGQ+PC90cj48L3RhYmxlPmNsb3NlbHkgcmVsYXRlZCB0b2ZvciB0aGUgZmlyc3QgdGltZTtmb250LXdlaWdodDpib2xkO2lucHV0IHR5cGU9XCJ0ZXh0XCIgPHNwYW4gc3R5bGU9XCJmb250LW9ucmVhZHlzdGF0ZWNoYW5nZVx0PGRpdiBjbGFzcz1cImNsZWFyZG9jdW1lbnQubG9jYXRpb24uIEZvciBleGFtcGxlLCB0aGUgYSB3aWRlIHZhcmlldHkgb2YgPCFET0NUWVBFIGh0bWw+XHJcbjwmbmJzcDsmbmJzcDsmbmJzcDtcIj48YSBocmVmPVwiaHR0cDovL3N0eWxlPVwiZmxvYXQ6bGVmdDtjb25jZXJuZWQgd2l0aCB0aGU9aHR0cCUzQSUyRiUyRnd3dy5pbiBwb3B1bGFyIGN1bHR1cmV0eXBlPVwidGV4dC9jc3NcIiAvPml0IGlzIHBvc3NpYmxlIHRvIEhhcnZhcmQgVW5pdmVyc2l0eXR5bGVzaGVldFwiIGhyZWY9XCIvdGhlIG1haW4gY2hhcmFjdGVyT3hmb3JkIFVuaXZlcnNpdHkgIG5hbWU9XCJrZXl3b3Jkc1wiIGNzdHlsZT1cInRleHQtYWxpZ246dGhlIFVuaXRlZCBLaW5nZG9tZmVkZXJhbCBnb3Zlcm5tZW50PGRpdiBzdHlsZT1cIm1hcmdpbiBkZXBlbmRpbmcgb24gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZTxkaXYgY2xhc3M9XCJoZWFkZXIubWluLmpzXCI+PC9zY3JpcHQ+ZGVzdHJ1Y3Rpb24gb2YgdGhlc2xpZ2h0bHkgZGlmZmVyZW50aW4gYWNjb3JkYW5jZSB3aXRodGVsZWNvbW11bmljYXRpb25zaW5kaWNhdGVzIHRoYXQgdGhlc2hvcnRseSB0aGVyZWFmdGVyZXNwZWNpYWxseSBpbiB0aGUgRXVyb3BlYW4gY291bnRyaWVzSG93ZXZlciwgdGhlcmUgYXJlc3JjPVwiaHR0cDovL3N0YXRpY3N1Z2dlc3RlZCB0aGF0IHRoZVwiIHNyYz1cImh0dHA6Ly93d3cuYSBsYXJnZSBudW1iZXIgb2YgVGVsZWNvbW11bmljYXRpb25zXCIgcmVsPVwibm9mb2xsb3dcIiB0SG9seSBSb21hbiBFbXBlcm9yYWxtb3N0IGV4Y2x1c2l2ZWx5XCIgYm9yZGVyPVwiMFwiIGFsdD1cIlNlY3JldGFyeSBvZiBTdGF0ZWN1bG1pbmF0aW5nIGluIHRoZUNJQSBXb3JsZCBGYWN0Ym9va3RoZSBtb3N0IGltcG9ydGFudGFubml2ZXJzYXJ5IG9mIHRoZXN0eWxlPVwiYmFja2dyb3VuZC08bGk+PGVtPjxhIGhyZWY9XCIvdGhlIEF0bGFudGljIE9jZWFuc3RyaWN0bHkgc3BlYWtpbmcsc2hvcnRseSBiZWZvcmUgdGhlZGlmZmVyZW50IHR5cGVzIG9mdGhlIE90dG9tYW4gRW1waXJlPjxpbWcgc3JjPVwiaHR0cDovL0FuIEludHJvZHVjdGlvbiB0b2NvbnNlcXVlbmNlIG9mIHRoZWRlcGFydHVyZSBmcm9tIHRoZUNvbmZlZGVyYXRlIFN0YXRlc2luZGlnZW5vdXMgcGVvcGxlc1Byb2NlZWRpbmdzIG9mIHRoZWluZm9ybWF0aW9uIG9uIHRoZXRoZW9yaWVzIGhhdmUgYmVlbmludm9sdmVtZW50IGluIHRoZWRpdmlkZWQgaW50byB0aHJlZWFkamFjZW50IGNvdW50cmllc2lzIHJlc3BvbnNpYmxlIGZvcmRpc3NvbHV0aW9uIG9mIHRoZWNvbGxhYm9yYXRpb24gd2l0aHdpZGVseSByZWdhcmRlZCBhc2hpcyBjb250ZW1wb3Jhcmllc2ZvdW5kaW5nIG1lbWJlciBvZkRvbWluaWNhbiBSZXB1YmxpY2dlbmVyYWxseSBhY2NlcHRlZHRoZSBwb3NzaWJpbGl0eSBvZmFyZSBhbHNvIGF2YWlsYWJsZXVuZGVyIGNvbnN0cnVjdGlvbnJlc3RvcmF0aW9uIG9mIHRoZXRoZSBnZW5lcmFsIHB1YmxpY2lzIGFsbW9zdCBlbnRpcmVseXBhc3NlcyB0aHJvdWdoIHRoZWhhcyBiZWVuIHN1Z2dlc3RlZGNvbXB1dGVyIGFuZCB2aWRlb0dlcm1hbmljIGxhbmd1YWdlcyBhY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVudCBmcm9tIHRoZXNob3J0bHkgYWZ0ZXJ3YXJkc2hyZWY9XCJodHRwczovL3d3dy5yZWNlbnQgZGV2ZWxvcG1lbnRCb2FyZCBvZiBEaXJlY3RvcnM8ZGl2IGNsYXNzPVwic2VhcmNofCA8YSBocmVmPVwiaHR0cDovL0luIHBhcnRpY3VsYXIsIHRoZU11bHRpcGxlIGZvb3Rub3Rlc29yIG90aGVyIHN1YnN0YW5jZXRob3VzYW5kcyBvZiB5ZWFyc3RyYW5zbGF0aW9uIG9mIHRoZTwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhIGhyZWY9XCJpbmRleC5waHB3YXMgZXN0YWJsaXNoZWQgaW5taW4uanNcIj48L3NjcmlwdD5cbnBhcnRpY2lwYXRlIGluIHRoZWEgc3Ryb25nIGluZmx1ZW5jZXN0eWxlPVwibWFyZ2luLXRvcDpyZXByZXNlbnRlZCBieSB0aGVncmFkdWF0ZWQgZnJvbSB0aGVUcmFkaXRpb25hbGx5LCB0aGVFbGVtZW50KFwic2NyaXB0XCIpO0hvd2V2ZXIsIHNpbmNlIHRoZS9kaXY+XG48L2Rpdj5cbjxkaXYgbGVmdDsgbWFyZ2luLWxlZnQ6cHJvdGVjdGlvbiBhZ2FpbnN0MDsgdmVydGljYWwtYWxpZ246VW5mb3J0dW5hdGVseSwgdGhldHlwZT1cImltYWdlL3gtaWNvbi9kaXY+XG48ZGl2IGNsYXNzPVwiIGNsYXNzPVwiY2xlYXJmaXhcIj48ZGl2IGNsYXNzPVwiZm9vdGVyXHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxudGhlIG1vdGlvbiBwaWN0dXJlXHUwMEQwXHUwMDkxXHUwMEQxXHUwMDhBXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEIzXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgwXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEIxXHUwMEQxXHUwMDhBXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEIzXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgwXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEE0XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJCXHUwMEQxXHUwMDhDXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIxXHUwMEQxXHUwMDg5XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIxXHUwMEQxXHUwMDg5XHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhGXHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIzXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEJDXHUwMEQxXHUwMDhCXHUwMEQwXHUwMDlFXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgyXHUwMEQxXHUwMDhDXHUwMEQwXHUwMEIxXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJGXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgwXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJCXHUwMEQxXHUwMDhCXHUwMEQwXHUwMEJGXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI3XHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJCXHUwMEQxXHUwMDhGXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJGXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEI3XHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDg3XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDhCXHUwMEQxXHUwMDg1XHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDgzXHUwMEQwXHUwMEJBXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIzXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJGXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQxXHUwMDhDXHUwMEQxXHUwMDhFXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg1XHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgyXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDhGXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI3XHUwMEQwXHUwMEIxXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhGXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI3XHUwMEQwXHUwMEJDXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhGXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEIzXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI4XHUwMEQwXHUwMDkwXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJBXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEExXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEE3XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEExXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEEwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDkxXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFCXHUwMEUwXHUwMEE0XHUwMEJDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg4XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEEwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMEExXHUwMEUwXHUwMEE0XHUwMEJDXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEEzXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI3XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEEzXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEExXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDlBXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE3XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE3XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE2XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEExXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMDg4XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMDhGXHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEIyXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDg1XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE3XHUwMEUwXHUwMEE0XHUwMEFDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJDXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDk2XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI2XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE1XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDg2XHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMEFFXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIxXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDgzXHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg3XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEI5XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEIyXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEI5XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEFGXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE1XHUwMEQ4XHUwMEIzXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDgxXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEFBXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEI0XHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEE4XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEIzXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEE4XHUwMEQ5XHUwMDgyXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEI5XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg4XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEIzXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEIzXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEFDXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgxXHUwMEQ5XHUwMDhBXHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEIzXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEIzXHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg1XHUwMEQ5XHUwMDhBXHUwMEQ4XHUwMEE5XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEI1XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBa2V5d29yZHNcIiBjb250ZW50PVwidzMub3JnLzE5OTkveGh0bWxcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiB0ZXh0L2h0bWw7IGNoYXJzZXQ9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+PHRhYmxlIGNlbGxwYWRkaW5nPVwiYXV0b2NvbXBsZXRlPVwib2ZmXCIgdGV4dC1hbGlnbjogY2VudGVyO3RvIGxhc3QgdmVyc2lvbiBieSBiYWNrZ3JvdW5kLWNvbG9yOiAjXCIgaHJlZj1cImh0dHA6Ly93d3cuL2Rpdj48L2Rpdj48ZGl2IGlkPTxhIGhyZWY9XCIjXCIgY2xhc3M9XCJcIj48aW1nIHNyYz1cImh0dHA6Ly9jcmlwdFwiIHNyYz1cImh0dHA6Ly9cbjxzY3JpcHQgbGFuZ3VhZ2U9XCIvL0VOXCIgXCJodHRwOi8vd3d3LndlbmNvZGVVUklDb21wb25lbnQoXCIgaHJlZj1cImphdmFzY3JpcHQ6PGRpdiBjbGFzcz1cImNvbnRlbnRkb2N1bWVudC53cml0ZSgnPHNjcG9zaXRpb246IGFic29sdXRlO3NjcmlwdCBzcmM9XCJodHRwOi8vIHN0eWxlPVwibWFyZ2luLXRvcDoubWluLmpzXCI+PC9zY3JpcHQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3My5vcmcvMTk5OS94aHRtbFwiIFxuXHJcbjwvYm9keT5cclxuPC9odG1sPmRpc3RpbmN0aW9uIGJldHdlZW4vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGxpbmsgaHJlZj1cImh0dHA6Ly9lbmNvZGluZz1cInV0Zi04XCI/Plxudy5hZGRFdmVudExpc3RlbmVyP2FjdGlvbj1cImh0dHA6Ly93d3cuaWNvblwiIGhyZWY9XCJodHRwOi8vIHN0eWxlPVwiYmFja2dyb3VuZDp0eXBlPVwidGV4dC9jc3NcIiAvPlxubWV0YSBwcm9wZXJ0eT1cIm9nOnQ8aW5wdXQgdHlwZT1cInRleHRcIiAgc3R5bGU9XCJ0ZXh0LWFsaWduOnRoZSBkZXZlbG9wbWVudCBvZiB0eWxlc2hlZXRcIiB0eXBlPVwidGVodG1sOyBjaGFyc2V0PXV0Zi04aXMgY29uc2lkZXJlZCB0byBiZXRhYmxlIHdpZHRoPVwiMTAwJVwiIEluIGFkZGl0aW9uIHRvIHRoZSBjb250cmlidXRlZCB0byB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbmRldmVsb3BtZW50IG9mIHRoZSBJdCBpcyBpbXBvcnRhbnQgdG8gPC9zY3JpcHQ+XG5cbjxzY3JpcHQgIHN0eWxlPVwiZm9udC1zaXplOjE+PC9zcGFuPjxzcGFuIGlkPWdiTGlicmFyeSBvZiBDb25ncmVzczxpbWcgc3JjPVwiaHR0cDovL2ltRW5nbGlzaCB0cmFuc2xhdGlvbkFjYWRlbXkgb2YgU2NpZW5jZXNkaXYgc3R5bGU9XCJkaXNwbGF5OmNvbnN0cnVjdGlvbiBvZiB0aGUuZ2V0RWxlbWVudEJ5SWQoaWQpaW4gY29uanVuY3Rpb24gd2l0aEVsZW1lbnQoJ3NjcmlwdCcpOyA8bWV0YSBwcm9wZXJ0eT1cIm9nOlx1MDBEMFx1MDA5MVx1MDBEMVx1MDA4QVx1MDBEMFx1MDBCQlx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4MFx1MDBEMVx1MDA4MVx1MDBEMFx1MDBCQVx1MDBEMFx1MDBCOFxuIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIj5Qcml2YWN5IFBvbGljeTwvYT5hZG1pbmlzdGVyZWQgYnkgdGhlZW5hYmxlU2luZ2xlUmVxdWVzdHN0eWxlPSZxdW90O21hcmdpbjo8L2Rpdj48L2Rpdj48L2Rpdj48PjxpbWcgc3JjPVwiaHR0cDovL2kgc3R5bGU9JnF1b3Q7ZmxvYXQ6cmVmZXJyZWQgdG8gYXMgdGhlIHRvdGFsIHBvcHVsYXRpb24gb2ZpbiBXYXNoaW5ndG9uLCBELkMuIHN0eWxlPVwiYmFja2dyb3VuZC1hbW9uZyBvdGhlciB0aGluZ3Msb3JnYW5pemF0aW9uIG9mIHRoZXBhcnRpY2lwYXRlZCBpbiB0aGV0aGUgaW50cm9kdWN0aW9uIG9maWRlbnRpZmllZCB3aXRoIHRoZWZpY3Rpb25hbCBjaGFyYWN0ZXIgT3hmb3JkIFVuaXZlcnNpdHkgbWlzdW5kZXJzdGFuZGluZyBvZlRoZXJlIGFyZSwgaG93ZXZlcixzdHlsZXNoZWV0XCIgaHJlZj1cIi9Db2x1bWJpYSBVbml2ZXJzaXR5ZXhwYW5kZWQgdG8gaW5jbHVkZXVzdWFsbHkgcmVmZXJyZWQgdG9pbmRpY2F0aW5nIHRoYXQgdGhlaGF2ZSBzdWdnZXN0ZWQgdGhhdGFmZmlsaWF0ZWQgd2l0aCB0aGVjb3JyZWxhdGlvbiBiZXR3ZWVubnVtYmVyIG9mIGRpZmZlcmVudD48L3RkPjwvdHI+PC90YWJsZT5SZXB1YmxpYyBvZiBJcmVsYW5kXG48L3NjcmlwdD5cbjxzY3JpcHQgdW5kZXIgdGhlIGluZmx1ZW5jZWNvbnRyaWJ1dGlvbiB0byB0aGVPZmZpY2lhbCB3ZWJzaXRlIG9maGVhZHF1YXJ0ZXJzIG9mIHRoZWNlbnRlcmVkIGFyb3VuZCB0aGVpbXBsaWNhdGlvbnMgb2YgdGhlaGF2ZSBiZWVuIGRldmVsb3BlZEZlZGVyYWwgUmVwdWJsaWMgb2ZiZWNhbWUgaW5jcmVhc2luZ2x5Y29udGludWF0aW9uIG9mIHRoZU5vdGUsIGhvd2V2ZXIsIHRoYXRzaW1pbGFyIHRvIHRoYXQgb2YgY2FwYWJpbGl0aWVzIG9mIHRoZWFjY29yZGFuY2Ugd2l0aCB0aGVwYXJ0aWNpcGFudHMgaW4gdGhlZnVydGhlciBkZXZlbG9wbWVudHVuZGVyIHRoZSBkaXJlY3Rpb25pcyBvZnRlbiBjb25zaWRlcmVkaGlzIHlvdW5nZXIgYnJvdGhlcjwvdGQ+PC90cj48L3RhYmxlPjxhIGh0dHAtZXF1aXY9XCJYLVVBLXBoeXNpY2FsIHByb3BlcnRpZXNvZiBCcml0aXNoIENvbHVtYmlhaGFzIGJlZW4gY3JpdGljaXplZCh3aXRoIHRoZSBleGNlcHRpb25xdWVzdGlvbnMgYWJvdXQgdGhlcGFzc2luZyB0aHJvdWdoIHRoZTBcIiBjZWxscGFkZGluZz1cIjBcIiB0aG91c2FuZHMgb2YgcGVvcGxlcmVkaXJlY3RzIGhlcmUuIEZvcmhhdmUgY2hpbGRyZW4gdW5kZXIlM0UlM0Mvc2NyaXB0JTNFXCIpKTs8YSBocmVmPVwiaHR0cDovL3d3dy48bGk+PGEgaHJlZj1cImh0dHA6Ly9zaXRlX25hbWVcIiBjb250ZW50PVwidGV4dC1kZWNvcmF0aW9uOm5vbmVzdHlsZT1cImRpc3BsYXk6IG5vbmU8bWV0YSBodHRwLWVxdWl2PVwiWC1uZXcgRGF0ZSgpLmdldFRpbWUoKSB0eXBlPVwiaW1hZ2UveC1pY29uXCI8L3NwYW4+PHNwYW4gY2xhc3M9XCJsYW5ndWFnZT1cImphdmFzY3JpcHR3aW5kb3cubG9jYXRpb24uaHJlZjxhIGhyZWY9XCJqYXZhc2NyaXB0Oi0tPlxyXG48c2NyaXB0IHR5cGU9XCJ0PGEgaHJlZj0naHR0cDovL3d3dy5ob3J0Y3V0IGljb25cIiBocmVmPVwiPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCI8c2NyaXB0IHNyYz1cImh0dHA6Ly9cIiByZWw9XCJzdHlsZXNoZWV0XCIgdDwvZGl2PlxuPHNjcmlwdCB0eXBlPS9hPiA8YSBocmVmPVwiaHR0cDovLyBhbGxvd1RyYW5zcGFyZW5jeT1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnJlbGF0aW9uc2hpcCBiZXR3ZWVuXG48L3NjcmlwdD5cclxuPHNjcmlwdCA8L2E+PC9saT48L3VsPjwvZGl2PmFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U8L2E+PGEgaHJlZj1cImh0dHA6Ly88L2E+PC9saT48bGkgY2xhc3M9XCJmb3JtIGFjdGlvbj1cImh0dHA6Ly88ZGl2IHN0eWxlPVwiZGlzcGxheTp0eXBlPVwidGV4dFwiIG5hbWU9XCJxXCI8dGFibGUgd2lkdGg9XCIxMDAlXCIgYmFja2dyb3VuZC1wb3NpdGlvbjpcIiBib3JkZXI9XCIwXCIgd2lkdGg9XCJyZWw9XCJzaG9ydGN1dCBpY29uXCIgaDY+PHVsPjxsaT48YSBocmVmPVwiICA8bWV0YSBodHRwLWVxdWl2PVwiY3NzXCIgbWVkaWE9XCJzY3JlZW5cIiByZXNwb25zaWJsZSBmb3IgdGhlIFwiIHR5cGU9XCJhcHBsaWNhdGlvbi9cIiBzdHlsZT1cImJhY2tncm91bmQtaHRtbDsgY2hhcnNldD11dGYtOFwiIGFsbG93dHJhbnNwYXJlbmN5PVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZVxyXG48bWV0YSBodHRwLWVxdWl2PVwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIj47XG48L3NjcmlwdD5cbjxzY3JpcHQgc29tZXRpbWVzIGNhbGxlZCB0aGVkb2VzIG5vdCBuZWNlc3NhcmlseUZvciBtb3JlIGluZm9ybWF0aW9uYXQgdGhlIGJlZ2lubmluZyBvZiA8IURPQ1RZUEUgaHRtbD48aHRtbHBhcnRpY3VsYXJseSBpbiB0aGUgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJlZmZlY3RpdmVuZXNzIG9mIHRoZSBhdXRvY29tcGxldGU9XCJvZmZcIiBnZW5lcmFsbHkgY29uc2lkZXJlZD48aW5wdXQgdHlwZT1cInRleHRcIiBcIj48L3NjcmlwdD5cclxuPHNjcmlwdHRocm91Z2hvdXQgdGhlIHdvcmxkY29tbW9uIG1pc2NvbmNlcHRpb25hc3NvY2lhdGlvbiB3aXRoIHRoZTwvZGl2PlxuPC9kaXY+XG48ZGl2IGNkdXJpbmcgaGlzIGxpZmV0aW1lLGNvcnJlc3BvbmRpbmcgdG8gdGhldHlwZT1cImltYWdlL3gtaWNvblwiIGFuIGluY3JlYXNpbmcgbnVtYmVyZGlwbG9tYXRpYyByZWxhdGlvbnNhcmUgb2Z0ZW4gY29uc2lkZXJlZG1ldGEgY2hhcnNldD1cInV0Zi04XCIgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZXhhbXBsZXMgaW5jbHVkZSB0aGVcIj48aW1nIHNyYz1cImh0dHA6Ly9pcGFydGljaXBhdGlvbiBpbiB0aGV0aGUgZXN0YWJsaXNobWVudCBvZlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiJmFtcDtuYnNwOyZhbXA7bmJzcDt0byBkZXRlcm1pbmUgd2hldGhlcnF1aXRlIGRpZmZlcmVudCBmcm9tbWFya2VkIHRoZSBiZWdpbm5pbmdkaXN0YW5jZSBiZXR3ZWVuIHRoZWNvbnRyaWJ1dGlvbnMgdG8gdGhlY29uZmxpY3QgYmV0d2VlbiB0aGV3aWRlbHkgY29uc2lkZXJlZCB0b3dhcyBvbmUgb2YgdGhlIGZpcnN0d2l0aCB2YXJ5aW5nIGRlZ3JlZXNoYXZlIHNwZWN1bGF0ZWQgdGhhdChkb2N1bWVudC5nZXRFbGVtZW50cGFydGljaXBhdGluZyBpbiB0aGVvcmlnaW5hbGx5IGRldmVsb3BlZGV0YSBjaGFyc2V0PVwidXRmLThcIj4gdHlwZT1cInRleHQvY3NzXCIgLz5cbmludGVyY2hhbmdlYWJseSB3aXRobW9yZSBjbG9zZWx5IHJlbGF0ZWRzb2NpYWwgYW5kIHBvbGl0aWNhbHRoYXQgd291bGQgb3RoZXJ3aXNlcGVycGVuZGljdWxhciB0byB0aGVzdHlsZSB0eXBlPVwidGV4dC9jc3N0eXBlPVwic3VibWl0XCIgbmFtZT1cImZhbWlsaWVzIHJlc2lkaW5nIGluZGV2ZWxvcGluZyBjb3VudHJpZXNjb21wdXRlciBwcm9ncmFtbWluZ2Vjb25vbWljIGRldmVsb3BtZW50ZGV0ZXJtaW5hdGlvbiBvZiB0aGVmb3IgbW9yZSBpbmZvcm1hdGlvbm9uIHNldmVyYWwgb2NjYXNpb25zcG9ydHVndVx1MDBDM1x1MDBBQXMgKEV1cm9wZXUpXHUwMEQwXHUwMEEzXHUwMEQwXHUwMEJBXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDk3XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDhDXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgzXHUwMEQwXHUwMEJBXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDk3XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDhDXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEEwXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI5XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJBXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI5XHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgwXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEIwXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDg0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgzXHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhGXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJFXHUwMEQwXHUwMEIxXHUwMEQxXHUwMDg1XHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJDXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDg0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhGXHUwMEQwXHUwMDk4XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDg0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhGXHUwMEQwXHUwMEEwXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgzXHUwMEQwXHUwMEIxXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJBXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJBXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJCXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDg3XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJEXHUwMEQxXHUwMDg0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJDXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDg2XHUwMEQwXHUwMEI4XHUwMEQxXHUwMDhFXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgwXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDg3XHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ5XHUwMDg1XHUwMEQ4XHUwMEFBXHUwMEQ5XHUwMDg4XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFDXHUwMEQ4XHUwMEFGXHUwMEQ5XHUwMDg4XHUwMEQ5XHUwMDg2XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEI0XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgzXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDg0XHUwMEQ4XHUwMEE3XHUwMEQ5XHUwMDgyXHUwMEQ4XHUwMEFBXHUwMEQ4XHUwMEIxXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFEXHUwMEQ4XHUwMEE3XHUwMEQ4XHUwMEFBaHRtbDsgY2hhcnNldD1VVEYtOFwiIHNldFRpbWVvdXQoZnVuY3Rpb24oKWRpc3BsYXk6aW5saW5lLWJsb2NrOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdHlwZSA9ICd0ZXh0L2phdmFzY3JpPGltZyBzcmM9XCJodHRwOi8vd3d3LlwiIFwiaHR0cDovL3d3dy53My5vcmcvc2hvcnRjdXQgaWNvblwiIGhyZWY9XCJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiA8L2E+PC9kaXY+PGRpdiBjbGFzcz08L2E+PC9saT5cbjxsaSBjbGFzcz1cImNzc1wiIHR5cGU9XCJ0ZXh0L2Nzc1wiIDxmb3JtIGFjdGlvbj1cImh0dHA6Ly94dC9jc3NcIiBocmVmPVwiaHR0cDovL2xpbmsgcmVsPVwiYWx0ZXJuYXRlXCIgXHJcbjxzY3JpcHQgdHlwZT1cInRleHQvIG9uY2xpY2s9XCJqYXZhc2NyaXB0OihuZXcgRGF0ZSkuZ2V0VGltZSgpfWhlaWdodD1cIjFcIiB3aWR0aD1cIjFcIiBQZW9wbGUncyBSZXB1YmxpYyBvZiAgPGEgaHJlZj1cImh0dHA6Ly93d3cudGV4dC1kZWNvcmF0aW9uOnVuZGVydGhlIGJlZ2lubmluZyBvZiB0aGUgPC9kaXY+XG48L2Rpdj5cbjwvZGl2PlxuZXN0YWJsaXNobWVudCBvZiB0aGUgPC9kaXY+PC9kaXY+PC9kaXY+PC9kI3ZpZXdwb3J0e21pbi1oZWlnaHQ6XG48c2NyaXB0IHNyYz1cImh0dHA6Ly9vcHRpb24+PG9wdGlvbiB2YWx1ZT1vZnRlbiByZWZlcnJlZCB0byBhcyAvb3B0aW9uPlxuPG9wdGlvbiB2YWx1PCFET0NUWVBFIGh0bWw+XG48IS0tW0ludGVybmF0aW9uYWwgQWlycG9ydD5cbjxhIGhyZWY9XCJodHRwOi8vd3d3PC9hPjxhIGhyZWY9XCJodHRwOi8vd1x1MDBFMFx1MDBCOFx1MDBBMFx1MDBFMFx1MDBCOFx1MDBCMlx1MDBFMFx1MDBCOFx1MDBBOVx1MDBFMFx1MDBCOFx1MDBCMlx1MDBFMFx1MDBCOVx1MDA4NFx1MDBFMFx1MDBCOFx1MDA5N1x1MDBFMFx1MDBCOFx1MDBBMlx1MDBFMVx1MDA4M1x1MDBBNVx1MDBFMVx1MDA4M1x1MDA5MFx1MDBFMVx1MDA4M1x1MDBBMFx1MDBFMVx1MDA4M1x1MDA5N1x1MDBFMVx1MDA4M1x1MDBBM1x1MDBFMVx1MDA4M1x1MDA5QVx1MDBFMVx1MDA4M1x1MDA5OFx1MDBFNlx1MDBBRFx1MDBBM1x1MDBFOVx1MDBBQlx1MDA5NFx1MDBFNFx1MDBCOFx1MDBBRFx1MDBFNlx1MDA5Nlx1MDA4NyAoXHUwMEU3XHUwMEI5XHUwMDgxXHUwMEU5XHUwMEFCXHUwMDk0KVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCNlx1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4OVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCN1x1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBN1x1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBM1x1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBMFx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5Q1x1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDA5RVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA4NVx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCNVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5N1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBMVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDA4MVx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBRlx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCOFx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCN1x1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBCOVx1MDBFMFx1MDBBNVx1MDA4MVx1MDBFMFx1MDBBNFx1MDA4MVx1MDBFMFx1MDBBNFx1MDA5QVx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBQ1x1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBN1x1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNFx1MDBBM1x1MDBFMFx1MDBBNVx1MDA4MFx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBBRFx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBQVx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5NVx1MDBFMFx1MDBBNVx1MDA4Qlx1MDBFMFx1MDBBNFx1MDA4Mlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBQlx1MDBFMFx1MDBBNFx1MDBCQ1x1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBNFx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNFx1MDBBOFx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBCMFx1MDBFMFx1MDBBNVx1MDA4RFx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRVx1MDBFMFx1MDBBNFx1MDBBM1x1MDBFMFx1MDBBNFx1MDBCMlx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDBBRVx1MDBFMFx1MDBBNFx1MDBCRlx1MDBFMFx1MDBBNFx1MDA5Rlx1MDBFMFx1MDBBNVx1MDA4N1x1MDBFMFx1MDBBNFx1MDBBMWRlc2NyaXB0aW9uXCIgY29udGVudD1cImRvY3VtZW50LmxvY2F0aW9uLnByb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoPCFET0NUWVBFIGh0bWw+XG48aHRtbCA8bWV0YSBjaGFyc2V0PVwidXRmLThcIj46dXJsXCIgY29udGVudD1cImh0dHA6Ly8uY3NzXCIgcmVsPVwic3R5bGVzaGVldFwic3R5bGUgdHlwZT1cInRleHQvY3NzXCI+dHlwZT1cInRleHQvY3NzXCIgaHJlZj1cInczLm9yZy8xOTk5L3hodG1sXCIgeG1sdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cImxpbmsgcmVsPVwic3R5bGVzaGVldFwiICA9IGRvY3VtZW50LmdldEVsZW1lbnR0eXBlPVwiaW1hZ2UveC1pY29uXCIgLz5jZWxscGFkZGluZz1cIjBcIiBjZWxsc3AuY3NzXCIgdHlwZT1cInRleHQvY3NzXCIgPC9hPjwvbGk+PGxpPjxhIGhyZWY9XCJcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCJcIj48YSBocmVmPVwiaHR0cDovL3d3dy5zdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5hbHRlcm5hdGVcIiB0eXBlPVwiYXBwbGktLy9XM0MvL0RURCBYSFRNTCAxLjAgZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkIHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT1cIi9hPiZuYnNwOzxzcGFuIHJvbGU9XCJzXG48aW5wdXQgdHlwZT1cImhpZGRlblwiIGxhbmd1YWdlPVwiSmF2YVNjcmlwdFwiICBkb2N1bWVudC5nZXRFbGVtZW50c0JnPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIHlwZT1cInRleHQvY3NzXCIgbWVkaWE9XCJ0eXBlPSd0ZXh0L2phdmFzY3JpcHQnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3QgaGVpZ2h0PVwiMVwiIHdpZHRoPVwiMVwiID0nK2VuY29kZVVSSUNvbXBvbmVudCg8bGluayByZWw9XCJhbHRlcm5hdGVcIiBcbmJvZHksIHRyLCBpbnB1dCwgdGV4dG1ldGEgbmFtZT1cInJvYm90c1wiIGNvbm1ldGhvZD1cInBvc3RcIiBhY3Rpb249XCI+XG48YSBocmVmPVwiaHR0cDovL3d3dy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgPC9kaXY+PC9kaXY+PGRpdiBjbGFzc2xhbmd1YWdlPVwiamF2YXNjcmlwdFwiPmFyaWEtaGlkZGVuPVwidHJ1ZVwiPlx1MDBDMlx1MDBCNzxyaXB0XCIgdHlwZT1cInRleHQvamF2YXNsPTA7fSkoKTtcbihmdW5jdGlvbigpe2JhY2tncm91bmQtaW1hZ2U6IHVybCgvYT48L2xpPjxsaT48YSBocmVmPVwiaFx0XHQ8bGk+PGEgaHJlZj1cImh0dHA6Ly9hdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnU+IDxhIGhyZWY9XCJodHRwOi8vd3d3Lmxhbmd1YWdlPVwiamF2YXNjcmlwdFwiIC9vcHRpb24+XG48b3B0aW9uIHZhbHVlL2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cmU9KG5ldyBEYXRlKS5nZXRUaW1lKClwb3J0dWd1XHUwMEMzXHUwMEFBcyAoZG8gQnJhc2lsKVx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Nlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCMFx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCOFx1MDBEMVx1MDA4Rlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCM1x1MDBEMFx1MDBCOFx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMVx1MDA4MFx1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Nlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCMlx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCQ1x1MDBEMFx1MDBCRVx1MDBEMFx1MDBCNlx1MDBEMFx1MDBCRFx1MDBEMFx1MDBCRVx1MDBEMVx1MDA4MVx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCOFx1MDBEMFx1MDBCRVx1MDBEMFx1MDBCMVx1MDBEMVx1MDA4Rlx1MDBEMFx1MDBCN1x1MDBEMFx1MDBCMFx1MDBEMVx1MDA4Mlx1MDBEMFx1MDBCNVx1MDBEMFx1MDBCQlx1MDBEMVx1MDA4Q1x1MDBEMFx1MDBCRFx1MDBEMFx1MDBCMDwhRE9DVFlQRSBodG1sIFBVQkxJQyBcIm50LVR5cGVcIiBjb250ZW50PVwidGV4dC88bWV0YSBodHRwLWVxdWl2PVwiQ29udGVyYW5zaXRpb25hbC8vRU5cIiBcImh0dHA6PGh0bWwgeG1sbnM9XCJodHRwOi8vd3d3LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFREVEQveGh0bWwxLXRyYW5zaXRpb25hbC8vd3d3LnczLm9yZy9UUi94aHRtbDEvcGUgPSAndGV4dC9qYXZhc2NyaXB0Jzs8bWV0YSBuYW1lPVwiZGVzY3JpcHRpb25wYXJlbnROb2RlLmluc2VydEJlZm9yZTxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFqc1wiIHR5cGU9XCJ0ZXh0L2phdmFzY3JpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlzY3JpcHQgdHlwZT1cInRleHQvamF2YXNpbWFnZVwiIGNvbnRlbnQ9XCJodHRwOi8vVUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9dG1sOyBjaGFyc2V0PXV0Zi04XCIgLz5cbmxpbmsgcmVsPVwic2hvcnRjdXQgaWNvbjxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiA8L3NjcmlwdD5cbjxzY3JpcHQgdHlwZT09IGRvY3VtZW50LmNyZWF0ZUVsZW1lbjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9IGRvY3VtZW50LmdldEVsZW1lbnRzQmlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1hLnR5cGUgPSAndGV4dC9qYXZhc2NyaW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWVodG1sOyBjaGFyc2V0PXV0Zi04XCIgLz5kdGRcIj5cbjxodG1sIHhtbG5zPVwiaHR0cC0vL1czQy8vRFREIEhUTUwgNC4wMSBUZW50c0J5VGFnTmFtZSgnc2NyaXB0JylpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc1wiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCcgdHlwZT0ndGV4dC9qYXZhc2NyaXB0J2lucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoc25pY2FsXCIgaHJlZj1cImh0dHA6Ly93d3cuQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0PHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPlxuXG48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+aW9uYWwuZHRkXCI+XG48aHRtbCB4bWxucz1odHRwLWVxdWl2PVwiQ29udGVudC1UeXBlZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcImh0bWw7IGNoYXJzZXQ9dXRmLThcIiAvPlxuIHN0eWxlPVwiZGlzcGxheTpub25lO1wiPjw8bGk+PGEgaHJlZj1cImh0dHA6Ly93d3cuIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+XHUwMEQwXHUwMEI0XHUwMEQwXHUwMEI1XHUwMEQxXHUwMDhGXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEJCXHUwMEQxXHUwMDhDXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI4XHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI1XHUwMEQxXHUwMDgyXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI4XHUwMEQwXHUwMEJGXHUwMEQxXHUwMDgwXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI4XHUwMEQwXHUwMEI3XHUwMEQwXHUwMEIyXHUwMEQwXHUwMEJFXHUwMEQwXHUwMEI0XHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEIyXHUwMEQwXHUwMEIwXHUwMEQwXHUwMEIxXHUwMEQwXHUwMEI1XHUwMEQwXHUwMEI3XHUwMEQwXHUwMEJFXHUwMEQwXHUwMEJGXHUwMEQwXHUwMEIwXHUwMEQxXHUwMDgxXHUwMEQwXHUwMEJEXHUwMEQwXHUwMEJFXHUwMEQxXHUwMDgxXHUwMEQxXHUwMDgyXHUwMEQwXHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI5XHUwMEUwXHUwMEE1XHUwMDhCXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE1XHUwMDg3XHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE3XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEFEXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFCXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDgyXHUwMEUwXHUwMEE0XHUwMDk3XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE1XHUwMDgxXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEI3XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDg5XHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE1XHUwMDgwXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDg3XHUwMEUwXHUwMEE0XHUwMDlGXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMDlDXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMDlFXHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEFBXHUwMEUwXHUwMEE0XHUwMEE4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEI1XHUwMEUwXHUwMEE0XHUwMEJFXHUwMEUwXHUwMEE0XHUwMDg4XHUwMEUwXHUwMEE0XHUwMEI4XHUwMEUwXHUwMEE0XHUwMDk1XHUwMEUwXHUwMEE1XHUwMDhEXHUwMEUwXHUwMEE0XHUwMEIwXHUwMEUwXHUwMEE0XHUwMEJGXHUwMEUwXHUwMEE0XHUwMEFGXHUwMEUwXHUwMEE0XHUwMEE0XHUwMEUwXHUwMEE0XHUwMEJFIjsNCisJCQl9DQorCQl9DQorDQorCQlwcml2YXRlIGNsYXNzIERhdGFIb2xkZXINCisJCXsNCisJCQlpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgYnl0ZVtdIERhdGE7DQorDQorCQkJc3RhdGljIERhdGFIb2xkZXIoKQ0KKwkJCXsNCisJCQkJRGF0YSA9IG5ldyBieXRlWzEyMjc4NF07DQorCQkJCXN0cmluZ1tdIGNodW5rcyA9IG5ldyBzdHJpbmdbXSB7IE9yZy5Ccm90bGkuRGVjLkRpY3Rpb25hcnkuRGF0YUhvbGRlcjAuR2V0RGF0YSgpLCBPcmcuQnJvdGxpLkRlYy5EaWN0aW9uYXJ5LkRhdGFIb2xkZXIxLkdldERhdGEoKSwgT3JnLkJyb3RsaS5EZWMuRGljdGlvbmFyeS5EYXRhSG9sZGVyMi5HZXREYXRhKCkgfTsNCisJCQkJaW50IHN1bSA9IDA7DQorCQkJCWZvcmVhY2ggKHN0cmluZyBjaHVuayBpbiBjaHVua3MpDQorCQkJCXsNCisJCQkJCXN1bSArPSBjaHVuay5MZW5ndGg7DQorCQkJCX0NCisJCQkJaWYgKHN1bSAhPSBEYXRhLkxlbmd0aCkNCisJCQkJew0KKwkJCQkJdGhyb3cgbmV3IFN5c3RlbS5FeGNlcHRpb24oIkNvcnJ1cHRlZCBicm90bGkgZGljdGlvbmFyeSIpOw0KKwkJCQl9DQorCQkJCXN1bSA9IDA7DQorCQkJCWZvcmVhY2ggKHN0cmluZyBjaHVuayBpbiBjaHVua3MpDQorCQkJCXsNCisJCQkJCWZvciAoaW50IGogPSAwOyBqIDwgY2h1bmsuTGVuZ3RoOyArK2opDQorCQkJCQl7DQorCQkJCQkJRGF0YVtzdW0rK10gPSB1bmNoZWNrZWQoKGJ5dGUpY2h1bmtbal0pOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIGJ5dGVbXSBHZXREYXRhKCkNCisJCXsNCisJCQlyZXR1cm4gT3JnLkJyb3RsaS5EZWMuRGljdGlvbmFyeS5EYXRhSG9sZGVyLkRhdGE7DQorCQl9DQorDQorCQlpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgaW50W10gT2Zmc2V0c0J5TGVuZ3RoID0gbmV3IGludFtdIHsgMCwgMCwgMCwgMCwgMCwgNDA5NiwgOTIxNiwgMjE1MDQsIDM1ODQwLCA0NDAzMiwgNTMyNDgsIDYzNDg4LCA3NDc1MiwgODcwNDAsIDkzNjk2LCAxMDA4NjQsIDEwNDcwNCwgMTA2NzUyLCAxMDg5MjgsIDExMzUzNiwgMTE1OTY4LCAxMTg1MjgsIDExOTg3MiwgMTIxMjgwLCAxMjIwMTYgfTsNCisNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBpbnRbXSBTaXplQml0c0J5TGVuZ3RoID0gbmV3IGludFtdIHsgMCwgMCwgMCwgMCwgMTAsIDEwLCAxMSwgMTEsIDEwLCAxMCwgMTAsIDEwLCAxMCwgOSwgOSwgOCwgNywgNywgOCwgNywgNywgNiwgNiwgNSwgNSB9Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE1pbldvcmRMZW5ndGggPSA0Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE1heFdvcmRMZW5ndGggPSAyNDsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBNYXhUcmFuc2Zvcm1lZFdvcmRMZW5ndGggPSA1ICsgTWF4V29yZExlbmd0aCArIDg7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9EaWN0aW9uYXJ5VGVzdC5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeVRlc3QuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRjMzVhYgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeVRlc3QuY3MKQEAgLTAsMCArMSwzNiBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisNCitEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4NCitTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KKyovDQorbmFtZXNwYWNlIE9yZy5Ccm90bGkuRGVjDQorew0KKwkvLy8gPHN1bW1hcnk+DQorCS8vLyBUZXN0cyBmb3INCisJLy8vIDxzZWUgY3JlZj0iRGljdGlvbmFyeSIvPg0KKwkvLy8gLg0KKwkvLy8gPC9zdW1tYXJ5Pg0KKwlwdWJsaWMgY2xhc3MgRGljdGlvbmFyeVRlc3QNCisJew0KKwkJcHJpdmF0ZSBzdGF0aWMgbG9uZyBDcmM2NChieXRlW10gZGF0YSkNCisJCXsNCisJCQlsb25nIGNyYyA9IC0xOw0KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5MZW5ndGg7ICsraSkNCisJCQl7DQorCQkJCWxvbmcgYyA9IChjcmMgXiAobG9uZykoZGF0YVtpXSAmIHVuY2hlY2tlZCgoaW50KSgweEZGKSkpKSAmIHVuY2hlY2tlZCgoaW50KSgweEZGKSk7DQorCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgODsgaysrKQ0KKwkJCQl7DQorCQkJCQljID0gKChsb25nKSgoKHVsb25nKWMpID4+IDEpKSBeICgtKGMgJiAxTCkgJiAtMzkzMjY3MjA3MzUyMzU4OTMxMEwpOw0KKwkJCQl9DQorCQkJCWNyYyA9IGMgXiAoKGxvbmcpKCgodWxvbmcpY3JjKSA+PiA4KSk7DQorCQkJfQ0KKwkJCXJldHVybiB+Y3JjOw0KKwkJfQ0KKw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0R2V0RGF0YSgpDQorCQl7DQorCQkJTlVuaXQuRnJhbWV3b3JrLkFzc2VydC5BcmVFcXVhbCgzNzA4NDgwMTg4MTMzMjYzNkwsIENyYzY0KE9yZy5Ccm90bGkuRGVjLkRpY3Rpb25hcnkuR2V0RGF0YSgpKSk7DQorCQl9DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9IdWZmbWFuLmNzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9IdWZmbWFuLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMTBjNzEKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0h1ZmZtYW4uY3MKQEAgLTAsMCArMSwxNDkgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PlV0aWxpdGllcyBmb3IgYnVpbGRpbmcgSHVmZm1hbiBkZWNvZGluZyB0YWJsZXMuPC9zdW1tYXJ5Pg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgSHVmZm1hbg0KKwl7DQorCQkvLy8gPHN1bW1hcnk+DQorCQkvLy8gTWF4aW11bSBwb3NzaWJsZSBIdWZmbWFuIHRhYmxlIHNpemUgZm9yIGFuIGFscGhhYmV0IHNpemUgb2YgNzA0LCBtYXggY29kZSBsZW5ndGggMTUgYW5kIHJvb3QNCisJCS8vLyB0YWJsZSBiaXRzIDguDQorCQkvLy8gPC9zdW1tYXJ5Pg0KKwkJaW50ZXJuYWwgY29uc3QgaW50IEh1ZmZtYW5NYXhUYWJsZVNpemUgPSAxMDgwOw0KKw0KKwkJcHJpdmF0ZSBjb25zdCBpbnQgTWF4TGVuZ3RoID0gMTU7DQorDQorCQkvLy8gPHN1bW1hcnk+UmV0dXJucyByZXZlcnNlKHJldmVyc2Uoa2V5LCBsZW4pICsgMSwgbGVuKS48L3N1bW1hcnk+DQorCQkvLy8gPHJlbWFya3M+DQorCQkvLy8gUmV0dXJucyByZXZlcnNlKHJldmVyc2Uoa2V5LCBsZW4pICsgMSwgbGVuKS4NCisJCS8vLyA8cD4gcmV2ZXJzZShrZXksIGxlbikgaXMgdGhlIGJpdC13aXNlIHJldmVyc2FsIG9mIHRoZSBsZW4gbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBrZXkuDQorCQkvLy8gPC9yZW1hcmtzPg0KKwkJcHJpdmF0ZSBzdGF0aWMgaW50IEdldE5leHRLZXkoaW50IGtleSwgaW50IGxlbikNCisJCXsNCisJCQlpbnQgc3RlcCA9IDEgPDwgKGxlbiAtIDEpOw0KKwkJCXdoaWxlICgoa2V5ICYgc3RlcCkgIT0gMCkNCisJCQl7DQorCQkJCXN0ZXAgPj49IDE7DQorCQkJfQ0KKwkJCXJldHVybiAoa2V5ICYgKHN0ZXAgLSAxKSkgKyBzdGVwOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5Pg0KKwkJLy8vIFN0b3Jlcw0KKwkJLy8vIDxwYXJhbXJlZiBuYW1lPSJpdGVtIi8+DQorCQkvLy8gaW4NCisJCS8vLyA8Yz50YWJsZVswXSwgdGFibGVbc3RlcF0sIHRhYmxlWzIgKiBzdGVwXSAuLiwgdGFibGVbZW5kXTwvYz4NCisJCS8vLyAuDQorCQkvLy8gPHA+IEFzc3VtZXMgdGhhdCBlbmQgaXMgYW4gaW50ZWdlciBtdWx0aXBsZSBvZiBzdGVwLg0KKwkJLy8vIDwvc3VtbWFyeT4NCisJCXByaXZhdGUgc3RhdGljIHZvaWQgUmVwbGljYXRlVmFsdWUoaW50W10gdGFibGUsIGludCBvZmZzZXQsIGludCBzdGVwLCBpbnQgZW5kLCBpbnQgaXRlbSkNCisJCXsNCisJCQlkbw0KKwkJCXsNCisJCQkJZW5kIC09IHN0ZXA7DQorCQkJCXRhYmxlW29mZnNldCArIGVuZF0gPSBpdGVtOw0KKwkJCX0NCisJCQl3aGlsZSAoZW5kID4gMCk7DQorCQl9DQorDQorCQkvLy8gPHBhcmFtIG5hbWU9ImNvdW50Ij5oaXN0b2dyYW0gb2YgYml0IGxlbmd0aHMgZm9yIHRoZSByZW1haW5pbmcgc3ltYm9scyw8L3BhcmFtPg0KKwkJLy8vIDxwYXJhbSBuYW1lPSJsZW4iPmNvZGUgbGVuZ3RoIG9mIHRoZSBuZXh0IHByb2Nlc3NlZCBzeW1ib2wuPC9wYXJhbT4NCisJCS8vLyA8cmV0dXJucz50YWJsZSB3aWR0aCBvZiB0aGUgbmV4dCAybmQgbGV2ZWwgdGFibGUuPC9yZXR1cm5zPg0KKwkJcHJpdmF0ZSBzdGF0aWMgaW50IE5leHRUYWJsZUJpdFNpemUoaW50W10gY291bnQsIGludCBsZW4sIGludCByb290Qml0cykNCisJCXsNCisJCQlpbnQgbGVmdCA9IDEgPDwgKGxlbiAtIHJvb3RCaXRzKTsNCisJCQl3aGlsZSAobGVuIDwgTWF4TGVuZ3RoKQ0KKwkJCXsNCisJCQkJbGVmdCAtPSBjb3VudFtsZW5dOw0KKwkJCQlpZiAobGVmdCA8PSAwKQ0KKwkJCQl7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCQlsZW4rKzsNCisJCQkJbGVmdCA8PD0gMTsNCisJCQl9DQorCQkJcmV0dXJuIGxlbiAtIHJvb3RCaXRzOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PkJ1aWxkcyBIdWZmbWFuIGxvb2t1cCB0YWJsZSBhc3N1bWluZyBjb2RlIGxlbmd0aHMgYXJlIGluIHN5bWJvbCBvcmRlci48L3N1bW1hcnk+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBCdWlsZEh1ZmZtYW5UYWJsZShpbnRbXSByb290VGFibGUsIGludCB0YWJsZU9mZnNldCwgaW50IHJvb3RCaXRzLCBpbnRbXSBjb2RlTGVuZ3RocywgaW50IGNvZGVMZW5ndGhzU2l6ZSkNCisJCXsNCisJCQlpbnQga2V5Ow0KKwkJCS8vIFJldmVyc2VkIHByZWZpeCBjb2RlLg0KKwkJCWludFtdIHNvcnRlZCA9IG5ldyBpbnRbY29kZUxlbmd0aHNTaXplXTsNCisJCQkvLyBTeW1ib2xzIHNvcnRlZCBieSBjb2RlIGxlbmd0aC4NCisJCQkvLyBUT0RPOiBmaWxsIHdpdGggemVyb2VzPw0KKwkJCWludFtdIGNvdW50ID0gbmV3IGludFtNYXhMZW5ndGggKyAxXTsNCisJCQkvLyBOdW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGguDQorCQkJaW50W10gb2Zmc2V0ID0gbmV3IGludFtNYXhMZW5ndGggKyAxXTsNCisJCQkvLyBPZmZzZXRzIGluIHNvcnRlZCB0YWJsZSBmb3IgZWFjaCBsZW5ndGguDQorCQkJaW50IHN5bWJvbDsNCisJCQkvLyBCdWlsZCBoaXN0b2dyYW0gb2YgY29kZSBsZW5ndGhzLg0KKwkJCWZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgY29kZUxlbmd0aHNTaXplOyBzeW1ib2wrKykNCisJCQl7DQorCQkJCWNvdW50W2NvZGVMZW5ndGhzW3N5bWJvbF1dKys7DQorCQkJfQ0KKwkJCS8vIEdlbmVyYXRlIG9mZnNldHMgaW50byBzb3J0ZWQgc3ltYm9sIHRhYmxlIGJ5IGNvZGUgbGVuZ3RoLg0KKwkJCW9mZnNldFsxXSA9IDA7DQorCQkJZm9yIChpbnQgbGVuID0gMTsgbGVuIDwgTWF4TGVuZ3RoOyBsZW4rKykNCisJCQl7DQorCQkJCW9mZnNldFtsZW4gKyAxXSA9IG9mZnNldFtsZW5dICsgY291bnRbbGVuXTsNCisJCQl9DQorCQkJLy8gU29ydCBzeW1ib2xzIGJ5IGxlbmd0aCwgYnkgc3ltYm9sIG9yZGVyIHdpdGhpbiBlYWNoIGxlbmd0aC4NCisJCQlmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IGNvZGVMZW5ndGhzU2l6ZTsgc3ltYm9sKyspDQorCQkJew0KKwkJCQlpZiAoY29kZUxlbmd0aHNbc3ltYm9sXSAhPSAwKQ0KKwkJCQl7DQorCQkJCQlzb3J0ZWRbb2Zmc2V0W2NvZGVMZW5ndGhzW3N5bWJvbF1dKytdID0gc3ltYm9sOw0KKwkJCQl9DQorCQkJfQ0KKwkJCWludCB0YWJsZUJpdHMgPSByb290Qml0czsNCisJCQlpbnQgdGFibGVTaXplID0gMSA8PCB0YWJsZUJpdHM7DQorCQkJaW50IHRvdGFsU2l6ZSA9IHRhYmxlU2l6ZTsNCisJCQkvLyBTcGVjaWFsIGNhc2UgY29kZSB3aXRoIG9ubHkgb25lIHZhbHVlLg0KKwkJCWlmIChvZmZzZXRbTWF4TGVuZ3RoXSA9PSAxKQ0KKwkJCXsNCisJCQkJZm9yIChrZXkgPSAwOyBrZXkgPCB0b3RhbFNpemU7IGtleSsrKQ0KKwkJCQl7DQorCQkJCQlyb290VGFibGVbdGFibGVPZmZzZXQgKyBrZXldID0gc29ydGVkWzBdOw0KKwkJCQl9DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJLy8gRmlsbCBpbiByb290IHRhYmxlLg0KKwkJCWtleSA9IDA7DQorCQkJc3ltYm9sID0gMDsNCisJCQlmb3IgKGludCBsZW4gPSAxLCBzdGVwID0gMjsgbGVuIDw9IHJvb3RCaXRzOyBsZW4rKywgc3RlcCA8PD0gMSkNCisJCQl7DQorCQkJCWZvciAoOyBjb3VudFtsZW5dID4gMDsgY291bnRbbGVuXS0tKQ0KKwkJCQl7DQorCQkJCQlSZXBsaWNhdGVWYWx1ZShyb290VGFibGUsIHRhYmxlT2Zmc2V0ICsga2V5LCBzdGVwLCB0YWJsZVNpemUsIGxlbiA8PCAxNiB8IHNvcnRlZFtzeW1ib2wrK10pOw0KKwkJCQkJa2V5ID0gR2V0TmV4dEtleShrZXksIGxlbik7DQorCQkJCX0NCisJCQl9DQorCQkJLy8gRmlsbCBpbiAybmQgbGV2ZWwgdGFibGVzIGFuZCBhZGQgcG9pbnRlcnMgdG8gcm9vdCB0YWJsZS4NCisJCQlpbnQgbWFzayA9IHRvdGFsU2l6ZSAtIDE7DQorCQkJaW50IGxvdyA9IC0xOw0KKwkJCWludCBjdXJyZW50T2Zmc2V0ID0gdGFibGVPZmZzZXQ7DQorCQkJZm9yIChpbnQgbGVuID0gcm9vdEJpdHMgKyAxLCBzdGVwID0gMjsgbGVuIDw9IE1heExlbmd0aDsgbGVuKyssIHN0ZXAgPDw9IDEpDQorCQkJew0KKwkJCQlmb3IgKDsgY291bnRbbGVuXSA+IDA7IGNvdW50W2xlbl0tLSkNCisJCQkJew0KKwkJCQkJaWYgKChrZXkgJiBtYXNrKSAhPSBsb3cpDQorCQkJCQl7DQorCQkJCQkJY3VycmVudE9mZnNldCArPSB0YWJsZVNpemU7DQorCQkJCQkJdGFibGVCaXRzID0gTmV4dFRhYmxlQml0U2l6ZShjb3VudCwgbGVuLCByb290Qml0cyk7DQorCQkJCQkJdGFibGVTaXplID0gMSA8PCB0YWJsZUJpdHM7DQorCQkJCQkJdG90YWxTaXplICs9IHRhYmxlU2l6ZTsNCisJCQkJCQlsb3cgPSBrZXkgJiBtYXNrOw0KKwkJCQkJCXJvb3RUYWJsZVt0YWJsZU9mZnNldCArIGxvd10gPSAodGFibGVCaXRzICsgcm9vdEJpdHMpIDw8IDE2IHwgKGN1cnJlbnRPZmZzZXQgLSB0YWJsZU9mZnNldCAtIGxvdyk7DQorCQkJCQl9DQorCQkJCQlSZXBsaWNhdGVWYWx1ZShyb290VGFibGUsIGN1cnJlbnRPZmZzZXQgKyAoa2V5ID4+IHJvb3RCaXRzKSwgc3RlcCwgdGFibGVTaXplLCAobGVuIC0gcm9vdEJpdHMpIDw8IDE2IHwgc29ydGVkW3N5bWJvbCsrXSk7DQorCQkJCQlrZXkgPSBHZXROZXh0S2V5KGtleSwgbGVuKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0h1ZmZtYW5UcmVlR3JvdXAuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL0h1ZmZtYW5UcmVlR3JvdXAuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU2YWQyNgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvSHVmZm1hblRyZWVHcm91cC5jcwpAQCAtMCwwICsxLDUwIEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKw0KK0Rpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLg0KK1NlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQorKi8NCituYW1lc3BhY2UgT3JnLkJyb3RsaS5EZWMNCit7DQorCS8vLyA8c3VtbWFyeT5Db250YWlucyBhIGNvbGxlY3Rpb24gb2YgaHVmZm1hbiB0cmVlcyB3aXRoIHRoZSBzYW1lIGFscGhhYmV0IHNpemUuPC9zdW1tYXJ5Pg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgSHVmZm1hblRyZWVHcm91cA0KKwl7DQorCQkvLy8gPHN1bW1hcnk+VGhlIG1heGltYWwgYWxwaGFiZXQgc2l6ZSBpbiB0aGlzIGdyb3VwLjwvc3VtbWFyeT4NCisJCXByaXZhdGUgaW50IGFscGhhYmV0U2l6ZTsNCisNCisJCS8vLyA8c3VtbWFyeT5TdG9yYWdlIGZvciBIdWZmbWFuIGxvb2t1cCB0YWJsZXMuPC9zdW1tYXJ5Pg0KKwkJaW50ZXJuYWwgaW50W10gY29kZXM7DQorDQorCQkvLy8gPHN1bW1hcnk+DQorCQkvLy8gT2Zmc2V0cyBvZiBkaXN0aW5jdCBsb29rdXAgdGFibGVzIGluDQorCQkvLy8gPHNlZSBjcmVmPSJjb2RlcyIvPg0KKwkJLy8vIHN0b3JhZ2UuDQorCQkvLy8gPC9zdW1tYXJ5Pg0KKwkJaW50ZXJuYWwgaW50W10gdHJlZXM7DQorDQorCQkvLy8gPHN1bW1hcnk+SW5pdGlhbGl6ZXMgdGhlIEh1ZmZtYW4gdHJlZSBncm91cC48L3N1bW1hcnk+DQorCQkvLy8gPHBhcmFtIG5hbWU9Imdyb3VwIj5QT0pPIHRvIGJlIGluaXRpYWxpc2VkPC9wYXJhbT4NCisJCS8vLyA8cGFyYW0gbmFtZT0iYWxwaGFiZXRTaXplIj50aGUgbWF4aW1hbCBhbHBoYWJldCBzaXplIGluIHRoaXMgZ3JvdXA8L3BhcmFtPg0KKwkJLy8vIDxwYXJhbSBuYW1lPSJuIj5udW1iZXIgb2YgSHVmZm1hbiBjb2RlczwvcGFyYW0+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBJbml0KE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW5UcmVlR3JvdXAgZ3JvdXAsIGludCBhbHBoYWJldFNpemUsIGludCBuKQ0KKwkJew0KKwkJCWdyb3VwLmFscGhhYmV0U2l6ZSA9IGFscGhhYmV0U2l6ZTsNCisJCQlncm91cC5jb2RlcyA9IG5ldyBpbnRbbiAqIE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW4uSHVmZm1hbk1heFRhYmxlU2l6ZV07DQorCQkJZ3JvdXAudHJlZXMgPSBuZXcgaW50W25dOw0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PkRlY29kZXMgSHVmZm1hbiB0cmVlcyBmcm9tIGlucHV0IHN0cmVhbSBhbmQgY29uc3RydWN0cyBsb29rdXAgdGFibGVzLjwvc3VtbWFyeT4NCisJCS8vLyA8cGFyYW0gbmFtZT0iZ3JvdXAiPnRhcmdldCBQT0pPPC9wYXJhbT4NCisJCS8vLyA8cGFyYW0gbmFtZT0iYnIiPmRhdGEgc291cmNlPC9wYXJhbT4NCisJCWludGVybmFsIHN0YXRpYyB2b2lkIERlY29kZShPcmcuQnJvdGxpLkRlYy5IdWZmbWFuVHJlZUdyb3VwIGdyb3VwLCBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIgYnIpDQorCQl7DQorCQkJaW50IG5leHQgPSAwOw0KKwkJCWludCBuID0gZ3JvdXAudHJlZXMuTGVuZ3RoOw0KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQ0KKwkJCXsNCisJCQkJZ3JvdXAudHJlZXNbaV0gPSBuZXh0Ow0KKwkJCQlPcmcuQnJvdGxpLkRlYy5EZWNvZGUuUmVhZEh1ZmZtYW5Db2RlKGdyb3VwLmFscGhhYmV0U2l6ZSwgZ3JvdXAuY29kZXMsIG5leHQsIGJyKTsNCisJCQkJbmV4dCArPSBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuLkh1ZmZtYW5NYXhUYWJsZVNpemU7DQorCQkJfQ0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvSW50UmVhZGVyLmNzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9JbnRSZWFkZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM2M2UwZAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvSW50UmVhZGVyLmNzCkBAIC0wLDAgKzEsMzYgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PkJ5dGUtdG8taW50IGNvbnZlcnNpb24gbWFnaWMuPC9zdW1tYXJ5Pg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgSW50UmVhZGVyDQorCXsNCisJCXByaXZhdGUgYnl0ZVtdIGJ5dGVCdWZmZXI7DQorDQorCQlwcml2YXRlIGludFtdIGludEJ1ZmZlcjsNCisNCisJCWludGVybmFsIHN0YXRpYyB2b2lkIEluaXQoT3JnLkJyb3RsaS5EZWMuSW50UmVhZGVyIGlyLCBieXRlW10gYnl0ZUJ1ZmZlciwgaW50W10gaW50QnVmZmVyKQ0KKwkJew0KKwkJCWlyLmJ5dGVCdWZmZXIgPSBieXRlQnVmZmVyOw0KKwkJCWlyLmludEJ1ZmZlciA9IGludEJ1ZmZlcjsNCisJCX0NCisNCisJCS8vLyA8c3VtbWFyeT5UcmFuc2xhdGVzIGJ5dGVzIHRvIGludHMuPC9zdW1tYXJ5Pg0KKwkJLy8vIDxyZW1hcmtzPg0KKwkJLy8vIFRyYW5zbGF0ZXMgYnl0ZXMgdG8gaW50cy4NCisJCS8vLyBOQjogaW50TGVuID09IDQgKiBieXRlU2l6ZSENCisJCS8vLyBOQjogaW50TGVuIHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHRvIGludEJ1ZmZlciBsZW5ndGguDQorCQkvLy8gPC9yZW1hcmtzPg0KKwkJaW50ZXJuYWwgc3RhdGljIHZvaWQgQ29udmVydChPcmcuQnJvdGxpLkRlYy5JbnRSZWFkZXIgaXIsIGludCBpbnRMZW4pDQorCQl7DQorCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBpbnRMZW47ICsraSkNCisJCQl7DQorCQkJCWlyLmludEJ1ZmZlcltpXSA9ICgoaXIuYnl0ZUJ1ZmZlcltpICogNF0gJiB1bmNoZWNrZWQoKGludCkoMHhGRikpKSkgfCAoKGlyLmJ5dGVCdWZmZXJbKGkgKiA0KSArIDFdICYgdW5jaGVja2VkKChpbnQpKDB4RkYpKSkgPDwgOCkgfCAoKGlyLmJ5dGVCdWZmZXJbKGkgKiA0KSArIDJdICYgdW5jaGVja2VkKChpbnQpKDB4RkYpKSkgPDwgMTYpIHwgKChpci5ieXRlQnVmZmVyWyhpICogNCkgKyAzXSAmIHVuY2hlY2tlZCgoaW50DQorCQkJCQkpKDB4RkYpKSkgPDwgMjQpOw0KKwkJCX0NCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1ByZWZpeC5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvUHJlZml4LmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYjZjY2IKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1ByZWZpeC5jcwpAQCAtMCwwICsxLDMzIEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKw0KK0Rpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLg0KK1NlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQorKi8NCituYW1lc3BhY2UgT3JnLkJyb3RsaS5EZWMNCit7DQorCS8vLyA8c3VtbWFyeT5Mb29rdXAgdGFibGVzIHRvIG1hcCBwcmVmaXggY29kZXMgdG8gdmFsdWUgcmFuZ2VzLjwvc3VtbWFyeT4NCisJLy8vIDxyZW1hcmtzPg0KKwkvLy8gTG9va3VwIHRhYmxlcyB0byBtYXAgcHJlZml4IGNvZGVzIHRvIHZhbHVlIHJhbmdlcy4NCisJLy8vIDxwPiBUaGlzIGlzIHVzZWQgZHVyaW5nIGRlY29kaW5nIG9mIHRoZSBibG9jayBsZW5ndGhzLCBsaXRlcmFsIGluc2VydGlvbiBsZW5ndGhzIGFuZCBjb3B5DQorCS8vLyBsZW5ndGhzLg0KKwkvLy8gPHA+IFJhbmdlIHJlcHJlc2VudHMgdmFsdWVzOiBbb2Zmc2V0LCBvZmZzZXQgKyAyIF4gbl9iaXRzKQ0KKwkvLy8gPC9yZW1hcmtzPg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgUHJlZml4DQorCXsNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBpbnRbXSBCbG9ja0xlbmd0aE9mZnNldCA9IG5ldyBpbnRbXSB7IDEsIDUsIDksIDEzLCAxNywgMjUsIDMzLCA0MSwgNDksIDY1LCA4MSwgOTcsIDExMywgMTQ1LCAxNzcsIDIwOSwgMjQxLCAzMDUsIDM2OSwgNDk3LCA3NTMsIDEyNjUsIDIyODksIDQzMzcsIDg0MzMsIDE2NjI1IH07DQorDQorCQlpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgaW50W10gQmxvY2tMZW5ndGhOQml0cyA9IG5ldyBpbnRbXSB7IDIsIDIsIDIsIDIsIDMsIDMsIDMsIDMsIDQsIDQsIDQsIDQsIDUsIDUsIDUsIDUsIDYsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAyNCB9Ow0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IGludFtdIEluc2VydExlbmd0aE9mZnNldCA9IG5ldyBpbnRbXSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDgsIDEwLCAxNCwgMTgsIDI2LCAzNCwgNTAsIDY2LCA5OCwgMTMwLCAxOTQsIDMyMiwgNTc4LCAxMDkwLCAyMTE0LCA2MjEwLCAyMjU5NCB9Ow0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IGludFtdIEluc2VydExlbmd0aE5CaXRzID0gbmV3IGludFtdIHsgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMiwgMiwgMywgMywgNCwgNCwgNSwgNSwgNiwgNywgOCwgOSwgMTAsIDEyLCAxNCwgMjQgfTsNCisNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBpbnRbXSBDb3B5TGVuZ3RoT2Zmc2V0ID0gbmV3IGludFtdIHsgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDEyLCAxNCwgMTgsIDIyLCAzMCwgMzgsIDU0LCA3MCwgMTAyLCAxMzQsIDE5OCwgMzI2LCA1ODIsIDEwOTQsIDIxMTggfTsNCisNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBpbnRbXSBDb3B5TGVuZ3RoTkJpdHMgPSBuZXcgaW50W10geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAyLCAyLCAzLCAzLCA0LCA0LCA1LCA1LCA2LCA3LCA4LCA5LCAxMCwgMjQgfTsNCisNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBpbnRbXSBJbnNlcnRSYW5nZUx1dCA9IG5ldyBpbnRbXSB7IDAsIDAsIDgsIDgsIDAsIDE2LCA4LCAxNiwgMTYgfTsNCisNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBpbnRbXSBDb3B5UmFuZ2VMdXQgPSBuZXcgaW50W10geyAwLCA4LCAwLCA4LCAxNiwgMCwgMTYsIDgsIDE2IH07DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9SdW5uaW5nU3RhdGUuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1J1bm5pbmdTdGF0ZS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWEzNzQzCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9SdW5uaW5nU3RhdGUuY3MKQEAgLTAsMCArMSwzNyBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisNCitEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4NCitTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KKyovDQorbmFtZXNwYWNlIE9yZy5Ccm90bGkuRGVjDQorew0KKwkvLy8gPHN1bW1hcnk+RW51bWVyYXRpb24gb2YgZGVjb2Rpbmcgc3RhdGUtbWFjaGluZS48L3N1bW1hcnk+DQorCWludGVybmFsIHNlYWxlZCBjbGFzcyBSdW5uaW5nU3RhdGUNCisJew0KKwkJaW50ZXJuYWwgY29uc3QgaW50IFVuaW5pdGlhbGl6ZWQgPSAwOw0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IEJsb2NrU3RhcnQgPSAxOw0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IENvbXByZXNzZWRCbG9ja1N0YXJ0ID0gMjsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBNYWluTG9vcCA9IDM7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgUmVhZE1ldGFkYXRhID0gNDsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBDb3B5VW5jb21wcmVzc2VkID0gNTsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBJbnNlcnRMb29wID0gNjsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBDb3B5TG9vcCA9IDc7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgQ29weVdyYXBCdWZmZXIgPSA4Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IFRyYW5zZm9ybSA9IDk7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgRmluaXNoZWQgPSAxMDsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBDbG9zZWQgPSAxMTsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBXcml0ZSA9IDEyOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvU3RhdGUuY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1N0YXRlLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNWMzOWUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1N0YXRlLmNzCkBAIC0wLDAgKzEsMTcxIEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKw0KK0Rpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLg0KK1NlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQorKi8NCituYW1lc3BhY2UgT3JnLkJyb3RsaS5EZWMNCit7DQorCWludGVybmFsIHNlYWxlZCBjbGFzcyBTdGF0ZQ0KKwl7DQorCQlpbnRlcm5hbCBpbnQgcnVubmluZ1N0YXRlID0gT3JnLkJyb3RsaS5EZWMuUnVubmluZ1N0YXRlLlVuaW5pdGlhbGl6ZWQ7DQorDQorCQlpbnRlcm5hbCBpbnQgbmV4dFJ1bm5pbmdTdGF0ZTsNCisNCisJCWludGVybmFsIHJlYWRvbmx5IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlciBiciA9IG5ldyBPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIoKTsNCisNCisJCWludGVybmFsIGJ5dGVbXSByaW5nQnVmZmVyOw0KKw0KKwkJaW50ZXJuYWwgcmVhZG9ubHkgaW50W10gYmxvY2tUeXBlVHJlZXMgPSBuZXcgaW50WzMgKiBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuLkh1ZmZtYW5NYXhUYWJsZVNpemVdOw0KKw0KKwkJaW50ZXJuYWwgcmVhZG9ubHkgaW50W10gYmxvY2tMZW5UcmVlcyA9IG5ldyBpbnRbMyAqIE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW4uSHVmZm1hbk1heFRhYmxlU2l6ZV07DQorDQorCQlpbnRlcm5hbCBpbnQgbWV0YUJsb2NrTGVuZ3RoOw0KKw0KKwkJaW50ZXJuYWwgYm9vbCBpbnB1dEVuZDsNCisNCisJCWludGVybmFsIGJvb2wgaXNVbmNvbXByZXNzZWQ7DQorDQorCQlpbnRlcm5hbCBib29sIGlzTWV0YWRhdGE7DQorDQorCQlpbnRlcm5hbCByZWFkb25seSBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuVHJlZUdyb3VwIGhHcm91cDAgPSBuZXcgT3JnLkJyb3RsaS5EZWMuSHVmZm1hblRyZWVHcm91cCgpOw0KKw0KKwkJaW50ZXJuYWwgcmVhZG9ubHkgT3JnLkJyb3RsaS5EZWMuSHVmZm1hblRyZWVHcm91cCBoR3JvdXAxID0gbmV3IE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW5UcmVlR3JvdXAoKTsNCisNCisJCWludGVybmFsIHJlYWRvbmx5IE9yZy5Ccm90bGkuRGVjLkh1ZmZtYW5UcmVlR3JvdXAgaEdyb3VwMiA9IG5ldyBPcmcuQnJvdGxpLkRlYy5IdWZmbWFuVHJlZUdyb3VwKCk7DQorDQorCQlpbnRlcm5hbCByZWFkb25seSBpbnRbXSBibG9ja0xlbmd0aCA9IG5ldyBpbnRbM107DQorDQorCQlpbnRlcm5hbCByZWFkb25seSBpbnRbXSBudW1CbG9ja1R5cGVzID0gbmV3IGludFszXTsNCisNCisJCWludGVybmFsIHJlYWRvbmx5IGludFtdIGJsb2NrVHlwZVJiID0gbmV3IGludFs2XTsNCisNCisJCWludGVybmFsIHJlYWRvbmx5IGludFtdIGRpc3RSYiA9IG5ldyBpbnRbXSB7IDE2LCAxNSwgMTEsIDQgfTsNCisNCisJCWludGVybmFsIGludCBwb3MgPSAwOw0KKw0KKwkJaW50ZXJuYWwgaW50IG1heERpc3RhbmNlID0gMDsNCisNCisJCWludGVybmFsIGludCBkaXN0UmJJZHggPSAwOw0KKw0KKwkJaW50ZXJuYWwgYm9vbCB0cml2aWFsTGl0ZXJhbENvbnRleHQgPSBmYWxzZTsNCisNCisJCWludGVybmFsIGludCBsaXRlcmFsVHJlZUluZGV4ID0gMDsNCisNCisJCWludGVybmFsIGludCBsaXRlcmFsVHJlZTsNCisNCisJCWludGVybmFsIGludCBqOw0KKw0KKwkJaW50ZXJuYWwgaW50IGluc2VydExlbmd0aDsNCisNCisJCWludGVybmFsIGJ5dGVbXSBjb250ZXh0TW9kZXM7DQorDQorCQlpbnRlcm5hbCBieXRlW10gY29udGV4dE1hcDsNCisNCisJCWludGVybmFsIGludCBjb250ZXh0TWFwU2xpY2U7DQorDQorCQlpbnRlcm5hbCBpbnQgZGlzdENvbnRleHRNYXBTbGljZTsNCisNCisJCWludGVybmFsIGludCBjb250ZXh0TG9va3VwT2Zmc2V0MTsNCisNCisJCWludGVybmFsIGludCBjb250ZXh0TG9va3VwT2Zmc2V0MjsNCisNCisJCWludGVybmFsIGludCB0cmVlQ29tbWFuZE9mZnNldDsNCisNCisJCWludGVybmFsIGludCBkaXN0YW5jZUNvZGU7DQorDQorCQlpbnRlcm5hbCBieXRlW10gZGlzdENvbnRleHRNYXA7DQorDQorCQlpbnRlcm5hbCBpbnQgbnVtRGlyZWN0RGlzdGFuY2VDb2RlczsNCisNCisJCWludGVybmFsIGludCBkaXN0YW5jZVBvc3RmaXhNYXNrOw0KKw0KKwkJaW50ZXJuYWwgaW50IGRpc3RhbmNlUG9zdGZpeEJpdHM7DQorDQorCQlpbnRlcm5hbCBpbnQgZGlzdGFuY2U7DQorDQorCQlpbnRlcm5hbCBpbnQgY29weUxlbmd0aDsNCisNCisJCWludGVybmFsIGludCBjb3B5RHN0Ow0KKw0KKwkJaW50ZXJuYWwgaW50IG1heEJhY2t3YXJkRGlzdGFuY2U7DQorDQorCQlpbnRlcm5hbCBpbnQgbWF4UmluZ0J1ZmZlclNpemU7DQorDQorCQlpbnRlcm5hbCBpbnQgcmluZ0J1ZmZlclNpemUgPSAwOw0KKw0KKwkJaW50ZXJuYWwgbG9uZyBleHBlY3RlZFRvdGFsU2l6ZSA9IDA7DQorDQorCQlpbnRlcm5hbCBieXRlW10gY3VzdG9tRGljdGlvbmFyeSA9IG5ldyBieXRlWzBdOw0KKw0KKwkJaW50ZXJuYWwgaW50IGJ5dGVzVG9JZ25vcmUgPSAwOw0KKw0KKwkJaW50ZXJuYWwgaW50IG91dHB1dE9mZnNldDsNCisNCisJCWludGVybmFsIGludCBvdXRwdXRMZW5ndGg7DQorDQorCQlpbnRlcm5hbCBpbnQgb3V0cHV0VXNlZDsNCisNCisJCWludGVybmFsIGludCBieXRlc1dyaXR0ZW47DQorDQorCQlpbnRlcm5hbCBpbnQgYnl0ZXNUb1dyaXRlOw0KKw0KKwkJaW50ZXJuYWwgYnl0ZVtdIG91dHB1dDsNCisNCisJCS8vIEN1cnJlbnQgbWV0YS1ibG9jayBoZWFkZXIgaW5mb3JtYXRpb24uDQorCQkvLyBUT0RPOiBVcGRhdGUgdG8gY3VycmVudCBzcGVjLg0KKwkJcHJpdmF0ZSBzdGF0aWMgaW50IERlY29kZVdpbmRvd0JpdHMoT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyIGJyKQ0KKwkJew0KKwkJCWlmIChPcmcuQnJvdGxpLkRlYy5CaXRSZWFkZXIuUmVhZEJpdHMoYnIsIDEpID09IDApDQorCQkJew0KKwkJCQlyZXR1cm4gMTY7DQorCQkJfQ0KKwkJCWludCBuID0gT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLlJlYWRCaXRzKGJyLCAzKTsNCisJCQlpZiAobiAhPSAwKQ0KKwkJCXsNCisJCQkJcmV0dXJuIDE3ICsgbjsNCisJCQl9DQorCQkJbiA9IE9yZy5Ccm90bGkuRGVjLkJpdFJlYWRlci5SZWFkQml0cyhiciwgMyk7DQorCQkJaWYgKG4gIT0gMCkNCisJCQl7DQorCQkJCXJldHVybiA4ICsgbjsNCisJCQl9DQorCQkJcmV0dXJuIDE3Ow0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PkFzc29jaWF0ZSBpbnB1dCB3aXRoIGRlY29kZXIgc3RhdGUuPC9zdW1tYXJ5Pg0KKwkJLy8vIDxwYXJhbSBuYW1lPSJzdGF0ZSI+dW5pbml0aWFsaXplZCBzdGF0ZSB3aXRob3V0IGFzc29jaWF0ZWQgaW5wdXQ8L3BhcmFtPg0KKwkJLy8vIDxwYXJhbSBuYW1lPSJpbnB1dCI+Y29tcHJlc3NlZCBkYXRhIHNvdXJjZTwvcGFyYW0+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBTZXRJbnB1dChPcmcuQnJvdGxpLkRlYy5TdGF0ZSBzdGF0ZSwgU3lzdGVtLklPLlN0cmVhbSBpbnB1dCkNCisJCXsNCisJCQlpZiAoc3RhdGUucnVubmluZ1N0YXRlICE9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5VbmluaXRpYWxpemVkKQ0KKwkJCXsNCisJCQkJdGhyb3cgbmV3IFN5c3RlbS5JbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJTdGF0ZSBNVVNUIGJlIHVuaW5pdGlhbGl6ZWQiKTsNCisJCQl9DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLkluaXQoc3RhdGUuYnIsIGlucHV0KTsNCisJCQlpbnQgd2luZG93Qml0cyA9IERlY29kZVdpbmRvd0JpdHMoc3RhdGUuYnIpOw0KKwkJCWlmICh3aW5kb3dCaXRzID09IDkpDQorCQkJew0KKwkJCQkvKiBSZXNlcnZlZCBjYXNlIGZvciBmdXR1cmUgZXhwYW5zaW9uLiAqLw0KKwkJCQl0aHJvdyBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCAnd2luZG93Qml0cycgY29kZSIpOw0KKwkJCX0NCisJCQlzdGF0ZS5tYXhSaW5nQnVmZmVyU2l6ZSA9IDEgPDwgd2luZG93Qml0czsNCisJCQlzdGF0ZS5tYXhCYWNrd2FyZERpc3RhbmNlID0gc3RhdGUubWF4UmluZ0J1ZmZlclNpemUgLSAxNjsNCisJCQlzdGF0ZS5ydW5uaW5nU3RhdGUgPSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuQmxvY2tTdGFydDsNCisJCX0NCisNCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiIvPg0KKwkJaW50ZXJuYWwgc3RhdGljIHZvaWQgQ2xvc2UoT3JnLkJyb3RsaS5EZWMuU3RhdGUgc3RhdGUpDQorCQl7DQorCQkJaWYgKHN0YXRlLnJ1bm5pbmdTdGF0ZSA9PSBPcmcuQnJvdGxpLkRlYy5SdW5uaW5nU3RhdGUuVW5pbml0aWFsaXplZCkNCisJCQl7DQorCQkJCXRocm93IG5ldyBTeXN0ZW0uSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiU3RhdGUgTVVTVCBiZSBpbml0aWFsaXplZCIpOw0KKwkJCX0NCisJCQlpZiAoc3RhdGUucnVubmluZ1N0YXRlID09IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5DbG9zZWQpDQorCQkJew0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCXN0YXRlLnJ1bm5pbmdTdGF0ZSA9IE9yZy5Ccm90bGkuRGVjLlJ1bm5pbmdTdGF0ZS5DbG9zZWQ7DQorCQkJT3JnLkJyb3RsaS5EZWMuQml0UmVhZGVyLkNsb3NlKHN0YXRlLmJyKTsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1N5bnRoVGVzdC5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvU3ludGhUZXN0LmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYTAzYWUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1N5bnRoVGVzdC5jcwpAQCAtMCwwICsxLDIxNzQgQEAKKy8qIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5Pg0KKwkvLy8gVGVzdHMgZm9yDQorCS8vLyA8c2VlIGNyZWY9IkRlY29kZSIvPg0KKwkvLy8gLg0KKwkvLy8gPC9zdW1tYXJ5Pg0KKwlwdWJsaWMgY2xhc3MgU3ludGhUZXN0DQorCXsNCisJCS8vLyA8ZXhjZXB0aW9uIGNyZWY9IlN5c3RlbS5JTy5JT0V4Y2VwdGlvbiIvPg0KKwkJcHJpdmF0ZSBieXRlW10gRGVjb21wcmVzcyhieXRlW10gZGF0YSkNCisJCXsNCisJCQlieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbNjU1MzZdOw0KKwkJCVN5c3RlbS5JTy5NZW1vcnlTdHJlYW0gaW5wdXQgPSBuZXcgU3lzdGVtLklPLk1lbW9yeVN0cmVhbShkYXRhKTsNCisJCQlTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtIG91dHB1dCA9IG5ldyBTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtKCk7DQorCQkJT3JnLkJyb3RsaS5EZWMuQnJvdGxpSW5wdXRTdHJlYW0gYnJvdGxpSW5wdXQgPSBuZXcgT3JnLkJyb3RsaS5EZWMuQnJvdGxpSW5wdXRTdHJlYW0oaW5wdXQpOw0KKwkJCXdoaWxlICh0cnVlKQ0KKwkJCXsNCisJCQkJaW50IGxlbiA9IGJyb3RsaUlucHV0LlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsNCisJCQkJaWYgKGxlbiA8PSAwKQ0KKwkJCQl7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCQlvdXRwdXQuV3JpdGUoYnVmZmVyLCAwLCBsZW4pOw0KKwkJCX0NCisJCQlicm90bGlJbnB1dC5DbG9zZSgpOw0KKwkJCXJldHVybiBvdXRwdXQuVG9BcnJheSgpOw0KKwkJfQ0KKw0KKwkJcHJpdmF0ZSB2b2lkIENoZWNrU3ludGgoYnl0ZVtdIGNvbXByZXNzZWQsIGJvb2wgZXhwZWN0U3VjY2Vzcywgc3RyaW5nIGV4cGVjdGVkT3V0cHV0KQ0KKwkJew0KKwkJCWJ5dGVbXSBleHBlY3RlZCA9IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybS5SZWFkVW5pQnl0ZXMoZXhwZWN0ZWRPdXRwdXQpOw0KKwkJCXRyeQ0KKwkJCXsNCisJCQkJYnl0ZVtdIGFjdHVhbCA9IERlY29tcHJlc3MoY29tcHJlc3NlZCk7DQorCQkJCWlmICghZXhwZWN0U3VjY2VzcykNCisJCQkJew0KKwkJCQkJTlVuaXQuRnJhbWV3b3JrLkFzc2VydC5GYWlsKCJleHBlY3RlZCB0byBmYWlsIGRlY29kaW5nLCBidXQgc3VjY2VlZGVkIik7DQorCQkJCX0NCisJCQkJTlVuaXQuRnJhbWV3b3JrLkFzc2VydC5BcmVFcXVhbChleHBlY3RlZCwgYWN0dWFsKTsNCisJCQl9DQorCQkJY2F0Y2ggKFN5c3RlbS5JTy5JT0V4Y2VwdGlvbikNCisJCQl7DQorCQkJCWlmIChleHBlY3RTdWNjZXNzKQ0KKwkJCQl7DQorCQkJCQlOVW5pdC5GcmFtZXdvcmsuQXNzZXJ0LkZhaWwoImV4cGVjdGVkIHRvIHN1Y2NlZWQgZGVjb2RpbmcsIGJ1dCBmYWlsZWQiKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCS8qIEdFTkVSQVRFRCBDT0RFIFNUQVJUICovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RCYXNlRGljdFdvcmQoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDQxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAyKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCB0cnVlLCBzdHJpbmcuRW1wdHkgKyAidGltZSIpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIFRoZSBzdHJlYW0gY29uc2lzdHMgb2YgYSBiYXNlIGRpY3Rpb25hcnkgd29yZC4NCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDQsIDENCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA0DQorCQljb21tYW5kX2Rpc3RfZWFzeTogMQ0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdEJhc2VEaWN0V29yZEZpbmlzaEJsb2NrT25SaW5nYnVmZmVyV3JhcCgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDliKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NTgpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgdHJ1ZSwgc3RyaW5nLkVtcHR5ICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF0aW1lIik7DQorCQl9DQorDQorCQkvKg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogMzIsIDEgLy8gMzIgPSBtaW5pbWFsIHJpbmdidWZmZXIgc2l6ZQ0KKwkJY29tbWFuZF9lYXN5OiA0LCAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIsIDI5DQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0QmFzZURpY3RXb3JkVG9vTG9uZygpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIGZhbHNlLCBzdHJpbmcuRW1wdHkpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIEhhcyBhbiB1bm1vZGlmaWVkIGRpY3Rpb25hcnkgd29yZCB0aGF0IGdvZXMgb3ZlciB0aGUgZW5kIG9mIHRoZQ0KKwkJLy8gbWV0YS1ibG9jay4gU2FtZSBhcyBCYXNlRGljdFdvcmQsIGJ1dCB3aXRoIGEgc2hvcnRlciBtZXRhLWJsb2NrIGxlbmd0aC4NCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDEsIDENCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA0DQorCQljb21tYW5kX2Rpc3RfZWFzeTogMQ0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdEJsb2NrQ291bnRNZXNzYWdlKCkNCisJCXsNCisJCQlieXRlW10gY29tcHJlc3NlZCA9IG5ldyBieXRlW10geyB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4YykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2NSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZmMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhmZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDIyKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDJjKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDg5KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIHRydWUsIHN0cmluZy5FbXB0eSArICJhYWJiYWFhYWFiYWIiKTsNCisJCX0NCisNCisJCS8qDQorCQkvLyBTYW1lIGFzIEJsb2NrU3dpdGNoTWVzc2FnZSBidXQgYWxzbyB1c2VzIDAtYml0IGJsb2NrLXR5cGUgY29tbWFuZHMuDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgMTIsIDANCisJCS8vIHR3byBsaXRlcmFsIGJsb2NrIHR5cGVzDQorCQl2bHFfYmxvY2t0eXBlczogMg0KKwkJaHVmZm1hbl9zaW1wbGU6IDEsMSw0LCAxICAvLyBsaXRlcmFsIGJsb2NrdHlwZSBwcmVmaXggY29kZQ0KKwkJaHVmZm1hbl9maXhlZDogMjYgIC8vIGxpdGVyYWwgYmxvY2tjb3VudCBwcmVmaXggY29kZQ0KKwkJYmxvY2tjb3VudF9lYXN5OiAyICAvLyAyIGEncw0KKwkJLy8gb25lIGlucy9jb3B5IGFuZCBkaXN0IGJsb2NrIHR5cGUNCisJCXZscV9ibG9ja3R5cGVzOiAxDQorCQl2bHFfYmxvY2t0eXBlczogMQ0KKwkJbmRpcmVjdDogMCAwDQorCQkvLyB0d28gTVNCNiBsaXRlcmFsIGNvbnRleHQgbW9kZXMNCisJCWJpdHM6ICIwMCIsICIwMCINCisJCS8vIHR3byBsaXRlcmFsIHByZWZpeCBjb2Rlcw0KKwkJdmxxX2Jsb2NrdHlwZXM6IDINCisJCS8vIGxpdGVyYWwgY29udGV4dCBtYXANCisJCXZscV9ybGVtYXg6IDUNCisJCWh1ZmZtYW5fc2ltcGxlOiAwLDMsNywgNSwwLDYgIC8vIGNvbnRleHQgbWFwIHJsZSBodWZmbWFuIGNvZGUNCisJCS8vIGNvbnRleHQgbWFwIHJsZTogcmVwZWF0IDAgNjQgdGltZXMsIDErNSA2NCB0aW1lcw0KKwkJYml0czogIjAxIiwgIjAiLCAiMTExMTEiLCAiMTEiLCAiMCIsICIxMTExMSINCisJCWJpdDogMSAgLy8gTVRGIGVuYWJsZWQNCisJCS8vIG9uZSBkaXN0YW5jZSBwcmVmaXggY29kZQ0KKwkJdmxxX2Jsb2NrdHlwZXM6IDENCisJCWh1ZmZtYW5fc2ltcGxlOiAwLDEsMjU2LCA5NyAgLy8gb25seSBhJ3MNCisJCWh1ZmZtYW5fc2ltcGxlOiAwLDEsMjU2LCA5OCAgLy8gb25seSBiJ3MNCisJCWh1ZmZtYW5fZml4ZWQ6IDcwNA0KKwkJaHVmZm1hbl9maXhlZDogNjQNCisJCS8vIG5vdyBjb21lcyB0aGUgZGF0YQ0KKwkJY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDEyLCAwDQorCQlibG9ja2NvdW50X2Vhc3k6IDIgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAyIGIncw0KKwkJYmxvY2tjb3VudF9lYXN5OiA1ICAvLyBzd2l0Y2ggdG8gb3RoZXIgYmxvY2sgdHlwZTsgNSBhJ3MNCisJCWJsb2NrY291bnRfZWFzeTogMSAgLy8gc3dpdGNoIHRvIG90aGVyIGJsb2NrIHR5cGU7IDEgYg0KKwkJYmxvY2tjb3VudF9lYXN5OiAxICAvLyBzd2l0Y2ggdG8gb3RoZXIgYmxvY2sgdHlwZTsgMSBhDQorCQlibG9ja2NvdW50X2Vhc3k6IDEgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAxIGINCisJCSovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RCbG9ja1N3aXRjaE1lc3NhZ2UoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDkxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg3MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGZlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4N2UpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFjKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDZjKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4OTkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDNiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NmQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODIpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCB0cnVlLCBzdHJpbmcuRW1wdHkgKyAiYWFiYmFhYWFhYmFiIik7DQorCQl9DQorDQorCQkvKg0KKwkJLy8gVXNlcyBibG9ja3Mgd2l0aCAxLXN5bWJvbCBodWZmbWFuIGNvZGVzIHRoYXQgdGFrZSAwIGJpdHMsIHNvIHRoYXQgaXQNCisJCS8vIGlzIHRoZSBibG9ja3N3aXRjaCBjb21tYW5kcyB0aGF0IGVuY29kZSB0aGUgbWVzc2FnZSByYXRoZXIgdGhhbiBhY3R1YWwNCisJCS8vIGxpdGVyYWxzLg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDEyLCAwDQorCQkvLyB0d28gbGl0ZXJhbCBibG9jayB0eXBlcw0KKwkJdmxxX2Jsb2NrdHlwZXM6IDINCisJCWh1ZmZtYW5fc2ltcGxlOiAxLDQsNCwgMSwwLDIsMyAgLy8gbGl0ZXJhbCBibG9ja3R5cGUgcHJlZml4IGNvZGUNCisJCWh1ZmZtYW5fZml4ZWQ6IDI2ICAvLyBsaXRlcmFsIGJsb2NrY291bnQgcHJlZml4IGNvZGUNCisJCWJsb2NrY291bnRfZWFzeTogMiAgLy8gMiBhJ3MNCisJCS8vIG9uZSBpbnMvY29weSBhbmQgZGlzdCBibG9jayB0eXBlDQorCQl2bHFfYmxvY2t0eXBlczogMQ0KKwkJdmxxX2Jsb2NrdHlwZXM6IDENCisJCW5kaXJlY3Q6IDAgMA0KKwkJLy8gdHdvIE1TQjYgbGl0ZXJhbCBjb250ZXh0IG1vZGVzDQorCQliaXRzOiAiMDAiLCAiMDAiDQorCQkvLyB0d28gbGl0ZXJhbCBwcmVmaXggY29kZXMNCisJCXZscV9ibG9ja3R5cGVzOiAyDQorCQkvLyBsaXRlcmFsIGNvbnRleHQgbWFwDQorCQl2bHFfcmxlbWF4OiA1DQorCQlodWZmbWFuX3NpbXBsZTogMCwzLDcsIDUsMCw2ICAvLyBjb250ZXh0IG1hcCBybGUgaHVmZm1hbiBjb2RlDQorCQkvLyBjb250ZXh0IG1hcCBybGU6IHJlcGVhdCAwIDY0IHRpbWVzLCAxKzUgNjQgdGltZXMNCisJCWJpdHM6ICIwMSIsICIwIiwgIjExMTExIiwgIjExIiwgIjAiLCAiMTExMTEiDQorCQliaXQ6IDEgIC8vIE1URiBlbmFibGVkDQorCQkvLyBvbmUgZGlzdGFuY2UgcHJlZml4IGNvZGUNCisJCXZscV9ibG9ja3R5cGVzOiAxDQorCQlodWZmbWFuX3NpbXBsZTogMCwxLDI1NiwgOTcgIC8vIG9ubHkgYSdzDQorCQlodWZmbWFuX3NpbXBsZTogMCwxLDI1NiwgOTggIC8vIG9ubHkgYidzDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQkvLyBub3cgY29tZXMgdGhlIGRhdGENCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiAxMiwgMA0KKwkJYml0czogIjAiOyBibG9ja2NvdW50X2Vhc3k6IDIgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAyIGIncw0KKwkJYml0czogIjAiOyBibG9ja2NvdW50X2Vhc3k6IDUgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyA1IGEncw0KKwkJYml0czogIjAiOyBibG9ja2NvdW50X2Vhc3k6IDEgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAxIGINCisJCWJpdHM6ICIwIjsgYmxvY2tjb3VudF9lYXN5OiAxICAvLyBzd2l0Y2ggdG8gb3RoZXIgYmxvY2sgdHlwZTsgMSBhDQorCQliaXRzOiAiMCI7IGJsb2NrY291bnRfZWFzeTogMSAgLy8gc3dpdGNoIHRvIG90aGVyIGJsb2NrIHR5cGU7IDEgYg0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdENsQ2xUcmVlRGVmaWNpZW5jeSgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDQzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA1KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDg4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NTUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg5MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDEyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg3NykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRhKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDIzKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5ICsgImFhYWIiKTsNCisJCX0NCisNCisJCS8qDQorCQkvLyBUaGlzIHRlc3QgaXMgYSBjb3B5IG9mIFRvb01hbnlTeW1ib2xzUmVwZWF0ZWQsIHdpdGggY2hhbmdlZCBjbGNsIHRhYmxlLg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDQsIDANCisJCW1ldGFibG9ja19oZWFkZXJfdHJpdmlhbF9jb250ZXh0DQorCQloc2tpcDogMA0KKwkJY2xjbF9vcmRlcmVkOiAwLDMsMCwwLDAsMCwwLDAsMywzLDAsMCwwLDAsMCwwLDEsMA0KKwkJc2V0X3ByZWZpeF9jbF9ybGU6ICIiLCAiMTEwIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIjExMSIsICIxMDEiLFwNCisJCSIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIwIiwgIiINCisJCWNsX3JsZTogOA0KKwkJY2xfcmxlX3JlcDogOSwgOTYNCisJCWNsX3JsZTogMQ0KKwkJY2xfcmxlX3JlcDogOSwgMTU5IC8vIDEgKyA5NiArIDEgKyAxNTkgPSAyNTcgPiAyNTYgPSBhbHBoYWJldCBzaXplDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMA0KKwkJY29tbWFuZF9saXRlcmFsX2JpdHM6IDAsIDAsIDAsIDEwMTEwMDAxMA0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdENsQ2xUcmVlRXhjZXNzKCkNCisJCXsNCisJCQlieXRlW10gY29tcHJlc3NlZCA9IG5ldyBieXRlW10geyB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDgwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg3YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDgwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NTgpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGNiKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0OCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2OSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGEzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4ZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5ICsgImFhYWIiKTsNCisJCX0NCisNCisJCS8qDQorCQkvLyBUaGlzIHRlc3QgaXMgYSBjb3B5IG9mIENsQ2xUcmVlRGVmaWNpZW5jeSwgd2l0aCBjaGFuZ2VkIGNsY2wgdGFibGUuDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgNCwgMA0KKwkJbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQNCisJCWhza2lwOiAwDQorCQljbGNsX29yZGVyZWQ6IDAsMywwLDAsMCwwLDAsMCwzLDEsMCwwLDAsMCwwLDAsMSwwDQorCQlzZXRfcHJlZml4X2NsX3JsZTogIiIsICIxMTAiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiMTExIiwgIjEiLFwNCisJCSIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIwIiwgIiINCisJCWNsX3JsZTogOA0KKwkJY2xfcmxlX3JlcDogOSwgOTYNCisJCWNsX3JsZTogMQ0KKwkJY2xfcmxlX3JlcDogOSwgMTU5IC8vIDEgKyA5NiArIDEgKyAxNTkgPSAyNTcgPiAyNTYgPSBhbHBoYWJldCBzaXplDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMA0KKwkJY29tbWFuZF9saXRlcmFsX2JpdHM6IDAsIDAsIDAsIDEwMTEwMDAxMA0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdENvbXBsZXhIdWZmbWFuQ29kZVR3b1N5bWJvbHMoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDgwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhhMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFhKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDgwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDlkKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA0KSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCB0cnVlLCBzdHJpbmcuRW1wdHkgKyAiYWIiKTsNCisJCX0NCisNCisJCS8qDQorCQkvLyBUaGlzIHRlc3RzIGEgY29tcGxleCBodWZmbWFuIGNvZGUgd2l0aCBvbmx5IHR3byBzeW1ib2xzIGZvbGxvd2VkIGJ5IGENCisJCS8vIHRpbnkgYW1vdW50IG9mIGNvbnRlbnQuDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgMiwgMA0KKwkJbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQNCisJCS8vIGJlZ2luIG9mIGxpdGVyYWwgaHVmZm1hbiB0cmVlLiBUaGUgdHJlZSBoYXMgc3ltYm9sIGxlbmd0aCAxIGZvciAiYSIsDQorCQkvLyBzeW1ib2wgbGVuZ3RoIDEgZm9yICJiIiBhbmQgc3ltYm9sIGxlbmd0aCAwIGZvciBhbGwgb3RoZXJzLg0KKwkJaHNraXA6IDANCisJCWNsY2xfb3JkZXJlZDogMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDENCisJCXNldF9wcmVmaXhfY2xfcmxlOiAiIiwgIjAiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsXA0KKwkJIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIxIg0KKwkJY2xfcmxlX3JlcF8wOiA5Nw0KKwkJY2xfcmxlOiAxICAvLyBsaXRlcmFsIG51bWJlciA5NywgdGhhdCBpcywgdGhlIGxldHRlciAnYScNCisJCWNsX3JsZTogMSAgLy8gbGl0ZXJhbCBudW1iZXIgOTgsIHRoYXQgaXMsIHRoZSBsZXR0ZXIgJ2InDQorCQkvLyBlbmQgb2YgbGl0ZXJhbCBodWZmbWFuIHRyZWUNCisJCWh1ZmZtYW5fZml4ZWQ6IDcwNA0KKwkJaHVmZm1hbl9maXhlZDogNjQNCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiAyLCAwDQorCQljb21tYW5kX2xpdGVyYWxfYml0czogMCwgMSAgLy8gYSBmb2xsb3dlZCBieSBiDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0Q29tcHJlc3NlZFVuY29tcHJlc3NlZFNob3J0Q29tcHJlc3NlZCgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDhiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZmUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDliKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjYpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NmYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBhKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDEwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDYyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MikpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGIwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIHRydWUsIHN0cmluZy5FbXB0eSArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIg0KKwkJCQkgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIg0KKwkJCQkgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIg0KKwkJCQkgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiIg0KKwkJCQkpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCW1haW5faGVhZGVyOiAyMg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAxMDIyLCAwDQorCQljb21tYW5kX2Vhc3k6IDEwMjEsICJhIiwgMSAvLyAxMDIyIHggImEiDQorCQltZXRhYmxvY2tfdW5jb21wcmVzc2VkOiAiYmJiYmJiIg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiA0LCAxDQorCQljb21tYW5kX2Vhc3k6IDQsICIiLCAxIC8vIDYgKyA0ID0gMTAgeCAiYiINCisJCSovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RDb21wcmVzc2VkVW5jb21wcmVzc2VkU2hvcnRDb21wcmVzc2VkU21hbGxXaW5kb3coKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGY0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGE3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NmQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZDgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDg5KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM0KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDdiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZGIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDgwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjIpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg3MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCB0cnVlLCBzdHJpbmcuRW1wdHkgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSINCisJCQkJICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSINCisJCQkJICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSINCisJCQkJICsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsgImFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYiINCisJCQkJKTsNCisJCX0NCisNCisJCS8qDQorCQltYWluX2hlYWRlcjogMTANCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogMTAyMiwgMA0KKwkJY29tbWFuZF9lYXN5OiAxMDIxLCAiYSIsIDEgLy8gMTAyMiB4ICJhIg0KKwkJbWV0YWJsb2NrX3VuY29tcHJlc3NlZDogImJiYmJiYiINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogNCwgMQ0KKwkJY29tbWFuZF9lYXN5OiA0LCAiIiwgMSAvLyA2ICsgNCA9IDEwIHggImIiDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0Q29weUxlbmd0aFRvb0xvbmcoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDExKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDg2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIGZhbHNlLCBzdHJpbmcuRW1wdHkpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIEhhcyBhIGNvcHkgbGVuZ3RoIHRoYXQgZ29lcyBvdmVyIHRoZSBlbmQgb2YgdGhlIG1ldGEtYmxvY2suDQorCQkvLyBTYW1lIGFzIE9uZUNvbW1hbmQsIGJ1dCB3aXRoIGEgc2hvcnRlciBtZXRhLWJsb2NrIGxlbmd0aC4NCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDIsIDENCisJCWNvbW1hbmRfZWFzeTogMiwgImEiLCAxDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0Q3VzdG9tSHVmZm1hbkNvZGUoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDNkKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1OCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4OTYpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwYykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDkwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI4KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGQzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFhKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIHRydWUsIHN0cmluZy5FbXB0eSArICJhYWFiIik7DQorCQl9DQorDQorCQkvKg0KKwkJLy8gVGhpcyB0ZXN0cyBhIHNtYWxsIGhhbmQgY3JhZnRlZCBodWZmbWFuIGNvZGUgZm9sbG93ZWQgYnkgYSB0aW55IGFtb3VudA0KKwkJLy8gb2YgY29udGVudC4gVGhpcyB0ZXN0cyBpZiB0aGUgYml0IHJlYWRlciBkZXRlY3RzIHRoZSBlbmQgY29ycmVjdGx5IGV2ZW4NCisJCS8vIHdpdGggdGlueSBjb250ZW50IGFmdGVyIGEgbGFyZ2VyIGh1ZmZtYW4gdHJlZSBlbmNvZGluZy4NCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfaGVhZGVyX2JlZ2luOiAxLCAwLCA0LCAwDQorCQltZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dA0KKwkJLy8gYmVnaW4gb2YgbGl0ZXJhbCBodWZmbWFuIHRyZWUuIFRoZSB0cmVlIGhhcyBzeW1ib2wgbGVuZ3RoIDEgZm9yICJhIiwNCisJCS8vIHN5bWJvbCBsZW5ndGggOCBmb3IgbnVsbCwgc3ltYm9sIGxlbmd0aCA5IGZvciBhbGwgb3RoZXJzLiBUaGUgbGVuZ3RoIDENCisJCS8vIGZvciBhIGlzIGNob3NlbiBvbiBwdXJwb3NlIGhlcmUsIHRoZSBvdGhlcnMgbXVzdCBiZSBsaWtlIHRoYXQgdG8NCisJCS8vIGZ1bGZpbGwgdGhlIHJlcXVpcmVtZW50IHRoYXQgc3VtIG9mIDMyPj5sZW5ndGggaXMgMzI3NjguDQorCQloc2tpcDogMA0KKwkJY2xjbF9vcmRlcmVkOiAwLDMsMCwwLDAsMCwwLDAsMywyLDAsMCwwLDAsMCwwLDEsMA0KKwkJc2V0X3ByZWZpeF9jbF9ybGU6ICIiLCAiMTEwIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIjExMSIsICIxMCIsXA0KKwkJIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIjAiLCAiIg0KKwkJY2xfcmxlOiA4DQorCQljbF9ybGVfcmVwOiA5LCA5Ng0KKwkJY2xfcmxlOiAxICAvLyBsaXRlcmFsIG51bWJlciA5NywgdGhhdCBpcywgdGhlIGxldHRlciAnYScNCisJCWNsX3JsZV9yZXA6IDksIDE1OA0KKwkJLy8gZW5kIG9mIGxpdGVyYWwgaHVmZm1hbiB0cmVlDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMA0KKwkJLy8gSGVyZSBpcyBob3cgdGhlIGNvZGUgIjEwMTEwMDAxMCIgZm9yIGIgaXMgZGVyaXZlZDogcmVtZW1iZXIgdGhhdCBhIGhhcw0KKwkJLy8gc3ltYm9sIGxlbmd0aCAxLCBudWxsIGhhcyBzeW1ib2wgbGVuZ3RoIDgsIHRoZSByZXN0IDkuIFNvIGluIHRoZQ0KKwkJLy8gY2Fub25pY2FsIGh1ZmZtYW4gY29kZSwgdGhlIGNvZGUgZm9yICJhIiBpcyAiMCIsIGZvciBudWxsIGlzDQorCQkvLyAiMTAwMDAwMDAiLiBUaGUgbmV4dCB2YWx1ZSBoYXMgIjEwMDAwMDAxMCIgKGNmci4gdGhlIHJ1bGVzIG9mIGNhbm9uaWNhbA0KKwkJLy8gcHJlZml4IGNvZGUpLiBDb3VudGluZyB1cHdhcmRzICs5NSBmcm9tIHRoZXJlLCB0aGUgdmFsdWUgIkAiIChhc2NpaSA5NiwNCisJCS8vIGJlZm9yZSAiYSIpIGhhcyAiMTAxMTAwMDAxIiwgYW5kIHNvIGIsIHRoZSBuZXh0IDktYml0IHN5bWJvbCwgaGFzIHRoZQ0KKwkJLy8gbmV4dCBiaW5hcnkgdmFsdWUgIjEwMTEwMDAxMCIuDQorCQljb21tYW5kX2xpdGVyYWxfYml0czogMCwgMCwgMCwgMTAxMTAwMDEwICAvLyAzIGEncyBmb2xsb3dlZCBieSBhIGINCisJCSovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RFbXB0eSgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDNiKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCB0cnVlLCBzdHJpbmcuRW1wdHkpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfbGFzdGVtcHR5DQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0SGVsbG9Xb3JsZCgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDliKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NTkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg5OCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRhKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZDgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDEzKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGI4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZGIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGQ5KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4OTgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgdHJ1ZSwgc3RyaW5nLkVtcHR5ICsgImhlbGxvIHdvcmxkIik7DQorCQl9DQorDQorCQkvKg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19maXhlZDogImhlbGxvIHdvcmxkIiwgMQ0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdEluc2VydFRvb0xvbmcoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA5KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDg2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDYpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIGZhbHNlLCBzdHJpbmcuRW1wdHkpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIEhhcyBhbiBpbnNlcnQgbGVuZ3RoIHRoYXQgZ29lcyBvdmVyIHRoZSBlbmQgb2YgdGhlIG1ldGEtYmxvY2suDQorCQkvLyBTYW1lIGFzIE9uZUluc2VydCwgYnV0IHdpdGggYSBzaG9ydGVyIG1ldGEtYmxvY2sgbGVuZ3RoLg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogMSwgMQ0KKwkJY29tbWFuZF9lYXN5OiAwLCAiYWIiDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0SW52YWxpZE5vTGFzdE1ldGFibG9jaygpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDliKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1OSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDk4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZGEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGQ4KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDEzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDNiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZDkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg5OCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5ICsgImhlbGxvIHdvcmxkIik7DQorCQl9DQorDQorCQkvKg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19maXhlZDogXCJoZWxsbyB3b3JsZFwiLCAwDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0SW52YWxpZE5vTWV0YUJsb2NrcygpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBiKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5KTsNCisJCX0NCisNCisJCS8qDQorCQltYWluX2hlYWRlcg0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdEludmFsaWRUb29GYXJEaXN0KCkNCisJCXsNCisJCQlieXRlW10gY29tcHJlc3NlZCA9IG5ldyBieXRlW10geyB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0OCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhhNykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDZkKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGQ4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4OSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDEyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDc3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZGEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NmYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjYpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0NCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwOSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBkKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5KTsNCisJCX0NCisNCisJCS8qDQorCQltYWluX2hlYWRlcjogMTANCisJCW1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDEwLCAwDQorCQltZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dA0KKwkJaHVmZm1hbl9maXhlZDogMjU2DQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQljb21tYW5kX2Vhc3k6IDIsICJ0b28gZmFyISIsIDEwMDAwMDAgIC8vIGRpc3RhbmNlIHRvbyBmYXIgZm9yIDEwIHdiaXRzDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0SW52YWxpZFRvb0xhcmdlQ29udGV4dE1hcCgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGQxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4OTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZmUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhmYikpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0NSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDU4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2NSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDEyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZWUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDExKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIGZhbHNlLCBzdHJpbmcuRW1wdHkgKyAiYSIpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIEhhcyBhIHJlcGVhdCBjb2RlIGEgY29udGV4dCBtYXAgdGhhdCBtYWtlcyB0aGUgc2l6ZSB0b28gYmlnIC0+IGludmFsaWQuDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgMSwgMA0KKwkJLy8gdHdvIGxpdGVyYWwgYmxvY2sgdHlwZXMNCisJCXZscV9ibG9ja3R5cGVzOiAyDQorCQlodWZmbWFuX3NpbXBsZTogMSw0LDQsIDEsMCwyLDMgIC8vIGxpdGVyYWwgYmxvY2t0eXBlIHByZWZpeCBjb2RlDQorCQlodWZmbWFuX2ZpeGVkOiAyNiAgLy8gbGl0ZXJhbCBibG9ja2NvdW50IHByZWZpeCBjb2RlDQorCQlibG9ja2NvdW50X2Vhc3k6IDENCisJCS8vIG9uZSBpbnMvY29weSBhbmQgZGlzdCBibG9jayB0eXBlDQorCQl2bHFfYmxvY2t0eXBlczogMQ0KKwkJdmxxX2Jsb2NrdHlwZXM6IDENCisJCW5kaXJlY3Q6IDAgMA0KKwkJLy8gdHdvIE1TQjYgbGl0ZXJhbCBjb250ZXh0IG1vZGVzDQorCQliaXRzOiAiMDAiLCAiMDAiDQorCQkvLyB0d28gbGl0ZXJhbCBwcmVmaXggY29kZXMNCisJCXZscV9ibG9ja3R5cGVzOiAyDQorCQkvLyBsaXRlcmFsIGNvbnRleHQgbWFwDQorCQl2bHFfcmxlbWF4OiA1DQorCQlodWZmbWFuX3NpbXBsZTogMCwzLDcsIDUsMCw2ICAvLyBjb250ZXh0IG1hcCBybGUgaHVmZm1hbiBjb2RlDQorCQkvLyBUb28gbG9uZyBjb250ZXh0IG1hcCBybGU6IHJlcGVhdCAwIDY0IHRpbWVzLCAxKzUgNjUgdGltZXMsIHRoYXQgaXMgMTI5DQorCQkvLyB2YWx1ZXMgd2hpY2ggaXMgMSB0b28gbXVjaC4NCisJCWJpdHM6ICIwMSIsICIwIiwgIjExMTExIiwgIjExIiwgIjExIiwgIjAiLCAiMTExMTEiDQorCQliaXQ6IDEgIC8vIE1URiBlbmFibGVkDQorCQkvLyBvbmUgZGlzdGFuY2UgcHJlZml4IGNvZGUNCisJCXZscV9ibG9ja3R5cGVzOiAxDQorCQlodWZmbWFuX3NpbXBsZTogMCwxLDI1NiwgOTcgIC8vIG9ubHkgYSdzDQorCQlodWZmbWFuX3NpbXBsZTogMCwxLDI1NiwgOTggIC8vIG9ubHkgYidzDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQkvLyBub3cgY29tZXMgdGhlIGRhdGENCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiAxLCAwDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0SW52YWxpZFRyYW5zZm9ybVR5cGUoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDQxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDJkKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxOSkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgZmFsc2UsIHN0cmluZy5FbXB0eSk7DQorCQl9DQorDQorCQkvKg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogNCwgMQ0KKwkJY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQNCisJCWNvbW1hbmRfZGlzdF9lYXN5OiAxMjM5MDUgLy8gPSAxMjEgPDwgMTAgKyAxDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0SW52YWxpZFdpbmRvd0JpdHM5KCkNCisJCXsNCisJCQlieXRlW10gY29tcHJlc3NlZCA9IG5ldyBieXRlW10geyB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4OTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhhNykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDZkKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGQ4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4OSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDEyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDc3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZGEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgZmFsc2UsIHN0cmluZy5FbXB0eSArICJhIik7DQorCQl9DQorDQorCQkvKg0KKwkJbWFpbl9oZWFkZXI6IDkNCisJCW1ldGFibG9ja19maXhlZDogXCJhXCIsIDENCisJCSovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RNYW55VGlueU1ldGFibG9ja3MoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGRiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDYxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDM4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzNCkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgdHJ1ZSwgc3RyaW5nLkVtcHR5ICsgImFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYiIgKyAiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiIiArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiDQorCQkJCSArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiICsgImFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYiIgKyAiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiIiArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiDQorCQkJCSArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiICsgImFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYiIpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCW1haW5faGVhZGVyDQorCQlyZXBlYXQ6IDMwMA0KKwkJbWV0YWJsb2NrX3VuY29tcHJlc3NlZDogImEiDQorCQltZXRhYmxvY2tfZml4ZWQ6ICJiIg0KKwkJZW5kX3JlcGVhdA0KKwkJbWV0YWJsb2NrX2xhc3RlbXB0eQ0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdE5lZ2F0aXZlRGlzdGFuY2UoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBmKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDQxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDQyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWMpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIGZhbHNlLCBzdHJpbmcuRW1wdHkgKyAidGltZW1lbWVtZW1lbWVYWCIpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDE2LCAxDQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNCAvLyB0aW1lDQorCQljb21tYW5kX2Rpc3RfZWFzeTogMQ0KKwkJY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDIgLy8gbWUNCisJCWNvbW1hbmRfZGlzdF9lYXN5OiAyDQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogMCwgMiAvLyBtZQ0KKwkJY29tbWFuZF9kaXN0X2Vhc3k6IDINCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCAyIC8vIG1lDQorCQljb21tYW5kX2Rpc3RfZWFzeTogMg0KKwkJY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDIgLy8gbWUNCisJCWNvbW1hbmRfZGlzdF9lYXN5OiAyDQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogMCwgMiAvLyBtZQ0KKwkJY29tbWFuZF9kaXN0X2Vhc3k6IDIgLy8gQWxsIHJiIGl0ZW1zIGFyZSAyIG5vdw0KKwkJY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDINCisJCWJpdHM6ICIwMTExMDAiIC8vIDE1IC0+IGRpc3RhbmNlID0gcmJbaWR4ICsgMl0gLSAzDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0TmVnYXRpdmVSZW1haW5pbmdMZW5CZXR3ZWVuTWV0YWJsb2NrcygpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDkpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0NikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDExKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgzOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDRlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZGIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDcwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg2NSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDEyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDMpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZWUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiNCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDkxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDYwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwNCkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgZmFsc2UsIHN0cmluZy5FbXB0eSArICJhYmFiIik7DQorCQl9DQorDQorCQkvKg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogMSwgMA0KKwkJY29tbWFuZF9lYXN5OiAwLCAiYWIiICAvLyByZW1haW5pbmcgbGVuZ3RoID09IC0xIC0+IGludmFsaWQgc3RyZWFtDQorCQltZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDIsIDENCisJCWNvbW1hbmRfZWFzeTogMCwgImFiIg0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdE9uZUNvbW1hbmQoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDExKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDg2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIHRydWUsIHN0cmluZy5FbXB0eSArICJhYWEiKTsNCisJCX0NCisNCisJCS8qDQorCQkvLyBUaGUgc3RyZWFtIGNvbnNpc3RzIG9mIG9uZSBjb21tYW5kIHdpdGggaW5zZXJ0IGFuZCBjb3B5Lg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogMywgMQ0KKwkJY29tbWFuZF9lYXN5OiAyLCAiYSIsIDENCisJCSovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RPbmVJbnNlcnQoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA5KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDg2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDYpKSkgfTsNCisJCQlDaGVja1N5bnRoKGNvbXByZXNzZWQsIHRydWUsIHN0cmluZy5FbXB0eSArICJhYiIpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIFRoZSBzdHJlYW0gY29uc2lzdHMgb2Ygb25lIGhhbGYgY29tbWFuZCB3aXRoIGluc2VydCBvbmx5Lg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogMiwgMQ0KKwkJY29tbWFuZF9lYXN5OiAwLCAiYWIiDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0U2ltcGxlUHJlZml4KCkNCisJCXsNCisJCQlieXRlW10gY29tcHJlc3NlZCA9IG5ldyBieXRlW10geyB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhhMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjOCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NzApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhiMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDY1KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MTIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI0KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NTEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhhMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxZCkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgdHJ1ZSwgc3RyaW5nLkVtcHR5ICsgImFiY2QiKTsNCisJCX0NCisNCisJCS8qDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgNCwgMA0KKwkJbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQNCisJCWh1ZmZtYW5fc2ltcGxlOiAxLDQsMjU2LCA5Nyw5OCw5OSwxMDAgIC8vIGFzY2lpIGNvZGVzIGZvciBhLCBiLCBjLCBkDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMA0KKwkJY29tbWFuZF9saXRlcmFsX2JpdHM6IDAsIDEwLCAxMTAsIDExMSAgLy8gYSwgYiwgYywgZA0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdFNpbXBsZVByZWZpeER1cGxpY2F0ZVN5bWJvbHMoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGEwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweGMzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhjMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGM0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg3MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGIwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NjUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MjQpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGVlKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1MSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGEwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDFkKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5ICsgImFiYWIiKTsNCisJCX0NCisNCisJCS8qDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgNCwgMA0KKwkJbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQNCisJCWh1ZmZtYW5fc2ltcGxlOiAxLDQsMjU2LCA5Nyw5OCw5Nyw5OCAgLy8gYXNjaWkgY29kZXMgZm9yIGEsIGIsIGEsIGINCisJCWh1ZmZtYW5fZml4ZWQ6IDcwNA0KKwkJaHVmZm1hbl9maXhlZDogNjQNCisJCWNvbW1hbmRfaW5zY29weV9lYXN5OiA0LCAwDQorCQljb21tYW5kX2xpdGVyYWxfYml0czogMCwgMTAsIDExMCwgMTExICAvLyBhLCBiLCBhLCBiDQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0U2ltcGxlUHJlZml4T3V0T2ZSYW5nZVN5bWJvbHMoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhmZikpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlZikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDdmKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZmYpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhmYykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjgpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhkMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA2KSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5KTsNCisJCX0NCisNCisJCS8qDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgNCwgMA0KKwkJbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQNCisJCWh1ZmZtYW5fZml4ZWQ6IDI1Ng0KKwkJaHVmZm1hbl9zaW1wbGU6IDEsNCw3MDQsIDEwMjMsMTAyMiwxMDIxLDEwMjANCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQkqLw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0VG9vTWFueVN5bWJvbHNSZXBlYXRlZCgpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGMzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4M2QpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDU4KSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDgyKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGMwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg5NikpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0OSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDBjKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4OTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjgpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZDMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0NikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MWEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgZmFsc2UsIHN0cmluZy5FbXB0eSArICJhYWFiIik7DQorCQl9DQorDQorCQkvKg0KKwkJLy8gVGhpcyB0ZXN0IGlzIGEgY29weSBvZiBDdXN0b21IdWZmbWFuQ29kZSwgd2l0aCBjaGFuZ2VkIHJlcGVhdCBjb3VudC4NCisJCW1haW5faGVhZGVyDQorCQltZXRhYmxvY2tfaGVhZGVyX2JlZ2luOiAxLCAwLCA0LCAwDQorCQltZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dA0KKwkJaHNraXA6IDANCisJCWNsY2xfb3JkZXJlZDogMCwzLDAsMCwwLDAsMCwwLDMsMiwwLDAsMCwwLDAsMCwxLDANCisJCXNldF9wcmVmaXhfY2xfcmxlOiAiIiwgIjExMCIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIxMTEiLCAiMTAiLFwNCisJCSIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIwIiwgIiINCisJCWNsX3JsZTogOA0KKwkJY2xfcmxlX3JlcDogOSwgOTYNCisJCWNsX3JsZTogMQ0KKwkJY2xfcmxlX3JlcDogOSwgMTU5IC8vIDEgKyA5NiArIDEgKyAxNTkgPSAyNTcgPiAyNTYgPSBhbHBoYWJldCBzaXplDQorCQlodWZmbWFuX2ZpeGVkOiA3MDQNCisJCWh1ZmZtYW5fZml4ZWQ6IDY0DQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMA0KKwkJY29tbWFuZF9saXRlcmFsX2JpdHM6IDAsIDAsIDAsIDEwMTEwMDAxMA0KKwkJKi8NCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdFRyYW5zZm9ybWVkRGljdFdvcmQoKQ0KKwkJew0KKwkJCWJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbXSB7IHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA4KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ODApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHhlMykpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGI0KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MGQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDA3KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NWIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgyNikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDMxKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDIpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NGUpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgxYikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDQxKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDA5KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSB9Ow0KKwkJCUNoZWNrU3ludGgoY29tcHJlc3NlZCwgdHJ1ZSwgc3RyaW5nLkVtcHR5ICsgInRpbWUgdGhlICIpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCS8vIFRoZSBzdHJlYW0gY29uc2lzdHMgb2YgYSB0cmFuc2Zvcm1lZCBkaWN0aW9uYXJ5IHdvcmQuDQorCQltYWluX2hlYWRlcg0KKwkJbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiA5LCAxDQorCQljb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNA0KKwkJY29tbWFuZF9kaXN0X2Vhc3k6IDUxMjENCisJCSovDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RUcmFuc2Zvcm1lZERpY3RXb3JkVG9vTG9uZygpDQorCQl7DQorCQkJYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtdIHsgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDMpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg4MCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweGUzKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4YjQpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwZCkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoDQorCQkJCShieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDcpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg1YikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDI2KSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MzEpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0MCkpKSwgdW5jaGVja2VkKA0KKwkJCQkoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMikpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAwKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4ZTApKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHg0ZSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDFiKSkpLCB1bmNoZWNrZWQoKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4NDEpKSksIHVuY2hlY2tlZCgNCisJCQkJKGJ5dGUpdW5jaGVja2VkKChpbnQpKDB4MDkpKSksIHVuY2hlY2tlZCgoYnl0ZSl1bmNoZWNrZWQoKGludCkoMHgwMSkpKSwgdW5jaGVja2VkKChieXRlKXVuY2hlY2tlZCgoaW50KSgweDAxKSkpIH07DQorCQkJQ2hlY2tTeW50aChjb21wcmVzc2VkLCBmYWxzZSwgc3RyaW5nLkVtcHR5KTsNCisJCX0NCisJCS8qDQorCQkvLyBIYXMgYSB0cmFuc2Zvcm1lZCBkaWN0aW9uYXJ5IHdvcmQgdGhhdCBnb2VzIG92ZXIgdGhlIGVuZCBvZiB0aGUNCisJCS8vIG1ldGEtYmxvY2ssIGJ1dCB0aGUgYmFzZSBkaWN0aW9uYXJ5IHdvcmQgZml0cyBpbiB0aGUgbWV0YS1ibG9jay4NCisJCS8vIFNhbWUgYXMgVHJhbnNmb3JtZWREaWN0V29yZCwgYnV0IHdpdGggYSBzaG9ydGVyIG1ldGEtYmxvY2sgbGVuZ3RoLg0KKwkJbWFpbl9oZWFkZXINCisJCW1ldGFibG9ja19oZWFkZXJfZWFzeTogNCwgMQ0KKwkJY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQNCisJCWNvbW1hbmRfZGlzdF9lYXN5OiA1MTIxDQorCQkqLw0KKwkJLyogR0VORVJBVEVEIENPREUgRU5EICovDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9UcmFuc2Zvcm0uY3MgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1RyYW5zZm9ybS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODY5ZDZlCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9UcmFuc2Zvcm0uY3MKQEAgLTAsMCArMSwxNTQgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorDQorRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuDQorU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCisqLw0KK25hbWVzcGFjZSBPcmcuQnJvdGxpLkRlYw0KK3sNCisJLy8vIDxzdW1tYXJ5PlRyYW5zZm9ybWF0aW9ucyBvbiBkaWN0aW9uYXJ5IHdvcmRzLjwvc3VtbWFyeT4NCisJaW50ZXJuYWwgc2VhbGVkIGNsYXNzIFRyYW5zZm9ybQ0KKwl7DQorCQlwcml2YXRlIHJlYWRvbmx5IGJ5dGVbXSBwcmVmaXg7DQorDQorCQlwcml2YXRlIHJlYWRvbmx5IGludCB0eXBlOw0KKw0KKwkJcHJpdmF0ZSByZWFkb25seSBieXRlW10gc3VmZml4Ow0KKw0KKwkJaW50ZXJuYWwgVHJhbnNmb3JtKHN0cmluZyBwcmVmaXgsIGludCB0eXBlLCBzdHJpbmcgc3VmZml4KQ0KKwkJew0KKwkJCXRoaXMucHJlZml4ID0gUmVhZFVuaUJ5dGVzKHByZWZpeCk7DQorCQkJdGhpcy50eXBlID0gdHlwZTsNCisJCQl0aGlzLnN1ZmZpeCA9IFJlYWRVbmlCeXRlcyhzdWZmaXgpOw0KKwkJfQ0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIGJ5dGVbXSBSZWFkVW5pQnl0ZXMoc3RyaW5nIHVuaUJ5dGVzKQ0KKwkJew0KKwkJCWJ5dGVbXSByZXN1bHQgPSBuZXcgYnl0ZVt1bmlCeXRlcy5MZW5ndGhdOw0KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0Lkxlbmd0aDsgKytpKQ0KKwkJCXsNCisJCQkJcmVzdWx0W2ldID0gdW5jaGVja2VkKChieXRlKXVuaUJ5dGVzW2ldKTsNCisJCQl9DQorCQkJcmV0dXJuIHJlc3VsdDsNCisJCX0NCisNCisJCWludGVybmFsIHN0YXRpYyByZWFkb25seSBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm1bXSBUcmFuc2Zvcm1zID0gbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybVtdIHsgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgDQorCQkJT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIiAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLk9taXRGaXJzdDEsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VGaXJzdCwgIiAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIHRoZSAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5DQorCQkJLCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCJzICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgb2YgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZQ0KKwkJCS5VcHBlcmNhc2VGaXJzdCwgc3RyaW5nLkVtcHR5KSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIGFuZCAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLk9taXRGaXJzdDIsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0TGFzdDEsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiwgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eQ0KKwkJCSwgIiwgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VGaXJzdCwgIiAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIGluICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUNCisJCQkuSWRlbnRpdHksICIgdG8gIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oImUgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIlwiIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCANCisJCQlPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIi4iKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiXCI+IiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIlxuIiksIG5ldyANCisJCQlPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0TGFzdDMsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIl0iKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlDQorCQkJLklkZW50aXR5LCAiIGZvciAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLk9taXRGaXJzdDMsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0TGFzdDIsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIiBhICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgdGhhdCAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZUZpcnN0DQorCQkJLCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIuICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIuIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZQ0KKwkJCS5JZGVudGl0eSwgIiwgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0Rmlyc3Q0LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgd2l0aCAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybQ0KKwkJCShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiJyIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgZnJvbSAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5DQorCQkJLCAiIGJ5ICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdEZpcnN0NSwgc3RyaW5nLkVtcHR5KSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLk9taXRGaXJzdDYsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoIiB0aGUgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0TGFzdDQsIHN0cmluZy5FbXB0eSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZQ0KKwkJCS5JZGVudGl0eSwgIi4gVGhlICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgb24gIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIiBhcyAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIGlzICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdExhc3Q3DQorCQkJLCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdExhc3QxLCAiaW5nICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICJcblx0IiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5DQorCQkJLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIjoiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiLiAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiZWQgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0Rmlyc3Q5LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdEZpcnN0Nywgc3RyaW5nLkVtcHR5KSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlDQorCQkJLk9taXRMYXN0Niwgc3RyaW5nLkVtcHR5KSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiKCIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICIsICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtDQorCQkJKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdExhc3Q4LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIgYXQgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZQ0KKwkJCS5JZGVudGl0eSwgImx5ICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgdGhlICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIG9mICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdExhc3Q1LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKA0KKwkJCXN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuT21pdExhc3Q5LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICIsICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QNCisJCQksICJcIiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIuIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIoIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwsICIgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZQ0KKwkJCS5VcHBlcmNhc2VGaXJzdCwgIlwiPiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICI9XCIiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiLiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIuY29tLyIsIA0KKwkJCU9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCBzdHJpbmcuRW1wdHkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgdGhlICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIG9mIHRoZSAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZUZpcnN0DQorCQkJLCAiJyIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICIuIFRoaXMgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIiwiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiLiIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlDQorCQkJLklkZW50aXR5LCAiICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICIoIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VGaXJzdCwgIi4iKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybQ0KKwkJCShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiIG5vdCAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiPVwiIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgImVyICINCisJCQkpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCAiICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICJhbCAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlDQorCQkJLlVwcGVyY2FzZUFsbCwgc3RyaW5nLkVtcHR5KSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiPSciKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZUFsbCwgIlwiIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VGaXJzdCwgIi4gIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIigiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCANCisJCQkiZnVsICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICIuICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHksICJpdmUgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZQ0KKwkJCS5JZGVudGl0eSwgImxlc3MgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwsICInIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgImVzdCAiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybQ0KKwkJCSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZUZpcnN0LCAiLiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCAiXCI+IiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgIj0nIg0KKwkJCSksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VGaXJzdCwgIiwiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiaXplICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUNCisJCQkuVXBwZXJjYXNlQWxsLCAiLiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCJcdTAwYzJcdTAwYTAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5JZGVudGl0eSwgc3RyaW5nLkVtcHR5KSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLklkZW50aXR5LCAiLCIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eQ0KKwkJCSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICI9XCIiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybShzdHJpbmcuRW1wdHksIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZUFsbCwgIj1cIiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuSWRlbnRpdHkNCisJCQksICJvdXMgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwsICIsICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICI9JyIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgIiwgDQorCQkJT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QsICIsIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwsICI9XCIiKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZUFsbCwgIiwgIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0NCisJCQkoc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwsICIsIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwsICIoIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oc3RyaW5nLkVtcHR5LCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS4NCisJCQlVcHBlcmNhc2VBbGwsICIuICIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCAiLiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKHN0cmluZy5FbXB0eSwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCAiPSciKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlDQorCQkJLlVwcGVyY2FzZUFsbCwgIi4gIiksIG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIiAiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VGaXJzdCwgIj1cIiIpLCBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCIgIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCAiPSciKSwgbmV3IE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSgiICIsIE9yZy5Ccm90bGkuRGVjLldvcmRUcmFuc2Zvcm1UeXBlDQorCQkJLlVwcGVyY2FzZUZpcnN0LCAiPSciKSB9Ow0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIGludCBUcmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChieXRlW10gZHN0LCBpbnQgZHN0T2Zmc2V0LCBieXRlW10gd29yZCwgaW50IHdvcmRPZmZzZXQsIGludCBsZW4sIE9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSB0cmFuc2Zvcm0pDQorCQl7DQorCQkJaW50IG9mZnNldCA9IGRzdE9mZnNldDsNCisJCQkvLyBDb3B5IHByZWZpeC4NCisJCQlieXRlW10gQHN0cmluZyA9IHRyYW5zZm9ybS5wcmVmaXg7DQorCQkJaW50IHRtcCA9IEBzdHJpbmcuTGVuZ3RoOw0KKwkJCWludCBpID0gMDsNCisJCQkvLyBJbiBtb3N0IGNhc2VzIHRtcCA8IDEwIC0+IG5vIGJlbmVmaXRzIGZyb20gU3lzdGVtLmFycmF5Q29weQ0KKwkJCXdoaWxlIChpIDwgdG1wKQ0KKwkJCXsNCisJCQkJZHN0W29mZnNldCsrXSA9IEBzdHJpbmdbaSsrXTsNCisJCQl9DQorCQkJLy8gQ29weSB0cmltbWVkIHdvcmQuDQorCQkJaW50IG9wID0gdHJhbnNmb3JtLnR5cGU7DQorCQkJdG1wID0gT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuR2V0T21pdEZpcnN0KG9wKTsNCisJCQlpZiAodG1wID4gbGVuKQ0KKwkJCXsNCisJCQkJdG1wID0gbGVuOw0KKwkJCX0NCisJCQl3b3JkT2Zmc2V0ICs9IHRtcDsNCisJCQlsZW4gLT0gdG1wOw0KKwkJCWxlbiAtPSBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5HZXRPbWl0TGFzdChvcCk7DQorCQkJaSA9IGxlbjsNCisJCQl3aGlsZSAoaSA+IDApDQorCQkJew0KKwkJCQlkc3Rbb2Zmc2V0KytdID0gd29yZFt3b3JkT2Zmc2V0KytdOw0KKwkJCQlpLS07DQorCQkJfQ0KKwkJCWlmIChvcCA9PSBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2VBbGwgfHwgb3AgPT0gT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QpDQorCQkJew0KKwkJCQlpbnQgdXBwZXJjYXNlT2Zmc2V0ID0gb2Zmc2V0IC0gbGVuOw0KKwkJCQlpZiAob3AgPT0gT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlRmlyc3QpDQorCQkJCXsNCisJCQkJCWxlbiA9IDE7DQorCQkJCX0NCisJCQkJd2hpbGUgKGxlbiA+IDApDQorCQkJCXsNCisJCQkJCXRtcCA9IGRzdFt1cHBlcmNhc2VPZmZzZXRdICYgdW5jaGVja2VkKChpbnQpKDB4RkYpKTsNCisJCQkJCWlmICh0bXAgPCB1bmNoZWNrZWQoKGludCkoMHhjMCkpKQ0KKwkJCQkJew0KKwkJCQkJCWlmICh0bXAgPj0gJ2EnICYmIHRtcCA8PSAneicpDQorCQkJCQkJew0KKwkJCQkJCQlkc3RbdXBwZXJjYXNlT2Zmc2V0XSBePSB1bmNoZWNrZWQoKGJ5dGUpMzIpOw0KKwkJCQkJCX0NCisJCQkJCQl1cHBlcmNhc2VPZmZzZXQgKz0gMTsNCisJCQkJCQlsZW4gLT0gMTsNCisJCQkJCX0NCisJCQkJCWVsc2UgaWYgKHRtcCA8IHVuY2hlY2tlZCgoaW50KSgweGUwKSkpDQorCQkJCQl7DQorCQkJCQkJZHN0W3VwcGVyY2FzZU9mZnNldCArIDFdIF49IHVuY2hlY2tlZCgoYnl0ZSkzMik7DQorCQkJCQkJdXBwZXJjYXNlT2Zmc2V0ICs9IDI7DQorCQkJCQkJbGVuIC09IDI7DQorCQkJCQl9DQorCQkJCQllbHNlDQorCQkJCQl7DQorCQkJCQkJZHN0W3VwcGVyY2FzZU9mZnNldCArIDJdIF49IHVuY2hlY2tlZCgoYnl0ZSk1KTsNCisJCQkJCQl1cHBlcmNhc2VPZmZzZXQgKz0gMzsNCisJCQkJCQlsZW4gLT0gMzsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCQkvLyBDb3B5IHN1ZmZpeC4NCisJCQlAc3RyaW5nID0gdHJhbnNmb3JtLnN1ZmZpeDsNCisJCQl0bXAgPSBAc3RyaW5nLkxlbmd0aDsNCisJCQlpID0gMDsNCisJCQl3aGlsZSAoaSA8IHRtcCkNCisJCQl7DQorCQkJCWRzdFtvZmZzZXQrK10gPSBAc3RyaW5nW2krK107DQorCQkJfQ0KKwkJCXJldHVybiBvZmZzZXQgLSBkc3RPZmZzZXQ7DQorCQl9DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9UcmFuc2Zvcm1UZXN0LmNzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9UcmFuc2Zvcm1UZXN0LmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNjg0NWYKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1RyYW5zZm9ybVRlc3QuY3MKQEAgLTAsMCArMSw3NCBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisNCitEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4NCitTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KKyovDQorbmFtZXNwYWNlIE9yZy5Ccm90bGkuRGVjDQorew0KKwkvLy8gPHN1bW1hcnk+DQorCS8vLyBUZXN0cyBmb3INCisJLy8vIDxzZWUgY3JlZj0iVHJhbnNmb3JtIi8+DQorCS8vLyAuDQorCS8vLyA8L3N1bW1hcnk+DQorCXB1YmxpYyBjbGFzcyBUcmFuc2Zvcm1UZXN0DQorCXsNCisJCXByaXZhdGUgc3RhdGljIGxvbmcgQ3JjNjQoYnl0ZVtdIGRhdGEpDQorCQl7DQorCQkJbG9uZyBjcmMgPSAtMTsNCisJCQlmb3IgKGludCBpID0gMDsgaSA8IGRhdGEuTGVuZ3RoOyArK2kpDQorCQkJew0KKwkJCQlsb25nIGMgPSAoY3JjIF4gKGxvbmcpKGRhdGFbaV0gJiB1bmNoZWNrZWQoKGludCkoMHhGRikpKSkgJiB1bmNoZWNrZWQoKGludCkoMHhGRikpOw0KKwkJCQlmb3IgKGludCBrID0gMDsgayA8IDg7IGsrKykNCisJCQkJew0KKwkJCQkJYyA9ICgobG9uZykoKCh1bG9uZyljKSA+PiAxKSkgXiAoLShjICYgMUwpICYgLTM5MzI2NzIwNzM1MjM1ODkzMTBMKTsNCisJCQkJfQ0KKwkJCQljcmMgPSBjIF4gKChsb25nKSgoKHVsb25nKWNyYykgPj4gOCkpOw0KKwkJCX0NCisJCQlyZXR1cm4gfmNyYzsNCisJCX0NCisNCisJCVtOVW5pdC5GcmFtZXdvcmsuVGVzdF0NCisJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgVGVzdFRyaW1BbGwoKQ0KKwkJew0KKwkJCWJ5dGVbXSBvdXRwdXQgPSBuZXcgYnl0ZVsyXTsNCisJCQlieXRlW10gaW5wdXQgPSBuZXcgYnl0ZVtdIHsgMTE5LCAxMTEsIDExNCwgMTAwIH07DQorCQkJLy8gIndvcmQiDQorCQkJT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG5ldyBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0oIlsiLCBPcmcuQnJvdGxpLkRlYy5Xb3JkVHJhbnNmb3JtVHlwZS5PbWl0Rmlyc3Q1LCAiXSIpOw0KKwkJCU9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybS5UcmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChvdXRwdXQsIDAsIGlucHV0LCAwLCBpbnB1dC5MZW5ndGgsIHRyYW5zZm9ybSk7DQorCQkJYnl0ZVtdIGV4cGVjdGVkT3V0cHV0ID0gbmV3IGJ5dGVbXSB7IDkxLCA5MyB9Ow0KKwkJCS8vICJbXSINCisJCQlOVW5pdC5GcmFtZXdvcmsuQXNzZXJ0LkFyZUVxdWFsKGV4cGVjdGVkT3V0cHV0LCBvdXRwdXQpOw0KKwkJfQ0KKw0KKwkJW05Vbml0LkZyYW1ld29yay5UZXN0XQ0KKwkJcHVibGljIHZpcnR1YWwgdm9pZCBUZXN0Q2FwaXRhbGl6ZSgpDQorCQl7DQorCQkJYnl0ZVtdIG91dHB1dCA9IG5ldyBieXRlWzhdOw0KKwkJCWJ5dGVbXSBpbnB1dCA9IG5ldyBieXRlW10geyAxMTMsIHVuY2hlY2tlZCgoYnl0ZSkoLTYxKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTkwKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTMyKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTkyKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTg2KSkgfTsNCisJCQkvLyAiccOm4KSqIg0KKwkJCU9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBuZXcgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtKCJbIiwgT3JnLkJyb3RsaS5EZWMuV29yZFRyYW5zZm9ybVR5cGUuVXBwZXJjYXNlQWxsLCAiXSIpOw0KKwkJCU9yZy5Ccm90bGkuRGVjLlRyYW5zZm9ybS5UcmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChvdXRwdXQsIDAsIGlucHV0LCAwLCBpbnB1dC5MZW5ndGgsIHRyYW5zZm9ybSk7DQorCQkJYnl0ZVtdIGV4cGVjdGVkT3V0cHV0ID0gbmV3IGJ5dGVbXSB7IDkxLCA4MSwgdW5jaGVja2VkKChieXRlKSgtNjEpKSwgdW5jaGVja2VkKChieXRlKSgtMTIyKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTMyKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTkyKSksIHVuY2hlY2tlZCgoYnl0ZSkoLTgxKSksIDkzIH07DQorCQkJLy8gIltRw4bgpK9dIg0KKwkJCU5Vbml0LkZyYW1ld29yay5Bc3NlcnQuQXJlRXF1YWwoZXhwZWN0ZWRPdXRwdXQsIG91dHB1dCk7DQorCQl9DQorDQorCQlbTlVuaXQuRnJhbWV3b3JrLlRlc3RdDQorCQlwdWJsaWMgdmlydHVhbCB2b2lkIFRlc3RBbGxUcmFuc2Zvcm1zKCkNCisJCXsNCisJCQkvKiBUaGlzIHN0cmluZyBhbGxvd3MgdG8gYXBwbHkgYWxsIHRyYW5zZm9ybXM6IGhlYWQgYW5kIHRhaWwgY3V0dGluZywgY2FwaXRhbGl6YXRpb24gYW5kDQorCQkJdHVybmluZyB0byB1cHBlciBjYXNlOyBhbGwgcmVzdWx0cyB3aWxsIGJlIG11dHVhbGx5IGRpZmZlcmVudC4gKi8NCisJCQkvLyAibzEyMzQ1Njc4OWFiY2RlZiINCisJCQlieXRlW10gdGVzdFdvcmQgPSBuZXcgYnl0ZVtdIHsgMTExLCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyIH07DQorCQkJYnl0ZVtdIG91dHB1dCA9IG5ldyBieXRlWzIyNTldOw0KKwkJCWludCBvZmZzZXQgPSAwOw0KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtLlRyYW5zZm9ybXMuTGVuZ3RoOyArK2kpDQorCQkJew0KKwkJCQlvZmZzZXQgKz0gT3JnLkJyb3RsaS5EZWMuVHJhbnNmb3JtLlRyYW5zZm9ybURpY3Rpb25hcnlXb3JkKG91dHB1dCwgb2Zmc2V0LCB0ZXN0V29yZCwgMCwgdGVzdFdvcmQuTGVuZ3RoLCBPcmcuQnJvdGxpLkRlYy5UcmFuc2Zvcm0uVHJhbnNmb3Jtc1tpXSk7DQorCQkJCW91dHB1dFtvZmZzZXQrK10gPSB1bmNoZWNrZWQoKGJ5dGUpKC0xKSk7DQorCQkJfQ0KKwkJCU5Vbml0LkZyYW1ld29yay5Bc3NlcnQuQXJlRXF1YWwob3V0cHV0Lkxlbmd0aCwgb2Zmc2V0KTsNCisJCQlOVW5pdC5GcmFtZXdvcmsuQXNzZXJ0LkFyZUVxdWFsKDg5MjkxOTEwNjAyMTEyMjUxODZMLCBDcmM2NChvdXRwdXQpKTsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvY3NoYXJwL29yZy9icm90bGkvZGVjL1V0aWxzLmNzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9VdGlscy5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTVmODdlCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9VdGlscy5jcwpAQCAtMCwwICsxLDU5IEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKw0KK0Rpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLg0KK1NlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQorKi8NCituYW1lc3BhY2UgT3JnLkJyb3RsaS5EZWMNCit7DQorCS8vLyA8c3VtbWFyeT5BIHNldCBvZiB1dGlsaXR5IG1ldGhvZHMuPC9zdW1tYXJ5Pg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgVXRpbHMNCisJew0KKwkJcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgYnl0ZVtdIEJ5dGVaZXJvZXMgPSBuZXcgYnl0ZVsxMDI0XTsNCisNCisJCXByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGludFtdIEludFplcm9lcyA9IG5ldyBpbnRbMTAyNF07DQorDQorCQkvLy8gPHN1bW1hcnk+RmlsbHMgYnl0ZSBhcnJheSB3aXRoIHplcm9lcy48L3N1bW1hcnk+DQorCQkvLy8gPHJlbWFya3M+DQorCQkvLy8gRmlsbHMgYnl0ZSBhcnJheSB3aXRoIHplcm9lcy4NCisJCS8vLyA8cD4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzDQorCQkvLy8gPHNlZSBjcmVmPSJTeXN0ZW0uQXJyYXkuQ29weShvYmplY3QsIGludCwgb2JqZWN0LCBpbnQsIGludCkiLz4NCisJCS8vLyAsIHNvIGl0IHNob3VsZCBiZSB1c2VkIGZvciBsZW5ndGggbm90DQorCQkvLy8gbGVzcyB0aGFuIDE2Lg0KKwkJLy8vIDwvcmVtYXJrcz4NCisJCS8vLyA8cGFyYW0gbmFtZT0iZGVzdCI+YXJyYXkgdG8gZmlsbCB3aXRoIHplcm9lczwvcGFyYW0+DQorCQkvLy8gPHBhcmFtIG5hbWU9Im9mZnNldCI+dGhlIGZpcnN0IGJ5dGUgdG8gZmlsbDwvcGFyYW0+DQorCQkvLy8gPHBhcmFtIG5hbWU9Imxlbmd0aCI+bnVtYmVyIG9mIGJ5dGVzIHRvIGNoYW5nZTwvcGFyYW0+DQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBGaWxsV2l0aFplcm9lcyhieXRlW10gZGVzdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkNCisJCXsNCisJCQlpbnQgY3Vyc29yID0gMDsNCisJCQl3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoKQ0KKwkJCXsNCisJCQkJaW50IHN0ZXAgPSBTeXN0ZW0uTWF0aC5NaW4oY3Vyc29yICsgMTAyNCwgbGVuZ3RoKSAtIGN1cnNvcjsNCisJCQkJU3lzdGVtLkFycmF5LkNvcHkoQnl0ZVplcm9lcywgMCwgZGVzdCwgb2Zmc2V0ICsgY3Vyc29yLCBzdGVwKTsNCisJCQkJY3Vyc29yICs9IHN0ZXA7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJLy8vIDxzdW1tYXJ5PkZpbGxzIGludCBhcnJheSB3aXRoIHplcm9lcy48L3N1bW1hcnk+DQorCQkvLy8gPHJlbWFya3M+DQorCQkvLy8gRmlsbHMgaW50IGFycmF5IHdpdGggemVyb2VzLg0KKwkJLy8vIDxwPiBDdXJyZW50IGltcGxlbWVudGF0aW9uIHVzZXMNCisJCS8vLyA8c2VlIGNyZWY9IlN5c3RlbS5BcnJheS5Db3B5KG9iamVjdCwgaW50LCBvYmplY3QsIGludCwgaW50KSIvPg0KKwkJLy8vICwgc28gaXQgc2hvdWxkIGJlIHVzZWQgZm9yIGxlbmd0aCBub3QNCisJCS8vLyBsZXNzIHRoYW4gMTYuDQorCQkvLy8gPC9yZW1hcmtzPg0KKwkJLy8vIDxwYXJhbSBuYW1lPSJkZXN0Ij5hcnJheSB0byBmaWxsIHdpdGggemVyb2VzPC9wYXJhbT4NCisJCS8vLyA8cGFyYW0gbmFtZT0ib2Zmc2V0Ij50aGUgZmlyc3QgaXRlbSB0byBmaWxsPC9wYXJhbT4NCisJCS8vLyA8cGFyYW0gbmFtZT0ibGVuZ3RoIj5udW1iZXIgb2YgaXRlbSB0byBjaGFuZ2U8L3BhcmFtPg0KKwkJaW50ZXJuYWwgc3RhdGljIHZvaWQgRmlsbFdpdGhaZXJvZXMoaW50W10gZGVzdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkNCisJCXsNCisJCQlpbnQgY3Vyc29yID0gMDsNCisJCQl3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoKQ0KKwkJCXsNCisJCQkJaW50IHN0ZXAgPSBTeXN0ZW0uTWF0aC5NaW4oY3Vyc29yICsgMTAyNCwgbGVuZ3RoKSAtIGN1cnNvcjsNCisJCQkJU3lzdGVtLkFycmF5LkNvcHkoSW50WmVyb2VzLCAwLCBkZXN0LCBvZmZzZXQgKyBjdXJzb3IsIHN0ZXApOw0KKwkJCQljdXJzb3IgKz0gc3RlcDsNCisJCQl9DQorCQl9DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9vcmcvYnJvdGxpL2RlYy9Xb3JkVHJhbnNmb3JtVHlwZS5jcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvV29yZFRyYW5zZm9ybVR5cGUuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc3YTVmNQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvb3JnL2Jyb3RsaS9kZWMvV29yZFRyYW5zZm9ybVR5cGUuY3MKQEAgLTAsMCArMSw2OCBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisNCitEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4NCitTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KKyovDQorbmFtZXNwYWNlIE9yZy5Ccm90bGkuRGVjDQorew0KKwkvLy8gPHN1bW1hcnk+RW51bWVyYXRpb24gb2YgYWxsIHBvc3NpYmxlIHdvcmQgdHJhbnNmb3JtYXRpb25zLjwvc3VtbWFyeT4NCisJLy8vIDxyZW1hcmtzPg0KKwkvLy8gRW51bWVyYXRpb24gb2YgYWxsIHBvc3NpYmxlIHdvcmQgdHJhbnNmb3JtYXRpb25zLg0KKwkvLy8gPHA+VGhlcmUgYXJlIHR3byBzaW1wbGUgdHlwZXMgb2YgdHJhbnNmb3Jtczogb21pdCBYIGZpcnN0L2xhc3Qgc3ltYm9scywgdHdvIGNoYXJhY3Rlci1jYXNlDQorCS8vLyB0cmFuc2Zvcm1zIGFuZCB0aGUgaWRlbnRpdHkgdHJhbnNmb3JtLg0KKwkvLy8gPC9yZW1hcmtzPg0KKwlpbnRlcm5hbCBzZWFsZWQgY2xhc3MgV29yZFRyYW5zZm9ybVR5cGUNCisJew0KKwkJaW50ZXJuYWwgY29uc3QgaW50IElkZW50aXR5ID0gMDsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBPbWl0TGFzdDEgPSAxOw0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE9taXRMYXN0MiA9IDI7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgT21pdExhc3QzID0gMzsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBPbWl0TGFzdDQgPSA0Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE9taXRMYXN0NSA9IDU7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgT21pdExhc3Q2ID0gNjsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBPbWl0TGFzdDcgPSA3Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE9taXRMYXN0OCA9IDg7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgT21pdExhc3Q5ID0gOTsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBVcHBlcmNhc2VGaXJzdCA9IDEwOw0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IFVwcGVyY2FzZUFsbCA9IDExOw0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE9taXRGaXJzdDEgPSAxMjsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBPbWl0Rmlyc3QyID0gMTM7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgT21pdEZpcnN0MyA9IDE0Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE9taXRGaXJzdDQgPSAxNTsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBPbWl0Rmlyc3Q1ID0gMTY7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgT21pdEZpcnN0NiA9IDE3Ow0KKw0KKwkJaW50ZXJuYWwgY29uc3QgaW50IE9taXRGaXJzdDcgPSAxODsNCisNCisJCWludGVybmFsIGNvbnN0IGludCBPbWl0Rmlyc3Q4ID0gMTk7DQorDQorCQlpbnRlcm5hbCBjb25zdCBpbnQgT21pdEZpcnN0OSA9IDIwOw0KKw0KKwkJaW50ZXJuYWwgc3RhdGljIGludCBHZXRPbWl0Rmlyc3QoaW50IHR5cGUpDQorCQl7DQorCQkJcmV0dXJuIHR5cGUgPj0gT21pdEZpcnN0MSA/ICh0eXBlIC0gT21pdEZpcnN0MSArIDEpIDogMDsNCisJCX0NCisNCisJCWludGVybmFsIHN0YXRpYyBpbnQgR2V0T21pdExhc3QoaW50IHR5cGUpDQorCQl7DQorCQkJcmV0dXJuIHR5cGUgPD0gT21pdExhc3Q5ID8gKHR5cGUgLSBPbWl0TGFzdDEgKyAxKSA6IDA7DQorCQl9DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC9zaGFycGVuLmNmZyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvc2hhcnBlbi5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5Y2Y0MwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvc2hhcnBlbi5jZmcKQEAgLTAsMCArMSwxOCBAQAorLXBhc2NhbENhc2UrCistbmF0aXZlVHlwZVN5c3RlbQorLXNlcGFyYXRlSW50ZXJmYWNlQ29uc3RhbnRzCistbWF4Q29sdW1ucyAyNDAKKy1jb3B5U2hhcnBlbkNzIGZhbHNlCistc2hhcnBlbk5hbWVzcGFjZSBub25hbWVzcGFjZQorLW91dHB1dEZvbGRlciBidWlsZC9nZW5lcmF0ZWQKKworLW5hbWVzcGFjZU1hcHBpbmcgamF2YS5pbyBTeXN0ZW0uSU8KKworLXR5cGVNYXBwaW5nIGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0gU3lzdGVtLklPLk1lbW9yeVN0cmVhbQorLXR5cGVNYXBwaW5nIGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtIFN5c3RlbS5JTy5NZW1vcnlTdHJlYW0KKy10eXBlTWFwcGluZyBqYXZhLmlvLklucHV0U3RyZWFtIFN5c3RlbS5JTy5TdHJlYW0KKworLW1ldGhvZE1hcHBpbmcgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0udG9CeXRlQXJyYXkoKSBUb0FycmF5CistbWV0aG9kTWFwcGluZyBqYXZhLmlvLklucHV0U3RyZWFtLnJlYWQoKSBSZWFkQnl0ZQorLW1ldGhvZE1hcHBpbmcgb3JnLmJyb3RsaS5kZWMuQnJvdGxpSW5wdXRTdHJlYW0ucmVhZCgpIFJlYWRCeXRlCistbWV0aG9kTWFwcGluZyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEFycmF5RXF1YWxzIE5Vbml0LkZyYW1ld29yay5Bc3NlcnQuQXJlRXF1YWwKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvdHJhbnNwaWxlLnNoIGIvdGhpcmRfcGFydHkvYnJvdGxpL2NzaGFycC90cmFuc3BpbGUuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZlZmI4NAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9jc2hhcnAvdHJhbnNwaWxlLnNoCkBAIC0wLDAgKzEsOTQgQEAKK2lmICEgd2hpY2ggbXZuID4vZGV2L251bGw7IHRoZW4KKyAgZWNobyAtZSAnXDAzM1swMTszMW1NYXZlbiBpcyBub3QgaW5zdGFsbGVkIC8gY29uZmlndXJlZC5cMDMzWzAwbScKKyAgZXhpdCAxCitmaQorCitpZiAhIHdoaWNoIG1vbm8gPi9kZXYvbnVsbDsgdGhlbgorICBlY2hvIC1lICdcMDMzWzAxOzMxbU1vbm8gcGxhdGZvcm0gaXMgbm90IGluc3RhbGxlZCAvIGNvbmZpZ3VyZWQuXDAzM1swMG0nCisgIGV4aXQgMQorZmkKKworaWYgISB3aGljaCBudWdldCA+L2Rldi9udWxsOyB0aGVuCisgIGVjaG8gLWUgJ1wwMzNbMDE7MzFtTnVHZXQgY29tcGlsZXIgaXMgbm90IGluc3RhbGxlZCAvIGNvbmZpZ3VyZWQuXDAzM1swMG0nCisgIGV4aXQgMQorZmkKKworaWYgISB3aGljaCBtY3MgPi9kZXYvbnVsbDsgdGhlbgorICBlY2hvIC1lICdcMDMzWzAxOzMxbUMjIGNvbXBpbGVyIGlzIG5vdCBpbnN0YWxsZWQgLyBjb25maWd1cmVkLlwwMzNbMDBtJworICBleGl0IDEKK2ZpCisKK3JtIC1yZiBidWlsZAorbWtkaXIgYnVpbGQKK2NkIGJ1aWxkCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2VjaG8gLWUgJ1wwMzNbMDE7MzNtRmV0Y2hpbmcgU2hhcnBlbiBzb3VyY2VzLlwwMzNbMDBtJworCitnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N0YW5pc2xhdzg5L3NoYXJwZW4uZ2l0CitjZCBzaGFycGVuCitnaXQgY2hlY2tvdXQgNGY2MDllZDQyODYyYTFmOWFhYjFiZTAwMzc0ZmY4NjUzNGE1ZTZkNiB8fCBleGl0IDEKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZWNobyAtZSAnXG5cMDMzWzAxOzMzbUNvbXBpbGluZyBTaGFycGVuLlwwMzNbMDBtJworCittdm4gY2xlYW4gcGFja2FnZSAtRHNraXBUZXN0cworbXZuIGRlcGVuZGVuY3k6Y29weSAtRGFydGlmYWN0PWp1bml0Omp1bml0OjQuMTIgLURvdXRwdXREaXJlY3Rvcnk9Li4KK2NkIC4uCitjcCBzaGFycGVuL3RhcmdldC9zaGFycGVuY29yZS0wLjAuMS1TTkFQU0hPVC1qYXItd2l0aC1kZXBlbmRlbmNpZXMuamFyIC4vc2hhcnBlbi5qYXIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZWNobyAtZSAnXG5cMDMzWzAxOzMzbVRyYW5zcGlsaW5nLlwwMzNbMDBtJworCitjZCAuLgoramF2YSAtamFyIGJ1aWxkL3NoYXJwZW4uamFyIC4uL2phdmEvb3JnL2Jyb3RsaS9kZWMvIC1jcCBidWlsZC9qdW5pdC00LjEyLmphciBAc2hhcnBlbi5jZmcKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZWNobyAtZSAnXG5cMDMzWzAxOzMzbVBhdGNoaW5nLlwwMzNbMDBtJworCisjIFRPRE86IGRldGVjdCAiZGVhZCIgZmlsZXMsIHRoYXQgYXJlIG5vdCBnZW5lcmF0ZWQgYnkgc2hhcnBlbiBhbnltb3JlLgorY3AgLXIgYnVpbGQvZ2VuZXJhdGVkLyogLi8KKworIyBSZWZsZWN0aW9uIGRvZXMgbm90IHdvcmsgd2l0aG91dCBTaGFycGVuLmNzCitybSBvcmcvYnJvdGxpL2RlYy9FbnVtVGVzdC5jcworCitQQVRURVJOPSdcL1wvIFw8XHtcW0lOSkVDVEVEIENPREVcXVx9XD4nCitDT0RFPSQoPG9yZy9icm90bGkvZGVjL0Jyb3RsaUlucHV0U3RyZWFtLmNzKQorUkVQTEFDRU1FTlQ9JCg8aW5qZWN0ZWRfY29kZS50eHQpCitlY2hvICIke0NPREUvLyRQQVRURVJOLyRSRVBMQUNFTUVOVH0iID4gb3JnL2Jyb3RsaS9kZWMvQnJvdGxpSW5wdXRTdHJlYW0uY3MKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZWNobyAtZSAnXG5cMDMzWzAxOzMzbURvd2xvYWRpbmcgZGVwZW5kZW5jaWVzLlwwMzNbMDBtJworCitjZCBidWlsZAorbnVnZXQgaW5zdGFsbCBOVW5pdCAtVmVyc2lvbiAzLjYuMQorbnVnZXQgaW5zdGFsbCBOVW5pdC5Db25zb2xlUnVubmVyIC1WZXJzaW9uIDMuNi4xCitjZCAuLgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitlY2hvIC1lICdcblwwMzNbMDE7MzNtQ29tcGlsaW5nIGdlbmVyYXRlZCBjb2RlLlwwMzNbMDBtJworCitTT1VSQ0VTPWBmaW5kIG9yZy9icm90bGkgLXR5cGUgZmlsZSAhIC1wYXRoICIqVGVzdC5jcyJgCitURVNUU19TT1VSQ0VTPWBmaW5kIG9yZy9icm90bGkgLXR5cGUgZmlsZSAtcGF0aCAiKlRlc3QuY3MiYAorCittY3MgJFNPVVJDRVMgLXRhcmdldDpsaWJyYXJ5IC1vdXQ6YnVpbGQvYnJvdGxpZGVjLmRsbAorbWNzICRTT1VSQ0VTICRURVNUU19TT1VSQ0VTIC10YXJnZXQ6bGlicmFyeSAtb3V0OmJ1aWxkL2Jyb3RsaWRlY190ZXN0LmRsbCAtcjpidWlsZC9OVW5pdC4zLjYuMS9saWIvbmV0NDUvbnVuaXQuZnJhbWV3b3JrLmRsbAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitlY2hvIC1lICdcblwwMzNbMDE7MzNtUnVubmluZyB0ZXN0cy5cMDMzWzAwbScKKworZXhwb3J0IE1PTk9fUEFUSD0kTU9OT19QQVRIOmBwd2RgL2J1aWxkL05Vbml0LjMuNi4xL2xpYi9uZXQ0NQorbW9ubyAtLWRlYnVnIGJ1aWxkL05Vbml0LkNvbnNvbGVSdW5uZXIuMy42LjEvdG9vbHMvbnVuaXQzLWNvbnNvbGUuZXhlIGJ1aWxkL2Jyb3RsaWRlY190ZXN0LmRsbAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitlY2hvIC1lICdcblwwMzNbMDE7MzNtQ2xlYW51cC5cMDMzWzAwbScKK3JtIFRlc3RSZXN1bHQueG1sCitybSAtcmYgYnVpbGQKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9kb2NzL2Jyb3RsaS1jb21wYXJpc29uLXN0dWR5LTIwMTUtMDktMjIucGRmIGIvdGhpcmRfcGFydHkvYnJvdGxpL2RvY3MvYnJvdGxpLWNvbXBhcmlzb24tc3R1ZHktMjAxNS0wOS0yMi5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwZjE3OQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9kb2NzL2Jyb3RsaS1jb21wYXJpc29uLXN0dWR5LTIwMTUtMDktMjIucGRmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9mZXRjaC1zcGVjL3NoYXJlZC1icm90bGktZmV0Y2gtc3BlYy50eHQgYi90aGlyZF9wYXJ0eS9icm90bGkvZmV0Y2gtc3BlYy9zaGFyZWQtYnJvdGxpLWZldGNoLXNwZWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMmQxMTcKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvZmV0Y2gtc3BlYy9zaGFyZWQtYnJvdGxpLWZldGNoLXNwZWMudHh0CkBAIC0wLDAgKzEsMTE2IEBACitbRFJBRlRdCisKK0ludHJvZHVjdGlvbjoKKworVGhpcyBkb2N1bWVudCBpcyBhIGRyYWZ0IHByb3Bvc2FsIGZvciBTaGFyZCBCcm90bGkgZGljdGlvbmFyaWVzIGluIHRoZSBmZXRjaCBzcGVjCisoaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvKS4KKworVGhlIGdvYWwgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBkaWN0aW9uYXJpZXMgZm9yIEJyb3RsaS4gQSBkaWN0aW9uYXJ5IGlzIHVzZWQKK3RvIGltcHJvdmUgY29tcHJlc3Npb24uIEEgY2xpZW50IGNhbiBkb3dubG9hZCBhIGRpY3Rpb25hcnkgZnJvbSBhIHNlcnZlciBhbmQgdGhlbgordXNlIGl0IHRvIGRlY29tcHJlc3MgcmVzb3VyY2VzIGNvbXByZXNzZWQgd2l0aCB0aGlzIGRpY3Rpb25hcnkuCisKK1RoaXMgZG9jdW1lbnQgc3BlY2lmaWVzIGhvdyB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgbmVnb3RpYXRlIHRoZSBkaWN0aW9uYXJ5IG92ZXIgSFRUUC4KK0EgaGlnaCBsZXZlbCBvdmVydmlldyBpcyBhcyBmb2xsb3dzOiBUaGUgc2VydmVyIGFkZHMgYW4gSFRUUCBoZWFkZXIgdG8gdGhlIHJlc3BvbnNlCit3aXRoIGEgVVJMIG9mIHRoZSBkaWN0aW9uYXJ5LiBUaGUgYnJvd3NlciBkb3dubG9hZHMgdGhlIGRpY3Rpb25hcnkgZnJvbSB0aGUgVVJMIGFuZAordGhlbiBjYWNoZXMgaXQgc28gaXQgY2FuIGJlIHJldXNlZC4gVGhlIHNlcnZlciBhbHNvIGFkZHMgYSBjaGVja3N1bSB0byBhbiBIVFRQIGhlYWRlcgord2hpY2ggdGhlIGNsaWVudCB1c2VzIHRvIHZlcmlmeSB0aGUgZGljdGlvbmFyeS4gQ2FjaGluZywgQ09SUywgYW5kIG90aGVyIGV4aXN0aW5nCittZWNoYW5pc21zIGFyZSB1c2VkLiBBIGRpY3Rpb25hcnkgY2FuIGJlIGEgcHJlLW1hZGUgc3RhdGljIGRpY3Rpb25hcnksIGJ1dCBkb2VzIG5vdAoraGF2ZSB0byBiZSwgZm9yIGV4YW1wbGUgYSBwcmV2aW91cyBwYWdlIGxvYWRlZCBmcm9tIHRoaXMgc2VydmVyLCBvciBhbiBvbGQgdmVyc2lvbgorb2YgYSBwYWdlLCBjYW4gYmUgdXNlZCBhcyB3ZWxsLgorCitCZWxvdyBhcmUgY2hhbmdlcyBhbmQgYWRkaXRpb25zIHRvIGFkZCBTaGFyZWQgQnJvdGxpIGRpY3Rpb25hcmllcyB0byB0aGUgZmV0Y2ggc3BlYworYXQgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvOgorCitBZGRpdGlvbnMgdG8gYDQuNS4gSFRUUC1uZXR3b3JrLW9yLWNhY2hlIGZldGNoYAorCitBZGQgdG8gcG9pbnQgYDE1LiBNb2RpZnkgaHR0cFJlcXVlc3TigJlzIGhlYWRlciBsaXN0IHBlciBIVFRQLmA6CisKKyAgSWYgdGhlIHJlY3Vyc2l2ZS1zYnIgZmxhZyBpcyBlbmFibGVkLCBgQWNjZXB0LUVuY29kaW5nYCBtYXkgbm90IGNvbnRhaW4gYHNicmAKKyAgW05PVEUtQk9YXSBXaGVuIHNiciBjYW4gYmUgdXNlZCwgaXQgaXMgcG9zc2libGUgdG8gYWRkIGEgaGVhZGVyIEF2YWlsYWJsZS1EaWN0CisgIHdpdGggdGhlIFVSTCBhbmQgaGFzaCBjb2RlIG9mIGEgY2FjaGVkIHJlc291cmNlLiBUaGUgc2VydmVyIG1heSB0aGVuIHVzZSBpdCBhcworICBzaGFyZWQgZGljdGlvbmFyeS4KKworQWRkaXRpb25zIHRvIGA0LjYuIEhUVFAtbmV0d29yayBmZXRjaGAKKworQWRkIGFmdGVyIHBvaW50IGAxMC4gUnVuIHRoZXNlIHN0ZXBzLCBidXQgYWJvcnQgaWYgdGhlIG9uZ29pbmcgZmV0Y2ggaXMgdGVybWluYXRlZGA6CisKKyAgMTEuIExldCBjb2RpbmdzIGJlIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBoZWFkZXIgbGlzdCB2YWx1ZXMgZ2l2ZW4KKyAgICAgIGBDb250ZW50LUVuY29kaW5nYCBhbmQgcmVzcG9uc2XigJlzIGhlYWRlciBsaXN0LgorICAxMi4gSWYgY29kaW5ncyBjb250YWlucyBgc2JyYAorICAgIDEuIElmIHRoZSBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWluIGBTYnItRGljdGAsIHJldHVybiBhIG5ldHdvcmsgZXJyb3IKKyAgICAyLiBMZXQgZGljdGlvbmFyeUlkIGJlIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBoZWFkZXIgbGlzdCB2YWx1ZXMgZ2l2ZW4KKyAgICAgICBgU2JyLURpY3RgIGFuZCByZXNwb25zZeKAmXMgaGVhZGVyIGxpc3QuCisKK1RvIHBvaW50IGAxMi4gUnVuIHRoZXNlIHN1YnN0ZXBzIGluIHBhcmFsbGVsOmAsIGFkZCBuZXcgZmlyc3Qgc3ViLXBvaW50OgorCisgIDEuIElmIGNvZGluZ3MgY29udGFpbnMgYHNicmAsIHJ1biB0aGVzZSBzdWJzdWJzdGVwczoKKyAgICAgIDEuIExldCBkaWN0aW9uYXJ5UmVzcG9uc2UgYmUgdGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5nIGEKKyAgICAgICAgIFNoYXJlZC1Ccm90bGktZGljdGlvbmFyeSBmZXRjaCBnaXZlbiBkaWN0aW9uYXJ5SWQgYW5kIHJlcXVlc3QuCisgICAgICAyLiBJZiBkaWN0aW9uYXJ5UmVzcG9uc2UgaXMgYSBuZXR3b3JrIGVycm9yLCByZXR1cm4gYSBuZXR3b3JrIGVycm9yLgorCitDaGFuZ2UgcG9pbnQgYDEyLjQuIFNldCBieXRlcyB0byB0aGUgcmVzdWx0IG9mIGhhbmRsaW5nIGNvbnRlbnQgY29kaW5ncyBnaXZlbiBjb2RpbmdzIGFuZCBieXRlcy5gIHRvOgorCisgIDQuIFNldCBieXRlcyB0byB0aGUgcmVzdWx0IG9mIGhhbmRsaW5nIGNvbnRlbnQgY29kaW5ncyBnaXZlbiBjb2RpbmdzLCBieXRlcworICAgICBhbmQsIGlmIGNvZGluZ3MgY29udGFpbnMgYHNicmAsIGFsc28gZGljdGlvbmFyeVJlc3BvbnNlJ3MgYm9keS4KKyAgICAgW05PVEUtQk9YXSBJZiB0aGUgZGljdGlvbmFyeSBpcyBzdGlsbCBiZWluZyBmZXRjaGVkLCB3aGljaCBoYXBwZW5zIGluCisgICAgIHBhcmFsbGVsLCBlbnF1ZXVlIGJ5dGVzIGluIGEgY29tcHJlc3NlZCBidWZmZXIgYW5kIGhhbmRsZSBjb250ZW50IGNvZGluZworICAgICBvbmNlIHRoZSBkaWN0aW9uYXJ5IGlzIGZldGNoZWQKKworQWRkaXRpb25zIHRvIGAyLjIuNC4gQm9kaWVzYAorCisKK0NoYW5nZSBsYXN0IHNlY3Rpb24gYFRvIGhhbmRsZSBjb250ZW50IGNvZGluZ3MgLi4uYCB0bzoKKworICBUbyBoYW5kbGUgY29udGVudCBjb2RpbmdzIGdpdmVuIGNvZGluZ3MsIGJ5dGVzIGFuZCBvcHRpb25hbGx5IGEgZGljdGlvbmFyeSwgcnVuIHRoZXNlIHN1YnN0ZXBzOgorICAgIDEuIElmIGNvZGluZ3MgYXJlIG5vdCBzdXBwb3J0ZWQsIHJldHVybiBieXRlcy4KKyAgICAyLiBJZiB0aGUgY29kaW5ncyBoYXMgYHNicmAsIHJ1biB0aGVzZSBzdWJzdWJzdGVwczoKKyAgICAgICBhLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBkZWNvZGluZyBieXRlcyBhbmQgZGljdGlvbmFyeSB3aXRoIHRoZSBTaGFyZWQKKyAgICAgICAgICBCcm90bGkgZGVjb2Rlci4KKyAgICAgICAgICBbU2hhcmVkIEJyb3RsaSBTcGVjXSBbSUFOQSBCcm90bGldKGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2h0dHAtcGFyYW1ldGVycy9odHRwLXBhcmFtZXRlcnMueGh0bWwpCisgICAgMy4gRWxzZToKKyAgICAgICBhLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBkZWNvZGluZyBieXRlcyB3aXRoIHRoZSBnaXZlbiBjb2RpbmdzLCBhcworICAgICAgICAgIGV4cGxhaW5lZCBpbiBIVFRQLiBbSFRUUF0gW0hUVFAtU0VNQU5USUNTXSBbSFRUUC1DT05EXSBbSFRUUC1DQUNISU5HXQorICAgICAgICAgIFtIVFRQLUFVVEhdCisKK05ldyBzZWN0aW9uIGA0LjEwLiBTaGFyZWQtQnJvdGxpLWRpY3Rpb25hcnkgZmV0Y2hgCisKKyAgVG8gcGVyZm9ybSBhIFNoYXJlZC1Ccm90bGktZGljdGlvbmFyeSBmZXRjaCB1c2luZyBkaWN0aW9uYXJ5SWQsIGFuZCBwYXJlbnRSZXF1ZXN0LCBwZXJmb3JtIHRoZXNlIHN0ZXBzOgorCisgIDEuIExldCBkaWN0aW9uYXJ5VVJMIGJlIHRoZSBVUkwgZXh0cmFjdGVkIGZyb20gZGljdGlvbmFyeUlkCisgIDIuIExldCBkaWN0aW9uYXJ5SGFzaCBiZSB0aGUgaGFzaCBpZCBleHRyYWN0ZWQgZnJvbSBkaWN0aW9uYXJ5SWQKKyAgMy4gTGV0IGRpY3Rpb25hcnlSZXF1ZXN0IGJlIGEgbmV3IHJlcXVlc3Qgd2hvc2UgbWV0aG9kIGlzIGBHRVRgLCB1cmwgaXMKKyAgICAgZGljdGlvbmFyeVVSTCwgbW9kZSBpcyAiY29ycyIsIGFuZCBjbGllbnQgaXMgcGFyZW50UmVxdWVzdCdzIGNsaWVudC4KKyAgNC4gTGV0IGRpY3Rpb25hcnlSZXNwb25zZSBiZSB0aGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgYW4KKyAgICAgW0hUVFAtbmV0d29yay1vci1jYWNoZV0oaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaHR0cC1uZXR3b3JrLW9yLWNhY2hlLWZldGNoKQorICAgICBmZXRjaCB1c2luZyBkaWN0aW9uYXJ5UmVxdWVzdCB3aXRoIHRoZSByZWN1cnNpdmUtc2JyIGZsYWcgc2V0IHRvIHRydWUuCisgICAgIFtOT1RFLUJPWF0gRm9yIGNvbXByZXNzaW9uIGJlbmVmaXRzLCB0aGUgZGljdGlvbmFyeSBzaG91bGQgYmUgcmV1c2VkIHRvCisgICAgIGRlY29kZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVzcG9uc2VzLiBXZSByZWx5IG9uIGNhY2hpbmcgdG8gYWNoaWV2ZSB0aGlzLgorICAgICBJdCBpcyBzdWdnZXN0ZWQgZm9yIHNlcnZlcnMgdG8gbm90IGFkZCBhbnkgIm5vLWNhY2hlIiBvciBzaG9ydCAibWF4LWFnZSIKKyAgICAgQ2FjaGUtQ29udHJvbCBkaXJlY3RpdmVzLCBhbmQgaXQgaXMgc3VnZ2VzdGVkIGZvciB0aGUgY2xpZW50IHRvIGVmZmVjdGl2ZWx5CisgICAgIHN1cHBvcnQgY2FjaGluZyBpdC4KKyAgICAgW05PVEUtQk9YXSBTaW5jZSB0aGUgc2FtZSBkaWN0aW9uYXJ5IGNhbiBiZSBpZGVudGlmaWVkIGJ5IGEgaGFzaCBjb2RlLCBhCisgICAgIGJyb3dzZXIgY2FuIGF2b2lkIGZldGNoaW5nIGEgZGljdGlvbmFyeSBpZiBpdCBhbHJlYWR5IGhhcyBvbmUgd2l0aCB0aGUgc2FtZQorICAgICBoYXNoZWQgY2FjaGVkIGZyb20gYSBkaWZmZXJlbnQgc291cmNlIFVSTC4KKyAgICAgW05PVEUtQk9YXSBJdCBpcyBzdWdnZXN0ZWQgdGhhdCBhIHNlcnZlciBkb2VzIG5vdCByZXVzZSB0aGUgc2FtZSBVUkwKKyAgICAgdG8gaG9zdCBhbiB1cGRhdGVkIG9yIGRpZmZlcmVudCBkaWN0aW9uYXJ5LiBJbnN0ZWFkIHRoZSBzYW1lIGRpY3Rpb25hcnkgVVJMCisgICAgIHNob3VsZCBjb250YWluIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBzYW1lIGNvbnRlbnQgYW5kIHNhbWUgaGFzaC4KKyAgNS4gSWYgZGljdGlvbmFyeVJlc3BvbnNlIGlzIGEgbmV0d29yayBlcnJvciwgcmV0dXJuIGEgbmV0d29yayBlcnJvci4KKyAgNi4gSWYgZGljdGlvbmFyeVJlc3BvbnNlJ3Mgc3RhdHVzIGlzIG5vdCBhbiBvayBzdGF0dXMsIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuCisgIDcuIExldCB0b2tlbnMgYmUgdGhlIHJlc3VsdCBvZgorICAgICBbcGFyc2luZyBtZXRhZGF0YV0oaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvI3BhcnNlLW1ldGFkYXRhKQorICAgICBnaXZlbiBkaWN0aW9uYXJ5SGFzaC4KKyAgICAgW1N1YnJlc291cmNlIEludGVncml0eV0oaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvKQorICA4LiBJZiB0b2tlbnMgaXMgbm8gbWV0YWRhdGEgb3IgdGhlIGxlbmd0aCBvZiB0b2tlbnMgaXMgbm90IDEsIHJldHVybiBhIG5ldHdvcmsKKyAgICAgZXJyb3IKKyAgOS4gTGV0IGFsZ29yaXRobSBiZSB0aGUgYWxnIGNvbXBvbmVudCBvZiB0b2tlbnNbMF0uIElmIGFsZyBpcyAnaHczJywgc2V0CisgICAgIGFsZ29yaXRobSB0byAyNTYtYml0IEhpZ2h3YXlIYXNoCisgIDEwLiBMZXQgZGlnZXN0IGJlIHRoZSB2YWwgY29tcG9uZW50IG9mIHRva2Vuc1sxXS4KKyAgMTEuIExldCBoYXNoVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBiYXNlNjQgZGVjb2RpbmcgZGlnZXN0CisgICAgICBbYmFzZTY0XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDY0OCkKKyAgMTIuIElmIGhhc2hWYWx1ZSBpcyBub3QgYSB2YWxpZCBiYXNlNjQgZW5jb2RpbmcsIHJldHVybiBhIG5ldHdvcmsgZXJyb3IKKyAgICAgIFtOT1RFLUJPWF0gQWxsIG9mIHRoZSBzdXBwb3J0ZWQgaGFzaGluZyBhbGdvcml0aG1zIGFyZSBjcnlwdG9ncmFwaGljYWxseQorICAgICAgc2VjdXJlLgorICAxMy4gQ29tcHV0ZSB0aGUgaGFzaCBjb2RlIG9mIGRpY3Rpb25hcnlSZXNwb25zZSdzIGJvZHkgdXNpbmcgYWxnb3JpdGhtIGFuZAorICAgICAgY29tcGFyZSB0aGlzIGNoZWNrc3VtIGZvciBlcXVhbGl0eSB3aXRoIGhhc2hWYWx1ZS4gSWYgdGhlIGNvbXB1dGVkCisgICAgICBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBoYXNoVmFsdWUsIHJldHVybiBhIG5ldHdvcmsgZXJyb3IuCisgIDE0LiBSZXR1cm4gZGljdGlvbmFyeVJlc3BvbnNlLgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2dvL0JVSUxEIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYTUzMTcKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvZ28vQlVJTEQKQEAgLTAsMCArMSwyIEBACisjIERlc2NyaXB0aW9uOgorIyAgIGNicm90bGkgaXMgYSBDR28gd3JhcHBlciBmb3IgQnJvdGxpLCBhIGdlbmVyaWMtcHVycG9zZSBsb3NzbGVzcyBjb21wcmVzc2lvbiBhbGdvcml0aG0uCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvZ28vV09SS1NQQUNFIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL1dPUktTUEFDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTY1MjY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL1dPUktTUEFDRQpAQCAtMCwwICsxLDIxIEBACit3b3Jrc3BhY2UobmFtZSA9ICJvcmdfYnJvdGxpX2dvIikKKworbG9jYWxfcmVwb3NpdG9yeSgKKyAgICBuYW1lID0gIm9yZ19icm90bGkiLAorICAgIHBhdGggPSAiLi4iLAorKQorCitsb2FkKCJAYmF6ZWxfdG9vbHMvL3Rvb2xzL2J1aWxkX2RlZnMvcmVwbzpodHRwLmJ6bCIsICJodHRwX2FyY2hpdmUiKQorCitodHRwX2FyY2hpdmUoCisgICAgbmFtZSA9ICJpb19iYXplbF9ydWxlc19nbyIsCisgICAgdXJscyA9IFsKKyAgICAgICAgImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9iYXplbC1taXJyb3IvZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX2dvL3JlbGVhc2VzL2Rvd25sb2FkLzAuMTkuMC9ydWxlc19nby0wLjE5LjAudGFyLmd6IiwKKyAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL3J1bGVzX2dvL3JlbGVhc2VzL2Rvd25sb2FkLzAuMTkuMC9ydWxlc19nby0wLjE5LjAudGFyLmd6IiwKKyAgICBdLAorICAgIHNoYTI1NiA9ICI5ZmIxNmFmNGQ0ODM2YzgyMjIxNDJlNTRjOWVmYTBiYjVmYzU2MmZmYzg5M2NlMmFiZWFjM2UyNWRhZWFkMTQ0IiwKKykKKworbG9hZCgiQGlvX2JhemVsX3J1bGVzX2dvLy9nbzpkZXBzLmJ6bCIsICJnb19ydWxlc19kZXBlbmRlbmNpZXMiLCAiZ29fcmVnaXN0ZXJfdG9vbGNoYWlucyIpCitnb19ydWxlc19kZXBlbmRlbmNpZXMoKQorZ29fcmVnaXN0ZXJfdG9vbGNoYWlucygpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvZ28vY2Jyb3RsaS9CVUlMRCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9nby9jYnJvdGxpL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNTk0YWQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvZ28vY2Jyb3RsaS9CVUlMRApAQCAtMCwwICsxLDI2IEBACitwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNlbnNlcyhbIm5vdGljZSJdKSAgIyBNSVQKKworbG9hZCgiQGlvX2JhemVsX3J1bGVzX2dvLy9nbzpkZWYuYnpsIiwgImdvX2xpYnJhcnkiLCAiZ29fdGVzdCIpCisKK2dvX2xpYnJhcnkoCisgICAgbmFtZSA9ICJjYnJvdGxpIiwKKyAgICBzcmNzID0gWworICAgICAgICAicmVhZGVyLmdvIiwKKyAgICAgICAgIndyaXRlci5nbyIsCisgICAgXSwKKyAgICBjZGVwcyA9IFsKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86YnJvdGxpZGVjIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86YnJvdGxpZW5jIiwKKyAgICBdLAorICAgIGNnbyA9IFRydWUsCisgICAgaW1wb3J0cGF0aCA9ICJnaXRodWIuY29tL2dvb2dsZS9icm90bGkvZ28vY2Jyb3RsaSIsCispCisKK2dvX3Rlc3QoCisgICAgbmFtZSA9ICJjYnJvdGxpX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImNicm90bGlfdGVzdC5nbyJdLAorICAgIGVtYmVkID0gWyI6Y2Jyb3RsaSJdLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2dvL2Nicm90bGkvY2Jyb3RsaV90ZXN0LmdvIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL2Nicm90bGkvY2Jyb3RsaV90ZXN0LmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YWQyYmEKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvZ28vY2Jyb3RsaS9jYnJvdGxpX3Rlc3QuZ28KQEAgLTAsMCArMSwzNzEgQEAKKy8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisvLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorCitwYWNrYWdlIGNicm90bGkKKworaW1wb3J0ICgKKwkiYnl0ZXMiCisJImZtdCIKKwkiaW8iCisJImlvL2lvdXRpbCIKKwkibWF0aCIKKwkibWF0aC9yYW5kIgorCSJ0ZXN0aW5nIgorCSJ0aW1lIgorKQorCitmdW5jIGNoZWNrQ29tcHJlc3NlZERhdGEoY29tcHJlc3NlZERhdGEsIHdhbnRPcmlnaW5hbERhdGEgW11ieXRlKSBlcnJvciB7CisJdW5jb21wcmVzc2VkLCBlcnIgOj0gRGVjb2RlKGNvbXByZXNzZWREYXRhKQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gZm10LkVycm9yZigiYnJvdGxpIGRlY29tcHJlc3MgZmFpbGVkOiAldiIsIGVycikKKwl9CisJaWYgIWJ5dGVzLkVxdWFsKHVuY29tcHJlc3NlZCwgd2FudE9yaWdpbmFsRGF0YSkgeworCQlpZiBsZW4od2FudE9yaWdpbmFsRGF0YSkgIT0gbGVuKHVuY29tcHJlc3NlZCkgeworCQkJcmV0dXJuIGZtdC5FcnJvcmYoIiIrCisJCQkJIkRhdGEgZG9lc24ndCB1bmNvbXByZXNzIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZS5cbiIrCisJCQkJIkxlbmd0aCBvZiBvcmlnaW5hbDogJXZcbiIrCisJCQkJIkxlbmd0aCBvZiB1bmNvbXByZXNzZWQ6ICV2IiwKKwkJCQlsZW4od2FudE9yaWdpbmFsRGF0YSksIGxlbih1bmNvbXByZXNzZWQpKQorCQl9CisJCWZvciBpIDo9IHJhbmdlIHdhbnRPcmlnaW5hbERhdGEgeworCQkJaWYgd2FudE9yaWdpbmFsRGF0YVtpXSAhPSB1bmNvbXByZXNzZWRbaV0geworCQkJCXJldHVybiBmbXQuRXJyb3JmKCIiKworCQkJCQkiRGF0YSBkb2Vzbid0IHVuY29tcHJlc3MgdG8gdGhlIG9yaWdpbmFsIHZhbHVlLlxuIisKKwkJCQkJIk9yaWdpbmFsIGF0ICV2IGlzICV2XG4iKworCQkJCQkiVW5jb21wcmVzc2VkIGF0ICV2IGlzICV2IiwKKwkJCQkJaSwgd2FudE9yaWdpbmFsRGF0YVtpXSwgaSwgdW5jb21wcmVzc2VkW2ldKQorCQkJfQorCQl9CisJfQorCXJldHVybiBuaWwKK30KKworZnVuYyBUZXN0RW5jb2Rlck5vV3JpdGUodCAqdGVzdGluZy5UKSB7CisJb3V0IDo9IGJ5dGVzLkJ1ZmZlcnt9CisJZSA6PSBOZXdXcml0ZXIoJm91dCwgV3JpdGVyT3B0aW9uc3tRdWFsaXR5OiA1fSkKKwlpZiBlcnIgOj0gZS5DbG9zZSgpOyBlcnIgIT0gbmlsIHsKKwkJdC5FcnJvcmYoIkNsb3NlKCk9JXYsIHdhbnQgbmlsIiwgZXJyKQorCX0KKwkvLyBDaGVjayBXcml0ZSBhZnRlciBjbG9zZS4KKwlpZiBfLCBlcnIgOj0gZS5Xcml0ZShbXWJ5dGUoImhpIikpOyBlcnIgPT0gbmlsIHsKKwkJdC5FcnJvcmYoIk5vIGVycm9yIGFmdGVyIENsb3NlKCkgKyBXcml0ZSgpIikKKwl9Cit9CisKK2Z1bmMgVGVzdEVuY29kZXJFbXB0eVdyaXRlKHQgKnRlc3RpbmcuVCkgeworCW91dCA6PSBieXRlcy5CdWZmZXJ7fQorCWUgOj0gTmV3V3JpdGVyKCZvdXQsIFdyaXRlck9wdGlvbnN7UXVhbGl0eTogNX0pCisJbiwgZXJyIDo9IGUuV3JpdGUoW11ieXRlKCIiKSkKKwlpZiBuICE9IDAgfHwgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJXcml0ZSgpPSV2LCV2LCB3YW50IDAsIG5pbCIsIG4sIGVycikKKwl9CisJaWYgZXJyIDo9IGUuQ2xvc2UoKTsgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJDbG9zZSgpPSV2LCB3YW50IG5pbCIsIGVycikKKwl9Cit9CisKK2Z1bmMgVGVzdFdyaXRlcih0ICp0ZXN0aW5nLlQpIHsKKwkvLyBUZXN0IGJhc2ljIGVuY29kZXIgdXNhZ2UuCisJaW5wdXQgOj0gW11ieXRlKCI8aHRtbD48Ym9keT48SDE+SGVsbG8gd29ybGQ8L0gxPjwvYm9keT48L2h0bWw+IikKKwlvdXQgOj0gYnl0ZXMuQnVmZmVye30KKwllIDo9IE5ld1dyaXRlcigmb3V0LCBXcml0ZXJPcHRpb25ze1F1YWxpdHk6IDF9KQorCWluIDo9IGJ5dGVzLk5ld1JlYWRlcihbXWJ5dGUoaW5wdXQpKQorCW4sIGVyciA6PSBpby5Db3B5KGUsIGluKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkVycm9yZigiQ29weSBFcnJvcjogJXYiLCBlcnIpCisJfQorCWlmIGludChuKSAhPSBsZW4oaW5wdXQpIHsKKwkJdC5FcnJvcmYoIkNvcHkoKSBuPSV2LCB3YW50ICV2IiwgbiwgbGVuKGlucHV0KSkKKwl9CisJaWYgZXJyIDo9IGUuQ2xvc2UoKTsgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJDbG9zZSBFcnJvciBhZnRlciBjb3BpZWQgJWQgYnl0ZXM6ICV2IiwgbiwgZXJyKQorCX0KKwlpZiBlcnIgOj0gY2hlY2tDb21wcmVzc2VkRGF0YShvdXQuQnl0ZXMoKSwgaW5wdXQpOyBlcnIgIT0gbmlsIHsKKwkJdC5FcnJvcihlcnIpCisJfQorfQorCitmdW5jIFRlc3RFbmNvZGVyU3RyZWFtcyh0ICp0ZXN0aW5nLlQpIHsKKwkvLyBUZXN0IHRoYXQgb3V0cHV0IGlzIHN0cmVhbWVkLgorCS8vIEFkanVzdCB3aW5kb3cgc2l6ZSB0byBlbnN1cmUgdGhlIGVuY29kZXIgb3V0cHV0cyBhdCBsZWFzdCBlbm91Z2ggYnl0ZXMKKwkvLyB0byBmaWxsIHRoZSB3aW5kb3cuCisJY29uc3QgbGdXaW4gPSAxNgorCXdpbmRvd1NpemUgOj0gaW50KG1hdGguUG93KDIsIGxnV2luKSkKKwlpbnB1dCA6PSBtYWtlKFtdYnl0ZSwgOCp3aW5kb3dTaXplKQorCXJhbmQuUmVhZChpbnB1dCkKKwlvdXQgOj0gYnl0ZXMuQnVmZmVye30KKwllIDo9IE5ld1dyaXRlcigmb3V0LCBXcml0ZXJPcHRpb25ze1F1YWxpdHk6IDExLCBMR1dpbjogbGdXaW59KQorCWhhbGZJbnB1dCA6PSBpbnB1dFs6bGVuKGlucHV0KS8yXQorCWluIDo9IGJ5dGVzLk5ld1JlYWRlcihoYWxmSW5wdXQpCisKKwluLCBlcnIgOj0gaW8uQ29weShlLCBpbikKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5FcnJvcmYoIkNvcHkgRXJyb3I6ICV2IiwgZXJyKQorCX0KKworCS8vIFdlJ3ZlIGZlZCBtb3JlIGRhdGEgdGhhbiB0aGUgc2xpZGluZyB3aW5kb3cgc2l6ZS4gQ2hlY2sgdGhhdCBzb21lCisJLy8gY29tcHJlc3NlZCBkYXRhIGhhcyBiZWVuIG91dHB1dC4KKwlpZiBvdXQuTGVuKCkgPT0gMCB7CisJCXQuRXJyb3JmKCJPdXRwdXQgbGVuZ3RoIGlzIDAgYWZ0ZXIgJWQgYnl0ZXMgd3JpdHRlbiIsIG4pCisJfQorCWlmIGVyciA6PSBlLkNsb3NlKCk7IGVyciAhPSBuaWwgeworCQl0LkVycm9yZigiQ2xvc2UgRXJyb3IgYWZ0ZXIgY29waWVkICVkIGJ5dGVzOiAldiIsIG4sIGVycikKKwl9CisJaWYgZXJyIDo9IGNoZWNrQ29tcHJlc3NlZERhdGEob3V0LkJ5dGVzKCksIGhhbGZJbnB1dCk7IGVyciAhPSBuaWwgeworCQl0LkVycm9yKGVycikKKwl9Cit9CisKK2Z1bmMgVGVzdEVuY29kZXJMYXJnZUlucHV0KHQgKnRlc3RpbmcuVCkgeworCWlucHV0IDo9IG1ha2UoW11ieXRlLCAxMDAwMDAwKQorCXJhbmQuUmVhZChpbnB1dCkKKwlvdXQgOj0gYnl0ZXMuQnVmZmVye30KKwllIDo9IE5ld1dyaXRlcigmb3V0LCBXcml0ZXJPcHRpb25ze1F1YWxpdHk6IDV9KQorCWluIDo9IGJ5dGVzLk5ld1JlYWRlcihpbnB1dCkKKworCW4sIGVyciA6PSBpby5Db3B5KGUsIGluKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkVycm9yZigiQ29weSBFcnJvcjogJXYiLCBlcnIpCisJfQorCWlmIGludChuKSAhPSBsZW4oaW5wdXQpIHsKKwkJdC5FcnJvcmYoIkNvcHkoKSBuPSV2LCB3YW50ICV2IiwgbiwgbGVuKGlucHV0KSkKKwl9CisJaWYgZXJyIDo9IGUuQ2xvc2UoKTsgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJDbG9zZSBFcnJvciBhZnRlciBjb3BpZWQgJWQgYnl0ZXM6ICV2IiwgbiwgZXJyKQorCX0KKwlpZiBlcnIgOj0gY2hlY2tDb21wcmVzc2VkRGF0YShvdXQuQnl0ZXMoKSwgaW5wdXQpOyBlcnIgIT0gbmlsIHsKKwkJdC5FcnJvcihlcnIpCisJfQorfQorCitmdW5jIFRlc3RFbmNvZGVyRmx1c2godCAqdGVzdGluZy5UKSB7CisJaW5wdXQgOj0gbWFrZShbXWJ5dGUsIDEwMDApCisJcmFuZC5SZWFkKGlucHV0KQorCW91dCA6PSBieXRlcy5CdWZmZXJ7fQorCWUgOj0gTmV3V3JpdGVyKCZvdXQsIFdyaXRlck9wdGlvbnN7UXVhbGl0eTogNX0pCisJaW4gOj0gYnl0ZXMuTmV3UmVhZGVyKGlucHV0KQorCV8sIGVyciA6PSBpby5Db3B5KGUsIGluKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsZigiQ29weSBFcnJvcjogJXYiLCBlcnIpCisJfQorCWlmIGVyciA6PSBlLkZsdXNoKCk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsZigiRmx1c2goKTogJXYiLCBlcnIpCisJfQorCWlmIG91dC5MZW4oKSA9PSAwIHsKKwkJdC5GYXRhbGYoIjAgYnl0ZXMgd3JpdHRlbiBhZnRlciBGbHVzaCgpIikKKwl9CisJZGVjb21wcmVzc2VkIDo9IG1ha2UoW11ieXRlLCAxMDAwKQorCXJlYWRlciA6PSBOZXdSZWFkZXIoYnl0ZXMuTmV3UmVhZGVyKG91dC5CeXRlcygpKSkKKwluLCBlcnIgOj0gcmVhZGVyLlJlYWQoZGVjb21wcmVzc2VkKQorCWlmIG4gIT0gbGVuKGRlY29tcHJlc3NlZCkgfHwgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJFeHBlY3RlZCA8JXYsIG5pbD4sIGJ1dCA8JXYsICV2PiIsIGxlbihkZWNvbXByZXNzZWQpLCBuLCBlcnIpCisJfQorCXJlYWRlci5DbG9zZSgpCisJaWYgIWJ5dGVzLkVxdWFsKGRlY29tcHJlc3NlZCwgaW5wdXQpIHsKKwkJdC5FcnJvcmYoIiIrCisJCQkiRGVjb21wcmVzcyBhZnRlciBmbHVzaDogJXZcbiIrCisJCQkiJXFcbiIrCisJCQkid2FudDpcbiVxIiwKKwkJCWVyciwgZGVjb21wcmVzc2VkLCBpbnB1dCkKKwl9CisJaWYgZXJyIDo9IGUuQ2xvc2UoKTsgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJDbG9zZSgpOiAldiIsIGVycikKKwl9Cit9CisKK3R5cGUgcmVhZGVyV2l0aFRpbWVvdXQgc3RydWN0IHsKKwlpby5SZWFkQ2xvc2VyCit9CisKK2Z1bmMgKHIgcmVhZGVyV2l0aFRpbWVvdXQpIFJlYWQocCBbXWJ5dGUpIChpbnQsIGVycm9yKSB7CisJdHlwZSByZXN1bHQgc3RydWN0IHsKKwkJbiAgIGludAorCQllcnIgZXJyb3IKKwl9CisJY2ggOj0gbWFrZShjaGFuIHJlc3VsdCkKKwlnbyBmdW5jKCkgeworCQluLCBlcnIgOj0gci5SZWFkQ2xvc2VyLlJlYWQocCkKKwkJY2ggPC0gcmVzdWx0e24sIGVycn0KKwl9KCkKKwlzZWxlY3QgeworCWNhc2UgcmVzdWx0IDo9IDwtY2g6CisJCXJldHVybiByZXN1bHQubiwgcmVzdWx0LmVycgorCWNhc2UgPC10aW1lLkFmdGVyKDUgKiB0aW1lLlNlY29uZCk6CisJCXJldHVybiAwLCBmbXQuRXJyb3JmKCJyZWFkIHRpbWVkIG91dCIpCisJfQorfQorCitmdW5jIFRlc3REZWNvZGVyU3RyZWFtaW5nKHQgKnRlc3RpbmcuVCkgeworCXByLCBwdyA6PSBpby5QaXBlKCkKKwl3cml0ZXIgOj0gTmV3V3JpdGVyKHB3LCBXcml0ZXJPcHRpb25ze1F1YWxpdHk6IDUsIExHV2luOiAyMH0pCisJcmVhZGVyIDo9IHJlYWRlcldpdGhUaW1lb3V0e05ld1JlYWRlcihwcil9CisJZGVmZXIgZnVuYygpIHsKKwkJaWYgZXJyIDo9IHJlYWRlci5DbG9zZSgpOyBlcnIgIT0gbmlsIHsKKwkJCXQuRXJyb3JmKCJyZWFkZXIuQ2xvc2U6ICV2IiwgZXJyKQorCQl9CisJCWdvIGlvdXRpbC5SZWFkQWxsKHByKSAvLyBzd2FsbG93IHRoZSAiRU9GIiB0b2tlbiBmcm9tIHdyaXRlci5DbG9zZQorCQlpZiBlcnIgOj0gd3JpdGVyLkNsb3NlKCk7IGVyciAhPSBuaWwgeworCQkJdC5FcnJvcmYoIndyaXRlci5DbG9zZTogJXYiLCBlcnIpCisJCX0KKwl9KCkKKworCWNoIDo9IG1ha2UoY2hhbiBbXWJ5dGUpCisJZXJyY2ggOj0gbWFrZShjaGFuIGVycm9yKQorCWdvIGZ1bmMoKSB7CisJCWZvciB7CisJCQlzZWdtZW50LCBvayA6PSA8LWNoCisJCQlpZiAhb2sgeworCQkJCXJldHVybgorCQkJfQorCQkJaWYgbiwgZXJyIDo9IHdyaXRlci5Xcml0ZShzZWdtZW50KTsgZXJyICE9IG5pbCB8fCBuICE9IGxlbihzZWdtZW50KSB7CisJCQkJZXJyY2ggPC0gZm10LkVycm9yZigid3JpdGU9JXYsJXYsIHdhbnQgJXYsJXYiLCBuLCBlcnIsIGxlbihzZWdtZW50KSwgbmlsKQorCQkJCXJldHVybgorCQkJfQorCQkJaWYgZXJyIDo9IHdyaXRlci5GbHVzaCgpOyBlcnIgIT0gbmlsIHsKKwkJCQllcnJjaCA8LSBmbXQuRXJyb3JmKCJmbHVzaDogJXYiLCBlcnIpCisJCQkJcmV0dXJuCisJCQl9CisJCX0KKwl9KCkKKwlkZWZlciBjbG9zZShjaCkKKworCXNlZ21lbnRzIDo9IFsuLi5dW11ieXRleworCQlbXWJ5dGUoImZpcnN0IiksCisJCVtdYnl0ZSgic2Vjb25kIiksCisJCVtdYnl0ZSgidGhpcmQiKSwKKwl9CisJZm9yIGssIHNlZ21lbnQgOj0gcmFuZ2Ugc2VnbWVudHMgeworCQl0LlJ1bihmbXQuU3ByaW50ZigiU2VnbWVudCVkIiwgayksIGZ1bmModCAqdGVzdGluZy5UKSB7CisJCQlzZWxlY3QgeworCQkJY2FzZSBjaCA8LSBzZWdtZW50OgorCQkJY2FzZSBlcnIgOj0gPC1lcnJjaDoKKwkJCQl0LkZhdGFsZigid3JpdGU6ICV2IiwgZXJyKQorCQkJY2FzZSA8LXRpbWUuQWZ0ZXIoNSAqIHRpbWUuU2Vjb25kKToKKwkJCQl0LkZhdGFsZigidGltZWQgb3V0IikKKwkJCX0KKwkJCXdhbnRMZW4gOj0gbGVuKHNlZ21lbnQpCisJCQlnb3QgOj0gbWFrZShbXWJ5dGUsIHdhbnRMZW4pCisJCQlpZiBuLCBlcnIgOj0gcmVhZGVyLlJlYWQoZ290KTsgZXJyICE9IG5pbCB8fCBuICE9IHdhbnRMZW4gfHwgIWJ5dGVzLkVxdWFsKGdvdCwgc2VnbWVudCkgeworCQkJCXQuRmF0YWxmKCJyZWFkWyVkXT0lcSwldiwldiwgd2FudCAlcSwldiwldiIsIGssIGdvdCwgbiwgZXJyLCBzZWdtZW50LCB3YW50TGVuLCBuaWwpCisJCQl9CisJCX0pCisJfQorfQorCitmdW5jIFRlc3RSZWFkZXIodCAqdGVzdGluZy5UKSB7CisJY29udGVudCA6PSBieXRlcy5SZXBlYXQoW11ieXRlKCJoZWxsbyB3b3JsZCEiKSwgMTAwMDApCisJZW5jb2RlZCwgXyA6PSBFbmNvZGUoY29udGVudCwgV3JpdGVyT3B0aW9uc3tRdWFsaXR5OiA1fSkKKwlyIDo9IE5ld1JlYWRlcihieXRlcy5OZXdSZWFkZXIoZW5jb2RlZCkpCisJdmFyIGRlY29kZWRPdXRwdXQgYnl0ZXMuQnVmZmVyCisJbiwgZXJyIDo9IGlvLkNvcHkoJmRlY29kZWRPdXRwdXQsIHIpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWxmKCJDb3B5KCk6IG49JXYsIGVycj0ldiIsIG4sIGVycikKKwl9CisJaWYgZXJyIDo9IHIuQ2xvc2UoKTsgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJDbG9zZSgpOiAldiIsIGVycikKKwl9CisJaWYgZ290IDo9IGRlY29kZWRPdXRwdXQuQnl0ZXMoKTsgIWJ5dGVzLkVxdWFsKGdvdCwgY29udGVudCkgeworCQl0LkVycm9yZigiIisKKwkJCSJSZWFkZXIgb3V0cHV0OlxuIisKKwkJCSIlcVxuIisKKwkJCSJ3YW50OlxuIisKKwkJCSI8JWQgYnl0ZXM+IiwKKwkJCWdvdCwgbGVuKGNvbnRlbnQpKQorCX0KKwlidWYgOj0gbWFrZShbXWJ5dGUsIDQpCisJaWYgXywgZXJyIDo9IHIuUmVhZChidWYpOyBlcnIgIT0gZXJyUmVhZGVyQ2xvc2VkIHsKKwkJdC5FcnJvcmYoIlJlYWQtYWZ0ZXItQ2xvc2UgcmV0dXJuZWQgJXYsIGV4cGVjdGVkICV2IiwgZXJyLCBlcnJSZWFkZXJDbG9zZWQpCisJfQorfQorCitmdW5jIFRlc3REZWNvZGUodCAqdGVzdGluZy5UKSB7CisJY29udGVudCA6PSBieXRlcy5SZXBlYXQoW11ieXRlKCJoZWxsbyB3b3JsZCEiKSwgMTAwMDApCisJZW5jb2RlZCwgXyA6PSBFbmNvZGUoY29udGVudCwgV3JpdGVyT3B0aW9uc3tRdWFsaXR5OiA1fSkKKwlkZWNvZGVkLCBlcnIgOj0gRGVjb2RlKGVuY29kZWQpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRXJyb3JmKCJEZWNvZGU6ICV2IiwgZXJyKQorCX0KKwlpZiAhYnl0ZXMuRXF1YWwoZGVjb2RlZCwgY29udGVudCkgeworCQl0LkVycm9yZigiIisKKwkJCSJEZWNvZGUgY29udGVudDpcbiIrCisJCQkiJXFcbiIrCisJCQkid2FudDpcbiIrCisJCQkiPCVkIGJ5dGVzPiIsCisJCQlkZWNvZGVkLCBsZW4oY29udGVudCkpCisJfQorfQorCitmdW5jIFRlc3REZWNvZGVGdXp6KHQgKnRlc3RpbmcuVCkgeworCS8vIFRlc3QgdGhhdCB0aGUgZGVjb2RlciB0ZXJtaW5hdGVzIHdpdGggY29ycnVwdGVkIGlucHV0LgorCWNvbnRlbnQgOj0gYnl0ZXMuUmVwZWF0KFtdYnl0ZSgiaGVsbG8gd29ybGQhIiksIDEwMCkKKwlzcmMgOj0gcmFuZC5OZXdTb3VyY2UoMCkKKwllbmNvZGVkLCBlcnIgOj0gRW5jb2RlKGNvbnRlbnQsIFdyaXRlck9wdGlvbnN7UXVhbGl0eTogNX0pCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWxmKCJFbmNvZGUoPCVkIGJ5dGVzPiwgXykgPSBfLCAlcyIsIGxlbihjb250ZW50KSwgZXJyKQorCX0KKwlpZiBsZW4oZW5jb2RlZCkgPT0gMCB7CisJCXQuRmF0YWxmKCJFbmNvZGUoPCVkIGJ5dGVzPiwgXykgcHJvZHVjZWQgZW1wdHkgb3V0cHV0IiwgbGVuKGNvbnRlbnQpKQorCX0KKwlmb3IgaSA6PSAwOyBpIDwgMTAwOyBpKysgeworCQllbmMgOj0gYXBwZW5kKFtdYnl0ZXt9LCBlbmNvZGVkLi4uKQorCQlmb3IgaiA6PSAwOyBqIDwgNTsgaisrIHsKKwkJCWVuY1tpbnQoc3JjLkludDYzKCkpJWxlbihlbmMpXSA9IGJ5dGUoc3JjLkludDYzKCkgJSAyNTYpCisJCX0KKwkJRGVjb2RlKGVuYykKKwl9Cit9CisKK2Z1bmMgVGVzdERlY29kZVRyYWlsaW5nRGF0YSh0ICp0ZXN0aW5nLlQpIHsKKwljb250ZW50IDo9IGJ5dGVzLlJlcGVhdChbXWJ5dGUoImhlbGxvIHdvcmxkISIpLCAxMDApCisJZW5jb2RlZCwgXyA6PSBFbmNvZGUoY29udGVudCwgV3JpdGVyT3B0aW9uc3tRdWFsaXR5OiA1fSkKKwlfLCBlcnIgOj0gRGVjb2RlKGFwcGVuZChlbmNvZGVkLCAwKSkKKwlpZiBlcnIgPT0gbmlsIHsKKwkJdC5FcnJvcmYoIkV4cGVjdGVkICdleGNlc3NpdmUgaW5wdXQnIGVycm9yIikKKwl9Cit9CisKK2Z1bmMgVGVzdEVuY29kZURlY29kZSh0ICp0ZXN0aW5nLlQpIHsKKwlmb3IgXywgdGVzdCA6PSByYW5nZSBbXXN0cnVjdCB7CisJCWRhdGEgICAgW11ieXRlCisJCXJlcGVhdHMgaW50CisJfXsKKwkJe25pbCwgMH0sCisJCXtbXWJ5dGUoIkEiKSwgMX0sCisJCXtbXWJ5dGUoIjxodG1sPjxib2R5PjxIMT5IZWxsbyB3b3JsZDwvSDE+PC9ib2R5PjwvaHRtbD4iKSwgMTB9LAorCQl7W11ieXRlKCI8aHRtbD48Ym9keT48SDE+SGVsbG8gd29ybGQ8L0gxPjwvYm9keT48L2h0bWw+IiksIDEwMDB9LAorCX0geworCQl0LkxvZ2YoImNhc2UgJXEgeCAlZCIsIHRlc3QuZGF0YSwgdGVzdC5yZXBlYXRzKQorCQlpbnB1dCA6PSBieXRlcy5SZXBlYXQodGVzdC5kYXRhLCB0ZXN0LnJlcGVhdHMpCisJCWVuY29kZWQsIGVyciA6PSBFbmNvZGUoaW5wdXQsIFdyaXRlck9wdGlvbnN7UXVhbGl0eTogNX0pCisJCWlmIGVyciAhPSBuaWwgeworCQkJdC5FcnJvcmYoIkVuY29kZTogJXYiLCBlcnIpCisJCX0KKwkJLy8gSW5wdXRzIGFyZSBjb21wcmVzc2libGUsIGJ1dCBtYXkgYmUgdG9vIHNtYWxsIHRvIGNvbXByZXNzLgorCQlpZiBtYXhTaXplIDo9IGxlbihpbnB1dCkvMiArIDIwOyBsZW4oZW5jb2RlZCkgPj0gbWF4U2l6ZSB7CisJCQl0LkVycm9yZigiIisKKwkJCQkiRW5jb2RlIHJldHVybmVkICVkIGJ5dGVzLCB3YW50IDwlZFxuIisKKwkJCQkiRW5jb2RlZD0lcSIsCisJCQkJbGVuKGVuY29kZWQpLCBtYXhTaXplLCBlbmNvZGVkKQorCQl9CisJCWRlY29kZWQsIGVyciA6PSBEZWNvZGUoZW5jb2RlZCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQl0LkVycm9yZigiRGVjb2RlOiAldiIsIGVycikKKwkJfQorCQlpZiAhYnl0ZXMuRXF1YWwoZGVjb2RlZCwgaW5wdXQpIHsKKwkJCXZhciB3YW50IHN0cmluZworCQkJaWYgbGVuKGlucHV0KSA+IDMyMCB7CisJCQkJd2FudCA9IGZtdC5TcHJpbnRmKCI8JWQgYnl0ZXM+IiwgbGVuKGlucHV0KSkKKwkJCX0gZWxzZSB7CisJCQkJd2FudCA9IGZtdC5TcHJpbnRmKCIlcSIsIGlucHV0KQorCQkJfQorCQkJdC5FcnJvcmYoIiIrCisJCQkJIkRlY29kZSBjb250ZW50OlxuIisKKwkJCQkiJXFcbiIrCisJCQkJIndhbnQ6XG4iKworCQkJCSIlcyIsCisJCQkJZGVjb2RlZCwgd2FudCkKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9nby9jYnJvdGxpL2Nnby5nbyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9nby9jYnJvdGxpL2Nnby5nbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTUzZjcyCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL2Nicm90bGkvY2dvLmdvCkBAIC0wLDAgKzEsMTMgQEAKKy8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisvLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorCitwYWNrYWdlIGNicm90bGkKKworLy8gSW5mb3JtIGdvbGFuZyBidWlsZCBzeXN0ZW0gdGhhdCBpdCBzaG91bGQgbGluayBicm90bGkgbGlicmFyaWVzLgorCisvLyAjY2dvIExERkxBR1M6IC1sYnJvdGxpY29tbW9uCisvLyAjY2dvIExERkxBR1M6IC1sYnJvdGxpZGVjCisvLyAjY2dvIExERkxBR1M6IC1sYnJvdGxpZW5jCitpbXBvcnQgIkMiCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvZ28vY2Jyb3RsaS9nby5tb2QgYi90aGlyZF9wYXJ0eS9icm90bGkvZ28vY2Jyb3RsaS9nby5tb2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q4Yzg1OQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9nby9jYnJvdGxpL2dvLm1vZApAQCAtMCwwICsxIEBACittb2R1bGUgZ2l0aHViLmNvbS9nb29nbGUvYnJvdGxpL2dvL2Nicm90bGkKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9nby9jYnJvdGxpL3JlYWRlci5nbyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9nby9jYnJvdGxpL3JlYWRlci5nbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTM5MGMzCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL2Nicm90bGkvcmVhZGVyLmdvCkBAIC0wLDAgKzEsMTY0IEBACisvLyBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKworLy8gUGFja2FnZSBjYnJvdGxpIGNvbXByZXNzZXMgYW5kIGRlY29tcHJlc3NlcyBkYXRhIHdpdGggQy1Ccm90bGkgbGlicmFyeS4KK3BhY2thZ2UgY2Jyb3RsaQorCisvKgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8YnJvdGxpL2RlY29kZS5oPgorCitzdGF0aWMgQnJvdGxpRGVjb2RlclJlc3VsdCBEZWNvbXByZXNzU3RyZWFtKEJyb3RsaURlY29kZXJTdGF0ZSogcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogb3V0LCBzaXplX3Qgb3V0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogaW4sIHNpemVfdCBpbl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19jb25zdW1lZCkgeworICBzaXplX3QgaW5fcmVtYWluaW5nID0gaW5fbGVuOworICBzaXplX3Qgb3V0X3JlbWFpbmluZyA9IG91dF9sZW47CisgIEJyb3RsaURlY29kZXJSZXN1bHQgcmVzdWx0ID0gQnJvdGxpRGVjb2RlckRlY29tcHJlc3NTdHJlYW0oCisgICAgICBzLCAmaW5fcmVtYWluaW5nLCAmaW4sICZvdXRfcmVtYWluaW5nLCAmb3V0LCBOVUxMKTsKKyAgKmJ5dGVzX3dyaXR0ZW4gPSBvdXRfbGVuIC0gb3V0X3JlbWFpbmluZzsKKyAgKmJ5dGVzX2NvbnN1bWVkID0gaW5fbGVuIC0gaW5fcmVtYWluaW5nOworICByZXR1cm4gcmVzdWx0OworfQorKi8KK2ltcG9ydCAiQyIKKworaW1wb3J0ICgKKwkiYnl0ZXMiCisJImVycm9ycyIKKwkiaW8iCisJImlvL2lvdXRpbCIKKykKKwordHlwZSBkZWNvZGVFcnJvciBDLkJyb3RsaURlY29kZXJFcnJvckNvZGUKKworZnVuYyAoZXJyIGRlY29kZUVycm9yKSBFcnJvcigpIHN0cmluZyB7CisJcmV0dXJuICJjYnJvdGxpOiAiICsKKwkJQy5Hb1N0cmluZyhDLkJyb3RsaURlY29kZXJFcnJvclN0cmluZyhDLkJyb3RsaURlY29kZXJFcnJvckNvZGUoZXJyKSkpCit9CisKK3ZhciBlcnJFeGNlc3NpdmVJbnB1dCA9IGVycm9ycy5OZXcoImNicm90bGk6IGV4Y2Vzc2l2ZSBpbnB1dCIpCit2YXIgZXJySW52YWxpZFN0YXRlID0gZXJyb3JzLk5ldygiY2Jyb3RsaTogaW52YWxpZCBzdGF0ZSIpCit2YXIgZXJyUmVhZGVyQ2xvc2VkID0gZXJyb3JzLk5ldygiY2Jyb3RsaTogUmVhZGVyIGlzIGNsb3NlZCIpCisKKy8vIFJlYWRlciBpbXBsZW1lbnRzIGlvLlJlYWRDbG9zZXIgYnkgcmVhZGluZyBCcm90bGktZW5jb2RlZCBkYXRhIGZyb20gYW4KKy8vIHVuZGVybHlpbmcgUmVhZGVyLgordHlwZSBSZWFkZXIgc3RydWN0IHsKKwlzcmMgICBpby5SZWFkZXIKKwlzdGF0ZSAqQy5Ccm90bGlEZWNvZGVyU3RhdGUKKwlidWYgICBbXWJ5dGUgLy8gc2NyYXRjaCBzcGFjZSBmb3IgcmVhZGluZyBmcm9tIHNyYworCWluICAgIFtdYnl0ZSAvLyBjdXJyZW50IGNodW5rIHRvIGRlY29kZTsgdXN1YWxseSBhbGlhc2VzIGJ1ZgorfQorCisvLyByZWFkQnVmU2l6ZSBpcyBhICJnb29kIiBidWZmZXIgc2l6ZSB0aGF0IGF2b2lkcyBleGNlc3NpdmUgcm91bmQtdHJpcHMKKy8vIGJldHdlZW4gQyBhbmQgR28gYnV0IGRvZXNuJ3Qgd2FzdGUgdG9vIG11Y2ggbWVtb3J5IG9uIGJ1ZmZlcmluZy4KKy8vIEl0IGlzIGFyYml0cmFyaWx5IGNob3NlbiB0byBiZSBlcXVhbCB0byB0aGUgY29uc3RhbnQgdXNlZCBpbiBpby5Db3B5LgorY29uc3QgcmVhZEJ1ZlNpemUgPSAzMiAqIDEwMjQKKworLy8gTmV3UmVhZGVyIGluaXRpYWxpemVzIG5ldyBSZWFkZXIgaW5zdGFuY2UuCisvLyBDbG9zZSBNVVNUIGJlIGNhbGxlZCB0byBmcmVlIHJlc291cmNlcy4KK2Z1bmMgTmV3UmVhZGVyKHNyYyBpby5SZWFkZXIpICpSZWFkZXIgeworCXJldHVybiAmUmVhZGVyeworCQlzcmM6ICAgc3JjLAorCQlzdGF0ZTogQy5Ccm90bGlEZWNvZGVyQ3JlYXRlSW5zdGFuY2UobmlsLCBuaWwsIG5pbCksCisJCWJ1ZjogICBtYWtlKFtdYnl0ZSwgcmVhZEJ1ZlNpemUpLAorCX0KK30KKworLy8gQ2xvc2UgaW1wbGVtZW50cyBpby5DbG9zZXIuIENsb3NlIE1VU1QgYmUgaW52b2tlZCB0byBmcmVlIG5hdGl2ZSByZXNvdXJjZXMuCitmdW5jIChyICpSZWFkZXIpIENsb3NlKCkgZXJyb3IgeworCWlmIHIuc3RhdGUgPT0gbmlsIHsKKwkJcmV0dXJuIGVyclJlYWRlckNsb3NlZAorCX0KKwkvLyBDbG9zZSBkZXNwaXRlIHRoZSBzdGF0ZTsgaS5lLiB0aGVyZSBtaWdodCBiZSBzb21lIHVucmVhZCBkZWNvZGVkIGRhdGEuCisJQy5Ccm90bGlEZWNvZGVyRGVzdHJveUluc3RhbmNlKHIuc3RhdGUpCisJci5zdGF0ZSA9IG5pbAorCXJldHVybiBuaWwKK30KKworZnVuYyAociAqUmVhZGVyKSBSZWFkKHAgW11ieXRlKSAobiBpbnQsIGVyciBlcnJvcikgeworCWlmIHIuc3RhdGUgPT0gbmlsIHsKKwkJcmV0dXJuIDAsIGVyclJlYWRlckNsb3NlZAorCX0KKwlpZiBpbnQoQy5Ccm90bGlEZWNvZGVySGFzTW9yZU91dHB1dChyLnN0YXRlKSkgPT0gMCAmJiBsZW4oci5pbikgPT0gMCB7CisJCW0sIHJlYWRFcnIgOj0gci5zcmMuUmVhZChyLmJ1ZikKKwkJaWYgbSA9PSAwIHsKKwkJCS8vIElmIHJlYWRFcnIgaXMgYG5pbGAsIHdlIGp1c3QgcHJveHkgdW5kZXJseWluZyBzdHJlYW0gYmVoYXZpb3IuCisJCQlyZXR1cm4gMCwgcmVhZEVycgorCQl9CisJCXIuaW4gPSByLmJ1Zls6bV0KKwl9CisKKwlpZiBsZW4ocCkgPT0gMCB7CisJCXJldHVybiAwLCBuaWwKKwl9CisKKwlmb3IgeworCQl2YXIgd3JpdHRlbiwgY29uc3VtZWQgQy5zaXplX3QKKwkJdmFyIGRhdGEgKkMudWludDhfdAorCQlpZiBsZW4oci5pbikgIT0gMCB7CisJCQlkYXRhID0gKCpDLnVpbnQ4X3QpKCZyLmluWzBdKQorCQl9CisJCXJlc3VsdCA6PSBDLkRlY29tcHJlc3NTdHJlYW0oci5zdGF0ZSwKKwkJCSgqQy51aW50OF90KSgmcFswXSksIEMuc2l6ZV90KGxlbihwKSksCisJCQlkYXRhLCBDLnNpemVfdChsZW4oci5pbikpLAorCQkJJndyaXR0ZW4sICZjb25zdW1lZCkKKwkJci5pbiA9IHIuaW5baW50KGNvbnN1bWVkKTpdCisJCW4gPSBpbnQod3JpdHRlbikKKworCQlzd2l0Y2ggcmVzdWx0IHsKKwkJY2FzZSBDLkJST1RMSV9ERUNPREVSX1JFU1VMVF9TVUNDRVNTOgorCQkJaWYgbGVuKHIuaW4pID4gMCB7CisJCQkJcmV0dXJuIG4sIGVyckV4Y2Vzc2l2ZUlucHV0CisJCQl9CisJCQlyZXR1cm4gbiwgbmlsCisJCWNhc2UgQy5CUk9UTElfREVDT0RFUl9SRVNVTFRfRVJST1I6CisJCQlyZXR1cm4gbiwgZGVjb2RlRXJyb3IoQy5Ccm90bGlEZWNvZGVyR2V0RXJyb3JDb2RlKHIuc3RhdGUpKQorCQljYXNlIEMuQlJPVExJX0RFQ09ERVJfUkVTVUxUX05FRURTX01PUkVfT1VUUFVUOgorCQkJaWYgbiA9PSAwIHsKKwkJCQlyZXR1cm4gMCwgaW8uRXJyU2hvcnRCdWZmZXIKKwkJCX0KKwkJCXJldHVybiBuLCBuaWwKKwkJY2FzZSBDLkJST1RMSV9ERUNPREVSX05FRURTX01PUkVfSU5QVVQ6CisJCX0KKworCQlpZiBsZW4oci5pbikgIT0gMCB7CisJCQlyZXR1cm4gMCwgZXJySW52YWxpZFN0YXRlCisJCX0KKworCQkvLyBDYWxsaW5nIHIuc3JjLlJlYWQgbWF5IGJsb2NrLiBEb24ndCBibG9jayBpZiB3ZSBoYXZlIGRhdGEgdG8gcmV0dXJuLgorCQlpZiBuID4gMCB7CisJCQlyZXR1cm4gbiwgbmlsCisJCX0KKworCQkvLyBUb3Agb2ZmIHRoZSBidWZmZXIuCisJCWVuY04sIGVyciA6PSByLnNyYy5SZWFkKHIuYnVmKQorCQlpZiBlbmNOID09IDAgeworCQkJLy8gTm90IGVub3VnaCBkYXRhIHRvIGNvbXBsZXRlIGRlY29kaW5nLgorCQkJaWYgZXJyID09IGlvLkVPRiB7CisJCQkJcmV0dXJuIDAsIGlvLkVyclVuZXhwZWN0ZWRFT0YKKwkJCX0KKwkJCXJldHVybiAwLCBlcnIKKwkJfQorCQlyLmluID0gci5idWZbOmVuY05dCisJfQorCisJcmV0dXJuIG4sIG5pbAorfQorCisvLyBEZWNvZGUgZGVjb2RlcyBCcm90bGkgZW5jb2RlZCBkYXRhLgorZnVuYyBEZWNvZGUoZW5jb2RlZERhdGEgW11ieXRlKSAoW11ieXRlLCBlcnJvcikgeworCXIgOj0gJlJlYWRlcnsKKwkJc3JjOiAgIGJ5dGVzLk5ld1JlYWRlcihuaWwpLAorCQlzdGF0ZTogQy5Ccm90bGlEZWNvZGVyQ3JlYXRlSW5zdGFuY2UobmlsLCBuaWwsIG5pbCksCisJCWJ1ZjogICBtYWtlKFtdYnl0ZSwgNCksIC8vIGFyYml0cmFyaWx5IHNtYWxsIGJ1dCBub256ZXJvIHNvIHRoYXQgci5zcmMuUmVhZCByZXR1cm5zIGlvLkVPRgorCQlpbjogICAgZW5jb2RlZERhdGEsCisJfQorCWRlZmVyIHIuQ2xvc2UoKQorCXJldHVybiBpb3V0aWwuUmVhZEFsbChyKQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2dvL2Nicm90bGkvd3JpdGVyLmdvIGIvdGhpcmRfcGFydHkvYnJvdGxpL2dvL2Nicm90bGkvd3JpdGVyLmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYTc1YWIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvZ28vY2Jyb3RsaS93cml0ZXIuZ28KQEAgLTAsMCArMSwxNTkgQEAKKy8vIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisvLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorCitwYWNrYWdlIGNicm90bGkKKworLyoKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlIDxicm90bGkvZW5jb2RlLmg+CisKK3N0cnVjdCBDb21wcmVzc1N0cmVhbVJlc3VsdCB7CisgIHNpemVfdCBieXRlc19jb25zdW1lZDsKKyAgY29uc3QgdWludDhfdCogb3V0cHV0X2RhdGE7CisgIHNpemVfdCBvdXRwdXRfZGF0YV9zaXplOworICBpbnQgc3VjY2VzczsKKyAgaW50IGhhc19tb3JlOworfTsKKworc3RhdGljIHN0cnVjdCBDb21wcmVzc1N0cmVhbVJlc3VsdCBDb21wcmVzc1N0cmVhbSgKKyAgICBCcm90bGlFbmNvZGVyU3RhdGUqIHMsIEJyb3RsaUVuY29kZXJPcGVyYXRpb24gb3AsCisgICAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkgeworICBzdHJ1Y3QgQ29tcHJlc3NTdHJlYW1SZXN1bHQgcmVzdWx0OworICBzaXplX3QgYXZhaWxhYmxlX2luID0gZGF0YV9zaXplOworICBjb25zdCB1aW50OF90KiBuZXh0X2luID0gZGF0YTsKKyAgc2l6ZV90IGF2YWlsYWJsZV9vdXQgPSAwOworICByZXN1bHQuc3VjY2VzcyA9IEJyb3RsaUVuY29kZXJDb21wcmVzc1N0cmVhbShzLCBvcCwKKyAgICAgICZhdmFpbGFibGVfaW4sICZuZXh0X2luLCAmYXZhaWxhYmxlX291dCwgMCwgMCkgPyAxIDogMDsKKyAgcmVzdWx0LmJ5dGVzX2NvbnN1bWVkID0gZGF0YV9zaXplIC0gYXZhaWxhYmxlX2luOworICByZXN1bHQub3V0cHV0X2RhdGEgPSAwOworICByZXN1bHQub3V0cHV0X2RhdGFfc2l6ZSA9IDA7CisgIGlmIChyZXN1bHQuc3VjY2VzcykgeworICAgIHJlc3VsdC5vdXRwdXRfZGF0YSA9IEJyb3RsaUVuY29kZXJUYWtlT3V0cHV0KHMsICZyZXN1bHQub3V0cHV0X2RhdGFfc2l6ZSk7CisgIH0KKyAgcmVzdWx0Lmhhc19tb3JlID0gQnJvdGxpRW5jb2Rlckhhc01vcmVPdXRwdXQocykgPyAxIDogMDsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKyovCitpbXBvcnQgIkMiCisKK2ltcG9ydCAoCisJImJ5dGVzIgorCSJlcnJvcnMiCisJImlvIgorCSJ1bnNhZmUiCispCisKKy8vIFdyaXRlck9wdGlvbnMgY29uZmlndXJlcyBXcml0ZXIuCit0eXBlIFdyaXRlck9wdGlvbnMgc3RydWN0IHsKKwkvLyBRdWFsaXR5IGNvbnRyb2xzIHRoZSBjb21wcmVzc2lvbi1zcGVlZCB2cyBjb21wcmVzc2lvbi1kZW5zaXR5IHRyYWRlLW9mZnMuCisJLy8gVGhlIGhpZ2hlciB0aGUgcXVhbGl0eSwgdGhlIHNsb3dlciB0aGUgY29tcHJlc3Npb24uIFJhbmdlIGlzIDAgdG8gMTEuCisJUXVhbGl0eSBpbnQKKwkvLyBMR1dpbiBpcyB0aGUgYmFzZSAyIGxvZ2FyaXRobSBvZiB0aGUgc2xpZGluZyB3aW5kb3cgc2l6ZS4KKwkvLyBSYW5nZSBpcyAxMCB0byAyNC4gMCBpbmRpY2F0ZXMgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gUXVhbGl0eS4KKwlMR1dpbiBpbnQKK30KKworLy8gV3JpdGVyIGltcGxlbWVudHMgaW8uV3JpdGVDbG9zZXIgYnkgd3JpdGluZyBCcm90bGktZW5jb2RlZCBkYXRhIHRvIGFuCisvLyB1bmRlcmx5aW5nIFdyaXRlci4KK3R5cGUgV3JpdGVyIHN0cnVjdCB7CisJZHN0ICAgICAgICAgIGlvLldyaXRlcgorCXN0YXRlICAgICAgICAqQy5Ccm90bGlFbmNvZGVyU3RhdGUKKwlidWYsIGVuY29kZWQgW11ieXRlCit9CisKK3ZhciAoCisJZXJyRW5jb2RlICAgICAgID0gZXJyb3JzLk5ldygiY2Jyb3RsaTogZW5jb2RlIGVycm9yIikKKwllcnJXcml0ZXJDbG9zZWQgPSBlcnJvcnMuTmV3KCJjYnJvdGxpOiBXcml0ZXIgaXMgY2xvc2VkIikKKykKKworLy8gTmV3V3JpdGVyIGluaXRpYWxpemVzIG5ldyBXcml0ZXIgaW5zdGFuY2UuCisvLyBDbG9zZSBNVVNUIGJlIGNhbGxlZCB0byBmcmVlIHJlc291cmNlcy4KK2Z1bmMgTmV3V3JpdGVyKGRzdCBpby5Xcml0ZXIsIG9wdGlvbnMgV3JpdGVyT3B0aW9ucykgKldyaXRlciB7CisJc3RhdGUgOj0gQy5Ccm90bGlFbmNvZGVyQ3JlYXRlSW5zdGFuY2UobmlsLCBuaWwsIG5pbCkKKwlDLkJyb3RsaUVuY29kZXJTZXRQYXJhbWV0ZXIoCisJCXN0YXRlLCBDLkJST1RMSV9QQVJBTV9RVUFMSVRZLCAoQy51aW50MzJfdCkob3B0aW9ucy5RdWFsaXR5KSkKKwlpZiBvcHRpb25zLkxHV2luID4gMCB7CisJCUMuQnJvdGxpRW5jb2RlclNldFBhcmFtZXRlcigKKwkJCXN0YXRlLCBDLkJST1RMSV9QQVJBTV9MR1dJTiwgKEMudWludDMyX3QpKG9wdGlvbnMuTEdXaW4pKQorCX0KKwlyZXR1cm4gJldyaXRlcnsKKwkJZHN0OiAgIGRzdCwKKwkJc3RhdGU6IHN0YXRlLAorCX0KK30KKworZnVuYyAodyAqV3JpdGVyKSB3cml0ZUNodW5rKHAgW11ieXRlLCBvcCBDLkJyb3RsaUVuY29kZXJPcGVyYXRpb24pIChuIGludCwgZXJyIGVycm9yKSB7CisJaWYgdy5zdGF0ZSA9PSBuaWwgeworCQlyZXR1cm4gMCwgZXJyV3JpdGVyQ2xvc2VkCisJfQorCisJZm9yIHsKKwkJdmFyIGRhdGEgKkMudWludDhfdAorCQlpZiBsZW4ocCkgIT0gMCB7CisJCQlkYXRhID0gKCpDLnVpbnQ4X3QpKCZwWzBdKQorCQl9CisJCXJlc3VsdCA6PSBDLkNvbXByZXNzU3RyZWFtKHcuc3RhdGUsIG9wLCBkYXRhLCBDLnNpemVfdChsZW4ocCkpKQorCQlpZiByZXN1bHQuc3VjY2VzcyA9PSAwIHsKKwkJCXJldHVybiBuLCBlcnJFbmNvZGUKKwkJfQorCQlwID0gcFtpbnQocmVzdWx0LmJ5dGVzX2NvbnN1bWVkKTpdCisJCW4gKz0gaW50KHJlc3VsdC5ieXRlc19jb25zdW1lZCkKKworCQlsZW5ndGggOj0gaW50KHJlc3VsdC5vdXRwdXRfZGF0YV9zaXplKQorCQlpZiBsZW5ndGggIT0gMCB7CisJCQkvLyBJdCBpcyBhIHdvcmthcm91bmQgZm9yIG5vbi1jb3B5aW5nLXdyYXBwaW5nIG9mIG5hdGl2ZSBtZW1vcnkuCisJCQkvLyBDLWVuY29kZXIgbmV2ZXIgcHVzaGVzIG91dHB1dCBibG9jayBsb25nZXIgdGhhbiAoKDIgPDwgMjUpICsgNTAyKS4KKwkJCS8vIFRPRE86IHVzZSBuYXR1cmFsIHdyYXBwZXIsIHdoZW4gaXQgYmVjb21lcyBhdmFpbGFibGUsIHNlZQorCQkJLy8gICAgICAgICAgICAgICBodHRwczovL2dvbGFuZy5vcmcvaXNzdWUvMTM2NTYuCisJCQlvdXRwdXQgOj0gKCpbMSA8PCAzMF1ieXRlKSh1bnNhZmUuUG9pbnRlcihyZXN1bHQub3V0cHV0X2RhdGEpKVs6bGVuZ3RoOmxlbmd0aF0KKwkJCV8sIGVyciA9IHcuZHN0LldyaXRlKG91dHB1dCkKKwkJCWlmIGVyciAhPSBuaWwgeworCQkJCXJldHVybiBuLCBlcnIKKwkJCX0KKwkJfQorCQlpZiBsZW4ocCkgPT0gMCAmJiByZXN1bHQuaGFzX21vcmUgPT0gMCB7CisJCQlyZXR1cm4gbiwgbmlsCisJCX0KKwl9Cit9CisKKy8vIEZsdXNoIG91dHB1dHMgZW5jb2RlZCBkYXRhIGZvciBhbGwgaW5wdXQgcHJvdmlkZWQgdG8gV3JpdGUuIFRoZSByZXN1bHRpbmcKKy8vIG91dHB1dCBjYW4gYmUgZGVjb2RlZCB0byBtYXRjaCBhbGwgaW5wdXQgYmVmb3JlIEZsdXNoLCBidXQgdGhlIHN0cmVhbSBpcworLy8gbm90IHlldCBjb21wbGV0ZSB1bnRpbCBhZnRlciBDbG9zZS4KKy8vIEZsdXNoIGhhcyBhIG5lZ2F0aXZlIGltcGFjdCBvbiBjb21wcmVzc2lvbi4KK2Z1bmMgKHcgKldyaXRlcikgRmx1c2goKSBlcnJvciB7CisJXywgZXJyIDo9IHcud3JpdGVDaHVuayhuaWwsIEMuQlJPVExJX09QRVJBVElPTl9GTFVTSCkKKwlyZXR1cm4gZXJyCit9CisKKy8vIENsb3NlIGZsdXNoZXMgcmVtYWluaW5nIGRhdGEgdG8gdGhlIGRlY29yYXRlZCB3cml0ZXIgYW5kIGZyZWVzIEMgcmVzb3VyY2VzLgorZnVuYyAodyAqV3JpdGVyKSBDbG9zZSgpIGVycm9yIHsKKwkvLyBJZiBzdHJlYW0gaXMgYWxyZWFkeSBjbG9zZWQsIGl0IGlzIHJlcG9ydGVkIGJ5IGB3cml0ZUNodW5rYC4KKwlfLCBlcnIgOj0gdy53cml0ZUNodW5rKG5pbCwgQy5CUk9UTElfT1BFUkFUSU9OX0ZJTklTSCkKKwkvLyBDLUJyb3RsaSB0b2xlcmF0ZXMgYG5pbGAgcG9pbnRlciBoZXJlLgorCUMuQnJvdGxpRW5jb2RlckRlc3Ryb3lJbnN0YW5jZSh3LnN0YXRlKQorCXcuc3RhdGUgPSBuaWwKKwlyZXR1cm4gZXJyCit9CisKKy8vIFdyaXRlIGltcGxlbWVudHMgaW8uV3JpdGVyLiBGbHVzaCBvciBDbG9zZSBtdXN0IGJlIGNhbGxlZCB0byBlbnN1cmUgdGhhdCB0aGUKKy8vIGVuY29kZWQgYnl0ZXMgYXJlIGFjdHVhbGx5IGZsdXNoZWQgdG8gdGhlIHVuZGVybHlpbmcgV3JpdGVyLgorZnVuYyAodyAqV3JpdGVyKSBXcml0ZShwIFtdYnl0ZSkgKG4gaW50LCBlcnIgZXJyb3IpIHsKKwlyZXR1cm4gdy53cml0ZUNodW5rKHAsIEMuQlJPVExJX09QRVJBVElPTl9QUk9DRVNTKQorfQorCisvLyBFbmNvZGUgcmV0dXJucyBjb250ZW50IGVuY29kZWQgd2l0aCBCcm90bGkuCitmdW5jIEVuY29kZShjb250ZW50IFtdYnl0ZSwgb3B0aW9ucyBXcml0ZXJPcHRpb25zKSAoW11ieXRlLCBlcnJvcikgeworCXZhciBidWYgYnl0ZXMuQnVmZmVyCisJd3JpdGVyIDo9IE5ld1dyaXRlcigmYnVmLCBvcHRpb25zKQorCV8sIGVyciA6PSB3cml0ZXIuV3JpdGUoY29udGVudCkKKwlpZiBjbG9zZUVyciA6PSB3cml0ZXIuQ2xvc2UoKTsgZXJyID09IG5pbCB7CisJCWVyciA9IGNsb3NlRXJyCisJfQorCXJldHVybiBidWYuQnl0ZXMoKSwgZXJyCit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9CVUlMRCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNTVjNTQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9CVUlMRApAQCAtMCwwICsxLDk4IEBACitwYWNrYWdlKAorICAgIGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdLAorKQorCisjID4+PiBKTkkgaGVhZGVycworCitnZW5ydWxlKAorICAgIG5hbWUgPSAiY29weV9saW5rX2puaV9oZWFkZXIiLAorICAgIHNyY3MgPSBbIkBvcGVuamRrX2puaV9oLy9maWxlIl0sCisgICAgb3V0cyA9IFsiam5pL2puaS5oIl0sCisgICAgY21kID0gImNwIC1mICQ8ICRAIiwKKykKKworZ2VucnVsZSgKKyAgICBuYW1lID0gImNvcHlfbGlua19qbmlfbWRfaGVhZGVyIiwKKyAgICBzcmNzID0gc2VsZWN0KHsKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86ZGFyd2luIjogWyJAb3Blbmpka19tYWNvc3hfam5pX21kX2gvL2ZpbGUiXSwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86ZGFyd2luX3g4Nl82NCI6IFsiQG9wZW5qZGtfbWFjb3N4X2puaV9tZF9oLy9maWxlIl0sCisgICAgICAgICJAb3JnX2Jyb3RsaS8vOndpbmRvd3NfbXN5cyI6IFsiQG9wZW5qZGtfd2luZG93c19qbmlfbWRfaC8vZmlsZSJdLAorICAgICAgICAiQG9yZ19icm90bGkvLzp3aW5kb3dzX21zdmMiOiBbIkBvcGVuamRrX3dpbmRvd3Nfam5pX21kX2gvL2ZpbGUiXSwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86d2luZG93cyI6IFsiQG9wZW5qZGtfd2luZG93c19qbmlfbWRfaC8vZmlsZSJdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIkBvcGVuamRrX3NvbGFyaXNfam5pX21kX2gvL2ZpbGUiXSwKKyAgICB9KSwKKyAgICBvdXRzID0gWyJqbmkvam5pX21kLmgiXSwKKyAgICBjbWQgPSAiY3AgLWYgJDwgJEAiLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiam5pX2luYyIsCisgICAgaGRycyA9IFsKKyAgICAgICAgIjpqbmkvam5pLmgiLAorICAgICAgICAiOmpuaS9qbmlfbWQuaCIsCisgICAgXSwKKyAgICBpbmNsdWRlcyA9IFsiam5pIl0sCispCisKKyMgPDw8IEpOSSBoZWFkZXJzCisKK2dlbnJ1bGUoCisgICAgbmFtZSA9ICJsaWNlbnNlX3Jlc291cmNlIiwKKyAgICBzcmNzID0gWyJAb3JnX2Jyb3RsaS8vOkxJQ0VOU0UiXSwKKyAgICBvdXRzID0gWyJNRVRBLUlORi9MSUNFTlNFIl0sCisgICAgY21kID0gImNwIC1mICQ8ICRAIiwKKykKKworamF2YV9saWJyYXJ5KAorICAgIG5hbWUgPSAibGljZW5zZSIsCisgICAgcmVzb3VyY2VzID0gWyI6bGljZW5zZV9yZXNvdXJjZSJdLAorKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBXQVJOSU5HOiBkbyBub3QgKHRyYW5zaXRpdmVseSkgZGVwZW5kIG9uIHRoaXMgdGFyZ2V0IQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImJyb3RsaV9qbmkuZGxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uOmpuaV9zcmMiLAorICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjOmpuaV9zcmMiLAorICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jOmpuaV9zcmMiLAorICAgICAgICAiQG9yZ19icm90bGkvLzpjb21tb25faGVhZGVycyIsCisgICAgICAgICJAb3JnX2Jyb3RsaS8vOmNvbW1vbl9zb3VyY2VzIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86ZGVjX2hlYWRlcnMiLAorICAgICAgICAiQG9yZ19icm90bGkvLzpkZWNfc291cmNlcyIsCisgICAgICAgICJAb3JnX2Jyb3RsaS8vOmVuY19oZWFkZXJzIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86ZW5jX3NvdXJjZXMiLAorICAgIF0sCisgICAgbGlua3NoYXJlZCA9IDEsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpqbmlfaW5jIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86YnJvdGxpX2luYyIsCisgICAgXSwKKykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgV0FSTklORzogZG8gbm90ICh0cmFuc2l0aXZlbHkpIGRlcGVuZCBvbiB0aGlzIHRhcmdldCEKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJicm90bGlfam5pX25vX2RpY3Rpb25hcnlfZGF0YS5kbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICIvL29yZy9icm90bGkvd3JhcHBlci9jb21tb246am5pX3NyYyIsCisgICAgICAgICIvL29yZy9icm90bGkvd3JhcHBlci9kZWM6am5pX3NyYyIsCisgICAgICAgICIvL29yZy9icm90bGkvd3JhcHBlci9lbmM6am5pX3NyYyIsCisgICAgICAgICJAb3JnX2Jyb3RsaS8vOmNvbW1vbl9oZWFkZXJzIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86Y29tbW9uX3NvdXJjZXMiLAorICAgICAgICAiQG9yZ19icm90bGkvLzpkZWNfaGVhZGVycyIsCisgICAgICAgICJAb3JnX2Jyb3RsaS8vOmRlY19zb3VyY2VzIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86ZW5jX2hlYWRlcnMiLAorICAgICAgICAiQG9yZ19icm90bGkvLzplbmNfc291cmNlcyIsCisgICAgXSwKKyAgICBkZWZpbmVzID0gWworICAgICAgICAiQlJPVExJX0VYVEVSTkFMX0RJQ1RJT05BUllfREFUQT0iLAorICAgIF0sCisgICAgbGlua3NoYXJlZCA9IDEsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpqbmlfaW5jIiwKKyAgICAgICAgIkBvcmdfYnJvdGxpLy86YnJvdGxpX2luYyIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL1dPUktTUEFDRSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL1dPUktTUEFDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjk5MDJhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvV09SS1NQQUNFCkBAIC0wLDAgKzEsNTMgQEAKK3dvcmtzcGFjZShuYW1lID0gIm9yZ19icm90bGlfamF2YSIpCisKK2xvY2FsX3JlcG9zaXRvcnkoCisgICAgbmFtZSA9ICJvcmdfYnJvdGxpIiwKKyAgICBwYXRoID0gIi4uIiwKKykKKworbG9hZCgiQGJhemVsX3Rvb2xzLy90b29scy9idWlsZF9kZWZzL3JlcG86aHR0cC5iemwiLCAiaHR0cF9hcmNoaXZlIiwgImh0dHBfZmlsZSIpCisKK1JVTEVTX0pWTV9FWFRFUk5BTF9UQUcgPSAiMy4wIgorUlVMRVNfSlZNX0VYVEVSTkFMX1NIQSA9ICI2MjEzM2MxMjViZjQxMDlkZmQ5ZDJhZjY0ODMwMjA4MzU2Y2U0ZWY4YjE2NWE2ZWYxNWJiZmY3NDYwYjM1YzNhIgorCitodHRwX2FyY2hpdmUoCisgICAgbmFtZSA9ICJydWxlc19qdm1fZXh0ZXJuYWwiLAorICAgIHN0cmlwX3ByZWZpeCA9ICJydWxlc19qdm1fZXh0ZXJuYWwtJXMiICUgUlVMRVNfSlZNX0VYVEVSTkFMX1RBRywKKyAgICBzaGEyNTYgPSBSVUxFU19KVk1fRVhURVJOQUxfU0hBLAorICAgIHVybCA9ICJodHRwczovL2dpdGh1Yi5jb20vYmF6ZWxidWlsZC9ydWxlc19qdm1fZXh0ZXJuYWwvYXJjaGl2ZS8lcy56aXAiICUgUlVMRVNfSlZNX0VYVEVSTkFMX1RBRywKKykKKworbG9hZCgiQHJ1bGVzX2p2bV9leHRlcm5hbC8vOmRlZnMuYnpsIiwgIm1hdmVuX2luc3RhbGwiKQorCittYXZlbl9pbnN0YWxsKAorICAgIGFydGlmYWN0cyA9IFsianVuaXQ6anVuaXQ6NC4xMiJdLAorICAgIHJlcG9zaXRvcmllcyA9IFsiaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yIl0sCispCisKK2h0dHBfZmlsZSgKKyAgICBuYW1lID0gIm9wZW5qZGtfam5pX2giLAorICAgIGRvd25sb2FkZWRfZmlsZV9wYXRoID0gImpuaS5oIiwKKyAgICB1cmxzID0gWyJodHRwczovL2hnLm9wZW5qZGsuamF2YS5uZXQvamRrOC9qZGs4L2pkay9yYXctZmlsZS82ODdmZDdjNzk4NmQvc3JjL3NoYXJlL2phdmF2bS9leHBvcnQvam5pLmgiXSwKKyAgICBzaGEyNTYgPSAiZWQ5OTc5MmRmNDg2NzAwNzJiNzgwMjhmYWY3MDRhOGRjYjY4NjhmZTE0MGNjYzdlY2VkOWIwMWRmYTYyZmVmNCIsCispCisKK2h0dHBfZmlsZSgKKyAgICBuYW1lID0gIm9wZW5qZGtfc29sYXJpc19qbmlfbWRfaCIsCisgICAgZG93bmxvYWRlZF9maWxlX3BhdGggPSAiam5pX21kLmgiLAorICAgIHVybHMgPSBbImh0dHBzOi8vaGcub3Blbmpkay5qYXZhLm5ldC9qZGs4L2pkazgvamRrL3Jhdy1maWxlLzY4N2ZkN2M3OTg2ZC9zcmMvc29sYXJpcy9qYXZhdm0vZXhwb3J0L2puaV9tZC5oIl0sCisgICAgc2hhMjU2ID0gImVjYmU2OTQ0ZmUxYTQyOTA2NDRkNWE2YjNjOGY2ODU3Njc5OGE1M2I5ZGExMmNkMzFjNThjNDg1Njk1OTVmZjciLAorKQorCitodHRwX2ZpbGUoCisgICAgbmFtZSA9ICJvcGVuamRrX21hY29zeF9qbmlfbWRfaCIsCisgICAgZG93bmxvYWRlZF9maWxlX3BhdGggPSAiam5pX21kLmgiLAorICAgIHVybHMgPSBbImh0dHBzOi8vaGcub3Blbmpkay5qYXZhLm5ldC9qZGs4L2pkazgvamRrL3Jhdy1maWxlLzY4N2ZkN2M3OTg2ZC9zcmMvbWFjb3N4L2phdmF2bS9leHBvcnQvam5pX21kLmgiXSwKKyAgICBzaGEyNTYgPSAiOGY3MTgwNzEwMjJlN2U3ZjJmYzlhMjI5OTg0YjdlODM1ODJkYjkxZWQ4Mzg2MWI0OWNlMTQ2MTQzNmZlOGRjNCIsCispCisKK2h0dHBfZmlsZSgKKyAgICBuYW1lID0gIm9wZW5qZGtfd2luZG93c19qbmlfbWRfaCIsCisgICAgZG93bmxvYWRlZF9maWxlX3BhdGggPSAiam5pX21kLmgiLAorICAgIHVybHMgPSBbImh0dHBzOi8vaGcub3Blbmpkay5qYXZhLm5ldC9qZGs4L2pkazgvamRrL3Jhdy1maWxlLzY4N2ZkN2M3OTg2ZC9zcmMvd2luZG93cy9qYXZhdm0vZXhwb3J0L2puaV9tZC5oIl0sCisgICAgc2hhMjU2ID0gIjU0NzlmYjM4NWVhMWUxMTYxOWY1YzBjZGZkOWNjYjNlYTNhM2ZlYTBmNWJjNjE3NmZiM2NlNjJiZTI5ZDc1OWIiLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9jb21tb24vQlVJTEQgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2NvbW1vbi9CVUlMRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzFiMWUzCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9jb21tb24vQlVJTEQKQEAgLTAsMCArMSwxMSBAQAorIyBEZXNjcmlwdGlvbjoKKyMgICBKYXZhIHBvcnQgb2YgQnJvdGxpLgorCitwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNlbnNlcyhbIm5vdGljZSJdKSAgIyBNSVQKKworamF2YV9saWJyYXJ5KAorICAgIG5hbWUgPSAic2hhcmVkX2RpY3Rpb25hcnkiLAorICAgIHNyY3MgPSBbIlNoYXJlZERpY3Rpb25hcnlUeXBlLmphdmEiXSwKKykKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvY29tbW9uL1NoYXJlZERpY3Rpb25hcnlUeXBlLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2NvbW1vbi9TaGFyZWREaWN0aW9uYXJ5VHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1OTJkMmIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2NvbW1vbi9TaGFyZWREaWN0aW9uYXJ5VHlwZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8qIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCitwYWNrYWdlIG9yZy5icm90bGkuY29tbW9uOworCisvKiogUE9KTyBlbnVtIHRoYXQgbWlycm9ycyBDIEJyb3RsaVNoYXJlZERpY3Rpb25hcnlUeXBlLiAqLworcHVibGljIGNsYXNzIFNoYXJlZERpY3Rpb25hcnlUeXBlIHsKKyAgLy8gRGlzYWxsb3cgaW5zdGFudGlhdGlvbi4KKyAgcHJpdmF0ZSBTaGFyZWREaWN0aW9uYXJ5VHlwZSgpIHt9CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFXID0gMDsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VSSUFMSVpFRCA9IDE7Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9CVUlMRCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwODY0MmUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9CVUlMRApAQCAtMCwwICsxLDU5IEBACisjIERlc2NyaXB0aW9uOgorIyAgIEphdmEgcG9ydCBvZiBCcm90bGkgZGVjb2Rlci4KKworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgTUlUCisKK1RFU1RfREVQUyA9IFsKKyAgICAiOmRlYyIsCisgICAgIkBtYXZlbi8vOmp1bml0X2p1bml0IiwKK10KKworamF2YV9saWJyYXJ5KAorICAgIG5hbWUgPSAiZGVjIiwKKyAgICBzcmNzID0gZ2xvYigKKyAgICAgICAgWyIqLmphdmEiXSwKKyAgICAgICAgZXhjbHVkZSA9IFsiKlRlc3QqLmphdmEiXSwKKyAgICApLAorICAgIHByb2d1YXJkX3NwZWNzID0gWyJwcm9ndWFyZC5wZ2NmZyJdLAorICAgIHJlc291cmNlX2phcnMgPSBbIi8vOmxpY2Vuc2UiXSwKKykKKworbG9hZCgiOmJ1aWxkX2RlZnMuYnpsIiwgImJyb3RsaV9qYXZhX3Rlc3QiKQorCiticm90bGlfamF2YV90ZXN0KAorICAgIG5hbWUgPSAiQml0UmVhZGVyVGVzdCIsCisgICAgc3JjcyA9IFsiQml0UmVhZGVyVGVzdC5qYXZhIl0sCisgICAgZGVwcyA9IFRFU1RfREVQUywKKykKKworYnJvdGxpX2phdmFfdGVzdCgKKyAgICBuYW1lID0gIkRlY29kZVRlc3QiLAorICAgIHNyY3MgPSBbIkRlY29kZVRlc3QuamF2YSJdLAorICAgIGRlcHMgPSBURVNUX0RFUFMsCispCisKK2Jyb3RsaV9qYXZhX3Rlc3QoCisgICAgbmFtZSA9ICJEaWN0aW9uYXJ5VGVzdCIsCisgICAgc3JjcyA9IFsiRGljdGlvbmFyeVRlc3QuamF2YSJdLAorICAgIGRlcHMgPSBURVNUX0RFUFMsCispCisKK2Jyb3RsaV9qYXZhX3Rlc3QoCisgICAgbmFtZSA9ICJFYWdlclN0cmVhbVRlc3QiLAorICAgIHNyY3MgPSBbIkVhZ2VyU3RyZWFtVGVzdC5qYXZhIl0sCisgICAgZGVwcyA9IFRFU1RfREVQUywKKykKKworYnJvdGxpX2phdmFfdGVzdCgKKyAgICBuYW1lID0gIlN5bnRoVGVzdCIsCisgICAgc3JjcyA9IFsiU3ludGhUZXN0LmphdmEiXSwKKyAgICBkZXBzID0gVEVTVF9ERVBTLAorKQorCiticm90bGlfamF2YV90ZXN0KAorICAgIG5hbWUgPSAiVHJhbnNmb3JtVGVzdCIsCisgICAgc3JjcyA9IFsiVHJhbnNmb3JtVGVzdC5qYXZhIl0sCisgICAgZGVwcyA9IFRFU1RfREVQUywKKykKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0JpdFJlYWRlci5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvQml0UmVhZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmZWVkYwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0JpdFJlYWRlci5qYXZhCkBAIC0wLDAgKzEsMjg5IEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkuZGVjOworCisvKioKKyAqIEJpdCByZWFkaW5nIGhlbHBlcnMuCisgKi8KK2ZpbmFsIGNsYXNzIEJpdFJlYWRlciB7CisKKyAgLy8gUG9zc2libGUgdmFsdWVzOiB7NSwgNn0uICA1IGNvcnJlc3BvbmRzIHRvIDMyLWJpdCBidWlsZCwgNiB0byA2NC1iaXQuIFRoaXMgdmFsdWUgaXMgdXNlZCBmb3IKKyAgLy8gSklUIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgorICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9HX0JJVE5FU1MgPSBVdGlscy5nZXRMb2dCaW50bmVzcygpOworCisgIC8vIE5vdCBvbmx5IEphdmEgY29tcGlsZXIgcHJ1bmVzICJpZiAoY29uc3QgZmFsc2UpIiBjb2RlLCBidXQgSlZNIGFzIHdlbGwuCisgIC8vIENvZGUgdW5kZXIgImlmIChERUJVRyAhPSAwKSIgaGF2ZSB6ZXJvIHBlcmZvcm1hbmNlIGltcGFjdCAob3V0c2lkZSB1bml0IHRlc3RzKS4KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFQlVHID0gVXRpbHMuaXNEZWJ1Z01vZGUoKTsKKworICBzdGF0aWMgZmluYWwgaW50IEJJVE5FU1MgPSAxIDw8IExPR19CSVRORVNTOworCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBCWVRFTkVTUyA9IEJJVE5FU1MgLyA4OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0FQQUNJVFkgPSA0MDk2OworICAvLyBBZnRlciBlbmNvdW50ZXJpbmcgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyZWFtLCB0aGlzIGFtb3VudCBvZiB6ZXJvIGJ5dGVzIHdpbGwgYmUgYXBwZW5kZWQuCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTEFDSyA9IDY0OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQlVGRkVSX1NJWkUgPSBDQVBBQ0lUWSArIFNMQUNLOworICAvLyBEb24ndCBib3RoZXIgdG8gcmVwbGVuaXNoIHRoZSBidWZmZXIgd2hpbGUgdGhpcyBudW1iZXIgb2YgYnl0ZXMgaXMgYXZhaWxhYmxlLgorICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0FGRUdVQVJEID0gMzY7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBXQVRFUkxJTkUgPSBDQVBBQ0lUWSAtIFNBRkVHVUFSRDsKKworICAvLyAiSGFsZiIgcmVmZXJzIHRvICJoYWxmIG9mIG5hdGl2ZSBpbnRlZ2VyIHR5cGUiLCBpLmUuIG9uIDY0LWJpdCBtYWNoaW5lcyBpdCBpcyAzMi1iaXQgdHlwZSwKKyAgLy8gb24gMzItYml0IG1hY2hpbmVzIGl0IGlzIDE2LWJpdC4KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhBTEZfQklUTkVTUyA9IEJJVE5FU1MgLyAyOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEFMRl9TSVpFID0gQllURU5FU1MgLyAyOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEFMVkVTX0NBUEFDSVRZID0gQ0FQQUNJVFkgLyBIQUxGX1NJWkU7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIQUxGX0JVRkZFUl9TSVpFID0gQlVGRkVSX1NJWkUgLyBIQUxGX1NJWkU7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIQUxGX1dBVEVSTElORSA9IFdBVEVSTElORSAvIEhBTEZfU0laRTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9HX0hBTEZfU0laRSA9IExPR19CSVRORVNTIC0gNDsKKworICAvKioKKyAgICogRmlsbHMgdXAgdGhlIGlucHV0IGJ1ZmZlci4KKyAgICoKKyAgICogPHA+IE5vLW9wIGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAzNiBieXRlcyBwcmVzZW50IGFmdGVyIGN1cnJlbnQgcG9zaXRpb24uCisgICAqCisgICAqIDxwPiBBZnRlciBlbmNvdW50ZXJpbmcgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyZWFtLCA2NCBhZGRpdGlvbmFsIHplcm8gYnl0ZXMgYXJlIGNvcGllZCB0byB0aGUKKyAgICogYnVmZmVyLgorICAgKi8KKyAgc3RhdGljIHZvaWQgcmVhZE1vcmVJbnB1dChTdGF0ZSBzKSB7CisgICAgaWYgKHMuaGFsZk9mZnNldCA+IEhBTEZfV0FURVJMSU5FKSB7CisgICAgICBkb1JlYWRNb3JlSW5wdXQocyk7CisgICAgfQorICB9CisKKyAgc3RhdGljIHZvaWQgZG9SZWFkTW9yZUlucHV0KFN0YXRlIHMpIHsKKyAgICBpZiAocy5lbmRPZlN0cmVhbVJlYWNoZWQgIT0gMCkgeworICAgICAgaWYgKGhhbGZBdmFpbGFibGUocykgPj0gLTIpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIk5vIG1vcmUgaW5wdXQiKTsKKyAgICB9CisgICAgaW50IHJlYWRPZmZzZXQgPSBzLmhhbGZPZmZzZXQgPDwgTE9HX0hBTEZfU0laRTsKKyAgICBpbnQgYnl0ZXNJbkJ1ZmZlciA9IENBUEFDSVRZIC0gcmVhZE9mZnNldDsKKyAgICAvLyBNb3ZlIHVudXNlZCBieXRlcyB0byB0aGUgaGVhZCBvZiB0aGUgYnVmZmVyLgorICAgIFV0aWxzLmNvcHlCeXRlc1dpdGhpbihzLmJ5dGVCdWZmZXIsIDAsIHJlYWRPZmZzZXQsIENBUEFDSVRZKTsKKyAgICBzLmhhbGZPZmZzZXQgPSAwOworICAgIHdoaWxlIChieXRlc0luQnVmZmVyIDwgQ0FQQUNJVFkpIHsKKyAgICAgIGludCBzcGFjZUxlZnQgPSBDQVBBQ0lUWSAtIGJ5dGVzSW5CdWZmZXI7CisgICAgICBpbnQgbGVuID0gVXRpbHMucmVhZElucHV0KHMuaW5wdXQsIHMuYnl0ZUJ1ZmZlciwgYnl0ZXNJbkJ1ZmZlciwgc3BhY2VMZWZ0KTsKKyAgICAgIC8vIEVPRiBpcyAtMSBpbiBKYXZhLCBidXQgMCBpbiBDIy4KKyAgICAgIGlmIChsZW4gPD0gMCkgeworICAgICAgICBzLmVuZE9mU3RyZWFtUmVhY2hlZCA9IDE7CisgICAgICAgIHMudGFpbEJ5dGVzID0gYnl0ZXNJbkJ1ZmZlcjsKKyAgICAgICAgYnl0ZXNJbkJ1ZmZlciArPSBIQUxGX1NJWkUgLSAxOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGJ5dGVzSW5CdWZmZXIgKz0gbGVuOworICAgIH0KKyAgICBieXRlc1RvTmliYmxlcyhzLCBieXRlc0luQnVmZmVyKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIGNoZWNrSGVhbHRoKFN0YXRlIHMsIGludCBlbmRPZlN0cmVhbSkgeworICAgIGlmIChzLmVuZE9mU3RyZWFtUmVhY2hlZCA9PSAwKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBieXRlT2Zmc2V0ID0gKHMuaGFsZk9mZnNldCA8PCBMT0dfSEFMRl9TSVpFKSArICgocy5iaXRPZmZzZXQgKyA3KSA+PiAzKSAtIEJZVEVORVNTOworICAgIGlmIChieXRlT2Zmc2V0ID4gcy50YWlsQnl0ZXMpIHsKKyAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJSZWFkIGFmdGVyIGVuZCIpOworICAgIH0KKyAgICBpZiAoKGVuZE9mU3RyZWFtICE9IDApICYmIChieXRlT2Zmc2V0ICE9IHMudGFpbEJ5dGVzKSkgeworICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIlVudXNlZCBieXRlcyBhZnRlciBlbmQiKTsKKyAgICB9CisgIH0KKworICBzdGF0aWMgdm9pZCBhc3NlcnRBY2N1bXVsYXRvckhlYWx0aHkoU3RhdGUgcykgeworICAgIGlmIChzLmJpdE9mZnNldCA+IEJJVE5FU1MpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkFjY3VtdWxhdG9yIHVuZGVybG9hZGVkOiAiICsgcy5iaXRPZmZzZXQpOworICAgIH0KKyAgfQorCisgIHN0YXRpYyB2b2lkIGZpbGxCaXRXaW5kb3coU3RhdGUgcykgeworICAgIGlmIChERUJVRyAhPSAwKSB7CisgICAgICBhc3NlcnRBY2N1bXVsYXRvckhlYWx0aHkocyk7CisgICAgfQorICAgIGlmIChzLmJpdE9mZnNldCA+PSBIQUxGX0JJVE5FU1MpIHsKKyAgICAgIC8vIFNhbWUgYXMgZG9GaWxsQml0V2luZG93LiBKVk0gZmFpbHMgdG8gaW5saW5lIGl0LgorICAgICAgaWYgKEJJVE5FU1MgPT0gNjQpIHsKKyAgICAgICAgcy5hY2N1bXVsYXRvcjY0ID0gKChsb25nKSBzLmludEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgSEFMRl9CSVRORVNTKQorICAgICAgICAgICAgfCAocy5hY2N1bXVsYXRvcjY0ID4+PiBIQUxGX0JJVE5FU1MpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKChpbnQpIHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IEhBTEZfQklUTkVTUykKKyAgICAgICAgICAgIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gSEFMRl9CSVRORVNTKTsKKyAgICAgIH0KKyAgICAgIHMuYml0T2Zmc2V0IC09IEhBTEZfQklUTkVTUzsKKyAgICB9CisgIH0KKworICBzdGF0aWMgdm9pZCBkb0ZpbGxCaXRXaW5kb3coU3RhdGUgcykgeworICAgIGlmIChERUJVRyAhPSAwKSB7CisgICAgICBhc3NlcnRBY2N1bXVsYXRvckhlYWx0aHkocyk7CisgICAgfQorICAgIGlmIChCSVRORVNTID09IDY0KSB7CisgICAgICBzLmFjY3VtdWxhdG9yNjQgPSAoKGxvbmcpIHMuaW50QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCBIQUxGX0JJVE5FU1MpCisgICAgICAgICAgfCAocy5hY2N1bXVsYXRvcjY0ID4+PiBIQUxGX0JJVE5FU1MpOworICAgIH0gZWxzZSB7CisgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAoKGludCkgcy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgSEFMRl9CSVRORVNTKQorICAgICAgICAgIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gSEFMRl9CSVRORVNTKTsKKyAgICB9CisgICAgcy5iaXRPZmZzZXQgLT0gSEFMRl9CSVRORVNTOworICB9CisKKyAgc3RhdGljIGludCBwZWVrQml0cyhTdGF0ZSBzKSB7CisgICAgaWYgKEJJVE5FU1MgPT0gNjQpIHsKKyAgICAgIHJldHVybiAoaW50KSAocy5hY2N1bXVsYXRvcjY0ID4+PiBzLmJpdE9mZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBzLmFjY3VtdWxhdG9yMzIgPj4+IHMuYml0T2Zmc2V0OworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBGZXRjaGVzIGJpdHMgZnJvbSBhY2N1bXVsYXRvci4KKyAgICoKKyAgICogV0FSTklORzogYWNjdW11bGF0b3IgTVVTVCBjb250YWluIGF0IGxlYXN0IHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIGJpdHMsCisgICAqIG90aGVyd2lzZSBCaXRSZWFkZXIgd2lsbCBiZWNvbWUgYnJva2VuLgorICAgKi8KKyAgc3RhdGljIGludCByZWFkRmV3Qml0cyhTdGF0ZSBzLCBpbnQgbikgeworICAgIGludCB2YWwgPSBwZWVrQml0cyhzKSAmICgoMSA8PCBuKSAtIDEpOworICAgIHMuYml0T2Zmc2V0ICs9IG47CisgICAgcmV0dXJuIHZhbDsKKyAgfQorCisgIHN0YXRpYyBpbnQgcmVhZEJpdHMoU3RhdGUgcywgaW50IG4pIHsKKyAgICBpZiAoSEFMRl9CSVRORVNTID49IDI0KSB7CisgICAgICByZXR1cm4gcmVhZEZld0JpdHMocywgbik7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAobiA8PSAxNikgPyByZWFkRmV3Qml0cyhzLCBuKSA6IHJlYWRNYW55Qml0cyhzLCBuKTsKKyAgICB9CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBpbnQgcmVhZE1hbnlCaXRzKFN0YXRlIHMsIGludCBuKSB7CisgICAgaW50IGxvdyA9IHJlYWRGZXdCaXRzKHMsIDE2KTsKKyAgICBkb0ZpbGxCaXRXaW5kb3cocyk7CisgICAgcmV0dXJuIGxvdyB8IChyZWFkRmV3Qml0cyhzLCBuIC0gMTYpIDw8IDE2KTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIGluaXRCaXRSZWFkZXIoU3RhdGUgcykgeworICAgIHMuYnl0ZUJ1ZmZlciA9IG5ldyBieXRlW0JVRkZFUl9TSVpFXTsKKyAgICBpZiAoQklUTkVTUyA9PSA2NCkgeworICAgICAgcy5hY2N1bXVsYXRvcjY0ID0gMDsKKyAgICAgIHMuaW50QnVmZmVyID0gbmV3IGludFtIQUxGX0JVRkZFUl9TSVpFXTsKKyAgICB9IGVsc2UgeworICAgICAgcy5hY2N1bXVsYXRvcjMyID0gMDsKKyAgICAgIHMuc2hvcnRCdWZmZXIgPSBuZXcgc2hvcnRbSEFMRl9CVUZGRVJfU0laRV07CisgICAgfQorICAgIHMuYml0T2Zmc2V0ID0gQklUTkVTUzsKKyAgICBzLmhhbGZPZmZzZXQgPSBIQUxWRVNfQ0FQQUNJVFk7CisgICAgcy5lbmRPZlN0cmVhbVJlYWNoZWQgPSAwOworICAgIHByZXBhcmUocyk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIHByZXBhcmUoU3RhdGUgcykgeworICAgIHJlYWRNb3JlSW5wdXQocyk7CisgICAgY2hlY2tIZWFsdGgocywgMCk7CisgICAgZG9GaWxsQml0V2luZG93KHMpOworICAgIGRvRmlsbEJpdFdpbmRvdyhzKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIHJlbG9hZChTdGF0ZSBzKSB7CisgICAgaWYgKHMuYml0T2Zmc2V0ID09IEJJVE5FU1MpIHsKKyAgICAgIHByZXBhcmUocyk7CisgICAgfQorICB9CisKKyAgc3RhdGljIHZvaWQganVtcFRvQnl0ZUJvdW5kYXJ5KFN0YXRlIHMpIHsKKyAgICBpbnQgcGFkZGluZyA9IChCSVRORVNTIC0gcy5iaXRPZmZzZXQpICYgNzsKKyAgICBpZiAocGFkZGluZyAhPSAwKSB7CisgICAgICBpbnQgcGFkZGluZ0JpdHMgPSByZWFkRmV3Qml0cyhzLCBwYWRkaW5nKTsKKyAgICAgIGlmIChwYWRkaW5nQml0cyAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJDb3JydXB0ZWQgcGFkZGluZyBiaXRzIik7CisgICAgICB9CisgICAgfQorICB9CisKKyAgc3RhdGljIGludCBoYWxmQXZhaWxhYmxlKFN0YXRlIHMpIHsKKyAgICBpbnQgbGltaXQgPSBIQUxWRVNfQ0FQQUNJVFk7CisgICAgaWYgKHMuZW5kT2ZTdHJlYW1SZWFjaGVkICE9IDApIHsKKyAgICAgIGxpbWl0ID0gKHMudGFpbEJ5dGVzICsgKEhBTEZfU0laRSAtIDEpKSA+PiBMT0dfSEFMRl9TSVpFOworICAgIH0KKyAgICByZXR1cm4gbGltaXQgLSBzLmhhbGZPZmZzZXQ7CisgIH0KKworICBzdGF0aWMgdm9pZCBjb3B5Qnl0ZXMoU3RhdGUgcywgYnl0ZVtdIGRhdGEsIGludCBvZmZzZXQsIGludCBsZW5ndGgpIHsKKyAgICBpZiAoKHMuYml0T2Zmc2V0ICYgNykgIT0gMCkgeworICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIlVuYWxpZ25lZCBjb3B5Qnl0ZXMiKTsKKyAgICB9CisKKyAgICAvLyBEcmFpbiBhY2N1bXVsYXRvci4KKyAgICB3aGlsZSAoKHMuYml0T2Zmc2V0ICE9IEJJVE5FU1MpICYmIChsZW5ndGggIT0gMCkpIHsKKyAgICAgIGRhdGFbb2Zmc2V0KytdID0gKGJ5dGUpIHBlZWtCaXRzKHMpOworICAgICAgcy5iaXRPZmZzZXQgKz0gODsKKyAgICAgIGxlbmd0aC0tOworICAgIH0KKyAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBHZXQgZGF0YSBmcm9tIHNoYWRvdyBidWZmZXIgd2l0aCAic2l6ZW9mKGludCkiIGdyYW51bGFyaXR5LgorICAgIGludCBjb3B5TmliYmxlcyA9IE1hdGgubWluKGhhbGZBdmFpbGFibGUocyksIGxlbmd0aCA+PiBMT0dfSEFMRl9TSVpFKTsKKyAgICBpZiAoY29weU5pYmJsZXMgPiAwKSB7CisgICAgICBpbnQgcmVhZE9mZnNldCA9IHMuaGFsZk9mZnNldCA8PCBMT0dfSEFMRl9TSVpFOworICAgICAgaW50IGRlbHRhID0gY29weU5pYmJsZXMgPDwgTE9HX0hBTEZfU0laRTsKKyAgICAgIFN5c3RlbS5hcnJheWNvcHkocy5ieXRlQnVmZmVyLCByZWFkT2Zmc2V0LCBkYXRhLCBvZmZzZXQsIGRlbHRhKTsKKyAgICAgIG9mZnNldCArPSBkZWx0YTsKKyAgICAgIGxlbmd0aCAtPSBkZWx0YTsKKyAgICAgIHMuaGFsZk9mZnNldCArPSBjb3B5TmliYmxlczsKKyAgICB9CisgICAgaWYgKGxlbmd0aCA9PSAwKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmVhZCB0YWlsIGJ5dGVzLgorICAgIGlmIChoYWxmQXZhaWxhYmxlKHMpID4gMCkgeworICAgICAgLy8gbGVuZ3RoID0gMS4uMworICAgICAgZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgIHdoaWxlIChsZW5ndGggIT0gMCkgeworICAgICAgICBkYXRhW29mZnNldCsrXSA9IChieXRlKSBwZWVrQml0cyhzKTsKKyAgICAgICAgcy5iaXRPZmZzZXQgKz0gODsKKyAgICAgICAgbGVuZ3RoLS07CisgICAgICB9CisgICAgICBjaGVja0hlYWx0aChzLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBOb3cgaXQgaXMgcG9zc2libGUgdG8gY29weSBieXRlcyBkaXJlY3RseS4KKyAgICB3aGlsZSAobGVuZ3RoID4gMCkgeworICAgICAgaW50IGxlbiA9IFV0aWxzLnJlYWRJbnB1dChzLmlucHV0LCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICBpZiAobGVuID09IC0xKSB7CisgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpOworICAgICAgfQorICAgICAgb2Zmc2V0ICs9IGxlbjsKKyAgICAgIGxlbmd0aCAtPSBsZW47CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIFRyYW5zbGF0ZXMgYnl0ZXMgdG8gaGFsdmVzIChpbnQvc2hvcnQpLgorICAgKi8KKyAgc3RhdGljIHZvaWQgYnl0ZXNUb05pYmJsZXMoU3RhdGUgcywgaW50IGJ5dGVMZW4pIHsKKyAgICBieXRlW10gYnl0ZUJ1ZmZlciA9IHMuYnl0ZUJ1ZmZlcjsKKyAgICBpbnQgaGFsZkxlbiA9IGJ5dGVMZW4gPj4gTE9HX0hBTEZfU0laRTsKKyAgICBpZiAoQklUTkVTUyA9PSA2NCkgeworICAgICAgaW50W10gaW50QnVmZmVyID0gcy5pbnRCdWZmZXI7CisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhhbGZMZW47ICsraSkgeworICAgICAgICBpbnRCdWZmZXJbaV0gPSAoKGJ5dGVCdWZmZXJbaSAqIDRdICYgMHhGRikpCisgICAgICAgICAgICB8ICgoYnl0ZUJ1ZmZlclsoaSAqIDQpICsgMV0gJiAweEZGKSA8PCA4KQorICAgICAgICAgICAgfCAoKGJ5dGVCdWZmZXJbKGkgKiA0KSArIDJdICYgMHhGRikgPDwgMTYpCisgICAgICAgICAgICB8ICgoYnl0ZUJ1ZmZlclsoaSAqIDQpICsgM10gJiAweEZGKSA8PCAyNCk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHNob3J0W10gc2hvcnRCdWZmZXIgPSBzLnNob3J0QnVmZmVyOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoYWxmTGVuOyArK2kpIHsKKyAgICAgICAgc2hvcnRCdWZmZXJbaV0gPSAoc2hvcnQpICgoYnl0ZUJ1ZmZlcltpICogMl0gJiAweEZGKQorICAgICAgICAgICAgfCAoKGJ5dGVCdWZmZXJbKGkgKiAyKSArIDFdICYgMHhGRikgPDwgOCkpOworICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvQml0UmVhZGVyVGVzdC5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvQml0UmVhZGVyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTllYmMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9CaXRSZWFkZXJUZXN0LmphdmEKQEAgLTAsMCArMSw1NCBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLmRlYzsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKgorICogVGVzdHMgZm9yIHtAbGluayBCaXRSZWFkZXJ9LgorICovCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgY2xhc3MgQml0UmVhZGVyVGVzdCB7CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFJlYWRBZnRlckVvcygpIHsKKyAgICBTdGF0ZSByZWFkZXIgPSBuZXcgU3RhdGUoKTsKKyAgICBEZWNvZGUuaW5pdFN0YXRlKHJlYWRlciwgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKG5ldyBieXRlWzFdKSk7CisgICAgQml0UmVhZGVyLnJlYWRCaXRzKHJlYWRlciwgOSk7CisgICAgdHJ5IHsKKyAgICAgIEJpdFJlYWRlci5jaGVja0hlYWx0aChyZWFkZXIsIDApOworICAgIH0gY2F0Y2ggKEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmYWlsKCJCcm90bGlSdW50aW1lRXhjZXB0aW9uIHNob3VsZCBoYXZlIGJlZW4gdGhyb3duIGJ5IEJpdFJlYWRlci5jaGVja0hlYWx0aCIpOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEFjY3VtdWxhdG9yVW5kZXJmbG93RGV0ZWN0ZWQoKSB7CisgICAgU3RhdGUgcmVhZGVyID0gbmV3IFN0YXRlKCk7CisgICAgRGVjb2RlLmluaXRTdGF0ZShyZWFkZXIsIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShuZXcgYnl0ZVs4XSkpOworICAgIC8vIDY1IGJpdHMgaXMgZW5vdWdoIGZvciBib3RoIDMyIGFuZCA2NCBiaXQgc3lzdGVtcy4KKyAgICBCaXRSZWFkZXIucmVhZEJpdHMocmVhZGVyLCAxMyk7CisgICAgQml0UmVhZGVyLnJlYWRCaXRzKHJlYWRlciwgMTMpOworICAgIEJpdFJlYWRlci5yZWFkQml0cyhyZWFkZXIsIDEzKTsKKyAgICBCaXRSZWFkZXIucmVhZEJpdHMocmVhZGVyLCAxMyk7CisgICAgQml0UmVhZGVyLnJlYWRCaXRzKHJlYWRlciwgMTMpOworICAgIHRyeSB7CisgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhyZWFkZXIpOworICAgIH0gY2F0Y2ggKElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBleCkgeworICAgICAgLy8gVGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGZhaWwoIklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBzaG91bGQgaGF2ZSBiZWVuIHRocm93biBieSAnYnJva2VuJyBCaXRSZWFkZXIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvQnJvdGxpSW5wdXRTdHJlYW0uamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0Jyb3RsaUlucHV0U3RyZWFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjYTIzOAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0Jyb3RsaUlucHV0U3RyZWFtLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CisKKy8qKgorICoge0BsaW5rIElucHV0U3RyZWFtfSBkZWNvcmF0b3IgdGhhdCBkZWNvbXByZXNzZXMgYnJvdGxpIGRhdGEuCisgKgorICogPHA+IE5vdCB0aHJlYWQtc2FmZS4KKyAqLworcHVibGljIGNsYXNzIEJyb3RsaUlucHV0U3RyZWFtIGV4dGVuZHMgSW5wdXRTdHJlYW0geworCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfSU5URVJOQUxfQlVGRkVSX1NJWkUgPSAyNTY7CisKKyAgLyoqCisgICAqIEludGVybmFsIGJ1ZmZlciB1c2VkIGZvciBlZmZpY2llbnQgYnl0ZS1ieS1ieXRlIHJlYWRpbmcuCisgICAqLworICBwcml2YXRlIGJ5dGVbXSBidWZmZXI7CisKKyAgLyoqCisgICAqIE51bWJlciBvZiBkZWNvZGVkIGJ1dCBzdGlsbCB1bnVzZWQgYnl0ZXMgaW4gaW50ZXJuYWwgYnVmZmVyLgorICAgKi8KKyAgcHJpdmF0ZSBpbnQgcmVtYWluaW5nQnVmZmVyQnl0ZXM7CisKKyAgLyoqCisgICAqIE5leHQgdW51c2VkIGJ5dGUgb2Zmc2V0LgorICAgKi8KKyAgcHJpdmF0ZSBpbnQgYnVmZmVyT2Zmc2V0OworCisgIC8qKgorICAgKiBEZWNvZGVyIHN0YXRlLgorICAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBTdGF0ZSBzdGF0ZSA9IG5ldyBTdGF0ZSgpOworCisgIC8qKgorICAgKiBDcmVhdGVzIGEge0BsaW5rIElucHV0U3RyZWFtfSB3cmFwcGVyIHRoYXQgZGVjb21wcmVzc2VzIGJyb3RsaSBkYXRhLgorICAgKgorICAgKiA8cD4gRm9yIGJ5dGUtYnktYnl0ZSByZWFkaW5nICh7QGxpbmsgI3JlYWQoKX0pIGludGVybmFsIGJ1ZmZlciB3aXRoCisgICAqIHtAbGluayAjREVGQVVMVF9JTlRFUk5BTF9CVUZGRVJfU0laRX0gc2l6ZSBpcyBhbGxvY2F0ZWQgYW5kIHVzZWQuCisgICAqCisgICAqIDxwPiBXaWxsIGJsb2NrIHRoZSB0aHJlYWQgdW50aWwgZmlyc3Qge0BsaW5rIEJpdFJlYWRlciNDQVBBQ0lUWX0gYnl0ZXMgb2YgZGF0YSBvZiBzb3VyY2UKKyAgICogYXJlIGF2YWlsYWJsZS4KKyAgICoKKyAgICogQHBhcmFtIHNvdXJjZSB1bmRlcmx5aW5nIGRhdGEgc291cmNlCisgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gaW4gY2FzZSBvZiBjb3JydXB0ZWQgZGF0YSBvciBzb3VyY2Ugc3RyZWFtIHByb2JsZW1zCisgICAqLworICBwdWJsaWMgQnJvdGxpSW5wdXRTdHJlYW0oSW5wdXRTdHJlYW0gc291cmNlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHRoaXMoc291cmNlLCBERUZBVUxUX0lOVEVSTkFMX0JVRkZFUl9TSVpFKTsKKyAgfQorCisgIC8qKgorICAgKiBDcmVhdGVzIGEge0BsaW5rIElucHV0U3RyZWFtfSB3cmFwcGVyIHRoYXQgZGVjb21wcmVzc2VzIGJyb3RsaSBkYXRhLgorICAgKgorICAgKiA8cD4gRm9yIGJ5dGUtYnktYnl0ZSByZWFkaW5nICh7QGxpbmsgI3JlYWQoKX0pIGludGVybmFsIGJ1ZmZlciBvZiBzcGVjaWZpZWQgc2l6ZSBpcworICAgKiBhbGxvY2F0ZWQgYW5kIHVzZWQuCisgICAqCisgICAqIDxwPiBXaWxsIGJsb2NrIHRoZSB0aHJlYWQgdW50aWwgZmlyc3Qge0BsaW5rIEJpdFJlYWRlciNDQVBBQ0lUWX0gYnl0ZXMgb2YgZGF0YSBvZiBzb3VyY2UKKyAgICogYXJlIGF2YWlsYWJsZS4KKyAgICoKKyAgICogQHBhcmFtIHNvdXJjZSBjb21wcmVzc2VkIGRhdGEgc291cmNlCisgICAqIEBwYXJhbSBieXRlUmVhZEJ1ZmZlclNpemUgc2l6ZSBvZiBpbnRlcm5hbCBidWZmZXIgdXNlZCBpbiBjYXNlIG9mCisgICAqICAgICAgICBieXRlLWJ5LWJ5dGUgcmVhZGluZworICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGluIGNhc2Ugb2YgY29ycnVwdGVkIGRhdGEgb3Igc291cmNlIHN0cmVhbSBwcm9ibGVtcworICAgKi8KKyAgcHVibGljIEJyb3RsaUlucHV0U3RyZWFtKElucHV0U3RyZWFtIHNvdXJjZSwgaW50IGJ5dGVSZWFkQnVmZmVyU2l6ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoYnl0ZVJlYWRCdWZmZXJTaXplIDw9IDApIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCBidWZmZXIgc2l6ZToiICsgYnl0ZVJlYWRCdWZmZXJTaXplKTsKKyAgICB9IGVsc2UgaWYgKHNvdXJjZSA9PSBudWxsKSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJzb3VyY2UgaXMgbnVsbCIpOworICAgIH0KKyAgICB0aGlzLmJ1ZmZlciA9IG5ldyBieXRlW2J5dGVSZWFkQnVmZmVyU2l6ZV07CisgICAgdGhpcy5yZW1haW5pbmdCdWZmZXJCeXRlcyA9IDA7CisgICAgdGhpcy5idWZmZXJPZmZzZXQgPSAwOworICAgIHRyeSB7CisgICAgICBEZWNvZGUuaW5pdFN0YXRlKHN0YXRlLCBzb3VyY2UpOworICAgIH0gY2F0Y2ggKEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQnJvdGxpIGRlY29kZXIgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiwgZXgpOworICAgIH0KKyAgfQorCisgIHB1YmxpYyB2b2lkIGF0dGFjaERpY3Rpb25hcnlDaHVuayhieXRlW10gZGF0YSkgeworICAgIERlY29kZS5hdHRhY2hEaWN0aW9uYXJ5Q2h1bmsoc3RhdGUsIGRhdGEpOworICB9CisKKyAgcHVibGljIHZvaWQgZW5hYmxlRWFnZXJPdXRwdXQoKSB7CisgICAgRGVjb2RlLmVuYWJsZUVhZ2VyT3V0cHV0KHN0YXRlKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGVuYWJsZUxhcmdlV2luZG93KCkgeworICAgIERlY29kZS5lbmFibGVMYXJnZVdpbmRvdyhzdGF0ZSk7CisgIH0KKworICAvKioKKyAgICoge0Bpbmhlcml0RG9jfQorICAgKi8KKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBEZWNvZGUuY2xvc2Uoc3RhdGUpOworICB9CisKKyAgLyoqCisgICAqIHtAaW5oZXJpdERvY30KKyAgICovCisgIEBPdmVycmlkZQorICBwdWJsaWMgaW50IHJlYWQoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGlmIChidWZmZXJPZmZzZXQgPj0gcmVtYWluaW5nQnVmZmVyQnl0ZXMpIHsKKyAgICAgIHJlbWFpbmluZ0J1ZmZlckJ5dGVzID0gcmVhZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpOworICAgICAgYnVmZmVyT2Zmc2V0ID0gMDsKKyAgICAgIGlmIChyZW1haW5pbmdCdWZmZXJCeXRlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBidWZmZXJbYnVmZmVyT2Zmc2V0KytdICYgMHhGRjsKKyAgfQorCisgIC8qKgorICAgKiB7QGluaGVyaXREb2N9CisgICAqLworICBAT3ZlcnJpZGUKKyAgcHVibGljIGludCByZWFkKGJ5dGVbXSBkZXN0QnVmZmVyLCBpbnQgZGVzdE9mZnNldCwgaW50IGRlc3RMZW4pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgaWYgKGRlc3RPZmZzZXQgPCAwKSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgb2Zmc2V0OiAiICsgZGVzdE9mZnNldCk7CisgICAgfSBlbHNlIGlmIChkZXN0TGVuIDwgMCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQmFkIGxlbmd0aDogIiArIGRlc3RMZW4pOworICAgIH0gZWxzZSBpZiAoZGVzdE9mZnNldCArIGRlc3RMZW4gPiBkZXN0QnVmZmVyLmxlbmd0aCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAiQnVmZmVyIG92ZXJmbG93OiAiICsgKGRlc3RPZmZzZXQgKyBkZXN0TGVuKSArICIgPiAiICsgZGVzdEJ1ZmZlci5sZW5ndGgpOworICAgIH0gZWxzZSBpZiAoZGVzdExlbiA9PSAwKSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaW50IGNvcHlMZW4gPSBNYXRoLm1heChyZW1haW5pbmdCdWZmZXJCeXRlcyAtIGJ1ZmZlck9mZnNldCwgMCk7CisgICAgaWYgKGNvcHlMZW4gIT0gMCkgeworICAgICAgY29weUxlbiA9IE1hdGgubWluKGNvcHlMZW4sIGRlc3RMZW4pOworICAgICAgU3lzdGVtLmFycmF5Y29weShidWZmZXIsIGJ1ZmZlck9mZnNldCwgZGVzdEJ1ZmZlciwgZGVzdE9mZnNldCwgY29weUxlbik7CisgICAgICBidWZmZXJPZmZzZXQgKz0gY29weUxlbjsKKyAgICAgIGRlc3RPZmZzZXQgKz0gY29weUxlbjsKKyAgICAgIGRlc3RMZW4gLT0gY29weUxlbjsKKyAgICAgIGlmIChkZXN0TGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIGNvcHlMZW47CisgICAgICB9CisgICAgfQorICAgIHRyeSB7CisgICAgICBzdGF0ZS5vdXRwdXQgPSBkZXN0QnVmZmVyOworICAgICAgc3RhdGUub3V0cHV0T2Zmc2V0ID0gZGVzdE9mZnNldDsKKyAgICAgIHN0YXRlLm91dHB1dExlbmd0aCA9IGRlc3RMZW47CisgICAgICBzdGF0ZS5vdXRwdXRVc2VkID0gMDsKKyAgICAgIERlY29kZS5kZWNvbXByZXNzKHN0YXRlKTsKKyAgICAgIGlmIChzdGF0ZS5vdXRwdXRVc2VkID09IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgcmV0dXJuIHN0YXRlLm91dHB1dFVzZWQgKyBjb3B5TGVuOworICAgIH0gY2F0Y2ggKEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQnJvdGxpIHN0cmVhbSBkZWNvZGluZyBmYWlsZWQiLCBleCk7CisgICAgfQorCisgICAgLy8gPHtbSU5KRUNURUQgQ09ERV19PgorICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9Ccm90bGlSdW50aW1lRXhjZXB0aW9uLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9Ccm90bGlSdW50aW1lRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg0NDkwNwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0Jyb3RsaVJ1bnRpbWVFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDIxIEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkuZGVjOworCisvKioKKyAqIFVuY2hlY2tlZCBleGNlcHRpb24gdXNlZCBpbnRlcm5hbGx5LgorICovCitjbGFzcyBCcm90bGlSdW50aW1lRXhjZXB0aW9uIGV4dGVuZHMgUnVudGltZUV4Y2VwdGlvbiB7CisKKyAgQnJvdGxpUnVudGltZUV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgeworICAgIHN1cGVyKG1lc3NhZ2UpOworICB9CisKKyAgQnJvdGxpUnVudGltZUV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSwgVGhyb3dhYmxlIGNhdXNlKSB7CisgICAgc3VwZXIobWVzc2FnZSwgY2F1c2UpOworICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9Db21wb3VuZERpY3Rpb25hcnlUZXN0LmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9Db21wb3VuZERpY3Rpb25hcnlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5Y2JjNAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0NvbXBvdW5kRGljdGlvbmFyeVRlc3QuamF2YQpAQCAtMCwwICsxLDYzIEBACisvKiBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkuZGVjOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKgorICogVGVzdHMgZm9yIHtAbGluayBEaWN0aW9uYXJ5fS4KKyAqLworQFJ1bldpdGgoSlVuaXQ0LmNsYXNzKQorcHVibGljIGNsYXNzIENvbXBvdW5kRGljdGlvbmFyeVRlc3QgeworCisgIC8qKiBTZWUge0BsaW5rIFN5bnRoVGVzdH0gKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIE9ORV9DT1BZID0geworICAgICAgKGJ5dGUpIDB4YTEsIChieXRlKSAweGE4LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4YzAsIChieXRlKSAweDJmLCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4MTAsCisgICAgICAoYnl0ZSkgMHhjNCwgKGJ5dGUpIDB4NDQsIChieXRlKSAweDA5LCAoYnl0ZSkgMHgwMAorICAgIH07CisKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRFWFQgPSAiS290IGxvbW9tIGtvbG9sIHNsb25hISI7CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdE5vRGljdGlvbmFyeSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgQnJvdGxpSW5wdXRTdHJlYW0gZGVjb2RlciA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oT05FX0NPUFkpKTsKKyAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbMzJdOworICAgIGludCBsZW5ndGggPSBkZWNvZGVyLnJlYWQoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTsKKyAgICBhc3NlcnRFcXVhbHMoVEVYVC5sZW5ndGgoKSwgbGVuZ3RoKTsKKyAgICBhc3NlcnRFcXVhbHMoImFsdGVybmF0ZVwiIHR5cGU9XCJhcHBsaSIsIG5ldyBTdHJpbmcoYnVmZmVyLCAwLCBsZW5ndGgsICJVUy1BU0NJSSIpKTsKKyAgICBkZWNvZGVyLmNsb3NlKCk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0T25lUGllY2VEaWN0aW9uYXJ5KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBCcm90bGlJbnB1dFN0cmVhbSBkZWNvZGVyID0gbmV3IEJyb3RsaUlucHV0U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShPTkVfQ09QWSkpOworICAgIGRlY29kZXIuYXR0YWNoRGljdGlvbmFyeUNodW5rKFRFWFQuZ2V0Qnl0ZXMoIlVTLUFTQ0lJIikpOworICAgIGJ5dGVbXSBidWZmZXIgPSBuZXcgYnl0ZVszMl07CisgICAgaW50IGxlbmd0aCA9IGRlY29kZXIucmVhZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpOworICAgIGFzc2VydEVxdWFscyhURVhULmxlbmd0aCgpLCBsZW5ndGgpOworICAgIGFzc2VydEVxdWFscyhURVhULCBuZXcgU3RyaW5nKGJ1ZmZlciwgMCwgbGVuZ3RoLCAiVVMtQVNDSUkiKSk7CisgICAgZGVjb2Rlci5jbG9zZSgpOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFR3b1BpZWNlRGljdGlvbmFyeSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgQnJvdGxpSW5wdXRTdHJlYW0gZGVjb2RlciA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oT05FX0NPUFkpKTsKKyAgICBkZWNvZGVyLmF0dGFjaERpY3Rpb25hcnlDaHVuayhURVhULnN1YnN0cmluZygwLCAxMykuZ2V0Qnl0ZXMoIlVTLUFTQ0lJIikpOworICAgIGRlY29kZXIuYXR0YWNoRGljdGlvbmFyeUNodW5rKFRFWFQuc3Vic3RyaW5nKDEzKS5nZXRCeXRlcygiVVMtQVNDSUkiKSk7CisgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWzMyXTsKKyAgICBpbnQgbGVuZ3RoID0gZGVjb2Rlci5yZWFkKGJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCk7CisgICAgYXNzZXJ0RXF1YWxzKFRFWFQubGVuZ3RoKCksIGxlbmd0aCk7CisgICAgYXNzZXJ0RXF1YWxzKFRFWFQsIG5ldyBTdHJpbmcoYnVmZmVyLCAwLCBsZW5ndGgsICJVUy1BU0NJSSIpKTsKKyAgICBkZWNvZGVyLmNsb3NlKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0NvbnRleHQuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0NvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWYzZjkxCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKKy8qKgorICogQ29tbW9uIGNvbnRleHQgbG9va3VwIHRhYmxlIGZvciBhbGwgY29udGV4dCBtb2Rlcy4KKyAqLworZmluYWwgY2xhc3MgQ29udGV4dCB7CisKKyAgc3RhdGljIGZpbmFsIGludFtdIExPT0tVUCA9IG5ldyBpbnRbMjA0OF07CisKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVURl9NQVAgPSAiICAgICAgICAgISEgICEgICAgICAgICAgICAgICAgICBcIiMkIyMlIyQmJyMjKCMpIysrKysrKysrKyIKKyAgICAgICsgIisoKCYqJyMjLC0tLSwtLS0sLS0tLS0sLS0tLS0sLS0tLS0mIycjIyMuLy8vLi8vLy4vLy8vLy4vLy8vLy4vLy8vLyYjJyMgIjsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVURl9STEUgPSAiQS8qICAnOiAgJiA6ICQgIFx1MDA4MSBAIjsKKworICBwcml2YXRlIHN0YXRpYyB2b2lkIHVucGFja0xvb2t1cFRhYmxlKGludFtdIGxvb2t1cCwgU3RyaW5nIG1hcCwgU3RyaW5nIHJsZSkgeworICAgIC8vIExTQjYsIE1TQjYsIFNJR05FRAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKKyAgICAgIGxvb2t1cFtpXSA9IGkgJiAweDNGOworICAgICAgbG9va3VwWzUxMiArIGldID0gaSA+PiAyOworICAgICAgbG9va3VwWzE3OTIgKyBpXSA9IDIgKyAoaSA+PiA2KTsKKyAgICB9CisgICAgLy8gVVRGOAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTI4OyArK2kpIHsKKyAgICAgIGxvb2t1cFsxMDI0ICsgaV0gPSA0ICogKG1hcC5jaGFyQXQoaSkgLSAzMik7CisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgICAgbG9va3VwWzExNTIgKyBpXSA9IGkgJiAxOworICAgICAgbG9va3VwWzEyMTYgKyBpXSA9IDIgKyAoaSAmIDEpOworICAgIH0KKyAgICBpbnQgb2Zmc2V0ID0gMTI4MDsKKyAgICBmb3IgKGludCBrID0gMDsgayA8IDE5OyArK2spIHsKKyAgICAgIGludCB2YWx1ZSA9IGsgJiAzOworICAgICAgaW50IHJlcCA9IHJsZS5jaGFyQXQoaykgLSAzMjsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwOyArK2kpIHsKKyAgICAgICAgbG9va3VwW29mZnNldCsrXSA9IHZhbHVlOworICAgICAgfQorICAgIH0KKyAgICAvLyBTSUdORUQKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgIGxvb2t1cFsxNzkyICsgaV0gPSAxOworICAgICAgbG9va3VwWzIwMzIgKyBpXSA9IDY7CisgICAgfQorICAgIGxvb2t1cFsxNzkyXSA9IDA7CisgICAgbG9va3VwWzIwNDddID0gNzsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CisgICAgICBsb29rdXBbMTUzNiArIGldID0gbG9va3VwWzE3OTIgKyBpXSA8PCAzOworICAgIH0KKyAgfQorCisgIHN0YXRpYyB7CisgICAgdW5wYWNrTG9va3VwVGFibGUoTE9PS1VQLCBVVEZfTUFQLCBVVEZfUkxFKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGVjb2RlLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9EZWNvZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Mzk1ZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGVjb2RlLmphdmEKQEAgLTAsMCArMSwxMzUyIEBACisvKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkuZGVjOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CisKKy8qKgorICogQVBJIGZvciBCcm90bGkgZGVjb21wcmVzc2lvbi4KKyAqLworZmluYWwgY2xhc3MgRGVjb2RlIHsKKworICBzdGF0aWMgZmluYWwgaW50IE1JTl9MQVJHRV9XSU5ET1dfQklUUyA9IDEwOworICAvKiBNYXhpbXVtIHdhcyBjaG9zZW4gdG8gYmUgMzAgdG8gYWxsb3cgZWZmaWNpZW50IGRlY29kZXIgaW1wbGVtZW50YXRpb24uCisgICAqIEZvcm1hdCBhbGxvd3MgYmlnZ2VyIHdpbmRvdywgYnV0IEphdmEgZG9lcyBub3Qgc3VwcG9ydCAyRysgYXJyYXlzLiAqLworICBzdGF0aWMgZmluYWwgaW50IE1BWF9MQVJHRV9XSU5ET1dfQklUUyA9IDMwOworCisgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAvLyBSdW5uaW5nU3RhdGUKKyAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVTklOSVRJQUxJWkVEID0gMDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOSVRJQUxJWkVEID0gMTsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJMT0NLX1NUQVJUID0gMjsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTVBSRVNTRURfQkxPQ0tfU1RBUlQgPSAzOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFJTl9MT09QID0gNDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFJFQURfTUVUQURBVEEgPSA1OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09QWV9VTkNPTVBSRVNTRUQgPSA2OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5TRVJUX0xPT1AgPSA3OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09QWV9MT09QID0gODsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVTRV9ESUNUSU9OQVJZID0gOTsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJTklTSEVEID0gMTA7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDTE9TRUQgPSAxMTsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOSVRfV1JJVEUgPSAxMjsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFdSSVRFID0gMTM7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT1BZX0ZST01fQ09NUE9VTkRfRElDVElPTkFSWSA9IDE0OworCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0NPREVfTEVOR1RIID0gODsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPREVfTEVOR1RIX1JFUEVBVF9DT0RFID0gMTY7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1fTElURVJBTF9DT0RFUyA9IDI1NjsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5VTV9DT01NQU5EX0NPREVTID0gNzA0OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTlVNX0JMT0NLX0xFTkdUSF9DT0RFUyA9IDI2OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElURVJBTF9DT05URVhUX0JJVFMgPSA2OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElTVEFOQ0VfQ09OVEVYVF9CSVRTID0gMjsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0RfQkxPQ0tfTUFQX0JJVFMgPSA4OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSFVGRk1BTl9UQUJMRV9CSVRTID0gODsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhVRkZNQU5fVEFCTEVfTUFTSyA9IDB4RkY7CisKKyAgLyoqCisgICAqIE1heGltdW0gcG9zc2libGUgSHVmZm1hbiB0YWJsZSBzaXplIGZvciBhbiBhbHBoYWJldCBzaXplIG9mIChpbmRleCAqIDMyKSwKKyAgICogbWF4IGNvZGUgbGVuZ3RoIDE1IGFuZCByb290IHRhYmxlIGJpdHMgOC4KKyAgICogVGhlIGJpZ2dlc3QgYWxwaGFiZXQgaXMgImNvbW1hbmQiIC0gNzA0IHN5bWJvbHMuIFRob3VnaCAiZGlzdGFuY2UiIGFscGhhYmV0IGNvdWxkIHRoZW9yZXRpY2FsbHkKKyAgICogb3V0cmVhY2ggdGhhdCBsaW1pdCAoZm9yIDYyIGV4dHJhIGJpdCBkaXN0YW5jZXMpLCBwcmFjdGljYWxseSBpdCBpcyBsaW1pdGVkIGJ5CisgICAqIE1BWF9BTExPV0VEX0RJU1RBTkNFIGFuZCBuZXZlciBnZXRzIGJpZ2dlciB0aGFuIDU0NCBzeW1ib2xzLgorICAgKi8KKyAgc3RhdGljIGZpbmFsIGludFtdIE1BWF9IVUZGTUFOX1RBQkxFX1NJWkUgPSB7CisgICAgICAyNTYsIDQwMiwgNDM2LCA0NjgsIDUwMCwgNTM0LCA1NjYsIDU5OCwgNjMwLCA2NjIsIDY5NCwgNzI2LCA3NTgsIDc5MCwgODIyLAorICAgICAgODU0LCA4ODYsIDkyMCwgOTUyLCA5ODQsIDEwMTYsIDEwNDgsIDEwODAKKyAgfTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSFVGRk1BTl9UQUJMRV9TSVpFXzI2ID0gMzk2OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSFVGRk1BTl9UQUJMRV9TSVpFXzI1OCA9IDYzMjsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09ERV9MRU5HVEhfQ09ERVMgPSAxODsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gQ09ERV9MRU5HVEhfQ09ERV9PUkRFUiA9IHsKKyAgICAgIDEsIDIsIDMsIDQsIDAsIDUsIDE3LCA2LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwKKyAgfTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTlVNX0RJU1RBTkNFX1NIT1JUX0NPREVTID0gMTY7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIERJU1RBTkNFX1NIT1JUX0NPREVfSU5ERVhfT0ZGU0VUID0geworICAgIDAsIDMsIDIsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDMsIDMsIDMsIDMsIDMKKyAgfTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBESVNUQU5DRV9TSE9SVF9DT0RFX1ZBTFVFX09GRlNFVCA9IHsKKyAgICAgIDAsIDAsIDAsIDAsIC0xLCAxLCAtMiwgMiwgLTMsIDMsIC0xLCAxLCAtMiwgMiwgLTMsIDMKKyAgfTsKKworICAvKioKKyAgICogU3RhdGljIEh1ZmZtYW4gY29kZSBmb3IgdGhlIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3Rocy4KKyAgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIEZJWEVEX1RBQkxFID0geworICAgICAgMHgwMjAwMDAsIDB4MDIwMDA0LCAweDAyMDAwMywgMHgwMzAwMDIsIDB4MDIwMDAwLCAweDAyMDAwNCwgMHgwMjAwMDMsIDB4MDQwMDAxLAorICAgICAgMHgwMjAwMDAsIDB4MDIwMDA0LCAweDAyMDAwMywgMHgwMzAwMDIsIDB4MDIwMDAwLCAweDAyMDAwNCwgMHgwMjAwMDMsIDB4MDQwMDA1CisgIH07CisKKyAgLy8gVE9ETzogZ2VuZXJhbGl6ZS4KKyAgc3RhdGljIGZpbmFsIGludCBNQVhfVFJBTlNGT1JNRURfV09SRF9MRU5HVEggPSA1ICsgMjQgKyA4OworCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfRElTVEFOQ0VfQklUUyA9IDI0OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0xBUkdFX1dJTkRPV19ESVNUQU5DRV9CSVRTID0gNjI7CisKKyAgLyoqCisgICAqIFNhZmUgZGlzdGFuY2UgbGltaXQuCisgICAqCisgICAqIExpbWl0ICgoMSA8PCAzMSkgLSA0KSBhbGxvd3Mgc2FmZSBkaXN0YW5jZSBjYWxjdWxhdGlvbiB3aXRob3V0IG92ZXJmbG93cywKKyAgICogZ2l2ZW4gdGhlIGRpc3RhbmNlIGFscGhhYmV0IHNpemUgaXMgbGltaXRlZCB0byBjb3JyZXNwb25kaW5nIHNpemUuCisgICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0FMTE9XRURfRElTVEFOQ0UgPSAweDdGRkZGRkZDOworCisgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAvLyBQcmVmaXggY29kZSBMVVQuCisgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBzdGF0aWMgZmluYWwgaW50W10gQkxPQ0tfTEVOR1RIX09GRlNFVCA9IHsKKyAgICAgIDEsIDUsIDksIDEzLCAxNywgMjUsIDMzLCA0MSwgNDksIDY1LCA4MSwgOTcsIDExMywgMTQ1LCAxNzcsIDIwOSwgMjQxLCAzMDUsIDM2OSwgNDk3LAorICAgICAgNzUzLCAxMjY1LCAyMjg5LCA0MzM3LCA4NDMzLCAxNjYyNQorICB9OworCisgIHN0YXRpYyBmaW5hbCBpbnRbXSBCTE9DS19MRU5HVEhfTl9CSVRTID0geworICAgICAgMiwgMiwgMiwgMiwgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwgNiwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDI0CisgIH07CisKKyAgc3RhdGljIGZpbmFsIHNob3J0W10gSU5TRVJUX0xFTkdUSF9OX0JJVFMgPSB7CisgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAyLCAweDAyLCAweDAzLCAweDAzLAorICAgICAgMHgwNCwgMHgwNCwgMHgwNSwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQywgMHgwRSwgMHgxOAorICB9OworCisgIHN0YXRpYyBmaW5hbCBzaG9ydFtdIENPUFlfTEVOR1RIX05fQklUUyA9IHsKKyAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDIsCisgICAgICAweDAzLCAweDAzLCAweDA0LCAweDA0LCAweDA1LCAweDA1LCAweDA2LCAweDA3LCAweDA4LCAweDA5LCAweDBBLCAweDE4CisgIH07CisKKyAgLy8gRWFjaCBjb21tYW5kIGlzIHJlcHJlc2VudGVkIHdpdGggNHgxNi1iaXQgdmFsdWVzOgorICAvLyAgKiBbaW5zZXJ0TGVuRXh0cmFCaXRzLCBjb3B5TGVuRXh0cmFCaXRzXQorICAvLyAgKiBpbnNlcnRMZW5PZmZzZXQKKyAgLy8gICogY29weUxlbk9mZnNldAorICAvLyAgKiBkaXN0YW5jZUNvbnRleHQKKyAgc3RhdGljIGZpbmFsIHNob3J0W10gQ01EX0xPT0tVUCA9IG5ldyBzaG9ydFtOVU1fQ09NTUFORF9DT0RFUyAqIDRdOworCisgIHN0YXRpYyB7CisgICAgdW5wYWNrQ29tbWFuZExvb2t1cFRhYmxlKENNRF9MT09LVVApOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGxvZzJmbG9vcihpbnQgaSkgeworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBpbnQgc3RlcCA9IDE2OworICAgIHdoaWxlIChzdGVwID4gMCkgeworICAgICAgaWYgKChpID4+PiBzdGVwKSAhPSAwKSB7CisgICAgICAgIHJlc3VsdCArPSBzdGVwOworICAgICAgICBpID0gaSA+Pj4gc3RlcDsKKyAgICAgIH0KKyAgICAgIHN0ZXAgPSBzdGVwID4+IDE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQgKyBpOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRTaXplKGludCBucG9zdGZpeCwgaW50IG5kaXJlY3QsIGludCBtYXhuZGlzdGJpdHMpIHsKKyAgICByZXR1cm4gTlVNX0RJU1RBTkNFX1NIT1JUX0NPREVTICsgbmRpcmVjdCArIDIgKiAobWF4bmRpc3RiaXRzIDw8IG5wb3N0Zml4KTsKKyAgfQorCisgIC8vIFRPRE86IGFkZCBhIGNvcnJlY3RuZXNzIHRlc3QgZm9yIHRoaXMgZnVuY3Rpb24gd2hlbgorICAvLyAgICAgICAgICAgICAgIGxhcmdlLXdpbmRvdyBhbmQgZGljdGlvbmFyeSBhcmUgaW1wbGVtZW50ZWQuCisgIHByaXZhdGUgc3RhdGljIGludCBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQoaW50IG1heERpc3RhbmNlLCBpbnQgbnBvc3RmaXgsIGludCBuZGlyZWN0KSB7CisgICAgaWYgKG1heERpc3RhbmNlIDwgbmRpcmVjdCArICgyIDw8IG5wb3N0Zml4KSkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibWF4RGlzdGFuY2UgaXMgdG9vIHNtYWxsIik7CisgICAgfQorICAgIGludCBvZmZzZXQgPSAoKG1heERpc3RhbmNlIC0gbmRpcmVjdCkgPj4gbnBvc3RmaXgpICsgNDsKKyAgICBpbnQgbmRpc3RiaXRzID0gbG9nMmZsb29yKG9mZnNldCkgLSAxOworICAgIGludCBncm91cCA9ICgobmRpc3RiaXRzIC0gMSkgPDwgMSkgfCAoKG9mZnNldCA+PiBuZGlzdGJpdHMpICYgMSk7CisgICAgcmV0dXJuICgoZ3JvdXAgLSAxKSA8PCBucG9zdGZpeCkgKyAoMSA8PCBucG9zdGZpeCkgKyBuZGlyZWN0ICsgTlVNX0RJU1RBTkNFX1NIT1JUX0NPREVTOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1bnBhY2tDb21tYW5kTG9va3VwVGFibGUoc2hvcnRbXSBjbWRMb29rdXApIHsKKyAgICBzaG9ydFtdIGluc2VydExlbmd0aE9mZnNldHMgPSBuZXcgc2hvcnRbMjRdOworICAgIHNob3J0W10gY29weUxlbmd0aE9mZnNldHMgPSBuZXcgc2hvcnRbMjRdOworICAgIGNvcHlMZW5ndGhPZmZzZXRzWzBdID0gMjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDIzOyArK2kpIHsKKyAgICAgIGluc2VydExlbmd0aE9mZnNldHNbaSArIDFdID0KKyAgICAgICAgICAoc2hvcnQpIChpbnNlcnRMZW5ndGhPZmZzZXRzW2ldICsgKDEgPDwgSU5TRVJUX0xFTkdUSF9OX0JJVFNbaV0pKTsKKyAgICAgIGNvcHlMZW5ndGhPZmZzZXRzW2kgKyAxXSA9CisgICAgICAgICAgKHNob3J0KSAoY29weUxlbmd0aE9mZnNldHNbaV0gKyAoMSA8PCBDT1BZX0xFTkdUSF9OX0JJVFNbaV0pKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBjbWRDb2RlID0gMDsgY21kQ29kZSA8IE5VTV9DT01NQU5EX0NPREVTOyArK2NtZENvZGUpIHsKKyAgICAgIGludCByYW5nZUlkeCA9IGNtZENvZGUgPj4+IDY7CisgICAgICAvKiAtNCB0dXJucyBhbnkgcmVndWxhciBkaXN0YW5jZSBjb2RlIHRvIG5lZ2F0aXZlLiAqLworICAgICAgaW50IGRpc3RhbmNlQ29udGV4dE9mZnNldCA9IC00OworICAgICAgaWYgKHJhbmdlSWR4ID49IDIpIHsKKyAgICAgICAgcmFuZ2VJZHggLT0gMjsKKyAgICAgICAgZGlzdGFuY2VDb250ZXh0T2Zmc2V0ID0gMDsKKyAgICAgIH0KKyAgICAgIGludCBpbnNlcnRDb2RlID0gKCgoMHgyOTg1MCA+Pj4gKHJhbmdlSWR4ICogMikpICYgMHgzKSA8PCAzKSB8ICgoY21kQ29kZSA+Pj4gMykgJiA3KTsKKyAgICAgIGludCBjb3B5Q29kZSA9ICgoKDB4MjYyNDQgPj4+IChyYW5nZUlkeCAqIDIpKSAmIDB4MykgPDwgMykgfCAoY21kQ29kZSAmIDcpOworICAgICAgc2hvcnQgY29weUxlbmd0aE9mZnNldCA9IGNvcHlMZW5ndGhPZmZzZXRzW2NvcHlDb2RlXTsKKyAgICAgIGludCBkaXN0YW5jZUNvbnRleHQgPQorICAgICAgICAgIGRpc3RhbmNlQ29udGV4dE9mZnNldCArIChjb3B5TGVuZ3RoT2Zmc2V0ID4gNCA/IDMgOiBjb3B5TGVuZ3RoT2Zmc2V0IC0gMik7CisgICAgICBpbnQgaW5kZXggPSBjbWRDb2RlICogNDsKKyAgICAgIGNtZExvb2t1cFtpbmRleCArIDBdID0KKyAgICAgICAgICAoc2hvcnQpIChJTlNFUlRfTEVOR1RIX05fQklUU1tpbnNlcnRDb2RlXSB8IChDT1BZX0xFTkdUSF9OX0JJVFNbY29weUNvZGVdIDw8IDgpKTsKKyAgICAgIGNtZExvb2t1cFtpbmRleCArIDFdID0gaW5zZXJ0TGVuZ3RoT2Zmc2V0c1tpbnNlcnRDb2RlXTsKKyAgICAgIGNtZExvb2t1cFtpbmRleCArIDJdID0gY29weUxlbmd0aE9mZnNldHNbY29weUNvZGVdOworICAgICAgY21kTG9va3VwW2luZGV4ICsgM10gPSAoc2hvcnQpIGRpc3RhbmNlQ29udGV4dDsKKyAgICB9CisgIH0KKworICAvKioKKyAgICogUmVhZHMgYnJvdGxpIHN0cmVhbSBoZWFkZXIgYW5kIHBhcnNlcyAid2luZG93IGJpdHMiLgorICAgKgorICAgKiBAcGFyYW0gcyBpbml0aWFsaXplZCBzdGF0ZSwgYmVmb3JlIGFueSByZWFkIGlzIHBlcmZvcm1lZC4KKyAgICogQHJldHVybiAtMSBpZiBoZWFkZXIgaXMgaW52YWxpZAorICAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGRlY29kZVdpbmRvd0JpdHMoU3RhdGUgcykgeworICAgIC8qIENoYW5nZSB0aGUgbWVhbmluZyBvZiBmbGFnLiBCZWZvcmUgdGhhdCBzdGVwIGl0IG1lYW5zICJkZWNvZGVyIG11c3QgYmUgY2FwYWJsZSBvZiByZWFkaW5nCisgICAgICogImxhcmdlLXdpbmRvdyIgYnJvdGxpIHN0cmVhbS4gQWZ0ZXIgdGhpcyBzdGVwIGl0IG1lYW5zIHRoYXQgImxhcmdlLXdpbmRvdyIgZmVhdHVyZQorICAgICAqIGlzIGFjdHVhbGx5IGRldGVjdGVkLiBEZXNwaXRlIHRoZSB3aW5kb3cgc2l6ZSBjb3VsZCBiZSBzYW1lIGFzIGJlZm9yZSAobGd3aW4gPSAxMC4uMjQpLAorICAgICAqIGVuY29kZWQgZGlzdGFuY2VzIGFyZSBhbGxvd2VkIHRvIGJlIG11Y2ggZ3JlYXRlciwgdGh1cyBiaWdnZXIgZGljdGluYXJ5IGNvdWxkIGJlIHVzZWQuICovCisgICAgaW50IGxhcmdlV2luZG93RW5hYmxlZCA9IHMuaXNMYXJnZVdpbmRvdzsKKyAgICBzLmlzTGFyZ2VXaW5kb3cgPSAwOworCisgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgaWYgKEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCAxKSA9PSAwKSB7CisgICAgICByZXR1cm4gMTY7CisgICAgfQorICAgIGludCBuID0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDMpOworICAgIGlmIChuICE9IDApIHsKKyAgICAgIHJldHVybiAxNyArIG47CisgICAgfQorICAgIG4gPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMyk7CisgICAgaWYgKG4gIT0gMCkgeworICAgICAgaWYgKG4gPT0gMSkgeworICAgICAgICBpZiAobGFyZ2VXaW5kb3dFbmFibGVkID09IDApIHsKKyAgICAgICAgICAvKiBSZXNlcnZlZCB2YWx1ZSBpbiByZWd1bGFyIGJyb3RsaSBzdHJlYW0uICovCisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHMuaXNMYXJnZVdpbmRvdyA9IDE7CisgICAgICAgIC8qIENoZWNrICJyZXNlcnZlZCIgYml0IGZvciBmdXR1cmUgKHBvc3QtbGFyZ2Utd2luZG93KSBleHRlbnNpb25zLiAqLworICAgICAgICBpZiAoQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDEpID09IDEpIHsKKyAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbiA9IEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCA2KTsKKyAgICAgICAgaWYgKG4gPCBNSU5fTEFSR0VfV0lORE9XX0JJVFMgfHwgbiA+IE1BWF9MQVJHRV9XSU5ET1dfQklUUykgeworICAgICAgICAgIC8qIEVuY29kZWQgd2luZG93IGJpdHMgdmFsdWUgaXMgdG9vIHNtYWxsIG9yIHRvbyBiaWcuICovCisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDggKyBuOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTc7CisgIH0KKworICAvKioKKyAgICogU3dpdGNoIGRlY29kZXIgdG8gImVhZ2VyIiBtb2RlLgorICAgKgorICAgKiBJbiAiZWFnZXIiIG1vZGUgZGVjb2RlciByZXR1cm5zIGFzIHNvb24gYXMgdGhlcmUgaXMgZW5vdWdoIGRhdGEgdG8gZmlsbCBvdXRwdXQgYnVmZmVyLgorICAgKgorICAgKiBAcGFyYW0gcyBpbml0aWFsaXplZCBzdGF0ZSwgYmVmb3JlIGFueSByZWFkIGlzIHBlcmZvcm1lZC4KKyAgICovCisgIHN0YXRpYyB2b2lkIGVuYWJsZUVhZ2VyT3V0cHV0KFN0YXRlIHMpIHsKKyAgICBpZiAocy5ydW5uaW5nU3RhdGUgIT0gSU5JVElBTElaRUQpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlN0YXRlIE1VU1QgYmUgZnJlc2hseSBpbml0aWFsaXplZCIpOworICAgIH0KKyAgICBzLmlzRWFnZXIgPSAxOworICB9CisKKyAgc3RhdGljIHZvaWQgZW5hYmxlTGFyZ2VXaW5kb3coU3RhdGUgcykgeworICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSAhPSBJTklUSUFMSVpFRCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU3RhdGUgTVVTVCBiZSBmcmVzaGx5IGluaXRpYWxpemVkIik7CisgICAgfQorICAgIHMuaXNMYXJnZVdpbmRvdyA9IDE7CisgIH0KKworICAvLyBUT0RPOiBkbyB3ZSBuZWVkIGJ5dGUgdmlld3M/CisgIHN0YXRpYyB2b2lkIGF0dGFjaERpY3Rpb25hcnlDaHVuayhTdGF0ZSBzLCBieXRlW10gZGF0YSkgeworICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSAhPSBJTklUSUFMSVpFRCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU3RhdGUgTVVTVCBiZSBmcmVzaGx5IGluaXRpYWxpemVkIik7CisgICAgfQorICAgIGlmIChzLmNkTnVtQ2h1bmtzID09IDApIHsKKyAgICAgIHMuY2RDaHVua3MgPSBuZXcgYnl0ZVsxNl1bXTsKKyAgICAgIHMuY2RDaHVua09mZnNldHMgPSBuZXcgaW50WzE2XTsKKyAgICAgIHMuY2RCbG9ja0JpdHMgPSAtMTsKKyAgICB9CisgICAgaWYgKHMuY2ROdW1DaHVua3MgPT0gMTUpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlRvbyBtYW55IGRpY3Rpb25hcnkgY2h1bmtzIik7CisgICAgfQorICAgIHMuY2RDaHVua3Nbcy5jZE51bUNodW5rc10gPSBkYXRhOworICAgIHMuY2ROdW1DaHVua3MrKzsKKyAgICBzLmNkVG90YWxTaXplICs9IGRhdGEubGVuZ3RoOworICAgIHMuY2RDaHVua09mZnNldHNbcy5jZE51bUNodW5rc10gPSBzLmNkVG90YWxTaXplOworICB9CisKKyAgLyoqCisgICAqIEFzc29jaWF0ZSBpbnB1dCB3aXRoIGRlY29kZXIgc3RhdGUuCisgICAqCisgICAqIEBwYXJhbSBzIHVuaW5pdGlhbGl6ZWQgc3RhdGUgd2l0aG91dCBhc3NvY2lhdGVkIGlucHV0CisgICAqIEBwYXJhbSBpbnB1dCBjb21wcmVzc2VkIGRhdGEgc291cmNlCisgICAqLworICBzdGF0aWMgdm9pZCBpbml0U3RhdGUoU3RhdGUgcywgSW5wdXRTdHJlYW0gaW5wdXQpIHsKKyAgICBpZiAocy5ydW5uaW5nU3RhdGUgIT0gVU5JTklUSUFMSVpFRCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU3RhdGUgTVVTVCBiZSB1bmluaXRpYWxpemVkIik7CisgICAgfQorICAgIC8qIDYgdHJlZXMgKyAxIGV4dHJhICJvZmZzZXQiIHNsb3QgdG8gc2ltcGxpZnkgdGFibGUgZGVjb2RpbmcgbG9naWMuICovCisgICAgcy5ibG9ja1RyZWVzID0gbmV3IGludFs3ICsgMyAqIChIVUZGTUFOX1RBQkxFX1NJWkVfMjU4ICsgSFVGRk1BTl9UQUJMRV9TSVpFXzI2KV07CisgICAgcy5ibG9ja1RyZWVzWzBdID0gNzsKKyAgICBzLmRpc3RSYklkeCA9IDM7CisgICAgaW50IG1heERpc3RhbmNlQWxwaGFiZXRMaW1pdCA9IGNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRMaW1pdChNQVhfQUxMT1dFRF9ESVNUQU5DRSwgMywgMTUgPDwgMyk7CisgICAgcy5kaXN0RXh0cmFCaXRzID0gbmV3IGJ5dGVbbWF4RGlzdGFuY2VBbHBoYWJldExpbWl0XTsKKyAgICBzLmRpc3RPZmZzZXQgPSBuZXcgaW50W21heERpc3RhbmNlQWxwaGFiZXRMaW1pdF07CisgICAgcy5pbnB1dCA9IGlucHV0OworICAgIEJpdFJlYWRlci5pbml0Qml0UmVhZGVyKHMpOworICAgIHMucnVubmluZ1N0YXRlID0gSU5JVElBTElaRUQ7CisgIH0KKworICBzdGF0aWMgdm9pZCBjbG9zZShTdGF0ZSBzKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSA9PSBVTklOSVRJQUxJWkVEKSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTdGF0ZSBNVVNUIGJlIGluaXRpYWxpemVkIik7CisgICAgfQorICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcy5ydW5uaW5nU3RhdGUgPSBDTE9TRUQ7CisgICAgaWYgKHMuaW5wdXQgIT0gbnVsbCkgeworICAgICAgVXRpbHMuY2xvc2VJbnB1dChzLmlucHV0KTsKKyAgICAgIHMuaW5wdXQgPSBudWxsOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBEZWNvZGVzIGEgbnVtYmVyIGluIHRoZSByYW5nZSBbMC4uMjU1XSwgYnkgcmVhZGluZyAxIC0gMTEgYml0cy4KKyAgICovCisgIHByaXZhdGUgc3RhdGljIGludCBkZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoU3RhdGUgcykgeworICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgIGlmIChCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMSkgIT0gMCkgeworICAgICAgaW50IG4gPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMyk7CisgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCBuKSArICgxIDw8IG4pOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgZGVjb2RlTWV0YUJsb2NrTGVuZ3RoKFN0YXRlIHMpIHsKKyAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICBzLmlucHV0RW5kID0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDEpOworICAgIHMubWV0YUJsb2NrTGVuZ3RoID0gMDsKKyAgICBzLmlzVW5jb21wcmVzc2VkID0gMDsKKyAgICBzLmlzTWV0YWRhdGEgPSAwOworICAgIGlmICgocy5pbnB1dEVuZCAhPSAwKSAmJiBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMSkgIT0gMCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgc2l6ZU5pYmJsZXMgPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMikgKyA0OworICAgIGlmIChzaXplTmliYmxlcyA9PSA3KSB7CisgICAgICBzLmlzTWV0YWRhdGEgPSAxOworICAgICAgaWYgKEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCAxKSAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJDb3JydXB0ZWQgcmVzZXJ2ZWQgYml0Iik7CisgICAgICB9CisgICAgICBpbnQgc2l6ZUJ5dGVzID0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDIpOworICAgICAgaWYgKHNpemVCeXRlcyA9PSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZUJ5dGVzOyBpKyspIHsKKyAgICAgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgICAgIGludCBiaXRzID0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDgpOworICAgICAgICBpZiAoYml0cyA9PSAwICYmIGkgKyAxID09IHNpemVCeXRlcyAmJiBzaXplQnl0ZXMgPiAxKSB7CisgICAgICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkV4dWJlcmFudCBuaWJibGUiKTsKKyAgICAgICAgfQorICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aCB8PSBiaXRzIDw8IChpICogOCk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZU5pYmJsZXM7IGkrKykgeworICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgaW50IGJpdHMgPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgNCk7CisgICAgICAgIGlmIChiaXRzID09IDAgJiYgaSArIDEgPT0gc2l6ZU5pYmJsZXMgJiYgc2l6ZU5pYmJsZXMgPiA0KSB7CisgICAgICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkV4dWJlcmFudCBuaWJibGUiKTsKKyAgICAgICAgfQorICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aCB8PSBiaXRzIDw8IChpICogNCk7CisgICAgICB9CisgICAgfQorICAgIHMubWV0YUJsb2NrTGVuZ3RoKys7CisgICAgaWYgKHMuaW5wdXRFbmQgPT0gMCkgeworICAgICAgcy5pc1VuY29tcHJlc3NlZCA9IEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCAxKTsKKyAgICB9CisgIH0KKworICAvKioKKyAgICogRGVjb2RlcyB0aGUgbmV4dCBIdWZmbWFuIGNvZGUgZnJvbSBiaXQtc3RyZWFtLgorICAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IHJlYWRTeW1ib2woaW50W10gdGFibGVHcm91cCwgaW50IHRhYmxlSWR4LCBTdGF0ZSBzKSB7CisgICAgaW50IG9mZnNldCA9IHRhYmxlR3JvdXBbdGFibGVJZHhdOworICAgIGludCB2YWwgPSBCaXRSZWFkZXIucGVla0JpdHMocyk7CisgICAgb2Zmc2V0ICs9IHZhbCAmIEhVRkZNQU5fVEFCTEVfTUFTSzsKKyAgICBpbnQgYml0cyA9IHRhYmxlR3JvdXBbb2Zmc2V0XSA+PiAxNjsKKyAgICBpbnQgc3ltID0gdGFibGVHcm91cFtvZmZzZXRdICYgMHhGRkZGOworICAgIGlmIChiaXRzIDw9IEhVRkZNQU5fVEFCTEVfQklUUykgeworICAgICAgcy5iaXRPZmZzZXQgKz0gYml0czsKKyAgICAgIHJldHVybiBzeW07CisgICAgfQorICAgIG9mZnNldCArPSBzeW07CisgICAgaW50IG1hc2sgPSAoMSA8PCBiaXRzKSAtIDE7CisgICAgb2Zmc2V0ICs9ICh2YWwgJiBtYXNrKSA+Pj4gSFVGRk1BTl9UQUJMRV9CSVRTOworICAgIHMuYml0T2Zmc2V0ICs9ICgodGFibGVHcm91cFtvZmZzZXRdID4+IDE2KSArIEhVRkZNQU5fVEFCTEVfQklUUyk7CisgICAgcmV0dXJuIHRhYmxlR3JvdXBbb2Zmc2V0XSAmIDB4RkZGRjsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGludCByZWFkQmxvY2tMZW5ndGgoaW50W10gdGFibGVHcm91cCwgaW50IHRhYmxlSWR4LCBTdGF0ZSBzKSB7CisgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgaW50IGNvZGUgPSByZWFkU3ltYm9sKHRhYmxlR3JvdXAsIHRhYmxlSWR4LCBzKTsKKyAgICBpbnQgbiA9IEJMT0NLX0xFTkdUSF9OX0JJVFNbY29kZV07CisgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgcmV0dXJuIEJMT0NLX0xFTkdUSF9PRkZTRVRbY29kZV0gKyBCaXRSZWFkZXIucmVhZEJpdHMocywgbik7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIG1vdmVUb0Zyb250KGludFtdIHYsIGludCBpbmRleCkgeworICAgIGludCB2YWx1ZSA9IHZbaW5kZXhdOworICAgIGZvciAoOyBpbmRleCA+IDA7IGluZGV4LS0pIHsKKyAgICAgIHZbaW5kZXhdID0gdltpbmRleCAtIDFdOworICAgIH0KKyAgICB2WzBdID0gdmFsdWU7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9ybShieXRlW10gdiwgaW50IHZMZW4pIHsKKyAgICBpbnRbXSBtdGYgPSBuZXcgaW50WzI1Nl07CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAgbXRmW2ldID0gaTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2TGVuOyBpKyspIHsKKyAgICAgIGludCBpbmRleCA9IHZbaV0gJiAweEZGOworICAgICAgdltpXSA9IChieXRlKSBtdGZbaW5kZXhdOworICAgICAgaWYgKGluZGV4ICE9IDApIHsKKyAgICAgICAgbW92ZVRvRnJvbnQobXRmLCBpbmRleCk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByZWFkSHVmZm1hbkNvZGVMZW5ndGhzKAorICAgICAgaW50W10gY29kZUxlbmd0aENvZGVMZW5ndGhzLCBpbnQgbnVtU3ltYm9scywgaW50W10gY29kZUxlbmd0aHMsIFN0YXRlIHMpIHsKKyAgICBpbnQgc3ltYm9sID0gMDsKKyAgICBpbnQgcHJldkNvZGVMZW4gPSBERUZBVUxUX0NPREVfTEVOR1RIOworICAgIGludCByZXBlYXQgPSAwOworICAgIGludCByZXBlYXRDb2RlTGVuID0gMDsKKyAgICBpbnQgc3BhY2UgPSAzMjc2ODsKKyAgICBpbnRbXSB0YWJsZSA9IG5ldyBpbnRbMzIgKyAxXTsgIC8qIFNwZWN1bGF0aXZlIHNpbmdsZSBlbnRyeSB0YWJsZSBncm91cC4gKi8KKyAgICBpbnQgdGFibGVJZHggPSB0YWJsZS5sZW5ndGggLSAxOworICAgIEh1ZmZtYW4uYnVpbGRIdWZmbWFuVGFibGUodGFibGUsIHRhYmxlSWR4LCA1LCBjb2RlTGVuZ3RoQ29kZUxlbmd0aHMsIENPREVfTEVOR1RIX0NPREVTKTsKKworICAgIHdoaWxlIChzeW1ib2wgPCBudW1TeW1ib2xzICYmIHNwYWNlID4gMCkgeworICAgICAgQml0UmVhZGVyLnJlYWRNb3JlSW5wdXQocyk7CisgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgIGludCBwID0gQml0UmVhZGVyLnBlZWtCaXRzKHMpICYgMzE7CisgICAgICBzLmJpdE9mZnNldCArPSB0YWJsZVtwXSA+PiAxNjsKKyAgICAgIGludCBjb2RlTGVuID0gdGFibGVbcF0gJiAweEZGRkY7CisgICAgICBpZiAoY29kZUxlbiA8IENPREVfTEVOR1RIX1JFUEVBVF9DT0RFKSB7CisgICAgICAgIHJlcGVhdCA9IDA7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbCsrXSA9IGNvZGVMZW47CisgICAgICAgIGlmIChjb2RlTGVuICE9IDApIHsKKyAgICAgICAgICBwcmV2Q29kZUxlbiA9IGNvZGVMZW47CisgICAgICAgICAgc3BhY2UgLT0gMzI3NjggPj4gY29kZUxlbjsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGV4dHJhQml0cyA9IGNvZGVMZW4gLSAxNDsKKyAgICAgICAgaW50IG5ld0xlbiA9IDA7CisgICAgICAgIGlmIChjb2RlTGVuID09IENPREVfTEVOR1RIX1JFUEVBVF9DT0RFKSB7CisgICAgICAgICAgbmV3TGVuID0gcHJldkNvZGVMZW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcGVhdENvZGVMZW4gIT0gbmV3TGVuKSB7CisgICAgICAgICAgcmVwZWF0ID0gMDsKKyAgICAgICAgICByZXBlYXRDb2RlTGVuID0gbmV3TGVuOworICAgICAgICB9CisgICAgICAgIGludCBvbGRSZXBlYXQgPSByZXBlYXQ7CisgICAgICAgIGlmIChyZXBlYXQgPiAwKSB7CisgICAgICAgICAgcmVwZWF0IC09IDI7CisgICAgICAgICAgcmVwZWF0IDw8PSBleHRyYUJpdHM7CisgICAgICAgIH0KKyAgICAgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgICAgIHJlcGVhdCArPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgZXh0cmFCaXRzKSArIDM7CisgICAgICAgIGludCByZXBlYXREZWx0YSA9IHJlcGVhdCAtIG9sZFJlcGVhdDsKKyAgICAgICAgaWYgKHN5bWJvbCArIHJlcGVhdERlbHRhID4gbnVtU3ltYm9scykgeworICAgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJzeW1ib2wgKyByZXBlYXREZWx0YSA+IG51bVN5bWJvbHMiKTsgLy8gQ09WX05GX0xJTkUKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdERlbHRhOyBpKyspIHsKKyAgICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2wrK10gPSByZXBlYXRDb2RlTGVuOworICAgICAgICB9CisgICAgICAgIGlmIChyZXBlYXRDb2RlTGVuICE9IDApIHsKKyAgICAgICAgICBzcGFjZSAtPSByZXBlYXREZWx0YSA8PCAoMTUgLSByZXBlYXRDb2RlTGVuKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAoc3BhY2UgIT0gMCkgeworICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIlVudXNlZCBzcGFjZSIpOyAvLyBDT1ZfTkZfTElORQorICAgIH0KKyAgICAvLyBUT0RPOiBQYXNzIG1heF9zeW1ib2wgdG8gSHVmZm1hbiB0YWJsZSBidWlsZGVyIGluc3RlYWQ/CisgICAgVXRpbHMuZmlsbEludHNXaXRoWmVyb2VzKGNvZGVMZW5ndGhzLCBzeW1ib2wsIG51bVN5bWJvbHMpOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBjaGVja0R1cGVzKGludFtdIHN5bWJvbHMsIGludCBsZW5ndGgpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aCAtIDE7ICsraSkgeworICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgbGVuZ3RoOyArK2opIHsKKyAgICAgICAgaWYgKHN5bWJvbHNbaV0gPT0gc3ltYm9sc1tqXSkgeworICAgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJEdXBsaWNhdGUgc2ltcGxlIEh1ZmZtYW4gY29kZSBzeW1ib2wiKTsgLy8gQ09WX05GX0xJTkUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBSZWFkcyB1cCB0byA0IHN5bWJvbHMgZGlyZWN0bHkgYW5kIGFwcGxpZXMgcHJlZGVmaW5lZCBoaXN0b2dyYW1zLgorICAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IHJlYWRTaW1wbGVIdWZmbWFuQ29kZShpbnQgYWxwaGFiZXRTaXplTWF4LCBpbnQgYWxwaGFiZXRTaXplTGltaXQsCisgICAgICBpbnRbXSB0YWJsZUdyb3VwLCBpbnQgdGFibGVJZHgsIFN0YXRlIHMpIHsKKyAgICAvLyBUT0RPOiBBdm9pZCBhbGxvY2F0aW9uPworICAgIGludFtdIGNvZGVMZW5ndGhzID0gbmV3IGludFthbHBoYWJldFNpemVMaW1pdF07CisgICAgaW50W10gc3ltYm9scyA9IG5ldyBpbnRbNF07CisKKyAgICBpbnQgbWF4Qml0cyA9IDEgKyBsb2cyZmxvb3IoYWxwaGFiZXRTaXplTWF4IC0gMSk7CisKKyAgICBpbnQgbnVtU3ltYm9scyA9IEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCAyKSArIDE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1TeW1ib2xzOyBpKyspIHsKKyAgICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgICAgaW50IHN5bWJvbCA9IEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCBtYXhCaXRzKTsKKyAgICAgIGlmIChzeW1ib2wgPj0gYWxwaGFiZXRTaXplTGltaXQpIHsKKyAgICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oIkNhbid0IHJlYWRIdWZmbWFuQ29kZSIpOyAvLyBDT1ZfTkZfTElORQorICAgICAgfQorICAgICAgc3ltYm9sc1tpXSA9IHN5bWJvbDsKKyAgICB9CisgICAgY2hlY2tEdXBlcyhzeW1ib2xzLCBudW1TeW1ib2xzKTsKKworICAgIGludCBoaXN0b2dyYW1JZCA9IG51bVN5bWJvbHM7CisgICAgaWYgKG51bVN5bWJvbHMgPT0gNCkgeworICAgICAgaGlzdG9ncmFtSWQgKz0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDEpOworICAgIH0KKworICAgIHN3aXRjaCAoaGlzdG9ncmFtSWQpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1swXV0gPSAxOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAyOgorICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzBdXSA9IDE7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMV1dID0gMTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMzoKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1swXV0gPSAxOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzFdXSA9IDI7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMl1dID0gMjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgNDogIC8vIHVuaWZvcm0gNC1zeW1ib2wgaGlzdG9ncmFtCisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMF1dID0gMjsKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1sxXV0gPSAyOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzJdXSA9IDI7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbM11dID0gMjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgNTogIC8vIHByaW9yaXRpemVkIDQtc3ltYm9sIGhpc3RvZ3JhbQorICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzBdXSA9IDE7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMV1dID0gMjsKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1syXV0gPSAzOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzNdXSA9IDM7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBUT0RPOiBVc2Ugc3BlY2lhbGl6ZWQgdmVyc2lvbj8KKyAgICByZXR1cm4gSHVmZm1hbi5idWlsZEh1ZmZtYW5UYWJsZSgKKyAgICAgICAgdGFibGVHcm91cCwgdGFibGVJZHgsIEhVRkZNQU5fVEFCTEVfQklUUywgY29kZUxlbmd0aHMsIGFscGhhYmV0U2l6ZUxpbWl0KTsKKyAgfQorCisgIC8vIERlY29kZSBIdWZmbWFuLWNvZGVkIGNvZGUgbGVuZ3Rocy4KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IHJlYWRDb21wbGV4SHVmZm1hbkNvZGUoaW50IGFscGhhYmV0U2l6ZUxpbWl0LCBpbnQgc2tpcCwKKyAgICAgIGludFtdIHRhYmxlR3JvdXAsIGludCB0YWJsZUlkeCwgU3RhdGUgcykgeworICAgIC8vIFRPRE86IEF2b2lkIGFsbG9jYXRpb24/CisgICAgaW50W10gY29kZUxlbmd0aHMgPSBuZXcgaW50W2FscGhhYmV0U2l6ZUxpbWl0XTsKKyAgICBpbnRbXSBjb2RlTGVuZ3RoQ29kZUxlbmd0aHMgPSBuZXcgaW50W0NPREVfTEVOR1RIX0NPREVTXTsKKyAgICBpbnQgc3BhY2UgPSAzMjsKKyAgICBpbnQgbnVtQ29kZXMgPSAwOworICAgIGZvciAoaW50IGkgPSBza2lwOyBpIDwgQ09ERV9MRU5HVEhfQ09ERVMgJiYgc3BhY2UgPiAwOyBpKyspIHsKKyAgICAgIGludCBjb2RlTGVuSWR4ID0gQ09ERV9MRU5HVEhfQ09ERV9PUkRFUltpXTsKKyAgICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgICAgaW50IHAgPSBCaXRSZWFkZXIucGVla0JpdHMocykgJiAxNTsKKyAgICAgIC8vIFRPRE86IERlbXVsdGlwbGV4IEZJWEVEX1RBQkxFLgorICAgICAgcy5iaXRPZmZzZXQgKz0gRklYRURfVEFCTEVbcF0gPj4gMTY7CisgICAgICBpbnQgdiA9IEZJWEVEX1RBQkxFW3BdICYgMHhGRkZGOworICAgICAgY29kZUxlbmd0aENvZGVMZW5ndGhzW2NvZGVMZW5JZHhdID0gdjsKKyAgICAgIGlmICh2ICE9IDApIHsKKyAgICAgICAgc3BhY2UgLT0gKDMyID4+IHYpOworICAgICAgICBudW1Db2RlcysrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoc3BhY2UgIT0gMCAmJiBudW1Db2RlcyAhPSAxKSB7CisgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiQ29ycnVwdGVkIEh1ZmZtYW4gY29kZSBoaXN0b2dyYW0iKTsgLy8gQ09WX05GX0xJTkUKKyAgICB9CisKKyAgICByZWFkSHVmZm1hbkNvZGVMZW5ndGhzKGNvZGVMZW5ndGhDb2RlTGVuZ3RocywgYWxwaGFiZXRTaXplTGltaXQsIGNvZGVMZW5ndGhzLCBzKTsKKworICAgIHJldHVybiBIdWZmbWFuLmJ1aWxkSHVmZm1hblRhYmxlKAorICAgICAgICB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgSFVGRk1BTl9UQUJMRV9CSVRTLCBjb2RlTGVuZ3RocywgYWxwaGFiZXRTaXplTGltaXQpOworICB9CisKKyAgLyoqCisgICAqIERlY29kZXMgSHVmZm1hbiB0YWJsZSBmcm9tIGJpdC1zdHJlYW0uCisgICAqCisgICAqIEByZXR1cm4gbnVtYmVyIG9mIHNsb3RzIHVzZWQgYnkgcmVzdWx0aW5nIEh1ZmZtYW4gdGFibGUKKyAgICovCisgIHByaXZhdGUgc3RhdGljIGludCByZWFkSHVmZm1hbkNvZGUoaW50IGFscGhhYmV0U2l6ZU1heCwgaW50IGFscGhhYmV0U2l6ZUxpbWl0LAorICAgICAgaW50W10gdGFibGVHcm91cCwgaW50IHRhYmxlSWR4LCBTdGF0ZSBzKSB7CisgICAgQml0UmVhZGVyLnJlYWRNb3JlSW5wdXQocyk7CisgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgaW50IHNpbXBsZUNvZGVPclNraXAgPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMik7CisgICAgaWYgKHNpbXBsZUNvZGVPclNraXAgPT0gMSkgeworICAgICAgcmV0dXJuIHJlYWRTaW1wbGVIdWZmbWFuQ29kZShhbHBoYWJldFNpemVNYXgsIGFscGhhYmV0U2l6ZUxpbWl0LCB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiByZWFkQ29tcGxleEh1ZmZtYW5Db2RlKGFscGhhYmV0U2l6ZUxpbWl0LCBzaW1wbGVDb2RlT3JTa2lwLCB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcyk7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGRlY29kZUNvbnRleHRNYXAoaW50IGNvbnRleHRNYXBTaXplLCBieXRlW10gY29udGV4dE1hcCwgU3RhdGUgcykgeworICAgIEJpdFJlYWRlci5yZWFkTW9yZUlucHV0KHMpOworICAgIGludCBudW1UcmVlcyA9IGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShzKSArIDE7CisKKyAgICBpZiAobnVtVHJlZXMgPT0gMSkgeworICAgICAgVXRpbHMuZmlsbEJ5dGVzV2l0aFplcm9lcyhjb250ZXh0TWFwLCAwLCBjb250ZXh0TWFwU2l6ZSk7CisgICAgICByZXR1cm4gbnVtVHJlZXM7CisgICAgfQorCisgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgaW50IHVzZVJsZUZvclplcm9zID0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDEpOworICAgIGludCBtYXhSdW5MZW5ndGhQcmVmaXggPSAwOworICAgIGlmICh1c2VSbGVGb3JaZXJvcyAhPSAwKSB7CisgICAgICBtYXhSdW5MZW5ndGhQcmVmaXggPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgNCkgKyAxOworICAgIH0KKyAgICBpbnQgYWxwaGFiZXRTaXplID0gbnVtVHJlZXMgKyBtYXhSdW5MZW5ndGhQcmVmaXg7CisgICAgaW50IHRhYmxlU2l6ZSA9IE1BWF9IVUZGTUFOX1RBQkxFX1NJWkVbKGFscGhhYmV0U2l6ZSArIDMxKSA+PiA1XTsKKyAgICAvKiBTcGVjdWxhdGl2ZSBzaW5nbGUgZW50cnkgdGFibGUgZ3JvdXAuICovCisgICAgaW50W10gdGFibGUgPSBuZXcgaW50W3RhYmxlU2l6ZSArIDFdOworICAgIGludCB0YWJsZUlkeCA9IHRhYmxlLmxlbmd0aCAtIDE7CisgICAgcmVhZEh1ZmZtYW5Db2RlKGFscGhhYmV0U2l6ZSwgYWxwaGFiZXRTaXplLCB0YWJsZSwgdGFibGVJZHgsIHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29udGV4dE1hcFNpemU7ICkgeworICAgICAgQml0UmVhZGVyLnJlYWRNb3JlSW5wdXQocyk7CisgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgIGludCBjb2RlID0gcmVhZFN5bWJvbCh0YWJsZSwgdGFibGVJZHgsIHMpOworICAgICAgaWYgKGNvZGUgPT0gMCkgeworICAgICAgICBjb250ZXh0TWFwW2ldID0gMDsKKyAgICAgICAgaSsrOworICAgICAgfSBlbHNlIGlmIChjb2RlIDw9IG1heFJ1bkxlbmd0aFByZWZpeCkgeworICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgaW50IHJlcHMgPSAoMSA8PCBjb2RlKSArIEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCBjb2RlKTsKKyAgICAgICAgd2hpbGUgKHJlcHMgIT0gMCkgeworICAgICAgICAgIGlmIChpID49IGNvbnRleHRNYXBTaXplKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiQ29ycnVwdGVkIGNvbnRleHQgbWFwIik7IC8vIENPVl9ORl9MSU5FCisgICAgICAgICAgfQorICAgICAgICAgIGNvbnRleHRNYXBbaV0gPSAwOworICAgICAgICAgIGkrKzsKKyAgICAgICAgICByZXBzLS07CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnRleHRNYXBbaV0gPSAoYnl0ZSkgKGNvZGUgLSBtYXhSdW5MZW5ndGhQcmVmaXgpOworICAgICAgICBpKys7CisgICAgICB9CisgICAgfQorICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgIGlmIChCaXRSZWFkZXIucmVhZEZld0JpdHMocywgMSkgPT0gMSkgeworICAgICAgaW52ZXJzZU1vdmVUb0Zyb250VHJhbnNmb3JtKGNvbnRleHRNYXAsIGNvbnRleHRNYXBTaXplKTsKKyAgICB9CisgICAgcmV0dXJuIG51bVRyZWVzOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChTdGF0ZSBzLCBpbnQgdHJlZVR5cGUsIGludCBudW1CbG9ja1R5cGVzKSB7CisgICAgZmluYWwgaW50W10gcmluZ0J1ZmZlcnMgPSBzLnJpbmdzOworICAgIGZpbmFsIGludCBvZmZzZXQgPSA0ICsgdHJlZVR5cGUgKiAyOworICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgIGludCBibG9ja1R5cGUgPSByZWFkU3ltYm9sKHMuYmxvY2tUcmVlcywgMiAqIHRyZWVUeXBlLCBzKTsKKyAgICBpbnQgcmVzdWx0ID0gcmVhZEJsb2NrTGVuZ3RoKHMuYmxvY2tUcmVlcywgMiAqIHRyZWVUeXBlICsgMSwgcyk7CisKKyAgICBpZiAoYmxvY2tUeXBlID09IDEpIHsKKyAgICAgIGJsb2NrVHlwZSA9IHJpbmdCdWZmZXJzW29mZnNldCArIDFdICsgMTsKKyAgICB9IGVsc2UgaWYgKGJsb2NrVHlwZSA9PSAwKSB7CisgICAgICBibG9ja1R5cGUgPSByaW5nQnVmZmVyc1tvZmZzZXRdOworICAgIH0gZWxzZSB7CisgICAgICBibG9ja1R5cGUgLT0gMjsKKyAgICB9CisgICAgaWYgKGJsb2NrVHlwZSA+PSBudW1CbG9ja1R5cGVzKSB7CisgICAgICBibG9ja1R5cGUgLT0gbnVtQmxvY2tUeXBlczsKKyAgICB9CisgICAgcmluZ0J1ZmZlcnNbb2Zmc2V0XSA9IHJpbmdCdWZmZXJzW29mZnNldCArIDFdOworICAgIHJpbmdCdWZmZXJzW29mZnNldCArIDFdID0gYmxvY2tUeXBlOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChTdGF0ZSBzKSB7CisgICAgcy5saXRlcmFsQmxvY2tMZW5ndGggPSBkZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgocywgMCwgcy5udW1MaXRlcmFsQmxvY2tUeXBlcyk7CisgICAgaW50IGxpdGVyYWxCbG9ja1R5cGUgPSBzLnJpbmdzWzVdOworICAgIHMuY29udGV4dE1hcFNsaWNlID0gbGl0ZXJhbEJsb2NrVHlwZSA8PCBMSVRFUkFMX0NPTlRFWFRfQklUUzsKKyAgICBzLmxpdGVyYWxUcmVlSWR4ID0gcy5jb250ZXh0TWFwW3MuY29udGV4dE1hcFNsaWNlXSAmIDB4RkY7CisgICAgaW50IGNvbnRleHRNb2RlID0gcy5jb250ZXh0TW9kZXNbbGl0ZXJhbEJsb2NrVHlwZV07CisgICAgcy5jb250ZXh0TG9va3VwT2Zmc2V0MSA9IGNvbnRleHRNb2RlIDw8IDk7CisgICAgcy5jb250ZXh0TG9va3VwT2Zmc2V0MiA9IHMuY29udGV4dExvb2t1cE9mZnNldDEgKyAyNTY7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGRlY29kZUNvbW1hbmRCbG9ja1N3aXRjaChTdGF0ZSBzKSB7CisgICAgcy5jb21tYW5kQmxvY2tMZW5ndGggPSBkZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgocywgMSwgcy5udW1Db21tYW5kQmxvY2tUeXBlcyk7CisgICAgcy5jb21tYW5kVHJlZUlkeCA9IHMucmluZ3NbN107CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGRlY29kZURpc3RhbmNlQmxvY2tTd2l0Y2goU3RhdGUgcykgeworICAgIHMuZGlzdGFuY2VCbG9ja0xlbmd0aCA9IGRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChzLCAyLCBzLm51bURpc3RhbmNlQmxvY2tUeXBlcyk7CisgICAgcy5kaXN0Q29udGV4dE1hcFNsaWNlID0gcy5yaW5nc1s5XSA8PCBESVNUQU5DRV9DT05URVhUX0JJVFM7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIG1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIoU3RhdGUgcykgeworICAgIGludCBuZXdTaXplID0gcy5tYXhSaW5nQnVmZmVyU2l6ZTsKKyAgICBpZiAobmV3U2l6ZSA+IHMuZXhwZWN0ZWRUb3RhbFNpemUpIHsKKyAgICAgIC8qIFRPRE86IEhhbmRsZSAyR0IrIGNhc2VzIG1vcmUgZ3JhY2VmdWxseS4gKi8KKyAgICAgIGludCBtaW5pbWFsTmV3U2l6ZSA9IHMuZXhwZWN0ZWRUb3RhbFNpemU7CisgICAgICB3aGlsZSAoKG5ld1NpemUgPj4gMSkgPiBtaW5pbWFsTmV3U2l6ZSkgeworICAgICAgICBuZXdTaXplID4+PSAxOworICAgICAgfQorICAgICAgaWYgKChzLmlucHV0RW5kID09IDApICYmIG5ld1NpemUgPCAxNjM4NCAmJiBzLm1heFJpbmdCdWZmZXJTaXplID49IDE2Mzg0KSB7CisgICAgICAgIG5ld1NpemUgPSAxNjM4NDsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKG5ld1NpemUgPD0gcy5yaW5nQnVmZmVyU2l6ZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgcmluZ0J1ZmZlclNpemVXaXRoU2xhY2sgPSBuZXdTaXplICsgTUFYX1RSQU5TRk9STUVEX1dPUkRfTEVOR1RIOworICAgIGJ5dGVbXSBuZXdCdWZmZXIgPSBuZXcgYnl0ZVtyaW5nQnVmZmVyU2l6ZVdpdGhTbGFja107CisgICAgaWYgKHMucmluZ0J1ZmZlci5sZW5ndGggIT0gMCkgeworICAgICAgU3lzdGVtLmFycmF5Y29weShzLnJpbmdCdWZmZXIsIDAsIG5ld0J1ZmZlciwgMCwgcy5yaW5nQnVmZmVyU2l6ZSk7CisgICAgfQorICAgIHMucmluZ0J1ZmZlciA9IG5ld0J1ZmZlcjsKKyAgICBzLnJpbmdCdWZmZXJTaXplID0gbmV3U2l6ZTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgcmVhZE5leHRNZXRhYmxvY2tIZWFkZXIoU3RhdGUgcykgeworICAgIGlmIChzLmlucHV0RW5kICE9IDApIHsKKyAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IEZJTklTSEVEOworICAgICAgcy5ydW5uaW5nU3RhdGUgPSBJTklUX1dSSVRFOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBUT0RPOiBSZXNldD8gRG8gd2UgbmVlZCB0aGlzPworICAgIHMubGl0ZXJhbFRyZWVHcm91cCA9IG5ldyBpbnRbMF07CisgICAgcy5jb21tYW5kVHJlZUdyb3VwID0gbmV3IGludFswXTsKKyAgICBzLmRpc3RhbmNlVHJlZUdyb3VwID0gbmV3IGludFswXTsKKworICAgIEJpdFJlYWRlci5yZWFkTW9yZUlucHV0KHMpOworICAgIGRlY29kZU1ldGFCbG9ja0xlbmd0aChzKTsKKyAgICBpZiAoKHMubWV0YUJsb2NrTGVuZ3RoID09IDApICYmIChzLmlzTWV0YWRhdGEgPT0gMCkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKChzLmlzVW5jb21wcmVzc2VkICE9IDApIHx8IChzLmlzTWV0YWRhdGEgIT0gMCkpIHsKKyAgICAgIEJpdFJlYWRlci5qdW1wVG9CeXRlQm91bmRhcnkocyk7CisgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IChzLmlzTWV0YWRhdGEgIT0gMCkgPyBSRUFEX01FVEFEQVRBIDogQ09QWV9VTkNPTVBSRVNTRUQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHMucnVubmluZ1N0YXRlID0gQ09NUFJFU1NFRF9CTE9DS19TVEFSVDsKKyAgICB9CisKKyAgICBpZiAocy5pc01ldGFkYXRhICE9IDApIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcy5leHBlY3RlZFRvdGFsU2l6ZSArPSBzLm1ldGFCbG9ja0xlbmd0aDsKKyAgICBpZiAocy5leHBlY3RlZFRvdGFsU2l6ZSA+IDEgPDwgMzApIHsKKyAgICAgIHMuZXhwZWN0ZWRUb3RhbFNpemUgPSAxIDw8IDMwOworICAgIH0KKyAgICBpZiAocy5yaW5nQnVmZmVyU2l6ZSA8IHMubWF4UmluZ0J1ZmZlclNpemUpIHsKKyAgICAgIG1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIocyk7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IHJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oU3RhdGUgcywgaW50IHRyZWVUeXBlLCBpbnQgbnVtQmxvY2tUeXBlcykgeworICAgIGludCBvZmZzZXQgPSBzLmJsb2NrVHJlZXNbMiAqIHRyZWVUeXBlXTsKKyAgICBpZiAobnVtQmxvY2tUeXBlcyA8PSAxKSB7CisgICAgICBzLmJsb2NrVHJlZXNbMiAqIHRyZWVUeXBlICsgMV0gPSBvZmZzZXQ7CisgICAgICBzLmJsb2NrVHJlZXNbMiAqIHRyZWVUeXBlICsgMl0gPSBvZmZzZXQ7CisgICAgICByZXR1cm4gMSA8PCAyODsKKyAgICB9CisKKyAgICBpbnQgYmxvY2tUeXBlQWxwaGFiZXRTaXplID0gbnVtQmxvY2tUeXBlcyArIDI7CisgICAgb2Zmc2V0ICs9IHJlYWRIdWZmbWFuQ29kZSgKKyAgICAgICAgYmxvY2tUeXBlQWxwaGFiZXRTaXplLCBibG9ja1R5cGVBbHBoYWJldFNpemUsIHMuYmxvY2tUcmVlcywgMiAqIHRyZWVUeXBlLCBzKTsKKyAgICBzLmJsb2NrVHJlZXNbMiAqIHRyZWVUeXBlICsgMV0gPSBvZmZzZXQ7CisKKyAgICBpbnQgYmxvY2tMZW5ndGhBbHBoYWJldFNpemUgPSBOVU1fQkxPQ0tfTEVOR1RIX0NPREVTOworICAgIG9mZnNldCArPSByZWFkSHVmZm1hbkNvZGUoCisgICAgICAgIGJsb2NrTGVuZ3RoQWxwaGFiZXRTaXplLCBibG9ja0xlbmd0aEFscGhhYmV0U2l6ZSwgcy5ibG9ja1RyZWVzLCAyICogdHJlZVR5cGUgKyAxLCBzKTsKKyAgICBzLmJsb2NrVHJlZXNbMiAqIHRyZWVUeXBlICsgMl0gPSBvZmZzZXQ7CisKKyAgICByZXR1cm4gcmVhZEJsb2NrTGVuZ3RoKHMuYmxvY2tUcmVlcywgMiAqIHRyZWVUeXBlICsgMSwgcyk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURpc3RhbmNlTHV0KFN0YXRlIHMsIGludCBhbHBoYWJldFNpemVMaW1pdCkgeworICAgIGJ5dGVbXSBkaXN0RXh0cmFCaXRzID0gcy5kaXN0RXh0cmFCaXRzOworICAgIGludFtdIGRpc3RPZmZzZXQgPSBzLmRpc3RPZmZzZXQ7CisgICAgaW50IG5wb3N0Zml4ID0gcy5kaXN0YW5jZVBvc3RmaXhCaXRzOworICAgIGludCBuZGlyZWN0ID0gcy5udW1EaXJlY3REaXN0YW5jZUNvZGVzOworICAgIGludCBwb3N0Zml4ID0gMSA8PCBucG9zdGZpeDsKKyAgICBpbnQgYml0cyA9IDE7CisgICAgaW50IGhhbGYgPSAwOworCisgICAgLyogU2tpcCBzaG9ydCBjb2Rlcy4gKi8KKyAgICBpbnQgaSA9IE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUzsKKworICAgIC8qIEZpbGwgZGlyZWN0IGNvZGVzLiAqLworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmRpcmVjdDsgKytqKSB7CisgICAgICBkaXN0RXh0cmFCaXRzW2ldID0gMDsKKyAgICAgIGRpc3RPZmZzZXRbaV0gPSBqICsgMTsKKyAgICAgICsraTsKKyAgICB9CisKKyAgICAvKiBGaWxsIHJlZ3VsYXIgZGlzdGFuY2UgY29kZXMuICovCisgICAgd2hpbGUgKGkgPCBhbHBoYWJldFNpemVMaW1pdCkgeworICAgICAgaW50IGJhc2UgPSBuZGlyZWN0ICsgKCgoKDIgKyBoYWxmKSA8PCBiaXRzKSAtIDQpIDw8IG5wb3N0Zml4KSArIDE7CisgICAgICAvKiBBbHdheXMgZmlsbCB0aGUgY29tcGxldGUgZ3JvdXAuICovCisgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHBvc3RmaXg7ICsraikgeworICAgICAgICBkaXN0RXh0cmFCaXRzW2ldID0gKGJ5dGUpIGJpdHM7CisgICAgICAgIGRpc3RPZmZzZXRbaV0gPSBiYXNlICsgajsKKyAgICAgICAgKytpOworICAgICAgfQorICAgICAgYml0cyA9IGJpdHMgKyBoYWxmOworICAgICAgaGFsZiA9IGhhbGYgXiAxOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgcmVhZE1ldGFibG9ja0h1ZmZtYW5Db2Rlc0FuZENvbnRleHRNYXBzKFN0YXRlIHMpIHsKKyAgICBzLm51bUxpdGVyYWxCbG9ja1R5cGVzID0gZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKHMpICsgMTsKKyAgICBzLmxpdGVyYWxCbG9ja0xlbmd0aCA9IHJlYWRNZXRhYmxvY2tQYXJ0aXRpb24ocywgMCwgcy5udW1MaXRlcmFsQmxvY2tUeXBlcyk7CisgICAgcy5udW1Db21tYW5kQmxvY2tUeXBlcyA9IGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShzKSArIDE7CisgICAgcy5jb21tYW5kQmxvY2tMZW5ndGggPSByZWFkTWV0YWJsb2NrUGFydGl0aW9uKHMsIDEsIHMubnVtQ29tbWFuZEJsb2NrVHlwZXMpOworICAgIHMubnVtRGlzdGFuY2VCbG9ja1R5cGVzID0gZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKHMpICsgMTsKKyAgICBzLmRpc3RhbmNlQmxvY2tMZW5ndGggPSByZWFkTWV0YWJsb2NrUGFydGl0aW9uKHMsIDIsIHMubnVtRGlzdGFuY2VCbG9ja1R5cGVzKTsKKworICAgIEJpdFJlYWRlci5yZWFkTW9yZUlucHV0KHMpOworICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgIHMuZGlzdGFuY2VQb3N0Zml4Qml0cyA9IEJpdFJlYWRlci5yZWFkRmV3Qml0cyhzLCAyKTsKKyAgICBzLm51bURpcmVjdERpc3RhbmNlQ29kZXMgPSBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgNCkgPDwgcy5kaXN0YW5jZVBvc3RmaXhCaXRzOworICAgIC8vIFRPRE86IFJldXNlPworICAgIHMuY29udGV4dE1vZGVzID0gbmV3IGJ5dGVbcy5udW1MaXRlcmFsQmxvY2tUeXBlc107CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLm51bUxpdGVyYWxCbG9ja1R5cGVzOykgeworICAgICAgLyogRW5zdXJlIHRoYXQgbGVzcyB0aGFuIDI1NiBiaXRzIHJlYWQgYmV0d2VlbiByZWFkTW9yZUlucHV0LiAqLworICAgICAgaW50IGxpbWl0ID0gTWF0aC5taW4oaSArIDk2LCBzLm51bUxpdGVyYWxCbG9ja1R5cGVzKTsKKyAgICAgIGZvciAoOyBpIDwgbGltaXQ7ICsraSkgeworICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgcy5jb250ZXh0TW9kZXNbaV0gPSAoYnl0ZSkgQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIDIpOworICAgICAgfQorICAgICAgQml0UmVhZGVyLnJlYWRNb3JlSW5wdXQocyk7CisgICAgfQorCisgICAgLy8gVE9ETzogUmV1c2U/CisgICAgcy5jb250ZXh0TWFwID0gbmV3IGJ5dGVbcy5udW1MaXRlcmFsQmxvY2tUeXBlcyA8PCBMSVRFUkFMX0NPTlRFWFRfQklUU107CisgICAgaW50IG51bUxpdGVyYWxUcmVlcyA9IGRlY29kZUNvbnRleHRNYXAocy5udW1MaXRlcmFsQmxvY2tUeXBlcyA8PCBMSVRFUkFMX0NPTlRFWFRfQklUUywKKyAgICAgICAgcy5jb250ZXh0TWFwLCBzKTsKKyAgICBzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCA9IDE7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzLm51bUxpdGVyYWxCbG9ja1R5cGVzIDw8IExJVEVSQUxfQ09OVEVYVF9CSVRTOyBqKyspIHsKKyAgICAgIGlmIChzLmNvbnRleHRNYXBbal0gIT0gaiA+PiBMSVRFUkFMX0NPTlRFWFRfQklUUykgeworICAgICAgICBzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIC8vIFRPRE86IFJldXNlPworICAgIHMuZGlzdENvbnRleHRNYXAgPSBuZXcgYnl0ZVtzLm51bURpc3RhbmNlQmxvY2tUeXBlcyA8PCBESVNUQU5DRV9DT05URVhUX0JJVFNdOworICAgIGludCBudW1EaXN0VHJlZXMgPSBkZWNvZGVDb250ZXh0TWFwKHMubnVtRGlzdGFuY2VCbG9ja1R5cGVzIDw8IERJU1RBTkNFX0NPTlRFWFRfQklUUywKKyAgICAgICAgcy5kaXN0Q29udGV4dE1hcCwgcyk7CisKKyAgICBzLmxpdGVyYWxUcmVlR3JvdXAgPSBkZWNvZGVIdWZmbWFuVHJlZUdyb3VwKE5VTV9MSVRFUkFMX0NPREVTLCBOVU1fTElURVJBTF9DT0RFUywKKyAgICAgICAgbnVtTGl0ZXJhbFRyZWVzLCBzKTsKKyAgICBzLmNvbW1hbmRUcmVlR3JvdXAgPSBkZWNvZGVIdWZmbWFuVHJlZUdyb3VwKE5VTV9DT01NQU5EX0NPREVTLCBOVU1fQ09NTUFORF9DT0RFUywKKyAgICAgICAgcy5udW1Db21tYW5kQmxvY2tUeXBlcywgcyk7CisgICAgaW50IGRpc3RhbmNlQWxwaGFiZXRTaXplTWF4ID0gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoCisgICAgICAgIHMuZGlzdGFuY2VQb3N0Zml4Qml0cywgcy5udW1EaXJlY3REaXN0YW5jZUNvZGVzLCBNQVhfRElTVEFOQ0VfQklUUyk7CisgICAgaW50IGRpc3RhbmNlQWxwaGFiZXRTaXplTGltaXQgPSBkaXN0YW5jZUFscGhhYmV0U2l6ZU1heDsKKyAgICBpZiAocy5pc0xhcmdlV2luZG93ID09IDEpIHsKKyAgICAgIGRpc3RhbmNlQWxwaGFiZXRTaXplTWF4ID0gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoCisgICAgICAgICAgcy5kaXN0YW5jZVBvc3RmaXhCaXRzLCBzLm51bURpcmVjdERpc3RhbmNlQ29kZXMsIE1BWF9MQVJHRV9XSU5ET1dfRElTVEFOQ0VfQklUUyk7CisgICAgICBkaXN0YW5jZUFscGhhYmV0U2l6ZUxpbWl0ID0gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldExpbWl0KAorICAgICAgICAgIE1BWF9BTExPV0VEX0RJU1RBTkNFLCBzLmRpc3RhbmNlUG9zdGZpeEJpdHMsIHMubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcyk7CisgICAgfQorICAgIHMuZGlzdGFuY2VUcmVlR3JvdXAgPSBkZWNvZGVIdWZmbWFuVHJlZUdyb3VwKGRpc3RhbmNlQWxwaGFiZXRTaXplTWF4LCBkaXN0YW5jZUFscGhhYmV0U2l6ZUxpbWl0LAorICAgICAgICBudW1EaXN0VHJlZXMsIHMpOworICAgIGNhbGN1bGF0ZURpc3RhbmNlTHV0KHMsIGRpc3RhbmNlQWxwaGFiZXRTaXplTGltaXQpOworCisgICAgcy5jb250ZXh0TWFwU2xpY2UgPSAwOworICAgIHMuZGlzdENvbnRleHRNYXBTbGljZSA9IDA7CisgICAgcy5jb250ZXh0TG9va3VwT2Zmc2V0MSA9IHMuY29udGV4dE1vZGVzWzBdICogNTEyOworICAgIHMuY29udGV4dExvb2t1cE9mZnNldDIgPSBzLmNvbnRleHRMb29rdXBPZmZzZXQxICsgMjU2OworICAgIHMubGl0ZXJhbFRyZWVJZHggPSAwOworICAgIHMuY29tbWFuZFRyZWVJZHggPSAwOworCisgICAgcy5yaW5nc1s0XSA9IDE7CisgICAgcy5yaW5nc1s1XSA9IDA7CisgICAgcy5yaW5nc1s2XSA9IDE7CisgICAgcy5yaW5nc1s3XSA9IDA7CisgICAgcy5yaW5nc1s4XSA9IDE7CisgICAgcy5yaW5nc1s5XSA9IDA7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGNvcHlVbmNvbXByZXNzZWREYXRhKFN0YXRlIHMpIHsKKyAgICBmaW5hbCBieXRlW10gcmluZ0J1ZmZlciA9IHMucmluZ0J1ZmZlcjsKKworICAgIC8vIENvdWxkIGhhcHBlbiBpZiBibG9jayBlbmRzIGF0IHJpbmcgYnVmZmVyIGVuZC4KKyAgICBpZiAocy5tZXRhQmxvY2tMZW5ndGggPD0gMCkgeworICAgICAgQml0UmVhZGVyLnJlbG9hZChzKTsKKyAgICAgIHMucnVubmluZ1N0YXRlID0gQkxPQ0tfU1RBUlQ7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGNodW5rTGVuZ3RoID0gTWF0aC5taW4ocy5yaW5nQnVmZmVyU2l6ZSAtIHMucG9zLCBzLm1ldGFCbG9ja0xlbmd0aCk7CisgICAgQml0UmVhZGVyLmNvcHlCeXRlcyhzLCByaW5nQnVmZmVyLCBzLnBvcywgY2h1bmtMZW5ndGgpOworICAgIHMubWV0YUJsb2NrTGVuZ3RoIC09IGNodW5rTGVuZ3RoOworICAgIHMucG9zICs9IGNodW5rTGVuZ3RoOworICAgIGlmIChzLnBvcyA9PSBzLnJpbmdCdWZmZXJTaXplKSB7CisgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IENPUFlfVU5DT01QUkVTU0VEOworICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IElOSVRfV1JJVEU7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgIEJpdFJlYWRlci5yZWxvYWQocyk7CisgICAgcy5ydW5uaW5nU3RhdGUgPSBCTE9DS19TVEFSVDsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGludCB3cml0ZVJpbmdCdWZmZXIoU3RhdGUgcykgeworICAgIGludCB0b1dyaXRlID0gTWF0aC5taW4ocy5vdXRwdXRMZW5ndGggLSBzLm91dHB1dFVzZWQsCisgICAgICAgIHMucmluZ0J1ZmZlckJ5dGVzUmVhZHkgLSBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4pOworICAgIGlmICh0b1dyaXRlICE9IDApIHsKKyAgICAgIFN5c3RlbS5hcnJheWNvcHkocy5yaW5nQnVmZmVyLCBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4sIHMub3V0cHV0LAorICAgICAgICAgIHMub3V0cHV0T2Zmc2V0ICsgcy5vdXRwdXRVc2VkLCB0b1dyaXRlKTsKKyAgICAgIHMub3V0cHV0VXNlZCArPSB0b1dyaXRlOworICAgICAgcy5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuICs9IHRvV3JpdGU7CisgICAgfQorCisgICAgaWYgKHMub3V0cHV0VXNlZCA8IHMub3V0cHV0TGVuZ3RoKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50W10gZGVjb2RlSHVmZm1hblRyZWVHcm91cChpbnQgYWxwaGFiZXRTaXplTWF4LCBpbnQgYWxwaGFiZXRTaXplTGltaXQsCisgICAgICBpbnQgbiwgU3RhdGUgcykgeworICAgIGludCBtYXhUYWJsZVNpemUgPSBNQVhfSFVGRk1BTl9UQUJMRV9TSVpFWyhhbHBoYWJldFNpemVMaW1pdCArIDMxKSA+PiA1XTsKKyAgICBpbnRbXSBncm91cCA9IG5ldyBpbnRbbiArIG4gKiBtYXhUYWJsZVNpemVdOworICAgIGludCBuZXh0ID0gbjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgZ3JvdXBbaV0gPSBuZXh0OworICAgICAgbmV4dCArPSByZWFkSHVmZm1hbkNvZGUoYWxwaGFiZXRTaXplTWF4LCBhbHBoYWJldFNpemVMaW1pdCwgZ3JvdXAsIGksIHMpOworICAgIH0KKyAgICByZXR1cm4gZ3JvdXA7CisgIH0KKworICAvLyBSZXR1cm5zIG9mZnNldCBpbiByaW5nQnVmZmVyIHRoYXQgc2hvdWxkIHRyaWdnZXIgV1JJVEUgd2hlbiBmaWxsZWQuCisgIHByaXZhdGUgc3RhdGljIGludCBjYWxjdWxhdGVGZW5jZShTdGF0ZSBzKSB7CisgICAgaW50IHJlc3VsdCA9IHMucmluZ0J1ZmZlclNpemU7CisgICAgaWYgKHMuaXNFYWdlciAhPSAwKSB7CisgICAgICByZXN1bHQgPSBNYXRoLm1pbihyZXN1bHQsIHMucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbiArIHMub3V0cHV0TGVuZ3RoIC0gcy5vdXRwdXRVc2VkKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgZG9Vc2VEaWN0aW9uYXJ5KFN0YXRlIHMsIGludCBmZW5jZSkgeworICAgIGlmIChzLmRpc3RhbmNlID4gTUFYX0FMTE9XRURfRElTVEFOQ0UpIHsKKyAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSIpOworICAgIH0KKyAgICBpbnQgYWRkcmVzcyA9IHMuZGlzdGFuY2UgLSBzLm1heERpc3RhbmNlIC0gMSAtIHMuY2RUb3RhbFNpemU7CisgICAgaWYgKGFkZHJlc3MgPCAwKSB7CisgICAgICBpbml0aWFsaXplQ29tcG91bmREaWN0aW9uYXJ5Q29weShzLCAtYWRkcmVzcyAtIDEsIHMuY29weUxlbmd0aCk7CisgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IENPUFlfRlJPTV9DT01QT1VORF9ESUNUSU9OQVJZOworICAgIH0gZWxzZSB7CisgICAgICAvLyBGb3JjZSBsYXp5IGRpY3Rpb25hcnkgaW5pdGlhbGl6YXRpb24uCisgICAgICBCeXRlQnVmZmVyIGRpY3Rpb25hcnlEYXRhID0gRGljdGlvbmFyeS5nZXREYXRhKCk7CisgICAgICBpbnQgd29yZExlbmd0aCA9IHMuY29weUxlbmd0aDsKKyAgICAgIGlmICh3b3JkTGVuZ3RoID4gRGljdGlvbmFyeS5NQVhfRElDVElPTkFSWV9XT1JEX0xFTkdUSCkgeworICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UiKTsgLy8gQ09WX05GX0xJTkUKKyAgICAgIH0KKyAgICAgIGludCBzaGlmdCA9IERpY3Rpb25hcnkuc2l6ZUJpdHNbd29yZExlbmd0aF07CisgICAgICBpZiAoc2hpZnQgPT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UiKTsgLy8gQ09WX05GX0xJTkUKKyAgICAgIH0KKyAgICAgIGludCBvZmZzZXQgPSBEaWN0aW9uYXJ5Lm9mZnNldHNbd29yZExlbmd0aF07CisgICAgICBpbnQgbWFzayA9ICgxIDw8IHNoaWZ0KSAtIDE7CisgICAgICBpbnQgd29yZElkeCA9IGFkZHJlc3MgJiBtYXNrOworICAgICAgaW50IHRyYW5zZm9ybUlkeCA9IGFkZHJlc3MgPj4+IHNoaWZ0OworICAgICAgb2Zmc2V0ICs9IHdvcmRJZHggKiB3b3JkTGVuZ3RoOworICAgICAgVHJhbnNmb3JtLlRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IFRyYW5zZm9ybS5SRkNfVFJBTlNGT1JNUzsKKyAgICAgIGlmICh0cmFuc2Zvcm1JZHggPj0gdHJhbnNmb3Jtcy5udW1UcmFuc2Zvcm1zKSB7CisgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSIpOyAvLyBDT1ZfTkZfTElORQorICAgICAgfQorICAgICAgaW50IGxlbiA9IFRyYW5zZm9ybS50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChzLnJpbmdCdWZmZXIsIHMucG9zLCBkaWN0aW9uYXJ5RGF0YSwKKyAgICAgICAgICBvZmZzZXQsIHdvcmRMZW5ndGgsIHRyYW5zZm9ybXMsIHRyYW5zZm9ybUlkeCk7CisgICAgICBzLnBvcyArPSBsZW47CisgICAgICBzLm1ldGFCbG9ja0xlbmd0aCAtPSBsZW47CisgICAgICBpZiAocy5wb3MgPj0gZmVuY2UpIHsKKyAgICAgICAgcy5uZXh0UnVubmluZ1N0YXRlID0gTUFJTl9MT09QOworICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IElOSVRfV1JJVEU7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHMucnVubmluZ1N0YXRlID0gTUFJTl9MT09QOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeShTdGF0ZSBzKSB7CisgICAgcy5jZEJsb2NrTWFwID0gbmV3IGJ5dGVbMSA8PCBDRF9CTE9DS19NQVBfQklUU107CisgICAgaW50IGJsb2NrQml0cyA9IENEX0JMT0NLX01BUF9CSVRTOworICAgIC8vIElmIHRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHRoZW4gcy5jZFRvdGFsU2l6ZSA+IDAuCisgICAgd2hpbGUgKCgocy5jZFRvdGFsU2l6ZSAtIDEpID4+PiBibG9ja0JpdHMpICE9IDApIHsKKyAgICAgIGJsb2NrQml0cysrOworICAgIH0KKyAgICBibG9ja0JpdHMgLT0gQ0RfQkxPQ0tfTUFQX0JJVFM7CisgICAgcy5jZEJsb2NrQml0cyA9IGJsb2NrQml0czsKKyAgICBpbnQgY3Vyc29yID0gMDsKKyAgICBpbnQgaW5kZXggPSAwOworICAgIHdoaWxlIChjdXJzb3IgPCBzLmNkVG90YWxTaXplKSB7CisgICAgICB3aGlsZSAocy5jZENodW5rT2Zmc2V0c1tpbmRleCArIDFdIDwgY3Vyc29yKSB7CisgICAgICAgIGluZGV4Kys7CisgICAgICB9CisgICAgICBzLmNkQmxvY2tNYXBbY3Vyc29yID4+PiBibG9ja0JpdHNdID0gKGJ5dGUpIGluZGV4OworICAgICAgY3Vyc29yICs9IDEgPDwgYmxvY2tCaXRzOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeUNvcHkoU3RhdGUgcywgaW50IGFkZHJlc3MsIGludCBsZW5ndGgpIHsKKyAgICBpZiAocy5jZEJsb2NrQml0cyA9PSAtMSkgeworICAgICAgaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeShzKTsKKyAgICB9CisgICAgaW50IGluZGV4ID0gcy5jZEJsb2NrTWFwW2FkZHJlc3MgPj4+IHMuY2RCbG9ja0JpdHNdOworICAgIHdoaWxlIChhZGRyZXNzID49IHMuY2RDaHVua09mZnNldHNbaW5kZXggKyAxXSkgeworICAgICAgaW5kZXgrKzsKKyAgICB9CisgICAgaWYgKHMuY2RUb3RhbFNpemUgPiBhZGRyZXNzICsgbGVuZ3RoKSB7CisgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UiKTsKKyAgICB9CisgICAgLyogVXBkYXRlIHRoZSByZWNlbnQgZGlzdGFuY2VzIGNhY2hlICovCisgICAgcy5kaXN0UmJJZHggPSAocy5kaXN0UmJJZHggKyAxKSAmIDB4MzsKKyAgICBzLnJpbmdzW3MuZGlzdFJiSWR4XSA9IHMuZGlzdGFuY2U7CisgICAgcy5tZXRhQmxvY2tMZW5ndGggLT0gbGVuZ3RoOworICAgIHMuY2RCckluZGV4ID0gaW5kZXg7CisgICAgcy5jZEJyT2Zmc2V0ID0gYWRkcmVzcyAtIHMuY2RDaHVua09mZnNldHNbaW5kZXhdOworICAgIHMuY2RCckxlbmd0aCA9IGxlbmd0aDsKKyAgICBzLmNkQnJDb3BpZWQgPSAwOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGNvcHlGcm9tQ29tcG91bmREaWN0aW9uYXJ5KFN0YXRlIHMsIGludCBmZW5jZSkgeworICAgIGludCBwb3MgPSBzLnBvczsKKyAgICBpbnQgb3JpZ1BvcyA9IHBvczsKKyAgICB3aGlsZSAocy5jZEJyTGVuZ3RoICE9IHMuY2RCckNvcGllZCkgeworICAgICAgaW50IHNwYWNlID0gZmVuY2UgLSBwb3M7CisgICAgICBpbnQgY2h1bmtMZW5ndGggPSBzLmNkQ2h1bmtPZmZzZXRzW3MuY2RCckluZGV4ICsgMV0gLSBzLmNkQ2h1bmtPZmZzZXRzW3MuY2RCckluZGV4XTsKKyAgICAgIGludCByZW1DaHVua0xlbmd0aCA9IGNodW5rTGVuZ3RoIC0gcy5jZEJyT2Zmc2V0OworICAgICAgaW50IGxlbmd0aCA9IHMuY2RCckxlbmd0aCAtIHMuY2RCckNvcGllZDsKKyAgICAgIGlmIChsZW5ndGggPiByZW1DaHVua0xlbmd0aCkgeworICAgICAgICBsZW5ndGggPSByZW1DaHVua0xlbmd0aDsKKyAgICAgIH0KKyAgICAgIGlmIChsZW5ndGggPiBzcGFjZSkgeworICAgICAgICBsZW5ndGggPSBzcGFjZTsKKyAgICAgIH0KKyAgICAgIFV0aWxzLmNvcHlCeXRlcygKKyAgICAgICAgICBzLnJpbmdCdWZmZXIsIHBvcywgcy5jZENodW5rc1tzLmNkQnJJbmRleF0sIHMuY2RCck9mZnNldCwgcy5jZEJyT2Zmc2V0ICsgbGVuZ3RoKTsKKyAgICAgIHBvcyArPSBsZW5ndGg7CisgICAgICBzLmNkQnJPZmZzZXQgKz0gbGVuZ3RoOworICAgICAgcy5jZEJyQ29waWVkICs9IGxlbmd0aDsKKyAgICAgIGlmIChsZW5ndGggPT0gcmVtQ2h1bmtMZW5ndGgpIHsKKyAgICAgICAgcy5jZEJySW5kZXgrKzsKKyAgICAgICAgcy5jZEJyT2Zmc2V0ID0gMDsKKyAgICAgIH0KKyAgICAgIGlmIChwb3MgPj0gZmVuY2UpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBwb3MgLSBvcmlnUG9zOworICB9CisKKyAgLyoqCisgICAqIEFjdHVhbCBkZWNvbXByZXNzIGltcGxlbWVudGF0aW9uLgorICAgKi8KKyAgc3RhdGljIHZvaWQgZGVjb21wcmVzcyhTdGF0ZSBzKSB7CisgICAgaWYgKHMucnVubmluZ1N0YXRlID09IFVOSU5JVElBTElaRUQpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkNhbid0IGRlY29tcHJlc3MgdW50aWwgaW5pdGlhbGl6ZWQiKTsKKyAgICB9CisgICAgaWYgKHMucnVubmluZ1N0YXRlID09IENMT1NFRCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ2FuJ3QgZGVjb21wcmVzcyBhZnRlciBjbG9zZSIpOworICAgIH0KKyAgICBpZiAocy5ydW5uaW5nU3RhdGUgPT0gSU5JVElBTElaRUQpIHsKKyAgICAgIGludCB3aW5kb3dCaXRzID0gZGVjb2RlV2luZG93Qml0cyhzKTsKKyAgICAgIGlmICh3aW5kb3dCaXRzID09IC0xKSB7ICAvKiBSZXNlcnZlZCBjYXNlIGZvciBmdXR1cmUgZXhwYW5zaW9uLiAqLworICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCAnd2luZG93Qml0cycgY29kZSIpOworICAgICAgfQorICAgICAgcy5tYXhSaW5nQnVmZmVyU2l6ZSA9IDEgPDwgd2luZG93Qml0czsKKyAgICAgIHMubWF4QmFja3dhcmREaXN0YW5jZSA9IHMubWF4UmluZ0J1ZmZlclNpemUgLSAxNjsKKyAgICAgIHMucnVubmluZ1N0YXRlID0gQkxPQ0tfU1RBUlQ7CisgICAgfQorCisgICAgaW50IGZlbmNlID0gY2FsY3VsYXRlRmVuY2Uocyk7CisgICAgaW50IHJpbmdCdWZmZXJNYXNrID0gcy5yaW5nQnVmZmVyU2l6ZSAtIDE7CisgICAgYnl0ZVtdIHJpbmdCdWZmZXIgPSBzLnJpbmdCdWZmZXI7CisKKyAgICB3aGlsZSAocy5ydW5uaW5nU3RhdGUgIT0gRklOSVNIRUQpIHsKKyAgICAgIC8vIFRPRE86IGV4dHJhY3QgY2FzZXMgdG8gbWV0aG9kcyBmb3IgdGhlIGJldHRlciByZWFkYWJpbGl0eS4KKyAgICAgIHN3aXRjaCAocy5ydW5uaW5nU3RhdGUpIHsKKyAgICAgICAgY2FzZSBCTE9DS19TVEFSVDoKKyAgICAgICAgICBpZiAocy5tZXRhQmxvY2tMZW5ndGggPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBtZXRhYmxvY2sgbGVuZ3RoIik7CisgICAgICAgICAgfQorICAgICAgICAgIHJlYWROZXh0TWV0YWJsb2NrSGVhZGVyKHMpOworICAgICAgICAgIC8qIFJpbmctYnVmZmVyIHdvdWxkIGJlIHJlYWxsb2NhdGVkIGhlcmUuICovCisgICAgICAgICAgZmVuY2UgPSBjYWxjdWxhdGVGZW5jZShzKTsKKyAgICAgICAgICByaW5nQnVmZmVyTWFzayA9IHMucmluZ0J1ZmZlclNpemUgLSAxOworICAgICAgICAgIHJpbmdCdWZmZXIgPSBzLnJpbmdCdWZmZXI7CisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY2FzZSBDT01QUkVTU0VEX0JMT0NLX1NUQVJUOgorICAgICAgICAgIHJlYWRNZXRhYmxvY2tIdWZmbWFuQ29kZXNBbmRDb250ZXh0TWFwcyhzKTsKKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IE1BSU5fTE9PUDsKKyAgICAgICAgICAvLyBGYWxsIHRocm91Z2gKKworICAgICAgICBjYXNlIE1BSU5fTE9PUDoKKyAgICAgICAgICBpZiAocy5tZXRhQmxvY2tMZW5ndGggPD0gMCkgeworICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSBCTE9DS19TVEFSVDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKyAgICAgICAgICBCaXRSZWFkZXIucmVhZE1vcmVJbnB1dChzKTsKKyAgICAgICAgICBpZiAocy5jb21tYW5kQmxvY2tMZW5ndGggPT0gMCkgeworICAgICAgICAgICAgZGVjb2RlQ29tbWFuZEJsb2NrU3dpdGNoKHMpOworICAgICAgICAgIH0KKyAgICAgICAgICBzLmNvbW1hbmRCbG9ja0xlbmd0aC0tOworICAgICAgICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgICAgICAgIGludCBjbWRDb2RlID0gcmVhZFN5bWJvbChzLmNvbW1hbmRUcmVlR3JvdXAsIHMuY29tbWFuZFRyZWVJZHgsIHMpIDw8IDI7CisgICAgICAgICAgc2hvcnQgaW5zZXJ0QW5kQ29weUV4dHJhQml0cyA9IENNRF9MT09LVVBbY21kQ29kZV07CisgICAgICAgICAgaW50IGluc2VydExlbmd0aE9mZnNldCA9IENNRF9MT09LVVBbY21kQ29kZSArIDFdOworICAgICAgICAgIGludCBjb3B5TGVuZ3RoT2Zmc2V0ID0gQ01EX0xPT0tVUFtjbWRDb2RlICsgMl07CisgICAgICAgICAgcy5kaXN0YW5jZUNvZGUgPSBDTURfTE9PS1VQW2NtZENvZGUgKyAzXTsKKyAgICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgZXh0cmFCaXRzID0gaW5zZXJ0QW5kQ29weUV4dHJhQml0cyAmIDB4RkY7CisgICAgICAgICAgICBzLmluc2VydExlbmd0aCA9IGluc2VydExlbmd0aE9mZnNldCArIEJpdFJlYWRlci5yZWFkQml0cyhzLCBleHRyYUJpdHMpOworICAgICAgICAgIH0KKyAgICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgZXh0cmFCaXRzID0gaW5zZXJ0QW5kQ29weUV4dHJhQml0cyA+PiA4OworICAgICAgICAgICAgcy5jb3B5TGVuZ3RoID0gY29weUxlbmd0aE9mZnNldCArIEJpdFJlYWRlci5yZWFkQml0cyhzLCBleHRyYUJpdHMpOworICAgICAgICAgIH0KKworICAgICAgICAgIHMuaiA9IDA7CisgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSBJTlNFUlRfTE9PUDsKKworICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAgICAgICBjYXNlIElOU0VSVF9MT09QOgorICAgICAgICAgIGlmIChzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAocy5qIDwgcy5pbnNlcnRMZW5ndGgpIHsKKyAgICAgICAgICAgICAgQml0UmVhZGVyLnJlYWRNb3JlSW5wdXQocyk7CisgICAgICAgICAgICAgIGlmIChzLmxpdGVyYWxCbG9ja0xlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKHMpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHMubGl0ZXJhbEJsb2NrTGVuZ3RoLS07CisgICAgICAgICAgICAgIEJpdFJlYWRlci5maWxsQml0V2luZG93KHMpOworICAgICAgICAgICAgICByaW5nQnVmZmVyW3MucG9zXSA9IChieXRlKSByZWFkU3ltYm9sKHMubGl0ZXJhbFRyZWVHcm91cCwgcy5saXRlcmFsVHJlZUlkeCwgcyk7CisgICAgICAgICAgICAgIHMucG9zKys7CisgICAgICAgICAgICAgIHMuaisrOworICAgICAgICAgICAgICBpZiAocy5wb3MgPj0gZmVuY2UpIHsKKyAgICAgICAgICAgICAgICBzLm5leHRSdW5uaW5nU3RhdGUgPSBJTlNFUlRfTE9PUDsKKyAgICAgICAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IElOSVRfV1JJVEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IHByZXZCeXRlMSA9IHJpbmdCdWZmZXJbKHMucG9zIC0gMSkgJiByaW5nQnVmZmVyTWFza10gJiAweEZGOworICAgICAgICAgICAgaW50IHByZXZCeXRlMiA9IHJpbmdCdWZmZXJbKHMucG9zIC0gMikgJiByaW5nQnVmZmVyTWFza10gJiAweEZGOworICAgICAgICAgICAgd2hpbGUgKHMuaiA8IHMuaW5zZXJ0TGVuZ3RoKSB7CisgICAgICAgICAgICAgIEJpdFJlYWRlci5yZWFkTW9yZUlucHV0KHMpOworICAgICAgICAgICAgICBpZiAocy5saXRlcmFsQmxvY2tMZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgIGRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChzKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpbnQgbGl0ZXJhbENvbnRleHQgPSBDb250ZXh0LkxPT0tVUFtzLmNvbnRleHRMb29rdXBPZmZzZXQxICsgcHJldkJ5dGUxXQorICAgICAgICAgICAgICAgICAgfCBDb250ZXh0LkxPT0tVUFtzLmNvbnRleHRMb29rdXBPZmZzZXQyICsgcHJldkJ5dGUyXTsKKyAgICAgICAgICAgICAgaW50IGxpdGVyYWxUcmVlSWR4ID0gcy5jb250ZXh0TWFwW3MuY29udGV4dE1hcFNsaWNlICsgbGl0ZXJhbENvbnRleHRdICYgMHhGRjsKKyAgICAgICAgICAgICAgcy5saXRlcmFsQmxvY2tMZW5ndGgtLTsKKyAgICAgICAgICAgICAgcHJldkJ5dGUyID0gcHJldkJ5dGUxOworICAgICAgICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgICAgICAgcHJldkJ5dGUxID0gcmVhZFN5bWJvbChzLmxpdGVyYWxUcmVlR3JvdXAsIGxpdGVyYWxUcmVlSWR4LCBzKTsKKyAgICAgICAgICAgICAgcmluZ0J1ZmZlcltzLnBvc10gPSAoYnl0ZSkgcHJldkJ5dGUxOworICAgICAgICAgICAgICBzLnBvcysrOworICAgICAgICAgICAgICBzLmorKzsKKyAgICAgICAgICAgICAgaWYgKHMucG9zID49IGZlbmNlKSB7CisgICAgICAgICAgICAgICAgcy5uZXh0UnVubmluZ1N0YXRlID0gSU5TRVJUX0xPT1A7CisgICAgICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSBJTklUX1dSSVRFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSAhPSBJTlNFUlRfTE9PUCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgfQorICAgICAgICAgIHMubWV0YUJsb2NrTGVuZ3RoIC09IHMuaW5zZXJ0TGVuZ3RoOworICAgICAgICAgIGlmIChzLm1ldGFCbG9ja0xlbmd0aCA8PSAwKSB7CisgICAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IE1BSU5fTE9PUDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKyAgICAgICAgICBpbnQgZGlzdGFuY2VDb2RlID0gcy5kaXN0YW5jZUNvZGU7CisgICAgICAgICAgaWYgKGRpc3RhbmNlQ29kZSA8IDApIHsKKyAgICAgICAgICAgIC8vIGRpc3RhbmNlQ29kZSBpbiB1bnRvdWNoZWQ7IGFzc2lnbmluZyBpdCAwIHdvbid0IGFmZmVjdCBkaXN0YW5jZSByaW5nIGJ1ZmZlciByb2xsaW5nLgorICAgICAgICAgICAgcy5kaXN0YW5jZSA9IHMucmluZ3Nbcy5kaXN0UmJJZHhdOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBCaXRSZWFkZXIucmVhZE1vcmVJbnB1dChzKTsKKyAgICAgICAgICAgIGlmIChzLmRpc3RhbmNlQmxvY2tMZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICBkZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy5kaXN0YW5jZUJsb2NrTGVuZ3RoLS07CisgICAgICAgICAgICBCaXRSZWFkZXIuZmlsbEJpdFdpbmRvdyhzKTsKKyAgICAgICAgICAgIGludCBkaXN0VHJlZUlkeCA9IHMuZGlzdENvbnRleHRNYXBbcy5kaXN0Q29udGV4dE1hcFNsaWNlICsgZGlzdGFuY2VDb2RlXSAmIDB4RkY7CisgICAgICAgICAgICBkaXN0YW5jZUNvZGUgPSByZWFkU3ltYm9sKHMuZGlzdGFuY2VUcmVlR3JvdXAsIGRpc3RUcmVlSWR4LCBzKTsKKyAgICAgICAgICAgIGlmIChkaXN0YW5jZUNvZGUgPCBOVU1fRElTVEFOQ0VfU0hPUlRfQ09ERVMpIHsKKyAgICAgICAgICAgICAgaW50IGluZGV4ID0gKHMuZGlzdFJiSWR4ICsgRElTVEFOQ0VfU0hPUlRfQ09ERV9JTkRFWF9PRkZTRVRbZGlzdGFuY2VDb2RlXSkgJiAweDM7CisgICAgICAgICAgICAgIHMuZGlzdGFuY2UgPSBzLnJpbmdzW2luZGV4XSArIERJU1RBTkNFX1NIT1JUX0NPREVfVkFMVUVfT0ZGU0VUW2Rpc3RhbmNlQ29kZV07CisgICAgICAgICAgICAgIGlmIChzLmRpc3RhbmNlIDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJOZWdhdGl2ZSBkaXN0YW5jZSIpOyAvLyBDT1ZfTkZfTElORQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBpbnQgZXh0cmFCaXRzID0gcy5kaXN0RXh0cmFCaXRzW2Rpc3RhbmNlQ29kZV07CisgICAgICAgICAgICAgIGludCBiaXRzOworICAgICAgICAgICAgICBpZiAocy5iaXRPZmZzZXQgKyBleHRyYUJpdHMgPD0gQml0UmVhZGVyLkJJVE5FU1MpIHsKKyAgICAgICAgICAgICAgICBiaXRzID0gQml0UmVhZGVyLnJlYWRGZXdCaXRzKHMsIGV4dHJhQml0cyk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgICAgICAgICAgICAgYml0cyA9IEJpdFJlYWRlci5yZWFkQml0cyhzLCBleHRyYUJpdHMpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHMuZGlzdGFuY2UgPSBzLmRpc3RPZmZzZXRbZGlzdGFuY2VDb2RlXSArIChiaXRzIDw8IHMuZGlzdGFuY2VQb3N0Zml4Qml0cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKHMubWF4RGlzdGFuY2UgIT0gcy5tYXhCYWNrd2FyZERpc3RhbmNlCisgICAgICAgICAgICAgICYmIHMucG9zIDwgcy5tYXhCYWNrd2FyZERpc3RhbmNlKSB7CisgICAgICAgICAgICBzLm1heERpc3RhbmNlID0gcy5wb3M7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHMubWF4RGlzdGFuY2UgPSBzLm1heEJhY2t3YXJkRGlzdGFuY2U7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKHMuZGlzdGFuY2UgPiBzLm1heERpc3RhbmNlKSB7CisgICAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IFVTRV9ESUNUSU9OQVJZOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKGRpc3RhbmNlQ29kZSA+IDApIHsKKyAgICAgICAgICAgIHMuZGlzdFJiSWR4ID0gKHMuZGlzdFJiSWR4ICsgMSkgJiAweDM7CisgICAgICAgICAgICBzLnJpbmdzW3MuZGlzdFJiSWR4XSA9IHMuZGlzdGFuY2U7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKHMuY29weUxlbmd0aCA+IHMubWV0YUJsb2NrTGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UiKTsgLy8gQ09WX05GX0xJTkUKKyAgICAgICAgICB9CisgICAgICAgICAgcy5qID0gMDsKKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IENPUFlfTE9PUDsKKyAgICAgICAgICAvLyBmYWxsIHRocm91Z2gKKyAgICAgICAgY2FzZSBDT1BZX0xPT1A6CisgICAgICAgICAgaW50IHNyYyA9IChzLnBvcyAtIHMuZGlzdGFuY2UpICYgcmluZ0J1ZmZlck1hc2s7CisgICAgICAgICAgaW50IGRzdCA9IHMucG9zOworICAgICAgICAgIGludCBjb3B5TGVuZ3RoID0gcy5jb3B5TGVuZ3RoIC0gcy5qOworICAgICAgICAgIGludCBzcmNFbmQgPSBzcmMgKyBjb3B5TGVuZ3RoOworICAgICAgICAgIGludCBkc3RFbmQgPSBkc3QgKyBjb3B5TGVuZ3RoOworICAgICAgICAgIGlmICgoc3JjRW5kIDwgcmluZ0J1ZmZlck1hc2spICYmIChkc3RFbmQgPCByaW5nQnVmZmVyTWFzaykpIHsKKyAgICAgICAgICAgIGlmIChjb3B5TGVuZ3RoIDwgMTIgfHwgKHNyY0VuZCA+IGRzdCAmJiBkc3RFbmQgPiBzcmMpKSB7CisgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgY29weUxlbmd0aDsgayArPSA0KSB7CisgICAgICAgICAgICAgICAgcmluZ0J1ZmZlcltkc3QrK10gPSByaW5nQnVmZmVyW3NyYysrXTsKKyAgICAgICAgICAgICAgICByaW5nQnVmZmVyW2RzdCsrXSA9IHJpbmdCdWZmZXJbc3JjKytdOworICAgICAgICAgICAgICAgIHJpbmdCdWZmZXJbZHN0KytdID0gcmluZ0J1ZmZlcltzcmMrK107CisgICAgICAgICAgICAgICAgcmluZ0J1ZmZlcltkc3QrK10gPSByaW5nQnVmZmVyW3NyYysrXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgVXRpbHMuY29weUJ5dGVzV2l0aGluKHJpbmdCdWZmZXIsIGRzdCwgc3JjLCBzcmNFbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy5qICs9IGNvcHlMZW5ndGg7CisgICAgICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aCAtPSBjb3B5TGVuZ3RoOworICAgICAgICAgICAgcy5wb3MgKz0gY29weUxlbmd0aDsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICg7IHMuaiA8IHMuY29weUxlbmd0aDspIHsKKyAgICAgICAgICAgICAgcmluZ0J1ZmZlcltzLnBvc10gPQorICAgICAgICAgICAgICAgICAgcmluZ0J1ZmZlclsocy5wb3MgLSBzLmRpc3RhbmNlKSAmIHJpbmdCdWZmZXJNYXNrXTsKKyAgICAgICAgICAgICAgcy5tZXRhQmxvY2tMZW5ndGgtLTsKKyAgICAgICAgICAgICAgcy5wb3MrKzsKKyAgICAgICAgICAgICAgcy5qKys7CisgICAgICAgICAgICAgIGlmIChzLnBvcyA+PSBmZW5jZSkgeworICAgICAgICAgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IENPUFlfTE9PUDsKKyAgICAgICAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IElOSVRfV1JJVEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHMucnVubmluZ1N0YXRlID09IENPUFlfTE9PUCkgeworICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSBNQUlOX0xPT1A7CisgICAgICAgICAgfQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNhc2UgVVNFX0RJQ1RJT05BUlk6CisgICAgICAgICAgZG9Vc2VEaWN0aW9uYXJ5KHMsIGZlbmNlKTsKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjYXNlIENPUFlfRlJPTV9DT01QT1VORF9ESUNUSU9OQVJZOgorICAgICAgICAgIHMucG9zICs9IGNvcHlGcm9tQ29tcG91bmREaWN0aW9uYXJ5KHMsIGZlbmNlKTsKKyAgICAgICAgICBpZiAocy5wb3MgPj0gZmVuY2UpIHsKKyAgICAgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IENPUFlfRlJPTV9DT01QT1VORF9ESUNUSU9OQVJZOworICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSBJTklUX1dSSVRFOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IE1BSU5fTE9PUDsKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjYXNlIFJFQURfTUVUQURBVEE6CisgICAgICAgICAgd2hpbGUgKHMubWV0YUJsb2NrTGVuZ3RoID4gMCkgeworICAgICAgICAgICAgQml0UmVhZGVyLnJlYWRNb3JlSW5wdXQocyk7CisgICAgICAgICAgICAvLyBPcHRpbWl6ZQorICAgICAgICAgICAgQml0UmVhZGVyLmZpbGxCaXRXaW5kb3cocyk7CisgICAgICAgICAgICBCaXRSZWFkZXIucmVhZEZld0JpdHMocywgOCk7CisgICAgICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aC0tOworICAgICAgICAgIH0KKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IEJMT0NLX1NUQVJUOworICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNhc2UgQ09QWV9VTkNPTVBSRVNTRUQ6CisgICAgICAgICAgY29weVVuY29tcHJlc3NlZERhdGEocyk7CisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY2FzZSBJTklUX1dSSVRFOgorICAgICAgICAgIHMucmluZ0J1ZmZlckJ5dGVzUmVhZHkgPSBNYXRoLm1pbihzLnBvcywgcy5yaW5nQnVmZmVyU2l6ZSk7CisgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSBXUklURTsKKyAgICAgICAgICAvLyBmYWxsIHRocm91Z2gKKyAgICAgICAgY2FzZSBXUklURToKKyAgICAgICAgICBpZiAod3JpdGVSaW5nQnVmZmVyKHMpID09IDApIHsKKyAgICAgICAgICAgIC8vIE91dHB1dCBidWZmZXIgaXMgZnVsbC4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHMucG9zID49IHMubWF4QmFja3dhcmREaXN0YW5jZSkgeworICAgICAgICAgICAgcy5tYXhEaXN0YW5jZSA9IHMubWF4QmFja3dhcmREaXN0YW5jZTsKKyAgICAgICAgICB9CisgICAgICAgICAgLy8gV3JhcCB0aGUgcmluZ0J1ZmZlci4KKyAgICAgICAgICBpZiAocy5wb3MgPj0gcy5yaW5nQnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgaWYgKHMucG9zID4gcy5yaW5nQnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgICBVdGlscy5jb3B5Qnl0ZXNXaXRoaW4ocmluZ0J1ZmZlciwgMCwgcy5yaW5nQnVmZmVyU2l6ZSwgcy5wb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy5wb3MgJj0gcmluZ0J1ZmZlck1hc2s7CisgICAgICAgICAgICBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4gPSAwOworICAgICAgICAgIH0KKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IHMubmV4dFJ1bm5pbmdTdGF0ZTsKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJVbmV4cGVjdGVkIHN0YXRlICIgKyBzLnJ1bm5pbmdTdGF0ZSk7CisgICAgICB9CisgICAgfQorICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSA9PSBGSU5JU0hFRCkgeworICAgICAgaWYgKHMubWV0YUJsb2NrTGVuZ3RoIDwgMCkgeworICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBtZXRhYmxvY2sgbGVuZ3RoIik7CisgICAgICB9CisgICAgICBCaXRSZWFkZXIuanVtcFRvQnl0ZUJvdW5kYXJ5KHMpOworICAgICAgQml0UmVhZGVyLmNoZWNrSGVhbHRoKHMsIDEpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGVjb2RlVGVzdC5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGVjb2RlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYzI3ODQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9EZWNvZGVUZXN0LmphdmEKQEAgLTAsMCArMSwxNjAgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRBcnJheUVxdWFsczsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuSlVuaXQ0OworCisvKioKKyAqIFRlc3RzIGZvciB7QGxpbmsgRGVjb2RlfS4KKyAqLworQFJ1bldpdGgoSlVuaXQ0LmNsYXNzKQorcHVibGljIGNsYXNzIERlY29kZVRlc3QgeworCisgIHN0YXRpYyBieXRlW10gcmVhZFVuaUJ5dGVzKFN0cmluZyB1bmlCeXRlcykgeworICAgIGJ5dGVbXSByZXN1bHQgPSBuZXcgYnl0ZVt1bmlCeXRlcy5sZW5ndGgoKV07CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKyAgICAgIHJlc3VsdFtpXSA9IChieXRlKSB1bmlCeXRlcy5jaGFyQXQoaSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBwcml2YXRlIGJ5dGVbXSBkZWNvbXByZXNzKGJ5dGVbXSBkYXRhLCBib29sZWFuIGJ5Qnl0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbNjU1MzZdOworICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGlucHV0ID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGRhdGEpOworICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBvdXRwdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgQnJvdGxpSW5wdXRTdHJlYW0gYnJvdGxpSW5wdXQgPSBuZXcgQnJvdGxpSW5wdXRTdHJlYW0oaW5wdXQpOworICAgIGlmIChieUJ5dGUpIHsKKyAgICAgIGJ5dGVbXSBvbmVCeXRlID0gbmV3IGJ5dGVbMV07CisgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpbnQgbmV4dCA9IGJyb3RsaUlucHV0LnJlYWQoKTsKKyAgICAgICAgaWYgKG5leHQgPT0gLTEpIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBvbmVCeXRlWzBdID0gKGJ5dGUpIG5leHQ7CisgICAgICAgIG91dHB1dC53cml0ZShvbmVCeXRlLCAwLCAxKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaW50IGxlbiA9IGJyb3RsaUlucHV0LnJlYWQoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTsKKyAgICAgICAgaWYgKGxlbiA8PSAwKSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0LndyaXRlKGJ1ZmZlciwgMCwgbGVuKTsKKyAgICAgIH0KKyAgICB9CisgICAgYnJvdGxpSW5wdXQuY2xvc2UoKTsKKyAgICByZXR1cm4gb3V0cHV0LnRvQnl0ZUFycmF5KCk7CisgIH0KKworICBwcml2YXRlIHZvaWQgY2hlY2tEZWNvZGVSZXNvdXJjZShTdHJpbmcgZXhwZWN0ZWQsIFN0cmluZyBjb21wcmVzc2VkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGJ5dGVbXSBleHBlY3RlZEJ5dGVzID0gcmVhZFVuaUJ5dGVzKGV4cGVjdGVkKTsKKyAgICBieXRlW10gY29tcHJlc3NlZEJ5dGVzID0gcmVhZFVuaUJ5dGVzKGNvbXByZXNzZWQpOworICAgIGJ5dGVbXSBhY3R1YWwgPSBkZWNvbXByZXNzKGNvbXByZXNzZWRCeXRlcywgZmFsc2UpOworICAgIGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkQnl0ZXMsIGFjdHVhbCk7CisgICAgYnl0ZVtdIGFjdHVhbEJ5Qnl0ZSA9IGRlY29tcHJlc3MoY29tcHJlc3NlZEJ5dGVzLCB0cnVlKTsKKyAgICBhc3NlcnRBcnJheUVxdWFscyhleHBlY3RlZEJ5dGVzLCBhY3R1YWxCeUJ5dGUpOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEVtcHR5KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBjaGVja0RlY29kZVJlc291cmNlKAorICAgICAgICAiIiwKKyAgICAgICAgIlx1MDAwNiIpOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGNoZWNrRGVjb2RlUmVzb3VyY2UoCisgICAgICAgICJYIiwKKyAgICAgICAgIlx1MDAwQlx1MDAwMFx1MDA4MFhcdTAwMDMiKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RYMTBZMTAoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGNoZWNrRGVjb2RlUmVzb3VyY2UoCisgICAgICAgICJYWFhYWFhYWFhYWVlZWVlZWVlZWSIsCisgICAgICAgICJcdTAwMUJcdTAwMTNcdTAwMDBcdTAwMDBcdTAwQTRcdTAwQjBcdTAwQjJcdTAwRUFcdTAwODFHXHUwMDAyXHUwMDhBIik7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0WDY0KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBjaGVja0RlY29kZVJlc291cmNlKAorICAgICAgICAiWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCIsCisgICAgICAgICJcdTAwMUJcdTAwM0ZcdTAwMDBcdTAwMDAkXHUwMEIwXHUwMEUyXHUwMDk5XHUwMDgwXHUwMDEyIik7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0VWtrb25vb2EoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGNoZWNrRGVjb2RlUmVzb3VyY2UoCisgICAgICAgICJ1a2tvIG5vb2EsIHVra28gbm9vYSBvbGkga3Vubm9uIG1pZXMsIGt1biBoYW4gbWVuaSBzYXVuYWFuLCAiCisgICAgICAgICsgInBpc3RpIGxhdWt1biBuYXVsYWFuLCB1a2tvIG5vb2EsIHVra28gbm9vYSBvbGkga3Vubm9uIG1pZXMuIiwKKyAgICAgICAgIlx1MDAxQnZcdTAwMDBcdTAwMDBcdTAwMTRKXHUwMEFDXHUwMDlCelx1MDBCRFx1MDBFMVx1MDA5N1x1MDA5RFx1MDA3Rlx1MDA4RVx1MDBDMlx1MDA4MiIKKyAgICAgICAgKyAiNlx1MDAwRVx1MDA5Q1x1MDBFMFx1MDA5MFx1MDAwM1x1MDBGN1x1MDA4Qlx1MDA5RThcdTAwRTZcdTAwQjZcdTAwMDBcdTAwQUJcdTAwQzNcdTAwQ0EiCisgICAgICAgICsgIlx1MDBBMFx1MDBDMlx1MDBEQWY2XHUwMERDXHUwMENEXHUwMDgwXHUwMDhELiFcdTAwRDduXHUwMEUzXHUwMEVBTFx1MDBCOFx1MDBGMFx1MDBEMiIKKyAgICAgICAgKyAiXHUwMEI4XHUwMEM3XHUwMEMycE06XHUwMEYwaX5cdTAwQTFcdTAwQjhFc1x1MDBBQlx1MDBDNFdcdTAwMUUiKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RNb25rZXkoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGNoZWNrRGVjb2RlUmVzb3VyY2UoCisgICAgICAgICJ6bnhjdm5teix4dm5tLix6eGNudi4seGNuLnosdm4uenZuLnp4Y3ZuLix6eGNuLnZuLnYsem5tLix2bnp4Lix2bnp4Yy52bi56LHZuei4sbnYueixudm16IgorICAgICAgICArICJ4Yyxudnp4Y3Zjbm0uLHZjenh2bnp4Y252bXhjLnptY252em0uLG52bWMsbnp4bWMsdm4ubW5ubXp4Yyx2bnhjbm12LHpudnp4Y25tdiwueGNudm0senhjIgorICAgICAgICArICJuenh2Lnp4LHF3ZXJ5d2V1cnFpb3dldXByb3Bxd3V0aW93ZXVwcXJpb3dldXRpb3B3ZXVyaW9wd2V1cmlvcHF3dXJpb3B1dGlvcHF3dXJpb3d1cWVyaW91IgorICAgICAgICArICJwcXdlcm9wdXdlcm9wcXd1cndldXFyaW9wdXJvcHF3dXJpb3B1cXdyaW9wdXF3ZW9wcnVpb3F3ZXVycXdldXJpb3Vxd2VvcHJ1aW91cHFpeXRpb3F0eWlvIgorICAgICAgICArICJ3dHlxcHR5cHJ5b3F3ZXV0aW9pb3F0d2VxcnVvd3FleXRpb3dxdWlvdXJvd2V0eW9xd3VwaW90d2V1cWlvcndldXFyb2lwaXR1cXdpb3Jxd3Rpb3dldXJpIgorICAgICAgICArICJvdXl0dWlvZXJ5dHVpb3dlcnl1aXRvd2V5dHVpd2V5dWl0eWVydWlydHl1cXJpcXdldXJvcHF3ZWlydWlvcXdldXJpb3F3dWVyaW9xd3l1aXR1aWVyd290IgorICAgICAgICArICJ1ZXJ5dWlvdHdleXJ0dWl3ZXJ0eWlvd2VyeXJ1ZWlvcXB0eWlvcnV5aW9wcXd0amthc2RmaGxhZmhsYXNkaGZqa2xhc2hqa2ZoYXNqa2xmaGtsYXNqZGZoIgorICAgICAgICArICJrbGFzZGhmamthbHNkaGZrbGFzZGhqa2ZsYWhzamRrZmhrbGFzZmhqa2FzZGZoYXNmamthc2RoZmtsc2RoYWxnaGhhZjtoZGtsYXNmaGprbGFzaGprbGZhIgorICAgICAgICArICJzZGhmYXNkamtsZmhzZGprbGFmc2Q7aGtsZGFkZmpqa2xhc2RoZmphc2RkZmprbGZoYWtqa2xhc2RqZmtsO2FzZGpmYXNmbGphc2RmaGprbGFzZGZoamthIgorICAgICAgICArICJnaGprYXNoZjtkamZrbGFzZGpma2xqYXNka2xmamtsYXNkamZrbGphc2Rma2xqYWtsZmoiLAorICAgICAgICAiXHUwMDFCSlx1MDAwM1x1MDAwMFx1MDA4Q1x1MDA5NG5cdTAwREVcdTAwQjRcdTAwRDdcdTAwOTZcdTAwQjF4XHUwMDg2XHUwMEYyLVx1MDBFMVx1MDAxQSIKKyAgICAgICAgKyAiXHUwMEJDXHUwMDBCXHUwMDFDXHUwMEJBXHUwMEE5XHUwMEM3XHUwMEY3XHUwMENDblx1MDBCMkI0UURcdTAwOEJOXHUwMDEzXGJcdTAwQTBcdTAwQ0RuIgorICAgICAgICArICJcdTAwRTgsXHUwMEE1U1x1MDBBMVx1MDA5Q10sXHUwMDFEI1x1MDAxQVx1MDBEMlZcdTAwQkVcdTAwREJcdTAwRUImXHUwMEJBXHUwMDAzZXxcdTAwOTZqIgorICAgICAgICArICJcdTAwQTJ2XHUwMEVDXHUwMEVGXHUwMDg3RzNcdTAwRDZcJ1x1MDAwRWNcdTAwOTVcdTAwRTJcdTAwMURcdTAwOEQsXHUwMEM1XHUwMEQxKFx1MDA5RmAiCisgICAgICAgICsgIlx1MDA5NG9cdTAwMDJcdTAwOEJcdTAwRERcdTAwQUFkXHUwMDk0LFx1MDAxRTtlfFx1MDAwN0VaXHUwMEIyXHUwMEUyXHUwMEZDSVx1MDA4MSxcdTAwOUYiCisgICAgICAgICsgIkBcdTAwQUVcdTAwRUZoXHUwMDgxXHUwMEFDXHUwMDE2elx1MDAwRlx1MDBGNTttXHUwMDFDXHUwMEI5XHUwMDFFLV9cdTAwRDVcdTAwQzhcdTAwQUZeIgorICAgICAgICArICJcdTAwODVcdTAwQUFcdTAwMDVcdTAwQkVTdVx1MDBDMlx1MDBCMFwiXHUwMDhBXHUwMDE1XHUwMEM2XHUwMEEzXHUwMEIxXHUwMEU2Qlx1MDAxNCIKKyAgICAgICAgKyAiXHUwMEY0XHUwMDg0VFNcdTAwMTlfXHUwMEJFXHUwMEMzXHUwMEYyXHUwMDFEXHUwMEQxXHUwMEI3XHUwMEU1XHUwMEREXHUwMEI2XHUwMEQ5I1x1MDBDNiIKKyAgICAgICAgKyAiXHUwMEY2XHUwMDlGXHUwMDlFXHUwMEY2TWUwXHUwMEZCXHUwMEMwcUVcdTAwMDRcdTAwQURcdTAwMDNcdTAwQjVcdTAwQkVcdTAwQzlcdTAwQ0IiCisgICAgICAgICsgIlx1MDBGRFx1MDBFMlBaRnRcdTAwMDRcclx1MDBGRiBcdTAwMDR3XHUwMEIybVwnXHUwMEJGR1x1MDBBOVx1MDA5RFx1MDAxQlx1MDA5NixiXHUwMDkwIyIKKyAgICAgICAgKyAiXHUwMDhCXHUwMEUwXHUwMEY4XHUwMDFEXHUwMENGXHUwMEFGXHUwMDFEPVx1MDBFRVx1MDA4QVx1MDBDOHUjZlx1MDBERFx1MDBERVx1MDBENm0iCisgICAgICAgICsgIlx1MDBFMypcdTAwODJcdTAwOEF4XHUwMDhBXHUwMERCXHUwMEU2IExcdTAwQjdcXGNcdTAwQkEwXHUwMEUzP1x1MDBCNlx1MDBFRVx1MDA4Q1wiIgorICAgICAgICArICJcdTAwQTIqXHUwMEIwXCJcblx1MDA5OVx1MDBGRj1iUVx1MDBFRVxiXHUwMEY2PUpcdTAwRTRcdTAwQ0NcdTAwRUZcIlx1MDA4N1x1MDAxMVx1MDBFMiIKKyAgICAgICAgKyAiXHUwMDgzKFx1MDBFNFx1MDBGNVx1MDA4RjVcdTAwMTljW1x1MDBFMVpcdTAwOTJzXHUwMEREXHUwMEExUFx1MDA5RDhcXFx1MDBFQlx1MDBCNVx1MDAwMyIKKyAgICAgICAgKyAiamRcdTAwOTBcdTAwOTRcdTAwQzhcdTAwOERcdTAwRkIvXHUwMDhBXHUwMDg2XCJcdTAwQ0NcdTAwMURcdTAwODdcdTAwRTBIXG5cdTAwOTZ3XHUwMDkwOSIKKyAgICAgICAgKyAiXHUwMEM2IyNIXHUwMEZCXHUwMDExR1ZcdTAwQ0EgXHUwMEUzQlx1MDA4MVx1MDBGN3cyXHUwMEMxXHUwMEE1XFxAIWVcdTAwMTdAKVx1MDAxN1x1MDAxNyIKKyAgICAgICAgKyAibFYyXHUwMDk4OFx1MDAwNlx1MDBEQ1x1MDA5OU0zKVx1MDBCQlx1MDAwMlx1MDBERkwmXHUwMDkzbFx1MDAxN1x1MDA4Mlx1MDA4NiBcdTAwRDciCisgICAgICAgICsgIlx1MDAwM3l9XHUwMDlBXHUwMDAwXHUwMEQ3XHUwMDg3XHUwMDAwXHUwMEU3XHUwMDBCZlx1MDBFM0xmcWdcYjJcdTAwRjlcYj5cdTAwODEzXHUwMENEIgorICAgICAgICArICJcdTAwMTdyMVx1MDBGMFx1MDBCOFx1MDA5NFJLXHUwMDkwMVx1MDA4RWhcdTAwQzFcdTAwRUZcdTAwOTBcdTAwQzlcdTAwRTVcdTAwRjJhXHRyJSIKKyAgICAgICAgKyAiXHUwMEFEXHUwMEVDXHUwMEM1Ylx1MDBDMFx1MDAwQlx1MDAxMlx1MDAwNVx1MDBGN1x1MDA5MXVcclx1MDBFRWEuLlx1MDAxOVx0XHUwMEMyXHUwMDAzIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Rm94KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBjaGVja0RlY29kZVJlc291cmNlKAorICAgICAgICAiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZyIsCisgICAgICAgICJcdTAwMUIqXHUwMDAwXHUwMDAwXHUwMDA0XHUwMDA0XHUwMEJBRjpcdTAwODVcdTAwMDNcdTAwRTlcdTAwRkFcZlx1MDA5MVx1MDAwMkhcdTAwMTEsIgorICAgICAgICArICJcdTAwRjNcdTAwOEE6XHUwMEEzVlx1MDA3Rlx1MDAxQVx1MDBBRVx1MDBCRlx1MDBBNFx1MDBBQlx1MDA4RU1cdTAwQkZcdTAwRURcdTAwRTJcdTAwMDRLIgorICAgICAgICArICJcdTAwOTFcdTAwRkZcdTAwODdcdTAwRTlcdTAwMUUiKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RVdGlscygpIHsKKyAgICBuZXcgQ29udGV4dCgpOworICAgIG5ldyBEZWNvZGUoKTsKKyAgICBuZXcgRGljdGlvbmFyeSgpOworICAgIG5ldyBIdWZmbWFuKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0RpY3Rpb25hcnkuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0RpY3Rpb25hcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDM1NzJmCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeS5qYXZhCkBAIC0wLDAgKzEsOTMgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCisvKioKKyAqIENvbGxlY3Rpb24gb2Ygc3RhdGljIGRpY3Rpb25hcnkgd29yZHMuCisgKgorICogPHA+RGljdGlvbmFyeSBjb250ZW50IGlzIGxvYWRlZCBmcm9tIGJpbmFyeSByZXNvdXJjZSB3aGVuIHtAbGluayAjZ2V0RGF0YSgpfSBpcyBleGVjdXRlZCBmb3IgdGhlCisgKiBmaXJzdCB0aW1lLiBDb25zZXF1ZW50bHksIGl0IHNhdmVzIG1lbW9yeSBhbmQgQ1BVIGluIGNhc2UgZGljdGlvbmFyeSBpcyBub3QgcmVxdWlyZWQuCisgKgorICogPHA+T25lIHBvc3NpYmxlIGRyYXdiYWNrIGlzIHRoYXQgbXVsdGlwbGUgdGhyZWFkcyB0aGF0IG5lZWQgZGljdGlvbmFyeSBkYXRhIG1heSBiZSBibG9ja2VkIChvbmx5CisgKiBvbmNlIGluIGVhY2ggY2xhc3N3b3JsZCkuIFRvIGF2b2lkIHRoaXMsIGl0IGlzIGVub3VnaCB0byBjYWxsIHtAbGluayAjZ2V0RGF0YSgpfSBwcm9hY3RpdmVseS4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERpY3Rpb25hcnkgeworICBzdGF0aWMgZmluYWwgaW50IE1JTl9ESUNUSU9OQVJZX1dPUkRfTEVOR1RIID0gNDsKKyAgc3RhdGljIGZpbmFsIGludCBNQVhfRElDVElPTkFSWV9XT1JEX0xFTkdUSCA9IDMxOworCisgIHByaXZhdGUgc3RhdGljIEJ5dGVCdWZmZXIgZGF0YTsKKyAgc3RhdGljIGZpbmFsIGludFtdIG9mZnNldHMgPSBuZXcgaW50WzMyXTsKKyAgc3RhdGljIGZpbmFsIGludFtdIHNpemVCaXRzID0gbmV3IGludFszMl07CisKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRGF0YUxvYWRlciB7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gT0s7CisKKyAgICBzdGF0aWMgeworICAgICAgYm9vbGVhbiBvayA9IHRydWU7CisgICAgICB0cnkgeworICAgICAgICBDbGFzcy5mb3JOYW1lKERpY3Rpb25hcnkuY2xhc3MuZ2V0UGFja2FnZSgpLmdldE5hbWUoKSArICIuRGljdGlvbmFyeURhdGEiKTsKKyAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSBleCkgeworICAgICAgICBvayA9IGZhbHNlOworICAgICAgfQorICAgICAgT0sgPSBvazsKKyAgICB9CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0RGF0YShCeXRlQnVmZmVyIGRhdGEsIGludFtdIHNpemVCaXRzKSB7CisgICAgaWYgKCFkYXRhLmlzRGlyZWN0KCkgfHwgIWRhdGEuaXNSZWFkT25seSgpKSB7CisgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiZGF0YSBtdXN0IGJlIGEgZGlyZWN0IHJlYWQtb25seSBieXRlIGJ1ZmZlciIpOworICAgIH0KKyAgICAvLyBUT0RPOiBpcyB0aGF0IHNvPworICAgIGlmIChzaXplQml0cy5sZW5ndGggPiBNQVhfRElDVElPTkFSWV9XT1JEX0xFTkdUSCkgeworICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgInNpemVCaXRzIGxlbmd0aCBtdXN0IGJlIGF0IG1vc3QgIiArIE1BWF9ESUNUSU9OQVJZX1dPUkRfTEVOR1RIKTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNSU5fRElDVElPTkFSWV9XT1JEX0xFTkdUSDsgKytpKSB7CisgICAgICBpZiAoc2l6ZUJpdHNbaV0gIT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiZmlyc3QgIiArIE1JTl9ESUNUSU9OQVJZX1dPUkRfTEVOR1RIICsgIiBtdXN0IGJlIDAiKTsKKyAgICAgIH0KKyAgICB9CisgICAgaW50W10gZGljdGlvbmFyeU9mZnNldHMgPSBEaWN0aW9uYXJ5Lm9mZnNldHM7CisgICAgaW50W10gZGljdGlvbmFyeVNpemVCaXRzID0gRGljdGlvbmFyeS5zaXplQml0czsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KHNpemVCaXRzLCAwLCBkaWN0aW9uYXJ5U2l6ZUJpdHMsIDAsIHNpemVCaXRzLmxlbmd0aCk7CisgICAgaW50IHBvcyA9IDA7CisgICAgaW50IGxpbWl0ID0gZGF0YS5jYXBhY2l0eSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZUJpdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgIGRpY3Rpb25hcnlPZmZzZXRzW2ldID0gcG9zOworICAgICAgaW50IGJpdHMgPSBkaWN0aW9uYXJ5U2l6ZUJpdHNbaV07CisgICAgICBpZiAoYml0cyAhPSAwKSB7CisgICAgICAgIGlmIChiaXRzID49IDMxKSB7CisgICAgICAgICAgdGhyb3cgbmV3IEJyb3RsaVJ1bnRpbWVFeGNlcHRpb24oInNpemVCaXRzIHZhbHVlcyBtdXN0IGJlIGxlc3MgdGhhbiAzMSIpOworICAgICAgICB9CisgICAgICAgIHBvcyArPSBpIDw8IGJpdHM7CisgICAgICAgIGlmIChwb3MgPD0gMCB8fCBwb3MgPiBsaW1pdCkgeworICAgICAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJzaXplQml0cyBpcyBpbmNvbnNpc3RlbnQ6IG92ZXJmbG93Iik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZm9yIChpbnQgaSA9IHNpemVCaXRzLmxlbmd0aDsgaSA8IDMyOyArK2kpIHsKKyAgICAgIGRpY3Rpb25hcnlPZmZzZXRzW2ldID0gcG9zOworICAgIH0KKyAgICBpZiAocG9zICE9IGxpbWl0KSB7CisgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigic2l6ZUJpdHMgaXMgaW5jb25zaXN0ZW50OiB1bmRlcmZsb3ciKTsKKyAgICB9CisgICAgRGljdGlvbmFyeS5kYXRhID0gZGF0YTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgQnl0ZUJ1ZmZlciBnZXREYXRhKCkgeworICAgIGlmIChkYXRhICE9IG51bGwpIHsKKyAgICAgIHJldHVybiBkYXRhOworICAgIH0KKyAgICBpZiAoIURhdGFMb2FkZXIuT0spIHsKKyAgICAgIHRocm93IG5ldyBCcm90bGlSdW50aW1lRXhjZXB0aW9uKCJicm90bGkgZGljdGlvbmFyeSBpcyBub3Qgc2V0Iik7CisgICAgfQorICAgIC8qIE1pZ2h0IGhhdmUgYmVlbiBzZXQgd2hlbiB7QGxpbmsgRGljdGlvbmFyeURhdGF9IHdhcyBsb2FkZWQuKi8KKyAgICByZXR1cm4gZGF0YTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeURhdGEuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0RpY3Rpb25hcnlEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIyODFlMwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0RpY3Rpb25hcnlEYXRhLmphdmEKQEAgLTAsMCArMSw3MSBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLmRlYzsKKworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CisKKy8qKgorICogQnVpbHQtaW4gZGljdGlvbmFyeSBkYXRhLgorICoKKyAqIFdoZW4gdGhpcyBjbGFzcyBpcyBsb2FkZWQsIGl0IHNldHMgaXRzIGRhdGE6IHtAbGluayBEaWN0aW9uYXJ5I3NldERhdGEoQnl0ZUJ1ZmZlcil9LgorICovCitmaW5hbCBjbGFzcyBEaWN0aW9uYXJ5RGF0YSB7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEQVRBMCA9ICJ0aW1lZG93bmxpZmVsZWZ0YmFja2NvZGVkYXRhc2hvd29ubHlzaXRlY2l0eW9wZW5qdXN0bGlrZWZyZWV3b3JrdGV4dHllYXJvdmVyYm9keWxvdmVmb3JtYm9va3BsYXlsaXZlbGluZWhlbHBob21lc2lkZW1vcmV3b3JkbG9uZ3RoZW12aWV3ZmluZHBhZ2VkYXlzZnVsbGhlYWR0ZXJtZWFjaGFyZWFmcm9tdHJ1ZW1hcmthYmxldXBvbmhpZ2hkYXRlbGFuZG5ld3NldmVubmV4dGNhc2Vib3RocG9zdHVzZWRtYWRlaGFuZGhlcmV3aGF0bmFtZUxpbmtibG9nc2l6ZWJhc2VoZWxkbWFrZW1haW51c2VyJykgK2hvbGRlbmRzd2l0aE5ld3NyZWFkd2VyZXNpZ250YWtlaGF2ZWdhbWVzZWVuY2FsbHBhdGh3ZWxscGx1c21lbnVmaWxtcGFydGpvaW50aGlzbGlzdGdvb2RuZWVkd2F5c3dlc3Rqb2JzbWluZGFsc29sb2dvcmljaHVzZXNsYXN0dGVhbWFybXlmb29ka2luZ3dpbGxlYXN0d2FyZGJlc3RmaXJlUGFnZWtub3dhd2F5LnBuZ21vdmV0aGFubG9hZGdpdmVzZWxmbm90ZW11Y2hmZWVkbWFueXJvY2tpY29ub25jZWxvb2toaWRlZGllZEhvbWVydWxlaG9zdGFqYXhpbmZvY2x1Ymxhd3NsZXNzaGFsZnNvbWVzdWNoem9uZTEwMCVvbmVzY2FyZVRpbWVyYWNlYmx1ZWZvdXJ3ZWVrZmFjZWhvcGVnYXZlaGFyZGxvc3R3aGVucGFya2tlcHRwYXNzc2hpcHJvb21IVE1McGxhblR5cGVkb25lc2F2ZWtlZXBmbGFnbGlua3NvbGRmaXZldG9va3JhdGV0b3duanVtcHRodXNkYXJrY2FyZGZpbGVmZWFyc3RheWtpbGx0aGF0ZmFsbGF1dG9ldmVyLmNvbXRhbGtzaG9wdm90ZWRlZXBtb2RlcmVzdHR1cm5ib3JuYmFuZGZlbGxyb3NldXJsKHNraW5yb2xlY29tZWFjdHNhZ2VzbWVldGdvbGQuanBnaXRlbXZhcnlmZWx0dGhlbnNlbmRkcm9wVmlld2NvcHkxLjBcIjwvYT5zdG9wZWxzZWxpZXN0b3VycGFjay5naWZwYXN0Y3NzP2dyYXltZWFuJmd0O3JpZGVzaG90bGF0ZXNhaWRyb2FkdmFyIGZlZWxqb2hucmlja3BvcnRmYXN0J1VBLWRlYWQ8L2I+cG9vcmJpbGx0eXBlVS5TLndvb2RtdXN0MnB4O0luZm9yYW5rd2lkZXdhbnR3YWxsbGVhZFswXTtwYXVsd2F2ZXN1cmUkKCcjd2FpdG1hc3Nhcm1zZ29lc2dhaW5sYW5ncGFpZCEtLSBsb2NrdW5pdHJvb3R3YWxrZmlybXdpZmV4bWxcInNvbmd0ZXN0MjBweGtpbmRyb3dzdG9vbGZvbnRtYWlsc2FmZXN0YXJtYXBzY29yZXJhaW5mbG93YmFieXNwYW5zYXlzNHB4OzZweDthcnRzZm9vdHJlYWx3aWtpaGVhdHN0ZXB0cmlwb3JnL2xha2V3ZWFrdG9sZEZvcm1jYXN0ZmFuc2Jhbmt2ZXJ5cnVuc2p1bHl0YXNrMXB4O2dvYWxncmV3c2xvd2VkZ2VpZD1cInNldHM1cHg7LmpzPzQwcHhpZiAoc29vbnNlYXRub25ldHViZXplcm9zZW50cmVlZGZhY3RpbnRvZ2lmdGhhcm0xOHB4Y2FtZWhpbGxib2xkem9vbXZvaWRlYXN5cmluZ2ZpbGxwZWFraW5pdGNvc3QzcHg7amFja3RhZ3NiaXRzcm9sbGVkaXRrbmV3bmVhcjwhLS1ncm93SlNPTmR1dHlOYW1lc2FsZXlvdSBsb3RzcGFpbmphenpjb2xkZXllc2Zpc2h3d3cucmlza3RhYnNwcmV2MTBweHJpc2UyNXB4Qmx1ZWRpbmczMDAsYmFsbGZvcmRlYXJud2lsZGJveC5mYWlybGFja3ZlcnNwYWlyanVuZXRlY2hpZighcGlja2V2aWwkKFwiI3dhcm1sb3JkZG9lc3B1bGwsMDAwaWRlYWRyYXdodWdlc3BvdGZ1bmRidXJuaHJlZmNlbGxrZXlzdGlja2hvdXJsb3NzZnVlbDEycHhzdWl0ZGVhbFJTU1wiYWdlZGdyZXlHRVRcImVhc2VhaW1zZ2lybGFpZHM4cHg7bmF2eWdyaWR0aXBzIzk5OXdhcnNsYWR5Y2Fycyk7IH1waHA/aGVsbHRhbGx3aG9temg6ZSovXHJcbiAxMDBoYWxsLlxuXG5BN3B4O3B1c2hjaGF0MHB4O2NyZXcqLzwvaGFzaDc1cHhmbGF0cmFyZSAmJiB0ZWxsY2FtcG9udG9sYWlkbWlzc3NraXB0ZW50ZmluZW1hbGVnZXRzcGxvdDQwMCxcclxuXHJcbmNvb2xmZWV0LnBocDxicj5lcmljbW9zdGd1aWRiZWxsZGVzY2hhaXJtYXRoYXRvbS9pbWcmIzgybHVja2NlbnQwMDA7dGlueWdvbmVodG1sc2VsbGRydWdGUkVFbm9kZW5pY2s/aWQ9bG9zZW51bGx2YXN0d2luZFJTUyB3ZWFycmVseWJlZW5zYW1lZHVrZW5hc2FjYXBld2lzaGd1bGZUMjM6aGl0c3Nsb3RnYXRla2lja2JsdXJ0aGV5MTVweCcnKTspO1wiPm1zaWV3aW5zYmlyZHNvcnRiZXRhc2Vla1QxODpvcmRzdHJlZW1hbGw2MHB4ZmFybWJcdTAwMDBcdTAwMTlzYm95c1swXS4nKTtcIlBPU1RiZWFya2lkcyk7fX1tYXJ5dGVuZChVSylxdWFkemg6Zi1zaXotLS0tcHJvcCcpO1xybGlmdFQxOTp2aWNlYW5keWRlYnQ+UlNTcG9vbG5lY2tibG93VDE2OmRvb3JldmFsVDE3OmxldHNmYWlsb3JhbHBvbGxub3ZhY29sc2dlbmUgYlx1MDAwMFx1MDAxNHNvZnRyb21ldGlsbHJvc3M8aDM+cG91cmZhZGVwaW5rPHRyPm1pbmkpfCEobWluZXpoOmhiYXJzaGVhcjAwKTttaWxrIC0tPmlyb25mcmVkZGlza3dlbnRzb2lscHV0cy9qcy9ob2x5VDIyOklTQk5UMjA6YWRhbXNlZXM8aDI+anNvbicsICdjb250VDIxOiBSU1Nsb29wYXNpYW1vb248L3A+c291bExJTkVmb3J0Y2FydFQxNDo8aDE+ODBweCEtLTw5cHg7VDA0Om1pa2U6NDZabmljZWluY2hZb3JrcmljZXpoOmQnKSk7cHVyZW1hZ2VwYXJhdG9uZWJvbmQ6MzdaX29mXyddKTswMDAsemg6Z3Rhbmt5YXJkYm93bGJ1c2g6NTZaSmF2YTMwcHhcbnx9XG4lQzMlOjM0WmplZmZFWFBJY2FzaHZpc2Fnb2xmc25vd3poOmlxdWVyLmNzc3NpY2ttZWF0bWluLmJpbmRkZWxsaGlyZXBpY3NyZW50OjM2WkhUVFAtMjAxZm90b3dvbGZFTkQgeGJveDo1NFpCT0RZZGljaztcbn1cbmV4aXQ6MzVadmFyc2JlYXQnfSk7ZGlldDk5OTthbm5lfX08L1tpXS5MYW5na21CMndpcmV0b3lzYWRkc3NlYWxhbGV4O1xuXHR9ZWNob25pbmUub3JnMDA1KXRvbnlqZXdzc2FuZGxlZ3Nyb29mMDAwKSAyMDB3aW5lZ2VhcmRvZ3Nib290Z2FyeWN1dHN0eWxldGVtcHRpb24ueG1sY29ja2dhbmckKCcuNTBweFBoLkRtaXNjYWxhbmxvYW5kZXNrbWlsZXJ5YW51bml4ZGlzYyk7fVxuZHVzdGNsaXApLlxuXG43MHB4LTIwMERWRHM3XT48dGFwZWRlbW9pKyspd2FnZWV1cm9waGlsb3B0c2hvbGVGQVFzYXNpbi0yNlRsYWJzcGV0c1VSTCBidWxrY29vazt9XHJcbkhFQURbMF0pYWJicmp1YW4oMTk4bGVzaHR3aW48L2k+c29ueWd1eXNmdWNrcGlwZXwtXG4hMDAyKW5kb3dbMV07W107XG5Mb2cgc2FsdFxyXG5cdFx0YmFuZ3RyaW1iYXRoKXtcclxuMDBweFxufSk7a286bGZlZXNhZD5ccnM6Ly8gW107dG9sbHBsdWcoKXtcbntcclxuIC5qcycyMDBwZHVhbGJvYXQuSlBHKTtcbn1xdW90KTtcblxuJyk7XG5cclxufVxyMjAxNDIwMTUyMDE2MjAxNzIwMTgyMDE5MjAyMDIwMjEyMDIyMjAyMzIwMjQyMDI1MjAyNjIwMjcyMDI4MjAyOTIwMzAyMDMxMjAzMjIwMzMyMDM0MjAzNTIwMzYyMDM3MjAxMzIwMTIyMDExMjAxMDIwMDkyMDA4MjAwNzIwMDYyMDA1MjAwNDIwMDMyMDAyMjAwMTIwMDAxOTk5MTk5ODE5OTcxOTk2MTk5NTE5OTQxOTkzMTk5MjE5OTExOTkwMTk4OTE5ODgxOTg3MTk4NjE5ODUxOTg0MTk4MzE5ODIxOTgxMTk4MDE5NzkxOTc4MTk3NzE5NzYxOTc1MTk3NDE5NzMxOTcyMTk3MTE5NzAxOTY5MTk2ODE5NjcxOTY2MTk2NTE5NjQxOTYzMTk2MjE5NjExOTYwMTk1OTE5NTgxOTU3MTk1NjE5NTUxOTU0MTk1MzE5NTIxOTUxMTk1MDEwMDAxMDI0MTM5NDAwMDA5OTk5Y29tb21DIXNlc3RlZXN0YXBlcm90b2RvaGFjZWNhZGFhQzFvYmllbmRDLWFhc0MtdmlkYWNhc29vdHJvZm9yb3NvbG9vdHJhY3VhbGRpam9zaWRvZ3JhbnRpcG90ZW1hZGViZWFsZ29xdUMpZXN0b25hZGF0cmVzcG9jb2Nhc2FiYWpvdG9kYXNpbm9hZ3VhcHVlc3Vub3NhbnRlZGljZWx1aXNlbGxhbWF5b3pvbmFhbW9ycGlzb29icmFjbGljZWxsb2Rpb3Nob3JhY2FzaVA3UDBQPVAwUD5QPFFcdTAwMDBQMFFcdTAwMDBRXHUwMDAzUVx1MDAwMlAwUD1QNVA/UD5QPlFcdTAwMDJQOFA3UD1QPlA0UD5RXHUwMDAyUD5QNlA1UD5QPVA4UVx1MDAwNVBcdTAwMURQMFA1UDVQMVFcdTAwMEJQPFFcdTAwMEJQXHUwMDEyUVx1MDAwQlFcdTAwMDFQPlAyUVx1MDAwQlAyUD5QXHUwMDFEUD5QPlAxUFx1MDAxRlA+UDtQOFA9UDhQIFAkUFx1MDAxRFA1UFx1MDAxQ1FcdTAwMEJRXHUwMDAyUVx1MDAwQlBcdTAwMUVQPVA4UDxQNFAwUFx1MDAxN1AwUFx1MDAxNFAwUFx1MDAxRFFcdTAwMDNQXHUwMDFFUDFRXHUwMDAyUDVQXHUwMDE4UDdQNVA5UD1RXHUwMDAzUDxQPFBcIlFcdTAwMEJRXHUwMDAzUDZZXHUwMDAxWVxuWCNZXHUwMDA2WVx1MDAwNVgnWVx1MDAwNVg5WVx1MDAwM1lcdTAwMDRYI1lcdTAwMDhYMVgvWVxuWCdZXHUwMDAxWVx0WVx1MDAwN1lcdTAwMDhZXHUwMDA0WVx1MDAwNVlcdTAwMDRZXHUwMDAzWCdZXHUwMDA4WVx1MDAwNFlcdTAwMDdYKFgzWCdZXHUwMDA0WCVZXHUwMDA2WVx1MDAwN1lcblgjWVxuWVx1MDAwMlgvWVx1MDAwN1lcdTAwMDRYK1lcdTAwMDVYKFlcdTAwMDdZXHUwMDA0WVx1MDAwOFlcdTAwMDRZXG5YKFlcdTAwMDRYJ1lcblgoWVx1MDAwM1g0WVxuWCdZXHUwMDA1WCNZXHUwMDA1WVx1MDAwNlgqWChZXG5ZXHUwMDA0WVx1MDAwNlgtWChZXHUwMDA3WVx1MDAwNVlcdTAwMDVYNFlcdTAwMDhYNGZpcnN0dmlkZW9saWdodHdvcmxkbWVkaWF3aGl0ZWNsb3NlYmxhY2tyaWdodHNtYWxsYm9va3NwbGFjZW11c2ljZmllbGRvcmRlcnBvaW50dmFsdWVsZXZlbHRhYmxlYm9hcmRob3VzZWdyb3Vwd29ya3N5ZWFyc3N0YXRldG9kYXl3YXRlcnN0YXJ0c3R5bGVkZWF0aHBvd2VycGhvbmVuaWdodGVycm9yaW5wdXRhYm91dHRlcm1zdGl0bGV0b29sc2V2ZW50bG9jYWx0aW1lc2xhcmdld29yZHNnYW1lc3Nob3J0c3BhY2Vmb2N1c2NsZWFybW9kZWxibG9ja2d1aWRlcmFkaW9zaGFyZXdvbWVuYWdhaW5tb25leWltYWdlbmFtZXN5b3VuZ2xpbmVzbGF0ZXJjb2xvcmdyZWVuZnJvbnQmYW1wO3dhdGNoZm9yY2VwcmljZXJ1bGVzYmVnaW5hZnRlcnZpc2l0aXNzdWVhcmVhc2JlbG93aW5kZXh0b3RhbGhvdXJzbGFiZWxwcmludHByZXNzYnVpbHRsaW5rc3NwZWVkc3R1ZHl0cmFkZWZvdW5kc2Vuc2V1bmRlcnNob3duZm9ybXNyYW5nZWFkZGVkc3RpbGxtb3ZlZHRha2VuYWJvdmVmbGFzaGZpeGVkb2Z0ZW5vdGhlcnZpZXdzY2hlY2tsZWdhbHJpdmVyaXRlbXNxdWlja3NoYXBlaHVtYW5leGlzdGdvaW5nbW92aWV0aGlyZGJhc2ljcGVhY2VzdGFnZXdpZHRobG9naW5pZGVhc3dyb3RlcGFnZXN1c2Vyc2RyaXZlc3RvcmVicmVha3NvdXRodm9pY2VzaXRlc21vbnRod2hlcmVidWlsZHdoaWNoZWFydGhmb3J1bXRocmVlc3BvcnRwYXJ0eUNsaWNrbG93ZXJsaXZlc2NsYXNzbGF5ZXJlbnRyeXN0b3J5dXNhZ2Vzb3VuZGNvdXJ0eW91ciBiaXJ0aHBvcHVwdHlwZXNhcHBseUltYWdlYmVpbmd1cHBlcm5vdGVzZXZlcnlzaG93c21lYW5zZXh0cmFtYXRjaHRyYWNra25vd25lYXJseWJlZ2Fuc3VwZXJwYXBlcm5vcnRobGVhcm5naXZlbm5hbWVkZW5kZWRUZXJtc3BhcnRzR3JvdXBicmFuZHVzaW5nd29tYW5mYWxzZXJlYWR5YXVkaW90YWtlc3doaWxlLmNvbS9saXZlZGNhc2VzZGFpbHljaGlsZGdyZWF0anVkZ2V0aG9zZXVuaXRzbmV2ZXJicm9hZGNvYXN0Y292ZXJhcHBsZWZpbGVzY3ljbGVzY2VuZXBsYW5zY2xpY2t3cml0ZXF1ZWVucGllY2VlbWFpbGZyYW1lb2xkZXJwaG90b2xpbWl0Y2FjaGVjaXZpbHNjYWxlZW50ZXJ0aGVtZXRoZXJldG91Y2hib3VuZHJveWFsYXNrZWR3aG9sZXNpbmNlc3RvY2sgbmFtZWZhaXRoaGVhcnRlbXB0eW9mZmVyc2NvcGVvd25lZG1pZ2h0YWxidW10aGlua2Jsb29kYXJyYXltYWpvcnRydXN0Y2Fub251bmlvbmNvdW50dmFsaWRzdG9uZVN0eWxlTG9naW5oYXBweW9jY3VybGVmdDpmcmVzaHF1aXRlZmlsbXNncmFkZW5lZWRzdXJiYW5maWdodGJhc2lzaG92ZXJhdXRvO3JvdXRlLmh0bWxtaXhlZGZpbmFsWW91ciBzbGlkZXRvcGljYnJvd25hbG9uZWRyYXduc3BsaXRyZWFjaFJpZ2h0ZGF0ZXNtYXJjaHF1b3RlZ29vZHNMaW5rc2RvdWJ0YXN5bmN0aHVtYmFsbG93Y2hpZWZ5b3V0aG5vdmVsMTBweDtzZXJ2ZXVudGlsaGFuZHNDaGVja1NwYWNlcXVlcnlqYW1lc2VxdWFsdHdpY2UwLDAwMFN0YXJ0cGFuZWxzb25nc3JvdW5kZWlnaHRzaGlmdHdvcnRocG9zdHNsZWFkc3dlZWtzYXZvaWR0aGVzZW1pbGVzcGxhbmVzbWFydGFscGhhcGxhbnRtYXJrc3JhdGVzcGxheXNjbGFpbXNhbGVzdGV4dHNzdGFyc3dyb25nPC9oMz50aGluZy5vcmcvbXVsdGloZWFyZFBvd2Vyc3RhbmR0b2tlbnNvbGlkKHRoaXNicmluZ3NoaXBzc3RhZmZ0cmllZGNhbGxzZnVsbHlmYWN0c2FnZW50VGhpcyAvLy0tPmFkbWluZWd5cHRFdmVudDE1cHg7RW1haWx0cnVlXCJjcm9zc3NwZW50YmxvZ3Nib3hcIj5ub3RlZGxlYXZlY2hpbmFzaXplc2d1ZXN0PC9oND5yb2JvdGhlYXZ5dHJ1ZSxzZXZlbmdyYW5kY3JpbWVzaWduc2F3YXJlZGFuY2VwaGFzZT48IS0tZW5fVVMmIzM5OzIwMHB4X25hbWVsYXRpbmVuam95YWpheC5hdGlvbnNtaXRoVS5TLiBob2xkc3BldGVyaW5kaWFuYXZcIj5jaGFpbnNjb3JlY29tZXNkb2luZ3ByaW9yU2hhcmUxOTkwc3JvbWFubGlzdHNqYXBhbmZhbGxzdHJpYWxvd25lcmFncmVlPC9oMj5hYnVzZWFsZXJ0b3BlcmFcIi0vL1djYXJkc2hpbGxzdGVhbXNQaG90b3RydXRoY2xlYW4ucGhwP3NhaW50bWV0YWxsb3Vpc21lYW50cHJvb2ZicmllZnJvd1wiPmdlbnJldHJ1Y2tsb29rc1ZhbHVlRnJhbWUubmV0Ly0tPlxuPHRyeSB7XG52YXIgbWFrZXNjb3N0c3BsYWluYWR1bHRxdWVzdHRyYWlubGFib3JoZWxwc2NhdXNlbWFnaWNtb3RvcnRoZWlyMjUwcHhsZWFzdHN0ZXBzQ291bnRjb3VsZGdsYXNzc2lkZXNmdW5kc2hvdGVsYXdhcmRtb3V0aG1vdmVzcGFyaXNnaXZlc2R1dGNodGV4YXNmcnVpdG51bGwsfHxbXTt0b3BcIj5cbjwhLS1QT1NUXCJvY2Vhbjxici8+Zmxvb3JzcGVha2RlcHRoIHNpemViYW5rc2NhdGNoY2hhcnQyMHB4O2FsaWduZGVhbHN3b3VsZDUwcHg7dXJsPVwicGFya3Ntb3VzZU1vc3QgLi4uPC9hbW9uZ2JyYWluYm9keSBub25lO2Jhc2VkY2FycnlkcmFmdHJlZmVycGFnZV9ob21lLm1ldGVyZGVsYXlkcmVhbXByb3Zlam9pbnQ8L3RyPmRydWdzPCEtLSBhcHJpbGlkZWFsYWxsZW5leGFjdGZvcnRoY29kZXNsb2dpY1ZpZXcgc2VlbXNibGFua3BvcnRzICgyMDBzYXZlZF9saW5rZ29hbHNncmFudGdyZWVraG9tZXNyaW5nc3JhdGVkMzBweDt3aG9zZXBhcnNlKCk7XCIgQmxvY2tsaW51eGpvbmVzcGl4ZWwnKTtcIj4pO2lmKC1sZWZ0ZGF2aWRob3JzZUZvY3VzcmFpc2Vib3hlc1RyYWNrZW1lbnQ8L2VtPmJhclwiPi5zcmM9dG93ZXJhbHQ9XCJjYWJsZWhlbnJ5MjRweDtzZXR1cGl0YWx5c2hhcnBtaW5vcnRhc3Rld2FudHN0aGlzLnJlc2V0d2hlZWxnaXJscy9jc3MvMTAwJTtjbHVic3N0dWZmYmlibGV2b3RlcyAxMDAwa29yZWF9KTtcclxuYmFuZHNxdWV1ZT0ge307ODBweDtja2luZ3tcclxuXHRcdGFoZWFkY2xvY2tpcmlzaGxpa2UgcmF0aW9zdGF0c0Zvcm1cInlhaG9vKVswXTtBYm91dGZpbmRzPC9oMT5kZWJ1Z3Rhc2tzVVJMID1jZWxsc30pKCk7MTJweDtwcmltZXRlbGxzdHVybnMweDYwMC5qcGdcInNwYWluYmVhY2h0YXhlc21pY3JvYW5nZWwtLT48L2dpZnRzc3RldmUtbGlua2JvZHkufSk7XG5cdG1vdW50ICgxOTlGQVE8L3JvZ2VyZnJhbmtDbGFzczI4cHg7ZmVlZHM8aDE+PHNjb3R0dGVzdHMyMnB4O2RyaW5rKSB8fCBsZXdpc3NoYWxsIzAzOTsgZm9yIGxvdmVkd2FzdGUwMHB4O2phOmNcdTAwMDJzaW1vbjxmb250cmVwbHltZWV0c3VudGVyY2hlYXB0aWdodEJyYW5kKSAhPSBkcmVzc2NsaXBzcm9vbXNvbmtleW1vYmlsbWFpbi5OYW1lIHBsYXRlZnVubnl0cmVlc2NvbS9cIjEuanBnd21vZGVwYXJhbVNUQVJUbGVmdCBpZGRlbiwgMjAxKTtcbn1cbmZvcm0udmlydXNjaGFpcnRyYW5zd29yc3RQYWdlc2l0aW9ucGF0Y2g8IS0tXG5vLWNhY2Zpcm1zdG91cnMsMDAwIGFzaWFuaSsrKXthZG9iZScpWzBdaWQ9MTBib3RoO21lbnUgLjIubWkucG5nXCJrZXZpbmNvYWNoQ2hpbGRicnVjZTIuanBnVVJMKSsuanBnfHN1aXRlc2xpY2VoYXJyeTEyMFwiIHN3ZWV0dHI+XHJcbm5hbWU9ZGllZ29wYWdlIHN3aXNzLS0+XG5cbiNmZmY7XCI+TG9nLmNvbVwidHJlYXRzaGVldCkgJiYgMTRweDtzbGVlcG50ZW50ZmlsZWRqYTpjXHUwMDAzaWQ9XCJjTmFtZVwid29yc2VzaG90cy1ib3gtZGVsdGFcbiZsdDtiZWFyczo0OFo8ZGF0YS1ydXJhbDwvYT4gc3BlbmRiYWtlcnNob3BzPSBcIlwiO3BocFwiPmN0aW9uMTNweDticmlhbmhlbGxvc2l6ZT1vPSUyRiBqb2lubWF5YmU8aW1nIGltZ1wiPiwgZmpzaW1nXCIgXCIpWzBdTVRvcEJUeXBlXCJuZXdseURhbnNrY3plY2h0cmFpbGtub3dzPC9oNT5mYXFcIj56aC1jbjEwKTtcbi0xXCIpO3R5cGU9Ymx1ZXN0cnVseWRhdmlzLmpzJzs+XHJcbjwhc3RlZWwgeW91IGgyPlxyXG5mb3JtIGplc3VzMTAwJSBtZW51LlxyXG5cdFxyXG53YWxlc3Jpc2tzdW1lbnRkZGluZ2ItbGlrdGVhY2hnaWZcIiB2ZWdhc2RhbnNrZWVzdGlzaHFpcHN1b21pc29icmVkZXNkZWVudHJldG9kb3NwdWVkZWFDMW9zZXN0QyF0aWVuZWhhc3Rhb3Ryb3NwYXJ0ZWRvbmRlbnVldm9oYWNlcmZvcm1hbWlzbW9tZWpvcm11bmRvYXF1Qy1kQy1hc3NDM2xvYXl1ZGFmZWNoYXRvZGFzdGFudG9tZW5vc2RhdG9zb3RyYXNzaXRpb211Y2hvYWhvcmFsdWdhcm1heW9yZXN0b3Nob3Jhc3RlbmVyYW50ZXNmb3Rvc2VzdGFzcGFDLXNudWV2YXNhbHVkZm9yb3NtZWRpb3F1aWVubWVzZXNwb2RlcmNoaWxlc2VyQyF2ZWNlc2RlY2lyam9zQyllc3RhcnZlbnRhZ3J1cG9oZWNob2VsbG9zdGVuZ29hbWlnb2Nvc2Fzbml2ZWxnZW50ZW1pc21hYWlyZXNqdWxpb3RlbWFzaGFjaWFmYXZvcmp1bmlvbGlicmVwdW50b2J1ZW5vYXV0b3JhYnJpbGJ1ZW5hdGV4dG9tYXJ6b3NhYmVybGlzdGFsdWVnb2NDM21vZW5lcm9qdWVnb3BlckM6aGFiZXJlc3RveW51bmNhbXVqZXJ2YWxvcmZ1ZXJhbGlicm9ndXN0YWlndWFsdm90b3NjYXNvc2d1Qy1hcHVlZG9zb21vc2F2aXNvdXN0ZWRkZWJlbm5vY2hlYnVzY2FmYWx0YWV1cm9zc2VyaWVkaWNob2N1cnNvY2xhdmVjYXNhc2xlQzNucGxhem9sYXJnb29icmFzdmlzdGFhcG95b2p1bnRvdHJhdGF2aXN0b2NyZWFyY2FtcG9oZW1vc2NpbmNvY2FyZ29waXNvc29yZGVuaGFjZW5DIXJlYWRpc2NvcGVkcm9jZXJjYXB1ZWRhcGFwZWxtZW5vckM6dGlsY2xhcm9qb3JnZWNhbGxlcG9uZXJ0YXJkZW5hZGllbWFyY2FzaWd1ZWVsbGFzc2lnbG9jb2NoZW1vdG9zbWFkcmVjbGFzZXJlc3RvbmlDMW9xdWVkYXBhc2FyYmFuY29oaWpvc3ZpYWplcGFibG9DKXN0ZXZpZW5lcmVpbm9kZWphcmZvbmRvY2FuYWxub3J0ZWxldHJhY2F1c2F0b21hcm1hbm9zbHVuZXNhdXRvc3ZpbGxhdmVuZG9wZXNhcnRpcG9zdGVuZ2FtYXJjb2xsZXZhcGFkcmV1bmlkb3ZhbW9zem9uYXNhbWJvc2JhbmRhbWFyaWFhYnVzb211Y2hhc3ViaXJyaW9qYXZpdmlyZ3JhZG9jaGljYWFsbEMtam92ZW5kaWNoYWVzdGFudGFsZXNzYWxpcnN1ZWxvcGVzb3NmaW5lc2xsYW1hYnVzY29DKXN0YWxsZWdhbmVncm9wbGF6YWh1bW9ycGFnYXJqdW50YWRvYmxlaXNsYXNib2xzYWJhQzFvaGFibGFsdWNoYUNcdTAwMDFyZWFkaWNlbmp1Z2Fybm90YXN2YWxsZWFsbEMhY2FyZ2Fkb2xvcmFiYWpvZXN0QylndXN0b21lbnRlbWFyaW9maXJtYWNvc3RvZmljaGFwbGF0YWhvZ2FyYXJ0ZXNsZXllc2FxdWVsbXVzZW9iYXNlc3BvY29zbWl0YWRjaWVsb2NoaWNvbWllZG9nYW5hcnNhbnRvZXRhcGFkZWJlc3BsYXlhcmVkZXNzaWV0ZWNvcnRlY29yZWFkdWRhc2Rlc2Vvdmllam9kZXNlYWFndWFzJnF1b3Q7ZG9tYWluY29tbW9uc3RhdHVzZXZlbnRzbWFzdGVyc3lzdGVtYWN0aW9uYmFubmVycmVtb3Zlc2Nyb2xsdXBkYXRlZ2xvYmFsbWVkaXVtZmlsdGVybnVtYmVyY2hhbmdlcmVzdWx0cHVibGljc2NyZWVuY2hvb3Nlbm9ybWFsdHJhdmVsaXNzdWVzc291cmNldGFyZ2V0c3ByaW5nbW9kdWxlbW9iaWxlc3dpdGNocGhvdG9zYm9yZGVycmVnaW9uaXRzZWxmc29jaWFsYWN0aXZlY29sdW1ucmVjb3JkZm9sbG93dGl0bGU+ZWl0aGVybGVuZ3RoZmFtaWx5ZnJpZW5kbGF5b3V0YXV0aG9yY3JlYXRlcmV2aWV3c3VtbWVyc2VydmVycGxheWVkcGxheWVyZXhwYW5kcG9saWN5Zm9ybWF0ZG91YmxlcG9pbnRzc2VyaWVzcGVyc29ubGl2aW5nZGVzaWdubW9udGhzZm9yY2VzdW5pcXVld2VpZ2h0cGVvcGxlZW5lcmd5bmF0dXJlc2VhcmNoZmlndXJlaGF2aW5nY3VzdG9tb2Zmc2V0bGV0dGVyd2luZG93c3VibWl0cmVuZGVyZ3JvdXBzdXBsb2FkaGVhbHRobWV0aG9kdmlkZW9zc2Nob29sZnV0dXJlc2hhZG93ZGViYXRldmFsdWVzT2JqZWN0b3RoZXJzcmlnaHRzbGVhZ3VlY2hyb21lc2ltcGxlbm90aWNlc2hhcmVkZW5kaW5nc2Vhc29ucmVwb3J0b25saW5lc3F1YXJlYnV0dG9uaW1hZ2VzZW5hYmxlbW92aW5nbGF0ZXN0d2ludGVyRnJhbmNlcGVyaW9kc3Ryb25ncmVwZWF0TG9uZG9uZGV0YWlsZm9ybWVkZGVtYW5kc2VjdXJlcGFzc2VkdG9nZ2xlcGxhY2VzZGV2aWNlc3RhdGljY2l0aWVzc3RyZWFteWVsbG93YXR0YWNrc3RyZWV0ZmxpZ2h0aGlkZGVuaW5mb1wiPm9wZW5lZHVzZWZ1bHZhbGxleWNhdXNlc2xlYWRlcnNlY3JldHNlY29uZGRhbWFnZXNwb3J0c2V4Y2VwdHJhdGluZ3NpZ25lZHRoaW5nc2VmZmVjdGZpZWxkc3N0YXRlc29mZmljZXZpc3VhbGVkaXRvcnZvbHVtZVJlcG9ydG11c2V1bW1vdmllc3BhcmVudGFjY2Vzc21vc3RseW1vdGhlclwiIGlkPVwibWFya2V0Z3JvdW5kY2hhbmNlc3VydmV5YmVmb3Jlc3ltYm9sbW9tZW50c3BlZWNobW90aW9uaW5zaWRlbWF0dGVyQ2VudGVyb2JqZWN0ZXhpc3RzbWlkZGxlRXVyb3BlZ3Jvd3RobGVnYWN5bWFubmVyZW5vdWdoY2FyZWVyYW5zd2Vyb3JpZ2lucG9ydGFsY2xpZW50c2VsZWN0cmFuZG9tY2xvc2VkdG9waWNzY29taW5nZmF0aGVyb3B0aW9uc2ltcGx5cmFpc2VkZXNjYXBlY2hvc2VuY2h1cmNoZGVmaW5lcmVhc29uY29ybmVyb3V0cHV0bWVtb3J5aWZyYW1lcG9saWNlbW9kZWxzTnVtYmVyZHVyaW5nb2ZmZXJzc3R5bGVza2lsbGVkbGlzdGVkY2FsbGVkc2lsdmVybWFyZ2luZGVsZXRlYmV0dGVyYnJvd3NlbGltaXRzR2xvYmFsc2luZ2xld2lkZ2V0Y2VudGVyYnVkZ2V0bm93cmFwY3JlZGl0Y2xhaW1zZW5naW5lc2FmZXR5Y2hvaWNlc3Bpcml0LXN0eWxlc3ByZWFkbWFraW5nbmVlZGVkcnVzc2lhcGxlYXNlZXh0ZW50U2NyaXB0YnJva2VuYWxsb3dzY2hhcmdlZGl2aWRlZmFjdG9ybWVtYmVyLWJhc2VkdGhlb3J5Y29uZmlnYXJvdW5kd29ya2VkaGVscGVkQ2h1cmNoaW1wYWN0c2hvdWxkYWx3YXlzbG9nb1wiIGJvdHRvbWxpc3RcIj4pe3ZhciBwcmVmaXhvcmFuZ2VIZWFkZXIucHVzaChjb3VwbGVnYXJkZW5icmlkZ2VsYXVuY2hSZXZpZXd0YWtpbmd2aXNpb25saXR0bGVkYXRpbmdCdXR0b25iZWF1dHl0aGVtZXNmb3Jnb3RTZWFyY2hhbmNob3JhbG1vc3Rsb2FkZWRDaGFuZ2VyZXR1cm5zdHJpbmdyZWxvYWRNb2JpbGVpbmNvbWVzdXBwbHlTb3VyY2VvcmRlcnN2aWV3ZWQmbmJzcDtjb3Vyc2VBYm91dCBpc2xhbmQ8aHRtbCBjb29raWVuYW1lPVwiYW1hem9ubW9kZXJuYWR2aWNlaW48L2E+OiBUaGUgZGlhbG9naG91c2VzQkVHSU4gTWV4aWNvc3RhcnRzY2VudHJlaGVpZ2h0YWRkaW5nSXNsYW5kYXNzZXRzRW1waXJlU2Nob29sZWZmb3J0ZGlyZWN0bmVhcmx5bWFudWFsU2VsZWN0LlxuXG5PbmVqb2luZWRtZW51XCI+UGhpbGlwYXdhcmRzaGFuZGxlaW1wb3J0T2ZmaWNlcmVnYXJkc2tpbGxzbmF0aW9uU3BvcnRzZGVncmVld2Vla2x5IChlLmcuYmVoaW5kZG9jdG9ybG9nZ2VkdW5pdGVkPC9iPjwvYmVnaW5zcGxhbnRzYXNzaXN0YXJ0aXN0aXNzdWVkMzAwcHh8Y2FuYWRhYWdlbmN5c2NoZW1lcmVtYWluQnJhemlsc2FtcGxlbG9nb1wiPmJleW9uZC1zY2FsZWFjY2VwdHNlcnZlZG1hcmluZUZvb3RlcmNhbWVyYTwvaDE+XG5fZm9ybVwibGVhdmVzc3RyZXNzXCIgLz5cclxuLmdpZlwiIG9ubG9hZGxvYWRlck94Zm9yZHNpc3RlcnN1cnZpdmxpc3RlbmZlbWFsZURlc2lnbnNpemU9XCJhcHBlYWx0ZXh0XCI+bGV2ZWxzdGhhbmtzaGlnaGVyZm9yY2VkYW5pbWFsYW55b25lQWZyaWNhYWdyZWVkcmVjZW50UGVvcGxlPGJyIC8+d29uZGVycHJpY2VzdHVybmVkfHwge307bWFpblwiPmlubGluZXN1bmRheXdyYXBcIj5mYWlsZWRjZW5zdXNtaW51dGViZWFjb25xdW90ZXMxNTBweHxlc3RhdGVyZW1vdGVlbWFpbFwibGlua2VkcmlnaHQ7c2lnbmFsZm9ybWFsMS5odG1sc2lnbnVwcHJpbmNlZmxvYXQ6LnBuZ1wiIGZvcnVtLkFjY2Vzc3BhcGVyc3NvdW5kc2V4dGVuZEhlaWdodHNsaWRlclVURi04XCImYW1wOyBCZWZvcmUuIFdpdGhzdHVkaW9vd25lcnNtYW5hZ2Vwcm9maXRqUXVlcnlhbm51YWxwYXJhbXNib3VnaHRmYW1vdXNnb29nbGVsb25nZXJpKyspIHtpc3JhZWxzYXlpbmdkZWNpZGVob21lXCI+aGVhZGVyZW5zdXJlYnJhbmNocGllY2VzYmxvY2s7c3RhdGVkdG9wXCI+PHJhY2luZ3Jlc2l6ZS0tJmd0O3BhY2l0eXNleHVhbGJ1cmVhdS5qcGdcIiAxMCwwMDBvYnRhaW50aXRsZXNhbW91bnQsIEluYy5jb21lZHltZW51XCIgbHlyaWNzdG9kYXkuaW5kZWVkY291bnR5X2xvZ28uRmFtaWx5bG9va2VkTWFya2V0bHNlIGlmUGxheWVydHVya2V5KTt2YXIgZm9yZXN0Z2l2aW5nZXJyb3JzRG9tYWlufWVsc2V7aW5zZXJ0QmxvZzwvZm9vdGVybG9naW4uZmFzdGVyYWdlbnRzPGJvZHkgMTBweCAwcHJhZ21hZnJpZGF5anVuaW9yZG9sbGFycGxhY2VkY292ZXJzcGx1Z2luNSwwMDAgcGFnZVwiPmJvc3Rvbi50ZXN0KGF2YXRhcnRlc3RlZF9jb3VudGZvcnVtc3NjaGVtYWluZGV4LGZpbGxlZHNoYXJlc3JlYWRlcmFsZXJ0KGFwcGVhclN1Ym1pdGxpbmVcIj5ib2R5XCI+XG4qIFRoZVRob3VnaHNlZWluZ2plcnNleU5ld3M8L3ZlcmlmeWV4cGVydGluanVyeXdpZHRoPUNvb2tpZVNUQVJUIGFjcm9zc19pbWFnZXRocmVhZG5hdGl2ZXBvY2tldGJveFwiPlxuU3lzdGVtIERhdmlkY2FuY2VydGFibGVzcHJvdmVkQXByaWwgcmVhbGx5ZHJpdmVyaXRlbVwiPm1vcmVcIj5ib2FyZHNjb2xvcnNjYW1wdXNmaXJzdCB8fCBbXTttZWRpYS5ndWl0YXJmaW5pc2h3aWR0aDpzaG93ZWRPdGhlciAucGhwXCIgYXNzdW1lbGF5ZXJzd2lsc29uc3RvcmVzcmVsaWVmc3dlZGVuQ3VzdG9tZWFzaWx5IHlvdXIgU3RyaW5nXG5cbldoaWx0YXlsb3JjbGVhcjpyZXNvcnRmcmVuY2h0aG91Z2hcIikgKyBcIjxib2R5PmJ1eWluZ2JyYW5kc01lbWJlcm5hbWVcIj5vcHBpbmdzZWN0b3I1cHg7XCI+dnNwYWNlcG9zdGVybWFqb3IgY29mZmVlbWFydGlubWF0dXJlaGFwcGVuPC9uYXY+a2Fuc2FzbGlua1wiPkltYWdlcz1mYWxzZXdoaWxlIGhzcGFjZTAmYW1wOyBcblxuSW4gIHBvd2VyUG9sc2tpLWNvbG9yam9yZGFuQm90dG9tU3RhcnQgLWNvdW50Mi5odG1sbmV3c1wiPjAxLmpwZ09ubGluZS1yaWdodG1pbGxlcnNlbmlvcklTQk4gMDAsMDAwIGd1aWRlc3ZhbHVlKWVjdGlvbnJlcGFpci54bWxcIiAgcmlnaHRzLmh0bWwtYmxvY2tyZWdFeHA6aG92ZXJ3aXRoaW52aXJnaW5waG9uZXM8L3RyPlxydXNpbmcgXG5cdHZhciA+Jyk7XG5cdDwvdGQ+XG48L3RyPlxuYmFoYXNhYnJhc2lsZ2FsZWdvbWFneWFycG9sc2tpc3Jwc2tpWDFYL1lcdTAwMDhkOC1mXHUwMDE2XHUwMDA3Zy5cdTAwMDBkPVx1MDAxM2c5XHUwMDAxaStcdTAwMTRkPyFmXHUwMDAxL2Q4LWVcdTAwMUI9Zlx1MDAwOFx1MDAxMWQ7LGQ4XHUwMDAwZDgqZVx1MDAwNSxlXHUwMDBGOGcuIWdcdTAwMTBcdTAwMDZoLjplXHUwMDFEXHUwMDFCZVx1MDAwRi9kOyVmXHUwMDFDXHJlXG4hZlx1MDAxNzZpXHUwMDE3NGQ4KmQ6OmQ6J2VcdTAwMTNcdTAwMDFoXHUwMDA3KmU3MWQ8XHUwMDAxZDhcdTAwMUFmXHUwMDFGJWdcdTAwMUNcdTAwMEJlNyVkPVx1MDAxQ2hcdTAwMDFcdTAwMTRnMztmMiFmXHUwMDFDXHRnPVx1MDAxMWcrXHUwMDE5Zlx0XHUwMDAwZlx1MDAxQ1x0aC9cdTAwMDRoLjpkOC1lP1x1MDAwM2ZcdTAwMTZcdTAwMDdnKyBnXHUwMDE0KGZcdTAwMDg3aSZcdTAwMTZpITVkPVx1MDAxQ2hcdTAwMDBcdTAwMDVmXG5cdTAwMDBmXHUwMDFDL2lcdTAwMTcuaVwiXHUwMDE4Z1x1MDAxQjhlXHUwMDA1M2Q4XHUwMDBCaD09Zlx1MDAxMFx1MDAxQ2c0XCJkPT9nXHUwMDE0KGg9L2Q7NmVcdTAwMUMoZzo/ZDg7aVwiXHUwMDE4aDVcdTAwMDRmXHUwMDE2XHUwMDE5aCdcdTAwMDZpXCJcdTAwMTFlXHUwMDFCXHUwMDFFZSRccmYzKGVcdTAwMDZcdTAwMENnPVx1MDAxMWc7XHUwMDFDZlx1MDAxNDZoXHUwMDE3XHUwMDBGZVx1MDAwNlx1MDAwNWUuOWZcdTAwMEUoaFxyXHUwMDEwZThcdTAwMDJlXHUwMDFDOmY2XHUwMDA4Zlx1MDAwMS9nKTppXHUwMDE3NGVcdTAwMEZcdTAwMTFlOFx1MDAwM2Q7XHUwMDAwZDlcdTAwMDhlJT1lXHUwMDBGXHUwMDBCZ1x1MDAxNFx1MDAxRmY0O2VcdTAwMUI+Z1x0XHUwMDA3ZVx1MDAwRlx1MDAxMWUxXHUwMDE1ZSZcdTAwMDJmXHUwMDFFXHUwMDFDZlx0XHUwMDBCZlx1MDAxQzpmXHUwMDE2MGlcdTAwMTc7Zlx1MDAxQ1x1MDAwMGZcdTAwMTYwZlx1MDAxNjllPFx1MDAwRmVcdTAwMENcdTAwMTdkOixmXHUwMDBGXHUwMDEwZD5cdTAwMUJlXHUwMDA1M2Q6XHUwMDBFZlx1MDAxQjRlJFx1MDAxQWg/XHUwMDE5ZDgqZzM7ZztcdTAwMUZnXHUwMDFGJWlcdTAwMDFcdTAwMTNmODhmXHUwMDA4XHUwMDBGZTk/ZVx1MDAxMVxuZVx1MDAwNTZkO1x1MDAxNmVcdTAwMEZcdTAwMTFoIShlLlx0ZVx1MDAwNShnLCxkOFx1MDAwMGQ8XHUwMDFBZVx1MDAxMVx1MDAxOGg/XHUwMDFCaCFcdTAwMENnXHUwMDAyOWVcdTAwMDc7Z1x0XHUwMDA4Zlx1MDAxRFx1MDAwM2dcdTAwMTQ1ZS1cdTAwMTBkOFx1MDAxNmdcdTAwMTVcdTAwMENoLj5oLiFlXHUwMDA1XHJoNDlmXHUwMDE1XHUwMDE5aFx1MDAwMjJlXG4gZVx1MDAwNSVmNDtlXG4oZDtcdTAwMTZkOyxlXHUwMDE1XHUwMDA2ZVx1MDAxM1x1MDAwMWVcclx1MDAxQWUuXCJnXHUwMDBFMGVcdTAwMUMoZDhcbmY1N2UmXHUwMDAyZD1cdTAwMTVlNzJnO1x1MDAwRmdcdTAwMTVcdTAwMTloKFx1MDAwMGgvJmc7XHUwMDA2ZyQ+ZVx1MDAwQzpnXHUwMDE5O2U9XHUwMDE1Zlx1MDAxQyxnK1x1MDAxOWlcdTAwMUNcdTAwMDBoJlx1MDAwMWQ7N2YgPGZcdTAwMTQvZlx1MDAwQ1x1MDAwMWVcdTAwMUI9aVx1MDAxOVx1MDAwNWlcdTAwMTM+Zlx1MDAwRSVlXHUwMDFCPWUuNmU7OmguPmZcdTAwMUNcdTAwMEJlXHUwMDBGXHUwMDBCaVx1MDAxOFx1MDAwNWgvO2YzXHUwMDE1ZT5cdTAwMEJkPVxyZz0uZztcdTAwMEZmNVx1MDAwRWlcdTAwMDBcdGZcdTAwMEIpaD9cdTAwMTlmIDdlPVx1MDAxM2VcdFxyZVx1MDAwOFx1MDAwNmcxO2ZcdTAwMEVcdTAwMTJoIVx1MDAwQ2VcdTAwMUIgZDg6ZDokZlx1MDAxOFx1MDAxM2ZcdTAwMUNcdTAwMDBlXHUwMDEwXHUwMDBFaVx1MDAxRjNkOVx1MDAxMGQ4XHJoXHUwMDAzPWlcdTAwMDBcdTAwMUFoP1x1MDAwN2ghXHUwMDBDZDhcdTAwMUFnJ1x1MDAxMWZcblx1MDAwMGVcdTAwMEYvaFx1MDAwMz1oLj5lJFx1MDAwN2VcdTAwMTBcdTAwMDhkPVx1MDAxQ2UkJ2UuNmckPmQ8XHUwMDFBZyBcdTAwMTRnKTZkOFx1MDAxM2Q4XHUwMDFBZVx1MDAwNShpXHUwMDAzKGkhOWdcdTAwMUIuaD9cdTAwMTlpXHUwMDA3XHUwMDBDaD9cdTAwMThmXHUwMDE4L2U8XHUwMDAwZSdcdTAwMEJmXHUwMDAzXHUwMDA1ZVx1MDAwNjVnXHUwMDE0NWhcdTAwMDRcdTAwMTFmXHUwMDE2XHUwMDA3ZDs2ZVx1MDAxM1x1MDAwMWdcdFx1MDAwQ2U4LmVcbilmXHUwMDE2XHUwMDA3ZVx1MDAwQ1x1MDAxNmg1XHUwMDA0ZjpcdTAwMTBlJCdlLSZlLSZkOSBlXHUwMDFDMGVcdTAwMURcdTAwMDBmNVx1MDAwRmgnXHUwMDA4ZlxuXHUwMDE1aDVcdTAwMDRlNyVnKFx1MDAwQmgmXHUwMDAxZjFcdTAwMDJmXHUwMDAwXHUwMDBFZDlcdTAwMDhmXHUwMDE3NmVcdTAwMDBcdTAwMTllXG5cdTAwMUZoXHUwMDAzPWQ4O2gmXHUwMDAxZ1x1MDAxQi5lXHRccmg1XHUwMDA0aC4vZVx1MDAxRlx1MDAwRWU4XHUwMDAyZlx1MDAxNjlmM1x1MDAxNWdcdTAwMTQ1ZT0xZlx1MDAwQlx1MDAxQmhcdTAwMDFcdTAwMThlIzBmXHUwMDE4XHUwMDBFZDs7ZD1cdTAwMTVlXHUwMDAxJWU6N2ZcdTAwMTUwZlxyLmc+XHUwMDBFZVx1MDAxQj1mMT1oPSZkO1x1MDAwQmc7XHJkPVx1MDAwNmZcdTAwMTgvZDokZjVcdTAwMDFnXHUwMDE0XHUwMDFGZDonZlx0XHUwMDAwZDslZ1x1MDAxNDVoL1x1MDAxRGZcdTAwMTg+ZyQ6ZDhcdTAwMDBkOlx1MDAxQmVcclx1MDAxNWQ9XHJkOjplXHUwMDExXHUwMDE4ZVx1MDAwOFx1MDAwNmZcdTAwMUVcdTAwMTBlXHUwMDFDMGVcdTAwMUI+Zlx1MDAxN1x1MDAwNWY4OGU3JWVcdTAwMDU3ZS0mZ1x1MDAxNFx1MDAxRmczO2VcdTAwMDhcdTAwMTdnPVx1MDAxMWVcdTAwMEZcdTAwMEJlOFx1MDAxNmUtXHUwMDEwZS9cdTAwMDZnIFx1MDAwMWlcIlx1MDAxMWlcdTAwMDFcdTAwMTNmXHUwMDBFJ2VcdTAwMDg2ZVx1MDAxQzBlXHUwMDBDOmVcdTAwMUY6Zlx1MDAxQyxlXHUwMDA1KGVcdTAwMUI9Zz1cdTAwMTFkOFxuaVx1MDAwN1xyaCZcdTAwMDFnLCxkOlx1MDAwQ2VcdTAwMTZcdTAwMUNmLFwiaD9cdTAwMUJlXHUwMDA1JWVcdTAwMEZcdTAwMEJmXHUwMDAzXHUwMDA1aD9cdTAwMTlkOlx1MDAxQmhcdTAwMDBcdTAwMDNoL1x1MDAxNWVcdTAwMEZcdTAwMTFnXHUwMDBFMGVcdTAwMUY5aC4tZDslZDhcbmZcdTAwMTQ/ZTpcdTAwMUNmXHUwMDA4XHUwMDEwZDg6Z1x1MDAwRS9lXCJcdTAwMDNpJlx1MDAxOWY4L2VcdTAwMTBcdTAwMENmXHUwMDE3NmUoMWQ5XHUwMDEwZVx1MDAwRlx1MDAxMWlcdTAwMDBcdTAwMDFkOFx1MDAwMGUuXHUwMDFBZTxcdTAwMDBlXHUwMDBGXHUwMDExZD1cdTAwMUNlXHUwMDEzXHUwMDAxZiBcdTAwMDdlXHUwMDA3XHUwMDA2ZixcImg/XHUwMDBFaCcjZVx1MDAwNjNlXHUwMDFDMGZcdTAwMTY5ZDhcdTAwMDBkOFx1MDAwQmQ7JWVcdTAwMEZcbmg0I2Q7O2ZcdTAwMDhcdTAwMTZoXHUwMDAwXHUwMDA1ZS5cImZcdTAwMDg3ZDsjaCEoZycvZVx1MDAwOFx1MDAwNmUlM2Q6OmZcdTAwMTUwZyBcdTAwMDFpXHUwMDE0XHUwMDAwZVx1MDAxNC5lXHUwMDA3OmdcdTAwMEUwZyY7Zzo/ZTpcdTAwMTRnXHUwMDE0KGVcdTAwMDhcdTAwMTdoIShkOFxyZVx1MDAxMFx1MDAwQ2c8XHUwMDE2aD5cdTAwMTFnO1x1MDAxRmguIWZcdTAwMUYlaC9cImQ4XHJoJlx1MDAwMWZcdTAwMUNcdGVcdTAwMDUzZlx1MDAxQzpmXHUwMDFFXHUwMDA0ZT5cdTAwMDhlJFx1MDAxQWZcdTAwMTItZlx1MDAxND5nO1x1MDAwNGc7XHUwMDA3Zlx1MDAxND9nLVx1MDAxNmdcdTAwMUI0Zlx1MDAwRSVoXHUwMDAzPWVcblx1MDAxQmZcdTAwMUQlZjpcdTAwMTBmXHUwMDE5XHUwMDAyaVx1MDAxNlx1MDAxM2dcdTAwMUNcdTAwMEJlXHUwMDA4MGdcdTAwMDMtaVx1MDAxNyhlXHUwMDA1M2lcdTAwMTQuZDhcdTAwMTNlXHUwMDBDOmlcdTAwMURcdTAwMUVlODhoXHUwMDBCMWgvLWdcdTAwMTk+ZTomZThcdTAwMENmXHUwMDFDXHUwMDFCZz5cdTAwMEVlJTNmL1x1MDAxNGg+XHUwMDAzZ1x1MDAxRiVoL1x1MDAwNmgnXHUwMDA0ZS5cdTAwMUFlOzpoLi5pXHUwMDAzKGlcdTAwMTcoZlx1MDAwNFx1MDAwRmgnXHUwMDAxZzI+ZT0pZlx1MDAxNyVmXHUwMDFDLGZcdTAwMEZcdTAwMTBpK1x1MDAxOGVcdTAwMEZcdTAwMTFoKFx1MDAwMGZcdTAwMTY5aVx1MDAxRFwiZVx1MDAxRjppXHUwMDA3XHUwMDExZSRcdTAwMDRnXHUwMDEwXHUwMDA2Zlx1MDAxRFx1MDAwM2lcdTAwMTlcdTAwMTBlPTFnXHRcdTAwMDdpXHUwMDEzNmghXHUwMDBDaD9cdTAwMThmXHUwMDFDXHRlXHUwMDA4XHUwMDA2ZDorZ1x0KWVcdTAwMTNcdTAwMDFnO1x1MDAwRmhcdTAwMTAlZjc7ZVxuIGQ4XHUwMDEzZS42aD9cdTAwMTlnJ1xyaC9cdTAwMURpXCJcdTAwMThoNTdmXHUwMDFEJWQ4XHUwMDFBZVxuIWVcdTAwMDUsZVx1MDAxMVxuaC4wZT1cdTAwMTVnLlx1MDAwMGQ7XHUwMDBCaDQoaVx1MDAwN1x1MDAwRmdcdTAwMTQ3ZDo6ZT0xZVx1MDAxM1xyZTxcdTAwMTVnXHUwMDE0KGZcbiVlXHUwMDExXG5pXHUwMDAzKGVcdTAwMDhcdTAwMDZlPytpXHUwMDAwXHUwMDFGZVx1MDAxMihoL1wiZlx1MDAxNzZlMFx1MDAxQWYzKGZcdTAwMDRcdTAwMEZnXHUwMDE0M2gvN2UtJmYgIWU6XHUwMDE0aC8lZVx1MDAwRVx1MDAwNmVcdTAwMEYyZVx1MDAwRipmXHUwMDE4L2g/XHUwMDE0ZVx1MDAxQlx1MDAxRWg0LWQ5MGVcdTAwMTBccmcnMGQ4OmQ6XHUwMDA2Zlx1MDAwOFx1MDAxMGVcblx1MDAxRmgvNGZcdTAwMThcdTAwMEVkPlx1MDAxQmU6XHUwMDE0ZS0pZS1cdTAwMTBkOFx1MDAxM2lcIlx1MDAxOGcoXHUwMDBCZTpcdTAwMEZkOFx1MDAwMGhcdTAwMDgsZlx1MDAxQ1x1MDAwM2VcdTAwMTMhZVx1MDAwRipmXHUwMDFDXHRlXHUwMDA1NmUuXHUwMDAzZD9cdTAwMURmXG4kaFx1MDAwMFx1MDAwQ2Q4XHUwMDE0ZDtcbmUkKWcqXHUwMDE3ZVx1MDAwRiNlXG4oZlx1MDAwMFx1MDAwMWdcbjZmXHUwMDAwXHUwMDAxZ1x0OWVcdTAwMDgraC4kZDg6ZT9cdTAwMDVpITtmXHUwMDFCNGZcdTAwMTYwZTBcdTAwMEZoLzRmXHUwMDA4XHUwMDExZVx1MDAwMFx1MDAxMWQ9XHUwMDFDZDg6ZSpcdTAwMTJkPVx1MDAxM2VcdTAwMENcdTAwMDVmXHUwMDBCLGlcdTAwMDIjZDlcdTAwMDhkOFx1MDAwMGYgN2VcdTAwMUI9ZVx1MDAwNlx1MDAwNWZcdTAwMTgvZVx1MDAxMCZmIDlmXHIuZ1x1MDAxNDVoJ1x1MDAwNmUtJmlcdTAwMTlcImVcdTAwMDU3Zlx1MDAxQ1x0aD9cdTAwMDdnKFx1MDAwQmdcdTAwMTQxZDpcdTAwMEVkOjpmXHRccmVcdTAwMDc6Zlx1MDAxRCVkOFxyaD9cdTAwMDdmLSNlXHUwMDFDKGZcdTAwMThcdTAwMEVmXHUwMDE4XHUwMDFGZlx1MDAxNVx1MDAwNWQ6XHUwMDBCZVx1MDAwNTNnMztmIFx1MDAwN2lcIlx1MDAxOGVcdTAwMTVcdTAwMDZlXG4haD5cdTAwMTNlXHUwMDA1JWQ4XHUwMDAwZ1x1MDAxQjRlXHUwMDFGOmchXHUwMDAwZlx1MDAxNVx1MDAxOWUtJmQ6XHUwMDA2aCcjZTs6Zy1cdTAwMTFnO1x1MDAxM2ZcdTAwMUVcdTAwMUNlXHUwMDA1KGdcdTAwMTBcdTAwMDNpXHUwMDAwXHUwMDFBZ1x1MDAxRiVoLiFlXHUwMDA4XHUwMDEyZS85ZDpcdTAwMEVoXHQ6Zlx1MDAxQy9nXHUwMDFCOGVcdTAwMDZcdTAwMENlXHUwMDBGXHUwMDExZ1x1MDAxNFx1MDAxRmdcdTAwMUNcdTAwMUZnXHUwMDFBXHUwMDA0ZTs6ZytcdTAwMEJnLVx0ZzonZzE7ZVx1MDAxRVx1MDAwQmc7XHUwMDBGaSpcdTAwMENlLlx1MDAxRWdcdTAwMEUwZVx1MDAwODZkPVx1MDAxQ2ZcdTAwMUQlaFx1MDAwNypmIFx1MDAwN2ctPmQ7JWQ4XHUwMDBCZVx1MDAwRVx1MDAxRmVcdTAwMDhcdTAwMUJmXHUwMDE3IGYzXHUwMDE1ZVx1MDAwNTZkOC1lXHUwMDAwXHUwMDBCZDo6ZDhcdTAwMDBlXHUwMDA4XHUwMDA3Zlx1MDAwQ1x1MDAwN2Vcclx1MDAxN2VcdTAwMDUzaVx1MDAxNy1pXHUwMDFCXHUwMDA2ZVx1MDAxQlwiZywsZDhcdGVcdTAwMDUzZjMoZVx1MDAxQiBmLSRnXHUwMDA1J2dcdFx1MDAwN2Y3MWVcdTAwMUMzZVx1MDAxNVx1MDAwNmQ4XHUwMDFBZTk/ZTdcdTAwMUVmXHUwMDE3JWZcdTAwMUNcdTAwMUZpK1x1MDAxOGc6J2ZcdTAwMUNcdTAwMDBoP1x1MDAxMWc7PGVcdTAwMTBcdTAwMDhoIShnJDpkOFx1MDAxM2g+XHUwMDExaCFcdTAwMENkODpkOiRpXHUwMDAwXHUwMDFBaC9cdTAwMDRkOzdoJ1x0ZT5cdTAwMTdnMj5lXHJcdTAwMEVlLjZlOi1lLlx1MDAwQ2ZcdTAwMDhcdTAwMTBmXHUwMDA0XHUwMDFGaCdcdGUuXHRoI1x1MDAwNWU+XHUwMDE3ZVx1MDAwODBpXHUwMDAyLmQ7NmVcdTAwMDg2ZTomaSNcdTAwMUZlXHUwMDEzXHUwMDAxaFx1MDAxOT1nXHUwMDA0Nmg9LGg9PWZcbiVkOzdoLjBoXHUwMDAwXHUwMDA1Zlx1MDAxNjlmIVx1MDAwOGghXHUwMDBDZlx1MDAxND9kOjpmMFx1MDAxMWdcdTAwMTQoZVx1MDAxM1x1MDAwMWQ4XHUwMDFDaCU/Zlx1MDAwRlx1MDAxMGVcdTAwMDc6aVx1MDAwNVx1MDAxMmU6XHUwMDE3Z1x1MDAwNDZlXHUwMDEwXHUwMDBFZDtcdTAwMThmLD5nXHUwMDAzLWdcdTAwMDI5ZDslZVx0XHJlLlx1MDAwQ2VcdTAwMDUoZVx1MDAwRlx1MDAxMWU4XHUwMDE2aC4+Zz0uaVwiXHUwMDA2ZS88ZTclZDhcdTAwMUFlXHUwMDBDO2lcdTAwMTlcImdcdTAwMUNcdTAwMEJnXHUwMDFDXHUwMDBCZztcdTAwMEZlXHUwMDA1OGVcdTAwMEVcdTAwMUZlXHUwMDFCIGU5M2VcdTAwMEYwZVx1MDAxMFx1MDAwNGcnXHJlXCJcdTAwMUVlXG4gZlx1MDAxRFx1MDAxMGZcdTAwMTZcdTAwMTlmXHUwMDE2MGVcIlx1MDAxRWQ5XHUwMDBCZVx1MDAxMFx1MDAwRWhcdTAwMDFcdTAwMENkOFx1MDAxQWZcdTAwMTVcdTAwMDhmXHUwMDFFXHUwMDFDZDtcbmU5NGguOmZcdTAwMTZcdTAwMDdmXHUwMDA4XHUwMDExZVx1MDAxQj1lXHUwMDExXG5oL1x0Z1x0XHUwMDA4ZDg7ZD8uZlx1MDAxNDllXHUwMDBGXHUwMDAyZDhcdTAwMEVmXHRcdTAwMTNlXHIwZT8rZDlcdTAwMTBmXHUwMDFDOmZcIjBoJ1x1MDAwMmdcdTAwMDI5ZS1cdTAwMThlXHUwMDFDKGcyPmclXHUwMDFFaFx1MDAwRTdlPlx1MDAxN2VcdTAwMDgpZ1x1MDAxNChnOydnOy1kPSBkOyxoP1x1MDAxOWQ5XHUwMDA4ZighZTxcdTAwMEZoLy1oKFx1MDAwMGhcdTAwMDM9ZSRcdTAwMUZpXHUwMDFCXHUwMDA1aFx1MDAxOVx1MDAwRWZcdTAwMTNccmQ9XHUwMDFDaSNcdTAwMEVmIDxkOFx1MDAwMGg1N2cnXHUwMDExZS0mZD1cdTAwMTNoXHUwMDAyMmdcdTAwMUYtZD8hZlx1MDAxRCFkOzZmMjtnXHUwMDE2XHUwMDE3aD9cdTAwMTBlXG4oZDonZDhcdTAwMUFkPFx1MDAxQWguLmUvPGhcdTAwMDgqZVx1MDAwNVx1MDAwOGdcdTAwMTRcdTAwMUZoXHUwMDAxXHUwMDE0Z1x1MDAxQlx1MDAxRmVcdTAwMEYvZlx1MDAxOC9lXHUwMDE1XHUwMDBGaSFcdTAwMENnO1x1MDAxM2ZcdTAwMUVcdTAwMDRkPVx1MDAxQ2dcdTAwMTQoaDBcdTAwMDNmXHUwMDFGJWgzXHUwMDA3Zlx1MDAxNlx1MDAxOWhcdTAwMDcqZVxuKGg0XHUwMDFGaDQjZVx1MDAwNlx1MDAxQ2Q4XHUwMDFBaC4/aVx1MDAxNy5lLlx1MDAxRWZcdTAwMTY9Zlx1MDAwRSVlXHUwMDBGXHUwMDE3aC4oaC46aVx1MDAwMiNkOCplXHUwMDBGXHJpJlx1MDAwOGVcbiBlPDplJTNmXHUwMDAwJ2hcdTAwMENcdTAwMDNlXHUwMDFCNGZcdTAwMUNccmVcdTAwMEJcdTAwMTlkPFx1MDAxMWlcdTAwMTcyZDtcbmZcdTAwMTclZS5cImZcdTAwMUNccmgnXHUwMDAwZ1x1MDAxQ1x1MDAwQmVcdTAwMEZcdTAwMDJlXG4gZ1x1MDAxQVx1MDAwNGgvXHUwMDFEZDhcdTAwMDBnXHUwMDAyOWQ/XHUwMDFEaC9cdTAwMDFlXHUwMDFCPmQ5JmZcdTAwMUNcdGZcdTAwMTVcdTAwMDhmNVx1MDAwQmgvXHUwMDE1Zyc7ZVxuKGZcdFxyaFx1MDAwMz1lXHUwMDA2M2UuXHUwMDFBaFx1MDAwMiFnJShkOFxyZlx1MDAxNi1pXHUwMDFDXHUwMDAwZjFcdTAwMDJkOFxyZT5cdTAwMTdlXG5cdTAwMUVmM1x1MDAxNWQ5XHUwMDBCaVx1MDAxNzRpXHUwMDA3XHUwMDA3Z1x1MDAxNChoXHUwMDEwJWlcdTAwMTRcdTAwMDBmXG5cdTAwMTVoL1x0Z1x1MDAxQi5mIFx1MDAwN2dcdTAwMDgxZlx1MDAwM1x1MDAwNWZcdTAwMTFcdTAwMDRlPTFmXHUwMDFDXHRkOlx1MDAxQmgkXHUwMDA3aCM9Zlx1MDAxNlx1MDAwN2UtJmZcdTAwMUM6ZDxcdTAwMUFmXHUwMDE1MGUtXHUwMDE3aCNcdTAwMDVkPy5oNC1nXHQpZVx1MDAwNlx1MDAxQ2ZcdTAwMURcdTAwMTFlXHUwMDA1KGlcdTAwMURcImcyPmVcdTAwMTNcdTAwMDFlXHUwMDA1NmUuXHUwMDFFZDpcdTAwMEJmXHUwMDAzXHUwMDA1ZjA0ZTkzZlx1MDAwRlx1MDAxMGckOmQ4XG5lOFx1MDAwMmgwXCJoMFwiZlx1MDAxOS5pXHUwMDAwXHUwMDFBZlx1MDAxNVx1MDAxOWU4XHUwMDA4ZDhcbmQ8IGcxO2VcdTAwMDgrZi1cdTAwMENmXHUwMDFCMmZcdTAwMEIlZlx1MDAxQ1x0ZVx1MDAwOFx1MDAxQmZcdTAwMTYwaVx1MDAwNVxyZDs2ZVx1MDAwRipoJlx1MDAwMWZcdTAwMTc2ZDsjaDNcdTAwMDdoKFxuaD4+ZVx1MDAwODBkOjpnXHUwMDE0XHUwMDFGaC5cImlcdTAwMThcdTAwMDVoXHUwMDAwXHUwMDAxZThcdTAwMDhlMVx1MDAxNWckOmU/XHUwMDAzZ1x1MDAxMFx1MDAwNmg0NGUtXHUwMDEwZzYyZytcdTAwMTlkODtpIVx1MDAwQ2hcdTAwMDcqZ1x1MDAwNDZnOidlXHUwMDA4K2cuXHUwMDAwZVxyXHUwMDE1Zlx1MDAxNDlpXHUwMDFEKWlcdTAwMDIjZDpcdTAwMUJmXHUwMDFEJWgvNGZcdFx1MDAxM2U8XHUwMDAwZDsjZyBcdTAwMDFlXHUwMDA4IGlcdTAwMTkkaC9cdTAwMDFlXHUwMDA4OGhcblx1MDAwMmdcdTAwMUIuaVx1MDAwN1xyZ1x1MDAwMjlmLCFmXHUwMDE1OGUkXHUwMDFBZTBcdTAwMTFoJ1x1MDAwNGVcdTAwMDhcdTAwMTJoNVx1MDAwNGlcdTAwMDdcdTAwMTFmXHQ+ZVx1MDAwODBkOyVlXHUwMDEwXHUwMDBFZSQnZVx1MDAwNShkODtpITVmXHUwMDFDXHUwMDAwZD0zZVx1MDAxQlx1MDAxRWctXHUwMDE0ZSQpZDhcdTAwMEJkP1x1MDAxRGlcdTAwMUFcdTAwMUNnXHUwMDBFMGQ7I2YjXHUwMDAwZlx1MDAxRiVmXG5cdTAwMTVnJShlMFx1MDAwRmZcdTAwMTc2ZjJcdTAwMTJmXHUwMDFDXHRmLSNlODhnXHUwMDE0XHUwMDFBaFx1MDAwNzNkOyNnXHUwMDEwXHUwMDA2Z1x1MDAxQi5lPVx1MDAxNWVcdTAwMDUsZTxcdTAwMDBlJFxyZVx1MDAwODZpXHUwMDA3XHUwMDExaFx1MDAxRVxyZTk4ZyZcdTAwMEZnXHRcdTAwMDhmXHUwMDFDLGU9XCJmXHUwMDA4XHUwMDEwZVx1MDAwN1x1MDAwNmUkXHUwMDA3aCFcdTAwMENmXHUwMDAzXHUwMDA1ZVx1MDAxQlx1MDAxRWVcdTAwMDgwZlx1MDAwMFx1MDAxRGZcdTAwMDMzZlx1MDAwMFx1MDAwRWYgN2Vcclx1MDAwRmguLmguJGgvXHUwMDAxZlx1MDAxQ1x1MDAwMGUlPWQ6J2dcdTAwMTRcdTAwMUZmXHUwMDBDXHRnXHUwMDA1J2ZcdTAwMUNccmgjXHUwMDA1ZTk/ZDhcdTAwMUNlXG4oZjwraVx1MDAwN1x1MDAwN2g0LWZcdTAwMTYwZlx0XHUwMDBCZztcdTAwMDRlXHUwMDFCPmlcdTAwMURcImZcdTAwMUQ/ZVx1MDAwRlx1MDAwMmhcdTAwMDBcdTAwMDNmXHUwMDE0P2YyO2UuOWZcdTAwMThcdTAwMTNlJCllXHUwMDFDMGVcbiplXG5cdTAwMUJkOjpkOyxlXHJcdTAwMDdnOidpXHUwMDAwXHUwMDFGZTomZDo6Z1x0KWgwXHUwMDAzZlx1MDAxNTRmNVx1MDAwMWghXHUwMDBDaVx1MDAwMCBmXHUwMDA4XHUwMDEwZlx1MDAxNlx1MDAwN2UtXHUwMDE3aVx1MDAxRillXHUwMDFCPWg0OGZcdTAwMThcdTAwMTNlPFx1MDAwMGUxXHUwMDE1Z1x1MDAxQjhpXHUwMDE3XHUwMDFDaCEoZ1x1MDAwRTBlPTFoJ1x1MDAwNmUmXHUwMDAyZi0kZz5cdTAwMEVlLjllJCdlMFx1MDAwRmZcbiVpXHUwMDAxXHUwMDEzZlx1MDAxRCFmLD5lP1x1MDAwM2ZcdTAwMDNcdTAwMDVoLjhlJFx1MDAxQWYzXHUwMDE1aCdcdTAwMDRlLjZlMVx1MDAwNWQ5JmU6XHUwMDE3aD9cdTAwMUVmXHUwMDBFJWcrXHUwMDBCZVxyM2Q4PmZcbiVmXG5cdTAwMDBlNydlJSVoP1x1MDAxMGdcdTAwMTk7ZVx1MDAwNSVkOyVmXHUwMDFEJWdcdTAwMTBcdTAwMDZoLjpkOlx1MDAwQmQ7NmhcdTAwMDcqZ1x1MDAxNDFkOC1lXHJcdTAwMEVlXG5cdTAwMUVlXHUwMDA1LGUmXHUwMDA4ZSZcdTAwMDhnXHUwMDFDXHUwMDFGZi0jZDhccmlcdTAwMTRcdTAwMTllXHUwMDA1KGZcdTAwMTZcdTAwMDdlXHUwMDEwXHUwMDA4ZVx1MDAxMFx1MDAwQ2Q7N2VcdTAwMDA8ZVx1MDAwOCtkOjpnXHUwMDFCXHUwMDExZ1x1MDAxRCNlXHUwMDA1N2Q9XHUwMDEzZDhcdTAwMTZnOiplXHUwMDFCXCJpXHUwMDE4XHUwMDFGZVx1MDAwOFx1MDAxQmQ4XHUwMDFBZlx0P2ZcdTAwMEJcdTAwMDVlXCJcdTAwMUVpXHUwMDE1P2ZcdTAwMUNcdGQ6OmQ/XHUwMDFEZlx1MDAwQ1x1MDAwMWVcdTAwMTVcdTAwMDZlLjZnOzRkPy5lXHUwMDBGMGY5PmU3JmVcdTAwMEYzaFx1MDAwMiFkOz1nLVx1MDAxNGYhXHUwMDA4ZS5cdTAwMUVpXHUwMDE5XHUwMDA1Z1x1MDAxNDVkPyFnO1x1MDAwRmdcdTAwMTBcdTAwMDZnXHUwMDE0XHUwMDFGZVx1MDAxMT1lLiNkPCBkOztlXG4hZi0jZTxcdTAwMEZnXHQ5aFx0MmQ4XHUwMDBCZlx1MDAxRCVlXHJcdTAwMEZkPFx1MDAxQWVcdTAwMEYqaFx1MDAwMz1lPVx1MDAxM2dcdTAwMDQ2aVx1MDAwN1xyZlx1MDAxNjBlXHUwMDA1J2UuOWZcdTAwMENcdTAwMDdlLzxoP1x1MDAxMGghXHUwMDBDZlx1MDAxNyVlP1x1MDAxN2gzI2UuNmg2XHUwMDA1aD9cdTAwMDdlXHUwMDFDXHUwMDFGZVx1MDAxQzBmNVx1MDAxOWYxXHUwMDFGZlx1MDAxNC9kO1x1MDAxOGZcdTAwMEUoZVx1MDAwNzpnK1x1MDAxOWlcdTAwMTU/Zlx1MDAxRC1lN1x1MDAxRWZcdCdoIVx1MDAwQ2VcdTAwMDg2aVx1MDAwMCBkOVx1MDAwQmQ4XHUwMDAwZlx1MDAwRShlOT9nXHUwMDBFMGVcdTAwMUM6Zlx1MDAwRlx1MDAwRmg/MGVcdTAwMEZcdTAwMThlXHUwMDBDXHUwMDE2ZDwgZztcdTAwMUZmLVx1MDAwQ2ZcdFx1MDAwQmQ/XHUwMDFEaVx1MDAxOSloLz5nKFx1MDAwQmVcdTAwMEM7Z1x1MDAxNlx1MDAxN2c7XHUwMDBGaD9cdTAwMDdoP1x1MDAwN2VcdTAwMEU7ZDlcdTAwMEJlXHRccmZcdTAwMTQ2ZVx1MDAwNSVlOTRlOiZmXHUwMDFEXHUwMDAyZT9cdTAwMTdnPlx1MDAwRWQ4PWZcdTAwMUNcdTAwMDBpK1x1MDAxOGdcdTAwMTk7aVx1MDAxOVx1MDAwNmZcdTAwMUMqZlx1MDAxRCVlXG4gZTclZVx1MDAwNVxyaDQjZlx1MDAxNVx1MDAxOWcoXHUwMDBCZ1x0XHUwMDA4ZVx1MDAxRFx1MDAxN2g6K2Q9XHUwMDEzaVx1MDAwN1xyZTpcdTAwMDZlXHUwMDA3OmVcdTAwMTQuZlx1MDAwOFx1MDAxMGZcdTAwMUMsZT1cImU8XHUwMDBGZVx1MDAxQ1x1MDAxRmgxXHUwMDA2ZVx1MDAwNzplXHUwMDAzOWQ4XHUwMDFDZlx1MDAxNjlpXHUwMDAyLmcuMWVcclx1MDAxN2Q6LGYxXHUwMDAyaFx1MDAwMVx1MDAwQ2VcdTAwMEZcdTAwMTZlPlx1MDAxN2hcdTAwMDFcdTAwMENkPVxyZ1x1MDAxQjhkPyFpITVpXHUwMDFEXCJlXHUwMDA4XHUwMDA2aVx1MDAxMlx1MDAxRmc9XHUwMDExaSE1ZyEuZS5cdTAwMUFlXHUwMDFCPmQ+XHUwMDBCZz1cdTAwMTFlXHUwMDFEXHUwMDAwZycvZlx1MDAxRVx1MDAwMWlcdTAwMTRcdTAwMTloLy9nXHUwMDFCLmdcdTAwMUFcdTAwMDRlLlx1MDAxRGg0XHUwMDFEZlx1MDAxQzplXHUwMDA1M2kjXHUwMDBFaVx1MDAxOSlmXHUwMDBFXHUwMDA4Zlx1MDAxRFx1MDAwM2dcdTAwMTdcdTAwMDVmL1x1MDAxMmUuIGdcdClpXHUwMDE5JGQ6XHUwMDA2aClcdTAwMTVoK1x1MDAxNmdcdTAwMTY+Z1x1MDAxN1x1MDAwNWVcdTAwMEZcbmZcdTAwMTc2ZjFcdTAwMDJoNC1nK1x1MDAxOWdcdTAwMDI5ZVx1MDAwND9nKyVmL1x1MDAwRmUkKWQ4LWUkLmguJGgvXHUwMDA2Zi9cdTAwMEZkOCplJClmNCVlLVx1MDAxN2Q9XHUwMDEzZVx1MDAwRjBnXHUwMDAxI2c7NGZcbiRmXHUwMDFDLGkhNWQ4KmZcdTAwMDAnZS5cdTAwMThmXHUwMDE2OWU4OGgnXHUwMDAxZ1x1MDAxQjhmXHUwMDFDOmZcdTAwMDhcdTAwMThnXHUwMDE1JWU6XHUwMDE0ZT1cdTAwMTNlPlx1MDAwQmU4XHUwMDA4Zlx1MDAxNjlkPj9mICFlXHUwMDFCLWhcdTAwMDIhZThcdTAwMDJmXHUwMDA4P2UxXHUwMDBCZiBcdTAwMEZnXHUwMDFCLmVcdTAwMTFcdTAwMThlNyVlLzxoXHUwMDA3NGcqXHUwMDAxZ1x1MDAwNDZpXHUwMDAxXHUwMDEzZVx1MDAwNTdmXHUwMDFDLGc9XHUwMDExZztcdTAwMTNlXHUwMDEwXHUwMDA4ZiEjZiFcdTAwMDhlXG4zZVxuKGVcdTAwMEYmZSRcdTAwMTZnPlx1MDAwRWVcdTAwMDVcdTAwMDNlPFx1MDAxNWg1N2ZcdTAwMTQ5ZVx1MDAwRlx1MDAxOGcsLGVcdTAwMUJcdTAwMUJkPFx1MDAxQWguIWgqKmZcdTAwMThcdTAwMEVpXHUwMDFBXHUwMDEwZydcdTAwMDFlLlx1MDAxRGUuXHUwMDFEaCdcdTAwMDRoXHUwMDBDXHUwMDAzZjZcdTAwMDhoNDllXHUwMDA1MWVcdTAwMTBcdTAwMENlP1x1MDAxOGguMGQ9XHUwMDEzZzM7ZTgmZlx1MDAxRCVlXHUwMDEwXHJlLVx1MDAxN2dcdTAwMTk8aCEoZTxcdTAwMDBmXHUwMDE0PmVcbiBnXHUwMDFCXHUwMDFGZVx1MDAwRlx1MDAxN2VcdTAwMDgwZDpcdTAwMENmXHRcdTAwMEJlJCdpXHUwMDA3XHUwMDBGZlx1MDAwOFx1MDAxMGQ6OmZcdTAwMTUwaVx1MDAwN1x1MDAwRmVcdTAwMDUxZDorZVx1MDAwQzplXHUwMDFGXHUwMDFGZSUzZS0pZVx1MDAwRVx1MDAxRmVcdTAwMDhcdTAwMTlmXHRcdTAwMDBlXHUwMDFDKGc7XHUwMDEzZlx1MDAxRFx1MDAxRmlcdTAwMDBcdTAwMUFkPyFoNlx1MDAwNWc6J2lcdTAwMDVccmc9LmU9XHUwMDEzZlx1MDAxNzZkPFx1MDAxOGcnXHUwMDAwZlx1MDAwMCdmXHUwMDA0XHUwMDFGZlx1MDAwOD9kOidpXHUwMDAxXG5mXHUwMDA4MmVcdTAwMDc6ZVx1MDAwRiNmXHUwMDBGXHUwMDEwZDokZTAxZDhcdTAwMUFkP1x1MDAxRGVcdTAwMDElZyhcdTAwMEJlOiZlXHUwMDBGXHUwMDAyZlx1MDAxNTBkOlx1MDAwQmQ4XHUwMDFBZlx1MDAxNTRkOCplMTFkOFx1MDAxQ2ZcdTAwMDNcdTAwMDVmXHUwMDA0XHUwMDFGZ1x0OWYuXG5lXHUwMDA4XHUwMDA2aSFcdTAwMUVmXHUwMDEwXHUwMDFDZTBcdTAwMEJlMVx1MDAxRWQ6XHUwMDBFaVx1MDAxNyhmXHUwMDA4N2g0XCJlXG4hZSMwaVx1MDAxRjNlXHUwMDBGXG5lXHUwMDA1Nmg0XCJnO1x1MDAwRmVcdTAwMURcdTAwMUFmXHUwMDBDXHUwMDAxZTkyaVx1MDAwMyhmXHUwMDA4XHUwMDEwZytcdTAwMEJlXHUwMDA4KWdcdTAwMUJcbmhcdTAwMDBcdTAwMDNoXHUwMDE5XHUwMDExZlx1MDAwOFx1MDAxMGlcdTAwMDM9ZVx1MDAwQ1x1MDAwNWgjXHUwMDA1Z1x1MDAxNChmXHUwMDA4NmYvXHUwMDE0aDVcdTAwMUJmXHUwMDE2XHUwMDA3Zlx1MDAxOFx1MDAwRWZcdTAwMEJcdTAwMUJlXHUwMDE1XHUwMDA2ZS5cdTAwMENmXHUwMDE1NGdcdTAwMUNcdTAwMUZmXHUwMDE4L2dcdTAwMUM8Z1x1MDAxRFx1MDAxQmQ8XHUwMDE5ZDw0ZShcdTAwMDFmXHUwMDFDXHUwMDFCaVwiXHUwMDA2ZVx1MDAxRlx1MDAxRmVccitnXHUwMDE0XHUwMDFGZDxcdTAwMThmXHUwMDAzIGgrXHUwMDE2ZSNcdTAwMDdlXHUwMDA1LGVcdTAwMDUxaFx0L2UlPWVcdTAwMDVcdTAwMDVlXHUwMDA4XHUwMDA2ZywmZVx1MDAxMFx1MDAwOGlcdTAwMTlcdTAwMDRkOzZnXHQ5Z1x1MDAwMjlkOFxyZVx1MDAwRi9oXHUwMDBCMWZcdTAwMTZcdTAwMDdoNVx1MDAwNGQ6J2YgOWZcdTAwMUMsZlx1MDAxOFx1MDAwRWZcdTAwMTg+ZS9cdTAwMDZnXCI8ZVx1MDAwNSxkPFx1MDAxN2YwXHUwMDExZlx1MDAxN1x1MDAwRmZcdTAwMUI0ZVxuIGQ6K2VcdTAwMEZcdTAwMTdlXHUwMDEwXHUwMDBDZS0mZVx1MDAxMC9lXG4oaVx1MDAwMFx1MDAwMmVcdTAwMTBcdTAwMDhlXHUwMDBFXHUwMDFGZlx1MDAxRCVpXHUwMDE3LmctXHUwMDE0Zlx1MDAxQyxmXHUwMDE2XHUwMDA3Zz5cdTAwMEVpI1x1MDAxRmc7P2hcdDJnKDNlLlx1MDAxQWc7XHUwMDA4ZDpcdTAwMEVnXHUwMDE0XHUwMDFGZ1x0KWQ+XHUwMDFCZjFcdTAwMDJmXHUwMDEwXHUwMDFDZ1x1MDAwQlx1MDAxMGVcblx1MDAxQmlcdTAwMDdcdTAwMEZkOCVpXHUwMDA3XHJmMDhoP1x1MDAxQ2VcdTAwMDZcdTAwMTlnXHUwMDFDXHUwMDFGZlx1MDAxQ1x0aVx1MDAxOVx1MDAxMGcrXHUwMDFFZDpcdGUvOWgxIWg0OWdcdTAwMTQoZDhccmUlPWc7XHUwMDFEZS85ZVxyXHUwMDAxZVx1MDAwOFx1MDAwNmQ/XHUwMDAzaD9cdTAwMUJnXHUwMDAyOWgvXHUwMDA0ZT0xaVx1MDAxRjNkPFx1MDAxOGVcbj9kOFxyZTBcdTAwMTFmLCNoNVx1MDAwRmU5NmQ4XHUwMDE0Zlx1MDAxQ1x0Z1x1MDAwMjlmXHUwMDE2OWVcdTAwMTBcdTAwMTFlXHUwMDA1KGZcdTAwMTYwZD8hZ1x1MDAxNChoLj5mXHUwMDE2PWU9XCJoMSFoNVx1MDAwNGYgPGcqXHUwMDAxZyA0aVx1MDAxQVx1MDAwRmdcdTAwMURcdTAwMDBpXHUwMDA3XHJlJCdkOlx1MDAwRWZcdTAwMTgvZi9cdTAwMTVkOFx1MDAxQWZcdTAwMTk6aFx1MDAwMz1lXHUwMDBDXHUwMDE2ZTclZS5cdTAwMENnPlx1MDAwRWVcdTAwMTVcdTAwMDZlXHUwMDFGXHUwMDBFZztcdTAwMUZkOFx1MDAwMGVcdTAwMDc6Z1x0XHUwMDA4Zlx0XHUwMDEzaVx1MDAwMCBnXHUwMDE0XCJlXHUwMDEzXHUwMDAxZiZcdTAwMDJlXHUwMDA2NWdcdTAwMTQoZDpcdTAwMEVkP1x1MDAxRGdcdTAwMTVcdTAwMTllXHUwMDFCIGc0IGQ4LWVcdTAwMUNcdTAwMEJlLVx1MDAxOGVcdTAwMDIoaDQ0ZVx1MDAxQj5mXHUwMDFDXHUwMDAwZlx1MDAwNFx1MDAxQmlcdTAwMTU/Zlx1MDAxQ1x1MDAxRmVcdTAwMEYjZDs3Z1x1MDAxMFx1MDAwNmg0XCJlXHUwMDFGOmVcdTAwMUMwZS5cdGZcdTAwMEVcdTAwMTJmLSZmMVx0aVx1MDAwN1x1MDAwQ2lcdTAwMURcImVcdTAwMDhcdTAwMUJlOzplJClnKTppJlx1MDAxNmVcdTAwMDVcdTAwMDhlLlx1MDAwQ2VcdTAwMTZcdTAwMDRpKTFlXG4oZDhcdTAwMEJpXHUwMDFEXCJkOFxyZVx1MDAwNlxyaC9cdTAwMUFkPyFmXHUwMDA0XHUwMDBGZDlcdGlcdTAwMTgzZVx1MDAwNVx0aFx1MDAwQjFlXHUwMDFCPWY8XHUwMDAyZDouZVx1MDAwNlx1MDAxQmQ6XHUwMDBCZ1x1MDAwRSllLjZnPiRkPFx1MDAxN2VcdTAwMDZcdTAwMUNmMFx1MDAxMWVccjNlXHUwMDBGL2VcdTAwMTBccmcoMWUuNmVcdTAwMDU3ZVxuKGdcdTAwMTQ7Zlx1MDAwMzNlXHUwMDA4MGYzKGZcdTAwMThcdTAwMEVlMFx1MDAwRmUtJmZcdTAwMDAnaFx1MDAwMz1oXHUwMDAwXHUwMDAzZyBcdTAwMTRnISxkOzZoJ1x1MDAwMmdcdTAwMUNcdTAwMEJmOFx1MDAwNWYlXHUwMDFBZlx1MDAxMFx1MDAxRWcsXHUwMDExaSZcdTAwMTZpIFx1MDAwMWk7XHUwMDA0aVx1MDAwN1x1MDAxMWlcdTAwMDBcdTAwMDJnXHUwMDE0KGYxXHUwMDFGaFx1MDAwQlx1MDAwRmdcdTAwMUNcdTAwMUZlLlx1MDAxRWQ4O2cuIWlcdTAwMTg2Zi41aCg7ZVx1MDAwNlxuZz87aC9cdTAwMTFmXHUwMDFEXHUwMDAzZVx1MDAwOCllXHUwMDAxXHUwMDFBZSU9ZDw8ZDlcdTAwMEVpXHUwMDAwXHUwMDFBaC4vZlx1MDAxNj1lNyVnXHUwMDBCXHUwMDAwZlx1MDAwNVx1MDAwQmQ5XHUwMDFGaC44Z1x1MDAwRS9kP1x1MDAxRGVcdTAwMUY5ZVx1MDAwNTtmJlx1MDAwMmU/NWUkJ2VcdTAwMUVcdTAwMEJmXHUwMDFDOmclKGdcdTAwMTBcdTAwMDZoJyNlXHUwMDBDP2VcdTAwMTBccmN1YW5kb2Vudmlhcm1hZHJpZGJ1c2NhcmluaWNpb3RpZW1wb3BvcnF1ZWN1ZW50YWVzdGFkb3B1ZWRlbmp1ZWdvc2NvbnRyYWVzdEMhbm5vbWJyZXRpZW5lbnBlcmZpbG1hbmVyYWFtaWdvc2NpdWRhZGNlbnRyb2F1bnF1ZXB1ZWRlc2RlbnRyb3ByaW1lcnByZWNpb3NlZ0M6bmJ1ZW5vc3ZvbHZlcnB1bnRvc3NlbWFuYWhhYkMtYWFnb3N0b251ZXZvc3VuaWRvc2Nhcmxvc2VxdWlwb25pQzFvc211Y2hvc2FsZ3VuYWNvcnJlb2ltYWdlbnBhcnRpcmFycmliYW1hckMtYWhvbWJyZWVtcGxlb3ZlcmRhZGNhbWJpb211Y2hhc2Z1ZXJvbnBhc2Fkb2xDLW5lYXBhcmVjZW51ZXZhc2N1cnNvc2VzdGFiYXF1aWVyb2xpYnJvc2N1YW50b2FjY2Vzb21pZ3VlbHZhcmlvc2N1YXRyb3RpZW5lc2dydXBvc3NlckMhbmV1cm9wYW1lZGlvc2ZyZW50ZWFjZXJjYWRlbUMhc29mZXJ0YWNvY2hlc21vZGVsb2l0YWxpYWxldHJhc2FsZ0M6bmNvbXByYWN1YWxlc2V4aXN0ZWN1ZXJwb3NpZW5kb3ByZW5zYWxsZWdhcnZpYWplc2RpbmVyb211cmNpYXBvZHJDIXB1ZXN0b2RpYXJpb3B1ZWJsb3F1aWVyZW1hbnVlbHByb3Bpb2NyaXNpc2NpZXJ0b3NlZ3Vyb211ZXJ0ZWZ1ZW50ZWNlcnJhcmdyYW5kZWVmZWN0b3BhcnRlc21lZGlkYXByb3BpYW9mcmVjZXRpZXJyYWUtbWFpbHZhcmlhc2Zvcm1hc2Z1dHVyb29iamV0b3NlZ3VpcnJpZXNnb25vcm1hc21pc21vc0M6bmljb2NhbWlub3NpdGlvc3JhekMzbmRlYmlkb3BydWViYXRvbGVkb3RlbkMtYWplc0M6c2VzcGVyb2NvY2luYW9yaWdlbnRpZW5kYWNpZW50b2NDIWRpemhhYmxhcnNlckMtYWxhdGluYWZ1ZXJ6YWVzdGlsb2d1ZXJyYWVudHJhckMpeGl0b2xDM3BlemFnZW5kYXZDLWRlb2V2aXRhcnBhZ2luYW1ldHJvc2phdmllcnBhZHJlc2ZDIWNpbGNhYmV6YUMhcmVhc3NhbGlkYWVudkMtb2phcEMzbmFidXNvc2JpZW5lc3RleHRvc2xsZXZhcnB1ZWRhbmZ1ZXJ0ZWNvbUM6bmNsYXNlc2h1bWFub3Rlbmlkb2JpbGJhb3VuaWRhZGVzdEMhc2VkaXRhcmNyZWFkb1A0UDtRXHUwMDBGUVx1MDAwN1FcdTAwMDJQPlA6UDBQOlA4UDtQOFFcclFcdTAwMDJQPlAyUVx1MDAwMVA1UDVQM1A+UD9RXHUwMDAwUDhRXHUwMDAyUDBQOlA1UVx0UDVRXHUwMDAzUDZQNVBcdTAwMUFQMFA6UDFQNVA3UDFRXHUwMDBCUDtQPlA9UDhQXHUwMDEyUVx1MDAwMVA1UD9QPlA0UC1RXHUwMDAyUD5RXHUwMDAyUD5QPFFcdTAwMDdQNVA8UD1QNVFcdTAwMDJQO1A1UVx1MDAwMlFcdTAwMDBQMFA3UD5QPVAwUDNQNFA1UDxQPVA1UFx1MDAxNFA7UVx1MDAwRlBcdTAwMUZRXHUwMDAwUDhQPVAwUVx1MDAwMVA9UDhRXHUwMDA1UVx1MDAwMlA1UDxQOlFcdTAwMDJQPlAzUD5QNFAyUD5RXHUwMDAyUVx1MDAwMlAwUDxQIVAoUFx1MDAxMFA8UDBRXHUwMDBGUCdRXHUwMDAyUD5QMlAwUVx1MDAwMVAyUDBQPFA1UDxRXHUwMDAzUFwiUDBQOlA0UDJQMFA9UDBQPFFcclFcdTAwMDJQOFFcclFcdTAwMDJRXHUwMDAzUFx1MDAxMlAwUDxRXHUwMDAyUDVRXHUwMDA1UD9RXHUwMDAwUD5RXHUwMDAyUVx1MDAwM1FcdTAwMDJQPVAwUDRQNFA9UVx1MDAwRlBcdTAwMTJQPlFcdTAwMDJRXHUwMDAyUVx1MDAwMFA4UD1QNVA5UFx1MDAxMlAwUVx1MDAwMVA9UDhQPFFcdTAwMDFQMFA8UVx1MDAwMlA+UVx1MDAwMlFcdTAwMDBRXHUwMDAzUDFQXHUwMDFFUD1QOFA8UDhRXHUwMDAwUD1QNVA1UFx1MDAxRVBcdTAwMUVQXHUwMDFFUDtQOFFcdTAwMDZRXHJRXHUwMDAyUDBQXHUwMDFFUD1QMFA9UDVQPFA0UD5QPFA8UD5QOVA0UDJQNVA+UD1QPlFcdTAwMDFRXHUwMDAzUDRgJFx1MDAxNWAlXHUwMDA3YCQ5YCVcdTAwMDhgJFx1MDAxNWAlXHUwMDAwYCQ4YCVcdTAwMDdgJFx1MDAxNWAkPmAkXHUwMDE1YCVcdTAwMEJgJFx1MDAxNGAkMGAkKmAkMGAkKGAlXHUwMDA3YCRcdTAwMEZgJFx1MDAxNWAkXHUwMDE1YCQ/YCQtYCVcdTAwMDBgJFx1MDAwN2AkOGAkXHUwMDE1YCQwYCQkYCVcdTAwMEJgJDlgJVx1MDAwQmAkXHUwMDA2YCQqYCQ5YCVcdTAwMDBgJC9gJDlgJC9gJD5gJCRgJFx1MDAxNWAkJWAkPmphZ3JhbmAkXHUwMDA2YCRcdTAwMUNgJFx1MDAxQ2AlXHUwMDBCYCRcdTAwMDVgJCxgJCZgJVx1MDAwQmAkXHUwMDE3YCRcdTAwMDhgJFx1MDAxQ2AkPmAkXHUwMDE3YCRcdTAwMEZgJDlgJC5gJFx1MDAwN2AkKGAkNWAkOWAkL2AlXHUwMDA3YCQlYCVcdTAwMDdgJCVgJVx1MDAwMGAkXHUwMDE4YCQwYCRcdTAwMUNgJCxgJCZgJVx1MDAwMGAkXHUwMDE1YCRcdTAwMDhgJFx1MDAxQ2AlXHUwMDAwYCQ1YCVcdTAwMDdgJChgJFx1MDAwOGAkKGAkXHUwMDBGYCQ5YCQwYCRcdGAkOGAkLmAlXHUwMDA3YCRcdTAwMTVgJC5gJDVgJVx1MDAwQmAkMmAlXHUwMDA3YCQ4YCQsYCQuYCRcdTAwMDhgJCZgJVx1MDAwN2AkXHUwMDEzYCQwYCRcdTAwMDZgJC5gJCxgJDhgJC1gJDBgJCxgJChgJFx1MDAxQWAkMmAkLmAkKGAkXHUwMDA2YCRcdTAwMTdgJDhgJVx1MDAwMGAkMmAlXHUwMDAwWDlZXHUwMDA0WVx0WCVZXHUwMDA0WVx0WVx1MDAwN1gwWCdYXCJYLlgxWDlYL1gvWCdZXHUwMDA0WVx0WVx1MDAwN1gwWVx1MDAwN1g1WVx1MDAwOFgxWDpZXG5YMVlcdTAwMDNYJ1lcdTAwMDZZXHUwMDA4WVx1MDAwNFgnWChZXG5ZXHUwMDA2WDlYMVg2WDBZXHUwMDA0WVx1MDAwM1lcdTAwMDdZXHUwMDA2WCdZXG5ZXHUwMDA4WVx1MDAwNVlcdTAwMDJYJ1lcdTAwMDRYOVlcdTAwMDRZXG5YJ1lcdTAwMDZYJ1lcdTAwMDRZXHUwMDAzWVx1MDAwNlgtWCpZXHRZXHUwMDAyWChZXHUwMDA0WVx1MDAwOFgtWClYJ1guWDFZXHUwMDAxWVx1MDAwMlg3WDlYKFgvWDFZXHUwMDAzWVx1MDAwNlglWDBYJ1lcdTAwMDNZXHUwMDA1WCdYJ1gtWC9YJVlcdTAwMDRYJ1lcdTAwMDFZXG5ZXHUwMDA3WChYOVg2WVx1MDAwM1lcbllcdTAwMDFYKFgtWCtZXHUwMDA4WVx1MDAwNVlcdTAwMDZZXHUwMDA4WVx1MDAwN1lcdTAwMDhYI1lcdTAwMDZYJ1gsWC9YJ1lcdTAwMDRZXHUwMDA3WCdYM1lcdTAwMDRZXHUwMDA1WDlZXHUwMDA2WC9ZXHUwMDA0WVxuWDNYOVgoWDFYNVlcdTAwMDRZXHRZXHUwMDA1WVx1MDAwNlgwWChZXHUwMDA3WCdYI1lcdTAwMDZZXHUwMDA3WVx1MDAwNVgrWVx1MDAwNFlcdTAwMDNZXHUwMDA2WCpYJ1lcdTAwMDRYJ1gtWVxuWCtZXHUwMDA1WDVYMVg0WDFYLVgtWVx1MDAwOFlcdTAwMDRZXHUwMDA4WVx1MDAwMVlcblgnWDBYJ1lcdTAwMDRZXHUwMDAzWVx1MDAwNFlcdTAwMDVYMVgpWCdZXHUwMDA2WCpYJ1lcdTAwMDRZXHUwMDAxWCNYKFlcdTAwMDhYLlgnWDVYI1lcdTAwMDZYKlgnWVx1MDAwNllcdTAwMDdYJ1lcdTAwMDRZXG5YOVg2WVx1MDAwOFlcdTAwMDhZXHUwMDAyWC9YJ1goWVx1MDAwNlguWVxuWDFYKFlcdTAwMDZYKllcdTAwMDRZXHUwMDAzWVx1MDAwNVg0WCdYIVlcdTAwMDhZXHUwMDA3WVxuWCdYKFlcdTAwMDhZXHUwMDAyWDVYNVlcdTAwMDhZXHUwMDA1WCdYMVlcdTAwMDJZXHUwMDA1WCNYLVgvWVx1MDAwNlgtWVx1MDAwNlg5WC9ZXHUwMDA1WDFYI1lcblgnWC1YKVlcdTAwMDNYKlgoWC9ZXHUwMDA4WVx1MDAwNllcblgsWChZXHUwMDA1WVx1MDAwNllcdTAwMDdYKlgtWCpYLFlcdTAwMDdYKVgzWVx1MDAwNlgpWVxuWCpZXHUwMDA1WVx1MDAwM1gxWClYOlgyWClZXHUwMDA2WVx1MDAwMVgzWChZXG5YKllcdTAwMDRZXHUwMDA0WVx1MDAwN1lcdTAwMDRZXHUwMDA2WCdYKllcdTAwMDRZXHUwMDAzWVx1MDAwMllcdTAwMDRYKFlcdTAwMDRZXHUwMDA1WCdYOVlcdTAwMDZZXHUwMDA3WCNZXHUwMDA4WVx1MDAwNFg0WVxuWCFZXHUwMDA2WVx1MDAwOFgxWCNZXHUwMDA1WCdZXHUwMDAxWVxuWVx1MDAwM1goWVx1MDAwM1lcdTAwMDRYMFgnWCpYMVgqWChYKFgjWVx1MDAwNllcdTAwMDdZXHUwMDA1WDNYJ1lcdTAwMDZZXHUwMDAzWChZXG5YOVlcdTAwMDFZXHUwMDAyWC9YLVgzWVx1MDAwNllcdTAwMDRZXHUwMDA3WVx1MDAwNVg0WDlYMVgjWVx1MDAwN1lcdTAwMDRYNFlcdTAwMDdYMVlcdTAwMDJYN1gxWDdZXHUwMDA0WChwcm9maWxlc2VydmljZWRlZmF1bHRoaW1zZWxmZGV0YWlsc2NvbnRlbnRzdXBwb3J0c3RhcnRlZG1lc3NhZ2VzdWNjZXNzZmFzaGlvbjx0aXRsZT5jb3VudHJ5YWNjb3VudGNyZWF0ZWRzdG9yaWVzcmVzdWx0c3J1bm5pbmdwcm9jZXNzd3JpdGluZ29iamVjdHN2aXNpYmxld2VsY29tZWFydGljbGV1bmtub3dubmV0d29ya2NvbXBhbnlkeW5hbWljYnJvd3NlcnByaXZhY3lwcm9ibGVtU2VydmljZXJlc3BlY3RkaXNwbGF5cmVxdWVzdHJlc2VydmV3ZWJzaXRlaGlzdG9yeWZyaWVuZHNvcHRpb25zd29ya2luZ3ZlcnNpb25taWxsaW9uY2hhbm5lbHdpbmRvdy5hZGRyZXNzdmlzaXRlZHdlYXRoZXJjb3JyZWN0cHJvZHVjdGVkaXJlY3Rmb3J3YXJkeW91IGNhbnJlbW92ZWRzdWJqZWN0Y29udHJvbGFyY2hpdmVjdXJyZW50cmVhZGluZ2xpYnJhcnlsaW1pdGVkbWFuYWdlcmZ1cnRoZXJzdW1tYXJ5bWFjaGluZW1pbnV0ZXNwcml2YXRlY29udGV4dHByb2dyYW1zb2NpZXR5bnVtYmVyc3dyaXR0ZW5lbmFibGVkdHJpZ2dlcnNvdXJjZXNsb2FkaW5nZWxlbWVudHBhcnRuZXJmaW5hbGx5cGVyZmVjdG1lYW5pbmdzeXN0ZW1za2VlcGluZ2N1bHR1cmUmcXVvdDssam91cm5hbHByb2plY3RzdXJmYWNlcyZxdW90O2V4cGlyZXNyZXZpZXdzYmFsYW5jZUVuZ2xpc2hDb250ZW50dGhyb3VnaFBsZWFzZSBvcGluaW9uY29udGFjdGF2ZXJhZ2VwcmltYXJ5dmlsbGFnZVNwYW5pc2hnYWxsZXJ5ZGVjbGluZW1lZXRpbmdtaXNzaW9ucG9wdWxhcnF1YWxpdHltZWFzdXJlZ2VuZXJhbHNwZWNpZXNzZXNzaW9uc2VjdGlvbndyaXRlcnNjb3VudGVyaW5pdGlhbHJlcG9ydHNmaWd1cmVzbWVtYmVyc2hvbGRpbmdkaXNwdXRlZWFybGllcmV4cHJlc3NkaWdpdGFscGljdHVyZUFub3RoZXJtYXJyaWVkdHJhZmZpY2xlYWRpbmdjaGFuZ2VkY2VudHJhbHZpY3RvcnlpbWFnZXMvcmVhc29uc3N0dWRpZXNmZWF0dXJlbGlzdGluZ211c3QgYmVzY2hvb2xzVmVyc2lvbnVzdWFsbHllcGlzb2RlcGxheWluZ2dyb3dpbmdvYnZpb3Vzb3ZlcmxheXByZXNlbnRhY3Rpb25zPC91bD5cclxud3JhcHBlcmFscmVhZHljZXJ0YWlucmVhbGl0eXN0b3JhZ2Vhbm90aGVyZGVza3RvcG9mZmVyZWRwYXR0ZXJudW51c3VhbERpZ2l0YWxjYXBpdGFsV2Vic2l0ZWZhaWx1cmVjb25uZWN0cmVkdWNlZEFuZHJvaWRkZWNhZGVzcmVndWxhciAmYW1wOyBhbmltYWxzcmVsZWFzZUF1dG9tYXRnZXR0aW5nbWV0aG9kc25vdGhpbmdQb3B1bGFyY2FwdGlvbmxldHRlcnNjYXB0dXJlc2NpZW5jZWxpY2Vuc2VjaGFuZ2VzRW5nbGFuZD0xJmFtcDtIaXN0b3J5ID0gbmV3IENlbnRyYWx1cGRhdGVkU3BlY2lhbE5ldHdvcmtyZXF1aXJlY29tbWVudHdhcm5pbmdDb2xsZWdldG9vbGJhcnJlbWFpbnNiZWNhdXNlZWxlY3RlZERldXRzY2hmaW5hbmNld29ya2Vyc3F1aWNrbHliZXR3ZWVuZXhhY3RseXNldHRpbmdkaXNlYXNlU29jaWV0eXdlYXBvbnNleGhpYml0Jmx0OyEtLUNvbnRyb2xjbGFzc2VzY292ZXJlZG91dGxpbmVhdHRhY2tzZGV2aWNlcyh3aW5kb3dwdXJwb3NldGl0bGU9XCJNb2JpbGUga2lsbGluZ3Nob3dpbmdJdGFsaWFuZHJvcHBlZGhlYXZpbHllZmZlY3RzLTEnXSk7XG5jb25maXJtQ3VycmVudGFkdmFuY2VzaGFyaW5nb3BlbmluZ2RyYXdpbmdiaWxsaW9ub3JkZXJlZEdlcm1hbnlyZWxhdGVkPC9mb3JtPmluY2x1ZGV3aGV0aGVyZGVmaW5lZFNjaWVuY2VjYXRhbG9nQXJ0aWNsZWJ1dHRvbnNsYXJnZXN0dW5pZm9ybWpvdXJuZXlzaWRlYmFyQ2hpY2Fnb2hvbGlkYXlHZW5lcmFscGFzc2FnZSwmcXVvdDthbmltYXRlZmVlbGluZ2Fycml2ZWRwYXNzaW5nbmF0dXJhbHJvdWdobHkuXG5cblRoZSBidXQgbm90ZGVuc2l0eUJyaXRhaW5DaGluZXNlbGFjayBvZnRyaWJ1dGVJcmVsYW5kXCIgZGF0YS1mYWN0b3JzcmVjZWl2ZXRoYXQgaXNMaWJyYXJ5aHVzYmFuZGluIGZhY3RhZmZhaXJzQ2hhcmxlc3JhZGljYWxicm91Z2h0ZmluZGluZ2xhbmRpbmc6bGFuZz1cInJldHVybiBsZWFkZXJzcGxhbm5lZHByZW1pdW1wYWNrYWdlQW1lcmljYUVkaXRpb25dJnF1b3Q7TWVzc2FnZW5lZWQgdG92YWx1ZT1cImNvbXBsZXhsb29raW5nc3RhdGlvbmJlbGlldmVzbWFsbGVyLW1vYmlsZXJlY29yZHN3YW50IHRva2luZCBvZkZpcmVmb3h5b3UgYXJlc2ltaWxhcnN0dWRpZWRtYXhpbXVtaGVhZGluZ3JhcGlkbHljbGltYXRla2luZ2RvbWVtZXJnZWRhbW91bnRzZm91bmRlZHBpb25lZXJmb3JtdWxhZHluYXN0eWhvdyB0byBTdXBwb3J0cmV2ZW51ZWVjb25vbXlSZXN1bHRzYnJvdGhlcnNvbGRpZXJsYXJnZWx5Y2FsbGluZy4mcXVvdDtBY2NvdW50RWR3YXJkIHNlZ21lbnRSb2JlcnQgZWZmb3J0c1BhY2lmaWNsZWFybmVkdXAgd2l0aGhlaWdodDp3ZSBoYXZlQW5nZWxlc25hdGlvbnNfc2VhcmNoYXBwbGllZGFjcXVpcmVtYXNzaXZlZ3JhbnRlZDogZmFsc2V0cmVhdGVkYmlnZ2VzdGJlbmVmaXRkcml2aW5nU3R1ZGllc21pbmltdW1wZXJoYXBzbW9ybmluZ3NlbGxpbmdpcyB1c2VkcmV2ZXJzZXZhcmlhbnQgcm9sZT1cIm1pc3NpbmdhY2hpZXZlcHJvbW90ZXN0dWRlbnRzb21lb25lZXh0cmVtZXJlc3RvcmVib3R0b206ZXZvbHZlZGFsbCB0aGVzaXRlbWFwZW5nbGlzaHdheSB0byAgQXVndXN0c3ltYm9sc0NvbXBhbnltYXR0ZXJzbXVzaWNhbGFnYWluc3RzZXJ2aW5nfSkoKTtcclxucGF5bWVudHRyb3VibGVjb25jZXB0Y29tcGFyZXBhcmVudHNwbGF5ZXJzcmVnaW9uc21vbml0b3IgJydUaGUgd2lubmluZ2V4cGxvcmVhZGFwdGVkR2FsbGVyeXByb2R1Y2VhYmlsaXR5ZW5oYW5jZWNhcmVlcnMpLiBUaGUgY29sbGVjdFNlYXJjaCBhbmNpZW50ZXhpc3RlZGZvb3RlciBoYW5kbGVycHJpbnRlZGNvbnNvbGVFYXN0ZXJuZXhwb3J0c3dpbmRvd3NDaGFubmVsaWxsZWdhbG5ldXRyYWxzdWdnZXN0X2hlYWRlcnNpZ25pbmcuaHRtbFwiPnNldHRsZWR3ZXN0ZXJuY2F1c2luZy13ZWJraXRjbGFpbWVkSnVzdGljZWNoYXB0ZXJ2aWN0aW1zVGhvbWFzIG1vemlsbGFwcm9taXNlcGFydGllc2VkaXRpb25vdXRzaWRlOmZhbHNlLGh1bmRyZWRPbHltcGljX2J1dHRvbmF1dGhvcnNyZWFjaGVkY2hyb25pY2RlbWFuZHNzZWNvbmRzcHJvdGVjdGFkb3B0ZWRwcmVwYXJlbmVpdGhlcmdyZWF0bHlncmVhdGVyb3ZlcmFsbGltcHJvdmVjb21tYW5kc3BlY2lhbHNlYXJjaC53b3JzaGlwZnVuZGluZ3Rob3VnaHRoaWdoZXN0aW5zdGVhZHV0aWxpdHlxdWFydGVyQ3VsdHVyZXRlc3RpbmdjbGVhcmx5ZXhwb3NlZEJyb3dzZXJsaWJlcmFsfSBjYXRjaFByb2plY3RleGFtcGxlaGlkZSgpO0Zsb3JpZGFhbnN3ZXJzYWxsb3dlZEVtcGVyb3JkZWZlbnNlc2VyaW91c2ZyZWVkb21TZXZlcmFsLWJ1dHRvbkZ1cnRoZXJvdXQgb2YgIT0gbnVsbHRyYWluZWREZW5tYXJrdm9pZCgwKS9hbGwuanNwcmV2ZW50UmVxdWVzdFN0ZXBoZW5cblxuV2hlbiBvYnNlcnZlPC9oMj5cclxuTW9kZXJuIHByb3ZpZGVcIiBhbHQ9XCJib3JkZXJzLlxuXG5Gb3IgXG5cbk1hbnkgYXJ0aXN0c3Bvd2VyZWRwZXJmb3JtZmljdGlvbnR5cGUgb2ZtZWRpY2FsdGlja2V0c29wcG9zZWRDb3VuY2lsd2l0bmVzc2p1c3RpY2VHZW9yZ2UgQmVsZ2l1bS4uLjwvYT50d2l0dGVybm90YWJseXdhaXRpbmd3YXJmYXJlIE90aGVyIHJhbmtpbmdwaHJhc2VzbWVudGlvbnN1cnZpdmVzY2hvbGFyPC9wPlxyXG4gQ291bnRyeWlnbm9yZWRsb3NzIG9manVzdCBhc0dlb3JnaWFzdHJhbmdlPGhlYWQ+PHN0b3BwZWQxJ10pO1xyXG5pc2xhbmRzbm90YWJsZWJvcmRlcjpsaXN0IG9mY2FycmllZDEwMCwwMDA8L2gzPlxuIHNldmVyYWxiZWNvbWVzc2VsZWN0IHdlZGRpbmcwMC5odG1sbW9uYXJjaG9mZiB0aGV0ZWFjaGVyaGlnaGx5IGJpb2xvZ3lsaWZlIG9mb3IgZXZlbnJpc2Ugb2YmcmFxdW87cGx1c29uZWh1bnRpbmcodGhvdWdoRG91Z2xhc2pvaW5pbmdjaXJjbGVzRm9yIHRoZUFuY2llbnRWaWV0bmFtdmVoaWNsZXN1Y2ggYXNjcnlzdGFsdmFsdWUgPVdpbmRvd3NlbmpveWVkYSBzbWFsbGFzc3VtZWQ8YSBpZD1cImZvcmVpZ24gQWxsIHJpaG93IHRoZURpc3BsYXlyZXRpcmVkaG93ZXZlcmhpZGRlbjtiYXR0bGVzc2Vla2luZ2NhYmluZXR3YXMgbm90bG9vayBhdGNvbmR1Y3RnZXQgdGhlSmFudWFyeWhhcHBlbnN0dXJuaW5nYTpob3Zlck9ubGluZSBGcmVuY2ggbGFja2luZ3R5cGljYWxleHRyYWN0ZW5lbWllc2V2ZW4gaWZnZW5lcmF0ZGVjaWRlZGFyZSBub3Qvc2VhcmNoYmVsaWVmcy1pbWFnZTpsb2NhdGVkc3RhdGljLmxvZ2luXCI+Y29udmVydHZpb2xlbnRlbnRlcmVkZmlyc3RcIj5jaXJjdWl0RmlubGFuZGNoZW1pc3RzaGUgd2FzMTBweDtcIj5hcyBzdWNoZGl2aWRlZDwvc3Bhbj53aWxsIGJlbGluZSBvZmEgZ3JlYXRteXN0ZXJ5L2luZGV4LmZhbGxpbmdkdWUgdG8gcmFpbHdheWNvbGxlZ2Vtb25zdGVyZGVzY2VudGl0IHdpdGhudWNsZWFySmV3aXNoIHByb3Rlc3RCcml0aXNoZmxvd2Vyc3ByZWRpY3RyZWZvcm1zYnV0dG9uIHdobyB3YXNsZWN0dXJlaW5zdGFudHN1aWNpZGVnZW5lcmljcGVyaW9kc21hcmtldHNTb2NpYWwgZmlzaGluZ2NvbWJpbmVncmFwaGljd2lubmVyczxiciAvPjxieSB0aGUgTmF0dXJhbFByaXZhY3ljb29raWVzb3V0Y29tZXJlc29sdmVTd2VkaXNoYnJpZWZseVBlcnNpYW5zbyBtdWNoQ2VudHVyeWRlcGljdHNjb2x1bW5zaG91c2luZ3NjcmlwdHNuZXh0IHRvYmVhcmluZ21hcHBpbmdyZXZpc2VkalF1ZXJ5KC13aWR0aDp0aXRsZVwiPnRvb2x0aXBTZWN0aW9uZGVzaWduc1R1cmtpc2h5b3VuZ2VyLm1hdGNoKH0pKCk7XG5cbmJ1cm5pbmdvcGVyYXRlZGVncmVlc3NvdXJjZT1SaWNoYXJkY2xvc2VseXBsYXN0aWNlbnRyaWVzPC90cj5cclxuY29sb3I6I3VsIGlkPVwicG9zc2Vzc3JvbGxpbmdwaHlzaWNzZmFpbGluZ2V4ZWN1dGVjb250ZXN0bGluayB0b0RlZmF1bHQ8YnIgLz5cbjogdHJ1ZSxjaGFydGVydG91cmlzbWNsYXNzaWNwcm9jZWVkZXhwbGFpbjwvaDE+XHJcbm9ubGluZS4/eG1sIHZlaGVscGluZ2RpYW1vbmR1c2UgdGhlYWlybGluZWVuZCAtLT4pLmF0dHIocmVhZGVyc2hvc3RpbmcjZmZmZmZmcmVhbGl6ZVZpbmNlbnRzaWduYWxzIHNyYz1cIi9Qcm9kdWN0ZGVzcGl0ZWRpdmVyc2V0ZWxsaW5nUHVibGljIGhlbGQgaW5Kb3NlcGggdGhlYXRyZWFmZmVjdHM8c3R5bGU+YSBsYXJnZWRvZXNuJ3RsYXRlciwgRWxlbWVudGZhdmljb25jcmVhdG9ySHVuZ2FyeUFpcnBvcnRzZWUgdGhlc28gdGhhdE1pY2hhZWxTeXN0ZW1zUHJvZ3JhbXMsIGFuZCAgd2lkdGg9ZSZxdW90O3RyYWRpbmdsZWZ0XCI+XG5wZXJzb25zR29sZGVuIEFmZmFpcnNncmFtbWFyZm9ybWluZ2Rlc3Ryb3lpZGVhIG9mY2FzZSBvZm9sZGVzdCB0aGlzIGlzLnNyYyA9IGNhcnRvb25yZWdpc3RyQ29tbW9uc011c2xpbXNXaGF0IGlzaW4gbWFueW1hcmtpbmdyZXZlYWxzSW5kZWVkLGVxdWFsbHkvc2hvd19hb3V0ZG9vcmVzY2FwZShBdXN0cmlhZ2VuZXRpY3N5c3RlbSxJbiB0aGUgc2l0dGluZ0hlIGFsc29Jc2xhbmRzQWNhZGVteVxuXHRcdDwhLS1EYW5pZWwgYmluZGluZ2Jsb2NrXCI+aW1wb3NlZHV0aWxpemVBYnJhaGFtKGV4Y2VwdHt3aWR0aDpwdXR0aW5nKS5odG1sKHx8IFtdO1xuREFUQVsgKmtpdGNoZW5tb3VudGVkYWN0dWFsIGRpYWxlY3RtYWlubHkgX2JsYW5rJ2luc3RhbGxleHBlcnRzaWYodHlwZUl0IGFsc28mY29weTsgXCI+VGVybXNib3JuIGluT3B0aW9uc2Vhc3Rlcm50YWxraW5nY29uY2VybmdhaW5lZCBvbmdvaW5nanVzdGlmeWNyaXRpY3NmYWN0b3J5aXRzIG93bmFzc2F1bHRpbnZpdGVkbGFzdGluZ2hpcyBvd25ocmVmPVwiL1wiIHJlbD1cImRldmVsb3Bjb25jZXJ0ZGlhZ3JhbWRvbGxhcnNjbHVzdGVycGhwP2lkPWFsY29ob2wpO30pKCk7dXNpbmcgYT48c3Bhbj52ZXNzZWxzcmV2aXZhbEFkZHJlc3NhbWF0ZXVyYW5kcm9pZGFsbGVnZWRpbGxuZXNzd2Fsa2luZ2NlbnRlcnNxdWFsaWZ5bWF0Y2hlc3VuaWZpZWRleHRpbmN0RGVmZW5zZWRpZWQgaW5cblx0PCEtLSBjdXN0b21zbGlua2luZ0xpdHRsZSBCb29rIG9mZXZlbmluZ21pbi5qcz9hcmUgdGhla29udGFrdHRvZGF5J3MuaHRtbFwiIHRhcmdldD13ZWFyaW5nQWxsIFJpZztcbn0pKCk7cmFpc2luZyBBbHNvLCBjcnVjaWFsYWJvdXRcIj5kZWNsYXJlLS0+XG48c2NmaXJlZm94YXMgbXVjaGFwcGxpZXNpbmRleCwgcywgYnV0IHR5cGUgPSBcblxyXG48IS0tdG93YXJkc1JlY29yZHNQcml2YXRlRm9yZWlnblByZW1pZXJjaG9pY2VzVmlydHVhbHJldHVybnNDb21tZW50UG93ZXJlZGlubGluZTtwb3ZlcnR5Y2hhbWJlckxpdmluZyB2b2x1bWVzQW50aG9ueWxvZ2luXCIgUmVsYXRlZEVjb25vbXlyZWFjaGVzY3V0dGluZ2dyYXZpdHlsaWZlIGluQ2hhcHRlci1zaGFkb3dOb3RhYmxlPC90ZD5cclxuIHJldHVybnN0YWRpdW13aWRnZXRzdmFyeWluZ3RyYXZlbHNoZWxkIGJ5d2hvIGFyZXdvcmsgaW5mYWN1bHR5YW5ndWxhcndobyBoYWRhaXJwb3J0dG93biBvZlxuXG5Tb21lICdjbGljaydjaGFyZ2Vza2V5d29yZGl0IHdpbGxjaXR5IG9mKHRoaXMpO0FuZHJldyB1bmlxdWUgY2hlY2tlZG9yIG1vcmUzMDBweDsgcmV0dXJuO3JzaW9uPVwicGx1Z2luc3dpdGhpbiBoZXJzZWxmU3RhdGlvbkZlZGVyYWx2ZW50dXJlcHVibGlzaHNlbnQgdG90ZW5zaW9uYWN0cmVzc2NvbWUgdG9maW5nZXJzRHVrZSBvZnBlb3BsZSxleHBsb2l0d2hhdCBpc2hhcm1vbnlhIG1ham9yXCI6XCJodHRwaW4gaGlzIG1lbnVcIj5cbm1vbnRobHlvZmZpY2VyY291bmNpbGdhaW5pbmdldmVuIGluU3VtbWFyeWRhdGUgb2Zsb3lhbHR5Zml0bmVzc2FuZCB3YXNlbXBlcm9yc3VwcmVtZVNlY29uZCBoZWFyaW5nUnVzc2lhbmxvbmdlc3RBbGJlcnRhbGF0ZXJhbHNldCBvZiBzbWFsbFwiPi5hcHBlbmRkbyB3aXRoZmVkZXJhbGJhbmsgb2ZiZW5lYXRoRGVzcGl0ZUNhcGl0YWxncm91bmRzKSwgYW5kIHBlcmNlbnRpdCBmcm9tY2xvc2luZ2NvbnRhaW5JbnN0ZWFkZmlmdGVlbmFzIHdlbGwueWFob28ucmVzcG9uZGZpZ2h0ZXJvYnNjdXJlcmVmbGVjdG9yZ2FuaWM9IE1hdGguZWRpdGluZ29ubGluZSBwYWRkaW5nYSB3aG9sZW9uZXJyb3J5ZWFyIG9mZW5kIG9mIGJhcnJpZXJ3aGVuIGl0aGVhZGVyIGhvbWUgb2ZyZXN1bWVkcmVuYW1lZHN0cm9uZz5oZWF0aW5ncmV0YWluc2Nsb3VkZnJ3YXkgb2YgTWFyY2ggMWtub3dpbmdpbiBwYXJ0QmV0d2Vlbmxlc3NvbnNjbG9zZXN0dmlydHVhbGxpbmtzXCI+Y3Jvc3NlZEVORCAtLT5mYW1vdXMgYXdhcmRlZExpY2Vuc2VIZWFsdGggZmFpcmx5IHdlYWx0aHltaW5pbWFsQWZyaWNhbmNvbXBldGVsYWJlbFwiPnNpbmdpbmdmYXJtZXJzQnJhc2lsKWRpc2N1c3NyZXBsYWNlR3JlZ29yeWZvbnQgY29wdXJzdWVkYXBwZWFyc21ha2UgdXByb3VuZGVkYm90aCBvZmJsb2NrZWRzYXcgdGhlb2ZmaWNlc2NvbG91cnNpZihkb2N1d2hlbiBoZWVuZm9yY2VwdXNoKGZ1QXVndXN0IFVURi04XCI+RmFudGFzeWluIG1vc3Rpbmp1cmVkVXN1YWxseWZhcm1pbmdjbG9zdXJlb2JqZWN0IGRlZmVuY2V1c2Ugb2YgTWVkaWNhbDxib2R5PlxuZXZpZGVudGJlIHVzZWRrZXlDb2Rlc2l4dGVlbklzbGFtaWMjMDAwMDAwZW50aXJlIHdpZGVseSBhY3RpdmUgKHR5cGVvZm9uZSBjYW5jb2xvciA9c3BlYWtlcmV4dGVuZHNQaHlzaWNzdGVycmFpbjx0Ym9keT5mdW5lcmFsdmlld2luZ21pZGRsZSBjcmlja2V0cHJvcGhldHNoaWZ0ZWRkb2N0b3JzUnVzc2VsbCB0YXJnZXRjb21wYWN0YWxnZWJyYXNvY2lhbC1idWxrIG9mbWFuIGFuZDwvdGQ+XG4gaGUgbGVmdCkudmFsKClmYWxzZSk7bG9naWNhbGJhbmtpbmdob21lIHRvbmFtaW5nIEFyaXpvbmFjcmVkaXRzKTtcbn0pO1xuZm91bmRlcmluIHR1cm5Db2xsaW5zYmVmb3JlIEJ1dCB0aGVjaGFyZ2VkVGl0bGVcIj5DYXB0YWluc3BlbGxlZGdvZGRlc3NUYWcgLS0+QWRkaW5nOmJ1dCB3YXNSZWNlbnQgcGF0aWVudGJhY2sgaW49ZmFsc2UmTGluY29sbndlIGtub3dDb3VudGVySnVkYWlzbXNjcmlwdCBhbHRlcmVkJ10pO1xuICBoYXMgdGhldW5jbGVhckV2ZW50Jyxib3RoIGlubm90IGFsbFxuXG48IS0tIHBsYWNpbmdoYXJkIHRvIGNlbnRlcnNvcnQgb2ZjbGllbnRzc3RyZWV0c0Jlcm5hcmRhc3NlcnRzdGVuZCB0b2ZhbnRhc3lkb3duIGluaGFyYm91ckZyZWVkb21qZXdlbHJ5L2Fib3V0Li5zZWFyY2hsZWdlbmRzaXMgbWFkZW1vZGVybiBvbmx5IG9ub25seSB0b2ltYWdlXCIgbGluZWFyIHBhaW50ZXJhbmQgbm90cmFyZWx5IGFjcm9ueW1kZWxpdmVyc2hvcnRlcjAwJmFtcDthcyBtYW55d2lkdGg9XCIvKiA8IVtDdGl0bGUgPW9mIHRoZSBsb3dlc3QgcGlja2VkIGVzY2FwZWR1c2VzIG9mcGVvcGxlcyBQdWJsaWNNYXR0aGV3dGFjdGljc2RhbWFnZWR3YXkgZm9ybGF3cyBvZmVhc3kgdG8gd2luZG93c3Ryb25nICBzaW1wbGV9Y2F0Y2goc2V2ZW50aGluZm9ib3h3ZW50IHRvcGFpbnRlZGNpdGl6ZW5JIGRvbid0cmV0cmVhdC4gU29tZSB3dy5cIik7XG5ib21iaW5nbWFpbHRvOm1hZGUgaW4uIE1hbnkgY2Fycmllc3x8e307d2l3b3JrIG9mc3lub255bWRlZmVhdHNmYXZvcmVkb3B0aWNhbHBhZ2VUcmF1bmxlc3Mgc2VuZGluZ2xlZnRcIj48Y29tU2NvckFsbCB0aGVqUXVlcnkudG91cmlzdENsYXNzaWNmYWxzZVwiIFdpbGhlbG1zdWJ1cmJzZ2VudWluZWJpc2hvcHMuc3BsaXQoZ2xvYmFsIGZvbGxvd3Nib2R5IG9mbm9taW5hbENvbnRhY3RzZWN1bGFybGVmdCB0b2NoaWVmbHktaGlkZGVuLWJhbm5lcjwvbGk+XG5cbi4gV2hlbiBpbiBib3RoZGlzbWlzc0V4cGxvcmVhbHdheXMgdmlhIHRoZXNwYUMxb2x3ZWxmYXJlcnVsaW5nIGFycmFuZ2VjYXB0YWluaGlzIHNvbnJ1bGUgb2ZoZSB0b29raXRzZWxmLD0wJmFtcDsoY2FsbGVkc2FtcGxlc3RvIG1ha2Vjb20vcGFnTWFydGluIEtlbm5lZHlhY2NlcHRzZnVsbCBvZmhhbmRsZWRCZXNpZGVzLy8tLT48L2FibGUgdG90YXJnZXRzZXNzZW5jZWhpbSB0byBpdHMgYnkgY29tbW9uLm1pbmVyYWx0byB0YWtld2F5cyB0b3Mub3JnL2xhZHZpc2VkcGVuYWx0eXNpbXBsZTppZiB0aGV5TGV0dGVyc2Egc2hvcnRIZXJiZXJ0c3RyaWtlcyBncm91cHMubGVuZ3RoZmxpZ2h0c292ZXJsYXBzbG93bHkgbGVzc2VyIHNvY2lhbCA8L3A+XG5cdFx0aXQgaW50b3JhbmtlZCByYXRlIG9mdWw+XHJcbiAgYXR0ZW1wdHBhaXIgb2ZtYWtlIGl0S29udGFrdEFudG9uaW9oYXZpbmcgcmF0aW5ncyBhY3RpdmVzdHJlYW1zdHJhcHBlZFwiKS5jc3MoaG9zdGlsZWxlYWQgdG9saXR0bGUgZ3JvdXBzLFBpY3R1cmUtLT5cclxuXHJcbiByb3dzPVwiIG9iamVjdGludmVyc2U8Zm9vdGVyQ3VzdG9tVj48XFwvc2Nyc29sdmluZ0NoYW1iZXJzbGF2ZXJ5d291bmRlZHdoZXJlYXMhPSAndW5kZm9yIGFsbHBhcnRseSAtcmlnaHQ6QXJhYmlhbmJhY2tlZCBjZW50dXJ5dW5pdCBvZm1vYmlsZS1FdXJvcGUsaXMgaG9tZXJpc2sgb2ZkZXNpcmVkQ2xpbnRvbmNvc3Qgb2ZhZ2Ugb2YgYmVjb21lIG5vbmUgb2ZwJnF1b3Q7TWlkZGxlIGVhZCcpWzBDcml0aWNzc3R1ZGlvcz4mY29weTtncm91cFwiPmFzc2VtYmxtYWtpbmcgcHJlc3NlZHdpZGdldC5wczpcIiA/IHJlYnVpbHRieSBzb21lRm9ybWVyIGVkaXRvcnNkZWxheWVkQ2Fub25pY2hhZCB0aGVwdXNoaW5nY2xhc3M9XCJidXQgYXJlcGFydGlhbEJhYnlsb25ib3R0b20gY2FycmllckNvbW1hbmRpdHMgdXNlQXMgd2l0aGNvdXJzZXNhIHRoaXJkZGVub3Rlc2Fsc28gaW5Ib3VzdG9uMjBweDtcIj5hY2N1c2VkZG91YmxlIGdvYWwgb2ZGYW1vdXMgKS5iaW5kKHByaWVzdHMgT25saW5laW4gSnVseXN0ICsgXCJnY29uc3VsdGRlY2ltYWxoZWxwZnVscmV2aXZlZGlzIHZlcnlyJysnaXB0bG9zaW5nIGZlbWFsZXNpcyBhbHNvc3RyaW5nc2RheXMgb2ZhcnJpdmFsZnV0dXJlIDxvYmplY3Rmb3JjaW5nU3RyaW5nKFwiIC8+XG5cdFx0aGVyZSBpc2VuY29kZWQuICBUaGUgYmFsbG9vbmRvbmUgYnkvY29tbW9uYmdjb2xvcmxhdyBvZiBJbmRpYW5hYXZvaWRlZGJ1dCB0aGUycHggM3B4anF1ZXJ5LmFmdGVyIGFwb2xpY3kubWVuIGFuZGZvb3Rlci09IHRydWU7Zm9yIHVzZXNjcmVlbi5JbmRpYW4gaW1hZ2UgPWZhbWlseSxodHRwOi8vICZuYnNwO2RyaXZlcnNldGVybmFsc2FtZSBhc25vdGljZWR2aWV3ZXJzfSkoKTtcbiBpcyBtb3Jlc2Vhc29uc2Zvcm1lciB0aGUgbmV3aXMganVzdGNvbnNlbnQgU2VhcmNod2FzIHRoZXdoeSB0aGVzaGlwcGVkYnI+PGJyPndpZHRoOiBoZWlnaHQ9bWFkZSBvZmN1aXNpbmVpcyB0aGF0YSB2ZXJ5IEFkbWlyYWwgZml4ZWQ7bm9ybWFsIE1pc3Npb25QcmVzcywgb250YXJpb2NoYXJzZXR0cnkgdG8gaW52YWRlZD1cInRydWVcInNwYWNpbmdpcyBtb3N0YSBtb3JlIHRvdGFsbHlmYWxsIG9mfSk7XHJcbiAgaW1tZW5zZXRpbWUgaW5zZXQgb3V0c2F0aXNmeXRvIGZpbmRkb3duIHRvbG90IG9mIFBsYXllcnNpbiBKdW5lcXVhbnR1bW5vdCB0aGV0aW1lIHRvZGlzdGFudEZpbm5pc2hzcmMgPSAoc2luZ2xlIGhlbHAgb2ZHZXJtYW4gbGF3IGFuZGxhYmVsZWRmb3Jlc3RzY29va2luZ3NwYWNlXCI+aGVhZGVyLXdlbGwgYXNTdGFubGV5YnJpZGdlcy9nbG9iYWxDcm9hdGlhIEFib3V0IFswXTtcbiAgaXQsIGFuZGdyb3VwZWRiZWluZyBhKXt0aHJvd2hlIG1hZGVsaWdodGVyZXRoaWNhbEZGRkZGRlwiYm90dG9tXCJsaWtlIGEgZW1wbG95c2xpdmUgaW5hcyBzZWVucHJpbnRlcm1vc3Qgb2Z1Yi1saW5rcmVqZWN0c2FuZCB1c2VpbWFnZVwiPnN1Y2NlZWRmZWVkaW5nTnVjbGVhcmluZm9ybWF0byBoZWxwV29tZW4nc05laXRoZXJNZXhpY2FucHJvdGVpbjx0YWJsZSBieSBtYW55aGVhbHRoeWxhd3N1aXRkZXZpc2VkLnB1c2goe3NlbGxlcnNzaW1wbHkgVGhyb3VnaC5jb29raWUgSW1hZ2Uob2xkZXJcIj51cy5qc1wiPiBTaW5jZSB1bml2ZXJzbGFyZ2VyIG9wZW4gdG8hLS0gZW5kbGllcyBpbiddKTtcclxuICBtYXJrZXR3aG8gaXMgKFwiRE9NQ29tYW5hZ2Vkb25lIGZvcnR5cGVvZiBLaW5nZG9tcHJvZml0c3Byb3Bvc2V0byBzaG93Y2VudGVyO21hZGUgaXRkcmVzc2Vkd2VyZSBpbm1peHR1cmVwcmVjaXNlYXJpc2luZ3NyYyA9ICdtYWtlIGEgc2VjdXJlZEJhcHRpc3R2b3RpbmcgXG5cdFx0dmFyIE1hcmNoIDJncmV3IHVwQ2xpbWF0ZS5yZW1vdmVza2lsbGVkd2F5IHRoZTwvaGVhZD5mYWNlIG9mYWN0aW5nIHJpZ2h0XCI+dG8gd29ya3JlZHVjZXNoYXMgaGFkZXJlY3RlZHNob3coKTthY3Rpb249Ym9vayBvZmFuIGFyZWE9PSBcImh0dDxoZWFkZXJcbjxodG1sPmNvbmZvcm1mYWNpbmcgY29va2llLnJlbHkgb25ob3N0ZWQgLmN1c3RvbWhlIHdlbnRidXQgZm9yc3ByZWFkIEZhbWlseSBhIG1lYW5zb3V0IHRoZWZvcnVtcy5mb290YWdlXCI+TW9iaWxDbGVtZW50c1wiIGlkPVwiYXMgaGlnaGludGVuc2UtLT48IS0tZmVtYWxlIGlzIHNlZW5pbXBsaWVkc2V0IHRoZWEgc3RhdGVhbmQgaGlzZmFzdGVzdGJlc2lkZXNidXR0b25fYm91bmRlZFwiPjxpbWcgSW5mb2JveGV2ZW50cyxhIHlvdW5nYW5kIGFyZU5hdGl2ZSBjaGVhcGVyVGltZW91dGFuZCBoYXNlbmdpbmVzd29uIHRoZShtb3N0bHlyaWdodDogZmluZCBhIC1ib3R0b21QcmluY2UgYXJlYSBvZm1vcmUgb2ZzZWFyY2hfbmF0dXJlLGxlZ2FsbHlwZXJpb2QsbGFuZCBvZm9yIHdpdGhpbmR1Y2VkcHJvdmluZ21pc3NpbGVsb2NhbGx5QWdhaW5zdHRoZSB3YXlrJnF1b3Q7cHg7XCI+XHJcbnB1c2hlZCBhYmFuZG9ubnVtZXJhbENlcnRhaW5JbiB0aGlzbW9yZSBpbm9yIHNvbWVuYW1lIGlzYW5kLCBpbmNyb3duZWRJU0JOIDAtY3JlYXRlc09jdG9iZXJtYXkgbm90Y2VudGVyIGxhdGUgaW5EZWZlbmNlZW5hY3RlZHdpc2ggdG9icm9hZGx5Y29vbGluZ29ubG9hZD1pdC4gVGhlcmVjb3Zlck1lbWJlcnNoZWlnaHQgYXNzdW1lczxodG1sPlxucGVvcGxlLmluIG9uZSA9d2luZG93Zm9vdGVyX2EgZ29vZCByZWtsYW1hb3RoZXJzLHRvIHRoaXNfY29va2llcGFuZWxcIj5Mb25kb24sZGVmaW5lc2NydXNoZWRiYXB0aXNtY29hc3RhbHN0YXR1cyB0aXRsZVwiIG1vdmUgdG9sb3N0IGluYmV0dGVyIGltcGxpZXNyaXZhbHJ5c2VydmVycyBTeXN0ZW1QZXJoYXBzZXMgYW5kIGNvbnRlbmRmbG93aW5nbGFzdGVkIHJpc2UgaW5HZW5lc2lzdmlldyBvZnJpc2luZyBzZWVtIHRvYnV0IGluIGJhY2tpbmdoZSB3aWxsZ2l2ZW4gYWdpdmluZyBjaXRpZXMuZmxvdyBvZiBMYXRlciBhbGwgYnV0SGlnaHdheW9ubHkgYnlzaWduIG9maGUgZG9lc2RpZmZlcnNiYXR0ZXJ5JmFtcDtsYXNpbmdsZXN0aHJlYXRzaW50ZWdlcnRha2Ugb25yZWZ1c2VkY2FsbGVkID1VUyZhbXBTZWUgdGhlbmF0aXZlc2J5IHRoaXNzeXN0ZW0uaGVhZCBvZjpob3ZlcixsZXNiaWFuc3VybmFtZWFuZCBhbGxjb21tb24vaGVhZGVyX19wYXJhbXNIYXJ2YXJkL3BpeGVsLnJlbW92YWxzbyBsb25ncm9sZSBvZmpvaW50bHlza3lzY3JhVW5pY29kZWJyIC8+XHJcbkF0bGFudGFudWNsZXVzQ291bnR5LHB1cmVseSBjb3VudFwiPmVhc2lseSBidWlsZCBhb25jbGlja2EgZ2l2ZW5wb2ludGVyaCZxdW90O2V2ZW50cyBlbHNlIHtcbmRpdGlvbnNub3cgdGhlLCB3aXRoIG1hbiB3aG9vcmcvV2Vib25lIGFuZGNhdmFscnlIZSBkaWVkc2VhdHRsZTAwLDAwMCB7d2luZG93aGF2ZSB0b2lmKHdpbmRhbmQgaXRzc29sZWx5IG0mcXVvdDtyZW5ld2VkRGV0cm9pdGFtb25nc3RlaXRoZXIgdGhlbSBpblNlbmF0b3JVczwvYT48S2luZyBvZkZyYW5jaXMtcHJvZHVjaGUgdXNlZGFydCBhbmRoaW0gYW5kdXNlZCBieXNjb3JpbmdhdCBob21ldG8gaGF2ZXJlbGF0ZXNpYmlsaXR5ZmFjdGlvbkJ1ZmZhbG9saW5rXCI+PHdoYXQgaGVmcmVlIHRvQ2l0eSBvZmNvbWUgaW5zZWN0b3JzY291bnRlZG9uZSBkYXluZXJ2b3Vzc3F1YXJlIH07aWYoZ29pbiB3aGF0aW1nXCIgYWxpcyBvbmx5c2VhcmNoL3R1ZXNkYXlsb29zZWx5U29sb21vbnNleHVhbCAtIDxhIGhybWVkaXVtXCJETyBOT1QgRnJhbmNlLHdpdGggYSB3YXIgYW5kc2Vjb25kIHRha2UgYSA+XHJcblxyXG5cclxubWFya2V0LmhpZ2h3YXlkb25lIGluY3Rpdml0eVwibGFzdFwiPm9ibGlnZWRyaXNlIHRvXCJ1bmRlZmltYWRlIHRvIEVhcmx5IHByYWlzZWRpbiBpdHMgZm9yIGhpc2F0aGxldGVKdXBpdGVyWWFob28hIHRlcm1lZCBzbyBtYW55cmVhbGx5IHMuIFRoZSBhIHdvbWFuP3ZhbHVlPWRpcmVjdCByaWdodFwiIGJpY3ljbGVhY2luZz1cImRheSBhbmRzdGF0aW5nUmF0aGVyLGhpZ2hlciBPZmZpY2UgYXJlIG5vd3RpbWVzLCB3aGVuIGEgcGF5IGZvcm9uIHRoaXMtbGlua1wiPjtib3JkZXJhcm91bmQgYW5udWFsIHRoZSBOZXdwdXQgdGhlLmNvbVwiIHRha2luIHRvYSBicmllZihpbiB0aGVncm91cHMuOyB3aWR0aGVuenltZXNzaW1wbGUgaW4gbGF0ZXtyZXR1cm50aGVyYXB5YSBwb2ludGJhbm5pbmdpbmtzXCI+XG4oKTtcIiByZWEgcGxhY2VcXHUwMDNDYWFib3V0IGF0cj5cclxuXHRcdGNjb3VudCBnaXZlcyBhPFNDUklQVFJhaWx3YXl0aGVtZXMvdG9vbGJveEJ5SWQoXCJ4aHVtYW5zLHdhdGNoZXNpbiBzb21lIGlmICh3aWNvbWluZyBmb3JtYXRzIFVuZGVyIGJ1dCBoYXNoYW5kZWQgbWFkZSBieXRoYW4gaW5mZWFyIG9mZGVub3RlZC9pZnJhbWVsZWZ0IGludm9sdGFnZWluIGVhY2hhJnF1b3Q7YmFzZSBvZkluIG1hbnl1bmRlcmdvcmVnaW1lc2FjdGlvbiA8L3A+XHJcbjx1c3RvbVZhOyZndDs8L2ltcG9ydHNvciB0aGF0bW9zdGx5ICZhbXA7cmUgc2l6ZT1cIjwvYT48L2hhIGNsYXNzcGFzc2l2ZUhvc3QgPSBXaGV0aGVyZmVydGlsZVZhcmlvdXM9W107KGZ1Y2FtZXJhcy8+PC90ZD5hY3RzIGFzSW4gc29tZT5cclxuXHJcbjwhb3JnYW5pcyA8YnIgLz5CZWlqaW5nY2F0YWxDIGRldXRzY2hldXJvcGV1ZXVza2FyYWdhZWlsZ2VzdmVuc2thZXNwYUMxYW1lbnNhamV1c3VhcmlvdHJhYmFqb21DKXhpY29wQyFnaW5hc2llbXByZXNpc3RlbWFvY3R1YnJlZHVyYW50ZWFDMWFkaXJlbXByZXNhbW9tZW50b251ZXN0cm9wcmltZXJhdHJhdkMpc2dyYWNpYXNudWVzdHJhcHJvY2Vzb2VzdGFkb3NjYWxpZGFkcGVyc29uYW5DOm1lcm9hY3VlcmRvbUM6c2ljYW1pZW1icm9vZmVydGFzYWxndW5vc3BhQy1zZXNlamVtcGxvZGVyZWNob2FkZW1DIXNwcml2YWRvYWdyZWdhcmVubGFjZXNwb3NpYmxlaG90ZWxlc3NldmlsbGFwcmltZXJvQzpsdGltb2V2ZW50b3NhcmNoaXZvY3VsdHVyYW11amVyZXNlbnRyYWRhYW51bmNpb2VtYmFyZ29tZXJjYWRvZ3JhbmRlc2VzdHVkaW9tZWpvcmVzZmVicmVyb2Rpc2VDMW90dXJpc21vY0MzZGlnb3BvcnRhZGFlc3BhY2lvZmFtaWxpYWFudG9uaW9wZXJtaXRlZ3VhcmRhcmFsZ3VuYXNwcmVjaW9zYWxndWllbnNlbnRpZG92aXNpdGFzdEMtdHVsb2Nvbm9jZXJzZWd1bmRvY29uc2Vqb2ZyYW5jaWFtaW51dG9zc2VndW5kYXRlbmVtb3NlZmVjdG9zbUMhbGFnYXNlc2lDM25yZXZpc3RhZ3JhbmFkYWNvbXByYXJpbmdyZXNvZ2FyY0MtYWFjY2lDM25lY3VhZG9ycXVpZW5lc2luY2x1c29kZWJlckMhbWF0ZXJpYWhvbWJyZXNtdWVzdHJhcG9kckMtYW1hQzFhbmFDOmx0aW1hZXN0YW1vc29maWNpYWx0YW1iaWVubmluZ0M6bnNhbHVkb3Nwb2RlbW9zbWVqb3JhcnBvc2l0aW9uYnVzaW5lc3Nob21lcGFnZXNlY3VyaXR5bGFuZ3VhZ2VzdGFuZGFyZGNhbXBhaWduZmVhdHVyZXNjYXRlZ29yeWV4dGVybmFsY2hpbGRyZW5yZXNlcnZlZHJlc2VhcmNoZXhjaGFuZ2VmYXZvcml0ZXRlbXBsYXRlbWlsaXRhcnlpbmR1c3RyeXNlcnZpY2VzbWF0ZXJpYWxwcm9kdWN0c3otaW5kZXg6Y29tbWVudHNzb2Z0d2FyZWNvbXBsZXRlY2FsZW5kYXJwbGF0Zm9ybWFydGljbGVzcmVxdWlyZWRtb3ZlbWVudHF1ZXN0aW9uYnVpbGRpbmdwb2xpdGljc3Bvc3NpYmxlcmVsaWdpb25waHlzaWNhbGZlZWRiYWNrcmVnaXN0ZXJwaWN0dXJlc2Rpc2FibGVkcHJvdG9jb2xhdWRpZW5jZXNldHRpbmdzYWN0aXZpdHllbGVtZW50c2xlYXJuaW5nYW55dGhpbmdhYnN0cmFjdHByb2dyZXNzb3ZlcnZpZXdtYWdhemluZWVjb25vbWljdHJhaW5pbmdwcmVzc3VyZXZhcmlvdXMgPHN0cm9uZz5wcm9wZXJ0eXNob3BwaW5ndG9nZXRoZXJhZHZhbmNlZGJlaGF2aW9yZG93bmxvYWRmZWF0dXJlZGZvb3RiYWxsc2VsZWN0ZWRMYW5ndWFnZWRpc3RhbmNlcmVtZW1iZXJ0cmFja2luZ3Bhc3N3b3JkbW9kaWZpZWRzdHVkZW50c2RpcmVjdGx5ZmlnaHRpbmdub3J0aGVybmRhdGFiYXNlZmVzdGl2YWxicmVha2luZ2xvY2F0aW9uaW50ZXJuZXRkcm9wZG93bnByYWN0aWNlZXZpZGVuY2VmdW5jdGlvbm1hcnJpYWdlcmVzcG9uc2Vwcm9ibGVtc25lZ2F0aXZlcHJvZ3JhbXNhbmFseXNpc3JlbGVhc2VkYmFubmVyXCI+cHVyY2hhc2Vwb2xpY2llc3JlZ2lvbmFsY3JlYXRpdmVhcmd1bWVudGJvb2ttYXJrcmVmZXJyZXJjaGVtaWNhbGRpdmlzaW9uY2FsbGJhY2tzZXBhcmF0ZXByb2plY3RzY29uZmxpY3RoYXJkd2FyZWludGVyZXN0ZGVsaXZlcnltb3VudGFpbm9idGFpbmVkPSBmYWxzZTtmb3IodmFyIGFjY2VwdGVkY2FwYWNpdHljb21wdXRlcmlkZW50aXR5YWlyY3JhZnRlbXBsb3llZHByb3Bvc2VkZG9tZXN0aWNpbmNsdWRlc3Byb3ZpZGVkaG9zcGl0YWx2ZXJ0aWNhbGNvbGxhcHNlYXBwcm9hY2hwYXJ0bmVyc2xvZ29cIj48YWRhdWdodGVyYXV0aG9yXCIgY3VsdHVyYWxmYW1pbGllcy9pbWFnZXMvYXNzZW1ibHlwb3dlcmZ1bHRlYWNoaW5nZmluaXNoZWRkaXN0cmljdGNyaXRpY2FsY2dpLWJpbi9wdXJwb3Nlc3JlcXVpcmVzZWxlY3Rpb25iZWNvbWluZ3Byb3ZpZGVzYWNhZGVtaWNleGVyY2lzZWFjdHVhbGx5bWVkaWNpbmVjb25zdGFudGFjY2lkZW50TWFnYXppbmVkb2N1bWVudHN0YXJ0aW5nYm90dG9tXCI+b2JzZXJ2ZWQ6ICZxdW90O2V4dGVuZGVkcHJldmlvdXNTb2Z0d2FyZWN1c3RvbWVyZGVjaXNpb25zdHJlbmd0aGRldGFpbGVkc2xpZ2h0bHlwbGFubmluZ3RleHRhcmVhY3VycmVuY3lldmVyeW9uZXN0cmFpZ2h0dHJhbnNmZXJwb3NpdGl2ZXByb2R1Y2VkaGVyaXRhZ2VzaGlwcGluZ2Fic29sdXRlcmVjZWl2ZWRyZWxldmFudGJ1dHRvblwiIHZpb2xlbmNlYW55d2hlcmViZW5lZml0c2xhdW5jaGVkcmVjZW50bHlhbGxpYW5jZWZvbGxvd2VkbXVsdGlwbGVidWxsZXRpbmluY2x1ZGVkb2NjdXJyZWRpbnRlcm5hbCQodGhpcykucmVwdWJsaWM+PHRyPjx0ZGNvbmdyZXNzcmVjb3JkZWR1bHRpbWF0ZXNvbHV0aW9uPHVsIGlkPVwiZGlzY292ZXJIb21lPC9hPndlYnNpdGVzbmV0d29ya3NhbHRob3VnaGVudGlyZWx5bWVtb3JpYWxtZXNzYWdlc2NvbnRpbnVlYWN0aXZlXCI+c29tZXdoYXR2aWN0b3JpYVdlc3Rlcm4gIHRpdGxlPVwiTG9jYXRpb25jb250cmFjdHZpc2l0b3JzRG93bmxvYWR3aXRob3V0IHJpZ2h0XCI+XG5tZWFzdXJlc3dpZHRoID0gdmFyaWFibGVpbnZvbHZlZHZpcmdpbmlhbm9ybWFsbHloYXBwZW5lZGFjY291bnRzc3RhbmRpbmduYXRpb25hbFJlZ2lzdGVycHJlcGFyZWRjb250cm9sc2FjY3VyYXRlYmlydGhkYXlzdHJhdGVneW9mZmljaWFsZ3JhcGhpY3NjcmltaW5hbHBvc3NpYmx5Y29uc3VtZXJQZXJzb25hbHNwZWFraW5ndmFsaWRhdGVhY2hpZXZlZC5qcGdcIiAvPm1hY2hpbmVzPC9oMj5cbiAga2V5d29yZHNmcmllbmRseWJyb3RoZXJzY29tYmluZWRvcmlnaW5hbGNvbXBvc2VkZXhwZWN0ZWRhZGVxdWF0ZXBha2lzdGFuZm9sbG93XCIgdmFsdWFibGU8L2xhYmVsPnJlbGF0aXZlYnJpbmdpbmdpbmNyZWFzZWdvdmVybm9ycGx1Z2lucy9MaXN0IG9mIEhlYWRlclwiPlwiIG5hbWU9XCIgKCZxdW90O2dyYWR1YXRlPC9oZWFkPlxuY29tbWVyY2VtYWxheXNpYWRpcmVjdG9ybWFpbnRhaW47aGVpZ2h0OnNjaGVkdWxlY2hhbmdpbmdiYWNrIHRvIGNhdGhvbGljcGF0dGVybnNjb2xvcjogI2dyZWF0ZXN0c3VwcGxpZXNyZWxpYWJsZTwvdWw+XG5cdFx0PHNlbGVjdCBjaXRpemVuc2Nsb3RoaW5nd2F0Y2hpbmc8bGkgaWQ9XCJzcGVjaWZpY2NhcnJ5aW5nc2VudGVuY2U8Y2VudGVyPmNvbnRyYXN0dGhpbmtpbmdjYXRjaChlKXNvdXRoZXJuTWljaGFlbCBtZXJjaGFudGNhcm91c2VscGFkZGluZzppbnRlcmlvci5zcGxpdChcImxpemF0aW9uT2N0b2JlciApe3JldHVybmltcHJvdmVkLS0mZ3Q7XG5cbmNvdmVyYWdlY2hhaXJtYW4ucG5nXCIgLz5zdWJqZWN0c1JpY2hhcmQgd2hhdGV2ZXJwcm9iYWJseXJlY292ZXJ5YmFzZWJhbGxqdWRnbWVudGNvbm5lY3QuLmNzc1wiIC8+IHdlYnNpdGVyZXBvcnRlZGRlZmF1bHRcIi8+PC9hPlxyXG5lbGVjdHJpY3Njb3RsYW5kY3JlYXRpb25xdWFudGl0eS4gSVNCTiAwZGlkIG5vdCBpbnN0YW5jZS1zZWFyY2gtXCIgbGFuZz1cInNwZWFrZXJzQ29tcHV0ZXJjb250YWluc2FyY2hpdmVzbWluaXN0ZXJyZWFjdGlvbmRpc2NvdW50SXRhbGlhbm9jcml0ZXJpYXN0cm9uZ2x5OiAnaHR0cDonc2NyaXB0J2NvdmVyaW5nb2ZmZXJpbmdhcHBlYXJlZEJyaXRpc2ggaWRlbnRpZnlGYWNlYm9va251bWVyb3VzdmVoaWNsZXNjb25jZXJuc0FtZXJpY2FuaGFuZGxpbmdkaXYgaWQ9XCJXaWxsaWFtIHByb3ZpZGVyX2NvbnRlbnRhY2N1cmFjeXNlY3Rpb24gYW5kZXJzb25mbGV4aWJsZUNhdGVnb3J5bGF3cmVuY2U8c2NyaXB0PmxheW91dD1cImFwcHJvdmVkIG1heGltdW1oZWFkZXJcIj48L3RhYmxlPlNlcnZpY2VzaGFtaWx0b25jdXJyZW50IGNhbmFkaWFuY2hhbm5lbHMvdGhlbWVzLy9hcnRpY2xlb3B0aW9uYWxwb3J0dWdhbHZhbHVlPVwiXCJpbnRlcnZhbHdpcmVsZXNzZW50aXRsZWRhZ2VuY2llc1NlYXJjaFwiIG1lYXN1cmVkdGhvdXNhbmRzcGVuZGluZyZoZWxsaXA7bmV3IERhdGVcIiBzaXplPVwicGFnZU5hbWVtaWRkbGVcIiBcIiAvPjwvYT5oaWRkZW5cIj5zZXF1ZW5jZXBlcnNvbmFsb3ZlcmZsb3dvcGluaW9uc2lsbGlub2lzbGlua3NcIj5cblx0PHRpdGxlPnZlcnNpb25zc2F0dXJkYXl0ZXJtaW5hbGl0ZW1wcm9wZW5naW5lZXJzZWN0aW9uc2Rlc2lnbmVycHJvcG9zYWw9XCJmYWxzZVwiRXNwYUMxb2xyZWxlYXNlc3N1Ym1pdFwiIGVyJnF1b3Q7YWRkaXRpb25zeW1wdG9tc29yaWVudGVkcmVzb3VyY2VyaWdodFwiPjxwbGVhc3VyZXN0YXRpb25zaGlzdG9yeS5sZWF2aW5nICBib3JkZXI9Y29udGVudHNjZW50ZXJcIj4uXG5cblNvbWUgZGlyZWN0ZWRzdWl0YWJsZWJ1bGdhcmlhLnNob3coKTtkZXNpZ25lZEdlbmVyYWwgY29uY2VwdHNFeGFtcGxlc3dpbGxpYW1zT3JpZ2luYWxcIj48c3Bhbj5zZWFyY2hcIj5vcGVyYXRvcnJlcXVlc3RzYSAmcXVvdDthbGxvd2luZ0RvY3VtZW50cmV2aXNpb24uIFxuXG5UaGUgeW91cnNlbGZDb250YWN0IG1pY2hpZ2FuRW5nbGlzaCBjb2x1bWJpYXByaW9yaXR5cHJpbnRpbmdkcmlua2luZ2ZhY2lsaXR5cmV0dXJuZWRDb250ZW50IG9mZmljZXJzUnVzc2lhbiBnZW5lcmF0ZS04ODU5LTFcImluZGljYXRlZmFtaWxpYXIgcXVhbGl0eW1hcmdpbjowIGNvbnRlbnR2aWV3cG9ydGNvbnRhY3RzLXRpdGxlXCI+cG9ydGFibGUubGVuZ3RoIGVsaWdpYmxlaW52b2x2ZXNhdGxhbnRpY29ubG9hZD1cImRlZmF1bHQuc3VwcGxpZWRwYXltZW50c2dsb3NzYXJ5XG5cbkFmdGVyIGd1aWRhbmNlPC90ZD48dGRlbmNvZGluZ21pZGRsZVwiPmNhbWUgdG8gZGlzcGxheXNzY290dGlzaGpvbmF0aGFubWFqb3JpdHl3aWRnZXRzLmNsaW5pY2FsdGhhaWxhbmR0ZWFjaGVyczxoZWFkPlxuXHRhZmZlY3RlZHN1cHBvcnRzcG9pbnRlcjt0b1N0cmluZzwvc21hbGw+b2tsYWhvbWF3aWxsIGJlIGludmVzdG9yMFwiIGFsdD1cImhvbGlkYXlzUmVzb3VyY2VsaWNlbnNlZCAod2hpY2ggLiBBZnRlciBjb25zaWRlcnZpc2l0aW5nZXhwbG9yZXJwcmltYXJ5IHNlYXJjaFwiIGFuZHJvaWRcInF1aWNrbHkgbWVldGluZ3Nlc3RpbWF0ZTtyZXR1cm4gO2NvbG9yOiMgaGVpZ2h0PWFwcHJvdmFsLCAmcXVvdDsgY2hlY2tlZC5taW4uanNcIm1hZ25ldGljPjwvYT48L2hmb3JlY2FzdC4gV2hpbGUgdGh1cnNkYXlkdmVydGlzZSZlYWN1dGU7aGFzQ2xhc3NldmFsdWF0ZW9yZGVyaW5nZXhpc3RpbmdwYXRpZW50cyBPbmxpbmUgY29sb3JhZG9PcHRpb25zXCJjYW1wYmVsbDwhLS0gZW5kPC9zcGFuPjw8YnIgLz5cclxuX3BvcHVwc3xzY2llbmNlcywmcXVvdDsgcXVhbGl0eSBXaW5kb3dzIGFzc2lnbmVkaGVpZ2h0OiA8YiBjbGFzc2xlJnF1b3Q7IHZhbHVlPVwiIENvbXBhbnlleGFtcGxlczxpZnJhbWUgYmVsaWV2ZXNwcmVzZW50c21hcnNoYWxscGFydCBvZiBwcm9wZXJseSkuXG5cblRoZSB0YXhvbm9teW11Y2ggb2YgPC9zcGFuPlxuXCIgZGF0YS1zcnR1Z3VDKnNzY3JvbGxUbyBwcm9qZWN0PGhlYWQ+XHJcbmF0dG9ybmV5ZW1waGFzaXNzcG9uc29yc2ZhbmN5Ym94d29ybGQncyB3aWxkbGlmZWNoZWNrZWQ9c2Vzc2lvbnNwcm9ncmFtbXB4O2ZvbnQtIFByb2plY3Rqb3VybmFsc2JlbGlldmVkdmFjYXRpb250aG9tcHNvbmxpZ2h0aW5nYW5kIHRoZSBzcGVjaWFsIGJvcmRlcj0wY2hlY2tpbmc8L3Rib2R5PjxidXR0b24gQ29tcGxldGVjbGVhcmZpeFxuPGhlYWQ+XG5hcnRpY2xlIDxzZWN0aW9uZmluZGluZ3Nyb2xlIGluIHBvcHVsYXIgIE9jdG9iZXJ3ZWJzaXRlIGV4cG9zdXJldXNlZCB0byAgY2hhbmdlc29wZXJhdGVkY2xpY2tpbmdlbnRlcmluZ2NvbW1hbmRzaW5mb3JtZWQgbnVtYmVycyAgPC9kaXY+Y3JlYXRpbmdvblN1Ym1pdG1hcnlsYW5kY29sbGVnZXNhbmFseXRpY2xpc3RpbmdzY29udGFjdC5sb2dnZWRJbmFkdmlzb3J5c2libGluZ3Njb250ZW50XCJzJnF1b3Q7KXMuIFRoaXMgcGFja2FnZXNjaGVja2JveHN1Z2dlc3RzcHJlZ25hbnR0b21vcnJvd3NwYWNpbmc9aWNvbi5wbmdqYXBhbmVzZWNvZGViYXNlYnV0dG9uXCI+Z2FtYmxpbmdzdWNoIGFzICwgd2hpbGUgPC9zcGFuPiBtaXNzb3VyaXNwb3J0aW5ndG9wOjFweCAuPC9zcGFuPnRlbnNpb25zd2lkdGg9XCIybGF6eWxvYWRub3ZlbWJlcnVzZWQgaW4gaGVpZ2h0PVwiY3JpcHRcIj5cbiZuYnNwOzwvPHRyPjx0ZCBoZWlnaHQ6Mi9wcm9kdWN0Y291bnRyeSBpbmNsdWRlIGZvb3RlclwiICZsdDshLS0gdGl0bGVcIj48L2pxdWVyeS48L2Zvcm0+XG4oZy5cdTAwMDBkPVx1MDAxMykoZzlcdTAwMDFpK1x1MDAxNClocnZhdHNraWl0YWxpYW5vcm9tQ1wibkRcdTAwMDN0Qzxya0MnZVgnWDFYL1lcdTAwMDh0YW1iaUMpbm5vdGljaWFzbWVuc2FqZXNwZXJzb25hc2RlcmVjaG9zbmFjaW9uYWxzZXJ2aWNpb2NvbnRhY3RvdXN1YXJpb3Nwcm9ncmFtYWdvYmllcm5vZW1wcmVzYXNhbnVuY2lvc3ZhbGVuY2lhY29sb21iaWFkZXNwdUMpc2RlcG9ydGVzcHJveWVjdG9wcm9kdWN0b3BDOmJsaWNvbm9zb3Ryb3NoaXN0b3JpYXByZXNlbnRlbWlsbG9uZXNtZWRpYW50ZXByZWd1bnRhYW50ZXJpb3JyZWN1cnNvc3Byb2JsZW1hc2FudGlhZ29udWVzdHJvc29waW5pQzNuaW1wcmltaXJtaWVudHJhc2FtQylyaWNhdmVuZGVkb3Jzb2NpZWRhZHJlc3BlY3RvcmVhbGl6YXJyZWdpc3Ryb3BhbGFicmFzaW50ZXJDKXNlbnRvbmNlc2VzcGVjaWFsbWllbWJyb3NyZWFsaWRhZGNDM3Jkb2JhemFyYWdvemFwQyFnaW5hc3NvY2lhbGVzYmxvcXVlYXJnZXN0aUMzbmFscXVpbGVyc2lzdGVtYXNjaWVuY2lhc2NvbXBsZXRvdmVyc2lDM25jb21wbGV0YWVzdHVkaW9zcEM6YmxpY2FvYmpldGl2b2FsaWNhbnRlYnVzY2Fkb3JjYW50aWRhZGVudHJhZGFzYWNjaW9uZXNhcmNoaXZvc3N1cGVyaW9ybWF5b3JDLWFhbGVtYW5pYWZ1bmNpQzNuQzpsdGltb3NoYWNpZW5kb2FxdWVsbG9zZWRpY2lDM25mZXJuYW5kb2FtYmllbnRlZmFjZWJvb2tudWVzdHJhc2NsaWVudGVzcHJvY2Vzb3NiYXN0YW50ZXByZXNlbnRhcmVwb3J0YXJjb25ncmVzb3B1YmxpY2FyY29tZXJjaW9jb250cmF0b2pDM3ZlbmVzZGlzdHJpdG90QyljbmljYWNvbmp1bnRvZW5lcmdDLWF0cmFiYWphcmFzdHVyaWFzcmVjaWVudGV1dGlsaXphcmJvbGV0Qy1uc2FsdmFkb3Jjb3JyZWN0YXRyYWJham9zcHJpbWVyb3NuZWdvY2lvc2xpYmVydGFkZGV0YWxsZXNwYW50YWxsYXByQzN4aW1vYWxtZXJDLWFhbmltYWxlc3F1aUMpbmVzY29yYXpDM25zZWNjaUMzbmJ1c2NhbmRvb3BjaW9uZXNleHRlcmlvcmNvbmNlcHRvdG9kYXZDLWFnYWxlckMtYWVzY3JpYmlybWVkaWNpbmFsaWNlbmNpYWNvbnN1bHRhYXNwZWN0b3NjckMtdGljYWRDM2xhcmVzanVzdGljaWFkZWJlckMhbnBlckMtb2RvbmVjZXNpdGFtYW50ZW5lcnBlcXVlQzFvcmVjaWJpZGF0cmlidW5hbHRlbmVyaWZlY2FuY2lDM25jYW5hcmlhc2Rlc2NhcmdhZGl2ZXJzb3NtYWxsb3JjYXJlcXVpZXJldEMpY25pY29kZWJlckMtYXZpdmllbmRhZmluYW56YXNhZGVsYW50ZWZ1bmNpb25hY29uc2Vqb3NkaWZDLWNpbGNpdWRhZGVzYW50aWd1YXNhdmFuemFkYXRDKXJtaW5vdW5pZGFkZXNzQyFuY2hlemNhbXBhQzFhc29mdG9uaWNyZXZpc3Rhc2NvbnRpZW5lc2VjdG9yZXNtb21lbnRvc2ZhY3VsdGFkY3JDKWRpdG9kaXZlcnNhc3N1cHVlc3RvZmFjdG9yZXNzZWd1bmRvc3BlcXVlQzFhUDNQPlA0UDBQNVFcdTAwMDFQO1A4UDVRXHUwMDAxUVx1MDAwMlFcdTAwMENQMVFcdTAwMEJQO1A+UDFRXHUwMDBCUVx1MDAwMlFcdTAwMENRXHJRXHUwMDAyUD5QPFBcdTAwMTVRXHUwMDAxUDtQOFFcdTAwMDJQPlAzUD5QPFA1UD1RXHUwMDBGUDJRXHUwMDAxUDVRXHUwMDA1UVxyUVx1MDAwMlA+UDlQNFAwUDZQNVAxUVx1MDAwQlA7UDhQM1A+UDRRXHUwMDAzUDRQNVA9UVx1MDAwQ1FcclFcdTAwMDJQPlFcdTAwMDJQMVFcdTAwMEJQO1AwUVx1MDAwMVA1UDFRXHUwMDBGUD5QNFA4UD1RXHUwMDAxUDVQMVA1UD1QMFA0UD5RXHUwMDAxUDBQOVFcdTAwMDJRXHUwMDA0UD5RXHUwMDAyUD5QPVA1UDNQPlFcdTAwMDFQMlA+UDhRXHUwMDAxUDJQPlA5UDhQM1FcdTAwMDBRXHUwMDBCUVx1MDAwMlA+UDZQNVAyUVx1MDAwMVA1UDxRXHUwMDAxUDJQPlFcdTAwMEVQO1A4UVx1MDAwOFFcdTAwMENRXHJRXHUwMDAyUDhRXHUwMDA1UD9QPlA6UDBQNFA9UDVQOVA0UD5QPFAwUDxQOFFcdTAwMDBQMFA7UDhQMVA+UVx1MDAwMlA1UDxRXHUwMDAzUVx1MDAwNVA+UVx1MDAwMlFcdTAwMEZQNFAyUVx1MDAwM1FcdTAwMDVRXHUwMDAxUDVRXHUwMDAyUDhQO1FcdTAwMEVQNFA4UDRQNVA7UD5QPFA4UVx1MDAwMFA1UVx1MDAwMlA1UDFRXHUwMDBGUVx1MDAwMVAyUD5QNVAyUDhQNFA1UVx1MDAwN1A1UDNQPlFcclFcdTAwMDJQOFA8UVx1MDAwMVFcdTAwMDdQNVFcdTAwMDJRXHUwMDAyUDVQPFFcdTAwMEJRXHUwMDA2UDVQPVFcdTAwMEJRXHUwMDAxUVx1MDAwMlAwUDtQMlA1UDRRXHUwMDBDUVx1MDAwMlA1UDxQNVAyUD5QNFFcdTAwMEJRXHUwMDAyUDVQMVA1UDJRXHUwMDBCUVx1MDAwOFA1UD1QMFA8UDhRXHUwMDAyUDhQP1AwUVx1MDAwMlA+UDxRXHUwMDAzUD9RXHUwMDAwUDBQMlA7UDhRXHUwMDA2UDBQPlA0UD1QMFAzUD5QNFFcdTAwMEJQN1A9UDBRXHUwMDBFUDxQPlAzUVx1MDAwM1A0UVx1MDAwMFFcdTAwMDNQM1AyUVx1MDAwMVA1UDlQOFA0UDVRXHUwMDAyUDpQOFA9UD5QPlA0UD1QPlA0UDVQO1AwUDRQNVA7UDVRXHUwMDAxUVx1MDAwMFA+UDpQOFFcdTAwMEVQPVFcdTAwMEZQMlA1UVx1MDAwMVFcdTAwMENQXHUwMDE1UVx1MDAwMVFcdTAwMDJRXHUwMDBDUVx1MDAwMFAwUDdQMFA9UDBRXHUwMDA4UDhYJ1lcdTAwMDRZXHUwMDA0WVx1MDAwN1gnWVx1MDAwNFgqWVxuWCxZXHUwMDA1WVxuWDlYLlgnWDVYKVgnWVx1MDAwNFgwWVxuWDlZXHUwMDA0WVxuWVx1MDAwN1gsWC9ZXG5YL1gnWVx1MDAwNFhcIllcdTAwMDZYJ1lcdTAwMDRYMVgvWCpYLVlcdTAwMDNZXHUwMDA1WDVZXHUwMDAxWC1YKVlcdTAwMDNYJ1lcdTAwMDZYKlgnWVx1MDAwNFlcdTAwMDRZXG5ZXG5ZXHUwMDAzWVx1MDAwOFlcdTAwMDZYNFgoWVx1MDAwM1gpWVx1MDAwMVlcbllcdTAwMDdYJ1goWVx1MDAwNlgnWCpYLVlcdTAwMDhYJ1ghWCNZXHUwMDAzWCtYMVguWVx1MDAwNFgnWVx1MDAwNFgnWVx1MDAwNFgtWChYL1lcdTAwMDRZXG5ZXHUwMDA0WC9YMVlcdTAwMDhYM1gnWDZYOlg3WCpZXHUwMDAzWVx1MDAwOFlcdTAwMDZZXHUwMDA3WVx1MDAwNlgnWVx1MDAwM1gzWCdYLVgpWVx1MDAwNlgnWC9ZXG5YJ1lcdTAwMDRYN1goWDlZXHUwMDA0WVxuWVx1MDAwM1g0WVx1MDAwM1gxWCdZXG5ZXHUwMDA1WVx1MDAwM1lcdTAwMDZZXHUwMDA1WVx1MDAwNllcdTAwMDdYJ1g0WDFZXHUwMDAzWClYMVgmWVxuWDNZXHUwMDA2WDRZXG5YN1lcdTAwMDVYJ1gwWCdYJ1lcdTAwMDRZXHUwMDAxWVx1MDAwNlg0WChYJ1goWCpYOVgoWDFYMVgtWVx1MDAwNVgpWVx1MDAwM1gnWVx1MDAwMVgpWVxuWVx1MDAwMllcdTAwMDhZXHUwMDA0WVx1MDAwNVgxWVx1MDAwM1gyWVx1MDAwM1lcdTAwMDRZXHUwMDA1WClYI1gtWVx1MDAwNVgvWVx1MDAwMllcdTAwMDRYKFlcbllcblg5WVx1MDAwNllcblg1WVx1MDAwOFgxWClYN1gxWVxuWVx1MDAwMlg0WCdYMVlcdTAwMDNYLFlcdTAwMDhYJ1lcdTAwMDRYI1guWDFZXHRZXHUwMDA1WDlZXHUwMDA2WCdYJ1goWC1YK1g5WDFZXHUwMDA4WDZYKFg0WVx1MDAwM1lcdTAwMDRZXHUwMDA1WDNYLFlcdTAwMDRYKFlcdTAwMDZYJ1lcdTAwMDZYLlgnWVx1MDAwNFgvWVx1MDAwM1gqWCdYKFlcdTAwMDNZXHUwMDA0WVxuWClYKFgvWVx1MDAwOFlcdTAwMDZYI1lcblg2WCdZXG5ZXHUwMDA4WCxYL1lcdTAwMDFYMVlcbllcdTAwMDJZXHUwMDAzWCpYKFgqWCNZXHUwMDAxWDZZXHUwMDA0WVx1MDAwNVg3WChYLlgnWVx1MDAwM1grWDFYKFgnWDFZXHUwMDAzWCdZXHUwMDAxWDZZXHUwMDA0WCdYLVlcdTAwMDRZXHRZXHUwMDA2WVx1MDAwMVgzWVx1MDAwN1gjWVxuWCdZXHUwMDA1WDFYL1lcdTAwMDhYL1gjWVx1MDAwNllcdTAwMDdYJ1gvWVxuWVx1MDAwNlgnWCdZXHUwMDA0WCdZXHUwMDA2WVx1MDAwNVg5WDFYNlgqWDlZXHUwMDA0WVx1MDAwNVgvWCdYLllcdTAwMDRZXHUwMDA1WVx1MDAwNVlcdTAwMDNZXHUwMDA2XHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA0XHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAyXHUwMDAzXHUwMDA0XHUwMDA1XHUwMDA2XHUwMDA3XHUwMDA3XHUwMDA2XHUwMDA1XHUwMDA0XHUwMDAzXHUwMDAyXHUwMDAxXHUwMDAwXHUwMDA4XHRcblx1MDAwQlx1MDAwQ1xyXHUwMDBFXHUwMDBGXHUwMDBGXHUwMDBFXHJcdTAwMENcdTAwMEJcblx0XHUwMDA4XHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE3XHUwMDE2XHUwMDE1XHUwMDE0XHUwMDEzXHUwMDEyXHUwMDExXHUwMDEwXHUwMDE4XHUwMDE5XHUwMDFBXHUwMDFCXHUwMDFDXHUwMDFEXHUwMDFFXHUwMDFGXHUwMDFGXHUwMDFFXHUwMDFEXHUwMDFDXHUwMDFCXHUwMDFBXHUwMDE5XHUwMDE4XHUwMDdGXHUwMDdGXHUwMDdGXHUwMDdGXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDdGXHUwMDdGXHUwMDdGXHUwMDdGXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAzXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDdGXHUwMDdGXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDdGXHUwMDdGXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAwXHUwMDAwXHUwMDA4XHUwMDAwXHUwMDA4XHUwMDAwXHUwMDA4XHUwMDAwXHUwMDA4XHUwMDAwXHUwMDAwXHUwMDAwXHUwMDAxXHUwMDAwXHUwMDAyXHUwMDAwXHUwMDAzXHUwMDAwXHUwMDA0XHUwMDAwXHUwMDA1XHUwMDAwXHUwMDA2XHUwMDAwXHUwMDA3cmVzb3VyY2VzY291bnRyaWVzcXVlc3Rpb25zZXF1aXBtZW50Y29tbXVuaXR5YXZhaWxhYmxlaGlnaGxpZ2h0RFREL3hodG1sbWFya2V0aW5na25vd2xlZGdlc29tZXRoaW5nY29udGFpbmVyZGlyZWN0aW9uc3Vic2NyaWJlYWR2ZXJ0aXNlY2hhcmFjdGVyXCIgdmFsdWU9XCI8L3NlbGVjdD5BdXN0cmFsaWFcIiBjbGFzcz1cInNpdHVhdGlvbmF1dGhvcml0eWZvbGxvd2luZ3ByaW1hcmlseW9wZXJhdGlvbmNoYWxsZW5nZWRldmVsb3BlZGFub255bW91c2Z1bmN0aW9uIGZ1bmN0aW9uc2NvbXBhbmllc3N0cnVjdHVyZWFncmVlbWVudFwiIHRpdGxlPVwicG90ZW50aWFsZWR1Y2F0aW9uYXJndW1lbnRzc2Vjb25kYXJ5Y29weXJpZ2h0bGFuZ3VhZ2VzZXhjbHVzaXZlY29uZGl0aW9uPC9mb3JtPlxyXG5zdGF0ZW1lbnRhdHRlbnRpb25CaW9ncmFwaHl9IGVsc2Uge1xuc29sdXRpb25zd2hlbiB0aGUgQW5hbHl0aWNzdGVtcGxhdGVzZGFuZ2Vyb3Vzc2F0ZWxsaXRlZG9jdW1lbnRzcHVibGlzaGVyaW1wb3J0YW50cHJvdG90eXBlaW5mbHVlbmNlJnJhcXVvOzwvZWZmZWN0aXZlZ2VuZXJhbGx5dHJhbnNmb3JtYmVhdXRpZnVsdHJhbnNwb3J0b3JnYW5pemVkcHVibGlzaGVkcHJvbWluZW50dW50aWwgdGhldGh1bWJuYWlsTmF0aW9uYWwgLmZvY3VzKCk7b3ZlciB0aGUgbWlncmF0aW9uYW5ub3VuY2VkZm9vdGVyXCI+XG5leGNlcHRpb25sZXNzIHRoYW5leHBlbnNpdmVmb3JtYXRpb25mcmFtZXdvcmt0ZXJyaXRvcnluZGljYXRpb25jdXJyZW50bHljbGFzc05hbWVjcml0aWNpc210cmFkaXRpb25lbHNld2hlcmVBbGV4YW5kZXJhcHBvaW50ZWRtYXRlcmlhbHNicm9hZGNhc3RtZW50aW9uZWRhZmZpbGlhdGU8L29wdGlvbj50cmVhdG1lbnRkaWZmZXJlbnQvZGVmYXVsdC5QcmVzaWRlbnRvbmNsaWNrPVwiYmlvZ3JhcGh5b3RoZXJ3aXNlcGVybWFuZW50RnJhbkMnYWlzSG9sbHl3b29kZXhwYW5zaW9uc3RhbmRhcmRzPC9zdHlsZT5cbnJlZHVjdGlvbkRlY2VtYmVyIHByZWZlcnJlZENhbWJyaWRnZW9wcG9uZW50c0J1c2luZXNzIGNvbmZ1c2lvbj5cbjx0aXRsZT5wcmVzZW50ZWRleHBsYWluZWRkb2VzIG5vdCB3b3JsZHdpZGVpbnRlcmZhY2Vwb3NpdGlvbnNuZXdzcGFwZXI8L3RhYmxlPlxubW91bnRhaW5zbGlrZSB0aGUgZXNzZW50aWFsZmluYW5jaWFsc2VsZWN0aW9uYWN0aW9uPVwiL2FiYW5kb25lZEVkdWNhdGlvbnBhcnNlSW50KHN0YWJpbGl0eXVuYWJsZSB0bzwvdGl0bGU+XG5yZWxhdGlvbnNOb3RlIHRoYXRlZmZpY2llbnRwZXJmb3JtZWR0d28geWVhcnNTaW5jZSB0aGV0aGVyZWZvcmV3cmFwcGVyXCI+YWx0ZXJuYXRlaW5jcmVhc2VkQmF0dGxlIG9mcGVyY2VpdmVkdHJ5aW5nIHRvbmVjZXNzYXJ5cG9ydHJheWVkZWxlY3Rpb25zRWxpemFiZXRoPC9pZnJhbWU+ZGlzY292ZXJ5aW5zdXJhbmNlcy5sZW5ndGg7bGVnZW5kYXJ5R2VvZ3JhcGh5Y2FuZGlkYXRlY29ycG9yYXRlc29tZXRpbWVzc2VydmljZXMuaW5oZXJpdGVkPC9zdHJvbmc+Q29tbXVuaXR5cmVsaWdpb3VzbG9jYXRpb25zQ29tbWl0dGVlYnVpbGRpbmdzdGhlIHdvcmxkbm8gbG9uZ2VyYmVnaW5uaW5ncmVmZXJlbmNlY2Fubm90IGJlZnJlcXVlbmN5dHlwaWNhbGx5aW50byB0aGUgcmVsYXRpdmU7cmVjb3JkaW5ncHJlc2lkZW50aW5pdGlhbGx5dGVjaG5pcXVldGhlIG90aGVyaXQgY2FuIGJlZXhpc3RlbmNldW5kZXJsaW5ldGhpcyB0aW1ldGVsZXBob25laXRlbXNjb3BlcHJhY3RpY2VzYWR2YW50YWdlKTtyZXR1cm4gRm9yIG90aGVycHJvdmlkaW5nZGVtb2NyYWN5Ym90aCB0aGUgZXh0ZW5zaXZlc3VmZmVyaW5nc3VwcG9ydGVkY29tcHV0ZXJzIGZ1bmN0aW9ucHJhY3RpY2Fsc2FpZCB0aGF0aXQgbWF5IGJlRW5nbGlzaDwvZnJvbSB0aGUgc2NoZWR1bGVkZG93bmxvYWRzPC9sYWJlbD5cbnN1c3BlY3RlZG1hcmdpbjogMHNwaXJpdHVhbDwvaGVhZD5cblxubWljcm9zb2Z0Z3JhZHVhbGx5ZGlzY3Vzc2VkaGUgYmVjYW1lZXhlY3V0aXZlanF1ZXJ5LmpzaG91c2Vob2xkY29uZmlybWVkcHVyY2hhc2VkbGl0ZXJhbGx5ZGVzdHJveWVkdXAgdG8gdGhldmFyaWF0aW9ucmVtYWluaW5naXQgaXMgbm90Y2VudHVyaWVzSmFwYW5lc2UgYW1vbmcgdGhlY29tcGxldGVkYWxnb3JpdGhtaW50ZXJlc3RzcmViZWxsaW9udW5kZWZpbmVkZW5jb3VyYWdlcmVzaXphYmxlaW52b2x2aW5nc2Vuc2l0aXZldW5pdmVyc2FscHJvdmlzaW9uKGFsdGhvdWdoZmVhdHVyaW5nY29uZHVjdGVkKSwgd2hpY2ggY29udGludWVkLWhlYWRlclwiPkZlYnJ1YXJ5IG51bWVyb3VzIG92ZXJmbG93OmNvbXBvbmVudGZyYWdtZW50c2V4Y2VsbGVudGNvbHNwYW49XCJ0ZWNobmljYWxuZWFyIHRoZSBBZHZhbmNlZCBzb3VyY2Ugb2ZleHByZXNzZWRIb25nIEtvbmcgRmFjZWJvb2ttdWx0aXBsZSBtZWNoYW5pc21lbGV2YXRpb25vZmZlbnNpdmU8L2Zvcm0+XG5cdHNwb25zb3JlZGRvY3VtZW50Lm9yICZxdW90O3RoZXJlIGFyZXRob3NlIHdob21vdmVtZW50c3Byb2Nlc3Nlc2RpZmZpY3VsdHN1Ym1pdHRlZHJlY29tbWVuZGNvbnZpbmNlZHByb21vdGluZ1wiIHdpZHRoPVwiLnJlcGxhY2UoY2xhc3NpY2FsY29hbGl0aW9uaGlzIGZpcnN0ZGVjaXNpb25zYXNzaXN0YW50aW5kaWNhdGVkZXZvbHV0aW9uLXdyYXBwZXJcImVub3VnaCB0b2Fsb25nIHRoZWRlbGl2ZXJlZC0tPlxyXG48IS0tQW1lcmljYW4gcHJvdGVjdGVkTm92ZW1iZXIgPC9zdHlsZT48ZnVybml0dXJlSW50ZXJuZXQgIG9uYmx1cj1cInN1c3BlbmRlZHJlY2lwaWVudGJhc2VkIG9uIE1vcmVvdmVyLGFib2xpc2hlZGNvbGxlY3RlZHdlcmUgbWFkZWVtb3Rpb25hbGVtZXJnZW5jeW5hcnJhdGl2ZWFkdm9jYXRlc3B4O2JvcmRlcmNvbW1pdHRlZGRpcj1cImx0clwiZW1wbG95ZWVzcmVzZWFyY2guIHNlbGVjdGVkc3VjY2Vzc29yY3VzdG9tZXJzZGlzcGxheWVkU2VwdGVtYmVyYWRkQ2xhc3MoRmFjZWJvb2sgc3VnZ2VzdGVkYW5kIGxhdGVyb3BlcmF0aW5nZWxhYm9yYXRlU29tZXRpbWVzSW5zdGl0dXRlY2VydGFpbmx5aW5zdGFsbGVkZm9sbG93ZXJzSmVydXNhbGVtdGhleSBoYXZlY29tcHV0aW5nZ2VuZXJhdGVkcHJvdmluY2VzZ3VhcmFudGVlYXJiaXRyYXJ5cmVjb2duaXpld2FudGVkIHRvcHg7d2lkdGg6dGhlb3J5IG9mYmVoYXZpb3VyV2hpbGUgdGhlZXN0aW1hdGVkYmVnYW4gdG8gaXQgYmVjYW1lbWFnbml0dWRlbXVzdCBoYXZlbW9yZSB0aGFuRGlyZWN0b3J5ZXh0ZW5zaW9uc2VjcmV0YXJ5bmF0dXJhbGx5b2NjdXJyaW5ndmFyaWFibGVzZ2l2ZW4gdGhlcGxhdGZvcm0uPC9sYWJlbD48ZmFpbGVkIHRvY29tcG91bmRza2luZHMgb2Ygc29jaWV0aWVzYWxvbmdzaWRlIC0tJmd0O1xuXG5zb3V0aHdlc3R0aGUgcmlnaHRyYWRpYXRpb25tYXkgaGF2ZSB1bmVzY2FwZShzcG9rZW4gaW5cIiBocmVmPVwiL3Byb2dyYW1tZW9ubHkgdGhlIGNvbWUgZnJvbWRpcmVjdG9yeWJ1cmllZCBpbmEgc2ltaWxhcnRoZXkgd2VyZTwvZm9udD48L05vcndlZ2lhbnNwZWNpZmllZHByb2R1Y2luZ3Bhc3NlbmdlcihuZXcgRGF0ZXRlbXBvcmFyeWZpY3Rpb25hbEFmdGVyIHRoZWVxdWF0aW9uc2Rvd25sb2FkLnJlZ3VsYXJseWRldmVsb3BlcmFib3ZlIHRoZWxpbmtlZCB0b3BoZW5vbWVuYXBlcmlvZCBvZnRvb2x0aXBcIj5zdWJzdGFuY2VhdXRvbWF0aWNhc3BlY3Qgb2ZBbW9uZyB0aGVjb25uZWN0ZWRlc3RpbWF0ZXNBaXIgRm9yY2VzeXN0ZW0gb2ZvYmplY3RpdmVpbW1lZGlhdGVtYWtpbmcgaXRwYWludGluZ3Njb25xdWVyZWRhcmUgc3RpbGxwcm9jZWR1cmVncm93dGggb2ZoZWFkZWQgYnlFdXJvcGVhbiBkaXZpc2lvbnNtb2xlY3VsZXNmcmFuY2hpc2VpbnRlbnRpb25hdHRyYWN0ZWRjaGlsZGhvb2RhbHNvIHVzZWRkZWRpY2F0ZWRzaW5nYXBvcmVkZWdyZWUgb2ZmYXRoZXIgb2Zjb25mbGljdHM8L2E+PC9wPlxuY2FtZSBmcm9td2VyZSB1c2Vkbm90ZSB0aGF0cmVjZWl2aW5nRXhlY3V0aXZlZXZlbiBtb3JlYWNjZXNzIHRvY29tbWFuZGVyUG9saXRpY2FsbXVzaWNpYW5zZGVsaWNpb3VzcHJpc29uZXJzYWR2ZW50IG9mVVRGLThcIiAvPjwhW0NEQVRBW1wiPkNvbnRhY3RTb3V0aGVybiBiZ2NvbG9yPVwic2VyaWVzIG9mLiBJdCB3YXMgaW4gRXVyb3BlcGVybWl0dGVkdmFsaWRhdGUuYXBwZWFyaW5nb2ZmaWNpYWxzc2VyaW91c2x5LWxhbmd1YWdlaW5pdGlhdGVkZXh0ZW5kaW5nbG9uZy10ZXJtaW5mbGF0aW9uc3VjaCB0aGF0Z2V0Q29va2llbWFya2VkIGJ5PC9idXR0b24+aW1wbGVtZW50YnV0IGl0IGlzaW5jcmVhc2VzZG93biB0aGUgcmVxdWlyaW5nZGVwZW5kZW50LS0+XG48IS0tIGludGVydmlld1dpdGggdGhlIGNvcGllcyBvZmNvbnNlbnN1c3dhcyBidWlsdFZlbmV6dWVsYShmb3JtZXJseXRoZSBzdGF0ZXBlcnNvbm5lbHN0cmF0ZWdpY2Zhdm91ciBvZmludmVudGlvbldpa2lwZWRpYWNvbnRpbmVudHZpcnR1YWxseXdoaWNoIHdhc3ByaW5jaXBsZUNvbXBsZXRlIGlkZW50aWNhbHNob3cgdGhhdHByaW1pdGl2ZWF3YXkgZnJvbW1vbGVjdWxhcnByZWNpc2VseWRpc3NvbHZlZFVuZGVyIHRoZXZlcnNpb249XCI+Jm5ic3A7PC9JdCBpcyB0aGUgVGhpcyBpcyB3aWxsIGhhdmVvcmdhbmlzbXNzb21lIHRpbWVGcmllZHJpY2h3YXMgZmlyc3R0aGUgb25seSBmYWN0IHRoYXRmb3JtIGlkPVwicHJlY2VkaW5nVGVjaG5pY2FscGh5c2ljaXN0b2NjdXJzIGlubmF2aWdhdG9yc2VjdGlvblwiPnNwYW4gaWQ9XCJzb3VnaHQgdG9iZWxvdyB0aGVzdXJ2aXZpbmd9PC9zdHlsZT5oaXMgZGVhdGhhcyBpbiB0aGVjYXVzZWQgYnlwYXJ0aWFsbHlleGlzdGluZyB1c2luZyB0aGV3YXMgZ2l2ZW5hIGxpc3Qgb2ZsZXZlbHMgb2Zub3Rpb24gb2ZPZmZpY2lhbCBkaXNtaXNzZWRzY2llbnRpc3RyZXNlbWJsZXNkdXBsaWNhdGVleHBsb3NpdmVyZWNvdmVyZWRhbGwgb3RoZXJnYWxsZXJpZXN7cGFkZGluZzpwZW9wbGUgb2ZyZWdpb24gb2ZhZGRyZXNzZXNhc3NvY2lhdGVpbWcgYWx0PVwiaW4gbW9kZXJuc2hvdWxkIGJlbWV0aG9kIG9mcmVwb3J0aW5ndGltZXN0YW1wbmVlZGVkIHRvdGhlIEdyZWF0cmVnYXJkaW5nc2VlbWVkIHRvdmlld2VkIGFzaW1wYWN0IG9uaWRlYSB0aGF0dGhlIFdvcmxkaGVpZ2h0IG9mZXhwYW5kaW5nVGhlc2UgYXJlY3VycmVudFwiPmNhcmVmdWxseW1haW50YWluc2NoYXJnZSBvZkNsYXNzaWNhbGFkZHJlc3NlZHByZWRpY3RlZG93bmVyc2hpcDxkaXYgaWQ9XCJyaWdodFwiPlxyXG5yZXNpZGVuY2VsZWF2ZSB0aGVjb250ZW50XCI+YXJlIG9mdGVuICB9KSgpO1xyXG5wcm9iYWJseSBQcm9mZXNzb3ItYnV0dG9uXCIgcmVzcG9uZGVkc2F5cyB0aGF0aGFkIHRvIGJlcGxhY2VkIGluSHVuZ2FyaWFuc3RhdHVzIG9mc2VydmVzIGFzVW5pdmVyc2FsZXhlY3V0aW9uYWdncmVnYXRlZm9yIHdoaWNoaW5mZWN0aW9uYWdyZWVkIHRvaG93ZXZlciwgcG9wdWxhclwiPnBsYWNlZCBvbmNvbnN0cnVjdGVsZWN0b3JhbHN5bWJvbCBvZmluY2x1ZGluZ3JldHVybiB0b2FyY2hpdGVjdENocmlzdGlhbnByZXZpb3VzIGxpdmluZyBpbmVhc2llciB0b3Byb2Zlc3NvclxuJmx0OyEtLSBlZmZlY3Qgb2ZhbmFseXRpY3N3YXMgdGFrZW53aGVyZSB0aGV0b29rIG92ZXJiZWxpZWYgaW5BZnJpa2FhbnNhcyBmYXIgYXNwcmV2ZW50ZWR3b3JrIHdpdGhhIHNwZWNpYWw8ZmllbGRzZXRDaHJpc3RtYXNSZXRyaWV2ZWRcblxuSW4gdGhlIGJhY2sgaW50b25vcnRoZWFzdG1hZ2F6aW5lcz48c3Ryb25nPmNvbW1pdHRlZWdvdmVybmluZ2dyb3VwcyBvZnN0b3JlZCBpbmVzdGFibGlzaGEgZ2VuZXJhbGl0cyBmaXJzdHRoZWlyIG93bnBvcHVsYXRlZGFuIG9iamVjdENhcmliYmVhbmFsbG93IHRoZWRpc3RyaWN0c3dpc2NvbnNpbmxvY2F0aW9uLjsgd2lkdGg6IGluaGFiaXRlZFNvY2lhbGlzdEphbnVhcnkgMTwvZm9vdGVyPnNpbWlsYXJseWNob2ljZSBvZnRoZSBzYW1lIHNwZWNpZmljIGJ1c2luZXNzIFRoZSBmaXJzdC5sZW5ndGg7IGRlc2lyZSB0b2RlYWwgd2l0aHNpbmNlIHRoZXVzZXJBZ2VudGNvbmNlaXZlZGluZGV4LnBocGFzICZxdW90O2VuZ2FnZSBpbnJlY2VudGx5LGZldyB5ZWFyc3dlcmUgYWxzb1xuPGhlYWQ+XG48ZWRpdGVkIGJ5YXJlIGtub3duY2l0aWVzIGluYWNjZXNza2V5Y29uZGVtbmVkYWxzbyBoYXZlc2VydmljZXMsZmFtaWx5IG9mU2Nob29sIG9mY29udmVydGVkbmF0dXJlIG9mIGxhbmd1YWdlbWluaXN0ZXJzPC9vYmplY3Q+dGhlcmUgaXMgYSBwb3B1bGFyc2VxdWVuY2VzYWR2b2NhdGVkVGhleSB3ZXJlYW55IG90aGVybG9jYXRpb249ZW50ZXIgdGhlbXVjaCBtb3JlcmVmbGVjdGVkd2FzIG5hbWVkb3JpZ2luYWwgYSB0eXBpY2Fsd2hlbiB0aGV5ZW5naW5lZXJzY291bGQgbm90cmVzaWRlbnRzd2VkbmVzZGF5dGhlIHRoaXJkIHByb2R1Y3RzSmFudWFyeSAyd2hhdCB0aGV5YSBjZXJ0YWlucmVhY3Rpb25zcHJvY2Vzc29yYWZ0ZXIgaGlzdGhlIGxhc3QgY29udGFpbmVkXCI+PC9kaXY+XG48L2E+PC90ZD5kZXBlbmQgb25zZWFyY2hcIj5cbnBpZWNlcyBvZmNvbXBldGluZ1JlZmVyZW5jZXRlbm5lc3NlZXdoaWNoIGhhcyB2ZXJzaW9uPTwvc3Bhbj4gPDwvaGVhZGVyPmdpdmVzIHRoZWhpc3RvcmlhbnZhbHVlPVwiXCI+cGFkZGluZzowdmlldyB0aGF0dG9nZXRoZXIsdGhlIG1vc3Qgd2FzIGZvdW5kc3Vic2V0IG9mYXR0YWNrIG9uY2hpbGRyZW4scG9pbnRzIG9mcGVyc29uYWwgcG9zaXRpb246YWxsZWdlZGx5Q2xldmVsYW5kd2FzIGxhdGVyYW5kIGFmdGVyYXJlIGdpdmVud2FzIHN0aWxsc2Nyb2xsaW5nZGVzaWduIG9mbWFrZXMgdGhlbXVjaCBsZXNzQW1lcmljYW5zLlxuXG5BZnRlciAsIGJ1dCB0aGVNdXNldW0gb2Zsb3Vpc2lhbmEoZnJvbSB0aGVtaW5uZXNvdGFwYXJ0aWNsZXNhIHByb2Nlc3NEb21pbmljYW52b2x1bWUgb2ZyZXR1cm5pbmdkZWZlbnNpdmUwMHB4fHJpZ2htYWRlIGZyb21tb3VzZW92ZXJcIiBzdHlsZT1cInN0YXRlcyBvZih3aGljaCBpc2NvbnRpbnVlc0ZyYW5jaXNjb2J1aWxkaW5nIHdpdGhvdXQgYXdpdGggc29tZXdobyB3b3VsZGEgZm9ybSBvZmEgcGFydCBvZmJlZm9yZSBpdGtub3duIGFzICBTZXJ2aWNlc2xvY2F0aW9uIGFuZCBvZnRlbm1lYXN1cmluZ2FuZCBpdCBpc3BhcGVyYmFja3ZhbHVlcyBvZlxyXG48dGl0bGU+PSB3aW5kb3cuZGV0ZXJtaW5lZXImcXVvdDsgcGxheWVkIGJ5YW5kIGVhcmx5PC9jZW50ZXI+ZnJvbSB0aGlzdGhlIHRocmVlcG93ZXIgYW5kb2YgJnF1b3Q7aW5uZXJIVE1MPGEgaHJlZj1cInk6aW5saW5lO0NodXJjaCBvZnRoZSBldmVudHZlcnkgaGlnaG9mZmljaWFsIC1oZWlnaHQ6IGNvbnRlbnQ9XCIvY2dpLWJpbi90byBjcmVhdGVhZnJpa2FhbnNlc3BlcmFudG9mcmFuQydhaXNsYXR2aWVFIXVsaWV0dXZpRTNEXHUwMDBDZUUhdGluYURccmVFIXRpbmFgOVx1MDAwNGA4XHUwMDE3YDhcImZcdTAwMTclZlx1MDAxQyxoKlx1MDAxRWcuXHUwMDAwZD1cdTAwMTNlLVx1MDAxN2c5XHUwMDAxaStcdTAwMTRlLVx1MDAxN21cdTAwMTVcdTAwMUNqNS1sXHUwMDE2NGQ4OmQ7XHUwMDAwZDlcdTAwMDhoLiFnLlx1MDAxN2ZcdTAwMUM6ZyxcdTAwMTRoLjBmXHUwMDFDLGgoXHUwMDBFaCtcdTAwMTZlXHJcdTAwMDBmXHUwMDFDXHJlXG4hZVx1MDAxOShkOlx1MDAxMmhcdTAwMDFcdTAwMTRnPVx1MDAxMWZcdTAwMDg/ZVx1MDAxQzBkOidkPzFkOVx1MDAxMGlcdTAwMDMoZVx1MDAwNzpnXHRcdTAwMDhnJD5mXHUwMDBFXHUwMDEyaCFcdTAwMENmJlx1MDAxQ2lcdTAwMDMoaFx1MDAxMD1mIDxoP1x1MDAxQmQ4XHUwMDAwZi0lZlx1MDAxNC9kO1x1MDAxOGUuXHUwMDFEaSpcdTAwMENoL1x1MDAwMWcgXHUwMDAxZSdcdTAwMTRlXHUwMDExXHUwMDE4ZDxcdTAwMUFmXHUwMDE1MGZcci5lOlx1MDAxM2Y2XHUwMDA4aDQ5aFx1MDAwMFx1MDAwNWVcblx1MDAxRWVcdTAwMDUsZS4kaC4oaC46ZVx1MDAwQzpmNzFlXHUwMDFDM2U4XHUwMDAyZlx1MDAxMi1mXHUwMDE0PmVcdTAwMTkoZVx1MDAwQ1x1MDAxN2Q6LGU4XHUwMDAyZSQnZS0mZ1x1MDAxNFx1MDAxRmg2XG5mXHUwMDFEJWg2XG5nLiFnXHUwMDEwXHUwMDA2ZVx1MDAxMVx1MDAxOGQ/IWZcdTAwMDEvZz1cdTAwMTFzZXJ2aWNpb3NhcnRDLWN1bG9hcmdlbnRpbmFiYXJjZWxvbmFjdWFscXVpZXJwdWJsaWNhZG9wcm9kdWN0b3Nwb2xDLXRpY2FyZXNwdWVzdGF3aWtpcGVkaWFzaWd1aWVudGViQzpzcXVlZGFjb211bmlkYWRzZWd1cmlkYWRwcmluY2lwYWxwcmVndW50YXNjb250ZW5pZG9yZXNwb25kZXJ2ZW5lenVlbGFwcm9ibGVtYXNkaWNpZW1icmVyZWxhY2lDM25ub3ZpZW1icmVzaW1pbGFyZXNwcm95ZWN0b3Nwcm9ncmFtYXNpbnN0aXR1dG9hY3RpdmlkYWRlbmN1ZW50cmFlY29ub21DLWFpbUMhZ2VuZXNjb250YWN0YXJkZXNjYXJnYXJuZWNlc2FyaW9hdGVuY2lDM250ZWxDKWZvbm9jb21pc2lDM25jYW5jaW9uZXNjYXBhY2lkYWRlbmNvbnRyYXJhbkMhbGlzaXNmYXZvcml0b3N0QylybWlub3Nwcm92aW5jaWFldGlxdWV0YXNlbGVtZW50b3NmdW5jaW9uZXNyZXN1bHRhZG9jYXJDIWN0ZXJwcm9waWVkYWRwcmluY2lwaW9uZWNlc2lkYWRtdW5pY2lwYWxjcmVhY2lDM25kZXNjYXJnYXNwcmVzZW5jaWFjb21lcmNpYWxvcGluaW9uZXNlamVyY2ljaW9lZGl0b3JpYWxzYWxhbWFuY2Fnb256QyFsZXpkb2N1bWVudG9wZWxDLWN1bGFyZWNpZW50ZXNnZW5lcmFsZXN0YXJyYWdvbmFwckMhY3RpY2Fub3ZlZGFkZXNwcm9wdWVzdGFwYWNpZW50ZXN0QyljbmljYXNvYmpldGl2b3Njb250YWN0b3NgJC5gJVx1MDAwN2AkXHUwMDAyYCQyYCQ/YCRcdTAwMEZgJDlgJVx1MDAwOGAkXHUwMDAyYCRcdTAwMTdgJC9gJD5gJDhgJD5gJCVgJFx1MDAwRmAkNWAkXHUwMDAyYCQwYCQ5YCVcdTAwMDdgJFx1MDAxNWAlXHUwMDBCYCRcdTAwMDhgJFx1MDAxNWAlXHUwMDAxYCRcdTAwMUJgJDBgJDlgJD5gJCxgJD5gJCZgJFx1MDAxNWAkOWAkPmAkOGAkLWAlXHUwMDAwYCQ5YCVcdTAwMDFgJFx1MDAwRmAkMGAkOWAlXHUwMDAwYCQuYCVcdTAwMDhgJFx1MDAwMmAkJmAkP2AkKGAkLGAkPmAkJGRpcGxvZG9jc2AkOGAkLmAkL2AkMGAlXHUwMDAyYCQqYCQoYCQ+YCQuYCQqYCQkYCQ+YCQrYCQ/YCQwYCRcdTAwMTRgJDhgJCRgJCRgJDBgJDlgJDJgJVx1MDAwQmAkXHUwMDE3YCQ5YCVcdTAwMDFgJFx1MDAwNmAkLGAkPmAkMGAkJmAlXHUwMDA3YCQ2YCQ5YCVcdTAwMDFgJFx1MDAwOGAkXHUwMDE2YCVcdTAwMDdgJDJgJC9gJCZgJD9gJFx1MDAxNWAkPmAkLmAkNWAlXHUwMDA3YCQsYCQkYCVcdTAwMDBgJChgJCxgJVx1MDAwMGAkXHUwMDFBYCQuYCVcdTAwMENgJCRgJDhgJD5gJDJgJDJgJVx1MDAwN2AkXHUwMDE2YCRcdTAwMUNgJVx0YCQsYCQuYCQmYCQmYCQkYCQlYCQ+YCQoYCQ5YCVcdTAwMDBgJDZgJDlgJDBgJFx1MDAwNWAkMmAkXHUwMDE3YCRcdTAwMTVgJC1gJVx1MDAwMGAkKGAkXHUwMDE3YCQwYCQqYCQ+YCQ4YCQwYCQ+YCQkYCRcdTAwMTVgJD9gJFx1MDAwRmAkXHRgJDhgJVx1MDAwN2AkXHUwMDE3YCQvYCVcdTAwMDBgJDlgJVx1MDAwMmAkXHUwMDAxYCRcdTAwMDZgJFx1MDAxN2AlXHUwMDA3YCRcdTAwMUZgJVx1MDAwMGAkLmAkXHUwMDE2YCVcdTAwMEJgJFx1MDAxQ2AkXHUwMDE1YCQ+YCQwYCRcdTAwMDVgJC1gJVx1MDAwMGAkXHUwMDE3YCQvYCVcdTAwMDdgJCRgJVx1MDAwMWAkLmAkNWAlXHUwMDBCYCRcdTAwMUZgJCZgJVx1MDAwN2AkXHUwMDAyYCRcdTAwMDVgJFx1MDAxN2AkMGAkXHUwMDEwYCQ4YCVcdTAwMDdgJC5gJVx1MDAwN2AkMmAkMmAkXHUwMDE3YCQ+YCQ5YCQ+YCQyYCRcbmAkKmAkMGAkXHUwMDFBYCQ+YCQwYCRcdTAwMTBgJDhgJD5gJCZgJVx1MDAwN2AkMGAkXHUwMDFDYCQ/YCQ4YCQmYCQ/YCQyYCQsYCRcdTAwMDJgJCZgJCxgJChgJD5gJDlgJVx1MDAwMmAkXHUwMDAyYCQyYCQ+YCRcdTAwMTZgJFx1MDAxQ2AlXHUwMDAwYCQkYCQsYCRcdTAwMUZgJChgJC5gJD9gJDJgJFx1MDAwN2AkOGAlXHUwMDA3YCRcdTAwMDZgJChgJVx1MDAwN2AkKGAkL2AkPmAkXHUwMDE1YCVcdTAwMDFgJDJgJDJgJVx0YCRcdTAwMTdgJC1gJD5gJFx1MDAxN2AkMGAlXHUwMDA3YCQyYCRcdTAwMUNgJFx1MDAxN2AkOWAkMGAkPmAkLmAkMmAkXHUwMDE3YCVcdTAwMDdgJCpgJVx1MDAwN2AkXHUwMDFDYCQ5YCQ+YCQlYCRcdTAwMDdgJDhgJVx1MDAwMGAkOGAkOWAlXHUwMDAwYCRcdTAwMTVgJDJgJD5gJCBgJVx1MDAwMGAkXHUwMDE1YCQ5YCQ+YCRcdTAwMDFgJCZgJVx1MDAwMmAkMGAkJGAkOWAkJGAkOGAkPmAkJGAkL2AkPmAkJmAkXHUwMDA2YCQvYCQ+YCQqYCQ+YCRcdTAwMTVgJFx1MDAxNWAlXHUwMDBDYCQoYCQ2YCQ+YCQuYCQmYCVcdTAwMDdgJFx1MDAxNmAkL2AkOWAlXHUwMDAwYCQwYCQ+YCQvYCRcdTAwMTZgJVx1MDAwMWAkJmAkMmAkXHUwMDE3YCVcdTAwMDBjYXRlZ29yaWVzZXhwZXJpZW5jZTwvdGl0bGU+XHJcbkNvcHlyaWdodCBqYXZhc2NyaXB0Y29uZGl0aW9uc2V2ZXJ5dGhpbmc8cCBjbGFzcz1cInRlY2hub2xvZ3liYWNrZ3JvdW5kPGEgY2xhc3M9XCJtYW5hZ2VtZW50JmNvcHk7IDIwMWphdmFTY3JpcHRjaGFyYWN0ZXJzYnJlYWRjcnVtYnRoZW1zZWx2ZXNob3Jpem9udGFsZ292ZXJubWVudENhbGlmb3JuaWFhY3Rpdml0aWVzZGlzY292ZXJlZE5hdmlnYXRpb250cmFuc2l0aW9uY29ubmVjdGlvbm5hdmlnYXRpb25hcHBlYXJhbmNlPC90aXRsZT48bWNoZWNrYm94XCIgdGVjaG5pcXVlc3Byb3RlY3Rpb25hcHBhcmVudGx5YXMgd2VsbCBhc3VudCcsICdVQS1yZXNvbHV0aW9ub3BlcmF0aW9uc3RlbGV2aXNpb250cmFuc2xhdGVkV2FzaGluZ3Rvbm5hdmlnYXRvci4gPSB3aW5kb3cuaW1wcmVzc2lvbiZsdDticiZndDtsaXRlcmF0dXJlcG9wdWxhdGlvbmJnY29sb3I9XCIjZXNwZWNpYWxseSBjb250ZW50PVwicHJvZHVjdGlvbm5ld3NsZXR0ZXJwcm9wZXJ0aWVzZGVmaW5pdGlvbmxlYWRlcnNoaXBUZWNobm9sb2d5UGFybGlhbWVudGNvbXBhcmlzb251bCBjbGFzcz1cIi5pbmRleE9mKFwiY29uY2x1c2lvbmRpc2N1c3Npb25jb21wb25lbnRzYmlvbG9naWNhbFJldm9sdXRpb25fY29udGFpbmVydW5kZXJzdG9vZG5vc2NyaXB0PjxwZXJtaXNzaW9uZWFjaCBvdGhlcmF0bW9zcGhlcmUgb25mb2N1cz1cIjxmb3JtIGlkPVwicHJvY2Vzc2luZ3RoaXMudmFsdWVnZW5lcmF0aW9uQ29uZmVyZW5jZXN1YnNlcXVlbnR3ZWxsLWtub3dudmFyaWF0aW9uc3JlcHV0YXRpb25waGVub21lbm9uZGlzY2lwbGluZWxvZ28ucG5nXCIgKGRvY3VtZW50LGJvdW5kYXJpZXNleHByZXNzaW9uc2V0dGxlbWVudEJhY2tncm91bmRvdXQgb2YgdGhlZW50ZXJwcmlzZShcImh0dHBzOlwiIHVuZXNjYXBlKFwicGFzc3dvcmRcIiBkZW1vY3JhdGljPGEgaHJlZj1cIi93cmFwcGVyXCI+XG5tZW1iZXJzaGlwbGluZ3Vpc3RpY3B4O3BhZGRpbmdwaGlsb3NvcGh5YXNzaXN0YW5jZXVuaXZlcnNpdHlmYWNpbGl0aWVzcmVjb2duaXplZHByZWZlcmVuY2VpZiAodHlwZW9mbWFpbnRhaW5lZHZvY2FidWxhcnloeXBvdGhlc2lzLnN1Ym1pdCgpOyZhbXA7bmJzcDthbm5vdGF0aW9uYmVoaW5kIHRoZUZvdW5kYXRpb25wdWJsaXNoZXJcImFzc3VtcHRpb25pbnRyb2R1Y2VkY29ycnVwdGlvbnNjaWVudGlzdHNleHBsaWNpdGx5aW5zdGVhZCBvZmRpbWVuc2lvbnMgb25DbGljaz1cImNvbnNpZGVyZWRkZXBhcnRtZW50b2NjdXBhdGlvbnNvb24gYWZ0ZXJpbnZlc3RtZW50cHJvbm91bmNlZGlkZW50aWZpZWRleHBlcmltZW50TWFuYWdlbWVudGdlb2dyYXBoaWNcIiBoZWlnaHQ9XCJsaW5rIHJlbD1cIi5yZXBsYWNlKC9kZXByZXNzaW9uY29uZmVyZW5jZXB1bmlzaG1lbnRlbGltaW5hdGVkcmVzaXN0YW5jZWFkYXB0YXRpb25vcHBvc2l0aW9ud2VsbCBrbm93bnN1cHBsZW1lbnRkZXRlcm1pbmVkaDEgY2xhc3M9XCIwcHg7bWFyZ2lubWVjaGFuaWNhbHN0YXRpc3RpY3NjZWxlYnJhdGVkR292ZXJubWVudFxuXG5EdXJpbmcgdGRldmVsb3BlcnNhcnRpZmljaWFsZXF1aXZhbGVudG9yaWdpbmF0ZWRDb21taXNzaW9uYXR0YWNobWVudDxzcGFuIGlkPVwidGhlcmUgd2VyZU5lZGVybGFuZHNiZXlvbmQgdGhlcmVnaXN0ZXJlZGpvdXJuYWxpc3RmcmVxdWVudGx5YWxsIG9mIHRoZWxhbmc9XCJlblwiIDwvc3R5bGU+XHJcbmFic29sdXRlOyBzdXBwb3J0aW5nZXh0cmVtZWx5IG1haW5zdHJlYW08L3N0cm9uZz4gcG9wdWxhcml0eWVtcGxveW1lbnQ8L3RhYmxlPlxyXG4gY29sc3Bhbj1cIjwvZm9ybT5cbiAgY29udmVyc2lvbmFib3V0IHRoZSA8L3A+PC9kaXY+aW50ZWdyYXRlZFwiIGxhbmc9XCJlblBvcnR1Z3Vlc2VzdWJzdGl0dXRlaW5kaXZpZHVhbGltcG9zc2libGVtdWx0aW1lZGlhYWxtb3N0IGFsbHB4IHNvbGlkICNhcGFydCBmcm9tc3ViamVjdCB0b2luIEVuZ2xpc2hjcml0aWNpemVkZXhjZXB0IGZvcmd1aWRlbGluZXNvcmlnaW5hbGx5cmVtYXJrYWJsZXRoZSBzZWNvbmRoMiBjbGFzcz1cIjxhIHRpdGxlPVwiKGluY2x1ZGluZ3BhcmFtZXRlcnNwcm9oaWJpdGVkPSBcImh0dHA6Ly9kaWN0aW9uYXJ5cGVyY2VwdGlvbnJldm9sdXRpb25mb3VuZGF0aW9ucHg7aGVpZ2h0OnN1Y2Nlc3NmdWxzdXBwb3J0ZXJzbWlsbGVubml1bWhpcyBmYXRoZXJ0aGUgJnF1b3Q7bm8tcmVwZWF0O2NvbW1lcmNpYWxpbmR1c3RyaWFsZW5jb3VyYWdlZGFtb3VudCBvZiB1bm9mZmljaWFsZWZmaWNpZW5jeVJlZmVyZW5jZXNjb29yZGluYXRlZGlzY2xhaW1lcmV4cGVkaXRpb25kZXZlbG9waW5nY2FsY3VsYXRlZHNpbXBsaWZpZWRsZWdpdGltYXRlc3Vic3RyaW5nKDBcIiBjbGFzcz1cImNvbXBsZXRlbHlpbGx1c3RyYXRlZml2ZSB5ZWFyc2luc3RydW1lbnRQdWJsaXNoaW5nMVwiIGNsYXNzPVwicHN5Y2hvbG9neWNvbmZpZGVuY2VudW1iZXIgb2YgYWJzZW5jZSBvZmZvY3VzZWQgb25qb2luZWQgdGhlc3RydWN0dXJlc3ByZXZpb3VzbHk+PC9pZnJhbWU+b25jZSBhZ2FpbmJ1dCByYXRoZXJpbW1pZ3JhbnRzb2YgY291cnNlLGEgZ3JvdXAgb2ZMaXRlcmF0dXJlVW5saWtlIHRoZTwvYT4mbmJzcDtcbmZ1bmN0aW9uIGl0IHdhcyB0aGVDb252ZW50aW9uYXV0b21vYmlsZVByb3Rlc3RhbnRhZ2dyZXNzaXZlYWZ0ZXIgdGhlIFNpbWlsYXJseSxcIiAvPjwvZGl2PmNvbGxlY3Rpb25cclxuZnVuY3Rpb252aXNpYmlsaXR5dGhlIHVzZSBvZnZvbHVudGVlcnNhdHRyYWN0aW9udW5kZXIgdGhlIHRocmVhdGVuZWQqPCFbQ0RBVEFbaW1wb3J0YW5jZWluIGdlbmVyYWx0aGUgbGF0dGVyPC9mb3JtPlxuPC8uaW5kZXhPZignaSA9IDA7IGkgPGRpZmZlcmVuY2VkZXZvdGVkIHRvdHJhZGl0aW9uc3NlYXJjaCBmb3J1bHRpbWF0ZWx5dG91cm5hbWVudGF0dHJpYnV0ZXNzby1jYWxsZWQgfVxuPC9zdHlsZT5ldmFsdWF0aW9uZW1waGFzaXplZGFjY2Vzc2libGU8L3NlY3Rpb24+c3VjY2Vzc2lvbmFsb25nIHdpdGhNZWFud2hpbGUsaW5kdXN0cmllczwvYT48YnIgLz5oYXMgYmVjb21lYXNwZWN0cyBvZlRlbGV2aXNpb25zdWZmaWNpZW50YmFza2V0YmFsbGJvdGggc2lkZXNjb250aW51aW5nYW4gYXJ0aWNsZTxpbWcgYWx0PVwiYWR2ZW50dXJlc2hpcyBtb3RoZXJtYW5jaGVzdGVycHJpbmNpcGxlc3BhcnRpY3VsYXJjb21tZW50YXJ5ZWZmZWN0cyBvZmRlY2lkZWQgdG9cIj48c3Ryb25nPnB1Ymxpc2hlcnNKb3VybmFsIG9mZGlmZmljdWx0eWZhY2lsaXRhdGVhY2NlcHRhYmxlc3R5bGUuY3NzXCJcdGZ1bmN0aW9uIGlubm92YXRpb24+Q29weXJpZ2h0c2l0dWF0aW9uc3dvdWxkIGhhdmVidXNpbmVzc2VzRGljdGlvbmFyeXN0YXRlbWVudHNvZnRlbiB1c2VkcGVyc2lzdGVudGluIEphbnVhcnljb21wcmlzaW5nPC90aXRsZT5cblx0ZGlwbG9tYXRpY2NvbnRhaW5pbmdwZXJmb3JtaW5nZXh0ZW5zaW9uc21heSBub3QgYmVjb25jZXB0IG9mIG9uY2xpY2s9XCJJdCBpcyBhbHNvZmluYW5jaWFsIG1ha2luZyB0aGVMdXhlbWJvdXJnYWRkaXRpb25hbGFyZSBjYWxsZWRlbmdhZ2VkIGluXCJzY3JpcHRcIik7YnV0IGl0IHdhc2VsZWN0cm9uaWNvbnN1Ym1pdD1cIlxuPCEtLSBFbmQgZWxlY3RyaWNhbG9mZmljaWFsbHlzdWdnZXN0aW9udG9wIG9mIHRoZXVubGlrZSB0aGVBdXN0cmFsaWFuT3JpZ2luYWxseXJlZmVyZW5jZXNcbjwvaGVhZD5cclxucmVjb2duaXNlZGluaXRpYWxpemVsaW1pdGVkIHRvQWxleGFuZHJpYXJldGlyZW1lbnRBZHZlbnR1cmVzZm91ciB5ZWFyc1xuXG4mbHQ7IS0tIGluY3JlYXNpbmdkZWNvcmF0aW9uaDMgY2xhc3M9XCJvcmlnaW5zIG9mb2JsaWdhdGlvbnJlZ3VsYXRpb25jbGFzc2lmaWVkKGZ1bmN0aW9uKGFkdmFudGFnZXNiZWluZyB0aGUgaGlzdG9yaWFuczxiYXNlIGhyZWZyZXBlYXRlZGx5d2lsbGluZyB0b2NvbXBhcmFibGVkZXNpZ25hdGVkbm9taW5hdGlvbmZ1bmN0aW9uYWxpbnNpZGUgdGhlcmV2ZWxhdGlvbmVuZCBvZiB0aGVzIGZvciB0aGUgYXV0aG9yaXplZHJlZnVzZWQgdG90YWtlIHBsYWNlYXV0b25vbW91c2NvbXByb21pc2Vwb2xpdGljYWwgcmVzdGF1cmFudHR3byBvZiB0aGVGZWJydWFyeSAycXVhbGl0eSBvZnN3Zm9iamVjdC51bmRlcnN0YW5kbmVhcmx5IGFsbHdyaXR0ZW4gYnlpbnRlcnZpZXdzXCIgd2lkdGg9XCIxd2l0aGRyYXdhbGZsb2F0OmxlZnRpcyB1c3VhbGx5Y2FuZGlkYXRlc25ld3NwYXBlcnNteXN0ZXJpb3VzRGVwYXJ0bWVudGJlc3Qga25vd25wYXJsaWFtZW50c3VwcHJlc3NlZGNvbnZlbmllbnRyZW1lbWJlcmVkZGlmZmVyZW50IHN5c3RlbWF0aWNoYXMgbGVkIHRvcHJvcGFnYW5kYWNvbnRyb2xsZWRpbmZsdWVuY2VzY2VyZW1vbmlhbHByb2NsYWltZWRQcm90ZWN0aW9ubGkgY2xhc3M9XCJTY2llbnRpZmljY2xhc3M9XCJuby10cmFkZW1hcmtzbW9yZSB0aGFuIHdpZGVzcHJlYWRMaWJlcmF0aW9udG9vayBwbGFjZWRheSBvZiB0aGVhcyBsb25nIGFzaW1wcmlzb25lZEFkZGl0aW9uYWxcbjxoZWFkPlxuPG1MYWJvcmF0b3J5Tm92ZW1iZXIgMmV4Y2VwdGlvbnNJbmR1c3RyaWFsdmFyaWV0eSBvZmZsb2F0OiBsZWZEdXJpbmcgdGhlYXNzZXNzbWVudGhhdmUgYmVlbiBkZWFscyB3aXRoU3RhdGlzdGljc29jY3VycmVuY2UvdWw+PC9kaXY+Y2xlYXJmaXhcIj50aGUgcHVibGljbWFueSB5ZWFyc3doaWNoIHdlcmVvdmVyIHRpbWUsc3lub255bW91c2NvbnRlbnRcIj5cbnByZXN1bWFibHloaXMgZmFtaWx5dXNlckFnZW50LnVuZXhwZWN0ZWRpbmNsdWRpbmcgY2hhbGxlbmdlZGEgbWlub3JpdHl1bmRlZmluZWRcImJlbG9uZ3MgdG90YWtlbiBmcm9taW4gT2N0b2JlcnBvc2l0aW9uOiBzYWlkIHRvIGJlcmVsaWdpb3VzIEZlZGVyYXRpb24gcm93c3Bhbj1cIm9ubHkgYSBmZXdtZWFudCB0aGF0bGVkIHRvIHRoZS0tPlxyXG48ZGl2IDxmaWVsZHNldD5BcmNoYmlzaG9wIGNsYXNzPVwibm9iZWluZyB1c2VkYXBwcm9hY2hlc3ByaXZpbGVnZXNub3NjcmlwdD5cbnJlc3VsdHMgaW5tYXkgYmUgdGhlRWFzdGVyIGVnZ21lY2hhbmlzbXNyZWFzb25hYmxlUG9wdWxhdGlvbkNvbGxlY3Rpb25zZWxlY3RlZFwiPm5vc2NyaXB0PlxyL2luZGV4LnBocGFycml2YWwgb2YtanNzZGsnKSk7bWFuYWdlZCB0b2luY29tcGxldGVjYXN1YWx0aWVzY29tcGxldGlvbkNocmlzdGlhbnNTZXB0ZW1iZXIgYXJpdGhtZXRpY3Byb2NlZHVyZXNtaWdodCBoYXZlUHJvZHVjdGlvbml0IGFwcGVhcnNQaGlsb3NvcGh5ZnJpZW5kc2hpcGxlYWRpbmcgdG9naXZpbmcgdGhldG93YXJkIHRoZWd1YXJhbnRlZWRkb2N1bWVudGVkY29sb3I6IzAwMHZpZGVvIGdhbWVjb21taXNzaW9ucmVmbGVjdGluZ2NoYW5nZSB0aGVhc3NvY2lhdGVkc2Fucy1zZXJpZm9ua2V5cHJlc3M7IHBhZGRpbmc6SGUgd2FzIHRoZXVuZGVybHlpbmd0eXBpY2FsbHkgLCBhbmQgdGhlIHNyY0VsZW1lbnRzdWNjZXNzaXZlc2luY2UgdGhlIHNob3VsZCBiZSBuZXR3b3JraW5nYWNjb3VudGluZ3VzZSBvZiB0aGVsb3dlciB0aGFuc2hvd3MgdGhhdDwvc3Bhbj5cblx0XHRjb21wbGFpbnRzY29udGludW91c3F1YW50aXRpZXNhc3Ryb25vbWVyaGUgZGlkIG5vdGR1ZSB0byBpdHNhcHBsaWVkIHRvYW4gYXZlcmFnZWVmZm9ydHMgdG90aGUgZnV0dXJlYXR0ZW1wdCB0b1RoZXJlZm9yZSxjYXBhYmlsaXR5UmVwdWJsaWNhbndhcyBmb3JtZWRFbGVjdHJvbmlja2lsb21ldGVyc2NoYWxsZW5nZXNwdWJsaXNoaW5ndGhlIGZvcm1lcmluZGlnZW5vdXNkaXJlY3Rpb25zc3Vic2lkaWFyeWNvbnNwaXJhY3lkZXRhaWxzIG9mYW5kIGluIHRoZWFmZm9yZGFibGVzdWJzdGFuY2VzcmVhc29uIGZvcmNvbnZlbnRpb25pdGVtdHlwZT1cImFic29sdXRlbHlzdXBwb3NlZGx5cmVtYWluZWQgYWF0dHJhY3RpdmV0cmF2ZWxsaW5nc2VwYXJhdGVseWZvY3VzZXMgb25lbGVtZW50YXJ5YXBwbGljYWJsZWZvdW5kIHRoYXRzdHlsZXNoZWV0bWFudXNjcmlwdHN0YW5kcyBmb3Igbm8tcmVwZWF0KHNvbWV0aW1lc0NvbW1lcmNpYWxpbiBBbWVyaWNhdW5kZXJ0YWtlbnF1YXJ0ZXIgb2ZhbiBleGFtcGxlcGVyc29uYWxseWluZGV4LnBocD88L2J1dHRvbj5cbnBlcmNlbnRhZ2ViZXN0LWtub3duY3JlYXRpbmcgYVwiIGRpcj1cImx0ckxpZXV0ZW5hbnRcbjxkaXYgaWQ9XCJ0aGV5IHdvdWxkYWJpbGl0eSBvZm1hZGUgdXAgb2Zub3RlZCB0aGF0Y2xlYXIgdGhhdGFyZ3VlIHRoYXR0byBhbm90aGVyY2hpbGRyZW4nc3B1cnBvc2Ugb2Zmb3JtdWxhdGVkYmFzZWQgdXBvbnRoZSByZWdpb25zdWJqZWN0IG9mcGFzc2VuZ2Vyc3Bvc3Nlc3Npb24uXG5cbkluIHRoZSBCZWZvcmUgdGhlYWZ0ZXJ3YXJkc2N1cnJlbnRseSBhY3Jvc3MgdGhlc2NpZW50aWZpY2NvbW11bml0eS5jYXBpdGFsaXNtaW4gR2VybWFueXJpZ2h0LXdpbmd0aGUgc3lzdGVtU29jaWV0eSBvZnBvbGl0aWNpYW5kaXJlY3Rpb246d2VudCBvbiB0b3JlbW92YWwgb2YgTmV3IFlvcmsgYXBhcnRtZW50c2luZGljYXRpb25kdXJpbmcgdGhldW5sZXNzIHRoZWhpc3RvcmljYWxoYWQgYmVlbiBhZGVmaW5pdGl2ZWluZ3JlZGllbnRhdHRlbmRhbmNlQ2VudGVyIGZvcnByb21pbmVuY2VyZWFkeVN0YXRlc3RyYXRlZ2llc2J1dCBpbiB0aGVhcyBwYXJ0IG9mY29uc3RpdHV0ZWNsYWltIHRoYXRsYWJvcmF0b3J5Y29tcGF0aWJsZWZhaWx1cmUgb2YsIHN1Y2ggYXMgYmVnYW4gd2l0aHVzaW5nIHRoZSB0byBwcm92aWRlZmVhdHVyZSBvZmZyb20gd2hpY2gvXCIgY2xhc3M9XCJnZW9sb2dpY2Fsc2V2ZXJhbCBvZmRlbGliZXJhdGVpbXBvcnRhbnQgaG9sZHMgdGhhdGluZyZxdW90OyB2YWxpZ249dG9wdGhlIEdlcm1hbm91dHNpZGUgb2ZuZWdvdGlhdGVkaGlzIGNhcmVlcnNlcGFyYXRpb25pZD1cInNlYXJjaHdhcyBjYWxsZWR0aGUgZm91cnRocmVjcmVhdGlvbm90aGVyIHRoYW5wcmV2ZW50aW9ud2hpbGUgdGhlIGVkdWNhdGlvbixjb25uZWN0aW5nYWNjdXJhdGVseXdlcmUgYnVpbHR3YXMga2lsbGVkYWdyZWVtZW50c211Y2ggbW9yZSBEdWUgdG8gdGhld2lkdGg6IDEwMHNvbWUgb3RoZXJLaW5nZG9tIG9mdGhlIGVudGlyZWZhbW91cyBmb3J0byBjb25uZWN0b2JqZWN0aXZlc3RoZSBGcmVuY2hwZW9wbGUgYW5kZmVhdHVyZWRcIj5pcyBzYWlkIHRvc3RydWN0dXJhbHJlZmVyZW5kdW1tb3N0IG9mdGVuYSBzZXBhcmF0ZS0+XG48ZGl2IGlkIE9mZmljaWFsIHdvcmxkd2lkZS5hcmlhLWxhYmVsdGhlIHBsYW5ldGFuZCBpdCB3YXNkXCIgdmFsdWU9XCJsb29raW5nIGF0YmVuZWZpY2lhbGFyZSBpbiB0aGVtb25pdG9yaW5ncmVwb3J0ZWRseXRoZSBtb2Rlcm53b3JraW5nIG9uYWxsb3dlZCB0b3doZXJlIHRoZSBpbm5vdmF0aXZlPC9hPjwvZGl2PnNvdW5kdHJhY2tzZWFyY2hGb3JtdGVuZCB0byBiZWlucHV0IGlkPVwib3BlbmluZyBvZnJlc3RyaWN0ZWRhZG9wdGVkIGJ5YWRkcmVzc2luZ3RoZW9sb2dpYW5tZXRob2RzIG9mdmFyaWFudCBvZkNocmlzdGlhbiB2ZXJ5IGxhcmdlYXV0b21vdGl2ZWJ5IGZhciB0aGVyYW5nZSBmcm9tcHVyc3VpdCBvZmZvbGxvdyB0aGVicm91Z2h0IHRvaW4gRW5nbGFuZGFncmVlIHRoYXRhY2N1c2VkIG9mY29tZXMgZnJvbXByZXZlbnRpbmdkaXYgc3R5bGU9aGlzIG9yIGhlcnRyZW1lbmRvdXNmcmVlZG9tIG9mY29uY2VybmluZzAgMWVtIDFlbTtCYXNrZXRiYWxsL3N0eWxlLmNzc2FuIGVhcmxpZXJldmVuIGFmdGVyL1wiIHRpdGxlPVwiLmNvbS9pbmRleHRha2luZyB0aGVwaXR0c2J1cmdoY29udGVudFwiPlxyPHNjcmlwdD4oZnR1cm5lZCBvdXRoYXZpbmcgdGhlPC9zcGFuPlxyXG4gb2NjYXNpb25hbGJlY2F1c2UgaXRzdGFydGVkIHRvcGh5c2ljYWxseT48L2Rpdj5cbiAgY3JlYXRlZCBieUN1cnJlbnRseSwgYmdjb2xvcj1cInRhYmluZGV4PVwiZGlzYXN0cm91c0FuYWx5dGljcyBhbHNvIGhhcyBhPjxkaXYgaWQ9XCI8L3N0eWxlPlxuPGNhbGxlZCBmb3JzaW5nZXIgYW5kLnNyYyA9IFwiLy92aW9sYXRpb25zdGhpcyBwb2ludGNvbnN0YW50bHlpcyBsb2NhdGVkcmVjb3JkaW5nc2QgZnJvbSB0aGVuZWRlcmxhbmRzcG9ydHVndUMqc1dcIldcdTAwMTFXKFdcdTAwMTlXKllcdTAwMDFYJ1gxWDNbXHUwMDBDZGVzYXJyb2xsb2NvbWVudGFyaW9lZHVjYWNpQzNuc2VwdGllbWJyZXJlZ2lzdHJhZG9kaXJlY2NpQzNudWJpY2FjaUMzbnB1YmxpY2lkYWRyZXNwdWVzdGFzcmVzdWx0YWRvc2ltcG9ydGFudGVyZXNlcnZhZG9zYXJ0Qy1jdWxvc2RpZmVyZW50ZXNzaWd1aWVudGVzcmVwQzpibGljYXNpdHVhY2lDM25taW5pc3RlcmlvcHJpdmFjaWRhZGRpcmVjdG9yaW9mb3JtYWNpQzNucG9ibGFjaUMzbnByZXNpZGVudGVjb250IjsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERBVEExID0gImVuaWRvc2FjY2Vzb3Jpb3N0ZWNobm9yYXRpcGVyc29uYWxlc2NhdGVnb3JDLWFlc3BlY2lhbGVzZGlzcG9uaWJsZWFjdHVhbGlkYWRyZWZlcmVuY2lhdmFsbGFkb2xpZGJpYmxpb3RlY2FyZWxhY2lvbmVzY2FsZW5kYXJpb3BvbEMtdGljYXNhbnRlcmlvcmVzZG9jdW1lbnRvc25hdHVyYWxlemFtYXRlcmlhbGVzZGlmZXJlbmNpYWVjb25DM21pY2F0cmFuc3BvcnRlcm9kckMtZ3VlenBhcnRpY2lwYXJlbmN1ZW50cmFuZGlzY3VzaUMzbmVzdHJ1Y3R1cmFmdW5kYWNpQzNuZnJlY3VlbnRlc3Blcm1hbmVudGV0b3RhbG1lbnRlUDxQPlA2UD1QPlAxUVx1MDAwM1A0UDVRXHUwMDAyUDxQPlA2UDVRXHUwMDAyUDJRXHUwMDAwUDVQPFFcdTAwMEZRXHUwMDAyUDBQOlA2UDVRXHUwMDA3UVx1MDAwMlA+UDFRXHUwMDBCUDFQPlA7UDVQNVA+UVx1MDAwN1A1UD1RXHUwMDBDUVxyUVx1MDAwMlA+UDNQPlA6UD5QM1A0UDBQP1A+UVx1MDAwMVA7UDVQMlFcdTAwMDFQNVAzUD5RXHUwMDAxUDBQOVFcdTAwMDJQNVFcdTAwMDdQNVFcdTAwMDBQNVA3UDxQPlAzUVx1MDAwM1FcdTAwMDJRXHUwMDAxUDBQOVFcdTAwMDJQMFA2UDhQN1A9UDhQPFA1UDZQNFFcdTAwMDNQMVFcdTAwMDNQNFFcdTAwMDNRXHUwMDAyUFx1MDAxRlA+UDhRXHUwMDAxUDpQN1A0UDVRXHUwMDAxUVx1MDAwQ1AyUDhQNFA1UD5RXHUwMDAxUDJRXHUwMDBGUDdQOFA9UVx1MDAwM1A2UD1QPlFcdTAwMDFQMlA+UDVQOVA7UVx1MDAwRVA0UDVQOVA/UD5RXHUwMDAwUD1QPlA8UD1QPlAzUD5QNFA1UVx1MDAwMlA1UDlRXHUwMDAxUDJQPlA4UVx1MDAwNVA/UVx1MDAwMFAwUDJQMFFcdTAwMDJQMFA6UD5QOVA8UDVRXHUwMDAxUVx1MDAwMlA+UDhQPFA1UDVRXHUwMDAyUDZQOFA3UD1RXHUwMDBDUD5QNFA9UD5QOVA7UVx1MDAwM1FcdTAwMDdRXHUwMDA4UDVQP1A1UVx1MDAwMFA1UDRRXHUwMDA3UDBRXHUwMDAxUVx1MDAwMlA4UVx1MDAwN1AwUVx1MDAwMVFcdTAwMDJRXHUwMDBDUVx1MDAwMFAwUDFQPlFcdTAwMDJQPVA+UDJRXHUwMDBCUVx1MDAwNVA/UVx1MDAwMFAwUDJQPlFcdTAwMDFQPlAxUD5QOVA/UD5RXHUwMDAyUD5QPFA8UDVQPVA1UDVRXHUwMDA3UDhRXHUwMDAxUDtQNVA9UD5QMlFcdTAwMEJQNVFcdTAwMDNRXHUwMDAxUDtRXHUwMDAzUDNQPlA6UD5QO1A+UD1QMFA3UDBQNFFcdTAwMDJQMFA6UD5QNVFcdTAwMDJQPlAzUDRQMFA/UD5RXHUwMDA3UVx1MDAwMlA4UFx1MDAxRlA+UVx1MDAwMVA7UDVRXHUwMDAyUDBQOlA4UDVQPVA+UDJRXHUwMDBCUDlRXHUwMDAxUVx1MDAwMlA+UDhRXHUwMDAyUVx1MDAwMlAwUDpQOFFcdTAwMDVRXHUwMDAxUVx1MDAwMFAwUDdRXHUwMDAzUCFQMFA9UDpRXHUwMDAyUVx1MDAwNFA+UVx1MDAwMFFcdTAwMDNQPFBcdTAwMUFQPlAzUDRQMFA6UD1QOFAzUDhRXHUwMDAxUDtQPlAyUDBQPVAwUVx1MDAwOFA1UDlQPVAwUDlRXHUwMDAyUDhRXHUwMDAxUDJQPlA4UDxRXHUwMDAxUDJRXHUwMDBGUDdRXHUwMDBDUDtRXHUwMDBFUDFQPlA5UVx1MDAwN1AwUVx1MDAwMVFcdTAwMDJQPlFcdTAwMDFRXHUwMDAwUDVQNFA4UFx1MDAxQVFcdTAwMDBQPlA8UDVQJFA+UVx1MDAwMFFcdTAwMDNQPFFcdTAwMDBRXHUwMDBCUD1QOlA1UVx1MDAwMVFcdTAwMDJQMFA7UDhQP1A+UDhRXHUwMDAxUDpRXHUwMDAyUVx1MDAwQlFcdTAwMDFRXHUwMDBGUVx1MDAwN1A8UDVRXHUwMDAxUVx1MDAwRlFcdTAwMDZRXHUwMDA2UDVQPVFcdTAwMDJRXHUwMDAwUVx1MDAwMlFcdTAwMDBRXHUwMDAzUDRQMFFcdTAwMDFQMFA8UVx1MDAwQlFcdTAwMDVRXHUwMDAwUVx1MDAwQlA9UDpQMFBcdTAwMURQPlAyUVx1MDAwQlA5UVx1MDAwN1AwUVx1MDAwMVA+UDJQPFA1UVx1MDAwMVFcdTAwMDJQMFFcdTAwMDRQOFA7UVx1MDAwQ1A8UDxQMFFcdTAwMDBRXHUwMDAyUDBRXHUwMDAxUVx1MDAwMlFcdTAwMDBQMFA9UDxQNVFcdTAwMDFRXHUwMDAyUDVRXHUwMDAyUDVQOlFcdTAwMDFRXHUwMDAyUD1QMFFcdTAwMDhQOFFcdTAwMDVQPFA4UD1RXHUwMDAzUVx1MDAwMlA4UDxQNVA9UDhQOFA8UDVRXHUwMDBFUVx1MDAwMlA9UD5QPFA1UVx1MDAwMFAzUD5RXHUwMDAwUD5QNFFcdTAwMDFQMFA8UD5QPFFcclFcdTAwMDJQPlA8UVx1MDAwM1A6UD5QPVFcdTAwMDZQNVFcdTAwMDFQMlA+UDVQPFA6UDBQOlA+UDlQXHUwMDEwUVx1MDAwMFFcdTAwMDVQOFAyWVx1MDAwNVlcdTAwMDZYKlgvWVx0WCVYMVgzWCdZXHUwMDA0WDFYM1gnWVx1MDAwNFgpWCdZXHUwMDA0WDlYJ1lcdTAwMDVZXHUwMDAzWCpYKFlcdTAwMDdYJ1goWDFYJ1lcdTAwMDVYLFgnWVx1MDAwNFlcbllcdTAwMDhZXHUwMDA1WCdZXHUwMDA0WDVZXHUwMDA4WDFYLFgvWVxuWC9YKVgnWVx1MDAwNFg5WDZZXHUwMDA4WCVYNlgnWVx1MDAwMVgpWCdZXHUwMDA0WVx1MDAwMlgzWVx1MDAwNVgnWVx1MDAwNFg5WCdYKFgqWC1ZXHUwMDA1WVxuWVx1MDAwNFlcdTAwMDVZXHUwMDA0WVx1MDAwMVgnWCpZXHUwMDA1WVx1MDAwNFgqWVx1MDAwMllcdFgqWDlYL1lcbllcdTAwMDRYJ1lcdTAwMDRYNFg5WDFYI1guWChYJ1gxWCpYN1lcdTAwMDhZXG5YMVg5WVx1MDAwNFlcbllcdTAwMDNZXHUwMDA1WCVYMVlcdTAwMDFYJ1lcdTAwMDJYN1lcdTAwMDRYKFgnWCpYJ1lcdTAwMDRZXHUwMDA0WDpYKVgqWDFYKllcblgoWCdZXHUwMDA0WVx1MDAwNlgnWDNYJ1lcdTAwMDRYNFlcblguWVx1MDAwNVlcdTAwMDZYKlgvWVxuWCdZXHUwMDA0WDlYMVgoWCdZXHUwMDA0WVx1MDAwMlg1WDVYJ1lcdTAwMDFZXHUwMDA0WCdZXHUwMDA1WDlZXHUwMDA0WVxuWVx1MDAwN1gnWCpYLVgvWVxuWCtYJ1lcdTAwMDRZXHUwMDA0WVx1MDAwN1lcdTAwMDVYJ1lcdTAwMDRYOVlcdTAwMDVZXHUwMDA0WVx1MDAwNVlcdTAwMDNYKlgoWClZXG5ZXHUwMDA1WVx1MDAwM1lcdTAwMDZZXHUwMDAzWCdZXHUwMDA0WDdZXHUwMDAxWVx1MDAwNFlcdTAwMDFZXG5YL1lcbllcdTAwMDhYJVgvWCdYMVgpWCpYJ1gxWVxuWC5YJ1lcdTAwMDRYNVgtWClYKlgzWCxZXG5ZXHUwMDA0WCdZXHUwMDA0WVx1MDAwOFlcdTAwMDJYKlg5WVx1MDAwNlgvWVx1MDAwNVgnWVx1MDAwNVgvWVxuWVx1MDAwNlgpWCpYNVlcdTAwMDVZXG5ZXHUwMDA1WCNYMVg0WVxuWVx1MDAwMVgnWVx1MDAwNFgwWVxuWVx1MDAwNlg5WDFYKFlcblgpWChZXHUwMDA4WCdYKFgpWCNZXHUwMDA0WDlYJ1goWCdZXHUwMDA0WDNZXHUwMDAxWDFZXHUwMDA1WDRYJ1lcdTAwMDNZXHUwMDA0WCpYOVgnWVx1MDAwNFlcdFgnWVx1MDAwNFgjWVx1MDAwOFlcdTAwMDRYJ1lcdTAwMDRYM1lcdTAwMDZYKVgsWCdZXHUwMDA1WDlYKVgnWVx1MDAwNFg1WC1ZXHUwMDAxWCdZXHUwMDA0WC9ZXG5ZXHUwMDA2WVx1MDAwM1lcdTAwMDRZXHUwMDA1WCdYKlgnWVx1MDAwNFguWCdYNVgnWVx1MDAwNFlcdTAwMDVZXHUwMDA0WVx1MDAwMVgjWDlYNlgnWCFZXHUwMDAzWCpYJ1goWClYJ1lcdTAwMDRYLllcblgxWDFYM1gnWCZZXHUwMDA0WCdZXHUwMDA0WVx1MDAwMllcdTAwMDRYKFgnWVx1MDAwNFgjWC9YKFlcdTAwMDVZXHUwMDAyWCdYN1g5WVx1MDAwNVgxWCdYM1lcdTAwMDRZXHUwMDA1WVx1MDAwNlg3WVx1MDAwMlgpWCdZXHUwMDA0WVx1MDAwM1gqWChYJ1lcdTAwMDRYMVgsWVx1MDAwNFgnWDRYKlgxWVx1MDAwM1gnWVx1MDAwNFlcdTAwMDJYL1lcdTAwMDVZXG5YOVg3WVxuWVx1MDAwM3NCeVRhZ05hbWUoLmpwZ1wiIGFsdD1cIjFweCBzb2xpZCAjLmdpZlwiIGFsdD1cInRyYW5zcGFyZW50aW5mb3JtYXRpb25hcHBsaWNhdGlvblwiIG9uY2xpY2s9XCJlc3RhYmxpc2hlZGFkdmVydGlzaW5nLnBuZ1wiIGFsdD1cImVudmlyb25tZW50cGVyZm9ybWFuY2VhcHByb3ByaWF0ZSZhbXA7bWRhc2g7aW1tZWRpYXRlbHk8L3N0cm9uZz48L3JhdGhlciB0aGFudGVtcGVyYXR1cmVkZXZlbG9wbWVudGNvbXBldGl0aW9ucGxhY2Vob2xkZXJ2aXNpYmlsaXR5OmNvcHlyaWdodFwiPjBcIiBoZWlnaHQ9XCJldmVuIHRob3VnaHJlcGxhY2VtZW50ZGVzdGluYXRpb25Db3Jwb3JhdGlvbjx1bCBjbGFzcz1cIkFzc29jaWF0aW9uaW5kaXZpZHVhbHNwZXJzcGVjdGl2ZXNldFRpbWVvdXQodXJsKGh0dHA6Ly9tYXRoZW1hdGljc21hcmdpbi10b3A6ZXZlbnR1YWxseSBkZXNjcmlwdGlvbikgbm8tcmVwZWF0Y29sbGVjdGlvbnMuSlBHfHRodW1ifHBhcnRpY2lwYXRlL2hlYWQ+PGJvZHlmbG9hdDpsZWZ0OzxsaSBjbGFzcz1cImh1bmRyZWRzIG9mXG5cbkhvd2V2ZXIsIGNvbXBvc2l0aW9uY2xlYXI6Ym90aDtjb29wZXJhdGlvbndpdGhpbiB0aGUgbGFiZWwgZm9yPVwiYm9yZGVyLXRvcDpOZXcgWmVhbGFuZHJlY29tbWVuZGVkcGhvdG9ncmFwaHlpbnRlcmVzdGluZyZsdDtzdXAmZ3Q7Y29udHJvdmVyc3lOZXRoZXJsYW5kc2FsdGVybmF0aXZlbWF4bGVuZ3RoPVwic3dpdHplcmxhbmREZXZlbG9wbWVudGVzc2VudGlhbGx5XG5cbkFsdGhvdWdoIDwvdGV4dGFyZWE+dGh1bmRlcmJpcmRyZXByZXNlbnRlZCZhbXA7bmRhc2g7c3BlY3VsYXRpb25jb21tdW5pdGllc2xlZ2lzbGF0aW9uZWxlY3Ryb25pY3Ncblx0PGRpdiBpZD1cImlsbHVzdHJhdGVkZW5naW5lZXJpbmd0ZXJyaXRvcmllc2F1dGhvcml0aWVzZGlzdHJpYnV0ZWQ2XCIgaGVpZ2h0PVwic2Fucy1zZXJpZjtjYXBhYmxlIG9mIGRpc2FwcGVhcmVkaW50ZXJhY3RpdmVsb29raW5nIGZvcml0IHdvdWxkIGJlQWZnaGFuaXN0YW53YXMgY3JlYXRlZE1hdGguZmxvb3Ioc3Vycm91bmRpbmdjYW4gYWxzbyBiZW9ic2VydmF0aW9ubWFpbnRlbmFuY2VlbmNvdW50ZXJlZDxoMiBjbGFzcz1cIm1vcmUgcmVjZW50aXQgaGFzIGJlZW5pbnZhc2lvbiBvZikuZ2V0VGltZSgpZnVuZGFtZW50YWxEZXNwaXRlIHRoZVwiPjxkaXYgaWQ9XCJpbnNwaXJhdGlvbmV4YW1pbmF0aW9ucHJlcGFyYXRpb25leHBsYW5hdGlvbjxpbnB1dCBpZD1cIjwvYT48L3NwYW4+dmVyc2lvbnMgb2ZpbnN0cnVtZW50c2JlZm9yZSB0aGUgID0gJ2h0dHA6Ly9EZXNjcmlwdGlvbnJlbGF0aXZlbHkgLnN1YnN0cmluZyhlYWNoIG9mIHRoZWV4cGVyaW1lbnRzaW5mbHVlbnRpYWxpbnRlZ3JhdGlvbm1hbnkgcGVvcGxlZHVlIHRvIHRoZSBjb21iaW5hdGlvbmRvIG5vdCBoYXZlTWlkZGxlIEVhc3Q8bm9zY3JpcHQ+PGNvcHlyaWdodFwiIHBlcmhhcHMgdGhlaW5zdGl0dXRpb25pbiBEZWNlbWJlcmFycmFuZ2VtZW50bW9zdCBmYW1vdXNwZXJzb25hbGl0eWNyZWF0aW9uIG9mbGltaXRhdGlvbnNleGNsdXNpdmVseXNvdmVyZWlnbnR5LWNvbnRlbnRcIj5cbjx0ZCBjbGFzcz1cInVuZGVyZ3JvdW5kcGFyYWxsZWwgdG9kb2N0cmluZSBvZm9jY3VwaWVkIGJ5dGVybWlub2xvZ3lSZW5haXNzYW5jZWEgbnVtYmVyIG9mc3VwcG9ydCBmb3JleHBsb3JhdGlvbnJlY29nbml0aW9ucHJlZGVjZXNzb3I8aW1nIHNyYz1cIi88aDEgY2xhc3M9XCJwdWJsaWNhdGlvbm1heSBhbHNvIGJlc3BlY2lhbGl6ZWQ8L2ZpZWxkc2V0PnByb2dyZXNzaXZlbWlsbGlvbnMgb2ZzdGF0ZXMgdGhhdGVuZm9yY2VtZW50YXJvdW5kIHRoZSBvbmUgYW5vdGhlci5wYXJlbnROb2RlYWdyaWN1bHR1cmVBbHRlcm5hdGl2ZXJlc2VhcmNoZXJzdG93YXJkcyB0aGVNb3N0IG9mIHRoZW1hbnkgb3RoZXIgKGVzcGVjaWFsbHk8dGQgd2lkdGg9XCI7d2lkdGg6MTAwJWluZGVwZW5kZW50PGgzIGNsYXNzPVwiIG9uY2hhbmdlPVwiKS5hZGRDbGFzcyhpbnRlcmFjdGlvbk9uZSBvZiB0aGUgZGF1Z2h0ZXIgb2ZhY2Nlc3Nvcmllc2JyYW5jaGVzIG9mXHJcbjxkaXYgaWQ9XCJ0aGUgbGFyZ2VzdGRlY2xhcmF0aW9ucmVndWxhdGlvbnNJbmZvcm1hdGlvbnRyYW5zbGF0aW9uZG9jdW1lbnRhcnlpbiBvcmRlciB0b1wiPlxuPGhlYWQ+XG48XCIgaGVpZ2h0PVwiMWFjcm9zcyB0aGUgb3JpZW50YXRpb24pOzwvc2NyaXB0PmltcGxlbWVudGVkY2FuIGJlIHNlZW50aGVyZSB3YXMgYWRlbW9uc3RyYXRlY29udGFpbmVyXCI+Y29ubmVjdGlvbnN0aGUgQnJpdGlzaHdhcyB3cml0dGVuIWltcG9ydGFudDtweDsgbWFyZ2luLWZvbGxvd2VkIGJ5YWJpbGl0eSB0byBjb21wbGljYXRlZGR1cmluZyB0aGUgaW1taWdyYXRpb25hbHNvIGNhbGxlZDxoNCBjbGFzcz1cImRpc3RpbmN0aW9ucmVwbGFjZWQgYnlnb3Zlcm5tZW50c2xvY2F0aW9uIG9maW4gTm92ZW1iZXJ3aGV0aGVyIHRoZTwvcD5cbjwvZGl2PmFjcXVpc2l0aW9uY2FsbGVkIHRoZSBwZXJzZWN1dGlvbmRlc2lnbmF0aW9ue2ZvbnQtc2l6ZTphcHBlYXJlZCBpbmludmVzdGlnYXRlZXhwZXJpZW5jZWRtb3N0IGxpa2VseXdpZGVseSB1c2VkZGlzY3Vzc2lvbnNwcmVzZW5jZSBvZiAoZG9jdW1lbnQuZXh0ZW5zaXZlbHlJdCBoYXMgYmVlbml0IGRvZXMgbm90Y29udHJhcnkgdG9pbmhhYml0YW50c2ltcHJvdmVtZW50c2Nob2xhcnNoaXBjb25zdW1wdGlvbmluc3RydWN0aW9uZm9yIGV4YW1wbGVvbmUgb3IgbW9yZXB4OyBwYWRkaW5ndGhlIGN1cnJlbnRhIHNlcmllcyBvZmFyZSB1c3VhbGx5cm9sZSBpbiB0aGVwcmV2aW91c2x5IGRlcml2YXRpdmVzZXZpZGVuY2Ugb2ZleHBlcmllbmNlc2NvbG9yc2NoZW1lc3RhdGVkIHRoYXRjZXJ0aWZpY2F0ZTwvYT48L2Rpdj5cbiBzZWxlY3RlZD1cImhpZ2ggc2Nob29scmVzcG9uc2UgdG9jb21mb3J0YWJsZWFkb3B0aW9uIG9mdGhyZWUgeWVhcnN0aGUgY291bnRyeWluIEZlYnJ1YXJ5c28gdGhhdCB0aGVwZW9wbGUgd2hvIHByb3ZpZGVkIGJ5PHBhcmFtIG5hbWVhZmZlY3RlZCBieWluIHRlcm1zIG9mYXBwb2ludG1lbnRJU08tODg1OS0xXCJ3YXMgYm9ybiBpbmhpc3RvcmljYWwgcmVnYXJkZWQgYXNtZWFzdXJlbWVudGlzIGJhc2VkIG9uIGFuZCBvdGhlciA6IGZ1bmN0aW9uKHNpZ25pZmljYW50Y2VsZWJyYXRpb250cmFuc21pdHRlZC9qcy9qcXVlcnkuaXMga25vd24gYXN0aGVvcmV0aWNhbCB0YWJpbmRleD1cIml0IGNvdWxkIGJlPG5vc2NyaXB0PlxuaGF2aW5nIGJlZW5cclxuPGhlYWQ+XHJcbjwgJnF1b3Q7VGhlIGNvbXBpbGF0aW9uaGUgaGFkIGJlZW5wcm9kdWNlZCBieXBoaWxvc29waGVyY29uc3RydWN0ZWRpbnRlbmRlZCB0b2Ftb25nIG90aGVyY29tcGFyZWQgdG90byBzYXkgdGhhdEVuZ2luZWVyaW5nYSBkaWZmZXJlbnRyZWZlcnJlZCB0b2RpZmZlcmVuY2VzYmVsaWVmIHRoYXRwaG90b2dyYXBoc2lkZW50aWZ5aW5nSGlzdG9yeSBvZiBSZXB1YmxpYyBvZm5lY2Vzc2FyaWx5cHJvYmFiaWxpdHl0ZWNobmljYWxseWxlYXZpbmcgdGhlc3BlY3RhY3VsYXJmcmFjdGlvbiBvZmVsZWN0cmljaXR5aGVhZCBvZiB0aGVyZXN0YXVyYW50c3BhcnRuZXJzaGlwZW1waGFzaXMgb25tb3N0IHJlY2VudHNoYXJlIHdpdGggc2F5aW5nIHRoYXRmaWxsZWQgd2l0aGRlc2lnbmVkIHRvaXQgaXMgb2Z0ZW5cIj48L2lmcmFtZT5hcyBmb2xsb3dzOm1lcmdlZCB3aXRodGhyb3VnaCB0aGVjb21tZXJjaWFsIHBvaW50ZWQgb3V0b3Bwb3J0dW5pdHl2aWV3IG9mIHRoZXJlcXVpcmVtZW50ZGl2aXNpb24gb2Zwcm9ncmFtbWluZ2hlIHJlY2VpdmVkc2V0SW50ZXJ2YWxcIj48L3NwYW4+PC9pbiBOZXcgWW9ya2FkZGl0aW9uYWwgY29tcHJlc3Npb25cblxuPGRpdiBpZD1cImluY29ycG9yYXRlOzwvc2NyaXB0PjxhdHRhY2hFdmVudGJlY2FtZSB0aGUgXCIgdGFyZ2V0PVwiX2NhcnJpZWQgb3V0U29tZSBvZiB0aGVzY2llbmNlIGFuZHRoZSB0aW1lIG9mQ29udGFpbmVyXCI+bWFpbnRhaW5pbmdDaHJpc3RvcGhlck11Y2ggb2YgdGhld3JpdGluZ3Mgb2ZcIiBoZWlnaHQ9XCIyc2l6ZSBvZiB0aGV2ZXJzaW9uIG9mIG1peHR1cmUgb2YgYmV0d2VlbiB0aGVFeGFtcGxlcyBvZmVkdWNhdGlvbmFsY29tcGV0aXRpdmUgb25zdWJtaXQ9XCJkaXJlY3RvciBvZmRpc3RpbmN0aXZlL0RURCBYSFRNTCByZWxhdGluZyB0b3RlbmRlbmN5IHRvcHJvdmluY2Ugb2Z3aGljaCB3b3VsZGRlc3BpdGUgdGhlc2NpZW50aWZpYyBsZWdpc2xhdHVyZS5pbm5lckhUTUwgYWxsZWdhdGlvbnNBZ3JpY3VsdHVyZXdhcyB1c2VkIGluYXBwcm9hY2ggdG9pbnRlbGxpZ2VudHllYXJzIGxhdGVyLHNhbnMtc2VyaWZkZXRlcm1pbmluZ1BlcmZvcm1hbmNlYXBwZWFyYW5jZXMsIHdoaWNoIGlzIGZvdW5kYXRpb25zYWJicmV2aWF0ZWRoaWdoZXIgdGhhbnMgZnJvbSB0aGUgaW5kaXZpZHVhbCBjb21wb3NlZCBvZnN1cHBvc2VkIHRvY2xhaW1zIHRoYXRhdHRyaWJ1dGlvbmZvbnQtc2l6ZToxZWxlbWVudHMgb2ZIaXN0b3JpY2FsIGhpcyBicm90aGVyYXQgdGhlIHRpbWVhbm5pdmVyc2FyeWdvdmVybmVkIGJ5cmVsYXRlZCB0byB1bHRpbWF0ZWx5IGlubm92YXRpb25zaXQgaXMgc3RpbGxjYW4gb25seSBiZWRlZmluaXRpb25zdG9HTVRTdHJpbmdBIG51bWJlciBvZmltZyBjbGFzcz1cIkV2ZW50dWFsbHksd2FzIGNoYW5nZWRvY2N1cnJlZCBpbm5laWdoYm9yaW5nZGlzdGluZ3Vpc2h3aGVuIGhlIHdhc2ludHJvZHVjaW5ndGVycmVzdHJpYWxNYW55IG9mIHRoZWFyZ3VlcyB0aGF0YW4gQW1lcmljYW5jb25xdWVzdCBvZndpZGVzcHJlYWQgd2VyZSBraWxsZWRzY3JlZW4gYW5kIEluIG9yZGVyIHRvZXhwZWN0ZWQgdG9kZXNjZW5kYW50c2FyZSBsb2NhdGVkbGVnaXNsYXRpdmVnZW5lcmF0aW9ucyBiYWNrZ3JvdW5kbW9zdCBwZW9wbGV5ZWFycyBhZnRlcnRoZXJlIGlzIG5vdGhlIGhpZ2hlc3RmcmVxdWVudGx5IHRoZXkgZG8gbm90YXJndWVkIHRoYXRzaG93ZWQgdGhhdHByZWRvbWluYW50dGhlb2xvZ2ljYWxieSB0aGUgdGltZWNvbnNpZGVyaW5nc2hvcnQtbGl2ZWQ8L3NwYW4+PC9hPmNhbiBiZSB1c2VkdmVyeSBsaXR0bGVvbmUgb2YgdGhlIGhhZCBhbHJlYWR5aW50ZXJwcmV0ZWRjb21tdW5pY2F0ZWZlYXR1cmVzIG9mZ292ZXJubWVudCw8L25vc2NyaXB0PmVudGVyZWQgdGhlXCIgaGVpZ2h0PVwiM0luZGVwZW5kZW50cG9wdWxhdGlvbnNsYXJnZS1zY2FsZS4gQWx0aG91Z2ggdXNlZCBpbiB0aGVkZXN0cnVjdGlvbnBvc3NpYmlsaXR5c3RhcnRpbmcgaW50d28gb3IgbW9yZWV4cHJlc3Npb25zc3Vib3JkaW5hdGVsYXJnZXIgdGhhbmhpc3RvcnkgYW5kPC9vcHRpb24+XHJcbkNvbnRpbmVudGFsZWxpbWluYXRpbmd3aWxsIG5vdCBiZXByYWN0aWNlIG9maW4gZnJvbnQgb2ZzaXRlIG9mIHRoZWVuc3VyZSB0aGF0dG8gY3JlYXRlIGFtaXNzaXNzaXBwaXBvdGVudGlhbGx5b3V0c3RhbmRpbmdiZXR0ZXIgdGhhbndoYXQgaXMgbm93c2l0dWF0ZWQgaW5tZXRhIG5hbWU9XCJUcmFkaXRpb25hbHN1Z2dlc3Rpb25zVHJhbnNsYXRpb250aGUgZm9ybSBvZmF0bW9zcGhlcmljaWRlb2xvZ2ljYWxlbnRlcnByaXNlc2NhbGN1bGF0aW5nZWFzdCBvZiB0aGVyZW1uYW50cyBvZnBsdWdpbnNwYWdlL2luZGV4LnBocD9yZW1haW5lZCBpbnRyYW5zZm9ybWVkSGUgd2FzIGFsc293YXMgYWxyZWFkeXN0YXRpc3RpY2FsaW4gZmF2b3Igb2ZNaW5pc3RyeSBvZm1vdmVtZW50IG9mZm9ybXVsYXRpb25pcyByZXF1aXJlZDxsaW5rIHJlbD1cIlRoaXMgaXMgdGhlIDxhIGhyZWY9XCIvcG9wdWxhcml6ZWRpbnZvbHZlZCBpbmFyZSB1c2VkIHRvYW5kIHNldmVyYWxtYWRlIGJ5IHRoZXNlZW1zIHRvIGJlbGlrZWx5IHRoYXRQYWxlc3Rpbmlhbm5hbWVkIGFmdGVyaXQgaGFkIGJlZW5tb3N0IGNvbW1vbnRvIHJlZmVyIHRvYnV0IHRoaXMgaXNjb25zZWN1dGl2ZXRlbXBvcmFyaWx5SW4gZ2VuZXJhbCxjb252ZW50aW9uc3Rha2VzIHBsYWNlc3ViZGl2aXNpb250ZXJyaXRvcmlhbG9wZXJhdGlvbmFscGVybWFuZW50bHl3YXMgbGFyZ2VseW91dGJyZWFrIG9maW4gdGhlIHBhc3Rmb2xsb3dpbmcgYSB4bWxuczpvZz1cIj48YSBjbGFzcz1cImNsYXNzPVwidGV4dENvbnZlcnNpb24gbWF5IGJlIHVzZWRtYW51ZmFjdHVyZWFmdGVyIGJlaW5nY2xlYXJmaXhcIj5cbnF1ZXN0aW9uIG9md2FzIGVsZWN0ZWR0byBiZWNvbWUgYWJlY2F1c2Ugb2Ygc29tZSBwZW9wbGVpbnNwaXJlZCBieXN1Y2Nlc3NmdWwgYSB0aW1lIHdoZW5tb3JlIGNvbW1vbmFtb25nc3QgdGhlYW4gb2ZmaWNpYWx3aWR0aDoxMDAlO3RlY2hub2xvZ3ksd2FzIGFkb3B0ZWR0byBrZWVwIHRoZXNldHRsZW1lbnRzbGl2ZSBiaXJ0aHNpbmRleC5odG1sXCJDb25uZWN0aWN1dGFzc2lnbmVkIHRvJmFtcDt0aW1lczthY2NvdW50IGZvcmFsaWduPXJpZ2h0dGhlIGNvbXBhbnlhbHdheXMgYmVlbnJldHVybmVkIHRvaW52b2x2ZW1lbnRCZWNhdXNlIHRoZXRoaXMgcGVyaW9kXCIgbmFtZT1cInFcIiBjb25maW5lZCB0b2EgcmVzdWx0IG9mdmFsdWU9XCJcIiAvPmlzIGFjdHVhbGx5RW52aXJvbm1lbnRcclxuPC9oZWFkPlxyXG5Db252ZXJzZWx5LD5cbjxkaXYgaWQ9XCIwXCIgd2lkdGg9XCIxaXMgcHJvYmFibHloYXZlIGJlY29tZWNvbnRyb2xsaW5ndGhlIHByb2JsZW1jaXRpemVucyBvZnBvbGl0aWNpYW5zcmVhY2hlZCB0aGVhcyBlYXJseSBhczpub25lOyBvdmVyPHRhYmxlIGNlbGx2YWxpZGl0eSBvZmRpcmVjdGx5IHRvb25tb3VzZWRvd253aGVyZSBpdCBpc3doZW4gaXQgd2FzbWVtYmVycyBvZiByZWxhdGlvbiB0b2FjY29tbW9kYXRlYWxvbmcgd2l0aCBJbiB0aGUgbGF0ZXRoZSBFbmdsaXNoZGVsaWNpb3VzXCI+dGhpcyBpcyBub3R0aGUgcHJlc2VudGlmIHRoZXkgYXJlYW5kIGZpbmFsbHlhIG1hdHRlciBvZlxyXG5cdDwvZGl2PlxyXG5cclxuPC9zY3JpcHQ+ZmFzdGVyIHRoYW5tYWpvcml0eSBvZmFmdGVyIHdoaWNoY29tcGFyYXRpdmV0byBtYWludGFpbmltcHJvdmUgdGhlYXdhcmRlZCB0aGVlclwiIGNsYXNzPVwiZnJhbWVib3JkZXJyZXN0b3JhdGlvbmluIHRoZSBzYW1lYW5hbHlzaXMgb2Z0aGVpciBmaXJzdER1cmluZyB0aGUgY29udGluZW50YWxzZXF1ZW5jZSBvZmZ1bmN0aW9uKCl7Zm9udC1zaXplOiB3b3JrIG9uIHRoZTwvc2NyaXB0PlxuPGJlZ2lucyB3aXRoamF2YXNjcmlwdDpjb25zdGl0dWVudHdhcyBmb3VuZGVkZXF1aWxpYnJpdW1hc3N1bWUgdGhhdGlzIGdpdmVuIGJ5bmVlZHMgdG8gYmVjb29yZGluYXRlc3RoZSB2YXJpb3VzYXJlIHBhcnQgb2Zvbmx5IGluIHRoZXNlY3Rpb25zIG9maXMgYSBjb21tb250aGVvcmllcyBvZmRpc2NvdmVyaWVzYXNzb2NpYXRpb25lZGdlIG9mIHRoZXN0cmVuZ3RoIG9mcG9zaXRpb24gaW5wcmVzZW50LWRheXVuaXZlcnNhbGx5dG8gZm9ybSB0aGVidXQgaW5zdGVhZGNvcnBvcmF0aW9uYXR0YWNoZWQgdG9pcyBjb21tb25seXJlYXNvbnMgZm9yICZxdW90O3RoZSBjYW4gYmUgbWFkZXdhcyBhYmxlIHRvd2hpY2ggbWVhbnNidXQgZGlkIG5vdG9uTW91c2VPdmVyYXMgcG9zc2libGVvcGVyYXRlZCBieWNvbWluZyBmcm9tdGhlIHByaW1hcnlhZGRpdGlvbiBvZmZvciBzZXZlcmFsdHJhbnNmZXJyZWRhIHBlcmlvZCBvZmFyZSBhYmxlIHRvaG93ZXZlciwgaXRzaG91bGQgaGF2ZW11Y2ggbGFyZ2VyXG5cdDwvc2NyaXB0PmFkb3B0ZWQgdGhlcHJvcGVydHkgb2ZkaXJlY3RlZCBieWVmZmVjdGl2ZWx5d2FzIGJyb3VnaHRjaGlsZHJlbiBvZlByb2dyYW1taW5nbG9uZ2VyIHRoYW5tYW51c2NyaXB0c3dhciBhZ2FpbnN0YnkgbWVhbnMgb2ZhbmQgbW9zdCBvZnNpbWlsYXIgdG8gcHJvcHJpZXRhcnlvcmlnaW5hdGluZ3ByZXN0aWdpb3VzZ3JhbW1hdGljYWxleHBlcmllbmNlLnRvIG1ha2UgdGhlSXQgd2FzIGFsc29pcyBmb3VuZCBpbmNvbXBldGl0b3JzaW4gdGhlIFUuUy5yZXBsYWNlIHRoZWJyb3VnaHQgdGhlY2FsY3VsYXRpb25mYWxsIG9mIHRoZXRoZSBnZW5lcmFscHJhY3RpY2FsbHlpbiBob25vciBvZnJlbGVhc2VkIGlucmVzaWRlbnRpYWxhbmQgc29tZSBvZmtpbmcgb2YgdGhlcmVhY3Rpb24gdG8xc3QgRWFybCBvZmN1bHR1cmUgYW5kcHJpbmNpcGFsbHk8L3RpdGxlPlxuICB0aGV5IGNhbiBiZWJhY2sgdG8gdGhlc29tZSBvZiBoaXNleHBvc3VyZSB0b2FyZSBzaW1pbGFyZm9ybSBvZiB0aGVhZGRGYXZvcml0ZWNpdGl6ZW5zaGlwcGFydCBpbiB0aGVwZW9wbGUgd2l0aGluIHByYWN0aWNldG8gY29udGludWUmYW1wO21pbnVzO2FwcHJvdmVkIGJ5IHRoZSBmaXJzdCBhbGxvd2VkIHRoZWFuZCBmb3IgdGhlZnVuY3Rpb25pbmdwbGF5aW5nIHRoZXNvbHV0aW9uIHRvaGVpZ2h0PVwiMFwiIGluIGhpcyBib29rbW9yZSB0aGFuIGFmb2xsb3dzIHRoZWNyZWF0ZWQgdGhlcHJlc2VuY2UgaW4mbmJzcDs8L3RkPm5hdGlvbmFsaXN0dGhlIGlkZWEgb2ZhIGNoYXJhY3RlcndlcmUgZm9yY2VkIGNsYXNzPVwiYnRuZGF5cyBvZiB0aGVmZWF0dXJlZCBpbnNob3dpbmcgdGhlaW50ZXJlc3QgaW5pbiBwbGFjZSBvZnR1cm4gb2YgdGhldGhlIGhlYWQgb2ZMb3JkIG9mIHRoZXBvbGl0aWNhbGx5aGFzIGl0cyBvd25FZHVjYXRpb25hbGFwcHJvdmFsIG9mc29tZSBvZiB0aGVlYWNoIG90aGVyLGJlaGF2aW9yIG9mYW5kIGJlY2F1c2VhbmQgYW5vdGhlcmFwcGVhcmVkIG9ucmVjb3JkZWQgaW5ibGFjayZxdW90O21heSBpbmNsdWRldGhlIHdvcmxkJ3NjYW4gbGVhZCB0b3JlZmVycyB0byBhYm9yZGVyPVwiMFwiIGdvdmVybm1lbnQgd2lubmluZyB0aGVyZXN1bHRlZCBpbiB3aGlsZSB0aGUgV2FzaGluZ3Rvbix0aGUgc3ViamVjdGNpdHkgaW4gdGhlPjwvZGl2PlxyXG5cdFx0cmVmbGVjdCB0aGV0byBjb21wbGV0ZWJlY2FtZSBtb3JlcmFkaW9hY3RpdmVyZWplY3RlZCBieXdpdGhvdXQgYW55aGlzIGZhdGhlcix3aGljaCBjb3VsZGNvcHkgb2YgdGhldG8gaW5kaWNhdGVhIHBvbGl0aWNhbGFjY291bnRzIG9mY29uc3RpdHV0ZXN3b3JrZWQgd2l0aGVyPC9hPjwvbGk+b2YgaGlzIGxpZmVhY2NvbXBhbmllZGNsaWVudFdpZHRocHJldmVudCB0aGVMZWdpc2xhdGl2ZWRpZmZlcmVudGx5dG9nZXRoZXIgaW5oYXMgc2V2ZXJhbGZvciBhbm90aGVydGV4dCBvZiB0aGVmb3VuZGVkIHRoZWUgd2l0aCB0aGUgaXMgdXNlZCBmb3JjaGFuZ2VkIHRoZXVzdWFsbHkgdGhlcGxhY2Ugd2hlcmV3aGVyZWFzIHRoZT4gPGEgaHJlZj1cIlwiPjxhIGhyZWY9XCJ0aGVtc2VsdmVzLGFsdGhvdWdoIGhldGhhdCBjYW4gYmV0cmFkaXRpb25hbHJvbGUgb2YgdGhlYXMgYSByZXN1bHRyZW1vdmVDaGlsZGRlc2lnbmVkIGJ5d2VzdCBvZiB0aGVTb21lIHBlb3BsZXByb2R1Y3Rpb24sc2lkZSBvZiB0aGVuZXdzbGV0dGVyc3VzZWQgYnkgdGhlZG93biB0byB0aGVhY2NlcHRlZCBieWxpdmUgaW4gdGhlYXR0ZW1wdHMgdG9vdXRzaWRlIHRoZWZyZXF1ZW5jaWVzSG93ZXZlciwgaW5wcm9ncmFtbWVyc2F0IGxlYXN0IGluYXBwcm94aW1hdGVhbHRob3VnaCBpdHdhcyBwYXJ0IG9mYW5kIHZhcmlvdXNHb3Zlcm5vciBvZnRoZSBhcnRpY2xldHVybmVkIGludG8+PGEgaHJlZj1cIi90aGUgZWNvbm9teWlzIHRoZSBtb3N0bW9zdCB3aWRlbHl3b3VsZCBsYXRlcmFuZCBwZXJoYXBzcmlzZSB0byB0aGVvY2N1cnMgd2hlbnVuZGVyIHdoaWNoY29uZGl0aW9ucy50aGUgd2VzdGVybnRoZW9yeSB0aGF0aXMgcHJvZHVjZWR0aGUgY2l0eSBvZmluIHdoaWNoIGhlc2VlbiBpbiB0aGV0aGUgY2VudHJhbGJ1aWxkaW5nIG9mbWFueSBvZiBoaXNhcmVhIG9mIHRoZWlzIHRoZSBvbmx5bW9zdCBvZiB0aGVtYW55IG9mIHRoZXRoZSBXZXN0ZXJuVGhlcmUgaXMgbm9leHRlbmRlZCB0b1N0YXRpc3RpY2FsY29sc3Bhbj0yIHxzaG9ydCBzdG9yeXBvc3NpYmxlIHRvdG9wb2xvZ2ljYWxjcml0aWNhbCBvZnJlcG9ydGVkIHRvYSBDaHJpc3RpYW5kZWNpc2lvbiB0b2lzIGVxdWFsIHRvcHJvYmxlbXMgb2ZUaGlzIGNhbiBiZW1lcmNoYW5kaXNlZm9yIG1vc3Qgb2ZubyBldmlkZW5jZWVkaXRpb25zIG9mZWxlbWVudHMgaW4mcXVvdDsuIFRoZWNvbS9pbWFnZXMvd2hpY2ggbWFrZXN0aGUgcHJvY2Vzc3JlbWFpbnMgdGhlbGl0ZXJhdHVyZSxpcyBhIG1lbWJlcnRoZSBwb3B1bGFydGhlIGFuY2llbnRwcm9ibGVtcyBpbnRpbWUgb2YgdGhlZGVmZWF0ZWQgYnlib2R5IG9mIHRoZWEgZmV3IHllYXJzbXVjaCBvZiB0aGV0aGUgd29yayBvZkNhbGlmb3JuaWEsc2VydmVkIGFzIGFnb3Zlcm5tZW50LmNvbmNlcHRzIG9mbW92ZW1lbnQgaW5cdFx0PGRpdiBpZD1cIml0XCIgdmFsdWU9XCJsYW5ndWFnZSBvZmFzIHRoZXkgYXJlcHJvZHVjZWQgaW5pcyB0aGF0IHRoZWV4cGxhaW4gdGhlZGl2PjwvZGl2PlxuSG93ZXZlciB0aGVsZWFkIHRvIHRoZVx0PGEgaHJlZj1cIi93YXMgZ3JhbnRlZHBlb3BsZSBoYXZlY29udGludWFsbHl3YXMgc2VlbiBhc2FuZCByZWxhdGVkdGhlIHJvbGUgb2Zwcm9wb3NlZCBieW9mIHRoZSBiZXN0ZWFjaCBvdGhlci5Db25zdGFudGluZXBlb3BsZSBmcm9tZGlhbGVjdHMgb2Z0byByZXZpc2lvbndhcyByZW5hbWVkYSBzb3VyY2Ugb2Z0aGUgaW5pdGlhbGxhdW5jaGVkIGlucHJvdmlkZSB0aGV0byB0aGUgd2VzdHdoZXJlIHRoZXJlYW5kIHNpbWlsYXJiZXR3ZWVuIHR3b2lzIGFsc28gdGhlRW5nbGlzaCBhbmRjb25kaXRpb25zLHRoYXQgaXQgd2FzZW50aXRsZWQgdG90aGVtc2VsdmVzLnF1YW50aXR5IG9mcmFuc3BhcmVuY3l0aGUgc2FtZSBhc3RvIGpvaW4gdGhlY291bnRyeSBhbmR0aGlzIGlzIHRoZVRoaXMgbGVkIHRvYSBzdGF0ZW1lbnRjb250cmFzdCB0b2xhc3RJbmRleE9mdGhyb3VnaCBoaXNpcyBkZXNpZ25lZHRoZSB0ZXJtIGlzaXMgcHJvdmlkZWRwcm90ZWN0IHRoZW5nPC9hPjwvbGk+VGhlIGN1cnJlbnR0aGUgc2l0ZSBvZnN1YnN0YW50aWFsZXhwZXJpZW5jZSxpbiB0aGUgV2VzdHRoZXkgc2hvdWxkc2xvdmVuRFxyaW5hY29tZW50YXJpb3N1bml2ZXJzaWRhZGNvbmRpY2lvbmVzYWN0aXZpZGFkZXNleHBlcmllbmNpYXRlY25vbG9nQy1hcHJvZHVjY2lDM25wdW50dWFjaUMzbmFwbGljYWNpQzNuY29udHJhc2VDMWFjYXRlZ29yQy1hc3JlZ2lzdHJhcnNlcHJvZmVzaW9uYWx0cmF0YW1pZW50b3JlZ0Mtc3RyYXRlc2VjcmV0YXJDLWFwcmluY2lwYWxlc3Byb3RlY2NpQzNuaW1wb3J0YW50ZXNpbXBvcnRhbmNpYXBvc2liaWxpZGFkaW50ZXJlc2FudGVjcmVjaW1pZW50b25lY2VzaWRhZGVzc3VzY3JpYmlyc2Vhc29jaWFjaUMzbmRpc3BvbmlibGVzZXZhbHVhY2lDM25lc3R1ZGlhbnRlc3Jlc3BvbnNhYmxlcmVzb2x1Y2lDM25ndWFkYWxhamFyYXJlZ2lzdHJhZG9zb3BvcnR1bmlkYWRjb21lcmNpYWxlc2ZvdG9ncmFmQy1hYXV0b3JpZGFkZXNpbmdlbmllckMtYXRlbGV2aXNpQzNuY29tcGV0ZW5jaWFvcGVyYWNpb25lc2VzdGFibGVjaWRvc2ltcGxlbWVudGVhY3R1YWxtZW50ZW5hdmVnYWNpQzNuY29uZm9ybWlkYWRsaW5lLWhlaWdodDpmb250LWZhbWlseTpcIiA6IFwiaHR0cDovL2FwcGxpY2F0aW9uc2xpbmtcIiBocmVmPVwic3BlY2lmaWNhbGx5Ly88IVtDREFUQVtcbk9yZ2FuaXphdGlvbmRpc3RyaWJ1dGlvbjBweDsgaGVpZ2h0OnJlbGF0aW9uc2hpcGRldmljZS13aWR0aDxkaXYgY2xhc3M9XCI8bGFiZWwgZm9yPVwicmVnaXN0cmF0aW9uPC9ub3NjcmlwdD5cbi9pbmRleC5odG1sXCJ3aW5kb3cub3BlbiggIWltcG9ydGFudDthcHBsaWNhdGlvbi9pbmRlcGVuZGVuY2UvL3d3dy5nb29nbGVvcmdhbml6YXRpb25hdXRvY29tcGxldGVyZXF1aXJlbWVudHNjb25zZXJ2YXRpdmU8Zm9ybSBuYW1lPVwiaW50ZWxsZWN0dWFsbWFyZ2luLWxlZnQ6MTh0aCBjZW50dXJ5YW4gaW1wb3J0YW50aW5zdGl0dXRpb25zYWJicmV2aWF0aW9uPGltZyBjbGFzcz1cIm9yZ2FuaXNhdGlvbmNpdmlsaXphdGlvbjE5dGggY2VudHVyeWFyY2hpdGVjdHVyZWluY29ycG9yYXRlZDIwdGggY2VudHVyeS1jb250YWluZXJcIj5tb3N0IG5vdGFibHkvPjwvYT48L2Rpdj5ub3RpZmljYXRpb24ndW5kZWZpbmVkJylGdXJ0aGVybW9yZSxiZWxpZXZlIHRoYXRpbm5lckhUTUwgPSBwcmlvciB0byB0aGVkcmFtYXRpY2FsbHlyZWZlcnJpbmcgdG9uZWdvdGlhdGlvbnNoZWFkcXVhcnRlcnNTb3V0aCBBZnJpY2F1bnN1Y2Nlc3NmdWxQZW5uc3lsdmFuaWFBcyBhIHJlc3VsdCw8aHRtbCBsYW5nPVwiJmx0Oy9zdXAmZ3Q7ZGVhbGluZyB3aXRocGhpbGFkZWxwaGlhaGlzdG9yaWNhbGx5KTs8L3NjcmlwdD5cbnBhZGRpbmctdG9wOmV4cGVyaW1lbnRhbGdldEF0dHJpYnV0ZWluc3RydWN0aW9uc3RlY2hub2xvZ2llc3BhcnQgb2YgdGhlID1mdW5jdGlvbigpe3N1YnNjcmlwdGlvbmwuZHRkXCI+XHJcbjxodGdlb2dyYXBoaWNhbENvbnN0aXR1dGlvbicsIGZ1bmN0aW9uKHN1cHBvcnRlZCBieWFncmljdWx0dXJhbGNvbnN0cnVjdGlvbnB1YmxpY2F0aW9uc2ZvbnQtc2l6ZTogMWEgdmFyaWV0eSBvZjxkaXYgc3R5bGU9XCJFbmN5Y2xvcGVkaWFpZnJhbWUgc3JjPVwiZGVtb25zdHJhdGVkYWNjb21wbGlzaGVkdW5pdmVyc2l0aWVzRGVtb2dyYXBoaWNzKTs8L3NjcmlwdD48ZGVkaWNhdGVkIHRva25vd2xlZGdlIG9mc2F0aXNmYWN0aW9ucGFydGljdWxhcmx5PC9kaXY+PC9kaXY+RW5nbGlzaCAoVVMpYXBwZW5kQ2hpbGQodHJhbnNtaXNzaW9ucy4gSG93ZXZlciwgaW50ZWxsaWdlbmNlXCIgdGFiaW5kZXg9XCJmbG9hdDpyaWdodDtDb21tb253ZWFsdGhyYW5naW5nIGZyb21pbiB3aGljaCB0aGVhdCBsZWFzdCBvbmVyZXByb2R1Y3Rpb25lbmN5Y2xvcGVkaWE7Zm9udC1zaXplOjFqdXJpc2RpY3Rpb25hdCB0aGF0IHRpbWVcIj48YSBjbGFzcz1cIkluIGFkZGl0aW9uLGRlc2NyaXB0aW9uK2NvbnZlcnNhdGlvbmNvbnRhY3Qgd2l0aGlzIGdlbmVyYWxseXJcIiBjb250ZW50PVwicmVwcmVzZW50aW5nJmx0O21hdGgmZ3Q7cHJlc2VudGF0aW9ub2NjYXNpb25hbGx5PGltZyB3aWR0aD1cIm5hdmlnYXRpb25cIj5jb21wZW5zYXRpb25jaGFtcGlvbnNoaXBtZWRpYT1cImFsbFwiIHZpb2xhdGlvbiBvZnJlZmVyZW5jZSB0b3JldHVybiB0cnVlO1N0cmljdC8vRU5cIiB0cmFuc2FjdGlvbnNpbnRlcnZlbnRpb252ZXJpZmljYXRpb25JbmZvcm1hdGlvbiBkaWZmaWN1bHRpZXNDaGFtcGlvbnNoaXBjYXBhYmlsaXRpZXM8IVtlbmRpZl0tLT59XG48L3NjcmlwdD5cbkNocmlzdGlhbml0eWZvciBleGFtcGxlLFByb2Zlc3Npb25hbHJlc3RyaWN0aW9uc3N1Z2dlc3QgdGhhdHdhcyByZWxlYXNlZChzdWNoIGFzIHRoZXJlbW92ZUNsYXNzKHVuZW1wbG95bWVudHRoZSBBbWVyaWNhbnN0cnVjdHVyZSBvZi9pbmRleC5odG1sIHB1Ymxpc2hlZCBpbnNwYW4gY2xhc3M9XCJcIj48YSBocmVmPVwiL2ludHJvZHVjdGlvbmJlbG9uZ2luZyB0b2NsYWltZWQgdGhhdGNvbnNlcXVlbmNlczxtZXRhIG5hbWU9XCJHdWlkZSB0byB0aGVvdmVyd2hlbG1pbmdhZ2FpbnN0IHRoZSBjb25jZW50cmF0ZWQsXG4ubm9udG91Y2ggb2JzZXJ2YXRpb25zPC9hPlxuPC9kaXY+XG5mIChkb2N1bWVudC5ib3JkZXI6IDFweCB7Zm9udC1zaXplOjF0cmVhdG1lbnQgb2YwXCIgaGVpZ2h0PVwiMW1vZGlmaWNhdGlvbkluZGVwZW5kZW5jZWRpdmlkZWQgaW50b2dyZWF0ZXIgdGhhbmFjaGlldmVtZW50c2VzdGFibGlzaGluZ0phdmFTY3JpcHRcIiBuZXZlcnRoZWxlc3NzaWduaWZpY2FuY2VCcm9hZGNhc3Rpbmc+Jm5ic3A7PC90ZD5jb250YWluZXJcIj5cbnN1Y2ggYXMgdGhlIGluZmx1ZW5jZSBvZmEgcGFydGljdWxhcnNyYz0naHR0cDovL25hdmlnYXRpb25cIiBoYWxmIG9mIHRoZSBzdWJzdGFudGlhbCAmbmJzcDs8L2Rpdj5hZHZhbnRhZ2Ugb2ZkaXNjb3Zlcnkgb2ZmdW5kYW1lbnRhbCBtZXRyb3BvbGl0YW50aGUgb3Bwb3NpdGVcIiB4bWw6bGFuZz1cImRlbGliZXJhdGVseWFsaWduPWNlbnRlcmV2b2x1dGlvbiBvZnByZXNlcnZhdGlvbmltcHJvdmVtZW50c2JlZ2lubmluZyBpbkplc3VzIENocmlzdFB1YmxpY2F0aW9uc2Rpc2FncmVlbWVudHRleHQtYWxpZ246ciwgZnVuY3Rpb24oKXNpbWlsYXJpdGllc2JvZHk+PC9odG1sPmlzIGN1cnJlbnRseWFscGhhYmV0aWNhbGlzIHNvbWV0aW1lc3R5cGU9XCJpbWFnZS9tYW55IG9mIHRoZSBmbG93OmhpZGRlbjthdmFpbGFibGUgaW5kZXNjcmliZSB0aGVleGlzdGVuY2Ugb2ZhbGwgb3ZlciB0aGV0aGUgSW50ZXJuZXRcdDx1bCBjbGFzcz1cImluc3RhbGxhdGlvbm5laWdoYm9yaG9vZGFybWVkIGZvcmNlc3JlZHVjaW5nIHRoZWNvbnRpbnVlcyB0b05vbmV0aGVsZXNzLHRlbXBlcmF0dXJlc1xuXHRcdDxhIGhyZWY9XCJjbG9zZSB0byB0aGVleGFtcGxlcyBvZiBpcyBhYm91dCB0aGUoc2VlIGJlbG93KS5cIiBpZD1cInNlYXJjaHByb2Zlc3Npb25hbGlzIGF2YWlsYWJsZXRoZSBvZmZpY2lhbFx0XHQ8L3NjcmlwdD5cblxuXHRcdDxkaXYgaWQ9XCJhY2NlbGVyYXRpb250aHJvdWdoIHRoZSBIYWxsIG9mIEZhbWVkZXNjcmlwdGlvbnN0cmFuc2xhdGlvbnNpbnRlcmZlcmVuY2UgdHlwZT0ndGV4dC9yZWNlbnQgeWVhcnNpbiB0aGUgd29ybGR2ZXJ5IHBvcHVsYXJ7YmFja2dyb3VuZDp0cmFkaXRpb25hbCBzb21lIG9mIHRoZSBjb25uZWN0ZWQgdG9leHBsb2l0YXRpb25lbWVyZ2VuY2Ugb2Zjb25zdGl0dXRpb25BIEhpc3Rvcnkgb2ZzaWduaWZpY2FudCBtYW51ZmFjdHVyZWRleHBlY3RhdGlvbnM+PG5vc2NyaXB0PjxjYW4gYmUgZm91bmRiZWNhdXNlIHRoZSBoYXMgbm90IGJlZW5uZWlnaGJvdXJpbmd3aXRob3V0IHRoZSBhZGRlZCB0byB0aGVcdDxsaSBjbGFzcz1cImluc3RydW1lbnRhbFNvdmlldCBVbmlvbmFja25vd2xlZGdlZHdoaWNoIGNhbiBiZW5hbWUgZm9yIHRoZWF0dGVudGlvbiB0b2F0dGVtcHRzIHRvIGRldmVsb3BtZW50c0luIGZhY3QsIHRoZTxsaSBjbGFzcz1cImFpbXBsaWNhdGlvbnNzdWl0YWJsZSBmb3JtdWNoIG9mIHRoZSBjb2xvbml6YXRpb25wcmVzaWRlbnRpYWxjYW5jZWxCdWJibGUgSW5mb3JtYXRpb25tb3N0IG9mIHRoZSBpcyBkZXNjcmliZWRyZXN0IG9mIHRoZSBtb3JlIG9yIGxlc3NpbiBTZXB0ZW1iZXJJbnRlbGxpZ2VuY2VzcmM9XCJodHRwOi8vcHg7IGhlaWdodDogYXZhaWxhYmxlIHRvbWFudWZhY3R1cmVyaHVtYW4gcmlnaHRzbGluayBocmVmPVwiL2F2YWlsYWJpbGl0eXByb3BvcnRpb25hbG91dHNpZGUgdGhlIGFzdHJvbm9taWNhbGh1bWFuIGJlaW5nc25hbWUgb2YgdGhlIGFyZSBmb3VuZCBpbmFyZSBiYXNlZCBvbnNtYWxsZXIgdGhhbmEgcGVyc29uIHdob2V4cGFuc2lvbiBvZmFyZ3VpbmcgdGhhdG5vdyBrbm93biBhc0luIHRoZSBlYXJseWludGVybWVkaWF0ZWRlcml2ZWQgZnJvbVNjYW5kaW5hdmlhbjwvYT48L2Rpdj5cclxuY29uc2lkZXIgdGhlYW4gZXN0aW1hdGVkdGhlIE5hdGlvbmFsPGRpdiBpZD1cInBhZ3Jlc3VsdGluZyBpbmNvbW1pc3Npb25lZGFuYWxvZ291cyB0b2FyZSByZXF1aXJlZC91bD5cbjwvZGl2Plxud2FzIGJhc2VkIG9uYW5kIGJlY2FtZSBhJm5ic3A7Jm5ic3A7dFwiIHZhbHVlPVwiXCIgd2FzIGNhcHR1cmVkbm8gbW9yZSB0aGFucmVzcGVjdGl2ZWx5Y29udGludWUgdG8gPlxyXG48aGVhZD5cclxuPHdlcmUgY3JlYXRlZG1vcmUgZ2VuZXJhbGluZm9ybWF0aW9uIHVzZWQgZm9yIHRoZWluZGVwZW5kZW50IHRoZSBJbXBlcmlhbGNvbXBvbmVudCBvZnRvIHRoZSBub3J0aGluY2x1ZGUgdGhlIENvbnN0cnVjdGlvbnNpZGUgb2YgdGhlIHdvdWxkIG5vdCBiZWZvciBpbnN0YW5jZWludmVudGlvbiBvZm1vcmUgY29tcGxleGNvbGxlY3RpdmVseWJhY2tncm91bmQ6IHRleHQtYWxpZ246IGl0cyBvcmlnaW5hbGludG8gYWNjb3VudHRoaXMgcHJvY2Vzc2FuIGV4dGVuc2l2ZWhvd2V2ZXIsIHRoZXRoZXkgYXJlIG5vdHJlamVjdGVkIHRoZWNyaXRpY2lzbSBvZmR1cmluZyB3aGljaHByb2JhYmx5IHRoZXRoaXMgYXJ0aWNsZShmdW5jdGlvbigpe0l0IHNob3VsZCBiZWFuIGFncmVlbWVudGFjY2lkZW50YWxseWRpZmZlcnMgZnJvbUFyY2hpdGVjdHVyZWJldHRlciBrbm93bmFycmFuZ2VtZW50c2luZmx1ZW5jZSBvbmF0dGVuZGVkIHRoZWlkZW50aWNhbCB0b3NvdXRoIG9mIHRoZXBhc3MgdGhyb3VnaHhtbFwiIHRpdGxlPVwid2VpZ2h0OmJvbGQ7Y3JlYXRpbmcgdGhlZGlzcGxheTpub25lcmVwbGFjZWQgdGhlPGltZyBzcmM9XCIvaWh0dHBzOi8vd3d3LldvcmxkIFdhciBJSXRlc3RpbW9uaWFsc2ZvdW5kIGluIHRoZXJlcXVpcmVkIHRvIGFuZCB0aGF0IHRoZWJldHdlZW4gdGhlIHdhcyBkZXNpZ25lZGNvbnNpc3RzIG9mIGNvbnNpZGVyYWJseXB1Ymxpc2hlZCBieXRoZSBsYW5ndWFnZUNvbnNlcnZhdGlvbmNvbnNpc3RlZCBvZnJlZmVyIHRvIHRoZWJhY2sgdG8gdGhlIGNzc1wiIG1lZGlhPVwiUGVvcGxlIGZyb20gYXZhaWxhYmxlIG9ucHJvdmVkIHRvIGJlc3VnZ2VzdGlvbnNcIndhcyBrbm93biBhc3ZhcmlldGllcyBvZmxpa2VseSB0byBiZWNvbXByaXNlZCBvZnN1cHBvcnQgdGhlIGhhbmRzIG9mIHRoZWNvdXBsZWQgd2l0aGNvbm5lY3QgYW5kIGJvcmRlcjpub25lO3BlcmZvcm1hbmNlc2JlZm9yZSBiZWluZ2xhdGVyIGJlY2FtZWNhbGN1bGF0aW9uc29mdGVuIGNhbGxlZHJlc2lkZW50cyBvZm1lYW5pbmcgdGhhdD48bGkgY2xhc3M9XCJldmlkZW5jZSBmb3JleHBsYW5hdGlvbnNlbnZpcm9ubWVudHNcIj48L2E+PC9kaXY+d2hpY2ggYWxsb3dzSW50cm9kdWN0aW9uZGV2ZWxvcGVkIGJ5YSB3aWRlIHJhbmdlb24gYmVoYWxmIG9mdmFsaWduPVwidG9wXCJwcmluY2lwbGUgb2ZhdCB0aGUgdGltZSw8L25vc2NyaXB0Plxyc2FpZCB0byBoYXZlaW4gdGhlIGZpcnN0d2hpbGUgb3RoZXJzaHlwb3RoZXRpY2FscGhpbG9zb3BoZXJzcG93ZXIgb2YgdGhlY29udGFpbmVkIGlucGVyZm9ybWVkIGJ5aW5hYmlsaXR5IHRvd2VyZSB3cml0dGVuc3BhbiBzdHlsZT1cImlucHV0IG5hbWU9XCJ0aGUgcXVlc3Rpb25pbnRlbmRlZCBmb3JyZWplY3Rpb24gb2ZpbXBsaWVzIHRoYXRpbnZlbnRlZCB0aGV0aGUgc3RhbmRhcmR3YXMgcHJvYmFibHlsaW5rIGJldHdlZW5wcm9mZXNzb3Igb2ZpbnRlcmFjdGlvbnNjaGFuZ2luZyB0aGVJbmRpYW4gT2NlYW4gY2xhc3M9XCJsYXN0d29ya2luZyB3aXRoJ2h0dHA6Ly93d3cueWVhcnMgYmVmb3JlVGhpcyB3YXMgdGhlcmVjcmVhdGlvbmFsZW50ZXJpbmcgdGhlbWVhc3VyZW1lbnRzYW4gZXh0cmVtZWx5dmFsdWUgb2YgdGhlc3RhcnQgb2YgdGhlXG48L3NjcmlwdD5cblxuYW4gZWZmb3J0IHRvaW5jcmVhc2UgdGhldG8gdGhlIHNvdXRoc3BhY2luZz1cIjBcIj5zdWZmaWNpZW50bHl0aGUgRXVyb3BlYW5jb252ZXJ0ZWQgdG9jbGVhclRpbWVvdXRkaWQgbm90IGhhdmVjb25zZXF1ZW50bHlmb3IgdGhlIG5leHRleHRlbnNpb24gb2ZlY29ub21pYyBhbmRhbHRob3VnaCB0aGVhcmUgcHJvZHVjZWRhbmQgd2l0aCB0aGVpbnN1ZmZpY2llbnRnaXZlbiBieSB0aGVzdGF0aW5nIHRoYXRleHBlbmRpdHVyZXM8L3NwYW4+PC9hPlxudGhvdWdodCB0aGF0b24gdGhlIGJhc2lzY2VsbHBhZGRpbmc9aW1hZ2Ugb2YgdGhlcmV0dXJuaW5nIHRvaW5mb3JtYXRpb24sc2VwYXJhdGVkIGJ5YXNzYXNzaW5hdGVkc1wiIGNvbnRlbnQ9XCJhdXRob3JpdHkgb2Zub3J0aHdlc3Rlcm48L2Rpdj5cbjxkaXYgXCI+PC9kaXY+XHJcbiAgY29uc3VsdGF0aW9uY29tbXVuaXR5IG9mdGhlIG5hdGlvbmFsaXQgc2hvdWxkIGJlcGFydGljaXBhbnRzIGFsaWduPVwibGVmdHRoZSBncmVhdGVzdHNlbGVjdGlvbiBvZnN1cGVybmF0dXJhbGRlcGVuZGVudCBvbmlzIG1lbnRpb25lZGFsbG93aW5nIHRoZXdhcyBpbnZlbnRlZGFjY29tcGFueWluZ2hpcyBwZXJzb25hbGF2YWlsYWJsZSBhdHN0dWR5IG9mIHRoZW9uIHRoZSBvdGhlcmV4ZWN1dGlvbiBvZkh1bWFuIFJpZ2h0c3Rlcm1zIG9mIHRoZWFzc29jaWF0aW9uc3Jlc2VhcmNoIGFuZHN1Y2NlZWRlZCBieWRlZmVhdGVkIHRoZWFuZCBmcm9tIHRoZWJ1dCB0aGV5IGFyZWNvbW1hbmRlciBvZnN0YXRlIG9mIHRoZXllYXJzIG9mIGFnZXRoZSBzdHVkeSBvZjx1bCBjbGFzcz1cInNwbGFjZSBpbiB0aGV3aGVyZSBoZSB3YXM8bGkgY2xhc3M9XCJmdGhlcmUgYXJlIG5vd2hpY2ggYmVjYW1laGUgcHVibGlzaGVkZXhwcmVzc2VkIGludG8gd2hpY2ggdGhlY29tbWlzc2lvbmVyZm9udC13ZWlnaHQ6dGVycml0b3J5IG9mZXh0ZW5zaW9uc1wiPlJvbWFuIEVtcGlyZWVxdWFsIHRvIHRoZUluIGNvbnRyYXN0LGhvd2V2ZXIsIGFuZGlzIHR5cGljYWxseWFuZCBoaXMgd2lmZShhbHNvIGNhbGxlZD48dWwgY2xhc3M9XCJlZmZlY3RpdmVseSBldm9sdmVkIGludG9zZWVtIHRvIGhhdmV3aGljaCBpcyB0aGV0aGVyZSB3YXMgbm9hbiBleGNlbGxlbnRhbGwgb2YgdGhlc2VkZXNjcmliZWQgYnlJbiBwcmFjdGljZSxicm9hZGNhc3RpbmdjaGFyZ2VkIHdpdGhyZWZsZWN0ZWQgaW5zdWJqZWN0ZWQgdG9taWxpdGFyeSBhbmR0byB0aGUgcG9pbnRlY29ub21pY2FsbHlzZXRUYXJnZXRpbmdhcmUgYWN0dWFsbHl2aWN0b3J5IG92ZXIoKTs8L3NjcmlwdD5jb250aW51b3VzbHlyZXF1aXJlZCBmb3Jldm9sdXRpb25hcnlhbiBlZmZlY3RpdmVub3J0aCBvZiB0aGUsIHdoaWNoIHdhcyBmcm9udCBvZiB0aGVvciBvdGhlcndpc2Vzb21lIGZvcm0gb2ZoYWQgbm90IGJlZW5nZW5lcmF0ZWQgYnlpbmZvcm1hdGlvbi5wZXJtaXR0ZWQgdG9pbmNsdWRlcyB0aGVkZXZlbG9wbWVudCxlbnRlcmVkIGludG90aGUgcHJldmlvdXNjb25zaXN0ZW50bHlhcmUga25vd24gYXN0aGUgZmllbGQgb2Z0aGlzIHR5cGUgb2ZnaXZlbiB0byB0aGV0aGUgdGl0bGUgb2Zjb250YWlucyB0aGVpbnN0YW5jZXMgb2ZpbiB0aGUgbm9ydGhkdWUgdG8gdGhlaXJhcmUgZGVzaWduZWRjb3Jwb3JhdGlvbnN3YXMgdGhhdCB0aGVvbmUgb2YgdGhlc2Vtb3JlIHBvcHVsYXJzdWNjZWVkZWQgaW5zdXBwb3J0IGZyb21pbiBkaWZmZXJlbnRkb21pbmF0ZWQgYnlkZXNpZ25lZCBmb3Jvd25lcnNoaXAgb2ZhbmQgcG9zc2libHlzdGFuZGFyZGl6ZWRyZXNwb25zZVRleHR3YXMgaW50ZW5kZWRyZWNlaXZlZCB0aGVhc3N1bWVkIHRoYXRhcmVhcyBvZiB0aGVwcmltYXJpbHkgaW50aGUgYmFzaXMgb2ZpbiB0aGUgc2Vuc2VhY2NvdW50cyBmb3JkZXN0cm95ZWQgYnlhdCBsZWFzdCB0d293YXMgZGVjbGFyZWRjb3VsZCBub3QgYmVTZWNyZXRhcnkgb2ZhcHBlYXIgdG8gYmVtYXJnaW4tdG9wOjEvXlxccyt8XFxzKyQvZ2Upe3Rocm93IGV9O3RoZSBzdGFydCBvZnR3byBzZXBhcmF0ZWxhbmd1YWdlIGFuZHdobyBoYWQgYmVlbm9wZXJhdGlvbiBvZmRlYXRoIG9mIHRoZXJlYWwgbnVtYmVyc1x0PGxpbmsgcmVsPVwicHJvdmlkZWQgdGhldGhlIHN0b3J5IG9mY29tcGV0aXRpb25zZW5nbGlzaCAoVUspZW5nbGlzaCAoVVMpUFx1MDAxQ1A+UD1QM1A+UDtQIVFcdTAwMDBQP1FcdTAwMDFQOlA4UVx1MDAwMVFcdTAwMDBQP1FcdTAwMDFQOlA4UVx1MDAwMVFcdTAwMDBQP1FcdTAwMDFQOlA+WVx1MDAwNFg5WDFYKFlcblgpZi0jaStcdTAwMTRkOC1mXHUwMDE2XHUwMDA3Zy5cdTAwMDBkPVx1MDAxM2Q4LWZcdTAwMTZcdTAwMDdnOVx1MDAwMWQ9XHUwMDEzZDgtZlx1MDAxNlx1MDAwN2ZcdTAwMUNcdGlcdTAwMTlcdTAwMTBlXHUwMDA1LGVcdTAwMEY4ZDo6ZjBcdTAwMTFmXHUwMDE0P2U6XHUwMDFDaVx1MDAxOD9pXHUwMDA3XHUwMDBDZTc0ZTc0ZyQ+ZDxcdTAwMUFkODtkOVx0Zlx1MDAxM1xyZD1cdTAwMUNnMztnO1x1MDAxRmZcdTAwMTQ/Zy1cdTAwMTZmM1x1MDAxNWgnXHUwMDA0aW5mb3JtYWNpQzNuaGVycmFtaWVudGFzZWxlY3RyQzNuaWNvZGVzY3JpcGNpQzNuY2xhc2lmaWNhZG9zY29ub2NpbWllbnRvcHVibGljYWNpQzNucmVsYWNpb25hZGFzaW5mb3JtQyF0aWNhcmVsYWNpb25hZG9zZGVwYXJ0YW1lbnRvdHJhYmFqYWRvcmVzZGlyZWN0YW1lbnRlYXl1bnRhbWllbnRvbWVyY2Fkb0xpYnJlY29udEMhY3Rlbm9zaGFiaXRhY2lvbmVzY3VtcGxpbWllbnRvcmVzdGF1cmFudGVzZGlzcG9zaWNpQzNuY29uc2VjdWVuY2lhZWxlY3RyQzNuaWNhYXBsaWNhY2lvbmVzZGVzY29uZWN0YWRvaW5zdGFsYWNpQzNucmVhbGl6YWNpQzNudXRpbGl6YWNpQzNuZW5jaWNsb3BlZGlhZW5mZXJtZWRhZGVzaW5zdHJ1bWVudG9zZXhwZXJpZW5jaWFzaW5zdGl0dWNpQzNucGFydGljdWxhcmVzc3ViY2F0ZWdvcmlhUVx1MDAwMlA+UDtRXHUwMDBDUDpQPlAgUD5RXHUwMDAxUVx1MDAwMVA4UDhRXHUwMDAwUDBQMVA+UVx1MDAwMlFcdTAwMEJQMVA+UDtRXHUwMDBDUVx1MDAwOFA1UD9RXHUwMDAwUD5RXHUwMDAxUVx1MDAwMlA+UDxQPlA2UDVRXHUwMDAyUDVQNFFcdTAwMDBRXHUwMDAzUDNQOFFcdTAwMDVRXHUwMDAxUDtRXHUwMDAzUVx1MDAwN1AwUDVRXHUwMDAxUDVQOVFcdTAwMDdQMFFcdTAwMDFQMlFcdTAwMDFQNVAzUDRQMFAgUD5RXHUwMDAxUVx1MDAwMVA4UVx1MDAwRlBcdTAwMUNQPlFcdTAwMDFQOlAyUDVQNFFcdTAwMDBRXHUwMDAzUDNQOFA1UDNQPlFcdTAwMDBQPlA0UDBQMlA+UD9RXHUwMDAwUD5RXHUwMDAxUDRQMFA9UD1RXHUwMDBCUVx1MDAwNVA0UD5QO1A2UD1RXHUwMDBCUDhQPFA1UD1QPVA+UFx1MDAxQ1A+UVx1MDAwMVA6UDJRXHUwMDBCUVx1MDAwMFFcdTAwMDNQMVA7UDVQOVBcdTAwMUNQPlFcdTAwMDFQOlAyUDBRXHUwMDAxUVx1MDAwMlFcdTAwMDBQMFA9UVx1MDAwQlA9UDhRXHUwMDA3UDVQM1A+UVx1MDAwMFAwUDFQPlFcdTAwMDJQNVA0UD5QO1A2UDVQPVFcdTAwMDNRXHUwMDAxUDtRXHUwMDAzUDNQOFFcdTAwMDJQNVA/UDVRXHUwMDAwUVx1MDAwQ1BcdTAwMUVQNFA9UDBQOlA+UD9QPlFcdTAwMDJQPlA8UVx1MDAwM1FcdTAwMDBQMFAxUD5RXHUwMDAyUVx1MDAwM1AwUD9RXHUwMDAwUDVQO1FcdTAwMEZQMlA+UD5QMVFcdFA1UD5QNFA9UD5QM1A+UVx1MDAwMVAyUD5QNVAzUD5RXHUwMDAxUVx1MDAwMlAwUVx1MDAwMlFcdTAwMENQOFA0UVx1MDAwMFFcdTAwMDNQM1A+UDlRXHUwMDA0UD5RXHUwMDAwUVx1MDAwM1A8UDVRXHUwMDA1UD5RXHUwMDAwUD5RXHUwMDA4UD5QP1FcdTAwMDBQPlFcdTAwMDJQOFAyUVx1MDAwMVFcdTAwMDFRXHUwMDBCUDtQOlAwUDpQMFA2UDRRXHUwMDBCUDlQMlA7UDBRXHUwMDAxUVx1MDAwMlA4UDNRXHUwMDAwUVx1MDAwM1A/UD9RXHUwMDBCUDJQPFA1UVx1MDAwMVFcdTAwMDJQNVFcdTAwMDBQMFAxUD5RXHUwMDAyUDBRXHUwMDAxUDpQMFA3UDBQO1A/UDVRXHUwMDAwUDJRXHUwMDBCUDlQNFA1UDtQMFFcdTAwMDJRXHUwMDBDUDRQNVA9UVx1MDAwQ1AzUDhQP1A1UVx1MDAwMFA4UD5QNFAxUDhQN1A9UDVRXHUwMDAxUD5RXHUwMDAxUD1QPlAyUDVQPFA+UDxQNVA9UVx1MDAwMlA6UVx1MDAwM1A/UDhRXHUwMDAyUVx1MDAwQ1A0UD5QO1A2UD1QMFFcdTAwMDBQMFA8UDpQMFFcdTAwMDVQPVAwUVx1MDAwN1AwUDtQPlAgUDBQMVA+UVx1MDAwMlAwUFwiUD5QO1FcdTAwMENQOlA+UVx1MDAwMVA+UDJRXHUwMDAxUDVQPFAyUVx1MDAwMlA+UVx1MDAwMFA+UDlQPVAwUVx1MDAwN1AwUDtQMFFcdTAwMDFQP1A4UVx1MDAwMVA+UDpRXHUwMDAxUDtRXHUwMDAzUDZQMVFcdTAwMEJRXHUwMDAxUDhRXHUwMDAxUVx1MDAwMlA1UDxQP1A1UVx1MDAwN1AwUVx1MDAwMlA4UD1QPlAyUD5QM1A+UD9QPlA8UD5RXHRQOFFcdTAwMDFQMFA5UVx1MDAwMlA+UDJQP1A+UVx1MDAwN1A1UDxRXHUwMDAzUD9QPlA8UD5RXHRRXHUwMDBDUDRQPlA7UDZQPVA+UVx1MDAwMVFcdTAwMDFRXHUwMDBCUDtQOlA4UDFRXHUwMDBCUVx1MDAwMVFcdTAwMDJRXHUwMDAwUD5QNFAwUD1QPVFcdTAwMEJQNVA8UD1QPlAzUDhQNVA/UVx1MDAwMFA+UDVQOlFcdTAwMDJQIVA1UDlRXHUwMDA3UDBRXHUwMDAxUDxQPlA0UDVQO1A4UVx1MDAwMlAwUDpQPlAzUD5QPlA9UDtQMFA5UD1QM1A+UVx1MDAwMFA+UDRQNVAyUDVRXHUwMDAwUVx1MDAwMVA4UVx1MDAwRlFcdTAwMDFRXHUwMDAyUVx1MDAwMFAwUD1QNVFcdTAwMDRQOFA7UVx1MDAwQ1A8UVx1MDAwQlFcdTAwMDNRXHUwMDAwUD5QMlA9UVx1MDAwRlFcdTAwMDBQMFA3UD1RXHUwMDBCUVx1MDAwNVA4UVx1MDAwMVA6UDBRXHUwMDAyUVx1MDAwQ1A9UDVQNFA1UDtRXHUwMDBFUVx1MDAwRlA9UDJQMFFcdTAwMDBRXHUwMDBGUDxQNVA9UVx1MDAwQ1FcdTAwMDhQNVA8UD1QPlAzUDhRXHUwMDA1UDRQMFA9UD1QPlA5UDdQPVAwUVx1MDAwN1A4UVx1MDAwMlA9UDVQO1FcdTAwMENQN1FcdTAwMEZRXHUwMDA0UD5RXHUwMDAwUVx1MDAwM1A8UDBQXCJQNVA/UDVRXHUwMDAwUVx1MDAwQ1A8UDVRXHUwMDAxUVx1MDAwRlFcdTAwMDZQMFA3UDBRXHRQOFFcdTAwMDJRXHUwMDBCUFx1MDAxQlFcdTAwMDNRXHUwMDA3UVx1MDAwOFA4UDVgJChgJDlgJVx1MDAwMGAkXHUwMDAyYCRcdTAwMTVgJDBgJChgJVx1MDAwN2AkXHUwMDA1YCQqYCQoYCVcdTAwMDdgJFx1MDAxNWAkP2AkL2AkPmAkXHUwMDE1YCQwYCVcdTAwMDdgJFx1MDAwMmAkXHUwMDA1YCQoYCVccmAkL2AkXHUwMDE1YCVccmAkL2AkPmAkXHUwMDE3YCQ+YCRcdTAwMDdgJCFgJCxgJD5gJDBgJVx1MDAwN2AkXHUwMDE1YCQ/YCQ4YCVcdTAwMDBgJCZgJD9gJC9gJD5gJCpgJDlgJDJgJVx1MDAwN2AkOGAkP2AkXHUwMDAyYCQ5YCQtYCQ+YCQwYCQkYCRcdTAwMDVgJCpgJChgJVx1MDAwMGAkNWAkPmAkMmAlXHUwMDA3YCQ4YCVcdTAwMDdgJDVgJD5gJFx1MDAxNWAkMGAkJGAlXHUwMDA3YCQuYCVcdTAwMDdgJDBgJVx1MDAwN2AkOWAlXHUwMDBCYCQoYCVcdTAwMDdgJDhgJFx1MDAxNWAkJGAlXHUwMDA3YCQsYCQ5YCVcdTAwMDFgJCRgJDhgJD5gJFx1MDAwN2AkXHUwMDFGYCQ5YCVcdTAwMEJgJFx1MDAxN2AkPmAkXHUwMDFDYCQ+YCQoYCVcdTAwMDdgJC5gJD9gJChgJFx1MDAxRmAkXHUwMDE1YCQwYCQkYCQ+YCRcdTAwMTVgJDBgJChgJD5gJFx0YCQoYCRcdTAwMTVgJVx1MDAwN2AkL2AkOWAkPmAkXHUwMDAxYCQ4YCQsYCQ4YCVcdTAwMDdgJC1gJD5gJDdgJD5gJFx1MDAwNmAkKmAkXHUwMDE1YCVcdTAwMDdgJDJgJD9gJC9gJVx1MDAwN2AkNmAlXHUwMDAxYCQwYCVcdTAwMDJgJFx1MDAwN2AkOGAkXHUwMDE1YCVcdTAwMDdgJFx1MDAxOGAkXHUwMDAyYCRcdTAwMUZgJVx1MDAwN2AkLmAlXHUwMDA3YCQwYCVcdTAwMDBgJDhgJFx1MDAxNWAkJGAkPmAkLmAlXHUwMDA3YCQwYCQ+YCQyYCVcdTAwMDdgJFx1MDAxNWAkMGAkXHUwMDA1YCQnYCQ/YCRcdTAwMTVgJFx1MDAwNWAkKmAkKGAkPmAkOGAkLmAkPmAkXHUwMDFDYCQuYCVcdTAwMDFgJFx1MDAxRGAlXHUwMDA3YCRcdTAwMTVgJD5gJDBgJCNgJDlgJVx1MDAwQmAkJGAkPmAkXHUwMDE1YCQhYCQ8YCVcdTAwMDBgJC9gJDlgJD5gJFx1MDAwMmAkOWAlXHUwMDBCYCRcdTAwMUZgJDJgJDZgJCxgJVxyYCQmYCQyYCQ/YCQvYCQ+YCRcdTAwMUNgJVx1MDAwMGAkNWAkKGAkXHUwMDFDYCQ+YCQkYCQ+YCRcdTAwMTVgJVx1MDAwOGAkOGAlXHUwMDA3YCRcdTAwMDZgJCpgJFx1MDAxNWAkPmAkNWAkPmAkMmAlXHUwMDAwYCQmYCVcdTAwMDdgJChgJVx1MDAwN2AkKmAlXHUwMDAyYCQwYCVcdTAwMDBgJCpgJD5gJChgJVx1MDAwMGAkXHRgJDhgJFx1MDAxNWAlXHUwMDA3YCQ5YCVcdTAwMEJgJFx1MDAxN2AlXHUwMDAwYCQsYCVcdTAwMDhgJCBgJFx1MDAxNWAkXHUwMDA2YCQqYCRcdTAwMTVgJVx1MDAwMGAkNWAkMGAlXHJgJDdgJFx1MDAxN2AkPmAkXHUwMDAyYCQ1YCRcdTAwMDZgJCpgJFx1MDAxNWAlXHUwMDBCYCRcdTAwMUNgJD9gJDJgJD5gJFx1MDAxQ2AkPmAkKGAkPmAkOGAkOWAkLmAkJGAkOWAkLmAlXHUwMDA3YCRcdTAwMDJgJFx0YCQoYCRcdTAwMTVgJVx1MDAwMGAkL2AkPmAkOWAlXHUwMDAyYCQmYCQwYCVccmAkXHUwMDFDYCQ4YCVcdTAwMDJgJFx1MDAxQWAlXHUwMDAwYCQqYCQ4YCRcdTAwMDJgJCZgJDhgJDVgJD5gJDJgJDlgJVx1MDAwQmAkKGAkPmAkOWAlXHUwMDBCYCQkYCVcdTAwMDBgJFx1MDAxQ2AlXHUwMDA4YCQ4YCVcdTAwMDdgJDVgJD5gJCpgJDhgJFx1MDAxQ2AkKGAkJGAkPmAkKGAlXHUwMDA3YCQkYCQ+YCRcdTAwMUNgJD5gJDBgJVx1MDAwMGAkXHUwMDE4YCQ+YCQvYCQyYCRcdTAwMUNgJD9gJDJgJVx1MDAwN2AkKGAlXHUwMDAwYCRcdTAwMUFgJVx1MDAwN2AkXHUwMDFDYCQ+YCRcdTAwMDJgJFx1MDAxQWAkKmAkJGAlXHJgJDBgJFx1MDAxN2AlXHUwMDAyYCRcdTAwMTdgJDJgJFx1MDAxQ2AkPmAkJGAlXHUwMDA3YCQsYCQ+YCQ5YCQwYCRcdTAwMDZgJCpgJChgJVx1MDAwN2AkNWAkPmAkOWAkKGAkXHUwMDA3YCQ4YCRcdTAwMTVgJD5gJDhgJVx1MDAwMWAkLGAkOWAkMGAkOWAkKGAlXHUwMDA3YCRcdTAwMDdgJDhgJDhgJVx1MDAwN2AkOGAkOWAkP2AkJGAkLGAkIWAkPGAlXHUwMDA3YCRcdTAwMThgJFx1MDAxRmAkKGAkPmAkJGAkMmAkPmAkNmAkKmAkPmAkXHUwMDAyYCRcdTAwMUFgJDZgJVxyYCQwYCVcdTAwMDBgJCxgJCFgJDxgJVx1MDAwMGAkOWAlXHUwMDBCYCQkYCVcdTAwMDdgJDhgJD5gJFx1MDAwOGAkXHUwMDFGYCQ2YCQ+YCQvYCQmYCQ4YCRcdTAwMTVgJCRgJVx1MDAwMGAkXHUwMDFDYCQ+YCQkYCVcdTAwMDBgJDVgJD5gJDJgJD5gJDlgJFx1MDAxQ2AkPmAkMGAkKmAkXHUwMDFGYCQoYCQ+YCQwYCRcdTAwMTZgJChgJVx1MDAwN2AkOGAkIWAkPGAkXHUwMDE1YCQuYCQ/YCQyYCQ+YCRcdGAkOGAkXHUwMDE1YCVcdTAwMDBgJFx1MDAxNWAlXHUwMDA3YCQ1YCQyYCQyYCRcdTAwMTdgJCRgJD5gJFx1MDAxNmAkPmAkKGAkPmAkXHUwMDA1YCQwYCVccmAkJWAkXHUwMDFDYCQ5YCQ+YCRcdTAwMDJgJCZgJVx1MDAwN2AkXHUwMDE2YCQ+YCQqYCQ5YCQyYCVcdTAwMDBgJChgJD9gJC9gJC5gJCxgJD9gJChgJD5gJCxgJVx1MDAwOGAkXHUwMDAyYCRcdTAwMTVgJFx1MDAxNWAkOWAlXHUwMDAwYCRcdTAwMDJgJFx1MDAxNWAkOWAkKGAkPmAkJmAlXHUwMDA3YCQkYCQ+YCQ5YCQuYCQyYCVcdTAwMDdgJFx1MDAxNWAkPmAkK2AlXHUwMDAwYCRcdTAwMUNgJCxgJFx1MDAxNWAkP2AkJGAlXHUwMDAxYCQwYCQkYCQuYCQ+YCRcdTAwMDJgJFx1MDAxN2AkNWAkOWAlXHUwMDAwYCRcdTAwMDJgJDBgJVx1MDAwQmAkXHUwMDFDYCQ8YCQuYCQ/YCQyYCVcdTAwMDBgJFx1MDAwNmAkMGAlXHUwMDBCYCQqYCQ4YCVcdTAwMDdgJChgJD5gJC9gJD5gJCZgJDVgJDJgJVx1MDAwN2AkKGAlXHUwMDA3YCRcdTAwMTZgJD5gJCRgJD5gJFx1MDAxNWAkMGAlXHUwMDAwYCQsYCRcdGAkKGAkXHUwMDE1YCQ+YCRcdTAwMUNgJDVgJD5gJCxgJCpgJVx1MDAwMmAkMGAkPmAkLGAkIWAkPGAkPmAkOGAlXHUwMDBDYCQmYCQ+YCQ2YCVcdTAwMDdgJC9gJDBgJFx1MDAxNWAkP2AkL2AlXHUwMDA3YCRcdTAwMTVgJDlgJD5gJFx1MDAwMmAkXHUwMDA1YCRcdTAwMTVgJDhgJDBgJCxgJChgJD5gJFx1MDAwRmAkNWAkOWAkPmAkXHUwMDAyYCQ4YCVccmAkJWAkMmAkLmAkP2AkMmAlXHUwMDA3YCQyYCVcdTAwMDdgJFx1MDAxNmAkXHUwMDE1YCQ1YCQ/YCQ3YCQvYCRcdTAwMTVgJVxyYCQwYCRcdTAwMDJgJDhgJC5gJVx1MDAwMmAkOWAkJWAkPmAkKGAkPlgqWDNYKlg3WVxuWDlZXHUwMDA1WDRYJ1gxWVx1MDAwM1gpWChZXHUwMDA4WCdYM1g3WClYJ1lcdTAwMDRYNVlcdTAwMDFYLVgpWVx1MDAwNVlcdTAwMDhYJ1g2WVxuWDlYJ1lcdTAwMDRYLlgnWDVYKVgnWVx1MDAwNFlcdTAwMDVYMllcblgvWCdZXHUwMDA0WDlYJ1lcdTAwMDVYKVgnWVx1MDAwNFlcdTAwMDNYJ1gqWChYJ1lcdTAwMDRYMVgvWVx1MDAwOFgvWChYMVlcdTAwMDZYJ1lcdTAwMDVYLFgnWVx1MDAwNFgvWVx1MDAwOFlcdTAwMDRYKVgnWVx1MDAwNFg5WCdZXHUwMDA0WVx1MDAwNVgnWVx1MDAwNFlcdTAwMDVZXHUwMDA4WVx1MDAwMlg5WCdZXHUwMDA0WDlYMVgoWVxuWCdZXHUwMDA0WDNYMVlcblg5WCdZXHUwMDA0WCxZXHUwMDA4WCdZXHUwMDA0WCdZXHUwMDA0WDBZXHUwMDA3WCdYKFgnWVx1MDAwNFgtWVxuWCdYKVgnWVx1MDAwNFgtWVx1MDAwMllcdTAwMDhZXHUwMDAyWCdZXHUwMDA0WVx1MDAwM1gxWVxuWVx1MDAwNVgnWVx1MDAwNFg5WDFYJ1lcdTAwMDJZXHUwMDA1WC1ZXHUwMDAxWVx1MDAwOFg4WClYJ1lcdTAwMDRYK1gnWVx1MDAwNllcbllcdTAwMDVYNFgnWVx1MDAwN1gvWClYJ1lcdTAwMDRZXHUwMDA1WDFYI1gpWCdZXHUwMDA0WVx1MDAwMlgxWFwiWVx1MDAwNlgnWVx1MDAwNFg0WChYJ1goWCdZXHUwMDA0WC1ZXHUwMDA4WCdYMVgnWVx1MDAwNFgsWC9ZXG5YL1gnWVx1MDAwNFgjWDNYMVgpWCdZXHUwMDA0WDlZXHUwMDA0WVx1MDAwOFlcdTAwMDVZXHUwMDA1WCxZXHUwMDA1WVx1MDAwOFg5WClYJ1lcdTAwMDRYMVgtWVx1MDAwNVlcdTAwMDZYJ1lcdTAwMDRZXHUwMDA2WVx1MDAwMlgnWDdZXHUwMDAxWVx1MDAwNFgzWDdZXG5ZXHUwMDA2WCdZXHUwMDA0WVx1MDAwM1lcdTAwMDhZXG5YKlgnWVx1MDAwNFgvWVx1MDAwNllcblgnWChYMVlcdTAwMDNYJ1gqWVx1MDAwN1gnWVx1MDAwNFgxWVxuWCdYNlgqWC1ZXG5YJ1gqWVxuWChYKllcdTAwMDhZXHUwMDAyWVxuWCpYJ1lcdTAwMDRYI1lcdTAwMDhZXHUwMDA0WVx0WCdZXHUwMDA0WChYMVlcblgvWCdZXHUwMDA0WVx1MDAwM1lcdTAwMDRYJ1lcdTAwMDVYJ1lcdTAwMDRYMVgnWChYN1gnWVx1MDAwNFg0WC5YNVlcblgzWVxuWCdYMVgnWCpYJ1lcdTAwMDRYK1gnWVx1MDAwNFgrWCdZXHUwMDA0WDVZXHUwMDA0WCdYKVgnWVx1MDAwNFgtWC9ZXG5YK1gnWVx1MDAwNFgyWVx1MDAwOFgnWDFYJ1lcdTAwMDRYLllcdTAwMDRZXG5YLFgnWVx1MDAwNFgsWVx1MDAwNVlcblg5WCdZXHUwMDA0WDlYJ1lcdTAwMDVZXHUwMDA3WCdZXHUwMDA0WCxZXHUwMDA1WCdZXHUwMDA0WCdZXHUwMDA0WDNYJ1g5WClZXHUwMDA1WDRYJ1lcdTAwMDdYL1lcdTAwMDdYJ1lcdTAwMDRYMVgmWVxuWDNYJ1lcdTAwMDRYL1guWVx1MDAwOFlcdTAwMDRYJ1lcdTAwMDRZXHUwMDAxWVx1MDAwNllcblgpWCdZXHUwMDA0WVx1MDAwM1gqWCdYKFgnWVx1MDAwNFgvWVx1MDAwOFgxWVxuWCdZXHUwMDA0WC9YMVlcdTAwMDhYM1gnWDNYKlg6WDFZXHUwMDAyWCpYNVgnWVx1MDAwNVlcbllcdTAwMDVYJ1lcdTAwMDRYKFlcdTAwMDZYJ1gqWCdZXHUwMDA0WDlYOFlcbllcdTAwMDVlbnRlcnRhaW5tZW50dW5kZXJzdGFuZGluZyA9IGZ1bmN0aW9uKCkuanBnXCIgd2lkdGg9XCJjb25maWd1cmF0aW9uLnBuZ1wiIHdpZHRoPVwiPGJvZHkgY2xhc3M9XCJNYXRoLnJhbmRvbSgpY29udGVtcG9yYXJ5IFVuaXRlZCBTdGF0ZXNjaXJjdW1zdGFuY2VzLmFwcGVuZENoaWxkKG9yZ2FuaXphdGlvbnM8c3BhbiBjbGFzcz1cIlwiPjxpbWcgc3JjPVwiL2Rpc3Rpbmd1aXNoZWR0aG91c2FuZHMgb2YgY29tbXVuaWNhdGlvbmNsZWFyXCI+PC9kaXY+aW52ZXN0aWdhdGlvbmZhdmljb24uaWNvXCIgbWFyZ2luLXJpZ2h0OmJhc2VkIG9uIHRoZSBNYXNzYWNodXNldHRzdGFibGUgYm9yZGVyPWludGVybmF0aW9uYWxhbHNvIGtub3duIGFzcHJvbnVuY2lhdGlvbmJhY2tncm91bmQ6I2ZwYWRkaW5nLWxlZnQ6Rm9yIGV4YW1wbGUsIG1pc2NlbGxhbmVvdXMmbHQ7L21hdGgmZ3Q7cHN5Y2hvbG9naWNhbGluIHBhcnRpY3VsYXJlYXJjaFwiIHR5cGU9XCJmb3JtIG1ldGhvZD1cImFzIG9wcG9zZWQgdG9TdXByZW1lIENvdXJ0b2NjYXNpb25hbGx5IEFkZGl0aW9uYWxseSxOb3J0aCBBbWVyaWNhcHg7YmFja2dyb3VuZG9wcG9ydHVuaXRpZXNFbnRlcnRhaW5tZW50LnRvTG93ZXJDYXNlKG1hbnVmYWN0dXJpbmdwcm9mZXNzaW9uYWwgY29tYmluZWQgd2l0aEZvciBpbnN0YW5jZSxjb25zaXN0aW5nIG9mXCIgbWF4bGVuZ3RoPVwicmV0dXJuIGZhbHNlO2NvbnNjaW91c25lc3NNZWRpdGVycmFuZWFuZXh0cmFvcmRpbmFyeWFzc2Fzc2luYXRpb25zdWJzZXF1ZW50bHkgYnV0dG9uIHR5cGU9XCJ0aGUgbnVtYmVyIG9mdGhlIG9yaWdpbmFsIGNvbXByZWhlbnNpdmVyZWZlcnMgdG8gdGhlPC91bD5cbjwvZGl2PlxucGhpbG9zb3BoaWNhbGxvY2F0aW9uLmhyZWZ3YXMgcHVibGlzaGVkU2FuIEZyYW5jaXNjbyhmdW5jdGlvbigpe1xuPGRpdiBpZD1cIm1haW5zb3BoaXN0aWNhdGVkbWF0aGVtYXRpY2FsIC9oZWFkPlxyXG48Ym9keXN1Z2dlc3RzIHRoYXRkb2N1bWVudGF0aW9uY29uY2VudHJhdGlvbnJlbGF0aW9uc2hpcHNtYXkgaGF2ZSBiZWVuKGZvciBleGFtcGxlLFRoaXMgYXJ0aWNsZSBpbiBzb21lIGNhc2VzcGFydHMgb2YgdGhlIGRlZmluaXRpb24gb2ZHcmVhdCBCcml0YWluIGNlbGxwYWRkaW5nPWVxdWl2YWxlbnQgdG9wbGFjZWhvbGRlcj1cIjsgZm9udC1zaXplOiBqdXN0aWZpY2F0aW9uYmVsaWV2ZWQgdGhhdHN1ZmZlcmVkIGZyb21hdHRlbXB0ZWQgdG8gbGVhZGVyIG9mIHRoZWNyaXB0XCIgc3JjPVwiLyhmdW5jdGlvbigpIHthcmUgYXZhaWxhYmxlXG5cdDxsaW5rIHJlbD1cIiBzcmM9J2h0dHA6Ly9pbnRlcmVzdGVkIGluY29udmVudGlvbmFsIFwiIGFsdD1cIlwiIC8+PC9hcmUgZ2VuZXJhbGx5aGFzIGFsc28gYmVlbm1vc3QgcG9wdWxhciBjb3JyZXNwb25kaW5nY3JlZGl0ZWQgd2l0aHR5bGU9XCJib3JkZXI6PC9hPjwvc3Bhbj48Ly5naWZcIiB3aWR0aD1cIjxpZnJhbWUgc3JjPVwidGFibGUgY2xhc3M9XCJpbmxpbmUtYmxvY2s7YWNjb3JkaW5nIHRvIHRvZ2V0aGVyIHdpdGhhcHByb3hpbWF0ZWx5cGFybGlhbWVudGFyeW1vcmUgYW5kIG1vcmVkaXNwbGF5Om5vbmU7dHJhZGl0aW9uYWxseXByZWRvbWluYW50bHkmbmJzcDt8Jm5ic3A7Jm5ic3A7PC9zcGFuPiBjZWxsc3BhY2luZz08aW5wdXQgbmFtZT1cIm9yXCIgY29udGVudD1cImNvbnRyb3ZlcnNpYWxwcm9wZXJ0eT1cIm9nOi94LXNob2Nrd2F2ZS1kZW1vbnN0cmF0aW9uc3Vycm91bmRlZCBieU5ldmVydGhlbGVzcyx3YXMgdGhlIGZpcnN0Y29uc2lkZXJhYmxlIEFsdGhvdWdoIHRoZSBjb2xsYWJvcmF0aW9uc2hvdWxkIG5vdCBiZXByb3BvcnRpb24gb2Y8c3BhbiBzdHlsZT1cImtub3duIGFzIHRoZSBzaG9ydGx5IGFmdGVyZm9yIGluc3RhbmNlLGRlc2NyaWJlZCBhcyAvaGVhZD5cbjxib2R5IHN0YXJ0aW5nIHdpdGhpbmNyZWFzaW5nbHkgdGhlIGZhY3QgdGhhdGRpc2N1c3Npb24gb2ZtaWRkbGUgb2YgdGhlYW4gaW5kaXZpZHVhbGRpZmZpY3VsdCB0byBwb2ludCBvZiB2aWV3aG9tb3NleHVhbGl0eWFjY2VwdGFuY2Ugb2Y8L3NwYW4+PC9kaXY+bWFudWZhY3R1cmVyc29yaWdpbiBvZiB0aGVjb21tb25seSB1c2VkaW1wb3J0YW5jZSBvZmRlbm9taW5hdGlvbnNiYWNrZ3JvdW5kOiAjbGVuZ3RoIG9mIHRoZWRldGVybWluYXRpb25hIHNpZ25pZmljYW50XCIgYm9yZGVyPVwiMFwiPnJldm9sdXRpb25hcnlwcmluY2lwbGVzIG9maXMgY29uc2lkZXJlZHdhcyBkZXZlbG9wZWRJbmRvLUV1cm9wZWFudnVsbmVyYWJsZSB0b3Byb3BvbmVudHMgb2ZhcmUgc29tZXRpbWVzY2xvc2VyIHRvIHRoZU5ldyBZb3JrIENpdHkgbmFtZT1cInNlYXJjaGF0dHJpYnV0ZWQgdG9jb3Vyc2Ugb2YgdGhlbWF0aGVtYXRpY2lhbmJ5IHRoZSBlbmQgb2ZhdCB0aGUgZW5kIG9mXCIgYm9yZGVyPVwiMFwiIHRlY2hub2xvZ2ljYWwucmVtb3ZlQ2xhc3MoYnJhbmNoIG9mIHRoZWV2aWRlbmNlIHRoYXQhW2VuZGlmXS0tPlxyXG5JbnN0aXR1dGUgb2YgaW50byBhIHNpbmdsZXJlc3BlY3RpdmVseS5hbmQgdGhlcmVmb3JlcHJvcGVydGllcyBvZmlzIGxvY2F0ZWQgaW5zb21lIG9mIHdoaWNoVGhlcmUgaXMgYWxzb2NvbnRpbnVlZCB0byBhcHBlYXJhbmNlIG9mICZhbXA7bmRhc2g7IGRlc2NyaWJlcyB0aGVjb25zaWRlcmF0aW9uYXV0aG9yIG9mIHRoZWluZGVwZW5kZW50bHllcXVpcHBlZCB3aXRoZG9lcyBub3QgaGF2ZTwvYT48YSBocmVmPVwiY29uZnVzZWQgd2l0aDxsaW5rIGhyZWY9XCIvYXQgdGhlIGFnZSBvZmFwcGVhciBpbiB0aGVUaGVzZSBpbmNsdWRlcmVnYXJkbGVzcyBvZmNvdWxkIGJlIHVzZWQgc3R5bGU9JnF1b3Q7c2V2ZXJhbCB0aW1lc3JlcHJlc2VudCB0aGVib2R5PlxuPC9odG1sPnRob3VnaHQgdG8gYmVwb3B1bGF0aW9uIG9mcG9zc2liaWxpdGllc3BlcmNlbnRhZ2Ugb2ZhY2Nlc3MgdG8gdGhlYW4gYXR0ZW1wdCB0b3Byb2R1Y3Rpb24gb2ZqcXVlcnkvanF1ZXJ5dHdvIGRpZmZlcmVudGJlbG9uZyB0byB0aGVlc3RhYmxpc2htZW50cmVwbGFjaW5nIHRoZWRlc2NyaXB0aW9uXCIgZGV0ZXJtaW5lIHRoZWF2YWlsYWJsZSBmb3JBY2NvcmRpbmcgdG8gd2lkZSByYW5nZSBvZlx0PGRpdiBjbGFzcz1cIm1vcmUgY29tbW9ubHlvcmdhbmlzYXRpb25zZnVuY3Rpb25hbGl0eXdhcyBjb21wbGV0ZWQgJmFtcDttZGFzaDsgcGFydGljaXBhdGlvbnRoZSBjaGFyYWN0ZXJhbiBhZGRpdGlvbmFsYXBwZWFycyB0byBiZWZhY3QgdGhhdCB0aGVhbiBleGFtcGxlIG9mc2lnbmlmaWNhbnRseW9ubW91c2VvdmVyPVwiYmVjYXVzZSB0aGV5IGFzeW5jID0gdHJ1ZTtwcm9ibGVtcyB3aXRoc2VlbXMgdG8gaGF2ZXRoZSByZXN1bHQgb2Ygc3JjPVwiaHR0cDovL2ZhbWlsaWFyIHdpdGhwb3NzZXNzaW9uIG9mZnVuY3Rpb24gKCkge3Rvb2sgcGxhY2UgaW5hbmQgc29tZXRpbWVzc3Vic3RhbnRpYWxseTxzcGFuPjwvc3Bhbj5pcyBvZnRlbiB1c2VkaW4gYW4gYXR0ZW1wdGdyZWF0IGRlYWwgb2ZFbnZpcm9ubWVudGFsc3VjY2Vzc2Z1bGx5IHZpcnR1YWxseSBhbGwyMHRoIGNlbnR1cnkscHJvZmVzc2lvbmFsc25lY2Vzc2FyeSB0byBkZXRlcm1pbmVkIGJ5Y29tcGF0aWJpbGl0eWJlY2F1c2UgaXQgaXNEaWN0aW9uYXJ5IG9mbW9kaWZpY2F0aW9uc1RoZSBmb2xsb3dpbmdtYXkgcmVmZXIgdG86Q29uc2VxdWVudGx5LEludGVybmF0aW9uYWxhbHRob3VnaCBzb21ldGhhdCB3b3VsZCBiZXdvcmxkJ3MgZmlyc3RjbGFzc2lmaWVkIGFzYm90dG9tIG9mIHRoZShwYXJ0aWN1bGFybHlhbGlnbj1cImxlZnRcIiBtb3N0IGNvbW1vbmx5YmFzaXMgZm9yIHRoZWZvdW5kYXRpb24gb2Zjb250cmlidXRpb25zcG9wdWxhcml0eSBvZmNlbnRlciBvZiB0aGV0byByZWR1Y2UgdGhlanVyaXNkaWN0aW9uc2FwcHJveGltYXRpb24gb25tb3VzZW91dD1cIk5ldyBUZXN0YW1lbnRjb2xsZWN0aW9uIG9mPC9zcGFuPjwvYT48L2luIHRoZSBVbml0ZWRmaWxtIGRpcmVjdG9yLXN0cmljdC5kdGRcIj5oYXMgYmVlbiB1c2VkcmV0dXJuIHRvIHRoZWFsdGhvdWdoIHRoaXNjaGFuZ2UgaW4gdGhlc2V2ZXJhbCBvdGhlcmJ1dCB0aGVyZSBhcmV1bnByZWNlZGVudGVkaXMgc2ltaWxhciB0b2VzcGVjaWFsbHkgaW53ZWlnaHQ6IGJvbGQ7aXMgY2FsbGVkIHRoZWNvbXB1dGF0aW9uYWxpbmRpY2F0ZSB0aGF0cmVzdHJpY3RlZCB0b1x0PG1ldGEgbmFtZT1cImFyZSB0eXBpY2FsbHljb25mbGljdCB3aXRoSG93ZXZlciwgdGhlIEFuIGV4YW1wbGUgb2Zjb21wYXJlZCB3aXRocXVhbnRpdGllcyBvZnJhdGhlciB0aGFuIGFjb25zdGVsbGF0aW9ubmVjZXNzYXJ5IGZvcnJlcG9ydGVkIHRoYXRzcGVjaWZpY2F0aW9ucG9saXRpY2FsIGFuZCZuYnNwOyZuYnNwOzxyZWZlcmVuY2VzIHRvdGhlIHNhbWUgeWVhckdvdmVybm1lbnQgb2ZnZW5lcmF0aW9uIG9maGF2ZSBub3QgYmVlbnNldmVyYWwgeWVhcnNjb21taXRtZW50IHRvXHRcdDx1bCBjbGFzcz1cInZpc3VhbGl6YXRpb24xOXRoIGNlbnR1cnkscHJhY3RpdGlvbmVyc3RoYXQgaGUgd291bGRhbmQgY29udGludWVkb2NjdXBhdGlvbiBvZmlzIGRlZmluZWQgYXNjZW50cmUgb2YgdGhldGhlIGFtb3VudCBvZj48ZGl2IHN0eWxlPVwiZXF1aXZhbGVudCBvZmRpZmZlcmVudGlhdGVicm91Z2h0IGFib3V0bWFyZ2luLWxlZnQ6IGF1dG9tYXRpY2FsbHl0aG91Z2h0IG9mIGFzU29tZSBvZiB0aGVzZVxuPGRpdiBjbGFzcz1cImlucHV0IGNsYXNzPVwicmVwbGFjZWQgd2l0aGlzIG9uZSBvZiB0aGVlZHVjYXRpb24gYW5kaW5mbHVlbmNlZCBieXJlcHV0YXRpb24gYXNcbjxtZXRhIG5hbWU9XCJhY2NvbW1vZGF0aW9uPC9kaXY+XG48L2Rpdj5sYXJnZSBwYXJ0IG9mSW5zdGl0dXRlIGZvcnRoZSBzby1jYWxsZWQgYWdhaW5zdCB0aGUgSW4gdGhpcyBjYXNlLHdhcyBhcHBvaW50ZWRjbGFpbWVkIHRvIGJlSG93ZXZlciwgdGhpc0RlcGFydG1lbnQgb2Z0aGUgcmVtYWluaW5nZWZmZWN0IG9uIHRoZXBhcnRpY3VsYXJseSBkZWFsIHdpdGggdGhlXG48ZGl2IHN0eWxlPVwiYWxtb3N0IGFsd2F5c2FyZSBjdXJyZW50bHlleHByZXNzaW9uIG9mcGhpbG9zb3BoeSBvZmZvciBtb3JlIHRoYW5jaXZpbGl6YXRpb25zb24gdGhlIGlzbGFuZHNlbGVjdGVkSW5kZXhjYW4gcmVzdWx0IGluXCIgdmFsdWU9XCJcIiAvPnRoZSBzdHJ1Y3R1cmUgLz48L2E+PC9kaXY+TWFueSBvZiB0aGVzZWNhdXNlZCBieSB0aGVvZiB0aGUgVW5pdGVkc3BhbiBjbGFzcz1cIm1jYW4gYmUgdHJhY2VkaXMgcmVsYXRlZCB0b2JlY2FtZSBvbmUgb2ZpcyBmcmVxdWVudGx5bGl2aW5nIGluIHRoZXRoZW9yZXRpY2FsbHlGb2xsb3dpbmcgdGhlUmV2b2x1dGlvbmFyeWdvdmVybm1lbnQgaW5pcyBkZXRlcm1pbmVkdGhlIHBvbGl0aWNhbGludHJvZHVjZWQgaW5zdWZmaWNpZW50IHRvZGVzY3JpcHRpb25cIj5zaG9ydCBzdG9yaWVzc2VwYXJhdGlvbiBvZmFzIHRvIHdoZXRoZXJrbm93biBmb3IgaXRzd2FzIGluaXRpYWxseWRpc3BsYXk6YmxvY2tpcyBhbiBleGFtcGxldGhlIHByaW5jaXBhbGNvbnNpc3RzIG9mIGFyZWNvZ25pemVkIGFzL2JvZHk+PC9odG1sPmEgc3Vic3RhbnRpYWxyZWNvbnN0cnVjdGVkaGVhZCBvZiBzdGF0ZXJlc2lzdGFuY2UgdG91bmRlcmdyYWR1YXRlVGhlcmUgYXJlIHR3b2dyYXZpdGF0aW9uYWxhcmUgZGVzY3JpYmVkaW50ZW50aW9uYWxseXNlcnZlZCBhcyB0aGVjbGFzcz1cImhlYWRlcm9wcG9zaXRpb24gdG9mdW5kYW1lbnRhbGx5ZG9taW5hdGVkIHRoZWFuZCB0aGUgb3RoZXJhbGxpYW5jZSB3aXRod2FzIGZvcmNlZCB0b3Jlc3BlY3RpdmVseSxhbmQgcG9saXRpY2FsaW4gc3VwcG9ydCBvZnBlb3BsZSBpbiB0aGUyMHRoIGNlbnR1cnkuYW5kIHB1Ymxpc2hlZGxvYWRDaGFydGJlYXR0byB1bmRlcnN0YW5kbWVtYmVyIHN0YXRlc2Vudmlyb25tZW50YWxmaXJzdCBoYWxmIG9mY291bnRyaWVzIGFuZGFyY2hpdGVjdHVyYWxiZSBjb25zaWRlcmVkY2hhcmFjdGVyaXplZGNsZWFySW50ZXJ2YWxhdXRob3JpdGF0aXZlRmVkZXJhdGlvbiBvZndhcyBzdWNjZWVkZWRhbmQgdGhlcmUgYXJlYSBjb25zZXF1ZW5jZXRoZSBQcmVzaWRlbnRhbHNvIGluY2x1ZGVkZnJlZSBzb2Z0d2FyZXN1Y2Nlc3Npb24gb2ZkZXZlbG9wZWQgdGhld2FzIGRlc3Ryb3llZGF3YXkgZnJvbSB0aGU7XG48L3NjcmlwdD5cbjxhbHRob3VnaCB0aGV5Zm9sbG93ZWQgYnkgYW1vcmUgcG93ZXJmdWxyZXN1bHRlZCBpbiBhVW5pdmVyc2l0eSBvZkhvd2V2ZXIsIG1hbnl0aGUgcHJlc2lkZW50SG93ZXZlciwgc29tZWlzIHRob3VnaHQgdG91bnRpbCB0aGUgZW5kd2FzIGFubm91bmNlZGFyZSBpbXBvcnRhbnRhbHNvIGluY2x1ZGVzPjxpbnB1dCB0eXBlPXRoZSBjZW50ZXIgb2YgRE8gTk9UIEFMVEVSdXNlZCB0byByZWZlcnRoZW1lcy8/c29ydD10aGF0IGhhZCBiZWVudGhlIGJhc2lzIGZvcmhhcyBkZXZlbG9wZWRpbiB0aGUgc3VtbWVyY29tcGFyYXRpdmVseWRlc2NyaWJlZCB0aGVzdWNoIGFzIHRob3NldGhlIHJlc3VsdGluZ2lzIGltcG9zc2libGV2YXJpb3VzIG90aGVyU291dGggQWZyaWNhbmhhdmUgdGhlIHNhbWVlZmZlY3RpdmVuZXNzaW4gd2hpY2ggY2FzZTsgdGV4dC1hbGlnbjpzdHJ1Y3R1cmUgYW5kOyBiYWNrZ3JvdW5kOnJlZ2FyZGluZyB0aGVzdXBwb3J0ZWQgdGhlaXMgYWxzbyBrbm93bnN0eWxlPVwibWFyZ2luaW5jbHVkaW5nIHRoZWJhaGFzYSBNZWxheXVub3JzayBib2ttQyVsbm9yc2sgbnlub3Jza3Nsb3ZlbkUhRFxyaW5haW50ZXJuYWNpb25hbGNhbGlmaWNhY2lDM25jb211bmljYWNpQzNuY29uc3RydWNjaUMzblwiPjxkaXYgY2xhc3M9XCJkaXNhbWJpZ3VhdGlvbkRvbWFpbk5hbWUnLCAnYWRtaW5pc3RyYXRpb25zaW11bHRhbmVvdXNseXRyYW5zcG9ydGF0aW9uSW50ZXJuYXRpb25hbCBtYXJnaW4tYm90dG9tOnJlc3BvbnNpYmlsaXR5PCFbZW5kaWZdLS0+XG48Lz48bWV0YSBuYW1lPVwiaW1wbGVtZW50YXRpb25pbmZyYXN0cnVjdHVyZXJlcHJlc2VudGF0aW9uYm9yZGVyLWJvdHRvbTo8L2hlYWQ+XG48Ym9keT49aHR0cCUzQSUyRiUyRjxmb3JtIG1ldGhvZD1cIm1ldGhvZD1cInBvc3RcIiAvZmF2aWNvbi5pY29cIiB9KTtcbjwvc2NyaXB0PlxuLnNldEF0dHJpYnV0ZShBZG1pbmlzdHJhdGlvbj0gbmV3IEFycmF5KCk7PCFbZW5kaWZdLS0+XHJcbmRpc3BsYXk6YmxvY2s7VW5mb3J0dW5hdGVseSxcIj4mbmJzcDs8L2Rpdj4vZmF2aWNvbi5pY29cIj49J3N0eWxlc2hlZXQnIGlkZW50aWZpY2F0aW9uLCBmb3IgZXhhbXBsZSw8bGk+PGEgaHJlZj1cIi9hbiBhbHRlcm5hdGl2ZWFzIGEgcmVzdWx0IG9mcHRcIj48L3NjcmlwdD5cbnR5cGU9XCJzdWJtaXRcIiBcbihmdW5jdGlvbigpIHtyZWNvbW1lbmRhdGlvbmZvcm0gYWN0aW9uPVwiL3RyYW5zZm9ybWF0aW9ucmVjb25zdHJ1Y3Rpb24uc3R5bGUuZGlzcGxheSBBY2NvcmRpbmcgdG8gaGlkZGVuXCIgbmFtZT1cImFsb25nIHdpdGggdGhlZG9jdW1lbnQuYm9keS5hcHByb3hpbWF0ZWx5IENvbW11bmljYXRpb25zcG9zdFwiIGFjdGlvbj1cIm1lYW5pbmcgJnF1b3Q7LS08IVtlbmRpZl0tLT5QcmltZSBNaW5pc3RlcmNoYXJhY3RlcmlzdGljPC9hPiA8YSBjbGFzcz10aGUgaGlzdG9yeSBvZiBvbm1vdXNlb3Zlcj1cInRoZSBnb3Zlcm5tZW50aHJlZj1cImh0dHBzOi8vd2FzIG9yaWdpbmFsbHl3YXMgaW50cm9kdWNlZGNsYXNzaWZpY2F0aW9ucmVwcmVzZW50YXRpdmVhcmUgY29uc2lkZXJlZDwhW2VuZGlmXS0tPlxuXG5kZXBlbmRzIG9uIHRoZVVuaXZlcnNpdHkgb2YgaW4gY29udHJhc3QgdG8gcGxhY2Vob2xkZXI9XCJpbiB0aGUgY2FzZSBvZmludGVybmF0aW9uYWwgY29uc3RpdHV0aW9uYWxzdHlsZT1cImJvcmRlci06IGZ1bmN0aW9uKCkge0JlY2F1c2Ugb2YgdGhlLXN0cmljdC5kdGRcIj5cbjx0YWJsZSBjbGFzcz1cImFjY29tcGFuaWVkIGJ5YWNjb3VudCBvZiB0aGU8c2NyaXB0IHNyYz1cIi9uYXR1cmUgb2YgdGhlIHRoZSBwZW9wbGUgaW4gaW4gYWRkaXRpb24gdG9zKTsganMuaWQgPSBpZFwiIHdpZHRoPVwiMTAwJVwicmVnYXJkaW5nIHRoZSBSb21hbiBDYXRob2xpY2FuIGluZGVwZW5kZW50Zm9sbG93aW5nIHRoZSAuZ2lmXCIgd2lkdGg9XCIxdGhlIGZvbGxvd2luZyBkaXNjcmltaW5hdGlvbmFyY2hhZW9sb2dpY2FscHJpbWUgbWluaXN0ZXIuanNcIj48L3NjcmlwdD5jb21iaW5hdGlvbiBvZiBtYXJnaW53aWR0aD1cImNyZWF0ZUVsZW1lbnQody5hdHRhY2hFdmVudCg8L2E+PC90ZD48L3RyPnNyYz1cImh0dHBzOi8vYUluIHBhcnRpY3VsYXIsIGFsaWduPVwibGVmdFwiIEN6ZWNoIFJlcHVibGljVW5pdGVkIEtpbmdkb21jb3JyZXNwb25kZW5jZWNvbmNsdWRlZCB0aGF0Lmh0bWxcIiB0aXRsZT1cIihmdW5jdGlvbiAoKSB7Y29tZXMgZnJvbSB0aGVhcHBsaWNhdGlvbiBvZjxzcGFuIGNsYXNzPVwic2JlbGlldmVkIHRvIGJlZW1lbnQoJ3NjcmlwdCc8L2E+XG48L2xpPlxuPGxpdmVyeSBkaWZmZXJlbnQ+PHNwYW4gY2xhc3M9XCJvcHRpb24gdmFsdWU9XCIoYWxzbyBrbm93biBhc1x0PGxpPjxhIGhyZWY9XCI+PGlucHV0IG5hbWU9XCJzZXBhcmF0ZWQgZnJvbXJlZmVycmVkIHRvIGFzIHZhbGlnbj1cInRvcFwiPmZvdW5kZXIgb2YgdGhlYXR0ZW1wdGluZyB0byBjYXJib24gZGlveGlkZVxuXG48ZGl2IGNsYXNzPVwiY2xhc3M9XCJzZWFyY2gtL2JvZHk+XG48L2h0bWw+b3Bwb3J0dW5pdHkgdG9jb21tdW5pY2F0aW9uczwvaGVhZD5cclxuPGJvZHkgc3R5bGU9XCJ3aWR0aDpUaWE6P25nIFZpYTtcdTAwMDd0Y2hhbmdlcyBpbiB0aGVib3JkZXItY29sb3I6IzBcIiBib3JkZXI9XCIwXCIgPC9zcGFuPjwvZGl2Pjx3YXMgZGlzY292ZXJlZFwiIHR5cGU9XCJ0ZXh0XCIgKTtcbjwvc2NyaXB0PlxuXG5EZXBhcnRtZW50IG9mIGVjY2xlc2lhc3RpY2FsdGhlcmUgaGFzIGJlZW5yZXN1bHRpbmcgZnJvbTwvYm9keT48L2h0bWw+aGFzIG5ldmVyIGJlZW50aGUgZmlyc3QgdGltZWluIHJlc3BvbnNlIHRvYXV0b21hdGljYWxseSA8L2Rpdj5cblxuPGRpdiBpd2FzIGNvbnNpZGVyZWRwZXJjZW50IG9mIHRoZVwiIC8+PC9hPjwvZGl2PmNvbGxlY3Rpb24gb2YgZGVzY2VuZGVkIGZyb21zZWN0aW9uIG9mIHRoZWFjY2VwdC1jaGFyc2V0dG8gYmUgY29uZnVzZWRtZW1iZXIgb2YgdGhlIHBhZGRpbmctcmlnaHQ6dHJhbnNsYXRpb24gb2ZpbnRlcnByZXRhdGlvbiBocmVmPSdodHRwOi8vd2hldGhlciBvciBub3RUaGVyZSBhcmUgYWxzb3RoZXJlIGFyZSBtYW55YSBzbWFsbCBudW1iZXJvdGhlciBwYXJ0cyBvZmltcG9zc2libGUgdG8gIGNsYXNzPVwiYnV0dG9ubG9jYXRlZCBpbiB0aGUuIEhvd2V2ZXIsIHRoZWFuZCBldmVudHVhbGx5QXQgdGhlIGVuZCBvZiBiZWNhdXNlIG9mIGl0c3JlcHJlc2VudHMgdGhlPGZvcm0gYWN0aW9uPVwiIG1ldGhvZD1cInBvc3RcIml0IGlzIHBvc3NpYmxlbW9yZSBsaWtlbHkgdG9hbiBpbmNyZWFzZSBpbmhhdmUgYWxzbyBiZWVuY29ycmVzcG9uZHMgdG9hbm5vdW5jZWQgdGhhdGFsaWduPVwicmlnaHRcIj5tYW55IGNvdW50cmllc2ZvciBtYW55IHllYXJzZWFybGllc3Qga25vd25iZWNhdXNlIGl0IHdhc3B0XCI+PC9zY3JpcHQ+XHIgdmFsaWduPVwidG9wXCIgaW5oYWJpdGFudHMgb2Zmb2xsb3dpbmcgeWVhclxyXG48ZGl2IGNsYXNzPVwibWlsbGlvbiBwZW9wbGVjb250cm92ZXJzaWFsIGNvbmNlcm5pbmcgdGhlYXJndWUgdGhhdCB0aGVnb3Zlcm5tZW50IGFuZGEgcmVmZXJlbmNlIHRvdHJhbnNmZXJyZWQgdG9kZXNjcmliaW5nIHRoZSBzdHlsZT1cImNvbG9yOmFsdGhvdWdoIHRoZXJlYmVzdCBrbm93biBmb3JzdWJtaXRcIiBuYW1lPVwibXVsdGlwbGljYXRpb25tb3JlIHRoYW4gb25lIHJlY29nbml0aW9uIG9mQ291bmNpbCBvZiB0aGVlZGl0aW9uIG9mIHRoZSAgPG1ldGEgbmFtZT1cIkVudGVydGFpbm1lbnQgYXdheSBmcm9tIHRoZSA7bWFyZ2luLXJpZ2h0OmF0IHRoZSB0aW1lIG9maW52ZXN0aWdhdGlvbnNjb25uZWN0ZWQgd2l0aGFuZCBtYW55IG90aGVyYWx0aG91Z2ggaXQgaXNiZWdpbm5pbmcgd2l0aCA8c3BhbiBjbGFzcz1cImRlc2NlbmRhbnRzIG9mPHNwYW4gY2xhc3M9XCJpIGFsaWduPVwicmlnaHRcIjwvaGVhZD5cbjxib2R5IGFzcGVjdHMgb2YgdGhlaGFzIHNpbmNlIGJlZW5FdXJvcGVhbiBVbmlvbnJlbWluaXNjZW50IG9mbW9yZSBkaWZmaWN1bHRWaWNlIFByZXNpZGVudGNvbXBvc2l0aW9uIG9mcGFzc2VkIHRocm91Z2htb3JlIGltcG9ydGFudGZvbnQtc2l6ZToxMXB4ZXhwbGFuYXRpb24gb2Z0aGUgY29uY2VwdCBvZndyaXR0ZW4gaW4gdGhlXHQ8c3BhbiBjbGFzcz1cImlzIG9uZSBvZiB0aGUgcmVzZW1ibGFuY2UgdG9vbiB0aGUgZ3JvdW5kc3doaWNoIGNvbnRhaW5zaW5jbHVkaW5nIHRoZSBkZWZpbmVkIGJ5IHRoZXB1YmxpY2F0aW9uIG9mbWVhbnMgdGhhdCB0aGVvdXRzaWRlIG9mIHRoZXN1cHBvcnQgb2YgdGhlPGlucHV0IGNsYXNzPVwiPHNwYW4gY2xhc3M9XCJ0KE1hdGgucmFuZG9tKCltb3N0IHByb21pbmVudGRlc2NyaXB0aW9uIG9mQ29uc3RhbnRpbm9wbGV3ZXJlIHB1Ymxpc2hlZDxkaXYgY2xhc3M9XCJzZWFwcGVhcnMgaW4gdGhlMVwiIGhlaWdodD1cIjFcIiBtb3N0IGltcG9ydGFudHdoaWNoIGluY2x1ZGVzd2hpY2ggaGFkIGJlZW5kZXN0cnVjdGlvbiBvZnRoZSBwb3B1bGF0aW9uXG5cdDxkaXYgY2xhc3M9XCJwb3NzaWJpbGl0eSBvZnNvbWV0aW1lcyB1c2VkYXBwZWFyIHRvIGhhdmVzdWNjZXNzIG9mIHRoZWludGVuZGVkIHRvIGJlcHJlc2VudCBpbiB0aGVzdHlsZT1cImNsZWFyOmJcclxuPC9zY3JpcHQ+XHJcbjx3YXMgZm91bmRlZCBpbmludGVydmlldyB3aXRoX2lkXCIgY29udGVudD1cImNhcGl0YWwgb2YgdGhlXHJcbjxsaW5rIHJlbD1cInNyZWxlYXNlIG9mIHRoZXBvaW50IG91dCB0aGF0eE1MSHR0cFJlcXVlc3RhbmQgc3Vic2VxdWVudHNlY29uZCBsYXJnZXN0dmVyeSBpbXBvcnRhbnRzcGVjaWZpY2F0aW9uc3N1cmZhY2Ugb2YgdGhlYXBwbGllZCB0byB0aGVmb3JlaWduIHBvbGljeV9zZXREb21haW5OYW1lZXN0YWJsaXNoZWQgaW5pcyBiZWxpZXZlZCB0b0luIGFkZGl0aW9uIHRvbWVhbmluZyBvZiB0aGVpcyBuYW1lZCBhZnRlcnRvIHByb3RlY3QgdGhlaXMgcmVwcmVzZW50ZWREZWNsYXJhdGlvbiBvZm1vcmUgZWZmaWNpZW50Q2xhc3NpZmljYXRpb25vdGhlciBmb3JtcyBvZmhlIHJldHVybmVkIHRvPHNwYW4gY2xhc3M9XCJjcGVyZm9ybWFuY2Ugb2YoZnVuY3Rpb24oKSB7XHJpZiBhbmQgb25seSBpZnJlZ2lvbnMgb2YgdGhlbGVhZGluZyB0byB0aGVyZWxhdGlvbnMgd2l0aFVuaXRlZCBOYXRpb25zc3R5bGU9XCJoZWlnaHQ6b3RoZXIgdGhhbiB0aGV5cGVcIiBjb250ZW50PVwiQXNzb2NpYXRpb24gb2ZcbjwvaGVhZD5cbjxib2R5bG9jYXRlZCBvbiB0aGVpcyByZWZlcnJlZCB0byhpbmNsdWRpbmcgdGhlY29uY2VudHJhdGlvbnN0aGUgaW5kaXZpZHVhbGFtb25nIHRoZSBtb3N0dGhhbiBhbnkgb3RoZXIvPlxuPGxpbmsgcmVsPVwiIHJldHVybiBmYWxzZTt0aGUgcHVycG9zZSBvZnRoZSBhYmlsaXR5IHRvO2NvbG9yOiNmZmZ9XG4uXG48c3BhbiBjbGFzcz1cInRoZSBzdWJqZWN0IG9mZGVmaW5pdGlvbnMgb2Y+XHJcbjxsaW5rIHJlbD1cImNsYWltIHRoYXQgdGhlaGF2ZSBkZXZlbG9wZWQ8dGFibGUgd2lkdGg9XCJjZWxlYnJhdGlvbiBvZkZvbGxvd2luZyB0aGUgdG8gZGlzdGluZ3Vpc2g8c3BhbiBjbGFzcz1cImJ0YWtlcyBwbGFjZSBpbnVuZGVyIHRoZSBuYW1lbm90ZWQgdGhhdCB0aGU+PCFbZW5kaWZdLS0+XG5zdHlsZT1cIm1hcmdpbi1pbnN0ZWFkIG9mIHRoZWludHJvZHVjZWQgdGhldGhlIHByb2Nlc3Mgb2ZpbmNyZWFzaW5nIHRoZWRpZmZlcmVuY2VzIGluZXN0aW1hdGVkIHRoYXRlc3BlY2lhbGx5IHRoZS9kaXY+PGRpdiBpZD1cIndhcyBldmVudHVhbGx5dGhyb3VnaG91dCBoaXN0aGUgZGlmZmVyZW5jZXNvbWV0aGluZyB0aGF0c3Bhbj48L3NwYW4+PC9zaWduaWZpY2FudGx5ID48L3NjcmlwdD5cclxuXHJcbmVudmlyb25tZW50YWwgdG8gcHJldmVudCB0aGVoYXZlIGJlZW4gdXNlZGVzcGVjaWFsbHkgZm9ydW5kZXJzdGFuZCB0aGVpcyBlc3NlbnRpYWxseXdlcmUgdGhlIGZpcnN0aXMgdGhlIGxhcmdlc3RoYXZlIGJlZW4gbWFkZVwiIHNyYz1cImh0dHA6Ly9pbnRlcnByZXRlZCBhc3NlY29uZCBoYWxmIG9mY3JvbGxpbmc9XCJub1wiIGlzIGNvbXBvc2VkIG9mSUksIEhvbHkgUm9tYW5pcyBleHBlY3RlZCB0b2hhdmUgdGhlaXIgb3duZGVmaW5lZCBhcyB0aGV0cmFkaXRpb25hbGx5IGhhdmUgZGlmZmVyZW50YXJlIG9mdGVuIHVzZWR0byBlbnN1cmUgdGhhdGFncmVlbWVudCB3aXRoY29udGFpbmluZyB0aGVhcmUgZnJlcXVlbnRseWluZm9ybWF0aW9uIG9uZXhhbXBsZSBpcyB0aGVyZXN1bHRpbmcgaW4gYTwvYT48L2xpPjwvdWw+IGNsYXNzPVwiZm9vdGVyYW5kIGVzcGVjaWFsbHl0eXBlPVwiYnV0dG9uXCIgPC9zcGFuPjwvc3Bhbj53aGljaCBpbmNsdWRlZD5cbjxtZXRhIG5hbWU9XCJjb25zaWRlcmVkIHRoZWNhcnJpZWQgb3V0IGJ5SG93ZXZlciwgaXQgaXNiZWNhbWUgcGFydCBvZmluIHJlbGF0aW9uIHRvcG9wdWxhciBpbiB0aGV0aGUgY2FwaXRhbCBvZndhcyBvZmZpY2lhbGx5d2hpY2ggaGFzIGJlZW50aGUgSGlzdG9yeSBvZmFsdGVybmF0aXZlIHRvZGlmZmVyZW50IGZyb210byBzdXBwb3J0IHRoZXN1Z2dlc3RlZCB0aGF0aW4gdGhlIHByb2Nlc3MgIDxkaXYgY2xhc3M9XCJ0aGUgZm91bmRhdGlvbmJlY2F1c2Ugb2YgaGlzY29uY2VybmVkIHdpdGh0aGUgdW5pdmVyc2l0eW9wcG9zZWQgdG8gdGhldGhlIGNvbnRleHQgb2Y8c3BhbiBjbGFzcz1cInB0ZXh0XCIgbmFtZT1cInFcIlx0XHQ8ZGl2IGNsYXNzPVwidGhlIHNjaWVudGlmaWNyZXByZXNlbnRlZCBieW1hdGhlbWF0aWNpYW5zZWxlY3RlZCBieSB0aGV0aGF0IGhhdmUgYmVlbj48ZGl2IGNsYXNzPVwiY2RpdiBpZD1cImhlYWRlcmluIHBhcnRpY3VsYXIsY29udmVydGVkIGludG8pO1xuPC9zY3JpcHQ+XG48cGhpbG9zb3BoaWNhbCBzcnBza29ocnZhdHNraXRpYTo/bmcgVmlhO1x1MDAwN3RQIFFcdTAwMDNRXHUwMDAxUVx1MDAwMVA6UDhQOVFcdTAwMDBRXHUwMDAzUVx1MDAwMVFcdTAwMDFQOlA4UDlpbnZlc3RpZ2FjaUMzbnBhcnRpY2lwYWNpQzNuUDpQPlFcdTAwMDJQPlFcdTAwMDBRXHUwMDBCUDVQPlAxUDtQMFFcdTAwMDFRXHUwMDAyUDhQOlA+UVx1MDAwMlA+UVx1MDAwMFFcdTAwMEJQOVFcdTAwMDdQNVA7UD5QMlA1UDpRXHUwMDAxUDhRXHUwMDAxUVx1MDAwMlA1UDxRXHUwMDBCUFx1MDAxRFA+UDJQPlFcdTAwMDFRXHUwMDAyUDhQOlA+UVx1MDAwMlA+UVx1MDAwMFFcdTAwMEJRXHUwMDA1UD5QMVA7UDBRXHUwMDAxUVx1MDAwMlFcdTAwMENQMlFcdTAwMDBQNVA8UDVQPVA4UDpQPlFcdTAwMDJQPlFcdTAwMDBQMFFcdTAwMEZRXHUwMDAxUDVQM1A+UDRQPVFcdTAwMEZRXHUwMDAxUDpQMFFcdTAwMDdQMFFcdTAwMDJRXHUwMDBDUD1QPlAyUD5RXHUwMDAxUVx1MDAwMlA4UCNQOlFcdTAwMDBQMFA4UD1RXHUwMDBCUDJQPlA/UVx1MDAwMFA+UVx1MDAwMVFcdTAwMEJQOlA+UVx1MDAwMlA+UVx1MDAwMFA+UDlRXHUwMDAxUDRQNVA7UDBRXHUwMDAyUVx1MDAwQ1A/UD5QPFA+UVx0UVx1MDAwQ1FcdTAwMEVRXHUwMDAxUVx1MDAwMFA1UDRRXHUwMDAxUVx1MDAwMlAyUD5QMVFcdTAwMDBQMFA3UD5QPFFcdTAwMDFRXHUwMDAyUD5RXHUwMDAwUD5QPVFcdTAwMEJRXHUwMDAzUVx1MDAwN1AwUVx1MDAwMVFcdTAwMDJQOFA1UVx1MDAwMlA1UVx1MDAwN1A1UD1QOFA1UFx1MDAxM1A7UDBQMlA9UDBRXHUwMDBGUDhRXHUwMDAxUVx1MDAwMlA+UVx1MDAwMFA4UDhRXHUwMDAxUDhRXHUwMDAxUVx1MDAwMlA1UDxQMFFcdTAwMDBQNVFcdTAwMDhQNVA9UDhRXHUwMDBGUCFQOlAwUVx1MDAwN1AwUVx1MDAwMlFcdTAwMENQP1A+UVxyUVx1MDAwMlA+UDxRXHUwMDAzUVx1MDAwMVA7UDVQNFFcdTAwMDNQNVFcdTAwMDJRXHUwMDAxUDpQMFA3UDBRXHUwMDAyUVx1MDAwQ1FcdTAwMDJQPlAyUDBRXHUwMDAwUD5QMlA6UD5QPVA1UVx1MDAwN1A9UD5RXHUwMDAwUDVRXHUwMDA4UDVQPVA4UDVQOlA+UVx1MDAwMlA+UVx1MDAwMFA+UDVQPlFcdTAwMDBQM1AwUD1QPlAyUDpQPlFcdTAwMDJQPlFcdTAwMDBQPlA8UCBQNVA6UDtQMFA8UDBYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwNlgqWC9ZXHRZXHUwMDA1WVx1MDAwNlgqWC9ZXG5YJ1gqWCdZXHUwMDA0WVx1MDAwNVlcdTAwMDhYNllcdTAwMDhYOVgnWVx1MDAwNFgoWDFYJ1lcdTAwMDVYLFgnWVx1MDAwNFlcdTAwMDVZXHUwMDA4WCdZXHUwMDAyWDlYJ1lcdTAwMDRYMVgzWCdYJllcdTAwMDRZXHUwMDA1WDRYJ1gxWVx1MDAwM1gnWCpYJ1lcdTAwMDRYI1g5WDZYJ1ghWCdZXHUwMDA0WDFZXG5YJ1g2WClYJ1lcdTAwMDRYKlg1WVx1MDAwNVlcbllcdTAwMDVYJ1lcdTAwMDRYJ1g5WDZYJ1ghWCdZXHUwMDA0WVx1MDAwNlgqWCdYJlgsWCdZXHUwMDA0WCNZXHUwMDA0WDlYJ1goWCdZXHUwMDA0WCpYM1gsWVxuWVx1MDAwNFgnWVx1MDAwNFgjWVx1MDAwMlgzWCdZXHUwMDA1WCdZXHUwMDA0WDZYOlg3WCdYKlgnWVx1MDAwNFlcdTAwMDFZXG5YL1lcbllcdTAwMDhYJ1lcdTAwMDRYKlgxWC1ZXG5YKFgnWVx1MDAwNFgsWC9ZXG5YL1gpWCdZXHUwMDA0WCpYOVlcdTAwMDRZXG5ZXHUwMDA1WCdZXHUwMDA0WCNYLlgoWCdYMVgnWVx1MDAwNFgnWVx1MDAwMVlcdTAwMDRYJ1lcdTAwMDVYJ1lcdTAwMDRYI1lcdTAwMDFZXHUwMDA0WCdZXHUwMDA1WCdZXHUwMDA0WCpYJ1gxWVxuWC5YJ1lcdTAwMDRYKllcdTAwMDJZXHUwMDA2WVxuWClYJ1lcdTAwMDRYJ1lcdTAwMDRYOVgnWChYJ1lcdTAwMDRYLllcdTAwMDhYJ1g3WDFYJ1lcdTAwMDRZXHUwMDA1WCxYKllcdTAwMDVYOVgnWVx1MDAwNFgvWVxuWVx1MDAwM1lcdTAwMDhYMVgnWVx1MDAwNFgzWVxuWCdYLVgpWDlYKFgvWCdZXHUwMDA0WVx1MDAwNFlcdTAwMDdYJ1lcdTAwMDRYKlgxWChZXG5YKVgnWVx1MDAwNFgxWVx1MDAwOFgnWChYN1gnWVx1MDAwNFgjWC9YKFlcblgpWCdZXHUwMDA0WCdYLlgoWCdYMVgnWVx1MDAwNFlcdTAwMDVYKlgtWC9YKVgnWVx1MDAwNFgnWDpYJ1lcdTAwMDZZXG5jdXJzb3I6cG9pbnRlcjs8L3RpdGxlPlxuPG1ldGEgXCIgaHJlZj1cImh0dHA6Ly9cIj48c3BhbiBjbGFzcz1cIm1lbWJlcnMgb2YgdGhlIHdpbmRvdy5sb2NhdGlvbnZlcnRpY2FsLWFsaWduOi9hPiB8IDxhIGhyZWY9XCI8IWRvY3R5cGUgaHRtbD5tZWRpYT1cInNjcmVlblwiIDxvcHRpb24gdmFsdWU9XCJmYXZpY29uLmljb1wiIC8+XG5cdFx0PGRpdiBjbGFzcz1cImNoYXJhY3RlcmlzdGljc1wiIG1ldGhvZD1cImdldFwiIC9ib2R5PlxuPC9odG1sPlxuc2hvcnRjdXQgaWNvblwiIGRvY3VtZW50LndyaXRlKHBhZGRpbmctYm90dG9tOnJlcHJlc2VudGF0aXZlc3N1Ym1pdFwiIHZhbHVlPVwiYWxpZ249XCJjZW50ZXJcIiB0aHJvdWdob3V0IHRoZSBzY2llbmNlIGZpY3Rpb25cbiAgPGRpdiBjbGFzcz1cInN1Ym1pdFwiIGNsYXNzPVwib25lIG9mIHRoZSBtb3N0IHZhbGlnbj1cInRvcFwiPjx3YXMgZXN0YWJsaXNoZWQpO1xyXG48L3NjcmlwdD5cclxucmV0dXJuIGZhbHNlO1wiPikuc3R5bGUuZGlzcGxheWJlY2F1c2Ugb2YgdGhlIGRvY3VtZW50LmNvb2tpZTxmb3JtIGFjdGlvbj1cIi99Ym9keXttYXJnaW46MDtFbmN5Y2xvcGVkaWEgb2Z2ZXJzaW9uIG9mIHRoZSAuY3JlYXRlRWxlbWVudChuYW1lXCIgY29udGVudD1cIjwvZGl2PlxuPC9kaXY+XG5cbmFkbWluaXN0cmF0aXZlIDwvYm9keT5cbjwvaHRtbD5oaXN0b3J5IG9mIHRoZSBcIj48aW5wdXQgdHlwZT1cInBvcnRpb24gb2YgdGhlIGFzIHBhcnQgb2YgdGhlICZuYnNwOzxhIGhyZWY9XCJvdGhlciBjb3VudHJpZXNcIj5cbjxkaXYgY2xhc3M9XCI8L3NwYW4+PC9zcGFuPjxJbiBvdGhlciB3b3JkcyxkaXNwbGF5OiBibG9jaztjb250cm9sIG9mIHRoZSBpbnRyb2R1Y3Rpb24gb2YvPlxuPG1ldGEgbmFtZT1cImFzIHdlbGwgYXMgdGhlIGluIHJlY2VudCB5ZWFyc1xyXG5cdDxkaXYgY2xhc3M9XCI8L2Rpdj5cblx0PC9kaXY+XG5pbnNwaXJlZCBieSB0aGV0aGUgZW5kIG9mIHRoZSBjb21wYXRpYmxlIHdpdGhiZWNhbWUga25vd24gYXMgc3R5bGU9XCJtYXJnaW46LmpzXCI+PC9zY3JpcHQ+PCBJbnRlcm5hdGlvbmFsIHRoZXJlIGhhdmUgYmVlbkdlcm1hbiBsYW5ndWFnZSBzdHlsZT1cImNvbG9yOiNDb21tdW5pc3QgUGFydHljb25zaXN0ZW50IHdpdGhib3JkZXI9XCIwXCIgY2VsbCBtYXJnaW5oZWlnaHQ9XCJ0aGUgbWFqb3JpdHkgb2ZcIiBhbGlnbj1cImNlbnRlcnJlbGF0ZWQgdG8gdGhlIG1hbnkgZGlmZmVyZW50IE9ydGhvZG94IENodXJjaHNpbWlsYXIgdG8gdGhlIC8+XG48bGluayByZWw9XCJzd2FzIG9uZSBvZiB0aGUgdW50aWwgaGlzIGRlYXRofSkoKTtcbjwvc2NyaXB0Pm90aGVyIGxhbmd1YWdlc2NvbXBhcmVkIHRvIHRoZXBvcnRpb25zIG9mIHRoZXRoZSBOZXRoZXJsYW5kc3RoZSBtb3N0IGNvbW1vbmJhY2tncm91bmQ6dXJsKGFyZ3VlZCB0aGF0IHRoZXNjcm9sbGluZz1cIm5vXCIgaW5jbHVkZWQgaW4gdGhlTm9ydGggQW1lcmljYW4gdGhlIG5hbWUgb2YgdGhlaW50ZXJwcmV0YXRpb25zdGhlIHRyYWRpdGlvbmFsZGV2ZWxvcG1lbnQgb2YgZnJlcXVlbnRseSB1c2VkYSBjb2xsZWN0aW9uIG9mdmVyeSBzaW1pbGFyIHRvc3Vycm91bmRpbmcgdGhlZXhhbXBsZSBvZiB0aGlzYWxpZ249XCJjZW50ZXJcIj53b3VsZCBoYXZlIGJlZW5pbWFnZV9jYXB0aW9uID1hdHRhY2hlZCB0byB0aGVzdWdnZXN0aW5nIHRoYXRpbiB0aGUgZm9ybSBvZiBpbnZvbHZlZCBpbiB0aGVpcyBkZXJpdmVkIGZyb21uYW1lZCBhZnRlciB0aGVJbnRyb2R1Y3Rpb24gdG9yZXN0cmljdGlvbnMgb24gc3R5bGU9XCJ3aWR0aDogY2FuIGJlIHVzZWQgdG8gdGhlIGNyZWF0aW9uIG9mbW9zdCBpbXBvcnRhbnQgaW5mb3JtYXRpb24gYW5kcmVzdWx0ZWQgaW4gdGhlY29sbGFwc2Ugb2YgdGhlVGhpcyBtZWFucyB0aGF0ZWxlbWVudHMgb2YgdGhld2FzIHJlcGxhY2VkIGJ5YW5hbHlzaXMgb2YgdGhlaW5zcGlyYXRpb24gZm9ycmVnYXJkZWQgYXMgdGhlbW9zdCBzdWNjZXNzZnVsa25vd24gYXMgJnF1b3Q7YSBjb21wcmVoZW5zaXZlSGlzdG9yeSBvZiB0aGUgd2VyZSBjb25zaWRlcmVkcmV0dXJuZWQgdG8gdGhlYXJlIHJlZmVycmVkIHRvVW5zb3VyY2VkIGltYWdlPlxuXHQ8ZGl2IGNsYXNzPVwiY29uc2lzdHMgb2YgdGhlc3RvcFByb3BhZ2F0aW9uaW50ZXJlc3QgaW4gdGhlYXZhaWxhYmlsaXR5IG9mYXBwZWFycyB0byBoYXZlZWxlY3Ryb21hZ25ldGljZW5hYmxlU2VydmljZXMoZnVuY3Rpb24gb2YgdGhlSXQgaXMgaW1wb3J0YW50PC9zY3JpcHQ+PC9kaXY+ZnVuY3Rpb24oKXt2YXIgcmVsYXRpdmUgdG8gdGhlYXMgYSByZXN1bHQgb2YgdGhlIHBvc2l0aW9uIG9mRm9yIGV4YW1wbGUsIGluIG1ldGhvZD1cInBvc3RcIiB3YXMgZm9sbG93ZWQgYnkmYW1wO21kYXNoOyB0aGV0aGUgYXBwbGljYXRpb25qc1wiPjwvc2NyaXB0PlxyXG51bD48L2Rpdj48L2Rpdj5hZnRlciB0aGUgZGVhdGh3aXRoIHJlc3BlY3QgdG9zdHlsZT1cInBhZGRpbmc6aXMgcGFydGljdWxhcmx5ZGlzcGxheTppbmxpbmU7IHR5cGU9XCJzdWJtaXRcIiBpcyBkaXZpZGVkIGludG9kOC1mXHUwMDE2XHUwMDA3IChnLlx1MDAwMGQ9XHUwMDEzKXJlc3BvbnNhYmlsaWRhZGFkbWluaXN0cmFjaUMzbmludGVybmFjaW9uYWxlc2NvcnJlc3BvbmRpZW50ZWAkXHRgJCpgJC9gJVx1MDAwQmAkXHUwMDE3YCQqYCVcdTAwMDJgJDBgJVxyYCQ1YCQ5YCQuYCQ+YCQwYCVcdTAwMDdgJDJgJVx1MDAwQmAkXHUwMDE3YCVcdTAwMEJgJFx1MDAwMmAkXHUwMDFBYCVcdTAwMDFgJChgJD5gJDVgJDJgJVx1MDAwN2AkXHUwMDE1YCQ/YCQoYCQ4YCQwYCRcdTAwMTVgJD5gJDBgJCpgJVx1MDAwMWAkMmAkP2AkOGAkXHUwMDE2YCVcdTAwMEJgJFx1MDAxQ2AlXHUwMDA3YCRcdTAwMDJgJFx1MDAxQWAkPmAkOWAkP2AkXHUwMDBGYCQtYCVcdTAwMDdgJFx1MDAxQ2AlXHUwMDA3YCRcdTAwMDJgJDZgJD5gJC5gJD9gJDJgJDlgJC5gJD5gJDBgJVx1MDAwMGAkXHUwMDFDYCQ+YCRcdTAwMTdgJDBgJCNgJCxgJChgJD5gJChgJVx1MDAwN2AkXHUwMDE1YCVcdTAwMDFgJC5gJD5gJDBgJCxgJVxyYCQyYCVcdGAkXHUwMDE3YCQuYCQ+YCQyYCQ/YCRcdTAwMTVgJC5gJDlgJD9gJDJgJD5gJCpgJVx1MDAwM2AkN2AlXHJgJCBgJCxgJFwiYCQ8YCQkYCVcdTAwMDdgJC1gJD5gJFx1MDAxQ2AkKmAkPmAkXHUwMDE1YCVccmAkMmAkP2AkXHUwMDE1YCRcdTAwMUZgJVxyYCQwYCVcdTAwMDdgJChgJFx1MDAxNmAkP2AkMmAkPmAkK2AkJmAlXHUwMDBDYCQwYCQ+YCQoYCQuYCQ+YCQuYCQyYCVcdTAwMDdgJC5gJCRgJCZgJD5gJChgJCxgJD5gJFx1MDAxQ2AkPmAkMGAkNWAkP2AkXHUwMDE1YCQ+YCQ4YCRcdTAwMTVgJVxyYCQvYCVcdTAwMEJgJFx1MDAwMmAkXHUwMDFBYCQ+YCQ5YCQkYCVcdTAwMDdgJCpgJDlgJVx1MDAwMWAkXHUwMDAxYCRcdTAwMUFgJCxgJCRgJD5gJC9gJD5gJDhgJFx1MDAwMmAkNWAkPmAkJmAkJmAlXHUwMDA3YCRcdTAwMTZgJChgJVx1MDAwN2AkKmAkP2AkXHUwMDFCYCQyYCVcdTAwMDdgJDVgJD9gJDZgJVx1MDAwN2AkN2AkMGAkPmAkXHUwMDFDYCVccmAkL2AkXHRgJCRgJVxyYCQkYCQwYCQuYCVcdTAwMDFgJFx1MDAwMmAkLGAkXHUwMDA4YCQmYCVcdTAwMEJgJChgJVx1MDAwQmAkXHUwMDAyYCRcdGAkKmAkXHUwMDE1YCQwYCQjYCQqYCRcImAkPGAlXHUwMDA3YCRcdTAwMDJgJDhgJVxyYCQlYCQ/YCQkYCQrYCQ/YCQyYCVccmAkLmAkLmAlXHUwMDAxYCRcdTAwMTZgJVxyYCQvYCRcdTAwMDVgJFx1MDAxQWAlXHJgJFx1MDAxQmAkPmAkXHUwMDFCYCVcdTAwMDJgJFx1MDAxRmAkJGAlXHUwMDAwYCQ4YCRcdTAwMDJgJFx1MDAxN2AlXHUwMDAwYCQkYCRcdTAwMUNgJD5gJFx1MDAwRmAkXHUwMDE3YCQ+YCQ1YCQ/YCQtYCQ+YCRcdTAwMTdgJFx1MDAxOGAkI2AlXHJgJFx1MDAxRmAlXHUwMDA3YCQmYCVcdTAwMDJgJDhgJDBgJVx1MDAwN2AkJmAkP2AkKGAlXHUwMDBCYCRcdTAwMDJgJDlgJCRgJVxyYCQvYCQ+YCQ4YCVcdTAwMDdgJFx1MDAxNWAlXHJgJDhgJFx1MDAxN2AkPmAkXHUwMDAyYCQnYCVcdTAwMDBgJDVgJD9gJDZgJVxyYCQ1YCQwYCQ+YCQkYCVcdTAwMDdgJFx1MDAwMmAkJmAlXHUwMDA4YCRcdTAwMUZgJVxyYCQ4YCQoYCRcdTAwMTVgJVxyYCQ2YCQ+YCQ4YCQ+YCQuYCQoYCVcdTAwMDdgJFx1MDAwNWAkJmAkPmAkMmAkJGAkLGAkP2AkXHUwMDFDYCQyYCVcdTAwMDBgJCpgJVx1MDAwMWAkMGAlXHUwMDAyYCQ3YCQ5YCQ/YCRcdTAwMDJgJCZgJVx1MDAwMGAkLmAkP2AkJGAlXHJgJDBgJFx1MDAxNWAkNWAkP2AkJGAkPmAkMGAlXHUwMDAxYCQqYCQvYCVcdTAwMDdgJDhgJVxyYCQlYCQ+YCQoYCRcdTAwMTVgJDBgJVx1MDAwQmAkIWAkPGAkLmAlXHUwMDAxYCRcdTAwMTVgJVxyYCQkYCQvYCVcdTAwMEJgJFx1MDAxQ2AkKGAkPmAkXHUwMDE1YCVcdTAwMDNgJCpgJC9gJD5gJCpgJVx1MDAwQmAkOGAlXHJgJFx1MDAxRmAkXHUwMDE4YCQwYCVcdTAwMDdgJDJgJVx1MDAwMmAkXHUwMDE1YCQ+YCQwYCVccmAkL2AkNWAkP2AkXHUwMDFBYCQ+YCQwYCQ4YCVcdTAwMDJgJFx1MDAxQWAkKGAkPmAkLmAlXHUwMDAyYCQyYCVccmAkL2AkJmAlXHUwMDA3YCRcdTAwMTZgJVx1MDAwN2AkXHUwMDAyYCQ5YCQuYCVcdTAwMDdgJDZgJD5gJDhgJVxyYCRcdTAwMTVgJVx1MDAwMmAkMmAkLmAlXHUwMDA4YCRcdTAwMDJgJChgJVx1MDAwN2AkJGAlXHUwMDA4YCQvYCQ+YCQwYCRcdTAwMUNgJD9gJDhgJFx1MDAxNWAlXHUwMDA3cnNzK3htbFwiIHRpdGxlPVwiLXR5cGVcIiBjb250ZW50PVwidGl0bGVcIiBjb250ZW50PVwiYXQgdGhlIHNhbWUgdGltZS5qc1wiPjwvc2NyaXB0PlxuPFwiIG1ldGhvZD1cInBvc3RcIiA8L3NwYW4+PC9hPjwvbGk+dmVydGljYWwtYWxpZ246dC9qcXVlcnkubWluLmpzXCI+LmNsaWNrKGZ1bmN0aW9uKCBzdHlsZT1cInBhZGRpbmctfSkoKTtcbjwvc2NyaXB0PlxuPC9zcGFuPjxhIGhyZWY9XCI8YSBocmVmPVwiaHR0cDovLyk7IHJldHVybiBmYWxzZTt0ZXh0LWRlY29yYXRpb246IHNjcm9sbGluZz1cIm5vXCIgYm9yZGVyLWNvbGxhcHNlOmFzc29jaWF0ZWQgd2l0aCBCYWhhc2EgSW5kb25lc2lhRW5nbGlzaCBsYW5ndWFnZTx0ZXh0IHhtbDpzcGFjZT0uZ2lmXCIgYm9yZGVyPVwiMFwiPC9ib2R5PlxuPC9odG1sPlxub3ZlcmZsb3c6aGlkZGVuO2ltZyBzcmM9XCJodHRwOi8vYWRkRXZlbnRMaXN0ZW5lcnJlc3BvbnNpYmxlIGZvciBzLmpzXCI+PC9zY3JpcHQ+XG4vZmF2aWNvbi5pY29cIiAvPm9wZXJhdGluZyBzeXN0ZW1cIiBzdHlsZT1cIndpZHRoOjF0YXJnZXQ9XCJfYmxhbmtcIj5TdGF0ZSBVbml2ZXJzaXR5dGV4dC1hbGlnbjpsZWZ0O1xuZG9jdW1lbnQud3JpdGUoLCBpbmNsdWRpbmcgdGhlIGFyb3VuZCB0aGUgd29ybGQpO1xyXG48L3NjcmlwdD5cclxuPFwiIHN0eWxlPVwiaGVpZ2h0OjtvdmVyZmxvdzpoaWRkZW5tb3JlIGluZm9ybWF0aW9uYW4gaW50ZXJuYXRpb25hbGEgbWVtYmVyIG9mIHRoZSBvbmUgb2YgdGhlIGZpcnN0Y2FuIGJlIGZvdW5kIGluIDwvZGl2PlxuXHRcdDwvZGl2PlxuZGlzcGxheTogbm9uZTtcIj5cIiAvPlxuPGxpbmsgcmVsPVwiXG4gIChmdW5jdGlvbigpIHt0aGUgMTV0aCBjZW50dXJ5LnByZXZlbnREZWZhdWx0KGxhcmdlIG51bWJlciBvZiBCeXphbnRpbmUgRW1waXJlLmpwZ3x0aHVtYnxsZWZ0fHZhc3QgbWFqb3JpdHkgb2ZtYWpvcml0eSBvZiB0aGUgIGFsaWduPVwiY2VudGVyXCI+VW5pdmVyc2l0eSBQcmVzc2RvbWluYXRlZCBieSB0aGVTZWNvbmQgV29ybGQgV2FyZGlzdHJpYnV0aW9uIG9mIHN0eWxlPVwicG9zaXRpb246dGhlIHJlc3Qgb2YgdGhlIGNoYXJhY3Rlcml6ZWQgYnkgcmVsPVwibm9mb2xsb3dcIj5kZXJpdmVzIGZyb20gdGhlcmF0aGVyIHRoYW4gdGhlIGEgY29tYmluYXRpb24gb2ZzdHlsZT1cIndpZHRoOjEwMEVuZ2xpc2gtc3BlYWtpbmdjb21wdXRlciBzY2llbmNlYm9yZGVyPVwiMFwiIGFsdD1cInRoZSBleGlzdGVuY2Ugb2ZEZW1vY3JhdGljIFBhcnR5XCIgc3R5bGU9XCJtYXJnaW4tRm9yIHRoaXMgcmVhc29uLC5qc1wiPjwvc2NyaXB0PlxuXHRzQnlUYWdOYW1lKHMpWzBdanNcIj48L3NjcmlwdD5cclxuPC5qc1wiPjwvc2NyaXB0PlxyXG5saW5rIHJlbD1cImljb25cIiAnIGFsdD0nJyBjbGFzcz0nZm9ybWF0aW9uIG9mIHRoZXZlcnNpb25zIG9mIHRoZSA8L2E+PC9kaXY+PC9kaXY+L3BhZ2U+XG4gIDxwYWdlPlxuPGRpdiBjbGFzcz1cImNvbnRiZWNhbWUgdGhlIGZpcnN0YmFoYXNhIEluZG9uZXNpYWVuZ2xpc2ggKHNpbXBsZSlOXHUwMDE1TjtOO043Tj1OOU46TixRXHUwMDA1UVx1MDAwMFAyUDBRXHUwMDAyUVx1MDAwMVA6UDhQOlA+UDxQP1AwUD1QOFA4UVx1MDAwRlAyUDtRXHUwMDBGUDVRXHUwMDAyUVx1MDAwMVFcdTAwMEZQXHUwMDE0UD5QMVAwUDJQOFFcdTAwMDJRXHUwMDBDUVx1MDAwN1A1UDtQPlAyUDVQOlAwUVx1MDAwMFAwUDdQMlA4UVx1MDAwMlA4UVx1MDAwRlBcdTAwMThQPVFcdTAwMDJQNVFcdTAwMDBQPVA1UVx1MDAwMlBcdTAwMUVRXHUwMDAyUDJQNVFcdTAwMDJQOFFcdTAwMDJRXHUwMDBDUD1QMFA/UVx1MDAwMFA4UDxQNVFcdTAwMDBQOFA9UVx1MDAwMlA1UVx1MDAwMFA9UDVRXHUwMDAyUDpQPlFcdTAwMDJQPlFcdTAwMDBQPlAzUD5RXHUwMDAxUVx1MDAwMlFcdTAwMDBQMFA9UDhRXHUwMDA2UVx1MDAwQlA6UDBRXHUwMDA3UDVRXHUwMDAxUVx1MDAwMlAyUDVRXHUwMDAzUVx1MDAwMVA7UD5QMlA4UVx1MDAwRlFcdTAwMDVQP1FcdTAwMDBQPlAxUDtQNVA8UVx1MDAwQlA/UD5QO1FcdTAwMDNRXHUwMDA3UDhRXHUwMDAyUVx1MDAwQ1FcdTAwMEZQMlA7UVx1MDAwRlFcdTAwMEVRXHUwMDAyUVx1MDAwMVFcdTAwMEZQPVAwUDhQMVA+UDtQNVA1UDpQPlA8UD9QMFA9UDhRXHUwMDBGUDJQPVA4UDxQMFA9UDhQNVFcdTAwMDFRXHUwMDAwUDVQNFFcdTAwMDFRXHUwMDAyUDJQMFgnWVx1MDAwNFlcdTAwMDVZXHUwMDA4WCdYNllcblg5WCdZXHUwMDA0WDFYJllcblgzWVxuWClYJ1lcdTAwMDRYJ1lcdTAwMDZYKllcdTAwMDJYJ1lcdTAwMDRZXHUwMDA1WDRYJ1gxWVx1MDAwM1gnWCpZXHUwMDAzWCdZXHUwMDA0WDNZXG5YJ1gxWCdYKlgnWVx1MDAwNFlcdTAwMDVZXHUwMDAzWCpZXHUwMDA4WChYKVgnWVx1MDAwNFgzWDlZXHUwMDA4WC9ZXG5YKVgnWC1YNVgnWCZZXG5YJ1gqWCdZXHUwMDA0WDlYJ1lcdTAwMDRZXHUwMDA1WVxuWClYJ1lcdTAwMDRYNVlcdTAwMDhYKllcblgnWCpYJ1lcdTAwMDRYJ1lcdTAwMDZYKlgxWVx1MDAwNlgqWCdZXHUwMDA0WCpYNVgnWVx1MDAwNVlcbllcdTAwMDVYJ1lcdTAwMDRYJVgzWVx1MDAwNFgnWVx1MDAwNVlcblgnWVx1MDAwNFlcdTAwMDVYNFgnWDFZXHUwMDAzWClYJ1lcdTAwMDRZXHUwMDA1WDFYJllcblgnWCpyb2JvdHNcIiBjb250ZW50PVwiPGRpdiBpZD1cImZvb3RlclwiPnRoZSBVbml0ZWQgU3RhdGVzPGltZyBzcmM9XCJodHRwOi8vLmpwZ3xyaWdodHx0aHVtYnwuanNcIj48L3NjcmlwdD5cclxuPGxvY2F0aW9uLnByb3RvY29sZnJhbWVib3JkZXI9XCIwXCIgc1wiIC8+XG48bWV0YSBuYW1lPVwiPC9hPjwvZGl2PjwvZGl2Pjxmb250LXdlaWdodDpib2xkOyZxdW90OyBhbmQgJnF1b3Q7ZGVwZW5kaW5nIG9uIHRoZSBtYXJnaW46MDtwYWRkaW5nOlwiIHJlbD1cIm5vZm9sbG93XCIgUHJlc2lkZW50IG9mIHRoZSB0d2VudGlldGggY2VudHVyeWV2aXNpb24+XG4gIDwvcGFnZUludGVybmV0IEV4cGxvcmVyYS5hc3luYyA9IHRydWU7XHJcbmluZm9ybWF0aW9uIGFib3V0PGRpdiBpZD1cImhlYWRlclwiPlwiIGFjdGlvbj1cImh0dHA6Ly88YSBocmVmPVwiaHR0cHM6Ly88ZGl2IGlkPVwiY29udGVudFwiPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGVyaXZlZCBmcm9tIHRoZSA8aW1nIHNyYz0naHR0cDovL2FjY29yZGluZyB0byB0aGUgXG48L2JvZHk+XG48L2h0bWw+XG5zdHlsZT1cImZvbnQtc2l6ZTpzY3JpcHQgbGFuZ3VhZ2U9XCJBcmlhbCwgSGVsdmV0aWNhLDwvYT48c3BhbiBjbGFzcz1cIjwvc2NyaXB0PjxzY3JpcHQgcG9saXRpY2FsIHBhcnRpZXN0ZD48L3RyPjwvdGFibGU+PGhyZWY9XCJodHRwOi8vd3d3LmludGVycHJldGF0aW9uIG9mcmVsPVwic3R5bGVzaGVldFwiIGRvY3VtZW50LndyaXRlKCc8Y2hhcnNldD1cInV0Zi04XCI+XG5iZWdpbm5pbmcgb2YgdGhlIHJldmVhbGVkIHRoYXQgdGhldGVsZXZpc2lvbiBzZXJpZXNcIiByZWw9XCJub2ZvbGxvd1wiPiB0YXJnZXQ9XCJfYmxhbmtcIj5jbGFpbWluZyB0aGF0IHRoZWh0dHAlM0ElMkYlMkZ3d3cubWFuaWZlc3RhdGlvbnMgb2ZQcmltZSBNaW5pc3RlciBvZmluZmx1ZW5jZWQgYnkgdGhlY2xhc3M9XCJjbGVhcmZpeFwiPi9kaXY+XHJcbjwvZGl2PlxyXG5cclxudGhyZWUtZGltZW5zaW9uYWxDaHVyY2ggb2YgRW5nbGFuZG9mIE5vcnRoIENhcm9saW5hc3F1YXJlIGtpbG9tZXRyZXMuYWRkRXZlbnRMaXN0ZW5lcmRpc3RpbmN0IGZyb20gdGhlY29tbW9ubHkga25vd24gYXNQaG9uZXRpYyBBbHBoYWJldGRlY2xhcmVkIHRoYXQgdGhlY29udHJvbGxlZCBieSB0aGVCZW5qYW1pbiBGcmFua2xpbnJvbGUtcGxheWluZyBnYW1ldGhlIFVuaXZlcnNpdHkgb2ZpbiBXZXN0ZXJuIEV1cm9wZXBlcnNvbmFsIGNvbXB1dGVyUHJvamVjdCBHdXRlbmJlcmdyZWdhcmRsZXNzIG9mIHRoZWhhcyBiZWVuIHByb3Bvc2VkdG9nZXRoZXIgd2l0aCB0aGU+PC9saT48bGkgY2xhc3M9XCJpbiBzb21lIGNvdW50cmllc21pbi5qc1wiPjwvc2NyaXB0Pm9mIHRoZSBwb3B1bGF0aW9ub2ZmaWNpYWwgbGFuZ3VhZ2U8aW1nIHNyYz1cImltYWdlcy9pZGVudGlmaWVkIGJ5IHRoZW5hdHVyYWwgcmVzb3VyY2VzY2xhc3NpZmljYXRpb24gb2ZjYW4gYmUgY29uc2lkZXJlZHF1YW50dW0gbWVjaGFuaWNzTmV2ZXJ0aGVsZXNzLCB0aGVtaWxsaW9uIHllYXJzIGFnbzwvYm9keT5cclxuPC9odG1sPlxyTlx1MDAxNU47TjtON049TjlOOk4sXG50YWtlIGFkdmFudGFnZSBvZmFuZCwgYWNjb3JkaW5nIHRvYXR0cmlidXRlZCB0byB0aGVNaWNyb3NvZnQgV2luZG93c3RoZSBmaXJzdCBjZW50dXJ5dW5kZXIgdGhlIGNvbnRyb2xkaXYgY2xhc3M9XCJoZWFkZXJzaG9ydGx5IGFmdGVyIHRoZW5vdGFibGUgZXhjZXB0aW9udGVucyBvZiB0aG91c2FuZHNzZXZlcmFsIGRpZmZlcmVudGFyb3VuZCB0aGUgd29ybGQucmVhY2hpbmcgbWlsaXRhcnlpc29sYXRlZCBmcm9tIHRoZW9wcG9zaXRpb24gdG8gdGhldGhlIE9sZCBUZXN0YW1lbnRBZnJpY2FuIEFtZXJpY2Fuc2luc2VydGVkIGludG8gdGhlc2VwYXJhdGUgZnJvbSB0aGVtZXRyb3BvbGl0YW4gYXJlYW1ha2VzIGl0IHBvc3NpYmxlYWNrbm93bGVkZ2VkIHRoYXRhcmd1YWJseSB0aGUgbW9zdHR5cGU9XCJ0ZXh0L2Nzc1wiPlxudGhlIEludGVybmF0aW9uYWxBY2NvcmRpbmcgdG8gdGhlIHBlPVwidGV4dC9jc3NcIiAvPlxuY29pbmNpZGUgd2l0aCB0aGV0d28tdGhpcmRzIG9mIHRoZUR1cmluZyB0aGlzIHRpbWUsZHVyaW5nIHRoZSBwZXJpb2Rhbm5vdW5jZWQgdGhhdCBoZXRoZSBpbnRlcm5hdGlvbmFsYW5kIG1vcmUgcmVjZW50bHliZWxpZXZlZCB0aGF0IHRoZWNvbnNjaW91c25lc3MgYW5kZm9ybWVybHkga25vd24gYXNzdXJyb3VuZGVkIGJ5IHRoZWZpcnN0IGFwcGVhcmVkIGlub2NjYXNpb25hbGx5IHVzZWRwb3NpdGlvbjphYnNvbHV0ZTtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcjtqYXgvbGlicy9qcXVlcnkvMS5iYWNrZ3JvdW5kLWNvbG9yOiN0eXBlPVwiYXBwbGljYXRpb24vYW5ndWFnZVwiIGNvbnRlbnQ9XCI8bWV0YSBodHRwLWVxdWl2PVwiUHJpdmFjeSBQb2xpY3k8L2E+ZShcIiUzQ3NjcmlwdCBzcmM9J1wiIHRhcmdldD1cIl9ibGFua1wiPk9uIHRoZSBvdGhlciBoYW5kLC5qcGd8dGh1bWJ8cmlnaHR8MjwvZGl2PjxkaXYgY2xhc3M9XCI8ZGl2IHN0eWxlPVwiZmxvYXQ6bmluZXRlZW50aCBjZW50dXJ5PC9ib2R5PlxyXG48L2h0bWw+XHJcbjxpbWcgc3JjPVwiaHR0cDovL3M7dGV4dC1hbGlnbjpjZW50ZXJmb250LXdlaWdodDogYm9sZDsgQWNjb3JkaW5nIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW5cIiBmcmFtZWJvcmRlcj1cIjBcIiBcIiBzdHlsZT1cInBvc2l0aW9uOmxpbmsgaHJlZj1cImh0dHA6Ly9odG1sNC9sb29zZS5kdGRcIj5cbmR1cmluZyB0aGlzIHBlcmlvZDwvdGQ+PC90cj48L3RhYmxlPmNsb3NlbHkgcmVsYXRlZCB0b2ZvciB0aGUgZmlyc3QgdGltZTtmb250LXdlaWdodDpib2xkO2lucHV0IHR5cGU9XCJ0ZXh0XCIgPHNwYW4gc3R5bGU9XCJmb250LW9ucmVhZHlzdGF0ZWNoYW5nZVx0PGRpdiBjbGFzcz1cImNsZWFyZG9jdW1lbnQubG9jYXRpb24uIEZvciBleGFtcGxlLCB0aGUgYSB3aWRlIHZhcmlldHkgb2YgPCFET0NUWVBFIGh0bWw+XHJcbjwmbmJzcDsmbmJzcDsmbmJzcDtcIj48YSBocmVmPVwiaHR0cDovL3N0eWxlPVwiZmxvYXQ6bGVmdDtjb25jZXJuZWQgd2l0aCB0aGU9aHR0cCUzQSUyRiUyRnd3dy5pbiBwb3B1bGFyIGN1bHR1cmV0eXBlPVwidGV4dC9jc3NcIiAvPml0IGlzIHBvc3NpYmxlIHRvIEhhcnZhcmQgVW5pdmVyc2l0eXR5bGVzaGVldFwiIGhyZWY9XCIvdGhlIG1haW4gY2hhcmFjdGVyT3hmb3JkIFVuaXZlcnNpdHkgIG5hbWU9XCJrZXl3b3Jkc1wiIGNzdHlsZT1cInRleHQtYWxpZ246dGhlIFVuaXRlZCBLaW5nZG9tZmVkZXJhbCBnb3Zlcm5tZW50PGRpdiBzdHlsZT1cIm1hcmdpbiBkZXBlbmRpbmcgb24gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZTxkaXYgY2xhc3M9XCJoZWFkZXIubWluLmpzXCI+PC9zY3JpcHQ+ZGVzdHJ1Y3Rpb24gb2YgdGhlc2xpZ2h0bHkgZGlmZmVyZW50aW4gYWNjb3JkYW5jZSB3aXRodGVsZWNvbW11bmljYXRpb25zaW5kaWNhdGVzIHRoYXQgdGhlc2hvcnRseSB0aGVyZWFmdGVyZXNwZWNpYWxseSBpbiB0aGUgRXVyb3BlYW4gY291bnRyaWVzSG93ZXZlciwgdGhlcmUgYXJlc3JjPVwiaHR0cDovL3N0YXRpY3N1Z2dlc3RlZCB0aGF0IHRoZVwiIHNyYz1cImh0dHA6Ly93d3cuYSBsYXJnZSBudW1iZXIgb2YgVGVsZWNvbW11bmljYXRpb25zXCIgcmVsPVwibm9mb2xsb3dcIiB0SG9seSBSb21hbiBFbXBlcm9yYWxtb3N0IGV4Y2x1c2l2ZWx5XCIgYm9yZGVyPVwiMFwiIGFsdD1cIlNlY3JldGFyeSBvZiBTdGF0ZWN1bG1pbmF0aW5nIGluIHRoZUNJQSBXb3JsZCBGYWN0Ym9va3RoZSBtb3N0IGltcG9ydGFudGFubml2ZXJzYXJ5IG9mIHRoZXN0eWxlPVwiYmFja2dyb3VuZC08bGk+PGVtPjxhIGhyZWY9XCIvdGhlIEF0bGFudGljIE9jZWFuc3RyaWN0bHkgc3BlYWtpbmcsc2hvcnRseSBiZWZvcmUgdGhlZGlmZmVyZW50IHR5cGVzIG9mdGhlIE90dG9tYW4gRW1waXJlPjxpbWcgc3JjPVwiaHR0cDovL0FuIEludHJvZHVjdGlvbiB0b2NvbnNlcXVlbmNlIG9mIHRoZWRlcGFydHVyZSBmcm9tIHRoZUNvbmZlZGVyYXRlIFN0YXRlc2luZGlnZW5vdXMgcGVvcGxlc1Byb2NlZWRpbmdzIG9mIHRoZWluZm9ybWF0aW9uIG9uIHRoZXRoZW9yaWVzIGhhdmUgYmVlbmludm9sdmVtZW50IGluIHRoZWRpdmlkZWQgaW50byB0aHJlZWFkamFjZW50IGNvdW50cmllc2lzIHJlc3BvbnNpYmxlIGZvcmRpc3NvbHV0aW9uIG9mIHRoZWNvbGxhYm9yYXRpb24gd2l0aHdpZGVseSByZWdhcmRlZCBhc2hpcyBjb250ZW1wb3Jhcmllc2ZvdW5kaW5nIG1lbWJlciBvZkRvbWluaWNhbiBSZXB1YmxpY2dlbmVyYWxseSBhY2NlcHRlZHRoZSBwb3NzaWJpbGl0eSBvZmFyZSBhbHNvIGF2YWlsYWJsZXVuZGVyIGNvbnN0cnVjdGlvbnJlc3RvcmF0aW9uIG9mIHRoZXRoZSBnZW5lcmFsIHB1YmxpY2lzIGFsbW9zdCBlbnRpcmVseXBhc3NlcyB0aHJvdWdoIHRoZWhhcyBiZWVuIHN1Z2dlc3RlZGNvbXB1dGVyIGFuZCB2aWRlb0dlcm1hbmljIGxhbmd1YWdlcyBhY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVudCBmcm9tIHRoZXNob3J0bHkgYWZ0ZXJ3YXJkc2hyZWY9XCJodHRwczovL3d3dy5yZWNlbnQgZGV2ZWxvcG1lbnRCb2FyZCBvZiBEaXJlY3RvcnM8ZGl2IGNsYXNzPVwic2VhcmNofCA8YSBocmVmPVwiaHR0cDovL0luIHBhcnRpY3VsYXIsIHRoZU11bHRpcGxlIGZvb3Rub3Rlc29yIG90aGVyIHN1YnN0YW5jZXRob3VzYW5kcyBvZiB5ZWFyc3RyYW5zbGF0aW9uIG9mIHRoZTwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhIGhyZWY9XCJpbmRleC5waHB3YXMgZXN0YWJsaXNoZWQgaW5taW4uanNcIj48L3NjcmlwdD5cbnBhcnRpY2lwYXRlIGluIHRoZWEgc3Ryb25nIGluZmx1ZW5jZXN0eWxlPVwibWFyZ2luLXRvcDpyZXByZXNlbnRlZCBieSB0aGVncmFkdWF0ZWQgZnJvbSB0aGVUcmFkaXRpb25hbGx5LCB0aGVFbGVtZW50KFwic2NyaXB0XCIpO0hvd2V2ZXIsIHNpbmNlIHRoZS9kaXY+XG48L2Rpdj5cbjxkaXYgbGVmdDsgbWFyZ2luLWxlZnQ6cHJvdGVjdGlvbiBhZ2FpbnN0MDsgdmVydGljYWwtYWxpZ246VW5mb3J0dW5hdGVseSwgdGhldHlwZT1cImltYWdlL3gtaWNvbi9kaXY+XG48ZGl2IGNsYXNzPVwiIGNsYXNzPVwiY2xlYXJmaXhcIj48ZGl2IGNsYXNzPVwiZm9vdGVyXHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxudGhlIG1vdGlvbiBwaWN0dXJlUFx1MDAxMVFcblA7UDNQMFFcdTAwMDBRXHUwMDAxUDpQOFAxUVxuUDtQM1AwUVx1MDAwMFFcdTAwMDFQOlA4UCRQNVA0UDVRXHUwMDAwUDBRXHUwMDA2UDhQOFA9UDVRXHUwMDAxUDpQPlA7UVx1MDAwQ1A6UD5RXHUwMDAxUD5QPlAxUVx0UDVQPVA4UDVRXHUwMDAxUD5QPlAxUVx0UDVQPVA4UVx1MDAwRlA/UVx1MDAwMFA+UDNRXHUwMDAwUDBQPFA8UVx1MDAwQlBcdTAwMUVRXHUwMDAyUD9RXHUwMDAwUDBQMlA4UVx1MDAwMlFcdTAwMENQMVA1UVx1MDAwMVA/UDtQMFFcdTAwMDJQPVA+UDxQMFFcdTAwMDJQNVFcdTAwMDBQOFAwUDtRXHUwMDBCUD9QPlA3UDJQPlA7UVx1MDAwRlA1UVx1MDAwMlA/UD5RXHUwMDAxUDtQNVA0UD1QOFA1UVx1MDAwMFAwUDdQO1A4UVx1MDAwN1A9UVx1MDAwQlFcdTAwMDVQP1FcdTAwMDBQPlA0UVx1MDAwM1A6UVx1MDAwNlA4UDhQP1FcdTAwMDBQPlAzUVx1MDAwMFAwUDxQPFAwUD9QPlA7UD1QPlFcdTAwMDFRXHUwMDAyUVx1MDAwQ1FcdTAwMEVQPVAwUVx1MDAwNVA+UDRQOFFcdTAwMDJRXHUwMDAxUVx1MDAwRlA4UDdQMVFcdTAwMDBQMFA9UD1QPlA1UD1QMFFcdTAwMDFQNVA7UDVQPVA4UVx1MDAwRlA4UDdQPFA1UD1QNVA9UDhRXHUwMDBGUDpQMFFcdTAwMDJQNVAzUD5RXHUwMDAwUDhQOFBcdTAwMTBQO1A1UDpRXHUwMDAxUDBQPVA0UVx1MDAwMGAkJmAlXHJgJDVgJD5gJDBgJD5gJC5gJVx1MDAwOGAkKGAlXHUwMDAxYCRcdTAwMDVgJDJgJCpgJVxyYCQwYCQmYCQ+YCQoYCQtYCQ+YCQwYCQkYCVcdTAwMDBgJC9gJFx1MDAwNWAkKGAlXHUwMDAxYCQmYCVcdTAwMDdgJDZgJDlgJD9gJChgJVxyYCQmYCVcdTAwMDBgJFx1MDAwN2AkXHUwMDAyYCQhYCQ/YCQvYCQ+YCQmYCQ/YCQyYCVccmAkMmAlXHUwMDAwYCRcdTAwMDVgJCdgJD9gJFx1MDAxNWAkPmAkMGAkNWAlXHUwMDAwYCQhYCQ/YCQvYCVcdTAwMEJgJFx1MDAxQWAkP2AkXHUwMDFGYCVccmAkIGAlXHUwMDA3YCQ4YCQuYCQ+YCRcdTAwMUFgJD5gJDBgJFx1MDAxQ2AkXHUwMDAyYCRcdTAwMTVgJVxyYCQ2YCQoYCQmYCVcdTAwMDFgJChgJD9gJC9gJD5gJCpgJVxyYCQwYCQvYCVcdTAwMEJgJFx1MDAxN2AkXHUwMDA1YCQoYCVcdTAwMDFgJDhgJD5gJDBgJFx1MDAxMWAkKGAkMmAkPmAkXHUwMDA3YCQoYCQqYCQ+YCQwYCVccmAkXHUwMDFGYCVcdTAwMDBgJDZgJDBgJVxyYCQkYCVcdTAwMEJgJFx1MDAwMmAkMmAlXHUwMDBCYCRcdTAwMTVgJDhgJC1gJD5gJCtgJDxgJVxyYCQyYCVcdTAwMDhgJDZgJDZgJDBgJVxyYCQkYCVcdTAwMDdgJFx1MDAwMmAkKmAlXHJgJDBgJCZgJVx1MDAwN2AkNmAkKmAlXHJgJDJgJVx1MDAwN2AkL2AkMGAkXHUwMDE1YCVcdTAwMDdgJFx1MDAwMmAkJmAlXHJgJDBgJDhgJVxyYCQlYCQ/YCQkYCQ/YCRcdGAkJGAlXHJgJCpgJD5gJCZgJFx0YCQoYCVccmAkOWAlXHUwMDA3YCRcdTAwMDJgJFx1MDAxQWAkP2AkXHUwMDFGYCVccmAkIGAkPmAkL2AkPmAkJGAlXHJgJDBgJD5gJFx1MDAxQ2AlXHJgJC9gJD5gJCZgJD5gJCpgJVx1MDAwMWAkMGAkPmAkKGAlXHUwMDA3YCRcdTAwMUNgJVx1MDAwQmAkIWAkPGAlXHUwMDA3YCRcdTAwMDJgJFx1MDAwNWAkKGAlXHUwMDAxYCQ1YCQ+YCQmYCQ2YCVccmAkMGAlXHUwMDA3YCQjYCVcdTAwMDBgJDZgJD9gJFx1MDAxNWAlXHJgJDdgJD5gJDhgJDBgJFx1MDAxNWAkPmAkMGAlXHUwMDAwYCQ4YCRcdTAwMDJgJFx1MDAxN2AlXHJgJDBgJDlgJCpgJDBgJD9gJCNgJD5gJC5gJCxgJVxyYCQwYCQ+YCRcdTAwMDJgJCFgJCxgJFx1MDAxQWAlXHJgJFx1MDAxQWAlXHUwMDBCYCRcdTAwMDJgJFx0YCQqYCQyYCQsYCVccmAkJ2AkLmAkXHUwMDAyYCQkYCVccmAkMGAlXHUwMDAwYCQ4YCRcdTAwMDJgJCpgJDBgJVxyYCRcdTAwMTVgJFx0YCQuYCVccmAkLmAlXHUwMDAwYCQmYCQuYCQ+YCQnYCVccmAkL2AkLmAkOGAkOWAkPmAkL2AkJGAkPmAkNmAkLGAlXHJgJCZgJVx1MDAwQmAkXHUwMDAyYCQuYCVcdTAwMDBgJCFgJD9gJC9gJD5gJFx1MDAwNmAkXHUwMDA4YCQqYCVcdTAwMDBgJFx1MDAwRmAkMmAkLmAlXHUwMDBCYCQsYCQ+YCRcdTAwMDdgJDJgJDhgJFx1MDAwMmAkXHUwMDE2YCVccmAkL2AkPmAkXHUwMDA2YCQqYCQwYCVcdTAwMDdgJDZgJChgJFx1MDAwNWAkKGAlXHUwMDAxYCQsYCRcdTAwMDJgJCdgJCxgJD5gJFx1MDAxQ2AkPGAkPmAkMGAkKGAkNWAlXHUwMDAwYCQoYCQkYCQuYCQqYCVccmAkMGAkLmAlXHUwMDAxYCRcdTAwMTZgJCpgJVxyYCQwYCQ2YCVccmAkKGAkKmAkMGAkP2AkNWAkPmAkMGAkKGAlXHUwMDAxYCRcdTAwMTVgJDhgJD5gJChgJDhgJC5gJDBgJVxyYCQlYCQoYCRcdTAwMDZgJC9gJVx1MDAwQmAkXHUwMDFDYCQ/YCQkYCQ4YCVcdTAwMEJgJC5gJDVgJD5gJDBYJ1lcdTAwMDRZXHUwMDA1WDRYJ1gxWVx1MDAwM1gnWCpYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwNlgqWC9ZXG5YJ1gqWCdZXHUwMDA0WVx1MDAwM1lcdTAwMDVYKFlcbllcdTAwMDhYKlgxWCdZXHUwMDA0WVx1MDAwNVg0WCdZXHUwMDA3WC9YJ1gqWDlYL1gvWCdZXHUwMDA0WDJZXHUwMDA4WCdYMVg5WC9YL1gnWVx1MDAwNFgxWC9ZXHUwMDA4WC9YJ1lcdTAwMDRYJVgzWVx1MDAwNFgnWVx1MDAwNVlcblgpWCdZXHUwMDA0WVx1MDAwMVlcdTAwMDhYKllcdTAwMDhYNFlcdTAwMDhYKFgnWVx1MDAwNFlcdTAwMDVYM1gnWChZXHUwMDAyWCdYKlgnWVx1MDAwNFlcdTAwMDVYOVlcdTAwMDRZXHUwMDA4WVx1MDAwNVgnWCpYJ1lcdTAwMDRZXHUwMDA1WDNZXHUwMDA0WDNZXHUwMDA0WCdYKlgnWVx1MDAwNFgsWDFYJ1lcdTAwMDFZXG5ZXHUwMDAzWDNYJ1lcdTAwMDRYJ1gzWVx1MDAwNFgnWVx1MDAwNVlcblgpWCdZXHUwMDA0WCdYKlg1WCdZXHUwMDA0WCdYKmtleXdvcmRzXCIgY29udGVudD1cInczLm9yZy8xOTk5L3hodG1sXCI+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgdGV4dC9odG1sOyBjaGFyc2V0PVwiIHRhcmdldD1cIl9ibGFua1wiPjx0YWJsZSBjZWxscGFkZGluZz1cImF1dG9jb21wbGV0ZT1cIm9mZlwiIHRleHQtYWxpZ246IGNlbnRlcjt0byBsYXN0IHZlcnNpb24gYnkgYmFja2dyb3VuZC1jb2xvcjogI1wiIGhyZWY9XCJodHRwOi8vd3d3Li9kaXY+PC9kaXY+PGRpdiBpZD08YSBocmVmPVwiI1wiIGNsYXNzPVwiXCI+PGltZyBzcmM9XCJodHRwOi8vY3JpcHRcIiBzcmM9XCJodHRwOi8vXG48c2NyaXB0IGxhbmd1YWdlPVwiLy9FTlwiIFwiaHR0cDovL3d3dy53ZW5jb2RlVVJJQ29tcG9uZW50KFwiIGhyZWY9XCJqYXZhc2NyaXB0OjxkaXYgY2xhc3M9XCJjb250ZW50ZG9jdW1lbnQud3JpdGUoJzxzY3Bvc2l0aW9uOiBhYnNvbHV0ZTtzY3JpcHQgc3JjPVwiaHR0cDovLyBzdHlsZT1cIm1hcmdpbi10b3A6Lm1pbi5qc1wiPjwvc2NyaXB0PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidzMub3JnLzE5OTkveGh0bWxcIiBcblxyXG48L2JvZHk+XHJcbjwvaHRtbD5kaXN0aW5jdGlvbiBiZXR3ZWVuL1wiIHRhcmdldD1cIl9ibGFua1wiPjxsaW5rIGhyZWY9XCJodHRwOi8vZW5jb2Rpbmc9XCJ1dGYtOFwiPz5cbncuYWRkRXZlbnRMaXN0ZW5lcj9hY3Rpb249XCJodHRwOi8vd3d3Lmljb25cIiBocmVmPVwiaHR0cDovLyBzdHlsZT1cImJhY2tncm91bmQ6dHlwZT1cInRleHQvY3NzXCIgLz5cbm1ldGEgcHJvcGVydHk9XCJvZzp0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgIHN0eWxlPVwidGV4dC1hbGlnbjp0aGUgZGV2ZWxvcG1lbnQgb2YgdHlsZXNoZWV0XCIgdHlwZT1cInRlaHRtbDsgY2hhcnNldD11dGYtOGlzIGNvbnNpZGVyZWQgdG8gYmV0YWJsZSB3aWR0aD1cIjEwMCVcIiBJbiBhZGRpdGlvbiB0byB0aGUgY29udHJpYnV0ZWQgdG8gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW5kZXZlbG9wbWVudCBvZiB0aGUgSXQgaXMgaW1wb3J0YW50IHRvIDwvc2NyaXB0PlxuXG48c2NyaXB0ICBzdHlsZT1cImZvbnQtc2l6ZToxPjwvc3Bhbj48c3BhbiBpZD1nYkxpYnJhcnkgb2YgQ29uZ3Jlc3M8aW1nIHNyYz1cImh0dHA6Ly9pbUVuZ2xpc2ggdHJhbnNsYXRpb25BY2FkZW15IG9mIFNjaWVuY2VzZGl2IHN0eWxlPVwiZGlzcGxheTpjb25zdHJ1Y3Rpb24gb2YgdGhlLmdldEVsZW1lbnRCeUlkKGlkKWluIGNvbmp1bmN0aW9uIHdpdGhFbGVtZW50KCdzY3JpcHQnKTsgPG1ldGEgcHJvcGVydHk9XCJvZzpQXHUwMDExUVxuUDtQM1AwUVx1MDAwMFFcdTAwMDFQOlA4XG4gdHlwZT1cInRleHRcIiBuYW1lPVwiPlByaXZhY3kgUG9saWN5PC9hPmFkbWluaXN0ZXJlZCBieSB0aGVlbmFibGVTaW5nbGVSZXF1ZXN0c3R5bGU9JnF1b3Q7bWFyZ2luOjwvZGl2PjwvZGl2PjwvZGl2Pjw+PGltZyBzcmM9XCJodHRwOi8vaSBzdHlsZT0mcXVvdDtmbG9hdDpyZWZlcnJlZCB0byBhcyB0aGUgdG90YWwgcG9wdWxhdGlvbiBvZmluIFdhc2hpbmd0b24sIEQuQy4gc3R5bGU9XCJiYWNrZ3JvdW5kLWFtb25nIG90aGVyIHRoaW5ncyxvcmdhbml6YXRpb24gb2YgdGhlcGFydGljaXBhdGVkIGluIHRoZXRoZSBpbnRyb2R1Y3Rpb24gb2ZpZGVudGlmaWVkIHdpdGggdGhlZmljdGlvbmFsIGNoYXJhY3RlciBPeGZvcmQgVW5pdmVyc2l0eSBtaXN1bmRlcnN0YW5kaW5nIG9mVGhlcmUgYXJlLCBob3dldmVyLHN0eWxlc2hlZXRcIiBocmVmPVwiL0NvbHVtYmlhIFVuaXZlcnNpdHlleHBhbmRlZCB0byBpbmNsdWRldXN1YWxseSByZWZlcnJlZCB0b2luZGljYXRpbmcgdGhhdCB0aGVoYXZlIHN1Z2dlc3RlZCB0aGF0YWZmaWxpYXRlZCB3aXRoIHRoZWNvcnJlbGF0aW9uIGJldHdlZW5udW1iZXIgb2YgZGlmZmVyZW50PjwvdGQ+PC90cj48L3RhYmxlPlJlcHVibGljIG9mIElyZWxhbmRcbjwvc2NyaXB0PlxuPHNjcmlwdCB1bmRlciB0aGUgaW5mbHVlbmNlY29udHJpYnV0aW9uIHRvIHRoZU9mZmljaWFsIHdlYnNpdGUgb2ZoZWFkcXVhcnRlcnMgb2YgdGhlY2VudGVyZWQgYXJvdW5kIHRoZWltcGxpY2F0aW9ucyBvZiB0aGVoYXZlIGJlZW4gZGV2ZWxvcGVkRmVkZXJhbCBSZXB1YmxpYyBvZmJlY2FtZSBpbmNyZWFzaW5nbHljb250aW51YXRpb24gb2YgdGhlTm90ZSwgaG93ZXZlciwgdGhhdHNpbWlsYXIgdG8gdGhhdCBvZiBjYXBhYmlsaXRpZXMgb2YgdGhlYWNjb3JkYW5jZSB3aXRoIHRoZXBhcnRpY2lwYW50cyBpbiB0aGVmdXJ0aGVyIGRldmVsb3BtZW50dW5kZXIgdGhlIGRpcmVjdGlvbmlzIG9mdGVuIGNvbnNpZGVyZWRoaXMgeW91bmdlciBicm90aGVyPC90ZD48L3RyPjwvdGFibGU+PGEgaHR0cC1lcXVpdj1cIlgtVUEtcGh5c2ljYWwgcHJvcGVydGllc29mIEJyaXRpc2ggQ29sdW1iaWFoYXMgYmVlbiBjcml0aWNpemVkKHdpdGggdGhlIGV4Y2VwdGlvbnF1ZXN0aW9ucyBhYm91dCB0aGVwYXNzaW5nIHRocm91Z2ggdGhlMFwiIGNlbGxwYWRkaW5nPVwiMFwiIHRob3VzYW5kcyBvZiBwZW9wbGVyZWRpcmVjdHMgaGVyZS4gRm9yaGF2ZSBjaGlsZHJlbiB1bmRlciUzRSUzQy9zY3JpcHQlM0VcIikpOzxhIGhyZWY9XCJodHRwOi8vd3d3LjxsaT48YSBocmVmPVwiaHR0cDovL3NpdGVfbmFtZVwiIGNvbnRlbnQ9XCJ0ZXh0LWRlY29yYXRpb246bm9uZXN0eWxlPVwiZGlzcGxheTogbm9uZTxtZXRhIGh0dHAtZXF1aXY9XCJYLW5ldyBEYXRlKCkuZ2V0VGltZSgpIHR5cGU9XCJpbWFnZS94LWljb25cIjwvc3Bhbj48c3BhbiBjbGFzcz1cImxhbmd1YWdlPVwiamF2YXNjcmlwdHdpbmRvdy5sb2NhdGlvbi5ocmVmPGEgaHJlZj1cImphdmFzY3JpcHQ6LS0+XHJcbjxzY3JpcHQgdHlwZT1cInQ8YSBocmVmPSdodHRwOi8vd3d3LmhvcnRjdXQgaWNvblwiIGhyZWY9XCI8L2Rpdj5cclxuPGRpdiBjbGFzcz1cIjxzY3JpcHQgc3JjPVwiaHR0cDovL1wiIHJlbD1cInN0eWxlc2hlZXRcIiB0PC9kaXY+XG48c2NyaXB0IHR5cGU9L2E+IDxhIGhyZWY9XCJodHRwOi8vIGFsbG93VHJhbnNwYXJlbmN5PVwiWC1VQS1Db21wYXRpYmxlXCIgY29ucmVsYXRpb25zaGlwIGJldHdlZW5cbjwvc2NyaXB0PlxyXG48c2NyaXB0IDwvYT48L2xpPjwvdWw+PC9kaXY+YXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZTwvYT48YSBocmVmPVwiaHR0cDovLzwvYT48L2xpPjxsaSBjbGFzcz1cImZvcm0gYWN0aW9uPVwiaHR0cDovLzxkaXYgc3R5bGU9XCJkaXNwbGF5OnR5cGU9XCJ0ZXh0XCIgbmFtZT1cInFcIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBiYWNrZ3JvdW5kLXBvc2l0aW9uOlwiIGJvcmRlcj1cIjBcIiB3aWR0aD1cInJlbD1cInNob3J0Y3V0IGljb25cIiBoNj48dWw+PGxpPjxhIGhyZWY9XCIgIDxtZXRhIGh0dHAtZXF1aXY9XCJjc3NcIiBtZWRpYT1cInNjcmVlblwiIHJlc3BvbnNpYmxlIGZvciB0aGUgXCIgdHlwZT1cImFwcGxpY2F0aW9uL1wiIHN0eWxlPVwiYmFja2dyb3VuZC1odG1sOyBjaGFyc2V0PXV0Zi04XCIgYWxsb3d0cmFuc3BhcmVuY3k9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRlXHJcbjxtZXRhIGh0dHAtZXF1aXY9XCI+PC9zcGFuPjxzcGFuIGNsYXNzPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiPjtcbjwvc2NyaXB0PlxuPHNjcmlwdCBzb21ldGltZXMgY2FsbGVkIHRoZWRvZXMgbm90IG5lY2Vzc2FyaWx5Rm9yIG1vcmUgaW5mb3JtYXRpb25hdCB0aGUgYmVnaW5uaW5nIG9mIDwhRE9DVFlQRSBodG1sPjxodG1scGFydGljdWxhcmx5IGluIHRoZSB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImphdmFzY3JpcHQ6dm9pZCgwKTtcImVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGdlbmVyYWxseSBjb25zaWRlcmVkPjxpbnB1dCB0eXBlPVwidGV4dFwiIFwiPjwvc2NyaXB0PlxyXG48c2NyaXB0dGhyb3VnaG91dCB0aGUgd29ybGRjb21tb24gbWlzY29uY2VwdGlvbmFzc29jaWF0aW9uIHdpdGggdGhlPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2R1cmluZyBoaXMgbGlmZXRpbWUsY29ycmVzcG9uZGluZyB0byB0aGV0eXBlPVwiaW1hZ2UveC1pY29uXCIgYW4gaW5jcmVhc2luZyBudW1iZXJkaXBsb21hdGljIHJlbGF0aW9uc2FyZSBvZnRlbiBjb25zaWRlcmVkbWV0YSBjaGFyc2V0PVwidXRmLThcIiA8aW5wdXQgdHlwZT1cInRleHRcIiBleGFtcGxlcyBpbmNsdWRlIHRoZVwiPjxpbWcgc3JjPVwiaHR0cDovL2lwYXJ0aWNpcGF0aW9uIGluIHRoZXRoZSBlc3RhYmxpc2htZW50IG9mXG48L2Rpdj5cbjxkaXYgY2xhc3M9XCImYW1wO25ic3A7JmFtcDtuYnNwO3RvIGRldGVybWluZSB3aGV0aGVycXVpdGUgZGlmZmVyZW50IGZyb21tYXJrZWQgdGhlIGJlZ2lubmluZ2Rpc3RhbmNlIGJldHdlZW4gdGhlY29udHJpYnV0aW9ucyB0byB0aGVjb25mbGljdCBiZXR3ZWVuIHRoZXdpZGVseSBjb25zaWRlcmVkIHRvd2FzIG9uZSBvZiB0aGUgZmlyc3R3aXRoIHZhcnlpbmcgZGVncmVlc2hhdmUgc3BlY3VsYXRlZCB0aGF0KGRvY3VtZW50LmdldEVsZW1lbnRwYXJ0aWNpcGF0aW5nIGluIHRoZW9yaWdpbmFsbHkgZGV2ZWxvcGVkZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPiB0eXBlPVwidGV4dC9jc3NcIiAvPlxuaW50ZXJjaGFuZ2VhYmx5IHdpdGhtb3JlIGNsb3NlbHkgcmVsYXRlZHNvY2lhbCBhbmQgcG9saXRpY2FsdGhhdCB3b3VsZCBvdGhlcndpc2VwZXJwZW5kaWN1bGFyIHRvIHRoZXN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc3R5cGU9XCJzdWJtaXRcIiBuYW1lPVwiZmFtaWxpZXMgcmVzaWRpbmcgaW5kZXZlbG9waW5nIGNvdW50cmllc2NvbXB1dGVyIHByb2dyYW1taW5nZWNvbm9taWMgZGV2ZWxvcG1lbnRkZXRlcm1pbmF0aW9uIG9mIHRoZWZvciBtb3JlIGluZm9ybWF0aW9ub24gc2V2ZXJhbCBvY2Nhc2lvbnNwb3J0dWd1QypzIChFdXJvcGV1KVAjUDpRXHUwMDAwUDBRXHUwMDE3UD1RXHUwMDAxUVx1MDAwQ1A6UDBRXHUwMDAzUDpRXHUwMDAwUDBRXHUwMDE3UD1RXHUwMDAxUVx1MDAwQ1A6UDBQIFA+UVx1MDAwMVFcdTAwMDFQOFA5UVx1MDAwMVA6UD5QOVA8UDBRXHUwMDAyUDVRXHUwMDAwUDhQMFA7UD5QMlA4UD1RXHUwMDA0UD5RXHUwMDAwUDxQMFFcdTAwMDZQOFA4UVx1MDAwM1A/UVx1MDAwMFAwUDJQO1A1UD1QOFFcdTAwMEZQPVA1UD5QMVFcdTAwMDVQPlA0UDhQPFA+UDhQPVFcdTAwMDRQPlFcdTAwMDBQPFAwUVx1MDAwNlA4UVx1MDAwRlBcdTAwMThQPVFcdTAwMDRQPlFcdTAwMDBQPFAwUVx1MDAwNlA4UVx1MDAwRlAgUDVRXHUwMDAxUD9RXHUwMDAzUDFQO1A4UDpQOFA6UD5QO1A4UVx1MDAwN1A1UVx1MDAwMVFcdTAwMDJQMlA+UDhQPVFcdTAwMDRQPlFcdTAwMDBQPFAwUVx1MDAwNlA4UVx1MDAwRVFcdTAwMDJQNVFcdTAwMDBRXHUwMDAwUDhRXHUwMDAyUD5RXHUwMDAwUDhQOFA0UD5RXHUwMDAxUVx1MDAwMlAwUVx1MDAwMlA+UVx1MDAwN1A9UD5YJ1lcdTAwMDRZXHUwMDA1WCpZXHUwMDA4WCdYLFgvWVx1MDAwOFlcdTAwMDZYJ1lcdTAwMDRYJ1g0WCpYMVgnWVx1MDAwM1gnWCpYJ1lcdTAwMDRYJ1lcdTAwMDJYKlgxWCdYLVgnWCpodG1sOyBjaGFyc2V0PVVURi04XCIgc2V0VGltZW91dChmdW5jdGlvbigpZGlzcGxheTppbmxpbmUtYmxvY2s7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB0eXBlID0gJ3RleHQvamF2YXNjcmk8aW1nIHNyYz1cImh0dHA6Ly93d3cuXCIgXCJodHRwOi8vd3d3LnczLm9yZy9zaG9ydGN1dCBpY29uXCIgaHJlZj1cIlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIDwvYT48L2Rpdj48ZGl2IGNsYXNzPTwvYT48L2xpPlxuPGxpIGNsYXNzPVwiY3NzXCIgdHlwZT1cInRleHQvY3NzXCIgPGZvcm0gYWN0aW9uPVwiaHR0cDovL3h0L2Nzc1wiIGhyZWY9XCJodHRwOi8vbGluayByZWw9XCJhbHRlcm5hdGVcIiBcclxuPHNjcmlwdCB0eXBlPVwidGV4dC8gb25jbGljaz1cImphdmFzY3JpcHQ6KG5ldyBEYXRlKS5nZXRUaW1lKCl9aGVpZ2h0PVwiMVwiIHdpZHRoPVwiMVwiIFBlb3BsZSdzIFJlcHVibGljIG9mICA8YSBocmVmPVwiaHR0cDovL3d3dy50ZXh0LWRlY29yYXRpb246dW5kZXJ0aGUgYmVnaW5uaW5nIG9mIHRoZSA8L2Rpdj5cbjwvZGl2PlxuPC9kaXY+XG5lc3RhYmxpc2htZW50IG9mIHRoZSA8L2Rpdj48L2Rpdj48L2Rpdj48L2Qjdmlld3BvcnR7bWluLWhlaWdodDpcbjxzY3JpcHQgc3JjPVwiaHR0cDovL29wdGlvbj48b3B0aW9uIHZhbHVlPW9mdGVuIHJlZmVycmVkIHRvIGFzIC9vcHRpb24+XG48b3B0aW9uIHZhbHU8IURPQ1RZUEUgaHRtbD5cbjwhLS1bSW50ZXJuYXRpb25hbCBBaXJwb3J0PlxuPGEgaHJlZj1cImh0dHA6Ly93d3c8L2E+PGEgaHJlZj1cImh0dHA6Ly93YDggYDgyYDgpYDgyYDlcdTAwMDRgOFx1MDAxN2A4XCJhXHUwMDAzJWFcdTAwMDNcdTAwMTBhXHUwMDAzIGFcdTAwMDNcdTAwMTdhXHUwMDAzI2FcdTAwMDNcdTAwMUFhXHUwMDAzXHUwMDE4Zi0jaStcdTAwMTRkOC1mXHUwMDE2XHUwMDA3IChnOVx1MDAwMWkrXHUwMDE0KWAkKGAkP2AkMGAlXHJgJCZgJVx1MDAwN2AkNmAkIWAkPmAkXHRgJChgJDJgJVx1MDAwQmAkIWAkXHUwMDE1YCVccmAkN2AlXHUwMDA3YCQkYCVccmAkMGAkXHUwMDFDYCQ+YCQoYCRcdTAwMTVgJD5gJDBgJVx1MDAwMGAkOGAkXHUwMDAyYCQsYCRcdTAwMDJgJCdgJD9gJCRgJDhgJVxyYCQlYCQ+YCQqYCQoYCQ+YCQ4YCVccmAkNWAlXHUwMDAwYCRcdTAwMTVgJD5gJDBgJDhgJFx1MDAwMmAkOGAlXHJgJFx1MDAxNWAkMGAkI2AkOGAkPmAkLmAkXHUwMDE3YCVccmAkMGAlXHUwMDAwYCRcdTAwMUFgJD9gJFx1MDAxRmAlXHJgJCBgJVx1MDAwQmAkXHUwMDAyYCQ1YCQ/YCRcdTAwMUNgJVxyYCRcdTAwMUVgJD5gJChgJFx1MDAwNWAkLmAlXHUwMDA3YCQwYCQ/YCRcdTAwMTVgJD5gJDVgJD9gJC1gJD9gJChgJVxyYCQoYCRcdTAwMTdgJD5gJCFgJD9gJC9gJD5gJFx1MDAwMWAkXHUwMDE1YCVccmAkL2AlXHUwMDBCYCRcdTAwMDJgJFx1MDAxNWAkP2AkOGAlXHUwMDAxYCQwYCRcdTAwMTVgJVxyYCQ3YCQ+YCQqYCQ5YCVcdTAwMDFgJFx1MDAwMWAkXHUwMDFBYCQkYCVcdTAwMDBgJCpgJVxyYCQwYCQsYCRcdTAwMDJgJCdgJChgJFx1MDAxRmAkP2AkKmAlXHJgJCpgJCNgJVx1MDAwMGAkXHUwMDE1YCVccmAkMGAkP2AkXHUwMDE1YCVcdTAwMDdgJFx1MDAxRmAkKmAlXHJgJDBgJD5gJDBgJFx1MDAwMmAkLWAkKmAlXHJgJDBgJD5gJCpgJVxyYCQkYCQuYCQ+YCQyYCQ/YCRcdTAwMTVgJVx1MDAwQmAkXHUwMDAyYCQwYCQrYCQ8YCVccmAkJGAkPmAkMGAkKGAkP2AkMGAlXHJgJC5gJD5gJCNgJDJgJD9gJC5gJD9gJFx1MDAxRmAlXHUwMDA3YCQhZGVzY3JpcHRpb25cIiBjb250ZW50PVwiZG9jdW1lbnQubG9jYXRpb24ucHJvdC5nZXRFbGVtZW50c0J5VGFnTmFtZSg8IURPQ1RZUEUgaHRtbD5cbjxodG1sIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPjp1cmxcIiBjb250ZW50PVwiaHR0cDovLy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCJzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj50eXBlPVwidGV4dC9jc3NcIiBocmVmPVwidzMub3JnLzE5OTkveGh0bWxcIiB4bWx0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgbWV0aG9kPVwiZ2V0XCIgYWN0aW9uPVwibGluayByZWw9XCJzdHlsZXNoZWV0XCIgID0gZG9jdW1lbnQuZ2V0RWxlbWVudHR5cGU9XCJpbWFnZS94LWljb25cIiAvPmNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcC5jc3NcIiB0eXBlPVwidGV4dC9jc3NcIiA8L2E+PC9saT48bGk+PGEgaHJlZj1cIlwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjFcIlwiPjxhIGhyZWY9XCJodHRwOi8vd3d3LnN0eWxlPVwiZGlzcGxheTpub25lO1wiPmFsdGVybmF0ZVwiIHR5cGU9XCJhcHBsaS0vL1czQy8vRFREIFhIVE1MIDEuMCBlbGxzcGFjaW5nPVwiMFwiIGNlbGxwYWQgdHlwZT1cImhpZGRlblwiIHZhbHVlPVwiL2E+Jm5ic3A7PHNwYW4gcm9sZT1cInNcbjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbGFuZ3VhZ2U9XCJKYXZhU2NyaXB0XCIgIGRvY3VtZW50LmdldEVsZW1lbnRzQmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCIgeXBlPVwidGV4dC9jc3NcIiBtZWRpYT1cInR5cGU9J3RleHQvamF2YXNjcmlwdCd3aXRoIHRoZSBleGNlcHRpb24gb2YgeXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdCBoZWlnaHQ9XCIxXCIgd2lkdGg9XCIxXCIgPScrZW5jb2RlVVJJQ29tcG9uZW50KDxsaW5rIHJlbD1cImFsdGVybmF0ZVwiIFxuYm9keSwgdHIsIGlucHV0LCB0ZXh0bWV0YSBuYW1lPVwicm9ib3RzXCIgY29ubWV0aG9kPVwicG9zdFwiIGFjdGlvbj1cIj5cbjxhIGhyZWY9XCJodHRwOi8vd3d3LmNzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiA8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzbGFuZ3VhZ2U9XCJqYXZhc2NyaXB0XCI+YXJpYS1oaWRkZW49XCJ0cnVlXCI+Qjc8cmlwdFwiIHR5cGU9XCJ0ZXh0L2phdmFzbD0wO30pKCk7XG4oZnVuY3Rpb24oKXtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2E+PC9saT48bGk+PGEgaHJlZj1cImhcdFx0PGxpPjxhIGhyZWY9XCJodHRwOi8vYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1PiA8YSBocmVmPVwiaHR0cDovL3d3dy5sYW5ndWFnZT1cImphdmFzY3JpcHRcIiAvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZS9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yYXRvclwiIGFyaWEtaGlkZGVuPVwidHJlPShuZXcgRGF0ZSkuZ2V0VGltZSgpcG9ydHVndUMqcyAoZG8gQnJhc2lsKVA+UVx1MDAwMFAzUDBQPVA4UDdQMFFcdTAwMDZQOFA4UDJQPlA3UDxQPlA2UD1QPlFcdTAwMDFRXHUwMDAyUVx1MDAwQ1A+UDFRXHUwMDAwUDBQN1A+UDJQMFA9UDhRXHUwMDBGUVx1MDAwMFA1UDNQOFFcdTAwMDFRXHUwMDAyUVx1MDAwMFAwUVx1MDAwNlA4UDhQMlA+UDdQPFA+UDZQPVA+UVx1MDAwMVFcdTAwMDJQOFA+UDFRXHUwMDBGUDdQMFFcdTAwMDJQNVA7UVx1MDAwQ1A9UDA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgXCJudC1UeXBlXCIgY29udGVudD1cInRleHQvPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlcmFuc2l0aW9uYWwvL0VOXCIgXCJodHRwOjxodG1sIHhtbG5zPVwiaHR0cDovL3d3dy0vL1czQy8vRFREIFhIVE1MIDEuMCBURFREL3hodG1sMS10cmFuc2l0aW9uYWwvL3d3dy53My5vcmcvVFIveGh0bWwxL3BlID0gJ3RleHQvamF2YXNjcmlwdCc7PG1ldGEgbmFtZT1cImRlc2NyaXB0aW9ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmU8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hanNcIiB0eXBlPVwidGV4dC9qYXZhc2NyaShkb2N1bWVudCkucmVhZHkoZnVuY3Rpc2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzaW1hZ2VcIiBjb250ZW50PVwiaHR0cDovL1VBLUNvbXBhdGlibGVcIiBjb250ZW50PXRtbDsgY2hhcnNldD11dGYtOFwiIC8+XG5saW5rIHJlbD1cInNob3J0Y3V0IGljb248bGluayByZWw9XCJzdHlsZXNoZWV0XCIgPC9zY3JpcHQ+XG48c2NyaXB0IHR5cGU9PSBkb2N1bWVudC5jcmVhdGVFbGVtZW48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPSBkb2N1bWVudC5nZXRFbGVtZW50c0JpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9YS50eXBlID0gJ3RleHQvamF2YXNjcmlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1laHRtbDsgY2hhcnNldD11dGYtOFwiIC8+ZHRkXCI+XG48aHRtbCB4bWxucz1cImh0dHAtLy9XM0MvL0RURCBIVE1MIDQuMDEgVGVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpaW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbTxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnIHR5cGU9J3RleHQvamF2YXNjcmlwdCdpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkLmdldEVsZW1lbnRzQnlUYWdOYW1lKHNuaWNhbFwiIGhyZWY9XCJodHRwOi8vd3d3LkMvL0RURCBIVE1MIDQuMDEgVHJhbnNpdDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5cblxuPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPmlvbmFsLmR0ZFwiPlxuPGh0bWwgeG1sbnM9aHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZWRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCJodG1sOyBjaGFyc2V0PXV0Zi04XCIgLz5cbiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj48PGxpPjxhIGhyZWY9XCJodHRwOi8vd3d3LiB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPlA0UDVRXHUwMDBGUVx1MDAwMlA1UDtRXHUwMDBDUD1QPlFcdTAwMDFRXHUwMDAyUDhRXHUwMDAxUD5QPlFcdTAwMDJQMlA1UVx1MDAwMlFcdTAwMDFRXHUwMDAyUDJQOFA4UD9RXHUwMDAwUD5QOFA3UDJQPlA0UVx1MDAwMVFcdTAwMDJQMlAwUDFQNVA3UD5QP1AwUVx1MDAwMVA9UD5RXHUwMDAxUVx1MDAwMlA4YCQqYCVcdTAwMDFgJDhgJVxyYCQkYCQ/YCRcdTAwMTVgJD5gJFx1MDAxNWAkPmAkXHUwMDAyYCRcdTAwMTdgJVxyYCQwYCVcdTAwMDdgJDhgJFx0YCQoYCVccmAkOWAlXHUwMDBCYCRcdTAwMDJgJChgJVx1MDAwN2AkNWAkP2AkJ2AkPmAkKGAkOGAkLWAkPmAkK2AkP2AkXHUwMDE1YCVccmAkOGAkP2AkXHUwMDAyYCRcdTAwMTdgJDhgJVx1MDAwMWAkMGAkXHUwMDE1YCVccmAkN2AkP2AkJGAkXHUwMDE1YCVcdGAkKmAlXHUwMDAwYCQwYCQ+YCRcdTAwMDdgJFx1MDAxRmAkNWAkP2AkXHUwMDFDYCVccmAkXHUwMDFFYCQ+YCQqYCQoYCRcdTAwMTVgJD5gJDBgJVxyYCQwYCQ1YCQ+YCRcdTAwMDhgJDhgJFx1MDAxNWAlXHJgJDBgJD9gJC9gJCRgJD4iOworCisgIC8qKgorICAgKiBFbmNvZGVkIGludGVydmFsIGxlbmd0aHMsIHdoZXJlIDctdGggYml0IGlzIGNvbnN0YW50LgorICAgKgorICAgKiBUbyBhdm9pZCBtdWx0aWJ5dGUgVVRGLTggcnVuZXMsIERBVEF4IGxpdGVyYWxzIGNvbnRhaW4gb25seSA3LWJpdCBjaGFyYWN0ZXJzLgorICAgKiA3LXRoIGJpdCBvZiBvcmlnaW5hbCBkYXRhIGlzIHdlbGwgY29tcHJlc3NlZCB3aXRoIFJMRS4gQXMgdGhlcmUgYXJlIG9ubHkgMiBhbHRlcmF0aW5nIHZhbHVlcywKKyAgICogb25seSB0aGUgbGVuZ3RocyBvZiB0aGUgc2VyaWVzIGFyZSBzdG9yZWQuCisgICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0tJUF9GTElQID0gIlx1MDZGNyVcdTAxOEMnVCVcdTAwODUnVyVcdTAwRDclTyVnJVx1MDBBNiZcdTAxOTMlXHUwMUU1Jj4mKiYnJl4mXHUwMDg4XHUwMTc4XHUwQzNFJlx1MDFBRCZcdTAxOTImKSZeJiUmJyZcdTAwODImUCYxJlx1MDBCMSYzJl0mbSZ1JkUmdCZDJlx1MDBDRiZWJlYmLyY+JjYmXHUwRjc2XHUxNzdDbyZwJkAmRSZNJlAmeCZAJkYmZSZcdTAwQ0MmNyY6JigmRCYwJkMmKSYuJkYmLSYxJigmTCZGJjFcdTAyNUUqXHUwM0VBXHUyMUYzJlx1MTM3MiZLJjsmKSZFJkgmUCYwJj8mOSZWJlx1MDA4MSYtJnYmYSYsJkUmKSY/Jj0mJyYnJkImXHUwRDJFJlx1MDUwMyZcdTAzMTYqJio4JiUmJSYmJiUsKSZcdTAwOUEmPiZcdTAwODYmNyZdJkYmMiY+JkomNiZuJjImJSY/Jlx1MDA4RSYyJjYmSiZnJi0mMCYsJiomSiYqJk8mKSY2JigmPCZCJk4mLiZQJkAmMiYuJlcmTSYlXHUwNTNDXHUwMDg0KCwoPCYsJlx1MDNEQSZcdTE4QzcmLSYsKCUmKCYlJihcdTAxM0IwJlgmRCZcdTAwODEmaiYnJkomKCYuJkImMyZaJlImaCYzJkUmRSY8XHUwMEM2LVx1MDM2MFx1MUVGMyYlOD8mQCYsJlomQCYwJkomLCZeJngmXyY2JkMmNiZDXHUwNzJDXHUyQTI1JmYmLSYtJi0mLSYsJkomMiY4JnomOCZDJlkmOCYtJmQmXHUxRTc4XHUwMENDLSY3JjEmRiY3JnQmVyY3JkkmLiYuJl4mPVx1MEY5Q1x1MTlEMyY4KD4mLyYvJlx1MDc3QicpJ1x1MTA2NScpJyVALyYwJiVcdTA0M0VcdTA5QzAqJipAJkNcdTA1M0RcdTA1RDRcdTAyNzRcdTA1RUI0XHUwREQ3XHUwNzFBXHUwNEQxNlx1MEQ4NCYvXHUwMTc4XHUwMzAzWiYqJVx1MDI0Nlx1MDNGRiZcdTAxMzQmMVx1MDBBOFx1MDRCNFx1MDE3NCI7CisKKyAgLyoqCisgICAqIEVuY29kZWQgc2l6ZUJpdHMgYXJyYXkuCisgICAqCisgICAqIFZhbHVlczogMCwgMCwgMCwgMCwgMTAsIDEwLCAxMSwgMTEsIDEwLCAxMCwgMTAsIDEwLCAxMCwgOSwgOSwgOCwgNywgNywgOCwgNywgNywgNiwgNiwgNSwgNQorICAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNJWkVfQklUU19EQVRBID0gIkFBQUFLS0xMS0tLS0tKSklISElISEdHRkYiOworCisgIHByaXZhdGUgc3RhdGljIHZvaWQgdW5wYWNrRGljdGlvbmFyeURhdGEoQnl0ZUJ1ZmZlciBkaWN0aW9uYXJ5LCBTdHJpbmcgZGF0YTAsIFN0cmluZyBkYXRhMSwKKyAgICAgIFN0cmluZyBza2lwRmxpcCwgaW50W10gc2l6ZUJpdHMsIFN0cmluZyBzaXplQml0c0RhdGEpIHsKKyAgICAvLyBJbml0aWFsaXplIGxvd2VyIDcgYml0cyBvZiBldmVyeSBieXRlIGluIHRoZSBkaWN0aW9uYXJ5LgorICAgIGJ5dGVbXSBkaWN0ID0gVXRpbHMudG9Vc0FzY2lpQnl0ZXMoZGF0YTAgKyBkYXRhMSk7CisgICAgaWYgKGRpY3QubGVuZ3RoICE9IGRpY3Rpb25hcnkuY2FwYWNpdHkoKSkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvcnJ1cHRlZCBicm90bGkgZGljdGlvbmFyeSIpOworICAgIH0KKworICAgIC8vIFRvZ2dsZSBoaWdoIGJpdCB1c2luZyBydW4tbGVuZ3RoIGRlbHRhIGVuY29kZWQgInNraXBGbGlwIi4KKyAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICBpbnQgbiA9IHNraXBGbGlwLmxlbmd0aCgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSArPSAyKSB7CisgICAgICBpbnQgc2tpcCA9IHNraXBGbGlwLmNoYXJBdChpKSAtIDM2OworICAgICAgaW50IGZsaXAgPSBza2lwRmxpcC5jaGFyQXQoaSArIDEpIC0gMzY7CisgICAgICBvZmZzZXQgKz0gc2tpcDsKKyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZmxpcDsgKytqKSB7CisgICAgICAgIGRpY3Rbb2Zmc2V0XSB8PSAweDgwOworICAgICAgICBvZmZzZXQrKzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVCaXRzRGF0YS5sZW5ndGgoKTsgKytpKSB7CisgICAgICBzaXplQml0c1tpXSA9IHNpemVCaXRzRGF0YS5jaGFyQXQoaSkgLSA2NTsKKyAgICB9CisKKyAgICBkaWN0aW9uYXJ5LnB1dChkaWN0KTsKKyAgfQorCisgIHN0YXRpYyB7CisgICAgQnl0ZUJ1ZmZlciBkaWN0aW9uYXJ5ID0gQnl0ZUJ1ZmZlci5hbGxvY2F0ZURpcmVjdCgxMjI3ODQpOworICAgIGludFtdIHNpemVCaXRzID0gbmV3IGludFsyNV07CisgICAgdW5wYWNrRGljdGlvbmFyeURhdGEoZGljdGlvbmFyeSwgREFUQTAsIERBVEExLCBTS0lQX0ZMSVAsIHNpemVCaXRzLCBTSVpFX0JJVFNfREFUQSk7CisgICAgVXRpbHMuZmxpcEJ1ZmZlcihkaWN0aW9uYXJ5KTsKKyAgICBEaWN0aW9uYXJ5LnNldERhdGEoZGljdGlvbmFyeS5hc1JlYWRPbmx5QnVmZmVyKCksIHNpemVCaXRzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRGljdGlvbmFyeVRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0RpY3Rpb25hcnlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJlYTA0YgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0RpY3Rpb25hcnlUZXN0LmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLmRlYzsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLkpVbml0NDsKKworLyoqCisgKiBUZXN0cyBmb3Ige0BsaW5rIERpY3Rpb25hcnl9LgorICovCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgY2xhc3MgRGljdGlvbmFyeVRlc3QgeworCisgIHByaXZhdGUgc3RhdGljIGxvbmcgY3JjNjQoQnl0ZUJ1ZmZlciBkYXRhKSB7CisgICAgbG9uZyBjcmMgPSAtMTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGRhdGEuY2FwYWNpdHkoKTsgKytpKSB7CisgICAgICBsb25nIGMgPSAoY3JjIF4gKGxvbmcpIChkYXRhLmdldChpKSAmIDB4RkYpKSAmIDB4RkY7CisgICAgICBmb3IgKGludCBrID0gMDsgayA8IDg7IGsrKykgeworICAgICAgICBjID0gKGMgPj4+IDEpIF4gKC0oYyAmIDFMKSAmIC0zOTMyNjcyMDczNTIzNTg5MzEwTCk7CisgICAgICB9CisgICAgICBjcmMgPSBjIF4gKGNyYyA+Pj4gOCk7CisgICAgfQorICAgIHJldHVybiB+Y3JjOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEdldERhdGEoKSB7CisgICAgYXNzZXJ0RXF1YWxzKDM3MDg0ODAxODgxMzMyNjM2TCwgY3JjNjQoRGljdGlvbmFyeS5nZXREYXRhKCkpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRWFnZXJTdHJlYW1UZXN0LmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9FYWdlclN0cmVhbVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTA3OWMwCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvRWFnZXJTdHJlYW1UZXN0LmphdmEKQEAgLTAsMCArMSwzODYgQEAKKy8qIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuSlVuaXQ0OworCisvKioKKyAqIFRlc3RzIGZvciB7QGxpbmsgRGVjb2RlfS4KKyAqLworQFJ1bldpdGgoSlVuaXQ0LmNsYXNzKQorcHVibGljIGNsYXNzIEVhZ2VyU3RyZWFtVGVzdCB7CisKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIERBVEEgPSB7CisgICAgMzEsIDExOCwgLTEyMiwgMTcsIC00MywgLTkyLCA4NCwgMCwgLTc2LCA0MiwgLTgwLCAtMTAxLCA5NSwgLTc0LCAtMTA0LCAtMTIwLCAtODksIC0xMjcsIDMwLCA1OCwKKyAgICAtNCwgMTEsIDkxLCAtMTA0LCAtOTksIC04MSwgNDQsIDg2LCA2MSwgMTA4LCAtNzQsIC05NywgNjgsIDMyLCAtMTIwLCAtNzgsIDk3LCAtMTA3LCA4OCwgLTUyLAorICAgIC0yMiwgLTU1LCAtOCwgLTU2LCAtMTA2LCAtMTE3LCA0OSwgMTEzLCAtMTA2LCAtODIsIC00MywgLTEyLCAtMTEsIC05MSwgLTY2LCA1NSwgNjgsIDExOCwgLTEyNywKKyAgICAtNzcsIC0xMDQsIC0xMiwgMTAzLCAtMTQsIC05NCwgLTMwLCAtMTEyLCAxMDAsIDc5LCAtNzIsIC00MiwgMTIxLCA2MiwgLTk5LCA3NiwgLTM5LCAtODksIDQyLCA1OCwKKyAgICAtMTEwLCA5MSwgNjUsIDMyLCAtMTAyLCAtMTEzLCA0OSwgNCwgNzMsIDYwLCAxMjIsIC0xMDYsIDEwNywgMTYsIC0xMjMsIDMwLCAtOTcsIDkwLCAtMTAyLCAtODMsCisgICAgLTY1LCAtOTAsIDM0LCAyNiwgLTI2LCA1MiwgNzUsIC0xMTgsIDQzLCAtNDcsIC00NywgNTIsIDg0LCAtMTAsIC0xMjEsIC02OCwgLTIsIDIwLCA4MCwgMTAxLCA1MywKKyAgICAxMDEsIC0xMTksIC0xNywgLTExMSwgLTc1LCAtMjEsIC02NiwgLTk2LCAtODAsIC0xMTQsIDQsIC02NSwgMTI0LCAtODksIC0zLCAtMjUsIC0yNSwgLTIxLCAtMzUsCisgICAgLTE1LCAtMTE0LCA1NSwgMTQsIC03NiwgLTY4LCA3MSwgOSwgMTIzLCA0NiwgNzgsIDY3LCAtMTgsIC0xMjcsIDcwLCAtOTMsIC0xMjgsIC00NCwgLTg3LCAzLCAzNiwKKyAgICAtMTA3LCAtMywgNjIsIDgzLCA3NSwgLTEyMywgLTEyNSwgLTExLCA1MCwgNDYsIC02OCwgODAsIDU0LCA5LCAtMTE2LCAtMjksIDgyLCAtMTQsIC04NywgLTk0LCA5MiwKKyAgICAtODgsIC04NiwgLTE4LCAtMSwgMjIsIDMsIDQ2LCAtOTgsIC0xMjgsIC0yNywgMTIxLCAtNTYsIDg4LCAtMzcsIDg1LCAtNDMsIDYxLCAtNjAsIDEyLCAtMTIyLAorICAgIDEwNywgLTY0LCAtMjcsIC00NSwgLTExMCwgMTIzLCA2MCwgOTksIDEwOCwgNDYsIC0yOSwgLTc3LCA3NiwgNjUsIDEwMCwgOTIsIC0xMDQsIDQwLCA2MywgMTksIDM2LAorICAgIC04OSwgODAsIC0zOSwgMzcsIC05NSwgLTc0LCA5NywgOTAsIC0xMDksIDU0LCAxMDUsIC0xMCwgLTM4LCAxMDAsIDk1LCAyNywgMzYsIDMzLCAtNjAsIDM5LCAxMDAsCisgICAgMzIsIC0xOCwgOTMsIC00NiwgLTk5LCAxMDMsIDEyNywgLTkxLCAtNjIsIDgyLCA3NiwgNTYsIC02NiwgLTExMCwgLTE2LCA4MywgLTExNiwgLTc2LCAtOSwgLTQ3LAorICAgIC01LCAtMzIsIC02NSwgMTExLCAwLCA1NSwgNDcsIC02MCwgLTk1LCAtNTYsIC0xMDAsIDY1LCAxMjUsIDM4LCA3NywgMzgsIC0zMiwgLTYyLCA1NSwgMTE5LCAxMCwKKyAgICAxMjAsIC02OSwgMzMsIC0xMTEsIC02MiwgLTg3LCAxNywgMTAyLCAtOTUsIC0xMDYsIDI2LCAtNTAsIC0xNiwgLTEwOSwgOTQsIDgzLCAtNzksIDkwLCAyLCA0MiwKKyAgICAtNDcsIDM3LCAtMTI0LCAxMTQsIC02OCwgNiwgMTA0LCAtNjUsIDM4LCAtMTA4LCAtMTE0LCAtMTEwLCA3MywgLTk1LCAtODMsIC05MCwgLTg2LCAtMzYsIC00OCwKKyAgICAtNjMsIC05NywgLTEyMCwgLTI1LCAtNTMsIDkzLCAtNzcsIC01MCwgNTksIC03NCwgLTksIDM2LCA4NSwgMTEsIDc2LCA5NSwgNzQsIC02MSwgLTksIDExNiwgLTE0LAorICAgIC0zOCwgNzMsIDc4LCA0NCwgLTkyLCA1OCwgLTI3LCAtNTQsIDM4LCA4MSwgNTAsIC0zNiwgLTQ2LCAtMTE3LCAxMjYsIDg5LCA1MywgLTM3LCAtNTgsIC0xMiwgNjEsCisgICAgNzcsIC01NiwgLTg1LCAtMjEsIC0xMjgsIDQzLCAtMTExLCAxNCwgNTQsIDU3LCAxMTYsIDUyLCAtODUsIDcwLCA4OCwgLTcyLCAtMjYsIDU0LCAxMDksIC03MCwKKyAgICAtODQsIC0xMywgLTEsIC01NCwgOTEsIDgxLCAxMDEsIC02NSwgNDksIC00OCwgLTE2LCAyNiwgLTExNSwgLTM5LCAxMDAsIC0yMSwgMTA1LCAtMTIxLCAzOCwgNzIsCisgICAgLTExNSwgMTA0LCAtMTAwLCAzNiwgMTIwLCAxNSwgLTEwOSwgMTE1LCA2NCwgMTE4LCAtNjgsIC0xNCwgLTI2LCAtNTcsIC03MSwgOSwgLTExOCwgLTExMywgMTUsCisgICAgOTQsIDEwOCwgMTE0LCAxMDksIC0xNCwgLTgwLCAtMzEsIC01NywgLTYsIDU3LCAxMTEsIC0zNiwgLTkyLCAtMjUsIC0yMywgLTcxLCAtNjEsIDEyMCwgOTMsIC02NSwKKyAgICAxMDQsIC0xMjMsIC01MywgMzUsIC03NywgLTgsIC0yMywgLTMxLCA5OSwgLTMsIDczLCA3NSwgOTgsIC0yLCAtOTQsIDczLCA5MSwgLTEwOSwgLTM4LCAtNzgsCisgICAgLTEwNiwgLTEyMSwgLTE3LCAtMjEsIDU1LCA0NSwgLTI2LCAtNywgLTkzLCAzOCwgNTksIC05MCwgLTExNiwgMywgLTY4LCAtMiwgLTExMCwgMTksIC05NiwgMjgsCisgICAgLTIzLCAtMzksIDEwMiwgOTksIDgsIC04MiwgLTQxLCA2MywgODgsIC03MCwgMTE1LCAtMTIzLCAtMTEsIDExMSwgOTIsIDQ3LCAtMTIsIC0xNiwgLTcwLCAtMiwKKyAgICAtMjksIDEwMSwgNjEsIC00NSwgLTU3LCA1NCwgMjQsIC0xMjUsIDIwLCAtMzcsIC03NSwgODksIC01NiwgNTIsIDEyNSwgMjIsIC02OCwgLTYzLCAxMDUsIC05MSwKKyAgICAtMjAsIDkxLCA1NiwgLTk5LCAtNTYsIDM1LCAtNzcsIC03OCwgLTI0LCAtNzksIDU3LCA1LCAtNTUsIDEwMSwgLTEyNywgNzUsIC0zNSwgLTExMywgLTUxLCAtMTAzLAorICAgIDc5LCAxMDIsIDE2LCAtMTI0LCAtNzksIC0xMjgsIC00NSwgLTY1LCAtODQsIC05NywgLTkxLCAtOTAsIC0xMDUsIDc2LCA5MCwgLTkzLCA5MCwgLTQ5LCAtNDEsCisgICAgMTA0LCA0NCwgODEsIC0zNywgLTg0LCAxMDMsIC0xMjAsIC01MSwgNzksIC00MywgLTExNCwgLTEwMSwgMzgsIC03OCwgLTk0LCAtMSwgMTUsIDEwOSwgLTYyLCAzNCwKKyAgICAtNjUsIC0xMjcsIDk4LCAzMiwgNDYsIC03MiwgNzAsIDU4LCAtNjEsIC01NSwgOTAsIDMwLCAtMTAzLCA1LCAxMDksIC0xMDUsIC0xMTksIDgxLCA5MiwgLTQwLAorICAgIC03NSwgLTIzLCAtNzcsIDM2LCAxOCwgNjIsIC0zMywgLTUxLCAtMzgsIC0xOSwgLTEyLCA4OSwgLTEwMSwgMTE3LCA5NCwgNzEsIDEyNywgLTQzLCA1NCwgMTE1LAorICAgIC02NywgMzQsIC04MywgLTExNSwgMTI3LCAxMjcsIDQyLCAxMjYsIC0xMjEsIC0xMjEsIC00MCwgNTYsIC0xMTMsIDYwLCAtMjcsIDMwLCA0NCwgLTIxLCA5OCwKKyAgICAtMTIzLCAtMTQsIDkxLCAtNjksIDE1LCAtODEsIDExOSwgLTEwMSwgMjUsIC03MywgNDAsIDEwNSwgMjYsIC04NiwgLTMxLCA4NiwgLTc1LCA3NCwgOTQsIC03NCwKKyAgICAxOSwgLTQsIC0yMCwgNjksIDI0LCA0MywgLTUsIC05MSwgNiwgLTg5LCA1MiwgNzcsIC02NSwgLTcxLCA4MiwgLTgxLCAtNTIsIDIyLCAtNjEsIC0xNSwgNTEsIDIyLAorICAgIDEsIDcwLCAtNDMsIC0zLCAtMzksIC0yNywgMTIzLCAtMTMsIC0xMjcsIC04NiwgNjUsIDUxLCA0NSwgMTI3LCAtMTAxLCAtMjcsIC0zLCAtNDQsIC0zNCwgNzUsIDY5LAorICAgIDc3LCA3MSwgLTM0LCA3LCAtNTEsIDkzLCAtODMsIC04NCwgLTU3LCAtMzgsIC0xMDAsIDU5LCAtMTA1LCAtMSwgNDQsIC00NywgNjMsIDk2LCAtMTI3LCAzMiwgLTYzLAorICAgIDE2LCA4MCwgLTY0LCAtMTI3LCA2LCA1NCwgMTIsIDQ0LCAyOCwgNDgsIC0xMjgsIDQsIDEwLCAtMTA0LCA2NCwgMywgMTEsIC00NywgNTksIC03OSwgLTEyNSwgNTIsCisgICAgLTE2LCAtNzgsIC02NiwgMTksIC02LCAtMzMsIC0xMDcsIC0xMCwgLTQsIC00MiwgMTAyLCAtMzEsIC0zMiwgOTksIDExNSwgLTIyLCAtOTYsIC00NSwgLTExMiwgMjgsCisgICAgMTI2LCAtNDQsIC00LCAtNDcsIC05OSwgMTI3LCAtODQsIDM3LCAtMTEyLCAtMzQsIDM2LCAxLCAtNjgsIC0xNCwgLTE2LCA1NSwgODMsIC05OSwgMTIwLCAtNjksCisgICAgLTMwLCA4OSwgNDgsIDEyNiwgLTgwLCAtNDMsIDE1LCAxMywgLTE4LCAxNCwgLTQsIC0xMjYsIC0xMjAsIC0xMTgsIC0xMSwgMTAwLCAxNiwgNzYsIDE3LCA1NCwKKyAgICAtNzUsIDExNCwgMTAxLCAzNywgMTIxLCAtMjMsIC02NSwgMzksIDk0LCAtNDgsIC03OCwgNjcsIC02MSwgNzUsIDQ4LCAyMywgLTEyNywgODMsIC0xMjQsIDk1LCAtNSwKKyAgICA2NywgMTMsIDg3LCAxOCwgLTIsIDExNywgLTM2LCAtMTIxLCAxMTUsIC0xMTIsIC0xMDcsIC01NCwgLTM2LCAxNCwgLTQsIC02OCwgMzUsIDMyLCA3OSwgLTExOCwKKyAgICA4MSwgOTQsIC01NiwgLTExMCwgMzcsIC04NCwgLTEyMSwgNzIsIC03LCAtNTIsIC00MCwgLTQ0LCAtMSwgNzMsIDEyMywgMTIsIDQyLCAtNjcsIC04NywgNjMsIC0yLAorICAgIC0xMDAsIDI5LCAtNDEsIDExMiwgOTgsIC0xMjUsIDg4LCA5NywgLTU2LCA5MCwgNywgLTQwLCAtMTExLCAtMTI2LCA3NCwgMTIxLCAtOTUsIC00NSwgLTY5LCA0OCwKKyAgICAtOTgsIDE4LCAtMjAsIC0xMjQsIDMsIDQ2LCAtNSwgMjYsIDI0LCAtNzksIDEwOSwgNCwgNDMsIDYwLCA5NywgOTYsIC03NiwgLTIxLCA5NSwgLTUyLCAtNDAsIC00NSwKKyAgICAyLCAtMTAzLCAtMTA3LCAtOSwgNzksIC03OSwgLTgyLCAtNzMsIC01MSwgLTc0LCAtMTAsIDgxLCAtNzcsIDExMSwgLTk2LCAtNDEsIC0xMjAsIC0zOCwgMjQsIC04NywKKyAgICA5MywgLTQxLCA2NCwgNzIsIDU3LCAtODEsIC0zMiwgNjAsIC03OSwgMzYsIC04NCwgLTg5LCAtNywgLTI1LCA4MSwgLTk4LCAzNiwgLTIyLCAtNjksIDg2LCAxMjMsCisgICAgMTIwLCAtMTYsIC0xMTMsIC03MCwgNDcsIC0xMjUsIDIsIDk3LCA3OCwgLTkxLCAxMDIsIDEyMCwgLTkxLCA1LCAtNzEsIDM5LCAxMTYsIC0xMiwgLTc5LCAtMjksCisgICAgLTksIDg3LCAtNSwgLTM3LCA4NywgLTczLCAxMTYsIC0xNSwgLTEwLCAtMTA2LCAtNDksIC0zLCAtMjEsIDUsIDEyMCwgNDcsIDcyLCAtNDAsIDc5LCAtMywgODUsCisgICAgLTg0LCAtODcsIDU3LCAtODMsIC02NywgLTY0LCAxMjIsIC0zOSwgMzYsIDcwLCAtMjcsIDcxLCAtNzMsIDQyLCAtMTAwLCAtOTksIDEyNCwgLTkwLCA5MCwgLTI5LAorICAgIC01NCwgLTExNSwgNywgODksIC01MSwgOSwgLTQzLCAzMiwgNzksIC0xMDQsIDEyNywgLTM4LCA3LCA5MywgLTgwLCAtMTI0LCAyNywgOTYsIDU0LCAtNTEsIC03LAorICAgIDU3LCA1NywgNjMsIDIxLCAxMTAsIDcwLCAxMjIsIDc2LCA1MSwgMTI0LCA3OCwgLTUsIDEyNiwgLTEwMCwgLTk4LCAxMTYsIDU5LCAxMjUsIC0xMDYsIC0xMTMsCisgICAgLTExMSwgLTEyOCwgOTIsIDQzLCAtMTksIC0yLCAxMDUsIC05MCwgOTYsIC0xMTYsIC0xMTYsIC0zMCwgMTE1LCAtMjAsIC0xMDYsIDY0LCAtMTA4LCAtMTExLCA5NCwKKyAgICAtOSwgLTEyMywgNTIsIC03MSwgLTg4LCAtODQsIDg3LCAtMjUsIC01NCwgLTExNywgLTIsIC0yOSwgMjksIC04NSwgLTIyLCAtMjAsIC05NCwgLTI1LCA5OCwgMTAxLAorICAgIDExNCwgODAsIC01NSwgLTUxLCA5NywgOTksIDExNywgLTg2LCAyLCA3OSwgNDgsIDExMCwgNDQsIC05NCwgLTEyNywgLTg1LCA2MSwgLTk1LCAzMCwgLTkxLCAtMTI1LAorICAgIDgzLCAxMTMsIC05MywgLTQsIC0xMjYsIC05OCwgLTkzLCAtNjgsIC05OSwgLTcwLCAtMzcsIC03MywgLTkwLCA0LCA1MywgLTIsIDc4LCAtMzUsIDEwMSwgNDIsIC02LAorICAgIC0zLCAxMDYsIC0xMTcsIC0xMjcsIDQ4LCAzMSwgODgsIDExNywgMTE2LCAxMDYsIC05OCwgLTIzLCAtMTE3LCAtNywgLTU3LCAtMTI4LCAtMTE4LCAtMTE3LCAtMTE4LAorICAgIDExNSwgMzAsIC02MSwgNiwgLTM4LCAtMTE0LCAtMTAzLCAzNywgNTMsIC00LCAtMTAwLCAtMTIxLCA5OCwgLTExMCwgLTExMywgMiwgLTIwLCAyNiwgLTg4LCAtMTE4LAorICAgIDE5LCAtNzEsIDM5LCAtNTQsIC0xMSwgLTI4LCA0NywgMjgsIDg5LCAzNSwgLTEzLCAtMjAsIC00OCwgMTQsIC02LCAtOTEsIC04NSwgLTExOSwgLTcsIDExNiwgMTEyLAorICAgIDExNCwgNDEsIDQ0LCAtMSwgLTM5LCA2MCwgLTg1LCAtNTQsIDEwMSwgLTExOSwgOTUsIC03NywgLTY0LCAtMTIxLCA0NywgNzUsIC03OCwgLTMwLCAtNjYsIC0zOCwKKyAgICAtMTUsIDk4LCAxNCwgODIsIC02MCwgODUsIC05MCwgLTc4LCAxMTIsIC03LCA2NCwgNSwgMjgsIDY0LCA0MSwgLTY0LCA1NywgODUsIDIxLCAxMjIsIC01MiwgOTAsCisgICAgNzAsIC03MywgMTcsIDQ3LCAtMTI1LCA0MCwgLTQ1LCAtNywgLTkxLCAxMDAsIC0yMSwgLTEyMCwgLTUxLCAyMSwgNjUsIDMxLCAxMTAsIC0xMDUsIC03OSwgLTgwLAorICAgIDEwNSwgLTQzLCA3MywgLTYxLCA0NSwgLTMwLCAtNCwgODMsIDk1LCAzLCAxMDksIDU1LCAtOTIsIDEyMCwgNzQsIC0zNiwgLTExMSwgNTQsIC0yNiwgNzYsIC02OSwKKyAgICA3LCAtMjAsIDU1LCA0LCA3MCwgLTEyNCwgLTMxLCAtMzIsIDEyNywgLTYzLCAtNTgsIDczLCAxMDYsIDEwOSwgLTQxLCAtNDUsIDk2LCAzMCwgNjMsIDE0LCA4LCAxNiwKKyAgICAtODgsIDY5LCAtMTE1LCAtMTcsIC0xNCwgLTExNiwgMTE1LCAtODgsIDExOSwgLTY1LCAxNiwgLTY0LCAtMTEyLCAtNzMsIC0xMCwgLTQ2LCAtNywgMTEzLCA1LCA1NCwKKyAgICAtMzgsIC00NywgLTE4LCAxMDYsIDIzLCAxMiwgLTExNywgMTIwLCAtMTA3LCAxMjEsIC02MiwgLTM1LCAtNiwgLTU2LCAxMTIsIDgxLCAzLCA1LCAzMSwgLTExLAorICAgIC05MiwgLTg1LCAtMjksIDEwMiwgNDMsIDEwOCwgODgsIC02OSwgNTUsIC03NCwgMTEwLCA5NywgLTEyOCwgMjksIC02MywgLTExNCwgLTE5LCA3NywgMTIzLCAyMywKKyAgICA3NiwgODEsIDU3LCA1MSwgMTE3LCAtNzQsIC0xLCA3NCwgODQsIDcwLCA4NiwgLTEwOSwgLTEyNywgMTIyLCAxMCwgOSwgMjMsIDcxLCAxMTAsIC0xMTYsIC0zMCwKKyAgICAtODUsIC0xMDQsIDIsIDQwLCAtNjIsIDIwLCA0NiwgOCwgOTUsIDQ2LCAxMywgMTEzLCAtODMsIDEyNCwgMzMsIDM4LCAxMDUsIC05OSwgNzIsIC02MiwgLTgwLAorICAgIC0xNiwgLTExOCwgOTIsIC02NiwgLTE0LCAtMTI0LCAxMTIsIDc5LCAxMDMsIDUzLCAtMTI3LCA2MSwgLTMxLCAtOTIsIDkyLCAtNDIsIC0zNywgLTM3LCAtMjQsCisgICAgLTExNiwgMiwgLTgxLCA0MCwgNDYsIC00NCwgMjMsIC02OCwgLTExMywgODgsIDkyLCA5NSwgMTEsIDExOCwgOTgsIDE5LCAtODAsIC0xMDIsIDk2LCA3MywgLTIwLAorICAgIDQ3LCAtMTA1LCAtMTIwLCAtNzQsIC04MywgLTc3LCAtODcsIC01OSwgLTk3LCAxMTIsIDk5LCAtNTIsIDgwLCAxMTYsIC0xMTksIC00NCwgMTgsIDYyLCAxMDgsIDczLAorICAgIC0zNCwgNzAsIDI4LCA3MywgODEsIC0yNiwgODcsIC0xMjUsIC01NSwgNjQsIC01MywgLTczLCAxMTQsIC0zLCAtNDUsIC0xMDksIDE5LCAtMiwgNjgsIDExOSwgMTQsCisgICAgMjYsIDcyLCAxOSwgMTMsIC0xMjEsIC05OCwgMjYsIC01MiwgODUsIDM0LCAxNywgLTk1LCAtNywgMjAsIC0xMiwgMTA2LCAtMTEsIDEwNCwgMjAsIC0xMDYsIC00MiwKKyAgICAtMjYsIDEwNywgLTEwNiwgMTEyLCAxMDMsIC01MywgLTYyLCAxMywgLTU4LCAtMjMsIDIzLCA2NSwgLTEwNCwgLTU1LCAtOTAsIDEwNywgNTUsIC03NywgLTI1LAorICAgIC0xMjUsIDYzLCAtNjEsIC0yMSwgMTE3LCAtMTAyLCAtNzAsIC05MywgLTY3LCAtNDUsIC02MSwgMTgsIC02MywgNywgLTEyNywgOTAsIDE2LCAtMjUsIDExNiwgODAsCisgICAgMzUsIDEwNSwgODAsIC05MywgMTA1LCAtNDQsIDExNCwgLTEyNiwgLTEwMywgODgsIC0xMDIsIC03NiwgLTk0LCAtNjYsIDY5LCAtMzUsIDIyLCAzNiwgOTUsIC01NSwKKyAgICAyMiwgNDMsIDc4LCAtMTExLCAxMDksIDcyLCAxMDQsIC00OSwgLTksIC00OCwgNTksIDEwMiwgLTU0LCAtNDMsIC0xMjgsIDExMSwgMTI3LCAtOSwgMzUsIDIzLAorICAgIC03OSwgNDAsIC0xMjIsIC01MiwgMzYsIC04MSwgLTQsIC0xMDIsIC0yLCAtNjIsIDUzLCAtMTExLCAtMTE3LCA0MCwgMTIyLCAtOTUsIDU1LCAzMiwgLTEyNywgLTksCisgICAgLTkxLCA3OSwgLTEwOSwgLTgxLCAtMywgOTgsIC03OCwgNTYsIC0xMTksIDY5LCAtNDEsIDc2LCAtMTAyLCAxOCwgOTAsIC0xNSwgMTIsIC02MCwgODYsIC0xMDYsCisgICAgMzQsIC0xMTgsIC00MywgLTEzLCA2MSwgLTEwNiwgLTU2LCA0OCwgMjcsIC0xNSwgLTcwLCAtNDEsIDEyNywgNjEsIC0yLCAtODAsIC0xMywgODYsIDI4LCA5MSwKKyAgICAtMTAsIC04LCA5OCwgLTIwLCA1NCwgMTIyLCAtMTE2LCAtNTUsIC03MCwgLTk0LCA1NCwgLTY0LCA3MSwgMTAyLCAtMTA2LCAtMSwgOTksIC03MywgLTcxLCAtMTgsCisgICAgLTExLCA1NiwgMTEsIC0yNywgLTUsIDExLCAtODYsIDEyNiwgOCwgNDYsIC0yMSwgNjMsIC02NiwgLTQzLCA4OCwgNDYsIC0xMTMsIC01LCAxMTMsIDI2LCAtOSwKKyAgICAtMzIsIDE4LCAtMywgLTYsIC0zOCwgODEsIDM4LCAtMTEwLCAxMTEsIDk3LCAzNCwgNjUsIDExNCwgLTcxLCAtMTE4LCA5LCAtMTEwLCAtMTA5LCAtNjEsIC0xMTMsCisgICAgMzEsIC04MiwgLTEwMiwgLTEyNywgMTYsIC03LCAtMTYsIC0xMSwgLTg3LCAtNzYsIC00MSwgLTUyLCA1OCwgLTExNiwgMTAwLCAxMDIsIC0xMjcsIDYsIDEyNywgNjQsCisgICAgMTQsIDExMCwgMTEyLCA0MywgNDQsIDg3LCA0MiwgLTExOCwgLTExOSwgLTM5LCA2NCwgLTcsIDU3LCAxNiwgMiwgLTY5LCAtMTIsIC01NCwgLTk0LCAzNiwgLTQ4LAorICAgIDEyMywgLTExOSwgODIsIDQ2LCAyNiwgLTYyLCAzMCwgOTcsIC0xNywgMzQsIDgwLCAzMiwgLTE1LCAxMTYsIC05NiwgLTMsIDMzLCAzNCwgNTEsIDU5LCAtNjMsCisgICAgLTEwMCwgLTcsIC03OSwgLTEyNiwgLTIxLCAtMTUsIC0xOCwgLTExMywgMzAsIC0yNSwgMTA3LCAtMjUsIC0xMjUsIDUzLCA4MiwgLTE1LCAtODAsIDk2LCAtMjQsCisgICAgLTQ3LCA5NCwgLTI1LCAtMTA5LCAtOTQsIDExNCwgLTYyLCAxMTIsIC0xMDQsIDI2LCAtMTA3LCAtNjgsIC0xNCwgLTM2LCAtOSwgLTg5LCAyNywgLTc1LCA2MiwgNjIsCisgICAgLTIwLCAtMTI1LCAtNzcsIC01NywgLTEyNywgODAsIDU4LCAtMTE4LCA2MywgLTI3LCAtODIsIC0xMjYsIDc0LCAtMjMsIC05MSwgLTI4LCAtOTUsIDgsIC0xMjIsCisgICAgLTczLCAyOCwgLTg3LCAtNzQsIDgwLCAtMTUsIC0xMTksIDE0LCAzMiwgMTI0LCA3MywgMTUsIDYxLCAtMzIsIC02OCwgODEsIDU2LCAtMTE5LCA2NiwgMTA1LCAzLAorICAgIC0xNSwgMjAsIC04NiwgMTI0LCAtNzAsIC0xMTMsIDEwMCwgLTcyLCAtMTE3LCAtOTcsIDEyNywgMTAzLCAxNiwgMTA1LCA4LCAzOSwgLTEyOCwgLTY0LCAtNDcsIDY2LAorICAgIDEyMywgLTExMCwgMTMsIDEyMywgLTEyNCwgLTI0LCA0MiwgMTAyLCAtNCwgNDcsIDEwNywgMTI1LCA2MywgLTUyLCAtMzUsIDExMywgLTc0LCAxMywgOCwgMTcsIDE2LAorICAgIC0xMDYsIC0yMSwgLTY5LCA0NywgLTMsIDEwMywgLTIsIDE5LCAtMTAwLCAxMTEsIC0xMSwgMSwgMTEyLCA5MCwgLTM4LCAtMzEsIC00NSwgLTU1LCAyNSwgOTIsCisgICAgLTEyMiwgNjYsIC0xOCwgLTk4LCAtODIsIC00OSwgMTE5LCAtMzUsIC0xMjgsIDI2LCA2MCwgLTc5LCAtMjMsIDEyNywgODIsIC01MiwgMTE1LCA3NywgLTEwOSwKKyAgICAtMTExLCAxNywgLTk5LCAzMSwgMzMsIDQxLCAzNSwgODcsIC00NywgLTEyNiwgLTE4LCAtMjUsIDgxLCAtNzEsIDksIC03MiwgLTkyLCA2NCwgLTkyLCAyMywgMTE2LAorICAgIDk2LCA0MCwgNTUsIC04NywgMTE5LCAtMTA1LCA2NiwgNDksIDQ2LCAtMTAsIDI2LCAtMjUsIC0xMDUsIDEyNywgLTEyNCwgODYsIC0yLCAzOSwgMTE2LCAtMTA4LCA2LAorICAgIDIxLCAxNSwgMSwgNzUsIC01LCAxMDEsIDEzLCA1NywgNzAsIDEyNiwgLTUwLCAtOTcsIDEyMywgLTczLCAtNzcsIDUzLCAtMTEsIC03MywgNDQsIC05OSwgOTEsIDg1LAorICAgIDIxLCAtNTksIC0xLCAxMTcsIDY0LCAtMTAwLCA0NywgNzUsIDkzLCA5LCAtNCwgODMsIC01NSwgMTUsIDk5LCAzMSwgNDMsIC00OSwgMTUsIC04OSwgLTExNSwKKyAgICAtMTE0LCAtNTAsIC0zNSwgLTE5LCAtNjUsIDEyMiwgLTM5LCA5MiwgLTIxLCAtMywgLTY2LCA4LCAtNzAsIDEwNywgLTU1LCAtODYsIC0zNiwgLTIzLCAtMjEsIDgwLAorICAgIC03OSwgNDgsIDExNiwgNTcsIC03MSwgMzMsIC0xMTEsIC02OCwgLTc1LCAzNywgNTUsIDM5LCAxMjQsIDk2LCAtNjYsIDEwLCAxNCwgMTE4LCA1MCwgODUsIC0zMywKKyAgICA1NCwgLTEwMSwgLTcsIDIxLCA4OCwgLTEyMiwgNTAsIC05MiwgMTIzLCAzNywgMTA5LCAtNjAsIC0xMjcsIDI2LCAxMTAsIC0yMCwgLTMxLCAtNjYsIC01NiwgLTI0LAorICAgIDQ3LCAtMTQsIC02MCwgLTEwMSwgNjksIC0zOCwgNzgsIDAsIDQ0LCAtNzEsIDEwOCwgNCwgMjUsIC02OCwgLTEwNiwgMjAsIC00MCwgLTEwMywgMTA4LCAtNzAsCisgICAgLTU2LCA3OCwgMTIsIDgyLCA4MSwgNDYsIC0xMDUsIC0xMjMsIC00NiwgLTIwLCAtMTI3LCAtNjcsIC03NywgNzYsIC03NCwgNDAsIDEwNSwgMiwgMjcsIDExMiwKKyAgICAtMTA3LCAtMTIxLCAtNTMsIDYsIC04OCwgLTExLCAyNiwgNDEsIDY0LCAtNjksIC00NCwgMjcsIDQ3LCAyNCwgLTMxLCAtODYsIC00LCA0LCAtNDYsIDQyLCA1MCwKKyAgICAtNTUsIDM3LCAtMTEsIC05NSwgMTA4LCA1NCwgMzcsIDY3LCAzNywgLTE0LCAtNDAsIDQxLCAxMjQsIDIyLCAxMDgsIDk5LCAxNiwgNTUsIDg4LCAxOSwgNDksIC04NywKKyAgICAyNywgMTcsIC02OCwgLTEwNywgMTUsIC02MiwgODQsIDEwOSwgNzIsIC0yNiwgNzEsIDYzLCAtMTcsIC03MiwgLTYzLCAtMTAxLCAtOCwgNjIsIDI0LCAtMTEyLAorICAgIDEyNiwgLTEwMiwgLTY0LCAyOSwgLTE5LCAtNzUsIDc0LCAyOSwgOTAsIC05MCwgODMsIC0yMiwgMTA2LCAtMjcsIC0xMTQsIDU2LCAtMTExLCAtMzMsIDExLCAzLAorICAgIC0xNiwgOTQsIDExNSwgLTk3LCA2NywgLTc4LCA2MiwgLTkzLCAtMzYsIDYwLCAtNjUsIC01NCwgNzIsIDcwLCA0NCwgLTc3LCA3MywgMjksIC0xMDYsIDM4LCA3MiwKKyAgICAtMzcsIC0xMTAsIDc5LCAtOTgsIC0xNSwgLTU4LCA5NiwgLTg1LCAtNjgsIC0xNSwgNzMsIDU3LCAtMTI3LCAxNCwgLTEyMywgLTQwLCA3MCwgNjMsIC02NCwgMTE1LAorICAgIC02MywgMTI3LCA5NCwgODUsIDUyLCAzMCwgLTYyLCA4MywgLTMwLCAtOTcsIDgyLCAzOSwgMiwgMzYsIC01MCwgMTA2LCAxMTYsIDY2LCAxMDQsIC0xNCwgNzMsIDE0LAorICAgIC0xMDYsIC0xMjcsIDExLCA0MSwgLTI3LCA1NiwgLTk5LCAtNzQsIDU1LCAxMjMsIDEyNCwgOSwgNDYsIDEyLCAtOTcsIC0zNywgLTEwLCAxMjIsIDEyNCwgLTI3LAorICAgIC02NCwgOTMsIC03MCwgOSwgMTE5LCAxMywgLTksIC03MSwgLTExOCwgMTksIDUwLCAtMzYsIDExNCwgMTIwLCAtMjQsIC02MiwgNDAsIDEyNywgOSwgLTYyLCA4NCwKKyAgICA1NywgNjYsIDkxLCAtMTE0LCAxMjAsIC00OSwgNjMsIDk5LCAtNzMsIC02NiwgLTY0LCA4NCwgLTMxLCA2NywgLTUyLCAxMiwgMzgsIC02MiwgMzcsIC0xMjIsIC01MCwKKyAgICAtOTUsIDI0LCAxOSwgNTQsIC04MCwgNTcsIC0xMTgsIC04NCwgMTI0LCA5MCwgNTMsIDcyLCAyOSwgLTEyMywgNjcsIC02NSwgOTksIC01OCwgLTI4LCAyMCwgLTExMCwKKyAgICAtMTAzLCA5MiwgLTkxLCAtMTA4LCAyMywgLTExOCwgNDQsIDc0LCA3NiwgLTI5LCA5NCwgLTEyMSwgLTM3LCAtMzIsIDEwNywgLTYyLCAtNjcsIC01NSwgLTQ1LAorICAgIC01MCwgLTQ0LCAyNSwgLTc3LCAtMTAyLCA5MCwgLTEyOCwgLTMxLCAtNSwgLTY0LCAxMTAsIDEyMiwgODgsIC0xOCwgLTUzLCAtODUsIDEyMiwgLTExLCAxMDAsCisgICAgLTEwNiwgOTcsIDU5LCAtMTAzLCAtMTEwLCA1LCAtMTYsIDU5LCAtMTI2LCAtNzQsIDksIC0xMTksIDExNSwgNDksIC03MywgLTQyLCAzMiwgMTAwLCA1OSwgLTk4LAorICAgIDEwNiwgNTUsIC0xMDEsIDg3LCAxMjYsIDU5LCAtMjMsIDEwNiwgLTEwMiwgMTAwLCAtNjksIC00NiwgNzYsIDUzLCAtMTA3LCAtMTE5LCAtMTEzLCAxMDQsIDExNywKKyAgICAtMjcsIDc1LCAtMzIsIDgsIC04MSwgLTEwLCA1MCwgMTA4LCAtMzIsIDUxLCAtNzksIC01MywgLTIsIDY2LCAtOSwgMTEzLCAxNCwgOTksIC0xMDAsIC0zNCwgLTIxLAorICAgIDEzLCAyLCA0NSwgLTMzLCAwLCAtMTYsIC02NCwgLTEyNiwgNjksIC0yNSwgLTM0LCAyOCwgMTA1LCAtNDgsIC0zOCwgODIsIDEyLCAyNywgLTcxLCAzNSwgMTMsIDExLAorICAgIDIxLCAyNiwgLTE5LCAtNCwgNDQsIC01MiwgLTEyNiwgLTYzLCAtMzIsIC04NCwgLTIyLCAtNjMsIC0yOSwgOTYsIC05NywgLTgyLCAtMTIsIC01MywgOTgsIDQxLAorICAgIC02OSwgLTM4LCAxMDEsIC0zMSwgNDcsIC05LCAxNiwgLTEwLCA5LCAtMzYsIC0xMDMsIC05MSwgLTY1LCAtMzYsIC05MywgLTQ1LCA5NCwgMTEwLCA1NCwgLTk0LAorICAgIDY4LCAtMzksIC0xMTYsIC00MCwgNjEsIC0xMTIsIC05MSwgLTc5LCA5OCwgLTM2LCA4NywgMzUsIDg4LCAtNjEsIDEyNSwgMTEyLCAtODQsIDQ4LCAtMzgsIDEwNSwKKyAgICAtOTIsIDY5LCAtNjgsIDkyLCAwLCAyNywgLTcyLCAtNjUsIDk3LCA5OCwgNjYsIDk3LCAtNzQsIDI5LCA0NiwgLTIxLCAxMDIsIDYxLCAxMjAsIC02MiwgMzgsCisgICAgLTEyNSwgLTYwLCAtNDMsIDQsIDUsIC0yNywgMTEzLCAtNDMsIDEwNSwgLTIyLCAtMTEwLCA2OCwgMTMsIC0xNCwgLTIzLCAxOCwgOTUsIC03OSwgLTEwOCwgODcsCisgICAgMTksIC04MCwgMTYsIDU0LCAtMTIxLCA4OCwgLTY0LCAtMTEzLCA3MywgMywgLTIwLCAxNywgMCwgMjYsIC04OCwgLTQ5LCAtMiwgMjEsIDEyMCwgLTEwNSwgLTg1LAorICAgIC0xMTMsIDc2LCAxMDYsIDM3LCAtMTMsIC03NSwgMjksIC0xMjcsIDEwLCAtMTcsIC01MywgLTEyNCwgMjQsIDM3LCAtMzEsIDI2LCAtMSwgMTA5LCA4OCwgLTg4LAorICAgIC0zNywgLTUxLCAtMzIsIC0xMjUsIDQ4LCAtNDAsIDEyMywgLTEwOCwgNTUsIC0xMjAsIC02MiwgLTkxLCA0NywgNjIsIC0xMjcsIC0yNSwgOTksIDY4LCAyMiwgLTQwLAorICAgIDU4LCAxMTksIC0zMSwgLTkzLCAtMTIyLCAzOSwgLTkyLCAyNSwgLTEyNywgLTQyLCA5NywgNjksIC02LCAxMTAsIC02MSwgLTIxLCAtOTQsIDgyLCAxMjMsIC05MywKKyAgICAtNTEsIC05MCwgNTAsIC05NiwgMTI3LCAtMzIsIDEyNSwgLTc2LCAxMTcsIDc1LCAtNTIsIDc5LCAxMTAsIC01MSwgLTE1LCAtODEsIDQ5LCA2MiwgMTE4LCAxMjAsCisgICAgLTI3LCAyMiwgODQsIC0yMiwgNzcsIC0xMDUsIDg3LCAtNywgLTIzLCA0NywgLTgsIDEwOCwgODIsIC0xMiwgODQsIC01MiwgLTg1LCA2OCwgLTg5LCAtMjQsIC0zMiwKKyAgICA2LCAtMzQsIC04MywgODAsIDQ0LCAxMiwgLTUxLCA1MCwgNzQsIC0xMjEsIC0xMDYsIDYsIDg1LCAzMiwgNDIsIDc2LCAtNTksIC01MiwgLTk5LCAxMDIsIDEwOCwKKyAgICAtMTI3LCAtNDksIDAsIDYwLCA2MiwgMiwgMTMsIC0xOSwgLTkyLCAtNDEsIC02OSwgNTUsIC03MCwgOTQsIDIzLCAzNiwgODksIDcwLCAtMTE1LCAtNTEsIDI2LAorICAgIC05NSwgMTMsIC02OSwgNDIsIDYyLCA1OSwgLTI0LCAtNjMsIC01MCwgLTYsIC04NiwgLTk3LCAtMTE1LCAtNTgsIC0xMDcsIDY5LCAtMTIsIC0xMDksIDczLCA0LAorICAgIDYzLCAxMiwgMzIsIDEzLCAtMTIzLCAtNzIsIC00MSwgLTcsIC04MSwgMzcsIC05MSwgLTEyOCwgMTA5LCAtNzksIC04MCwgODgsIC0yMiwgMTA4LCAxMjYsIDEwMywKKyAgICAyNywgLTI5LCAtODEsIDUyLCA1NSwgLTkxLCAtMTMsIC00MywgLTc1LCAtNTksIDgwLCAtNiwgNiwgODMsIC0xMDMsIC02NCwgOCwgNjMsIC0zNCwgLTU5LCAyMSwKKyAgICA1NSwgLTExNSwgNjIsIDc3LCAzMCwgLTUwLCAtNzEsIC02NiwgODcsIDk5LCAtNDcsIDAsIDEyNCwgNzYsIDEyMCwgNzksIC0xMiwgNTQsIC0xNiwgLTk4LCAtNzIsCisgICAgLTQxLCAtNjYsIC0xNCwgMTE0LCAtMjcsIDEwOCwgNTcsIC00OSwgMTA3LCAtNzMsIDkwLCAxMDcsIC0xMDMsIDI1LCAtMTA3LCAxMTIsIC0xMTksIC01NCwgMTA2LAorICAgIC01NCwgLTgsIC0xMywgLTgxLCAtNjIsIDkyLCAtODQsIDExMywgNzcsIDc0LCAtNjMsIDEwNCwgOTIsIC05NCwgLTEyOCwgLTQzLCAtNTQsIC03MSwgMTE3LCAyNywKKyAgICAxNCwgOTgsIDUyLCAxMTksIC05MywgLTc3LCAtODAsIC00NiwgODgsIDM1LCAxMjMsIDg2LCA4NywgMTIyLCA2MiwgMTA4LCAxOSwgMjcsIDExMSwgMiwgNjIsIC02NywKKyAgICA4OSwgMTQsIC04MiwgNDEsIDEyMywgLTExNywgNzQsIDEwOSwgLTEyNCwgLTExNSwgMTUsIDEyMywgLTY1LCA0MiwgLTgxLCAtMTA1LCAxOSwgLTMwLCA4NiwgLTcyLAorICAgIDg0LCA2MywgLTEwOSwgMzQsIC02NSwgLTEyNywgNiwgLTEwNCwgNzcsIDEwMywgLTExMSwgOTAsIDE2LCAzMSwgLTc0LCAtMzMsIDEyMiwgNTgsIDUyLCAxMCwgMiwKKyAgICA2NSwgNzIsIDY4LCA3OSwgNTIsIDMxLCAtMTksIDEwMCwgLTg2LCAyMSwgLTQ5LCAxMTYsIDEwMSwgODIsIDExMSwgLTk2LCAtNzYsIDY3LCAtNDAsIC02MiwgLTE1LAorICAgIC03OSwgMTA5LCAtNTgsIDYsIDExLCAtOTEsIC0yOSwgNjUsIDIxLCA3NSwgNzQsIC0yOCwgMjEsIDEwMywgNDYsIDQ4LCAtNDIsIDUxLCAtMTEwLCA4MCwgLTk1LAorICAgIC0xMDIsIC05LCA4LCAtOTUsIDEwMiwgMTAyLCAxNiwgMTA1LCAxMDMsIDkyLCAtMTA2LCAtMTA5LCA3NywgOTMsIDMyLCAtMTIsIC0yNSwgNSwgMTcsIC04NiwgLTM0LAorICAgIDU4LCAtNTAsIDU1LCA2MywgLTgsIC03MiwgMywgMjYsIDkxLCA3MiwgNzEsIC03NywgOTQsIDkxLCAzOSwgNDUsIDcsIDAsIDMwLCAtNDUsIC0xMDAsIDM1LCA0MywKKyAgICAtNDEsIC03MiwgMTYsIC0xMDMsIC0xMTUsIC00LCA1MSwgMzksIC0yMywgLTg5LCAtODQsIDEwNSwgOTQsIC05MSwgLTg4LCA4MiwgMTIzLCAtMjYsIDUxLCAtMTYsCisgICAgOTcsIDQ3LCAtMzksIDM1LCA0NiwgLTg5LCA3NCwgNywgLTgwLCAxMTYsIC0yMSwgODIsIC04NCwgLTEzLCAtOTksIDMxLCAtNTgsIC05MywgMzYsIDk5LCAzNiwgNDQsCisgICAgLTY1LCA0NSwgOTQsIC05MSwgLTQxLCAxMTUsIC0xMCwgMTE2LCAtNjcsIDQ1LCAxOSwgLTIwLCAxMTMsIC02MiwgMTExLCAxMjQsIDEwOCwgNzEsIC0xMjEsIC02NCwKKyAgICAxMjIsIC0xMjEsIC0xMDUsIDExNCwgMTE1LCAtMTI2LCAtOTMsIC0xMDgsIC0xMTMsIC0xLCAtODAsIC04NiwgMTE2LCAtMTExLCAtMjksIDUzLCAtNzYsIDg3LCAxOSwKKyAgICA0NSwgLTMwLCA5MSwgOTEsIC03LCAtNDksIDEyLCAxMTIsIC04LCAtMjYsIDgyLCA1OCwgLTgyLCAtNzYsIDExOSwgLTUwLCAxNCwgODUsIDExMywgMjAsIDQ4LAorICAgIC0xMDIsIDM3LCAyNCwgLTEyMCwgLTEwNywgLTUyLCA2NywgLTQ0LCAtOTIsIC03OSwgLTQwLCAyOCwgMjEsIDU1LCAxMTYsIDg4LCAxOSwgLTQ5LCAtNzgsIDg2LAorICAgIC04OSwgNzQsIC00LCAxMTgsIDc1LCAxMSwgLTEwMywgLTEyNywgLTQ3LCAtMTYsIC03NywgLTc4LCA4LCAyLCAtODgsIDUwLCAyMywgLTk5LCAxMDIsIC0xMDAsCisgICAgLTExNiwgLTk5LCAtMTA5LCAtMTEyLCAtMTE1LCA3OCwgNTUsIC0zOSwgLTg0LCAxMDAsIC05MSwgLTEwMSwgNzMsIC05LCAzOSwgLTIzLCA2MiwgLTEyNSwgLTEwNiwKKyAgICAtNTUsIDExOSwgLTExOCwgMTE0LCAtMzMsIC05OSwgMjAsIC01MywgOTEsIDExNSwgNDcsIC05MywgNTEsIC05OSwgLTksIDkyLCAtNzEsIDEyMCwgNTcsIC00NCwKKyAgICAtODcsIC0xMSwgMTA4LCAzMCwgNDMsIC00LCAxMTgsIDkwLCAxMjYsIC01NCwgLTk5LCAtNDcsIC0yLCAtNjEsIC0zLCAtNjIsIDQ1LCA5MiwgLTcwLCAtMTA1LCAzMCwKKyAgICA5OCwgMTEyLCAtOTQsIDU2LCAzNSwgLTIyLCAzMiwgLTkzLCAtNiwgLTM2LCAtNSwgLTc3LCAtNzgsIDEyMCwgNDUsIDEwNCwgNjksIC00OSwgLTMwLCAzOSwgNzUsCisgICAgMzgsIC05NCwgLTEyLCAzNCwgMzQsIC00NCwgNDgsIC0xMDAsIDc0LCAzNCwgNjksIDk0LCAtMTIsIDczLCAyNywgLTExMSwgOTAsIDMzLCAtMzgsIDkzLCA0MCwKKyAgICAtMTYsIDg5LCAyNiwgLTExMCwgLTExNiwgLTEwLCAtNjUsIDg1LCAtNTcsIDQ4LCAtODYsIDEyMSwgMTE4LCAtNDEsIDYzLCAzMywgMTA5LCAtNzgsIC0yNiwgMTIyLAorICAgIDExMSwgLTExNSwgLTUyLCA5NSwgMjYsIC03MCwgLTE0LCAtODYsIC04MCwgLTI3LCAtNiwgMTIsIC00NCwgMTIzLCAyOCwgOTMsIC03NCwgMTQsIC0xMjQsIDg3LAorICAgIC0yOCwgLTEyLCAxMTEsIC0xMTcsIC04MywgNDgsIC00MSwgLTMsIDYwLCAtNTEsIC05MSwgMTE4LCA1NCwgMTEwLCAxOCwgLTIsIC0xMjAsIC02NiwgNDYsIC0zNSwKKyAgICAtOTEsIDEwNiwgOTQsIC05MSwgLTExLCA0MSwgLTkyLCAtMjIsIDk2LCAtMTEzLCAtMTA5LCAxMDUsIDU2LCAtODAsIDE3LCAtMTE4LCAxMjQsIC0xNiwgMzAsIDMwLAorICAgIDExNywgMTI2LCAtOTksIC0xMDYsIC02OSwgLTI4LCA4NSwgODUsIC00MSwgMjEsIC05NSwgLTg1LCAtMTEyLCAtMTI1LCAtNDUsIDY5LCAxMCwgLTM0LCAtMTIwLAorICAgIDMzLCAtNTgsIDEyMCwgNTEsIC0yMiwgLTcsIDMxLCAtMzQsIDQsIDU1LCAtMTAyLCAtNzAsIDExOCwgLTgzLCA0OSwgMTExLCAtNDUsIC05LCA2OSwgLTk1LCAtNjYsCisgICAgMTE2LCAtMywgMTA0LCAtNjEsIDE3LCAyMSwgLTIwLCAxMjEsIDExNywgMTI3LCAtNzAsIDUsIDg5LCAtODksIDUxLCAxNSwgNjQsIDEyNiwgLTczLCA5NywgOTAsCisgICAgMTE5LCAtMjIsIC0zNywgLTU0LCA1MiwgLTMzLCAyNiwgLTU0LCA3NSwgNzksIDczLCAxMDAsIDQ0LCAzLCA1MywgLTI1LCA0OSwgLTEyMywgLTEwMSwgLTgwLCAtNTQsCisgICAgLTgxLCAtMzIsIDg4LCA0OSwgLTE0LCAtNCwgMTgsIDQyLCA1MiwgLTY1LCAtMzMsIDY4LCA4MywgLTg5LCAtMTEsIDU3LCAxMDIsIDcxLCAxMjIsIDc0LCAtOTIsCisgICAgLTQ0LCAtOTQsIC0xMDgsIDE0LCAxMDQsIC0xMDcsIC0xMjQsIC02MywgOCwgMzIsIDg1LCAtMTgsIC0xNiwgLTkxLCAtNjMsIC0zOCwgMjcsIC0xMDgsIDI0LCAxOSwKKyAgICAtMzMsIDUzLCA3MCwgLTMyLCA0MSwgMzgsIC03NywgLTMwLCA4OSwgMjgsIC0xNSwgLTg5LCAtODYsIDMyLCA1MSwgMjgsIDY3LCAxMjQsIC05NiwgLTEwMywgLTM0LAorICAgIC0xMTMsIDIyLCAxNSwgLTgsIDEwNCwgLTM4LCAtNTYsIDY1LCAtOTYsIC0xMTEsIDEwNCwgLTksIC0zOCwgMTA3LCA1NSwgMTEyLCA0NywgOTksIDUwLCAtMTgsIDkwLAorICAgIC02OSwgMTE2LCA4MCwgOTUsIDUyLCAtMjcsIC05OCwgNiwgMTIsIC0xMSwgMTI0LCAtMTIwLCAtOTYsIC05MSwgMTE4LCAtNTEsIC0xMjAsIDkwLCAtOTIsIC0xMDQsCisgICAgLTgzLCAtNzMsIDg0LCA2MSwgNzgsIC0zOSwgLTk5LCAzMywgNTgsIC00NSwgLTE0LCAxMjcsIC0yMCwgLTQ0LCAxMjUsIDIxLCAtMjYsIC0yMSwgLTM2LCA1MSwgNzMsCisgICAgNzEsIDczLCAtMTcsIDgzLCAxMSwgMTA3LCA5MSwgMzYsIC02NSwgLTI0LCA1NiwgMTE3LCAxMTQsIC0xMjYsIC0zNCwgMSwgMTIwLCA2NiwgLTUwLCAxNCwgOTEsCisgICAgOTcsIC0zNSwgNzUsIDg3LCAxMjMsIC01MywgNjMsIC0zOCwgLTc0LCAtNjIsIC0xMTcsIC00NSwgLTQwLCAxMjUsIC01LCA1MywgNTAsIDAsIC0xMTAsIDcsIDcsCisgICAgNDUsIDM3LCAtNzEsIC0yMSwgNzAsIC05NSwgLTYwLCA3NCwgLTU1LCAtNTQsIC05NiwgMTE1LCAtNjIsIC0zMiwgLTMsIC0xMjEsIC0xOCwgMjcsIC0xMDcsIDQ5LAorICAgIC0zOSwgNTgsIC0zOSwgOTEsIDEwNywgNjUsIC05OSwgLTY0LCAtMTksIC0xMCwgLTEyNiwgMzgsIC00MCwgLTExMiwgMCwgMTYsIDEwNywgLTU5LCAxMTksIC03MCwKKyAgICA3OSwgNDksIC0xOCwgLTc2LCAtMjIsIC0zOCwgLTk4LCAzNSwgLTk5LCA2MSwgNjcsIC0xMDAsIDI5LCAtMTA0LCAtMTcsIDIyLCAxMDgsIDEwNSwgODgsIC0xMTQsCisgICAgLTY1LCA4NCwgOTksIC02OSwgLTg0LCAtODcsIC04MSwgLTI4LCA2OCwgLTY2LCAzLCA2OSwgLTY5LCA4MywgMTYsIDYxLCAtMTAyLCA1MCwgNjcsIDQ2LCAtOTgsCisgICAgLTc3LCAtNDAsIC03OCwgNDgsIDY4LCAtODUsIDEyMywgLTkyLCAzNywgMTQsIDc1LCAxMywgLTIzLCAtMTEwLCAyMywgMjYsIDkwLCAtODEsIC0xLCAtMTA5LCA4NSwKKyAgICAxMjEsIC02OCwgLTU1LCAtNywgMjEsIC04MSwgLTM1LCA0MSwgMywgLTcyLCAtNTIsIDM2LCAzNSwgLTgzLCAtOSwgLTgxLCAtMTI0LCAtMTA0LCAzMSwgNTQsIDgsCisgICAgLTMyLCA4MCwgNzMsIDg5LCAtNDEsIDExNiwgMTI3LCAtMTEwLCA2OCwgLTgyLCA4MiwgLTc5LCAxMDUsIDExMywgLTExMCwgLTcwLCAxMjEsIC0yNCwgLTU0LCAzNywKKyAgICAtMTIsIC03MCwgLTc3LCAxNSwgMTQsIDEwNSwgLTE5LCAxNiwgLTYsIDczLCAxMDIsIDEyMSwgLTExNiwgLTYyLCA1NCwgNjUsIDExOSwgNDMsIDYwLCAtNzksIC02NiwKKyAgICAtMTcsIDEsIDk3LCAtMSwgLTExLCAtNSwgMTA0LCAxMCwgNTksIC0xMDgsIDIxLCAtOCwgNjQsIC03MSwgLTg2LCAxNCwgLTk4LCAtODcsIC00OSwgMzAsIC00NSwKKyAgICAxMDksIDQzLCAtNjcsIDEwLCAtMTIyLCAyNSwgOTgsIC0xMDIsIDEyNywgLTI3LCAtNTIsIC02MSwgLTY2LCAtNDcsIDExNCwgLTk0LCAtMTI2LCA0LCAwLCAtNjUsCisgICAgLTExLCAtNTEsIC02NywgODQsIC00MywgNDQsIDg4LCA1MywgLTYsIDEyNCwgMTEsIC0xMjMsIDM0LCAxMiwgMTAyLCAtMTMsIC0xMDYsIDQ3LCA2MiwgLTcxLCA0MywKKyAgICAtNjUsIDI4LCAzNywgMzIsIDgwLCAyMywgNiwgNzUsIC0xMDMsIDczLCAxMTIsIDMzLCA4NCwgLTg5LCAxMiwgLTgxLCA0MiwgNjUsIDU4LCAxNCwgLTEwMiwgOTAsCisgICAgMjksIC0xMTYsIDEwNCwgMTA3LCAtOTksIC0xLCAtNDMsIDEyMiwgMTE4LCA4OCwgLTIsIDExNywgODQsIDEsIC0xMjMsIC0yLCAyLCAtMzIsIC0xOCwgLTEyMiwKKyAgICAtMzYsIC01OCwgMTYsIDc2LCAxMTUsIDI3LCAtMTIxLCAtMiwgLTc5LCAtNDQsIC0zOSwgMzMsIC0yOSwgMzMsIC0zNCwgNTUsIDcxLCA2MSwgMTE3LCAtMjIsCisgICAgLTEyNiwgNTEsIDI5LCA1NSwgLTM0LCAtNDgsIDE3LCAtNTcsIDc0LCA3MSwgLTMzLCAtNTAsIDYwLCA0MSwgLTExOSwgLTkzLCAtNDUsIC0xMjcsIC0zMCwgMTA0LAorICAgIDM1LCA2MCwgLTExNywgLTExMywgODEsIC01OSwgLTM5LCAtODQsIC0zOSwgLTQ2LCAtMTA2LCA1NywgNzcsIDYyLCAtMTEsIC00NCwgLTg3LCA3MSwgMzUsIC0xMTcsCisgICAgLTg3LCAtNzcsIC05OCwgNjgsIC0yOSwgLTEyMSwgLTE2LCAtMTYsIDM5LCA0OCwgLTc0LCAyMywgODIsIC02MiwgMzIsIDYyLCAyNywgMTI1LCA4NCwgMzksIC05MSwKKyAgICAtOTEsIC05MywgNzYsIC0yNCwgOTgsIDEyMywgLTU4LCAtMTE0LCAxNywgMjgsIDkzLCAtMTcsIDc0LCA5MiwgLTE3LCA5LCAtODYsIC0xMTYsIC03MiwgNTQsIC03NCwKKyAgICA3MSwgOSwgLTk3LCAtMzMsIC0yMCwgLTEyNiwgLTUwLCAxMTcsIDEwMiwgNTQsIDEyMywgMTI0LCAtNzAsIDMwLCAtMTAyLCAyNywgMjMsIDEwNSwgLTQwLCAtMzUsCisgICAgLTg5LCAtMzMsIDg5LCAzLCA0NCwgMTgsIC0xNSwgMTAsIDExNiwgLTExMSwgMSwgLTgxLCAtMzEsIC0xMjUsIC0xMDIsIDEwMywgLTkzLCAtMTUsIDcyLCA4NCwgMTksCisgICAgLTMwLCAtMTcsIC0xMTUsIDk5LCA0MywgNSwgLTkyLCA1MiwgNTksIC01NSwgLTEwNSwgLTEyOCwgMTksIDgsIC03OCwgNDMsIDcsIC01NSwgLTEyNiwgLTEwNiwgMTEsCisgICAgNjksIDExOCwgMjQsIC0xMjgsIC01NCwgLTg2LCAyMiwgLTEyMSwgLTQzLCA2OSwgLTE1LCA5NiwgNTIsIDUyLCA5MCwgLTExOCwgLTEwLCAtNTgsIDEyMSwgNjMsCisgICAgLTQ4LCAtMTMsIDIyLCAtMTAxLCAxNywgNDIsIC0yOCwgLTU0LCAtNjMsIDEyMSwgLTk2LCAxMTEsIDExMywgMTAzLCAxMjYsIDM3LCAtNTIsIC00MCwgLTEwNiwKKyAgICAtMTA0LCAxMjMsIC00OCwgLTkyLCA4MywgMTAwLCAtNzAsIC01MiwgLTU5LCAtOTMsIC0xMTYsIC05MCwgLTkzLCA4MiwgLTExNywgMTAzLCA1MiwgLTcxLCAtNDIsCisgICAgNTcsIDI1LCA1NywgLTc0LCA3MSwgNywgMzIsIDk2LCAtNjAsIDExLCAxMjEsIDU4LCA3MSwgNDAsIC05MiwgMzUsIDg4LCAtMTIsIC0xMDksIC01NiwgLTEyMiwKKyAgICAtMzAsIC0xMTgsIDEwMywgNjUsIC01LCAtOTAsIC05NywgMTAzLCAtMTE3LCA2NiwgLTIwLCAtNDIsIC00NiwgNjcsIC0yOSwgLTIzLCA3MiwgLTk3LCAyNiwgLTU0LAorICAgIC0xMDMsIC03NiwgLTQ3LCAtNzEsIDIzLCAtODMsIC0yMCwgOTUsIDExMSwgMTAxLCAtODMsIDEwNiwgLTcxLCAtNzAsIC02MywgNTUsIC04NSwgLTQxLCAxMTcsIC05LAorICAgIDM3LCA5NiwgLTcxLCAtMTE4LCAtNDQsIC00MywgMiwgMTA3LCAxMTMsIC0zOSwgLTEwNywgNDEsIC0xMywgMCwgLTg3LCA3NywgODMsIDk5LCA2OCwgLTg0LCAtNiwKKyAgICAtMSwgNjcsIDEyNCwgLTU3LCAxMTUsIDI5LCAyNCwgMjYsIC00MiwgMTA0LCA1OCwgLTg3LCAtMzgsIDEyLCAtOTgsIDExLCAxMDksIDYyLCA1OSwgLTY2LCAtNDgsCisgICAgLTIwLCA3MCwgLTExMSwgMTEsIDEyMCwgMjEsIC01OCwgLTI5LCAtNzYsIDQ0LCAtNywgMjYsIC0xMTksIC01OSwgLTg3LCA0NCwgMTIyLCA4LCAxMTQsIC01OCwKKyAgICAtMTA5LCAtMTE5LCAtNjMsIC01OCwgLTUxLCAzMywgMzUsIC0xMDksIDgxLCAxMTAsIC05MCwgMTIxLCAtMjEsIDY0LCAtNjAsIDY4LCAxOCwgNzUsIC04MiwgLTgxLAorICAgIC0xMDMsIC03NiwgLTExNiwgMjMsIDUzLCA1OCwgLTQxLCAtMjMsIDQ5LCAtMTAyLCA4MSwgMTAxLCAzOSwgLTU5LCAtOTEsIC05OCwgMTExLCAyLCA2NSwgMTEwLAorICAgIDEyMSwgNSwgMTMsIDk3LCAtMTE5LCAxMDksIDQwLCA4MiwgNDcsIC01MSwgNDcsIC01NywgMzUsIC0xMDksIDUzLCAtNDIsIDEwLCAzLCAtMTUsIDEyMiwgLTI1LAorICAgIC02NywgLTYyLCAtMTIxLCAtMTIwLCAtMzEsIDE4LCAtMjAsIDg3LCAtODgsIDc1LCA5NSwgLTEyMSwgLTkzLCAzMywgNjEsIC04OCwgLTk2LCA4OCwgLTY5LCAtNTQsCisgICAgLTEyMSwgLTk5LCA0OSwgMTIyLCAtNTMsIC00OSwgLTEyNSwgNTMsIC03OSwgLTQ2LCAtMTI4LCAxMDksIDEyNSwgLTkzLCAtODMsIDQ0LCAtMTAxLCA2OSwgNjgsCisgICAgLTkxLCAtMTcsIDU1LCAtMTMsIC03NSwgLTgwLCAyMSwgMzIsIC0xMywgNDAsIDg2LCAtNjUsIDg1LCA4MCwgLTgyLCAtMzgsIC01MiwgMTEwLCAtMTE5LCAxMDAsIDgsCisgICAgNzcsIC0yMywgNjcsIC00MSwgNzMsIDI3LCAzOCwgOSwgLTExLCAtMzIsIC0zMCwgNzUsIC0xNSwgNjcsIC00MSwgNDYsIDI3LCAtODksIDksIDExNywgLTM4LCAtMTQsCisgICAgLTgxLCAtNCwgNzEsIDExMywgLTc5LCA4MSwgLTM2LCA2MywgMTUsIC03MCwgMTA0LCAzNCwgLTU2LCAtMzksIDkzLCAtMzQsIC0xMjcsIDkwLCAtMzYsIDczLCA0NywKKyAgICAtNzYsIDExMywgNTUsIDEyMywgLTkyLCA0OCwgMTE2LCAxMDgsIC0xMjMsIDMxLCAtNjcsIC0zOSwgMywgLTksIDYsIDEzLCAtMTcsIC01MCwgLTEyNSwgMSwgMTA1LAorICAgIDEyMSwgMTAwLCA3OSwgODIsIC04NSwgMTIzLCAtMzMsIC03MywgNTQsIC02MSwgLTExMywgMTIxLCAtMTEwLCA2OSwgMTE5LCA5NCwgLTExMiwgLTEyMCwgLTM0LAorICAgIC0zNSwgLTEwNCwgLTExNiwgNDQsIDg1LCAxMDksIC0xMDQsIDEyNywgMTIwLCA4NywgNzUsIC00OCwgLTExNSwgNzQsIDg1LCAtNDcsIC01MywgMTYsIC01LCA5MiwKKyAgICA2NywgLTMyLCAxMiwgNzksIDEwOSwgMTA1LCA1LCAtOTIsIDUxLCA0NiwgOTYsIC05NiwgNjMsIDEwNiwgODIsIC01NCwgLTk1LCAyMCwgLTYwLCAtMjMsIDQ4LCAtNSwKKyAgICAtMTI4LCAyMiwgMjMsIC05MywgOTMsIC02NCwgMzUsIDIxLCAtMTIxLCAtNzksIDU5LCAtMSwgLTUwLCA1NSwgLTcsIC0xMCwgLTg1LCAzLCAtNywgMTIxLCA5OCwgNSwKKyAgICAtMTksIDc2LCAtNzgsIC0xMjgsIC00NywgLTQyLCA2MSwgLTU5LCAtNDYsIC0yNCwgLTE2LCAtNTEsIC00OCwgMTIyLCAtMjYsIDc0LCAtOTEsIDU0LCA1MywgNDYsCisgICAgNzQsIDI1LCAtMzAsIC03NCwgNTIsIC0yMiwgMTE4LCAtMTAzLCAtNTMsIC0xMTMsIDQ0LCAtMTksIDcwLCAtODYsIDEwNiwgNzIsIC02OCwgLTg2LCAxMTAsIDM0LAorICAgIC0zNSwgNTcsIC00MywgMzIsIC00LCAxNCwgMTAyLCAyNSwgLTc2LCAtODQsIC04NiwgLTgzLCAtMiwgLTEwNywgLTQsIDQ5LCAtOTcsIC04MywgLTk1LCA2LCAxMDAsCisgICAgLTczLCA2LCAzNCwgNDksIDU5LCA1MCwgMzAsIC04LCA2LCAtNTUsIDI0LCAtNiwgNjcsIC0xMjEsIDExNSwgNDAsIC01MCwgLTc1LCAtNDYsIC0yNiwgMTExLCAtMjAsCisgICAgLTc1LCAtODMsIC0xNiwgLTQ4LCA2NSwgLTY0LCAxMTksIDYyLCAtNTksIDMsIC0xMiwgMTA5LCAwLCAtMTE4LCAtOTQsIDE3LCAtNTEsIDEyNCwgNjMsIDQyLCAtMywKKyAgICA0NCwgNTMsIC04MSwgLTM1LCAtMzMsIC04MywgMTE1LCAtMTE0LCAtNCwgLTEwNCwgNDQsIDcsIC04MSwgLTk3LCAtMTAyLCAxMDQsIDI5LCAtOTcsIDcwLCA5MSwgMywKKyAgICA4OCwgNjcsIC0xMjcsIDc4LCAtOTIsIC0xNiwgLTM0LCAtMTgsIC04MSwgLTEyNSwgLTM4LCAxMTcsIC03OCwgLTM2LCA5LCA3NiwgLTg1LCAxMjEsIDIsIDEwLAorICAgIDExNCwgNjUsIC01LCAtMjksIC0zNCwgMTAxLCAyMCwgLTEwOCwgNDYsIC05MCwgLTk4LCA4NSwgLTYyLCAtNTEsIDEwOCwgLTcyLCAtNTEsIDQ0LCAyMiwgMTEyLAorICAgIDEyMSwgNTgsIC01OCwgMTA5LCAtOTYsIDU4LCAxMDMsIDI3LCAtODgsIC04MSwgOTksIC03LCAtMzMsIC0xMTMsIDY0LCAtMTIyLCAxMTUsIDE5LCAtOTMsIDM3LAorICAgIC0xOSwgOTMsIC05OCwgNzgsIDExNSwgOTEsIC04OCwgLTgyLCAtMzYsIDYxLCA5MCwgNzcsIDI3LCAyNiwgLTExNiwgODAsIDkwLCA4NSwgNiwgLTg3LCA1OSwgMTEwLAorICAgIDYzLCAyMCwgLTgxLCAtMTI3LCAtNTMsIDE4LCAtNzMsIDM5LCA3NSwgNzksIC0xMDYsIDI5LCAtNTAsIC0xMywgNDMsIC05OSwgLTkyLCAxMDksIDgwLCAtODMsIDY5LAorICAgIC0xMDIsIDM4LCA5MCwgLTQxLCA0OCwgLTQ3LCAtOTMsIDE4LCAxMTYsIDMyLCA5MCwgLTczLCAtOTYsIDkwLCA0OSwgMTksIDczLCAtMzUsIDYwLCA1MywgLTcyLAorICAgIC01MiwgODQsIDUyLCAyNywgLTY3LCAtMTE0LCA4MiwgNzksIC04OSwgLTgwLCAtMTExLCAxMjQsIC01MSwgODAsIDExMCwgLTc2LCAxMjUsIDE4LCAtNzMsIDQ0LAorICAgIC0xMDAsIDExOCwgLTE2LCAtNjQsIC0zNSwgMjIsIC04NiwgLTExNiwgLTE5LCAtMTAxLCAtMzUsIDQyLCA4NSwgLTgzLCA2OSwgLTY1LCAzNywgLTEwNCwgLTg4LAorICAgIC0xMDgsIC0yNSwgLTksIDE1LCA5MSwgLTEwMCwgLTg2LCA4LCAtNzUsIC0zNywgMTAzLCAzLCAtNjksIC05LCAxMTQsIC0yNSwgMjUsIC04NywgMTE4LCAtNzUsCisgICAgLTExNSwgLTgsIDc0LCA1MywgNzMsIDQ2LCAtMjIsIC0xMDgsIDMwLCA3MSwgLTk2LCA0MCwgLTc2LCAxMjEsIDcxLCAtNjMsIDk1LCA5NiwgMTEzLCAtNTQsIDg3LAorICAgIDEsIC03OSwgMiwgLTQwLCAxMSwgMjIsIC0xMTgsIC0xMTcsIDk0LCAtNDQsIC0xMTIsIC0yNywgLTg2LCA5NiwgLTQsIC01OCwgMTIxLCAtNzEsIDU0LCAtNTgsCisgICAgLTcxLCAtMTI1LCAtNjUsIDEyNiwgLTExNiwgLTEwNywgMTI1LCAtMjgsIC03NCwgOTcsIDE1LCAtNzYsIDU5LCAtMjYsIDU4LCAtMzgsIC0zOSwgMTIyLCA1NSwgODUsCisgICAgLTEwOSwgLTExNCwgNzUsIDI1LCAtNzQsIDU3LCAtNzgsIC0xMCwgLTc2LCAtMTE1LCAtMTIsIDI5LCA4NCwgODYsIDk3LCA1LCAxMTYsIC0xMTQsIDYyLCAtOTgsCisgICAgLTM2LCAxMDUsIC0xMTksIC0xOSwgMTIsIDExLCA0OSwgNzYsIDIxLCA1NiwgMSwgMTE1LCAxMTUsIDQyLCAtNjcsIDYwLCAtNDAsIDE5LCAzOCwgNTAsIDMzLCAxMTIsCisgICAgOTgsIDEyMywgLTc2LCAtNzQsIDUwLCA2NiwgMTgsIC02MSwgLTExNCwgMzYsIC05NSwgOTIsIDEyNCwgMjAsIC01NiwgMjksIC00MSwgMjgsIC00LCAtMTA2LCAxMTUsCisgICAgLTgzLCA5OCwgLTQ3LCA5NiwgODcsIC03MiwgOTYsIC04MywgLTkzLCAxLCAxMTIsIC00MywgNTksIC04MCwgLTI0LCA0NiwgLTQ1LCA4NywgOTIsIC0xMDgsIC03OCwKKyAgICAxMDEsIC0xMTIsIDExMSwgLTExOSwgLTY3LCAyNiwgOTcsIDEsIDM2LCAtMTI4LCAxMjAsIDgsIC0yMCwgODQsIDEwNywgLTksIC0xMDQsIDI1LCAwLCAtMzYsIDU4LAorICAgIDExMSwgODEsIC04MywgNjUsIDQyLCA1MSwgNjEsIC03MSwgMTE4LCAxMTEsIDI5LCAtOTMsIDM5LCAtNTYsIC03MiwgLTE4LCAtNTMsIDAsIDM0LCAtNzcsIC01OSwKKyAgICAxMTIsIC03OSwgNTEsIDg2LCA4MiwgLTI0LCA2NCwgLTEyMCwgLTEsIC0xMDIsIC0zLCA0MiwgLTkzLCAxNiwgMzgsIDEwMCwgMzksIC0xMjQsIDkyLCAtODksIDMxLAorICAgIDk0LCAtMzIsIDQwLCAxOSwgLTgsIDQ4LCAtODMsIC02NiwgLTY4LCAxMTAsIC03MiwgMzYsIC0zOCwgLTkxLCAtNjMsIDMzLCAzNSwgLTk2LCAtMTIxLCAtMTE5LAorICAgIC01OSwgNTYsIDg5LCAtMTE3LCAtMTIzLCAtNzksIC02OCwgNDIsIC00LCAtMTE2LCAtMTA4LCAtMTA0LCAtODQsIC0xMTEsIC0yNiwgOTQsIC0zOCwgNjEsIDk0LAorICAgIC03MiwgLTg1LCAtMTgsIC0zMCwgMTE4LCAtMTQsIC05NCwgLTc0LCAtMjQsIC0yMSwgLTkwLCAtODMsIC0xMTYsIC0zOCwgLTgsIDksIC0xNywgNzIsIC02MiwgLTc4LAorICAgIC03NSwgNDcsIC0xMTcsIDEwOSwgMTI3LCAtODcsIC0zNiwgNTMsIDkwLCAxNiwgLTcyLCAtNTAsIDQwLCA4NywgOTcsIC01MSwgLTk2LCAtNTUsIC0xMjAsIC0zMiwKKyAgICAtNTgsIC0yMSwgMTAyLCAxMTcsIC0xMjEsIC05OCwgNzQsIC02NywgMTA0LCAtMTIyLCAxMDgsIC0zLCAtOTYsIDY0LCAtMTE0LCAtMywgMzAsIDQ4LCAtMTQsIDQ0LAorICAgIC00MSwgOTEsIDU0LCA1OCwgODAsIC0xMywgLTg4LCAxMjEsIDMyLCAxMjIsIDI1LCAyNCwgOSwgNzIsIDE3LCAtMSwgLTkzLCAtNjYsIDk2LCAtODQsIDQsIDM3LAorICAgIDY5LCA5MSwgNjQsIDMyLCA0NiwgODksIDcsIC0zMiwgLTEyMCwgMTAsIC0zOCwgLTMsIC01OSwgLTc1LCAxNCwgMTE2LCAxMTUsIDEyMSwgOTksIDEyMiwgLTk1LAorICAgIDEwNywgMSwgNjUsIDcwLCAtNDUsIDM1LCAtNTIsIC04NywgLTU2LCA0MywgMTIxLCAxMiwgLTkzLCAtOCwgODMsIC0xMTgsIDE1LCAtMzMsIC02NywgNDUsIDc0LAorICAgIC02NiwgLTMxLCAtMjgsIDUsIDEwNCwgLTEzLCAxMTMsIDE5LCAtODksIDEwNSwgNjYsIC04MiwgNzQsIDU0LCAtMTA0LCA2OSwgMTAzLCA4NiwgMTE4LCAtNDQsCisgICAgLTc1LCAtNDcsIDgxLCAtNzUsIDgsIC0zMiwgLTk1LCAxMjEsIDQ4LCAtMTIxLCAtMTA2LCAtODgsIC0xNSwgLTUyLCAtOTksIC03OCwgNTgsIDExMywgMTYsIDcxLAorICAgIC00OCwgNzYsIDgwLCA4MSwgNTksIDQzLCAtMTA2LCAyNywgLTQ5LCAyLCAtMTEsIC03MSwgLTMwLCAtODAsIC00NCwgNjIsIC0xMTMsIC0yMCwgMTIsIC02MCwgLTg3LAorICAgIDIyLCAtMzAsIDY0LCAtMTIwLCAxMjcsIDEyMSwgNDcsIDEyNywgNTgsIC05OCwgLTQsIDc5LCAtNzIsIC0xMTcsIDExNSwgNTIsIDk1LCA0MCwgLTU5LCAtMTI1LAorICAgIC0zMywgMTI1LCAtOTYsIC05MywgLTkyLCAxNywgLTk5LCAtODUsIDEwLCAtMTE5LCA5MSwgLTExNSwgLTYzLCAtMzIsIC0xMSwgLTEwMiwgLTEwNSwgLTkzLCA5MCwKKyAgICAzNywgOTQsIC0xMDQsIC00NywgLTYzLCAtOTQsIDE1LCAtMzQsIDIwLCA3MywgLTU5LCA4NSwgLTMxLCA2LCAxMDYsIC02NywgMTQsIC0xMjUsIDI4LCAtNjMsIDQwLAorICAgIDg2LCAtNjgsIDEwNCwgLTIyLCAxMjQsIC0yNywgLTg0LCAtMTMsIDQzLCAtNDUsIC0zMCwgLTk1LCA5NSwgMTYsIDc5LCAyMywgLTY2LCAtNzgsIC03NCwgNDMsIDg2LAorICAgIDcwLCAtOTUsIDkwLCAtNjUsIC0xLCAtNTgsIDU0LCAxMiwgNDcsIC00NywgMjgsIDkxLCAtNTQsIC0xOSwgLTc1LCAtNDMsIDEyLCAtMTA4LCAxMiwgNzEsIDM4LAorICAgIDExOCwgLTgsIDEsIDQyLCAtMTEzLCAtNiwgMSwgLTkzLCAxMTgsIDY3LCAtNzksIDI1LCAtODAsIDExOCwgMzQsIC0yOSwgMCwgLTIzLCA4NiwgNTMsIC0xMTgsIDg5LAorICAgIDExMiwgMCwgLTYxLCAtODgsIDc2LCAtMjQsIDU5LCAtNzUsIDIzLCAtMSwgNjQsIC04MCwgLTUyLCAtNDAsIDM0LCAtNTAsIC0xOSwgLTEyNywgNTcsIDc5LCA0MywKKyAgICA5MiwgLTExMywgLTk2LCA3MywgMCwgMzMsIDEyMiwgNDIsIDEwNCwgLTYyLCAtNjYsIC0xMDgsIC0xMDQsIDQ1LCAtMTIwLCA2OSwgLTMsIC0yMCwgLTExMywgLTQwLAorICAgIC03MCwgLTk2LCA3MiwgLTIxLCAtOTUsIDEsIC0xNiwgLTEyNCwgLTg3LCAxMjUsIDU2LCAtMTA4LCA3LCAtMTEyLCAtMTA0LCAxMDUsIDgwLCAtMzQsIC05MywgMjQsCisgICAgLTYsIDM1LCAtMzgsIDQyLCAtNCwgMjMsIC0xMTIsIDQwLCA0NSwgMTA2LCAtNzIsIDI5LCA0NCwgLTM2LCAtNjEsIC04LCAtOTMsIC0zNCwgMywgLTQxLCAtMjYsCisgICAgMTIxLCA2LCAxMDAsIC0xNCwgLTExMiwgLTExNywgLTE1LCAtMTIwLCAtOTIsIDQ0LCAtNDMsIDk0LCAtMTMsIDEyMSwgLTU5LCAtODIsIC02OCwgNywgLTE5LAorICAgIC0xMTAsIC0xMjEsIC01OCwgLTExOCwgLTEyMSwgOTIsIC04LCAzMywgLTEyMCwgLTI4LCAtOTUsIC0zMSwgLTEyMCwgLTYyLCA0OSwgNTEsIDMsIDY4LCA0LCAtNTYsCisgICAgNTEsIC0xMywgLTkwLCA0NywgLTE2LCAtMjQsIDYzLCAxMjUsIC0xMSwgLTk0LCA5OSwgNjksIC04NCwgLTU0LCAxMjcsIDgxLCAtMTIwLCA0MiwgLTQ3LCAtMTI4LAorICAgIC0xMywgMzgsIDExNSwgNTksIC0xMTIsIC0zMCwgLTksIC0xMTYsIDEyMSwgNjMsIDExMSwgMzIsIC0xMTYsIC0yLCAwLCAtMzMsIDc5LCAtNjcsIDkwLCAtNjUsCisgICAgLTEwOCwgLTEwNywgLTUsIC0xMDcsIDExLCAtMTAyLCA5MSwgMTA2LCAtNDIsIDc0LCA0NSwgLTgwLCAtNjUsIDU0LCAzNiwgMTIxLCAtMTI1LCAtMTE4LCAtMzQsCisgICAgLTUxLCAzNiwgLTg1LCAtNzgsIDg2LCAxMjEsIC0xMDMsIC0zOSwgMzUsIC03NiwgMTcsIDU5LCA2OCwgLTQwLCAtNDMsIC0yNywgNjMsIC03NiwgMTI2LCAtOTQsCisgICAgMTgsIDg3LCAyMCwgOTIsIDM4LCAtNiwgLTU0LCA5LCA0NSwgOTMsIC01NywgNTMsIC0xMSwgLTQ0LCAtMzgsIC0yNCwgLTEyNiwgLTQwLCAtMjQsIC0zNSwgLTEyMSwKKyAgICAtNTUsIC04NywgLTYzLCA3MCwgLTg4LCAxMywgLTc4LCAtODksIDIsIDUwLCA1OSwgNCwgLTE0LCA4MSwgMjUsIDM0LCAtMjAsIDg3LCAxMTYsIC03NiwgLTMxLAorICAgIC05MywgMTUsIDExMiwgNjEsIC00MywgLTExLCAtODYsIC0yNSwgMTAsIDQxLCAxLCA2MCwgMTA1LCAtNDIsIC05MCwgLTQ0LCAzOCwgOTgsIDEyNiwgLTEyOCwgMjgsCisgICAgOTksIDIwLCAtOTcsIDEwNSwgLTEwMSwgMjcsIC0xMDYsIDEzLCAtMTA4LCAtMTgsIDIzLCAtNzksIDEyMSwgNTcsIDkzLCAtMTYsIC0zNywgLTgyLCAtMSwgLTEyOCwKKyAgICAtNjcsIDk5LCAxMTcsIDc5LCA4NSwgODMsIDEyLCA1MywgLTEwMSwgLTUyLCAtNzUsIDcyLCAtMTI4LCAtNjIsIDQ1LCAtNTQsIDExLCAwLCAtNTgsIC04OCwgMTEsCisgICAgMTIxLCAzMywgODYsIC04NywgMzEsIC01NCwgMTA5LCAtMzcsIDEwLCAxMTksIC05LCA1NSwgLTcsIDc3LCAtNTIsIDkzLCA2NCwgLTYyLCAxMTUsIC04OCwgLTQsCisgICAgNjcsIC0xLCAtMzcsIDMxLCAxMDcsIDkwLCAtMTA5LCAtMTIxLCA3MSwgMTA1LCAtMTIzLCA2MSwgNzUsIDg5LCAxMDgsIC05MSwgLTYsIDExNSwgNDUsIDEwOSwgMTAsCisgICAgLTM1LCAtODQsIDQxLCAxMjcsIDEwNCwgLTg0LCAtNzAsIC02LCAtMTE4LCA2LCAxMTAsIDk5LCAtNywgLTExMiwgMTUsIC03OSwgLTIwLCA1MSwgLTQxLCA3OCwgMjUsCisgICAgLTk3LCAtMiwgLTEyMSwgLTExNywgNywgLTg3LCAtNzYsIDYwLCAtNywgLTcsIDAsIDUxLCA5MSwgMzQsIDg1LCAyMSwgLTEsIDEwOCwgNDEsIDgsIDEyNiwgLTI1LAorICAgIC0zMCwgNjgsIDEwOSwgLTUyLCAtNTEsIDEsIC0xMTEsIDExLCAtMjIsIC03MCwgLTMzLCA5NSwgNDAsIDYsIDYzLCA1MiwgLTY2LCAtMjAsIC02LCAtMTA0LCA4MSwKKyAgICA1NywgMjIsIDgyLCAxMTksIDEyNiwgNzYsIC0xMCwgLTEwOCwgLTYzLCAtMTIzLCAxOSwgMjMsIC0xMDYsIC0xLCAxMTcsIDI2LCAxMTIsIC04NSwgLTc4LCA4MSwKKyAgICAtMTE2LCA1MywgODYsIC0xMjYsIC04MCwgMTIyLCAzNiwgNjcsIDE4LCAxOSwgLTExNCwgNzMsIDEyNSwgLTMsIC02OSwgOTksIDEwLCAtMzAsIDE5LCAxMTIsCisgICAgLTEwMywgMCwgLTYxLCA0NywgLTEwNiwgLTQ1LCAtMTA1LCAtMTA3LCAtNTYsIDIzLCAxNCwgNTEsIC03MCwgMzAsIC0zMiwgMzAsIDcsIDIyLCAtMzEsIC00MSwgMTksCisgICAgLTQ3LCAtNjQsIC01MiwgMTE5LCAtNjYsIDU0LCAtMTA5LCAtODcsIDMsIDk1LCAtMTI0LCA5NCwgLTQ4LCAzNiwgLTQwLCAxMywgMTksIDkxLCAtMTQsIC0xMTUsCisgICAgMTAzLCA2NiwgMjAsIDQ0LCA0NywgOCwgLTQwLCA0LCAtMTE0LCAtMTEwLCAtNDcsIC0yOCwgLTEwOCwgODksIDAsIC03LCAtNzEsIC05MSwgLTQzLCA5OCwgOCwKKyAgICAtODUsIC05OCwgLTExMywgMTAzLCAtNzEsIDY5LCAxNCwgLTk1LCAtMzYsIDkyLCAtMTcsIC02NiwgLTk1LCAxMjMsIC0xNSwgNTIsIDg4LCAtNjAsIC0yMywgMTIzLAorICAgIC02MSwgLTQsIC0zMywgLTQ1LCA3NywgNTcsIC0xMjEsIDExOSwgMTE2LCAtNDAsIC0zMSwgLTE1LCA5NiwgNTQsIC00OSwgLTQ0LCAzNiwgLTM3LCAxMTEsIC00NSwKKyAgICAtMTcsIDEyLCAxNCwgMjEsIDEwNSwgNDgsIDUxLCA0MiwgLTg5LCA1NSwgNjEsIC01LCAtMiwgLTM2LCAtODgsIDM2LCAtMzUsIC0yOSwgLTcsIC02OCwgLTI4LAorICAgIC03NiwgNSwgLTM4LCAtNjYsIC03MiwgMjQsIC0xMjAsIDgsIC04NiwgLTI4LCAwLCA3MSwgLTg5LCAyMCwgLTQwLCAtMTAwLCA2MSwgLTU3LCA1MiwgMjMsIDY2LAorICAgIC0yLCAtMjQsIC03LCA4NiwgLTEwMCwgMTExLCAtMTE0LCAtNDcsIC0yNSwgLTQwLCAtNjEsIC02NywgLTEwNCwgMzMsIDQ5LCAxNiwgLTExNSwgOSwgLTY0LCAyNywKKyAgICAxMjIsIDM0LCAtMzMsIC04OSwgLTExMywgLTUwLCA0MiwgMTExLCAtMTQsIDExMCwgNDMsIDMyLCAtMTEyLCAxMDEsIC01OSwgMjgsIDc2LCAtMiwgLTExNywgNDcsCisgICAgNSwgLTczLCAtNzUsIDIxLCAtOTEsIDk5LCA4MSwgOTMsIC0xNywgLTExOSwgNjgsIC0yMSwgLTg0LCAtNTEsIC02NCwgLTk4LCA1OCwgLTMzLCA3NywgNCwgMTgsCisgICAgMTE2LCA2MiwgMTExLCAtMTA1LCAtMTMsIDkxLCAtOTIsIDgxLCAtMzQsIDQwLCAxNywgLTEyOCwgODUsIC0xOSwgMjAsIDgsIDkyLCA4MywgMTAsIDMsIDQwLCA4OSwKKyAgICA2MCwgMTA5LCAtMjMsIDU5LCAtNjYsIC0yMiwgNDMsIDEyNCwgMjUsIC0xMDUsIDc3LCAxNCwgNzUsIC0xMTEsIDEzLCA0NSwgLTkwLCAtMTA4LCAtNzksIDc4LAorICAgIC00NSwgLTU1LCAtNDQsIC04NiwgLTIwLCAtNDEsIC0xMSwgNjUsIDc2LCAtNzksIDkxLCAtMjMsIDc3LCAtODQsIDExNCwgLTEwOSwgMiwgLTcxLCA2OCwgOCwgLTMxLAorICAgIDk5LCA5NywgLTEwNCwgLTk0LCA2OSwgNjQsIC0xNiwgLTQ4LCAtNzgsIDk5LCAtNTgsIC0xNywgOTUsIDk2LCAtNjQsIDQ3LCA5NiwgLTY5LCA2MCwgMjgsIDExNCwKKyAgICA2NCwgLTEyOCwgLTEyOCwgMTE0LCAyOCwgLTEyNCwgNzIsIC00MSwgLTQ4LCA4MiwgLTYsIDYzLCAtMjcsIC0xMjYsIC04NiwgLTEyMSwgMCwgNCwgNCwgMzUsCisgICAgLTExMSwgNjYsIDY0LCAtNjEsIDExNywgLTkyLCA0OCwgODgsIC0xMjgsIDExNiwgNywgLTI0LCAtMTExLCAtNTUsIDk2LCAtNTksIC05NiwgNDksIC03MCwgLTQxLAorICAgIC00NywgODUsIDg2LCAtMzcsIC0zMiwgNTMsIC00OSwgNjIsIDY4LCA4MCwgLTM3LCA5NSwgMjksIC0xMTQsIDExLCAtNjUsIDkwLCAtOTksIC05NywgMTAxLCA5NiwKKyAgICAtODgsIDUsIDM0LCAzLCAyMywgLTIyLCA0MiwgNCwgLTQsIDE3LCAtMTIxLCAxMDYsIC02MCwgMzMsIC0zOCwgLTMyLCAtOCwgNDEsIC04NywgLTQsIC0zNSwgLTEwMiwKKyAgICA3LCAxOCwgMzUsIC03LCA4NSwgLTE4LCA2MCwgMTUsIDM0LCA4MiwgNDYsIDY4LCA2MywgODAsIC0zOCwgNCwgNTEsIC03NCwgLTM0LCA4MywgLTMzLCAtOCwgNDQsCisgICAgODcsIC0xOCwgLTgsIDQ2LCAtNTMsIC0xMDksIC0xMjEsIC0xMTQsIDEwLCA2MywgLTM2LCAtMSwgLTEyMywgNjksIDEwNywgLTU4LCAzMywgLTExLCA2MywgLTExNywKKyAgICA2MCwgMjIsIDczLCAtMzYsIDIyLCAtNzYsIC05MiwgLTc0LCAtMzcsIC0zNSwgODcsIDQwLCAtOTcsIC02LCA5NSwgLTI1LCAtMiwgLTk5LCAtMTAxLCAxMDIsIC00OCwKKyAgICA0NSwgLTU1LCA4NSwgOTQsIC00OCwgNTcsIC0xMDAsIDM0LCAxNiwgLTYzLCAtMTYsIDEwNiwgLTc1LCAtNywgLTEwOSwgNzEsIC03NCwgMjAsIC0xNiwgMzcsIDkwLAorICAgIC02MSwgNjksIDE5LCAtMTExLCA5NSwgLTEwNCwgMTE2LCA3NSwgLTY4LCA4NSwgLTgwLCA2NiwgMTI3LCAxMjcsIDY3LCAtOTgsIDEyMSwgNTMsIDIzLCAtMywgNTYsCisgICAgLTg5LCA5OSwgNTcsIDksIDEyMiwgNzYsIDExOSwgMSwgLTExNywgNDcsIC0xMDUsIC00MiwgLTcsIDUxLCAtOCwgLTgxLCA0OCwgLTYwLCAtNjksIC0yOSwgMjQsCisgICAgMTksIC04MSwgNDMsIDMxLCAtMzYsIDYyLCA5NiwgMjAsIC01OCwgMzksIC0xMjIsIC0xMTUsIDcsIC0xMTQsIDExOCwgMjcsIDI3LCA3OCwgLTEwMSwgNzUsIC05MywKKyAgICAtMTA0LCAtOCwgMTE5LCAxMjEsIC05NywgLTg0LCA1OCwgMzMsIDE4LCAtMzUsIC0yOSwgMjAsIDIwLCA3LCAxMTIsIDYwLCAzMSwgLTEyLCA3LCAtMTI4LCAtNTUsCisgICAgLTY4LCAtNywgLTEyLCAtMTE1LCA5NywgMTE1LCA0NCwgLTQ2LCAtNjgsIDEwOCwgMzYsIDEyMSwgLTEsIDg0LCAtNCwgLTI2LCAtMTI2LCA4NSwgLTMyLCAzNiwgMjYsCisgICAgLTE5LCA3MSwgLTEyMSwgLTkyLCAtNTEsIC0xMTYsIDgxLCAtNzEsIC04MywgLTUwLCAyMSwgLTExOSwgLTYwLCAtNzgsIC04NCwgMTAyLCAxOSwgLTI2LCAxMTgsCisgICAgLTUzLCAtMTMsIDE2LCAzNiwgLTY0LCAtODMsIC02NiwgMzIsIC05OSwgNTQsIDgzLCAxMDQsIDYxLCAtMTksIDEwNywgOTUsIC02NiwgLTQyLCAtNiwgMjUsIDg2LAorICAgIC0xMywgLTUzLCAtNDksIC05LCA3NCwgLTEzLCA1OCwgMTI1LCAtOTYsIC0zMiwgLTIyLCAtMjEsIC0xMiwgLTM4LCAtMTE0LCAtODgsIC0xMDAsIDM1LCAtODcsCisgICAgLTEwOCwgLTIsIC0xMDMsIDg3LCAtMTE5LCAtMTA5LCA1MCwgLTI4LCAtMTAxLCAtNCwgLTQzLCAxMDUsIDExOSwgLTExOCwgMTAzLCAtMTA0LCA0MSwgNDcsIDcxLAorICAgIDUzLCAxMSwgLTUzLCA1OSwgLTEzLCAtMTEsIDgzLCAtMzMsIDI4LCAxMSwgNzgsIC01OSwgNzMsIC0zMywgLTYwLCAxMTksIC03MywgLTEyNywgOTgsIDM5LCA3NywKKyAgICAyMSwgLTgsIC0xMDMsIDEwMywgNDQsIC04NywgLTUyLCAtNzQsIDU2LCAtNjMsIC03MCwgLTEyMSwgNDAsIDEwMywgNywgLTEwMCwgMTEzLCA1MywgLTQ2LCA0NCwKKyAgICAxNiwgMzEsIDEwMiwgLTMxLCAxMDQsIC0zOCwgLTEyMCwgMTE4LCAtMTIyLCAtNTUsIDI1LCAxLCA5MiwgMjIsIC0xNCwgMjQsIDEwOCwgOTIsIC05MCwgLTkzLAorICAgIC0xNiwgLTk5LCAtMTMsIC0xMjcsIDc1LCAxMDEsIC00MiwgLTg2LCAtMjksIC01MSwgLTQ5LCAtMTA1LCAtMTE4LCA5MSwgLTU2LCAtNTEsIC03MywgMTE3LCA1MywKKyAgICAtMzksIC03MywgMTIxLCA4MywgLTQ5LCAtMTAsIC04NiwgMTEsIC05NywgNDAsIC0zMywgNiwgLTQwLCAtOSwgLTMyLCA5MiwgLTEwMSwgLTgzLCAxMTYsIC01LAorICAgIC01NywgLTkzLCAtMTIxLCAyLCAzOCwgLTY1LCAtNiwgNDUsIDEwMCwgOTIsIDkyLCA3NCwgMTE1LCA0NSwgLTMzLCA5MiwgLTExLCA3MCwgMzMsIDc2LCA4NSwgOTQsCisgICAgMSwgLTExMSwgLTEwMywgNiwgLTQsIC0zMSwgNDQsIC01MywgLTc3LCAtNDUsIDEwMCwgLTgzLCA5MiwgLTExLCAxMCwgLTcsIDEyNiwgMjMsIDM2LCA2MSwgLTE4LAorICAgIC0yOCwgNjcsIDEyNiwgNTMsIC00NSwgLTc3LCA5NSwgNDMsIC03MywgMzAsIC0zNywgMTIyLCAtNTMsIC03OSwgLTc3LCAtNDIsIDcxLCAtMTI0LCA0MywgLTg5LAorICAgIDYwLCAtODAsIC04OSwgLTY4LCA5NiwgMjksIDEwMywgLTUwLCAtOTMsIDEwNSwgNworICB9OworCisgIHN0YXRpYyBjbGFzcyBQcm94eVN0cmVhbSBleHRlbmRzIEZpbHRlcklucHV0U3RyZWFtIHsKKyAgICBpbnQgcmVhZEJ5dGVzOworCisgICAgUHJveHlTdHJlYW0oSW5wdXRTdHJlYW0gaXMpIHsKKyAgICAgIHN1cGVyKGlzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IHJlYWQoYnl0ZVtdIGIsIGludCBvZmYsIGludCBsZW4pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIucmVhZChiLCBvZmYsIGxlbik7CisgICAgICBpZiAocmVzdWx0ID4gMCkgeworICAgICAgICByZWFkQnl0ZXMgKz0gcmVzdWx0OworICAgICAgfQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0RWFnZXJTdHJlYW0oKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIFByb3h5U3RyZWFtIHBzID0gbmV3IFByb3h5U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShEQVRBKSk7CisgICAgQnJvdGxpSW5wdXRTdHJlYW0gcmVhZGVyID0gbmV3IEJyb3RsaUlucHV0U3RyZWFtKHBzLCAxKTsKKyAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbMV07CisgICAgcmVhZGVyLnJlYWQoYnVmZmVyKTsKKyAgICByZWFkZXIuY2xvc2UoKTsKKyAgICBpbnQgbm9ybWFsUmVhZEJ5dGVzID0gcHMucmVhZEJ5dGVzOworCisgICAgcHMgPSBuZXcgUHJveHlTdHJlYW0obmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKERBVEEpKTsKKyAgICByZWFkZXIgPSBuZXcgQnJvdGxpSW5wdXRTdHJlYW0ocHMsIDEpOworICAgIHJlYWRlci5lbmFibGVFYWdlck91dHB1dCgpOworICAgIHJlYWRlci5yZWFkKGJ1ZmZlcik7CisgICAgcmVhZGVyLmNsb3NlKCk7CisgICAgaW50IGVhZ2VyUmVhZEJ5dGVzID0gcHMucmVhZEJ5dGVzOworCisgICAgLy8gRGlkIG5vdCBjb250aW51ZSBkZWNvZGluZyAtIHN1c3BlbmRlZCBhcyBzb29uIGFzIGVub3VnaCBkYXRhIHdhcyBkZWNvZGVkLgorICAgIGFzc2VydFRydWUoZWFnZXJSZWFkQnl0ZXMgPCBub3JtYWxSZWFkQnl0ZXMpOworICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9IdWZmbWFuLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9IdWZmbWFuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhmN2YyOQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL0h1ZmZtYW4uamF2YQpAQCAtMCwwICsxLDEzNyBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLmRlYzsKKworLyoqCisgKiBVdGlsaXRpZXMgZm9yIGJ1aWxkaW5nIEh1ZmZtYW4gZGVjb2RpbmcgdGFibGVzLgorICovCitmaW5hbCBjbGFzcyBIdWZmbWFuIHsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0xFTkdUSCA9IDE1OworCisgIC8qKgorICAgKiBSZXR1cm5zIHJldmVyc2UocmV2ZXJzZShrZXksIGxlbikgKyAxLCBsZW4pLgorICAgKgorICAgKiA8cD4gcmV2ZXJzZShrZXksIGxlbikgaXMgdGhlIGJpdC13aXNlIHJldmVyc2FsIG9mIHRoZSBsZW4gbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBrZXkuCisgICAqLworICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0TmV4dEtleShpbnQga2V5LCBpbnQgbGVuKSB7CisgICAgaW50IHN0ZXAgPSAxIDw8IChsZW4gLSAxKTsKKyAgICB3aGlsZSAoKGtleSAmIHN0ZXApICE9IDApIHsKKyAgICAgIHN0ZXAgPj49IDE7CisgICAgfQorICAgIHJldHVybiAoa2V5ICYgKHN0ZXAgLSAxKSkgKyBzdGVwOworICB9CisKKyAgLyoqCisgICAqIFN0b3JlcyB7QGNvZGUgaXRlbX0gaW4ge0Bjb2RlIHRhYmxlWzBdLCB0YWJsZVtzdGVwXSwgdGFibGVbMiAqIHN0ZXBdIC4uLCB0YWJsZVtlbmRdfS4KKyAgICoKKyAgICogPHA+IEFzc3VtZXMgdGhhdCBlbmQgaXMgYW4gaW50ZWdlciBtdWx0aXBsZSBvZiBzdGVwLgorICAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByZXBsaWNhdGVWYWx1ZShpbnRbXSB0YWJsZSwgaW50IG9mZnNldCwgaW50IHN0ZXAsIGludCBlbmQsIGludCBpdGVtKSB7CisgICAgZG8geworICAgICAgZW5kIC09IHN0ZXA7CisgICAgICB0YWJsZVtvZmZzZXQgKyBlbmRdID0gaXRlbTsKKyAgICB9IHdoaWxlIChlbmQgPiAwKTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0gY291bnQgaGlzdG9ncmFtIG9mIGJpdCBsZW5ndGhzIGZvciB0aGUgcmVtYWluaW5nIHN5bWJvbHMsCisgICAqIEBwYXJhbSBsZW4gY29kZSBsZW5ndGggb2YgdGhlIG5leHQgcHJvY2Vzc2VkIHN5bWJvbC4KKyAgICogQHJldHVybiB0YWJsZSB3aWR0aCBvZiB0aGUgbmV4dCAybmQgbGV2ZWwgdGFibGUuCisgICAqLworICBwcml2YXRlIHN0YXRpYyBpbnQgbmV4dFRhYmxlQml0U2l6ZShpbnRbXSBjb3VudCwgaW50IGxlbiwgaW50IHJvb3RCaXRzKSB7CisgICAgaW50IGxlZnQgPSAxIDw8IChsZW4gLSByb290Qml0cyk7CisgICAgd2hpbGUgKGxlbiA8IE1BWF9MRU5HVEgpIHsKKyAgICAgIGxlZnQgLT0gY291bnRbbGVuXTsKKyAgICAgIGlmIChsZWZ0IDw9IDApIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBsZW4rKzsKKyAgICAgIGxlZnQgPDw9IDE7CisgICAgfQorICAgIHJldHVybiBsZW4gLSByb290Qml0czsKKyAgfQorCisgIC8qKgorICAgKiBCdWlsZHMgSHVmZm1hbiBsb29rdXAgdGFibGUgYXNzdW1pbmcgY29kZSBsZW5ndGhzIGFyZSBpbiBzeW1ib2wgb3JkZXIuCisgICAqCisgICAqIEByZXR1cm4gbnVtYmVyIG9mIHNsb3RzIHVzZWQgYnkgcmVzdWx0aW5nIEh1ZmZtYW4gdGFibGUKKyAgICovCisgIHN0YXRpYyBpbnQgYnVpbGRIdWZmbWFuVGFibGUoaW50W10gdGFibGVHcm91cCwgaW50IHRhYmxlSWR4LCBpbnQgcm9vdEJpdHMsIGludFtdIGNvZGVMZW5ndGhzLAorICAgICAgaW50IGNvZGVMZW5ndGhzU2l6ZSkgeworICAgIGludCB0YWJsZU9mZnNldCA9IHRhYmxlR3JvdXBbdGFibGVJZHhdOworICAgIGludCBrZXk7IC8vIFJldmVyc2VkIHByZWZpeCBjb2RlLgorICAgIGludFtdIHNvcnRlZCA9IG5ldyBpbnRbY29kZUxlbmd0aHNTaXplXTsgLy8gU3ltYm9scyBzb3J0ZWQgYnkgY29kZSBsZW5ndGguCisgICAgLy8gVE9ETzogZmlsbCB3aXRoIHplcm9lcz8KKyAgICBpbnRbXSBjb3VudCA9IG5ldyBpbnRbTUFYX0xFTkdUSCArIDFdOyAvLyBOdW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGguCisgICAgaW50W10gb2Zmc2V0ID0gbmV3IGludFtNQVhfTEVOR1RIICsgMV07IC8vIE9mZnNldHMgaW4gc29ydGVkIHRhYmxlIGZvciBlYWNoIGxlbmd0aC4KKyAgICBpbnQgc3ltYm9sOworCisgICAgLy8gQnVpbGQgaGlzdG9ncmFtIG9mIGNvZGUgbGVuZ3Rocy4KKyAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IGNvZGVMZW5ndGhzU2l6ZTsgc3ltYm9sKyspIHsKKyAgICAgIGNvdW50W2NvZGVMZW5ndGhzW3N5bWJvbF1dKys7CisgICAgfQorCisgICAgLy8gR2VuZXJhdGUgb2Zmc2V0cyBpbnRvIHNvcnRlZCBzeW1ib2wgdGFibGUgYnkgY29kZSBsZW5ndGguCisgICAgb2Zmc2V0WzFdID0gMDsKKyAgICBmb3IgKGludCBsZW4gPSAxOyBsZW4gPCBNQVhfTEVOR1RIOyBsZW4rKykgeworICAgICAgb2Zmc2V0W2xlbiArIDFdID0gb2Zmc2V0W2xlbl0gKyBjb3VudFtsZW5dOworICAgIH0KKworICAgIC8vIFNvcnQgc3ltYm9scyBieSBsZW5ndGgsIGJ5IHN5bWJvbCBvcmRlciB3aXRoaW4gZWFjaCBsZW5ndGguCisgICAgZm9yIChzeW1ib2wgPSAwOyBzeW1ib2wgPCBjb2RlTGVuZ3Roc1NpemU7IHN5bWJvbCsrKSB7CisgICAgICBpZiAoY29kZUxlbmd0aHNbc3ltYm9sXSAhPSAwKSB7CisgICAgICAgIHNvcnRlZFtvZmZzZXRbY29kZUxlbmd0aHNbc3ltYm9sXV0rK10gPSBzeW1ib2w7CisgICAgICB9CisgICAgfQorCisgICAgaW50IHRhYmxlQml0cyA9IHJvb3RCaXRzOworICAgIGludCB0YWJsZVNpemUgPSAxIDw8IHRhYmxlQml0czsKKyAgICBpbnQgdG90YWxTaXplID0gdGFibGVTaXplOworCisgICAgLy8gU3BlY2lhbCBjYXNlIGNvZGUgd2l0aCBvbmx5IG9uZSB2YWx1ZS4KKyAgICBpZiAob2Zmc2V0W01BWF9MRU5HVEhdID09IDEpIHsKKyAgICAgIGZvciAoa2V5ID0gMDsga2V5IDwgdG90YWxTaXplOyBrZXkrKykgeworICAgICAgICB0YWJsZUdyb3VwW3RhYmxlT2Zmc2V0ICsga2V5XSA9IHNvcnRlZFswXTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0b3RhbFNpemU7CisgICAgfQorCisgICAgLy8gRmlsbCBpbiByb290IHRhYmxlLgorICAgIGtleSA9IDA7CisgICAgc3ltYm9sID0gMDsKKyAgICBmb3IgKGludCBsZW4gPSAxLCBzdGVwID0gMjsgbGVuIDw9IHJvb3RCaXRzOyBsZW4rKywgc3RlcCA8PD0gMSkgeworICAgICAgZm9yICg7IGNvdW50W2xlbl0gPiAwOyBjb3VudFtsZW5dLS0pIHsKKyAgICAgICAgcmVwbGljYXRlVmFsdWUodGFibGVHcm91cCwgdGFibGVPZmZzZXQgKyBrZXksIHN0ZXAsIHRhYmxlU2l6ZSwKKyAgICAgICAgICAgIGxlbiA8PCAxNiB8IHNvcnRlZFtzeW1ib2wrK10pOworICAgICAgICBrZXkgPSBnZXROZXh0S2V5KGtleSwgbGVuKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGaWxsIGluIDJuZCBsZXZlbCB0YWJsZXMgYW5kIGFkZCBwb2ludGVycyB0byByb290IHRhYmxlLgorICAgIGludCBtYXNrID0gdG90YWxTaXplIC0gMTsKKyAgICBpbnQgbG93ID0gLTE7CisgICAgaW50IGN1cnJlbnRPZmZzZXQgPSB0YWJsZU9mZnNldDsKKyAgICBmb3IgKGludCBsZW4gPSByb290Qml0cyArIDEsIHN0ZXAgPSAyOyBsZW4gPD0gTUFYX0xFTkdUSDsgbGVuKyssIHN0ZXAgPDw9IDEpIHsKKyAgICAgIGZvciAoOyBjb3VudFtsZW5dID4gMDsgY291bnRbbGVuXS0tKSB7CisgICAgICAgIGlmICgoa2V5ICYgbWFzaykgIT0gbG93KSB7CisgICAgICAgICAgY3VycmVudE9mZnNldCArPSB0YWJsZVNpemU7CisgICAgICAgICAgdGFibGVCaXRzID0gbmV4dFRhYmxlQml0U2l6ZShjb3VudCwgbGVuLCByb290Qml0cyk7CisgICAgICAgICAgdGFibGVTaXplID0gMSA8PCB0YWJsZUJpdHM7CisgICAgICAgICAgdG90YWxTaXplICs9IHRhYmxlU2l6ZTsKKyAgICAgICAgICBsb3cgPSBrZXkgJiBtYXNrOworICAgICAgICAgIHRhYmxlR3JvdXBbdGFibGVPZmZzZXQgKyBsb3ddID0KKyAgICAgICAgICAgICAgKHRhYmxlQml0cyArIHJvb3RCaXRzKSA8PCAxNiB8IChjdXJyZW50T2Zmc2V0IC0gdGFibGVPZmZzZXQgLSBsb3cpOworICAgICAgICB9CisgICAgICAgIHJlcGxpY2F0ZVZhbHVlKHRhYmxlR3JvdXAsIGN1cnJlbnRPZmZzZXQgKyAoa2V5ID4+IHJvb3RCaXRzKSwgc3RlcCwgdGFibGVTaXplLAorICAgICAgICAgICAgKGxlbiAtIHJvb3RCaXRzKSA8PCAxNiB8IHNvcnRlZFtzeW1ib2wrK10pOworICAgICAgICBrZXkgPSBnZXROZXh0S2V5KGtleSwgbGVuKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvU2V0RGljdGlvbmFyeVRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1NldERpY3Rpb25hcnlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ5YThmMAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1NldERpY3Rpb25hcnlUZXN0LmphdmEKQEAgLTAsMCArMSw3OSBAQAorLyogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLmRlYzsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEubmlvLmNoYW5uZWxzLkZpbGVDaGFubmVsOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKgorICogVGVzdHMgZm9yIHtAbGluayBEaWN0aW9uYXJ5fS4KKyAqLworQFJ1bldpdGgoSlVuaXQ0LmNsYXNzKQorcHVibGljIGNsYXNzIFNldERpY3Rpb25hcnlUZXN0IHsKKworICAvKiogU2VlIHtAbGluayBTeW50aFRlc3R9ICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBCQVNFX0RJQ1RfV09SRCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4MDIKKyAgICB9OworCisgIC8qKiBTZWUge0BsaW5rIFN5bnRoVGVzdH0gKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIE9ORV9DT01NQU5EID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhlMywgKGJ5dGUpIDB4YjQsIChieXRlKSAweDBkLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDA3LCAoYnl0ZSkgMHg1YiwKKyAgICAgIChieXRlKSAweDI2LCAoYnl0ZSkgMHgzMSwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDExLCAoYnl0ZSkgMHg4NiwgKGJ5dGUpIDB4MDIKKyAgICB9OworCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RTZXREaWN0aW9uYXJ5KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbMTZdOworICAgIEJyb3RsaUlucHV0U3RyZWFtIGRlY29kZXI7CisKKyAgICAvLyBObyBkaWN0aW9uYXJ5IHNldDsgc3RpbGwgZGVjb2Rpbmcgc2hvdWxkIHN1Y2NlZWQsIGlmIG5vIGRpY3Rpb25hcnkgZW50cmllcyBhcmUgdXNlZC4KKyAgICBkZWNvZGVyID0gbmV3IEJyb3RsaUlucHV0U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShPTkVfQ09NTUFORCkpOworICAgIGFzc2VydEVxdWFscygzLCBkZWNvZGVyLnJlYWQoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKSk7CisgICAgYXNzZXJ0RXF1YWxzKCJhYWEiLCBuZXcgU3RyaW5nKGJ1ZmZlciwgMCwgMywgIlVTLUFTQ0lJIikpOworICAgIGRlY29kZXIuY2xvc2UoKTsKKworICAgIC8vIERlY29kaW5nIG9mIGRpY3Rpb25hcnkgaXRlbSBtdXN0IGZhaWwuCisgICAgZGVjb2RlciA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oQkFTRV9ESUNUX1dPUkQpKTsKKyAgICBib29sZWFuIGRlY29kaW5nRmFpbGVkID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgIGRlY29kZXIucmVhZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpOworICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICBkZWNvZGluZ0ZhaWxlZCA9IHRydWU7CisgICAgfQorICAgIGFzc2VydEVxdWFscyh0cnVlLCBkZWNvZGluZ0ZhaWxlZCk7CisgICAgZGVjb2Rlci5jbG9zZSgpOworCisgICAgLy8gTG9hZCBkaWN0aW9uYXJ5IGRhdGEuCisgICAgRmlsZUNoYW5uZWwgZGljdGlvbmFyeUNoYW5uZWwgPQorICAgICAgICBuZXcgRmlsZUlucHV0U3RyZWFtKFN5c3RlbS5nZXRQcm9wZXJ0eSgiUkZDX0RJQ1RJT05BUlkiKSkuZ2V0Q2hhbm5lbCgpOworICAgIEJ5dGVCdWZmZXIgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlDaGFubmVsLm1hcChGaWxlQ2hhbm5lbC5NYXBNb2RlLlJFQURfT05MWSwgMCwgMTIyNzg0KS5sb2FkKCk7CisgICAgaW50W10gc2l6ZUJpdHMgPSB7CisgICAgICAwLCAwLCAwLCAwLCAxMCwgMTAsIDExLCAxMSwgMTAsIDEwLCAxMCwgMTAsIDEwLCA5LCA5LCA4LCA3LCA3LCA4LCA3LCA3LCA2LCA2LCA1LCA1CisgICAgfTsKKyAgICBEaWN0aW9uYXJ5LnNldERhdGEoZGljdGlvbmFyeSwgc2l6ZUJpdHMpOworCisgICAgLy8gUmV0cnkgZGVjb2Rpbmcgb2YgZGljdGlvbmFyeSBpdGVtLgorICAgIGRlY29kZXIgPSBuZXcgQnJvdGxpSW5wdXRTdHJlYW0obmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKEJBU0VfRElDVF9XT1JEKSk7CisgICAgYXNzZXJ0RXF1YWxzKDQsIGRlY29kZXIucmVhZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpKTsKKyAgICBhc3NlcnRFcXVhbHMoInRpbWUiLCBuZXcgU3RyaW5nKGJ1ZmZlciwgMCwgNCwgIlVTLUFTQ0lJIikpOworICAgIGRlY29kZXIuY2xvc2UoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvU3RhdGUuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1N0YXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JjZjA3MAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1N0YXRlLmphdmEKQEAgLTAsMCArMSwxMDAgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworCitmaW5hbCBjbGFzcyBTdGF0ZSB7CisgIGJ5dGVbXSByaW5nQnVmZmVyOworICBieXRlW10gY29udGV4dE1vZGVzOworICBieXRlW10gY29udGV4dE1hcDsKKyAgYnl0ZVtdIGRpc3RDb250ZXh0TWFwOworICBieXRlW10gZGlzdEV4dHJhQml0czsKKyAgYnl0ZVtdIG91dHB1dDsKKyAgYnl0ZVtdIGJ5dGVCdWZmZXI7ICAvLyBCaXRSZWFkZXIKKworICBzaG9ydFtdIHNob3J0QnVmZmVyOyAvLyBCaXRSZWFkZXIKKworICBpbnRbXSBpbnRCdWZmZXI7ICAvLyBCaXRSZWFkZXIKKyAgaW50W10gcmluZ3M7CisgIGludFtdIGJsb2NrVHJlZXM7CisgIGludFtdIGxpdGVyYWxUcmVlR3JvdXA7CisgIGludFtdIGNvbW1hbmRUcmVlR3JvdXA7CisgIGludFtdIGRpc3RhbmNlVHJlZUdyb3VwOworICBpbnRbXSBkaXN0T2Zmc2V0OworCisgIGxvbmcgYWNjdW11bGF0b3I2NDsgIC8vIEJpdFJlYWRlcjogcHJlLWZldGNoZWQgYml0cy4KKworICBpbnQgcnVubmluZ1N0YXRlOyAgLy8gRGVmYXVsdCB2YWx1ZSBpcyAwID09IERlY29kZS5VTklOSVRJQUxJWkVECisgIGludCBuZXh0UnVubmluZ1N0YXRlOworICBpbnQgYWNjdW11bGF0b3IzMjsgIC8vIEJpdFJlYWRlcjogcHJlLWZldGNoZWQgYml0cy4KKyAgaW50IGJpdE9mZnNldDsgIC8vIEJpdFJlYWRlcjogYml0LXJlYWRpbmcgcG9zaXRpb24gaW4gYWNjdW11bGF0b3IuCisgIGludCBoYWxmT2Zmc2V0OyAgLy8gQml0UmVhZGVyOiBvZmZzZXQgb2YgbmV4dCBpdGVtIGluIGludEJ1ZmZlci9zaG9ydEJ1ZmZlci4KKyAgaW50IHRhaWxCeXRlczsgIC8vIEJpdFJlYWRlcjogbnVtYmVyIG9mIGJ5dGVzIGluIHVuZmluaXNoZWQgaGFsZi4KKyAgaW50IGVuZE9mU3RyZWFtUmVhY2hlZDsgIC8vIEJpdFJlYWRlcjogaW5wdXQgc3RyZWFtIGlzIGZpbmlzaGVkLgorICBpbnQgbWV0YUJsb2NrTGVuZ3RoOworICBpbnQgaW5wdXRFbmQ7CisgIGludCBpc1VuY29tcHJlc3NlZDsKKyAgaW50IGlzTWV0YWRhdGE7CisgIGludCBsaXRlcmFsQmxvY2tMZW5ndGg7CisgIGludCBudW1MaXRlcmFsQmxvY2tUeXBlczsKKyAgaW50IGNvbW1hbmRCbG9ja0xlbmd0aDsKKyAgaW50IG51bUNvbW1hbmRCbG9ja1R5cGVzOworICBpbnQgZGlzdGFuY2VCbG9ja0xlbmd0aDsKKyAgaW50IG51bURpc3RhbmNlQmxvY2tUeXBlczsKKyAgaW50IHBvczsKKyAgaW50IG1heERpc3RhbmNlOworICBpbnQgZGlzdFJiSWR4OworICBpbnQgdHJpdmlhbExpdGVyYWxDb250ZXh0OworICBpbnQgbGl0ZXJhbFRyZWVJZHg7CisgIGludCBjb21tYW5kVHJlZUlkeDsKKyAgaW50IGo7CisgIGludCBpbnNlcnRMZW5ndGg7CisgIGludCBjb250ZXh0TWFwU2xpY2U7CisgIGludCBkaXN0Q29udGV4dE1hcFNsaWNlOworICBpbnQgY29udGV4dExvb2t1cE9mZnNldDE7CisgIGludCBjb250ZXh0TG9va3VwT2Zmc2V0MjsKKyAgaW50IGRpc3RhbmNlQ29kZTsKKyAgaW50IG51bURpcmVjdERpc3RhbmNlQ29kZXM7CisgIGludCBkaXN0YW5jZVBvc3RmaXhCaXRzOworICBpbnQgZGlzdGFuY2U7CisgIGludCBjb3B5TGVuZ3RoOworICBpbnQgbWF4QmFja3dhcmREaXN0YW5jZTsKKyAgaW50IG1heFJpbmdCdWZmZXJTaXplOworICBpbnQgcmluZ0J1ZmZlclNpemU7CisgIGludCBleHBlY3RlZFRvdGFsU2l6ZTsKKyAgaW50IG91dHB1dE9mZnNldDsKKyAgaW50IG91dHB1dExlbmd0aDsKKyAgaW50IG91dHB1dFVzZWQ7CisgIGludCByaW5nQnVmZmVyQnl0ZXNXcml0dGVuOworICBpbnQgcmluZ0J1ZmZlckJ5dGVzUmVhZHk7CisgIGludCBpc0VhZ2VyOworICBpbnQgaXNMYXJnZVdpbmRvdzsKKworICAvLyBDb21wb3VuZCBkaWN0aW9uYXJ5CisgIGludCBjZE51bUNodW5rczsKKyAgaW50IGNkVG90YWxTaXplOworICBpbnQgY2RCckluZGV4OworICBpbnQgY2RCck9mZnNldDsKKyAgaW50IGNkQnJMZW5ndGg7CisgIGludCBjZEJyQ29waWVkOworICBieXRlW11bXSBjZENodW5rczsKKyAgaW50W10gY2RDaHVua09mZnNldHM7CisgIGludCBjZEJsb2NrQml0czsKKyAgYnl0ZVtdIGNkQmxvY2tNYXA7CisKKyAgSW5wdXRTdHJlYW0gaW5wdXQ7IC8vIEJpdFJlYWRlcgorCisgIFN0YXRlKCkgeworICAgIHRoaXMucmluZ0J1ZmZlciA9IG5ldyBieXRlWzBdOworICAgIHRoaXMucmluZ3MgPSBuZXcgaW50WzEwXTsKKyAgICB0aGlzLnJpbmdzWzBdID0gMTY7CisgICAgdGhpcy5yaW5nc1sxXSA9IDE1OworICAgIHRoaXMucmluZ3NbMl0gPSAxMTsKKyAgICB0aGlzLnJpbmdzWzNdID0gNDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvU3ludGhUZXN0LmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9TeW50aFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjY5ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvU3ludGhUZXN0LmphdmEKQEAgLTAsMCArMSwyOTQwIEBACisvKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkuZGVjOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0QXJyYXlFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKgorICogVGVzdHMgZm9yIHtAbGluayBEZWNvZGV9LgorICovCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgY2xhc3MgU3ludGhUZXN0IHsKKworICBzdGF0aWMgYnl0ZVtdIHJlYWRVbmlCeXRlcyhTdHJpbmcgdW5pQnl0ZXMpIHsKKyAgICBieXRlW10gcmVzdWx0ID0gbmV3IGJ5dGVbdW5pQnl0ZXMubGVuZ3RoKCldOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKSB7CisgICAgICByZXN1bHRbaV0gPSAoYnl0ZSkgdW5pQnl0ZXMuY2hhckF0KGkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgcHJpdmF0ZSBieXRlW10gZGVjb21wcmVzcyhieXRlW10gZGF0YSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbNjU1MzZdOworICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGlucHV0ID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGRhdGEpOworICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBvdXRwdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgQnJvdGxpSW5wdXRTdHJlYW0gYnJvdGxpSW5wdXQgPSBuZXcgQnJvdGxpSW5wdXRTdHJlYW0oaW5wdXQpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBpbnQgbGVuID0gYnJvdGxpSW5wdXQucmVhZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpOworICAgICAgaWYgKGxlbiA8PSAwKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgb3V0cHV0LndyaXRlKGJ1ZmZlciwgMCwgbGVuKTsKKyAgICB9CisgICAgYnJvdGxpSW5wdXQuY2xvc2UoKTsKKyAgICByZXR1cm4gb3V0cHV0LnRvQnl0ZUFycmF5KCk7CisgIH0KKworICBwcml2YXRlIHZvaWQgY2hlY2tTeW50aChieXRlW10gY29tcHJlc3NlZCwgYm9vbGVhbiBleHBlY3RTdWNjZXNzLAorICAgICAgU3RyaW5nIGV4cGVjdGVkT3V0cHV0KSB7CisgICAgYnl0ZVtdIGV4cGVjdGVkID0gcmVhZFVuaUJ5dGVzKGV4cGVjdGVkT3V0cHV0KTsKKyAgICB0cnkgeworICAgICAgYnl0ZVtdIGFjdHVhbCA9IGRlY29tcHJlc3MoY29tcHJlc3NlZCk7CisgICAgICBpZiAoIWV4cGVjdFN1Y2Nlc3MpIHsKKyAgICAgICAgZmFpbCgiZXhwZWN0ZWQgdG8gZmFpbCBkZWNvZGluZywgYnV0IHN1Y2NlZWRlZCIpOworICAgICAgfQorICAgICAgYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCk7CisgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgIGlmIChleHBlY3RTdWNjZXNzKSB7CisgICAgICAgIGZhaWwoImV4cGVjdGVkIHRvIHN1Y2NlZWQgZGVjb2RpbmcsIGJ1dCBmYWlsZWQiKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworLyogR0VORVJBVEVEIENPREUgU1RBUlQgKi8KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QWxsVHJhbnNmb3JtczEwKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweGZjLCAoYnl0ZSkgMHgwNSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhlMywgKGJ5dGUpIDB4YjQsIChieXRlKSAweDBkLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDA3LCAoYnl0ZSkgMHg1YiwKKyAgICAgIChieXRlKSAweDI2LCAoYnl0ZSkgMHgzMSwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4ODQsIChieXRlKSAweDI2LCAoYnl0ZSkgMHhmOCwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4NGMsIChieXRlKSAweGYwLCAoYnl0ZSkgMHg4OSwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDMwLCAoYnl0ZSkgMHhjMSwKKyAgICAgIChieXRlKSAweDI3LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4YzEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4NjQsIChieXRlKSAweDA2LAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweGY4LCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4M2YsIChieXRlKSAweDM0LCAoYnl0ZSkgMHhjMSwgKGJ5dGUpIDB4MjcsCisgICAgICAoYnl0ZSkgMHg3ZCwgKGJ5dGUpIDB4ODIsIChieXRlKSAweDA5LCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4ZTksIChieXRlKSAweDE2LCAoYnl0ZSkgMHg0ZCwKKyAgICAgIChieXRlKSAweGYwLCAoYnl0ZSkgMHhjOSwgKGJ5dGUpIDB4ZDIsIChieXRlKSAweGMwLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsIChieXRlKSAweDBjLAorICAgICAgKGJ5dGUpIDB4OGYsIChieXRlKSAweDRjLCAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4YzksIChieXRlKSAweDA2LCAoYnl0ZSkgMHhkMSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4NmMsIChieXRlKSAweDkyLCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweGM5LCAoYnl0ZSkgMHgzOSwKKyAgICAgIChieXRlKSAweGMxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsIChieXRlKSAweGRjLCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGMsIChieXRlKSAweGYwLAorICAgICAgKGJ5dGUpIDB4YzksIChieXRlKSAweDY5LCAoYnl0ZSkgMHhkMSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDlmLCAoYnl0ZSkgMHgzYywgKGJ5dGUpIDB4OTgsCisgICAgICAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweDI5LCAoYnl0ZSkgMHg5YywgKGJ5dGUpIDB4ODEsIChieXRlKSAweDA5LCAoYnl0ZSkgMHgzZSwKKyAgICAgIChieXRlKSAweDQ1LCAoYnl0ZSkgMHgzNywgKGJ5dGUpIDB4MzEsIChieXRlKSAweGMxLCAoYnl0ZSkgMHhhNywgKGJ5dGUpIDB4NjAsIChieXRlKSAweDQ3LAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweGY4LCAoYnl0ZSkgMHgxNCwgKGJ5dGUpIDB4ZmEsIChieXRlKSAweGNjLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsCisgICAgICAoYnl0ZSkgMHhjMiwgKGJ5dGUpIDB4MjAsIChieXRlKSAweDlhLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NTMsIChieXRlKSAweDQ4LCAoYnl0ZSkgMHg1NCwKKyAgICAgIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4OGEsIChieXRlKSAweDhmLCAoYnl0ZSkgMHg2YywgKGJ5dGUpIDB4ODIsIChieXRlKSAweDRmLAorICAgICAgKGJ5dGUpIDB4YjEsIChieXRlKSAweGQyLCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweDI5LCAoYnl0ZSkgMHg2NywgKGJ5dGUpIDB4ODIsCisgICAgICAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweGU1LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweGMxLCAoYnl0ZSkgMHhhNywKKyAgICAgIChieXRlKSAweDdjLCAoYnl0ZSkgMHg0YSwgKGJ5dGUpIDB4MjYsIChieXRlKSAweGY4LCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NTcsIChieXRlKSAweGNkLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDlmLCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MmMsIChieXRlKSAweDlhLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NTMsCisgICAgICAoYnl0ZSkgMHhiYSwgKGJ5dGUpIDB4NTUsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4Y2EsIChieXRlKSAweGJmLCAoYnl0ZSkgMHg2YywKKyAgICAgIChieXRlKSAweDgyLCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4YjksIChieXRlKSAweGQ4LCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweGE5LAorICAgICAgKGJ5dGUpIDB4MzAsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgxMywgKGJ5dGUpIDB4N2MsIChieXRlKSAweDJhLCAoYnl0ZSkgMHhkMiwgKGJ5dGUpIDB4YzIsCisgICAgICAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsIChieXRlKSAweDRhLCAoYnl0ZSkgMHgzNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweGMxLCAoYnl0ZSkgMHhhNywKKyAgICAgIChieXRlKSAweGNhLCAoYnl0ZSkgMHg2ZCwgKGJ5dGUpIDB4NGMsIChieXRlKSAweGYwLCAoYnl0ZSkgMHhhOSwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDIzLAorICAgICAgKGJ5dGUpIDB4MTMsIChieXRlKSAweDdjLCAoYnl0ZSkgMHgyYSwgKGJ5dGUpIDB4ZWIsIChieXRlKSAweGNhLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsCisgICAgICAoYnl0ZSkgMHhlYSwgKGJ5dGUpIDB4M2MsIChieXRlKSAweDMzLCAoYnl0ZSkgMHhjMSwgKGJ5dGUpIDB4YTcsIChieXRlKSAweGIyLCAoYnl0ZSkgMHhlZiwKKyAgICAgIChieXRlKSAweDRjLCAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4YTksIChieXRlKSAweGY4LCAoYnl0ZSkgMHg0MywgKGJ5dGUpIDB4MTMsIChieXRlKSAweDdjLAorICAgICAgKGJ5dGUpIDB4YWEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4MDQsIChieXRlKSAweDlmLCAoYnl0ZSkgMHgyYSwgKGJ5dGUpIDB4NDIsCisgICAgICAoYnl0ZSkgMHgzNSwgKGJ5dGUpIDB4YzEsIChieXRlKSAweGE3LCAoYnl0ZSkgMHhjMiwgKGJ5dGUpIDB4NzAsIChieXRlKSAweDRkLCAoYnl0ZSkgMHhmMCwKKyAgICAgIChieXRlKSAweGE5LCAoYnl0ZSkgMHg1MiwgKGJ5dGUpIDB4NjQsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4MmEsIChieXRlKSAweDFhLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDA0LCAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4NmEsIChieXRlKSAweDQ4LCAoYnl0ZSkgMHgzNywgKGJ5dGUpIDB4YzEsCisgICAgICAoYnl0ZSkgMHhhNywgKGJ5dGUpIDB4OTIsIChieXRlKSAweGYyLCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweGE5LCAoYnl0ZSkgMHhjMywKKyAgICAgIChieXRlKSAweDA0LCAoYnl0ZSkgMHgxMywgKGJ5dGUpIDB4N2MsIChieXRlKSAweGVhLCAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4YzMsIChieXRlKSAweDA0LAorICAgICAgKGJ5dGUpIDB4OWYsIChieXRlKSAweDdhLCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4MzEsIChieXRlKSAweGMxLCAoYnl0ZSkgMHhhNywgKGJ5dGUpIDB4MDYsCisgICAgICAoYnl0ZSkgMHg3NCwgKGJ5dGUpIDB4NGMsIChieXRlKSAweGYwLCAoYnl0ZSkgMHhhOSwgKGJ5dGUpIDB4MTksIChieXRlKSAweDI1LCAoYnl0ZSkgMHgxMywKKyAgICAgIChieXRlKSAweDdjLCAoYnl0ZSkgMHg2YSwgKGJ5dGUpIDB4NGQsIChieXRlKSAweGNiLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsIChieXRlKSAweDFhLAorICAgICAgKGJ5dGUpIDB4NTUsIChieXRlKSAweDMzLCAoYnl0ZSkgMHhjMSwgKGJ5dGUpIDB4YTcsIChieXRlKSAweDU2LCAoYnl0ZSkgMHhmNSwgKGJ5dGUpIDB4NGMsCisgICAgICAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4YTksIChieXRlKSAweDVkLCAoYnl0ZSkgMHg0NSwgKGJ5dGUpIDB4MTMsIChieXRlKSAweDdjLCAoYnl0ZSkgMHhlYSwKKyAgICAgIChieXRlKSAweDU5LCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4MDQsIChieXRlKSAweDlmLCAoYnl0ZSkgMHhmYSwgKGJ5dGUpIDB4NTcsIChieXRlKSAweDM1LAorICAgICAgKGJ5dGUpIDB4YzEsIChieXRlKSAweGE3LCAoYnl0ZSkgMHg2NiwgKGJ5dGUpIDB4NzYsIChieXRlKSAweDRkLCAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4YTksCisgICAgICAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4NmEsIChieXRlKSAweDZmLCAoYnl0ZSkgMHhkYiwKKyAgICAgIChieXRlKSAweDA0LCAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4OWEsIChieXRlKSAweDVkLCAoYnl0ZSkgMHgzNywgKGJ5dGUpIDB4YzEsIChieXRlKSAweGE3LAorICAgICAgKGJ5dGUpIDB4MDYsIChieXRlKSAweGY4LCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweDY5LCAoYnl0ZSkgMHgwYywgKGJ5dGUpIDB4MDYsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4ZjgsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgwOCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywKKyAgICAgIChieXRlKSAweDFhLCAoYnl0ZSkgMHg4YiwgKGJ5dGUpIDB4ODUsIChieXRlKSAweDA5LCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4OGQsIChieXRlKSAweGM4LAorICAgICAgKGJ5dGUpIDB4YzMsIChieXRlKSAweDA0LCAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4ZTYsIChieXRlKSAweDY1LCAoYnl0ZSkgMHg2MiwgKGJ5dGUpIDB4ODIsCisgICAgICAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4YjMsIChieXRlKSAweDczLCAoYnl0ZSkgMHgzMSwgKGJ5dGUpIDB4YzEsIChieXRlKSAweGE3LCAoYnl0ZSkgMHg0MSwKKyAgICAgIChieXRlKSAweGRhLCAoYnl0ZSkgMHg5OCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweGQzLCAoYnl0ZSkgMHg1NCwgKGJ5dGUpIDB4N2QsIChieXRlKSAweDRjLAorICAgICAgKGJ5dGUpIDB4ZjAsIChieXRlKSAweDY5LCAoYnl0ZSkgMHhjNCwgKGJ5dGUpIDB4NDYsIChieXRlKSAweDI2LCAoYnl0ZSkgMHhmOCwgKGJ5dGUpIDB4MzQsCisgICAgICAoYnl0ZSkgMHg3MiwgKGJ5dGUpIDB4MjcsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4MWEsIChieXRlKSAweGM1LCAoYnl0ZSkgMHg5NSwKKyAgICAgIChieXRlKSAweDA5LCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4OGQsIChieXRlKSAweGU1LCAoYnl0ZSkgMHhjYiwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDlmLAorICAgICAgKGJ5dGUpIDB4MDYsIChieXRlKSAweDc1LCAoYnl0ZSkgMHg2NiwgKGJ5dGUpIDB4ODIsIChieXRlKSAweDRmLCAoYnl0ZSkgMHg0MywgKGJ5dGUpIDB4N2IsCisgICAgICAoYnl0ZSkgMHgzMywgKGJ5dGUpIDB4YzEsIChieXRlKSAweGE3LCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4ZGUsIChieXRlKSAweDk5LCAoYnl0ZSkgMHhlMCwKKyAgICAgIChieXRlKSAweGQzLCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4ZmYsIChieXRlKSAweDRjLCAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4NjksIChieXRlKSAweGIyLAorICAgICAgKGJ5dGUpIDB4ODcsIChieXRlKSAweDI2LCAoYnl0ZSkgMHhmOCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweGU5LCAoYnl0ZSkgMHg0NywgKGJ5dGUpIDB4MTMsCisgICAgICAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4OWEsIChieXRlKSAweGZiLCAoYnl0ZSkgMHhhNSwgKGJ5dGUpIDB4MDksIChieXRlKSAweDNlLCAoYnl0ZSkgMHg0ZCwKKyAgICAgIChieXRlKSAweDAxLCAoYnl0ZSkgMHhkNCwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDlmLCAoYnl0ZSkgMHg0NiwgKGJ5dGUpIDB4ODIsIChieXRlKSAweDZhLAorICAgICAgKGJ5dGUpIDB4ODIsIChieXRlKSAweDRmLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4ODIsIChieXRlKSAweDM1LCAoYnl0ZSkgMHhjMSwgKGJ5dGUpIDB4YTcsCisgICAgICAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4ZTEsIChieXRlKSAweDlhLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweGU0LCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweDRkLCAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4NjksIChieXRlKSAweDhhLCAoYnl0ZSkgMHhjOCwgKGJ5dGUpIDB4MjYsIChieXRlKSAweGY4LAorICAgICAgKGJ5dGUpIDB4MzQsIChieXRlKSAweDUyLCAoYnl0ZSkgMHg2OCwgKGJ5dGUpIDB4MTMsIChieXRlKSAweDdjLCAoYnl0ZSkgMHg5YSwgKGJ5dGUpIDB4MmYsCisgICAgICAoYnl0ZSkgMHhiNiwgKGJ5dGUpIDB4MDksIChieXRlKSAweDNlLCAoYnl0ZSkgMHg4ZCwgKGJ5dGUpIDB4MWIsIChieXRlKSAweGRjLCAoYnl0ZSkgMHgwNCwKKyAgICAgIChieXRlKSAweDlmLCAoYnl0ZSkgMHg4NiwgKGJ5dGUpIDB4OGYsIChieXRlKSAweDZlLCAoYnl0ZSkgMHg4MiwgKGJ5dGUpIDB4NGYsIChieXRlKSAweGIzLAorICAgICAgKGJ5dGUpIDB4ODgsIChieXRlKSAweDM3LCAoYnl0ZSkgMHhjMSwgKGJ5dGUpIDB4YTcsIChieXRlKSAweGQ5LCAoYnl0ZSkgMHhlNCwgKGJ5dGUpIDB4OWIsCisgICAgICAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweDllLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4NGMsIChieXRlKSAweGYwLCAoYnl0ZSkgMHg2OSwKKyAgICAgIChieXRlKSAweDZkLCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4MjYsIChieXRlKSAweGY4LCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4YzMsIChieXRlKSAweDA4LAorICAgICAgKGJ5dGUpIDB4MTMsIChieXRlKSAweDdjLCAoYnl0ZSkgMHg1YSwgKGJ5dGUpIDB4NjgsIChieXRlKSAweDg2LCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4M2UsCisgICAgICAoYnl0ZSkgMHhhZCwgKGJ5dGUpIDB4MzcsIChieXRlKSAweGM0LCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsIChieXRlKSAweDU2LCAoYnl0ZSkgMHg5ZCwKKyAgICAgIChieXRlKSAweDYyLCAoYnl0ZSkgMHg4MiwgKGJ5dGUpIDB4NGYsIChieXRlKSAweDliLCAoYnl0ZSkgMHg4ZiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweGMxLAorICAgICAgKGJ5dGUpIDB4YTcsIChieXRlKSAweDJkLCAoYnl0ZSkgMHhlOCwgKGJ5dGUpIDB4OTgsIChieXRlKSAweGUwLCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4NGEsCisgICAgICAoYnl0ZSkgMHg4NCwgKGJ5dGUpIDB4NGMsIChieXRlKSAweGYwLCAoYnl0ZSkgMHg2OSwgKGJ5dGUpIDB4M2YsIChieXRlKSAweDRhLCAoYnl0ZSkgMHgyNiwKKyAgICAgIChieXRlKSAweGY4LCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MmMsIChieXRlKSAweDI5LCAoYnl0ZSkgMHgxMywgKGJ5dGUpIDB4N2MsIChieXRlKSAweGRhLAorICAgICAgKGJ5dGUpIDB4OWMsIChieXRlKSAweDk2LCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDJkLCAoYnl0ZSkgMHg1MiwgKGJ5dGUpIDB4Y2MsCisgICAgICAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4OWYsIChieXRlKSAweGI2LCAoYnl0ZSkgMHhhYSwgKGJ5dGUpIDB4NjYsIChieXRlKSAweDgyLCAoYnl0ZSkgMHg0ZiwKKyAgICAgIChieXRlKSAweDJiLCAoYnl0ZSkgMHg5NiwgKGJ5dGUpIDB4MzMsIChieXRlKSAweGMxLCAoYnl0ZSkgMHhhNywgKGJ5dGUpIDB4N2QsIChieXRlKSAweGViLAorICAgICAgKGJ5dGUpIDB4OTksIChieXRlKSAweGUwLCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4ZjYsIChieXRlKSAweDA1LCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsCisgICAgICAoYnl0ZSkgMHg2OSwgKGJ5dGUpIDB4MTcsIChieXRlKSAweDhiLCAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4ZjgsIChieXRlKSAweGI0LCAoYnl0ZSkgMHg5NywKKyAgICAgIChieXRlKSAweDQ5LCAoYnl0ZSkgMHgxMywgKGJ5dGUpIDB4N2MsIChieXRlKSAweGRhLCAoYnl0ZSkgMHhkMSwgKGJ5dGUpIDB4YTYsIChieXRlKSAweDA5LAorICAgICAgKGJ5dGUpIDB4M2UsIChieXRlKSAweDJkLCAoYnl0ZSkgMHg2YywgKGJ5dGUpIDB4ZDQsIChieXRlKSAweDA0LCAoYnl0ZSkgMHg5ZiwgKGJ5dGUpIDB4YjYsCisgICAgICAoYnl0ZSkgMHhiNywgKGJ5dGUpIDB4NmEsIChieXRlKSAweDgyLCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4YWIsIChieXRlKSAweDljLCAoYnl0ZSkgMHgzNSwKKyAgICAgIChieXRlKSAweGMxLCAoYnl0ZSkgMHhhNywgKGJ5dGUpIDB4YzUsIChieXRlKSAweGVlLCAoYnl0ZSkgMHg5YSwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweGQzLAorICAgICAgKGJ5dGUpIDB4OWEsIChieXRlKSAweDg3LCAoYnl0ZSkgMHg0ZCwgKGJ5dGUpIDB4ZjAsIChieXRlKSAweDY5LCAoYnl0ZSkgMHhlOSwgKGJ5dGUpIDB4Y2IKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiAvLyBUaGUgc3RyZWFtIGNvbnNpc3RzIG9mIHdvcmQgInRpbWUiIHdpdGggYWxsIHBvc3NpYmxlIHRyYW5zZm9ybXMuCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDE1MzMsIDEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDIgLy8gPSAwIDw8IDEwICsgMSArIDEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDEwMzcgLy8gPSAxIDw8IDEwICsgMSArIDEyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAyMDczIC8vID0gMiA8PCAxMCArIDEgKyAyNAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMzExMCAvLyA9IDMgPDwgMTAgKyAxICsgMzcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDQxNDQgLy8gPSA0IDw8IDEwICsgMSArIDQ3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA1MTgwIC8vID0gNSA8PCAxMCArIDEgKyA1OQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNjIyMCAvLyA9IDYgPDwgMTAgKyAxICsgNzUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDcyNTYgLy8gPSA3IDw8IDEwICsgMSArIDg3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA4Mjk0IC8vID0gOCA8PCAxMCArIDEgKyAxMDEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDkzMzMgLy8gPSA5IDw8IDEwICsgMSArIDExNgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTAzNjggLy8gPSAxMCA8PCAxMCArIDEgKyAxMjcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDExNDA4IC8vID0gMTEgPDwgMTAgKyAxICsgMTQzCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMjQ0MSAvLyA9IDEyIDw8IDEwICsgMSArIDE1MgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTM0NzUgLy8gPSAxMyA8PCAxMCArIDEgKyAxNjIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDE0NTEzIC8vID0gMTQgPDwgMTAgKyAxICsgMTc2CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxNTU1MCAvLyA9IDE1IDw8IDEwICsgMSArIDE4OQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTY1ODcgLy8gPSAxNiA8PCAxMCArIDEgKyAyMDIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDE3NjI2IC8vID0gMTcgPDwgMTAgKyAxICsgMjE3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxODY2NSAvLyA9IDE4IDw8IDEwICsgMSArIDIzMgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTk3MDMgLy8gPSAxOSA8PCAxMCArIDEgKyAyNDYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDIwNzM5IC8vID0gMjAgPDwgMTAgKyAxICsgMjU4CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAyMTc3NSAvLyA9IDIxIDw8IDEwICsgMSArIDI3MAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMjI4MTIgLy8gPSAyMiA8PCAxMCArIDEgKyAyODMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDIzODQ4IC8vID0gMjMgPDwgMTAgKyAxICsgMjk1CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAyNDg4MCAvLyA9IDI0IDw8IDEwICsgMSArIDMwMworICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMjU5MTYgLy8gPSAyNSA8PCAxMCArIDEgKyAzMTUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDI2OTU2IC8vID0gMjYgPDwgMTAgKyAxICsgMzMxCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAyNzk4OCAvLyA9IDI3IDw8IDEwICsgMSArIDMzOQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMjkwMjEgLy8gPSAyOCA8PCAxMCArIDEgKyAzNDgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDMwMDU5IC8vID0gMjkgPDwgMTAgKyAxICsgMzYyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAzMTEwMCAvLyA9IDMwIDw8IDEwICsgMSArIDM3OQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMzIxMzYgLy8gPSAzMSA8PCAxMCArIDEgKyAzOTEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDMzMTczIC8vID0gMzIgPDwgMTAgKyAxICsgNDA0CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAzNDIwOSAvLyA9IDMzIDw8IDEwICsgMSArIDQxNgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMzUyNDcgLy8gPSAzNCA8PCAxMCArIDEgKyA0MzAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDM2Mjc4IC8vID0gMzUgPDwgMTAgKyAxICsgNDM3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAzNzMxOSAvLyA9IDM2IDw8IDEwICsgMSArIDQ1NAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMzgzNTUgLy8gPSAzNyA8PCAxMCArIDEgKyA0NjYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDM5Mzk2IC8vID0gMzggPDwgMTAgKyAxICsgNDgzCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA0MDQzNSAvLyA9IDM5IDw8IDEwICsgMSArIDQ5OAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNDE0NjUgLy8gPSA0MCA8PCAxMCArIDEgKyA1MDQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDQyNDk0IC8vID0gNDEgPDwgMTAgKyAxICsgNTA5CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA0MzUzNCAvLyA9IDQyIDw8IDEwICsgMSArIDUyNQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNDQ1NjUgLy8gPSA0MyA8PCAxMCArIDEgKyA1MzIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDQ1NjA2IC8vID0gNDQgPDwgMTAgKyAxICsgNTQ5CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA0NjY0MSAvLyA9IDQ1IDw8IDEwICsgMSArIDU2MAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNDc2ODAgLy8gPSA0NiA8PCAxMCArIDEgKyA1NzUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDQ4NzE5IC8vID0gNDcgPDwgMTAgKyAxICsgNTkwCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA0OTc1OCAvLyA9IDQ4IDw8IDEwICsgMSArIDYwNQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNTA3ODYgLy8gPSA0OSA8PCAxMCArIDEgKyA2MDkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDUxODI0IC8vID0gNTAgPDwgMTAgKyAxICsgNjIzCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA1Mjg2MSAvLyA9IDUxIDw8IDEwICsgMSArIDYzNgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNTM4OTcgLy8gPSA1MiA8PCAxMCArIDEgKyA2NDgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDU0OTM1IC8vID0gNTMgPDwgMTAgKyAxICsgNjYyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA1NTk3MyAvLyA9IDU0IDw8IDEwICsgMSArIDY3NgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNTY5OTkgLy8gPSA1NSA8PCAxMCArIDEgKyA2NzgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDU4MDI3IC8vID0gNTYgPDwgMTAgKyAxICsgNjgyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA1OTA1NiAvLyA9IDU3IDw8IDEwICsgMSArIDY4NworICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNjAwOTIgLy8gPSA1OCA8PCAxMCArIDEgKyA2OTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDYxMTI5IC8vID0gNTkgPDwgMTAgKyAxICsgNzEyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA2MjE1NiAvLyA9IDYwIDw8IDEwICsgMSArIDcxNQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNjMxOTUgLy8gPSA2MSA8PCAxMCArIDEgKyA3MzAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDY0MjMzIC8vID0gNjIgPDwgMTAgKyAxICsgNzQ0CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA2NTI3NyAvLyA9IDYzIDw8IDEwICsgMSArIDc2NAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNjYzMDcgLy8gPSA2NCA8PCAxMCArIDEgKyA3NzAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDY3MzMzIC8vID0gNjUgPDwgMTAgKyAxICsgNzcyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA2ODM3MSAvLyA9IDY2IDw8IDEwICsgMSArIDc4NgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNjk0MDcgLy8gPSA2NyA8PCAxMCArIDEgKyA3OTgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDcwNDQ0IC8vID0gNjggPDwgMTAgKyAxICsgODExCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA3MTQ4MCAvLyA9IDY5IDw8IDEwICsgMSArIDgyMworICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNzI1MTcgLy8gPSA3MCA8PCAxMCArIDEgKyA4MzYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDczNTU0IC8vID0gNzEgPDwgMTAgKyAxICsgODQ5CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA3NDU5MSAvLyA9IDcyIDw8IDEwICsgMSArIDg2MgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNzU2MzEgLy8gPSA3MyA8PCAxMCArIDEgKyA4NzgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDc2Njc5IC8vID0gNzQgPDwgMTAgKyAxICsgOTAyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA3NzcxNSAvLyA9IDc1IDw8IDEwICsgMSArIDkxNAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgNzg3NTcgLy8gPSA3NiA8PCAxMCArIDEgKyA5MzIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDc5NzkzIC8vID0gNzcgPDwgMTAgKyAxICsgOTQ0CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA4MDgzMCAvLyA9IDc4IDw8IDEwICsgMSArIDk1NworICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgODE4NjYgLy8gPSA3OSA8PCAxMCArIDEgKyA5NjkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDgyOTAyIC8vID0gODAgPDwgMTAgKyAxICsgOTgxCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA4Mzk0MiAvLyA9IDgxIDw8IDEwICsgMSArIDk5NworICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgODQ5ODAgLy8gPSA4MiA8PCAxMCArIDEgKyAxMDExCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA4NjAxOCAvLyA9IDgzIDw8IDEwICsgMSArIDEwMjUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDg3MDU1IC8vID0gODQgPDwgMTAgKyAxICsgMTAzOAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgODgwOTMgLy8gPSA4NSA8PCAxMCArIDEgKyAxMDUyCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA4OTEyOSAvLyA9IDg2IDw8IDEwICsgMSArIDEwNjQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDkwMTY2IC8vID0gODcgPDwgMTAgKyAxICsgMTA3NworICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgOTEyMDIgLy8gPSA4OCA8PCAxMCArIDEgKyAxMDg5CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA5MjIzOSAvLyA9IDg5IDw8IDEwICsgMSArIDExMDIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDkzMjc2IC8vID0gOTAgPDwgMTAgKyAxICsgMTExNQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgOTQzMTUgLy8gPSA5MSA8PCAxMCArIDEgKyAxMTMwCisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA5NTM1MyAvLyA9IDkyIDw8IDEwICsgMSArIDExNDQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDk2MzkyIC8vID0gOTMgPDwgMTAgKyAxICsgMTE1OQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgOTc0MzIgLy8gPSA5NCA8PCAxMCArIDEgKyAxMTc1CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCA5ODQ2OCAvLyA9IDk1IDw8IDEwICsgMSArIDExODcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDk5NTA3IC8vID0gOTYgPDwgMTAgKyAxICsgMTIwMgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTAwNTQ0IC8vID0gOTcgPDwgMTAgKyAxICsgMTIxNQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTAxNTgxIC8vID0gOTggPDwgMTAgKyAxICsgMTIyOAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTAyNjE5IC8vID0gOTkgPDwgMTAgKyAxICsgMTI0MgorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTAzNjU1IC8vID0gMTAwIDw8IDEwICsgMSArIDEyNTQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDEwNDY5NCAvLyA9IDEwMSA8PCAxMCArIDEgKyAxMjY5CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMDU3MzAgLy8gPSAxMDIgPDwgMTAgKyAxICsgMTI4MQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTA2NzY3IC8vID0gMTAzIDw8IDEwICsgMSArIDEyOTQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDEwNzgwNCAvLyA9IDEwNCA8PCAxMCArIDEgKyAxMzA3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMDg4NDEgLy8gPSAxMDUgPDwgMTAgKyAxICsgMTMyMAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTA5ODc4IC8vID0gMTA2IDw8IDEwICsgMSArIDEzMzMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDExMDkxNyAvLyA9IDEwNyA8PCAxMCArIDEgKyAxMzQ4CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMTE5NTQgLy8gPSAxMDggPDwgMTAgKyAxICsgMTM2MQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTEyOTkxIC8vID0gMTA5IDw8IDEwICsgMSArIDEzNzQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDExNDAyOCAvLyA9IDExMCA8PCAxMCArIDEgKyAxMzg3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMTUwNjYgLy8gPSAxMTEgPDwgMTAgKyAxICsgMTQwMQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTE2MTA0IC8vID0gMTEyIDw8IDEwICsgMSArIDE0MTUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDExNzE0MCAvLyA9IDExMyA8PCAxMCArIDEgKyAxNDI3CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMTgxNzYgLy8gPSAxMTQgPDwgMTAgKyAxICsgMTQzOQorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTE5MjEzIC8vID0gMTE1IDw8IDEwICsgMSArIDE0NTIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDEyMDI1MCAvLyA9IDExNiA8PCAxMCArIDEgKyAxNDY1CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMjEyODcgLy8gPSAxMTcgPDwgMTAgKyAxICsgMTQ3OAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAsICJ8IiwgMTIyMzI1IC8vID0gMTE4IDw8IDEwICsgMSArIDE0OTIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwLCAifCIsIDEyMzM2MyAvLyA9IDExOSA8PCAxMCArIDEgKyAxNTA2CisgICAgICogY29tbWFuZF9lYXN5OiAxMCwgInwiLCAxMjQ0MDEgLy8gPSAxMjAgPDwgMTAgKyAxICsgMTUyMAorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAifGNhdGVnb3JpZXN8Y2F0ZWdvcmllcyB8IGNhdGVnb3JpZXMgfGF0ZWdvcmllc3xDYXRlZ29yaWVzIHxjYXRlZ29yaWVzIHRoZSB8IGNhdGVnb3JpZXN8cyBjYXQiCisgICAgICArICJlZ29yaWVzIHxjYXRlZ29yaWVzIG9mIHxDYXRlZ29yaWVzfGNhdGVnb3JpZXMgYW5kIHx0ZWdvcmllc3xjYXRlZ29yaWV8LCBjYXRlZ29yaWVzIHxjYXRlZ28iCisgICAgICArICJyaWVzLCB8IENhdGVnb3JpZXMgfGNhdGVnb3JpZXMgaW4gfGNhdGVnb3JpZXMgdG8gfGUgY2F0ZWdvcmllcyB8Y2F0ZWdvcmllc1wifGNhdGVnb3JpZXMufGMiCisgICAgICArICJhdGVnb3JpZXNcIj58Y2F0ZWdvcmllc1xufGNhdGVnb3J8Y2F0ZWdvcmllc118Y2F0ZWdvcmllcyBmb3IgfGVnb3JpZXN8Y2F0ZWdvcml8Y2F0ZWdvcmllcyAiCisgICAgICArICJhIHxjYXRlZ29yaWVzIHRoYXQgfCBDYXRlZ29yaWVzfGNhdGVnb3JpZXMuIHwuY2F0ZWdvcmllc3wgY2F0ZWdvcmllcywgfGdvcmllc3xjYXRlZ29yaWVzIHciCisgICAgICArICJpdGggfGNhdGVnb3JpZXMnfGNhdGVnb3JpZXMgZnJvbSB8Y2F0ZWdvcmllcyBieSB8b3JpZXN8cmllc3wgdGhlIGNhdGVnb3JpZXN8Y2F0ZWdvfGNhdGVnb3IiCisgICAgICArICJpZXMuIFRoZSB8Q0FURUdPUklFU3xjYXRlZ29yaWVzIG9uIHxjYXRlZ29yaWVzIGFzIHxjYXRlZ29yaWVzIGlzIHxjYXR8Y2F0ZWdvcmllaW5nIHxjYXRlZ28iCisgICAgICArICJyaWVzXG5cdHxjYXRlZ29yaWVzOnwgY2F0ZWdvcmllcy4gfGNhdGVnb3JpZXNlZCB8c3xpZXN8Y2F0ZXxjYXRlZ29yaWVzKHxDYXRlZ29yaWVzLCB8Y2F8Y2EiCisgICAgICArICJ0ZWdvcmllcyBhdCB8Y2F0ZWdvcmllc2x5IHwgdGhlIGNhdGVnb3JpZXMgb2YgfGNhdGVnfGN8IENhdGVnb3JpZXMsIHxDYXRlZ29yaWVzXCJ8LmNhdGVnb3IiCisgICAgICArICJpZXMofENBVEVHT1JJRVMgfENhdGVnb3JpZXNcIj58Y2F0ZWdvcmllcz1cInwgY2F0ZWdvcmllcy58LmNvbS9jYXRlZ29yaWVzfCB0aGUgY2F0ZWdvcmllcyAiCisgICAgICArICJvZiB0aGUgfENhdGVnb3JpZXMnfGNhdGVnb3JpZXMuIFRoaXMgfGNhdGVnb3JpZXMsfC5jYXRlZ29yaWVzIHxDYXRlZ29yaWVzKHxDYXRlZ29yaWVzLnxjYXQiCisgICAgICArICJlZ29yaWVzIG5vdCB8IGNhdGVnb3JpZXM9XCJ8Y2F0ZWdvcmllc2VyIHwgQ0FURUdPUklFUyB8Y2F0ZWdvcmllc2FsIHwgQ0FURUdPUklFU3xjYXRlZ29yaWUiCisgICAgICArICJzPSd8Q0FURUdPUklFU1wifENhdGVnb3JpZXMuIHwgY2F0ZWdvcmllcyh8Y2F0ZWdvcmllc2Z1bCB8IENhdGVnb3JpZXMuIHxjYXRlZ29yaWVzaXZlIHxjYXQiCisgICAgICArICJlZ29yaWVzbGVzcyB8Q0FURUdPUklFUyd8Y2F0ZWdvcmllc2VzdCB8IENhdGVnb3JpZXMufENBVEVHT1JJRVNcIj58IGNhdGVnb3JpZXM9J3xDYXRlZ29yaWUiCisgICAgICArICJzLHxjYXRlZ29yaWVzaXplIHxDQVRFR09SSUVTLnxcMzAyXDI0MGNhdGVnb3JpZXN8IGNhdGVnb3JpZXMsfENhdGVnb3JpZXM9XCJ8Q0FURUdPUklFUz0iCisgICAgICArICJcInxjYXRlZ29yaWVzb3VzIHxDQVRFR09SSUVTLCB8Q2F0ZWdvcmllcz0nfCBDYXRlZ29yaWVzLHwgQ0FURUdPUklFUz1cInwgQ0FURUdPUklFUywgfENBVEUiCisgICAgICArICJHT1JJRVMsfENBVEVHT1JJRVMofENBVEVHT1JJRVMuIHwgQ0FURUdPUklFUy58Q0FURUdPUklFUz0nfCBDQVRFR09SSUVTLiB8IENhdGVnb3JpZXM9XCJ8IEMiCisgICAgICArICJBVEVHT1JJRVM9J3wgQ2F0ZWdvcmllcz0nIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QWxsVHJhbnNmb3JtczQoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4NTEsIChieXRlKSAweDNlLCAoYnl0ZSkgMHg0MiwgKGJ5dGUpIDB4NTEsIChieXRlKSAweDNlLCAoYnl0ZSkgMHg4MSwKKyAgICAgIChieXRlKSAweDAyLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDExLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4YTIsIChieXRlKSAweDdjLAorICAgICAgKGJ5dGUpIDB4ZTIsIChieXRlKSAweDBiLCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4ZjksIChieXRlKSAweDI0LCAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MTAsCisgICAgICAoYnl0ZSkgMHhlNSwgKGJ5dGUpIDB4OTMsIChieXRlKSAweDg0LCAoYnl0ZSkgMHg1MCwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHhiYSwKKyAgICAgIChieXRlKSAweDAyLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDY5LCAoYnl0ZSkgMHgwYywgKGJ5dGUpIDB4NDUsIChieXRlKSAweGY5LAorICAgICAgKGJ5dGUpIDB4NjQsIChieXRlKSAweDM5LCAoYnl0ZSkgMHgyMCwgKGJ5dGUpIDB4Y2EsIChieXRlKSAweDI3LCAoYnl0ZSkgMHgxMywgKGJ5dGUpIDB4MjIsCisgICAgICAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweGQ5LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4OGEsIChieXRlKSAweGYyLCAoYnl0ZSkgMHhjOSwKKyAgICAgIChieXRlKSAweGEyLCAoYnl0ZSkgMHg1OCwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4MDUsIChieXRlKSAweGEyLAorICAgICAgKGJ5dGUpIDB4N2MsIChieXRlKSAweDcyLCAoYnl0ZSkgMHgyYywgKGJ5dGUpIDB4MTIsIChieXRlKSAweGU1LCAoYnl0ZSkgMHg5MywgKGJ5dGUpIDB4ODMsCisgICAgICAoYnl0ZSkgMHhhMSwgKGJ5dGUpIDB4MjgsIChieXRlKSAweDlmLCAoYnl0ZSkgMHhmYywgKGJ5dGUpIDB4OGMsIChieXRlKSAweDQ1LCAoYnl0ZSkgMHhmOSwKKyAgICAgIChieXRlKSAweDE0LCAoYnl0ZSkgMHg2ZSwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4NzEsIChieXRlKSAweDQ3LAorICAgICAgKGJ5dGUpIDB4NDQsIChieXRlKSAweGY5LCAoYnl0ZSkgMHgxNCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDQ4LCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGYsCisgICAgICAoYnl0ZSkgMHg4MSwgKGJ5dGUpIDB4YzgsIChieXRlKSAweDQ0LCAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4MTQsIChieXRlKSAweDhlLCAoYnl0ZSkgMHg1MCwKKyAgICAgIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4NDEsIChieXRlKSAweDQ5LCAoYnl0ZSkgMHg0NSwgKGJ5dGUpIDB4ZjksIChieXRlKSAweDE0LAorICAgICAgKGJ5dGUpIDB4OWIsIChieXRlKSAweDU4LCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGYsIChieXRlKSAweDExLCAoYnl0ZSkgMHhjYSwgKGJ5dGUpIDB4NDUsCisgICAgICAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4OTQsIChieXRlKSAweGEzLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHg5OSwKKyAgICAgIChieXRlKSAweDRhLCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4ZjksIChieXRlKSAweDk0LCAoYnl0ZSkgMHhiMywgKGJ5dGUpIDB4NDgsIChieXRlKSAweDk0LAorICAgICAgKGJ5dGUpIDB4NGYsIChieXRlKSAweDU5LCAoYnl0ZSkgMHhjYiwgKGJ5dGUpIDB4NDQsIChieXRlKSAweGY5LCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4YjgsCisgICAgICAoYnl0ZSkgMHg1MCwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4NGMsIChieXRlKSAweDQ1LCAoYnl0ZSkgMHhmOSwKKyAgICAgIChieXRlKSAweDk0LCAoYnl0ZSkgMHhjYiwgKGJ5dGUpIDB4NTgsIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4MTksIChieXRlKSAweGNkLAorICAgICAgKGJ5dGUpIDB4NDUsIChieXRlKSAweGY5LCAoYnl0ZSkgMHg1NCwgKGJ5dGUpIDB4ZDgsIChieXRlKSAweDgwLCAoYnl0ZSkgMHgyOCwgKGJ5dGUpIDB4OWYsCisgICAgICAoYnl0ZSkgMHhjYSwgKGJ5dGUpIDB4OWIsIChieXRlKSAweDEwLCAoYnl0ZSkgMHhlNSwgKGJ5dGUpIDB4NTMsIChieXRlKSAweDk5LCAoYnl0ZSkgMHgyMywKKyAgICAgIChieXRlKSAweGEyLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4YWEsIChieXRlKSAweDczLCAoYnl0ZSkgMHg0NiwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLAorICAgICAgKGJ5dGUpIDB4MjUsIChieXRlKSAweDBmLCAoYnl0ZSkgMHg4OSwgKGJ5dGUpIDB4ZjIsIChieXRlKSAweGE5LCAoYnl0ZSkgMHhmMCwgKGJ5dGUpIDB4MjksCisgICAgICAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweGQ1LCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MjYsIChieXRlKSAweGNhLCAoYnl0ZSkgMHhhNywKKyAgICAgIChieXRlKSAweDYyLCAoYnl0ZSkgMHhlOCwgKGJ5dGUpIDB4NDQsIChieXRlKSAweGY5LCAoYnl0ZSkgMHg1NCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweGExLAorICAgICAgKGJ5dGUpIDB4MjgsIChieXRlKSAweDlmLCAoYnl0ZSkgMHhjYSwgKGJ5dGUpIDB4YTEsIChieXRlKSAweDE0LCAoYnl0ZSkgMHhlNSwgKGJ5dGUpIDB4NTMsCisgICAgICAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4YTQsIChieXRlKSAweGEyLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4YWEsIChieXRlKSAweDhjLCAoYnl0ZSkgMHg1NiwKKyAgICAgIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4NDUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHg4YiwgKGJ5dGUpIDB4ZjIsIChieXRlKSAweGE5LAorICAgICAgKGJ5dGUpIDB4NTIsIChieXRlKSAweDZhLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDk1LCAoYnl0ZSkgMHg0YywgKGJ5dGUpIDB4MmUsCisgICAgICAoYnl0ZSkgMHhjYSwgKGJ5dGUpIDB4YTcsIChieXRlKSAweGRhLCAoYnl0ZSkgMHhlOSwgKGJ5dGUpIDB4NDUsIChieXRlKSAweGY5LCAoYnl0ZSkgMHhkNCwKKyAgICAgIChieXRlKSAweDQ0LCAoYnl0ZSkgMHg4MSwgKGJ5dGUpIDB4MjgsIChieXRlKSAweDlmLCAoYnl0ZSkgMHhiYSwgKGJ5dGUpIDB4YTgsIChieXRlKSAweDEwLAorICAgICAgKGJ5dGUpIDB4ZTUsIChieXRlKSAweDUzLCAoYnl0ZSkgMHgzNywgKGJ5dGUpIDB4MjUsIChieXRlKSAweGEyLCAoYnl0ZSkgMHg3YywgKGJ5dGUpIDB4NmEsCisgICAgICAoYnl0ZSkgMHhhYSwgKGJ5dGUpIDB4NDYsIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4YWQsIChieXRlKSAweDE1LCAoYnl0ZSkgMHg4OSwKKyAgICAgIChieXRlKSAweGYyLCAoYnl0ZSkgMHhhOSwgKGJ5dGUpIDB4YzUsIChieXRlKSAweDJhLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweGI1LAorICAgICAgKGJ5dGUpIDB4NWEsIChieXRlKSAweDI2LCAoYnl0ZSkgMHhjYSwgKGJ5dGUpIDB4YTcsIChieXRlKSAweDVlLCAoYnl0ZSkgMHhlYiwgKGJ5dGUpIDB4NDQsCisgICAgICAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4ZDQsIChieXRlKSAweDZjLCAoYnl0ZSkgMHhhMSwgKGJ5dGUpIDB4MjgsIChieXRlKSAweDlmLCAoYnl0ZSkgMHhiYSwKKyAgICAgIChieXRlKSAweGFkLCAoYnl0ZSkgMHgxNCwgKGJ5dGUpIDB4ZTUsIChieXRlKSAweDUzLCAoYnl0ZSkgMHhjZiwgKGJ5dGUpIDB4YTUsIChieXRlKSAweGEyLAorICAgICAgKGJ5dGUpIDB4N2MsIChieXRlKSAweDZhLCAoYnl0ZSkgMHhiZCwgKGJ5dGUpIDB4NTYsIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4YmQsCisgICAgICAoYnl0ZSkgMHgxNywgKGJ5dGUpIDB4OGIsIChieXRlKSAweGYyLCAoYnl0ZSkgMHhhOSwgKGJ5dGUpIDB4MDksIChieXRlKSAweDZiLCAoYnl0ZSkgMHg1MSwKKyAgICAgIChieXRlKSAweDNlLCAoYnl0ZSkgMHgzNSwgKGJ5dGUpIDB4NjMsIChieXRlKSAweDJlLCAoYnl0ZSkgMHhjYSwgKGJ5dGUpIDB4YTcsIChieXRlKSAweGQ2LAorICAgICAgKGJ5dGUpIDB4ZWMsIChieXRlKSAweDQ1LCAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDliLCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4NTEsCisgICAgICAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDY3LCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHg0MywKKyAgICAgIChieXRlKSAweDlhLCAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4ZTUsIChieXRlKSAweGQzLCAoYnl0ZSkgMHhhOCwgKGJ5dGUpIDB4MzYsIChieXRlKSAweDQ0LAorICAgICAgKGJ5dGUpIDB4ZjksIChieXRlKSAweDM0LCAoYnl0ZSkgMHhiMSwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDUxLCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4Y2QsCisgICAgICAoYnl0ZSkgMHg2ZCwgKGJ5dGUpIDB4NDUsIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4ZTMsIChieXRlKSAweDliLCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweGU1LCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4MTQsIChieXRlKSAweDc3LCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4ZjksIChieXRlKSAweDM0LAorICAgICAgKGJ5dGUpIDB4Y2MsIChieXRlKSAweDIxLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDhkLCAoYnl0ZSkgMHg3NSwgKGJ5dGUpIDB4NDksCisgICAgICAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGYsIChieXRlKSAweDgzLCAoYnl0ZSkgMHg5ZSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweGU1LCAoYnl0ZSkgMHhkMywKKyAgICAgIChieXRlKSAweGI4LCAoYnl0ZSkgMHhiNywgKGJ5dGUpIDB4NDQsIChieXRlKSAweGY5LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4ZmEsIChieXRlKSAweDMxLAorICAgICAgKGJ5dGUpIDB4NTEsIChieXRlKSAweDNlLCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDRkLCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGYsCisgICAgICAoYnl0ZSkgMHg3MywgKGJ5dGUpIDB4YTAsIChieXRlKSAweDEzLCAoYnl0ZSkgMHhlNSwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweDM0LCAoYnl0ZSkgMHhmOCwKKyAgICAgIChieXRlKSAweDQ0LCAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg0MiwgKGJ5dGUpIDB4NTEsIChieXRlKSAweDNlLAorICAgICAgKGJ5dGUpIDB4NGQsIChieXRlKSAweDg3LCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHg1MywgKGJ5dGUpIDB4YTIsCisgICAgICAoYnl0ZSkgMHgxNCwgKGJ5dGUpIDB4ZTUsIChieXRlKSAweGQzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDQ1LCAoYnl0ZSkgMHhmOSwKKyAgICAgIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4NTIsIChieXRlKSAweDUxLCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDhmLAorICAgICAgKGJ5dGUpIDB4NTUsIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4MjMsIChieXRlKSAweGE0LCAoYnl0ZSkgMHgxNSwgKGJ5dGUpIDB4ZTUsCisgICAgICAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDc5LCAoYnl0ZSkgMHg0NSwgKGJ5dGUpIDB4ZjksIChieXRlKSAweDM0LCAoYnl0ZSkgMHg0ZiwKKyAgICAgIChieXRlKSAweDYyLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDhkLCAoYnl0ZSkgMHg5NSwgKGJ5dGUpIDB4NTksIChieXRlKSAweDk0LAorICAgICAgKGJ5dGUpIDB4NGYsIChieXRlKSAweGQzLCAoYnl0ZSkgMHhhNSwgKGJ5dGUpIDB4MTYsIChieXRlKSAweGU1LCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4OTgsCisgICAgICAoYnl0ZSkgMHhiOSwgKGJ5dGUpIDB4NDUsIChieXRlKSAweGY5LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4NmUsIChieXRlKSAweDcyLCAoYnl0ZSkgMHg1MSwKKyAgICAgIChieXRlKSAweDNlLCAoYnl0ZSkgMHhjZCwgKGJ5dGUpIDB4OWQsIChieXRlKSAweDVkLCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGYsIChieXRlKSAweDEzLAorICAgICAgKGJ5dGUpIDB4YTgsIChieXRlKSAweDE3LCAoYnl0ZSkgMHhlNSwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweDFjLCAoYnl0ZSkgMHhmYSwgKGJ5dGUpIDB4NDUsCisgICAgICAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDkwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4NTEsIChieXRlKSAweDNlLCAoYnl0ZSkgMHhlZCwKKyAgICAgIChieXRlKSAweGE1LCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHhlYiwgKGJ5dGUpIDB4YTksIChieXRlKSAweDEwLAorICAgICAgKGJ5dGUpIDB4ZTUsIChieXRlKSAweGQzLCAoYnl0ZSkgMHg5YSwgKGJ5dGUpIDB4M2EsIChieXRlKSAweDQ0LCAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHhhYywgKGJ5dGUpIDB4MTIsIChieXRlKSAweDUxLCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4NmQsIChieXRlKSAweGFkLCAoYnl0ZSkgMHg0NSwKKyAgICAgIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4YmIsIChieXRlKSAweGFiLCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4ZTUsIChieXRlKSAweGQzLAorICAgICAgKGJ5dGUpIDB4MGEsIChieXRlKSAweDdiLCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4ZjksIChieXRlKSAweGI0LCAoYnl0ZSkgMHhjOSwgKGJ5dGUpIDB4MjIsCisgICAgICAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsIChieXRlKSAweDJkLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4NDksIChieXRlKSAweDk0LCAoYnl0ZSkgMHg0ZiwKKyAgICAgIChieXRlKSAweDdiLCAoYnl0ZSkgMHhhZCwgKGJ5dGUpIDB4MTIsIChieXRlKSAweGU1LCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4ODIsIChieXRlKSAweGJiLAorICAgICAgKGJ5dGUpIDB4NDQsIChieXRlKSAweGY5LCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4ZTcsIChieXRlKSAweDMyLCAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4M2UsCisgICAgICAoYnl0ZSkgMHhhZCwgKGJ5dGUpIDB4YmIsIChieXRlKSAweDRkLCAoYnl0ZSkgMHg5NCwgKGJ5dGUpIDB4NGYsIChieXRlKSAweDViLCAoYnl0ZSkgMHhhZiwKKyAgICAgIChieXRlKSAweDEzLCAoYnl0ZSkgMHhlNSwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweGY2LCAoYnl0ZSkgMHhmYiwgKGJ5dGUpIDB4NDQsIChieXRlKSAweGY5LAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDA1LCAoYnl0ZSkgMHg0MywgKGJ5dGUpIDB4NTEsIChieXRlKSAweDNlLCAoYnl0ZSkgMHhlZCwgKGJ5dGUpIDB4YzIsCisgICAgICAoYnl0ZSkgMHg1MSwgKGJ5dGUpIDB4OTQsIChieXRlKSAweDRmLCAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4YjEsIChieXRlKSAweDE0LCAoYnl0ZSkgMHhlNSwKKyAgICAgIChieXRlKSAweGQzLCAoYnl0ZSkgMHg2MiwgKGJ5dGUpIDB4M2MsIChieXRlKSAweDQ1LCAoYnl0ZSkgMHhmOSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDFmLAorICAgICAgKGJ5dGUpIDB4NTMsIChieXRlKSAweDUxLCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4YWQsIChieXRlKSAweGM5LCAoYnl0ZSkgMHg1NSwgKGJ5dGUpIDB4OTQsCisgICAgICAoYnl0ZSkgMHg0ZiwgKGJ5dGUpIDB4ZWIsIChieXRlKSAweGIyLCAoYnl0ZSkgMHgxNSwgKGJ5dGUpIDB4ZTUsIChieXRlKSAweGQzLCAoYnl0ZSkgMHhkYSwKKyAgICAgIChieXRlKSAweDdjLCAoYnl0ZSkgMHg0NSwgKGJ5dGUpIDB4ZjksIChieXRlKSAweGI0LCAoYnl0ZSkgMHgzZSwgKGJ5dGUpIDB4NjMKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiAvLyBUaGUgc3RyZWFtIGNvbnNpc3RzIG9mIHdvcmQgInRpbWUiIHdpdGggYWxsIHBvc3NpYmxlIHRyYW5zZm9ybXMuCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDgzMywgMQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAyIC8vID0gMCA8PCAxMCArIDEgKyAxCisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDEwMzEgLy8gPSAxIDw8IDEwICsgMSArIDYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjA2MSAvLyA9IDIgPDwgMTAgKyAxICsgMTIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzA5MiAvLyA9IDMgPDwgMTAgKyAxICsgMTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDEyMCAvLyA9IDQgPDwgMTAgKyAxICsgMjMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTE1MCAvLyA9IDUgPDwgMTAgKyAxICsgMjkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjE4NCAvLyA9IDYgPDwgMTAgKyAxICsgMzkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzIxNCAvLyA9IDcgPDwgMTAgKyAxICsgNDUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODI0NiAvLyA9IDggPDwgMTAgKyAxICsgNTMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTI3OSAvLyA9IDkgPDwgMTAgKyAxICsgNjIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTAzMDggLy8gPSAxMCA8PCAxMCArIDEgKyA2NworICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMTM0MiAvLyA9IDExIDw8IDEwICsgMSArIDc3CisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDEyMzY5IC8vID0gMTIgPDwgMTAgKyAxICsgODAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTMzOTcgLy8gPSAxMyA8PCAxMCArIDEgKyA4NAorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxNDQyOSAvLyA9IDE0IDw8IDEwICsgMSArIDkyCisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDE1NDYwIC8vID0gMTUgPDwgMTAgKyAxICsgOTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTY0OTEgLy8gPSAxNiA8PCAxMCArIDEgKyAxMDYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTc1MjQgLy8gPSAxNyA8PCAxMCArIDEgKyAxMTUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTg1NTcgLy8gPSAxOCA8PCAxMCArIDEgKyAxMjQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTk1ODkgLy8gPSAxOSA8PCAxMCArIDEgKyAxMzIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjA2MTkgLy8gPSAyMCA8PCAxMCArIDEgKyAxMzgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjE2NDkgLy8gPSAyMSA8PCAxMCArIDEgKyAxNDQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjI2ODAgLy8gPSAyMiA8PCAxMCArIDEgKyAxNTEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjM3MTAgLy8gPSAyMyA8PCAxMCArIDEgKyAxNTcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjQ3MzYgLy8gPSAyNCA8PCAxMCArIDEgKyAxNTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjU3NjYgLy8gPSAyNSA8PCAxMCArIDEgKyAxNjUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjY4MDAgLy8gPSAyNiA8PCAxMCArIDEgKyAxNzUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjc4MjYgLy8gPSAyNyA8PCAxMCArIDEgKyAxNzcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjg4NTMgLy8gPSAyOCA8PCAxMCArIDEgKyAxODAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMjk4ODUgLy8gPSAyOSA8PCAxMCArIDEgKyAxODgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzA5MjAgLy8gPSAzMCA8PCAxMCArIDEgKyAxOTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzE5NTAgLy8gPSAzMSA8PCAxMCArIDEgKyAyMDUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzI5ODEgLy8gPSAzMiA8PCAxMCArIDEgKyAyMTIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzQwMTEgLy8gPSAzMyA8PCAxMCArIDEgKyAyMTgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzUwNDMgLy8gPSAzNCA8PCAxMCArIDEgKyAyMjYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzYwNjggLy8gPSAzNSA8PCAxMCArIDEgKyAyMjcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzcxMDMgLy8gPSAzNiA8PCAxMCArIDEgKyAyMzgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzgxMzMgLy8gPSAzNyA8PCAxMCArIDEgKyAyNDQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMzkxNjggLy8gPSAzOCA8PCAxMCArIDEgKyAyNTUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDAyMDEgLy8gPSAzOSA8PCAxMCArIDEgKyAyNjQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDEyMjYgLy8gPSA0MCA8PCAxMCArIDEgKyAyNjUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDIyNTEgLy8gPSA0MSA8PCAxMCArIDEgKyAyNjYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDMyODUgLy8gPSA0MiA8PCAxMCArIDEgKyAyNzYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDQzMTAgLy8gPSA0MyA8PCAxMCArIDEgKyAyNzcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDUzNDUgLy8gPSA0NCA8PCAxMCArIDEgKyAyODgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDYzNzQgLy8gPSA0NSA8PCAxMCArIDEgKyAyOTMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDc0MDcgLy8gPSA0NiA8PCAxMCArIDEgKyAzMDIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDg0NDAgLy8gPSA0NyA8PCAxMCArIDEgKyAzMTEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNDk0NzMgLy8gPSA0OCA8PCAxMCArIDEgKyAzMjAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTA0OTggLy8gPSA0OSA8PCAxMCArIDEgKyAzMjEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTE1MzAgLy8gPSA1MCA8PCAxMCArIDEgKyAzMjkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTI1NjEgLy8gPSA1MSA8PCAxMCArIDEgKyAzMzYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTM1OTEgLy8gPSA1MiA8PCAxMCArIDEgKyAzNDIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTQ2MjMgLy8gPSA1MyA8PCAxMCArIDEgKyAzNTAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTU2NTUgLy8gPSA1NCA8PCAxMCArIDEgKyAzNTgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTY2ODAgLy8gPSA1NSA8PCAxMCArIDEgKyAzNTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTc3MDUgLy8gPSA1NiA8PCAxMCArIDEgKyAzNjAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTg3MzAgLy8gPSA1NyA8PCAxMCArIDEgKyAzNjEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNTk3NjAgLy8gPSA1OCA8PCAxMCArIDEgKyAzNjcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjA3OTEgLy8gPSA1OSA8PCAxMCArIDEgKyAzNzQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjE4MTYgLy8gPSA2MCA8PCAxMCArIDEgKyAzNzUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjI4NDkgLy8gPSA2MSA8PCAxMCArIDEgKyAzODQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjM4ODEgLy8gPSA2MiA8PCAxMCArIDEgKyAzOTIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjQ5MTkgLy8gPSA2MyA8PCAxMCArIDEgKyA0MDYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjU5NDQgLy8gPSA2NCA8PCAxMCArIDEgKyA0MDcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjY5NjkgLy8gPSA2NSA8PCAxMCArIDEgKyA0MDgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjgwMDEgLy8gPSA2NiA8PCAxMCArIDEgKyA0MTYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNjkwMzEgLy8gPSA2NyA8PCAxMCArIDEgKyA0MjIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzAwNjIgLy8gPSA2OCA8PCAxMCArIDEgKyA0MjkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzEwOTIgLy8gPSA2OSA8PCAxMCArIDEgKyA0MzUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzIxMjMgLy8gPSA3MCA8PCAxMCArIDEgKyA0NDIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzMxNTQgLy8gPSA3MSA8PCAxMCArIDEgKyA0NDkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzQxODUgLy8gPSA3MiA8PCAxMCArIDEgKyA0NTYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzUyMTkgLy8gPSA3MyA8PCAxMCArIDEgKyA0NjYKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzYyNjEgLy8gPSA3NCA8PCAxMCArIDEgKyA0ODQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzcyOTEgLy8gPSA3NSA8PCAxMCArIDEgKyA0OTAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzgzMjcgLy8gPSA3NiA8PCAxMCArIDEgKyA1MDIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgNzkzNTcgLy8gPSA3NyA8PCAxMCArIDEgKyA1MDgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODAzODggLy8gPSA3OCA8PCAxMCArIDEgKyA1MTUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODE0MTggLy8gPSA3OSA8PCAxMCArIDEgKyA1MjEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODI0NDggLy8gPSA4MCA8PCAxMCArIDEgKyA1MjcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODM0ODIgLy8gPSA4MSA8PCAxMCArIDEgKyA1MzcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODQ1MTQgLy8gPSA4MiA8PCAxMCArIDEgKyA1NDUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODU1NDYgLy8gPSA4MyA8PCAxMCArIDEgKyA1NTMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODY1NzcgLy8gPSA4NCA8PCAxMCArIDEgKyA1NjAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODc2MDkgLy8gPSA4NSA8PCAxMCArIDEgKyA1NjgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODg2MzkgLy8gPSA4NiA8PCAxMCArIDEgKyA1NzQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgODk2NzAgLy8gPSA4NyA8PCAxMCArIDEgKyA1ODEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTA3MDAgLy8gPSA4OCA8PCAxMCArIDEgKyA1ODcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTE3MzEgLy8gPSA4OSA8PCAxMCArIDEgKyA1OTQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTI3NjIgLy8gPSA5MCA8PCAxMCArIDEgKyA2MDEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTM3OTUgLy8gPSA5MSA8PCAxMCArIDEgKyA2MTAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTQ4MjcgLy8gPSA5MiA8PCAxMCArIDEgKyA2MTgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTU4NjAgLy8gPSA5MyA8PCAxMCArIDEgKyA2MjcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTY4OTQgLy8gPSA5NCA8PCAxMCArIDEgKyA2MzcKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTc5MjQgLy8gPSA5NSA8PCAxMCArIDEgKyA2NDMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTg5NTcgLy8gPSA5NiA8PCAxMCArIDEgKyA2NTIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgOTk5ODggLy8gPSA5NyA8PCAxMCArIDEgKyA2NTkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTAxMDE5IC8vID0gOTggPDwgMTAgKyAxICsgNjY2CisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDEwMjA1MSAvLyA9IDk5IDw8IDEwICsgMSArIDY3NAorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMDMwODEgLy8gPSAxMDAgPDwgMTAgKyAxICsgNjgwCisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDEwNDExNCAvLyA9IDEwMSA8PCAxMCArIDEgKyA2ODkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTA1MTQ0IC8vID0gMTAyIDw8IDEwICsgMSArIDY5NQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMDYxNzUgLy8gPSAxMDMgPDwgMTAgKyAxICsgNzAyCisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDEwNzIwNiAvLyA9IDEwNCA8PCAxMCArIDEgKyA3MDkKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTA4MjM3IC8vID0gMTA1IDw8IDEwICsgMSArIDcxNgorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMDkyNjggLy8gPSAxMDYgPDwgMTAgKyAxICsgNzIzCisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDExMDMwMSAvLyA9IDEwNyA8PCAxMCArIDEgKyA3MzIKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTExMzMyIC8vID0gMTA4IDw8IDEwICsgMSArIDczOQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMTIzNjMgLy8gPSAxMDkgPDwgMTAgKyAxICsgNzQ2CisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDExMzM5NCAvLyA9IDExMCA8PCAxMCArIDEgKyA3NTMKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTE0NDI2IC8vID0gMTExIDw8IDEwICsgMSArIDc2MQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMTU0NTggLy8gPSAxMTIgPDwgMTAgKyAxICsgNzY5CisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDExNjQ4OCAvLyA9IDExMyA8PCAxMCArIDEgKyA3NzUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTE3NTE4IC8vID0gMTE0IDw8IDEwICsgMSArIDc4MQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMTg1NDkgLy8gPSAxMTUgPDwgMTAgKyAxICsgNzg4CisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDExOTU4MCAvLyA9IDExNiA8PCAxMCArIDEgKyA3OTUKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTIwNjExIC8vID0gMTE3IDw8IDEwICsgMSArIDgwMgorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgInwiLCAxMjE2NDMgLy8gPSAxMTggPDwgMTAgKyAxICsgODEwCisgICAgICogY29tbWFuZF9lYXN5OiA0LCAifCIsIDEyMjY3NSAvLyA9IDExOSA8PCAxMCArIDEgKyA4MTgKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICJ8IiwgMTIzNzA3IC8vID0gMTIwIDw8IDEwICsgMSArIDgyNgorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAifHRpbWV8dGltZSB8IHRpbWUgfGltZXxUaW1lIHx0aW1lIHRoZSB8IHRpbWV8cyB0aW1lIHx0aW1lIG9mIHxUaW1lfHRpbWUgYW5kIHxtZXx0aW18LCB0aW1lIHwiCisgICAgICArICJ0aW1lLCB8IFRpbWUgfHRpbWUgaW4gfHRpbWUgdG8gfGUgdGltZSB8dGltZVwifHRpbWUufHRpbWVcIj58dGltZVxufHR8dGltZV18dGltZSBmb3IgfGV8dGkiCisgICAgICArICJ8dGltZSBhIHx0aW1lIHRoYXQgfCBUaW1lfHRpbWUuIHwudGltZXwgdGltZSwgfHx0aW1lIHdpdGggfHRpbWUnfHRpbWUgZnJvbSB8dGltZSBieSB8fHwgdGgiCisgICAgICArICJlIHRpbWV8fHRpbWUuIFRoZSB8VElNRXx0aW1lIG9uIHx0aW1lIGFzIHx0aW1lIGlzIHx8dGltaW5nIHx0aW1lXG5cdHx0aW1lOnwgdGltZS4gfHRpbWVlZCAiCisgICAgICArICJ8fHx8dGltZSh8VGltZSwgfHx0aW1lIGF0IHx0aW1lbHkgfCB0aGUgdGltZSBvZiB8fHwgVGltZSwgfFRpbWVcInwudGltZSh8VElNRSB8VGltZVwiPnx0aW0iCisgICAgICArICJlPVwifCB0aW1lLnwuY29tL3RpbWV8IHRoZSB0aW1lIG9mIHRoZSB8VGltZSd8dGltZS4gVGhpcyB8dGltZSx8LnRpbWUgfFRpbWUofFRpbWUufHRpbWUgbm8iCisgICAgICArICJ0IHwgdGltZT1cInx0aW1lZXIgfCBUSU1FIHx0aW1lYWwgfCBUSU1FfHRpbWU9J3xUSU1FXCJ8VGltZS4gfCB0aW1lKHx0aW1lZnVsIHwgVGltZS4gfHRpbWUiCisgICAgICArICJpdmUgfHRpbWVsZXNzIHxUSU1FJ3x0aW1lZXN0IHwgVGltZS58VElNRVwiPnwgdGltZT0nfFRpbWUsfHRpbWVpemUgfFRJTUUufFwzMDJcMjQwdGltZXwgdGkiCisgICAgICArICJtZSx8VGltZT1cInxUSU1FPVwifHRpbWVvdXMgfFRJTUUsIHxUaW1lPSd8IFRpbWUsfCBUSU1FPVwifCBUSU1FLCB8VElNRSx8VElNRSh8VElNRS4gfCBUSU0iCisgICAgICArICJFLnxUSU1FPSd8IFRJTUUuIHwgVGltZT1cInwgVElNRT0nfCBUaW1lPSciCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RCYXNlRGljdFdvcmQoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4NDEsIChieXRlKSAweDAyCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gVGhlIHN0cmVhbSBjb25zaXN0cyBvZiBhIGJhc2UgZGljdGlvbmFyeSB3b3JkLgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiA0LCAxCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQKKyAgICAgKiBjb21tYW5kX2Rpc3RfZWFzeTogMQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAidGltZSIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEJhc2VEaWN0V29yZEZpbmlzaEJsb2NrT25SaW5nYnVmZmVyV3JhcCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgxZiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDliLCAoYnl0ZSkgMHg1OCwgKGJ5dGUpIDB4MzIsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LAorICAgICAgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsCisgICAgICAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwKKyAgICAgIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LAorICAgICAgKGJ5dGUpIDB4MzQsIChieXRlKSAweDM0LCAoYnl0ZSkgMHhkNCwgKGJ5dGUpIDB4MDAKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfZWFzeTogMzIsIDEgLy8gMzIgPSBtaW5pbWFsIHJpbmdidWZmZXIgc2l6ZQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCAyOQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXRpbWUiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RCYXNlRGljdFdvcmRUb29Mb25nKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhlMywgKGJ5dGUpIDB4YjQsIChieXRlKSAweDBkLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDA3LCAoYnl0ZSkgMHg1YiwKKyAgICAgIChieXRlKSAweDI2LCAoYnl0ZSkgMHgzMSwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDQxLCAoYnl0ZSkgMHgwMgorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIC8vIEhhcyBhbiB1bm1vZGlmaWVkIGRpY3Rpb25hcnkgd29yZCB0aGF0IGdvZXMgb3ZlciB0aGUgZW5kIG9mIHRoZQorICAgICAqIC8vIG1ldGEtYmxvY2suIFNhbWUgYXMgQmFzZURpY3RXb3JkLCBidXQgd2l0aCBhIHNob3J0ZXIgbWV0YS1ibG9jayBsZW5ndGguCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDEsIDEKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNAorICAgICAqIGNvbW1hbmRfZGlzdF9lYXN5OiAxCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgZmFsc2UsCisgICAgICAiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QmxvY2tDb3VudE1lc3NhZ2UoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDhjLCAoYnl0ZSkgMHhjMSwKKyAgICAgIChieXRlKSAweGM1LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDgsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgyMiwgKGJ5dGUpIDB4NjUsIChieXRlKSAweGUxLAorICAgICAgKGJ5dGUpIDB4ZmMsIChieXRlKSAweGZkLCAoYnl0ZSkgMHgyMiwgKGJ5dGUpIDB4MmMsIChieXRlKSAweGM0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4ZDgsIChieXRlKSAweDMyLCAoYnl0ZSkgMHg4OSwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3NywgKGJ5dGUpIDB4ZGEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4NDIsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gU2FtZSBhcyBCbG9ja1N3aXRjaE1lc3NhZ2UgYnV0IGFsc28gdXNlcyAwLWJpdCBibG9jay10eXBlIGNvbW1hbmRzLgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgMTIsIDAKKyAgICAgKiAvLyB0d28gbGl0ZXJhbCBibG9jayB0eXBlcworICAgICAqIHZscV9ibG9ja3R5cGVzOiAyCisgICAgICogaHVmZm1hbl9zaW1wbGU6IDEsMSw0LCAxICAvLyBsaXRlcmFsIGJsb2NrdHlwZSBwcmVmaXggY29kZQorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDI2ICAvLyBsaXRlcmFsIGJsb2NrY291bnQgcHJlZml4IGNvZGUKKyAgICAgKiBibG9ja2NvdW50X2Vhc3k6IDIgIC8vIDIgYSdzCisgICAgICogLy8gb25lIGlucy9jb3B5IGFuZCBkaXN0IGJsb2NrIHR5cGUKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMQorICAgICAqIHZscV9ibG9ja3R5cGVzOiAxCisgICAgICogbmRpcmVjdDogMCwgMAorICAgICAqIC8vIHR3byBNU0I2IGxpdGVyYWwgY29udGV4dCBtb2RlcworICAgICAqIGJpdHM6ICIwMCIsICIwMCIKKyAgICAgKiAvLyB0d28gbGl0ZXJhbCBwcmVmaXggY29kZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMgorICAgICAqIC8vIGxpdGVyYWwgY29udGV4dCBtYXAKKyAgICAgKiB2bHFfcmxlbWF4OiA1CisgICAgICogaHVmZm1hbl9zaW1wbGU6IDAsMyw3LCA1LDAsNiAgLy8gY29udGV4dCBtYXAgUkxFIEh1ZmZtYW4gY29kZQorICAgICAqIC8vIGNvbnRleHQgbWFwIFJMRTogcmVwZWF0IDAgNjQgdGltZXMsIDErNSA2NCB0aW1lcworICAgICAqIGJpdHM6ICIwMSIsICIwIiwgIjExMTExIiwgIjExIiwgIjAiLCAiMTExMTEiCisgICAgICogYml0OiAxICAvLyBNVEYgZW5hYmxlZAorICAgICAqIC8vIG9uZSBkaXN0YW5jZSBwcmVmaXggY29kZQorICAgICAqIHZscV9ibG9ja3R5cGVzOiAxCisgICAgICogaHVmZm1hbl9zaW1wbGU6IDAsMSwyNTYsIDk3ICAvLyBvbmx5IGEncworICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAwLDEsMjU2LCA5OCAgLy8gb25seSBiJ3MKKyAgICAgKiBodWZmbWFuX2ZpeGVkOiA3MDQKKyAgICAgKiBodWZmbWFuX2ZpeGVkOiA2NAorICAgICAqIC8vIG5vdyBjb21lcyB0aGUgZGF0YQorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAxMiwgMAorICAgICAqIGJsb2NrY291bnRfZWFzeTogMiAgLy8gc3dpdGNoIHRvIG90aGVyIGJsb2NrIHR5cGU7IDIgYidzCisgICAgICogYmxvY2tjb3VudF9lYXN5OiA1ICAvLyBzd2l0Y2ggdG8gb3RoZXIgYmxvY2sgdHlwZTsgNSBhJ3MKKyAgICAgKiBibG9ja2NvdW50X2Vhc3k6IDEgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAxIGIKKyAgICAgKiBibG9ja2NvdW50X2Vhc3k6IDEgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAxIGEKKyAgICAgKiBibG9ja2NvdW50X2Vhc3k6IDEgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAxIGIKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImFhYmJhYWFhYWJhYiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEJsb2NrU3dpdGNoTWVzc2FnZSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGQxLCAoYnl0ZSkgMHhlMSwgKGJ5dGUpIDB4MDEsIChieXRlKSAweGM2LAorICAgICAgKGJ5dGUpIDB4ZTAsIChieXRlKSAweGUyLCAoYnl0ZSkgMHgwNiwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg5MSwgKGJ5dGUpIDB4YjIsCisgICAgICAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4ZmUsIChieXRlKSAweDdlLCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4MTYsIChieXRlKSAweDYyLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgxYywgKGJ5dGUpIDB4NmMsIChieXRlKSAweDk5LCAoYnl0ZSkgMHhjNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDA5LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHgzYiwgKGJ5dGUpIDB4NmQsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwOCwgKGJ5dGUpIDB4ODIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gVXNlcyBibG9ja3Mgd2l0aCAxLXN5bWJvbCBIdWZmbWFuIGNvZGVzIHRoYXQgdGFrZSAwIGJpdHMsIHNvIHRoYXQgaXQKKyAgICAgKiAvLyBpcyB0aGUgYmxvY2stc3dpdGNoIGNvbW1hbmRzIHRoYXQgZW5jb2RlIHRoZSBtZXNzYWdlIHJhdGhlciB0aGFuIGFjdHVhbAorICAgICAqIC8vIGxpdGVyYWxzLgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgMTIsIDAKKyAgICAgKiAvLyB0d28gbGl0ZXJhbCBibG9jayB0eXBlcworICAgICAqIHZscV9ibG9ja3R5cGVzOiAyCisgICAgICogaHVmZm1hbl9zaW1wbGU6IDEsNCw0LCAxLDAsMiwzICAvLyBsaXRlcmFsIGJsb2NrdHlwZSBwcmVmaXggY29kZQorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDI2ICAvLyBsaXRlcmFsIGJsb2NrY291bnQgcHJlZml4IGNvZGUKKyAgICAgKiBibG9ja2NvdW50X2Vhc3k6IDIgIC8vIDIgYSdzCisgICAgICogLy8gb25lIGlucy9jb3B5IGFuZCBkaXN0IGJsb2NrIHR5cGUKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMQorICAgICAqIHZscV9ibG9ja3R5cGVzOiAxCisgICAgICogbmRpcmVjdDogMCwgMAorICAgICAqIC8vIHR3byBNU0I2IGxpdGVyYWwgY29udGV4dCBtb2RlcworICAgICAqIGJpdHM6ICIwMCIsICIwMCIKKyAgICAgKiAvLyB0d28gbGl0ZXJhbCBwcmVmaXggY29kZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMgorICAgICAqIC8vIGxpdGVyYWwgY29udGV4dCBtYXAKKyAgICAgKiB2bHFfcmxlbWF4OiA1CisgICAgICogaHVmZm1hbl9zaW1wbGU6IDAsMyw3LCA1LDAsNiAgLy8gY29udGV4dCBtYXAgUkxFIEh1ZmZtYW4gY29kZQorICAgICAqIC8vIGNvbnRleHQgbWFwIFJMRTogcmVwZWF0IDAgNjQgdGltZXMsIDErNSA2NCB0aW1lcworICAgICAqIGJpdHM6ICIwMSIsICIwIiwgIjExMTExIiwgIjExIiwgIjAiLCAiMTExMTEiCisgICAgICogYml0OiAxICAvLyBNVEYgZW5hYmxlZAorICAgICAqIC8vIG9uZSBkaXN0YW5jZSBwcmVmaXggY29kZQorICAgICAqIHZscV9ibG9ja3R5cGVzOiAxCisgICAgICogaHVmZm1hbl9zaW1wbGU6IDAsMSwyNTYsIDk3ICAvLyBvbmx5IGEncworICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAwLDEsMjU2LCA5OCAgLy8gb25seSBiJ3MKKyAgICAgKiBodWZmbWFuX2ZpeGVkOiA3MDQKKyAgICAgKiBodWZmbWFuX2ZpeGVkOiA2NAorICAgICAqIC8vIG5vdyBjb21lcyB0aGUgZGF0YQorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAxMiwgMAorICAgICAqIGJpdHM6ICIwIjsgYmxvY2tjb3VudF9lYXN5OiAyICAvLyBzd2l0Y2ggdG8gb3RoZXIgYmxvY2sgdHlwZTsgMiBiJ3MKKyAgICAgKiBiaXRzOiAiMCI7IGJsb2NrY291bnRfZWFzeTogNSAgLy8gc3dpdGNoIHRvIG90aGVyIGJsb2NrIHR5cGU7IDUgYSdzCisgICAgICogYml0czogIjAiOyBibG9ja2NvdW50X2Vhc3k6IDEgIC8vIHN3aXRjaCB0byBvdGhlciBibG9jayB0eXBlOyAxIGIKKyAgICAgKiBiaXRzOiAiMCI7IGJsb2NrY291bnRfZWFzeTogMSAgLy8gc3dpdGNoIHRvIG90aGVyIGJsb2NrIHR5cGU7IDEgYQorICAgICAqIGJpdHM6ICIwIjsgYmxvY2tjb3VudF9lYXN5OiAxICAvLyBzd2l0Y2ggdG8gb3RoZXIgYmxvY2sgdHlwZTsgMSBiCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgICJhYWJiYWFhYWFiYWIiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDbENsVHJlZURlZmljaWVuY3koKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAxLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweDQzLCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDA1LCAoYnl0ZSkgMHg4OCwgKGJ5dGUpIDB4NTUsIChieXRlKSAweDkwLAorICAgICAgKGJ5dGUpIDB4MDEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4ZDgsIChieXRlKSAweDMyLCAoYnl0ZSkgMHg4OSwgKGJ5dGUpIDB4MDEsCisgICAgICAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3NywgKGJ5dGUpIDB4ZGEsIChieXRlKSAweDI4LCAoYnl0ZSkgMHg0MCwKKyAgICAgIChieXRlKSAweDIzCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gVGhpcyB0ZXN0IGlzIGEgY29weSBvZiBUb29NYW55U3ltYm9sc1JlcGVhdGVkLCB3aXRoIGNoYW5nZWQgY2xjbCB0YWJsZS4KKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDQsIDAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dAorICAgICAqIGhza2lwOiAwCisgICAgICogY2xjbF9vcmRlcmVkOiAwLDMsMCwwLDAsMCwwLDAsMywzLDAsMCwwLDAsMCwwLDEsMAorICAgICAqIHNldF9wcmVmaXhfY2xfcmxlOiAiIiwgIjExMCIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIxMTEiLCAiMTAxIixcCisgICAgICogICAgICAgICAgICAgICAgICAgICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIwIiwgIiIKKyAgICAgKiBjbF9ybGU6IDgKKyAgICAgKiBjbF9ybGVfcmVwOiA5LCA5NgorICAgICAqIGNsX3JsZTogMQorICAgICAqIGNsX3JsZV9yZXA6IDksIDE1OSAvLyAxICsgOTYgKyAxICsgMTU5ID0gMjU3ID4gMjU2ID0gYWxwaGFiZXQgc2l6ZQorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDcwNAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDY0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDQsIDAKKyAgICAgKiBjb21tYW5kX2xpdGVyYWxfYml0czogMCwgMCwgMCwgMTAxMTAwMDEwCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgZmFsc2UsCisgICAgICAiYWFhYiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENsQ2xUcmVlRXhjZXNzKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhjMywgKGJ5dGUpIDB4N2IsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg1OCwgKGJ5dGUpIDB4NDEsIChieXRlKSAweDA2LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGUwLCAoYnl0ZSkgMHg2MCwgKGJ5dGUpIDB4Y2IsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwNiwgKGJ5dGUpIDB4NDgsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweGRjLCAoYnl0ZSkgMHg2OSwgKGJ5dGUpIDB4YTMsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4ZCwgKGJ5dGUpIDB4MDAKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiAvLyBUaGlzIHRlc3QgaXMgYSBjb3B5IG9mIENsQ2xUcmVlRGVmaWNpZW5jeSwgd2l0aCBjaGFuZ2VkIGNsY2wgdGFibGUuCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2JlZ2luOiAxLCAwLCA0LCAwCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQKKyAgICAgKiBoc2tpcDogMAorICAgICAqIGNsY2xfb3JkZXJlZDogMCwzLDAsMCwwLDAsMCwwLDMsMSwwLDAsMCwwLDAsMCwxLDAKKyAgICAgKiBzZXRfcHJlZml4X2NsX3JsZTogIiIsICIxMTAiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiMTExIiwgIjEiLFwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIjAiLCAiIgorICAgICAqIGNsX3JsZTogOAorICAgICAqIGNsX3JsZV9yZXA6IDksIDk2CisgICAgICogY2xfcmxlOiAxCisgICAgICogY2xfcmxlX3JlcDogOSwgMTU5IC8vIDEgKyA5NiArIDEgKyAxNTkgPSAyNTcgPiAyNTYgPSBhbHBoYWJldCBzaXplCisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogaHVmZm1hbl9maXhlZDogNjQKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMAorICAgICAqIGNvbW1hbmRfbGl0ZXJhbF9iaXRzOiAwLCAwLCAwLCAxMDExMDAwMTAKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICJhYWFiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q29tcGxleEh1ZmZtYW5Db2RlVHdvU3ltYm9scygpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4MDMsIChieXRlKSAweGUwLAorICAgICAgKGJ5dGUpIDB4YTIsIChieXRlKSAweDFhLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDBlLCAoYnl0ZSkgMHhiNiwgKGJ5dGUpIDB4NGMsCisgICAgICAoYnl0ZSkgMHg2MiwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4YzAsIChieXRlKSAweDlkLCAoYnl0ZSkgMHgzNiwKKyAgICAgIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwNAorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIC8vIFRoaXMgdGVzdHMgYSBjb21wbGV4IEh1ZmZtYW4gY29kZSB3aXRoIG9ubHkgdHdvIHN5bWJvbHMgZm9sbG93ZWQgYnkgYQorICAgICAqIC8vIHRpbnkgYW1vdW50IG9mIGNvbnRlbnQuCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2JlZ2luOiAxLCAwLCAyLCAwCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl90cml2aWFsX2NvbnRleHQKKyAgICAgKiAvLyBiZWdpbiBvZiBsaXRlcmFsIEh1ZmZtYW4gdHJlZS4gVGhlIHRyZWUgaGFzIHN5bWJvbCBsZW5ndGggMSBmb3IgImEiLAorICAgICAqIC8vIHN5bWJvbCBsZW5ndGggMSBmb3IgImIiIGFuZCBzeW1ib2wgbGVuZ3RoIDAgZm9yIGFsbCBvdGhlcnMuCisgICAgICogaHNraXA6IDAKKyAgICAgKiBjbGNsX29yZGVyZWQ6IDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxCisgICAgICogc2V0X3ByZWZpeF9jbF9ybGU6ICIiLCAiMCIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIixcCisgICAgICogICAgICAgICAgICAgICAgICAgICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiMSIKKyAgICAgKiBjbF9ybGVfcmVwXzA6IDk3CisgICAgICogY2xfcmxlOiAxICAvLyBsaXRlcmFsIG51bWJlciA5NywgdGhhdCBpcywgdGhlIGxldHRlciAnYScKKyAgICAgKiBjbF9ybGU6IDEgIC8vIGxpdGVyYWwgbnVtYmVyIDk4LCB0aGF0IGlzLCB0aGUgbGV0dGVyICdiJworICAgICAqIC8vIGVuZCBvZiBsaXRlcmFsIEh1ZmZtYW4gdHJlZQorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDcwNAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDY0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDIsIDAKKyAgICAgKiBjb21tYW5kX2xpdGVyYWxfYml0czogMCwgMSAgLy8gYSBmb2xsb3dlZCBieSBiCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgICJhYiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENvbXByZXNzZWRVbmNvbXByZXNzZWRTaG9ydENvbXByZXNzZWQoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHg4YiwgKGJ5dGUpIDB4ZmUsIChieXRlKSAweDAxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHg5YiwgKGJ5dGUpIDB4NjYsIChieXRlKSAweDZmLCAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MGEsIChieXRlKSAweDUwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDEwLCAoYnl0ZSkgMHg2MiwgKGJ5dGUpIDB4NjIsIChieXRlKSAweDYyLCAoYnl0ZSkgMHg2MiwgKGJ5dGUpIDB4NjIsIChieXRlKSAweDYyLAorICAgICAgKGJ5dGUpIDB4MzEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsCisgICAgICAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwKKyAgICAgIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LAorICAgICAgKGJ5dGUpIDB4MTEsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMAorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyOiAyMgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfZWFzeTogMTAyMiwgMAorICAgICAqIGNvbW1hbmRfZWFzeTogMTAyMSwgImEiLCAxIC8vIDEwMjIgeCAiYSIKKyAgICAgKiBtZXRhYmxvY2tfdW5jb21wcmVzc2VkOiAiYmJiYmJiIgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfZWFzeTogNCwgMQorICAgICAqIGNvbW1hbmRfZWFzeTogNCwgIiIsIDEgLy8gNiArIDQgPSAxMCB4ICJiIgorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCisgICAgICArICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q29tcHJlc3NlZFVuY29tcHJlc3NlZFNob3J0Q29tcHJlc3NlZFNtYWxsV2luZG93KCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MjEsIChieXRlKSAweGY0LCAoYnl0ZSkgMHgwZiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgxYywgKGJ5dGUpIDB4YTcsIChieXRlKSAweDZkLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHhkOCwKKyAgICAgIChieXRlKSAweDMyLCAoYnl0ZSkgMHg4OSwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDc3LAorICAgICAgKGJ5dGUpIDB4ZGEsIChieXRlKSAweDM0LCAoYnl0ZSkgMHg3YiwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDUwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4MDIsCisgICAgICAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjIsIChieXRlKSAweDYyLCAoYnl0ZSkgMHg2MiwgKGJ5dGUpIDB4NjIsIChieXRlKSAweDYyLCAoYnl0ZSkgMHg2MiwKKyAgICAgIChieXRlKSAweDMxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LAorICAgICAgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsCisgICAgICAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwKKyAgICAgIChieXRlKSAweDExLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcjogMTAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDEwMjIsIDAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDEwMjEsICJhIiwgMSAvLyAxMDIyIHggImEiCisgICAgICogbWV0YWJsb2NrX3VuY29tcHJlc3NlZDogImJiYmJiYiIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDQsIDEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDQsICIiLCAxIC8vIDYgKyA0ID0gMTAgeCAiYiIKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgorICAgICAgKyAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENvcHlMZW5ndGhUb29Mb25nKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDAxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhlMywgKGJ5dGUpIDB4YjQsIChieXRlKSAweDBkLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDA3LCAoYnl0ZSkgMHg1YiwKKyAgICAgIChieXRlKSAweDI2LCAoYnl0ZSkgMHgzMSwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDExLCAoYnl0ZSkgMHg4NiwgKGJ5dGUpIDB4MDIKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiAvLyBIYXMgYSBjb3B5IGxlbmd0aCB0aGF0IGdvZXMgb3ZlciB0aGUgZW5kIG9mIHRoZSBtZXRhLWJsb2NrLgorICAgICAqIC8vIFNhbWUgYXMgT25lQ29tbWFuZCwgYnV0IHdpdGggYSBzaG9ydGVyIG1ldGEtYmxvY2sgbGVuZ3RoLgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAyLCAxCisgICAgICogY29tbWFuZF9lYXN5OiAyLCAiYSIsIDEKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICIiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDb3B5VG9vTG9uZygpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweGExLCAoYnl0ZSkgMHgwOCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MWMsIChieXRlKSAweGE3LCAoYnl0ZSkgMHg2ZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4ZDgsCisgICAgICAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4ODksIChieXRlKSAweDAxLCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3NywKKyAgICAgIChieXRlKSAweGRhLCAoYnl0ZSkgMHgzNCwgKGJ5dGUpIDB4YWIsIChieXRlKSAweGRiLCAoYnl0ZSkgMHg1MCwgKGJ5dGUpIDB4MDAKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiAvLyBIYXMgYSBjb3B5IGxlbmd0aCB0aGF0IGdvZXMgb3ZlciB0aGUgZW5kIG9mIHRoZSBtZXRhLWJsb2NrLAorICAgICAqIC8vIHdpdGggYSByaW5nYnVmZmVyIHdyYXAuCisgICAgICogbWFpbl9oZWFkZXI6IDEwCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAyLCAxCisgICAgICogY29tbWFuZF9lYXN5OiAxMDI0LCAiYSIsIDEKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICIiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDdXN0b21IdWZmbWFuQ29kZSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4YzMsIChieXRlKSAweDNkLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NTgsIChieXRlKSAweDgyLCAoYnl0ZSkgMHgwOCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHhjMCwgKGJ5dGUpIDB4YzEsIChieXRlKSAweDk2LCAoYnl0ZSkgMHg0OSwgKGJ5dGUpIDB4MGMsIChieXRlKSAweDkwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHhiOCwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweDQ2LCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4MWEsIChieXRlKSAweDAxCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gVGhpcyB0ZXN0cyBhIHNtYWxsIGhhbmQgY3JhZnRlZCBIdWZmbWFuIGNvZGUgZm9sbG93ZWQgYnkgYSB0aW55IGFtb3VudAorICAgICAqIC8vIG9mIGNvbnRlbnQuIFRoaXMgdGVzdHMgaWYgdGhlIGJpdCByZWFkZXIgZGV0ZWN0cyB0aGUgZW5kIGNvcnJlY3RseSBldmVuCisgICAgICogLy8gd2l0aCB0aW55IGNvbnRlbnQgYWZ0ZXIgYSBsYXJnZXIgSHVmZm1hbiB0cmVlIGVuY29kaW5nLgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgNCwgMAorICAgICAqIG1ldGFibG9ja19oZWFkZXJfdHJpdmlhbF9jb250ZXh0CisgICAgICogLy8gYmVnaW4gb2YgbGl0ZXJhbCBIdWZmbWFuIHRyZWUuIFRoZSB0cmVlIGhhcyBzeW1ib2wgbGVuZ3RoIDEgZm9yICJhIiwKKyAgICAgKiAvLyBzeW1ib2wgbGVuZ3RoIDggZm9yIG51bGwsIHN5bWJvbCBsZW5ndGggOSBmb3IgYWxsIG90aGVycy4gVGhlIGxlbmd0aCAxCisgICAgICogLy8gZm9yIGEgaXMgY2hvc2VuIG9uIHB1cnBvc2UgaGVyZSwgdGhlIG90aGVycyBtdXN0IGJlIGxpa2UgdGhhdCB0bworICAgICAqIC8vIGZ1bGZpbGwgdGhlIHJlcXVpcmVtZW50IHRoYXQgc3VtIG9mIDMyPj5sZW5ndGggaXMgMzI3NjguCisgICAgICogaHNraXA6IDAKKyAgICAgKiBjbGNsX29yZGVyZWQ6IDAsMywwLDAsMCwwLDAsMCwzLDIsMCwwLDAsMCwwLDAsMSwwCisgICAgICogc2V0X3ByZWZpeF9jbF9ybGU6ICIiLCAiMTEwIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIjExMSIsICIxMCIsXAorICAgICAqICAgICAgICAgICAgICAgICAgICAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiMCIsICIiCisgICAgICogY2xfcmxlOiA4CisgICAgICogY2xfcmxlX3JlcDogOSwgOTYKKyAgICAgKiBjbF9ybGU6IDEgIC8vIGxpdGVyYWwgbnVtYmVyIDk3LCB0aGF0IGlzLCB0aGUgbGV0dGVyICdhJworICAgICAqIGNsX3JsZV9yZXA6IDksIDE1OAorICAgICAqIC8vIGVuZCBvZiBsaXRlcmFsIEh1ZmZtYW4gdHJlZQorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDcwNAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDY0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDQsIDAKKyAgICAgKiAvLyBIZXJlIGlzIGhvdyB0aGUgY29kZSAiMTAxMTAwMDEwIiBmb3IgYiBpcyBkZXJpdmVkOiByZW1lbWJlciB0aGF0IGEgaGFzCisgICAgICogLy8gc3ltYm9sIGxlbmd0aCAxLCBudWxsIGhhcyBzeW1ib2wgbGVuZ3RoIDgsIHRoZSByZXN0IDkuIFNvIGluIHRoZQorICAgICAqIC8vIGNhbm9uaWNhbCBIdWZmbWFuIGNvZGUsIHRoZSBjb2RlIGZvciAiYSIgaXMgIjAiLCBmb3IgbnVsbCBpcworICAgICAqIC8vICIxMDAwMDAwMCIuIFRoZSBuZXh0IHZhbHVlIGhhcyAiMTAwMDAwMDEwIiAoY2ZyLiB0aGUgcnVsZXMgb2YgY2Fub25pY2FsCisgICAgICogLy8gcHJlZml4IGNvZGUpLiBDb3VudGluZyB1cHdhcmRzICs5NSBmcm9tIHRoZXJlLCB0aGUgdmFsdWUgIkAiIChBU0NJSSA5NiwKKyAgICAgKiAvLyBiZWZvcmUgImEiKSBoYXMgIjEwMTEwMDAwMSIsIGFuZCBzbyBiLCB0aGUgbmV4dCA5LWJpdCBzeW1ib2wsIGhhcyB0aGUKKyAgICAgKiAvLyBuZXh0IGJpbmFyeSB2YWx1ZSAiMTAxMTAwMDEwIi4KKyAgICAgKiBjb21tYW5kX2xpdGVyYWxfYml0czogMCwgMCwgMCwgMTAxMTAwMDEwICAvLyAzIGEncyBmb2xsb3dlZCBieSBhIGIKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImFhYWIiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3REaXN0YW5jZUx1dCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDhiLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHg5OSwgKGJ5dGUpIDB4ODYsIChieXRlKSAweDQ2LCAoYnl0ZSkgMHhjNiwgKGJ5dGUpIDB4MjIsIChieXRlKSAweDE0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgxYywgKGJ5dGUpIDB4YTcsCisgICAgICAoYnl0ZSkgMHg2ZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4ZDgsIChieXRlKSAweDMyLCAoYnl0ZSkgMHg4OSwKKyAgICAgIChieXRlKSAweDAxLCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MjEsIChieXRlKSAweDkxLCAoYnl0ZSkgMHg2OSwgKGJ5dGUpIDB4NjIsIChieXRlKSAweDZhLAorICAgICAgKGJ5dGUpIDB4MzYKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfZWFzeTogNiwgMCAgLy8gaW1wbGljaXQgbmRpcmVjdDogMCwgMAorICAgICAqIGNvbW1hbmRfZWFzeTogMywgImFiYyIsIDMgIC8vIEluc2VydCAiYWJjIiwgY29weSAiYWJjIgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfYmVnaW46IDAsIDAsIDYsIDAKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMSAgLy8gbnVtIGxpdGV0YWwgYmxvY2sgdHlwZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMSAgLy8gbnVtIGNvbW1hbmQgYmxvY2sgdHlwZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMSAgLy8gbnVtIGRpc3RhbmNlIGJsb2NrIHR5cGVzCisgICAgICogbmRpcmVjdDogMywgMAorICAgICAqIGJpdHM6ICIwMCIgIC8vIGxpdGVyYWwgY29udGV4dCBtb2RlcworICAgICAqIHZscV9ibG9ja3R5cGVzOiAxICAvLyBudW0gbGl0ZXJhbCBIdWZmbWFuIHRyZWVzCisgICAgICogLy8gY29tbWFuZCBoYXMgbm8gY29udGV4dCAtPiBudW0gdHJlZXMgPT0gbnVtIGJsb2NrIHR5cGVzCisgICAgICogdmxxX2Jsb2NrdHlwZXM6IDEgIC8vIG51bSBkaXN0YW5jZSBIdWZmbWFuIHRyZWVzCisgICAgICogaHVmZm1hbl9maXhlZDogMjU2CisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogaHVmZm1hbl9zaW1wbGU6IDAsMSw2NywgMTgKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMywgMyAgLy8gSW5zZXJ0IDMsIGNvcHkgMworICAgICAqIGNvbW1hbmRfbGl0ZXJhbHNfZWFzeTogImRlZiIKKyAgICAgKiAvLyAwLWJpdCBIdWZmbWFuIGNvZGUgOiBkY29kZSA9IDE4IC0+IHRoaXJkIGRpcmVjdCBkaXN0YW5jZQorICAgICAqIG1ldGFibG9ja19sYXN0ZW1wdHkgIC8vIG1ha2Ugc3VyZSB0aGF0IG5vIGV4dHJhIGRpc3RhbmNlIGJpdHMgYXJlIHJlYWQKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImFiY2FiY2RlZmRlZiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEVtcHR5KCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4M2IKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19sYXN0ZW1wdHkKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgIiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEhlbGxvV29ybGQoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MGEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHg5YiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDU5LCAoYnl0ZSkgMHg5OCwgKGJ5dGUpIDB4ZGEsIChieXRlKSAweGQ4LCAoYnl0ZSkgMHhkOCwKKyAgICAgIChieXRlKSAweDEzLCAoYnl0ZSkgMHhiOCwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDNiLCAoYnl0ZSkgMHhkOSwgKGJ5dGUpIDB4OTgsIChieXRlKSAweDAwCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfZml4ZWQ6ICJoZWxsbyB3b3JsZCIsIDEKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImhlbGxvIHdvcmxkIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0SW5zZXJ0VG9vTG9uZygpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4ODYsIChieXRlKSAweDQ2CisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gSGFzIGFuIGluc2VydCBsZW5ndGggdGhhdCBnb2VzIG92ZXIgdGhlIGVuZCBvZiB0aGUgbWV0YS1ibG9jay4KKyAgICAgKiAvLyBTYW1lIGFzIE9uZUluc2VydCwgYnV0IHdpdGggYSBzaG9ydGVyIG1ldGEtYmxvY2sgbGVuZ3RoLgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAxLCAxCisgICAgICogY29tbWFuZF9lYXN5OiAwLCAiYWIiCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgZmFsc2UsCisgICAgICAiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0SW50YWN0RGlzdGFuY2VSaW5nQnVmZmVyMCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwYSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHhhMSwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDIwLCAoYnl0ZSkgMHgwMAorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAxMSwgMQorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA3IC8vICJoaW1zZWxmIiBmcm9tIGRpY3Rpb25hcnkKKyAgICAgKiBiaXRzOiAiMDAwMDAwIiAvLyBkaXN0YW5jZSA9IDQgZnJvbSBSQjsgUkIgcmVtYWlucyBpbnRhY3QKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNCAvLyBjb3B5ICJzZWxmIgorICAgICAqIGJpdHM6ICIwMDAwMDAiIC8vIGRpc3RhbmNlID0gNCBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAiaGltc2VsZnNlbGYiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RJbnRhY3REaXN0YW5jZVJpbmdCdWZmZXIxKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDA5LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhlMywgKGJ5dGUpIDB4YjQsIChieXRlKSAweDBkLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDA3LCAoYnl0ZSkgMHg1YiwKKyAgICAgIChieXRlKSAweDI2LCAoYnl0ZSkgMHgzMSwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDIxLCAoYnl0ZSkgMHhhMCwgKGJ5dGUpIDB4MjAsIChieXRlKSAweDAwCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDEwLCAxCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDYgLy8gInNjcm9sbCIgZnJvbSBkaWN0aW9uYXJ5CisgICAgICogYml0czogIjEwMDAwMCIgLy8gZGlzdGFuY2UgPSAxMSBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA0IC8vIGNvcHkgInJvbGwiCisgICAgICogYml0czogIjAwMDAwMCIgLy8gZGlzdGFuY2UgPSA0IGZyb20gUkI7IFJCIHJlbWFpbnMgaW50YWN0CisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgICJzY3JvbGxyb2xsIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0SW50YWN0RGlzdGFuY2VSaW5nQnVmZmVyMigpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwZiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDIwLCAoYnl0ZSkgMHg1MCwgKGJ5dGUpIDB4MTAsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDgsIChieXRlKSAweDA2CisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDE2LCAxCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQgLy8gImxlZnQiIGZyb20gZGljdGlvbmFyeSAoaW5kZXggPSAzID0gNCAtIDEpCisgICAgICogYml0czogIjAwMDAwMCIgLy8gZGlzdGFuY2UgPSA0IGZyb20gUkI7IFJCIHJlbWFpbnMgaW50YWN0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQgLy8gImRhdGEiIGZyb20gZGljdGlvbmFyeSAoaW5kZXggPSA2ID0gMTEgLSA1KQorICAgICAqIGJpdHM6ICIxMDAwMDAiIC8vIGRpc3RhbmNlID0gMTEgZnJvbSBSQjsgUkIgcmVtYWlucyBpbnRhY3QKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNCAvLyAiZGF0YSIgZnJvbSBkaWN0aW9uYXJ5IChpbmRleCA9IDYgPSAxNSAtIDkpCisgICAgICogYml0czogIjAxMDAwMCIgLy8gZGlzdGFuY2UgPSAxNSBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA0IC8vICJsZWZ0IiBmcm9tIGRpY3Rpb25hcnkgKGluZGV4ID0gMyA9IDE2IC0gMTMpCisgICAgICogYml0czogIjExMDAwMCIgLy8gZGlzdGFuY2UgPSAxNiBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAibGVmdGRhdGFkYXRhbGVmdCIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEludGFjdERpc3RhbmNlUmluZ0J1ZmZlck5vRGlzdGFuY2VWYWx1ZTAoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MTcsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4NDAsIChieXRlKSAweDgyLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4NDEsIChieXRlKSAweDkwLCAoYnl0ZSkgMHgyMCwKKyAgICAgIChieXRlKSAweDU4LCAoYnl0ZSkgMHgxOCwgKGJ5dGUpIDB4MDAKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfZWFzeTogMjQsIDEKKyAgICAgKiAvLyBjbWQgaXMge2luc19leHRyYSwgY29weV9leHRyYSwgZGlzdGFuY2VfY29kZSwgY3R4LCBpbnNfb2ZmLCBjb3B5X29mZn0KKyAgICAgKiAvLyBjbWQuMiA9IHsweDAwLCAweDAwLCAwLCAweDAyLCAweDAwMDAsIDB4MDAwNH0KKyAgICAgKiAvLyBjbWQuMiA9IG5vIGluc2VydCwgY29weSBsZW5ndGggPSA0LCBkaXN0YW5jZV9jb2RlID0gMCAobGFzdCBkaXN0YW5jZSkKKyAgICAgKiBjb21tYW5kX3Nob3J0OiAyIC8vICJsZWZ0IiBmcm9tIGRpY3Rpb25hcnkgKGluZGV4ID0gMyA9IDQgLSAxKQorICAgICAqIC8vIENoZWNrIHRoYXQgUkIgaXMgdW50b3VjaGVkIGFmdGVyIHRoZSBmaXJzdCBjb21tYW5kLi4uCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQgLy8gImRhdGEiIGZyb20gZGljdGlvbmFyeSAoaW5kZXggPSA2ID0gMTEgLSA1KQorICAgICAqIGJpdHM6ICIxMDAwMDAiIC8vIGRpc3RhbmNlID0gMTEgZnJvbSBSQjsgUkIgcmVtYWlucyBpbnRhY3QKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNCAvLyAiZGF0YSIgZnJvbSBkaWN0aW9uYXJ5IChpbmRleCA9IDYgPSAxNSAtIDkpCisgICAgICogYml0czogIjAxMDAwMCIgLy8gZGlzdGFuY2UgPSAxNSBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA0IC8vICJsZWZ0IiBmcm9tIGRpY3Rpb25hcnkgKGluZGV4ID0gMyA9IDE2IC0gMTMpCisgICAgICogYml0czogIjExMDAwMCIgLy8gZGlzdGFuY2UgPSAxNiBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA4IC8vIGNvcHkgImxlZnRsZWZ0IgorICAgICAqIGJpdHM6ICIwMDAwMDAiIC8vIGRpc3RhbmNlID0gNCBmcm9tIFJCOyBSQiByZW1haW5zIGludGFjdAorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAibGVmdGRhdGFkYXRhbGVmdGxlZnRsZWZ0IgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0SW50YWN0RGlzdGFuY2VSaW5nQnVmZmVyTm9EaXN0YW5jZVZhbHVlMSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgxOSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHhjMCwgKGJ5dGUpIDB4ODIsIChieXRlKSAweDQxLCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4OTAsIChieXRlKSAweDIwLAorICAgICAgKGJ5dGUpIDB4NTgsIChieXRlKSAweDE4LCAoYnl0ZSkgMHgwMAorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAyNiwgMQorICAgICAqIC8vIGNtZCBpcyB7aW5zX2V4dHJhLCBjb3B5X2V4dHJhLCBkaXN0YW5jZV9jb2RlLCBjdHgsIGluc19vZmYsIGNvcHlfb2ZmfQorICAgICAqIC8vIGNtZC4zID0gezB4MDAsIDB4MDAsIDAsIDB4MDMsIDB4MDAwMCwgMHgwMDA1fQorICAgICAqIC8vIGNtZC4zID0gbm8gaW5zZXJ0LCBjb3B5IGxlbmd0aCA9IDUsIGRpc3RhbmNlX2NvZGUgPSAwIChsYXN0IGRpc3RhbmNlKQorICAgICAqIGNvbW1hbmRfc2hvcnQ6IDMgLy8gIndvcmxkIiBmcm9tIGRpY3Rpb25hcnkgKGluZGV4ID0gMyA9IDQgLSAxKQorICAgICAqIC8vIENoZWNrIHRoYXQgUkIgaXMgdW50b3VjaGVkIGFmdGVyIHRoZSBmaXJzdCBjb21tYW5kLi4uCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDUgLy8gIndoaXRlIiBmcm9tIGRpY3Rpb25hcnkgKGluZGV4ID0gNSA9IDExIC0gNikKKyAgICAgKiBiaXRzOiAiMTAwMDAwIiAvLyBkaXN0YW5jZSA9IDExIGZyb20gUkI7IFJCIHJlbWFpbnMgaW50YWN0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQgLy8gImJhY2siIGZyb20gZGljdGlvbmFyeSAoaW5kZXggPSA0ID0gMTUgLSAxMSkKKyAgICAgKiBiaXRzOiAiMDEwMDAwIiAvLyBkaXN0YW5jZSA9IDE1IGZyb20gUkI7IFJCIHJlbWFpbnMgaW50YWN0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQgLy8gImRvd24iIGZyb20gZGljdGlvbmFyeSAoaW5kZXggPSAxID0gMTYgLSAxNSkKKyAgICAgKiBiaXRzOiAiMTEwMDAwIiAvLyBkaXN0YW5jZSA9IDE2IGZyb20gUkI7IFJCIHJlbWFpbnMgaW50YWN0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDggLy8gY29weSAiZG93bmRvd24iCisgICAgICogYml0czogIjAwMDAwMCIgLy8gZGlzdGFuY2UgPSA0IGZyb20gUkI7IFJCIHJlbWFpbnMgaW50YWN0CisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgICJ3b3JsZHdoaXRlYmFja2Rvd25kb3duZG93biIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEludmFsaWROb0xhc3RNZXRhYmxvY2soKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgwYiwgKGJ5dGUpIDB4MDYsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHg5YiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDEzLCAoYnl0ZSkgMHg1OSwgKGJ5dGUpIDB4OTgsIChieXRlKSAweGRhLCAoYnl0ZSkgMHhkOCwKKyAgICAgIChieXRlKSAweGQ4LCAoYnl0ZSkgMHgxMywgKGJ5dGUpIDB4YjgsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgzYiwgKGJ5dGUpIDB4ZDksIChieXRlKSAweDk4LAorICAgICAgKGJ5dGUpIDB4ZTgsIChieXRlKSAweDAwCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfZml4ZWQ6IFwiaGVsbG8gd29ybGRcIiwgMAorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIGZhbHNlLAorICAgICAgImhlbGxvIHdvcmxkIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0SW52YWxpZE5vTWV0YUJsb2NrcygpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDBiCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICIiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RJbnZhbGlkVG9vRmFyRGlzdCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweGExLCAoYnl0ZSkgMHg0OCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MWMsIChieXRlKSAweGE3LCAoYnl0ZSkgMHg2ZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4ZDgsCisgICAgICAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4ODksIChieXRlKSAweDAxLCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3NywKKyAgICAgIChieXRlKSAweGRhLCAoYnl0ZSkgMHhlOCwgKGJ5dGUpIDB4ZTAsIChieXRlKSAweDYyLCAoYnl0ZSkgMHg2ZiwgKGJ5dGUpIDB4NGYsIChieXRlKSAweDYwLAorICAgICAgKGJ5dGUpIDB4NjYsIChieXRlKSAweGU4LCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDBmLCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4MGQKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcjogMTAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2JlZ2luOiAxLCAwLCAxMCwgMAorICAgICAqIG1ldGFibG9ja19oZWFkZXJfdHJpdmlhbF9jb250ZXh0CisgICAgICogaHVmZm1hbl9maXhlZDogMjU2CisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogaHVmZm1hbl9maXhlZDogNjQKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDIsICJ0b28gZmFyISIsIDEwMDAwMDAgIC8vIGRpc3RhbmNlIHRvbyBmYXIgZm9yIDEwIHdiaXRzCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgZmFsc2UsCisgICAgICAiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0SW52YWxpZFRvb0xhcmdlQ29udGV4dE1hcCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGQxLCAoYnl0ZSkgMHhlMSwgKGJ5dGUpIDB4MDEsIChieXRlKSAweGM2LAorICAgICAgKGJ5dGUpIDB4ZTAsIChieXRlKSAweGUyLCAoYnl0ZSkgMHgwNiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg5MSwgKGJ5dGUpIDB4YjIsCisgICAgICAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4ZmUsIChieXRlKSAweGZiLCAoYnl0ZSkgMHg0NSwgKGJ5dGUpIDB4NTgsIChieXRlKSAweDg4LCAoYnl0ZSkgMHgwMSwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHgwMQorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIC8vIEhhcyBhIHJlcGVhdCBjb2RlIGEgY29udGV4dCBtYXAgdGhhdCBtYWtlcyB0aGUgc2l6ZSB0b28gYmlnIC0+IGludmFsaWQuCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2JlZ2luOiAxLCAwLCAxLCAwCisgICAgICogLy8gdHdvIGxpdGVyYWwgYmxvY2sgdHlwZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMgorICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAxLDQsNCwgMSwwLDIsMyAgLy8gbGl0ZXJhbCBibG9ja3R5cGUgcHJlZml4IGNvZGUKKyAgICAgKiBodWZmbWFuX2ZpeGVkOiAyNiAgLy8gbGl0ZXJhbCBibG9ja2NvdW50IHByZWZpeCBjb2RlCisgICAgICogYmxvY2tjb3VudF9lYXN5OiAxCisgICAgICogLy8gb25lIGlucy9jb3B5IGFuZCBkaXN0IGJsb2NrIHR5cGUKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMQorICAgICAqIHZscV9ibG9ja3R5cGVzOiAxCisgICAgICogbmRpcmVjdDogMCwgMAorICAgICAqIC8vIHR3byBNU0I2IGxpdGVyYWwgY29udGV4dCBtb2RlcworICAgICAqIGJpdHM6ICIwMCIsICIwMCIKKyAgICAgKiAvLyB0d28gbGl0ZXJhbCBwcmVmaXggY29kZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMgorICAgICAqIC8vIGxpdGVyYWwgY29udGV4dCBtYXAKKyAgICAgKiB2bHFfcmxlbWF4OiA1CisgICAgICogaHVmZm1hbl9zaW1wbGU6IDAsMyw3LCA1LDAsNiAgLy8gY29udGV4dCBtYXAgUkxFIEh1ZmZtYW4gY29kZQorICAgICAqIC8vIFRvbyBsb25nIGNvbnRleHQgbWFwIFJMRTogcmVwZWF0IDAgNjQgdGltZXMsIDErNSA2NSB0aW1lcywgdGhhdCBpcyAxMjkKKyAgICAgKiAvLyB2YWx1ZXMgd2hpY2ggaXMgMSB0b28gbXVjaC4KKyAgICAgKiBiaXRzOiAiMDEiLCAiMCIsICIxMTExMSIsICIxMSIsICIxMSIsICIwIiwgIjExMTExIgorICAgICAqIGJpdDogMSAgLy8gTVRGIGVuYWJsZWQKKyAgICAgKiAvLyBvbmUgZGlzdGFuY2UgcHJlZml4IGNvZGUKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMQorICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAwLDEsMjU2LCA5NyAgLy8gb25seSBhJ3MKKyAgICAgKiBodWZmbWFuX3NpbXBsZTogMCwxLDI1NiwgOTggIC8vIG9ubHkgYidzCisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogaHVmZm1hbl9maXhlZDogNjQKKyAgICAgKiAvLyBub3cgY29tZXMgdGhlIGRhdGEKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMSwgMAorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIGZhbHNlLAorICAgICAgImEiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RJbnZhbGlkVHJhbnNmb3JtVHlwZSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4MmQsIChieXRlKSAweDAxLCAoYnl0ZSkgMHgxOQorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiA0LCAxCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDQKKyAgICAgKiBjb21tYW5kX2Rpc3RfZWFzeTogMTIzOTA1IC8vID0gMTIxIDw8IDEwICsgMQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIGZhbHNlLAorICAgICAgIiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEludmFsaWRXaW5kb3dCaXRzOSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDkxLCAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MWMsIChieXRlKSAweGE3LCAoYnl0ZSkgMHg2ZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4ZDgsCisgICAgICAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4ODksIChieXRlKSAweDAxLCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3NywKKyAgICAgIChieXRlKSAweGRhLCAoYnl0ZSkgMHhjOCwgKGJ5dGUpIDB4MjAsIChieXRlKSAweDMyLCAoYnl0ZSkgMHhkNCwgKGJ5dGUpIDB4MDEKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcjogOQorICAgICAqIG1ldGFibG9ja19maXhlZDogXCJhXCIsIDEKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICJhIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0TWFueVRpbnlNZXRhYmxvY2tzKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywKKyAgICAgIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLAorICAgICAgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDgwLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsCisgICAgICAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4NjEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4NGUsIChieXRlKSAweGRiLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwKKyAgICAgIChieXRlKSAweDY1LCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLAorICAgICAgKGJ5dGUpIDB4YjQsIChieXRlKSAweDExLCAoYnl0ZSkgMHg2MSwgKGJ5dGUpIDB4MDQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NjEsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg3MCwgKGJ5dGUpIDB4YjAsIChieXRlKSAweDY1LAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlZSwgKGJ5dGUpIDB4YjQsCisgICAgICAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4NjEsIChieXRlKSAweDA0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsIChieXRlKSAweDYxLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLAorICAgICAgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsCisgICAgICAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgxMSwKKyAgICAgIChieXRlKSAweDYxLCAoYnl0ZSkgMHgzNAorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogcmVwZWF0OiAzMDAKKyAgICAgKiAgIG1ldGFibG9ja191bmNvbXByZXNzZWQ6ICJhIgorICAgICAqICAgbWV0YWJsb2NrX2ZpeGVkOiAiYiIKKyAgICAgKiBlbmRfcmVwZWF0CisgICAgICogbWV0YWJsb2NrX2xhc3RlbXB0eQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiCisgICAgICArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiCisgICAgICArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiCisgICAgICArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiCisgICAgICArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiCisgICAgICArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiCisgICAgICArICJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0TmVnYXRpdmVEaXN0YW5jZSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwZiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAxLCAoYnl0ZSkgMHg0MiwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDQyLAorICAgICAgKGJ5dGUpIDB4MDEsIChieXRlKSAweDQyLCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4NDIsIChieXRlKSAweDAxLCAoYnl0ZSkgMHg0MiwgKGJ5dGUpIDB4MDEsCisgICAgICAoYnl0ZSkgMHgxYworICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAxNiwgMQorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCA0IC8vIHRpbWUKKyAgICAgKiBjb21tYW5kX2Rpc3RfZWFzeTogMQorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCAyIC8vIG1lCisgICAgICogY29tbWFuZF9kaXN0X2Vhc3k6IDIKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgMiAvLyBtZQorICAgICAqIGNvbW1hbmRfZGlzdF9lYXN5OiAyCisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDAsIDIgLy8gbWUKKyAgICAgKiBjb21tYW5kX2Rpc3RfZWFzeTogMgorICAgICAqIGNvbW1hbmRfaW5zY29weV9lYXN5OiAwLCAyIC8vIG1lCisgICAgICogY29tbWFuZF9kaXN0X2Vhc3k6IDIKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgMiAvLyBtZQorICAgICAqIGNvbW1hbmRfZGlzdF9lYXN5OiAyIC8vIEFsbCByYiBpdGVtcyBhcmUgMiBub3cKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgMgorICAgICAqIGJpdHM6ICIwMTExMDAiIC8vIDE1IC0+IGRpc3RhbmNlID0gcmJbaWR4ICsgMl0gLSAzCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgZmFsc2UsCisgICAgICAidGltZW1lbWVtZW1lbWVYWCIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdE5lZ2F0aXZlUmVtYWluaW5nTGVuQmV0d2Vlbk1ldGFibG9ja3MoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgwYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MDksIChieXRlKSAweDg2LCAoYnl0ZSkgMHg0NiwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDM4LCAoYnl0ZSkgMHg0ZSwgKGJ5dGUpIDB4ZGIsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsCisgICAgICAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4OTEsIChieXRlKSAweDYwLCAoYnl0ZSkgMHg2OCwKKyAgICAgIChieXRlKSAweDA0CisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDEsIDAKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDAsICJhYiIgIC8vIHJlbWFpbmluZyBsZW5ndGggPT0gLTEgLT4gaW52YWxpZCBzdHJlYW0KKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDIsIDEKKyAgICAgKiBjb21tYW5kX2Vhc3k6IDAsICJhYiIKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICJhYmFiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0T25lQ29tbWFuZCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4ODYsIChieXRlKSAweDAyCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gVGhlIHN0cmVhbSBjb25zaXN0cyBvZiBvbmUgY29tbWFuZCB3aXRoIGluc2VydCBhbmQgY29weS4KKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfZWFzeTogMywgMQorICAgICAqIGNvbW1hbmRfZWFzeTogMiwgImEiLCAxCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgICJhYWEiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RPbmVJbnNlcnQoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MDksIChieXRlKSAweDg2LCAoYnl0ZSkgMHg0NgorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIC8vIFRoZSBzdHJlYW0gY29uc2lzdHMgb2Ygb25lIGhhbGYgY29tbWFuZCB3aXRoIGluc2VydCBvbmx5LgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9lYXN5OiAyLCAxCisgICAgICogY29tbWFuZF9lYXN5OiAwLCAiYWIiCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgICJhYiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFNpbXBsZVByZWZpeCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhhMCwgKGJ5dGUpIDB4YzMsIChieXRlKSAweGM0LAorICAgICAgKGJ5dGUpIDB4YzYsIChieXRlKSAweGM4LCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsCisgICAgICAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwKKyAgICAgIChieXRlKSAweDUxLCAoYnl0ZSkgMHhhMCwgKGJ5dGUpIDB4MWQKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDQsIDAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dAorICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAxLDQsMjU2LCA5Nyw5OCw5OSwxMDAgIC8vIEFTQ0lJIGNvZGVzIGZvciBhLCBiLCBjLCBkCisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogaHVmZm1hbl9maXhlZDogNjQKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMAorICAgICAqIGNvbW1hbmRfbGl0ZXJhbF9iaXRzOiAwLCAxMCwgMTEwLCAxMTEgIC8vIGEsIGIsIGMsIGQKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImFiY2QiCisgICAgKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RTaW1wbGVQcmVmaXhEdXBsaWNhdGVTeW1ib2xzKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGEwLCAoYnl0ZSkgMHhjMywgKGJ5dGUpIDB4YzQsCisgICAgICAoYnl0ZSkgMHhjMiwgKGJ5dGUpIDB4YzQsIChieXRlKSAweDAyLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwKKyAgICAgIChieXRlKSAweDEyLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MjQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ZWUsIChieXRlKSAweGI0LAorICAgICAgKGJ5dGUpIDB4NTEsIChieXRlKSAweGEwLCAoYnl0ZSkgMHgxZAorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgNCwgMAorICAgICAqIG1ldGFibG9ja19oZWFkZXJfdHJpdmlhbF9jb250ZXh0CisgICAgICogaHVmZm1hbl9zaW1wbGU6IDEsNCwyNTYsIDk3LDk4LDk3LDk4ICAvLyBBU0NJSSBjb2RlcyBmb3IgYSwgYiwgYSwgYgorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDcwNAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDY0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDQsIDAKKyAgICAgKiBjb21tYW5kX2xpdGVyYWxfYml0czogMCwgMTAsIDExMCwgMTExICAvLyBhLCBiLCBhLCBiCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgZmFsc2UsCisgICAgICAiYWJhYiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFNpbXBsZVByZWZpeE91dE9mUmFuZ2VTeW1ib2xzKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4MWIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4ODAsCisgICAgICAoYnl0ZSkgMHhlMywgKGJ5dGUpIDB4YjQsIChieXRlKSAweDRkLCAoYnl0ZSkgMHhmZiwgKGJ5dGUpIDB4ZWYsIChieXRlKSAweDdmLCAoYnl0ZSkgMHhmZiwKKyAgICAgIChieXRlKSAweGZjLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4MDAsIChieXRlKSAweGI4LCAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4MDYKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDQsIDAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDI1NgorICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAxLDQsNzA0LCAxMDIzLDEwMjIsMTAyMSwxMDIwCisgICAgICogaHVmZm1hbl9maXhlZDogNjQKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICIiCisgICAgKTsKKyAgfQorCisvKiBESVNBQkxFRDogSmF2YSBkZWNvZGVyIGRvZXMgbm90IHRvbGVyYXRlIGV4dHJhIGlucHV0IGFmdGVyIHRoZSBicm90bGkgc3RyZWFtLgorICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0U2ltcGxlUHJlZml4UGx1c0V4dHJhRGF0YSgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhhMCwgKGJ5dGUpIDB4YzMsIChieXRlKSAweGM0LAorICAgICAgKGJ5dGUpIDB4YzYsIChieXRlKSAweGM4LCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDcwLCAoYnl0ZSkgMHhiMCwgKGJ5dGUpIDB4NjUsCisgICAgICAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGVlLCAoYnl0ZSkgMHhiNCwKKyAgICAgIChieXRlKSAweDUxLCAoYnl0ZSkgMHhhMCwgKGJ5dGUpIDB4MWQsIChieXRlKSAweDU1LCAoYnl0ZSkgMHhhYQorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAgIGNvbXByZXNzZWQsCisgICAgICB0cnVlLAorICAgICAgImFiY2QiCisgICAgKTsKKyAgfQorKi8KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0U3RyZXNzUmVhZERpc3RhbmNlRXh0cmFCaXRzKCkgeworICAgIGJ5dGVbXSBjb21wcmVzc2VkID0geworICAgICAgKGJ5dGUpIDB4NGYsIChieXRlKSAweGZlLCAoYnl0ZSkgMHhmZiwgKGJ5dGUpIDB4M2YsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywKKyAgICAgIChieXRlKSAweDViLCAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLAorICAgICAgKGJ5dGUpIDB4NGUsIChieXRlKSAweDliLCAoYnl0ZSkgMHhmNiwgKGJ5dGUpIDB4NjksIChieXRlKSAweGVmLCAoYnl0ZSkgMHhmZiwgKGJ5dGUpIDB4MGMsCisgICAgICAoYnl0ZSkgMHg4ZCwgKGJ5dGUpIDB4OGMsIChieXRlKSAweDA1LCAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweDRlLCAoYnl0ZSkgMHhkYiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLAorICAgICAgKGJ5dGUpIDB4NzAsIChieXRlKSAweGIwLCAoYnl0ZSkgMHg2NSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgyNCwgKGJ5dGUpIDB4YTgsCisgICAgICAoYnl0ZSkgMHhhYSwgKGJ5dGUpIDB4ZWYsIChieXRlKSAweGFiLCAoYnl0ZSkgMHhhYSwgKGJ5dGUpIDB4N2YsIChieXRlKSAweDI0LCAoYnl0ZSkgMHgxNiwKKyAgICAgIChieXRlKSAweDM1LCAoYnl0ZSkgMHg4ZiwgKGJ5dGUpIDB4YWMsIChieXRlKSAweDllLCAoYnl0ZSkgMHgzZCwgKGJ5dGUpIDB4ZjcsIChieXRlKSAweGYzLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweDBhLCAoYnl0ZSkgMHhmYywgKGJ5dGUpIDB4ZmYsIChieXRlKSAweDAzLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHg3OCwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDA4LCAoYnl0ZSkgMHgzMCwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDMyLCAoYnl0ZSkgMHgzMywKKyAgICAgIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNSwgKGJ5dGUpIDB4MzYsIChieXRlKSAweDM3LCAoYnl0ZSkgMHgzOCwgKGJ5dGUpIDB4MzksIChieXRlKSAweDQxLAorICAgICAgKGJ5dGUpIDB4NDIsIChieXRlKSAweDQzLCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4NDUsIChieXRlKSAweDQ2LCAoYnl0ZSkgMHgzMCwgKGJ5dGUpIDB4MzEsCisgICAgICAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4MzMsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNSwgKGJ5dGUpIDB4MzYsIChieXRlKSAweDM3LCAoYnl0ZSkgMHgzOCwKKyAgICAgIChieXRlKSAweDM5LCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4NDIsIChieXRlKSAweDQzLCAoYnl0ZSkgMHg0NCwgKGJ5dGUpIDB4NDUsIChieXRlKSAweDQ2LAorICAgICAgKGJ5dGUpIDB4MzAsIChieXRlKSAweDMxLCAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4MzMsIChieXRlKSAweDM0LCAoYnl0ZSkgMHgzNSwgKGJ5dGUpIDB4MzYsCisgICAgICAoYnl0ZSkgMHgzNywgKGJ5dGUpIDB4MzgsIChieXRlKSAweDM5LCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4NDIsIChieXRlKSAweDQzLCAoYnl0ZSkgMHg0NCwKKyAgICAgIChieXRlKSAweDQ1LCAoYnl0ZSkgMHg0NiwgKGJ5dGUpIDB4MDMKKyAgICB9OworICAgIC8qIFRoaXMgbGluZSBpcyBhZGRlZCBtYW51YWxseS4gKi8KKyAgICBjaGFyW10gc3R1YiA9IG5ldyBjaGFyWzgzODg2MDJdOyBBcnJheXMuZmlsbChzdHViLCAnYycpOyBTdHJpbmcgaGV4ID0gIjAxMjM0NTY3ODlBQkNERUYiOworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiBtYWluX2hlYWRlcjogMjQKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDgzODg2MDUsIDAgIC8vIDJeMjMgLSAzID0gc2hvcnRlc3QgMjItYml0IGRpc3RhbmNlCisgICAgICogY29tbWFuZF9lYXN5OiA4Mzg4NjAyLCAiYWJjIiwgMQorICAgICAqIG1ldGFibG9ja19oZWFkZXJfYmVnaW46IDAsIDAsIDMsIDAKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMSAgLy8gbnVtIGxpdGV0YWwgYmxvY2sgdHlwZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMSAgLy8gbnVtIGNvbW1hbmQgYmxvY2sgdHlwZXMKKyAgICAgKiB2bHFfYmxvY2t0eXBlczogMSAgLy8gbnVtIGRpc3RhbmNlIGJsb2NrIHR5cGVzCisgICAgICogbmRpcmVjdDogMCwgMAorICAgICAqIGJpdHM6ICIwMCIgIC8vIGxpdGVyYWwgY29udGV4dCBtb2RlcworICAgICAqIHZscV9ibG9ja3R5cGVzOiAxICAvLyBudW0gbGl0ZXJhbCBIdWZmbWFuIHRyZWVzCisgICAgICogLy8gY29tbWFuZCBoYXMgbm8gY29udGV4dCAtPiBudW0gdHJlZXMgPT0gbnVtIGJsb2NrIHR5cGVzCisgICAgICogdmxxX2Jsb2NrdHlwZXM6IDEgIC8vIG51bSBkaXN0YW5jZSBIdWZmbWFuIHRyZWVzCisgICAgICogaHVmZm1hbl9maXhlZDogMjU2CisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogLy8gQmVnaW4gb2YgZGlzdGFuY2UgSHVmZm1hbiB0cmVlLiBGaXJzdCAxNSBjb2RlcyBoYXZlIGxlbmd0aHMgMSB0byAxNS4KKyAgICAgKiAvLyBTeW1ib2wgdGhhdCBjb3JyZXNwb25kcyB0byBmaXJzdCBoYWxmIG9mIDIyLWJpdCBkaXN0YW5jZSByYW5nZSBpcyBhbHNvCisgICAgICogLy8gMTUuIEFsbCBvdGhlciBzeW1ib2xzIGFyZSAwLgorICAgICAqIGhza2lwOiAwCisgICAgICogY2xjbF9vcmRlcmVkOiA0LDQsNCw0LCA0LDQsNCw0LCA0LDQsNCw0LCA0LDQsIDUsNSw1LDUKKyAgICAgKiBzZXRfcHJlZml4X2NsX3JsZTogIjAwMDAiLCAiMDAwMSIsICIwMDEwIiwgIjAwMTEiLCBcCisgICAgICogICAgICAgICAgICAgICAgICAgICIwMTAwIiwgIjAxMDEiLCAiMDExMCIsICIwMTExIiwgXAorICAgICAqICAgICAgICAgICAgICAgICAgICAiMTAwMCIsICIxMDAxIiwgIjEwMTAiLCAiMTAxMSIsIFwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgIjExMDAiLCAiMTEwMSIsIFwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgIjExMTAwIiwgIjExMTAxIiwgIjExMTEwIiwgIjExMTExIgorICAgICAqIGNsX3JsZTogMQorICAgICAqIGNsX3JsZTogMgorICAgICAqIGNsX3JsZTogMworICAgICAqIGNsX3JsZTogNAorICAgICAqIGNsX3JsZTogNQorICAgICAqIGNsX3JsZTogNgorICAgICAqIGNsX3JsZTogNworICAgICAqIGNsX3JsZTogOAorICAgICAqIGNsX3JsZTogOQorICAgICAqIGNsX3JsZTogMTAKKyAgICAgKiBjbF9ybGU6IDExCisgICAgICogY2xfcmxlOiAxMgorICAgICAqIGNsX3JsZTogMTMKKyAgICAgKiBjbF9ybGU6IDE0CisgICAgICogY2xfcmxlOiAxNQorICAgICAqIGNsX3JsZV9yZXBfMDogNDMKKyAgICAgKiBjbF9ybGU6IDE1ICAvLyBsaXRlcmFsIG51bWJlciA5NywgdGhhdCBpcywgdGhlIGxldHRlciAnYScKKyAgICAgKiAvLyBlbmQgb2YgbGl0ZXJhbCBIdWZmbWFuIHRyZWUKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgMyAgLy8gSW5zZXJ0IDAsIGNvcHkgMworICAgICAqIC8vIDE1IGJpdHMgb2YgZGlzdGFuY2UgY29kZSBwbHVzIDIyIGV4dHJhIGJpdHMKKyAgICAgKiBjb21tYW5kX2Rpc3RfYml0czogIjExMTExMTExMTExMTExMSIsICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgorICAgICAqIG1ldGFibG9ja191bmNvbXByZXNzZWQ6ICIwMTIzNDU2Nzg5QUJDREVGMDEyMzQ1Njc4OUFCQ0RFRjAxMjM0NTY3ODlBQkNERUYiCisgICAgICogbWV0YWJsb2NrX2xhc3RlbXB0eQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAvKiBUaGlzIGxpbmUgaXMgbW9kaWZpZWQgbWFudWFsbHkuICovCisgICAgICAiYWJjIiArIG5ldyBTdHJpbmcoc3R1YikgKyAiYWJjIiArIGhleCArIGhleCArIGhleAorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0VG9vTWFueVN5bWJvbHNSZXBlYXRlZCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwMywgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDEsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4YzMsIChieXRlKSAweDNkLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4NTgsIChieXRlKSAweDgyLCAoYnl0ZSkgMHgwYywgKGJ5dGUpIDB4MDAsCisgICAgICAoYnl0ZSkgMHhjMCwgKGJ5dGUpIDB4YzEsIChieXRlKSAweDk2LCAoYnl0ZSkgMHg0OSwgKGJ5dGUpIDB4MGMsIChieXRlKSAweDkwLCAoYnl0ZSkgMHgwMCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHhiOCwgKGJ5dGUpIDB4ZDMsIChieXRlKSAweDQ2LCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4MWEsIChieXRlKSAweDAxCisgICAgfTsKKyAgICBjaGVja1N5bnRoKAorICAgIC8qCisgICAgICogLy8gVGhpcyB0ZXN0IGlzIGEgY29weSBvZiBDdXN0b21IdWZmbWFuQ29kZSwgd2l0aCBjaGFuZ2VkIHJlcGVhdCBjb3VudC4KKyAgICAgKiBtYWluX2hlYWRlcgorICAgICAqIG1ldGFibG9ja19oZWFkZXJfYmVnaW46IDEsIDAsIDQsIDAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dAorICAgICAqIGhza2lwOiAwCisgICAgICogY2xjbF9vcmRlcmVkOiAwLDMsMCwwLDAsMCwwLDAsMywyLDAsMCwwLDAsMCwwLDEsMAorICAgICAqIHNldF9wcmVmaXhfY2xfcmxlOiAiIiwgIjExMCIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIxMTEiLCAiMTAiLFwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIjAiLCAiIgorICAgICAqIGNsX3JsZTogOAorICAgICAqIGNsX3JsZV9yZXA6IDksIDk2CisgICAgICogY2xfcmxlOiAxCisgICAgICogY2xfcmxlX3JlcDogOSwgMTU5IC8vIDEgKyA5NiArIDEgKyAxNTkgPSAyNTcgPiAyNTYgPSBhbHBoYWJldCBzaXplCisgICAgICogaHVmZm1hbl9maXhlZDogNzA0CisgICAgICogaHVmZm1hbl9maXhlZDogNjQKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogNCwgMAorICAgICAqIGNvbW1hbmRfbGl0ZXJhbF9iaXRzOiAwLCAwLCAwLCAxMDExMDAwMTAKKyAgICAgKi8KKyAgICAgIGNvbXByZXNzZWQsCisgICAgICBmYWxzZSwKKyAgICAgICJhYWFiIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0VHJhbnNmb3JtZWREaWN0V29yZCgpIHsKKyAgICBieXRlW10gY29tcHJlc3NlZCA9IHsKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHgwOCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDgwLAorICAgICAgKGJ5dGUpIDB4ZTMsIChieXRlKSAweGI0LCAoYnl0ZSkgMHgwZCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwNywgKGJ5dGUpIDB4NWIsCisgICAgICAoYnl0ZSkgMHgyNiwgKGJ5dGUpIDB4MzEsIChieXRlKSAweDQwLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweGUwLCAoYnl0ZSkgMHg0ZSwKKyAgICAgIChieXRlKSAweDFiLCAoYnl0ZSkgMHg0MSwgKGJ5dGUpIDB4MDksIChieXRlKSAweDAxLCAoYnl0ZSkgMHgwMQorICAgIH07CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIC8vIFRoZSBzdHJlYW0gY29uc2lzdHMgb2YgYSB0cmFuc2Zvcm1lZCBkaWN0aW9uYXJ5IHdvcmQuCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDksIDEKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNAorICAgICAqIGNvbW1hbmRfZGlzdF9lYXN5OiA1MTIxICAvLyA1IDw8IDEwICsgMQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIHRydWUsCisgICAgICAidGltZSB0aGUgIgorICAgICk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0VHJhbnNmb3JtZWREaWN0V29yZFRvb0xvbmcoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4MDMsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwKKyAgICAgIChieXRlKSAweGUzLCAoYnl0ZSkgMHhiNCwgKGJ5dGUpIDB4MGQsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MDcsIChieXRlKSAweDViLAorICAgICAgKGJ5dGUpIDB4MjYsIChieXRlKSAweDMxLCAoYnl0ZSkgMHg0MCwgKGJ5dGUpIDB4MDIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHhlMCwgKGJ5dGUpIDB4NGUsCisgICAgICAoYnl0ZSkgMHgxYiwgKGJ5dGUpIDB4NDEsIChieXRlKSAweDA5LCAoYnl0ZSkgMHgwMSwgKGJ5dGUpIDB4MDEKKyAgICB9OworICAgIGNoZWNrU3ludGgoCisgICAgLyoKKyAgICAgKiAvLyBIYXMgYSB0cmFuc2Zvcm1lZCBkaWN0aW9uYXJ5IHdvcmQgdGhhdCBnb2VzIG92ZXIgdGhlIGVuZCBvZiB0aGUKKyAgICAgKiAvLyBtZXRhLWJsb2NrLCBidXQgdGhlIGJhc2UgZGljdGlvbmFyeSB3b3JkIGZpdHMgaW4gdGhlIG1ldGEtYmxvY2suCisgICAgICogLy8gU2FtZSBhcyBUcmFuc2Zvcm1lZERpY3RXb3JkLCBidXQgd2l0aCBhIHNob3J0ZXIgbWV0YS1ibG9jayBsZW5ndGguCisgICAgICogbWFpbl9oZWFkZXIKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX2Vhc3k6IDQsIDEKKyAgICAgKiBjb21tYW5kX2luc2NvcHlfZWFzeTogMCwgNAorICAgICAqIGNvbW1hbmRfZGlzdF9lYXN5OiA1MTIxICAvLyA1IDw8IDEwICsgMQorICAgICAqLworICAgICAgY29tcHJlc3NlZCwKKyAgICAgIGZhbHNlLAorICAgICAgIiIKKyAgICApOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFplcm9Db3N0TGl0ZXJhbHMoKSB7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSB7CisgICAgICAoYnl0ZSkgMHg5YiwgKGJ5dGUpIDB4ZmYsIChieXRlKSAweGZmLCAoYnl0ZSkgMHhmZiwgKGJ5dGUpIDB4MDAsIChieXRlKSAweDIwLCAoYnl0ZSkgMHg1NCwKKyAgICAgIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4MzgsIChieXRlKSAweGQ4LCAoYnl0ZSkgMHgzMiwgKGJ5dGUpIDB4ODksIChieXRlKSAweDAxLAorICAgICAgKGJ5dGUpIDB4MTIsIChieXRlKSAweDAwLCAoYnl0ZSkgMHgwMCwgKGJ5dGUpIDB4NzcsIChieXRlKSAweGRhLCAoYnl0ZSkgMHhjYywgKGJ5dGUpIDB4ZTEsCisgICAgICAoYnl0ZSkgMHg3YiwgKGJ5dGUpIDB4ZmEsIChieXRlKSAweDBmCisgICAgfTsKKyAgICAvKiBUaGlzIGxpbmVzIGlzIGFkZGVkIG1hbnVhbGx5LiAqLworICAgIGNoYXJbXSBleHBlY3RlZCA9IG5ldyBjaGFyWzE2Nzc3MjE2XTsgQXJyYXlzLmZpbGwoZXhwZWN0ZWQsICcqJyk7CisgICAgY2hlY2tTeW50aCgKKyAgICAvKgorICAgICAqIG1haW5faGVhZGVyCisgICAgICogbWV0YWJsb2NrX2hlYWRlcl9iZWdpbjogMSwgMCwgMTY3NzcyMTYsIDAKKyAgICAgKiBtZXRhYmxvY2tfaGVhZGVyX3RyaXZpYWxfY29udGV4dAorICAgICAqIGh1ZmZtYW5fc2ltcGxlOiAwLDEsMjU2LCA0MiAgLy8gU2luZ2xlIHN5bWJvbCBhbHBoYWJldAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDcwNAorICAgICAqIGh1ZmZtYW5fZml4ZWQ6IDY0CisgICAgICogY29tbWFuZF9pbnNjb3B5X2Vhc3k6IDE2Nzc3MjE2LCAwCisgICAgICogLy8gMTY3NzcyMTYgdGltZXMgMCBiaXRzCisgICAgICovCisgICAgICBjb21wcmVzc2VkLAorICAgICAgdHJ1ZSwKKyAgICAgIC8qIFRoaXMgbGluZSBpcyBtb2RpZmllZCBtYW51YWxseS4gKi8KKyAgICAgIG5ldyBTdHJpbmcoZXhwZWN0ZWQpCisgICAgKTsKKyAgfQorCisvKiBHRU5FUkFURUQgQ09ERSBFTkQgKi8KKworfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvVHJhbnNmb3JtLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9UcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjc5ZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvVHJhbnNmb3JtLmphdmEKQEAgLTAsMCArMSwyMzYgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCisvKioKKyAqIFRyYW5zZm9ybWF0aW9ucyBvbiBkaWN0aW9uYXJ5IHdvcmRzLgorICoKKyAqIFRyYW5zZm9ybSBkZXNjcmlwdG9yIGlzIGEgdHJpcGxldDoge3ByZWZpeCwgb3BlcmF0b3IsIHN1ZmZpeH0uCisgKiAicHJlZml4IiBhbmQgInN1ZmZpeCIgYXJlIHNob3J0IHN0cmluZ3MgaW5zZXJ0ZWQgYmVmb3JlIGFuZCBhZnRlciB0cmFuc2Zvcm1lZCBkaWN0aW9uYXJ5IHdvcmQuCisgKiAib3BlcmF0b3IiIGlzIGFwcGxpZWQgdG8gZGljdGlvbmFyeSB3b3JkIGl0c2VsZi4KKyAqCisgKiBTb21lIG9wZXJhdG9ycyBoYXMgImJ1aWx0LWluIiBwYXJhbWV0ZXJzLCBpLmUuIHBhcmFtZXRlciBpcyBkZWZpbmVkIGJ5IG9wZXJhdG9yIG9yZGluYWwuIE90aGVyCisgKiBvcGVyYXRvcnMgaGF2ZSAiZXh0ZXJuYWwiIHBhcmFtZXRlcnMsIHN1cHBsaWVkIHZpYSBhZGRpdGlvbmFsIHRhYmxlIGVuY29kZWQgaW4gc2hhcmVkIGRpY3Rpb25hcnkuCisgKgorICogT3BlcmF0b3JzOgorICogIC0gSURFTlRJVFkgKDApOiBkaWN0aW9uYXJ5IHdvcmQgaXMgaW5zZXJ0ZWQgImFzIGlzIgorICogIC0gT01JVF9MQVNUX04gKDEgLSA5KTogbGFzdCBOIG9jdGV0cyBvZiBkaWN0aW9uYXJ5IHdvcmQgYXJlIG5vdCBpbnNlcnRlZDsgTiA9PSBvcmRpbmFsCisgKiAgLSBPTUlUX0ZJUlNUX00gKDEyLTIwKTogZmlyc3QgTSBvY3RldHMgb2YgZGljdGlvbmFyeSB3b3JkIGFyZSBub3QgaW5zZXJ0ZWQ7IE0gPT0gb3JkaW5hbCAtIDExCisgKiAgLSBVUFBFUkNBU0VfRklSU1QgKDEwKTogZmlyc3QgInNjYWxhciIgaXMgWE9SJ2VkIHdpdGggbnVtYmVyIDMyCisgKiAgLSBVUFBFUkNBU0VfQUxMICgxMSk6IGFsbCAic2NhbGFycyIgYXJlIFhPUidlZCB3aXRoIG51bWJlciAzMgorICogIC0gU0hJRlRfRklSU1QgKDIxKTogZmlyc3QgInNjYWxhciIgaXMgc2hpZnRlZCBieSBudW1iZXIgZm9ybSBwYXJhbWV0ZXIgdGFibGUKKyAqICAtIFNISUZUX0FMTCAoMjIpOiBhbGwgInNjYWxhciIgaXMgc2hpZnRlZCBieSBudW1iZXIgZm9ybSBwYXJhbWV0ZXIgdGFibGUKKyAqCisgKiBIZXJlICJzY2FsYXIiIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGNoYXJhY3RlciBjb2Rpbmcgc2ltaWxhciB0byBVVEYtOCBlbmNvZGluZy4KKyAqIFVQUEVSQ0FTRV9YWFggLyBTSElGVF9YWFggb3BlcmF0b3JzIHdlcmUgZGVzaWduZWQgdG8gY2hhbmdlIHRoZSBjYXNlIG9mIFVURi04IGVuY29kZWQgY2hhcmFjdGVycy4KKyAqIFdoaWxlIFVQUEVSQ0FTRV9YWFggd29ya3Mgd2VsbCBvbmx5IG9uIEFTQ0lJIGNoYXJzZXQsIFNISUZUIGlzIG11Y2ggbW9yZSBnZW5lcmljIGFuZCBjb3VsZCBiZQorICogdXNlZCBmb3IgbW9zdCAoYWxsPykgYWxwaGFiZXRzLgorICovCitmaW5hbCBjbGFzcyBUcmFuc2Zvcm0geworCisgIHN0YXRpYyBmaW5hbCBjbGFzcyBUcmFuc2Zvcm1zIHsKKyAgICBmaW5hbCBpbnQgbnVtVHJhbnNmb3JtczsKKyAgICBmaW5hbCBpbnRbXSB0cmlwbGV0czsKKyAgICBmaW5hbCBieXRlW10gcHJlZml4U3VmZml4U3RvcmFnZTsKKyAgICBmaW5hbCBpbnRbXSBwcmVmaXhTdWZmaXhIZWFkczsKKyAgICBmaW5hbCBzaG9ydFtdIHBhcmFtczsKKworICAgIFRyYW5zZm9ybXMoaW50IG51bVRyYW5zZm9ybXMsIGludCBwcmVmaXhTdWZmaXhMZW4sIGludCBwcmVmaXhTdWZmaXhDb3VudCkgeworICAgICAgdGhpcy5udW1UcmFuc2Zvcm1zID0gbnVtVHJhbnNmb3JtczsKKyAgICAgIHRoaXMudHJpcGxldHMgPSBuZXcgaW50W251bVRyYW5zZm9ybXMgKiAzXTsKKyAgICAgIHRoaXMucGFyYW1zID0gbmV3IHNob3J0W251bVRyYW5zZm9ybXNdOworICAgICAgdGhpcy5wcmVmaXhTdWZmaXhTdG9yYWdlID0gbmV3IGJ5dGVbcHJlZml4U3VmZml4TGVuXTsKKyAgICAgIHRoaXMucHJlZml4U3VmZml4SGVhZHMgPSBuZXcgaW50W3ByZWZpeFN1ZmZpeENvdW50ICsgMV07CisgICAgfQorICB9CisKKyAgc3RhdGljIGZpbmFsIGludCBOVU1fUkZDX1RSQU5TRk9STVMgPSAxMjE7CisgIHN0YXRpYyBmaW5hbCBUcmFuc2Zvcm1zIFJGQ19UUkFOU0ZPUk1TID0gbmV3IFRyYW5zZm9ybXMoTlVNX1JGQ19UUkFOU0ZPUk1TLCAxNjcsIDUwKTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT01JVF9GSVJTVF9MQVNUX0xJTUlUID0gOTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSURFTlRJVFkgPSAwOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT01JVF9MQVNUX0JBU0UgPSBJREVOVElUWSArIDEgLSAxOyAgLy8gdGhlcmUgaXMgbm8gT01JVF9MQVNUXzAuCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUFBFUkNBU0VfRklSU1QgPSBPTUlUX0xBU1RfQkFTRSArIE9NSVRfRklSU1RfTEFTVF9MSU1JVCArIDE7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUFBFUkNBU0VfQUxMID0gVVBQRVJDQVNFX0ZJUlNUICsgMTsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9NSVRfRklSU1RfQkFTRSA9IFVQUEVSQ0FTRV9BTEwgKyAxIC0gMTsgIC8vIHRoZXJlIGlzIG5vIE9NSVRfRklSU1RfMC4KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNISUZUX0ZJUlNUID0gT01JVF9GSVJTVF9CQVNFICsgT01JVF9GSVJTVF9MQVNUX0xJTUlUICsgMTsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNISUZUX0FMTCA9IFNISUZUX0ZJUlNUICsgMTsKKworICAvLyBCdW5kbGUgb2YgMC10ZXJtaW5hdGVkIHN0cmluZ3MuCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGSVhfU1VGRklYX1NSQyA9ICIjICNzICMsICNlICMuIyB0aGUgIy5jb20vI1x1MDBDMlx1MDBBMCMgb2YgIyBhbmQiCisgICAgICArICIgIyBpbiAjIHRvICNcIiNcIj4jXG4jXSMgZm9yICMgYSAjIHRoYXQgIy4gIyB3aXRoICMnIyBmcm9tICMgYnkgIy4gVGhlICMgb24gIyBhcyAjIGlzICNpbmciCisgICAgICArICIgI1xuXHQjOiNlZCAjKCMgYXQgI2x5ICM9XCIjIG9mIHRoZSAjLiBUaGlzICMsIyBub3QgI2VyICNhbCAjPScjZnVsICNpdmUgI2xlc3MgI2VzdCAjaXplICMiCisgICAgICArICJvdXMgIyI7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFOU0ZPUk1TX1NSQyA9ICIgICAgICEhICEgLCAgKiEgICYhICBcIiAhICApICogICAqIC0gICEgIyAhICAjISohICAiCisgICAgICArICIrICAsJCAhICAtICAlICAuICAvICMgICAwICAxIC4gIFwiICAgMiAgMyEqICAgNCUgICEgIyAvICAgNSAgNiAgNyAgOCAwICAxICYgICAkICAgOSArICAgOiAiCisgICAgICArICIgOyAgPCAnICAhPSAgPiAgPyEgNCAgQCA0ICAyICAmICAgQSAqIyAoICAgQiAgQyYgKSAlICApICEqIyAqLSUgQSArISAqLiAgRCEgJScgICYgRSAqNiAgRiAiCisgICAgICArICIgRyUgISAqQSAqJSAgSCEgRCAgSSErISAgSiErICAgSyArLSAqNCEgQSAgTCEqNCAgTSAgTiArNiAgTyEqJSArLiEgSyAqRyAgUCArJSggICEgRyAqRCArRCAiCisgICAgICArICIgUSArIyAqSyEqRyErRCErIyArRyArQSArNCErJSArSyErNCEqRCErSyEqSyI7CisKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1bnBhY2tUcmFuc2Zvcm1zKGJ5dGVbXSBwcmVmaXhTdWZmaXgsCisgICAgICBpbnRbXSBwcmVmaXhTdWZmaXhIZWFkcywgaW50W10gdHJhbnNmb3JtcywgU3RyaW5nIHByZWZpeFN1ZmZpeFNyYywgU3RyaW5nIHRyYW5zZm9ybXNTcmMpIHsKKyAgICBpbnQgbiA9IHByZWZpeFN1ZmZpeFNyYy5sZW5ndGgoKTsKKyAgICBpbnQgaW5kZXggPSAxOworICAgIGludCBqID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgY2hhciBjID0gcHJlZml4U3VmZml4U3JjLmNoYXJBdChpKTsKKyAgICAgIGlmIChjID09IDM1KSB7IC8vID09ICMKKyAgICAgICAgcHJlZml4U3VmZml4SGVhZHNbaW5kZXgrK10gPSBqOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHJlZml4U3VmZml4W2orK10gPSAoYnl0ZSkgYzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9SRkNfVFJBTlNGT1JNUyAqIDM7ICsraSkgeworICAgICAgdHJhbnNmb3Jtc1tpXSA9IHRyYW5zZm9ybXNTcmMuY2hhckF0KGkpIC0gMzI7CisgICAgfQorICB9CisKKyAgc3RhdGljIHsKKyAgICB1bnBhY2tUcmFuc2Zvcm1zKFJGQ19UUkFOU0ZPUk1TLnByZWZpeFN1ZmZpeFN0b3JhZ2UsIFJGQ19UUkFOU0ZPUk1TLnByZWZpeFN1ZmZpeEhlYWRzLAorICAgICAgICBSRkNfVFJBTlNGT1JNUy50cmlwbGV0cywgUFJFRklYX1NVRkZJWF9TUkMsIFRSQU5TRk9STVNfU1JDKTsKKyAgfQorCisgIHN0YXRpYyBpbnQgdHJhbnNmb3JtRGljdGlvbmFyeVdvcmQoYnl0ZVtdIGRzdCwgaW50IGRzdE9mZnNldCwgQnl0ZUJ1ZmZlciBzcmMsIGludCBzcmNPZmZzZXQsCisgICAgICBpbnQgbGVuLCBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMsIGludCB0cmFuc2Zvcm1JbmRleCkgeworICAgIGludCBvZmZzZXQgPSBkc3RPZmZzZXQ7CisgICAgaW50W10gdHJpcGxldHMgPSB0cmFuc2Zvcm1zLnRyaXBsZXRzOworICAgIGJ5dGVbXSBwcmVmaXhTdWZmaXhTdG9yYWdlID0gdHJhbnNmb3Jtcy5wcmVmaXhTdWZmaXhTdG9yYWdlOworICAgIGludFtdIHByZWZpeFN1ZmZpeEhlYWRzID0gdHJhbnNmb3Jtcy5wcmVmaXhTdWZmaXhIZWFkczsKKyAgICBpbnQgdHJhbnNmb3JtT2Zmc2V0ID0gMyAqIHRyYW5zZm9ybUluZGV4OworICAgIGludCBwcmVmaXhJZHggPSB0cmlwbGV0c1t0cmFuc2Zvcm1PZmZzZXRdOworICAgIGludCB0cmFuc2Zvcm1UeXBlID0gdHJpcGxldHNbdHJhbnNmb3JtT2Zmc2V0ICsgMV07CisgICAgaW50IHN1ZmZpeElkeCA9IHRyaXBsZXRzW3RyYW5zZm9ybU9mZnNldCArIDJdOworICAgIGludCBwcmVmaXggPSBwcmVmaXhTdWZmaXhIZWFkc1twcmVmaXhJZHhdOworICAgIGludCBwcmVmaXhFbmQgPSBwcmVmaXhTdWZmaXhIZWFkc1twcmVmaXhJZHggKyAxXTsKKyAgICBpbnQgc3VmZml4ID0gcHJlZml4U3VmZml4SGVhZHNbc3VmZml4SWR4XTsKKyAgICBpbnQgc3VmZml4RW5kID0gcHJlZml4U3VmZml4SGVhZHNbc3VmZml4SWR4ICsgMV07CisKKyAgICBpbnQgb21pdEZpcnN0ID0gdHJhbnNmb3JtVHlwZSAtIE9NSVRfRklSU1RfQkFTRTsKKyAgICBpbnQgb21pdExhc3QgPSB0cmFuc2Zvcm1UeXBlIC0gT01JVF9MQVNUX0JBU0U7CisgICAgaWYgKG9taXRGaXJzdCA8IDEgfHwgb21pdEZpcnN0ID4gT01JVF9GSVJTVF9MQVNUX0xJTUlUKSB7CisgICAgICBvbWl0Rmlyc3QgPSAwOworICAgIH0KKyAgICBpZiAob21pdExhc3QgPCAxIHx8IG9taXRMYXN0ID4gT01JVF9GSVJTVF9MQVNUX0xJTUlUKSB7CisgICAgICBvbWl0TGFzdCA9IDA7CisgICAgfQorCisgICAgLy8gQ29weSBwcmVmaXguCisgICAgd2hpbGUgKHByZWZpeCAhPSBwcmVmaXhFbmQpIHsKKyAgICAgIGRzdFtvZmZzZXQrK10gPSBwcmVmaXhTdWZmaXhTdG9yYWdlW3ByZWZpeCsrXTsKKyAgICB9CisKKyAgICAvLyBDb3B5IHRyaW1tZWQgd29yZC4KKyAgICBpZiAob21pdEZpcnN0ID4gbGVuKSB7CisgICAgICBvbWl0Rmlyc3QgPSBsZW47CisgICAgfQorICAgIHNyY09mZnNldCArPSBvbWl0Rmlyc3Q7CisgICAgbGVuIC09IG9taXRGaXJzdDsKKyAgICBsZW4gLT0gb21pdExhc3Q7CisgICAgaW50IGkgPSBsZW47CisgICAgd2hpbGUgKGkgPiAwKSB7CisgICAgICBkc3Rbb2Zmc2V0KytdID0gc3JjLmdldChzcmNPZmZzZXQrKyk7CisgICAgICBpLS07CisgICAgfQorCisgICAgLy8gRmVybWVudC4KKyAgICBpZiAodHJhbnNmb3JtVHlwZSA9PSBVUFBFUkNBU0VfRklSU1QgfHwgdHJhbnNmb3JtVHlwZSA9PSBVUFBFUkNBU0VfQUxMKSB7CisgICAgICBpbnQgdXBwZXJjYXNlT2Zmc2V0ID0gb2Zmc2V0IC0gbGVuOworICAgICAgaWYgKHRyYW5zZm9ybVR5cGUgPT0gVVBQRVJDQVNFX0ZJUlNUKSB7CisgICAgICAgIGxlbiA9IDE7CisgICAgICB9CisgICAgICB3aGlsZSAobGVuID4gMCkgeworICAgICAgICBpbnQgYzAgPSBkc3RbdXBwZXJjYXNlT2Zmc2V0XSAmIDB4RkY7CisgICAgICAgIGlmIChjMCA8IDB4QzApIHsKKyAgICAgICAgICBpZiAoYzAgPj0gOTcgJiYgYzAgPD0gMTIyKSB7IC8vIGluIFthLi56XSByYW5nZQorICAgICAgICAgICAgZHN0W3VwcGVyY2FzZU9mZnNldF0gXj0gKGJ5dGUpIDMyOworICAgICAgICAgIH0KKyAgICAgICAgICB1cHBlcmNhc2VPZmZzZXQgKz0gMTsKKyAgICAgICAgICBsZW4gLT0gMTsKKyAgICAgICAgfSBlbHNlIGlmIChjMCA8IDB4RTApIHsKKyAgICAgICAgICBkc3RbdXBwZXJjYXNlT2Zmc2V0ICsgMV0gXj0gKGJ5dGUpIDMyOworICAgICAgICAgIHVwcGVyY2FzZU9mZnNldCArPSAyOworICAgICAgICAgIGxlbiAtPSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGRzdFt1cHBlcmNhc2VPZmZzZXQgKyAyXSBePSAoYnl0ZSkgNTsKKyAgICAgICAgICB1cHBlcmNhc2VPZmZzZXQgKz0gMzsKKyAgICAgICAgICBsZW4gLT0gMzsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAodHJhbnNmb3JtVHlwZSA9PSBTSElGVF9GSVJTVCB8fCB0cmFuc2Zvcm1UeXBlID09IFNISUZUX0FMTCkgeworICAgICAgaW50IHNoaWZ0T2Zmc2V0ID0gb2Zmc2V0IC0gbGVuOworICAgICAgc2hvcnQgcGFyYW0gPSB0cmFuc2Zvcm1zLnBhcmFtc1t0cmFuc2Zvcm1JbmRleF07CisgICAgICAvKiBMaW1pdGVkIHNpZ24gZXh0ZW5zaW9uOiBzY2FsYXIgPCAoMSA8PCAyNCkuICovCisgICAgICBpbnQgc2NhbGFyID0gKHBhcmFtICYgMHg3RkZGKSArICgweDEwMDAwMDAgLSAocGFyYW0gJiAweDgwMDApKTsKKyAgICAgIHdoaWxlIChsZW4gPiAwKSB7CisgICAgICAgIGludCBzdGVwID0gMTsKKyAgICAgICAgaW50IGMwID0gZHN0W3NoaWZ0T2Zmc2V0XSAmIDB4RkY7CisgICAgICAgIGlmIChjMCA8IDB4ODApIHsKKyAgICAgICAgICAvKiAxLWJ5dGUgcnVuZSAvIDBzc3Nzc3NzIC8gNyBiaXQgc2NhbGFyIChBU0NJSSkuICovCisgICAgICAgICAgc2NhbGFyICs9IGMwOworICAgICAgICAgIGRzdFtzaGlmdE9mZnNldF0gPSAoYnl0ZSkgKHNjYWxhciAmIDB4N0YpOworICAgICAgICB9IGVsc2UgaWYgKGMwIDwgMHhDMCkgeworICAgICAgICAgIC8qIENvbnRpbnVhdGlvbiAvIDEwQUFBQUFBLiAqLworICAgICAgICB9IGVsc2UgaWYgKGMwIDwgMHhFMCkgeworICAgICAgICAgIC8qIDItYnl0ZSBydW5lIC8gMTEwc3Nzc3MgQUFzc3Nzc3MgLyAxMSBiaXQgc2NhbGFyLiAqLworICAgICAgICAgIGlmIChsZW4gPj0gMikgeworICAgICAgICAgICAgYnl0ZSBjMSA9IGRzdFtzaGlmdE9mZnNldCArIDFdOworICAgICAgICAgICAgc2NhbGFyICs9IChjMSAmIDB4M0YpIHwgKChjMCAmIDB4MUYpIDw8IDYpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0XSA9IChieXRlKSAoMHhDMCB8ICgoc2NhbGFyID4+IDYpICYgMHgxRikpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0ICsgMV0gPSAoYnl0ZSkgKChjMSAmIDB4QzApIHwgKHNjYWxhciAmIDB4M0YpKTsKKyAgICAgICAgICAgIHN0ZXAgPSAyOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGVwID0gbGVuOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjMCA8IDB4RjApIHsKKyAgICAgICAgICAvKiAzLWJ5dGUgcnVuZSAvIDExMTBzc3NzIEFBc3Nzc3NzIEJCc3Nzc3NzIC8gMTYgYml0IHNjYWxhci4gKi8KKyAgICAgICAgICBpZiAobGVuID49IDMpIHsKKyAgICAgICAgICAgIGJ5dGUgYzEgPSBkc3Rbc2hpZnRPZmZzZXQgKyAxXTsKKyAgICAgICAgICAgIGJ5dGUgYzIgPSBkc3Rbc2hpZnRPZmZzZXQgKyAyXTsKKyAgICAgICAgICAgIHNjYWxhciArPSAoYzIgJiAweDNGKSB8ICgoYzEgJiAweDNGKSA8PCA2KSB8ICgoYzAgJiAweDBGKSA8PCAxMik7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXRdID0gKGJ5dGUpICgweEUwIHwgKChzY2FsYXIgPj4gMTIpICYgMHgwRikpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0ICsgMV0gPSAoYnl0ZSkgKChjMSAmIDB4QzApIHwgKChzY2FsYXIgPj4gNikgJiAweDNGKSk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXQgKyAyXSA9IChieXRlKSAoKGMyICYgMHhDMCkgfCAoc2NhbGFyICYgMHgzRikpOworICAgICAgICAgICAgc3RlcCA9IDM7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZXAgPSBsZW47CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMwIDwgMHhGOCkgeworICAgICAgICAgIC8qIDQtYnl0ZSBydW5lIC8gMTExMTBzc3MgQUFzc3Nzc3MgQkJzc3Nzc3MgQ0Nzc3Nzc3MgLyAyMSBiaXQgc2NhbGFyLiAqLworICAgICAgICAgIGlmIChsZW4gPj0gNCkgeworICAgICAgICAgICAgYnl0ZSBjMSA9IGRzdFtzaGlmdE9mZnNldCArIDFdOworICAgICAgICAgICAgYnl0ZSBjMiA9IGRzdFtzaGlmdE9mZnNldCArIDJdOworICAgICAgICAgICAgYnl0ZSBjMyA9IGRzdFtzaGlmdE9mZnNldCArIDNdOworICAgICAgICAgICAgc2NhbGFyICs9IChjMyAmIDB4M0YpIHwgKChjMiAmIDB4M0YpIDw8IDYpIHwgKChjMSAmIDB4M0YpIDw8IDEyKSB8ICgoYzAgJiAweDA3KSA8PCAxOCk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXRdID0gKGJ5dGUpICgweEYwIHwgKChzY2FsYXIgPj4gMTgpICYgMHgwNykpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0ICsgMV0gPSAoYnl0ZSkgKChjMSAmIDB4QzApIHwgKChzY2FsYXIgPj4gMTIpICYgMHgzRikpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0ICsgMl0gPSAoYnl0ZSkgKChjMiAmIDB4QzApIHwgKChzY2FsYXIgPj4gNikgJiAweDNGKSk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXQgKyAzXSA9IChieXRlKSAoKGMzICYgMHhDMCkgfCAoc2NhbGFyICYgMHgzRikpOworICAgICAgICAgICAgc3RlcCA9IDQ7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZXAgPSBsZW47CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNoaWZ0T2Zmc2V0ICs9IHN0ZXA7CisgICAgICAgIGxlbiAtPSBzdGVwOworICAgICAgICBpZiAodHJhbnNmb3JtVHlwZSA9PSBTSElGVF9GSVJTVCkgeworICAgICAgICAgIGxlbiA9IDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb3B5IHN1ZmZpeC4KKyAgICB3aGlsZSAoc3VmZml4ICE9IHN1ZmZpeEVuZCkgeworICAgICAgZHN0W29mZnNldCsrXSA9IHByZWZpeFN1ZmZpeFN0b3JhZ2Vbc3VmZml4KytdOworICAgIH0KKworICAgIHJldHVybiBvZmZzZXQgLSBkc3RPZmZzZXQ7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1RyYW5zZm9ybVRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1RyYW5zZm9ybVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTA0ZjBkCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvVHJhbnNmb3JtVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRBcnJheUVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKgorICogVGVzdHMgZm9yIHtAbGluayBUcmFuc2Zvcm19LgorICovCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtVGVzdCB7CisKKyAgcHJpdmF0ZSBzdGF0aWMgbG9uZyBjcmM2NChieXRlW10gZGF0YSkgeworICAgIGxvbmcgY3JjID0gLTE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICBsb25nIGMgPSAoY3JjIF4gKGxvbmcpIChkYXRhW2ldICYgMHhGRikpICYgMHhGRjsKKyAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgODsgaysrKSB7CisgICAgICAgIGMgPSAoYyA+Pj4gMSkgXiAoLShjICYgMUwpICYgLTM5MzI2NzIwNzM1MjM1ODkzMTBMKTsKKyAgICAgIH0KKyAgICAgIGNyYyA9IGMgXiAoY3JjID4+PiA4KTsKKyAgICB9CisgICAgcmV0dXJuIH5jcmM7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0VHJpbUFsbCgpIHsKKyAgICBieXRlW10gb3V0cHV0ID0gbmV3IGJ5dGVbMF07CisgICAgYnl0ZVtdIGlucHV0ID0gezExOSwgMTExLCAxMTQsIDEwMH07IC8vICJ3b3JkIgorICAgIFRyYW5zZm9ybS50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChvdXRwdXQsIDAsCisgICAgICAgIEJ5dGVCdWZmZXIud3JhcChpbnB1dCksIDAsIGlucHV0Lmxlbmd0aCwgVHJhbnNmb3JtLlJGQ19UUkFOU0ZPUk1TLCAzOSk7CisgICAgYnl0ZVtdIGV4cGVjdGVkT3V0cHV0ID0gbmV3IGJ5dGVbMF07CisgICAgYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0ZWRPdXRwdXQsIG91dHB1dCk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q2FwaXRhbGl6ZSgpIHsKKyAgICBieXRlW10gb3V0cHV0ID0gbmV3IGJ5dGVbNl07CisgICAgYnl0ZVtdIGlucHV0ID0gezExMywgLTYxLCAtOTAsIC0zMiwgLTkyLCAtODZ9OyAvLyAiccOm4KSqIgorICAgIFRyYW5zZm9ybS50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChvdXRwdXQsIDAsCisgICAgICAgIEJ5dGVCdWZmZXIud3JhcChpbnB1dCksIDAsIGlucHV0Lmxlbmd0aCwgVHJhbnNmb3JtLlJGQ19UUkFOU0ZPUk1TLCA0NCk7CisgICAgYnl0ZVtdIGV4cGVjdGVkT3V0cHV0ID0gezgxLCAtNjEsIC0xMjIsIC0zMiwgLTkyLCAtODF9OyAvLyAiUcOG4KSvIgorICAgIGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkT3V0cHV0LCBvdXRwdXQpOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEFsbFRyYW5zZm9ybXMoKSB7CisgICAgLyogVGhpcyBzdHJpbmcgYWxsb3dzIHRvIGFwcGx5IGFsbCB0cmFuc2Zvcm1zOiBoZWFkIGFuZCB0YWlsIGN1dHRpbmcsIGNhcGl0YWxpemF0aW9uIGFuZAorICAgICAgIHR1cm5pbmcgdG8gdXBwZXIgY2FzZTsgYWxsIHJlc3VsdHMgd2lsbCBiZSBtdXR1YWxseSBkaWZmZXJlbnQuICovCisgICAgLy8gIm8xMjM0NTY3ODlhYmNkZWYiCisgICAgYnl0ZVtdIHRlc3RXb3JkID0gezExMSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMn07CisgICAgYnl0ZVtdIG91dHB1dCA9IG5ldyBieXRlWzIyNTldOworICAgIGludCBvZmZzZXQgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVHJhbnNmb3JtLk5VTV9SRkNfVFJBTlNGT1JNUzsgKytpKSB7CisgICAgICBvZmZzZXQgKz0gVHJhbnNmb3JtLnRyYW5zZm9ybURpY3Rpb25hcnlXb3JkKG91dHB1dCwgb2Zmc2V0LAorICAgICAgICAgIEJ5dGVCdWZmZXIud3JhcCh0ZXN0V29yZCksIDAsIHRlc3RXb3JkLmxlbmd0aCwgVHJhbnNmb3JtLlJGQ19UUkFOU0ZPUk1TLCBpKTsKKyAgICAgIG91dHB1dFtvZmZzZXQrK10gPSAtMTsKKyAgICB9CisgICAgYXNzZXJ0RXF1YWxzKG91dHB1dC5sZW5ndGgsIG9mZnNldCk7CisgICAgYXNzZXJ0RXF1YWxzKDg5MjkxOTEwNjAyMTEyMjUxODZMLCBjcmM2NChvdXRwdXQpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvVXRpbHMuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1V0aWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiMmJmYQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL1V0aWxzLmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5kZWM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLkJ1ZmZlcjsKKworLyoqCisgKiBBIHNldCBvZiB1dGlsaXR5IG1ldGhvZHMuCisgKi8KK2ZpbmFsIGNsYXNzIFV0aWxzIHsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gQllURV9aRVJPRVMgPSBuZXcgYnl0ZVsxMDI0XTsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBJTlRfWkVST0VTID0gbmV3IGludFsxMDI0XTsKKworICAvKioKKyAgICogRmlsbHMgYnl0ZSBhcnJheSB3aXRoIHplcm9lcy4KKyAgICoKKyAgICogPHA+IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gdXNlcyB7QGxpbmsgU3lzdGVtI2FycmF5Y29weX0sIHNvIGl0IHNob3VsZCBiZSB1c2VkIGZvciBsZW5ndGggbm90CisgICAqIGxlc3MgdGhhbiAxNi4KKyAgICoKKyAgICogQHBhcmFtIGRlc3QgYXJyYXkgdG8gZmlsbCB3aXRoIHplcm9lcworICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBmaXJzdCBieXRlIHRvIGZpbGwKKyAgICogQHBhcmFtIGxlbmd0aCBudW1iZXIgb2YgYnl0ZXMgdG8gY2hhbmdlCisgICAqLworICBzdGF0aWMgdm9pZCBmaWxsQnl0ZXNXaXRoWmVyb2VzKGJ5dGVbXSBkZXN0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICBpbnQgY3Vyc29yID0gc3RhcnQ7CisgICAgd2hpbGUgKGN1cnNvciA8IGVuZCkgeworICAgICAgaW50IHN0ZXAgPSBNYXRoLm1pbihjdXJzb3IgKyAxMDI0LCBlbmQpIC0gY3Vyc29yOworICAgICAgU3lzdGVtLmFycmF5Y29weShCWVRFX1pFUk9FUywgMCwgZGVzdCwgY3Vyc29yLCBzdGVwKTsKKyAgICAgIGN1cnNvciArPSBzdGVwOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBGaWxscyBpbnQgYXJyYXkgd2l0aCB6ZXJvZXMuCisgICAqCisgICAqIDxwPiBDdXJyZW50IGltcGxlbWVudGF0aW9uIHVzZXMge0BsaW5rIFN5c3RlbSNhcnJheWNvcHl9LCBzbyBpdCBzaG91bGQgYmUgdXNlZCBmb3IgbGVuZ3RoIG5vdAorICAgKiBsZXNzIHRoYW4gMTYuCisgICAqCisgICAqIEBwYXJhbSBkZXN0IGFycmF5IHRvIGZpbGwgd2l0aCB6ZXJvZXMKKyAgICogQHBhcmFtIG9mZnNldCB0aGUgZmlyc3QgaXRlbSB0byBmaWxsCisgICAqIEBwYXJhbSBsZW5ndGggbnVtYmVyIG9mIGl0ZW0gdG8gY2hhbmdlCisgICAqLworICBzdGF0aWMgdm9pZCBmaWxsSW50c1dpdGhaZXJvZXMoaW50W10gZGVzdCwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgaW50IGN1cnNvciA9IHN0YXJ0OworICAgIHdoaWxlIChjdXJzb3IgPCBlbmQpIHsKKyAgICAgIGludCBzdGVwID0gTWF0aC5taW4oY3Vyc29yICsgMTAyNCwgZW5kKSAtIGN1cnNvcjsKKyAgICAgIFN5c3RlbS5hcnJheWNvcHkoSU5UX1pFUk9FUywgMCwgZGVzdCwgY3Vyc29yLCBzdGVwKTsKKyAgICAgIGN1cnNvciArPSBzdGVwOworICAgIH0KKyAgfQorCisgIHN0YXRpYyB2b2lkIGNvcHlCeXRlcyhieXRlW10gZHN0LCBpbnQgdGFyZ2V0LCBieXRlW10gc3JjLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KHNyYywgc3RhcnQsIGRzdCwgdGFyZ2V0LCBlbmQgLSBzdGFydCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBjb3B5Qnl0ZXNXaXRoaW4oYnl0ZVtdIGJ5dGVzLCBpbnQgdGFyZ2V0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KGJ5dGVzLCBzdGFydCwgYnl0ZXMsIHRhcmdldCwgZW5kIC0gc3RhcnQpOworICB9CisKKyAgc3RhdGljIGludCByZWFkSW5wdXQoSW5wdXRTdHJlYW0gc3JjLCBieXRlW10gZHN0LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKSB7CisgICAgdHJ5IHsKKyAgICAgIHJldHVybiBzcmMucmVhZChkc3QsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICB0aHJvdyBuZXcgQnJvdGxpUnVudGltZUV4Y2VwdGlvbigiRmFpbGVkIHRvIHJlYWQgaW5wdXQiLCBlKTsKKyAgICB9CisgIH0KKworICBzdGF0aWMgdm9pZCBjbG9zZUlucHV0KElucHV0U3RyZWFtIHNyYykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBzcmMuY2xvc2UoKTsKKyAgfQorCisgIHN0YXRpYyBieXRlW10gdG9Vc0FzY2lpQnl0ZXMoU3RyaW5nIHNyYykgeworICAgIHRyeSB7CisgICAgICAvLyBOQjogU3RyaW5nI2dldEJ5dGVzKFN0cmluZykgaXMgcHJlc2VudCBpbiBKREsgMS4xLCB3aGlsZSBvdGhlciB2YXJpYW50cyByZXF1aXJlIEpESyAxLjYgYW5kCisgICAgICAvLyBhYm92ZS4KKyAgICAgIHJldHVybiBzcmMuZ2V0Qnl0ZXMoIlVTLUFTQ0lJIik7CisgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsgLy8gY2Fubm90IGhhcHBlbgorICAgIH0KKyAgfQorCisgIC8vIENyYXp5IHBpbGxzIGZhY3Rvcnk6IGNvZGUgY29tcGlsZWQgZm9yIEpESzggZG9lcyBub3Qgd29yayBvbiBKUkU5LgorICBzdGF0aWMgdm9pZCBmbGlwQnVmZmVyKEJ1ZmZlciBidWZmZXIpIHsKKyAgICBidWZmZXIuZmxpcCgpOworICB9CisKKyAgc3RhdGljIGludCBpc0RlYnVnTW9kZSgpIHsKKyAgICBib29sZWFuIGFzc2VydHNFbmFibGVkID0gQm9vbGVhbi5wYXJzZUJvb2xlYW4oU3lzdGVtLmdldFByb3BlcnR5KCJCUk9UTElfRU5BQkxFX0FTU0VSVFMiKSk7CisgICAgcmV0dXJuIGFzc2VydHNFbmFibGVkID8gMSA6IDA7CisgIH0KKworICAvLyBTZWUgQml0UmVhZGVyLkxPR19CSVRORVNTCisgIHN0YXRpYyBpbnQgZ2V0TG9nQmludG5lc3MoKSB7CisgICAgYm9vbGVhbiBpc0xvbmdFeHBlbnNpdmUgPSBCb29sZWFuLnBhcnNlQm9vbGVhbihTeXN0ZW0uZ2V0UHJvcGVydHkoIkJST1RMSV8zMl9CSVRfQ1BVIikpOworICAgIHJldHVybiBpc0xvbmdFeHBlbnNpdmUgPyA1IDogNjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvYnVpbGRfZGVmcy5iemwgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9idWlsZF9kZWZzLmJ6bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGEwMTVjCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvYnVpbGRfZGVmcy5iemwKQEAgLTAsMCArMSwzNCBAQAorIiIiVXRpbGl0aWVzIGZvciBKYXZhIGJyb3RsaSB0ZXN0cy4iIiIKKworX1RFU1RfSlZNX0ZMQUdTID0gWworICAgICItREJST1RMSV9FTkFCTEVfQVNTRVJUUz10cnVlIiwKK10KKworZGVmIGJyb3RsaV9qYXZhX3Rlc3QobmFtZSwgbWFpbl9jbGFzcyA9IE5vbmUsIGp2bV9mbGFncyA9IE5vbmUsICoqa3dhcmdzKToKKyAgICAiIiJ0ZXN0IGR1cGxpY2F0aW9uIHJ1bGUgdGhhdCBjcmVhdGVzIDMyLzY0LWJpdCB0ZXN0IHBhaXIuIiIiCisKKyAgICBpZiBqdm1fZmxhZ3MgPT0gTm9uZToKKyAgICAgICAganZtX2ZsYWdzID0gW10KKyAgICBqdm1fZmxhZ3MgPSBqdm1fZmxhZ3MgKyBfVEVTVF9KVk1fRkxBR1MKKworICAgIHRlc3RfcGFja2FnZSA9IG5hdGl2ZS5wYWNrYWdlX25hbWUoKS5yZXBsYWNlKCIvIiwgIi4iKQorICAgIGlmIG1haW5fY2xhc3MgPT0gTm9uZToKKyAgICAgICAgdGVzdF9jbGFzcyA9IHRlc3RfcGFja2FnZSArICIuIiArIG5hbWUKKyAgICBlbHNlOgorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgbmF0aXZlLmphdmFfdGVzdCgKKyAgICAgICAgbmFtZSA9IG5hbWUgKyAiXzMyIiwKKyAgICAgICAgbWFpbl9jbGFzcyA9IG1haW5fY2xhc3MsCisgICAgICAgIHRlc3RfY2xhc3MgPSB0ZXN0X2NsYXNzLAorICAgICAgICBqdm1fZmxhZ3MgPSBqdm1fZmxhZ3MgKyBbIi1EQlJPVExJXzMyX0JJVF9DUFU9dHJ1ZSJdLAorICAgICAgICAqKmt3YXJncworICAgICkKKworICAgIG5hdGl2ZS5qYXZhX3Rlc3QoCisgICAgICAgIG5hbWUgPSBuYW1lICsgIl82NCIsCisgICAgICAgIG1haW5fY2xhc3MgPSBtYWluX2NsYXNzLAorICAgICAgICB0ZXN0X2NsYXNzID0gdGVzdF9jbGFzcywKKyAgICAgICAganZtX2ZsYWdzID0ganZtX2ZsYWdzICsgWyItREJST1RMSV8zMl9CSVRfQ1BVPWZhbHNlIl0sCisgICAgICAgICoqa3dhcmdzCisgICAgKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvcG9tLnhtbCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2ZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZGVjL3BvbS54bWwKQEAgLTAsMCArMSwxNzIgQEAKKzxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCisgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2QiPgorICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+CisKKyAgPHBhcmVudD4KKyAgICA8Z3JvdXBJZD5vcmcuYnJvdGxpPC9ncm91cElkPgorICAgIDxhcnRpZmFjdElkPnBhcmVudDwvYXJ0aWZhY3RJZD4KKyAgICA8dmVyc2lvbj4wLjIuMC1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgPC9wYXJlbnQ+CisgIDxhcnRpZmFjdElkPmRlYzwvYXJ0aWZhY3RJZD4KKyAgPHZlcnNpb24+MC4yLjAtU05BUFNIT1Q8L3ZlcnNpb24+CisgIDxwYWNrYWdpbmc+amFyPC9wYWNrYWdpbmc+CisKKyAgPG5hbWU+JHtwcm9qZWN0Lmdyb3VwSWR9OiR7cHJvamVjdC5hcnRpZmFjdElkfTwvbmFtZT4KKworICA8cHJvcGVydGllcz4KKyAgICA8bWFuaWZlc3RkaXI+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vb3NnaTwvbWFuaWZlc3RkaXI+CisgICAgPG1hbmlmZXN0ZmlsZT4ke21hbmlmZXN0ZGlyfS9NQU5JRkVTVC5NRjwvbWFuaWZlc3RmaWxlPgorICA8L3Byb3BlcnRpZXM+CisKKyAgPGJ1aWxkPgorICAgIDxzb3VyY2VEaXJlY3Rvcnk+Li4vLi4vLi48L3NvdXJjZURpcmVjdG9yeT4KKyAgICA8dGVzdFNvdXJjZURpcmVjdG9yeT4uLi8uLi8uLjwvdGVzdFNvdXJjZURpcmVjdG9yeT4KKyAgICA8cGx1Z2lucz4KKyAgICAgIDxwbHVnaW4+CisgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KKyAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICA8aW5jbHVkZXM+CisgICAgICAgICAgICA8aW5jbHVkZT5vcmcvYnJvdGxpL2RlYy8qLmphdmE8L2luY2x1ZGU+CisgICAgICAgICAgPC9pbmNsdWRlcz4KKyAgICAgICAgICA8ZXhjbHVkZXM+CisgICAgICAgICAgICA8ZXhjbHVkZT4qKi8qVGVzdCouamF2YTwvZXhjbHVkZT4KKyAgICAgICAgICA8L2V4Y2x1ZGVzPgorICAgICAgICAgIDx0ZXN0SW5jbHVkZXM+CisgICAgICAgICAgICA8aW5jbHVkZT5vcmcvYnJvdGxpL2RlYy8qVGVzdCouamF2YTwvaW5jbHVkZT4KKyAgICAgICAgICA8L3Rlc3RJbmNsdWRlcz4KKyAgICAgICAgICA8dGVzdEV4Y2x1ZGVzPgorICAgICAgICAgICAgPGV4Y2x1ZGU+b3JnL2Jyb3RsaS9kZWMvU2V0RGljdGlvbmFyeVRlc3QuamF2YTwvZXhjbHVkZT4KKyAgICAgICAgICA8L3Rlc3RFeGNsdWRlcz4KKyAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgPC9wbHVnaW4+CisgICAgICA8cGx1Z2luPgorICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLXN1cmVmaXJlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgPHZlcnNpb24+My4wLjAtTTM8L3ZlcnNpb24+CisgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgIDxzeXN0ZW1Qcm9wZXJ0eVZhcmlhYmxlcz4KKyAgICAgICAgICAgIDxCUk9UTElfRU5BQkxFX0FTU0VSVFM+dHJ1ZTwvQlJPVExJX0VOQUJMRV9BU1NFUlRTPgorICAgICAgICAgIDwvc3lzdGVtUHJvcGVydHlWYXJpYWJsZXM+CisgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgIDwvcGx1Z2luPgorICAgICAgPHBsdWdpbj4KKyAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgorICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zb3VyY2UtcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICA8dmVyc2lvbj4yLjQ8L3ZlcnNpb24+CisgICAgICAgIDxleGVjdXRpb25zPgorICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICA8aWQ+YXR0YWNoLXNvdXJjZXM8L2lkPgorICAgICAgICAgICAgPHBoYXNlPnZlcmlmeTwvcGhhc2U+CisgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgIDxnb2FsPmphci1uby1mb3JrPC9nb2FsPgorICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICA8aW5jbHVkZXM+CisgICAgICAgICAgICAgICAgPGluY2x1ZGU+b3JnL2Jyb3RsaS9kZWMvKi5qYXZhPC9pbmNsdWRlPgorICAgICAgICAgICAgICA8L2luY2x1ZGVzPgorICAgICAgICAgICAgICA8ZXhjbHVkZXM+CisgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+KiovKlRlc3QqLmphdmE8L2V4Y2x1ZGU+CisgICAgICAgICAgICAgIDwvZXhjbHVkZXM+CisgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICAgICAgPC9leGVjdXRpb24+CisgICAgICAgIDwvZXhlY3V0aW9ucz4KKyAgICAgIDwvcGx1Z2luPgorICAgICAgPHBsdWdpbj4KKyAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgorICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1qYXZhZG9jLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgPHZlcnNpb24+Mi4xMC40PC92ZXJzaW9uPgorICAgICAgICA8ZXhlY3V0aW9ucz4KKyAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgPGlkPmF0dGFjaC1qYXZhZG9jczwvaWQ+CisgICAgICAgICAgICA8cGhhc2U+dmVyaWZ5PC9waGFzZT4KKyAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgPGdvYWw+amFyPC9nb2FsPgorICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICA8c291cmNlcGF0aD4uPC9zb3VyY2VwYXRoPgorICAgICAgICAgICAgICA8c291cmNlRmlsZUV4Y2x1ZGVzPgorICAgICAgICAgICAgICAgIDxleGNsdWRlPioqLypUZXN0Ki5qYXZhPC9leGNsdWRlPgorICAgICAgICAgICAgICA8L3NvdXJjZUZpbGVFeGNsdWRlcz4KKyAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgPC9leGVjdXRpb25zPgorICAgICAgPC9wbHVnaW4+CisgICAgICA8cGx1Z2luPgorICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmZlbGl4PC9ncm91cElkPgorICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1idW5kbGUtcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICA8dmVyc2lvbj4zLjAuMTwvdmVyc2lvbj4KKyAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgPGFyY2hpdmU+CisgICAgICAgICAgICA8Zm9yY2VkPnRydWU8L2ZvcmNlZD4KKyAgICAgICAgICA8L2FyY2hpdmU+CisgICAgICAgICAgPGV4Y2x1ZGVEZXBlbmRlbmNpZXM+dHJ1ZTwvZXhjbHVkZURlcGVuZGVuY2llcz4KKyAgICAgICAgICA8bWFuaWZlc3RMb2NhdGlvbj4ke21hbmlmZXN0ZGlyfTwvbWFuaWZlc3RMb2NhdGlvbj4KKyAgICAgICAgICA8aW5zdHJ1Y3Rpb25zPgorICAgICAgICAgICAgPF9ub3VzZXM+dHJ1ZTwvX25vdXNlcz4KKyAgICAgICAgICAgIDxCdW5kbGUtU3ltYm9saWNOYW1lPm9yZy5icm90bGkuJHtwcm9qZWN0LmFydGlmYWN0SWR9PC9CdW5kbGUtU3ltYm9saWNOYW1lPgorICAgICAgICAgICAgPEJ1bmRsZS1EZXNjcmlwdGlvbj4ke3Byb2plY3QuZGVzY3JpcHRpb259PC9CdW5kbGUtRGVzY3JpcHRpb24+CisgICAgICAgICAgICA8RXhwb3J0LVBhY2thZ2U+b3JnLmJyb3RsaS5kZWM7dmVyc2lvbj0ke3Byb2plY3QudmVyc2lvbn07LW5vaW1wb3J0Oj10cnVlPC9FeHBvcnQtUGFja2FnZT4KKyAgICAgICAgICAgIDxQcml2YXRlLVBhY2thZ2U+PC9Qcml2YXRlLVBhY2thZ2U+CisgICAgICAgICAgICA8SW1wb3J0LVBhY2thZ2U+KjwvSW1wb3J0LVBhY2thZ2U+CisgICAgICAgICAgICA8RHluYW1pY0ltcG9ydC1QYWNrYWdlPjwvRHluYW1pY0ltcG9ydC1QYWNrYWdlPgorICAgICAgICAgICAgPEJ1bmRsZS1Eb2NVUkw+JHtwcm9qZWN0LnVybH08L0J1bmRsZS1Eb2NVUkw+CisgICAgICAgICAgPC9pbnN0cnVjdGlvbnM+CisgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgPGV4ZWN1dGlvbnM+CisgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgIDxpZD5idW5kbGUtbWFuaWZlc3Q8L2lkPgorICAgICAgICAgICAgPHBoYXNlPnByb2Nlc3MtY2xhc3NlczwvcGhhc2U+CisgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgIDxnb2FsPm1hbmlmZXN0PC9nb2FsPgorICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgPC9leGVjdXRpb25zPgorICAgICAgPC9wbHVnaW4+CisgICAgICA8cGx1Z2luPgorICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWphci1wbHVnaW48L2FydGlmYWN0SWQ+CisgICAgICAgIDx2ZXJzaW9uPjIuNTwvdmVyc2lvbj4KKyAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgPGFyY2hpdmU+CisgICAgICAgICAgICA8bWFuaWZlc3RGaWxlPiR7bWFuaWZlc3RmaWxlfTwvbWFuaWZlc3RGaWxlPgorICAgICAgICAgIDwvYXJjaGl2ZT4KKyAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgPC9wbHVnaW4+CisgICAgICA8cGx1Z2luPgorICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1yZXNvdXJjZXMtcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICA8dmVyc2lvbj4zLjEuMDwvdmVyc2lvbj4KKyAgICAgICAgPGV4ZWN1dGlvbnM+CisgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgIDxpZD5jb3B5LWxpY2Vuc2U8L2lkPgorICAgICAgICAgICAgPHBoYXNlPnZhbGlkYXRlPC9waGFzZT4KKyAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgPGdvYWw+Y29weS1yZXNvdXJjZXM8L2dvYWw+CisgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+JHtwcm9qZWN0LmJ1aWxkLm91dHB1dERpcmVjdG9yeX0vTUVUQS1JTkY8L291dHB1dERpcmVjdG9yeT4KKyAgICAgICAgICAgICAgPHJlc291cmNlcz4KKyAgICAgICAgICAgICAgICA8cmVzb3VyY2U+CisgICAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5Pi4uLy4uLy4uLy4uLzwvZGlyZWN0b3J5PgorICAgICAgICAgICAgICAgICAgPGluY2x1ZGVzPgorICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT5MSUNFTlNFPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgICAgPC9pbmNsdWRlcz4KKyAgICAgICAgICAgICAgICAgIDxmaWx0ZXJpbmc+ZmFsc2U8L2ZpbHRlcmluZz4KKyAgICAgICAgICAgICAgICA8L3Jlc291cmNlPgorICAgICAgICAgICAgICA8L3Jlc291cmNlcz4KKyAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgPC9leGVjdXRpb25zPgorICAgICAgPC9wbHVnaW4+CisgICAgPC9wbHVnaW5zPgorICA8L2J1aWxkPgorCisgIDxkZXBlbmRlbmNpZXM+CisgICAgPGRlcGVuZGVuY3k+CisgICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4KKyAgICAgIDxhcnRpZmFjdElkPmp1bml0PC9hcnRpZmFjdElkPgorICAgICAgPHZlcnNpb24+NC4xMjwvdmVyc2lvbj4KKyAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICA8L2RlcGVuZGVuY3k+CisgIDwvZGVwZW5kZW5jaWVzPgorPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvcHJvZ3VhcmQucGdjZmcgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2RlYy9wcm9ndWFyZC5wZ2NmZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzU0NWRjCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9kZWMvcHJvZ3VhcmQucGdjZmcKQEAgLTAsMCArMSw2IEBACisjIERpY3Rpb25hcnlEYXRhIGlzIGFuIG9wdGlvbmFsbHkgLyBkeW5hbWljYWxseSBsb2FkZWQgYnVpbHQtaW4gZGljdGlvbmFyeS4KKy1rZWVwIGNsYXNzIG9yZy5icm90bGkuZGVjLkRpY3Rpb25hcnlEYXRhCisKKyMgV2UgZ2V0IHRoZSBmdWxseS1xdWFsaWZpZWQgbmFtZSBvZiBEaWN0aW9uYXJ5RGF0YSBmcm9tIERpY3Rpb25hcnksIHNvIGF2b2lkCisjIHJlbmFtaW5nIGl0LgorLWtlZXBuYW1lcyBjbGFzcyBvcmcuYnJvdGxpLmRlYy5EaWN0aW9uYXJ5CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2VuYy9CVUlMRCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZW5jL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OTA1YjkKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2VuYy9CVUlMRApAQCAtMCwwICsxLDE0IEBACisjIERlc2NyaXB0aW9uOgorIyAgIEphdmEgcG9ydCBvZiBCcm90bGkgZGVjb2Rlci4KKworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgTUlUCisKK2phdmFfbGlicmFyeSgKKyAgICBuYW1lID0gInByZXBhcmVkX2RpY3Rpb25hcnkiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJQcmVwYXJlZERpY3Rpb25hcnkuamF2YSIsCisgICAgICAgICJQcmVwYXJlZERpY3Rpb25hcnlHZW5lcmF0b3IuamF2YSIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZW5jL1ByZXBhcmVkRGljdGlvbmFyeS5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9lbmMvUHJlcGFyZWREaWN0aW9uYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE5NzgwMQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZW5jL1ByZXBhcmVkRGljdGlvbmFyeS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8qIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5lbmM7CisKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCisvKioKKyAqIFByZXBhcmVkIGRpY3Rpb25hcnkgZGF0YSBwcm92aWRlci4KKyAqLworcHVibGljIGludGVyZmFjZSBQcmVwYXJlZERpY3Rpb25hcnkgeworICBCeXRlQnVmZmVyIGdldERhdGEoKTsKK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZW5jL1ByZXBhcmVkRGljdGlvbmFyeUdlbmVyYXRvci5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9lbmMvUHJlcGFyZWREaWN0aW9uYXJ5R2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI1N2I5MgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvZW5jL1ByZXBhcmVkRGljdGlvbmFyeUdlbmVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMTg1IEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkuZW5jOworCitpbXBvcnQgamF2YS5uaW8uQnVmZmVyOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS5uaW8uQnl0ZU9yZGVyOworaW1wb3J0IGphdmEubmlvLkludEJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5TaG9ydEJ1ZmZlcjsKKworLyoqCisgKiBKYXZhIHByZXBhcmVkIChyYXcpIGRpY3Rpb25hcnkgcHJvZHVjZXIuCisgKi8KK3B1YmxpYyBjbGFzcyBQcmVwYXJlZERpY3Rpb25hcnlHZW5lcmF0b3IgeworCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQUdJQyA9IDB4REVCQ0VERTA7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgSEFTSF9NVUxUSVBMSUVSID0gMHgxZmUzNWE3YmQzNTc5YmQzTDsKKworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBQcmVwYXJlZERpY3Rpb25hcnlJbXBsIGltcGxlbWVudHMgUHJlcGFyZWREaWN0aW9uYXJ5IHsKKyAgICBwcml2YXRlIGZpbmFsIEJ5dGVCdWZmZXIgZGF0YTsKKworICAgIHByaXZhdGUgUHJlcGFyZWREaWN0aW9uYXJ5SW1wbChCeXRlQnVmZmVyIGRhdGEpIHsKKyAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ5dGVCdWZmZXIgZ2V0RGF0YSgpIHsKKyAgICAgIHJldHVybiBkYXRhOworICAgIH0KKyAgfQorCisgIC8vIERpc2FsbG93IGluc3RhbnRpYXRpb24uCisgIHByaXZhdGUgUHJlcGFyZWREaWN0aW9uYXJ5R2VuZXJhdG9yKCkgeyB9CisKKyAgcHVibGljIHN0YXRpYyBQcmVwYXJlZERpY3Rpb25hcnkgZ2VuZXJhdGUoQnl0ZUJ1ZmZlciBzcmMpIHsKKyAgICByZXR1cm4gZ2VuZXJhdGUoc3JjLCAxNywgMywgNDAsIDUpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBQcmVwYXJlZERpY3Rpb25hcnkgZ2VuZXJhdGUoQnl0ZUJ1ZmZlciBzcmMsCisgICAgICBpbnQgYnVja2V0Qml0cywgaW50IHNsb3RCaXRzLCBpbnQgaGFzaEJpdHMsIGludCBibG9ja0JpdHMpIHsKKyAgICAoKEJ1ZmZlcikgc3JjKS5jbGVhcigpOyAgLy8gSnVzdCBpbiBjYXNlLi4uCisgICAgaWYgKGJsb2NrQml0cyA+IDEyKSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJibG9ja0JpdHMgaXMgdG9vIGJpZyIpOworICAgIH0KKyAgICBpZiAoYnVja2V0Qml0cyA+PSAyNCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYnVja2V0Qml0cyBpcyB0b28gYmlnIik7CisgICAgfQorICAgIGlmIChidWNrZXRCaXRzIC0gc2xvdEJpdHMgPj0gMTYpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInNsb3RCaXRzIGlzIHRvbyBzbWFsbCIpOworICAgIH0KKyAgICBpbnQgYnVja2V0TGltaXQgPSAxIDw8IGJsb2NrQml0czsKKyAgICBpbnQgbnVtQnVja2V0cyA9IDEgPDwgYnVja2V0Qml0czsKKyAgICBpbnQgbnVtU2xvdHMgPSAxIDw8IHNsb3RCaXRzOworICAgIGludCBzbG90TWFzayA9IG51bVNsb3RzIC0gMTsKKyAgICBpbnQgaGFzaFNoaWZ0ID0gNjQgLSBidWNrZXRCaXRzOworICAgIGxvbmcgaGFzaE1hc2sgPSAofjBMKSA+Pj4gKDY0IC0gaGFzaEJpdHMpOworICAgIGludCBzb3VyY2VTaXplID0gc3JjLmNhcGFjaXR5KCk7CisgICAgaWYgKHNvdXJjZVNpemUgPCA4KSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJzcmMgaXMgdG9vIHNob3J0Iik7CisgICAgfQorCisgICAgLyogU3RlcCAxOiBjcmVhdGUgImJsb2F0ZWQiIGhhc2hlci4gKi8KKyAgICBzaG9ydFtdIG51bSA9IG5ldyBzaG9ydFtudW1CdWNrZXRzXTsKKyAgICBpbnRbXSBidWNrZXRIZWFkcyA9IG5ldyBpbnRbbnVtQnVja2V0c107CisgICAgaW50W10gbmV4dEJ1Y2tldCA9IG5ldyBpbnRbc291cmNlU2l6ZV07CisKKyAgICBsb25nIGFjY3VtdWxhdG9yID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDc7ICsraSkgeworICAgICAgYWNjdW11bGF0b3IgfD0gKHNyYy5nZXQoaSkgJiAweEZGTCkgPDwgKDggKiBpKTsKKyAgICB9CisgICAgYWNjdW11bGF0b3IgPDw9IDg7CisgICAgLyogVE9ETzogYXBwbHkgY3VzdG9tICJzdG9yZSIgb3JkZXIuICovCisgICAgZm9yIChpbnQgaSA9IDA7IGkgKyA3IDwgc291cmNlU2l6ZTsgKytpKSB7CisgICAgICBhY2N1bXVsYXRvciA9IChhY2N1bXVsYXRvciA+Pj4gOCkgfCAoKHNyYy5nZXQoaSArIDcpICYgMHhGRkwpIDw8IDU2KTsKKyAgICAgIGxvbmcgaCA9IChhY2N1bXVsYXRvciAmIGhhc2hNYXNrKSAqIEhBU0hfTVVMVElQTElFUjsKKyAgICAgIGludCBrZXkgPSAoaW50KSAoaCA+Pj4gaGFzaFNoaWZ0KTsKKyAgICAgIGludCBjb3VudCA9IG51bVtrZXldOworICAgICAgbmV4dEJ1Y2tldFtpXSA9IChjb3VudCA9PSAwKSA/IC0xIDogYnVja2V0SGVhZHNba2V5XTsKKyAgICAgIGJ1Y2tldEhlYWRzW2tleV0gPSBpOworICAgICAgY291bnQrKzsKKyAgICAgIGlmIChjb3VudCA+IGJ1Y2tldExpbWl0KSB7CisgICAgICAgIGNvdW50ID0gYnVja2V0TGltaXQ7CisgICAgICB9CisgICAgICBudW1ba2V5XSA9IChzaG9ydCkgY291bnQ7CisgICAgfQorCisgICAgLyogU3RlcCAyOiBmaW5kIHNsb3QgbGltaXRzLiAqLworICAgIGludFtdIHNsb3RMaW1pdCA9IG5ldyBpbnRbbnVtU2xvdHNdOworICAgIGludFtdIHNsb3RTaXplID0gbmV3IGludFtudW1TbG90c107CisgICAgaW50IHRvdGFsSXRlbXMgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtU2xvdHM7ICsraSkgeworICAgICAgYm9vbGVhbiBvdmVyZmxvdyA9IGZhbHNlOworICAgICAgc2xvdExpbWl0W2ldID0gYnVja2V0TGltaXQ7CisgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBvdmVyZmxvdyA9IGZhbHNlOworICAgICAgICBpbnQgbGltaXQgPSBzbG90TGltaXRbaV07CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgbnVtQnVja2V0czsgaiArPSBudW1TbG90cykgeworICAgICAgICAgIGludCBzaXplID0gbnVtW2pdOworICAgICAgICAgIC8qIExhc3QgY2hhaW4gbWF5IHNwYW4gYmVoaW5kIDY0SyBsaW1pdDsgb3ZlcmZsb3cgaGFwcGVucyBvbmx5IGlmCisgICAgICAgICAgICAgd2UgYXJlIGFib3V0IHRvIHVzZSAweEZGRkYrIGFzIGl0ZW0gb2Zmc2V0LiAqLworICAgICAgICAgIGlmIChjb3VudCA+PSAweEZGRkYpIHsKKyAgICAgICAgICAgIG92ZXJmbG93ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoc2l6ZSA+IGxpbWl0KSB7CisgICAgICAgICAgICBzaXplID0gbGltaXQ7CisgICAgICAgICAgfQorICAgICAgICAgIGNvdW50ICs9IHNpemU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvdmVyZmxvdykgeworICAgICAgICAgIHNsb3RTaXplW2ldID0gY291bnQ7CisgICAgICAgICAgdG90YWxJdGVtcyArPSBjb3VudDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzbG90TGltaXRbaV0tLTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBTdGVwIDM6IHRyYW5zZmVyIGRhdGEgdG8gInNsaW0iIGhhc2hlci4gKi8KKyAgICBpbnQgcGFydDAgPSA2ICogNDsKKyAgICBpbnQgcGFydDEgPSBudW1TbG90cyAqIDQ7CisgICAgaW50IHBhcnQyID0gbnVtQnVja2V0cyAqIDI7CisgICAgaW50IHBhcnQzID0gdG90YWxJdGVtcyAqIDQ7CisgICAgaW50IGFsbG9jU2l6ZSA9IHBhcnQwICsgcGFydDEgKyBwYXJ0MiArIHBhcnQzICsgc291cmNlU2l6ZTsKKyAgICBCeXRlQnVmZmVyIGZsYXQgPSBCeXRlQnVmZmVyLmFsbG9jYXRlRGlyZWN0KGFsbG9jU2l6ZSk7CisgICAgQnl0ZUJ1ZmZlciBwb2ludGVyID0gZmxhdC5zbGljZSgpOworICAgIHBvaW50ZXIub3JkZXIoQnl0ZU9yZGVyLm5hdGl2ZU9yZGVyKCkpOworCisgICAgSW50QnVmZmVyIHN0cnVjdCA9IHBvaW50ZXIuYXNJbnRCdWZmZXIoKTsKKyAgICBwb2ludGVyLnBvc2l0aW9uKHBvaW50ZXIucG9zaXRpb24oKSArIHBhcnQwKTsKKyAgICBJbnRCdWZmZXIgc2xvdE9mZnNldHMgPSBwb2ludGVyLmFzSW50QnVmZmVyKCk7CisgICAgcG9pbnRlci5wb3NpdGlvbihwb2ludGVyLnBvc2l0aW9uKCkgKyBwYXJ0MSk7CisgICAgU2hvcnRCdWZmZXIgaGVhZHMgPSBwb2ludGVyLmFzU2hvcnRCdWZmZXIoKTsKKyAgICBwb2ludGVyLnBvc2l0aW9uKHBvaW50ZXIucG9zaXRpb24oKSArIHBhcnQyKTsKKyAgICBJbnRCdWZmZXIgaXRlbXMgPSBwb2ludGVyLmFzSW50QnVmZmVyKCk7CisgICAgcG9pbnRlci5wb3NpdGlvbihwb2ludGVyLnBvc2l0aW9uKCkgKyBwYXJ0Myk7CisgICAgQnl0ZUJ1ZmZlciBzb3VyY2VDb3B5ID0gcG9pbnRlci5zbGljZSgpOworCisgICAgLyogbWFnaWMgICAgICAgICAqLyBzdHJ1Y3QucHV0KDAsIE1BR0lDKTsKKyAgICAvKiBzb3VyY2Vfb2Zmc2V0ICovIHN0cnVjdC5wdXQoMSwgdG90YWxJdGVtcyk7CisgICAgLyogc291cmNlX3NpemUgICAqLyBzdHJ1Y3QucHV0KDIsIHNvdXJjZVNpemUpOworICAgIC8qIGhhc2hfYml0cyAgICAgKi8gc3RydWN0LnB1dCgzLCBoYXNoQml0cyk7CisgICAgLyogYnVja2V0X2JpdHMgICAqLyBzdHJ1Y3QucHV0KDQsIGJ1Y2tldEJpdHMpOworICAgIC8qIHNsb3RfYml0cyAgICAgKi8gc3RydWN0LnB1dCg1LCBzbG90Qml0cyk7CisKKyAgICB0b3RhbEl0ZW1zID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVNsb3RzOyArK2kpIHsKKyAgICAgIHNsb3RPZmZzZXRzLnB1dChpLCB0b3RhbEl0ZW1zKTsKKyAgICAgIHRvdGFsSXRlbXMgKz0gc2xvdFNpemVbaV07CisgICAgICBzbG90U2l6ZVtpXSA9IDA7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1CdWNrZXRzOyArK2kpIHsKKyAgICAgIGludCBzbG90ID0gaSAmIHNsb3RNYXNrOworICAgICAgaW50IGNvdW50ID0gbnVtW2ldOworICAgICAgaWYgKGNvdW50ID4gc2xvdExpbWl0W3Nsb3RdKSB7CisgICAgICAgIGNvdW50ID0gc2xvdExpbWl0W3Nsb3RdOworICAgICAgfQorICAgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgaGVhZHMucHV0KGksIChzaG9ydCkgMHhGRkZGKTsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpbnQgY3Vyc29yID0gc2xvdFNpemVbc2xvdF07CisgICAgICBoZWFkcy5wdXQoaSwgKHNob3J0KSBjdXJzb3IpOworICAgICAgY3Vyc29yICs9IHNsb3RPZmZzZXRzLmdldChzbG90KTsKKyAgICAgIHNsb3RTaXplW3Nsb3RdICs9IGNvdW50OworICAgICAgaW50IHBvcyA9IGJ1Y2tldEhlYWRzW2ldOworICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudDsgaisrKSB7CisgICAgICAgIGl0ZW1zLnB1dChjdXJzb3IrKywgcG9zKTsKKyAgICAgICAgcG9zID0gbmV4dEJ1Y2tldFtwb3NdOworICAgICAgfQorICAgICAgY3Vyc29yLS07CisgICAgICBpdGVtcy5wdXQoY3Vyc29yLCBpdGVtcy5nZXQoY3Vyc29yKSB8IDB4ODAwMDAwMDApOworICAgIH0KKworICAgIHNvdXJjZUNvcHkucHV0KHNyYyk7CisKKyAgICByZXR1cm4gbmV3IFByZXBhcmVkRGljdGlvbmFyeUltcGwoZmxhdCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vQlVJTEQgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNzczMjUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL0JVSUxECkBAIC0wLDAgKzEsNzMgQEAKKyMgRGVzY3JpcHRpb246CisjICAgSW50ZWdyYXRpb24gdGVzdCBydW5uZXIgKyBjb3JwdXMgZm9yIEphdmEgcG9ydCBvZiBCcm90bGkgZGVjb2Rlci4KKworamF2YV9saWJyYXJ5KAorICAgIG5hbWUgPSAiYnJvdGxpX2puaV90ZXN0X2Jhc2UiLAorICAgIHNyY3MgPSBbIkJyb3RsaUpuaVRlc3RCYXNlLmphdmEiXSwKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uOl9fcGtnX18iLAorICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjOl9fcGtnX18iLAorICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jOl9fcGtnX18iLAorICAgIF0sCispCisKK2phdmFfbGlicmFyeSgKKyAgICBuYW1lID0gImJ1bmRsZV9oZWxwZXIiLAorICAgIHNyY3MgPSBbIkJ1bmRsZUhlbHBlci5qYXZhIl0sCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS93cmFwcGVyL2RlYzpfX3BrZ19fIiwKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS93cmFwcGVyL2VuYzpfX3BrZ19fIiwKKyAgICBdLAorKQorCitqYXZhX2xpYnJhcnkoCisgICAgbmFtZSA9ICJidW5kbGVfY2hlY2tlciIsCisgICAgc3JjcyA9IFsiQnVuZGxlQ2hlY2tlci5qYXZhIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpidW5kbGVfaGVscGVyIiwKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS9kZWMiLAorICAgIF0sCispCisKK2phdmFfYmluYXJ5KAorICAgIG5hbWUgPSAiYnVuZGxlX2NoZWNrZXJfYmluIiwKKyAgICBtYWluX2NsYXNzID0gIm9yZy5icm90bGkuaW50ZWdyYXRpb24uQnVuZGxlQ2hlY2tlciIsCisgICAgcnVudGltZV9kZXBzID0gWyI6YnVuZGxlX2NoZWNrZXIiXSwKKykKKworamF2YV90ZXN0KAorICAgIG5hbWUgPSAiYnVuZGxlX2NoZWNrZXJfZGF0YV90ZXN0IiwKKyAgICBhcmdzID0gWyJvcmcvYnJvdGxpL2ludGVncmF0aW9uL3Rlc3RfZGF0YS56aXAiXSwKKyAgICBkYXRhID0gWyJ0ZXN0X2RhdGEuemlwIl0sCisgICAgbWFpbl9jbGFzcyA9ICJvcmcuYnJvdGxpLmludGVncmF0aW9uLkJ1bmRsZUNoZWNrZXIiLAorICAgIHVzZV90ZXN0cnVubmVyID0gMCwKKyAgICBydW50aW1lX2RlcHMgPSBbIjpidW5kbGVfY2hlY2tlciJdLAorKQorCitqYXZhX3Rlc3QoCisgICAgbmFtZSA9ICJidW5kbGVfY2hlY2tlcl9mdXp6X3Rlc3QiLAorICAgIGFyZ3MgPSBbCisgICAgICAgICItcyIsCisgICAgICAgICJvcmcvYnJvdGxpL2ludGVncmF0aW9uL2Z1enpfZGF0YS56aXAiLAorICAgIF0sCisgICAgZGF0YSA9IFsiZnV6el9kYXRhLnppcCJdLAorICAgIG1haW5fY2xhc3MgPSAib3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5CdW5kbGVDaGVja2VyIiwKKyAgICB1c2VfdGVzdHJ1bm5lciA9IDAsCisgICAgcnVudGltZV9kZXBzID0gWyI6YnVuZGxlX2NoZWNrZXIiXSwKKykKKworZmlsZWdyb3VwKAorICAgIG5hbWUgPSAidGVzdF9kYXRhIiwKKyAgICBzcmNzID0gWyJ0ZXN0X2RhdGEuemlwIl0sCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS93cmFwcGVyL2RlYzpfX3BrZ19fIiwKKyAgICBdLAorKQorCitmaWxlZ3JvdXAoCisgICAgbmFtZSA9ICJ0ZXN0X2NvcnB1cyIsCisgICAgc3JjcyA9IFsidGVzdF9jb3JwdXMuemlwIl0sCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS93cmFwcGVyL2VuYzpfX3BrZ19fIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9pbnRlZ3JhdGlvbi9Ccm90bGlKbmlUZXN0QmFzZS5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9pbnRlZ3JhdGlvbi9Ccm90bGlKbmlUZXN0QmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjk5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL0Jyb3RsaUpuaVRlc3RCYXNlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcGFja2FnZSBvcmcuYnJvdGxpLmludGVncmF0aW9uOworCisvKioKKyAqIE9wdGlvbmFsbHkgbG9hZHMgYnJvdGxpIEpOSSB3cmFwcGVyIG5hdGl2ZSBsaWJyYXJ5LgorICovCitwdWJsaWMgY2xhc3MgQnJvdGxpSm5pVGVzdEJhc2UgeworICBzdGF0aWMgeworICAgIFN0cmluZyBqbmlMaWJyYXJ5ID0gU3lzdGVtLmdldFByb3BlcnR5KCJCUk9UTElfSk5JX0xJQlJBUlkiKTsKKyAgICBpZiAoam5pTGlicmFyeSAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ubG9hZChuZXcgamF2YS5pby5GaWxlKGpuaUxpYnJhcnkpLmdldEFic29sdXRlUGF0aCgpKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL0J1bmRsZUNoZWNrZXIuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vQnVuZGxlQ2hlY2tlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZGRiMzMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL0J1bmRsZUNoZWNrZXIuamF2YQpAQCAtMCwwICsxLDExMiBAQAorLyogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLmludGVncmF0aW9uOworCitpbXBvcnQgb3JnLmJyb3RsaS5kZWMuQnJvdGxpSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXI7CitpbXBvcnQgamF2YS51dGlsLnppcC5aaXBFbnRyeTsKK2ltcG9ydCBqYXZhLnV0aWwuemlwLlppcElucHV0U3RyZWFtOworCisvKioKKyAqIERlY29tcHJlc3MgZmlsZXMgYW5kIChvcHRpb25hbGx5KSBjaGVja3MgdGhlaXIgY2hlY2tzdW1zLgorICoKKyAqIDxwPiBGaWxlIGFyZSByZWFkIGZyb20gWklQIGFyY2hpdmUgcGFzc2VkIGFzIGFuIGFycmF5IG9mIGJ5dGVzLiBNdWx0aXBsZSBjaGVja2VycyBuZWdvdGlhdGUgYWJvdXQKKyAqIHRhc2sgZGlzdHJpYnV0aW9uIHZpYSBzaGFyZWQgQXRvbWljSW50ZWdlciBjb3VudGVyLgorICogPHA+IEFsbCBlbnRyaWVzIGFyZSBleHBlY3RlZCB0byBiZSB2YWxpZCBicm90bGkgY29tcHJlc3NlZCBzdHJlYW1zIGFuZCBvdXRwdXQgQ1JDNjQgY2hlY2tzdW0KKyAqIGlzIGV4cGVjdGVkIHRvIG1hdGNoIHRoZSBjaGVja3N1bSBoZXgtZW5jb2RlZCBpbiB0aGUgZmlyc3QgcGFydCBvZiBlbnRyeSBuYW1lLgorICovCitwdWJsaWMgY2xhc3MgQnVuZGxlQ2hlY2tlciBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgcHJpdmF0ZSBmaW5hbCBBdG9taWNJbnRlZ2VyIG5leHRKb2I7CisgIHByaXZhdGUgZmluYWwgSW5wdXRTdHJlYW0gaW5wdXQ7CisgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBzYW5pdHlDaGVjazsKKworICAvKioKKyAgICogQHBhcmFtIHNhbml0eUNoZWNrIGRvIG5vdCBjYWxjdWxhdGUgY2hlY2tzdW0gYW5kIGlnbm9yZSB7QGxpbmsgSU9FeGNlcHRpb259LgorICAgKi8KKyAgcHVibGljIEJ1bmRsZUNoZWNrZXIoSW5wdXRTdHJlYW0gaW5wdXQsIEF0b21pY0ludGVnZXIgbmV4dEpvYiwgYm9vbGVhbiBzYW5pdHlDaGVjaykgeworICAgIHRoaXMuaW5wdXQgPSBpbnB1dDsKKyAgICB0aGlzLm5leHRKb2IgPSBuZXh0Sm9iOworICAgIHRoaXMuc2FuaXR5Q2hlY2sgPSBzYW5pdHlDaGVjazsKKyAgfQorCisgIHByaXZhdGUgbG9uZyBkZWNvbXByZXNzQW5kQ2FsY3VsYXRlQ3JjKFppcElucHV0U3RyZWFtIGlucHV0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIC8qIERvIG5vdCBhbGxvdyBlbnRyeSByZWFkZXJzIHRvIGNsb3NlIHRoZSB3aG9sZSBaaXBJbnB1dFN0cmVhbS4gKi8KKyAgICBGaWx0ZXJJbnB1dFN0cmVhbSBlbnRyeVN0cmVhbSA9IG5ldyBGaWx0ZXJJbnB1dFN0cmVhbShpbnB1dCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHt9CisgICAgfTsKKworICAgIEJyb3RsaUlucHV0U3RyZWFtIGRlY29tcHJlc3NlZFN0cmVhbSA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShlbnRyeVN0cmVhbSk7CisgICAgbG9uZyBjcmM7CisgICAgdHJ5IHsKKyAgICAgIGNyYyA9IEJ1bmRsZUhlbHBlci5maW5nZXJwcmludFN0cmVhbShkZWNvbXByZXNzZWRTdHJlYW0pOworICAgIH0gZmluYWxseSB7CisgICAgICBkZWNvbXByZXNzZWRTdHJlYW0uY2xvc2UoKTsKKyAgICB9CisgICAgcmV0dXJuIGNyYzsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgU3RyaW5nIGVudHJ5TmFtZSA9ICIiOworICAgIFppcElucHV0U3RyZWFtIHppcyA9IG5ldyBaaXBJbnB1dFN0cmVhbShpbnB1dCk7CisgICAgdHJ5IHsKKyAgICAgIGludCBlbnRyeUluZGV4ID0gMDsKKyAgICAgIFppcEVudHJ5IGVudHJ5OworICAgICAgaW50IGpvYkluZGV4ID0gbmV4dEpvYi5nZXRBbmRJbmNyZW1lbnQoKTsKKyAgICAgIHdoaWxlICgoZW50cnkgPSB6aXMuZ2V0TmV4dEVudHJ5KCkpICE9IG51bGwpIHsKKyAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW50cnlJbmRleCsrICE9IGpvYkluZGV4KSB7CisgICAgICAgICAgemlzLmNsb3NlRW50cnkoKTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbnRyeU5hbWUgPSBlbnRyeS5nZXROYW1lKCk7CisgICAgICAgIGxvbmcgZW50cnlDcmMgPSBCdW5kbGVIZWxwZXIuZ2V0RXhwZWN0ZWRGaW5nZXJwcmludChlbnRyeU5hbWUpOworICAgICAgICB0cnkgeworICAgICAgICAgIGlmIChlbnRyeUNyYyAhPSBkZWNvbXByZXNzQW5kQ2FsY3VsYXRlQ3JjKHppcykgJiYgIXNhbml0eUNoZWNrKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ1JDIG1pc21hdGNoIik7CisgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb3gpIHsKKyAgICAgICAgICBpZiAoIXNhbml0eUNoZWNrKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiRGVjb21wcmVzc2lvbiBmYWlsZWQiLCBpb3gpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB6aXMuY2xvc2VFbnRyeSgpOworICAgICAgICBlbnRyeU5hbWUgPSAiIjsKKyAgICAgICAgam9iSW5kZXggPSBuZXh0Sm9iLmdldEFuZEluY3JlbWVudCgpOworICAgICAgfQorICAgICAgemlzLmNsb3NlKCk7CisgICAgICBpbnB1dC5jbG9zZSgpOworICAgIH0gY2F0Y2ggKFRocm93YWJsZSBleCkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZW50cnlOYW1lLCBleCk7CisgICAgfQorICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgaW50IGFyZ3NPZmZzZXQgPSAwOworICAgIGJvb2xlYW4gc2FuaXR5Q2hlY2sgPSBmYWxzZTsKKyAgICBpZiAoYXJncy5sZW5ndGggIT0gMCkgeworICAgICAgaWYgKGFyZ3NbMF0uZXF1YWxzKCItcyIpKSB7CisgICAgICAgIHNhbml0eUNoZWNrID0gdHJ1ZTsKKyAgICAgICAgYXJnc09mZnNldCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGlmIChhcmdzLmxlbmd0aCA9PSBhcmdzT2Zmc2V0KSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVXNhZ2U6IEJ1bmRsZUNoZWNrZXIgWy1zXSA8ZmlsZVguemlwPiAuLi4iKTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IGFyZ3NPZmZzZXQ7IGkgPCBhcmdzLmxlbmd0aDsgKytpKSB7CisgICAgICBuZXcgQnVuZGxlQ2hlY2tlcihuZXcgRmlsZUlucHV0U3RyZWFtKGFyZ3NbaV0pLCBuZXcgQXRvbWljSW50ZWdlcigwKSwgc2FuaXR5Q2hlY2spLnJ1bigpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS9pbnRlZ3JhdGlvbi9CdW5kbGVIZWxwZXIuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vQnVuZGxlSGVscGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhYjdiYwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vQnVuZGxlSGVscGVyLmphdmEKQEAgLTAsMCArMSwxMTMgQEAKKy8qIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbjsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC56aXAuWmlwRW50cnk7CitpbXBvcnQgamF2YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbTsKKworLyoqCisgKiBVdGlsaXRpZXMgdG8gd29yayB0ZXN0IGZpbGVzIGJ1bmRsZXMgaW4gemlwIGFyY2hpdmUuCisgKi8KK3B1YmxpYyBjbGFzcyBCdW5kbGVIZWxwZXIgeworICBwcml2YXRlIEJ1bmRsZUhlbHBlcigpIHsgfQorCisgIHB1YmxpYyBzdGF0aWMgTGlzdDxTdHJpbmc+IGxpc3RFbnRyaWVzKElucHV0U3RyZWFtIGlucHV0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIExpc3Q8U3RyaW5nPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICBaaXBJbnB1dFN0cmVhbSB6aXMgPSBuZXcgWmlwSW5wdXRTdHJlYW0oaW5wdXQpOworICAgIFppcEVudHJ5IGVudHJ5OworICAgIHRyeSB7CisgICAgICB3aGlsZSAoKGVudHJ5ID0gemlzLmdldE5leHRFbnRyeSgpKSAhPSBudWxsKSB7CisgICAgICAgIGlmICghZW50cnkuaXNEaXJlY3RvcnkoKSkgeworICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkuZ2V0TmFtZSgpKTsKKyAgICAgICAgfQorICAgICAgICB6aXMuY2xvc2VFbnRyeSgpOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICB6aXMuY2xvc2UoKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIHJlYWRTdHJlYW0oSW5wdXRTdHJlYW0gaW5wdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIHJlc3VsdCA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbNjU1MzZdOworICAgIGludCBieXRlc1JlYWQ7CisgICAgd2hpbGUgKChieXRlc1JlYWQgPSBpbnB1dC5yZWFkKGJ1ZmZlcikpICE9IC0xKSB7CisgICAgICByZXN1bHQud3JpdGUoYnVmZmVyLCAwLCBieXRlc1JlYWQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnRvQnl0ZUFycmF5KCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGJ5dGVbXSByZWFkRW50cnkoSW5wdXRTdHJlYW0gaW5wdXQsIFN0cmluZyBlbnRyeU5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgWmlwSW5wdXRTdHJlYW0gemlzID0gbmV3IFppcElucHV0U3RyZWFtKGlucHV0KTsKKyAgICBaaXBFbnRyeSBlbnRyeTsKKyAgICB0cnkgeworICAgICAgd2hpbGUgKChlbnRyeSA9IHppcy5nZXROZXh0RW50cnkoKSkgIT0gbnVsbCkgeworICAgICAgICBpZiAoZW50cnkuZ2V0TmFtZSgpLmVxdWFscyhlbnRyeU5hbWUpKSB7CisgICAgICAgICAgYnl0ZVtdIHJlc3VsdCA9IHJlYWRTdHJlYW0oemlzKTsKKyAgICAgICAgICB6aXMuY2xvc2VFbnRyeSgpOworICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgemlzLmNsb3NlRW50cnkoKTsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgemlzLmNsb3NlKCk7CisgICAgfQorICAgIC8qIGVudHJ5IG5vdCBmb3VuZCAqLworICAgIHJldHVybiBudWxsOworICB9CisKKyAgLyoqIEVDTUEgQ1JDNjQgcG9seW5vbWlhbC4gKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBDUkNfNjRfUE9MWSA9CisgICAgICBuZXcgQmlnSW50ZWdlcigiQzk2QzU3OTVENzg3MEY0MiIsIDE2KS5sb25nVmFsdWUoKTsKKworICAvKioKKyAgICogUm9sbHMgQ1JDNjQgY2FsY3VsYXRpb24uCisgICAqCisgICAqIDxwPiB7QGNvZGUgQ1JDNjQoZGF0YSkgPSAtMSBeIHVwZGF0ZUNyYzY0KCguLi4gdXBkYXRlQ3JjNjQoLTEsIGZpcnN0QmxvY2spLCAuLi4pLCBsYXN0QmxvY2spO30KKyAgICogPHA+IFRoaXMgc2ltcGxlIGFuZCByZWxpYWJsZSBjaGVja3N1bSBpcyBjaG9zZW4gdG8gbWFrZSBpcyBlYXN5IHRvIGNhbGN1bGF0ZSB0aGUgc2FtZSB2YWx1ZQorICAgKiBhY3Jvc3MgdGhlIHZhcmlldHkgb2YgbGFuZ3VhZ2VzIChDKyssIEphdmEsIEdvLCAuLi4pLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBsb25nIHVwZGF0ZUNyYzY0KGxvbmcgY3JjLCBieXRlW10gZGF0YSwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkgeworICAgIGZvciAoaW50IGkgPSBvZmZzZXQ7IGkgPCBvZmZzZXQgKyBsZW5ndGg7ICsraSkgeworICAgICAgbG9uZyBjID0gKGNyYyBeIChsb25nKSAoZGF0YVtpXSAmIDB4RkYpKSAmIDB4RkY7CisgICAgICBmb3IgKGludCBrID0gMDsgayA8IDg7IGsrKykgeworICAgICAgICBjID0gKChjICYgMSkgPT0gMSkgPyBDUkNfNjRfUE9MWSBeIChjID4+PiAxKSA6IGMgPj4+IDE7CisgICAgICB9CisgICAgICBjcmMgPSBjIF4gKGNyYyA+Pj4gOCk7CisgICAgfQorICAgIHJldHVybiBjcmM7CisgIH0KKworICAvKioKKyAgICogQ2FsY3VsYXRlcyBDUkM2NCBvZiBzdHJlYW0gY29udGVudHMuCisgICAqLworICBwdWJsaWMgc3RhdGljIGxvbmcgZmluZ2VycHJpbnRTdHJlYW0oSW5wdXRTdHJlYW0gaW5wdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWzY1NTM2XTsKKyAgICBsb25nIGNyYyA9IC0xOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBpbnQgbGVuID0gaW5wdXQucmVhZChidWZmZXIpOworICAgICAgaWYgKGxlbiA8PSAwKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY3JjID0gdXBkYXRlQ3JjNjQoY3JjLCBidWZmZXIsIDAsIGxlbik7CisgICAgfQorICAgIHJldHVybiB+Y3JjOworICB9CisKKyAgcHVibGljIHN0YXRpYyBsb25nIGdldEV4cGVjdGVkRmluZ2VycHJpbnQoU3RyaW5nIGVudHJ5TmFtZSkgeworICAgIGludCBkb3RJbmRleCA9IGVudHJ5TmFtZS5pbmRleE9mKCcuJyk7CisgICAgU3RyaW5nIGVudHJ5Q3JjU3RyaW5nID0gKGRvdEluZGV4ID09IC0xKSA/IGVudHJ5TmFtZSA6IGVudHJ5TmFtZS5zdWJzdHJpbmcoMCwgZG90SW5kZXgpOworICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihlbnRyeUNyY1N0cmluZywgMTYpLmxvbmdWYWx1ZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL2Z1enpfZGF0YS56aXAgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL2Z1enpfZGF0YS56aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E3ZWVkYQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vZnV6el9kYXRhLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL3BvbS54bWwgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg1OGExMgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vcG9tLnhtbApAQCAtMCwwICsxLDY1IEBACis8cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgorICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy94c2QvbWF2ZW4tNC4wLjAueHNkIj4KKyAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgorCisgIDxwYXJlbnQ+CisgICAgPGdyb3VwSWQ+b3JnLmJyb3RsaTwvZ3JvdXBJZD4KKyAgICA8YXJ0aWZhY3RJZD5wYXJlbnQ8L2FydGlmYWN0SWQ+CisgICAgPHZlcnNpb24+MC4yLjAtU05BUFNIT1Q8L3ZlcnNpb24+CisgIDwvcGFyZW50PgorICA8YXJ0aWZhY3RJZD5pbnRlZ3JhdGlvbjwvYXJ0aWZhY3RJZD4KKyAgPHZlcnNpb24+MC4yLjAtU05BUFNIT1Q8L3ZlcnNpb24+CisgIDxwYWNrYWdpbmc+amFyPC9wYWNrYWdpbmc+CisKKyAgPG5hbWU+JHtwcm9qZWN0Lmdyb3VwSWR9OiR7cHJvamVjdC5hcnRpZmFjdElkfTwvbmFtZT4KKworICA8ZGVwZW5kZW5jaWVzPgorICAgIDxkZXBlbmRlbmN5PgorICAgICAgPGdyb3VwSWQ+b3JnLmJyb3RsaTwvZ3JvdXBJZD4KKyAgICAgIDxhcnRpZmFjdElkPmRlYzwvYXJ0aWZhY3RJZD4KKyAgICAgIDx2ZXJzaW9uPjAuMi4wLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgIDwvZGVwZW5kZW5jeT4KKyAgPC9kZXBlbmRlbmNpZXM+CisKKyAgPGJ1aWxkPgorICAgIDxzb3VyY2VEaXJlY3Rvcnk+Ljwvc291cmNlRGlyZWN0b3J5PgorICAgIDxwbHVnaW5zPgorICAgICAgPHBsdWdpbj4KKyAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLm1vam88L2dyb3VwSWQ+CisgICAgICAgIDxhcnRpZmFjdElkPmV4ZWMtbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICA8dmVyc2lvbj4xLjUuMDwvdmVyc2lvbj4KKyAgICAgICAgPGV4ZWN1dGlvbnM+CisgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgIDxpZD5kYXRhPC9pZD4KKyAgICAgICAgICAgIDxwaGFzZT50ZXN0PC9waGFzZT4KKyAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgPGdvYWw+amF2YTwvZ29hbD4KKyAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgPGV4ZWN1dGFibGU+amF2YTwvZXhlY3V0YWJsZT4KKyAgICAgICAgICAgICAgPG1haW5DbGFzcz5vcmcuYnJvdGxpLmludGVncmF0aW9uLkJ1bmRsZUNoZWNrZXI8L21haW5DbGFzcz4KKyAgICAgICAgICAgICAgPGFyZ3VtZW50cz4KKyAgICAgICAgICAgICAgICA8YXJndW1lbnQ+dGVzdF9kYXRhLnppcDwvYXJndW1lbnQ+CisgICAgICAgICAgICAgIDwvYXJndW1lbnRzPgorICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICA8aWQ+ZnV6ejwvaWQ+CisgICAgICAgICAgICA8cGhhc2U+dGVzdDwvcGhhc2U+CisgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgIDxnb2FsPmphdmE8L2dvYWw+CisgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgIDxleGVjdXRhYmxlPmphdmE8L2V4ZWN1dGFibGU+CisgICAgICAgICAgICAgIDxtYWluQ2xhc3M+b3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5CdW5kbGVDaGVja2VyPC9tYWluQ2xhc3M+CisgICAgICAgICAgICAgIDxhcmd1bWVudHM+CisgICAgICAgICAgICAgICAgPGFyZ3VtZW50Pi1zPC9hcmd1bWVudD4KKyAgICAgICAgICAgICAgICA8YXJndW1lbnQ+ZnV6el9kYXRhLnppcDwvYXJndW1lbnQ+CisgICAgICAgICAgICAgIDwvYXJndW1lbnRzPgorICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICA8L2V4ZWN1dGlvbnM+CisgICAgICA8L3BsdWdpbj4KKyAgICA8L3BsdWdpbnM+CisgIDwvYnVpbGQ+Cis8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL3Rlc3RfY29ycHVzLnppcCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vdGVzdF9jb3JwdXMuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NTAxMTIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL3Rlc3RfY29ycHVzLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL3Rlc3RfZGF0YS56aXAgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL2ludGVncmF0aW9uL3Rlc3RfZGF0YS56aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlZDg2MgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvaW50ZWdyYXRpb24vdGVzdF9kYXRhLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3BvbS54bWwgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3YWJkMAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvcG9tLnhtbApAQCAtMCwwICsxLDEwMSBAQAorPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKyAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcveHNkL21hdmVuLTQuMC4wLnhzZCI+CisgIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KKworICA8Z3JvdXBJZD5vcmcuYnJvdGxpPC9ncm91cElkPgorICA8YXJ0aWZhY3RJZD5wYXJlbnQ8L2FydGlmYWN0SWQ+CisgIDx2ZXJzaW9uPjAuMi4wLVNOQVBTSE9UPC92ZXJzaW9uPgorICA8cGFja2FnaW5nPnBvbTwvcGFja2FnaW5nPgorCisgIDxuYW1lPiR7cHJvamVjdC5ncm91cElkfToke3Byb2plY3QuYXJ0aWZhY3RJZH08L25hbWU+CisgIDxkZXNjcmlwdGlvbj5Ccm90bGkgaXMgYSBnZW5lcmljLXB1cnBvc2UgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLjwvZGVzY3JpcHRpb24+CisgIDx1cmw+aHR0cDovL2Jyb3RsaS5vcmc8L3VybD4KKyAgPGxpY2Vuc2VzPgorICAgIDxsaWNlbnNlPgorICAgICAgPG5hbWU+TUlUIExpY2Vuc2U8L25hbWU+CisgICAgICA8dXJsPmh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwPC91cmw+CisgICAgPC9saWNlbnNlPgorICA8L2xpY2Vuc2VzPgorICA8ZGV2ZWxvcGVycz4KKyAgICA8ZGV2ZWxvcGVyPgorICAgICAgPG9yZ2FuaXphdGlvbj5Hb29nbGU8L29yZ2FuaXphdGlvbj4KKyAgICAgIDxvcmdhbml6YXRpb25Vcmw+aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZTwvb3JnYW5pemF0aW9uVXJsPgorICAgIDwvZGV2ZWxvcGVyPgorICA8L2RldmVsb3BlcnM+CisgIDxzY20+CisgICAgPGNvbm5lY3Rpb24+c2NtOmdpdDpnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9icm90bGkuZ2l0PC9jb25uZWN0aW9uPgorICAgIDxkZXZlbG9wZXJDb25uZWN0aW9uPnNjbTpnaXQ6c3NoOi8vZ2l0QGdpdGh1Yi5jb20vZ29vZ2xlL2Jyb3RsaS5naXQ8L2RldmVsb3BlckNvbm5lY3Rpb24+CisgICAgPHVybD5odHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Jyb3RsaTwvdXJsPgorICA8L3NjbT4KKworICA8bW9kdWxlcz4KKyAgICA8bW9kdWxlPmRlYzwvbW9kdWxlPgorICA8L21vZHVsZXM+CisKKyAgPHByb3BlcnRpZXM+CisgICAgPHByb2plY3QuYnVpbGQuc291cmNlRW5jb2Rpbmc+VVRGLTg8L3Byb2plY3QuYnVpbGQuc291cmNlRW5jb2Rpbmc+CisgIDwvcHJvcGVydGllcz4KKworICA8ZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KKyAgICA8c25hcHNob3RSZXBvc2l0b3J5PgorICAgICAgPGlkPm9zc3JoPC9pZD4KKyAgICAgIDx1cmw+aHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnL2NvbnRlbnQvcmVwb3NpdG9yaWVzL3NuYXBzaG90czwvdXJsPgorICAgIDwvc25hcHNob3RSZXBvc2l0b3J5PgorICA8L2Rpc3RyaWJ1dGlvbk1hbmFnZW1lbnQ+CisKKyAgPHByb2ZpbGVzPgorICAgIDxwcm9maWxlPgorICAgICAgPGlkPnJlbGVhc2Utc2lnbi1hcnRpZmFjdHM8L2lkPgorICAgICAgPGFjdGl2YXRpb24+CisgICAgICAgIDxwcm9wZXJ0eT4KKyAgICAgICAgICA8bmFtZT5wZXJmb3JtUmVsZWFzZTwvbmFtZT4KKyAgICAgICAgICA8dmFsdWU+dHJ1ZTwvdmFsdWU+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICA8L2FjdGl2YXRpb24+CisgICAgICA8YnVpbGQ+CisgICAgICAgIDxwbHVnaW5zPgorICAgICAgICAgIDxwbHVnaW4+CisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1ncGctcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+MS41PC92ZXJzaW9uPgorICAgICAgICAgICAgPGV4ZWN1dGlvbnM+CisgICAgICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICAgICAgPGlkPnNpZ24tYXJ0aWZhY3RzPC9pZD4KKyAgICAgICAgICAgICAgICA8cGhhc2U+dmVyaWZ5PC9waGFzZT4KKyAgICAgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgICAgICA8Z29hbD5zaWduPC9nb2FsPgorICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgPC9leGVjdXRpb25zPgorICAgICAgICAgIDwvcGx1Z2luPgorICAgICAgICA8L3BsdWdpbnM+CisgICAgICA8L2J1aWxkPgorICAgIDwvcHJvZmlsZT4KKyAgPC9wcm9maWxlcz4KKworICA8YnVpbGQ+CisgICAgPHBsdWdpbnM+CisgICAgICA8cGx1Z2luPgorICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNvbXBpbGVyLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgPHZlcnNpb24+My4xPC92ZXJzaW9uPgorICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICA8c291cmNlPjEuNjwvc291cmNlPgorICAgICAgICAgIDx0YXJnZXQ+MS42PC90YXJnZXQ+CisgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgIDwvcGx1Z2luPgorICAgICAgPHBsdWdpbj4KKyAgICAgICAgPGdyb3VwSWQ+b3JnLnNvbmF0eXBlLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgIDxhcnRpZmFjdElkPm5leHVzLXN0YWdpbmctbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICA8dmVyc2lvbj4xLjYuNzwvdmVyc2lvbj4KKyAgICAgICAgPGV4dGVuc2lvbnM+dHJ1ZTwvZXh0ZW5zaW9ucz4KKyAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgPHNlcnZlcklkPm9zc3JoPC9zZXJ2ZXJJZD4KKyAgICAgICAgICA8bmV4dXNVcmw+aHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnLzwvbmV4dXNVcmw+CisgICAgICAgICAgPGF1dG9SZWxlYXNlQWZ0ZXJDbG9zZT5mYWxzZTwvYXV0b1JlbGVhc2VBZnRlckNsb3NlPgorICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICA8L3BsdWdpbj4KKyAgICA8L3BsdWdpbnM+CisgIDwvYnVpbGQ+CisKKzwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vQlVJTEQgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZTliYzUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL0JVSUxECkBAIC0wLDAgKzEsNjEgQEAKK3BhY2thZ2UoZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCisKK2xpY2Vuc2VzKFsibm90aWNlIl0pICAjIE1JVAorCitmaWxlZ3JvdXAoCisgICAgbmFtZSA9ICJqbmlfc3JjIiwKKyAgICBzcmNzID0gWyJjb21tb25fam5pLmNjIl0sCispCisKK2ZpbGVncm91cCgKKyAgICBuYW1lID0gImJyb3RsaV9qbmlfbm9fZGljdGlvbmFyeV9kYXRhIiwKKyAgICBzcmNzID0gWyIvLzpicm90bGlfam5pX25vX2RpY3Rpb25hcnlfZGF0YS5kbGwiXSwKKykKKworamF2YV9saWJyYXJ5KAorICAgIG5hbWUgPSAiY29tbW9uIiwKKyAgICBzcmNzID0gZ2xvYigKKyAgICAgICAgWyIqLmphdmEiXSwKKyAgICAgICAgZXhjbHVkZSA9IFsiKlRlc3QqLmphdmEiXSwKKyAgICApLAorICAgIHJlc291cmNlX2phcnMgPSBbIi8vOmxpY2Vuc2UiXSwKKykKKworamF2YV9saWJyYXJ5KAorICAgIG5hbWUgPSAidGVzdF9saWIiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gZ2xvYihbIipUZXN0Ki5qYXZhIl0pLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29tbW9uIiwKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS9kZWMiLAorICAgICAgICAiLy9vcmcvYnJvdGxpL2ludGVncmF0aW9uOmJyb3RsaV9qbmlfdGVzdF9iYXNlIiwKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS93cmFwcGVyL2RlYyIsCisgICAgICAgICJAbWF2ZW4vLzpqdW5pdF9qdW5pdCIsCisgICAgXSwKKykKKworamF2YV90ZXN0KAorICAgIG5hbWUgPSAiU2V0WmVyb0RpY3Rpb25hcnlUZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBkYXRhID0gWworICAgICAgICAiOmJyb3RsaV9qbmlfbm9fZGljdGlvbmFyeV9kYXRhIiwgICMgQmF6ZWwgSk5JIHdvcmthcm91bmQKKyAgICBdLAorICAgIGp2bV9mbGFncyA9IFsKKyAgICAgICAgIi1EQlJPVExJX0pOSV9MSUJSQVJZPSQobG9jYXRpb24gOmJyb3RsaV9qbmlfbm9fZGljdGlvbmFyeV9kYXRhKSIsCisgICAgXSwKKyAgICB0ZXN0X2NsYXNzID0gIm9yZy5icm90bGkud3JhcHBlci5jb21tb24uU2V0WmVyb0RpY3Rpb25hcnlUZXN0IiwKKyAgICBydW50aW1lX2RlcHMgPSBbIjp0ZXN0X2xpYiJdLAorKQorCitqYXZhX3Rlc3QoCisgICAgbmFtZSA9ICJTZXRSZmNEaWN0aW9uYXJ5VGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpicm90bGlfam5pX25vX2RpY3Rpb25hcnlfZGF0YSIsICAjIEJhemVsIEpOSSB3b3JrYXJvdW5kCisgICAgXSwKKyAgICBqdm1fZmxhZ3MgPSBbCisgICAgICAgICItREJST1RMSV9KTklfTElCUkFSWT0kKGxvY2F0aW9uIDpicm90bGlfam5pX25vX2RpY3Rpb25hcnlfZGF0YSkiLAorICAgIF0sCisgICAgdGVzdF9jbGFzcyA9ICJvcmcuYnJvdGxpLndyYXBwZXIuY29tbW9uLlNldFJmY0RpY3Rpb25hcnlUZXN0IiwKKyAgICBydW50aW1lX2RlcHMgPSBbIjp0ZXN0X2xpYiJdLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2NvbW1vbi9Ccm90bGlDb21tb24uamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vQnJvdGxpQ29tbW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxOWU0MgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vQnJvdGxpQ29tbW9uLmphdmEKQEAgLTAsMCArMSwxMzAgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmNvbW1vbjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKKy8qKgorICogSk5JIHdyYXBwZXIgZm9yIGJyb3RsaSBjb21tb24uCisgKi8KK3B1YmxpYyBjbGFzcyBCcm90bGlDb21tb24geworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRkNfRElDVElPTkFSWV9TSVpFID0gMTIyNzg0OworCisgIC8qIDk2Y2VjZDJlZTdhNjY2ZDVhYTM2MjdkNzQ3MzViMzJhICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBSRkNfRElDVElPTkFSWV9NRDUgPSB7CisgICAgLTEwNiwgLTUwLCAtNTEsIDQ2LCAtMjUsIC05MCwgMTAyLCAtNDMsIC04NiwgNTQsIDM5LCAtNDEsIDcxLCA1MywgLTc3LCA0MgorICB9OworCisgIC8qIDcyYjQxMDUxY2I2MWE5MjgxYmEzYzQ0MTRjMjg5ZGE1MGQ5YTc2NDAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIFJGQ19ESUNUSU9OQVJZX1NIQV8xID0geworICAgIDExNCwgLTc2LCAxNiwgODEsIC01MywgOTcsIC04NywgNDAsIDI3LCAtOTMsIC02MCwgNjUsIDc2LCA0MCwgLTk5LCAtOTEsIDEzLCAtMTAyLCAxMTgsIDY0CisgIH07CisKKyAgLyogMjBlNDJlYjFiNTExYzIxODA2ZDRkMjI3ZDA3ZTVkZDA2ODc3ZDhjZTdiM2E4MTdmMzc4ZjMxMzY1M2YzNWM3MCAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gUkZDX0RJQ1RJT05BUllfU0hBXzI1NiA9IHsKKyAgICAzMiwgLTI4LCA0NiwgLTc5LCAtNzUsIDE3LCAtNjIsIDI0LCA2LCAtNDQsIC00NiwgMzksIC00OCwgMTI2LCA5MywgLTQ4LAorICAgIDEwNCwgMTE5LCAtNDAsIC01MCwgMTIzLCA1OCwgLTEyNywgMTI3LCA1NSwgLTExMywgNDksIDU0LCA4MywgLTEzLCA5MiwgMTEyCisgIH07CisKKyAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0RpY3Rpb25hcnlEYXRhU2V0OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3QgbXV0ZXggPSBuZXcgT2JqZWN0KCk7CisKKyAgLyoqCisgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gY2hlY2tzdW0gbWF0Y2hlcyBNRDUgY2hlY2tzdW0gb2YgdGhlIFJGQyBkaWN0aW9uYXJ5LgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRGljdGlvbmFyeURhdGFNZDUoYnl0ZVtdIGRpZ2VzdCkgeworICAgIHJldHVybiBBcnJheXMuZXF1YWxzKFJGQ19ESUNUSU9OQVJZX01ENSwgZGlnZXN0KTsKKyAgfQorCisgIC8qKgorICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGNoZWNrc3VtIG1hdGNoZXMgU0hBLTEgY2hlY2tzdW0gb2YgdGhlIFJGQyBkaWN0aW9uYXJ5LgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRGljdGlvbmFyeURhdGFTaGExKGJ5dGVbXSBkaWdlc3QpIHsKKyAgICByZXR1cm4gQXJyYXlzLmVxdWFscyhSRkNfRElDVElPTkFSWV9TSEFfMSwgZGlnZXN0KTsKKyAgfQorCisgIC8qKgorICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGNoZWNrc3VtIG1hdGNoZXMgU0hBLTI1NiBjaGVja3N1bSBvZiB0aGUgUkZDIGRpY3Rpb25hcnkuCisgICAqLworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tEaWN0aW9uYXJ5RGF0YVNoYTI1NihieXRlW10gZGlnZXN0KSB7CisgICAgcmV0dXJuIEFycmF5cy5lcXVhbHMoUkZDX0RJQ1RJT05BUllfU0hBXzI1NiwgZGlnZXN0KTsKKyAgfQorCisgIC8qKgorICAgKiBDb3B5IGJ5dGVzIHRvIGEgbmV3IGRpcmVjdCBCeXRlQnVmZmVyLgorICAgKgorICAgKiBEaXJlY3QgYnl0ZSBidWZmZXJzIGFyZSB1c2VkIHRvIHN1cHBseSBuYXRpdmUgY29kZSB3aXRoIGxhcmdlIGRhdGEgY2h1bmtzLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBCeXRlQnVmZmVyIG1ha2VOYXRpdmUoYnl0ZVtdIGRhdGEpIHsKKyAgICBCeXRlQnVmZmVyIHJlc3VsdCA9IEJ5dGVCdWZmZXIuYWxsb2NhdGVEaXJlY3QoZGF0YS5sZW5ndGgpOworICAgIHJlc3VsdC5wdXQoZGF0YSk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIC8qKgorICAgKiBDb3BpZXMgZGF0YSBhbmQgc2V0cyBpdCB0byBiZSBicm90bGkgZGljdGlvbmFyeS4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXREaWN0aW9uYXJ5RGF0YShieXRlW10gZGF0YSkgeworICAgIGlmIChkYXRhLmxlbmd0aCAhPSBSRkNfRElDVElPTkFSWV9TSVpFKSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbnZhbGlkIGRpY3Rpb25hcnkgc2l6ZSIpOworICAgIH0KKyAgICBzeW5jaHJvbml6ZWQgKG11dGV4KSB7CisgICAgICBpZiAoaXNEaWN0aW9uYXJ5RGF0YVNldCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBzZXREaWN0aW9uYXJ5RGF0YShtYWtlTmF0aXZlKGRhdGEpKTsKKyAgICB9CisgIH0KKworICAvKioKKyAgICogUmVhZHMgZGF0YSBhbmQgc2V0cyBpdCB0byBiZSBicm90bGkgZGljdGlvbmFyeS4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXREaWN0aW9uYXJ5RGF0YShJbnB1dFN0cmVhbSBzcmMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgc3luY2hyb25pemVkIChtdXRleCkgeworICAgICAgaWYgKGlzRGljdGlvbmFyeURhdGFTZXQpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgQnl0ZUJ1ZmZlciBjb3B5ID0gQnl0ZUJ1ZmZlci5hbGxvY2F0ZURpcmVjdChSRkNfRElDVElPTkFSWV9TSVpFKTsKKyAgICAgIGJ5dGVbXSBidWZmZXIgPSBuZXcgYnl0ZVs0MDk2XTsKKyAgICAgIGludCByZWFkQnl0ZXM7CisgICAgICB3aGlsZSAoKHJlYWRCeXRlcyA9IHNyYy5yZWFkKGJ1ZmZlcikpICE9IC0xKSB7CisgICAgICAgIGlmIChjb3B5LnJlbWFpbmluZygpIDwgcmVhZEJ5dGVzKSB7CisgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW52YWxpZCBkaWN0aW9uYXJ5IHNpemUiKTsKKyAgICAgICAgfQorICAgICAgICBjb3B5LnB1dChidWZmZXIsIDAsIHJlYWRCeXRlcyk7CisgICAgICB9CisgICAgICBpZiAoY29weS5yZW1haW5pbmcoKSAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludmFsaWQgZGljdGlvbmFyeSBzaXplICIgKyBjb3B5LnJlbWFpbmluZygpKTsKKyAgICAgIH0KKyAgICAgIHNldERpY3Rpb25hcnlEYXRhKGNvcHkpOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBTZXRzIGRhdGEgdG8gYmUgYnJvdGxpIGRpY3Rpb25hcnkuCisgICAqLworICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0RGljdGlvbmFyeURhdGEoQnl0ZUJ1ZmZlciBkYXRhKSB7CisgICAgaWYgKCFkYXRhLmlzRGlyZWN0KCkpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImRpcmVjdCBieXRlIGJ1ZmZlciBpcyBleHBlY3RlZCIpOworICAgIH0KKyAgICBpZiAoZGF0YS5jYXBhY2l0eSgpICE9IFJGQ19ESUNUSU9OQVJZX1NJWkUpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludmFsaWQgZGljdGlvbmFyeSBzaXplIik7CisgICAgfQorICAgIHN5bmNocm9uaXplZCAobXV0ZXgpIHsKKyAgICAgIGlmIChpc0RpY3Rpb25hcnlEYXRhU2V0KSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGlmICghQ29tbW9uSk5JLm5hdGl2ZVNldERpY3Rpb25hcnlEYXRhKGRhdGEpKSB7CisgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJzZXR0aW5nIGRpY3Rpb25hcnkgZmFpbGVkIik7CisgICAgICB9CisgICAgICBpc0RpY3Rpb25hcnlEYXRhU2V0ID0gdHJ1ZTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vQ29tbW9uSk5JLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL0NvbW1vbkpOSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NjI1NDYKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL0NvbW1vbkpOSS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmNvbW1vbjsKKworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CisKKy8qKgorICogSk5JIHdyYXBwZXIgZm9yIGJyb3RsaSBjb21tb24uCisgKi8KK2NsYXNzIENvbW1vbkpOSSB7CisgIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVTZXREaWN0aW9uYXJ5RGF0YShCeXRlQnVmZmVyIGRhdGEpOworfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2NvbW1vbi9TZXRSZmNEaWN0aW9uYXJ5VGVzdC5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2NvbW1vbi9TZXRSZmNEaWN0aW9uYXJ5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ODZlYWUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL1NldFJmY0RpY3Rpb25hcnlUZXN0LmphdmEKQEAgLTAsMCArMSw3NCBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLndyYXBwZXIuY29tbW9uOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0QXJyYXlFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKK2ltcG9ydCBvcmcuYnJvdGxpLmRlYy5EaWN0aW9uYXJ5OworaW1wb3J0IG9yZy5icm90bGkuaW50ZWdyYXRpb24uQnJvdGxpSm5pVGVzdEJhc2U7CitpbXBvcnQgb3JnLmJyb3RsaS53cmFwcGVyLmRlYy5Ccm90bGlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0OworaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKgorICogVGVzdHMgZm9yIHtAbGluayBCcm90bGlDb21tb259LgorICovCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgY2xhc3MgU2V0UmZjRGljdGlvbmFyeVRlc3QgZXh0ZW5kcyBCcm90bGlKbmlUZXN0QmFzZSB7CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdFJmY0RpY3Rpb25hcnlDaGVja3N1bXMoKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIHsKKyAgICBTeXN0ZW0uZXJyLnByaW50bG4oRGljdGlvbmFyeS5nZXREYXRhKCkuc2xpY2UoKS5yZW1haW5pbmcoKSk7CisgICAgTWVzc2FnZURpZ2VzdCBtZDUgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJNRDUiKTsKKyAgICBtZDUudXBkYXRlKERpY3Rpb25hcnkuZ2V0RGF0YSgpLnNsaWNlKCkpOworICAgIGFzc2VydFRydWUoQnJvdGxpQ29tbW9uLmNoZWNrRGljdGlvbmFyeURhdGFNZDUobWQ1LmRpZ2VzdCgpKSk7CisKKyAgICBNZXNzYWdlRGlnZXN0IHNoYTEgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJTSEEtMSIpOworICAgIHNoYTEudXBkYXRlKERpY3Rpb25hcnkuZ2V0RGF0YSgpLnNsaWNlKCkpOworICAgIGFzc2VydFRydWUoQnJvdGxpQ29tbW9uLmNoZWNrRGljdGlvbmFyeURhdGFTaGExKHNoYTEuZGlnZXN0KCkpKTsKKworICAgIE1lc3NhZ2VEaWdlc3Qgc2hhMjU2ID0gTWVzc2FnZURpZ2VzdC5nZXRJbnN0YW5jZSgiU0hBLTI1NiIpOworICAgIHNoYTI1Ni51cGRhdGUoRGljdGlvbmFyeS5nZXREYXRhKCkuc2xpY2UoKSk7CisgICAgYXNzZXJ0VHJ1ZShCcm90bGlDb21tb24uY2hlY2tEaWN0aW9uYXJ5RGF0YVNoYTI1NihzaGEyNTYuZGlnZXN0KCkpKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RTZXRSZmNEaWN0aW9uYXJ5KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAvKiAibGVmdGRhdGFkYXRhbGVmdCIgZW5jb2RlZCB3aXRoIGRpY3Rpb25hcnkgd29yZHMuICovCisgICAgYnl0ZVtdIGRhdGEgPSB7MjcsIDE1LCAwLCAwLCAwLCAwLCAtMTI4LCAtMjksIC03NiwgMTMsIDAsIDAsIDcsIDkxLCAzOCwgNDksIDY0LCAyLCAwLCAtMzIsIDc4LAorICAgICAgICAyNywgNjUsIC0xMjgsIDMyLCA4MCwgMTYsIDM2LCA4LCA2fTsKKyAgICBCcm90bGlDb21tb24uc2V0RGljdGlvbmFyeURhdGEoRGljdGlvbmFyeS5nZXREYXRhKCkpOworCisgICAgQnJvdGxpSW5wdXRTdHJlYW0gZGVjb2RlciA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oZGF0YSkpOworICAgIGJ5dGVbXSBvdXRwdXQgPSBuZXcgYnl0ZVsxN107CisgICAgaW50IG9mZnNldCA9IDA7CisgICAgdHJ5IHsKKyAgICAgIGludCBieXRlc1JlYWQ7CisgICAgICB3aGlsZSAoKGJ5dGVzUmVhZCA9IGRlY29kZXIucmVhZChvdXRwdXQsIG9mZnNldCwgMTcgLSBvZmZzZXQpKSAhPSAtMSkgeworICAgICAgICBvZmZzZXQgKz0gYnl0ZXNSZWFkOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICBkZWNvZGVyLmNsb3NlKCk7CisgICAgfQorICAgIGFzc2VydEVxdWFscygxNiwgb2Zmc2V0KTsKKyAgICBieXRlW10gZXhwZWN0ZWQgPSB7CisgICAgICAnbCcsICdlJywgJ2YnLCAndCcsCisgICAgICAnZCcsICdhJywgJ3QnLCAnYScsCisgICAgICAnZCcsICdhJywgJ3QnLCAnYScsCisgICAgICAnbCcsICdlJywgJ2YnLCAndCcsCisgICAgICAwCisgICAgfTsKKyAgICBhc3NlcnRBcnJheUVxdWFscyhleHBlY3RlZCwgb3V0cHV0KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2NvbW1vbi9TZXRaZXJvRGljdGlvbmFyeVRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vU2V0WmVyb0RpY3Rpb25hcnlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY5OTM5YwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vU2V0WmVyb0RpY3Rpb25hcnlUZXN0LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLndyYXBwZXIuY29tbW9uOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0QXJyYXlFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5Ccm90bGlKbmlUZXN0QmFzZTsKK2ltcG9ydCBvcmcuYnJvdGxpLndyYXBwZXIuZGVjLkJyb3RsaUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuSlVuaXQ0OworCisvKioKKyAqIFRlc3RzIGZvciB7QGxpbmsgQnJvdGxpQ29tbW9ufS4KKyAqLworQFJ1bldpdGgoSlVuaXQ0LmNsYXNzKQorcHVibGljIGNsYXNzIFNldFplcm9EaWN0aW9uYXJ5VGVzdCBleHRlbmRzIEJyb3RsaUpuaVRlc3RCYXNlIHsKKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0WmVyb0RpY3Rpb25hcnkoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIC8qICJsZWZ0ZGF0YWRhdGFsZWZ0IiBlbmNvZGVkIHdpdGggZGljdGlvbmFyeSB3b3Jkcy4gKi8KKyAgICBieXRlW10gZGF0YSA9IHsyNywgMTUsIDAsIDAsIDAsIDAsIC0xMjgsIC0yOSwgLTc2LCAxMywgMCwgMCwgNywgOTEsIDM4LCA0OSwgNjQsIDIsIDAsIC0zMiwgNzgsCisgICAgICAgIDI3LCA2NSwgLTEyOCwgMzIsIDgwLCAxNiwgMzYsIDgsIDZ9OworICAgIGJ5dGVbXSBkaWN0aW9uYXJ5ID0gbmV3IGJ5dGVbQnJvdGxpQ29tbW9uLlJGQ19ESUNUSU9OQVJZX1NJWkVdOworICAgIEJyb3RsaUNvbW1vbi5zZXREaWN0aW9uYXJ5RGF0YShkaWN0aW9uYXJ5KTsKKworICAgIEJyb3RsaUlucHV0U3RyZWFtIGRlY29kZXIgPSBuZXcgQnJvdGxpSW5wdXRTdHJlYW0obmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGRhdGEpKTsKKyAgICBieXRlW10gb3V0cHV0ID0gbmV3IGJ5dGVbMTddOworICAgIGludCBvZmZzZXQgPSAwOworICAgIHRyeSB7CisgICAgICBpbnQgYnl0ZXNSZWFkOworICAgICAgd2hpbGUgKChieXRlc1JlYWQgPSBkZWNvZGVyLnJlYWQob3V0cHV0LCBvZmZzZXQsIDE3IC0gb2Zmc2V0KSkgIT0gLTEpIHsKKyAgICAgICAgb2Zmc2V0ICs9IGJ5dGVzUmVhZDsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgZGVjb2Rlci5jbG9zZSgpOworICAgIH0KKyAgICBhc3NlcnRFcXVhbHMoMTYsIG9mZnNldCk7CisgICAgYXNzZXJ0QXJyYXlFcXVhbHMobmV3IGJ5dGVbMTddLCBvdXRwdXQpOworICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL2NvbW1vbl9qbmkuY2MgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvY29tbW9uL2NvbW1vbl9qbmkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxY2E0OQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9jb21tb24vY29tbW9uX2puaS5jYwpAQCAtMCwwICsxLDQ3IEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCisjaW5jbHVkZSA8am5pLmg+CisKKyNpbmNsdWRlICJjL2NvbW1vbi9kaWN0aW9uYXJ5LmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBTZXQgZGF0YSB0byBiZSBicm90bGkgZGljdGlvbmFyeSBkYXRhLgorICoKKyAqIEBwYXJhbSBidWZmZXIgZGlyZWN0IEJ5dGVCdWZmZXIKKyAqIEByZXR1cm5zIGZhbHNlIGlmIGRpY3Rpb25hcnkgZGF0YSB3YXMgYWxyZWFkeSBzZXQ7IG90aGVyd2lzZSB0cnVlCisgKi8KK0pOSUVYUE9SVCBqaW50IEpOSUNBTEwKK0phdmFfb3JnX2Jyb3RsaV93cmFwcGVyX2NvbW1vbl9Db21tb25KTklfbmF0aXZlU2V0RGljdGlvbmFyeURhdGEoCisgICAgSk5JRW52KiBlbnYsIGpvYmplY3QgLypqb2JqKi8sIGpvYmplY3QgYnVmZmVyKSB7CisgIGpvYmplY3QgYnVmZmVyX3JlZiA9IGVudi0+TmV3R2xvYmFsUmVmKGJ1ZmZlcik7CisgIGlmICghYnVmZmVyX3JlZikgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB1aW50OF90KiBkYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGVudi0+R2V0RGlyZWN0QnVmZmVyQWRkcmVzcyhidWZmZXIpKTsKKyAgaWYgKCFkYXRhKSB7CisgICAgZW52LT5EZWxldGVHbG9iYWxSZWYoYnVmZmVyX3JlZik7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgQnJvdGxpU2V0RGljdGlvbmFyeURhdGEoZGF0YSk7CisKKyAgY29uc3QgQnJvdGxpRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IEJyb3RsaUdldERpY3Rpb25hcnkoKTsKKyAgaWYgKGRpY3Rpb25hcnktPmRhdGEgIT0gZGF0YSkgeworICAgIGVudi0+RGVsZXRlR2xvYmFsUmVmKGJ1ZmZlcl9yZWYpOworICB9IGVsc2UgeworICAgIC8qIERvbid0IHJlbGVhc2UgcmVmZXJlbmNlOyBpdCBpcyBhbiBpbnRlbmRlZCBtZW1vcnkgbGVhay4gKi8KKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQlVJTEQgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDUxZDAKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL0JVSUxECkBAIC0wLDAgKzEsODQgQEAKK3BhY2thZ2UoZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCisKK2xpY2Vuc2VzKFsibm90aWNlIl0pICAjIE1JVAorCitmaWxlZ3JvdXAoCisgICAgbmFtZSA9ICJqbmlfc3JjIiwKKyAgICBzcmNzID0gWyJkZWNvZGVyX2puaS5jYyJdLAorKQorCitqYXZhX2xpYnJhcnkoCisgICAgbmFtZSA9ICJkZWMiLAorICAgIHNyY3MgPSBnbG9iKAorICAgICAgICBbIiouamF2YSJdLAorICAgICAgICBleGNsdWRlID0gWyIqVGVzdCouamF2YSJdLAorICAgICksCisgICAgcmVzb3VyY2VfamFycyA9IFsiLy86bGljZW5zZSJdLAorKQorCitqYXZhX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ0ZXN0X2xpYiIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBnbG9iKFsiKlRlc3QqLmphdmEiXSksCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpkZWMiLAorICAgICAgICAiLy9vcmcvYnJvdGxpL2ludGVncmF0aW9uOmJyb3RsaV9qbmlfdGVzdF9iYXNlIiwKKyAgICAgICAgIi8vb3JnL2Jyb3RsaS9pbnRlZ3JhdGlvbjpidW5kbGVfaGVscGVyIiwKKyAgICAgICAgIkBtYXZlbi8vOmp1bml0X2p1bml0IiwKKyAgICBdLAorKQorCitmaWxlZ3JvdXAoCisgICAgbmFtZSA9ICJicm90bGlfam5pIiwKKyAgICBzcmNzID0gWyIvLzpicm90bGlfam5pLmRsbCJdLAorKQorCitmaWxlZ3JvdXAoCisgICAgbmFtZSA9ICJ0ZXN0X2J1bmRsZSIsCisgICAgc3JjcyA9IFsiLy9vcmcvYnJvdGxpL2ludGVncmF0aW9uOnRlc3RfZGF0YSJdLAorKQorCitqYXZhX3Rlc3QoCisgICAgbmFtZSA9ICJCcm90bGlEZWNvZGVyQ2hhbm5lbFRlc3QiLAorICAgIHNpemUgPSAibGFyZ2UiLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6YnJvdGxpX2puaSIsICAjIEJhemVsIEpOSSB3b3JrYXJvdW5kCisgICAgICAgICI6dGVzdF9idW5kbGUiLAorICAgIF0sCisgICAganZtX2ZsYWdzID0gWworICAgICAgICAiLURCUk9UTElfSk5JX0xJQlJBUlk9JChsb2NhdGlvbiA6YnJvdGxpX2puaSkiLAorICAgICAgICAiLURURVNUX0JVTkRMRT0kKGxvY2F0aW9uIDp0ZXN0X2J1bmRsZSkiLAorICAgIF0sCisgICAgdGVzdF9jbGFzcyA9ICJvcmcuYnJvdGxpLndyYXBwZXIuZGVjLkJyb3RsaURlY29kZXJDaGFubmVsVGVzdCIsCisgICAgcnVudGltZV9kZXBzID0gWyI6dGVzdF9saWIiXSwKKykKKworamF2YV90ZXN0KAorICAgIG5hbWUgPSAiQnJvdGxpSW5wdXRTdHJlYW1UZXN0IiwKKyAgICBzaXplID0gImxhcmdlIiwKKyAgICBkYXRhID0gWworICAgICAgICAiOmJyb3RsaV9qbmkiLCAgIyBCYXplbCBKTkkgd29ya2Fyb3VuZAorICAgICAgICAiOnRlc3RfYnVuZGxlIiwKKyAgICBdLAorICAgIGp2bV9mbGFncyA9IFsKKyAgICAgICAgIi1EQlJPVExJX0pOSV9MSUJSQVJZPSQobG9jYXRpb24gOmJyb3RsaV9qbmkpIiwKKyAgICAgICAgIi1EVEVTVF9CVU5ETEU9JChsb2NhdGlvbiA6dGVzdF9idW5kbGUpIiwKKyAgICBdLAorICAgIHRlc3RfY2xhc3MgPSAib3JnLmJyb3RsaS53cmFwcGVyLmRlYy5Ccm90bGlJbnB1dFN0cmVhbVRlc3QiLAorICAgIHJ1bnRpbWVfZGVwcyA9IFsiOnRlc3RfbGliIl0sCispCisKK2phdmFfdGVzdCgKKyAgICBuYW1lID0gIkRlY29kZXJUZXN0IiwKKyAgICBzaXplID0gImxhcmdlIiwKKyAgICBkYXRhID0gWworICAgICAgICAiOmJyb3RsaV9qbmkiLCAgIyBCYXplbCBKTkkgd29ya2Fyb3VuZAorICAgICAgICAiOnRlc3RfYnVuZGxlIiwKKyAgICBdLAorICAgIGp2bV9mbGFncyA9IFsKKyAgICAgICAgIi1EQlJPVExJX0pOSV9MSUJSQVJZPSQobG9jYXRpb24gOmJyb3RsaV9qbmkpIiwKKyAgICAgICAgIi1EVEVTVF9CVU5ETEU9JChsb2NhdGlvbiA6dGVzdF9idW5kbGUpIiwKKyAgICBdLAorICAgIHRlc3RfY2xhc3MgPSAib3JnLmJyb3RsaS53cmFwcGVyLmRlYy5EZWNvZGVyVGVzdCIsCisgICAgcnVudGltZV9kZXBzID0gWyI6dGVzdF9saWIiXSwKKykKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpRGVjb2RlckNoYW5uZWwuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpRGVjb2RlckNoYW5uZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZlOGYyCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9Ccm90bGlEZWNvZGVyQ2hhbm5lbC5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmRlYzsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5jaGFubmVscy5DbG9zZWRDaGFubmVsRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWw7CisKKy8qKgorICogUmVhZGFibGVCeXRlQ2hhbm5lbCB0aGF0IHdyYXBzIG5hdGl2ZSBicm90bGkgZGVjb2Rlci4KKyAqLworcHVibGljIGNsYXNzIEJyb3RsaURlY29kZXJDaGFubmVsIGV4dGVuZHMgRGVjb2RlciBpbXBsZW1lbnRzIFJlYWRhYmxlQnl0ZUNoYW5uZWwgeworICAvKiogVGhlIGRlZmF1bHQgaW50ZXJuYWwgYnVmZmVyIHNpemUgdXNlZCBieSB0aGUgZGVjb2Rlci4gKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfQlVGRkVSX1NJWkUgPSAxNjM4NDsKKworICBwcml2YXRlIGZpbmFsIE9iamVjdCBtdXRleCA9IG5ldyBPYmplY3QoKTsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIEJyb3RsaURlY29kZXJDaGFubmVsLgorICAgKgorICAgKiBAcGFyYW0gc291cmNlIHVuZGVybHlpbmcgc291cmNlCisgICAqIEBwYXJhbSBidWZmZXJTaXplIGludGVybWVkaWF0ZSBidWZmZXIgc2l6ZQorICAgKiBAcGFyYW0gY3VzdG9tRGljdGlvbmFyeSBpbml0aWFsIExaNzcgZGljdGlvbmFyeQorICAgKi8KKyAgcHVibGljIEJyb3RsaURlY29kZXJDaGFubmVsKFJlYWRhYmxlQnl0ZUNoYW5uZWwgc291cmNlLCBpbnQgYnVmZmVyU2l6ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBzdXBlcihzb3VyY2UsIGJ1ZmZlclNpemUpOworICB9CisKKyAgcHVibGljIEJyb3RsaURlY29kZXJDaGFubmVsKFJlYWRhYmxlQnl0ZUNoYW5uZWwgc291cmNlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHRoaXMoc291cmNlLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgYm9vbGVhbiBpc09wZW4oKSB7CisgICAgc3luY2hyb25pemVkIChtdXRleCkgeworICAgICAgcmV0dXJuICFjbG9zZWQ7CisgICAgfQorICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBzeW5jaHJvbml6ZWQgKG11dGV4KSB7CisgICAgICBzdXBlci5jbG9zZSgpOworICAgIH0KKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgaW50IHJlYWQoQnl0ZUJ1ZmZlciBkc3QpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgc3luY2hyb25pemVkIChtdXRleCkgeworICAgICAgaWYgKGNsb3NlZCkgeworICAgICAgICB0aHJvdyBuZXcgQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbigpOworICAgICAgfQorICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICB3aGlsZSAoZHN0Lmhhc1JlbWFpbmluZygpKSB7CisgICAgICAgIGludCBvdXRwdXRTaXplID0gZGVjb2RlKCk7CisgICAgICAgIGlmIChvdXRwdXRTaXplIDw9IDApIHsKKyAgICAgICAgICByZXR1cm4gcmVzdWx0ID09IDAgPyBvdXRwdXRTaXplIDogcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHJlc3VsdCArPSBjb25zdW1lKGRzdCk7CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9Ccm90bGlEZWNvZGVyQ2hhbm5lbFRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpRGVjb2RlckNoYW5uZWxUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkOGY2OAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpRGVjb2RlckNoYW5uZWxUZXN0LmphdmEKQEAgLTAsMCArMSw4NCBAQAorLyogQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLndyYXBwZXIuZGVjOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5Ccm90bGlKbmlUZXN0QmFzZTsKK2ltcG9ydCBvcmcuYnJvdGxpLmludGVncmF0aW9uLkJ1bmRsZUhlbHBlcjsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5pby5jaGFubmVscy5DaGFubmVsczsKK2ltcG9ydCBqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5BbGxUZXN0czsKKworLyoqIFRlc3RzIGZvciB7QGxpbmsgb3JnLmJyb3RsaS53cmFwcGVyLmRlYy5Ccm90bGlEZWNvZGVyQ2hhbm5lbH0uICovCitAUnVuV2l0aChBbGxUZXN0cy5jbGFzcykKK3B1YmxpYyBjbGFzcyBCcm90bGlEZWNvZGVyQ2hhbm5lbFRlc3QgZXh0ZW5kcyBCcm90bGlKbmlUZXN0QmFzZSB7CisKKyAgc3RhdGljIElucHV0U3RyZWFtIGdldEJ1bmRsZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG5ldyBGaWxlSW5wdXRTdHJlYW0oU3lzdGVtLmdldFByb3BlcnR5KCJURVNUX0JVTkRMRSIpKTsKKyAgfQorCisgIC8qKiBDcmVhdGVzIGEgdGVzdCBzdWl0ZS4gKi8KKyAgcHVibGljIHN0YXRpYyBUZXN0U3VpdGUgc3VpdGUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKKyAgICBJbnB1dFN0cmVhbSBidW5kbGUgPSBnZXRCdW5kbGUoKTsKKyAgICB0cnkgeworICAgICAgTGlzdDxTdHJpbmc+IGVudHJpZXMgPSBCdW5kbGVIZWxwZXIubGlzdEVudHJpZXMoYnVuZGxlKTsKKyAgICAgIGZvciAoU3RyaW5nIGVudHJ5IDogZW50cmllcykgeworICAgICAgICBzdWl0ZS5hZGRUZXN0KG5ldyBDaGFubmVsVGVzdENhc2UoZW50cnkpKTsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIHJldHVybiBzdWl0ZTsKKyAgfQorCisgIC8qKiBUZXN0IGNhc2Ugd2l0aCBhIHVuaXF1ZSBuYW1lLiAqLworICBzdGF0aWMgY2xhc3MgQ2hhbm5lbFRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgeworICAgIGZpbmFsIFN0cmluZyBlbnRyeU5hbWU7CisgICAgQ2hhbm5lbFRlc3RDYXNlKFN0cmluZyBlbnRyeU5hbWUpIHsKKyAgICAgIHN1cGVyKCJCcm90bGlEZWNvZGVyQ2hhbm5lbFRlc3QuIiArIGVudHJ5TmFtZSk7CisgICAgICB0aGlzLmVudHJ5TmFtZSA9IGVudHJ5TmFtZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkgdGhyb3dzIFRocm93YWJsZSB7CisgICAgICBCcm90bGlEZWNvZGVyQ2hhbm5lbFRlc3QucnVuKGVudHJ5TmFtZSk7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBydW4oU3RyaW5nIGVudHJ5TmFtZSkgdGhyb3dzIFRocm93YWJsZSB7CisgICAgSW5wdXRTdHJlYW0gYnVuZGxlID0gZ2V0QnVuZGxlKCk7CisgICAgYnl0ZVtdIGNvbXByZXNzZWQ7CisgICAgdHJ5IHsKKyAgICAgIGNvbXByZXNzZWQgPSBCdW5kbGVIZWxwZXIucmVhZEVudHJ5KGJ1bmRsZSwgZW50cnlOYW1lKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIGlmIChjb21wcmVzc2VkID09IG51bGwpIHsKKyAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCByZWFkIGJ1bmRsZSBlbnRyeTogIiArIGVudHJ5TmFtZSk7CisgICAgfQorCisgICAgUmVhZGFibGVCeXRlQ2hhbm5lbCBzcmMgPSBDaGFubmVscy5uZXdDaGFubmVsKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShjb21wcmVzc2VkKSk7CisgICAgUmVhZGFibGVCeXRlQ2hhbm5lbCBkZWNvZGVyID0gbmV3IEJyb3RsaURlY29kZXJDaGFubmVsKHNyYyk7CisgICAgbG9uZyBjcmM7CisgICAgdHJ5IHsKKyAgICAgIGNyYyA9IEJ1bmRsZUhlbHBlci5maW5nZXJwcmludFN0cmVhbShDaGFubmVscy5uZXdJbnB1dFN0cmVhbShkZWNvZGVyKSk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGRlY29kZXIuY2xvc2UoKTsKKyAgICB9CisgICAgYXNzZXJ0RXF1YWxzKEJ1bmRsZUhlbHBlci5nZXRFeHBlY3RlZEZpbmdlcnByaW50KGVudHJ5TmFtZSksIGNyYyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpSW5wdXRTdHJlYW0uamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpSW5wdXRTdHJlYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTJlNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9Ccm90bGlJbnB1dFN0cmVhbS5qYXZhCkBAIC0wLDAgKzEsMTE1IEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkud3JhcHBlci5kZWM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbHM7CisKKy8qKgorICogSW5wdXRTdHJlYW0gdGhhdCB3cmFwcyBuYXRpdmUgYnJvdGxpIGRlY29kZXIuCisgKi8KK3B1YmxpYyBjbGFzcyBCcm90bGlJbnB1dFN0cmVhbSBleHRlbmRzIElucHV0U3RyZWFtIHsKKyAgLyoqIFRoZSBkZWZhdWx0IGludGVybmFsIGJ1ZmZlciBzaXplIHVzZWQgYnkgdGhlIGRlY29kZXIuICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0JVRkZFUl9TSVpFID0gMTYzODQ7CisKKyAgcHJpdmF0ZSBmaW5hbCBEZWNvZGVyIGRlY29kZXI7CisKKyAgLyoqCisgICAqIENyZWF0ZXMgYSBCcm90bGlJbnB1dFN0cmVhbS4KKyAgICoKKyAgICogQHBhcmFtIHNvdXJjZSB1bmRlcmx5aW5nIHNvdXJjZQorICAgKiBAcGFyYW0gYnVmZmVyU2l6ZSBpbnRlcm1lZGlhdGUgYnVmZmVyIHNpemUKKyAgICovCisgIHB1YmxpYyBCcm90bGlJbnB1dFN0cmVhbShJbnB1dFN0cmVhbSBzb3VyY2UsIGludCBidWZmZXJTaXplKQorICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB0aGlzLmRlY29kZXIgPSBuZXcgRGVjb2RlcihDaGFubmVscy5uZXdDaGFubmVsKHNvdXJjZSksIGJ1ZmZlclNpemUpOworICB9CisKKyAgcHVibGljIEJyb3RsaUlucHV0U3RyZWFtKElucHV0U3RyZWFtIHNvdXJjZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB0aGlzKHNvdXJjZSwgREVGQVVMVF9CVUZGRVJfU0laRSk7CisgIH0KKworICBwdWJsaWMgdm9pZCBlbmFibGVFYWdlck91dHB1dCgpIHsKKyAgICBkZWNvZGVyLmVuYWJsZUVhZ2VyT3V0cHV0KCk7CisgIH0KKworICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGRlY29kZXIuY2xvc2UoKTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgaW50IGF2YWlsYWJsZSgpIHsKKyAgICByZXR1cm4gKGRlY29kZXIuYnVmZmVyICE9IG51bGwpID8gZGVjb2Rlci5idWZmZXIucmVtYWluaW5nKCkgOiAwOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBpbnQgcmVhZCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgaWYgKGRlY29kZXIuY2xvc2VkKSB7CisgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oInJlYWQgYWZ0ZXIgY2xvc2UiKTsKKyAgICB9CisgICAgaW50IGRlY29kZWQ7CisgICAgLy8gSXRlcmF0ZSB1bnRpbCBhdCBsZWF0IG9uZSBieXRlIGlzIGRlY29kZWQsIG9yIEVPRiByZWFjaGVkLgorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBkZWNvZGVkID0gZGVjb2Rlci5kZWNvZGUoKTsKKyAgICAgIGlmIChkZWNvZGVkICE9IDApIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlY29kZWQgPT0gLTEpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGRlY29kZXIuYnVmZmVyLmdldCgpICYgMHhGRjsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgaW50IHJlYWQoYnl0ZVtdIGIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgcmV0dXJuIHJlYWQoYiwgMCwgYi5sZW5ndGgpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBpbnQgcmVhZChieXRlW10gYiwgaW50IG9mZiwgaW50IGxlbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoZGVjb2Rlci5jbG9zZWQpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigicmVhZCBhZnRlciBjbG9zZSIpOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5kZWNvZGUoKSA9PSAtMSkgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICB3aGlsZSAobGVuID4gMCkgeworICAgICAgaW50IGxpbWl0ID0gTWF0aC5taW4obGVuLCBkZWNvZGVyLmJ1ZmZlci5yZW1haW5pbmcoKSk7CisgICAgICBkZWNvZGVyLmJ1ZmZlci5nZXQoYiwgb2ZmLCBsaW1pdCk7CisgICAgICBvZmYgKz0gbGltaXQ7CisgICAgICBsZW4gLT0gbGltaXQ7CisgICAgICByZXN1bHQgKz0gbGltaXQ7CisgICAgICBpZiAoZGVjb2Rlci5kZWNvZGUoKSA9PSAtMSkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgbG9uZyBza2lwKGxvbmcgbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoZGVjb2Rlci5jbG9zZWQpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigicmVhZCBhZnRlciBjbG9zZSIpOworICAgIH0KKyAgICBsb25nIHJlc3VsdCA9IDA7CisgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICBpZiAoZGVjb2Rlci5kZWNvZGUoKSA9PSAtMSkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGludCBsaW1pdCA9IChpbnQpIE1hdGgubWluKG4sIChsb25nKSBkZWNvZGVyLmJ1ZmZlci5yZW1haW5pbmcoKSk7CisgICAgICBkZWNvZGVyLmRpc2NhcmQobGltaXQpOworICAgICAgcmVzdWx0ICs9IGxpbWl0OworICAgICAgbiAtPSBsaW1pdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9Ccm90bGlJbnB1dFN0cmVhbVRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpSW5wdXRTdHJlYW1UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhNzExNQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvQnJvdGxpSW5wdXRTdHJlYW1UZXN0LmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyogQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworcGFja2FnZSBvcmcuYnJvdGxpLndyYXBwZXIuZGVjOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5Ccm90bGlKbmlUZXN0QmFzZTsKK2ltcG9ydCBvcmcuYnJvdGxpLmludGVncmF0aW9uLkJ1bmRsZUhlbHBlcjsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuQWxsVGVzdHM7CisKKy8qKiBUZXN0cyBmb3Ige0BsaW5rIG9yZy5icm90bGkud3JhcHBlci5kZWMuQnJvdGxpSW5wdXRTdHJlYW19LiAqLworQFJ1bldpdGgoQWxsVGVzdHMuY2xhc3MpCitwdWJsaWMgY2xhc3MgQnJvdGxpSW5wdXRTdHJlYW1UZXN0IGV4dGVuZHMgQnJvdGxpSm5pVGVzdEJhc2UgeworCisgIHN0YXRpYyBJbnB1dFN0cmVhbSBnZXRCdW5kbGUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHJldHVybiBuZXcgRmlsZUlucHV0U3RyZWFtKFN5c3RlbS5nZXRQcm9wZXJ0eSgiVEVTVF9CVU5ETEUiKSk7CisgIH0KKworICAvKiogQ3JlYXRlcyBhIHRlc3Qgc3VpdGUuICovCisgIHB1YmxpYyBzdGF0aWMgVGVzdFN1aXRlIHN1aXRlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7CisgICAgSW5wdXRTdHJlYW0gYnVuZGxlID0gZ2V0QnVuZGxlKCk7CisgICAgdHJ5IHsKKyAgICAgIExpc3Q8U3RyaW5nPiBlbnRyaWVzID0gQnVuZGxlSGVscGVyLmxpc3RFbnRyaWVzKGJ1bmRsZSk7CisgICAgICBmb3IgKFN0cmluZyBlbnRyeSA6IGVudHJpZXMpIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdChuZXcgU3RyZWFtVGVzdENhc2UoZW50cnkpKTsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIHJldHVybiBzdWl0ZTsKKyAgfQorCisgIC8qKiBUZXN0IGNhc2Ugd2l0aCBhIHVuaXF1ZSBuYW1lLiAqLworICBzdGF0aWMgY2xhc3MgU3RyZWFtVGVzdENhc2UgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgICAgZmluYWwgU3RyaW5nIGVudHJ5TmFtZTsKKyAgICBTdHJlYW1UZXN0Q2FzZShTdHJpbmcgZW50cnlOYW1lKSB7CisgICAgICBzdXBlcigiQnJvdGxpSW5wdXRTdHJlYW1UZXN0LiIgKyBlbnRyeU5hbWUpOworICAgICAgdGhpcy5lbnRyeU5hbWUgPSBlbnRyeU5hbWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpIHRocm93cyBUaHJvd2FibGUgeworICAgICAgQnJvdGxpSW5wdXRTdHJlYW1UZXN0LnJ1bihlbnRyeU5hbWUpOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgcnVuKFN0cmluZyBlbnRyeU5hbWUpIHRocm93cyBUaHJvd2FibGUgeworICAgIElucHV0U3RyZWFtIGJ1bmRsZSA9IGdldEJ1bmRsZSgpOworICAgIGJ5dGVbXSBjb21wcmVzc2VkOworICAgIHRyeSB7CisgICAgICBjb21wcmVzc2VkID0gQnVuZGxlSGVscGVyLnJlYWRFbnRyeShidW5kbGUsIGVudHJ5TmFtZSk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGJ1bmRsZS5jbG9zZSgpOworICAgIH0KKyAgICBpZiAoY29tcHJlc3NlZCA9PSBudWxsKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ2FuJ3QgcmVhZCBidW5kbGUgZW50cnk6ICIgKyBlbnRyeU5hbWUpOworICAgIH0KKworICAgIElucHV0U3RyZWFtIHNyYyA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShjb21wcmVzc2VkKTsKKyAgICBJbnB1dFN0cmVhbSBkZWNvZGVyID0gbmV3IEJyb3RsaUlucHV0U3RyZWFtKHNyYyk7CisgICAgbG9uZyBjcmM7CisgICAgdHJ5IHsKKyAgICAgIGNyYyA9IEJ1bmRsZUhlbHBlci5maW5nZXJwcmludFN0cmVhbShkZWNvZGVyKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgZGVjb2Rlci5jbG9zZSgpOworICAgIH0KKyAgICBhc3NlcnRFcXVhbHMoQnVuZGxlSGVscGVyLmdldEV4cGVjdGVkRmluZ2VycHJpbnQoZW50cnlOYW1lKSwgY3JjKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9EZWNvZGVyLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL0RlY29kZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjE4M2FiCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9EZWNvZGVyLmphdmEKQEAgLTAsMCArMSwxNzcgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmRlYzsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uQnVmZmVyOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS5uaW8uY2hhbm5lbHMuUmVhZGFibGVCeXRlQ2hhbm5lbDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCisvKioKKyAqIEJhc2UgY2xhc3MgZm9yIElucHV0U3RyZWFtIC8gQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbnMuCisgKi8KK3B1YmxpYyBjbGFzcyBEZWNvZGVyIHsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZmZlciBFTVBUWV9CVUZFUiA9IEJ5dGVCdWZmZXIuYWxsb2NhdGUoMCk7CisgIHByaXZhdGUgZmluYWwgUmVhZGFibGVCeXRlQ2hhbm5lbCBzb3VyY2U7CisgIHByaXZhdGUgZmluYWwgRGVjb2RlckpOSS5XcmFwcGVyIGRlY29kZXI7CisgIEJ5dGVCdWZmZXIgYnVmZmVyOworICBib29sZWFuIGNsb3NlZDsKKyAgYm9vbGVhbiBlYWdlcjsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIERlY29kZXIgd3JhcHBlci4KKyAgICoKKyAgICogQHBhcmFtIHNvdXJjZSB1bmRlcmx5aW5nIHNvdXJjZQorICAgKiBAcGFyYW0gaW5wdXRCdWZmZXJTaXplIHJlYWQgYnVmZmVyIHNpemUKKyAgICovCisgIHB1YmxpYyBEZWNvZGVyKFJlYWRhYmxlQnl0ZUNoYW5uZWwgc291cmNlLCBpbnQgaW5wdXRCdWZmZXJTaXplKQorICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoaW5wdXRCdWZmZXJTaXplIDw9IDApIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImJ1ZmZlciBzaXplIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICB9CisgICAgaWYgKHNvdXJjZSA9PSBudWxsKSB7CisgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInNvdXJjZSBjYW4gbm90IGJlIG51bGwiKTsKKyAgICB9CisgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CisgICAgdGhpcy5kZWNvZGVyID0gbmV3IERlY29kZXJKTkkuV3JhcHBlcihpbnB1dEJ1ZmZlclNpemUpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIGZhaWwoU3RyaW5nIG1lc3NhZ2UpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgdHJ5IHsKKyAgICAgIGNsb3NlKCk7CisgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgIC8qIElnbm9yZSAqLworICAgIH0KKyAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24obWVzc2FnZSk7CisgIH0KKworICBwdWJsaWMgdm9pZCBlbmFibGVFYWdlck91dHB1dCgpIHsKKyAgICB0aGlzLmVhZ2VyID0gdHJ1ZTsKKyAgfQorCisgIC8qKgorICAgKiBDb250aW51ZSBkZWNvZGluZy4KKyAgICoKKyAgICogQHJldHVybiAtMSBpZiBzdHJlYW0gaXMgZmluaXNoZWQsIG9yIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgaW4gcmVhZCBidWZmZXIgKD4gMCkKKyAgICovCisgIGludCBkZWNvZGUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBpZiAoYnVmZmVyICE9IG51bGwpIHsKKyAgICAgICAgaWYgKCFidWZmZXIuaGFzUmVtYWluaW5nKCkpIHsKKyAgICAgICAgICBidWZmZXIgPSBudWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBidWZmZXIucmVtYWluaW5nKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgc3dpdGNoIChkZWNvZGVyLmdldFN0YXR1cygpKSB7CisgICAgICAgIGNhc2UgRE9ORToKKyAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgY2FzZSBPSzoKKyAgICAgICAgICBkZWNvZGVyLnB1c2goMCk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBORUVEU19NT1JFX0lOUFVUOgorICAgICAgICAgIC8vIEluICJlYWdlciIgbW9yZSBwdWxsaW5nIHByZWVtcHRzIHB1c2hpbmcuCisgICAgICAgICAgaWYgKGVhZ2VyICYmIGRlY29kZXIuaGFzT3V0cHV0KCkpIHsKKyAgICAgICAgICAgIGJ1ZmZlciA9IGRlY29kZXIucHVsbCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIEJ5dGVCdWZmZXIgaW5wdXRCdWZmZXIgPSBkZWNvZGVyLmdldElucHV0QnVmZmVyKCk7CisgICAgICAgICAgKChCdWZmZXIpIGlucHV0QnVmZmVyKS5jbGVhcigpOworICAgICAgICAgIGludCBieXRlc1JlYWQgPSBzb3VyY2UucmVhZChpbnB1dEJ1ZmZlcik7CisgICAgICAgICAgaWYgKGJ5dGVzUmVhZCA9PSAtMSkgeworICAgICAgICAgICAgZmFpbCgidW5leHBlY3RlZCBlbmQgb2YgaW5wdXQiKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGJ5dGVzUmVhZCA9PSAwKSB7CisgICAgICAgICAgICAvLyBObyBpbnB1dCBkYXRhIGlzIGN1cnJlbnRseSBhdmFpbGFibGUuCisgICAgICAgICAgICBidWZmZXIgPSBFTVBUWV9CVUZFUjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgIH0KKyAgICAgICAgICBkZWNvZGVyLnB1c2goYnl0ZXNSZWFkKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE5FRURTX01PUkVfT1VUUFVUOgorICAgICAgICAgIGJ1ZmZlciA9IGRlY29kZXIucHVsbCgpOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZmFpbCgiY29ycnVwdGVkIGlucHV0Iik7CisgICAgICB9CisgICAgfQorICB9CisKKyAgdm9pZCBkaXNjYXJkKGludCBsZW5ndGgpIHsKKyAgICAoKEJ1ZmZlcikgYnVmZmVyKS5wb3NpdGlvbihidWZmZXIucG9zaXRpb24oKSArIGxlbmd0aCk7CisgICAgaWYgKCFidWZmZXIuaGFzUmVtYWluaW5nKCkpIHsKKyAgICAgIGJ1ZmZlciA9IG51bGw7CisgICAgfQorICB9CisKKyAgaW50IGNvbnN1bWUoQnl0ZUJ1ZmZlciBkc3QpIHsKKyAgICBCeXRlQnVmZmVyIHNsaWNlID0gYnVmZmVyLnNsaWNlKCk7CisgICAgaW50IGxpbWl0ID0gTWF0aC5taW4oc2xpY2UucmVtYWluaW5nKCksIGRzdC5yZW1haW5pbmcoKSk7CisgICAgKChCdWZmZXIpIHNsaWNlKS5saW1pdChsaW1pdCk7CisgICAgZHN0LnB1dChzbGljZSk7CisgICAgZGlzY2FyZChsaW1pdCk7CisgICAgcmV0dXJuIGxpbWl0OworICB9CisKKyAgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgaWYgKGNsb3NlZCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbG9zZWQgPSB0cnVlOworICAgIGRlY29kZXIuZGVzdHJveSgpOworICAgIHNvdXJjZS5jbG9zZSgpOworICB9CisKKyAgLyoqCisgICAqIERlY29kZXMgdGhlIGdpdmVuIGRhdGEgYnVmZmVyLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBieXRlW10gZGVjb21wcmVzcyhieXRlW10gZGF0YSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBEZWNvZGVySk5JLldyYXBwZXIgZGVjb2RlciA9IG5ldyBEZWNvZGVySk5JLldyYXBwZXIoZGF0YS5sZW5ndGgpOworICAgIEFycmF5TGlzdDxieXRlW10+IG91dHB1dCA9IG5ldyBBcnJheUxpc3Q8Ynl0ZVtdPigpOworICAgIGludCB0b3RhbE91dHB1dFNpemUgPSAwOworICAgIHRyeSB7CisgICAgICBkZWNvZGVyLmdldElucHV0QnVmZmVyKCkucHV0KGRhdGEpOworICAgICAgZGVjb2Rlci5wdXNoKGRhdGEubGVuZ3RoKTsKKyAgICAgIHdoaWxlIChkZWNvZGVyLmdldFN0YXR1cygpICE9IERlY29kZXJKTkkuU3RhdHVzLkRPTkUpIHsKKyAgICAgICAgc3dpdGNoIChkZWNvZGVyLmdldFN0YXR1cygpKSB7CisgICAgICAgICAgY2FzZSBPSzoKKyAgICAgICAgICAgIGRlY29kZXIucHVzaCgwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBORUVEU19NT1JFX09VVFBVVDoKKyAgICAgICAgICAgIEJ5dGVCdWZmZXIgYnVmZmVyID0gZGVjb2Rlci5wdWxsKCk7CisgICAgICAgICAgICBieXRlW10gY2h1bmsgPSBuZXcgYnl0ZVtidWZmZXIucmVtYWluaW5nKCldOworICAgICAgICAgICAgYnVmZmVyLmdldChjaHVuayk7CisgICAgICAgICAgICBvdXRwdXQuYWRkKGNodW5rKTsKKyAgICAgICAgICAgIHRvdGFsT3V0cHV0U2l6ZSArPSBjaHVuay5sZW5ndGg7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oImNvcnJ1cHRlZCBpbnB1dCIpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGRlY29kZXIuZGVzdHJveSgpOworICAgIH0KKyAgICBpZiAob3V0cHV0LnNpemUoKSA9PSAxKSB7CisgICAgICByZXR1cm4gb3V0cHV0LmdldCgwKTsKKyAgICB9CisgICAgYnl0ZVtdIHJlc3VsdCA9IG5ldyBieXRlW3RvdGFsT3V0cHV0U2l6ZV07CisgICAgaW50IG9mZnNldCA9IDA7CisgICAgZm9yIChieXRlW10gY2h1bmsgOiBvdXRwdXQpIHsKKyAgICAgIFN5c3RlbS5hcnJheWNvcHkoY2h1bmssIDAsIHJlc3VsdCwgb2Zmc2V0LCBjaHVuay5sZW5ndGgpOworICAgICAgb2Zmc2V0ICs9IGNodW5rLmxlbmd0aDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9EZWNvZGVySk5JLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL0RlY29kZXJKTkkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzE5YjFlCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9EZWNvZGVySk5JLmphdmEKQEAgLTAsMCArMSwxMjEgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmRlYzsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKKworLyoqCisgKiBKTkkgd3JhcHBlciBmb3IgYnJvdGxpIGRlY29kZXIuCisgKi8KK3B1YmxpYyBjbGFzcyBEZWNvZGVySk5JIHsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIEJ5dGVCdWZmZXIgbmF0aXZlQ3JlYXRlKGxvbmdbXSBjb250ZXh0KTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlUHVzaChsb25nW10gY29udGV4dCwgaW50IGxlbmd0aCk7CisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBCeXRlQnVmZmVyIG5hdGl2ZVB1bGwobG9uZ1tdIGNvbnRleHQpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVEZXN0cm95KGxvbmdbXSBjb250ZXh0KTsKKworICBwdWJsaWMgZW51bSBTdGF0dXMgeworICAgIEVSUk9SLAorICAgIERPTkUsCisgICAgTkVFRFNfTU9SRV9JTlBVVCwKKyAgICBORUVEU19NT1JFX09VVFBVVCwKKyAgICBPSworICB9OworCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgV3JhcHBlciB7CisgICAgcHJpdmF0ZSBmaW5hbCBsb25nW10gY29udGV4dCA9IG5ldyBsb25nWzNdOworICAgIHByaXZhdGUgZmluYWwgQnl0ZUJ1ZmZlciBpbnB1dEJ1ZmZlcjsKKyAgICBwcml2YXRlIFN0YXR1cyBsYXN0U3RhdHVzID0gU3RhdHVzLk5FRURTX01PUkVfSU5QVVQ7CisgICAgcHJpdmF0ZSBib29sZWFuIGZyZXNoID0gdHJ1ZTsKKworICAgIHB1YmxpYyBXcmFwcGVyKGludCBpbnB1dEJ1ZmZlclNpemUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICB0aGlzLmNvbnRleHRbMV0gPSBpbnB1dEJ1ZmZlclNpemU7CisgICAgICB0aGlzLmlucHV0QnVmZmVyID0gbmF0aXZlQ3JlYXRlKHRoaXMuY29udGV4dCk7CisgICAgICBpZiAodGhpcy5jb250ZXh0WzBdID09IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBuYXRpdmUgYnJvdGxpIGRlY29kZXIiKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBwdXNoKGludCBsZW5ndGgpIHsKKyAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm5lZ2F0aXZlIGJsb2NrIGxlbmd0aCIpOworICAgICAgfQorICAgICAgaWYgKGNvbnRleHRbMF0gPT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJicm90bGkgZGVjb2RlciBpcyBhbHJlYWR5IGRlc3Ryb3llZCIpOworICAgICAgfQorICAgICAgaWYgKGxhc3RTdGF0dXMgIT0gU3RhdHVzLk5FRURTX01PUkVfSU5QVVQgJiYgbGFzdFN0YXR1cyAhPSBTdGF0dXMuT0spIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigicHVzaGluZyBpbnB1dCB0byBkZWNvZGVyIGluICIgKyBsYXN0U3RhdHVzICsgIiBzdGF0ZSIpOworICAgICAgfQorICAgICAgaWYgKGxhc3RTdGF0dXMgPT0gU3RhdHVzLk9LICYmIGxlbmd0aCAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oInB1c2hpbmcgaW5wdXQgdG8gZGVjb2RlciBpbiBPSyBzdGF0ZSIpOworICAgICAgfQorICAgICAgZnJlc2ggPSBmYWxzZTsKKyAgICAgIG5hdGl2ZVB1c2goY29udGV4dCwgbGVuZ3RoKTsKKyAgICAgIHBhcnNlU3RhdHVzKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHBhcnNlU3RhdHVzKCkgeworICAgICAgbG9uZyBzdGF0dXMgPSBjb250ZXh0WzFdOworICAgICAgaWYgKHN0YXR1cyA9PSAxKSB7CisgICAgICAgIGxhc3RTdGF0dXMgPSBTdGF0dXMuRE9ORTsKKyAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IDIpIHsKKyAgICAgICAgbGFzdFN0YXR1cyA9IFN0YXR1cy5ORUVEU19NT1JFX0lOUFVUOworICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gMykgeworICAgICAgICBsYXN0U3RhdHVzID0gU3RhdHVzLk5FRURTX01PUkVfT1VUUFVUOworICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gNCkgeworICAgICAgICBsYXN0U3RhdHVzID0gU3RhdHVzLk9LOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbGFzdFN0YXR1cyA9IFN0YXR1cy5FUlJPUjsKKyAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzIGdldFN0YXR1cygpIHsKKyAgICAgIHJldHVybiBsYXN0U3RhdHVzOworICAgIH0KKworICAgIHB1YmxpYyBCeXRlQnVmZmVyIGdldElucHV0QnVmZmVyKCkgeworICAgICAgcmV0dXJuIGlucHV0QnVmZmVyOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc091dHB1dCgpIHsKKyAgICAgIHJldHVybiBjb250ZXh0WzJdICE9IDA7CisgICAgfQorCisgICAgcHVibGljIEJ5dGVCdWZmZXIgcHVsbCgpIHsKKyAgICAgIGlmIChjb250ZXh0WzBdID09IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiYnJvdGxpIGRlY29kZXIgaXMgYWxyZWFkeSBkZXN0cm95ZWQiKTsKKyAgICAgIH0KKyAgICAgIGlmIChsYXN0U3RhdHVzICE9IFN0YXR1cy5ORUVEU19NT1JFX09VVFBVVCAmJiAhaGFzT3V0cHV0KCkpIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigicHVsbGluZyBvdXRwdXQgZnJvbSBkZWNvZGVyIGluICIgKyBsYXN0U3RhdHVzICsgIiBzdGF0ZSIpOworICAgICAgfQorICAgICAgZnJlc2ggPSBmYWxzZTsKKyAgICAgIEJ5dGVCdWZmZXIgcmVzdWx0ID0gbmF0aXZlUHVsbChjb250ZXh0KTsKKyAgICAgIHBhcnNlU3RhdHVzKCk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbGVhc2VzIG5hdGl2ZSByZXNvdXJjZXMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZGVzdHJveSgpIHsKKyAgICAgIGlmIChjb250ZXh0WzBdID09IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiYnJvdGxpIGRlY29kZXIgaXMgYWxyZWFkeSBkZXN0cm95ZWQiKTsKKyAgICAgIH0KKyAgICAgIG5hdGl2ZURlc3Ryb3koY29udGV4dCk7CisgICAgICBjb250ZXh0WzBdID0gMDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHRocm93cyBUaHJvd2FibGUgeworICAgICAgaWYgKGNvbnRleHRbMF0gIT0gMCkgeworICAgICAgICAvKiBUT0RPOiBsb2cgcmVzb3VyY2UgbGVhaz8gKi8KKyAgICAgICAgZGVzdHJveSgpOworICAgICAgfQorICAgICAgc3VwZXIuZmluYWxpemUoKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvRGVjb2RlclRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvRGVjb2RlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGI3N2QzCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2RlYy9EZWNvZGVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmRlYzsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworaW1wb3J0IG9yZy5icm90bGkuaW50ZWdyYXRpb24uQnJvdGxpSm5pVGVzdEJhc2U7CitpbXBvcnQgb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5CdW5kbGVIZWxwZXI7CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLkFsbFRlc3RzOworCisvKiogVGVzdHMgZm9yIHtAbGluayBvcmcuYnJvdGxpLndyYXBwZXIuZGVjLkRlY29kZXJ9LiAqLworQFJ1bldpdGgoQWxsVGVzdHMuY2xhc3MpCitwdWJsaWMgY2xhc3MgRGVjb2RlclRlc3QgZXh0ZW5kcyBCcm90bGlKbmlUZXN0QmFzZSB7CisKKyAgc3RhdGljIElucHV0U3RyZWFtIGdldEJ1bmRsZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG5ldyBGaWxlSW5wdXRTdHJlYW0oU3lzdGVtLmdldFByb3BlcnR5KCJURVNUX0JVTkRMRSIpKTsKKyAgfQorCisgIC8qKiBDcmVhdGVzIGEgdGVzdCBzdWl0ZS4gKi8KKyAgcHVibGljIHN0YXRpYyBUZXN0U3VpdGUgc3VpdGUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKKyAgICBJbnB1dFN0cmVhbSBidW5kbGUgPSBnZXRCdW5kbGUoKTsKKyAgICB0cnkgeworICAgICAgTGlzdDxTdHJpbmc+IGVudHJpZXMgPSBCdW5kbGVIZWxwZXIubGlzdEVudHJpZXMoYnVuZGxlKTsKKyAgICAgIGZvciAoU3RyaW5nIGVudHJ5IDogZW50cmllcykgeworICAgICAgICBzdWl0ZS5hZGRUZXN0KG5ldyBEZWNvZGVyVGVzdENhc2UoZW50cnkpKTsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIHJldHVybiBzdWl0ZTsKKyAgfQorCisgIC8qKiBUZXN0IGNhc2Ugd2l0aCBhIHVuaXF1ZSBuYW1lLiAqLworICBzdGF0aWMgY2xhc3MgRGVjb2RlclRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgeworICAgIGZpbmFsIFN0cmluZyBlbnRyeU5hbWU7CisgICAgRGVjb2RlclRlc3RDYXNlKFN0cmluZyBlbnRyeU5hbWUpIHsKKyAgICAgIHN1cGVyKCJEZWNvZGVyVGVzdC4iICsgZW50cnlOYW1lKTsKKyAgICAgIHRoaXMuZW50cnlOYW1lID0gZW50cnlOYW1lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgIERlY29kZXJUZXN0LnJ1bihlbnRyeU5hbWUpOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgcnVuKFN0cmluZyBlbnRyeU5hbWUpIHRocm93cyBUaHJvd2FibGUgeworICAgIElucHV0U3RyZWFtIGJ1bmRsZSA9IGdldEJ1bmRsZSgpOworICAgIGJ5dGVbXSBjb21wcmVzc2VkOworICAgIHRyeSB7CisgICAgICBjb21wcmVzc2VkID0gQnVuZGxlSGVscGVyLnJlYWRFbnRyeShidW5kbGUsIGVudHJ5TmFtZSk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGJ1bmRsZS5jbG9zZSgpOworICAgIH0KKyAgICBpZiAoY29tcHJlc3NlZCA9PSBudWxsKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ2FuJ3QgcmVhZCBidW5kbGUgZW50cnk6ICIgKyBlbnRyeU5hbWUpOworICAgIH0KKworICAgIGJ5dGVbXSBkZWNvbXByZXNzZWQgPSBEZWNvZGVyLmRlY29tcHJlc3MoY29tcHJlc3NlZCk7CisKKyAgICBsb25nIGNyYyA9IEJ1bmRsZUhlbHBlci5maW5nZXJwcmludFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oZGVjb21wcmVzc2VkKSk7CisgICAgYXNzZXJ0RXF1YWxzKEJ1bmRsZUhlbHBlci5nZXRFeHBlY3RlZEZpbmdlcnByaW50KGVudHJ5TmFtZSksIGNyYyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvRWFnZXJTdHJlYW1UZXN0LmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL0VhZ2VyU3RyZWFtVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxOWY2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL0VhZ2VyU3RyZWFtVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzUgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmRlYzsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworaW1wb3J0IG9yZy5icm90bGkuaW50ZWdyYXRpb24uQnJvdGxpSm5pVGVzdEJhc2U7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKiBUZXN0cyBmb3Ige0BsaW5rIG9yZy5icm90bGkud3JhcHBlci5kZWMuQnJvdGxpSW5wdXRTdHJlYW19LiAqLworQFJ1bldpdGgoSlVuaXQ0LmNsYXNzKQorcHVibGljIGNsYXNzIEVhZ2VyU3RyZWFtVGVzdCBleHRlbmRzIEJyb3RsaUpuaVRlc3RCYXNlIHsKKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0RWFnZXJSZWFkaW5nKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIGxvZyA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CisgICAgZmluYWwgYnl0ZVtdIGRhdGEgPSB7MCwgMCwgMTYsIDQyLCAzfTsKKyAgICBJbnB1dFN0cmVhbSBzb3VyY2UgPSBuZXcgSW5wdXRTdHJlYW0oKSB7CisgICAgICBpbnQgaW5kZXg7CisKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIGludCByZWFkKCkgeworICAgICAgICBpZiAoaW5kZXggPCBkYXRhLmxlbmd0aCkgeworICAgICAgICAgIGxvZy5hcHBlbmQoIjwiKS5hcHBlbmQoaW5kZXgpOworICAgICAgICAgIHJldHVybiBkYXRhW2luZGV4KytdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGxvZy5hcHBlbmQoIjwjIik7CisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIGludCByZWFkKGJ5dGVbXSBiKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gcmVhZChiLCAwLCBiLmxlbmd0aCk7CisgICAgICB9CisKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIGludCByZWFkKGJ5dGVbXSBiLCBpbnQgb2ZmLCBpbnQgbGVuKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAobGVuIDwgMSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGludCBkID0gcmVhZCgpOworICAgICAgICBpZiAoZCA9PSAtMSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJbb2ZmXSA9IChieXRlKSBkOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICB9OworICAgIEJyb3RsaUlucHV0U3RyZWFtIHJlYWRlciA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShzb3VyY2UpOworICAgIHJlYWRlci5lbmFibGVFYWdlck91dHB1dCgpOworICAgIGludCBjb3VudCA9IDA7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGxvZy5hcHBlbmQoIl4iKS5hcHBlbmQoY291bnQpOworICAgICAgaW50IGIgPSByZWFkZXIucmVhZCgpOworICAgICAgaWYgKGIgPT0gLTEpIHsKKyAgICAgICAgbG9nLmFwcGVuZCgiPiMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9IGVsc2UgeworICAgICAgICBsb2cuYXBwZW5kKCI+IikuYXBwZW5kKGNvdW50KyspOworICAgICAgfQorICAgIH0KKyAgICAvLyBMYXp5IGxvZzogIF4wPDA8MTwyPDM8ND4wXjE+IworICAgIGFzc2VydEVxdWFscygiXjA8MDwxPDI8Mz4wXjE8ND4jIiwgbG9nLnRvU3RyaW5nKCkpOworICB9CisKK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9kZWMvZGVjb2Rlcl9qbmkuY2MgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL2RlY29kZXJfam5pLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OGExMGIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjL2RlY29kZXJfam5pLmNjCkBAIC0wLDAgKzEsMjAyIEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCisjaW5jbHVkZSA8am5pLmg+CisKKyNpbmNsdWRlIDxuZXc+CisKKyNpbmNsdWRlIDxicm90bGkvZGVjb2RlLmg+CisKK25hbWVzcGFjZSB7CisvKiBBIHN0cnVjdHVyZSB1c2VkIHRvIHBlcnNpc3QgdGhlIGRlY29kZXIncyBzdGF0ZSBpbiBiZXR3ZWVuIGNhbGxzLiAqLwordHlwZWRlZiBzdHJ1Y3QgRGVjb2RlckhhbmRsZSB7CisgIEJyb3RsaURlY29kZXJTdGF0ZSogc3RhdGU7CisKKyAgdWludDhfdCogaW5wdXRfc3RhcnQ7CisgIHNpemVfdCBpbnB1dF9vZmZzZXQ7CisgIHNpemVfdCBpbnB1dF9sZW5ndGg7Cit9IERlY29kZXJIYW5kbGU7CisKKy8qIE9idGFpbiBoYW5kbGUgZnJvbSBvcGFxdWUgcG9pbnRlci4gKi8KK0RlY29kZXJIYW5kbGUqIGdldEhhbmRsZSh2b2lkKiBvcGFxdWUpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PERlY29kZXJIYW5kbGUqPihvcGFxdWUpOworfQorCit9ICAvKiBuYW1lc3BhY2UgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgRGVjb2Rlci4KKyAqCisgKiBDb29raWUgdG8gYWRkcmVzcyBjcmVhdGVkIGRlY29kZXIgaXMgc3RvcmVkIGluIG91dF9jb29raWUuIEluIGNhc2Ugb2YgZmFpbHVyZQorICogY29va2llIGlzIDAuCisgKgorICogQHBhcmFtIGN0eCB7b3V0X2Nvb2tpZSwgaW5fZGlyZWN0QnVmZmVyU2l6ZX0gdHVwbGUKKyAqIEByZXR1cm5zIGRpcmVjdCBCeXRlQnVmZmVyIGlmIGRpcmVjdEJ1ZmZlclNpemUgaXMgbm90IDA7IG90aGVyd2lzZSBudWxsCisgKi8KK0pOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwKK0phdmFfb3JnX2Jyb3RsaV93cmFwcGVyX2RlY19EZWNvZGVySk5JX25hdGl2ZUNyZWF0ZSgKKyAgICBKTklFbnYqIGVudiwgam9iamVjdCAvKmpvYmoqLywgamxvbmdBcnJheSBjdHgpIHsKKyAgYm9vbCBvayA9IHRydWU7CisgIERlY29kZXJIYW5kbGUqIGhhbmRsZSA9IG51bGxwdHI7CisgIGpsb25nIGNvbnRleHRbM107CisgIGVudi0+R2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgMywgY29udGV4dCk7CisgIHNpemVfdCBpbnB1dF9zaXplID0gY29udGV4dFsxXTsKKyAgY29udGV4dFswXSA9IDA7CisgIGNvbnRleHRbMl0gPSAwOworICBoYW5kbGUgPSBuZXcgKHN0ZDo6bm90aHJvdykgRGVjb2RlckhhbmRsZSgpOworICBvayA9ICEhaGFuZGxlOworCisgIGlmIChvaykgeworICAgIGhhbmRsZS0+aW5wdXRfb2Zmc2V0ID0gMDsKKyAgICBoYW5kbGUtPmlucHV0X2xlbmd0aCA9IDA7CisgICAgaGFuZGxlLT5pbnB1dF9zdGFydCA9IG51bGxwdHI7CisKKyAgICBpZiAoaW5wdXRfc2l6ZSA9PSAwKSB7CisgICAgICBvayA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICBoYW5kbGUtPmlucHV0X3N0YXJ0ID0gbmV3IChzdGQ6Om5vdGhyb3cpIHVpbnQ4X3RbaW5wdXRfc2l6ZV07CisgICAgICBvayA9ICEhaGFuZGxlLT5pbnB1dF9zdGFydDsKKyAgICB9CisgIH0KKworICBpZiAob2spIHsKKyAgICBoYW5kbGUtPnN0YXRlID0gQnJvdGxpRGVjb2RlckNyZWF0ZUluc3RhbmNlKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIG9rID0gISFoYW5kbGUtPnN0YXRlOworICB9CisKKyAgaWYgKG9rKSB7CisgICAgLyogVE9ETzogZnV0dXJlIHZlcnNpb25zIChlLmcuIHdoZW4gMTI4LWJpdCBhcmNoaXRlY3R1cmUgY29tZXMpCisgICAgICAgICAgICAgICAgICAgICBtaWdodCByZXF1aXJlIHRocmVhZC1zYWZlIGNvb2tpZTwtPmhhbmRsZSBtYXBwaW5nLiAqLworICAgIGNvbnRleHRbMF0gPSByZWludGVycHJldF9jYXN0PGpsb25nPihoYW5kbGUpOworICB9IGVsc2UgaWYgKCEhaGFuZGxlKSB7CisgICAgaWYgKCEhaGFuZGxlLT5pbnB1dF9zdGFydCkgZGVsZXRlW10gaGFuZGxlLT5pbnB1dF9zdGFydDsKKyAgICBkZWxldGUgaGFuZGxlOworICB9CisKKyAgZW52LT5TZXRMb25nQXJyYXlSZWdpb24oY3R4LCAwLCAzLCBjb250ZXh0KTsKKworICBpZiAoIW9rKSB7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICByZXR1cm4gZW52LT5OZXdEaXJlY3RCeXRlQnVmZmVyKGhhbmRsZS0+aW5wdXRfc3RhcnQsIGlucHV0X3NpemUpOworfQorCisvKioKKyAqIFB1c2ggZGF0YSB0byBkZWNvZGVyLgorICoKKyAqIHN0YXR1cyBjb2RlczoKKyAqICAtIDAgZXJyb3IgaGFwcGVuZWQKKyAqICAtIDEgc3RyZWFtIGlzIGZpbmlzaGVkLCBubyBtb3JlIGlucHV0IC8gb3V0cHV0IGV4cGVjdGVkCisgKiAgLSAyIG5lZWRzIG1vcmUgaW5wdXQgdG8gcHJvY2VzcyBmdXJ0aGVyCisgKiAgLSAzIG5lZWRzIG1vcmUgb3V0cHV0IHRvIHByb2Nlc3MgZnVydGhlcgorICogIC0gNCBvaywgY2FuIHByb2NlZWQgZnVydGhlciB3aXRob3V0IGFkZGl0aW9uYWwgaW5wdXQKKyAqCisgKiBAcGFyYW0gY3R4IHtpbl9jb29raWUsIG91dF9zdGF0dXN9IHR1cGxlCisgKiBAcGFyYW0gaW5wdXRfbGVuZ3RoIG51bWJlciBvZiBieXRlcyBwcm92aWRlZCBpbiBpbnB1dCBvciBkaXJlY3QgaW5wdXQ7CisgKiAgICAgICAgICAgICAgICAgICAgIDAgdG8gcHJvY2VzcyBmdXJ0aGVyIHByZXZpb3VzIGlucHV0CisgKi8KK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwKK0phdmFfb3JnX2Jyb3RsaV93cmFwcGVyX2RlY19EZWNvZGVySk5JX25hdGl2ZVB1c2goCisgICAgSk5JRW52KiBlbnYsIGpvYmplY3QgLypqb2JqKi8sIGpsb25nQXJyYXkgY3R4LCBqaW50IGlucHV0X2xlbmd0aCkgeworICBqbG9uZyBjb250ZXh0WzNdOworICBlbnYtPkdldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDMsIGNvbnRleHQpOworICBEZWNvZGVySGFuZGxlKiBoYW5kbGUgPSBnZXRIYW5kbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dFswXSkpOworICBjb250ZXh0WzFdID0gMDsgIC8qIEVSUk9SICovCisgIGNvbnRleHRbMl0gPSAwOworICBlbnYtPlNldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDMsIGNvbnRleHQpOworCisgIGlmIChpbnB1dF9sZW5ndGggIT0gMCkgeworICAgIC8qIFN0aWxsIGhhdmUgdW5jb25zdW1lZCBkYXRhLiBXb3JrZmxvdyBpcyBicm9rZW4uICovCisgICAgaWYgKGhhbmRsZS0+aW5wdXRfb2Zmc2V0IDwgaGFuZGxlLT5pbnB1dF9sZW5ndGgpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaGFuZGxlLT5pbnB1dF9vZmZzZXQgPSAwOworICAgIGhhbmRsZS0+aW5wdXRfbGVuZ3RoID0gaW5wdXRfbGVuZ3RoOworICB9CisKKyAgLyogQWN0dWFsIGRlY29tcHJlc3Npb24uICovCisgIGNvbnN0IHVpbnQ4X3QqIGluID0gaGFuZGxlLT5pbnB1dF9zdGFydCArIGhhbmRsZS0+aW5wdXRfb2Zmc2V0OworICBzaXplX3QgaW5fc2l6ZSA9IGhhbmRsZS0+aW5wdXRfbGVuZ3RoIC0gaGFuZGxlLT5pbnB1dF9vZmZzZXQ7CisgIHNpemVfdCBvdXRfc2l6ZSA9IDA7CisgIEJyb3RsaURlY29kZXJSZXN1bHQgc3RhdHVzID0gQnJvdGxpRGVjb2RlckRlY29tcHJlc3NTdHJlYW0oCisgICAgICBoYW5kbGUtPnN0YXRlLCAmaW5fc2l6ZSwgJmluLCAmb3V0X3NpemUsIG51bGxwdHIsIG51bGxwdHIpOworICBoYW5kbGUtPmlucHV0X29mZnNldCA9IGhhbmRsZS0+aW5wdXRfbGVuZ3RoIC0gaW5fc2l6ZTsKKyAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICBjYXNlIEJST1RMSV9ERUNPREVSX1JFU1VMVF9TVUNDRVNTOgorICAgICAgLyogQnl0ZXMgYWZ0ZXIgc3RyZWFtIGVuZCBhcmUgbm90IGFsbG93ZWQuICovCisgICAgICBjb250ZXh0WzFdID0gKGhhbmRsZS0+aW5wdXRfb2Zmc2V0ID09IGhhbmRsZS0+aW5wdXRfbGVuZ3RoKSA/IDEgOiAwOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEJST1RMSV9ERUNPREVSX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUOgorICAgICAgY29udGV4dFsxXSA9IDI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgQlJPVExJX0RFQ09ERVJfUkVTVUxUX05FRURTX01PUkVfT1VUUFVUOgorICAgICAgY29udGV4dFsxXSA9IDM7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBjb250ZXh0WzFdID0gMDsKKyAgICAgIGJyZWFrOworICB9CisgIGNvbnRleHRbMl0gPSBCcm90bGlEZWNvZGVySGFzTW9yZU91dHB1dChoYW5kbGUtPnN0YXRlKSA/IDEgOiAwOworICBlbnYtPlNldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDMsIGNvbnRleHQpOworfQorCisvKioKKyAqIFB1bGwgZGVjb21wcmVzc2VkIGRhdGEgZnJvbSBkZWNvZGVyLgorICoKKyAqIEBwYXJhbSBjdHgge2luX2Nvb2tpZSwgb3V0X3N0YXR1c30gdHVwbGUKKyAqIEByZXR1cm5zIGRpcmVjdCBCeXRlQnVmZmVyOyBhbGwgdGhlIHByb2R1Y2VkIGRhdGEgTVVTVCBiZSBjb25zdW1lZCBiZWZvcmUKKyAqICAgICAgICAgIGFueSBmdXJ0aGVyIGludm9jYXRpb247IG51bGwgaW4gY2FzZSBvZiBlcnJvcgorICovCitKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCitKYXZhX29yZ19icm90bGlfd3JhcHBlcl9kZWNfRGVjb2RlckpOSV9uYXRpdmVQdWxsKAorICAgIEpOSUVudiogZW52LCBqb2JqZWN0IC8qam9iaiovLCBqbG9uZ0FycmF5IGN0eCkgeworICBqbG9uZyBjb250ZXh0WzNdOworICBlbnYtPkdldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDMsIGNvbnRleHQpOworICBEZWNvZGVySGFuZGxlKiBoYW5kbGUgPSBnZXRIYW5kbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dFswXSkpOworICBzaXplX3QgZGF0YV9sZW5ndGggPSAwOworICBjb25zdCB1aW50OF90KiBkYXRhID0gQnJvdGxpRGVjb2RlclRha2VPdXRwdXQoaGFuZGxlLT5zdGF0ZSwgJmRhdGFfbGVuZ3RoKTsKKyAgYm9vbCBoYXNNb3JlT3V0cHV0ID0gISFCcm90bGlEZWNvZGVySGFzTW9yZU91dHB1dChoYW5kbGUtPnN0YXRlKTsKKyAgaWYgKGhhc01vcmVPdXRwdXQpIHsKKyAgICBjb250ZXh0WzFdID0gMzsKKyAgfSBlbHNlIGlmIChCcm90bGlEZWNvZGVySXNGaW5pc2hlZChoYW5kbGUtPnN0YXRlKSkgeworICAgIC8qIEJ5dGVzIGFmdGVyIHN0cmVhbSBlbmQgYXJlIG5vdCBhbGxvd2VkLiAqLworICAgIGNvbnRleHRbMV0gPSAoaGFuZGxlLT5pbnB1dF9vZmZzZXQgPT0gaGFuZGxlLT5pbnB1dF9sZW5ndGgpID8gMSA6IDA7CisgIH0gZWxzZSB7CisgICAgLyogQ2FuIHByb2NlZWQsIG9yIG1vcmUgZGF0YSBpcyByZXF1aXJlZD8gKi8KKyAgICBjb250ZXh0WzFdID0gKGhhbmRsZS0+aW5wdXRfb2Zmc2V0ID09IGhhbmRsZS0+aW5wdXRfbGVuZ3RoKSA/IDIgOiA0OworICB9CisgIGNvbnRleHRbMl0gPSBoYXNNb3JlT3V0cHV0ID8gMSA6IDA7CisgIGVudi0+U2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgMywgY29udGV4dCk7CisgIHJldHVybiBlbnYtPk5ld0RpcmVjdEJ5dGVCdWZmZXIoY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YSksIGRhdGFfbGVuZ3RoKTsKK30KKworLyoqCisgKiBSZWxlYXNlcyBhbGwgdXNlZCByZXNvdXJjZXMuCisgKgorICogQHBhcmFtIGN0eCB7aW5fY29va2llfSB0dXBsZQorICovCitKTklFWFBPUlQgdm9pZCBKTklDQUxMCitKYXZhX29yZ19icm90bGlfd3JhcHBlcl9kZWNfRGVjb2RlckpOSV9uYXRpdmVEZXN0cm95KAorICAgIEpOSUVudiogZW52LCBqb2JqZWN0IC8qam9iaiovLCBqbG9uZ0FycmF5IGN0eCkgeworICBqbG9uZyBjb250ZXh0WzNdOworICBlbnYtPkdldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDMsIGNvbnRleHQpOworICBEZWNvZGVySGFuZGxlKiBoYW5kbGUgPSBnZXRIYW5kbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dFswXSkpOworICBCcm90bGlEZWNvZGVyRGVzdHJveUluc3RhbmNlKGhhbmRsZS0+c3RhdGUpOworICBkZWxldGVbXSBoYW5kbGUtPmlucHV0X3N0YXJ0OworICBkZWxldGUgaGFuZGxlOworfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9CVUlMRCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvQlVJTEQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIxNTRkMgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvQlVJTEQKQEAgLTAsMCArMSw4OCBAQAorcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgTUlUCisKK2ZpbGVncm91cCgKKyAgICBuYW1lID0gImpuaV9zcmMiLAorICAgIHNyY3MgPSBbImVuY29kZXJfam5pLmNjIl0sCispCisKK2ZpbGVncm91cCgKKyAgICBuYW1lID0gImJyb3RsaV9qbmkiLAorICAgIHNyY3MgPSBbIi8vOmJyb3RsaV9qbmkuZGxsIl0sCispCisKK2phdmFfbGlicmFyeSgKKyAgICBuYW1lID0gImVuYyIsCisgICAgc3JjcyA9IGdsb2IoCisgICAgICAgIFsiKi5qYXZhIl0sCisgICAgICAgIGV4Y2x1ZGUgPSBbIipUZXN0Ki5qYXZhIl0sCisgICAgKSwKKyAgICByZXNvdXJjZV9qYXJzID0gWyIvLzpsaWNlbnNlIl0sCispCisKK2phdmFfbGlicmFyeSgKKyAgICBuYW1lID0gInRlc3RfbGliIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IGdsb2IoWyIqVGVzdCouamF2YSJdKSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmVuYyIsCisgICAgICAgICIvL29yZy9icm90bGkvaW50ZWdyYXRpb246YnJvdGxpX2puaV90ZXN0X2Jhc2UiLAorICAgICAgICAiLy9vcmcvYnJvdGxpL2ludGVncmF0aW9uOmJ1bmRsZV9oZWxwZXIiLAorICAgICAgICAiLy9vcmcvYnJvdGxpL3dyYXBwZXIvZGVjIiwKKyAgICAgICAgIkBtYXZlbi8vOmp1bml0X2p1bml0IiwKKyAgICBdLAorKQorCitmaWxlZ3JvdXAoCisgICAgbmFtZSA9ICJ0ZXN0X2J1bmRsZSIsCisgICAgc3JjcyA9IFsiLy9vcmcvYnJvdGxpL2ludGVncmF0aW9uOnRlc3RfY29ycHVzIl0sCispCisKK2phdmFfdGVzdCgKKyAgICBuYW1lID0gIkJyb3RsaUVuY29kZXJDaGFubmVsVGVzdCIsCisgICAgc2l6ZSA9ICJsYXJnZSIsCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpicm90bGlfam5pIiwgICMgQmF6ZWwgSk5JIHdvcmthcm91bmQKKyAgICAgICAgIjp0ZXN0X2J1bmRsZSIsCisgICAgXSwKKyAgICBqdm1fZmxhZ3MgPSBbCisgICAgICAgICItREJST1RMSV9KTklfTElCUkFSWT0kKGxvY2F0aW9uIDpicm90bGlfam5pKSIsCisgICAgICAgICItRFRFU1RfQlVORExFPSQobG9jYXRpb24gOnRlc3RfYnVuZGxlKSIsCisgICAgXSwKKyAgICBzaGFyZF9jb3VudCA9IDE1LAorICAgIHRlc3RfY2xhc3MgPSAib3JnLmJyb3RsaS53cmFwcGVyLmVuYy5Ccm90bGlFbmNvZGVyQ2hhbm5lbFRlc3QiLAorICAgIHJ1bnRpbWVfZGVwcyA9IFsiOnRlc3RfbGliIl0sCispCisKK2phdmFfdGVzdCgKKyAgICBuYW1lID0gIkJyb3RsaU91dHB1dFN0cmVhbVRlc3QiLAorICAgIHNpemUgPSAibGFyZ2UiLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6YnJvdGxpX2puaSIsICAjIEJhemVsIEpOSSB3b3JrYXJvdW5kCisgICAgICAgICI6dGVzdF9idW5kbGUiLAorICAgIF0sCisgICAganZtX2ZsYWdzID0gWworICAgICAgICAiLURCUk9UTElfSk5JX0xJQlJBUlk9JChsb2NhdGlvbiA6YnJvdGxpX2puaSkiLAorICAgICAgICAiLURURVNUX0JVTkRMRT0kKGxvY2F0aW9uIDp0ZXN0X2J1bmRsZSkiLAorICAgIF0sCisgICAgc2hhcmRfY291bnQgPSAxNSwKKyAgICB0ZXN0X2NsYXNzID0gIm9yZy5icm90bGkud3JhcHBlci5lbmMuQnJvdGxpT3V0cHV0U3RyZWFtVGVzdCIsCisgICAgcnVudGltZV9kZXBzID0gWyI6dGVzdF9saWIiXSwKKykKKworamF2YV90ZXN0KAorICAgIG5hbWUgPSAiRW5jb2RlclRlc3QiLAorICAgIHNpemUgPSAibGFyZ2UiLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6YnJvdGxpX2puaSIsICAjIEJhemVsIEpOSSB3b3JrYXJvdW5kCisgICAgICAgICI6dGVzdF9idW5kbGUiLAorICAgIF0sCisgICAganZtX2ZsYWdzID0gWworICAgICAgICAiLURCUk9UTElfSk5JX0xJQlJBUlk9JChsb2NhdGlvbiA6YnJvdGxpX2puaSkiLAorICAgICAgICAiLURURVNUX0JVTkRMRT0kKGxvY2F0aW9uIDp0ZXN0X2J1bmRsZSkiLAorICAgIF0sCisgICAgc2hhcmRfY291bnQgPSAxNSwKKyAgICB0ZXN0X2NsYXNzID0gIm9yZy5icm90bGkud3JhcHBlci5lbmMuRW5jb2RlclRlc3QiLAorICAgIHJ1bnRpbWVfZGVwcyA9IFsiOnRlc3RfbGliIl0sCispCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0Jyb3RsaUVuY29kZXJDaGFubmVsLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0Jyb3RsaUVuY29kZXJDaGFubmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3YzM1NgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvQnJvdGxpRW5jb2RlckNoYW5uZWwuamF2YQpAQCAtMCwwICsxLDc3IEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkud3JhcHBlci5lbmM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLkJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEubmlvLmNoYW5uZWxzLkNsb3NlZENoYW5uZWxFeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uY2hhbm5lbHMuV3JpdGFibGVCeXRlQ2hhbm5lbDsKKworLyoqCisgKiBXcml0YWJsZUJ5dGVDaGFubmVsIHRoYXQgd3JhcHMgbmF0aXZlIGJyb3RsaSBlbmNvZGVyLgorICovCitwdWJsaWMgY2xhc3MgQnJvdGxpRW5jb2RlckNoYW5uZWwgZXh0ZW5kcyBFbmNvZGVyIGltcGxlbWVudHMgV3JpdGFibGVCeXRlQ2hhbm5lbCB7CisgIC8qKiBUaGUgZGVmYXVsdCBpbnRlcm5hbCBidWZmZXIgc2l6ZSB1c2VkIGJ5IHRoZSBkZWNvZGVyLiAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9CVUZGRVJfU0laRSA9IDE2Mzg0OworCisgIHByaXZhdGUgZmluYWwgT2JqZWN0IG11dGV4ID0gbmV3IE9iamVjdCgpOworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgQnJvdGxpRW5jb2RlckNoYW5uZWwuCisgICAqCisgICAqIEBwYXJhbSBkZXN0aW5hdGlvbiB1bmRlcmx5aW5nIGRlc3RpbmF0aW9uCisgICAqIEBwYXJhbSBwYXJhbXMgZW5jb2Rpbmcgc2V0dGluZ3MKKyAgICogQHBhcmFtIGJ1ZmZlclNpemUgaW50ZXJtZWRpYXRlIGJ1ZmZlciBzaXplCisgICAqLworICBwdWJsaWMgQnJvdGxpRW5jb2RlckNoYW5uZWwoV3JpdGFibGVCeXRlQ2hhbm5lbCBkZXN0aW5hdGlvbiwgRW5jb2Rlci5QYXJhbWV0ZXJzIHBhcmFtcywKKyAgICAgIGludCBidWZmZXJTaXplKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHN1cGVyKGRlc3RpbmF0aW9uLCBwYXJhbXMsIGJ1ZmZlclNpemUpOworICB9CisKKyAgcHVibGljIEJyb3RsaUVuY29kZXJDaGFubmVsKFdyaXRhYmxlQnl0ZUNoYW5uZWwgZGVzdGluYXRpb24sIEVuY29kZXIuUGFyYW1ldGVycyBwYXJhbXMpCisgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHRoaXMoZGVzdGluYXRpb24sIHBhcmFtcywgREVGQVVMVF9CVUZGRVJfU0laRSk7CisgIH0KKworICBwdWJsaWMgQnJvdGxpRW5jb2RlckNoYW5uZWwoV3JpdGFibGVCeXRlQ2hhbm5lbCBkZXN0aW5hdGlvbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB0aGlzKGRlc3RpbmF0aW9uLCBuZXcgRW5jb2Rlci5QYXJhbWV0ZXJzKCkpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBib29sZWFuIGlzT3BlbigpIHsKKyAgICBzeW5jaHJvbml6ZWQgKG11dGV4KSB7CisgICAgICByZXR1cm4gIWNsb3NlZDsKKyAgICB9CisgIH0KKworICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHN5bmNocm9uaXplZCAobXV0ZXgpIHsKKyAgICAgIHN1cGVyLmNsb3NlKCk7CisgICAgfQorICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBpbnQgd3JpdGUoQnl0ZUJ1ZmZlciBzcmMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgc3luY2hyb25pemVkIChtdXRleCkgeworICAgICAgaWYgKGNsb3NlZCkgeworICAgICAgICB0aHJvdyBuZXcgQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbigpOworICAgICAgfQorICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICB3aGlsZSAoc3JjLmhhc1JlbWFpbmluZygpICYmIGVuY29kZShFbmNvZGVySk5JLk9wZXJhdGlvbi5QUk9DRVNTKSkgeworICAgICAgICBpbnQgbGltaXQgPSBNYXRoLm1pbihzcmMucmVtYWluaW5nKCksIGlucHV0QnVmZmVyLnJlbWFpbmluZygpKTsKKyAgICAgICAgQnl0ZUJ1ZmZlciBzbGljZSA9IHNyYy5zbGljZSgpOworICAgICAgICAoKEJ1ZmZlcikgc2xpY2UpLmxpbWl0KGxpbWl0KTsKKyAgICAgICAgaW5wdXRCdWZmZXIucHV0KHNsaWNlKTsKKyAgICAgICAgcmVzdWx0ICs9IGxpbWl0OworICAgICAgICAoKEJ1ZmZlcikgc3JjKS5wb3NpdGlvbihzcmMucG9zaXRpb24oKSArIGxpbWl0KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0Jyb3RsaUVuY29kZXJDaGFubmVsVGVzdC5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9Ccm90bGlFbmNvZGVyQ2hhbm5lbFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWNjNmRhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9Ccm90bGlFbmNvZGVyQ2hhbm5lbFRlc3QuamF2YQpAQCAtMCwwICsxLDExOCBAQAorcGFja2FnZSBvcmcuYnJvdGxpLndyYXBwZXIuZW5jOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5Ccm90bGlKbmlUZXN0QmFzZTsKK2ltcG9ydCBvcmcuYnJvdGxpLmludGVncmF0aW9uLkJ1bmRsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYnJvdGxpLndyYXBwZXIuZGVjLkJyb3RsaUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEubmlvLkJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEubmlvLmNoYW5uZWxzLkNoYW5uZWxzOworaW1wb3J0IGphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWw7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLkFsbFRlc3RzOworCisvKiogVGVzdHMgZm9yIHtAbGluayBvcmcuYnJvdGxpLndyYXBwZXIuZW5jLkJyb3RsaUVuY29kZXJDaGFubmVsfS4gKi8KK0BSdW5XaXRoKEFsbFRlc3RzLmNsYXNzKQorcHVibGljIGNsYXNzIEJyb3RsaUVuY29kZXJDaGFubmVsVGVzdCBleHRlbmRzIEJyb3RsaUpuaVRlc3RCYXNlIHsKKworICBwcml2YXRlIGVudW0gVGVzdE1vZGUgeworICAgIFdSSVRFX0FMTCwKKyAgICBXUklURV9DSFVOS1MKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSFVOS19TSVpFID0gMjU2OworCisgIHN0YXRpYyBJbnB1dFN0cmVhbSBnZXRCdW5kbGUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHJldHVybiBuZXcgRmlsZUlucHV0U3RyZWFtKFN5c3RlbS5nZXRQcm9wZXJ0eSgiVEVTVF9CVU5ETEUiKSk7CisgIH0KKworICAvKiogQ3JlYXRlcyBhIHRlc3Qgc3VpdGUuICovCisgIHB1YmxpYyBzdGF0aWMgVGVzdFN1aXRlIHN1aXRlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7CisgICAgSW5wdXRTdHJlYW0gYnVuZGxlID0gZ2V0QnVuZGxlKCk7CisgICAgdHJ5IHsKKyAgICAgIExpc3Q8U3RyaW5nPiBlbnRyaWVzID0gQnVuZGxlSGVscGVyLmxpc3RFbnRyaWVzKGJ1bmRsZSk7CisgICAgICBmb3IgKFN0cmluZyBlbnRyeSA6IGVudHJpZXMpIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdChuZXcgQ2hhbm5sZVRlc3RDYXNlKGVudHJ5LCBUZXN0TW9kZS5XUklURV9BTEwpKTsKKyAgICAgICAgc3VpdGUuYWRkVGVzdChuZXcgQ2hhbm5sZVRlc3RDYXNlKGVudHJ5LCBUZXN0TW9kZS5XUklURV9DSFVOS1MpKTsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIHJldHVybiBzdWl0ZTsKKyAgfQorCisgIC8qKiBUZXN0IGNhc2Ugd2l0aCBhIHVuaXF1ZSBuYW1lLiAqLworICBzdGF0aWMgY2xhc3MgQ2hhbm5sZVRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgeworICAgIGZpbmFsIFN0cmluZyBlbnRyeU5hbWU7CisgICAgZmluYWwgVGVzdE1vZGUgbW9kZTsKKyAgICBDaGFubmxlVGVzdENhc2UoU3RyaW5nIGVudHJ5TmFtZSwgVGVzdE1vZGUgbW9kZSkgeworICAgICAgc3VwZXIoIkJyb3RsaUVuY29kZXJDaGFubmVsVGVzdC4iICsgZW50cnlOYW1lICsgIi4iICsgbW9kZS5uYW1lKCkpOworICAgICAgdGhpcy5lbnRyeU5hbWUgPSBlbnRyeU5hbWU7CisgICAgICB0aGlzLm1vZGUgPSBtb2RlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgIEJyb3RsaUVuY29kZXJDaGFubmVsVGVzdC5ydW4oZW50cnlOYW1lLCBtb2RlKTsKKyAgICB9CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIHJ1bihTdHJpbmcgZW50cnlOYW1lLCBUZXN0TW9kZSBtb2RlKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICBJbnB1dFN0cmVhbSBidW5kbGUgPSBnZXRCdW5kbGUoKTsKKyAgICBieXRlW10gb3JpZ2luYWw7CisgICAgdHJ5IHsKKyAgICAgIG9yaWdpbmFsID0gQnVuZGxlSGVscGVyLnJlYWRFbnRyeShidW5kbGUsIGVudHJ5TmFtZSk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGJ1bmRsZS5jbG9zZSgpOworICAgIH0KKyAgICBpZiAob3JpZ2luYWwgPT0gbnVsbCkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNhbid0IHJlYWQgYnVuZGxlIGVudHJ5OiAiICsgZW50cnlOYW1lKTsKKyAgICB9CisKKyAgICBpZiAoKG1vZGUgPT0gVGVzdE1vZGUuV1JJVEVfQ0hVTktTKSAmJiAob3JpZ2luYWwubGVuZ3RoIDw9IENIVU5LX1NJWkUpKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGRzdCA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICBXcml0YWJsZUJ5dGVDaGFubmVsIGVuY29kZXIgPSBuZXcgQnJvdGxpRW5jb2RlckNoYW5uZWwoQ2hhbm5lbHMubmV3Q2hhbm5lbChkc3QpKTsKKyAgICBCeXRlQnVmZmVyIHNyYyA9IEJ5dGVCdWZmZXIud3JhcChvcmlnaW5hbCk7CisgICAgdHJ5IHsKKyAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICBjYXNlIFdSSVRFX0FMTDoKKyAgICAgICAgICBlbmNvZGVyLndyaXRlKHNyYyk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXUklURV9DSFVOS1M6CisgICAgICAgICAgd2hpbGUgKHNyYy5oYXNSZW1haW5pbmcoKSkgeworICAgICAgICAgICAgaW50IGxpbWl0ID0gTWF0aC5taW4oQ0hVTktfU0laRSwgc3JjLnJlbWFpbmluZygpKTsKKyAgICAgICAgICAgIEJ5dGVCdWZmZXIgc2xpY2UgPSBzcmMuc2xpY2UoKTsKKyAgICAgICAgICAgICgoQnVmZmVyKSBzbGljZSkubGltaXQobGltaXQpOworICAgICAgICAgICAgKChCdWZmZXIpIHNyYykucG9zaXRpb24oc3JjLnBvc2l0aW9uKCkgKyBsaW1pdCk7CisgICAgICAgICAgICBlbmNvZGVyLndyaXRlKHNsaWNlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGVuY29kZXIuY2xvc2UoKTsKKyAgICB9CisKKyAgICBJbnB1dFN0cmVhbSBkZWNvZGVyID0gbmV3IEJyb3RsaUlucHV0U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShkc3QudG9CeXRlQXJyYXkoKSkpOworICAgIHRyeSB7CisgICAgICBsb25nIG9yaWdpbmFsQ3JjID0gQnVuZGxlSGVscGVyLmZpbmdlcnByaW50U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShvcmlnaW5hbCkpOworICAgICAgbG9uZyBjcmMgPSBCdW5kbGVIZWxwZXIuZmluZ2VycHJpbnRTdHJlYW0oZGVjb2Rlcik7CisgICAgICBhc3NlcnRFcXVhbHMob3JpZ2luYWxDcmMsIGNyYyk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGRlY29kZXIuY2xvc2UoKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvQnJvdGxpT3V0cHV0U3RyZWFtLmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0Jyb3RsaU91dHB1dFN0cmVhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZDM5NTcKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0Jyb3RsaU91dHB1dFN0cmVhbS5qYXZhCkBAIC0wLDAgKzEsODcgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmVuYzsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbHM7CisKKy8qKgorICogT3V0cHV0IHN0cmVhbSB0aGF0IHdyYXBzIG5hdGl2ZSBicm90bGkgZW5jb2Rlci4KKyAqLworcHVibGljIGNsYXNzIEJyb3RsaU91dHB1dFN0cmVhbSBleHRlbmRzIE91dHB1dFN0cmVhbSB7CisgIC8qKiBUaGUgZGVmYXVsdCBpbnRlcm5hbCBidWZmZXIgc2l6ZSB1c2VkIGJ5IHRoZSBlbmNvZGVyLiAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9CVUZGRVJfU0laRSA9IDE2Mzg0OworCisgIHByaXZhdGUgZmluYWwgRW5jb2RlciBlbmNvZGVyOworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgQnJvdGxpT3V0cHV0U3RyZWFtLgorICAgKgorICAgKiBAcGFyYW0gZGVzdGluYXRpb24gdW5kZXJseWluZyBkZXN0aW5hdGlvbgorICAgKiBAcGFyYW0gcGFyYW1zIGVuY29kaW5nIHNldHRpbmdzCisgICAqIEBwYXJhbSBidWZmZXJTaXplIGludGVybWVkaWF0ZSBidWZmZXIgc2l6ZQorICAgKi8KKyAgcHVibGljIEJyb3RsaU91dHB1dFN0cmVhbShPdXRwdXRTdHJlYW0gZGVzdGluYXRpb24sIEVuY29kZXIuUGFyYW1ldGVycyBwYXJhbXMsIGludCBidWZmZXJTaXplKQorICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB0aGlzLmVuY29kZXIgPSBuZXcgRW5jb2RlcihDaGFubmVscy5uZXdDaGFubmVsKGRlc3RpbmF0aW9uKSwgcGFyYW1zLCBidWZmZXJTaXplKTsKKyAgfQorCisgIHB1YmxpYyBCcm90bGlPdXRwdXRTdHJlYW0oT3V0cHV0U3RyZWFtIGRlc3RpbmF0aW9uLCBFbmNvZGVyLlBhcmFtZXRlcnMgcGFyYW1zKQorICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB0aGlzKGRlc3RpbmF0aW9uLCBwYXJhbXMsIERFRkFVTFRfQlVGRkVSX1NJWkUpOworICB9CisKKyAgcHVibGljIEJyb3RsaU91dHB1dFN0cmVhbShPdXRwdXRTdHJlYW0gZGVzdGluYXRpb24pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgdGhpcyhkZXN0aW5hdGlvbiwgbmV3IEVuY29kZXIuUGFyYW1ldGVycygpKTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgZW5jb2Rlci5jbG9zZSgpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIGZsdXNoKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoZW5jb2Rlci5jbG9zZWQpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigid3JpdGUgYWZ0ZXIgY2xvc2UiKTsKKyAgICB9CisgICAgZW5jb2Rlci5mbHVzaCgpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBiKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGlmIChlbmNvZGVyLmNsb3NlZCkgeworICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJ3cml0ZSBhZnRlciBjbG9zZSIpOworICAgIH0KKyAgICB3aGlsZSAoIWVuY29kZXIuZW5jb2RlKEVuY29kZXJKTkkuT3BlcmF0aW9uLlBST0NFU1MpKSB7CisgICAgICAvLyBCdXN5LXdhaXQgbG9vcC4KKyAgICB9CisgICAgZW5jb2Rlci5pbnB1dEJ1ZmZlci5wdXQoKGJ5dGUpIGIpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIHdyaXRlKGJ5dGVbXSBiKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHRoaXMud3JpdGUoYiwgMCwgYi5sZW5ndGgpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIHdyaXRlKGJ5dGVbXSBiLCBpbnQgb2ZmLCBpbnQgbGVuKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGlmIChlbmNvZGVyLmNsb3NlZCkgeworICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJ3cml0ZSBhZnRlciBjbG9zZSIpOworICAgIH0KKyAgICB3aGlsZSAobGVuID4gMCkgeworICAgICAgaWYgKCFlbmNvZGVyLmVuY29kZShFbmNvZGVySk5JLk9wZXJhdGlvbi5QUk9DRVNTKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGludCBsaW1pdCA9IE1hdGgubWluKGxlbiwgZW5jb2Rlci5pbnB1dEJ1ZmZlci5yZW1haW5pbmcoKSk7CisgICAgICBlbmNvZGVyLmlucHV0QnVmZmVyLnB1dChiLCBvZmYsIGxpbWl0KTsKKyAgICAgIG9mZiArPSBsaW1pdDsKKyAgICAgIGxlbiAtPSBsaW1pdDsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvQnJvdGxpT3V0cHV0U3RyZWFtVGVzdC5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9Ccm90bGlPdXRwdXRTdHJlYW1UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk5YjRiMgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvQnJvdGxpT3V0cHV0U3RyZWFtVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACitwYWNrYWdlIG9yZy5icm90bGkud3JhcHBlci5lbmM7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKK2ltcG9ydCBvcmcuYnJvdGxpLmludGVncmF0aW9uLkJyb3RsaUpuaVRlc3RCYXNlOworaW1wb3J0IG9yZy5icm90bGkuaW50ZWdyYXRpb24uQnVuZGxlSGVscGVyOworaW1wb3J0IG9yZy5icm90bGkud3JhcHBlci5kZWMuQnJvdGxpSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLkFsbFRlc3RzOworCisvKiogVGVzdHMgZm9yIHtAbGluayBvcmcuYnJvdGxpLndyYXBwZXIuZW5jLkJyb3RsaU91dHB1dFN0cmVhbX0uICovCitAUnVuV2l0aChBbGxUZXN0cy5jbGFzcykKK3B1YmxpYyBjbGFzcyBCcm90bGlPdXRwdXRTdHJlYW1UZXN0IGV4dGVuZHMgQnJvdGxpSm5pVGVzdEJhc2UgeworCisgIHByaXZhdGUgZW51bSBUZXN0TW9kZSB7CisgICAgV1JJVEVfQUxMLAorICAgIFdSSVRFX0NIVU5LUywKKyAgICBXUklURV9CWVRFCisgIH0KKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0hVTktfU0laRSA9IDI1NjsKKworICBzdGF0aWMgSW5wdXRTdHJlYW0gZ2V0QnVuZGxlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbmV3IEZpbGVJbnB1dFN0cmVhbShTeXN0ZW0uZ2V0UHJvcGVydHkoIlRFU1RfQlVORExFIikpOworICB9CisKKyAgLyoqIENyZWF0ZXMgYSB0ZXN0IHN1aXRlLiAqLworICBwdWJsaWMgc3RhdGljIFRlc3RTdWl0ZSBzdWl0ZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZSgpOworICAgIElucHV0U3RyZWFtIGJ1bmRsZSA9IGdldEJ1bmRsZSgpOworICAgIHRyeSB7CisgICAgICBMaXN0PFN0cmluZz4gZW50cmllcyA9IEJ1bmRsZUhlbHBlci5saXN0RW50cmllcyhidW5kbGUpOworICAgICAgZm9yIChTdHJpbmcgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3QobmV3IFN0cmVhbVRlc3RDYXNlKGVudHJ5LCBUZXN0TW9kZS5XUklURV9BTEwpKTsKKyAgICAgICAgc3VpdGUuYWRkVGVzdChuZXcgU3RyZWFtVGVzdENhc2UoZW50cnksIFRlc3RNb2RlLldSSVRFX0NIVU5LUykpOworICAgICAgICBzdWl0ZS5hZGRUZXN0KG5ldyBTdHJlYW1UZXN0Q2FzZShlbnRyeSwgVGVzdE1vZGUuV1JJVEVfQllURSkpOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICBidW5kbGUuY2xvc2UoKTsKKyAgICB9CisgICAgcmV0dXJuIHN1aXRlOworICB9CisKKyAgLyoqIFRlc3QgY2FzZSB3aXRoIGEgdW5pcXVlIG5hbWUuICovCisgIHN0YXRpYyBjbGFzcyBTdHJlYW1UZXN0Q2FzZSBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBmaW5hbCBTdHJpbmcgZW50cnlOYW1lOworICAgIGZpbmFsIFRlc3RNb2RlIG1vZGU7CisgICAgU3RyZWFtVGVzdENhc2UoU3RyaW5nIGVudHJ5TmFtZSwgVGVzdE1vZGUgbW9kZSkgeworICAgICAgc3VwZXIoIkJyb3RsaU91dHB1dFN0cmVhbVRlc3QuIiArIGVudHJ5TmFtZSArICIuIiArIG1vZGUubmFtZSgpKTsKKyAgICAgIHRoaXMuZW50cnlOYW1lID0gZW50cnlOYW1lOworICAgICAgdGhpcy5tb2RlID0gbW9kZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkgdGhyb3dzIFRocm93YWJsZSB7CisgICAgICBCcm90bGlPdXRwdXRTdHJlYW1UZXN0LnJ1bihlbnRyeU5hbWUsIG1vZGUpOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgcnVuKFN0cmluZyBlbnRyeU5hbWUsIFRlc3RNb2RlIG1vZGUpIHRocm93cyBUaHJvd2FibGUgeworICAgIElucHV0U3RyZWFtIGJ1bmRsZSA9IGdldEJ1bmRsZSgpOworICAgIGJ5dGVbXSBvcmlnaW5hbDsKKyAgICB0cnkgeworICAgICAgb3JpZ2luYWwgPSBCdW5kbGVIZWxwZXIucmVhZEVudHJ5KGJ1bmRsZSwgZW50cnlOYW1lKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIGlmIChvcmlnaW5hbCA9PSBudWxsKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ2FuJ3QgcmVhZCBidW5kbGUgZW50cnk6ICIgKyBlbnRyeU5hbWUpOworICAgIH0KKworICAgIGlmICgobW9kZSA9PSBUZXN0TW9kZS5XUklURV9DSFVOS1MpICYmIChvcmlnaW5hbC5sZW5ndGggPD0gQ0hVTktfU0laRSkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gZHN0ID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgIE91dHB1dFN0cmVhbSBlbmNvZGVyID0gbmV3IEJyb3RsaU91dHB1dFN0cmVhbShkc3QpOworICAgIHRyeSB7CisgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBXUklURV9BTEw6CisgICAgICAgICAgZW5jb2Rlci53cml0ZShvcmlnaW5hbCk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXUklURV9DSFVOS1M6CisgICAgICAgICAgZm9yIChpbnQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgb3JpZ2luYWwubGVuZ3RoOyBvZmZzZXQgKz0gQ0hVTktfU0laRSkgeworICAgICAgICAgICAgZW5jb2Rlci53cml0ZShvcmlnaW5hbCwgb2Zmc2V0LCBNYXRoLm1pbihDSFVOS19TSVpFLCBvcmlnaW5hbC5sZW5ndGggLSBvZmZzZXQpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXUklURV9CWVRFOgorICAgICAgICAgIGZvciAoYnl0ZSBzaW5nbGVCeXRlIDogb3JpZ2luYWwpIHsKKyAgICAgICAgICAgIGVuY29kZXIud3JpdGUoc2luZ2xlQnl0ZSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICBlbmNvZGVyLmNsb3NlKCk7CisgICAgfQorCisgICAgSW5wdXRTdHJlYW0gZGVjb2RlciA9IG5ldyBCcm90bGlJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oZHN0LnRvQnl0ZUFycmF5KCkpKTsKKyAgICB0cnkgeworICAgICAgbG9uZyBvcmlnaW5hbENyYyA9IEJ1bmRsZUhlbHBlci5maW5nZXJwcmludFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0ob3JpZ2luYWwpKTsKKyAgICAgIGxvbmcgY3JjID0gQnVuZGxlSGVscGVyLmZpbmdlcnByaW50U3RyZWFtKGRlY29kZXIpOworICAgICAgYXNzZXJ0RXF1YWxzKG9yaWdpbmFsQ3JjLCBjcmMpOworICAgIH0gZmluYWxseSB7CisgICAgICBkZWNvZGVyLmNsb3NlKCk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0VtcHR5SW5wdXRUZXN0LmphdmEgYi90aGlyZF9wYXJ0eS9icm90bGkvamF2YS9vcmcvYnJvdGxpL3dyYXBwZXIvZW5jL0VtcHR5SW5wdXRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUzNjM4MQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW1wdHlJbnB1dFRlc3QuamF2YQpAQCAtMCwwICsxLDI5IEBACisvKiBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkud3JhcHBlci5lbmM7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKK2ltcG9ydCBvcmcuYnJvdGxpLmludGVncmF0aW9uLkJyb3RsaUpuaVRlc3RCYXNlOworaW1wb3J0IG9yZy5icm90bGkud3JhcHBlci5kZWMuRGVjb2RlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5KVW5pdDQ7CisKKy8qKiBUZXN0cyBmb3Ige0BsaW5rIG9yZy5icm90bGkud3JhcHBlci5lbmMuRW5jb2Rlcn0uICovCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgY2xhc3MgRW1wdHlJbnB1dFRlc3QgZXh0ZW5kcyBCcm90bGlKbmlUZXN0QmFzZSB7CisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RFbXB0eUlucHV0KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBieXRlW10gZGF0YSA9IG5ldyBieXRlWzBdOworICAgIGJ5dGVbXSBlbmNvZGVkID0gRW5jb2Rlci5jb21wcmVzcyhkYXRhKTsKKyAgICBhc3NlcnRFcXVhbHMoMSwgZW5jb2RlZC5sZW5ndGgpOworICAgIGJ5dGVbXSBkZWNvZGVkID0gRGVjb2Rlci5kZWNvbXByZXNzKGVuY29kZWQpOworICAgIGFzc2VydEVxdWFscygwLCBkZWNvZGVkLmxlbmd0aCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW5jb2Rlci5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9FbmNvZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkZThkNgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW5jb2Rlci5qYXZhCkBAIC0wLDAgKzEsMjA1IEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkud3JhcHBlci5lbmM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLkJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWw7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworLyoqCisgKiBCYXNlIGNsYXNzIGZvciBPdXRwdXRTdHJlYW0gLyBDaGFubmVsIGltcGxlbWVudGF0aW9ucy4KKyAqLworcHVibGljIGNsYXNzIEVuY29kZXIgeworICBwcml2YXRlIGZpbmFsIFdyaXRhYmxlQnl0ZUNoYW5uZWwgZGVzdGluYXRpb247CisgIHByaXZhdGUgZmluYWwgRW5jb2RlckpOSS5XcmFwcGVyIGVuY29kZXI7CisgIHByaXZhdGUgQnl0ZUJ1ZmZlciBidWZmZXI7CisgIGZpbmFsIEJ5dGVCdWZmZXIgaW5wdXRCdWZmZXI7CisgIGJvb2xlYW4gY2xvc2VkOworCisgIC8qKgorICAgKiBCcm90bGkgZW5jb2RlciBzZXR0aW5ncy4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgUGFyYW1ldGVycyB7CisgICAgcHJpdmF0ZSBpbnQgcXVhbGl0eSA9IC0xOworICAgIHByaXZhdGUgaW50IGxnd2luID0gLTE7CisKKyAgICBwdWJsaWMgUGFyYW1ldGVycygpIHsgfQorCisgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzKFBhcmFtZXRlcnMgb3RoZXIpIHsKKyAgICAgIHRoaXMucXVhbGl0eSA9IG90aGVyLnF1YWxpdHk7CisgICAgICB0aGlzLmxnd2luID0gb3RoZXIubGd3aW47CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIHF1YWxpdHkgY29tcHJlc3Npb24gcXVhbGl0eSwgb3IgLTEgZm9yIGRlZmF1bHQKKyAgICAgKi8KKyAgICBwdWJsaWMgUGFyYW1ldGVycyBzZXRRdWFsaXR5KGludCBxdWFsaXR5KSB7CisgICAgICBpZiAocXVhbGl0eSA8IC0xIHx8IHF1YWxpdHkgPiAxMSkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJxdWFsaXR5IHNob3VsZCBiZSBpbiByYW5nZSBbMCwgMTFdLCBvciAtMSIpOworICAgICAgfQorICAgICAgdGhpcy5xdWFsaXR5ID0gcXVhbGl0eTsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSBsZ3dpbiBsb2cyKExaIHdpbmRvdyBzaXplKSwgb3IgLTEgZm9yIGRlZmF1bHQKKyAgICAgKi8KKyAgICBwdWJsaWMgUGFyYW1ldGVycyBzZXRXaW5kb3coaW50IGxnd2luKSB7CisgICAgICBpZiAoKGxnd2luICE9IC0xKSAmJiAoKGxnd2luIDwgMTApIHx8IChsZ3dpbiA+IDI0KSkpIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibGd3aW4gc2hvdWxkIGJlIGluIHJhbmdlIFsxMCwgMjRdLCBvciAtMSIpOworICAgICAgfQorICAgICAgdGhpcy5sZ3dpbiA9IGxnd2luOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIENyZWF0ZXMgYSBFbmNvZGVyIHdyYXBwZXIuCisgICAqCisgICAqIEBwYXJhbSBkZXN0aW5hdGlvbiB1bmRlcmx5aW5nIGRlc3RpbmF0aW9uCisgICAqIEBwYXJhbSBwYXJhbXMgZW5jb2RpbmcgcGFyYW1ldGVycworICAgKiBAcGFyYW0gaW5wdXRCdWZmZXJTaXplIHJlYWQgYnVmZmVyIHNpemUKKyAgICovCisgIEVuY29kZXIoV3JpdGFibGVCeXRlQ2hhbm5lbCBkZXN0aW5hdGlvbiwgUGFyYW1ldGVycyBwYXJhbXMsIGludCBpbnB1dEJ1ZmZlclNpemUpCisgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGlmIChpbnB1dEJ1ZmZlclNpemUgPD0gMCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYnVmZmVyIHNpemUgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgIH0KKyAgICBpZiAoZGVzdGluYXRpb24gPT0gbnVsbCkgeworICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJkZXN0aW5hdGlvbiBjYW4gbm90IGJlIG51bGwiKTsKKyAgICB9CisgICAgdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uOworICAgIHRoaXMuZW5jb2RlciA9IG5ldyBFbmNvZGVySk5JLldyYXBwZXIoaW5wdXRCdWZmZXJTaXplLCBwYXJhbXMucXVhbGl0eSwgcGFyYW1zLmxnd2luKTsKKyAgICB0aGlzLmlucHV0QnVmZmVyID0gdGhpcy5lbmNvZGVyLmdldElucHV0QnVmZmVyKCk7CisgIH0KKworICBwcml2YXRlIHZvaWQgZmFpbChTdHJpbmcgbWVzc2FnZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB0cnkgeworICAgICAgY2xvc2UoKTsKKyAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgLyogSWdub3JlICovCisgICAgfQorICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihtZXNzYWdlKTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0gZm9yY2UgcmVwZWF0IHB1c2hpbmcgdW50aWwgYWxsIG91dHB1dCBpcyBjb25zdW1lZAorICAgKiBAcmV0dXJuIHRydWUgaWYgYWxsIGVuY29kZXIgb3V0cHV0IGlzIGNvbnN1bWVkCisgICAqLworICBib29sZWFuIHB1c2hPdXRwdXQoYm9vbGVhbiBmb3JjZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB3aGlsZSAoYnVmZmVyICE9IG51bGwpIHsKKyAgICAgIGlmIChidWZmZXIuaGFzUmVtYWluaW5nKCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24ud3JpdGUoYnVmZmVyKTsKKyAgICAgIH0KKyAgICAgIGlmICghYnVmZmVyLmhhc1JlbWFpbmluZygpKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGw7CisgICAgICB9IGVsc2UgaWYgKCFmb3JjZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisKKyAgLyoqCisgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBzcGFjZSBpbiBpbnB1dEJ1ZmZlci4KKyAgICovCisgIGJvb2xlYW4gZW5jb2RlKEVuY29kZXJKTkkuT3BlcmF0aW9uIG9wKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGJvb2xlYW4gZm9yY2UgPSAob3AgIT0gRW5jb2RlckpOSS5PcGVyYXRpb24uUFJPQ0VTUyk7CisgICAgaWYgKGZvcmNlKSB7CisgICAgICAoKEJ1ZmZlcikgaW5wdXRCdWZmZXIpLmxpbWl0KGlucHV0QnVmZmVyLnBvc2l0aW9uKCkpOworICAgIH0gZWxzZSBpZiAoaW5wdXRCdWZmZXIuaGFzUmVtYWluaW5nKCkpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBib29sZWFuIGhhc0lucHV0ID0gdHJ1ZTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgaWYgKCFlbmNvZGVyLmlzU3VjY2VzcygpKSB7CisgICAgICAgIGZhaWwoImVuY29kaW5nIGZhaWxlZCIpOworICAgICAgfSBlbHNlIGlmICghcHVzaE91dHB1dChmb3JjZSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfSBlbHNlIGlmIChlbmNvZGVyLmhhc01vcmVPdXRwdXQoKSkgeworICAgICAgICBidWZmZXIgPSBlbmNvZGVyLnB1bGwoKTsKKyAgICAgIH0gZWxzZSBpZiAoZW5jb2Rlci5oYXNSZW1haW5pbmdJbnB1dCgpKSB7CisgICAgICAgIGVuY29kZXIucHVzaChvcCwgMCk7CisgICAgICB9IGVsc2UgaWYgKGhhc0lucHV0KSB7CisgICAgICAgIGVuY29kZXIucHVzaChvcCwgaW5wdXRCdWZmZXIubGltaXQoKSk7CisgICAgICAgIGhhc0lucHV0ID0gZmFsc2U7CisgICAgICB9IGVsc2UgeworICAgICAgICAoKEJ1ZmZlcikgaW5wdXRCdWZmZXIpLmNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHZvaWQgZmx1c2goKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGVuY29kZShFbmNvZGVySk5JLk9wZXJhdGlvbi5GTFVTSCk7CisgIH0KKworICB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoY2xvc2VkKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGNsb3NlZCA9IHRydWU7CisgICAgdHJ5IHsKKyAgICAgIGVuY29kZShFbmNvZGVySk5JLk9wZXJhdGlvbi5GSU5JU0gpOworICAgIH0gZmluYWxseSB7CisgICAgICBlbmNvZGVyLmRlc3Ryb3koKTsKKyAgICAgIGRlc3RpbmF0aW9uLmNsb3NlKCk7CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIEVuY29kZXMgdGhlIGdpdmVuIGRhdGEgYnVmZmVyLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBieXRlW10gY29tcHJlc3MoYnl0ZVtdIGRhdGEsIFBhcmFtZXRlcnMgcGFyYW1zKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7CisgICAgICBieXRlW10gZW1wdHkgPSBuZXcgYnl0ZVsxXTsKKyAgICAgIGVtcHR5WzBdID0gNjsKKyAgICAgIHJldHVybiBlbXB0eTsKKyAgICB9CisgICAgLyogZGF0YS5sZW5ndGggPiAwICovCisgICAgRW5jb2RlckpOSS5XcmFwcGVyIGVuY29kZXIgPSBuZXcgRW5jb2RlckpOSS5XcmFwcGVyKGRhdGEubGVuZ3RoLCBwYXJhbXMucXVhbGl0eSwgcGFyYW1zLmxnd2luKTsKKyAgICBBcnJheUxpc3Q8Ynl0ZVtdPiBvdXRwdXQgPSBuZXcgQXJyYXlMaXN0PGJ5dGVbXT4oKTsKKyAgICBpbnQgdG90YWxPdXRwdXRTaXplID0gMDsKKyAgICB0cnkgeworICAgICAgZW5jb2Rlci5nZXRJbnB1dEJ1ZmZlcigpLnB1dChkYXRhKTsKKyAgICAgIGVuY29kZXIucHVzaChFbmNvZGVySk5JLk9wZXJhdGlvbi5GSU5JU0gsIGRhdGEubGVuZ3RoKTsKKyAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmICghZW5jb2Rlci5pc1N1Y2Nlc3MoKSkgeworICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiZW5jb2RpbmcgZmFpbGVkIik7CisgICAgICAgIH0gZWxzZSBpZiAoZW5jb2Rlci5oYXNNb3JlT3V0cHV0KCkpIHsKKyAgICAgICAgICBCeXRlQnVmZmVyIGJ1ZmZlciA9IGVuY29kZXIucHVsbCgpOworICAgICAgICAgIGJ5dGVbXSBjaHVuayA9IG5ldyBieXRlW2J1ZmZlci5yZW1haW5pbmcoKV07CisgICAgICAgICAgYnVmZmVyLmdldChjaHVuayk7CisgICAgICAgICAgb3V0cHV0LmFkZChjaHVuayk7CisgICAgICAgICAgdG90YWxPdXRwdXRTaXplICs9IGNodW5rLmxlbmd0aDsKKyAgICAgICAgfSBlbHNlIGlmICghZW5jb2Rlci5pc0ZpbmlzaGVkKCkpIHsKKyAgICAgICAgICBlbmNvZGVyLnB1c2goRW5jb2RlckpOSS5PcGVyYXRpb24uRklOSVNILCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICBlbmNvZGVyLmRlc3Ryb3koKTsKKyAgICB9CisgICAgaWYgKG91dHB1dC5zaXplKCkgPT0gMSkgeworICAgICAgcmV0dXJuIG91dHB1dC5nZXQoMCk7CisgICAgfQorICAgIGJ5dGVbXSByZXN1bHQgPSBuZXcgYnl0ZVt0b3RhbE91dHB1dFNpemVdOworICAgIGludCBvZmZzZXQgPSAwOworICAgIGZvciAoYnl0ZVtdIGNodW5rIDogb3V0cHV0KSB7CisgICAgICBTeXN0ZW0uYXJyYXljb3B5KGNodW5rLCAwLCByZXN1bHQsIG9mZnNldCwgY2h1bmsubGVuZ3RoKTsKKyAgICAgIG9mZnNldCArPSBjaHVuay5sZW5ndGg7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGJ5dGVbXSBjb21wcmVzcyhieXRlW10gZGF0YSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gY29tcHJlc3MoZGF0YSwgbmV3IFBhcmFtZXRlcnMoKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW5jb2RlckpOSS5qYXZhIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9FbmNvZGVySk5JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAxMzYyOQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW5jb2RlckpOSS5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACisvKiBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCitwYWNrYWdlIG9yZy5icm90bGkud3JhcHBlci5lbmM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CisKKy8qKgorICogSk5JIHdyYXBwZXIgZm9yIGJyb3RsaSBlbmNvZGVyLgorICovCitjbGFzcyBFbmNvZGVySk5JIHsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIEJ5dGVCdWZmZXIgbmF0aXZlQ3JlYXRlKGxvbmdbXSBjb250ZXh0KTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlUHVzaChsb25nW10gY29udGV4dCwgaW50IGxlbmd0aCk7CisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBCeXRlQnVmZmVyIG5hdGl2ZVB1bGwobG9uZ1tdIGNvbnRleHQpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVEZXN0cm95KGxvbmdbXSBjb250ZXh0KTsKKworICBlbnVtIE9wZXJhdGlvbiB7CisgICAgUFJPQ0VTUywKKyAgICBGTFVTSCwKKyAgICBGSU5JU0gKKyAgfQorCisgIHN0YXRpYyBjbGFzcyBXcmFwcGVyIHsKKyAgICBwcm90ZWN0ZWQgZmluYWwgbG9uZ1tdIGNvbnRleHQgPSBuZXcgbG9uZ1s1XTsKKyAgICBwcml2YXRlIGZpbmFsIEJ5dGVCdWZmZXIgaW5wdXRCdWZmZXI7CisgICAgcHJpdmF0ZSBib29sZWFuIGZyZXNoID0gdHJ1ZTsKKworICAgIFdyYXBwZXIoaW50IGlucHV0QnVmZmVyU2l6ZSwgaW50IHF1YWxpdHksIGludCBsZ3dpbikKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgIGlmIChpbnB1dEJ1ZmZlclNpemUgPD0gMCkgeworICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oImJ1ZmZlciBzaXplIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuY29udGV4dFsxXSA9IGlucHV0QnVmZmVyU2l6ZTsKKyAgICAgIHRoaXMuY29udGV4dFsyXSA9IHF1YWxpdHk7CisgICAgICB0aGlzLmNvbnRleHRbM10gPSBsZ3dpbjsKKyAgICAgIHRoaXMuaW5wdXRCdWZmZXIgPSBuYXRpdmVDcmVhdGUodGhpcy5jb250ZXh0KTsKKyAgICAgIGlmICh0aGlzLmNvbnRleHRbMF0gPT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oImZhaWxlZCB0byBpbml0aWFsaXplIG5hdGl2ZSBicm90bGkgZW5jb2RlciIpOworICAgICAgfQorICAgICAgdGhpcy5jb250ZXh0WzFdID0gMTsKKyAgICAgIHRoaXMuY29udGV4dFsyXSA9IDA7CisgICAgICB0aGlzLmNvbnRleHRbM10gPSAwOworICAgIH0KKworICAgIHZvaWQgcHVzaChPcGVyYXRpb24gb3AsIGludCBsZW5ndGgpIHsKKyAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm5lZ2F0aXZlIGJsb2NrIGxlbmd0aCIpOworICAgICAgfQorICAgICAgaWYgKGNvbnRleHRbMF0gPT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJicm90bGkgZW5jb2RlciBpcyBhbHJlYWR5IGRlc3Ryb3llZCIpOworICAgICAgfQorICAgICAgaWYgKCFpc1N1Y2Nlc3MoKSB8fCBoYXNNb3JlT3V0cHV0KCkpIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigicHVzaGluZyBpbnB1dCB0byBlbmNvZGVyIGluIHVuZXhwZWN0ZWQgc3RhdGUiKTsKKyAgICAgIH0KKyAgICAgIGlmIChoYXNSZW1haW5pbmdJbnB1dCgpICYmIGxlbmd0aCAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oInB1c2hpbmcgaW5wdXQgdG8gZW5jb2RlciBvdmVyIHByZXZpb3VzIGlucHV0Iik7CisgICAgICB9CisgICAgICBjb250ZXh0WzFdID0gb3Aub3JkaW5hbCgpOworICAgICAgZnJlc2ggPSBmYWxzZTsKKyAgICAgIG5hdGl2ZVB1c2goY29udGV4dCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBib29sZWFuIGlzU3VjY2VzcygpIHsKKyAgICAgIHJldHVybiBjb250ZXh0WzFdICE9IDA7CisgICAgfQorCisgICAgYm9vbGVhbiBoYXNNb3JlT3V0cHV0KCkgeworICAgICAgcmV0dXJuIGNvbnRleHRbMl0gIT0gMDsKKyAgICB9CisKKyAgICBib29sZWFuIGhhc1JlbWFpbmluZ0lucHV0KCkgeworICAgICAgcmV0dXJuIGNvbnRleHRbM10gIT0gMDsKKyAgICB9CisKKyAgICBib29sZWFuIGlzRmluaXNoZWQoKSB7CisgICAgICByZXR1cm4gY29udGV4dFs0XSAhPSAwOworICAgIH0KKworICAgIEJ5dGVCdWZmZXIgZ2V0SW5wdXRCdWZmZXIoKSB7CisgICAgICByZXR1cm4gaW5wdXRCdWZmZXI7CisgICAgfQorCisgICAgQnl0ZUJ1ZmZlciBwdWxsKCkgeworICAgICAgaWYgKGNvbnRleHRbMF0gPT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJicm90bGkgZW5jb2RlciBpcyBhbHJlYWR5IGRlc3Ryb3llZCIpOworICAgICAgfQorICAgICAgaWYgKCFpc1N1Y2Nlc3MoKSB8fCAhaGFzTW9yZU91dHB1dCgpKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oInB1bGxpbmcgd2hpbGUgZGF0YSBpcyBub3QgcmVhZHkiKTsKKyAgICAgIH0KKyAgICAgIGZyZXNoID0gZmFsc2U7CisgICAgICByZXR1cm4gbmF0aXZlUHVsbChjb250ZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWxlYXNlcyBuYXRpdmUgcmVzb3VyY2VzLgorICAgICAqLworICAgIHZvaWQgZGVzdHJveSgpIHsKKyAgICAgIGlmIChjb250ZXh0WzBdID09IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiYnJvdGxpIGVuY29kZXIgaXMgYWxyZWFkeSBkZXN0cm95ZWQiKTsKKyAgICAgIH0KKyAgICAgIG5hdGl2ZURlc3Ryb3koY29udGV4dCk7CisgICAgICBjb250ZXh0WzBdID0gMDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHRocm93cyBUaHJvd2FibGUgeworICAgICAgaWYgKGNvbnRleHRbMF0gIT0gMCkgeworICAgICAgICAvKiBUT0RPOiBsb2cgcmVzb3VyY2UgbGVhaz8gKi8KKyAgICAgICAgZGVzdHJveSgpOworICAgICAgfQorICAgICAgc3VwZXIuZmluYWxpemUoKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW5jb2RlclRlc3QuamF2YSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvRW5jb2RlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGVkNjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9FbmNvZGVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsODAgQEAKK3BhY2thZ2Ugb3JnLmJyb3RsaS53cmFwcGVyLmVuYzsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworaW1wb3J0IG9yZy5icm90bGkuaW50ZWdyYXRpb24uQnJvdGxpSm5pVGVzdEJhc2U7CitpbXBvcnQgb3JnLmJyb3RsaS5pbnRlZ3JhdGlvbi5CdW5kbGVIZWxwZXI7CitpbXBvcnQgb3JnLmJyb3RsaS53cmFwcGVyLmRlYy5Ccm90bGlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuQWxsVGVzdHM7CisKKy8qKiBUZXN0cyBmb3Ige0BsaW5rIG9yZy5icm90bGkud3JhcHBlci5lbmMuRW5jb2Rlcn0uICovCitAUnVuV2l0aChBbGxUZXN0cy5jbGFzcykKK3B1YmxpYyBjbGFzcyBFbmNvZGVyVGVzdCBleHRlbmRzIEJyb3RsaUpuaVRlc3RCYXNlIHsKKyAgc3RhdGljIElucHV0U3RyZWFtIGdldEJ1bmRsZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG5ldyBGaWxlSW5wdXRTdHJlYW0oU3lzdGVtLmdldFByb3BlcnR5KCJURVNUX0JVTkRMRSIpKTsKKyAgfQorCisgIC8qKiBDcmVhdGVzIGEgdGVzdCBzdWl0ZS4gKi8KKyAgcHVibGljIHN0YXRpYyBUZXN0U3VpdGUgc3VpdGUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKKyAgICBJbnB1dFN0cmVhbSBidW5kbGUgPSBnZXRCdW5kbGUoKTsKKyAgICB0cnkgeworICAgICAgTGlzdDxTdHJpbmc+IGVudHJpZXMgPSBCdW5kbGVIZWxwZXIubGlzdEVudHJpZXMoYnVuZGxlKTsKKyAgICAgIGZvciAoU3RyaW5nIGVudHJ5IDogZW50cmllcykgeworICAgICAgICBzdWl0ZS5hZGRUZXN0KG5ldyBFbmNvZGVyVGVzdENhc2UoZW50cnkpKTsKKyAgICAgIH0KKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIHJldHVybiBzdWl0ZTsKKyAgfQorCisgIC8qKiBUZXN0IGNhc2Ugd2l0aCBhIHVuaXF1ZSBuYW1lLiAqLworICBzdGF0aWMgY2xhc3MgRW5jb2RlclRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgeworICAgIGZpbmFsIFN0cmluZyBlbnRyeU5hbWU7CisgICAgRW5jb2RlclRlc3RDYXNlKFN0cmluZyBlbnRyeU5hbWUpIHsKKyAgICAgIHN1cGVyKCJFbmNvZGVyVGVzdC4iICsgZW50cnlOYW1lKTsKKyAgICAgIHRoaXMuZW50cnlOYW1lID0gZW50cnlOYW1lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgIEVuY29kZXJUZXN0LnJ1bihlbnRyeU5hbWUpOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgcnVuKFN0cmluZyBlbnRyeU5hbWUpIHRocm93cyBUaHJvd2FibGUgeworICAgIElucHV0U3RyZWFtIGJ1bmRsZSA9IGdldEJ1bmRsZSgpOworICAgIGJ5dGVbXSBvcmlnaW5hbDsKKyAgICB0cnkgeworICAgICAgb3JpZ2luYWwgPSBCdW5kbGVIZWxwZXIucmVhZEVudHJ5KGJ1bmRsZSwgZW50cnlOYW1lKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgYnVuZGxlLmNsb3NlKCk7CisgICAgfQorICAgIGlmIChvcmlnaW5hbCA9PSBudWxsKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ2FuJ3QgcmVhZCBidW5kbGUgZW50cnk6ICIgKyBlbnRyeU5hbWUpOworICAgIH0KKworICAgIGZvciAoaW50IHdpbmRvdyA9IDEwOyB3aW5kb3cgPD0gMjI7IHdpbmRvdysrKSB7CisgICAgICBieXRlW10gY29tcHJlc3NlZCA9CisgICAgICAgICAgRW5jb2Rlci5jb21wcmVzcyhvcmlnaW5hbCwgbmV3IEVuY29kZXIuUGFyYW1ldGVycygpLnNldFF1YWxpdHkoNikuc2V0V2luZG93KHdpbmRvdykpOworCisgICAgICBJbnB1dFN0cmVhbSBkZWNvZGVyID0gbmV3IEJyb3RsaUlucHV0U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShjb21wcmVzc2VkKSk7CisgICAgICB0cnkgeworICAgICAgICBsb25nIG9yaWdpbmFsQ3JjID0gQnVuZGxlSGVscGVyLmZpbmdlcnByaW50U3RyZWFtKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShvcmlnaW5hbCkpOworICAgICAgICBsb25nIGNyYyA9IEJ1bmRsZUhlbHBlci5maW5nZXJwcmludFN0cmVhbShkZWNvZGVyKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG9yaWdpbmFsQ3JjLCBjcmMpOworICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgZGVjb2Rlci5jbG9zZSgpOworICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2phdmEvb3JnL2Jyb3RsaS93cmFwcGVyL2VuYy9lbmNvZGVyX2puaS5jYyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvZW5jb2Rlcl9qbmkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNkZTZkZgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qYXZhL29yZy9icm90bGkvd3JhcHBlci9lbmMvZW5jb2Rlcl9qbmkuY2MKQEAgLTAsMCArMSwxOTUgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKKyNpbmNsdWRlIDxqbmkuaD4KKworI2luY2x1ZGUgPG5ldz4KKworI2luY2x1ZGUgPGJyb3RsaS9lbmNvZGUuaD4KKworbmFtZXNwYWNlIHsKKy8qIEEgc3RydWN0dXJlIHVzZWQgdG8gcGVyc2lzdCB0aGUgZW5jb2RlcidzIHN0YXRlIGluIGJldHdlZW4gY2FsbHMuICovCit0eXBlZGVmIHN0cnVjdCBFbmNvZGVySGFuZGxlIHsKKyAgQnJvdGxpRW5jb2RlclN0YXRlKiBzdGF0ZTsKKworICB1aW50OF90KiBpbnB1dF9zdGFydDsKKyAgc2l6ZV90IGlucHV0X29mZnNldDsKKyAgc2l6ZV90IGlucHV0X2xhc3Q7Cit9IEVuY29kZXJIYW5kbGU7CisKKy8qIE9idGFpbiBoYW5kbGUgZnJvbSBvcGFxdWUgcG9pbnRlci4gKi8KK0VuY29kZXJIYW5kbGUqIGdldEhhbmRsZSh2b2lkKiBvcGFxdWUpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PEVuY29kZXJIYW5kbGUqPihvcGFxdWUpOworfQorCit9ICAvKiBuYW1lc3BhY2UgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgRW5jb2Rlci4KKyAqCisgKiBDb29raWUgdG8gYWRkcmVzcyBjcmVhdGVkIGVuY29kZXIgaXMgc3RvcmVkIGluIG91dF9jb29raWUuIEluIGNhc2Ugb2YgZmFpbHVyZQorICogY29va2llIGlzIDAuCisgKgorICogQHBhcmFtIGN0eCB7b3V0X2Nvb2tpZSwgaW5fZGlyZWN0QnVmZmVyU2l6ZSwgaW5fcXVhbGl0eSwgaW5fbGd3aW59IHR1cGxlCisgKiBAcmV0dXJucyBkaXJlY3QgQnl0ZUJ1ZmZlciBpZiBkaXJlY3RCdWZmZXJTaXplIGlzIG5vdCAwOyBvdGhlcndpc2UgbnVsbAorICovCitKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCitKYXZhX29yZ19icm90bGlfd3JhcHBlcl9lbmNfRW5jb2RlckpOSV9uYXRpdmVDcmVhdGUoCisgICAgSk5JRW52KiBlbnYsIGpvYmplY3QgLypqb2JqKi8sIGpsb25nQXJyYXkgY3R4KSB7CisgIGJvb2wgb2sgPSB0cnVlOworICBFbmNvZGVySGFuZGxlKiBoYW5kbGUgPSBudWxscHRyOworICBqbG9uZyBjb250ZXh0WzVdOworICBlbnYtPkdldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDUsIGNvbnRleHQpOworICBzaXplX3QgaW5wdXRfc2l6ZSA9IGNvbnRleHRbMV07CisgIGNvbnRleHRbMF0gPSAwOworICBoYW5kbGUgPSBuZXcgKHN0ZDo6bm90aHJvdykgRW5jb2RlckhhbmRsZSgpOworICBvayA9ICEhaGFuZGxlOworCisgIGlmIChvaykgeworICAgIGhhbmRsZS0+aW5wdXRfb2Zmc2V0ID0gMDsKKyAgICBoYW5kbGUtPmlucHV0X2xhc3QgPSAwOworICAgIGhhbmRsZS0+aW5wdXRfc3RhcnQgPSBudWxscHRyOworCisgICAgaWYgKGlucHV0X3NpemUgPT0gMCkgeworICAgICAgb2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgaGFuZGxlLT5pbnB1dF9zdGFydCA9IG5ldyAoc3RkOjpub3Rocm93KSB1aW50OF90W2lucHV0X3NpemVdOworICAgICAgb2sgPSAhIWhhbmRsZS0+aW5wdXRfc3RhcnQ7CisgICAgfQorICB9CisKKyAgaWYgKG9rKSB7CisgICAgaGFuZGxlLT5zdGF0ZSA9IEJyb3RsaUVuY29kZXJDcmVhdGVJbnN0YW5jZShudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBvayA9ICEhaGFuZGxlLT5zdGF0ZTsKKyAgfQorCisgIGlmIChvaykgeworICAgIGludCBxdWFsaXR5ID0gY29udGV4dFsyXTsKKyAgICBpZiAocXVhbGl0eSA+PSAwKSB7CisgICAgICBCcm90bGlFbmNvZGVyU2V0UGFyYW1ldGVyKGhhbmRsZS0+c3RhdGUsIEJST1RMSV9QQVJBTV9RVUFMSVRZLCBxdWFsaXR5KTsKKyAgICB9CisgICAgaW50IGxnd2luID0gY29udGV4dFszXTsKKyAgICBpZiAobGd3aW4gPj0gMCkgeworICAgICAgQnJvdGxpRW5jb2RlclNldFBhcmFtZXRlcihoYW5kbGUtPnN0YXRlLCBCUk9UTElfUEFSQU1fTEdXSU4sIGxnd2luKTsKKyAgICB9CisgIH0KKworICBpZiAob2spIHsKKyAgICAvKiBUT0RPOiBmdXR1cmUgdmVyc2lvbnMgKGUuZy4gd2hlbiAxMjgtYml0IGFyY2hpdGVjdHVyZSBjb21lcykKKyAgICAgICAgICAgICAgICAgICAgIG1pZ2h0IHJlcXVpcmUgdGhyZWFkLXNhZmUgY29va2llPC0+aGFuZGxlIG1hcHBpbmcuICovCisgICAgY29udGV4dFswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8amxvbmc+KGhhbmRsZSk7CisgIH0gZWxzZSBpZiAoISFoYW5kbGUpIHsKKyAgICBpZiAoISFoYW5kbGUtPmlucHV0X3N0YXJ0KSBkZWxldGVbXSBoYW5kbGUtPmlucHV0X3N0YXJ0OworICAgIGRlbGV0ZSBoYW5kbGU7CisgIH0KKworICBlbnYtPlNldExvbmdBcnJheVJlZ2lvbihjdHgsIDAsIDEsIGNvbnRleHQpOworCisgIGlmICghb2spIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIHJldHVybiBlbnYtPk5ld0RpcmVjdEJ5dGVCdWZmZXIoaGFuZGxlLT5pbnB1dF9zdGFydCwgaW5wdXRfc2l6ZSk7Cit9CisKKy8qKgorICogUHVzaCBkYXRhIHRvIGVuY29kZXIuCisgKgorICogQHBhcmFtIGN0eCB7aW5fY29va2llLCBpbl9vcGVyYXRpb25fb3V0X3N1Y2Nlc3MsIG91dF9oYXNfbW9yZV9vdXRwdXQsCisgKiAgICAgICAgICAgICBvdXRfaGFzX3JlbWFpbmluZ19pbnB1dH0gdHVwbGUKKyAqIEBwYXJhbSBpbnB1dF9sZW5ndGggbnVtYmVyIG9mIGJ5dGVzIHByb3ZpZGVkIGluIGlucHV0IG9yIGRpcmVjdCBpbnB1dDsKKyAqICAgICAgICAgICAgICAgICAgICAgMCB0byBwcm9jZXNzIGZ1cnRoZXIgcHJldmlvdXMgaW5wdXQKKyAqLworSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTAorSmF2YV9vcmdfYnJvdGxpX3dyYXBwZXJfZW5jX0VuY29kZXJKTklfbmF0aXZlUHVzaCgKKyAgICBKTklFbnYqIGVudiwgam9iamVjdCAvKmpvYmoqLywgamxvbmdBcnJheSBjdHgsIGppbnQgaW5wdXRfbGVuZ3RoKSB7CisgIGpsb25nIGNvbnRleHRbNV07CisgIGVudi0+R2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgNSwgY29udGV4dCk7CisgIEVuY29kZXJIYW5kbGUqIGhhbmRsZSA9IGdldEhhbmRsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0WzBdKSk7CisgIGludCBvcGVyYXRpb24gPSBjb250ZXh0WzFdOworICBjb250ZXh0WzFdID0gMDsgIC8qIEVSUk9SICovCisgIGVudi0+U2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgNSwgY29udGV4dCk7CisKKyAgQnJvdGxpRW5jb2Rlck9wZXJhdGlvbiBvcDsKKyAgc3dpdGNoIChvcGVyYXRpb24pIHsKKyAgICBjYXNlIDA6IG9wID0gQlJPVExJX09QRVJBVElPTl9QUk9DRVNTOyBicmVhazsKKyAgICBjYXNlIDE6IG9wID0gQlJPVExJX09QRVJBVElPTl9GTFVTSDsgYnJlYWs7CisgICAgY2FzZSAyOiBvcCA9IEJST1RMSV9PUEVSQVRJT05fRklOSVNIOyBicmVhazsKKyAgICBkZWZhdWx0OiByZXR1cm47ICAvKiBFUlJPUiAqLworICB9CisKKyAgaWYgKGlucHV0X2xlbmd0aCAhPSAwKSB7CisgICAgLyogU3RpbGwgaGF2ZSB1bmNvbnN1bWVkIGRhdGEuIFdvcmtmbG93IGlzIGJyb2tlbi4gKi8KKyAgICBpZiAoaGFuZGxlLT5pbnB1dF9vZmZzZXQgPCBoYW5kbGUtPmlucHV0X2xhc3QpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaGFuZGxlLT5pbnB1dF9vZmZzZXQgPSAwOworICAgIGhhbmRsZS0+aW5wdXRfbGFzdCA9IGlucHV0X2xlbmd0aDsKKyAgfQorCisgIC8qIEFjdHVhbCBjb21wcmVzc2lvbi4gKi8KKyAgY29uc3QgdWludDhfdCogaW4gPSBoYW5kbGUtPmlucHV0X3N0YXJ0ICsgaGFuZGxlLT5pbnB1dF9vZmZzZXQ7CisgIHNpemVfdCBpbl9zaXplID0gaGFuZGxlLT5pbnB1dF9sYXN0IC0gaGFuZGxlLT5pbnB1dF9vZmZzZXQ7CisgIHNpemVfdCBvdXRfc2l6ZSA9IDA7CisgIEJST1RMSV9CT09MIHN0YXR1cyA9IEJyb3RsaUVuY29kZXJDb21wcmVzc1N0cmVhbSgKKyAgICAgIGhhbmRsZS0+c3RhdGUsIG9wLCAmaW5fc2l6ZSwgJmluLCAmb3V0X3NpemUsIG51bGxwdHIsIG51bGxwdHIpOworICBoYW5kbGUtPmlucHV0X29mZnNldCA9IGhhbmRsZS0+aW5wdXRfbGFzdCAtIGluX3NpemU7CisgIGlmICghIXN0YXR1cykgeworICAgIGNvbnRleHRbMV0gPSAxOworICAgIGNvbnRleHRbMl0gPSBCcm90bGlFbmNvZGVySGFzTW9yZU91dHB1dChoYW5kbGUtPnN0YXRlKSA/IDEgOiAwOworICAgIGNvbnRleHRbM10gPSAoaGFuZGxlLT5pbnB1dF9vZmZzZXQgIT0gaGFuZGxlLT5pbnB1dF9sYXN0KSA/IDEgOiAwOworICAgIGNvbnRleHRbNF0gPSBCcm90bGlFbmNvZGVySXNGaW5pc2hlZChoYW5kbGUtPnN0YXRlKSA/IDEgOiAwOworICB9CisgIGVudi0+U2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgNSwgY29udGV4dCk7Cit9CisKKy8qKgorICogUHVsbCBkZWNvbXByZXNzZWQgZGF0YSBmcm9tIGVuY29kZXIuCisgKgorICogQHBhcmFtIGN0eCB7aW5fY29va2llLCBvdXRfc3VjY2Vzcywgb3V0X2hhc19tb3JlX291dHB1dCwKKyAqICAgICAgICAgICAgIG91dF9oYXNfcmVtYWluaW5nX2lucHV0fSB0dXBsZQorICogQHJldHVybnMgZGlyZWN0IEJ5dGVCdWZmZXI7IGFsbCB0aGUgcHJvZHVjZWQgZGF0YSBNVVNUIGJlIGNvbnN1bWVkIGJlZm9yZQorICogICAgICAgICAgYW55IGZ1cnRoZXIgaW52b2NhdGlvbjsgbnVsbCBpbiBjYXNlIG9mIGVycm9yCisgKi8KK0pOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwKK0phdmFfb3JnX2Jyb3RsaV93cmFwcGVyX2VuY19FbmNvZGVySk5JX25hdGl2ZVB1bGwoCisgICAgSk5JRW52KiBlbnYsIGpvYmplY3QgLypqb2JqKi8sIGpsb25nQXJyYXkgY3R4KSB7CisgIGpsb25nIGNvbnRleHRbNV07CisgIGVudi0+R2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgNSwgY29udGV4dCk7CisgIEVuY29kZXJIYW5kbGUqIGhhbmRsZSA9IGdldEhhbmRsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0WzBdKSk7CisgIHNpemVfdCBkYXRhX2xlbmd0aCA9IDA7CisgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBCcm90bGlFbmNvZGVyVGFrZU91dHB1dChoYW5kbGUtPnN0YXRlLCAmZGF0YV9sZW5ndGgpOworICBjb250ZXh0WzFdID0gMTsKKyAgY29udGV4dFsyXSA9IEJyb3RsaUVuY29kZXJIYXNNb3JlT3V0cHV0KGhhbmRsZS0+c3RhdGUpID8gMSA6IDA7CisgIGNvbnRleHRbM10gPSAoaGFuZGxlLT5pbnB1dF9vZmZzZXQgIT0gaGFuZGxlLT5pbnB1dF9sYXN0KSA/IDEgOiAwOworICBjb250ZXh0WzRdID0gQnJvdGxpRW5jb2RlcklzRmluaXNoZWQoaGFuZGxlLT5zdGF0ZSkgPyAxIDogMDsKKyAgZW52LT5TZXRMb25nQXJyYXlSZWdpb24oY3R4LCAwLCA1LCBjb250ZXh0KTsKKyAgcmV0dXJuIGVudi0+TmV3RGlyZWN0Qnl0ZUJ1ZmZlcihjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhKSwgZGF0YV9sZW5ndGgpOworfQorCisvKioKKyAqIFJlbGVhc2VzIGFsbCB1c2VkIHJlc291cmNlcy4KKyAqCisgKiBAcGFyYW0gY3R4IHtpbl9jb29raWV9IHR1cGxlCisgKi8KK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwKK0phdmFfb3JnX2Jyb3RsaV93cmFwcGVyX2VuY19FbmNvZGVySk5JX25hdGl2ZURlc3Ryb3koCisgICAgSk5JRW52KiBlbnYsIGpvYmplY3QgLypqb2JqKi8sIGpsb25nQXJyYXkgY3R4KSB7CisgIGpsb25nIGNvbnRleHRbMl07CisgIGVudi0+R2V0TG9uZ0FycmF5UmVnaW9uKGN0eCwgMCwgMiwgY29udGV4dCk7CisgIEVuY29kZXJIYW5kbGUqIGhhbmRsZSA9IGdldEhhbmRsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0WzBdKSk7CisgIEJyb3RsaUVuY29kZXJEZXN0cm95SW5zdGFuY2UoaGFuZGxlLT5zdGF0ZSk7CisgIGRlbGV0ZVtdIGhhbmRsZS0+aW5wdXRfc3RhcnQ7CisgIGRlbGV0ZSBoYW5kbGU7Cit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvanMvQlVJTEQgYi90aGlyZF9wYXJ0eS9icm90bGkvanMvQlVJTEQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDljMTcyOAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qcy9CVUlMRApAQCAtMCwwICsxLDQzIEBACitwYWNrYWdlKAorICAgIGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdLAorKQorCitsaWNlbnNlcyhbIm5vdGljZSJdKSAgIyBNSVQKKworbG9hZCgiQGlvX2JhemVsX3J1bGVzX2Nsb3N1cmUvL2Nsb3N1cmU6ZGVmcy5iemwiLCAiY2xvc3VyZV9qc19saWJyYXJ5IikKKworIyBOb3QgYSByZWFsIHBvbHlmaWxsLiBEbyBOT1QgdXNlIGZvciBhbnl0aGluZywgYnV0IHRlc3RzLgorY2xvc3VyZV9qc19saWJyYXJ5KAorICAgIG5hbWUgPSAicG9seWZpbGwiLAorICAgIHNyY3MgPSBbInBvbHlmaWxsLmpzIl0sCisgICAgc3VwcHJlc3MgPSBbCisgICAgICAgICJKU0NfSU5WQUxJRF9PUEVSQU5EX1RZUEUiLAorICAgICAgICAiSlNDX01JU1NJTkdfSlNET0MiLAorICAgICAgICAiSlNDX1NUUklDVF9JTkVYSVNURU5UX1BST1BFUlRZIiwKKyAgICAgICAgIkpTQ19UWVBFX01JU01BVENIIiwKKyAgICAgICAgIkpTQ19VTktOT1dOX0VYUFJfVFlQRSIsCisgICAgXSwKKykKKworIyBEbyBOT1QgdXNlIHRoaXMgYXJ0aWZhY3Q7IGl0IGlzIGZvciB0ZXN0IHB1cnBvc2VzIG9ubHkuCitjbG9zdXJlX2pzX2xpYnJhcnkoCisgICAgbmFtZSA9ICJkZWNvZGUiLAorICAgIHNyY3MgPSBbImRlY29kZS5qcyJdLAorICAgIHN1cHByZXNzID0gWworICAgICAgICAiSlNDX0RVUF9WQVJfREVDTEFSQVRJT04iLAorICAgICAgICAiSlNDX1VTRUxFU1NfQkxPQ0siLAorICAgIF0sCisgICAgZGVwcyA9IFsiOnBvbHlmaWxsIl0sCispCisKK2xvYWQoIkBpb19iYXplbF9ydWxlc19jbG9zdXJlLy9jbG9zdXJlOmRlZnMuYnpsIiwgImNsb3N1cmVfanNfdGVzdCIpCisKK2Nsb3N1cmVfanNfdGVzdCgKKyAgICBuYW1lID0gImFsbF90ZXN0cyIsCisgICAgc3JjcyA9IFsiZGVjb2RlX3Rlc3QuanMiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmRlY29kZSIsCisgICAgICAgICI6cG9seWZpbGwiLAorICAgICAgICAiQGlvX2JhemVsX3J1bGVzX2Nsb3N1cmUvL2Nsb3N1cmUvbGlicmFyeTp0ZXN0aW5nIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2pzL1dPUktTUEFDRSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qcy9XT1JLU1BBQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE1NzQwYQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qcy9XT1JLU1BBQ0UKQEAgLTAsMCArMSwxMiBAQAord29ya3NwYWNlKG5hbWUgPSAib3JnX2Jyb3RsaV9qcyIpCisKK2xvYWQoIkBiYXplbF90b29scy8vdG9vbHMvYnVpbGRfZGVmcy9yZXBvOmdpdC5iemwiLCAiZ2l0X3JlcG9zaXRvcnkiKQorCitnaXRfcmVwb3NpdG9yeSgKKyAgICBuYW1lID0gImlvX2JhemVsX3J1bGVzX2Nsb3N1cmUiLAorICAgIGNvbW1pdCA9ICIyOWVjOTdlN2M4NWQ2MDdiYTllNDFjYWIzOTkzZmJiMTNmODEyYzRiIiwKKyAgICByZW1vdGUgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvcnVsZXNfY2xvc3VyZS5naXQiLAorKQorCitsb2FkKCJAaW9fYmF6ZWxfcnVsZXNfY2xvc3VyZS8vY2xvc3VyZTpkZWZzLmJ6bCIsICJjbG9zdXJlX3JlcG9zaXRvcmllcyIpCitjbG9zdXJlX3JlcG9zaXRvcmllcygpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvanMvZGVjb2RlLmpzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2pzL2RlY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODk2YTUwCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL2pzL2RlY29kZS5qcwpAQCAtMCwwICsxLDIwMjkgQEAKKy8qIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKKy8qKiBAcmV0dXJuIHtmdW5jdGlvbighSW50OEFycmF5KTohSW50OEFycmF5fSAqLworZnVuY3Rpb24gQnJvdGxpRGVjb2RlQ2xvc3VyZSgpIHsKKyAgInVzZSBzdHJpY3QiOworCisgIC8qKiBAdHlwZSB7IUludDhBcnJheX0gKi8KKyAgdmFyIERJQ1RJT05BUllfREFUQSA9IG5ldyBJbnQ4QXJyYXkoMCk7CisKKyAgLyoqCisgICAqIEBjb25zdHJ1Y3RvcgorICAgKiBAcGFyYW0geyFJbnQ4QXJyYXl9IGJ5dGVzCisgICAqIEBzdHJ1Y3QKKyAgICovCisgIGZ1bmN0aW9uIElucHV0U3RyZWFtKGJ5dGVzKSB7CisgICAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICAgIHRoaXMuZGF0YSA9IGJ5dGVzOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLm9mZnNldCA9IDA7CisgIH0KKyAgdmFyIE1BWF9IVUZGTUFOX1RBQkxFX1NJWkUgPSBJbnQzMkFycmF5LmZyb20oWzI1NiwgNDAyLCA0MzYsIDQ2OCwgNTAwLCA1MzQsIDU2NiwgNTk4LCA2MzAsIDY2MiwgNjk0LCA3MjYsIDc1OCwgNzkwLCA4MjIsIDg1NCwgODg2LCA5MjAsIDk1MiwgOTg0LCAxMDE2LCAxMDQ4LCAxMDgwXSk7CisgIHZhciBDT0RFX0xFTkdUSF9DT0RFX09SREVSID0gSW50MzJBcnJheS5mcm9tKFsxLCAyLCAzLCA0LCAwLCA1LCAxNywgNiwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTVdKTsKKyAgdmFyIERJU1RBTkNFX1NIT1JUX0NPREVfSU5ERVhfT0ZGU0VUID0gSW50MzJBcnJheS5mcm9tKFswLCAzLCAyLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAzLCAzLCAzLCAzLCAzXSk7CisgIHZhciBESVNUQU5DRV9TSE9SVF9DT0RFX1ZBTFVFX09GRlNFVCA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMCwgMCwgLTEsIDEsIC0yLCAyLCAtMywgMywgLTEsIDEsIC0yLCAyLCAtMywgM10pOworICB2YXIgRklYRURfVEFCTEUgPSBJbnQzMkFycmF5LmZyb20oWzB4MDIwMDAwLCAweDAyMDAwNCwgMHgwMjAwMDMsIDB4MDMwMDAyLCAweDAyMDAwMCwgMHgwMjAwMDQsIDB4MDIwMDAzLCAweDA0MDAwMSwgMHgwMjAwMDAsIDB4MDIwMDA0LCAweDAyMDAwMywgMHgwMzAwMDIsIDB4MDIwMDAwLCAweDAyMDAwNCwgMHgwMjAwMDMsIDB4MDQwMDA1XSk7CisgIHZhciBESUNUSU9OQVJZX09GRlNFVFNfQllfTEVOR1RIID0gSW50MzJBcnJheS5mcm9tKFswLCAwLCAwLCAwLCAwLCA0MDk2LCA5MjE2LCAyMTUwNCwgMzU4NDAsIDQ0MDMyLCA1MzI0OCwgNjM0ODgsIDc0NzUyLCA4NzA0MCwgOTM2OTYsIDEwMDg2NCwgMTA0NzA0LCAxMDY3NTIsIDEwODkyOCwgMTEzNTM2LCAxMTU5NjgsIDExODUyOCwgMTE5ODcyLCAxMjEyODAsIDEyMjAxNl0pOworICB2YXIgRElDVElPTkFSWV9TSVpFX0JJVFNfQllfTEVOR1RIID0gSW50MzJBcnJheS5mcm9tKFswLCAwLCAwLCAwLCAxMCwgMTAsIDExLCAxMSwgMTAsIDEwLCAxMCwgMTAsIDEwLCA5LCA5LCA4LCA3LCA3LCA4LCA3LCA3LCA2LCA2LCA1LCA1XSk7CisgIHZhciBCTE9DS19MRU5HVEhfT0ZGU0VUID0gSW50MzJBcnJheS5mcm9tKFsxLCA1LCA5LCAxMywgMTcsIDI1LCAzMywgNDEsIDQ5LCA2NSwgODEsIDk3LCAxMTMsIDE0NSwgMTc3LCAyMDksIDI0MSwgMzA1LCAzNjksIDQ5NywgNzUzLCAxMjY1LCAyMjg5LCA0MzM3LCA4NDMzLCAxNjYyNV0pOworICB2YXIgQkxPQ0tfTEVOR1RIX05fQklUUyA9IEludDMyQXJyYXkuZnJvbShbMiwgMiwgMiwgMiwgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwgNiwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDI0XSk7CisgIHZhciBJTlNFUlRfTEVOR1RIX05fQklUUyA9IEludDE2QXJyYXkuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMiwgMHgwMiwgMHgwMywgMHgwMywgMHgwNCwgMHgwNCwgMHgwNSwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwgMHgwOSwgMHgwQSwgMHgwQywgMHgwRSwgMHgxOF0pOworICB2YXIgQ09QWV9MRU5HVEhfTl9CSVRTID0gSW50MTZBcnJheS5mcm9tKFsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAyLCAweDAyLCAweDAzLCAweDAzLCAweDA0LCAweDA0LCAweDA1LCAweDA1LCAweDA2LCAweDA3LCAweDA4LCAweDA5LCAweDBBLCAweDE4XSk7CisgIHZhciBDTURfTE9PS1VQID0gbmV3IEludDE2QXJyYXkoMjgxNik7CisgIHsKKyAgICB1bnBhY2tDb21tYW5kTG9va3VwVGFibGUoQ01EX0xPT0tVUCk7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7bnVtYmVyfSBpCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIGxvZzJmbG9vcihpKSB7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gcmVzdWx0ID0gLTE7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gc3RlcCA9IDE2OworICAgIHdoaWxlIChzdGVwID4gMCkgeworICAgICAgaWYgKChpID4+PiBzdGVwKSAhPSAwKSB7CisgICAgICAgIHJlc3VsdCArPSBzdGVwOworICAgICAgICBpID0gaSA+Pj4gc3RlcDsKKyAgICAgIH0KKyAgICAgIHN0ZXAgPSBzdGVwID4+IDE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQgKyBpOworICB9CisgIC8qKgorICAgKiBAcGFyYW0ge251bWJlcn0gbnBvc3RmaXgKKyAgICogQHBhcmFtIHtudW1iZXJ9IG5kaXJlY3QKKyAgICogQHBhcmFtIHtudW1iZXJ9IG1heG5kaXN0Yml0cworICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAqLworICBmdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0U2l6ZShucG9zdGZpeCwgbmRpcmVjdCwgbWF4bmRpc3RiaXRzKSB7CisgICAgcmV0dXJuIDE2ICsgbmRpcmVjdCArIDIgKiAobWF4bmRpc3RiaXRzIDw8IG5wb3N0Zml4KTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHtudW1iZXJ9IG1heERpc3RhbmNlCisgICAqIEBwYXJhbSB7bnVtYmVyfSBucG9zdGZpeAorICAgKiBAcGFyYW0ge251bWJlcn0gbmRpcmVjdAorICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAqLworICBmdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQobWF4RGlzdGFuY2UsIG5wb3N0Zml4LCBuZGlyZWN0KSB7CisgICAgaWYgKG1heERpc3RhbmNlIDwgbmRpcmVjdCArICgyIDw8IG5wb3N0Zml4KSkgeworICAgICAgdGhyb3cgIm1heERpc3RhbmNlIGlzIHRvbyBzbWFsbCI7CisgICAgfQorICAgIHZhciAvKiogbnVtYmVyICovIG9mZnNldCA9ICgobWF4RGlzdGFuY2UgLSBuZGlyZWN0KSA+PiBucG9zdGZpeCkgKyA0OworICAgIHZhciAvKiogbnVtYmVyICovIG5kaXN0Yml0cyA9IGxvZzJmbG9vcihvZmZzZXQpIC0gMTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBncm91cCA9ICgobmRpc3RiaXRzIC0gMSkgPDwgMSkgfCAoKG9mZnNldCA+PiBuZGlzdGJpdHMpICYgMSk7CisgICAgcmV0dXJuICgoZ3JvdXAgLSAxKSA8PCBucG9zdGZpeCkgKyAoMSA8PCBucG9zdGZpeCkgKyBuZGlyZWN0ICsgMTY7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDE2QXJyYXl9IGNtZExvb2t1cAorICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gdW5wYWNrQ29tbWFuZExvb2t1cFRhYmxlKGNtZExvb2t1cCkgeworICAgIHZhciAvKiogIUludDE2QXJyYXkgKi8gaW5zZXJ0TGVuZ3RoT2Zmc2V0cyA9IG5ldyBJbnQxNkFycmF5KDI0KTsKKyAgICB2YXIgLyoqICFJbnQxNkFycmF5ICovIGNvcHlMZW5ndGhPZmZzZXRzID0gbmV3IEludDE2QXJyYXkoMjQpOworICAgIGNvcHlMZW5ndGhPZmZzZXRzWzBdID0gMjsKKyAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgMjM7ICsraSkgeworICAgICAgaW5zZXJ0TGVuZ3RoT2Zmc2V0c1tpICsgMV0gPSAoaW5zZXJ0TGVuZ3RoT2Zmc2V0c1tpXSArICgxIDw8IElOU0VSVF9MRU5HVEhfTl9CSVRTW2ldKSk7CisgICAgICBjb3B5TGVuZ3RoT2Zmc2V0c1tpICsgMV0gPSAoY29weUxlbmd0aE9mZnNldHNbaV0gKyAoMSA8PCBDT1BZX0xFTkdUSF9OX0JJVFNbaV0pKTsKKyAgICB9CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBjbWRDb2RlID0gMDsgY21kQ29kZSA8IDcwNDsgKytjbWRDb2RlKSB7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyByYW5nZUlkeCA9IGNtZENvZGUgPj4+IDY7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBkaXN0YW5jZUNvbnRleHRPZmZzZXQgPSAtNDsKKyAgICAgIGlmIChyYW5nZUlkeCA+PSAyKSB7CisgICAgICAgIHJhbmdlSWR4IC09IDI7CisgICAgICAgIGRpc3RhbmNlQ29udGV4dE9mZnNldCA9IDA7CisgICAgICB9CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBpbnNlcnRDb2RlID0gKCgoMHgyOTg1MCA+Pj4gKHJhbmdlSWR4ICogMikpICYgMHgzKSA8PCAzKSB8ICgoY21kQ29kZSA+Pj4gMykgJiA3KTsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIGNvcHlDb2RlID0gKCgoMHgyNjI0NCA+Pj4gKHJhbmdlSWR4ICogMikpICYgMHgzKSA8PCAzKSB8IChjbWRDb2RlICYgNyk7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBjb3B5TGVuZ3RoT2Zmc2V0ID0gY29weUxlbmd0aE9mZnNldHNbY29weUNvZGVdOworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gZGlzdGFuY2VDb250ZXh0ID0gZGlzdGFuY2VDb250ZXh0T2Zmc2V0ICsgKGNvcHlMZW5ndGhPZmZzZXQgPiA0ID8gMyA6IGNvcHlMZW5ndGhPZmZzZXQgLSAyKTsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIGluZGV4ID0gY21kQ29kZSAqIDQ7CisgICAgICBjbWRMb29rdXBbaW5kZXggKyAwXSA9IChJTlNFUlRfTEVOR1RIX05fQklUU1tpbnNlcnRDb2RlXSB8IChDT1BZX0xFTkdUSF9OX0JJVFNbY29weUNvZGVdIDw8IDgpKTsKKyAgICAgIGNtZExvb2t1cFtpbmRleCArIDFdID0gaW5zZXJ0TGVuZ3RoT2Zmc2V0c1tpbnNlcnRDb2RlXTsKKyAgICAgIGNtZExvb2t1cFtpbmRleCArIDJdID0gY29weUxlbmd0aE9mZnNldHNbY29weUNvZGVdOworICAgICAgY21kTG9va3VwW2luZGV4ICsgM10gPSBkaXN0YW5jZUNvbnRleHQ7CisgICAgfQorICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAqLworICBmdW5jdGlvbiBkZWNvZGVXaW5kb3dCaXRzKHMpIHsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBsYXJnZVdpbmRvd0VuYWJsZWQgPSBzLmlzTGFyZ2VXaW5kb3c7CisgICAgcy5pc0xhcmdlV2luZG93ID0gMDsKKyAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICB9CisgICAgaWYgKHJlYWRGZXdCaXRzKHMsIDEpID09IDApIHsKKyAgICAgIHJldHVybiAxNjsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gbiA9IHJlYWRGZXdCaXRzKHMsIDMpOworICAgIGlmIChuICE9IDApIHsKKyAgICAgIHJldHVybiAxNyArIG47CisgICAgfQorICAgIG4gPSByZWFkRmV3Qml0cyhzLCAzKTsKKyAgICBpZiAobiAhPSAwKSB7CisgICAgICBpZiAobiA9PSAxKSB7CisgICAgICAgIGlmIChsYXJnZVdpbmRvd0VuYWJsZWQgPT0gMCkgeworICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBzLmlzTGFyZ2VXaW5kb3cgPSAxOworICAgICAgICBpZiAocmVhZEZld0JpdHMocywgMSkgPT0gMSkgeworICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBuID0gcmVhZEZld0JpdHMocywgNik7CisgICAgICAgIGlmIChuIDwgMTAgfHwgbiA+IDMwKSB7CisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDggKyBuOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTc7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBlbmFibGVFYWdlck91dHB1dChzKSB7CisgICAgaWYgKHMucnVubmluZ1N0YXRlICE9IDEpIHsKKyAgICAgIHRocm93ICJTdGF0ZSBNVVNUIGJlIGZyZXNobHkgaW5pdGlhbGl6ZWQiOworICAgIH0KKyAgICBzLmlzRWFnZXIgPSAxOworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gZW5hYmxlTGFyZ2VXaW5kb3cocykgeworICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSAhPSAxKSB7CisgICAgICB0aHJvdyAiU3RhdGUgTVVTVCBiZSBmcmVzaGx5IGluaXRpYWxpemVkIjsKKyAgICB9CisgICAgcy5pc0xhcmdlV2luZG93ID0gMTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHBhcmFtIHshSW5wdXRTdHJlYW19IGlucHV0CisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBpbml0U3RhdGUocywgaW5wdXQpIHsKKyAgICBpZiAocy5ydW5uaW5nU3RhdGUgIT0gMCkgeworICAgICAgdGhyb3cgIlN0YXRlIE1VU1QgYmUgdW5pbml0aWFsaXplZCI7CisgICAgfQorICAgIHMuYmxvY2tUcmVlcyA9IG5ldyBJbnQzMkFycmF5KDMwOTEpOworICAgIHMuYmxvY2tUcmVlc1swXSA9IDc7CisgICAgcy5kaXN0UmJJZHggPSAzOworICAgIHZhciAvKiogbnVtYmVyICovIG1heERpc3RhbmNlQWxwaGFiZXRMaW1pdCA9IGNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRMaW1pdCgweDdGRkZGRkZDLCAzLCAxNSA8PCAzKTsKKyAgICBzLmRpc3RFeHRyYUJpdHMgPSBuZXcgSW50OEFycmF5KG1heERpc3RhbmNlQWxwaGFiZXRMaW1pdCk7CisgICAgcy5kaXN0T2Zmc2V0ID0gbmV3IEludDMyQXJyYXkobWF4RGlzdGFuY2VBbHBoYWJldExpbWl0KTsKKyAgICBzLmlucHV0ID0gaW5wdXQ7CisgICAgaW5pdEJpdFJlYWRlcihzKTsKKyAgICBzLnJ1bm5pbmdTdGF0ZSA9IDE7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBjbG9zZShzKSB7CisgICAgaWYgKHMucnVubmluZ1N0YXRlID09IDApIHsKKyAgICAgIHRocm93ICJTdGF0ZSBNVVNUIGJlIGluaXRpYWxpemVkIjsKKyAgICB9CisgICAgaWYgKHMucnVubmluZ1N0YXRlID09IDExKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHMucnVubmluZ1N0YXRlID0gMTE7CisgICAgaWYgKHMuaW5wdXQgIT0gbnVsbCkgeworICAgICAgY2xvc2VJbnB1dChzLmlucHV0KTsKKyAgICAgIHMuaW5wdXQgPSBudWxsOworICAgIH0KKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKHMpIHsKKyAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICB9CisgICAgaWYgKHJlYWRGZXdCaXRzKHMsIDEpICE9IDApIHsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIG4gPSByZWFkRmV3Qml0cyhzLCAzKTsKKyAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gcmVhZEZld0JpdHMocywgbikgKyAoMSA8PCBuKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBkZWNvZGVNZXRhQmxvY2tMZW5ndGgocykgeworICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgIH0KKyAgICBzLmlucHV0RW5kID0gcmVhZEZld0JpdHMocywgMSk7CisgICAgcy5tZXRhQmxvY2tMZW5ndGggPSAwOworICAgIHMuaXNVbmNvbXByZXNzZWQgPSAwOworICAgIHMuaXNNZXRhZGF0YSA9IDA7CisgICAgaWYgKChzLmlucHV0RW5kICE9IDApICYmIHJlYWRGZXdCaXRzKHMsIDEpICE9IDApIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gc2l6ZU5pYmJsZXMgPSByZWFkRmV3Qml0cyhzLCAyKSArIDQ7CisgICAgaWYgKHNpemVOaWJibGVzID09IDcpIHsKKyAgICAgIHMuaXNNZXRhZGF0YSA9IDE7CisgICAgICBpZiAocmVhZEZld0JpdHMocywgMSkgIT0gMCkgeworICAgICAgICB0aHJvdyAiQ29ycnVwdGVkIHJlc2VydmVkIGJpdCI7CisgICAgICB9CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBzaXplQnl0ZXMgPSByZWFkRmV3Qml0cyhzLCAyKTsKKyAgICAgIGlmIChzaXplQnl0ZXMgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgc2l6ZUJ5dGVzOyBpKyspIHsKKyAgICAgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgICAgfQorICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBiaXRzID0gcmVhZEZld0JpdHMocywgOCk7CisgICAgICAgIGlmIChiaXRzID09IDAgJiYgaSArIDEgPT0gc2l6ZUJ5dGVzICYmIHNpemVCeXRlcyA+IDEpIHsKKyAgICAgICAgICB0aHJvdyAiRXh1YmVyYW50IG5pYmJsZSI7CisgICAgICAgIH0KKyAgICAgICAgcy5tZXRhQmxvY2tMZW5ndGggfD0gYml0cyA8PCAoaSAqIDgpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgc2l6ZU5pYmJsZXM7IGkrKykgeworICAgICAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgICAgICB9CisgICAgICAgIHZhciAvKiogbnVtYmVyICovIGJpdHMgPSByZWFkRmV3Qml0cyhzLCA0KTsKKyAgICAgICAgaWYgKGJpdHMgPT0gMCAmJiBpICsgMSA9PSBzaXplTmliYmxlcyAmJiBzaXplTmliYmxlcyA+IDQpIHsKKyAgICAgICAgICB0aHJvdyAiRXh1YmVyYW50IG5pYmJsZSI7CisgICAgICAgIH0KKyAgICAgICAgcy5tZXRhQmxvY2tMZW5ndGggfD0gYml0cyA8PCAoaSAqIDQpOworICAgICAgfQorICAgIH0KKyAgICBzLm1ldGFCbG9ja0xlbmd0aCsrOworICAgIGlmIChzLmlucHV0RW5kID09IDApIHsKKyAgICAgIHMuaXNVbmNvbXByZXNzZWQgPSByZWFkRmV3Qml0cyhzLCAxKTsKKyAgICB9CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDMyQXJyYXl9IHRhYmxlR3JvdXAKKyAgICogQHBhcmFtIHtudW1iZXJ9IHRhYmxlSWR4CisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRTeW1ib2wodGFibGVHcm91cCwgdGFibGVJZHgsIHMpIHsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBvZmZzZXQgPSB0YWJsZUdyb3VwW3RhYmxlSWR4XTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyB2YWwgPSAocy5hY2N1bXVsYXRvcjMyID4+PiBzLmJpdE9mZnNldCk7CisgICAgb2Zmc2V0ICs9IHZhbCAmIDB4RkY7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gYml0cyA9IHRhYmxlR3JvdXBbb2Zmc2V0XSA+PiAxNjsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBzeW0gPSB0YWJsZUdyb3VwW29mZnNldF0gJiAweEZGRkY7CisgICAgaWYgKGJpdHMgPD0gOCkgeworICAgICAgcy5iaXRPZmZzZXQgKz0gYml0czsKKyAgICAgIHJldHVybiBzeW07CisgICAgfQorICAgIG9mZnNldCArPSBzeW07CisgICAgdmFyIC8qKiBudW1iZXIgKi8gbWFzayA9ICgxIDw8IGJpdHMpIC0gMTsKKyAgICBvZmZzZXQgKz0gKHZhbCAmIG1hc2spID4+PiA4OworICAgIHMuYml0T2Zmc2V0ICs9ICgodGFibGVHcm91cFtvZmZzZXRdID4+IDE2KSArIDgpOworICAgIHJldHVybiB0YWJsZUdyb3VwW29mZnNldF0gJiAweEZGRkY7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDMyQXJyYXl9IHRhYmxlR3JvdXAKKyAgICogQHBhcmFtIHtudW1iZXJ9IHRhYmxlSWR4CisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRCbG9ja0xlbmd0aCh0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcykgeworICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBjb2RlID0gcmVhZFN5bWJvbCh0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcyk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gbiA9IEJMT0NLX0xFTkdUSF9OX0JJVFNbY29kZV07CisgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgcy5iaXRPZmZzZXQgLT0gMTY7CisgICAgfQorICAgIHJldHVybiBCTE9DS19MRU5HVEhfT0ZGU0VUW2NvZGVdICsgKChuIDw9IDE2KSA/IHJlYWRGZXdCaXRzKHMsIG4pIDogcmVhZE1hbnlCaXRzKHMsIG4pKTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshSW50MzJBcnJheX0gdgorICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIG1vdmVUb0Zyb250KHYsIGluZGV4KSB7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gdmFsdWUgPSB2W2luZGV4XTsKKyAgICBmb3IgKDsgaW5kZXggPiAwOyBpbmRleC0tKSB7CisgICAgICB2W2luZGV4XSA9IHZbaW5kZXggLSAxXTsKKyAgICB9CisgICAgdlswXSA9IHZhbHVlOworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFJbnQ4QXJyYXl9IHYKKyAgICogQHBhcmFtIHtudW1iZXJ9IHZMZW4KKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIGludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9ybSh2LCB2TGVuKSB7CisgICAgdmFyIC8qKiAhSW50MzJBcnJheSAqLyBtdGYgPSBuZXcgSW50MzJBcnJheSgyNTYpOworICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAgbXRmW2ldID0gaTsKKyAgICB9CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IHZMZW47IGkrKykgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gaW5kZXggPSB2W2ldICYgMHhGRjsKKyAgICAgIHZbaV0gPSBtdGZbaW5kZXhdOworICAgICAgaWYgKGluZGV4ICE9IDApIHsKKyAgICAgICAgbW92ZVRvRnJvbnQobXRmLCBpbmRleCk7CisgICAgICB9CisgICAgfQorICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFJbnQzMkFycmF5fSBjb2RlTGVuZ3RoQ29kZUxlbmd0aHMKKyAgICogQHBhcmFtIHtudW1iZXJ9IG51bVN5bWJvbHMKKyAgICogQHBhcmFtIHshSW50MzJBcnJheX0gY29kZUxlbmd0aHMKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRIdWZmbWFuQ29kZUxlbmd0aHMoY29kZUxlbmd0aENvZGVMZW5ndGhzLCBudW1TeW1ib2xzLCBjb2RlTGVuZ3RocywgcykgeworICAgIHZhciAvKiogbnVtYmVyICovIHN5bWJvbCA9IDA7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gcHJldkNvZGVMZW4gPSA4OworICAgIHZhciAvKiogbnVtYmVyICovIHJlcGVhdCA9IDA7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gcmVwZWF0Q29kZUxlbiA9IDA7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gc3BhY2UgPSAzMjc2ODsKKyAgICB2YXIgLyoqICFJbnQzMkFycmF5ICovIHRhYmxlID0gbmV3IEludDMyQXJyYXkoMzIgKyAxKTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyB0YWJsZUlkeCA9IHRhYmxlLmxlbmd0aCAtIDE7CisgICAgYnVpbGRIdWZmbWFuVGFibGUodGFibGUsIHRhYmxlSWR4LCA1LCBjb2RlTGVuZ3RoQ29kZUxlbmd0aHMsIDE4KTsKKyAgICB3aGlsZSAoc3ltYm9sIDwgbnVtU3ltYm9scyAmJiBzcGFjZSA+IDApIHsKKyAgICAgIGlmIChzLmhhbGZPZmZzZXQgPiAyMDMwKSB7CisgICAgICAgIGRvUmVhZE1vcmVJbnB1dChzKTsKKyAgICAgIH0KKyAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgIH0KKyAgICAgIHZhciAvKiogbnVtYmVyICovIHAgPSAocy5hY2N1bXVsYXRvcjMyID4+PiBzLmJpdE9mZnNldCkgJiAzMTsKKyAgICAgIHMuYml0T2Zmc2V0ICs9IHRhYmxlW3BdID4+IDE2OworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gY29kZUxlbiA9IHRhYmxlW3BdICYgMHhGRkZGOworICAgICAgaWYgKGNvZGVMZW4gPCAxNikgeworICAgICAgICByZXBlYXQgPSAwOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2wrK10gPSBjb2RlTGVuOworICAgICAgICBpZiAoY29kZUxlbiAhPSAwKSB7CisgICAgICAgICAgcHJldkNvZGVMZW4gPSBjb2RlTGVuOworICAgICAgICAgIHNwYWNlIC09IDMyNzY4ID4+IGNvZGVMZW47CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciAvKiogbnVtYmVyICovIGV4dHJhQml0cyA9IGNvZGVMZW4gLSAxNDsKKyAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gbmV3TGVuID0gMDsKKyAgICAgICAgaWYgKGNvZGVMZW4gPT0gMTYpIHsKKyAgICAgICAgICBuZXdMZW4gPSBwcmV2Q29kZUxlbjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVwZWF0Q29kZUxlbiAhPSBuZXdMZW4pIHsKKyAgICAgICAgICByZXBlYXQgPSAwOworICAgICAgICAgIHJlcGVhdENvZGVMZW4gPSBuZXdMZW47CisgICAgICAgIH0KKyAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gb2xkUmVwZWF0ID0gcmVwZWF0OworICAgICAgICBpZiAocmVwZWF0ID4gMCkgeworICAgICAgICAgIHJlcGVhdCAtPSAyOworICAgICAgICAgIHJlcGVhdCA8PD0gZXh0cmFCaXRzOworICAgICAgICB9CisgICAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICAgICAgcy5iaXRPZmZzZXQgLT0gMTY7CisgICAgICAgIH0KKyAgICAgICAgcmVwZWF0ICs9IHJlYWRGZXdCaXRzKHMsIGV4dHJhQml0cykgKyAzOworICAgICAgICB2YXIgLyoqIG51bWJlciAqLyByZXBlYXREZWx0YSA9IHJlcGVhdCAtIG9sZFJlcGVhdDsKKyAgICAgICAgaWYgKHN5bWJvbCArIHJlcGVhdERlbHRhID4gbnVtU3ltYm9scykgeworICAgICAgICAgIHRocm93ICJzeW1ib2wgKyByZXBlYXREZWx0YSA+IG51bVN5bWJvbHMiOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCByZXBlYXREZWx0YTsgaSsrKSB7CisgICAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sKytdID0gcmVwZWF0Q29kZUxlbjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVwZWF0Q29kZUxlbiAhPSAwKSB7CisgICAgICAgICAgc3BhY2UgLT0gcmVwZWF0RGVsdGEgPDwgKDE1IC0gcmVwZWF0Q29kZUxlbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHNwYWNlICE9IDApIHsKKyAgICAgIHRocm93ICJVbnVzZWQgc3BhY2UiOworICAgIH0KKyAgICBjb2RlTGVuZ3Rocy5maWxsKDAsIHN5bWJvbCwgbnVtU3ltYm9scyk7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDMyQXJyYXl9IHN5bWJvbHMKKyAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aAorICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gY2hlY2tEdXBlcyhzeW1ib2xzLCBsZW5ndGgpIHsKKyAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgKytpKSB7CisgICAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGogPSBpICsgMTsgaiA8IGxlbmd0aDsgKytqKSB7CisgICAgICAgIGlmIChzeW1ib2xzW2ldID09IHN5bWJvbHNbal0pIHsKKyAgICAgICAgICB0aHJvdyAiRHVwbGljYXRlIHNpbXBsZSBIdWZmbWFuIGNvZGUgc3ltYm9sIjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorICAvKioKKyAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhYmV0U2l6ZU1heAorICAgKiBAcGFyYW0ge251bWJlcn0gYWxwaGFiZXRTaXplTGltaXQKKyAgICogQHBhcmFtIHshSW50MzJBcnJheX0gdGFibGVHcm91cAorICAgKiBAcGFyYW0ge251bWJlcn0gdGFibGVJZHgKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gcmVhZFNpbXBsZUh1ZmZtYW5Db2RlKGFscGhhYmV0U2l6ZU1heCwgYWxwaGFiZXRTaXplTGltaXQsIHRhYmxlR3JvdXAsIHRhYmxlSWR4LCBzKSB7CisgICAgdmFyIC8qKiAhSW50MzJBcnJheSAqLyBjb2RlTGVuZ3RocyA9IG5ldyBJbnQzMkFycmF5KGFscGhhYmV0U2l6ZUxpbWl0KTsKKyAgICB2YXIgLyoqICFJbnQzMkFycmF5ICovIHN5bWJvbHMgPSBuZXcgSW50MzJBcnJheSg0KTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBtYXhCaXRzID0gMSArIGxvZzJmbG9vcihhbHBoYWJldFNpemVNYXggLSAxKTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBudW1TeW1ib2xzID0gcmVhZEZld0JpdHMocywgMikgKyAxOworICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCBudW1TeW1ib2xzOyBpKyspIHsKKyAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgIH0KKyAgICAgIHZhciAvKiogbnVtYmVyICovIHN5bWJvbCA9IHJlYWRGZXdCaXRzKHMsIG1heEJpdHMpOworICAgICAgaWYgKHN5bWJvbCA+PSBhbHBoYWJldFNpemVMaW1pdCkgeworICAgICAgICB0aHJvdyAiQ2FuJ3QgcmVhZEh1ZmZtYW5Db2RlIjsKKyAgICAgIH0KKyAgICAgIHN5bWJvbHNbaV0gPSBzeW1ib2w7CisgICAgfQorICAgIGNoZWNrRHVwZXMoc3ltYm9scywgbnVtU3ltYm9scyk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gaGlzdG9ncmFtSWQgPSBudW1TeW1ib2xzOworICAgIGlmIChudW1TeW1ib2xzID09IDQpIHsKKyAgICAgIGhpc3RvZ3JhbUlkICs9IHJlYWRGZXdCaXRzKHMsIDEpOworICAgIH0KKyAgICBzd2l0Y2goaGlzdG9ncmFtSWQpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1swXV0gPSAxOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1swXV0gPSAxOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzFdXSA9IDE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOgorICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzBdXSA9IDE7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMV1dID0gMjsKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1syXV0gPSAyOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNDoKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1swXV0gPSAyOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzFdXSA9IDI7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMl1dID0gMjsKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1szXV0gPSAyOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNToKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1swXV0gPSAxOworICAgICAgICBjb2RlTGVuZ3Roc1tzeW1ib2xzWzFdXSA9IDI7CisgICAgICAgIGNvZGVMZW5ndGhzW3N5bWJvbHNbMl1dID0gMzsKKyAgICAgICAgY29kZUxlbmd0aHNbc3ltYm9sc1szXV0gPSAzOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRIdWZmbWFuVGFibGUodGFibGVHcm91cCwgdGFibGVJZHgsIDgsIGNvZGVMZW5ndGhzLCBhbHBoYWJldFNpemVMaW1pdCk7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7bnVtYmVyfSBhbHBoYWJldFNpemVMaW1pdAorICAgKiBAcGFyYW0ge251bWJlcn0gc2tpcAorICAgKiBAcGFyYW0geyFJbnQzMkFycmF5fSB0YWJsZUdyb3VwCisgICAqIEBwYXJhbSB7bnVtYmVyfSB0YWJsZUlkeAorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAqLworICBmdW5jdGlvbiByZWFkQ29tcGxleEh1ZmZtYW5Db2RlKGFscGhhYmV0U2l6ZUxpbWl0LCBza2lwLCB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcykgeworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gY29kZUxlbmd0aHMgPSBuZXcgSW50MzJBcnJheShhbHBoYWJldFNpemVMaW1pdCk7CisgICAgdmFyIC8qKiAhSW50MzJBcnJheSAqLyBjb2RlTGVuZ3RoQ29kZUxlbmd0aHMgPSBuZXcgSW50MzJBcnJheSgxOCk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gc3BhY2UgPSAzMjsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBudW1Db2RlcyA9IDA7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gc2tpcDsgaSA8IDE4ICYmIHNwYWNlID4gMDsgaSsrKSB7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBjb2RlTGVuSWR4ID0gQ09ERV9MRU5HVEhfQ09ERV9PUkRFUltpXTsKKyAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgIH0KKyAgICAgIHZhciAvKiogbnVtYmVyICovIHAgPSAocy5hY2N1bXVsYXRvcjMyID4+PiBzLmJpdE9mZnNldCkgJiAxNTsKKyAgICAgIHMuYml0T2Zmc2V0ICs9IEZJWEVEX1RBQkxFW3BdID4+IDE2OworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gdiA9IEZJWEVEX1RBQkxFW3BdICYgMHhGRkZGOworICAgICAgY29kZUxlbmd0aENvZGVMZW5ndGhzW2NvZGVMZW5JZHhdID0gdjsKKyAgICAgIGlmICh2ICE9IDApIHsKKyAgICAgICAgc3BhY2UgLT0gKDMyID4+IHYpOworICAgICAgICBudW1Db2RlcysrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoc3BhY2UgIT0gMCAmJiBudW1Db2RlcyAhPSAxKSB7CisgICAgICB0aHJvdyAiQ29ycnVwdGVkIEh1ZmZtYW4gY29kZSBoaXN0b2dyYW0iOworICAgIH0KKyAgICByZWFkSHVmZm1hbkNvZGVMZW5ndGhzKGNvZGVMZW5ndGhDb2RlTGVuZ3RocywgYWxwaGFiZXRTaXplTGltaXQsIGNvZGVMZW5ndGhzLCBzKTsKKyAgICByZXR1cm4gYnVpbGRIdWZmbWFuVGFibGUodGFibGVHcm91cCwgdGFibGVJZHgsIDgsIGNvZGVMZW5ndGhzLCBhbHBoYWJldFNpemVMaW1pdCk7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7bnVtYmVyfSBhbHBoYWJldFNpemVNYXgKKyAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhYmV0U2l6ZUxpbWl0CisgICAqIEBwYXJhbSB7IUludDMyQXJyYXl9IHRhYmxlR3JvdXAKKyAgICogQHBhcmFtIHtudW1iZXJ9IHRhYmxlSWR4CisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRIdWZmbWFuQ29kZShhbHBoYWJldFNpemVNYXgsIGFscGhhYmV0U2l6ZUxpbWl0LCB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcykgeworICAgIGlmIChzLmhhbGZPZmZzZXQgPiAyMDMwKSB7CisgICAgICBkb1JlYWRNb3JlSW5wdXQocyk7CisgICAgfQorICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBzaW1wbGVDb2RlT3JTa2lwID0gcmVhZEZld0JpdHMocywgMik7CisgICAgaWYgKHNpbXBsZUNvZGVPclNraXAgPT0gMSkgeworICAgICAgcmV0dXJuIHJlYWRTaW1wbGVIdWZmbWFuQ29kZShhbHBoYWJldFNpemVNYXgsIGFscGhhYmV0U2l6ZUxpbWl0LCB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiByZWFkQ29tcGxleEh1ZmZtYW5Db2RlKGFscGhhYmV0U2l6ZUxpbWl0LCBzaW1wbGVDb2RlT3JTa2lwLCB0YWJsZUdyb3VwLCB0YWJsZUlkeCwgcyk7CisgICAgfQorICB9CisgIC8qKgorICAgKiBAcGFyYW0ge251bWJlcn0gY29udGV4dE1hcFNpemUKKyAgICogQHBhcmFtIHshSW50OEFycmF5fSBjb250ZXh0TWFwCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIGRlY29kZUNvbnRleHRNYXAoY29udGV4dE1hcFNpemUsIGNvbnRleHRNYXAsIHMpIHsKKyAgICBpZiAocy5oYWxmT2Zmc2V0ID4gMjAzMCkgeworICAgICAgZG9SZWFkTW9yZUlucHV0KHMpOworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBudW1UcmVlcyA9IGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShzKSArIDE7CisgICAgaWYgKG51bVRyZWVzID09IDEpIHsKKyAgICAgIGNvbnRleHRNYXAuZmlsbCgwLCAwLCBjb250ZXh0TWFwU2l6ZSk7CisgICAgICByZXR1cm4gbnVtVHJlZXM7CisgICAgfQorICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyB1c2VSbGVGb3JaZXJvcyA9IHJlYWRGZXdCaXRzKHMsIDEpOworICAgIHZhciAvKiogbnVtYmVyICovIG1heFJ1bkxlbmd0aFByZWZpeCA9IDA7CisgICAgaWYgKHVzZVJsZUZvclplcm9zICE9IDApIHsKKyAgICAgIG1heFJ1bkxlbmd0aFByZWZpeCA9IHJlYWRGZXdCaXRzKHMsIDQpICsgMTsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gYWxwaGFiZXRTaXplID0gbnVtVHJlZXMgKyBtYXhSdW5MZW5ndGhQcmVmaXg7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gdGFibGVTaXplID0gTUFYX0hVRkZNQU5fVEFCTEVfU0laRVsoYWxwaGFiZXRTaXplICsgMzEpID4+IDVdOworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gdGFibGUgPSBuZXcgSW50MzJBcnJheSh0YWJsZVNpemUgKyAxKTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyB0YWJsZUlkeCA9IHRhYmxlLmxlbmd0aCAtIDE7CisgICAgcmVhZEh1ZmZtYW5Db2RlKGFscGhhYmV0U2l6ZSwgYWxwaGFiZXRTaXplLCB0YWJsZSwgdGFibGVJZHgsIHMpOworICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCBjb250ZXh0TWFwU2l6ZTsgKSB7CisgICAgICBpZiAocy5oYWxmT2Zmc2V0ID4gMjAzMCkgeworICAgICAgICBkb1JlYWRNb3JlSW5wdXQocyk7CisgICAgICB9CisgICAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgICAgcy5iaXRPZmZzZXQgLT0gMTY7CisgICAgICB9CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBjb2RlID0gcmVhZFN5bWJvbCh0YWJsZSwgdGFibGVJZHgsIHMpOworICAgICAgaWYgKGNvZGUgPT0gMCkgeworICAgICAgICBjb250ZXh0TWFwW2ldID0gMDsKKyAgICAgICAgaSsrOworICAgICAgfSBlbHNlIGlmIChjb2RlIDw9IG1heFJ1bkxlbmd0aFByZWZpeCkgeworICAgICAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgICAgICB9CisgICAgICAgIHZhciAvKiogbnVtYmVyICovIHJlcHMgPSAoMSA8PCBjb2RlKSArIHJlYWRGZXdCaXRzKHMsIGNvZGUpOworICAgICAgICB3aGlsZSAocmVwcyAhPSAwKSB7CisgICAgICAgICAgaWYgKGkgPj0gY29udGV4dE1hcFNpemUpIHsKKyAgICAgICAgICAgIHRocm93ICJDb3JydXB0ZWQgY29udGV4dCBtYXAiOworICAgICAgICAgIH0KKyAgICAgICAgICBjb250ZXh0TWFwW2ldID0gMDsKKyAgICAgICAgICBpKys7CisgICAgICAgICAgcmVwcy0tOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBjb250ZXh0TWFwW2ldID0gKGNvZGUgLSBtYXhSdW5MZW5ndGhQcmVmaXgpOworICAgICAgICBpKys7CisgICAgICB9CisgICAgfQorICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgIH0KKyAgICBpZiAocmVhZEZld0JpdHMocywgMSkgPT0gMSkgeworICAgICAgaW52ZXJzZU1vdmVUb0Zyb250VHJhbnNmb3JtKGNvbnRleHRNYXAsIGNvbnRleHRNYXBTaXplKTsKKyAgICB9CisgICAgcmV0dXJuIG51bVRyZWVzOworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcGFyYW0ge251bWJlcn0gdHJlZVR5cGUKKyAgICogQHBhcmFtIHtudW1iZXJ9IG51bUJsb2NrVHlwZXMKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKHMsIHRyZWVUeXBlLCBudW1CbG9ja1R5cGVzKSB7CisgICAgdmFyIC8qKiAhSW50MzJBcnJheSAqLyByaW5nQnVmZmVycyA9IHMucmluZ3M7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gb2Zmc2V0ID0gNCArIHRyZWVUeXBlICogMjsKKyAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gYmxvY2tUeXBlID0gcmVhZFN5bWJvbChzLmJsb2NrVHJlZXMsIDIgKiB0cmVlVHlwZSwgcyk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gcmVzdWx0ID0gcmVhZEJsb2NrTGVuZ3RoKHMuYmxvY2tUcmVlcywgMiAqIHRyZWVUeXBlICsgMSwgcyk7CisgICAgaWYgKGJsb2NrVHlwZSA9PSAxKSB7CisgICAgICBibG9ja1R5cGUgPSByaW5nQnVmZmVyc1tvZmZzZXQgKyAxXSArIDE7CisgICAgfSBlbHNlIGlmIChibG9ja1R5cGUgPT0gMCkgeworICAgICAgYmxvY2tUeXBlID0gcmluZ0J1ZmZlcnNbb2Zmc2V0XTsKKyAgICB9IGVsc2UgeworICAgICAgYmxvY2tUeXBlIC09IDI7CisgICAgfQorICAgIGlmIChibG9ja1R5cGUgPj0gbnVtQmxvY2tUeXBlcykgeworICAgICAgYmxvY2tUeXBlIC09IG51bUJsb2NrVHlwZXM7CisgICAgfQorICAgIHJpbmdCdWZmZXJzW29mZnNldF0gPSByaW5nQnVmZmVyc1tvZmZzZXQgKyAxXTsKKyAgICByaW5nQnVmZmVyc1tvZmZzZXQgKyAxXSA9IGJsb2NrVHlwZTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKHMpIHsKKyAgICBzLmxpdGVyYWxCbG9ja0xlbmd0aCA9IGRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChzLCAwLCBzLm51bUxpdGVyYWxCbG9ja1R5cGVzKTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBsaXRlcmFsQmxvY2tUeXBlID0gcy5yaW5nc1s1XTsKKyAgICBzLmNvbnRleHRNYXBTbGljZSA9IGxpdGVyYWxCbG9ja1R5cGUgPDwgNjsKKyAgICBzLmxpdGVyYWxUcmVlSWR4ID0gcy5jb250ZXh0TWFwW3MuY29udGV4dE1hcFNsaWNlXSAmIDB4RkY7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gY29udGV4dE1vZGUgPSBzLmNvbnRleHRNb2Rlc1tsaXRlcmFsQmxvY2tUeXBlXTsKKyAgICBzLmNvbnRleHRMb29rdXBPZmZzZXQxID0gY29udGV4dE1vZGUgPDwgOTsKKyAgICBzLmNvbnRleHRMb29rdXBPZmZzZXQyID0gcy5jb250ZXh0TG9va3VwT2Zmc2V0MSArIDI1NjsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIGRlY29kZUNvbW1hbmRCbG9ja1N3aXRjaChzKSB7CisgICAgcy5jb21tYW5kQmxvY2tMZW5ndGggPSBkZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgocywgMSwgcy5udW1Db21tYW5kQmxvY2tUeXBlcyk7CisgICAgcy5jb21tYW5kVHJlZUlkeCA9IHMucmluZ3NbN107CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBkZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKHMpIHsKKyAgICBzLmRpc3RhbmNlQmxvY2tMZW5ndGggPSBkZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgocywgMiwgcy5udW1EaXN0YW5jZUJsb2NrVHlwZXMpOworICAgIHMuZGlzdENvbnRleHRNYXBTbGljZSA9IHMucmluZ3NbOV0gPDwgMjsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIG1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIocykgeworICAgIHZhciAvKiogbnVtYmVyICovIG5ld1NpemUgPSBzLm1heFJpbmdCdWZmZXJTaXplOworICAgIGlmIChuZXdTaXplID4gcy5leHBlY3RlZFRvdGFsU2l6ZSkgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gbWluaW1hbE5ld1NpemUgPSBzLmV4cGVjdGVkVG90YWxTaXplOworICAgICAgd2hpbGUgKChuZXdTaXplID4+IDEpID4gbWluaW1hbE5ld1NpemUpIHsKKyAgICAgICAgbmV3U2l6ZSA+Pj0gMTsKKyAgICAgIH0KKyAgICAgIGlmICgocy5pbnB1dEVuZCA9PSAwKSAmJiBuZXdTaXplIDwgMTYzODQgJiYgcy5tYXhSaW5nQnVmZmVyU2l6ZSA+PSAxNjM4NCkgeworICAgICAgICBuZXdTaXplID0gMTYzODQ7CisgICAgICB9CisgICAgfQorICAgIGlmIChuZXdTaXplIDw9IHMucmluZ0J1ZmZlclNpemUpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gcmluZ0J1ZmZlclNpemVXaXRoU2xhY2sgPSBuZXdTaXplICsgMzc7CisgICAgdmFyIC8qKiAhSW50OEFycmF5ICovIG5ld0J1ZmZlciA9IG5ldyBJbnQ4QXJyYXkocmluZ0J1ZmZlclNpemVXaXRoU2xhY2spOworICAgIGlmIChzLnJpbmdCdWZmZXIubGVuZ3RoICE9IDApIHsKKyAgICAgIG5ld0J1ZmZlci5zZXQocy5yaW5nQnVmZmVyLnN1YmFycmF5KDAsIDAgKyBzLnJpbmdCdWZmZXJTaXplKSwgMCk7CisgICAgfQorICAgIHMucmluZ0J1ZmZlciA9IG5ld0J1ZmZlcjsKKyAgICBzLnJpbmdCdWZmZXJTaXplID0gbmV3U2l6ZTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWROZXh0TWV0YWJsb2NrSGVhZGVyKHMpIHsKKyAgICBpZiAocy5pbnB1dEVuZCAhPSAwKSB7CisgICAgICBzLm5leHRSdW5uaW5nU3RhdGUgPSAxMDsKKyAgICAgIHMucnVubmluZ1N0YXRlID0gMTI7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHMubGl0ZXJhbFRyZWVHcm91cCA9IG5ldyBJbnQzMkFycmF5KDApOworICAgIHMuY29tbWFuZFRyZWVHcm91cCA9IG5ldyBJbnQzMkFycmF5KDApOworICAgIHMuZGlzdGFuY2VUcmVlR3JvdXAgPSBuZXcgSW50MzJBcnJheSgwKTsKKyAgICBpZiAocy5oYWxmT2Zmc2V0ID4gMjAzMCkgeworICAgICAgZG9SZWFkTW9yZUlucHV0KHMpOworICAgIH0KKyAgICBkZWNvZGVNZXRhQmxvY2tMZW5ndGgocyk7CisgICAgaWYgKChzLm1ldGFCbG9ja0xlbmd0aCA9PSAwKSAmJiAocy5pc01ldGFkYXRhID09IDApKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICgocy5pc1VuY29tcHJlc3NlZCAhPSAwKSB8fCAocy5pc01ldGFkYXRhICE9IDApKSB7CisgICAgICBqdW1wVG9CeXRlQm91bmRhcnkocyk7CisgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IChzLmlzTWV0YWRhdGEgIT0gMCkgPyA1IDogNjsKKyAgICB9IGVsc2UgeworICAgICAgcy5ydW5uaW5nU3RhdGUgPSAzOworICAgIH0KKyAgICBpZiAocy5pc01ldGFkYXRhICE9IDApIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcy5leHBlY3RlZFRvdGFsU2l6ZSArPSBzLm1ldGFCbG9ja0xlbmd0aDsKKyAgICBpZiAocy5leHBlY3RlZFRvdGFsU2l6ZSA+IDEgPDwgMzApIHsKKyAgICAgIHMuZXhwZWN0ZWRUb3RhbFNpemUgPSAxIDw8IDMwOworICAgIH0KKyAgICBpZiAocy5yaW5nQnVmZmVyU2l6ZSA8IHMubWF4UmluZ0J1ZmZlclNpemUpIHsKKyAgICAgIG1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIocyk7CisgICAgfQorICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcGFyYW0ge251bWJlcn0gdHJlZVR5cGUKKyAgICogQHBhcmFtIHtudW1iZXJ9IG51bUJsb2NrVHlwZXMKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gcmVhZE1ldGFibG9ja1BhcnRpdGlvbihzLCB0cmVlVHlwZSwgbnVtQmxvY2tUeXBlcykgeworICAgIHZhciAvKiogbnVtYmVyICovIG9mZnNldCA9IHMuYmxvY2tUcmVlc1syICogdHJlZVR5cGVdOworICAgIGlmIChudW1CbG9ja1R5cGVzIDw9IDEpIHsKKyAgICAgIHMuYmxvY2tUcmVlc1syICogdHJlZVR5cGUgKyAxXSA9IG9mZnNldDsKKyAgICAgIHMuYmxvY2tUcmVlc1syICogdHJlZVR5cGUgKyAyXSA9IG9mZnNldDsKKyAgICAgIHJldHVybiAxIDw8IDI4OworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBibG9ja1R5cGVBbHBoYWJldFNpemUgPSBudW1CbG9ja1R5cGVzICsgMjsKKyAgICBvZmZzZXQgKz0gcmVhZEh1ZmZtYW5Db2RlKGJsb2NrVHlwZUFscGhhYmV0U2l6ZSwgYmxvY2tUeXBlQWxwaGFiZXRTaXplLCBzLmJsb2NrVHJlZXMsIDIgKiB0cmVlVHlwZSwgcyk7CisgICAgcy5ibG9ja1RyZWVzWzIgKiB0cmVlVHlwZSArIDFdID0gb2Zmc2V0OworICAgIHZhciAvKiogbnVtYmVyICovIGJsb2NrTGVuZ3RoQWxwaGFiZXRTaXplID0gMjY7CisgICAgb2Zmc2V0ICs9IHJlYWRIdWZmbWFuQ29kZShibG9ja0xlbmd0aEFscGhhYmV0U2l6ZSwgYmxvY2tMZW5ndGhBbHBoYWJldFNpemUsIHMuYmxvY2tUcmVlcywgMiAqIHRyZWVUeXBlICsgMSwgcyk7CisgICAgcy5ibG9ja1RyZWVzWzIgKiB0cmVlVHlwZSArIDJdID0gb2Zmc2V0OworICAgIHJldHVybiByZWFkQmxvY2tMZW5ndGgocy5ibG9ja1RyZWVzLCAyICogdHJlZVR5cGUgKyAxLCBzKTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhYmV0U2l6ZUxpbWl0CisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUx1dChzLCBhbHBoYWJldFNpemVMaW1pdCkgeworICAgIHZhciAvKiogIUludDhBcnJheSAqLyBkaXN0RXh0cmFCaXRzID0gcy5kaXN0RXh0cmFCaXRzOworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gZGlzdE9mZnNldCA9IHMuZGlzdE9mZnNldDsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBucG9zdGZpeCA9IHMuZGlzdGFuY2VQb3N0Zml4Qml0czsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBuZGlyZWN0ID0gcy5udW1EaXJlY3REaXN0YW5jZUNvZGVzOworICAgIHZhciAvKiogbnVtYmVyICovIHBvc3RmaXggPSAxIDw8IG5wb3N0Zml4OworICAgIHZhciAvKiogbnVtYmVyICovIGJpdHMgPSAxOworICAgIHZhciAvKiogbnVtYmVyICovIGhhbGYgPSAwOworICAgIHZhciAvKiogbnVtYmVyICovIGkgPSAxNjsKKyAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGogPSAwOyBqIDwgbmRpcmVjdDsgKytqKSB7CisgICAgICBkaXN0RXh0cmFCaXRzW2ldID0gMDsKKyAgICAgIGRpc3RPZmZzZXRbaV0gPSBqICsgMTsKKyAgICAgICsraTsKKyAgICB9CisgICAgd2hpbGUgKGkgPCBhbHBoYWJldFNpemVMaW1pdCkgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gYmFzZSA9IG5kaXJlY3QgKyAoKCgoMiArIGhhbGYpIDw8IGJpdHMpIC0gNCkgPDwgbnBvc3RmaXgpICsgMTsKKyAgICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaiA9IDA7IGogPCBwb3N0Zml4OyArK2opIHsKKyAgICAgICAgZGlzdEV4dHJhQml0c1tpXSA9IGJpdHM7CisgICAgICAgIGRpc3RPZmZzZXRbaV0gPSBiYXNlICsgajsKKyAgICAgICAgKytpOworICAgICAgfQorICAgICAgYml0cyA9IGJpdHMgKyBoYWxmOworICAgICAgaGFsZiA9IGhhbGYgXiAxOworICAgIH0KKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRNZXRhYmxvY2tIdWZmbWFuQ29kZXNBbmRDb250ZXh0TWFwcyhzKSB7CisgICAgcy5udW1MaXRlcmFsQmxvY2tUeXBlcyA9IGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShzKSArIDE7CisgICAgcy5saXRlcmFsQmxvY2tMZW5ndGggPSByZWFkTWV0YWJsb2NrUGFydGl0aW9uKHMsIDAsIHMubnVtTGl0ZXJhbEJsb2NrVHlwZXMpOworICAgIHMubnVtQ29tbWFuZEJsb2NrVHlwZXMgPSBkZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUocykgKyAxOworICAgIHMuY29tbWFuZEJsb2NrTGVuZ3RoID0gcmVhZE1ldGFibG9ja1BhcnRpdGlvbihzLCAxLCBzLm51bUNvbW1hbmRCbG9ja1R5cGVzKTsKKyAgICBzLm51bURpc3RhbmNlQmxvY2tUeXBlcyA9IGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShzKSArIDE7CisgICAgcy5kaXN0YW5jZUJsb2NrTGVuZ3RoID0gcmVhZE1ldGFibG9ja1BhcnRpdGlvbihzLCAyLCBzLm51bURpc3RhbmNlQmxvY2tUeXBlcyk7CisgICAgaWYgKHMuaGFsZk9mZnNldCA+IDIwMzApIHsKKyAgICAgIGRvUmVhZE1vcmVJbnB1dChzKTsKKyAgICB9CisgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgcy5iaXRPZmZzZXQgLT0gMTY7CisgICAgfQorICAgIHMuZGlzdGFuY2VQb3N0Zml4Qml0cyA9IHJlYWRGZXdCaXRzKHMsIDIpOworICAgIHMubnVtRGlyZWN0RGlzdGFuY2VDb2RlcyA9IHJlYWRGZXdCaXRzKHMsIDQpIDw8IHMuZGlzdGFuY2VQb3N0Zml4Qml0czsKKyAgICBzLmRpc3RhbmNlUG9zdGZpeE1hc2sgPSAoMSA8PCBzLmRpc3RhbmNlUG9zdGZpeEJpdHMpIC0gMTsKKyAgICBzLmNvbnRleHRNb2RlcyA9IG5ldyBJbnQ4QXJyYXkocy5udW1MaXRlcmFsQmxvY2tUeXBlcyk7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IHMubnVtTGl0ZXJhbEJsb2NrVHlwZXM7ICkgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gbGltaXQgPSBtaW4oaSArIDk2LCBzLm51bUxpdGVyYWxCbG9ja1R5cGVzKTsKKyAgICAgIGZvciAoOyBpIDwgbGltaXQ7ICsraSkgeworICAgICAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgICAgICB9CisgICAgICAgIHMuY29udGV4dE1vZGVzW2ldID0gcmVhZEZld0JpdHMocywgMik7CisgICAgICB9CisgICAgICBpZiAocy5oYWxmT2Zmc2V0ID4gMjAzMCkgeworICAgICAgICBkb1JlYWRNb3JlSW5wdXQocyk7CisgICAgICB9CisgICAgfQorICAgIHMuY29udGV4dE1hcCA9IG5ldyBJbnQ4QXJyYXkocy5udW1MaXRlcmFsQmxvY2tUeXBlcyA8PCA2KTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBudW1MaXRlcmFsVHJlZXMgPSBkZWNvZGVDb250ZXh0TWFwKHMubnVtTGl0ZXJhbEJsb2NrVHlwZXMgPDwgNiwgcy5jb250ZXh0TWFwLCBzKTsKKyAgICBzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCA9IDE7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBqID0gMDsgaiA8IHMubnVtTGl0ZXJhbEJsb2NrVHlwZXMgPDwgNjsgaisrKSB7CisgICAgICBpZiAocy5jb250ZXh0TWFwW2pdICE9IGogPj4gNikgeworICAgICAgICBzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBzLmRpc3RDb250ZXh0TWFwID0gbmV3IEludDhBcnJheShzLm51bURpc3RhbmNlQmxvY2tUeXBlcyA8PCAyKTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBudW1EaXN0VHJlZXMgPSBkZWNvZGVDb250ZXh0TWFwKHMubnVtRGlzdGFuY2VCbG9ja1R5cGVzIDw8IDIsIHMuZGlzdENvbnRleHRNYXAsIHMpOworICAgIHMubGl0ZXJhbFRyZWVHcm91cCA9IGRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoMjU2LCAyNTYsIG51bUxpdGVyYWxUcmVlcywgcyk7CisgICAgcy5jb21tYW5kVHJlZUdyb3VwID0gZGVjb2RlSHVmZm1hblRyZWVHcm91cCg3MDQsIDcwNCwgcy5udW1Db21tYW5kQmxvY2tUeXBlcywgcyk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gZGlzdGFuY2VBbHBoYWJldFNpemVNYXggPSBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0U2l6ZShzLmRpc3RhbmNlUG9zdGZpeEJpdHMsIHMubnVtRGlyZWN0RGlzdGFuY2VDb2RlcywgMjQpOworICAgIHZhciAvKiogbnVtYmVyICovIGRpc3RhbmNlQWxwaGFiZXRTaXplTGltaXQgPSBkaXN0YW5jZUFscGhhYmV0U2l6ZU1heDsKKyAgICBpZiAocy5pc0xhcmdlV2luZG93ID09IDEpIHsKKyAgICAgIGRpc3RhbmNlQWxwaGFiZXRTaXplTWF4ID0gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUocy5kaXN0YW5jZVBvc3RmaXhCaXRzLCBzLm51bURpcmVjdERpc3RhbmNlQ29kZXMsIDYyKTsKKyAgICAgIGRpc3RhbmNlQWxwaGFiZXRTaXplTGltaXQgPSBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQoMHg3RkZGRkZGQywgcy5kaXN0YW5jZVBvc3RmaXhCaXRzLCBzLm51bURpcmVjdERpc3RhbmNlQ29kZXMpOworICAgIH0KKyAgICBzLmRpc3RhbmNlVHJlZUdyb3VwID0gZGVjb2RlSHVmZm1hblRyZWVHcm91cChkaXN0YW5jZUFscGhhYmV0U2l6ZU1heCwgZGlzdGFuY2VBbHBoYWJldFNpemVMaW1pdCwgbnVtRGlzdFRyZWVzLCBzKTsKKyAgICBjYWxjdWxhdGVEaXN0YW5jZUx1dChzLCBkaXN0YW5jZUFscGhhYmV0U2l6ZUxpbWl0KTsKKyAgICBzLmNvbnRleHRNYXBTbGljZSA9IDA7CisgICAgcy5kaXN0Q29udGV4dE1hcFNsaWNlID0gMDsKKyAgICBzLmNvbnRleHRMb29rdXBPZmZzZXQxID0gcy5jb250ZXh0TW9kZXNbMF0gKiA1MTI7CisgICAgcy5jb250ZXh0TG9va3VwT2Zmc2V0MiA9IHMuY29udGV4dExvb2t1cE9mZnNldDEgKyAyNTY7CisgICAgcy5saXRlcmFsVHJlZUlkeCA9IDA7CisgICAgcy5jb21tYW5kVHJlZUlkeCA9IDA7CisgICAgcy5yaW5nc1s0XSA9IDE7CisgICAgcy5yaW5nc1s1XSA9IDA7CisgICAgcy5yaW5nc1s2XSA9IDE7CisgICAgcy5yaW5nc1s3XSA9IDA7CisgICAgcy5yaW5nc1s4XSA9IDE7CisgICAgcy5yaW5nc1s5XSA9IDA7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBjb3B5VW5jb21wcmVzc2VkRGF0YShzKSB7CisgICAgdmFyIC8qKiAhSW50OEFycmF5ICovIHJpbmdCdWZmZXIgPSBzLnJpbmdCdWZmZXI7CisgICAgaWYgKHMubWV0YUJsb2NrTGVuZ3RoIDw9IDApIHsKKyAgICAgIHJlbG9hZChzKTsKKyAgICAgIHMucnVubmluZ1N0YXRlID0gMjsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gY2h1bmtMZW5ndGggPSBtaW4ocy5yaW5nQnVmZmVyU2l6ZSAtIHMucG9zLCBzLm1ldGFCbG9ja0xlbmd0aCk7CisgICAgY29weUJ5dGVzKHMsIHJpbmdCdWZmZXIsIHMucG9zLCBjaHVua0xlbmd0aCk7CisgICAgcy5tZXRhQmxvY2tMZW5ndGggLT0gY2h1bmtMZW5ndGg7CisgICAgcy5wb3MgKz0gY2h1bmtMZW5ndGg7CisgICAgaWYgKHMucG9zID09IHMucmluZ0J1ZmZlclNpemUpIHsKKyAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IDY7CisgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IDEyOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZWxvYWQocyk7CisgICAgcy5ydW5uaW5nU3RhdGUgPSAyOworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAqLworICBmdW5jdGlvbiB3cml0ZVJpbmdCdWZmZXIocykgeworICAgIHZhciAvKiogbnVtYmVyICovIHRvV3JpdGUgPSBtaW4ocy5vdXRwdXRMZW5ndGggLSBzLm91dHB1dFVzZWQsIHMucmluZ0J1ZmZlckJ5dGVzUmVhZHkgLSBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4pOworICAgIGlmICh0b1dyaXRlICE9IDApIHsKKyAgICAgIHMub3V0cHV0LnNldChzLnJpbmdCdWZmZXIuc3ViYXJyYXkocy5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuLCBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4gKyB0b1dyaXRlKSwgcy5vdXRwdXRPZmZzZXQgKyBzLm91dHB1dFVzZWQpOworICAgICAgcy5vdXRwdXRVc2VkICs9IHRvV3JpdGU7CisgICAgICBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4gKz0gdG9Xcml0ZTsKKyAgICB9CisgICAgaWYgKHMub3V0cHV0VXNlZCA8IHMub3V0cHV0TGVuZ3RoKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisgIC8qKgorICAgKiBAcGFyYW0ge251bWJlcn0gYWxwaGFiZXRTaXplTWF4CisgICAqIEBwYXJhbSB7bnVtYmVyfSBhbHBoYWJldFNpemVMaW1pdAorICAgKiBAcGFyYW0ge251bWJlcn0gbgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHshSW50MzJBcnJheX0KKyAgICovCisgIGZ1bmN0aW9uIGRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoYWxwaGFiZXRTaXplTWF4LCBhbHBoYWJldFNpemVMaW1pdCwgbiwgcykgeworICAgIHZhciAvKiogbnVtYmVyICovIG1heFRhYmxlU2l6ZSA9IE1BWF9IVUZGTUFOX1RBQkxFX1NJWkVbKGFscGhhYmV0U2l6ZUxpbWl0ICsgMzEpID4+IDVdOworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gZ3JvdXAgPSBuZXcgSW50MzJBcnJheShuICsgbiAqIG1heFRhYmxlU2l6ZSk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gbmV4dCA9IG47CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgZ3JvdXBbaV0gPSBuZXh0OworICAgICAgbmV4dCArPSByZWFkSHVmZm1hbkNvZGUoYWxwaGFiZXRTaXplTWF4LCBhbHBoYWJldFNpemVMaW1pdCwgZ3JvdXAsIGksIHMpOworICAgIH0KKyAgICByZXR1cm4gZ3JvdXA7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIGNhbGN1bGF0ZUZlbmNlKHMpIHsKKyAgICB2YXIgLyoqIG51bWJlciAqLyByZXN1bHQgPSBzLnJpbmdCdWZmZXJTaXplOworICAgIGlmIChzLmlzRWFnZXIgIT0gMCkgeworICAgICAgcmVzdWx0ID0gbWluKHJlc3VsdCwgcy5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuICsgcy5vdXRwdXRMZW5ndGggLSBzLm91dHB1dFVzZWQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gZGVjb21wcmVzcyhzKSB7CisgICAgaWYgKHMucnVubmluZ1N0YXRlID09IDApIHsKKyAgICAgIHRocm93ICJDYW4ndCBkZWNvbXByZXNzIHVudGlsIGluaXRpYWxpemVkIjsKKyAgICB9CisgICAgaWYgKHMucnVubmluZ1N0YXRlID09IDExKSB7CisgICAgICB0aHJvdyAiQ2FuJ3QgZGVjb21wcmVzcyBhZnRlciBjbG9zZSI7CisgICAgfQorICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSA9PSAxKSB7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyB3aW5kb3dCaXRzID0gZGVjb2RlV2luZG93Qml0cyhzKTsKKyAgICAgIGlmICh3aW5kb3dCaXRzID09IC0xKSB7CisgICAgICAgIHRocm93ICJJbnZhbGlkICd3aW5kb3dCaXRzJyBjb2RlIjsKKyAgICAgIH0KKyAgICAgIHMubWF4UmluZ0J1ZmZlclNpemUgPSAxIDw8IHdpbmRvd0JpdHM7CisgICAgICBzLm1heEJhY2t3YXJkRGlzdGFuY2UgPSBzLm1heFJpbmdCdWZmZXJTaXplIC0gMTY7CisgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IDI7CisgICAgfQorICAgIHZhciAvKiogbnVtYmVyICovIGZlbmNlID0gY2FsY3VsYXRlRmVuY2Uocyk7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gcmluZ0J1ZmZlck1hc2sgPSBzLnJpbmdCdWZmZXJTaXplIC0gMTsKKyAgICB2YXIgLyoqICFJbnQ4QXJyYXkgKi8gcmluZ0J1ZmZlciA9IHMucmluZ0J1ZmZlcjsKKyAgICB3aGlsZSAocy5ydW5uaW5nU3RhdGUgIT0gMTApIHsKKyAgICAgIHN3aXRjaChzLnJ1bm5pbmdTdGF0ZSkgeworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgaWYgKHMubWV0YUJsb2NrTGVuZ3RoIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgIkludmFsaWQgbWV0YWJsb2NrIGxlbmd0aCI7CisgICAgICAgICAgfQorICAgICAgICAgIHJlYWROZXh0TWV0YWJsb2NrSGVhZGVyKHMpOworICAgICAgICAgIGZlbmNlID0gY2FsY3VsYXRlRmVuY2Uocyk7CisgICAgICAgICAgcmluZ0J1ZmZlck1hc2sgPSBzLnJpbmdCdWZmZXJTaXplIC0gMTsKKyAgICAgICAgICByaW5nQnVmZmVyID0gcy5yaW5nQnVmZmVyOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgcmVhZE1ldGFibG9ja0h1ZmZtYW5Db2Rlc0FuZENvbnRleHRNYXBzKHMpOworICAgICAgICAgIHMucnVubmluZ1N0YXRlID0gNDsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgIGlmIChzLm1ldGFCbG9ja0xlbmd0aCA8PSAwKSB7CisgICAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IDI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHMuaGFsZk9mZnNldCA+IDIwMzApIHsKKyAgICAgICAgICAgIGRvUmVhZE1vcmVJbnB1dChzKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHMuY29tbWFuZEJsb2NrTGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIGRlY29kZUNvbW1hbmRCbG9ja1N3aXRjaChzKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcy5jb21tYW5kQmxvY2tMZW5ndGgtLTsKKyAgICAgICAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgICAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gY21kQ29kZSA9IHJlYWRTeW1ib2wocy5jb21tYW5kVHJlZUdyb3VwLCBzLmNvbW1hbmRUcmVlSWR4LCBzKSA8PCAyOworICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGluc2VydEFuZENvcHlFeHRyYUJpdHMgPSBDTURfTE9PS1VQW2NtZENvZGVdOworICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGluc2VydExlbmd0aE9mZnNldCA9IENNRF9MT09LVVBbY21kQ29kZSArIDFdOworICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGNvcHlMZW5ndGhPZmZzZXQgPSBDTURfTE9PS1VQW2NtZENvZGUgKyAyXTsKKyAgICAgICAgICBzLmRpc3RhbmNlQ29kZSA9IENNRF9MT09LVVBbY21kQ29kZSArIDNdOworICAgICAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgICAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBleHRyYUJpdHMgPSBpbnNlcnRBbmRDb3B5RXh0cmFCaXRzICYgMHhGRjsKKyAgICAgICAgICBzLmluc2VydExlbmd0aCA9IGluc2VydExlbmd0aE9mZnNldCArICgoZXh0cmFCaXRzIDw9IDE2KSA/IHJlYWRGZXdCaXRzKHMsIGV4dHJhQml0cykgOiByZWFkTWFueUJpdHMocywgZXh0cmFCaXRzKSk7CisgICAgICAgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICAgICAgcy5iaXRPZmZzZXQgLT0gMTY7CisgICAgICAgICAgfQorICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGV4dHJhQml0cyA9IGluc2VydEFuZENvcHlFeHRyYUJpdHMgPj4gODsKKyAgICAgICAgICBzLmNvcHlMZW5ndGggPSBjb3B5TGVuZ3RoT2Zmc2V0ICsgKChleHRyYUJpdHMgPD0gMTYpID8gcmVhZEZld0JpdHMocywgZXh0cmFCaXRzKSA6IHJlYWRNYW55Qml0cyhzLCBleHRyYUJpdHMpKTsKKyAgICAgICAgICBzLmogPSAwOworICAgICAgICAgIHMucnVubmluZ1N0YXRlID0gNzsKKyAgICAgICAgY2FzZSA3OgorICAgICAgICAgIGlmIChzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAocy5qIDwgcy5pbnNlcnRMZW5ndGgpIHsKKyAgICAgICAgICAgICAgaWYgKHMuaGFsZk9mZnNldCA+IDIwMzApIHsKKyAgICAgICAgICAgICAgICBkb1JlYWRNb3JlSW5wdXQocyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgaWYgKHMubGl0ZXJhbEJsb2NrTGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICBkZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2gocyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcy5saXRlcmFsQmxvY2tMZW5ndGgtLTsKKyAgICAgICAgICAgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICAgICAgICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgICAgICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICByaW5nQnVmZmVyW3MucG9zXSA9IHJlYWRTeW1ib2wocy5saXRlcmFsVHJlZUdyb3VwLCBzLmxpdGVyYWxUcmVlSWR4LCBzKTsKKyAgICAgICAgICAgICAgcy5wb3MrKzsKKyAgICAgICAgICAgICAgcy5qKys7CisgICAgICAgICAgICAgIGlmIChzLnBvcyA+PSBmZW5jZSkgeworICAgICAgICAgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IDc7CisgICAgICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSAxMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBwcmV2Qnl0ZTEgPSByaW5nQnVmZmVyWyhzLnBvcyAtIDEpICYgcmluZ0J1ZmZlck1hc2tdICYgMHhGRjsKKyAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIHByZXZCeXRlMiA9IHJpbmdCdWZmZXJbKHMucG9zIC0gMikgJiByaW5nQnVmZmVyTWFza10gJiAweEZGOworICAgICAgICAgICAgd2hpbGUgKHMuaiA8IHMuaW5zZXJ0TGVuZ3RoKSB7CisgICAgICAgICAgICAgIGlmIChzLmhhbGZPZmZzZXQgPiAyMDMwKSB7CisgICAgICAgICAgICAgICAgZG9SZWFkTW9yZUlucHV0KHMpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmIChzLmxpdGVyYWxCbG9ja0xlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKHMpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGxpdGVyYWxDb250ZXh0ID0gTE9PS1VQW3MuY29udGV4dExvb2t1cE9mZnNldDEgKyBwcmV2Qnl0ZTFdIHwgTE9PS1VQW3MuY29udGV4dExvb2t1cE9mZnNldDIgKyBwcmV2Qnl0ZTJdOworICAgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBsaXRlcmFsVHJlZUlkeCA9IHMuY29udGV4dE1hcFtzLmNvbnRleHRNYXBTbGljZSArIGxpdGVyYWxDb250ZXh0XSAmIDB4RkY7CisgICAgICAgICAgICAgIHMubGl0ZXJhbEJsb2NrTGVuZ3RoLS07CisgICAgICAgICAgICAgIHByZXZCeXRlMiA9IHByZXZCeXRlMTsKKyAgICAgICAgICAgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICAgICAgICAgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICAgICAgICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBwcmV2Qnl0ZTEgPSByZWFkU3ltYm9sKHMubGl0ZXJhbFRyZWVHcm91cCwgbGl0ZXJhbFRyZWVJZHgsIHMpOworICAgICAgICAgICAgICByaW5nQnVmZmVyW3MucG9zXSA9IHByZXZCeXRlMTsKKyAgICAgICAgICAgICAgcy5wb3MrKzsKKyAgICAgICAgICAgICAgcy5qKys7CisgICAgICAgICAgICAgIGlmIChzLnBvcyA+PSBmZW5jZSkgeworICAgICAgICAgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IDc7CisgICAgICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSAxMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAocy5ydW5uaW5nU3RhdGUgIT0gNykgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgfQorICAgICAgICAgIHMubWV0YUJsb2NrTGVuZ3RoIC09IHMuaW5zZXJ0TGVuZ3RoOworICAgICAgICAgIGlmIChzLm1ldGFCbG9ja0xlbmd0aCA8PSAwKSB7CisgICAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IDQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gZGlzdGFuY2VDb2RlID0gcy5kaXN0YW5jZUNvZGU7CisgICAgICAgICAgaWYgKGRpc3RhbmNlQ29kZSA8IDApIHsKKyAgICAgICAgICAgIHMuZGlzdGFuY2UgPSBzLnJpbmdzW3MuZGlzdFJiSWR4XTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHMuaGFsZk9mZnNldCA+IDIwMzApIHsKKyAgICAgICAgICAgICAgZG9SZWFkTW9yZUlucHV0KHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMuZGlzdGFuY2VCbG9ja0xlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgIGRlY29kZURpc3RhbmNlQmxvY2tTd2l0Y2gocyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzLmRpc3RhbmNlQmxvY2tMZW5ndGgtLTsKKyAgICAgICAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGRpc3RUcmVlSWR4ID0gcy5kaXN0Q29udGV4dE1hcFtzLmRpc3RDb250ZXh0TWFwU2xpY2UgKyBkaXN0YW5jZUNvZGVdICYgMHhGRjsKKyAgICAgICAgICAgIGRpc3RhbmNlQ29kZSA9IHJlYWRTeW1ib2wocy5kaXN0YW5jZVRyZWVHcm91cCwgZGlzdFRyZWVJZHgsIHMpOworICAgICAgICAgICAgaWYgKGRpc3RhbmNlQ29kZSA8IDE2KSB7CisgICAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGluZGV4ID0gKHMuZGlzdFJiSWR4ICsgRElTVEFOQ0VfU0hPUlRfQ09ERV9JTkRFWF9PRkZTRVRbZGlzdGFuY2VDb2RlXSkgJiAweDM7CisgICAgICAgICAgICAgIHMuZGlzdGFuY2UgPSBzLnJpbmdzW2luZGV4XSArIERJU1RBTkNFX1NIT1JUX0NPREVfVkFMVUVfT0ZGU0VUW2Rpc3RhbmNlQ29kZV07CisgICAgICAgICAgICAgIGlmIChzLmRpc3RhbmNlIDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93ICJOZWdhdGl2ZSBkaXN0YW5jZSI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGV4dHJhQml0cyA9IHMuZGlzdEV4dHJhQml0c1tkaXN0YW5jZUNvZGVdOworICAgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBiaXRzOworICAgICAgICAgICAgICBpZiAocy5iaXRPZmZzZXQgKyBleHRyYUJpdHMgPD0gMzIpIHsKKyAgICAgICAgICAgICAgICBiaXRzID0gcmVhZEZld0JpdHMocywgZXh0cmFCaXRzKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocy5iaXRPZmZzZXQgPj0gMTYpIHsKKyAgICAgICAgICAgICAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICAgICAgICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYml0cyA9ICgoZXh0cmFCaXRzIDw9IDE2KSA/IHJlYWRGZXdCaXRzKHMsIGV4dHJhQml0cykgOiByZWFkTWFueUJpdHMocywgZXh0cmFCaXRzKSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcy5kaXN0YW5jZSA9IHMuZGlzdE9mZnNldFtkaXN0YW5jZUNvZGVdICsgKGJpdHMgPDwgcy5kaXN0YW5jZVBvc3RmaXhCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHMubWF4RGlzdGFuY2UgIT0gcy5tYXhCYWNrd2FyZERpc3RhbmNlICYmIHMucG9zIDwgcy5tYXhCYWNrd2FyZERpc3RhbmNlKSB7CisgICAgICAgICAgICBzLm1heERpc3RhbmNlID0gcy5wb3M7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHMubWF4RGlzdGFuY2UgPSBzLm1heEJhY2t3YXJkRGlzdGFuY2U7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChzLmRpc3RhbmNlID4gcy5tYXhEaXN0YW5jZSkgeworICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSA5OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChkaXN0YW5jZUNvZGUgPiAwKSB7CisgICAgICAgICAgICBzLmRpc3RSYklkeCA9IChzLmRpc3RSYklkeCArIDEpICYgMHgzOworICAgICAgICAgICAgcy5yaW5nc1tzLmRpc3RSYklkeF0gPSBzLmRpc3RhbmNlOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAocy5jb3B5TGVuZ3RoID4gcy5tZXRhQmxvY2tMZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93ICJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSI7CisgICAgICAgICAgfQorICAgICAgICAgIHMuaiA9IDA7CisgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSA4OworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gc3JjID0gKHMucG9zIC0gcy5kaXN0YW5jZSkgJiByaW5nQnVmZmVyTWFzazsKKyAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBkc3QgPSBzLnBvczsKKyAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBjb3B5TGVuZ3RoID0gcy5jb3B5TGVuZ3RoIC0gcy5qOworICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIHNyY0VuZCA9IHNyYyArIGNvcHlMZW5ndGg7CisgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gZHN0RW5kID0gZHN0ICsgY29weUxlbmd0aDsKKyAgICAgICAgICBpZiAoKHNyY0VuZCA8IHJpbmdCdWZmZXJNYXNrKSAmJiAoZHN0RW5kIDwgcmluZ0J1ZmZlck1hc2spKSB7CisgICAgICAgICAgICBpZiAoY29weUxlbmd0aCA8IDEyIHx8IChzcmNFbmQgPiBkc3QgJiYgZHN0RW5kID4gc3JjKSkgeworICAgICAgICAgICAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGsgPSAwOyBrIDwgY29weUxlbmd0aDsgayArPSA0KSB7CisgICAgICAgICAgICAgICAgcmluZ0J1ZmZlcltkc3QrK10gPSByaW5nQnVmZmVyW3NyYysrXTsKKyAgICAgICAgICAgICAgICByaW5nQnVmZmVyW2RzdCsrXSA9IHJpbmdCdWZmZXJbc3JjKytdOworICAgICAgICAgICAgICAgIHJpbmdCdWZmZXJbZHN0KytdID0gcmluZ0J1ZmZlcltzcmMrK107CisgICAgICAgICAgICAgICAgcmluZ0J1ZmZlcltkc3QrK10gPSByaW5nQnVmZmVyW3NyYysrXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmluZ0J1ZmZlci5jb3B5V2l0aGluKGRzdCwgc3JjLCBzcmNFbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy5qICs9IGNvcHlMZW5ndGg7CisgICAgICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aCAtPSBjb3B5TGVuZ3RoOworICAgICAgICAgICAgcy5wb3MgKz0gY29weUxlbmd0aDsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICg7IHMuaiA8IHMuY29weUxlbmd0aDsgKSB7CisgICAgICAgICAgICAgIHJpbmdCdWZmZXJbcy5wb3NdID0gcmluZ0J1ZmZlclsocy5wb3MgLSBzLmRpc3RhbmNlKSAmIHJpbmdCdWZmZXJNYXNrXTsKKyAgICAgICAgICAgICAgcy5tZXRhQmxvY2tMZW5ndGgtLTsKKyAgICAgICAgICAgICAgcy5wb3MrKzsKKyAgICAgICAgICAgICAgcy5qKys7CisgICAgICAgICAgICAgIGlmIChzLnBvcyA+PSBmZW5jZSkgeworICAgICAgICAgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IDg7CisgICAgICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSAxMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAocy5ydW5uaW5nU3RhdGUgPT0gOCkgeworICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSA0OworICAgICAgICAgIH0KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FzZSA5OgorICAgICAgICAgIGlmIChzLmRpc3RhbmNlID4gMHg3RkZGRkZGQykgeworICAgICAgICAgICAgdGhyb3cgIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlIjsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHMuY29weUxlbmd0aCA+PSA0ICYmIHMuY29weUxlbmd0aCA8PSAyNCkgeworICAgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gb2Zmc2V0ID0gRElDVElPTkFSWV9PRkZTRVRTX0JZX0xFTkdUSFtzLmNvcHlMZW5ndGhdOworICAgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gd29yZElkID0gcy5kaXN0YW5jZSAtIHMubWF4RGlzdGFuY2UgLSAxOworICAgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gc2hpZnQgPSBESUNUSU9OQVJZX1NJWkVfQklUU19CWV9MRU5HVEhbcy5jb3B5TGVuZ3RoXTsKKyAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIG1hc2sgPSAoMSA8PCBzaGlmdCkgLSAxOworICAgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gd29yZElkeCA9IHdvcmRJZCAmIG1hc2s7CisgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyB0cmFuc2Zvcm1JZHggPSB3b3JkSWQgPj4+IHNoaWZ0OworICAgICAgICAgICAgb2Zmc2V0ICs9IHdvcmRJZHggKiBzLmNvcHlMZW5ndGg7CisgICAgICAgICAgICBpZiAodHJhbnNmb3JtSWR4IDwgMTIxKSB7CisgICAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGxlbiA9IHRyYW5zZm9ybURpY3Rpb25hcnlXb3JkKHJpbmdCdWZmZXIsIHMucG9zLCBESUNUSU9OQVJZX0RBVEEsIG9mZnNldCwgcy5jb3B5TGVuZ3RoLCBSRkNfVFJBTlNGT1JNUywgdHJhbnNmb3JtSWR4KTsKKyAgICAgICAgICAgICAgcy5wb3MgKz0gbGVuOworICAgICAgICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aCAtPSBsZW47CisgICAgICAgICAgICAgIGlmIChzLnBvcyA+PSBmZW5jZSkgeworICAgICAgICAgICAgICAgIHMubmV4dFJ1bm5pbmdTdGF0ZSA9IDQ7CisgICAgICAgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSAxMjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdGhyb3cgIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlIjsKKyAgICAgICAgICB9CisgICAgICAgICAgcy5ydW5uaW5nU3RhdGUgPSA0OworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgd2hpbGUgKHMubWV0YUJsb2NrTGVuZ3RoID4gMCkgeworICAgICAgICAgICAgaWYgKHMuaGFsZk9mZnNldCA+IDIwMzApIHsKKyAgICAgICAgICAgICAgZG9SZWFkTW9yZUlucHV0KHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMuYml0T2Zmc2V0ID49IDE2KSB7CisgICAgICAgICAgICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgICAgICAgICAgIHMuYml0T2Zmc2V0IC09IDE2OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVhZEZld0JpdHMocywgOCk7CisgICAgICAgICAgICBzLm1ldGFCbG9ja0xlbmd0aC0tOworICAgICAgICAgIH0KKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IDI7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICBjb3B5VW5jb21wcmVzc2VkRGF0YShzKTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICBzLnJpbmdCdWZmZXJCeXRlc1JlYWR5ID0gbWluKHMucG9zLCBzLnJpbmdCdWZmZXJTaXplKTsKKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IDEzOworICAgICAgICBjYXNlIDEzOgorICAgICAgICAgIGlmICh3cml0ZVJpbmdCdWZmZXIocykgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAocy5wb3MgPj0gcy5tYXhCYWNrd2FyZERpc3RhbmNlKSB7CisgICAgICAgICAgICBzLm1heERpc3RhbmNlID0gcy5tYXhCYWNrd2FyZERpc3RhbmNlOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAocy5wb3MgPj0gcy5yaW5nQnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgaWYgKHMucG9zID4gcy5yaW5nQnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgICByaW5nQnVmZmVyLmNvcHlXaXRoaW4oMCwgcy5yaW5nQnVmZmVyU2l6ZSwgcy5wb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy5wb3MgJj0gcmluZ0J1ZmZlck1hc2s7CisgICAgICAgICAgICBzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4gPSAwOworICAgICAgICAgIH0KKyAgICAgICAgICBzLnJ1bm5pbmdTdGF0ZSA9IHMubmV4dFJ1bm5pbmdTdGF0ZTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICB0aHJvdyAiVW5leHBlY3RlZCBzdGF0ZSAiICsgcy5ydW5uaW5nU3RhdGU7CisgICAgICB9CisgICAgfQorICAgIGlmIChzLnJ1bm5pbmdTdGF0ZSA9PSAxMCkgeworICAgICAgaWYgKHMubWV0YUJsb2NrTGVuZ3RoIDwgMCkgeworICAgICAgICB0aHJvdyAiSW52YWxpZCBtZXRhYmxvY2sgbGVuZ3RoIjsKKyAgICAgIH0KKyAgICAgIGp1bXBUb0J5dGVCb3VuZGFyeShzKTsKKyAgICAgIGNoZWNrSGVhbHRoKHMsIDEpOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBAY29uc3RydWN0b3IKKyAgICogQHBhcmFtIHtudW1iZXJ9IG51bVRyYW5zZm9ybXMKKyAgICogQHBhcmFtIHtudW1iZXJ9IHByZWZpeFN1ZmZpeExlbgorICAgKiBAcGFyYW0ge251bWJlcn0gcHJlZml4U3VmZml4Q291bnQKKyAgICogQHN0cnVjdAorICAgKi8KKyAgZnVuY3Rpb24gVHJhbnNmb3JtcyhudW1UcmFuc2Zvcm1zLCBwcmVmaXhTdWZmaXhMZW4sIHByZWZpeFN1ZmZpeENvdW50KSB7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMubnVtVHJhbnNmb3JtcyA9IDA7CisgICAgLyoqIEB0eXBlIHshSW50MzJBcnJheX0gKi8KKyAgICB0aGlzLnRyaXBsZXRzID0gbmV3IEludDMyQXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICAgIHRoaXMucHJlZml4U3VmZml4U3RvcmFnZSA9IG5ldyBJbnQ4QXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50MzJBcnJheX0gKi8KKyAgICB0aGlzLnByZWZpeFN1ZmZpeEhlYWRzID0gbmV3IEludDMyQXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50MTZBcnJheX0gKi8KKyAgICB0aGlzLnBhcmFtcyA9IG5ldyBJbnQxNkFycmF5KDApOworICAgIHRoaXMubnVtVHJhbnNmb3JtcyA9IG51bVRyYW5zZm9ybXM7CisgICAgdGhpcy50cmlwbGV0cyA9IG5ldyBJbnQzMkFycmF5KG51bVRyYW5zZm9ybXMgKiAzKTsKKyAgICB0aGlzLnBhcmFtcyA9IG5ldyBJbnQxNkFycmF5KG51bVRyYW5zZm9ybXMpOworICAgIHRoaXMucHJlZml4U3VmZml4U3RvcmFnZSA9IG5ldyBJbnQ4QXJyYXkocHJlZml4U3VmZml4TGVuKTsKKyAgICB0aGlzLnByZWZpeFN1ZmZpeEhlYWRzID0gbmV3IEludDMyQXJyYXkocHJlZml4U3VmZml4Q291bnQgKyAxKTsKKyAgfQorCisgIHZhciBSRkNfVFJBTlNGT1JNUyA9IG5ldyBUcmFuc2Zvcm1zKDEyMSwgMTY3LCA1MCk7CisgIC8qKgorICAgKiBAcGFyYW0geyFJbnQ4QXJyYXl9IHByZWZpeFN1ZmZpeAorICAgKiBAcGFyYW0geyFJbnQzMkFycmF5fSBwcmVmaXhTdWZmaXhIZWFkcworICAgKiBAcGFyYW0geyFJbnQzMkFycmF5fSB0cmFuc2Zvcm1zCisgICAqIEBwYXJhbSB7IXN0cmluZ30gcHJlZml4U3VmZml4U3JjCisgICAqIEBwYXJhbSB7IXN0cmluZ30gdHJhbnNmb3Jtc1NyYworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gdW5wYWNrVHJhbnNmb3JtcyhwcmVmaXhTdWZmaXgsIHByZWZpeFN1ZmZpeEhlYWRzLCB0cmFuc2Zvcm1zLCBwcmVmaXhTdWZmaXhTcmMsIHRyYW5zZm9ybXNTcmMpIHsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBuID0gcHJlZml4U3VmZml4U3JjLmxlbmd0aDsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBpbmRleCA9IDE7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gaiA9IDA7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gYyA9IHByZWZpeFN1ZmZpeFNyYy5jaGFyQ29kZUF0KGkpOworICAgICAgaWYgKGMgPT0gMzUpIHsKKyAgICAgICAgcHJlZml4U3VmZml4SGVhZHNbaW5kZXgrK10gPSBqOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHJlZml4U3VmZml4W2orK10gPSBjOworICAgICAgfQorICAgIH0KKyAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgMzYzOyArK2kpIHsKKyAgICAgIHRyYW5zZm9ybXNbaV0gPSB0cmFuc2Zvcm1zU3JjLmNoYXJDb2RlQXQoaSkgLSAzMjsKKyAgICB9CisgIH0KKyAgeworICAgIHVucGFja1RyYW5zZm9ybXMoUkZDX1RSQU5TRk9STVMucHJlZml4U3VmZml4U3RvcmFnZSwgUkZDX1RSQU5TRk9STVMucHJlZml4U3VmZml4SGVhZHMsIFJGQ19UUkFOU0ZPUk1TLnRyaXBsZXRzLCAiIyAjcyAjLCAjZSAjLiMgdGhlICMuY29tLyNcdTAwQzJcdTAwQTAjIG9mICMgYW5kICMgaW4gIyB0byAjXCIjXCI+I1xuI10jIGZvciAjIGEgIyB0aGF0ICMuICMgd2l0aCAjJyMgZnJvbSAjIGJ5ICMuIFRoZSAjIG9uICMgYXMgIyBpcyAjaW5nICNcblx0IzojZWQgIygjIGF0ICNseSAjPVwiIyBvZiB0aGUgIy4gVGhpcyAjLCMgbm90ICNlciAjYWwgIz0nI2Z1bCAjaXZlICNsZXNzICNlc3QgI2l6ZSAjb3VzICMiLCAiICAgICAhISAhICwgICohICAmISAgXCIgISAgKSAqICAgKiAtICAhICMgISAgIyEqISAgKyAgLCQgISAgLSAgJSAgLiAgLyAjICAgMCAgMSAuICBcIiAgIDIgIDMhKiAgIDQlICAhICMgLyAgIDUgIDYgIDcgIDggMCAgMSAmICAgJCAgIDkgKyAgIDogIDsgIDwgJyAgIT0gID4gID8hIDQgIEAgNCAgMiAgJiAgIEEgKiMgKCAgIEIgIEMmICkgJSAgKSAhKiMgKi0lIEEgKyEgKi4gIEQhICUnICAmIEUgKjYgIEYgIEclICEgKkEgKiUgIEghIEQgIEkhKyEgIEohKyAgIEsgKy0gKjQhIEEgIEwhKjQgIE0gIE4gKzYgIE8hKiUgKy4hIEsgKkcgIFAgKyUoICAhIEcgKkQgK0QgIFEgKyMgKkshKkchK0QhKyMgK0cgK0EgKzQhKyUgK0shKzQhKkQhK0shKksiKTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshSW50OEFycmF5fSBkc3QKKyAgICogQHBhcmFtIHtudW1iZXJ9IGRzdE9mZnNldAorICAgKiBAcGFyYW0geyFJbnQ4QXJyYXl9IHNyYworICAgKiBAcGFyYW0ge251bWJlcn0gc3JjT2Zmc2V0CisgICAqIEBwYXJhbSB7bnVtYmVyfSBsZW4KKyAgICogQHBhcmFtIHshVHJhbnNmb3Jtc30gdHJhbnNmb3JtcworICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNmb3JtSW5kZXgKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gdHJhbnNmb3JtRGljdGlvbmFyeVdvcmQoZHN0LCBkc3RPZmZzZXQsIHNyYywgc3JjT2Zmc2V0LCBsZW4sIHRyYW5zZm9ybXMsIHRyYW5zZm9ybUluZGV4KSB7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gb2Zmc2V0ID0gZHN0T2Zmc2V0OworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gdHJpcGxldHMgPSB0cmFuc2Zvcm1zLnRyaXBsZXRzOworICAgIHZhciAvKiogIUludDhBcnJheSAqLyBwcmVmaXhTdWZmaXhTdG9yYWdlID0gdHJhbnNmb3Jtcy5wcmVmaXhTdWZmaXhTdG9yYWdlOworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gcHJlZml4U3VmZml4SGVhZHMgPSB0cmFuc2Zvcm1zLnByZWZpeFN1ZmZpeEhlYWRzOworICAgIHZhciAvKiogbnVtYmVyICovIHRyYW5zZm9ybU9mZnNldCA9IDMgKiB0cmFuc2Zvcm1JbmRleDsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBwcmVmaXhJZHggPSB0cmlwbGV0c1t0cmFuc2Zvcm1PZmZzZXRdOworICAgIHZhciAvKiogbnVtYmVyICovIHRyYW5zZm9ybVR5cGUgPSB0cmlwbGV0c1t0cmFuc2Zvcm1PZmZzZXQgKyAxXTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBzdWZmaXhJZHggPSB0cmlwbGV0c1t0cmFuc2Zvcm1PZmZzZXQgKyAyXTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBwcmVmaXggPSBwcmVmaXhTdWZmaXhIZWFkc1twcmVmaXhJZHhdOworICAgIHZhciAvKiogbnVtYmVyICovIHByZWZpeEVuZCA9IHByZWZpeFN1ZmZpeEhlYWRzW3ByZWZpeElkeCArIDFdOworICAgIHZhciAvKiogbnVtYmVyICovIHN1ZmZpeCA9IHByZWZpeFN1ZmZpeEhlYWRzW3N1ZmZpeElkeF07CisgICAgdmFyIC8qKiBudW1iZXIgKi8gc3VmZml4RW5kID0gcHJlZml4U3VmZml4SGVhZHNbc3VmZml4SWR4ICsgMV07CisgICAgdmFyIC8qKiBudW1iZXIgKi8gb21pdEZpcnN0ID0gdHJhbnNmb3JtVHlwZSAtIDExOworICAgIHZhciAvKiogbnVtYmVyICovIG9taXRMYXN0ID0gdHJhbnNmb3JtVHlwZSAtIDA7CisgICAgaWYgKG9taXRGaXJzdCA8IDEgfHwgb21pdEZpcnN0ID4gOSkgeworICAgICAgb21pdEZpcnN0ID0gMDsKKyAgICB9CisgICAgaWYgKG9taXRMYXN0IDwgMSB8fCBvbWl0TGFzdCA+IDkpIHsKKyAgICAgIG9taXRMYXN0ID0gMDsKKyAgICB9CisgICAgd2hpbGUgKHByZWZpeCAhPSBwcmVmaXhFbmQpIHsKKyAgICAgIGRzdFtvZmZzZXQrK10gPSBwcmVmaXhTdWZmaXhTdG9yYWdlW3ByZWZpeCsrXTsKKyAgICB9CisgICAgaWYgKG9taXRGaXJzdCA+IGxlbikgeworICAgICAgb21pdEZpcnN0ID0gbGVuOworICAgIH0KKyAgICBzcmNPZmZzZXQgKz0gb21pdEZpcnN0OworICAgIGxlbiAtPSBvbWl0Rmlyc3Q7CisgICAgbGVuIC09IG9taXRMYXN0OworICAgIHZhciAvKiogbnVtYmVyICovIGkgPSBsZW47CisgICAgd2hpbGUgKGkgPiAwKSB7CisgICAgICBkc3Rbb2Zmc2V0KytdID0gc3JjW3NyY09mZnNldCsrXTsKKyAgICAgIGktLTsKKyAgICB9CisgICAgaWYgKHRyYW5zZm9ybVR5cGUgPT0gMTAgfHwgdHJhbnNmb3JtVHlwZSA9PSAxMSkgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gdXBwZXJjYXNlT2Zmc2V0ID0gb2Zmc2V0IC0gbGVuOworICAgICAgaWYgKHRyYW5zZm9ybVR5cGUgPT0gMTApIHsKKyAgICAgICAgbGVuID0gMTsKKyAgICAgIH0KKyAgICAgIHdoaWxlIChsZW4gPiAwKSB7CisgICAgICAgIHZhciAvKiogbnVtYmVyICovIGMwID0gZHN0W3VwcGVyY2FzZU9mZnNldF0gJiAweEZGOworICAgICAgICBpZiAoYzAgPCAweEMwKSB7CisgICAgICAgICAgaWYgKGMwID49IDk3ICYmIGMwIDw9IDEyMikgeworICAgICAgICAgICAgZHN0W3VwcGVyY2FzZU9mZnNldF0gXj0gMzI7CisgICAgICAgICAgfQorICAgICAgICAgIHVwcGVyY2FzZU9mZnNldCArPSAxOworICAgICAgICAgIGxlbiAtPSAxOworICAgICAgICB9IGVsc2UgaWYgKGMwIDwgMHhFMCkgeworICAgICAgICAgIGRzdFt1cHBlcmNhc2VPZmZzZXQgKyAxXSBePSAzMjsKKyAgICAgICAgICB1cHBlcmNhc2VPZmZzZXQgKz0gMjsKKyAgICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBkc3RbdXBwZXJjYXNlT2Zmc2V0ICsgMl0gXj0gNTsKKyAgICAgICAgICB1cHBlcmNhc2VPZmZzZXQgKz0gMzsKKyAgICAgICAgICBsZW4gLT0gMzsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAodHJhbnNmb3JtVHlwZSA9PSAyMSB8fCB0cmFuc2Zvcm1UeXBlID09IDIyKSB7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBzaGlmdE9mZnNldCA9IG9mZnNldCAtIGxlbjsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIHBhcmFtID0gdHJhbnNmb3Jtcy5wYXJhbXNbdHJhbnNmb3JtSW5kZXhdOworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gc2NhbGFyID0gKHBhcmFtICYgMHg3RkZGKSArICgweDEwMDAwMDAgLSAocGFyYW0gJiAweDgwMDApKTsKKyAgICAgIHdoaWxlIChsZW4gPiAwKSB7CisgICAgICAgIHZhciAvKiogbnVtYmVyICovIHN0ZXAgPSAxOworICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBjMCA9IGRzdFtzaGlmdE9mZnNldF0gJiAweEZGOworICAgICAgICBpZiAoYzAgPCAweDgwKSB7CisgICAgICAgICAgc2NhbGFyICs9IGMwOworICAgICAgICAgIGRzdFtzaGlmdE9mZnNldF0gPSAoc2NhbGFyICYgMHg3Rik7CisgICAgICAgIH0gZWxzZSBpZiAoYzAgPCAweEMwKSB7CisgICAgICAgIH0gZWxzZSBpZiAoYzAgPCAweEUwKSB7CisgICAgICAgICAgaWYgKGxlbiA+PSAyKSB7CisgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBjMSA9IGRzdFtzaGlmdE9mZnNldCArIDFdOworICAgICAgICAgICAgc2NhbGFyICs9IChjMSAmIDB4M0YpIHwgKChjMCAmIDB4MUYpIDw8IDYpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0XSA9ICgweEMwIHwgKChzY2FsYXIgPj4gNikgJiAweDFGKSk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXQgKyAxXSA9ICgoYzEgJiAweEMwKSB8IChzY2FsYXIgJiAweDNGKSk7CisgICAgICAgICAgICBzdGVwID0gMjsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RlcCA9IGxlbjsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYzAgPCAweEYwKSB7CisgICAgICAgICAgaWYgKGxlbiA+PSAzKSB7CisgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBjMSA9IGRzdFtzaGlmdE9mZnNldCArIDFdOworICAgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gYzIgPSBkc3Rbc2hpZnRPZmZzZXQgKyAyXTsKKyAgICAgICAgICAgIHNjYWxhciArPSAoYzIgJiAweDNGKSB8ICgoYzEgJiAweDNGKSA8PCA2KSB8ICgoYzAgJiAweDBGKSA8PCAxMik7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXRdID0gKDB4RTAgfCAoKHNjYWxhciA+PiAxMikgJiAweDBGKSk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXQgKyAxXSA9ICgoYzEgJiAweEMwKSB8ICgoc2NhbGFyID4+IDYpICYgMHgzRikpOworICAgICAgICAgICAgZHN0W3NoaWZ0T2Zmc2V0ICsgMl0gPSAoKGMyICYgMHhDMCkgfCAoc2NhbGFyICYgMHgzRikpOworICAgICAgICAgICAgc3RlcCA9IDM7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZXAgPSBsZW47CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMwIDwgMHhGOCkgeworICAgICAgICAgIGlmIChsZW4gPj0gNCkgeworICAgICAgICAgICAgdmFyIC8qKiBudW1iZXIgKi8gYzEgPSBkc3Rbc2hpZnRPZmZzZXQgKyAxXTsKKyAgICAgICAgICAgIHZhciAvKiogbnVtYmVyICovIGMyID0gZHN0W3NoaWZ0T2Zmc2V0ICsgMl07CisgICAgICAgICAgICB2YXIgLyoqIG51bWJlciAqLyBjMyA9IGRzdFtzaGlmdE9mZnNldCArIDNdOworICAgICAgICAgICAgc2NhbGFyICs9IChjMyAmIDB4M0YpIHwgKChjMiAmIDB4M0YpIDw8IDYpIHwgKChjMSAmIDB4M0YpIDw8IDEyKSB8ICgoYzAgJiAweDA3KSA8PCAxOCk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXRdID0gKDB4RjAgfCAoKHNjYWxhciA+PiAxOCkgJiAweDA3KSk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXQgKyAxXSA9ICgoYzEgJiAweEMwKSB8ICgoc2NhbGFyID4+IDEyKSAmIDB4M0YpKTsKKyAgICAgICAgICAgIGRzdFtzaGlmdE9mZnNldCArIDJdID0gKChjMiAmIDB4QzApIHwgKChzY2FsYXIgPj4gNikgJiAweDNGKSk7CisgICAgICAgICAgICBkc3Rbc2hpZnRPZmZzZXQgKyAzXSA9ICgoYzMgJiAweEMwKSB8IChzY2FsYXIgJiAweDNGKSk7CisgICAgICAgICAgICBzdGVwID0gNDsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RlcCA9IGxlbjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2hpZnRPZmZzZXQgKz0gc3RlcDsKKyAgICAgICAgbGVuIC09IHN0ZXA7CisgICAgICAgIGlmICh0cmFuc2Zvcm1UeXBlID09IDIxKSB7CisgICAgICAgICAgbGVuID0gMDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICB3aGlsZSAoc3VmZml4ICE9IHN1ZmZpeEVuZCkgeworICAgICAgZHN0W29mZnNldCsrXSA9IHByZWZpeFN1ZmZpeFN0b3JhZ2Vbc3VmZml4KytdOworICAgIH0KKyAgICByZXR1cm4gb2Zmc2V0IC0gZHN0T2Zmc2V0OworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSB7bnVtYmVyfSBrZXkKKyAgICogQHBhcmFtIHtudW1iZXJ9IGxlbgorICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAqLworICBmdW5jdGlvbiBnZXROZXh0S2V5KGtleSwgbGVuKSB7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gc3RlcCA9IDEgPDwgKGxlbiAtIDEpOworICAgIHdoaWxlICgoa2V5ICYgc3RlcCkgIT0gMCkgeworICAgICAgc3RlcCA+Pj0gMTsKKyAgICB9CisgICAgcmV0dXJuIChrZXkgJiAoc3RlcCAtIDEpKSArIHN0ZXA7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDMyQXJyYXl9IHRhYmxlCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAKKyAgICogQHBhcmFtIHtudW1iZXJ9IGVuZAorICAgKiBAcGFyYW0ge251bWJlcn0gaXRlbQorICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gcmVwbGljYXRlVmFsdWUodGFibGUsIG9mZnNldCwgc3RlcCwgZW5kLCBpdGVtKSB7CisgICAgZG8geworICAgICAgZW5kIC09IHN0ZXA7CisgICAgICB0YWJsZVtvZmZzZXQgKyBlbmRdID0gaXRlbTsKKyAgICB9IHdoaWxlIChlbmQgPiAwKTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshSW50MzJBcnJheX0gY291bnQKKyAgICogQHBhcmFtIHtudW1iZXJ9IGxlbgorICAgKiBAcGFyYW0ge251bWJlcn0gcm9vdEJpdHMKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gbmV4dFRhYmxlQml0U2l6ZShjb3VudCwgbGVuLCByb290Qml0cykgeworICAgIHZhciAvKiogbnVtYmVyICovIGxlZnQgPSAxIDw8IChsZW4gLSByb290Qml0cyk7CisgICAgd2hpbGUgKGxlbiA8IDE1KSB7CisgICAgICBsZWZ0IC09IGNvdW50W2xlbl07CisgICAgICBpZiAobGVmdCA8PSAwKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgbGVuKys7CisgICAgICBsZWZ0IDw8PSAxOworICAgIH0KKyAgICByZXR1cm4gbGVuIC0gcm9vdEJpdHM7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDMyQXJyYXl9IHRhYmxlR3JvdXAKKyAgICogQHBhcmFtIHtudW1iZXJ9IHRhYmxlSWR4CisgICAqIEBwYXJhbSB7bnVtYmVyfSByb290Qml0cworICAgKiBAcGFyYW0geyFJbnQzMkFycmF5fSBjb2RlTGVuZ3RocworICAgKiBAcGFyYW0ge251bWJlcn0gY29kZUxlbmd0aHNTaXplCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIGJ1aWxkSHVmZm1hblRhYmxlKHRhYmxlR3JvdXAsIHRhYmxlSWR4LCByb290Qml0cywgY29kZUxlbmd0aHMsIGNvZGVMZW5ndGhzU2l6ZSkgeworICAgIHZhciAvKiogbnVtYmVyICovIHRhYmxlT2Zmc2V0ID0gdGFibGVHcm91cFt0YWJsZUlkeF07CisgICAgdmFyIC8qKiBudW1iZXIgKi8ga2V5OworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gc29ydGVkID0gbmV3IEludDMyQXJyYXkoY29kZUxlbmd0aHNTaXplKTsKKyAgICB2YXIgLyoqICFJbnQzMkFycmF5ICovIGNvdW50ID0gbmV3IEludDMyQXJyYXkoMTYpOworICAgIHZhciAvKiogIUludDMyQXJyYXkgKi8gb2Zmc2V0ID0gbmV3IEludDMyQXJyYXkoMTYpOworICAgIHZhciAvKiogbnVtYmVyICovIHN5bWJvbDsKKyAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IGNvZGVMZW5ndGhzU2l6ZTsgc3ltYm9sKyspIHsKKyAgICAgIGNvdW50W2NvZGVMZW5ndGhzW3N5bWJvbF1dKys7CisgICAgfQorICAgIG9mZnNldFsxXSA9IDA7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBsZW4gPSAxOyBsZW4gPCAxNTsgbGVuKyspIHsKKyAgICAgIG9mZnNldFtsZW4gKyAxXSA9IG9mZnNldFtsZW5dICsgY291bnRbbGVuXTsKKyAgICB9CisgICAgZm9yIChzeW1ib2wgPSAwOyBzeW1ib2wgPCBjb2RlTGVuZ3Roc1NpemU7IHN5bWJvbCsrKSB7CisgICAgICBpZiAoY29kZUxlbmd0aHNbc3ltYm9sXSAhPSAwKSB7CisgICAgICAgIHNvcnRlZFtvZmZzZXRbY29kZUxlbmd0aHNbc3ltYm9sXV0rK10gPSBzeW1ib2w7CisgICAgICB9CisgICAgfQorICAgIHZhciAvKiogbnVtYmVyICovIHRhYmxlQml0cyA9IHJvb3RCaXRzOworICAgIHZhciAvKiogbnVtYmVyICovIHRhYmxlU2l6ZSA9IDEgPDwgdGFibGVCaXRzOworICAgIHZhciAvKiogbnVtYmVyICovIHRvdGFsU2l6ZSA9IHRhYmxlU2l6ZTsKKyAgICBpZiAob2Zmc2V0WzE1XSA9PSAxKSB7CisgICAgICBmb3IgKGtleSA9IDA7IGtleSA8IHRvdGFsU2l6ZTsga2V5KyspIHsKKyAgICAgICAgdGFibGVHcm91cFt0YWJsZU9mZnNldCArIGtleV0gPSBzb3J0ZWRbMF07CisgICAgICB9CisgICAgICByZXR1cm4gdG90YWxTaXplOworICAgIH0KKyAgICBrZXkgPSAwOworICAgIHN5bWJvbCA9IDA7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBsZW4gPSAxLCBzdGVwID0gMjsgbGVuIDw9IHJvb3RCaXRzOyBsZW4rKywgc3RlcCA8PD0gMSkgeworICAgICAgZm9yICg7IGNvdW50W2xlbl0gPiAwOyBjb3VudFtsZW5dLS0pIHsKKyAgICAgICAgcmVwbGljYXRlVmFsdWUodGFibGVHcm91cCwgdGFibGVPZmZzZXQgKyBrZXksIHN0ZXAsIHRhYmxlU2l6ZSwgbGVuIDw8IDE2IHwgc29ydGVkW3N5bWJvbCsrXSk7CisgICAgICAgIGtleSA9IGdldE5leHRLZXkoa2V5LCBsZW4pOworICAgICAgfQorICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBtYXNrID0gdG90YWxTaXplIC0gMTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBsb3cgPSAtMTsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBjdXJyZW50T2Zmc2V0ID0gdGFibGVPZmZzZXQ7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBsZW4gPSByb290Qml0cyArIDEsIHN0ZXAgPSAyOyBsZW4gPD0gMTU7IGxlbisrLCBzdGVwIDw8PSAxKSB7CisgICAgICBmb3IgKDsgY291bnRbbGVuXSA+IDA7IGNvdW50W2xlbl0tLSkgeworICAgICAgICBpZiAoKGtleSAmIG1hc2spICE9IGxvdykgeworICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gdGFibGVTaXplOworICAgICAgICAgIHRhYmxlQml0cyA9IG5leHRUYWJsZUJpdFNpemUoY291bnQsIGxlbiwgcm9vdEJpdHMpOworICAgICAgICAgIHRhYmxlU2l6ZSA9IDEgPDwgdGFibGVCaXRzOworICAgICAgICAgIHRvdGFsU2l6ZSArPSB0YWJsZVNpemU7CisgICAgICAgICAgbG93ID0ga2V5ICYgbWFzazsKKyAgICAgICAgICB0YWJsZUdyb3VwW3RhYmxlT2Zmc2V0ICsgbG93XSA9ICh0YWJsZUJpdHMgKyByb290Qml0cykgPDwgMTYgfCAoY3VycmVudE9mZnNldCAtIHRhYmxlT2Zmc2V0IC0gbG93KTsKKyAgICAgICAgfQorICAgICAgICByZXBsaWNhdGVWYWx1ZSh0YWJsZUdyb3VwLCBjdXJyZW50T2Zmc2V0ICsgKGtleSA+PiByb290Qml0cyksIHN0ZXAsIHRhYmxlU2l6ZSwgKGxlbiAtIHJvb3RCaXRzKSA8PCAxNiB8IHNvcnRlZFtzeW1ib2wrK10pOworICAgICAgICBrZXkgPSBnZXROZXh0S2V5KGtleSwgbGVuKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gZG9SZWFkTW9yZUlucHV0KHMpIHsKKyAgICBpZiAocy5lbmRPZlN0cmVhbVJlYWNoZWQgIT0gMCkgeworICAgICAgaWYgKGhhbGZBdmFpbGFibGUocykgPj0gLTIpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdGhyb3cgIk5vIG1vcmUgaW5wdXQiOworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyByZWFkT2Zmc2V0ID0gcy5oYWxmT2Zmc2V0IDw8IDE7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gYnl0ZXNJbkJ1ZmZlciA9IDQwOTYgLSByZWFkT2Zmc2V0OworICAgIHMuYnl0ZUJ1ZmZlci5jb3B5V2l0aGluKDAsIHJlYWRPZmZzZXQsIDQwOTYpOworICAgIHMuaGFsZk9mZnNldCA9IDA7CisgICAgd2hpbGUgKGJ5dGVzSW5CdWZmZXIgPCA0MDk2KSB7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBzcGFjZUxlZnQgPSA0MDk2IC0gYnl0ZXNJbkJ1ZmZlcjsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIGxlbiA9IHJlYWRJbnB1dChzLmlucHV0LCBzLmJ5dGVCdWZmZXIsIGJ5dGVzSW5CdWZmZXIsIHNwYWNlTGVmdCk7CisgICAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgICAgcy5lbmRPZlN0cmVhbVJlYWNoZWQgPSAxOworICAgICAgICBzLnRhaWxCeXRlcyA9IGJ5dGVzSW5CdWZmZXI7CisgICAgICAgIGJ5dGVzSW5CdWZmZXIgKz0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBieXRlc0luQnVmZmVyICs9IGxlbjsKKyAgICB9CisgICAgYnl0ZXNUb05pYmJsZXMocywgYnl0ZXNJbkJ1ZmZlcik7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRPZlN0cmVhbQorICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gY2hlY2tIZWFsdGgocywgZW5kT2ZTdHJlYW0pIHsKKyAgICBpZiAocy5lbmRPZlN0cmVhbVJlYWNoZWQgPT0gMCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBieXRlT2Zmc2V0ID0gKHMuaGFsZk9mZnNldCA8PCAxKSArICgocy5iaXRPZmZzZXQgKyA3KSA+PiAzKSAtIDQ7CisgICAgaWYgKGJ5dGVPZmZzZXQgPiBzLnRhaWxCeXRlcykgeworICAgICAgdGhyb3cgIlJlYWQgYWZ0ZXIgZW5kIjsKKyAgICB9CisgICAgaWYgKChlbmRPZlN0cmVhbSAhPSAwKSAmJiAoYnl0ZU9mZnNldCAhPSBzLnRhaWxCeXRlcykpIHsKKyAgICAgIHRocm93ICJVbnVzZWQgYnl0ZXMgYWZ0ZXIgZW5kIjsKKyAgICB9CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBhc3NlcnRBY2N1bXVsYXRvckhlYWx0aHkocykgeworICAgIGlmIChzLmJpdE9mZnNldCA+IDMyKSB7CisgICAgICB0aHJvdyAiQWNjdW11bGF0b3IgdW5kZXJsb2FkZWQ6ICIgKyBzLmJpdE9mZnNldDsKKyAgICB9CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEBwYXJhbSB7bnVtYmVyfSBuCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRGZXdCaXRzKHMsIG4pIHsKKyAgICB2YXIgLyoqIG51bWJlciAqLyB2YWwgPSAocy5hY2N1bXVsYXRvcjMyID4+PiBzLmJpdE9mZnNldCkgJiAoKDEgPDwgbikgLSAxKTsKKyAgICBzLmJpdE9mZnNldCArPSBuOworICAgIHJldHVybiB2YWw7CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEBwYXJhbSB7bnVtYmVyfSBuCisgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIHJlYWRNYW55Qml0cyhzLCBuKSB7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gbG93ID0gcmVhZEZld0JpdHMocywgMTYpOworICAgIHMuYWNjdW11bGF0b3IzMiA9IChzLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXSA8PCAxNikgfCAocy5hY2N1bXVsYXRvcjMyID4+PiAxNik7CisgICAgcy5iaXRPZmZzZXQgLT0gMTY7CisgICAgcmV0dXJuIGxvdyB8IChyZWFkRmV3Qml0cyhzLCBuIC0gMTYpIDw8IDE2KTsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIGluaXRCaXRSZWFkZXIocykgeworICAgIHMuYnl0ZUJ1ZmZlciA9IG5ldyBJbnQ4QXJyYXkoNDE2MCk7CisgICAgcy5hY2N1bXVsYXRvcjMyID0gMDsKKyAgICBzLnNob3J0QnVmZmVyID0gbmV3IEludDE2QXJyYXkoMjA4MCk7CisgICAgcy5iaXRPZmZzZXQgPSAzMjsKKyAgICBzLmhhbGZPZmZzZXQgPSAyMDQ4OworICAgIHMuZW5kT2ZTdHJlYW1SZWFjaGVkID0gMDsKKyAgICBwcmVwYXJlKHMpOworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gcHJlcGFyZShzKSB7CisgICAgaWYgKHMuaGFsZk9mZnNldCA+IDIwMzApIHsKKyAgICAgIGRvUmVhZE1vcmVJbnB1dChzKTsKKyAgICB9CisgICAgY2hlY2tIZWFsdGgocywgMCk7CisgICAgcy5hY2N1bXVsYXRvcjMyID0gKHMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdIDw8IDE2KSB8IChzLmFjY3VtdWxhdG9yMzIgPj4+IDE2KTsKKyAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgIHMuYml0T2Zmc2V0IC09IDE2OworICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gcmVsb2FkKHMpIHsKKyAgICBpZiAocy5iaXRPZmZzZXQgPT0gMzIpIHsKKyAgICAgIHByZXBhcmUocyk7CisgICAgfQorICB9CisgIC8qKgorICAgKiBAcGFyYW0geyFTdGF0ZX0gcworICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24ganVtcFRvQnl0ZUJvdW5kYXJ5KHMpIHsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBwYWRkaW5nID0gKDMyIC0gcy5iaXRPZmZzZXQpICYgNzsKKyAgICBpZiAocGFkZGluZyAhPSAwKSB7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBwYWRkaW5nQml0cyA9IHJlYWRGZXdCaXRzKHMsIHBhZGRpbmcpOworICAgICAgaWYgKHBhZGRpbmdCaXRzICE9IDApIHsKKyAgICAgICAgdGhyb3cgIkNvcnJ1cHRlZCBwYWRkaW5nIGJpdHMiOworICAgICAgfQorICAgIH0KKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHJldHVybiB7bnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gaGFsZkF2YWlsYWJsZShzKSB7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gbGltaXQgPSAyMDQ4OworICAgIGlmIChzLmVuZE9mU3RyZWFtUmVhY2hlZCAhPSAwKSB7CisgICAgICBsaW1pdCA9IChzLnRhaWxCeXRlcyArIDEpID4+IDE7CisgICAgfQorICAgIHJldHVybiBsaW1pdCAtIHMuaGFsZk9mZnNldDsKKyAgfQorICAvKioKKyAgICogQHBhcmFtIHshU3RhdGV9IHMKKyAgICogQHBhcmFtIHshSW50OEFycmF5fSBkYXRhCisgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKKyAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aAorICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gY29weUJ5dGVzKHMsIGRhdGEsIG9mZnNldCwgbGVuZ3RoKSB7CisgICAgaWYgKChzLmJpdE9mZnNldCAmIDcpICE9IDApIHsKKyAgICAgIHRocm93ICJVbmFsaWduZWQgY29weUJ5dGVzIjsKKyAgICB9CisgICAgd2hpbGUgKChzLmJpdE9mZnNldCAhPSAzMikgJiYgKGxlbmd0aCAhPSAwKSkgeworICAgICAgZGF0YVtvZmZzZXQrK10gPSAocy5hY2N1bXVsYXRvcjMyID4+PiBzLmJpdE9mZnNldCk7CisgICAgICBzLmJpdE9mZnNldCArPSA4OworICAgICAgbGVuZ3RoLS07CisgICAgfQorICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgLyoqIG51bWJlciAqLyBjb3B5TmliYmxlcyA9IG1pbihoYWxmQXZhaWxhYmxlKHMpLCBsZW5ndGggPj4gMSk7CisgICAgaWYgKGNvcHlOaWJibGVzID4gMCkgeworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gcmVhZE9mZnNldCA9IHMuaGFsZk9mZnNldCA8PCAxOworICAgICAgdmFyIC8qKiBudW1iZXIgKi8gZGVsdGEgPSBjb3B5TmliYmxlcyA8PCAxOworICAgICAgZGF0YS5zZXQocy5ieXRlQnVmZmVyLnN1YmFycmF5KHJlYWRPZmZzZXQsIHJlYWRPZmZzZXQgKyBkZWx0YSksIG9mZnNldCk7CisgICAgICBvZmZzZXQgKz0gZGVsdGE7CisgICAgICBsZW5ndGggLT0gZGVsdGE7CisgICAgICBzLmhhbGZPZmZzZXQgKz0gY29weU5pYmJsZXM7CisgICAgfQorICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaGFsZkF2YWlsYWJsZShzKSA+IDApIHsKKyAgICAgIGlmIChzLmJpdE9mZnNldCA+PSAxNikgeworICAgICAgICBzLmFjY3VtdWxhdG9yMzIgPSAocy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK10gPDwgMTYpIHwgKHMuYWNjdW11bGF0b3IzMiA+Pj4gMTYpOworICAgICAgICBzLmJpdE9mZnNldCAtPSAxNjsKKyAgICAgIH0KKyAgICAgIHdoaWxlIChsZW5ndGggIT0gMCkgeworICAgICAgICBkYXRhW29mZnNldCsrXSA9IChzLmFjY3VtdWxhdG9yMzIgPj4+IHMuYml0T2Zmc2V0KTsKKyAgICAgICAgcy5iaXRPZmZzZXQgKz0gODsKKyAgICAgICAgbGVuZ3RoLS07CisgICAgICB9CisgICAgICBjaGVja0hlYWx0aChzLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgd2hpbGUgKGxlbmd0aCA+IDApIHsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIGxlbiA9IHJlYWRJbnB1dChzLmlucHV0LCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICBpZiAobGVuID09IC0xKSB7CisgICAgICAgIHRocm93ICJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCI7CisgICAgICB9CisgICAgICBvZmZzZXQgKz0gbGVuOworICAgICAgbGVuZ3RoIC09IGxlbjsKKyAgICB9CisgIH0KKyAgLyoqCisgICAqIEBwYXJhbSB7IVN0YXRlfSBzCisgICAqIEBwYXJhbSB7bnVtYmVyfSBieXRlTGVuCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiBieXRlc1RvTmliYmxlcyhzLCBieXRlTGVuKSB7CisgICAgdmFyIC8qKiAhSW50OEFycmF5ICovIGJ5dGVCdWZmZXIgPSBzLmJ5dGVCdWZmZXI7CisgICAgdmFyIC8qKiBudW1iZXIgKi8gaGFsZkxlbiA9IGJ5dGVMZW4gPj4gMTsKKyAgICB2YXIgLyoqICFJbnQxNkFycmF5ICovIHNob3J0QnVmZmVyID0gcy5zaG9ydEJ1ZmZlcjsKKyAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgaGFsZkxlbjsgKytpKSB7CisgICAgICBzaG9ydEJ1ZmZlcltpXSA9ICgoYnl0ZUJ1ZmZlcltpICogMl0gJiAweEZGKSB8ICgoYnl0ZUJ1ZmZlclsoaSAqIDIpICsgMV0gJiAweEZGKSA8PCA4KSk7CisgICAgfQorICB9CisKKyAgdmFyIExPT0tVUCA9IG5ldyBJbnQzMkFycmF5KDIwNDgpOworICAvKioKKyAgICogQHBhcmFtIHshSW50MzJBcnJheX0gbG9va3VwCisgICAqIEBwYXJhbSB7IXN0cmluZ30gbWFwCisgICAqIEBwYXJhbSB7IXN0cmluZ30gcmxlCisgICAqIEByZXR1cm4ge3ZvaWR9CisgICAqLworICBmdW5jdGlvbiB1bnBhY2tMb29rdXBUYWJsZShsb29rdXAsIG1hcCwgcmxlKSB7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IDI1NjsgKytpKSB7CisgICAgICBsb29rdXBbaV0gPSBpICYgMHgzRjsKKyAgICAgIGxvb2t1cFs1MTIgKyBpXSA9IGkgPj4gMjsKKyAgICAgIGxvb2t1cFsxNzkyICsgaV0gPSAyICsgKGkgPj4gNik7CisgICAgfQorICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCAxMjg7ICsraSkgeworICAgICAgbG9va3VwWzEwMjQgKyBpXSA9IDQgKiAobWFwLmNoYXJDb2RlQXQoaSkgLSAzMik7CisgICAgfQorICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCA2NDsgKytpKSB7CisgICAgICBsb29rdXBbMTE1MiArIGldID0gaSAmIDE7CisgICAgICBsb29rdXBbMTIxNiArIGldID0gMiArIChpICYgMSk7CisgICAgfQorICAgIHZhciAvKiogbnVtYmVyICovIG9mZnNldCA9IDEyODA7CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBrID0gMDsgayA8IDE5OyArK2spIHsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIHZhbHVlID0gayAmIDM7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyByZXAgPSBybGUuY2hhckNvZGVBdChrKSAtIDMyOworICAgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IHJlcDsgKytpKSB7CisgICAgICAgIGxvb2t1cFtvZmZzZXQrK10gPSB2YWx1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgIGxvb2t1cFsxNzkyICsgaV0gPSAxOworICAgICAgbG9va3VwWzIwMzIgKyBpXSA9IDY7CisgICAgfQorICAgIGxvb2t1cFsxNzkyXSA9IDA7CisgICAgbG9va3VwWzIwNDddID0gNzsKKyAgICBmb3IgKHZhciAvKiogbnVtYmVyICovIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKKyAgICAgIGxvb2t1cFsxNTM2ICsgaV0gPSBsb29rdXBbMTc5MiArIGldIDw8IDM7CisgICAgfQorICB9CisgIHsKKyAgICB1bnBhY2tMb29rdXBUYWJsZShMT09LVVAsICIgICAgICAgICAhISAgISAgICAgICAgICAgICAgICAgIFwiIyQjIyUjJCYnIyMoIykjKysrKysrKysrKygoJionIyMsLS0tLC0tLSwtLS0tLSwtLS0tLSwtLS0tLSYjJyMjIy4vLy8uLy8vLi8vLy8vLi8vLy8vLi8vLy8vJiMnIyAiLCAiQS8qICAnOiAgJiA6ICQgIFx1MDA4MSBAIik7CisgIH0KKworICAvKioKKyAgICogQGNvbnN0cnVjdG9yCisgICAqIEBzdHJ1Y3QKKyAgICovCisgIGZ1bmN0aW9uIFN0YXRlKCkgeworICAgIC8qKiBAdHlwZSB7IUludDhBcnJheX0gKi8KKyAgICB0aGlzLnJpbmdCdWZmZXIgPSBuZXcgSW50OEFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDhBcnJheX0gKi8KKyAgICB0aGlzLmNvbnRleHRNb2RlcyA9IG5ldyBJbnQ4QXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICAgIHRoaXMuY29udGV4dE1hcCA9IG5ldyBJbnQ4QXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICAgIHRoaXMuZGlzdENvbnRleHRNYXAgPSBuZXcgSW50OEFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDhBcnJheX0gKi8KKyAgICB0aGlzLmRpc3RFeHRyYUJpdHMgPSBuZXcgSW50OEFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDhBcnJheX0gKi8KKyAgICB0aGlzLm91dHB1dCA9IG5ldyBJbnQ4QXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICAgIHRoaXMuYnl0ZUJ1ZmZlciA9IG5ldyBJbnQ4QXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50MTZBcnJheX0gKi8KKyAgICB0aGlzLnNob3J0QnVmZmVyID0gbmV3IEludDE2QXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50MzJBcnJheX0gKi8KKyAgICB0aGlzLmludEJ1ZmZlciA9IG5ldyBJbnQzMkFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDMyQXJyYXl9ICovCisgICAgdGhpcy5yaW5ncyA9IG5ldyBJbnQzMkFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDMyQXJyYXl9ICovCisgICAgdGhpcy5ibG9ja1RyZWVzID0gbmV3IEludDMyQXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshSW50MzJBcnJheX0gKi8KKyAgICB0aGlzLmxpdGVyYWxUcmVlR3JvdXAgPSBuZXcgSW50MzJBcnJheSgwKTsKKyAgICAvKiogQHR5cGUgeyFJbnQzMkFycmF5fSAqLworICAgIHRoaXMuY29tbWFuZFRyZWVHcm91cCA9IG5ldyBJbnQzMkFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDMyQXJyYXl9ICovCisgICAgdGhpcy5kaXN0YW5jZVRyZWVHcm91cCA9IG5ldyBJbnQzMkFycmF5KDApOworICAgIC8qKiBAdHlwZSB7IUludDMyQXJyYXl9ICovCisgICAgdGhpcy5kaXN0T2Zmc2V0ID0gbmV3IEludDMyQXJyYXkoMCk7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMucnVubmluZ1N0YXRlID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5uZXh0UnVubmluZ1N0YXRlID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5hY2N1bXVsYXRvcjMyID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5iaXRPZmZzZXQgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmhhbGZPZmZzZXQgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLnRhaWxCeXRlcyA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMuZW5kT2ZTdHJlYW1SZWFjaGVkID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5tZXRhQmxvY2tMZW5ndGggPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmlucHV0RW5kID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5pc1VuY29tcHJlc3NlZCA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMuaXNNZXRhZGF0YSA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMubGl0ZXJhbEJsb2NrTGVuZ3RoID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5udW1MaXRlcmFsQmxvY2tUeXBlcyA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMuY29tbWFuZEJsb2NrTGVuZ3RoID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5udW1Db21tYW5kQmxvY2tUeXBlcyA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMuZGlzdGFuY2VCbG9ja0xlbmd0aCA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMubnVtRGlzdGFuY2VCbG9ja1R5cGVzID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5wb3MgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLm1heERpc3RhbmNlID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5kaXN0UmJJZHggPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLnRyaXZpYWxMaXRlcmFsQ29udGV4dCA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMubGl0ZXJhbFRyZWVJZHggPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmNvbW1hbmRUcmVlSWR4ID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5qID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5pbnNlcnRMZW5ndGggPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmNvbnRleHRNYXBTbGljZSA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMuZGlzdENvbnRleHRNYXBTbGljZSA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMuY29udGV4dExvb2t1cE9mZnNldDEgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmNvbnRleHRMb29rdXBPZmZzZXQyID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5kaXN0YW5jZUNvZGUgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLm51bURpcmVjdERpc3RhbmNlQ29kZXMgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmRpc3RhbmNlUG9zdGZpeE1hc2sgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmRpc3RhbmNlUG9zdGZpeEJpdHMgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmRpc3RhbmNlID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5jb3B5TGVuZ3RoID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5tYXhCYWNrd2FyZERpc3RhbmNlID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5tYXhSaW5nQnVmZmVyU2l6ZSA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMucmluZ0J1ZmZlclNpemUgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmV4cGVjdGVkVG90YWxTaXplID0gMDsKKyAgICAvKiogQHR5cGUgeyFudW1iZXJ9ICovCisgICAgdGhpcy5vdXRwdXRPZmZzZXQgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLm91dHB1dExlbmd0aCA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMub3V0cHV0VXNlZCA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbiA9IDA7CisgICAgLyoqIEB0eXBlIHshbnVtYmVyfSAqLworICAgIHRoaXMucmluZ0J1ZmZlckJ5dGVzUmVhZHkgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmlzRWFnZXIgPSAwOworICAgIC8qKiBAdHlwZSB7IW51bWJlcn0gKi8KKyAgICB0aGlzLmlzTGFyZ2VXaW5kb3cgPSAwOworICAgIC8qKiBAdHlwZSB7IUlucHV0U3RyZWFtfG51bGx9ICovCisgICAgdGhpcy5pbnB1dCA9IG51bGw7CisgICAgdGhpcy5yaW5nQnVmZmVyID0gbmV3IEludDhBcnJheSgwKTsKKyAgICB0aGlzLnJpbmdzID0gbmV3IEludDMyQXJyYXkoMTApOworICAgIHRoaXMucmluZ3NbMF0gPSAxNjsKKyAgICB0aGlzLnJpbmdzWzFdID0gMTU7CisgICAgdGhpcy5yaW5nc1syXSA9IDExOworICAgIHRoaXMucmluZ3NbM10gPSA0OworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSB7IUludDhBcnJheX0gZGljdGlvbmFyeQorICAgKiBAcGFyYW0geyFzdHJpbmd9IGRhdGEwCisgICAqIEBwYXJhbSB7IXN0cmluZ30gZGF0YTEKKyAgICogQHBhcmFtIHshc3RyaW5nfSBza2lwRmxpcAorICAgKiBAcmV0dXJuIHt2b2lkfQorICAgKi8KKyAgZnVuY3Rpb24gdW5wYWNrRGljdGlvbmFyeURhdGEoZGljdGlvbmFyeSwgZGF0YTAsIGRhdGExLCBza2lwRmxpcCkgeworICAgIHZhciAvKiogIUludDhBcnJheSAqLyBkaWN0ID0gdG9Vc0FzY2lpQnl0ZXMoZGF0YTAgKyBkYXRhMSk7CisgICAgaWYgKGRpY3QubGVuZ3RoICE9IGRpY3Rpb25hcnkubGVuZ3RoKSB7CisgICAgICB0aHJvdyAiQ29ycnVwdGVkIGJyb3RsaSBkaWN0aW9uYXJ5IjsKKyAgICB9CisgICAgdmFyIC8qKiBudW1iZXIgKi8gb2Zmc2V0ID0gMDsKKyAgICB2YXIgLyoqIG51bWJlciAqLyBuID0gc2tpcEZsaXAubGVuZ3RoOworICAgIGZvciAodmFyIC8qKiBudW1iZXIgKi8gaSA9IDA7IGkgPCBuOyBpICs9IDIpIHsKKyAgICAgIHZhciAvKiogbnVtYmVyICovIHNraXAgPSBza2lwRmxpcC5jaGFyQ29kZUF0KGkpIC0gMzY7CisgICAgICB2YXIgLyoqIG51bWJlciAqLyBmbGlwID0gc2tpcEZsaXAuY2hhckNvZGVBdChpICsgMSkgLSAzNjsKKyAgICAgIG9mZnNldCArPSBza2lwOworICAgICAgZm9yICh2YXIgLyoqIG51bWJlciAqLyBqID0gMDsgaiA8IGZsaXA7ICsraikgeworICAgICAgICBkaWN0W29mZnNldF0gfD0gMHg4MDsKKyAgICAgICAgb2Zmc2V0Kys7CisgICAgICB9CisgICAgfQorICAgIGRpY3Rpb25hcnkuc2V0KGRpY3QpOworICB9CisgIHsKKyAgICB2YXIgLyoqICFJbnQ4QXJyYXkgKi8gZGljdGlvbmFyeSA9IG5ldyBJbnQ4QXJyYXkoMTIyNzg0KTsKKyAgICB1bnBhY2tEaWN0aW9uYXJ5RGF0YShkaWN0aW9uYXJ5LCAidGltZWRvd25saWZlbGVmdGJhY2tjb2RlZGF0YXNob3dvbmx5c2l0ZWNpdHlvcGVuanVzdGxpa2VmcmVld29ya3RleHR5ZWFyb3ZlcmJvZHlsb3ZlZm9ybWJvb2twbGF5bGl2ZWxpbmVoZWxwaG9tZXNpZGVtb3Jld29yZGxvbmd0aGVtdmlld2ZpbmRwYWdlZGF5c2Z1bGxoZWFkdGVybWVhY2hhcmVhZnJvbXRydWVtYXJrYWJsZXVwb25oaWdoZGF0ZWxhbmRuZXdzZXZlbm5leHRjYXNlYm90aHBvc3R1c2VkbWFkZWhhbmRoZXJld2hhdG5hbWVMaW5rYmxvZ3NpemViYXNlaGVsZG1ha2VtYWludXNlcicpICtob2xkZW5kc3dpdGhOZXdzcmVhZHdlcmVzaWdudGFrZWhhdmVnYW1lc2VlbmNhbGxwYXRod2VsbHBsdXNtZW51ZmlsbXBhcnRqb2ludGhpc2xpc3Rnb29kbmVlZHdheXN3ZXN0am9ic21pbmRhbHNvbG9nb3JpY2h1c2VzbGFzdHRlYW1hcm15Zm9vZGtpbmd3aWxsZWFzdHdhcmRiZXN0ZmlyZVBhZ2Vrbm93YXdheS5wbmdtb3ZldGhhbmxvYWRnaXZlc2VsZm5vdGVtdWNoZmVlZG1hbnlyb2NraWNvbm9uY2Vsb29raGlkZWRpZWRIb21lcnVsZWhvc3RhamF4aW5mb2NsdWJsYXdzbGVzc2hhbGZzb21lc3VjaHpvbmUxMDAlb25lc2NhcmVUaW1lcmFjZWJsdWVmb3Vyd2Vla2ZhY2Vob3BlZ2F2ZWhhcmRsb3N0d2hlbnBhcmtrZXB0cGFzc3NoaXByb29tSFRNTHBsYW5UeXBlZG9uZXNhdmVrZWVwZmxhZ2xpbmtzb2xkZml2ZXRvb2tyYXRldG93bmp1bXB0aHVzZGFya2NhcmRmaWxlZmVhcnN0YXlraWxsdGhhdGZhbGxhdXRvZXZlci5jb210YWxrc2hvcHZvdGVkZWVwbW9kZXJlc3R0dXJuYm9ybmJhbmRmZWxscm9zZXVybChza2lucm9sZWNvbWVhY3RzYWdlc21lZXRnb2xkLmpwZ2l0ZW12YXJ5ZmVsdHRoZW5zZW5kZHJvcFZpZXdjb3B5MS4wXCI8L2E+c3RvcGVsc2VsaWVzdG91cnBhY2suZ2lmcGFzdGNzcz9ncmF5bWVhbiZndDtyaWRlc2hvdGxhdGVzYWlkcm9hZHZhciBmZWVsam9obnJpY2twb3J0ZmFzdCdVQS1kZWFkPC9iPnBvb3JiaWxsdHlwZVUuUy53b29kbXVzdDJweDtJbmZvcmFua3dpZGV3YW50d2FsbGxlYWRbMF07cGF1bHdhdmVzdXJlJCgnI3dhaXRtYXNzYXJtc2dvZXNnYWlubGFuZ3BhaWQhLS0gbG9ja3VuaXRyb290d2Fsa2Zpcm13aWZleG1sXCJzb25ndGVzdDIwcHhraW5kcm93c3Rvb2xmb250bWFpbHNhZmVzdGFybWFwc2NvcmVyYWluZmxvd2JhYnlzcGFuc2F5czRweDs2cHg7YXJ0c2Zvb3RyZWFsd2lraWhlYXRzdGVwdHJpcG9yZy9sYWtld2Vha3RvbGRGb3JtY2FzdGZhbnNiYW5rdmVyeXJ1bnNqdWx5dGFzazFweDtnb2FsZ3Jld3Nsb3dlZGdlaWQ9XCJzZXRzNXB4Oy5qcz80MHB4aWYgKHNvb25zZWF0bm9uZXR1YmV6ZXJvc2VudHJlZWRmYWN0aW50b2dpZnRoYXJtMThweGNhbWVoaWxsYm9sZHpvb212b2lkZWFzeXJpbmdmaWxscGVha2luaXRjb3N0M3B4O2phY2t0YWdzYml0c3JvbGxlZGl0a25ld25lYXI8IS0tZ3Jvd0pTT05kdXR5TmFtZXNhbGV5b3UgbG90c3BhaW5qYXp6Y29sZGV5ZXNmaXNod3d3LnJpc2t0YWJzcHJldjEwcHhyaXNlMjVweEJsdWVkaW5nMzAwLGJhbGxmb3JkZWFybndpbGRib3guZmFpcmxhY2t2ZXJzcGFpcmp1bmV0ZWNoaWYoIXBpY2tldmlsJChcIiN3YXJtbG9yZGRvZXNwdWxsLDAwMGlkZWFkcmF3aHVnZXNwb3RmdW5kYnVybmhyZWZjZWxsa2V5c3RpY2tob3VybG9zc2Z1ZWwxMnB4c3VpdGRlYWxSU1NcImFnZWRncmV5R0VUXCJlYXNlYWltc2dpcmxhaWRzOHB4O25hdnlncmlkdGlwcyM5OTl3YXJzbGFkeWNhcnMpOyB9cGhwP2hlbGx0YWxsd2hvbXpoOmUqL1xyXG4gMTAwaGFsbC5cblxuQTdweDtwdXNoY2hhdDBweDtjcmV3Ki88L2hhc2g3NXB4ZmxhdHJhcmUgJiYgdGVsbGNhbXBvbnRvbGFpZG1pc3Nza2lwdGVudGZpbmVtYWxlZ2V0c3Bsb3Q0MDAsXHJcblxyXG5jb29sZmVldC5waHA8YnI+ZXJpY21vc3RndWlkYmVsbGRlc2NoYWlybWF0aGF0b20vaW1nJiM4Mmx1Y2tjZW50MDAwO3Rpbnlnb25laHRtbHNlbGxkcnVnRlJFRW5vZGVuaWNrP2lkPWxvc2VudWxsdmFzdHdpbmRSU1Mgd2VhcnJlbHliZWVuc2FtZWR1a2VuYXNhY2FwZXdpc2hndWxmVDIzOmhpdHNzbG90Z2F0ZWtpY2tibHVydGhleTE1cHgnJyk7KTtcIj5tc2lld2luc2JpcmRzb3J0YmV0YXNlZWtUMTg6b3Jkc3RyZWVtYWxsNjBweGZhcm1iXHUwMDAwXHUwMDE5c2JveXNbMF0uJyk7XCJQT1NUYmVhcmtpZHMpO319bWFyeXRlbmQoVUspcXVhZHpoOmYtc2l6LS0tLXByb3AnKTtccmxpZnRUMTk6dmljZWFuZHlkZWJ0PlJTU3Bvb2xuZWNrYmxvd1QxNjpkb29yZXZhbFQxNzpsZXRzZmFpbG9yYWxwb2xsbm92YWNvbHNnZW5lIGJcdTAwMDBcdTAwMTRzb2Z0cm9tZXRpbGxyb3NzPGgzPnBvdXJmYWRlcGluazx0cj5taW5pKXwhKG1pbmV6aDpoYmFyc2hlYXIwMCk7bWlsayAtLT5pcm9uZnJlZGRpc2t3ZW50c29pbHB1dHMvanMvaG9seVQyMjpJU0JOVDIwOmFkYW1zZWVzPGgyPmpzb24nLCAnY29udFQyMTogUlNTbG9vcGFzaWFtb29uPC9wPnNvdWxMSU5FZm9ydGNhcnRUMTQ6PGgxPjgwcHghLS08OXB4O1QwNDptaWtlOjQ2Wm5pY2VpbmNoWW9ya3JpY2V6aDpkJykpO3B1cmVtYWdlcGFyYXRvbmVib25kOjM3Wl9vZl8nXSk7MDAwLHpoOmd0YW5reWFyZGJvd2xidXNoOjU2WkphdmEzMHB4XG58fVxuJUMzJTozNFpqZWZmRVhQSWNhc2h2aXNhZ29sZnNub3d6aDppcXVlci5jc3NzaWNrbWVhdG1pbi5iaW5kZGVsbGhpcmVwaWNzcmVudDozNlpIVFRQLTIwMWZvdG93b2xmRU5EIHhib3g6NTRaQk9EWWRpY2s7XG59XG5leGl0OjM1WnZhcnNiZWF0J30pO2RpZXQ5OTk7YW5uZX19PC9baV0uTGFuZ2ttQjJ3aXJldG95c2FkZHNzZWFsYWxleDtcblx0fWVjaG9uaW5lLm9yZzAwNSl0b255amV3c3NhbmRsZWdzcm9vZjAwMCkgMjAwd2luZWdlYXJkb2dzYm9vdGdhcnljdXRzdHlsZXRlbXB0aW9uLnhtbGNvY2tnYW5nJCgnLjUwcHhQaC5EbWlzY2FsYW5sb2FuZGVza21pbGVyeWFudW5peGRpc2MpO31cbmR1c3RjbGlwKS5cblxuNzBweC0yMDBEVkRzN10+PHRhcGVkZW1vaSsrKXdhZ2VldXJvcGhpbG9wdHNob2xlRkFRc2FzaW4tMjZUbGFic3BldHNVUkwgYnVsa2Nvb2s7fVxyXG5IRUFEWzBdKWFiYnJqdWFuKDE5OGxlc2h0d2luPC9pPnNvbnlndXlzZnVja3BpcGV8LVxuITAwMiluZG93WzFdO1tdO1xuTG9nIHNhbHRcclxuXHRcdGJhbmd0cmltYmF0aCl7XHJcbjAwcHhcbn0pO2tvOmxmZWVzYWQ+XHJzOi8vIFtdO3RvbGxwbHVnKCl7XG57XHJcbiAuanMnMjAwcGR1YWxib2F0LkpQRyk7XG59cXVvdCk7XG5cbicpO1xuXHJcbn1ccjIwMTQyMDE1MjAxNjIwMTcyMDE4MjAxOTIwMjAyMDIxMjAyMjIwMjMyMDI0MjAyNTIwMjYyMDI3MjAyODIwMjkyMDMwMjAzMTIwMzIyMDMzMjAzNDIwMzUyMDM2MjAzNzIwMTMyMDEyMjAxMTIwMTAyMDA5MjAwODIwMDcyMDA2MjAwNTIwMDQyMDAzMjAwMjIwMDEyMDAwMTk5OTE5OTgxOTk3MTk5NjE5OTUxOTk0MTk5MzE5OTIxOTkxMTk5MDE5ODkxOTg4MTk4NzE5ODYxOTg1MTk4NDE5ODMxOTgyMTk4MTE5ODAxOTc5MTk3ODE5NzcxOTc2MTk3NTE5NzQxOTczMTk3MjE5NzExOTcwMTk2OTE5NjgxOTY3MTk2NjE5NjUxOTY0MTk2MzE5NjIxOTYxMTk2MDE5NTkxOTU4MTk1NzE5NTYxOTU1MTk1NDE5NTMxOTUyMTk1MTE5NTAxMDAwMTAyNDEzOTQwMDAwOTk5OWNvbW9tQyFzZXN0ZWVzdGFwZXJvdG9kb2hhY2VjYWRhYUMxb2JpZW5kQy1hYXNDLXZpZGFjYXNvb3Ryb2Zvcm9zb2xvb3RyYWN1YWxkaWpvc2lkb2dyYW50aXBvdGVtYWRlYmVhbGdvcXVDKWVzdG9uYWRhdHJlc3BvY29jYXNhYmFqb3RvZGFzaW5vYWd1YXB1ZXN1bm9zYW50ZWRpY2VsdWlzZWxsYW1heW96b25hYW1vcnBpc29vYnJhY2xpY2VsbG9kaW9zaG9yYWNhc2lQN1AwUD1QMFA+UDxRXHUwMDAwUDBRXHUwMDAwUVx1MDAwM1FcdTAwMDJQMFA9UDVQP1A+UD5RXHUwMDAyUDhQN1A9UD5QNFA+UVx1MDAwMlA+UDZQNVA+UD1QOFFcdTAwMDVQXHUwMDFEUDBQNVA1UDFRXHUwMDBCUDxRXHUwMDBCUFx1MDAxMlFcdTAwMEJRXHUwMDAxUD5QMlFcdTAwMEJQMlA+UFx1MDAxRFA+UD5QMVBcdTAwMUZQPlA7UDhQPVA4UCBQJFBcdTAwMURQNVBcdTAwMUNRXHUwMDBCUVx1MDAwMlFcdTAwMEJQXHUwMDFFUD1QOFA8UDRQMFBcdTAwMTdQMFBcdTAwMTRQMFBcdTAwMURRXHUwMDAzUFx1MDAxRVAxUVx1MDAwMlA1UFx1MDAxOFA3UDVQOVA9UVx1MDAwM1A8UDxQXCJRXHUwMDBCUVx1MDAwM1A2WVx1MDAwMVlcblgjWVx1MDAwNllcdTAwMDVYJ1lcdTAwMDVYOVlcdTAwMDNZXHUwMDA0WCNZXHUwMDA4WDFYL1lcblgnWVx1MDAwMVlcdFlcdTAwMDdZXHUwMDA4WVx1MDAwNFlcdTAwMDVZXHUwMDA0WVx1MDAwM1gnWVx1MDAwOFlcdTAwMDRZXHUwMDA3WChYM1gnWVx1MDAwNFglWVx1MDAwNllcdTAwMDdZXG5YI1lcbllcdTAwMDJYL1lcdTAwMDdZXHUwMDA0WCtZXHUwMDA1WChZXHUwMDA3WVx1MDAwNFlcdTAwMDhZXHUwMDA0WVxuWChZXHUwMDA0WCdZXG5YKFlcdTAwMDNYNFlcblgnWVx1MDAwNVgjWVx1MDAwNVlcdTAwMDZYKlgoWVxuWVx1MDAwNFlcdTAwMDZYLVgoWVx1MDAwN1lcdTAwMDVZXHUwMDA1WDRZXHUwMDA4WDRmaXJzdHZpZGVvbGlnaHR3b3JsZG1lZGlhd2hpdGVjbG9zZWJsYWNrcmlnaHRzbWFsbGJvb2tzcGxhY2VtdXNpY2ZpZWxkb3JkZXJwb2ludHZhbHVlbGV2ZWx0YWJsZWJvYXJkaG91c2Vncm91cHdvcmtzeWVhcnNzdGF0ZXRvZGF5d2F0ZXJzdGFydHN0eWxlZGVhdGhwb3dlcnBob25lbmlnaHRlcnJvcmlucHV0YWJvdXR0ZXJtc3RpdGxldG9vbHNldmVudGxvY2FsdGltZXNsYXJnZXdvcmRzZ2FtZXNzaG9ydHNwYWNlZm9jdXNjbGVhcm1vZGVsYmxvY2tndWlkZXJhZGlvc2hhcmV3b21lbmFnYWlubW9uZXlpbWFnZW5hbWVzeW91bmdsaW5lc2xhdGVyY29sb3JncmVlbmZyb250JmFtcDt3YXRjaGZvcmNlcHJpY2VydWxlc2JlZ2luYWZ0ZXJ2aXNpdGlzc3VlYXJlYXNiZWxvd2luZGV4dG90YWxob3Vyc2xhYmVscHJpbnRwcmVzc2J1aWx0bGlua3NzcGVlZHN0dWR5dHJhZGVmb3VuZHNlbnNldW5kZXJzaG93bmZvcm1zcmFuZ2VhZGRlZHN0aWxsbW92ZWR0YWtlbmFib3ZlZmxhc2hmaXhlZG9mdGVub3RoZXJ2aWV3c2NoZWNrbGVnYWxyaXZlcml0ZW1zcXVpY2tzaGFwZWh1bWFuZXhpc3Rnb2luZ21vdmlldGhpcmRiYXNpY3BlYWNlc3RhZ2V3aWR0aGxvZ2luaWRlYXN3cm90ZXBhZ2VzdXNlcnNkcml2ZXN0b3JlYnJlYWtzb3V0aHZvaWNlc2l0ZXNtb250aHdoZXJlYnVpbGR3aGljaGVhcnRoZm9ydW10aHJlZXNwb3J0cGFydHlDbGlja2xvd2VybGl2ZXNjbGFzc2xheWVyZW50cnlzdG9yeXVzYWdlc291bmRjb3VydHlvdXIgYmlydGhwb3B1cHR5cGVzYXBwbHlJbWFnZWJlaW5ndXBwZXJub3Rlc2V2ZXJ5c2hvd3NtZWFuc2V4dHJhbWF0Y2h0cmFja2tub3duZWFybHliZWdhbnN1cGVycGFwZXJub3J0aGxlYXJuZ2l2ZW5uYW1lZGVuZGVkVGVybXNwYXJ0c0dyb3VwYnJhbmR1c2luZ3dvbWFuZmFsc2VyZWFkeWF1ZGlvdGFrZXN3aGlsZS5jb20vbGl2ZWRjYXNlc2RhaWx5Y2hpbGRncmVhdGp1ZGdldGhvc2V1bml0c25ldmVyYnJvYWRjb2FzdGNvdmVyYXBwbGVmaWxlc2N5Y2xlc2NlbmVwbGFuc2NsaWNrd3JpdGVxdWVlbnBpZWNlZW1haWxmcmFtZW9sZGVycGhvdG9saW1pdGNhY2hlY2l2aWxzY2FsZWVudGVydGhlbWV0aGVyZXRvdWNoYm91bmRyb3lhbGFza2Vkd2hvbGVzaW5jZXN0b2NrIG5hbWVmYWl0aGhlYXJ0ZW1wdHlvZmZlcnNjb3Blb3duZWRtaWdodGFsYnVtdGhpbmtibG9vZGFycmF5bWFqb3J0cnVzdGNhbm9udW5pb25jb3VudHZhbGlkc3RvbmVTdHlsZUxvZ2luaGFwcHlvY2N1cmxlZnQ6ZnJlc2hxdWl0ZWZpbG1zZ3JhZGVuZWVkc3VyYmFuZmlnaHRiYXNpc2hvdmVyYXV0bztyb3V0ZS5odG1sbWl4ZWRmaW5hbFlvdXIgc2xpZGV0b3BpY2Jyb3duYWxvbmVkcmF3bnNwbGl0cmVhY2hSaWdodGRhdGVzbWFyY2hxdW90ZWdvb2RzTGlua3Nkb3VidGFzeW5jdGh1bWJhbGxvd2NoaWVmeW91dGhub3ZlbDEwcHg7c2VydmV1bnRpbGhhbmRzQ2hlY2tTcGFjZXF1ZXJ5amFtZXNlcXVhbHR3aWNlMCwwMDBTdGFydHBhbmVsc29uZ3Nyb3VuZGVpZ2h0c2hpZnR3b3J0aHBvc3RzbGVhZHN3ZWVrc2F2b2lkdGhlc2VtaWxlc3BsYW5lc21hcnRhbHBoYXBsYW50bWFya3NyYXRlc3BsYXlzY2xhaW1zYWxlc3RleHRzc3RhcnN3cm9uZzwvaDM+dGhpbmcub3JnL211bHRpaGVhcmRQb3dlcnN0YW5kdG9rZW5zb2xpZCh0aGlzYnJpbmdzaGlwc3N0YWZmdHJpZWRjYWxsc2Z1bGx5ZmFjdHNhZ2VudFRoaXMgLy8tLT5hZG1pbmVneXB0RXZlbnQxNXB4O0VtYWlsdHJ1ZVwiY3Jvc3NzcGVudGJsb2dzYm94XCI+bm90ZWRsZWF2ZWNoaW5hc2l6ZXNndWVzdDwvaDQ+cm9ib3RoZWF2eXRydWUsc2V2ZW5ncmFuZGNyaW1lc2lnbnNhd2FyZWRhbmNlcGhhc2U+PCEtLWVuX1VTJiMzOTsyMDBweF9uYW1lbGF0aW5lbmpveWFqYXguYXRpb25zbWl0aFUuUy4gaG9sZHNwZXRlcmluZGlhbmF2XCI+Y2hhaW5zY29yZWNvbWVzZG9pbmdwcmlvclNoYXJlMTk5MHNyb21hbmxpc3RzamFwYW5mYWxsc3RyaWFsb3duZXJhZ3JlZTwvaDI+YWJ1c2VhbGVydG9wZXJhXCItLy9XY2FyZHNoaWxsc3RlYW1zUGhvdG90cnV0aGNsZWFuLnBocD9zYWludG1ldGFsbG91aXNtZWFudHByb29mYnJpZWZyb3dcIj5nZW5yZXRydWNrbG9va3NWYWx1ZUZyYW1lLm5ldC8tLT5cbjx0cnkge1xudmFyIG1ha2VzY29zdHNwbGFpbmFkdWx0cXVlc3R0cmFpbmxhYm9yaGVscHNjYXVzZW1hZ2ljbW90b3J0aGVpcjI1MHB4bGVhc3RzdGVwc0NvdW50Y291bGRnbGFzc3NpZGVzZnVuZHNob3RlbGF3YXJkbW91dGhtb3Zlc3BhcmlzZ2l2ZXNkdXRjaHRleGFzZnJ1aXRudWxsLHx8W107dG9wXCI+XG48IS0tUE9TVFwib2NlYW48YnIvPmZsb29yc3BlYWtkZXB0aCBzaXplYmFua3NjYXRjaGNoYXJ0MjBweDthbGlnbmRlYWxzd291bGQ1MHB4O3VybD1cInBhcmtzbW91c2VNb3N0IC4uLjwvYW1vbmdicmFpbmJvZHkgbm9uZTtiYXNlZGNhcnJ5ZHJhZnRyZWZlcnBhZ2VfaG9tZS5tZXRlcmRlbGF5ZHJlYW1wcm92ZWpvaW50PC90cj5kcnVnczwhLS0gYXByaWxpZGVhbGFsbGVuZXhhY3Rmb3J0aGNvZGVzbG9naWNWaWV3IHNlZW1zYmxhbmtwb3J0cyAoMjAwc2F2ZWRfbGlua2dvYWxzZ3JhbnRncmVla2hvbWVzcmluZ3NyYXRlZDMwcHg7d2hvc2VwYXJzZSgpO1wiIEJsb2NrbGludXhqb25lc3BpeGVsJyk7XCI+KTtpZigtbGVmdGRhdmlkaG9yc2VGb2N1c3JhaXNlYm94ZXNUcmFja2VtZW50PC9lbT5iYXJcIj4uc3JjPXRvd2VyYWx0PVwiY2FibGVoZW5yeTI0cHg7c2V0dXBpdGFseXNoYXJwbWlub3J0YXN0ZXdhbnRzdGhpcy5yZXNldHdoZWVsZ2lybHMvY3NzLzEwMCU7Y2x1YnNzdHVmZmJpYmxldm90ZXMgMTAwMGtvcmVhfSk7XHJcbmJhbmRzcXVldWU9IHt9OzgwcHg7Y2tpbmd7XHJcblx0XHRhaGVhZGNsb2NraXJpc2hsaWtlIHJhdGlvc3RhdHNGb3JtXCJ5YWhvbylbMF07QWJvdXRmaW5kczwvaDE+ZGVidWd0YXNrc1VSTCA9Y2VsbHN9KSgpOzEycHg7cHJpbWV0ZWxsc3R1cm5zMHg2MDAuanBnXCJzcGFpbmJlYWNodGF4ZXNtaWNyb2FuZ2VsLS0+PC9naWZ0c3N0ZXZlLWxpbmtib2R5Ln0pO1xuXHRtb3VudCAoMTk5RkFRPC9yb2dlcmZyYW5rQ2xhc3MyOHB4O2ZlZWRzPGgxPjxzY290dHRlc3RzMjJweDtkcmluaykgfHwgbGV3aXNzaGFsbCMwMzk7IGZvciBsb3ZlZHdhc3RlMDBweDtqYTpjXHUwMDAyc2ltb248Zm9udHJlcGx5bWVldHN1bnRlcmNoZWFwdGlnaHRCcmFuZCkgIT0gZHJlc3NjbGlwc3Jvb21zb25rZXltb2JpbG1haW4uTmFtZSBwbGF0ZWZ1bm55dHJlZXNjb20vXCIxLmpwZ3dtb2RlcGFyYW1TVEFSVGxlZnQgaWRkZW4sIDIwMSk7XG59XG5mb3JtLnZpcnVzY2hhaXJ0cmFuc3dvcnN0UGFnZXNpdGlvbnBhdGNoPCEtLVxuby1jYWNmaXJtc3RvdXJzLDAwMCBhc2lhbmkrKyl7YWRvYmUnKVswXWlkPTEwYm90aDttZW51IC4yLm1pLnBuZ1wia2V2aW5jb2FjaENoaWxkYnJ1Y2UyLmpwZ1VSTCkrLmpwZ3xzdWl0ZXNsaWNlaGFycnkxMjBcIiBzd2VldHRyPlxyXG5uYW1lPWRpZWdvcGFnZSBzd2lzcy0tPlxuXG4jZmZmO1wiPkxvZy5jb21cInRyZWF0c2hlZXQpICYmIDE0cHg7c2xlZXBudGVudGZpbGVkamE6Y1x1MDAwM2lkPVwiY05hbWVcIndvcnNlc2hvdHMtYm94LWRlbHRhXG4mbHQ7YmVhcnM6NDhaPGRhdGEtcnVyYWw8L2E+IHNwZW5kYmFrZXJzaG9wcz0gXCJcIjtwaHBcIj5jdGlvbjEzcHg7YnJpYW5oZWxsb3NpemU9bz0lMkYgam9pbm1heWJlPGltZyBpbWdcIj4sIGZqc2ltZ1wiIFwiKVswXU1Ub3BCVHlwZVwibmV3bHlEYW5za2N6ZWNodHJhaWxrbm93czwvaDU+ZmFxXCI+emgtY24xMCk7XG4tMVwiKTt0eXBlPWJsdWVzdHJ1bHlkYXZpcy5qcyc7PlxyXG48IXN0ZWVsIHlvdSBoMj5cclxuZm9ybSBqZXN1czEwMCUgbWVudS5cclxuXHRcclxud2FsZXNyaXNrc3VtZW50ZGRpbmdiLWxpa3RlYWNoZ2lmXCIgdmVnYXNkYW5za2Vlc3Rpc2hxaXBzdW9taXNvYnJlZGVzZGVlbnRyZXRvZG9zcHVlZGVhQzFvc2VzdEMhdGllbmVoYXN0YW90cm9zcGFydGVkb25kZW51ZXZvaGFjZXJmb3JtYW1pc21vbWVqb3JtdW5kb2FxdUMtZEMtYXNzQzNsb2F5dWRhZmVjaGF0b2Rhc3RhbnRvbWVub3NkYXRvc290cmFzc2l0aW9tdWNob2Fob3JhbHVnYXJtYXlvcmVzdG9zaG9yYXN0ZW5lcmFudGVzZm90b3Nlc3Rhc3BhQy1zbnVldmFzYWx1ZGZvcm9zbWVkaW9xdWllbm1lc2VzcG9kZXJjaGlsZXNlckMhdmVjZXNkZWNpcmpvc0MpZXN0YXJ2ZW50YWdydXBvaGVjaG9lbGxvc3RlbmdvYW1pZ29jb3Nhc25pdmVsZ2VudGVtaXNtYWFpcmVzanVsaW90ZW1hc2hhY2lhZmF2b3JqdW5pb2xpYnJlcHVudG9idWVub2F1dG9yYWJyaWxidWVuYXRleHRvbWFyem9zYWJlcmxpc3RhbHVlZ29jQzNtb2VuZXJvanVlZ29wZXJDOmhhYmVyZXN0b3ludW5jYW11amVydmFsb3JmdWVyYWxpYnJvZ3VzdGFpZ3VhbHZvdG9zY2Fzb3NndUMtYXB1ZWRvc29tb3Nhdmlzb3VzdGVkZGViZW5ub2NoZWJ1c2NhZmFsdGFldXJvc3NlcmllZGljaG9jdXJzb2NsYXZlY2FzYXNsZUMzbnBsYXpvbGFyZ29vYnJhc3Zpc3RhYXBveW9qdW50b3RyYXRhdmlzdG9jcmVhcmNhbXBvaGVtb3NjaW5jb2NhcmdvcGlzb3NvcmRlbmhhY2VuQyFyZWFkaXNjb3BlZHJvY2VyY2FwdWVkYXBhcGVsbWVub3JDOnRpbGNsYXJvam9yZ2VjYWxsZXBvbmVydGFyZGVuYWRpZW1hcmNhc2lndWVlbGxhc3NpZ2xvY29jaGVtb3Rvc21hZHJlY2xhc2VyZXN0b25pQzFvcXVlZGFwYXNhcmJhbmNvaGlqb3N2aWFqZXBhYmxvQylzdGV2aWVuZXJlaW5vZGVqYXJmb25kb2NhbmFsbm9ydGVsZXRyYWNhdXNhdG9tYXJtYW5vc2x1bmVzYXV0b3N2aWxsYXZlbmRvcGVzYXJ0aXBvc3RlbmdhbWFyY29sbGV2YXBhZHJldW5pZG92YW1vc3pvbmFzYW1ib3NiYW5kYW1hcmlhYWJ1c29tdWNoYXN1YmlycmlvamF2aXZpcmdyYWRvY2hpY2FhbGxDLWpvdmVuZGljaGFlc3RhbnRhbGVzc2FsaXJzdWVsb3Blc29zZmluZXNsbGFtYWJ1c2NvQylzdGFsbGVnYW5lZ3JvcGxhemFodW1vcnBhZ2FyanVudGFkb2JsZWlzbGFzYm9sc2FiYUMxb2hhYmxhbHVjaGFDXHUwMDAxcmVhZGljZW5qdWdhcm5vdGFzdmFsbGVhbGxDIWNhcmdhZG9sb3JhYmFqb2VzdEMpZ3VzdG9tZW50ZW1hcmlvZmlybWFjb3N0b2ZpY2hhcGxhdGFob2dhcmFydGVzbGV5ZXNhcXVlbG11c2VvYmFzZXNwb2Nvc21pdGFkY2llbG9jaGljb21pZWRvZ2FuYXJzYW50b2V0YXBhZGViZXNwbGF5YXJlZGVzc2lldGVjb3J0ZWNvcmVhZHVkYXNkZXNlb3ZpZWpvZGVzZWFhZ3VhcyZxdW90O2RvbWFpbmNvbW1vbnN0YXR1c2V2ZW50c21hc3RlcnN5c3RlbWFjdGlvbmJhbm5lcnJlbW92ZXNjcm9sbHVwZGF0ZWdsb2JhbG1lZGl1bWZpbHRlcm51bWJlcmNoYW5nZXJlc3VsdHB1YmxpY3NjcmVlbmNob29zZW5vcm1hbHRyYXZlbGlzc3Vlc3NvdXJjZXRhcmdldHNwcmluZ21vZHVsZW1vYmlsZXN3aXRjaHBob3Rvc2JvcmRlcnJlZ2lvbml0c2VsZnNvY2lhbGFjdGl2ZWNvbHVtbnJlY29yZGZvbGxvd3RpdGxlPmVpdGhlcmxlbmd0aGZhbWlseWZyaWVuZGxheW91dGF1dGhvcmNyZWF0ZXJldmlld3N1bW1lcnNlcnZlcnBsYXllZHBsYXllcmV4cGFuZHBvbGljeWZvcm1hdGRvdWJsZXBvaW50c3Nlcmllc3BlcnNvbmxpdmluZ2Rlc2lnbm1vbnRoc2ZvcmNlc3VuaXF1ZXdlaWdodHBlb3BsZWVuZXJneW5hdHVyZXNlYXJjaGZpZ3VyZWhhdmluZ2N1c3RvbW9mZnNldGxldHRlcndpbmRvd3N1Ym1pdHJlbmRlcmdyb3Vwc3VwbG9hZGhlYWx0aG1ldGhvZHZpZGVvc3NjaG9vbGZ1dHVyZXNoYWRvd2RlYmF0ZXZhbHVlc09iamVjdG90aGVyc3JpZ2h0c2xlYWd1ZWNocm9tZXNpbXBsZW5vdGljZXNoYXJlZGVuZGluZ3NlYXNvbnJlcG9ydG9ubGluZXNxdWFyZWJ1dHRvbmltYWdlc2VuYWJsZW1vdmluZ2xhdGVzdHdpbnRlckZyYW5jZXBlcmlvZHN0cm9uZ3JlcGVhdExvbmRvbmRldGFpbGZvcm1lZGRlbWFuZHNlY3VyZXBhc3NlZHRvZ2dsZXBsYWNlc2RldmljZXN0YXRpY2NpdGllc3N0cmVhbXllbGxvd2F0dGFja3N0cmVldGZsaWdodGhpZGRlbmluZm9cIj5vcGVuZWR1c2VmdWx2YWxsZXljYXVzZXNsZWFkZXJzZWNyZXRzZWNvbmRkYW1hZ2VzcG9ydHNleGNlcHRyYXRpbmdzaWduZWR0aGluZ3NlZmZlY3RmaWVsZHNzdGF0ZXNvZmZpY2V2aXN1YWxlZGl0b3J2b2x1bWVSZXBvcnRtdXNldW1tb3ZpZXNwYXJlbnRhY2Nlc3Ntb3N0bHltb3RoZXJcIiBpZD1cIm1hcmtldGdyb3VuZGNoYW5jZXN1cnZleWJlZm9yZXN5bWJvbG1vbWVudHNwZWVjaG1vdGlvbmluc2lkZW1hdHRlckNlbnRlcm9iamVjdGV4aXN0c21pZGRsZUV1cm9wZWdyb3d0aGxlZ2FjeW1hbm5lcmVub3VnaGNhcmVlcmFuc3dlcm9yaWdpbnBvcnRhbGNsaWVudHNlbGVjdHJhbmRvbWNsb3NlZHRvcGljc2NvbWluZ2ZhdGhlcm9wdGlvbnNpbXBseXJhaXNlZGVzY2FwZWNob3NlbmNodXJjaGRlZmluZXJlYXNvbmNvcm5lcm91dHB1dG1lbW9yeWlmcmFtZXBvbGljZW1vZGVsc051bWJlcmR1cmluZ29mZmVyc3N0eWxlc2tpbGxlZGxpc3RlZGNhbGxlZHNpbHZlcm1hcmdpbmRlbGV0ZWJldHRlcmJyb3dzZWxpbWl0c0dsb2JhbHNpbmdsZXdpZGdldGNlbnRlcmJ1ZGdldG5vd3JhcGNyZWRpdGNsYWltc2VuZ2luZXNhZmV0eWNob2ljZXNwaXJpdC1zdHlsZXNwcmVhZG1ha2luZ25lZWRlZHJ1c3NpYXBsZWFzZWV4dGVudFNjcmlwdGJyb2tlbmFsbG93c2NoYXJnZWRpdmlkZWZhY3Rvcm1lbWJlci1iYXNlZHRoZW9yeWNvbmZpZ2Fyb3VuZHdvcmtlZGhlbHBlZENodXJjaGltcGFjdHNob3VsZGFsd2F5c2xvZ29cIiBib3R0b21saXN0XCI+KXt2YXIgcHJlZml4b3JhbmdlSGVhZGVyLnB1c2goY291cGxlZ2FyZGVuYnJpZGdlbGF1bmNoUmV2aWV3dGFraW5ndmlzaW9ubGl0dGxlZGF0aW5nQnV0dG9uYmVhdXR5dGhlbWVzZm9yZ290U2VhcmNoYW5jaG9yYWxtb3N0bG9hZGVkQ2hhbmdlcmV0dXJuc3RyaW5ncmVsb2FkTW9iaWxlaW5jb21lc3VwcGx5U291cmNlb3JkZXJzdmlld2VkJm5ic3A7Y291cnNlQWJvdXQgaXNsYW5kPGh0bWwgY29va2llbmFtZT1cImFtYXpvbm1vZGVybmFkdmljZWluPC9hPjogVGhlIGRpYWxvZ2hvdXNlc0JFR0lOIE1leGljb3N0YXJ0c2NlbnRyZWhlaWdodGFkZGluZ0lzbGFuZGFzc2V0c0VtcGlyZVNjaG9vbGVmZm9ydGRpcmVjdG5lYXJseW1hbnVhbFNlbGVjdC5cblxuT25lam9pbmVkbWVudVwiPlBoaWxpcGF3YXJkc2hhbmRsZWltcG9ydE9mZmljZXJlZ2FyZHNraWxsc25hdGlvblNwb3J0c2RlZ3JlZXdlZWtseSAoZS5nLmJlaGluZGRvY3RvcmxvZ2dlZHVuaXRlZDwvYj48L2JlZ2luc3BsYW50c2Fzc2lzdGFydGlzdGlzc3VlZDMwMHB4fGNhbmFkYWFnZW5jeXNjaGVtZXJlbWFpbkJyYXppbHNhbXBsZWxvZ29cIj5iZXlvbmQtc2NhbGVhY2NlcHRzZXJ2ZWRtYXJpbmVGb290ZXJjYW1lcmE8L2gxPlxuX2Zvcm1cImxlYXZlc3N0cmVzc1wiIC8+XHJcbi5naWZcIiBvbmxvYWRsb2FkZXJPeGZvcmRzaXN0ZXJzdXJ2aXZsaXN0ZW5mZW1hbGVEZXNpZ25zaXplPVwiYXBwZWFsdGV4dFwiPmxldmVsc3RoYW5rc2hpZ2hlcmZvcmNlZGFuaW1hbGFueW9uZUFmcmljYWFncmVlZHJlY2VudFBlb3BsZTxiciAvPndvbmRlcnByaWNlc3R1cm5lZHx8IHt9O21haW5cIj5pbmxpbmVzdW5kYXl3cmFwXCI+ZmFpbGVkY2Vuc3VzbWludXRlYmVhY29ucXVvdGVzMTUwcHh8ZXN0YXRlcmVtb3RlZW1haWxcImxpbmtlZHJpZ2h0O3NpZ25hbGZvcm1hbDEuaHRtbHNpZ251cHByaW5jZWZsb2F0Oi5wbmdcIiBmb3J1bS5BY2Nlc3NwYXBlcnNzb3VuZHNleHRlbmRIZWlnaHRzbGlkZXJVVEYtOFwiJmFtcDsgQmVmb3JlLiBXaXRoc3R1ZGlvb3duZXJzbWFuYWdlcHJvZml0alF1ZXJ5YW5udWFscGFyYW1zYm91Z2h0ZmFtb3VzZ29vZ2xlbG9uZ2VyaSsrKSB7aXNyYWVsc2F5aW5nZGVjaWRlaG9tZVwiPmhlYWRlcmVuc3VyZWJyYW5jaHBpZWNlc2Jsb2NrO3N0YXRlZHRvcFwiPjxyYWNpbmdyZXNpemUtLSZndDtwYWNpdHlzZXh1YWxidXJlYXUuanBnXCIgMTAsMDAwb2J0YWludGl0bGVzYW1vdW50LCBJbmMuY29tZWR5bWVudVwiIGx5cmljc3RvZGF5LmluZGVlZGNvdW50eV9sb2dvLkZhbWlseWxvb2tlZE1hcmtldGxzZSBpZlBsYXllcnR1cmtleSk7dmFyIGZvcmVzdGdpdmluZ2Vycm9yc0RvbWFpbn1lbHNle2luc2VydEJsb2c8L2Zvb3RlcmxvZ2luLmZhc3RlcmFnZW50czxib2R5IDEwcHggMHByYWdtYWZyaWRheWp1bmlvcmRvbGxhcnBsYWNlZGNvdmVyc3BsdWdpbjUsMDAwIHBhZ2VcIj5ib3N0b24udGVzdChhdmF0YXJ0ZXN0ZWRfY291bnRmb3J1bXNzY2hlbWFpbmRleCxmaWxsZWRzaGFyZXNyZWFkZXJhbGVydChhcHBlYXJTdWJtaXRsaW5lXCI+Ym9keVwiPlxuKiBUaGVUaG91Z2hzZWVpbmdqZXJzZXlOZXdzPC92ZXJpZnlleHBlcnRpbmp1cnl3aWR0aD1Db29raWVTVEFSVCBhY3Jvc3NfaW1hZ2V0aHJlYWRuYXRpdmVwb2NrZXRib3hcIj5cblN5c3RlbSBEYXZpZGNhbmNlcnRhYmxlc3Byb3ZlZEFwcmlsIHJlYWxseWRyaXZlcml0ZW1cIj5tb3JlXCI+Ym9hcmRzY29sb3JzY2FtcHVzZmlyc3QgfHwgW107bWVkaWEuZ3VpdGFyZmluaXNod2lkdGg6c2hvd2VkT3RoZXIgLnBocFwiIGFzc3VtZWxheWVyc3dpbHNvbnN0b3Jlc3JlbGllZnN3ZWRlbkN1c3RvbWVhc2lseSB5b3VyIFN0cmluZ1xuXG5XaGlsdGF5bG9yY2xlYXI6cmVzb3J0ZnJlbmNodGhvdWdoXCIpICsgXCI8Ym9keT5idXlpbmdicmFuZHNNZW1iZXJuYW1lXCI+b3BwaW5nc2VjdG9yNXB4O1wiPnZzcGFjZXBvc3Rlcm1ham9yIGNvZmZlZW1hcnRpbm1hdHVyZWhhcHBlbjwvbmF2PmthbnNhc2xpbmtcIj5JbWFnZXM9ZmFsc2V3aGlsZSBoc3BhY2UwJmFtcDsgXG5cbkluICBwb3dlclBvbHNraS1jb2xvcmpvcmRhbkJvdHRvbVN0YXJ0IC1jb3VudDIuaHRtbG5ld3NcIj4wMS5qcGdPbmxpbmUtcmlnaHRtaWxsZXJzZW5pb3JJU0JOIDAwLDAwMCBndWlkZXN2YWx1ZSllY3Rpb25yZXBhaXIueG1sXCIgIHJpZ2h0cy5odG1sLWJsb2NrcmVnRXhwOmhvdmVyd2l0aGludmlyZ2lucGhvbmVzPC90cj5ccnVzaW5nIFxuXHR2YXIgPicpO1xuXHQ8L3RkPlxuPC90cj5cbmJhaGFzYWJyYXNpbGdhbGVnb21hZ3lhcnBvbHNraXNycHNraVgxWC9ZXHUwMDA4ZDgtZlx1MDAxNlx1MDAwN2cuXHUwMDAwZD1cdTAwMTNnOVx1MDAwMWkrXHUwMDE0ZD8hZlx1MDAwMS9kOC1lXHUwMDFCPWZcdTAwMDhcdTAwMTFkOyxkOFx1MDAwMGQ4KmVcdTAwMDUsZVx1MDAwRjhnLiFnXHUwMDEwXHUwMDA2aC46ZVx1MDAxRFx1MDAxQmVcdTAwMEYvZDslZlx1MDAxQ1xyZVxuIWZcdTAwMTc2aVx1MDAxNzRkOCpkOjpkOidlXHUwMDEzXHUwMDAxaFx1MDAwNyplNzFkPFx1MDAwMWQ4XHUwMDFBZlx1MDAxRiVnXHUwMDFDXHUwMDBCZTclZD1cdTAwMUNoXHUwMDAxXHUwMDE0ZzM7ZjIhZlx1MDAxQ1x0Zz1cdTAwMTFnK1x1MDAxOWZcdFx1MDAwMGZcdTAwMUNcdGgvXHUwMDA0aC46ZDgtZT9cdTAwMDNmXHUwMDE2XHUwMDA3ZysgZ1x1MDAxNChmXHUwMDA4N2kmXHUwMDE2aSE1ZD1cdTAwMUNoXHUwMDAwXHUwMDA1ZlxuXHUwMDAwZlx1MDAxQy9pXHUwMDE3LmlcIlx1MDAxOGdcdTAwMUI4ZVx1MDAwNTNkOFx1MDAwQmg9PWZcdTAwMTBcdTAwMUNnNFwiZD0/Z1x1MDAxNChoPS9kOzZlXHUwMDFDKGc6P2Q4O2lcIlx1MDAxOGg1XHUwMDA0Zlx1MDAxNlx1MDAxOWgnXHUwMDA2aVwiXHUwMDExZVx1MDAxQlx1MDAxRWUkXHJmMyhlXHUwMDA2XHUwMDBDZz1cdTAwMTFnO1x1MDAxQ2ZcdTAwMTQ2aFx1MDAxN1x1MDAwRmVcdTAwMDZcdTAwMDVlLjlmXHUwMDBFKGhcclx1MDAxMGU4XHUwMDAyZVx1MDAxQzpmNlx1MDAwOGZcdTAwMDEvZyk6aVx1MDAxNzRlXHUwMDBGXHUwMDExZThcdTAwMDNkO1x1MDAwMGQ5XHUwMDA4ZSU9ZVx1MDAwRlx1MDAwQmdcdTAwMTRcdTAwMUZmNDtlXHUwMDFCPmdcdFx1MDAwN2VcdTAwMEZcdTAwMTFlMVx1MDAxNWUmXHUwMDAyZlx1MDAxRVx1MDAxQ2ZcdFx1MDAwQmZcdTAwMUM6Zlx1MDAxNjBpXHUwMDE3O2ZcdTAwMUNcdTAwMDBmXHUwMDE2MGZcdTAwMTY5ZTxcdTAwMEZlXHUwMDBDXHUwMDE3ZDosZlx1MDAwRlx1MDAxMGQ+XHUwMDFCZVx1MDAwNTNkOlx1MDAwRWZcdTAwMUI0ZSRcdTAwMUFoP1x1MDAxOWQ4KmczO2c7XHUwMDFGZ1x1MDAxRiVpXHUwMDAxXHUwMDEzZjg4Zlx1MDAwOFx1MDAwRmU5P2VcdTAwMTFcbmVcdTAwMDU2ZDtcdTAwMTZlXHUwMDBGXHUwMDExaCEoZS5cdGVcdTAwMDUoZywsZDhcdTAwMDBkPFx1MDAxQWVcdTAwMTFcdTAwMThoP1x1MDAxQmghXHUwMDBDZ1x1MDAwMjllXHUwMDA3O2dcdFx1MDAwOGZcdTAwMURcdTAwMDNnXHUwMDE0NWUtXHUwMDEwZDhcdTAwMTZnXHUwMDE1XHUwMDBDaC4+aC4hZVx1MDAwNVxyaDQ5Zlx1MDAxNVx1MDAxOWhcdTAwMDIyZVxuIGVcdTAwMDUlZjQ7ZVxuKGQ7XHUwMDE2ZDssZVx1MDAxNVx1MDAwNmVcdTAwMTNcdTAwMDFlXHJcdTAwMUFlLlwiZ1x1MDAwRTBlXHUwMDFDKGQ4XG5mNTdlJlx1MDAwMmQ9XHUwMDE1ZTcyZztcdTAwMEZnXHUwMDE1XHUwMDE5aChcdTAwMDBoLyZnO1x1MDAwNmckPmVcdTAwMEM6Z1x1MDAxOTtlPVx1MDAxNWZcdTAwMUMsZytcdTAwMTlpXHUwMDFDXHUwMDAwaCZcdTAwMDFkOzdmIDxmXHUwMDE0L2ZcdTAwMENcdTAwMDFlXHUwMDFCPWlcdTAwMTlcdTAwMDVpXHUwMDEzPmZcdTAwMEUlZVx1MDAxQj1lLjZlOzpoLj5mXHUwMDFDXHUwMDBCZVx1MDAwRlx1MDAwQmlcdTAwMThcdTAwMDVoLztmM1x1MDAxNWU+XHUwMDBCZD1ccmc9Lmc7XHUwMDBGZjVcdTAwMEVpXHUwMDAwXHRmXHUwMDBCKWg/XHUwMDE5ZiA3ZT1cdTAwMTNlXHRccmVcdTAwMDhcdTAwMDZnMTtmXHUwMDBFXHUwMDEyaCFcdTAwMENlXHUwMDFCIGQ4OmQ6JGZcdTAwMThcdTAwMTNmXHUwMDFDXHUwMDAwZVx1MDAxMFx1MDAwRWlcdTAwMUYzZDlcdTAwMTBkOFxyaFx1MDAwMz1pXHUwMDAwXHUwMDFBaD9cdTAwMDdoIVx1MDAwQ2Q4XHUwMDFBZydcdTAwMTFmXG5cdTAwMDBlXHUwMDBGL2hcdTAwMDM9aC4+ZSRcdTAwMDdlXHUwMDEwXHUwMDA4ZD1cdTAwMUNlJCdlLjZnJD5kPFx1MDAxQWcgXHUwMDE0Zyk2ZDhcdTAwMTNkOFx1MDAxQWVcdTAwMDUoaVx1MDAwMyhpITlnXHUwMDFCLmg/XHUwMDE5aVx1MDAwN1x1MDAwQ2g/XHUwMDE4Zlx1MDAxOC9lPFx1MDAwMGUnXHUwMDBCZlx1MDAwM1x1MDAwNWVcdTAwMDY1Z1x1MDAxNDVoXHUwMDA0XHUwMDExZlx1MDAxNlx1MDAwN2Q7NmVcdTAwMTNcdTAwMDFnXHRcdTAwMENlOC5lXG4pZlx1MDAxNlx1MDAwN2VcdTAwMENcdTAwMTZoNVx1MDAwNGY6XHUwMDEwZSQnZS0mZS0mZDkgZVx1MDAxQzBlXHUwMDFEXHUwMDAwZjVcdTAwMEZoJ1x1MDAwOGZcblx1MDAxNWg1XHUwMDA0ZTclZyhcdTAwMEJoJlx1MDAwMWYxXHUwMDAyZlx1MDAwMFx1MDAwRWQ5XHUwMDA4Zlx1MDAxNzZlXHUwMDAwXHUwMDE5ZVxuXHUwMDFGaFx1MDAwMz1kODtoJlx1MDAwMWdcdTAwMUIuZVx0XHJoNVx1MDAwNGguL2VcdTAwMUZcdTAwMEVlOFx1MDAwMmZcdTAwMTY5ZjNcdTAwMTVnXHUwMDE0NWU9MWZcdTAwMEJcdTAwMUJoXHUwMDAxXHUwMDE4ZSMwZlx1MDAxOFx1MDAwRWQ7O2Q9XHUwMDE1ZVx1MDAwMSVlOjdmXHUwMDE1MGZcci5nPlx1MDAwRWVcdTAwMUI9ZjE9aD0mZDtcdTAwMEJnO1xyZD1cdTAwMDZmXHUwMDE4L2Q6JGY1XHUwMDAxZ1x1MDAxNFx1MDAxRmQ6J2ZcdFx1MDAwMGQ7JWdcdTAwMTQ1aC9cdTAwMURmXHUwMDE4PmckOmQ4XHUwMDAwZDpcdTAwMUJlXHJcdTAwMTVkPVxyZDo6ZVx1MDAxMVx1MDAxOGVcdTAwMDhcdTAwMDZmXHUwMDFFXHUwMDEwZVx1MDAxQzBlXHUwMDFCPmZcdTAwMTdcdTAwMDVmODhlNyVlXHUwMDA1N2UtJmdcdTAwMTRcdTAwMUZnMztlXHUwMDA4XHUwMDE3Zz1cdTAwMTFlXHUwMDBGXHUwMDBCZThcdTAwMTZlLVx1MDAxMGUvXHUwMDA2ZyBcdTAwMDFpXCJcdTAwMTFpXHUwMDAxXHUwMDEzZlx1MDAwRSdlXHUwMDA4NmVcdTAwMUMwZVx1MDAwQzplXHUwMDFGOmZcdTAwMUMsZVx1MDAwNShlXHUwMDFCPWc9XHUwMDExZDhcbmlcdTAwMDdccmgmXHUwMDAxZywsZDpcdTAwMENlXHUwMDE2XHUwMDFDZixcImg/XHUwMDFCZVx1MDAwNSVlXHUwMDBGXHUwMDBCZlx1MDAwM1x1MDAwNWg/XHUwMDE5ZDpcdTAwMUJoXHUwMDAwXHUwMDAzaC9cdTAwMTVlXHUwMDBGXHUwMDExZ1x1MDAwRTBlXHUwMDFGOWguLWQ7JWQ4XG5mXHUwMDE0P2U6XHUwMDFDZlx1MDAwOFx1MDAxMGQ4OmdcdTAwMEUvZVwiXHUwMDAzaSZcdTAwMTlmOC9lXHUwMDEwXHUwMDBDZlx1MDAxNzZlKDFkOVx1MDAxMGVcdTAwMEZcdTAwMTFpXHUwMDAwXHUwMDAxZDhcdTAwMDBlLlx1MDAxQWU8XHUwMDAwZVx1MDAwRlx1MDAxMWQ9XHUwMDFDZVx1MDAxM1x1MDAwMWYgXHUwMDA3ZVx1MDAwN1x1MDAwNmYsXCJoP1x1MDAwRWgnI2VcdTAwMDYzZVx1MDAxQzBmXHUwMDE2OWQ4XHUwMDAwZDhcdTAwMEJkOyVlXHUwMDBGXG5oNCNkOztmXHUwMDA4XHUwMDE2aFx1MDAwMFx1MDAwNWUuXCJmXHUwMDA4N2Q7I2ghKGcnL2VcdTAwMDhcdTAwMDZlJTNkOjpmXHUwMDE1MGcgXHUwMDAxaVx1MDAxNFx1MDAwMGVcdTAwMTQuZVx1MDAwNzpnXHUwMDBFMGcmO2c6P2U6XHUwMDE0Z1x1MDAxNChlXHUwMDA4XHUwMDE3aCEoZDhccmVcdTAwMTBcdTAwMENnPFx1MDAxNmg+XHUwMDExZztcdTAwMUZoLiFmXHUwMDFGJWgvXCJkOFxyaCZcdTAwMDFmXHUwMDFDXHRlXHUwMDA1M2ZcdTAwMUM6Zlx1MDAxRVx1MDAwNGU+XHUwMDA4ZSRcdTAwMUFmXHUwMDEyLWZcdTAwMTQ+ZztcdTAwMDRnO1x1MDAwN2ZcdTAwMTQ/Zy1cdTAwMTZnXHUwMDFCNGZcdTAwMEUlaFx1MDAwMz1lXG5cdTAwMUJmXHUwMDFEJWY6XHUwMDEwZlx1MDAxOVx1MDAwMmlcdTAwMTZcdTAwMTNnXHUwMDFDXHUwMDBCZVx1MDAwODBnXHUwMDAzLWlcdTAwMTcoZVx1MDAwNTNpXHUwMDE0LmQ4XHUwMDEzZVx1MDAwQzppXHUwMDFEXHUwMDFFZTg4aFx1MDAwQjFoLy1nXHUwMDE5PmU6JmU4XHUwMDBDZlx1MDAxQ1x1MDAxQmc+XHUwMDBFZSUzZi9cdTAwMTRoPlx1MDAwM2dcdTAwMUYlaC9cdTAwMDZoJ1x1MDAwNGUuXHUwMDFBZTs6aC4uaVx1MDAwMyhpXHUwMDE3KGZcdTAwMDRcdTAwMEZoJ1x1MDAwMWcyPmU9KWZcdTAwMTclZlx1MDAxQyxmXHUwMDBGXHUwMDEwaStcdTAwMThlXHUwMDBGXHUwMDExaChcdTAwMDBmXHUwMDE2OWlcdTAwMURcImVcdTAwMUY6aVx1MDAwN1x1MDAxMWUkXHUwMDA0Z1x1MDAxMFx1MDAwNmZcdTAwMURcdTAwMDNpXHUwMDE5XHUwMDEwZT0xZ1x0XHUwMDA3aVx1MDAxMzZoIVx1MDAwQ2g/XHUwMDE4Zlx1MDAxQ1x0ZVx1MDAwOFx1MDAwNmQ6K2dcdCllXHUwMDEzXHUwMDAxZztcdTAwMEZoXHUwMDEwJWY3O2VcbiBkOFx1MDAxM2UuNmg/XHUwMDE5ZydccmgvXHUwMDFEaVwiXHUwMDE4aDU3Zlx1MDAxRCVkOFx1MDAxQWVcbiFlXHUwMDA1LGVcdTAwMTFcbmguMGU9XHUwMDE1Zy5cdTAwMDBkO1x1MDAwQmg0KGlcdTAwMDdcdTAwMEZnXHUwMDE0N2Q6OmU9MWVcdTAwMTNccmU8XHUwMDE1Z1x1MDAxNChmXG4lZVx1MDAxMVxuaVx1MDAwMyhlXHUwMDA4XHUwMDA2ZT8raVx1MDAwMFx1MDAxRmVcdTAwMTIoaC9cImZcdTAwMTc2ZTBcdTAwMUFmMyhmXHUwMDA0XHUwMDBGZ1x1MDAxNDNoLzdlLSZmICFlOlx1MDAxNGgvJWVcdTAwMEVcdTAwMDZlXHUwMDBGMmVcdTAwMEYqZlx1MDAxOC9oP1x1MDAxNGVcdTAwMUJcdTAwMUVoNC1kOTBlXHUwMDEwXHJnJzBkODpkOlx1MDAwNmZcdTAwMDhcdTAwMTBlXG5cdTAwMUZoLzRmXHUwMDE4XHUwMDBFZD5cdTAwMUJlOlx1MDAxNGUtKWUtXHUwMDEwZDhcdTAwMTNpXCJcdTAwMThnKFx1MDAwQmU6XHUwMDBGZDhcdTAwMDBoXHUwMDA4LGZcdTAwMUNcdTAwMDNlXHUwMDEzIWVcdTAwMEYqZlx1MDAxQ1x0ZVx1MDAwNTZlLlx1MDAwM2Q/XHUwMDFEZlxuJGhcdTAwMDBcdTAwMENkOFx1MDAxNGQ7XG5lJClnKlx1MDAxN2VcdTAwMEYjZVxuKGZcdTAwMDBcdTAwMDFnXG42Zlx1MDAwMFx1MDAwMWdcdDllXHUwMDA4K2guJGQ4OmU/XHUwMDA1aSE7Zlx1MDAxQjRmXHUwMDE2MGUwXHUwMDBGaC80Zlx1MDAwOFx1MDAxMWVcdTAwMDBcdTAwMTFkPVx1MDAxQ2Q4OmUqXHUwMDEyZD1cdTAwMTNlXHUwMDBDXHUwMDA1Zlx1MDAwQixpXHUwMDAyI2Q5XHUwMDA4ZDhcdTAwMDBmIDdlXHUwMDFCPWVcdTAwMDZcdTAwMDVmXHUwMDE4L2VcdTAwMTAmZiA5ZlxyLmdcdTAwMTQ1aCdcdTAwMDZlLSZpXHUwMDE5XCJlXHUwMDA1N2ZcdTAwMUNcdGg/XHUwMDA3ZyhcdTAwMEJnXHUwMDE0MWQ6XHUwMDBFZDo6Zlx0XHJlXHUwMDA3OmZcdTAwMUQlZDhccmg/XHUwMDA3Zi0jZVx1MDAxQyhmXHUwMDE4XHUwMDBFZlx1MDAxOFx1MDAxRmZcdTAwMTVcdTAwMDVkOlx1MDAwQmVcdTAwMDUzZzM7ZiBcdTAwMDdpXCJcdTAwMThlXHUwMDE1XHUwMDA2ZVxuIWg+XHUwMDEzZVx1MDAwNSVkOFx1MDAwMGdcdTAwMUI0ZVx1MDAxRjpnIVx1MDAwMGZcdTAwMTVcdTAwMTllLSZkOlx1MDAwNmgnI2U7OmctXHUwMDExZztcdTAwMTNmXHUwMDFFXHUwMDFDZVx1MDAwNShnXHUwMDEwXHUwMDAzaVx1MDAwMFx1MDAxQWdcdTAwMUYlaC4hZVx1MDAwOFx1MDAxMmUvOWQ6XHUwMDBFaFx0OmZcdTAwMUMvZ1x1MDAxQjhlXHUwMDA2XHUwMDBDZVx1MDAwRlx1MDAxMWdcdTAwMTRcdTAwMUZnXHUwMDFDXHUwMDFGZ1x1MDAxQVx1MDAwNGU7OmcrXHUwMDBCZy1cdGc6J2cxO2VcdTAwMUVcdTAwMEJnO1x1MDAwRmkqXHUwMDBDZS5cdTAwMUVnXHUwMDBFMGVcdTAwMDg2ZD1cdTAwMUNmXHUwMDFEJWhcdTAwMDcqZiBcdTAwMDdnLT5kOyVkOFx1MDAwQmVcdTAwMEVcdTAwMUZlXHUwMDA4XHUwMDFCZlx1MDAxNyBmM1x1MDAxNWVcdTAwMDU2ZDgtZVx1MDAwMFx1MDAwQmQ6OmQ4XHUwMDAwZVx1MDAwOFx1MDAwN2ZcdTAwMENcdTAwMDdlXHJcdTAwMTdlXHUwMDA1M2lcdTAwMTctaVx1MDAxQlx1MDAwNmVcdTAwMUJcImcsLGQ4XHRlXHUwMDA1M2YzKGVcdTAwMUIgZi0kZ1x1MDAwNSdnXHRcdTAwMDdmNzFlXHUwMDFDM2VcdTAwMTVcdTAwMDZkOFx1MDAxQWU5P2U3XHUwMDFFZlx1MDAxNyVmXHUwMDFDXHUwMDFGaStcdTAwMThnOidmXHUwMDFDXHUwMDAwaD9cdTAwMTFnOzxlXHUwMDEwXHUwMDA4aCEoZyQ6ZDhcdTAwMTNoPlx1MDAxMWghXHUwMDBDZDg6ZDokaVx1MDAwMFx1MDAxQWgvXHUwMDA0ZDs3aCdcdGU+XHUwMDE3ZzI+ZVxyXHUwMDBFZS42ZTotZS5cdTAwMENmXHUwMDA4XHUwMDEwZlx1MDAwNFx1MDAxRmgnXHRlLlx0aCNcdTAwMDVlPlx1MDAxN2VcdTAwMDgwaVx1MDAwMi5kOzZlXHUwMDA4NmU6JmkjXHUwMDFGZVx1MDAxM1x1MDAwMWhcdTAwMTk9Z1x1MDAwNDZoPSxoPT1mXG4lZDs3aC4waFx1MDAwMFx1MDAwNWZcdTAwMTY5ZiFcdTAwMDhoIVx1MDAwQ2ZcdTAwMTQ/ZDo6ZjBcdTAwMTFnXHUwMDE0KGVcdTAwMTNcdTAwMDFkOFx1MDAxQ2glP2ZcdTAwMEZcdTAwMTBlXHUwMDA3OmlcdTAwMDVcdTAwMTJlOlx1MDAxN2dcdTAwMDQ2ZVx1MDAxMFx1MDAwRWQ7XHUwMDE4Ziw+Z1x1MDAwMy1nXHUwMDAyOWQ7JWVcdFxyZS5cdTAwMENlXHUwMDA1KGVcdTAwMEZcdTAwMTFlOFx1MDAxNmguPmc9LmlcIlx1MDAwNmUvPGU3JWQ4XHUwMDFBZVx1MDAwQztpXHUwMDE5XCJnXHUwMDFDXHUwMDBCZ1x1MDAxQ1x1MDAwQmc7XHUwMDBGZVx1MDAwNThlXHUwMDBFXHUwMDFGZVx1MDAxQiBlOTNlXHUwMDBGMGVcdTAwMTBcdTAwMDRnJ1xyZVwiXHUwMDFFZVxuIGZcdTAwMURcdTAwMTBmXHUwMDE2XHUwMDE5Zlx1MDAxNjBlXCJcdTAwMUVkOVx1MDAwQmVcdTAwMTBcdTAwMEVoXHUwMDAxXHUwMDBDZDhcdTAwMUFmXHUwMDE1XHUwMDA4Zlx1MDAxRVx1MDAxQ2Q7XG5lOTRoLjpmXHUwMDE2XHUwMDA3Zlx1MDAwOFx1MDAxMWVcdTAwMUI9ZVx1MDAxMVxuaC9cdGdcdFx1MDAwOGQ4O2Q/LmZcdTAwMTQ5ZVx1MDAwRlx1MDAwMmQ4XHUwMDBFZlx0XHUwMDEzZVxyMGU/K2Q5XHUwMDEwZlx1MDAxQzpmXCIwaCdcdTAwMDJnXHUwMDAyOWUtXHUwMDE4ZVx1MDAxQyhnMj5nJVx1MDAxRWhcdTAwMEU3ZT5cdTAwMTdlXHUwMDA4KWdcdTAwMTQoZzsnZzstZD0gZDssaD9cdTAwMTlkOVx1MDAwOGYoIWU8XHUwMDBGaC8taChcdTAwMDBoXHUwMDAzPWUkXHUwMDFGaVx1MDAxQlx1MDAwNWhcdTAwMTlcdTAwMEVmXHUwMDEzXHJkPVx1MDAxQ2kjXHUwMDBFZiA8ZDhcdTAwMDBoNTdnJ1x1MDAxMWUtJmQ9XHUwMDEzaFx1MDAwMjJnXHUwMDFGLWQ/IWZcdTAwMUQhZDs2ZjI7Z1x1MDAxNlx1MDAxN2g/XHUwMDEwZVxuKGQ6J2Q4XHUwMDFBZDxcdTAwMUFoLi5lLzxoXHUwMDA4KmVcdTAwMDVcdTAwMDhnXHUwMDE0XHUwMDFGaFx1MDAwMVx1MDAxNGdcdTAwMUJcdTAwMUZlXHUwMDBGL2ZcdTAwMTgvZVx1MDAxNVx1MDAwRmkhXHUwMDBDZztcdTAwMTNmXHUwMDFFXHUwMDA0ZD1cdTAwMUNnXHUwMDE0KGgwXHUwMDAzZlx1MDAxRiVoM1x1MDAwN2ZcdTAwMTZcdTAwMTloXHUwMDA3KmVcbihoNFx1MDAxRmg0I2VcdTAwMDZcdTAwMUNkOFx1MDAxQWguP2lcdTAwMTcuZS5cdTAwMUVmXHUwMDE2PWZcdTAwMEUlZVx1MDAwRlx1MDAxN2guKGguOmlcdTAwMDIjZDgqZVx1MDAwRlxyaSZcdTAwMDhlXG4gZTw6ZSUzZlx1MDAwMCdoXHUwMDBDXHUwMDAzZVx1MDAxQjRmXHUwMDFDXHJlXHUwMDBCXHUwMDE5ZDxcdTAwMTFpXHUwMDE3MmQ7XG5mXHUwMDE3JWUuXCJmXHUwMDFDXHJoJ1x1MDAwMGdcdTAwMUNcdTAwMEJlXHUwMDBGXHUwMDAyZVxuIGdcdTAwMUFcdTAwMDRoL1x1MDAxRGQ4XHUwMDAwZ1x1MDAwMjlkP1x1MDAxRGgvXHUwMDAxZVx1MDAxQj5kOSZmXHUwMDFDXHRmXHUwMDE1XHUwMDA4ZjVcdTAwMEJoL1x1MDAxNWcnO2VcbihmXHRccmhcdTAwMDM9ZVx1MDAwNjNlLlx1MDAxQWhcdTAwMDIhZyUoZDhccmZcdTAwMTYtaVx1MDAxQ1x1MDAwMGYxXHUwMDAyZDhccmU+XHUwMDE3ZVxuXHUwMDFFZjNcdTAwMTVkOVx1MDAwQmlcdTAwMTc0aVx1MDAwN1x1MDAwN2dcdTAwMTQoaFx1MDAxMCVpXHUwMDE0XHUwMDAwZlxuXHUwMDE1aC9cdGdcdTAwMUIuZiBcdTAwMDdnXHUwMDA4MWZcdTAwMDNcdTAwMDVmXHUwMDExXHUwMDA0ZT0xZlx1MDAxQ1x0ZDpcdTAwMUJoJFx1MDAwN2gjPWZcdTAwMTZcdTAwMDdlLSZmXHUwMDFDOmQ8XHUwMDFBZlx1MDAxNTBlLVx1MDAxN2gjXHUwMDA1ZD8uaDQtZ1x0KWVcdTAwMDZcdTAwMUNmXHUwMDFEXHUwMDExZVx1MDAwNShpXHUwMDFEXCJnMj5lXHUwMDEzXHUwMDAxZVx1MDAwNTZlLlx1MDAxRWQ6XHUwMDBCZlx1MDAwM1x1MDAwNWYwNGU5M2ZcdTAwMEZcdTAwMTBnJDpkOFxuZThcdTAwMDJoMFwiaDBcImZcdTAwMTkuaVx1MDAwMFx1MDAxQWZcdTAwMTVcdTAwMTllOFx1MDAwOGQ4XG5kPCBnMTtlXHUwMDA4K2YtXHUwMDBDZlx1MDAxQjJmXHUwMDBCJWZcdTAwMUNcdGVcdTAwMDhcdTAwMUJmXHUwMDE2MGlcdTAwMDVccmQ7NmVcdTAwMEYqaCZcdTAwMDFmXHUwMDE3NmQ7I2gzXHUwMDA3aChcbmg+PmVcdTAwMDgwZDo6Z1x1MDAxNFx1MDAxRmguXCJpXHUwMDE4XHUwMDA1aFx1MDAwMFx1MDAwMWU4XHUwMDA4ZTFcdTAwMTVnJDplP1x1MDAwM2dcdTAwMTBcdTAwMDZoNDRlLVx1MDAxMGc2MmcrXHUwMDE5ZDg7aSFcdTAwMENoXHUwMDA3KmdcdTAwMDQ2ZzonZVx1MDAwOCtnLlx1MDAwMGVcclx1MDAxNWZcdTAwMTQ5aVx1MDAxRClpXHUwMDAyI2Q6XHUwMDFCZlx1MDAxRCVoLzRmXHRcdTAwMTNlPFx1MDAwMGQ7I2cgXHUwMDAxZVx1MDAwOCBpXHUwMDE5JGgvXHUwMDAxZVx1MDAwODhoXG5cdTAwMDJnXHUwMDFCLmlcdTAwMDdccmdcdTAwMDI5ZiwhZlx1MDAxNThlJFx1MDAxQWUwXHUwMDExaCdcdTAwMDRlXHUwMDA4XHUwMDEyaDVcdTAwMDRpXHUwMDA3XHUwMDExZlx0PmVcdTAwMDgwZDslZVx1MDAxMFx1MDAwRWUkJ2VcdTAwMDUoZDg7aSE1Zlx1MDAxQ1x1MDAwMGQ9M2VcdTAwMUJcdTAwMUVnLVx1MDAxNGUkKWQ4XHUwMDBCZD9cdTAwMURpXHUwMDFBXHUwMDFDZ1x1MDAwRTBkOyNmI1x1MDAwMGZcdTAwMUYlZlxuXHUwMDE1ZyUoZTBcdTAwMEZmXHUwMDE3NmYyXHUwMDEyZlx1MDAxQ1x0Zi0jZTg4Z1x1MDAxNFx1MDAxQWhcdTAwMDczZDsjZ1x1MDAxMFx1MDAwNmdcdTAwMUIuZT1cdTAwMTVlXHUwMDA1LGU8XHUwMDAwZSRccmVcdTAwMDg2aVx1MDAwN1x1MDAxMWhcdTAwMUVccmU5OGcmXHUwMDBGZ1x0XHUwMDA4Zlx1MDAxQyxlPVwiZlx1MDAwOFx1MDAxMGVcdTAwMDdcdTAwMDZlJFx1MDAwN2ghXHUwMDBDZlx1MDAwM1x1MDAwNWVcdTAwMUJcdTAwMUVlXHUwMDA4MGZcdTAwMDBcdTAwMURmXHUwMDAzM2ZcdTAwMDBcdTAwMEVmIDdlXHJcdTAwMEZoLi5oLiRoL1x1MDAwMWZcdTAwMUNcdTAwMDBlJT1kOidnXHUwMDE0XHUwMDFGZlx1MDAwQ1x0Z1x1MDAwNSdmXHUwMDFDXHJoI1x1MDAwNWU5P2Q4XHUwMDFDZVxuKGY8K2lcdTAwMDdcdTAwMDdoNC1mXHUwMDE2MGZcdFx1MDAwQmc7XHUwMDA0ZVx1MDAxQj5pXHUwMDFEXCJmXHUwMDFEP2VcdTAwMEZcdTAwMDJoXHUwMDAwXHUwMDAzZlx1MDAxND9mMjtlLjlmXHUwMDE4XHUwMDEzZSQpZVx1MDAxQzBlXG4qZVxuXHUwMDFCZDo6ZDssZVxyXHUwMDA3ZzonaVx1MDAwMFx1MDAxRmU6JmQ6OmdcdCloMFx1MDAwM2ZcdTAwMTU0ZjVcdTAwMDFoIVx1MDAwQ2lcdTAwMDAgZlx1MDAwOFx1MDAxMGZcdTAwMTZcdTAwMDdlLVx1MDAxN2lcdTAwMUYpZVx1MDAxQj1oNDhmXHUwMDE4XHUwMDEzZTxcdTAwMDBlMVx1MDAxNWdcdTAwMUI4aVx1MDAxN1x1MDAxQ2ghKGdcdTAwMEUwZT0xaCdcdTAwMDZlJlx1MDAwMmYtJGc+XHUwMDBFZS45ZSQnZTBcdTAwMEZmXG4laVx1MDAwMVx1MDAxM2ZcdTAwMUQhZiw+ZT9cdTAwMDNmXHUwMDAzXHUwMDA1aC44ZSRcdTAwMUFmM1x1MDAxNWgnXHUwMDA0ZS42ZTFcdTAwMDVkOSZlOlx1MDAxN2g/XHUwMDFFZlx1MDAwRSVnK1x1MDAwQmVccjNkOD5mXG4lZlxuXHUwMDAwZTcnZSUlaD9cdTAwMTBnXHUwMDE5O2VcdTAwMDUlZDslZlx1MDAxRCVnXHUwMDEwXHUwMDA2aC46ZDpcdTAwMEJkOzZoXHUwMDA3KmdcdTAwMTQxZDgtZVxyXHUwMDBFZVxuXHUwMDFFZVx1MDAwNSxlJlx1MDAwOGUmXHUwMDA4Z1x1MDAxQ1x1MDAxRmYtI2Q4XHJpXHUwMDE0XHUwMDE5ZVx1MDAwNShmXHUwMDE2XHUwMDA3ZVx1MDAxMFx1MDAwOGVcdTAwMTBcdTAwMENkOzdlXHUwMDAwPGVcdTAwMDgrZDo6Z1x1MDAxQlx1MDAxMWdcdTAwMUQjZVx1MDAwNTdkPVx1MDAxM2Q4XHUwMDE2ZzoqZVx1MDAxQlwiaVx1MDAxOFx1MDAxRmVcdTAwMDhcdTAwMUJkOFx1MDAxQWZcdD9mXHUwMDBCXHUwMDA1ZVwiXHUwMDFFaVx1MDAxNT9mXHUwMDFDXHRkOjpkP1x1MDAxRGZcdTAwMENcdTAwMDFlXHUwMDE1XHUwMDA2ZS42Zzs0ZD8uZVx1MDAwRjBmOT5lNyZlXHUwMDBGM2hcdTAwMDIhZDs9Zy1cdTAwMTRmIVx1MDAwOGUuXHUwMDFFaVx1MDAxOVx1MDAwNWdcdTAwMTQ1ZD8hZztcdTAwMEZnXHUwMDEwXHUwMDA2Z1x1MDAxNFx1MDAxRmVcdTAwMTE9ZS4jZDwgZDs7ZVxuIWYtI2U8XHUwMDBGZ1x0OWhcdDJkOFx1MDAwQmZcdTAwMUQlZVxyXHUwMDBGZDxcdTAwMUFlXHUwMDBGKmhcdTAwMDM9ZT1cdTAwMTNnXHUwMDA0NmlcdTAwMDdccmZcdTAwMTYwZVx1MDAwNSdlLjlmXHUwMDBDXHUwMDA3ZS88aD9cdTAwMTBoIVx1MDAwQ2ZcdTAwMTclZT9cdTAwMTdoMyNlLjZoNlx1MDAwNWg/XHUwMDA3ZVx1MDAxQ1x1MDAxRmVcdTAwMUMwZjVcdTAwMTlmMVx1MDAxRmZcdTAwMTQvZDtcdTAwMThmXHUwMDBFKGVcdTAwMDc6ZytcdTAwMTlpXHUwMDE1P2ZcdTAwMUQtZTdcdTAwMUVmXHQnaCFcdTAwMENlXHUwMDA4NmlcdTAwMDAgZDlcdTAwMEJkOFx1MDAwMGZcdTAwMEUoZTk/Z1x1MDAwRTBlXHUwMDFDOmZcdTAwMEZcdTAwMEZoPzBlXHUwMDBGXHUwMDE4ZVx1MDAwQ1x1MDAxNmQ8IGc7XHUwMDFGZi1cdTAwMENmXHRcdTAwMEJkP1x1MDAxRGlcdTAwMTkpaC8+ZyhcdTAwMEJlXHUwMDBDO2dcdTAwMTZcdTAwMTdnO1x1MDAwRmg/XHUwMDA3aD9cdTAwMDdlXHUwMDBFO2Q5XHUwMDBCZVx0XHJmXHUwMDE0NmVcdTAwMDUlZTk0ZTomZlx1MDAxRFx1MDAwMmU/XHUwMDE3Zz5cdTAwMEVkOD1mXHUwMDFDXHUwMDAwaStcdTAwMThnXHUwMDE5O2lcdTAwMTlcdTAwMDZmXHUwMDFDKmZcdTAwMUQlZVxuIGU3JWVcdTAwMDVccmg0I2ZcdTAwMTVcdTAwMTlnKFx1MDAwQmdcdFx1MDAwOGVcdTAwMURcdTAwMTdoOitkPVx1MDAxM2lcdTAwMDdccmU6XHUwMDA2ZVx1MDAwNzplXHUwMDE0LmZcdTAwMDhcdTAwMTBmXHUwMDFDLGU9XCJlPFx1MDAwRmVcdTAwMUNcdTAwMUZoMVx1MDAwNmVcdTAwMDc6ZVx1MDAwMzlkOFx1MDAxQ2ZcdTAwMTY5aVx1MDAwMi5nLjFlXHJcdTAwMTdkOixmMVx1MDAwMmhcdTAwMDFcdTAwMENlXHUwMDBGXHUwMDE2ZT5cdTAwMTdoXHUwMDAxXHUwMDBDZD1ccmdcdTAwMUI4ZD8haSE1aVx1MDAxRFwiZVx1MDAwOFx1MDAwNmlcdTAwMTJcdTAwMUZnPVx1MDAxMWkhNWchLmUuXHUwMDFBZVx1MDAxQj5kPlx1MDAwQmc9XHUwMDExZVx1MDAxRFx1MDAwMGcnL2ZcdTAwMUVcdTAwMDFpXHUwMDE0XHUwMDE5aC8vZ1x1MDAxQi5nXHUwMDFBXHUwMDA0ZS5cdTAwMURoNFx1MDAxRGZcdTAwMUM6ZVx1MDAwNTNpI1x1MDAwRWlcdTAwMTkpZlx1MDAwRVx1MDAwOGZcdTAwMURcdTAwMDNnXHUwMDE3XHUwMDA1Zi9cdTAwMTJlLiBnXHQpaVx1MDAxOSRkOlx1MDAwNmgpXHUwMDE1aCtcdTAwMTZnXHUwMDE2PmdcdTAwMTdcdTAwMDVlXHUwMDBGXG5mXHUwMDE3NmYxXHUwMDAyaDQtZytcdTAwMTlnXHUwMDAyOWVcdTAwMDQ/ZyslZi9cdTAwMEZlJClkOC1lJC5oLiRoL1x1MDAwNmYvXHUwMDBGZDgqZSQpZjQlZS1cdTAwMTdkPVx1MDAxM2VcdTAwMEYwZ1x1MDAwMSNnOzRmXG4kZlx1MDAxQyxpITVkOCpmXHUwMDAwJ2UuXHUwMDE4Zlx1MDAxNjllODhoJ1x1MDAwMWdcdTAwMUI4Zlx1MDAxQzpmXHUwMDA4XHUwMDE4Z1x1MDAxNSVlOlx1MDAxNGU9XHUwMDEzZT5cdTAwMEJlOFx1MDAwOGZcdTAwMTY5ZD4/ZiAhZVx1MDAxQi1oXHUwMDAyIWU4XHUwMDAyZlx1MDAwOD9lMVx1MDAwQmYgXHUwMDBGZ1x1MDAxQi5lXHUwMDExXHUwMDE4ZTclZS88aFx1MDAwNzRnKlx1MDAwMWdcdTAwMDQ2aVx1MDAwMVx1MDAxM2VcdTAwMDU3Zlx1MDAxQyxnPVx1MDAxMWc7XHUwMDEzZVx1MDAxMFx1MDAwOGYhI2YhXHUwMDA4ZVxuM2VcbihlXHUwMDBGJmUkXHUwMDE2Zz5cdTAwMEVlXHUwMDA1XHUwMDAzZTxcdTAwMTVoNTdmXHUwMDE0OWVcdTAwMEZcdTAwMThnLCxlXHUwMDFCXHUwMDFCZDxcdTAwMUFoLiFoKipmXHUwMDE4XHUwMDBFaVx1MDAxQVx1MDAxMGcnXHUwMDAxZS5cdTAwMURlLlx1MDAxRGgnXHUwMDA0aFx1MDAwQ1x1MDAwM2Y2XHUwMDA4aDQ5ZVx1MDAwNTFlXHUwMDEwXHUwMDBDZT9cdTAwMThoLjBkPVx1MDAxM2czO2U4JmZcdTAwMUQlZVx1MDAxMFxyZS1cdTAwMTdnXHUwMDE5PGghKGU8XHUwMDAwZlx1MDAxND5lXG4gZ1x1MDAxQlx1MDAxRmVcdTAwMEZcdTAwMTdlXHUwMDA4MGQ6XHUwMDBDZlx0XHUwMDBCZSQnaVx1MDAwN1x1MDAwRmZcdTAwMDhcdTAwMTBkOjpmXHUwMDE1MGlcdTAwMDdcdTAwMEZlXHUwMDA1MWQ6K2VcdTAwMEM6ZVx1MDAxRlx1MDAxRmUlM2UtKWVcdTAwMEVcdTAwMUZlXHUwMDA4XHUwMDE5Zlx0XHUwMDAwZVx1MDAxQyhnO1x1MDAxM2ZcdTAwMURcdTAwMUZpXHUwMDAwXHUwMDFBZD8haDZcdTAwMDVnOidpXHUwMDA1XHJnPS5lPVx1MDAxM2ZcdTAwMTc2ZDxcdTAwMThnJ1x1MDAwMGZcdTAwMDAnZlx1MDAwNFx1MDAxRmZcdTAwMDg/ZDonaVx1MDAwMVxuZlx1MDAwODJlXHUwMDA3OmVcdTAwMEYjZlx1MDAwRlx1MDAxMGQ6JGUwMWQ4XHUwMDFBZD9cdTAwMURlXHUwMDAxJWcoXHUwMDBCZTomZVx1MDAwRlx1MDAwMmZcdTAwMTUwZDpcdTAwMEJkOFx1MDAxQWZcdTAwMTU0ZDgqZTExZDhcdTAwMUNmXHUwMDAzXHUwMDA1Zlx1MDAwNFx1MDAxRmdcdDlmLlxuZVx1MDAwOFx1MDAwNmkhXHUwMDFFZlx1MDAxMFx1MDAxQ2UwXHUwMDBCZTFcdTAwMUVkOlx1MDAwRWlcdTAwMTcoZlx1MDAwODdoNFwiZVxuIWUjMGlcdTAwMUYzZVx1MDAwRlxuZVx1MDAwNTZoNFwiZztcdTAwMEZlXHUwMDFEXHUwMDFBZlx1MDAwQ1x1MDAwMWU5MmlcdTAwMDMoZlx1MDAwOFx1MDAxMGcrXHUwMDBCZVx1MDAwOClnXHUwMDFCXG5oXHUwMDAwXHUwMDAzaFx1MDAxOVx1MDAxMWZcdTAwMDhcdTAwMTBpXHUwMDAzPWVcdTAwMENcdTAwMDVoI1x1MDAwNWdcdTAwMTQoZlx1MDAwODZmL1x1MDAxNGg1XHUwMDFCZlx1MDAxNlx1MDAwN2ZcdTAwMThcdTAwMEVmXHUwMDBCXHUwMDFCZVx1MDAxNVx1MDAwNmUuXHUwMDBDZlx1MDAxNTRnXHUwMDFDXHUwMDFGZlx1MDAxOC9nXHUwMDFDPGdcdTAwMURcdTAwMUJkPFx1MDAxOWQ8NGUoXHUwMDAxZlx1MDAxQ1x1MDAxQmlcIlx1MDAwNmVcdTAwMUZcdTAwMUZlXHIrZ1x1MDAxNFx1MDAxRmQ8XHUwMDE4Zlx1MDAwMyBoK1x1MDAxNmUjXHUwMDA3ZVx1MDAwNSxlXHUwMDA1MWhcdC9lJT1lXHUwMDA1XHUwMDA1ZVx1MDAwOFx1MDAwNmcsJmVcdTAwMTBcdTAwMDhpXHUwMDE5XHUwMDA0ZDs2Z1x0OWdcdTAwMDI5ZDhccmVcdTAwMEYvaFx1MDAwQjFmXHUwMDE2XHUwMDA3aDVcdTAwMDRkOidmIDlmXHUwMDFDLGZcdTAwMThcdTAwMEVmXHUwMDE4PmUvXHUwMDA2Z1wiPGVcdTAwMDUsZDxcdTAwMTdmMFx1MDAxMWZcdTAwMTdcdTAwMEZmXHUwMDFCNGVcbiBkOitlXHUwMDBGXHUwMDE3ZVx1MDAxMFx1MDAwQ2UtJmVcdTAwMTAvZVxuKGlcdTAwMDBcdTAwMDJlXHUwMDEwXHUwMDA4ZVx1MDAwRVx1MDAxRmZcdTAwMUQlaVx1MDAxNy5nLVx1MDAxNGZcdTAwMUMsZlx1MDAxNlx1MDAwN2c+XHUwMDBFaSNcdTAwMUZnOz9oXHQyZygzZS5cdTAwMUFnO1x1MDAwOGQ6XHUwMDBFZ1x1MDAxNFx1MDAxRmdcdClkPlx1MDAxQmYxXHUwMDAyZlx1MDAxMFx1MDAxQ2dcdTAwMEJcdTAwMTBlXG5cdTAwMUJpXHUwMDA3XHUwMDBGZDglaVx1MDAwN1xyZjA4aD9cdTAwMUNlXHUwMDA2XHUwMDE5Z1x1MDAxQ1x1MDAxRmZcdTAwMUNcdGlcdTAwMTlcdTAwMTBnK1x1MDAxRWQ6XHRlLzloMSFoNDlnXHUwMDE0KGQ4XHJlJT1nO1x1MDAxRGUvOWVcclx1MDAwMWVcdTAwMDhcdTAwMDZkP1x1MDAwM2g/XHUwMDFCZ1x1MDAwMjloL1x1MDAwNGU9MWlcdTAwMUYzZDxcdTAwMThlXG4/ZDhccmUwXHUwMDExZiwjaDVcdTAwMEZlOTZkOFx1MDAxNGZcdTAwMUNcdGdcdTAwMDI5Zlx1MDAxNjllXHUwMDEwXHUwMDExZVx1MDAwNShmXHUwMDE2MGQ/IWdcdTAwMTQoaC4+Zlx1MDAxNj1lPVwiaDEhaDVcdTAwMDRmIDxnKlx1MDAwMWcgNGlcdTAwMUFcdTAwMEZnXHUwMDFEXHUwMDAwaVx1MDAwN1xyZSQnZDpcdTAwMEVmXHUwMDE4L2YvXHUwMDE1ZDhcdTAwMUFmXHUwMDE5OmhcdTAwMDM9ZVx1MDAwQ1x1MDAxNmU3JWUuXHUwMDBDZz5cdTAwMEVlXHUwMDE1XHUwMDA2ZVx1MDAxRlx1MDAwRWc7XHUwMDFGZDhcdTAwMDBlXHUwMDA3OmdcdFx1MDAwOGZcdFx1MDAxM2lcdTAwMDAgZ1x1MDAxNFwiZVx1MDAxM1x1MDAwMWYmXHUwMDAyZVx1MDAwNjVnXHUwMDE0KGQ6XHUwMDBFZD9cdTAwMURnXHUwMDE1XHUwMDE5ZVx1MDAxQiBnNCBkOC1lXHUwMDFDXHUwMDBCZS1cdTAwMThlXHUwMDAyKGg0NGVcdTAwMUI+Zlx1MDAxQ1x1MDAwMGZcdTAwMDRcdTAwMUJpXHUwMDE1P2ZcdTAwMUNcdTAwMUZlXHUwMDBGI2Q7N2dcdTAwMTBcdTAwMDZoNFwiZVx1MDAxRjplXHUwMDFDMGUuXHRmXHUwMDBFXHUwMDEyZi0mZjFcdGlcdTAwMDdcdTAwMENpXHUwMDFEXCJlXHUwMDA4XHUwMDFCZTs6ZSQpZyk6aSZcdTAwMTZlXHUwMDA1XHUwMDA4ZS5cdTAwMENlXHUwMDE2XHUwMDA0aSkxZVxuKGQ4XHUwMDBCaVx1MDAxRFwiZDhccmVcdTAwMDZccmgvXHUwMDFBZD8hZlx1MDAwNFx1MDAwRmQ5XHRpXHUwMDE4M2VcdTAwMDVcdGhcdTAwMEIxZVx1MDAxQj1mPFx1MDAwMmQ6LmVcdTAwMDZcdTAwMUJkOlx1MDAwQmdcdTAwMEUpZS42Zz4kZDxcdTAwMTdlXHUwMDA2XHUwMDFDZjBcdTAwMTFlXHIzZVx1MDAwRi9lXHUwMDEwXHJnKDFlLjZlXHUwMDA1N2VcbihnXHUwMDE0O2ZcdTAwMDMzZVx1MDAwODBmMyhmXHUwMDE4XHUwMDBFZTBcdTAwMEZlLSZmXHUwMDAwJ2hcdTAwMDM9aFx1MDAwMFx1MDAwM2cgXHUwMDE0ZyEsZDs2aCdcdTAwMDJnXHUwMDFDXHUwMDBCZjhcdTAwMDVmJVx1MDAxQWZcdTAwMTBcdTAwMUVnLFx1MDAxMWkmXHUwMDE2aSBcdTAwMDFpO1x1MDAwNGlcdTAwMDdcdTAwMTFpXHUwMDAwXHUwMDAyZ1x1MDAxNChmMVx1MDAxRmhcdTAwMEJcdTAwMEZnXHUwMDFDXHUwMDFGZS5cdTAwMUVkODtnLiFpXHUwMDE4NmYuNWgoO2VcdTAwMDZcbmc/O2gvXHUwMDExZlx1MDAxRFx1MDAwM2VcdTAwMDgpZVx1MDAwMVx1MDAxQWUlPWQ8PGQ5XHUwMDBFaVx1MDAwMFx1MDAxQWguL2ZcdTAwMTY9ZTclZ1x1MDAwQlx1MDAwMGZcdTAwMDVcdTAwMEJkOVx1MDAxRmguOGdcdTAwMEUvZD9cdTAwMURlXHUwMDFGOWVcdTAwMDU7ZiZcdTAwMDJlPzVlJCdlXHUwMDFFXHUwMDBCZlx1MDAxQzpnJShnXHUwMDEwXHUwMDA2aCcjZVx1MDAwQz9lXHUwMDEwXHJjdWFuZG9lbnZpYXJtYWRyaWRidXNjYXJpbmljaW90aWVtcG9wb3JxdWVjdWVudGFlc3RhZG9wdWVkZW5qdWVnb3Njb250cmFlc3RDIW5ub21icmV0aWVuZW5wZXJmaWxtYW5lcmFhbWlnb3NjaXVkYWRjZW50cm9hdW5xdWVwdWVkZXNkZW50cm9wcmltZXJwcmVjaW9zZWdDOm5idWVub3N2b2x2ZXJwdW50b3NzZW1hbmFoYWJDLWFhZ29zdG9udWV2b3N1bmlkb3NjYXJsb3NlcXVpcG9uaUMxb3NtdWNob3NhbGd1bmFjb3JyZW9pbWFnZW5wYXJ0aXJhcnJpYmFtYXJDLWFob21icmVlbXBsZW92ZXJkYWRjYW1iaW9tdWNoYXNmdWVyb25wYXNhZG9sQy1uZWFwYXJlY2VudWV2YXNjdXJzb3Nlc3RhYmFxdWllcm9saWJyb3NjdWFudG9hY2Nlc29taWd1ZWx2YXJpb3NjdWF0cm90aWVuZXNncnVwb3NzZXJDIW5ldXJvcGFtZWRpb3NmcmVudGVhY2VyY2FkZW1DIXNvZmVydGFjb2NoZXNtb2RlbG9pdGFsaWFsZXRyYXNhbGdDOm5jb21wcmFjdWFsZXNleGlzdGVjdWVycG9zaWVuZG9wcmVuc2FsbGVnYXJ2aWFqZXNkaW5lcm9tdXJjaWFwb2RyQyFwdWVzdG9kaWFyaW9wdWVibG9xdWllcmVtYW51ZWxwcm9waW9jcmlzaXNjaWVydG9zZWd1cm9tdWVydGVmdWVudGVjZXJyYXJncmFuZGVlZmVjdG9wYXJ0ZXNtZWRpZGFwcm9waWFvZnJlY2V0aWVycmFlLW1haWx2YXJpYXNmb3JtYXNmdXR1cm9vYmpldG9zZWd1aXJyaWVzZ29ub3JtYXNtaXNtb3NDOm5pY29jYW1pbm9zaXRpb3NyYXpDM25kZWJpZG9wcnVlYmF0b2xlZG90ZW5DLWFqZXNDOnNlc3Blcm9jb2NpbmFvcmlnZW50aWVuZGFjaWVudG9jQyFkaXpoYWJsYXJzZXJDLWFsYXRpbmFmdWVyemFlc3RpbG9ndWVycmFlbnRyYXJDKXhpdG9sQzNwZXphZ2VuZGF2Qy1kZW9ldml0YXJwYWdpbmFtZXRyb3NqYXZpZXJwYWRyZXNmQyFjaWxjYWJlemFDIXJlYXNzYWxpZGFlbnZDLW9qYXBDM25hYnVzb3NiaWVuZXN0ZXh0b3NsbGV2YXJwdWVkYW5mdWVydGVjb21DOm5jbGFzZXNodW1hbm90ZW5pZG9iaWxiYW91bmlkYWRlc3RDIXNlZGl0YXJjcmVhZG9QNFA7UVx1MDAwRlFcdTAwMDdRXHUwMDAyUD5QOlAwUDpQOFA7UDhRXHJRXHUwMDAyUD5QMlFcdTAwMDFQNVA1UDNQPlA/UVx1MDAwMFA4UVx1MDAwMlAwUDpQNVFcdFA1UVx1MDAwM1A2UDVQXHUwMDFBUDBQOlAxUDVQN1AxUVx1MDAwQlA7UD5QPVA4UFx1MDAxMlFcdTAwMDFQNVA/UD5QNFAtUVx1MDAwMlA+UVx1MDAwMlA+UDxRXHUwMDA3UDVQPFA9UDVRXHUwMDAyUDtQNVFcdTAwMDJRXHUwMDAwUDBQN1A+UD1QMFAzUDRQNVA8UD1QNVBcdTAwMTRQO1FcdTAwMEZQXHUwMDFGUVx1MDAwMFA4UD1QMFFcdTAwMDFQPVA4UVx1MDAwNVFcdTAwMDJQNVA8UDpRXHUwMDAyUD5QM1A+UDRQMlA+UVx1MDAwMlFcdTAwMDJQMFA8UCFQKFBcdTAwMTBQPFAwUVx1MDAwRlAnUVx1MDAwMlA+UDJQMFFcdTAwMDFQMlAwUDxQNVA8UVx1MDAwM1BcIlAwUDpQNFAyUDBQPVAwUDxRXHJRXHUwMDAyUDhRXHJRXHUwMDAyUVx1MDAwM1BcdTAwMTJQMFA8UVx1MDAwMlA1UVx1MDAwNVA/UVx1MDAwMFA+UVx1MDAwMlFcdTAwMDNRXHUwMDAyUD1QMFA0UDRQPVFcdTAwMEZQXHUwMDEyUD5RXHUwMDAyUVx1MDAwMlFcdTAwMDBQOFA9UDVQOVBcdTAwMTJQMFFcdTAwMDFQPVA4UDxRXHUwMDAxUDBQPFFcdTAwMDJQPlFcdTAwMDJRXHUwMDAwUVx1MDAwM1AxUFx1MDAxRVA9UDhQPFA4UVx1MDAwMFA9UDVQNVBcdTAwMUVQXHUwMDFFUFx1MDAxRVA7UDhRXHUwMDA2UVxyUVx1MDAwMlAwUFx1MDAxRVA9UDBQPVA1UDxQNFA+UDxQPFA+UDlQNFAyUDVQPlA9UD5RXHUwMDAxUVx1MDAwM1A0YCRcdTAwMTVgJVx1MDAwN2AkOWAlXHUwMDA4YCRcdTAwMTVgJVx1MDAwMGAkOGAlXHUwMDA3YCRcdTAwMTVgJD5gJFx1MDAxNWAlXHUwMDBCYCRcdTAwMTRgJDBgJCpgJDBgJChgJVx1MDAwN2AkXHUwMDBGYCRcdTAwMTVgJFx1MDAxNWAkP2AkLWAlXHUwMDAwYCRcdTAwMDdgJDhgJFx1MDAxNWAkMGAkJGAlXHUwMDBCYCQ5YCVcdTAwMEJgJFx1MDAwNmAkKmAkOWAlXHUwMDAwYCQvYCQ5YCQvYCQ+YCQkYCRcdTAwMTVgJCVgJD5qYWdyYW5gJFx1MDAwNmAkXHUwMDFDYCRcdTAwMUNgJVx1MDAwQmAkXHUwMDA1YCQsYCQmYCVcdTAwMEJgJFx1MDAxN2AkXHUwMDA4YCRcdTAwMUNgJD5gJFx1MDAxN2AkXHUwMDBGYCQ5YCQuYCRcdTAwMDdgJChgJDVgJDlgJC9gJVx1MDAwN2AkJWAlXHUwMDA3YCQlYCVcdTAwMDBgJFx1MDAxOGAkMGAkXHUwMDFDYCQsYCQmYCVcdTAwMDBgJFx1MDAxNWAkXHUwMDA4YCRcdTAwMUNgJVx1MDAwMGAkNWAlXHUwMDA3YCQoYCRcdTAwMDhgJChgJFx1MDAwRmAkOWAkMGAkXHRgJDhgJC5gJVx1MDAwN2AkXHUwMDE1YCQuYCQ1YCVcdTAwMEJgJDJgJVx1MDAwN2AkOGAkLGAkLmAkXHUwMDA4YCQmYCVcdTAwMDdgJFx1MDAxM2AkMGAkXHUwMDA2YCQuYCQsYCQ4YCQtYCQwYCQsYCQoYCRcdTAwMUFgJDJgJC5gJChgJFx1MDAwNmAkXHUwMDE3YCQ4YCVcdTAwMDBgJDJgJVx1MDAwMFg5WVx1MDAwNFlcdFglWVx1MDAwNFlcdFlcdTAwMDdYMFgnWFwiWC5YMVg5WC9YL1gnWVx1MDAwNFlcdFlcdTAwMDdYMFlcdTAwMDdYNVlcdTAwMDhYMVg6WVxuWDFZXHUwMDAzWCdZXHUwMDA2WVx1MDAwOFlcdTAwMDRYJ1goWVxuWVx1MDAwNlg5WDFYNlgwWVx1MDAwNFlcdTAwMDNZXHUwMDA3WVx1MDAwNlgnWVxuWVx1MDAwOFlcdTAwMDVZXHUwMDAyWCdZXHUwMDA0WDlZXHUwMDA0WVxuWCdZXHUwMDA2WCdZXHUwMDA0WVx1MDAwM1lcdTAwMDZYLVgqWVx0WVx1MDAwMlgoWVx1MDAwNFlcdTAwMDhYLVgpWCdYLlgxWVx1MDAwMVlcdTAwMDJYN1g5WChYL1gxWVx1MDAwM1lcdTAwMDZYJVgwWCdZXHUwMDAzWVx1MDAwNVgnWCdYLVgvWCVZXHUwMDA0WCdZXHUwMDAxWVxuWVx1MDAwN1goWDlYNllcdTAwMDNZXG5ZXHUwMDAxWChYLVgrWVx1MDAwOFlcdTAwMDVZXHUwMDA2WVx1MDAwOFlcdTAwMDdZXHUwMDA4WCNZXHUwMDA2WCdYLFgvWCdZXHUwMDA0WVx1MDAwN1gnWDNZXHUwMDA0WVx1MDAwNVg5WVx1MDAwNlgvWVx1MDAwNFlcblgzWDlYKFgxWDVZXHUwMDA0WVx0WVx1MDAwNVlcdTAwMDZYMFgoWVx1MDAwN1gnWCNZXHUwMDA2WVx1MDAwN1lcdTAwMDVYK1lcdTAwMDRZXHUwMDAzWVx1MDAwNlgqWCdZXHUwMDA0WCdYLVlcblgrWVx1MDAwNVg1WDFYNFgxWC1YLVlcdTAwMDhZXHUwMDA0WVx1MDAwOFlcdTAwMDFZXG5YJ1gwWCdZXHUwMDA0WVx1MDAwM1lcdTAwMDRZXHUwMDA1WDFYKVgnWVx1MDAwNlgqWCdZXHUwMDA0WVx1MDAwMVgjWChZXHUwMDA4WC5YJ1g1WCNZXHUwMDA2WCpYJ1lcdTAwMDZZXHUwMDA3WCdZXHUwMDA0WVxuWDlYNllcdTAwMDhZXHUwMDA4WVx1MDAwMlgvWCdYKFlcdTAwMDZYLllcblgxWChZXHUwMDA2WCpZXHUwMDA0WVx1MDAwM1lcdTAwMDVYNFgnWCFZXHUwMDA4WVx1MDAwN1lcblgnWChZXHUwMDA4WVx1MDAwMlg1WDVZXHUwMDA4WVx1MDAwNVgnWDFZXHUwMDAyWVx1MDAwNVgjWC1YL1lcdTAwMDZYLVlcdTAwMDZYOVgvWVx1MDAwNVgxWCNZXG5YJ1gtWClZXHUwMDAzWCpYKFgvWVx1MDAwOFlcdTAwMDZZXG5YLFgoWVx1MDAwNVlcdTAwMDZZXHUwMDA3WCpYLVgqWCxZXHUwMDA3WClYM1lcdTAwMDZYKVlcblgqWVx1MDAwNVlcdTAwMDNYMVgpWDpYMlgpWVx1MDAwNllcdTAwMDFYM1goWVxuWCpZXHUwMDA0WVx1MDAwNFlcdTAwMDdZXHUwMDA0WVx1MDAwNlgnWCpZXHUwMDA0WVx1MDAwM1lcdTAwMDJZXHUwMDA0WChZXHUwMDA0WVx1MDAwNVgnWDlZXHUwMDA2WVx1MDAwN1gjWVx1MDAwOFlcdTAwMDRYNFlcblghWVx1MDAwNllcdTAwMDhYMVgjWVx1MDAwNVgnWVx1MDAwMVlcbllcdTAwMDNYKFlcdTAwMDNZXHUwMDA0WDBYJ1gqWDFYKlgoWChYI1lcdTAwMDZZXHUwMDA3WVx1MDAwNVgzWCdZXHUwMDA2WVx1MDAwM1goWVxuWDlZXHUwMDAxWVx1MDAwMlgvWC1YM1lcdTAwMDZZXHUwMDA0WVx1MDAwN1lcdTAwMDVYNFg5WDFYI1lcdTAwMDdZXHUwMDA0WDRZXHUwMDA3WDFZXHUwMDAyWDdYMVg3WVx1MDAwNFgocHJvZmlsZXNlcnZpY2VkZWZhdWx0aGltc2VsZmRldGFpbHNjb250ZW50c3VwcG9ydHN0YXJ0ZWRtZXNzYWdlc3VjY2Vzc2Zhc2hpb248dGl0bGU+Y291bnRyeWFjY291bnRjcmVhdGVkc3Rvcmllc3Jlc3VsdHNydW5uaW5ncHJvY2Vzc3dyaXRpbmdvYmplY3RzdmlzaWJsZXdlbGNvbWVhcnRpY2xldW5rbm93bm5ldHdvcmtjb21wYW55ZHluYW1pY2Jyb3dzZXJwcml2YWN5cHJvYmxlbVNlcnZpY2VyZXNwZWN0ZGlzcGxheXJlcXVlc3RyZXNlcnZld2Vic2l0ZWhpc3RvcnlmcmllbmRzb3B0aW9uc3dvcmtpbmd2ZXJzaW9ubWlsbGlvbmNoYW5uZWx3aW5kb3cuYWRkcmVzc3Zpc2l0ZWR3ZWF0aGVyY29ycmVjdHByb2R1Y3RlZGlyZWN0Zm9yd2FyZHlvdSBjYW5yZW1vdmVkc3ViamVjdGNvbnRyb2xhcmNoaXZlY3VycmVudHJlYWRpbmdsaWJyYXJ5bGltaXRlZG1hbmFnZXJmdXJ0aGVyc3VtbWFyeW1hY2hpbmVtaW51dGVzcHJpdmF0ZWNvbnRleHRwcm9ncmFtc29jaWV0eW51bWJlcnN3cml0dGVuZW5hYmxlZHRyaWdnZXJzb3VyY2VzbG9hZGluZ2VsZW1lbnRwYXJ0bmVyZmluYWxseXBlcmZlY3RtZWFuaW5nc3lzdGVtc2tlZXBpbmdjdWx0dXJlJnF1b3Q7LGpvdXJuYWxwcm9qZWN0c3VyZmFjZXMmcXVvdDtleHBpcmVzcmV2aWV3c2JhbGFuY2VFbmdsaXNoQ29udGVudHRocm91Z2hQbGVhc2Ugb3BpbmlvbmNvbnRhY3RhdmVyYWdlcHJpbWFyeXZpbGxhZ2VTcGFuaXNoZ2FsbGVyeWRlY2xpbmVtZWV0aW5nbWlzc2lvbnBvcHVsYXJxdWFsaXR5bWVhc3VyZWdlbmVyYWxzcGVjaWVzc2Vzc2lvbnNlY3Rpb253cml0ZXJzY291bnRlcmluaXRpYWxyZXBvcnRzZmlndXJlc21lbWJlcnNob2xkaW5nZGlzcHV0ZWVhcmxpZXJleHByZXNzZGlnaXRhbHBpY3R1cmVBbm90aGVybWFycmllZHRyYWZmaWNsZWFkaW5nY2hhbmdlZGNlbnRyYWx2aWN0b3J5aW1hZ2VzL3JlYXNvbnNzdHVkaWVzZmVhdHVyZWxpc3RpbmdtdXN0IGJlc2Nob29sc1ZlcnNpb251c3VhbGx5ZXBpc29kZXBsYXlpbmdncm93aW5nb2J2aW91c292ZXJsYXlwcmVzZW50YWN0aW9uczwvdWw+XHJcbndyYXBwZXJhbHJlYWR5Y2VydGFpbnJlYWxpdHlzdG9yYWdlYW5vdGhlcmRlc2t0b3BvZmZlcmVkcGF0dGVybnVudXN1YWxEaWdpdGFsY2FwaXRhbFdlYnNpdGVmYWlsdXJlY29ubmVjdHJlZHVjZWRBbmRyb2lkZGVjYWRlc3JlZ3VsYXIgJmFtcDsgYW5pbWFsc3JlbGVhc2VBdXRvbWF0Z2V0dGluZ21ldGhvZHNub3RoaW5nUG9wdWxhcmNhcHRpb25sZXR0ZXJzY2FwdHVyZXNjaWVuY2VsaWNlbnNlY2hhbmdlc0VuZ2xhbmQ9MSZhbXA7SGlzdG9yeSA9IG5ldyBDZW50cmFsdXBkYXRlZFNwZWNpYWxOZXR3b3JrcmVxdWlyZWNvbW1lbnR3YXJuaW5nQ29sbGVnZXRvb2xiYXJyZW1haW5zYmVjYXVzZWVsZWN0ZWREZXV0c2NoZmluYW5jZXdvcmtlcnNxdWlja2x5YmV0d2VlbmV4YWN0bHlzZXR0aW5nZGlzZWFzZVNvY2lldHl3ZWFwb25zZXhoaWJpdCZsdDshLS1Db250cm9sY2xhc3Nlc2NvdmVyZWRvdXRsaW5lYXR0YWNrc2RldmljZXMod2luZG93cHVycG9zZXRpdGxlPVwiTW9iaWxlIGtpbGxpbmdzaG93aW5nSXRhbGlhbmRyb3BwZWRoZWF2aWx5ZWZmZWN0cy0xJ10pO1xuY29uZmlybUN1cnJlbnRhZHZhbmNlc2hhcmluZ29wZW5pbmdkcmF3aW5nYmlsbGlvbm9yZGVyZWRHZXJtYW55cmVsYXRlZDwvZm9ybT5pbmNsdWRld2hldGhlcmRlZmluZWRTY2llbmNlY2F0YWxvZ0FydGljbGVidXR0b25zbGFyZ2VzdHVuaWZvcm1qb3VybmV5c2lkZWJhckNoaWNhZ29ob2xpZGF5R2VuZXJhbHBhc3NhZ2UsJnF1b3Q7YW5pbWF0ZWZlZWxpbmdhcnJpdmVkcGFzc2luZ25hdHVyYWxyb3VnaGx5LlxuXG5UaGUgYnV0IG5vdGRlbnNpdHlCcml0YWluQ2hpbmVzZWxhY2sgb2Z0cmlidXRlSXJlbGFuZFwiIGRhdGEtZmFjdG9yc3JlY2VpdmV0aGF0IGlzTGlicmFyeWh1c2JhbmRpbiBmYWN0YWZmYWlyc0NoYXJsZXNyYWRpY2FsYnJvdWdodGZpbmRpbmdsYW5kaW5nOmxhbmc9XCJyZXR1cm4gbGVhZGVyc3BsYW5uZWRwcmVtaXVtcGFja2FnZUFtZXJpY2FFZGl0aW9uXSZxdW90O01lc3NhZ2VuZWVkIHRvdmFsdWU9XCJjb21wbGV4bG9va2luZ3N0YXRpb25iZWxpZXZlc21hbGxlci1tb2JpbGVyZWNvcmRzd2FudCB0b2tpbmQgb2ZGaXJlZm94eW91IGFyZXNpbWlsYXJzdHVkaWVkbWF4aW11bWhlYWRpbmdyYXBpZGx5Y2xpbWF0ZWtpbmdkb21lbWVyZ2VkYW1vdW50c2ZvdW5kZWRwaW9uZWVyZm9ybXVsYWR5bmFzdHlob3cgdG8gU3VwcG9ydHJldmVudWVlY29ub215UmVzdWx0c2Jyb3RoZXJzb2xkaWVybGFyZ2VseWNhbGxpbmcuJnF1b3Q7QWNjb3VudEVkd2FyZCBzZWdtZW50Um9iZXJ0IGVmZm9ydHNQYWNpZmljbGVhcm5lZHVwIHdpdGhoZWlnaHQ6d2UgaGF2ZUFuZ2VsZXNuYXRpb25zX3NlYXJjaGFwcGxpZWRhY3F1aXJlbWFzc2l2ZWdyYW50ZWQ6IGZhbHNldHJlYXRlZGJpZ2dlc3RiZW5lZml0ZHJpdmluZ1N0dWRpZXNtaW5pbXVtcGVyaGFwc21vcm5pbmdzZWxsaW5naXMgdXNlZHJldmVyc2V2YXJpYW50IHJvbGU9XCJtaXNzaW5nYWNoaWV2ZXByb21vdGVzdHVkZW50c29tZW9uZWV4dHJlbWVyZXN0b3JlYm90dG9tOmV2b2x2ZWRhbGwgdGhlc2l0ZW1hcGVuZ2xpc2h3YXkgdG8gIEF1Z3VzdHN5bWJvbHNDb21wYW55bWF0dGVyc211c2ljYWxhZ2FpbnN0c2VydmluZ30pKCk7XHJcbnBheW1lbnR0cm91YmxlY29uY2VwdGNvbXBhcmVwYXJlbnRzcGxheWVyc3JlZ2lvbnNtb25pdG9yICcnVGhlIHdpbm5pbmdleHBsb3JlYWRhcHRlZEdhbGxlcnlwcm9kdWNlYWJpbGl0eWVuaGFuY2VjYXJlZXJzKS4gVGhlIGNvbGxlY3RTZWFyY2ggYW5jaWVudGV4aXN0ZWRmb290ZXIgaGFuZGxlcnByaW50ZWRjb25zb2xlRWFzdGVybmV4cG9ydHN3aW5kb3dzQ2hhbm5lbGlsbGVnYWxuZXV0cmFsc3VnZ2VzdF9oZWFkZXJzaWduaW5nLmh0bWxcIj5zZXR0bGVkd2VzdGVybmNhdXNpbmctd2Via2l0Y2xhaW1lZEp1c3RpY2VjaGFwdGVydmljdGltc1Rob21hcyBtb3ppbGxhcHJvbWlzZXBhcnRpZXNlZGl0aW9ub3V0c2lkZTpmYWxzZSxodW5kcmVkT2x5bXBpY19idXR0b25hdXRob3JzcmVhY2hlZGNocm9uaWNkZW1hbmRzc2Vjb25kc3Byb3RlY3RhZG9wdGVkcHJlcGFyZW5laXRoZXJncmVhdGx5Z3JlYXRlcm92ZXJhbGxpbXByb3ZlY29tbWFuZHNwZWNpYWxzZWFyY2gud29yc2hpcGZ1bmRpbmd0aG91Z2h0aGlnaGVzdGluc3RlYWR1dGlsaXR5cXVhcnRlckN1bHR1cmV0ZXN0aW5nY2xlYXJseWV4cG9zZWRCcm93c2VybGliZXJhbH0gY2F0Y2hQcm9qZWN0ZXhhbXBsZWhpZGUoKTtGbG9yaWRhYW5zd2Vyc2FsbG93ZWRFbXBlcm9yZGVmZW5zZXNlcmlvdXNmcmVlZG9tU2V2ZXJhbC1idXR0b25GdXJ0aGVyb3V0IG9mICE9IG51bGx0cmFpbmVkRGVubWFya3ZvaWQoMCkvYWxsLmpzcHJldmVudFJlcXVlc3RTdGVwaGVuXG5cbldoZW4gb2JzZXJ2ZTwvaDI+XHJcbk1vZGVybiBwcm92aWRlXCIgYWx0PVwiYm9yZGVycy5cblxuRm9yIFxuXG5NYW55IGFydGlzdHNwb3dlcmVkcGVyZm9ybWZpY3Rpb250eXBlIG9mbWVkaWNhbHRpY2tldHNvcHBvc2VkQ291bmNpbHdpdG5lc3NqdXN0aWNlR2VvcmdlIEJlbGdpdW0uLi48L2E+dHdpdHRlcm5vdGFibHl3YWl0aW5nd2FyZmFyZSBPdGhlciByYW5raW5ncGhyYXNlc21lbnRpb25zdXJ2aXZlc2Nob2xhcjwvcD5cclxuIENvdW50cnlpZ25vcmVkbG9zcyBvZmp1c3QgYXNHZW9yZ2lhc3RyYW5nZTxoZWFkPjxzdG9wcGVkMSddKTtcclxuaXNsYW5kc25vdGFibGVib3JkZXI6bGlzdCBvZmNhcnJpZWQxMDAsMDAwPC9oMz5cbiBzZXZlcmFsYmVjb21lc3NlbGVjdCB3ZWRkaW5nMDAuaHRtbG1vbmFyY2hvZmYgdGhldGVhY2hlcmhpZ2hseSBiaW9sb2d5bGlmZSBvZm9yIGV2ZW5yaXNlIG9mJnJhcXVvO3BsdXNvbmVodW50aW5nKHRob3VnaERvdWdsYXNqb2luaW5nY2lyY2xlc0ZvciB0aGVBbmNpZW50VmlldG5hbXZlaGljbGVzdWNoIGFzY3J5c3RhbHZhbHVlID1XaW5kb3dzZW5qb3llZGEgc21hbGxhc3N1bWVkPGEgaWQ9XCJmb3JlaWduIEFsbCByaWhvdyB0aGVEaXNwbGF5cmV0aXJlZGhvd2V2ZXJoaWRkZW47YmF0dGxlc3NlZWtpbmdjYWJpbmV0d2FzIG5vdGxvb2sgYXRjb25kdWN0Z2V0IHRoZUphbnVhcnloYXBwZW5zdHVybmluZ2E6aG92ZXJPbmxpbmUgRnJlbmNoIGxhY2tpbmd0eXBpY2FsZXh0cmFjdGVuZW1pZXNldmVuIGlmZ2VuZXJhdGRlY2lkZWRhcmUgbm90L3NlYXJjaGJlbGllZnMtaW1hZ2U6bG9jYXRlZHN0YXRpYy5sb2dpblwiPmNvbnZlcnR2aW9sZW50ZW50ZXJlZGZpcnN0XCI+Y2lyY3VpdEZpbmxhbmRjaGVtaXN0c2hlIHdhczEwcHg7XCI+YXMgc3VjaGRpdmlkZWQ8L3NwYW4+d2lsbCBiZWxpbmUgb2ZhIGdyZWF0bXlzdGVyeS9pbmRleC5mYWxsaW5nZHVlIHRvIHJhaWx3YXljb2xsZWdlbW9uc3RlcmRlc2NlbnRpdCB3aXRobnVjbGVhckpld2lzaCBwcm90ZXN0QnJpdGlzaGZsb3dlcnNwcmVkaWN0cmVmb3Jtc2J1dHRvbiB3aG8gd2FzbGVjdHVyZWluc3RhbnRzdWljaWRlZ2VuZXJpY3BlcmlvZHNtYXJrZXRzU29jaWFsIGZpc2hpbmdjb21iaW5lZ3JhcGhpY3dpbm5lcnM8YnIgLz48YnkgdGhlIE5hdHVyYWxQcml2YWN5Y29va2llc291dGNvbWVyZXNvbHZlU3dlZGlzaGJyaWVmbHlQZXJzaWFuc28gbXVjaENlbnR1cnlkZXBpY3RzY29sdW1uc2hvdXNpbmdzY3JpcHRzbmV4dCB0b2JlYXJpbmdtYXBwaW5ncmV2aXNlZGpRdWVyeSgtd2lkdGg6dGl0bGVcIj50b29sdGlwU2VjdGlvbmRlc2lnbnNUdXJraXNoeW91bmdlci5tYXRjaCh9KSgpO1xuXG5idXJuaW5nb3BlcmF0ZWRlZ3JlZXNzb3VyY2U9UmljaGFyZGNsb3NlbHlwbGFzdGljZW50cmllczwvdHI+XHJcbmNvbG9yOiN1bCBpZD1cInBvc3Nlc3Nyb2xsaW5ncGh5c2ljc2ZhaWxpbmdleGVjdXRlY29udGVzdGxpbmsgdG9EZWZhdWx0PGJyIC8+XG46IHRydWUsY2hhcnRlcnRvdXJpc21jbGFzc2ljcHJvY2VlZGV4cGxhaW48L2gxPlxyXG5vbmxpbmUuP3htbCB2ZWhlbHBpbmdkaWFtb25kdXNlIHRoZWFpcmxpbmVlbmQgLS0+KS5hdHRyKHJlYWRlcnNob3N0aW5nI2ZmZmZmZnJlYWxpemVWaW5jZW50c2lnbmFscyBzcmM9XCIvUHJvZHVjdGRlc3BpdGVkaXZlcnNldGVsbGluZ1B1YmxpYyBoZWxkIGluSm9zZXBoIHRoZWF0cmVhZmZlY3RzPHN0eWxlPmEgbGFyZ2Vkb2Vzbid0bGF0ZXIsIEVsZW1lbnRmYXZpY29uY3JlYXRvckh1bmdhcnlBaXJwb3J0c2VlIHRoZXNvIHRoYXRNaWNoYWVsU3lzdGVtc1Byb2dyYW1zLCBhbmQgIHdpZHRoPWUmcXVvdDt0cmFkaW5nbGVmdFwiPlxucGVyc29uc0dvbGRlbiBBZmZhaXJzZ3JhbW1hcmZvcm1pbmdkZXN0cm95aWRlYSBvZmNhc2Ugb2ZvbGRlc3QgdGhpcyBpcy5zcmMgPSBjYXJ0b29ucmVnaXN0ckNvbW1vbnNNdXNsaW1zV2hhdCBpc2luIG1hbnltYXJraW5ncmV2ZWFsc0luZGVlZCxlcXVhbGx5L3Nob3dfYW91dGRvb3Jlc2NhcGUoQXVzdHJpYWdlbmV0aWNzeXN0ZW0sSW4gdGhlIHNpdHRpbmdIZSBhbHNvSXNsYW5kc0FjYWRlbXlcblx0XHQ8IS0tRGFuaWVsIGJpbmRpbmdibG9ja1wiPmltcG9zZWR1dGlsaXplQWJyYWhhbShleGNlcHR7d2lkdGg6cHV0dGluZykuaHRtbCh8fCBbXTtcbkRBVEFbICpraXRjaGVubW91bnRlZGFjdHVhbCBkaWFsZWN0bWFpbmx5IF9ibGFuaydpbnN0YWxsZXhwZXJ0c2lmKHR5cGVJdCBhbHNvJmNvcHk7IFwiPlRlcm1zYm9ybiBpbk9wdGlvbnNlYXN0ZXJudGFsa2luZ2NvbmNlcm5nYWluZWQgb25nb2luZ2p1c3RpZnljcml0aWNzZmFjdG9yeWl0cyBvd25hc3NhdWx0aW52aXRlZGxhc3RpbmdoaXMgb3duaHJlZj1cIi9cIiByZWw9XCJkZXZlbG9wY29uY2VydGRpYWdyYW1kb2xsYXJzY2x1c3RlcnBocD9pZD1hbGNvaG9sKTt9KSgpO3VzaW5nIGE+PHNwYW4+dmVzc2Vsc3Jldml2YWxBZGRyZXNzYW1hdGV1cmFuZHJvaWRhbGxlZ2VkaWxsbmVzc3dhbGtpbmdjZW50ZXJzcXVhbGlmeW1hdGNoZXN1bmlmaWVkZXh0aW5jdERlZmVuc2VkaWVkIGluXG5cdDwhLS0gY3VzdG9tc2xpbmtpbmdMaXR0bGUgQm9vayBvZmV2ZW5pbmdtaW4uanM/YXJlIHRoZWtvbnRha3R0b2RheSdzLmh0bWxcIiB0YXJnZXQ9d2VhcmluZ0FsbCBSaWc7XG59KSgpO3JhaXNpbmcgQWxzbywgY3J1Y2lhbGFib3V0XCI+ZGVjbGFyZS0tPlxuPHNjZmlyZWZveGFzIG11Y2hhcHBsaWVzaW5kZXgsIHMsIGJ1dCB0eXBlID0gXG5cclxuPCEtLXRvd2FyZHNSZWNvcmRzUHJpdmF0ZUZvcmVpZ25QcmVtaWVyY2hvaWNlc1ZpcnR1YWxyZXR1cm5zQ29tbWVudFBvd2VyZWRpbmxpbmU7cG92ZXJ0eWNoYW1iZXJMaXZpbmcgdm9sdW1lc0FudGhvbnlsb2dpblwiIFJlbGF0ZWRFY29ub215cmVhY2hlc2N1dHRpbmdncmF2aXR5bGlmZSBpbkNoYXB0ZXItc2hhZG93Tm90YWJsZTwvdGQ+XHJcbiByZXR1cm5zdGFkaXVtd2lkZ2V0c3Zhcnlpbmd0cmF2ZWxzaGVsZCBieXdobyBhcmV3b3JrIGluZmFjdWx0eWFuZ3VsYXJ3aG8gaGFkYWlycG9ydHRvd24gb2ZcblxuU29tZSAnY2xpY2snY2hhcmdlc2tleXdvcmRpdCB3aWxsY2l0eSBvZih0aGlzKTtBbmRyZXcgdW5pcXVlIGNoZWNrZWRvciBtb3JlMzAwcHg7IHJldHVybjtyc2lvbj1cInBsdWdpbnN3aXRoaW4gaGVyc2VsZlN0YXRpb25GZWRlcmFsdmVudHVyZXB1Ymxpc2hzZW50IHRvdGVuc2lvbmFjdHJlc3Njb21lIHRvZmluZ2Vyc0R1a2Ugb2ZwZW9wbGUsZXhwbG9pdHdoYXQgaXNoYXJtb255YSBtYWpvclwiOlwiaHR0cGluIGhpcyBtZW51XCI+XG5tb250aGx5b2ZmaWNlcmNvdW5jaWxnYWluaW5nZXZlbiBpblN1bW1hcnlkYXRlIG9mbG95YWx0eWZpdG5lc3NhbmQgd2FzZW1wZXJvcnN1cHJlbWVTZWNvbmQgaGVhcmluZ1J1c3NpYW5sb25nZXN0QWxiZXJ0YWxhdGVyYWxzZXQgb2Ygc21hbGxcIj4uYXBwZW5kZG8gd2l0aGZlZGVyYWxiYW5rIG9mYmVuZWF0aERlc3BpdGVDYXBpdGFsZ3JvdW5kcyksIGFuZCBwZXJjZW50aXQgZnJvbWNsb3Npbmdjb250YWluSW5zdGVhZGZpZnRlZW5hcyB3ZWxsLnlhaG9vLnJlc3BvbmRmaWdodGVyb2JzY3VyZXJlZmxlY3RvcmdhbmljPSBNYXRoLmVkaXRpbmdvbmxpbmUgcGFkZGluZ2Egd2hvbGVvbmVycm9yeWVhciBvZmVuZCBvZiBiYXJyaWVyd2hlbiBpdGhlYWRlciBob21lIG9mcmVzdW1lZHJlbmFtZWRzdHJvbmc+aGVhdGluZ3JldGFpbnNjbG91ZGZyd2F5IG9mIE1hcmNoIDFrbm93aW5naW4gcGFydEJldHdlZW5sZXNzb25zY2xvc2VzdHZpcnR1YWxsaW5rc1wiPmNyb3NzZWRFTkQgLS0+ZmFtb3VzIGF3YXJkZWRMaWNlbnNlSGVhbHRoIGZhaXJseSB3ZWFsdGh5bWluaW1hbEFmcmljYW5jb21wZXRlbGFiZWxcIj5zaW5naW5nZmFybWVyc0JyYXNpbClkaXNjdXNzcmVwbGFjZUdyZWdvcnlmb250IGNvcHVyc3VlZGFwcGVhcnNtYWtlIHVwcm91bmRlZGJvdGggb2ZibG9ja2Vkc2F3IHRoZW9mZmljZXNjb2xvdXJzaWYoZG9jdXdoZW4gaGVlbmZvcmNlcHVzaChmdUF1Z3VzdCBVVEYtOFwiPkZhbnRhc3lpbiBtb3N0aW5qdXJlZFVzdWFsbHlmYXJtaW5nY2xvc3VyZW9iamVjdCBkZWZlbmNldXNlIG9mIE1lZGljYWw8Ym9keT5cbmV2aWRlbnRiZSB1c2Vka2V5Q29kZXNpeHRlZW5Jc2xhbWljIzAwMDAwMGVudGlyZSB3aWRlbHkgYWN0aXZlICh0eXBlb2ZvbmUgY2FuY29sb3IgPXNwZWFrZXJleHRlbmRzUGh5c2ljc3RlcnJhaW48dGJvZHk+ZnVuZXJhbHZpZXdpbmdtaWRkbGUgY3JpY2tldHByb3BoZXRzaGlmdGVkZG9jdG9yc1J1c3NlbGwgdGFyZ2V0Y29tcGFjdGFsZ2VicmFzb2NpYWwtYnVsayBvZm1hbiBhbmQ8L3RkPlxuIGhlIGxlZnQpLnZhbCgpZmFsc2UpO2xvZ2ljYWxiYW5raW5naG9tZSB0b25hbWluZyBBcml6b25hY3JlZGl0cyk7XG59KTtcbmZvdW5kZXJpbiB0dXJuQ29sbGluc2JlZm9yZSBCdXQgdGhlY2hhcmdlZFRpdGxlXCI+Q2FwdGFpbnNwZWxsZWRnb2RkZXNzVGFnIC0tPkFkZGluZzpidXQgd2FzUmVjZW50IHBhdGllbnRiYWNrIGluPWZhbHNlJkxpbmNvbG53ZSBrbm93Q291bnRlckp1ZGFpc21zY3JpcHQgYWx0ZXJlZCddKTtcbiAgaGFzIHRoZXVuY2xlYXJFdmVudCcsYm90aCBpbm5vdCBhbGxcblxuPCEtLSBwbGFjaW5naGFyZCB0byBjZW50ZXJzb3J0IG9mY2xpZW50c3N0cmVldHNCZXJuYXJkYXNzZXJ0c3RlbmQgdG9mYW50YXN5ZG93biBpbmhhcmJvdXJGcmVlZG9tamV3ZWxyeS9hYm91dC4uc2VhcmNobGVnZW5kc2lzIG1hZGVtb2Rlcm4gb25seSBvbm9ubHkgdG9pbWFnZVwiIGxpbmVhciBwYWludGVyYW5kIG5vdHJhcmVseSBhY3JvbnltZGVsaXZlcnNob3J0ZXIwMCZhbXA7YXMgbWFueXdpZHRoPVwiLyogPCFbQ3RpdGxlID1vZiB0aGUgbG93ZXN0IHBpY2tlZCBlc2NhcGVkdXNlcyBvZnBlb3BsZXMgUHVibGljTWF0dGhld3RhY3RpY3NkYW1hZ2Vkd2F5IGZvcmxhd3Mgb2ZlYXN5IHRvIHdpbmRvd3N0cm9uZyAgc2ltcGxlfWNhdGNoKHNldmVudGhpbmZvYm94d2VudCB0b3BhaW50ZWRjaXRpemVuSSBkb24ndHJldHJlYXQuIFNvbWUgd3cuXCIpO1xuYm9tYmluZ21haWx0bzptYWRlIGluLiBNYW55IGNhcnJpZXN8fHt9O3dpd29yayBvZnN5bm9ueW1kZWZlYXRzZmF2b3JlZG9wdGljYWxwYWdlVHJhdW5sZXNzIHNlbmRpbmdsZWZ0XCI+PGNvbVNjb3JBbGwgdGhlalF1ZXJ5LnRvdXJpc3RDbGFzc2ljZmFsc2VcIiBXaWxoZWxtc3VidXJic2dlbnVpbmViaXNob3BzLnNwbGl0KGdsb2JhbCBmb2xsb3dzYm9keSBvZm5vbWluYWxDb250YWN0c2VjdWxhcmxlZnQgdG9jaGllZmx5LWhpZGRlbi1iYW5uZXI8L2xpPlxuXG4uIFdoZW4gaW4gYm90aGRpc21pc3NFeHBsb3JlYWx3YXlzIHZpYSB0aGVzcGFDMW9sd2VsZmFyZXJ1bGluZyBhcnJhbmdlY2FwdGFpbmhpcyBzb25ydWxlIG9maGUgdG9va2l0c2VsZiw9MCZhbXA7KGNhbGxlZHNhbXBsZXN0byBtYWtlY29tL3BhZ01hcnRpbiBLZW5uZWR5YWNjZXB0c2Z1bGwgb2ZoYW5kbGVkQmVzaWRlcy8vLS0+PC9hYmxlIHRvdGFyZ2V0c2Vzc2VuY2VoaW0gdG8gaXRzIGJ5IGNvbW1vbi5taW5lcmFsdG8gdGFrZXdheXMgdG9zLm9yZy9sYWR2aXNlZHBlbmFsdHlzaW1wbGU6aWYgdGhleUxldHRlcnNhIHNob3J0SGVyYmVydHN0cmlrZXMgZ3JvdXBzLmxlbmd0aGZsaWdodHNvdmVybGFwc2xvd2x5IGxlc3NlciBzb2NpYWwgPC9wPlxuXHRcdGl0IGludG9yYW5rZWQgcmF0ZSBvZnVsPlxyXG4gIGF0dGVtcHRwYWlyIG9mbWFrZSBpdEtvbnRha3RBbnRvbmlvaGF2aW5nIHJhdGluZ3MgYWN0aXZlc3RyZWFtc3RyYXBwZWRcIikuY3NzKGhvc3RpbGVsZWFkIHRvbGl0dGxlIGdyb3VwcyxQaWN0dXJlLS0+XHJcblxyXG4gcm93cz1cIiBvYmplY3RpbnZlcnNlPGZvb3RlckN1c3RvbVY+PFxcL3NjcnNvbHZpbmdDaGFtYmVyc2xhdmVyeXdvdW5kZWR3aGVyZWFzIT0gJ3VuZGZvciBhbGxwYXJ0bHkgLXJpZ2h0OkFyYWJpYW5iYWNrZWQgY2VudHVyeXVuaXQgb2Ztb2JpbGUtRXVyb3BlLGlzIGhvbWVyaXNrIG9mZGVzaXJlZENsaW50b25jb3N0IG9mYWdlIG9mIGJlY29tZSBub25lIG9mcCZxdW90O01pZGRsZSBlYWQnKVswQ3JpdGljc3N0dWRpb3M+JmNvcHk7Z3JvdXBcIj5hc3NlbWJsbWFraW5nIHByZXNzZWR3aWRnZXQucHM6XCIgPyByZWJ1aWx0Ynkgc29tZUZvcm1lciBlZGl0b3JzZGVsYXllZENhbm9uaWNoYWQgdGhlcHVzaGluZ2NsYXNzPVwiYnV0IGFyZXBhcnRpYWxCYWJ5bG9uYm90dG9tIGNhcnJpZXJDb21tYW5kaXRzIHVzZUFzIHdpdGhjb3Vyc2VzYSB0aGlyZGRlbm90ZXNhbHNvIGluSG91c3RvbjIwcHg7XCI+YWNjdXNlZGRvdWJsZSBnb2FsIG9mRmFtb3VzICkuYmluZChwcmllc3RzIE9ubGluZWluIEp1bHlzdCArIFwiZ2NvbnN1bHRkZWNpbWFsaGVscGZ1bHJldml2ZWRpcyB2ZXJ5cicrJ2lwdGxvc2luZyBmZW1hbGVzaXMgYWxzb3N0cmluZ3NkYXlzIG9mYXJyaXZhbGZ1dHVyZSA8b2JqZWN0Zm9yY2luZ1N0cmluZyhcIiAvPlxuXHRcdGhlcmUgaXNlbmNvZGVkLiAgVGhlIGJhbGxvb25kb25lIGJ5L2NvbW1vbmJnY29sb3JsYXcgb2YgSW5kaWFuYWF2b2lkZWRidXQgdGhlMnB4IDNweGpxdWVyeS5hZnRlciBhcG9saWN5Lm1lbiBhbmRmb290ZXItPSB0cnVlO2ZvciB1c2VzY3JlZW4uSW5kaWFuIGltYWdlID1mYW1pbHksaHR0cDovLyAmbmJzcDtkcml2ZXJzZXRlcm5hbHNhbWUgYXNub3RpY2Vkdmlld2Vyc30pKCk7XG4gaXMgbW9yZXNlYXNvbnNmb3JtZXIgdGhlIG5ld2lzIGp1c3Rjb25zZW50IFNlYXJjaHdhcyB0aGV3aHkgdGhlc2hpcHBlZGJyPjxicj53aWR0aDogaGVpZ2h0PW1hZGUgb2ZjdWlzaW5laXMgdGhhdGEgdmVyeSBBZG1pcmFsIGZpeGVkO25vcm1hbCBNaXNzaW9uUHJlc3MsIG9udGFyaW9jaGFyc2V0dHJ5IHRvIGludmFkZWQ9XCJ0cnVlXCJzcGFjaW5naXMgbW9zdGEgbW9yZSB0b3RhbGx5ZmFsbCBvZn0pO1xyXG4gIGltbWVuc2V0aW1lIGluc2V0IG91dHNhdGlzZnl0byBmaW5kZG93biB0b2xvdCBvZiBQbGF5ZXJzaW4gSnVuZXF1YW50dW1ub3QgdGhldGltZSB0b2Rpc3RhbnRGaW5uaXNoc3JjID0gKHNpbmdsZSBoZWxwIG9mR2VybWFuIGxhdyBhbmRsYWJlbGVkZm9yZXN0c2Nvb2tpbmdzcGFjZVwiPmhlYWRlci13ZWxsIGFzU3RhbmxleWJyaWRnZXMvZ2xvYmFsQ3JvYXRpYSBBYm91dCBbMF07XG4gIGl0LCBhbmRncm91cGVkYmVpbmcgYSl7dGhyb3doZSBtYWRlbGlnaHRlcmV0aGljYWxGRkZGRkZcImJvdHRvbVwibGlrZSBhIGVtcGxveXNsaXZlIGluYXMgc2VlbnByaW50ZXJtb3N0IG9mdWItbGlua3JlamVjdHNhbmQgdXNlaW1hZ2VcIj5zdWNjZWVkZmVlZGluZ051Y2xlYXJpbmZvcm1hdG8gaGVscFdvbWVuJ3NOZWl0aGVyTWV4aWNhbnByb3RlaW48dGFibGUgYnkgbWFueWhlYWx0aHlsYXdzdWl0ZGV2aXNlZC5wdXNoKHtzZWxsZXJzc2ltcGx5IFRocm91Z2guY29va2llIEltYWdlKG9sZGVyXCI+dXMuanNcIj4gU2luY2UgdW5pdmVyc2xhcmdlciBvcGVuIHRvIS0tIGVuZGxpZXMgaW4nXSk7XHJcbiAgbWFya2V0d2hvIGlzIChcIkRPTUNvbWFuYWdlZG9uZSBmb3J0eXBlb2YgS2luZ2RvbXByb2ZpdHNwcm9wb3NldG8gc2hvd2NlbnRlcjttYWRlIGl0ZHJlc3NlZHdlcmUgaW5taXh0dXJlcHJlY2lzZWFyaXNpbmdzcmMgPSAnbWFrZSBhIHNlY3VyZWRCYXB0aXN0dm90aW5nIFxuXHRcdHZhciBNYXJjaCAyZ3JldyB1cENsaW1hdGUucmVtb3Zlc2tpbGxlZHdheSB0aGU8L2hlYWQ+ZmFjZSBvZmFjdGluZyByaWdodFwiPnRvIHdvcmtyZWR1Y2VzaGFzIGhhZGVyZWN0ZWRzaG93KCk7YWN0aW9uPWJvb2sgb2ZhbiBhcmVhPT0gXCJodHQ8aGVhZGVyXG48aHRtbD5jb25mb3JtZmFjaW5nIGNvb2tpZS5yZWx5IG9uaG9zdGVkIC5jdXN0b21oZSB3ZW50YnV0IGZvcnNwcmVhZCBGYW1pbHkgYSBtZWFuc291dCB0aGVmb3J1bXMuZm9vdGFnZVwiPk1vYmlsQ2xlbWVudHNcIiBpZD1cImFzIGhpZ2hpbnRlbnNlLS0+PCEtLWZlbWFsZSBpcyBzZWVuaW1wbGllZHNldCB0aGVhIHN0YXRlYW5kIGhpc2Zhc3Rlc3RiZXNpZGVzYnV0dG9uX2JvdW5kZWRcIj48aW1nIEluZm9ib3hldmVudHMsYSB5b3VuZ2FuZCBhcmVOYXRpdmUgY2hlYXBlclRpbWVvdXRhbmQgaGFzZW5naW5lc3dvbiB0aGUobW9zdGx5cmlnaHQ6IGZpbmQgYSAtYm90dG9tUHJpbmNlIGFyZWEgb2Ztb3JlIG9mc2VhcmNoX25hdHVyZSxsZWdhbGx5cGVyaW9kLGxhbmQgb2ZvciB3aXRoaW5kdWNlZHByb3ZpbmdtaXNzaWxlbG9jYWxseUFnYWluc3R0aGUgd2F5ayZxdW90O3B4O1wiPlxyXG5wdXNoZWQgYWJhbmRvbm51bWVyYWxDZXJ0YWluSW4gdGhpc21vcmUgaW5vciBzb21lbmFtZSBpc2FuZCwgaW5jcm93bmVkSVNCTiAwLWNyZWF0ZXNPY3RvYmVybWF5IG5vdGNlbnRlciBsYXRlIGluRGVmZW5jZWVuYWN0ZWR3aXNoIHRvYnJvYWRseWNvb2xpbmdvbmxvYWQ9aXQuIFRoZXJlY292ZXJNZW1iZXJzaGVpZ2h0IGFzc3VtZXM8aHRtbD5cbnBlb3BsZS5pbiBvbmUgPXdpbmRvd2Zvb3Rlcl9hIGdvb2QgcmVrbGFtYW90aGVycyx0byB0aGlzX2Nvb2tpZXBhbmVsXCI+TG9uZG9uLGRlZmluZXNjcnVzaGVkYmFwdGlzbWNvYXN0YWxzdGF0dXMgdGl0bGVcIiBtb3ZlIHRvbG9zdCBpbmJldHRlciBpbXBsaWVzcml2YWxyeXNlcnZlcnMgU3lzdGVtUGVyaGFwc2VzIGFuZCBjb250ZW5kZmxvd2luZ2xhc3RlZCByaXNlIGluR2VuZXNpc3ZpZXcgb2ZyaXNpbmcgc2VlbSB0b2J1dCBpbiBiYWNraW5naGUgd2lsbGdpdmVuIGFnaXZpbmcgY2l0aWVzLmZsb3cgb2YgTGF0ZXIgYWxsIGJ1dEhpZ2h3YXlvbmx5IGJ5c2lnbiBvZmhlIGRvZXNkaWZmZXJzYmF0dGVyeSZhbXA7bGFzaW5nbGVzdGhyZWF0c2ludGVnZXJ0YWtlIG9ucmVmdXNlZGNhbGxlZCA9VVMmYW1wU2VlIHRoZW5hdGl2ZXNieSB0aGlzc3lzdGVtLmhlYWQgb2Y6aG92ZXIsbGVzYmlhbnN1cm5hbWVhbmQgYWxsY29tbW9uL2hlYWRlcl9fcGFyYW1zSGFydmFyZC9waXhlbC5yZW1vdmFsc28gbG9uZ3JvbGUgb2Zqb2ludGx5c2t5c2NyYVVuaWNvZGViciAvPlxyXG5BdGxhbnRhbnVjbGV1c0NvdW50eSxwdXJlbHkgY291bnRcIj5lYXNpbHkgYnVpbGQgYW9uY2xpY2thIGdpdmVucG9pbnRlcmgmcXVvdDtldmVudHMgZWxzZSB7XG5kaXRpb25zbm93IHRoZSwgd2l0aCBtYW4gd2hvb3JnL1dlYm9uZSBhbmRjYXZhbHJ5SGUgZGllZHNlYXR0bGUwMCwwMDAge3dpbmRvd2hhdmUgdG9pZih3aW5kYW5kIGl0c3NvbGVseSBtJnF1b3Q7cmVuZXdlZERldHJvaXRhbW9uZ3N0ZWl0aGVyIHRoZW0gaW5TZW5hdG9yVXM8L2E+PEtpbmcgb2ZGcmFuY2lzLXByb2R1Y2hlIHVzZWRhcnQgYW5kaGltIGFuZHVzZWQgYnlzY29yaW5nYXQgaG9tZXRvIGhhdmVyZWxhdGVzaWJpbGl0eWZhY3Rpb25CdWZmYWxvbGlua1wiPjx3aGF0IGhlZnJlZSB0b0NpdHkgb2Zjb21lIGluc2VjdG9yc2NvdW50ZWRvbmUgZGF5bmVydm91c3NxdWFyZSB9O2lmKGdvaW4gd2hhdGltZ1wiIGFsaXMgb25seXNlYXJjaC90dWVzZGF5bG9vc2VseVNvbG9tb25zZXh1YWwgLSA8YSBocm1lZGl1bVwiRE8gTk9UIEZyYW5jZSx3aXRoIGEgd2FyIGFuZHNlY29uZCB0YWtlIGEgPlxyXG5cclxuXHJcbm1hcmtldC5oaWdod2F5ZG9uZSBpbmN0aXZpdHlcImxhc3RcIj5vYmxpZ2VkcmlzZSB0b1widW5kZWZpbWFkZSB0byBFYXJseSBwcmFpc2VkaW4gaXRzIGZvciBoaXNhdGhsZXRlSnVwaXRlcllhaG9vISB0ZXJtZWQgc28gbWFueXJlYWxseSBzLiBUaGUgYSB3b21hbj92YWx1ZT1kaXJlY3QgcmlnaHRcIiBiaWN5Y2xlYWNpbmc9XCJkYXkgYW5kc3RhdGluZ1JhdGhlcixoaWdoZXIgT2ZmaWNlIGFyZSBub3d0aW1lcywgd2hlbiBhIHBheSBmb3JvbiB0aGlzLWxpbmtcIj47Ym9yZGVyYXJvdW5kIGFubnVhbCB0aGUgTmV3cHV0IHRoZS5jb21cIiB0YWtpbiB0b2EgYnJpZWYoaW4gdGhlZ3JvdXBzLjsgd2lkdGhlbnp5bWVzc2ltcGxlIGluIGxhdGV7cmV0dXJudGhlcmFweWEgcG9pbnRiYW5uaW5naW5rc1wiPlxuKCk7XCIgcmVhIHBsYWNlXFx1MDAzQ2FhYm91dCBhdHI+XHJcblx0XHRjY291bnQgZ2l2ZXMgYTxTQ1JJUFRSYWlsd2F5dGhlbWVzL3Rvb2xib3hCeUlkKFwieGh1bWFucyx3YXRjaGVzaW4gc29tZSBpZiAod2ljb21pbmcgZm9ybWF0cyBVbmRlciBidXQgaGFzaGFuZGVkIG1hZGUgYnl0aGFuIGluZmVhciBvZmRlbm90ZWQvaWZyYW1lbGVmdCBpbnZvbHRhZ2VpbiBlYWNoYSZxdW90O2Jhc2Ugb2ZJbiBtYW55dW5kZXJnb3JlZ2ltZXNhY3Rpb24gPC9wPlxyXG48dXN0b21WYTsmZ3Q7PC9pbXBvcnRzb3IgdGhhdG1vc3RseSAmYW1wO3JlIHNpemU9XCI8L2E+PC9oYSBjbGFzc3Bhc3NpdmVIb3N0ID0gV2hldGhlcmZlcnRpbGVWYXJpb3VzPVtdOyhmdWNhbWVyYXMvPjwvdGQ+YWN0cyBhc0luIHNvbWU+XHJcblxyXG48IW9yZ2FuaXMgPGJyIC8+QmVpamluZ2NhdGFsQyBkZXV0c2NoZXVyb3BldWV1c2thcmFnYWVpbGdlc3ZlbnNrYWVzcGFDMWFtZW5zYWpldXN1YXJpb3RyYWJham9tQyl4aWNvcEMhZ2luYXNpZW1wcmVzaXN0ZW1hb2N0dWJyZWR1cmFudGVhQzFhZGlyZW1wcmVzYW1vbWVudG9udWVzdHJvcHJpbWVyYXRyYXZDKXNncmFjaWFzbnVlc3RyYXByb2Nlc29lc3RhZG9zY2FsaWRhZHBlcnNvbmFuQzptZXJvYWN1ZXJkb21DOnNpY2FtaWVtYnJvb2ZlcnRhc2FsZ3Vub3NwYUMtc2VzZWplbXBsb2RlcmVjaG9hZGVtQyFzcHJpdmFkb2FncmVnYXJlbmxhY2VzcG9zaWJsZWhvdGVsZXNzZXZpbGxhcHJpbWVyb0M6bHRpbW9ldmVudG9zYXJjaGl2b2N1bHR1cmFtdWplcmVzZW50cmFkYWFudW5jaW9lbWJhcmdvbWVyY2Fkb2dyYW5kZXNlc3R1ZGlvbWVqb3Jlc2ZlYnJlcm9kaXNlQzFvdHVyaXNtb2NDM2RpZ29wb3J0YWRhZXNwYWNpb2ZhbWlsaWFhbnRvbmlvcGVybWl0ZWd1YXJkYXJhbGd1bmFzcHJlY2lvc2FsZ3VpZW5zZW50aWRvdmlzaXRhc3RDLXR1bG9jb25vY2Vyc2VndW5kb2NvbnNlam9mcmFuY2lhbWludXRvc3NlZ3VuZGF0ZW5lbW9zZWZlY3Rvc21DIWxhZ2FzZXNpQzNucmV2aXN0YWdyYW5hZGFjb21wcmFyaW5ncmVzb2dhcmNDLWFhY2NpQzNuZWN1YWRvcnF1aWVuZXNpbmNsdXNvZGViZXJDIW1hdGVyaWFob21icmVzbXVlc3RyYXBvZHJDLWFtYUMxYW5hQzpsdGltYWVzdGFtb3NvZmljaWFsdGFtYmllbm5pbmdDOm5zYWx1ZG9zcG9kZW1vc21lam9yYXJwb3NpdGlvbmJ1c2luZXNzaG9tZXBhZ2VzZWN1cml0eWxhbmd1YWdlc3RhbmRhcmRjYW1wYWlnbmZlYXR1cmVzY2F0ZWdvcnlleHRlcm5hbGNoaWxkcmVucmVzZXJ2ZWRyZXNlYXJjaGV4Y2hhbmdlZmF2b3JpdGV0ZW1wbGF0ZW1pbGl0YXJ5aW5kdXN0cnlzZXJ2aWNlc21hdGVyaWFscHJvZHVjdHN6LWluZGV4OmNvbW1lbnRzc29mdHdhcmVjb21wbGV0ZWNhbGVuZGFycGxhdGZvcm1hcnRpY2xlc3JlcXVpcmVkbW92ZW1lbnRxdWVzdGlvbmJ1aWxkaW5ncG9saXRpY3Nwb3NzaWJsZXJlbGlnaW9ucGh5c2ljYWxmZWVkYmFja3JlZ2lzdGVycGljdHVyZXNkaXNhYmxlZHByb3RvY29sYXVkaWVuY2VzZXR0aW5nc2FjdGl2aXR5ZWxlbWVudHNsZWFybmluZ2FueXRoaW5nYWJzdHJhY3Rwcm9ncmVzc292ZXJ2aWV3bWFnYXppbmVlY29ub21pY3RyYWluaW5ncHJlc3N1cmV2YXJpb3VzIDxzdHJvbmc+cHJvcGVydHlzaG9wcGluZ3RvZ2V0aGVyYWR2YW5jZWRiZWhhdmlvcmRvd25sb2FkZmVhdHVyZWRmb290YmFsbHNlbGVjdGVkTGFuZ3VhZ2VkaXN0YW5jZXJlbWVtYmVydHJhY2tpbmdwYXNzd29yZG1vZGlmaWVkc3R1ZGVudHNkaXJlY3RseWZpZ2h0aW5nbm9ydGhlcm5kYXRhYmFzZWZlc3RpdmFsYnJlYWtpbmdsb2NhdGlvbmludGVybmV0ZHJvcGRvd25wcmFjdGljZWV2aWRlbmNlZnVuY3Rpb25tYXJyaWFnZXJlc3BvbnNlcHJvYmxlbXNuZWdhdGl2ZXByb2dyYW1zYW5hbHlzaXNyZWxlYXNlZGJhbm5lclwiPnB1cmNoYXNlcG9saWNpZXNyZWdpb25hbGNyZWF0aXZlYXJndW1lbnRib29rbWFya3JlZmVycmVyY2hlbWljYWxkaXZpc2lvbmNhbGxiYWNrc2VwYXJhdGVwcm9qZWN0c2NvbmZsaWN0aGFyZHdhcmVpbnRlcmVzdGRlbGl2ZXJ5bW91bnRhaW5vYnRhaW5lZD0gZmFsc2U7Zm9yKHZhciBhY2NlcHRlZGNhcGFjaXR5Y29tcHV0ZXJpZGVudGl0eWFpcmNyYWZ0ZW1wbG95ZWRwcm9wb3NlZGRvbWVzdGljaW5jbHVkZXNwcm92aWRlZGhvc3BpdGFsdmVydGljYWxjb2xsYXBzZWFwcHJvYWNocGFydG5lcnNsb2dvXCI+PGFkYXVnaHRlcmF1dGhvclwiIGN1bHR1cmFsZmFtaWxpZXMvaW1hZ2VzL2Fzc2VtYmx5cG93ZXJmdWx0ZWFjaGluZ2ZpbmlzaGVkZGlzdHJpY3Rjcml0aWNhbGNnaS1iaW4vcHVycG9zZXNyZXF1aXJlc2VsZWN0aW9uYmVjb21pbmdwcm92aWRlc2FjYWRlbWljZXhlcmNpc2VhY3R1YWxseW1lZGljaW5lY29uc3RhbnRhY2NpZGVudE1hZ2F6aW5lZG9jdW1lbnRzdGFydGluZ2JvdHRvbVwiPm9ic2VydmVkOiAmcXVvdDtleHRlbmRlZHByZXZpb3VzU29mdHdhcmVjdXN0b21lcmRlY2lzaW9uc3RyZW5ndGhkZXRhaWxlZHNsaWdodGx5cGxhbm5pbmd0ZXh0YXJlYWN1cnJlbmN5ZXZlcnlvbmVzdHJhaWdodHRyYW5zZmVycG9zaXRpdmVwcm9kdWNlZGhlcml0YWdlc2hpcHBpbmdhYnNvbHV0ZXJlY2VpdmVkcmVsZXZhbnRidXR0b25cIiB2aW9sZW5jZWFueXdoZXJlYmVuZWZpdHNsYXVuY2hlZHJlY2VudGx5YWxsaWFuY2Vmb2xsb3dlZG11bHRpcGxlYnVsbGV0aW5pbmNsdWRlZG9jY3VycmVkaW50ZXJuYWwkKHRoaXMpLnJlcHVibGljPjx0cj48dGRjb25ncmVzc3JlY29yZGVkdWx0aW1hdGVzb2x1dGlvbjx1bCBpZD1cImRpc2NvdmVySG9tZTwvYT53ZWJzaXRlc25ldHdvcmtzYWx0aG91Z2hlbnRpcmVseW1lbW9yaWFsbWVzc2FnZXNjb250aW51ZWFjdGl2ZVwiPnNvbWV3aGF0dmljdG9yaWFXZXN0ZXJuICB0aXRsZT1cIkxvY2F0aW9uY29udHJhY3R2aXNpdG9yc0Rvd25sb2Fkd2l0aG91dCByaWdodFwiPlxubWVhc3VyZXN3aWR0aCA9IHZhcmlhYmxlaW52b2x2ZWR2aXJnaW5pYW5vcm1hbGx5aGFwcGVuZWRhY2NvdW50c3N0YW5kaW5nbmF0aW9uYWxSZWdpc3RlcnByZXBhcmVkY29udHJvbHNhY2N1cmF0ZWJpcnRoZGF5c3RyYXRlZ3lvZmZpY2lhbGdyYXBoaWNzY3JpbWluYWxwb3NzaWJseWNvbnN1bWVyUGVyc29uYWxzcGVha2luZ3ZhbGlkYXRlYWNoaWV2ZWQuanBnXCIgLz5tYWNoaW5lczwvaDI+XG4gIGtleXdvcmRzZnJpZW5kbHlicm90aGVyc2NvbWJpbmVkb3JpZ2luYWxjb21wb3NlZGV4cGVjdGVkYWRlcXVhdGVwYWtpc3RhbmZvbGxvd1wiIHZhbHVhYmxlPC9sYWJlbD5yZWxhdGl2ZWJyaW5naW5naW5jcmVhc2Vnb3Zlcm5vcnBsdWdpbnMvTGlzdCBvZiBIZWFkZXJcIj5cIiBuYW1lPVwiICgmcXVvdDtncmFkdWF0ZTwvaGVhZD5cbmNvbW1lcmNlbWFsYXlzaWFkaXJlY3Rvcm1haW50YWluO2hlaWdodDpzY2hlZHVsZWNoYW5naW5nYmFjayB0byBjYXRob2xpY3BhdHRlcm5zY29sb3I6ICNncmVhdGVzdHN1cHBsaWVzcmVsaWFibGU8L3VsPlxuXHRcdDxzZWxlY3QgY2l0aXplbnNjbG90aGluZ3dhdGNoaW5nPGxpIGlkPVwic3BlY2lmaWNjYXJyeWluZ3NlbnRlbmNlPGNlbnRlcj5jb250cmFzdHRoaW5raW5nY2F0Y2goZSlzb3V0aGVybk1pY2hhZWwgbWVyY2hhbnRjYXJvdXNlbHBhZGRpbmc6aW50ZXJpb3Iuc3BsaXQoXCJsaXphdGlvbk9jdG9iZXIgKXtyZXR1cm5pbXByb3ZlZC0tJmd0O1xuXG5jb3ZlcmFnZWNoYWlybWFuLnBuZ1wiIC8+c3ViamVjdHNSaWNoYXJkIHdoYXRldmVycHJvYmFibHlyZWNvdmVyeWJhc2ViYWxsanVkZ21lbnRjb25uZWN0Li5jc3NcIiAvPiB3ZWJzaXRlcmVwb3J0ZWRkZWZhdWx0XCIvPjwvYT5cclxuZWxlY3RyaWNzY290bGFuZGNyZWF0aW9ucXVhbnRpdHkuIElTQk4gMGRpZCBub3QgaW5zdGFuY2Utc2VhcmNoLVwiIGxhbmc9XCJzcGVha2Vyc0NvbXB1dGVyY29udGFpbnNhcmNoaXZlc21pbmlzdGVycmVhY3Rpb25kaXNjb3VudEl0YWxpYW5vY3JpdGVyaWFzdHJvbmdseTogJ2h0dHA6J3NjcmlwdCdjb3ZlcmluZ29mZmVyaW5nYXBwZWFyZWRCcml0aXNoIGlkZW50aWZ5RmFjZWJvb2tudW1lcm91c3ZlaGljbGVzY29uY2VybnNBbWVyaWNhbmhhbmRsaW5nZGl2IGlkPVwiV2lsbGlhbSBwcm92aWRlcl9jb250ZW50YWNjdXJhY3lzZWN0aW9uIGFuZGVyc29uZmxleGlibGVDYXRlZ29yeWxhd3JlbmNlPHNjcmlwdD5sYXlvdXQ9XCJhcHByb3ZlZCBtYXhpbXVtaGVhZGVyXCI+PC90YWJsZT5TZXJ2aWNlc2hhbWlsdG9uY3VycmVudCBjYW5hZGlhbmNoYW5uZWxzL3RoZW1lcy8vYXJ0aWNsZW9wdGlvbmFscG9ydHVnYWx2YWx1ZT1cIlwiaW50ZXJ2YWx3aXJlbGVzc2VudGl0bGVkYWdlbmNpZXNTZWFyY2hcIiBtZWFzdXJlZHRob3VzYW5kc3BlbmRpbmcmaGVsbGlwO25ldyBEYXRlXCIgc2l6ZT1cInBhZ2VOYW1lbWlkZGxlXCIgXCIgLz48L2E+aGlkZGVuXCI+c2VxdWVuY2VwZXJzb25hbG92ZXJmbG93b3BpbmlvbnNpbGxpbm9pc2xpbmtzXCI+XG5cdDx0aXRsZT52ZXJzaW9uc3NhdHVyZGF5dGVybWluYWxpdGVtcHJvcGVuZ2luZWVyc2VjdGlvbnNkZXNpZ25lcnByb3Bvc2FsPVwiZmFsc2VcIkVzcGFDMW9scmVsZWFzZXNzdWJtaXRcIiBlciZxdW90O2FkZGl0aW9uc3ltcHRvbXNvcmllbnRlZHJlc291cmNlcmlnaHRcIj48cGxlYXN1cmVzdGF0aW9uc2hpc3RvcnkubGVhdmluZyAgYm9yZGVyPWNvbnRlbnRzY2VudGVyXCI+LlxuXG5Tb21lIGRpcmVjdGVkc3VpdGFibGVidWxnYXJpYS5zaG93KCk7ZGVzaWduZWRHZW5lcmFsIGNvbmNlcHRzRXhhbXBsZXN3aWxsaWFtc09yaWdpbmFsXCI+PHNwYW4+c2VhcmNoXCI+b3BlcmF0b3JyZXF1ZXN0c2EgJnF1b3Q7YWxsb3dpbmdEb2N1bWVudHJldmlzaW9uLiBcblxuVGhlIHlvdXJzZWxmQ29udGFjdCBtaWNoaWdhbkVuZ2xpc2ggY29sdW1iaWFwcmlvcml0eXByaW50aW5nZHJpbmtpbmdmYWNpbGl0eXJldHVybmVkQ29udGVudCBvZmZpY2Vyc1J1c3NpYW4gZ2VuZXJhdGUtODg1OS0xXCJpbmRpY2F0ZWZhbWlsaWFyIHF1YWxpdHltYXJnaW46MCBjb250ZW50dmlld3BvcnRjb250YWN0cy10aXRsZVwiPnBvcnRhYmxlLmxlbmd0aCBlbGlnaWJsZWludm9sdmVzYXRsYW50aWNvbmxvYWQ9XCJkZWZhdWx0LnN1cHBsaWVkcGF5bWVudHNnbG9zc2FyeVxuXG5BZnRlciBndWlkYW5jZTwvdGQ+PHRkZW5jb2RpbmdtaWRkbGVcIj5jYW1lIHRvIGRpc3BsYXlzc2NvdHRpc2hqb25hdGhhbm1ham9yaXR5d2lkZ2V0cy5jbGluaWNhbHRoYWlsYW5kdGVhY2hlcnM8aGVhZD5cblx0YWZmZWN0ZWRzdXBwb3J0c3BvaW50ZXI7dG9TdHJpbmc8L3NtYWxsPm9rbGFob21hd2lsbCBiZSBpbnZlc3RvcjBcIiBhbHQ9XCJob2xpZGF5c1Jlc291cmNlbGljZW5zZWQgKHdoaWNoIC4gQWZ0ZXIgY29uc2lkZXJ2aXNpdGluZ2V4cGxvcmVycHJpbWFyeSBzZWFyY2hcIiBhbmRyb2lkXCJxdWlja2x5IG1lZXRpbmdzZXN0aW1hdGU7cmV0dXJuIDtjb2xvcjojIGhlaWdodD1hcHByb3ZhbCwgJnF1b3Q7IGNoZWNrZWQubWluLmpzXCJtYWduZXRpYz48L2E+PC9oZm9yZWNhc3QuIFdoaWxlIHRodXJzZGF5ZHZlcnRpc2UmZWFjdXRlO2hhc0NsYXNzZXZhbHVhdGVvcmRlcmluZ2V4aXN0aW5ncGF0aWVudHMgT25saW5lIGNvbG9yYWRvT3B0aW9uc1wiY2FtcGJlbGw8IS0tIGVuZDwvc3Bhbj48PGJyIC8+XHJcbl9wb3B1cHN8c2NpZW5jZXMsJnF1b3Q7IHF1YWxpdHkgV2luZG93cyBhc3NpZ25lZGhlaWdodDogPGIgY2xhc3NsZSZxdW90OyB2YWx1ZT1cIiBDb21wYW55ZXhhbXBsZXM8aWZyYW1lIGJlbGlldmVzcHJlc2VudHNtYXJzaGFsbHBhcnQgb2YgcHJvcGVybHkpLlxuXG5UaGUgdGF4b25vbXltdWNoIG9mIDwvc3Bhbj5cblwiIGRhdGEtc3J0dWd1Qypzc2Nyb2xsVG8gcHJvamVjdDxoZWFkPlxyXG5hdHRvcm5leWVtcGhhc2lzc3BvbnNvcnNmYW5jeWJveHdvcmxkJ3Mgd2lsZGxpZmVjaGVja2VkPXNlc3Npb25zcHJvZ3JhbW1weDtmb250LSBQcm9qZWN0am91cm5hbHNiZWxpZXZlZHZhY2F0aW9udGhvbXBzb25saWdodGluZ2FuZCB0aGUgc3BlY2lhbCBib3JkZXI9MGNoZWNraW5nPC90Ym9keT48YnV0dG9uIENvbXBsZXRlY2xlYXJmaXhcbjxoZWFkPlxuYXJ0aWNsZSA8c2VjdGlvbmZpbmRpbmdzcm9sZSBpbiBwb3B1bGFyICBPY3RvYmVyd2Vic2l0ZSBleHBvc3VyZXVzZWQgdG8gIGNoYW5nZXNvcGVyYXRlZGNsaWNraW5nZW50ZXJpbmdjb21tYW5kc2luZm9ybWVkIG51bWJlcnMgIDwvZGl2PmNyZWF0aW5nb25TdWJtaXRtYXJ5bGFuZGNvbGxlZ2VzYW5hbHl0aWNsaXN0aW5nc2NvbnRhY3QubG9nZ2VkSW5hZHZpc29yeXNpYmxpbmdzY29udGVudFwicyZxdW90OylzLiBUaGlzIHBhY2thZ2VzY2hlY2tib3hzdWdnZXN0c3ByZWduYW50dG9tb3Jyb3dzcGFjaW5nPWljb24ucG5namFwYW5lc2Vjb2RlYmFzZWJ1dHRvblwiPmdhbWJsaW5nc3VjaCBhcyAsIHdoaWxlIDwvc3Bhbj4gbWlzc291cmlzcG9ydGluZ3RvcDoxcHggLjwvc3Bhbj50ZW5zaW9uc3dpZHRoPVwiMmxhenlsb2Fkbm92ZW1iZXJ1c2VkIGluIGhlaWdodD1cImNyaXB0XCI+XG4mbmJzcDs8Lzx0cj48dGQgaGVpZ2h0OjIvcHJvZHVjdGNvdW50cnkgaW5jbHVkZSBmb290ZXJcIiAmbHQ7IS0tIHRpdGxlXCI+PC9qcXVlcnkuPC9mb3JtPlxuKGcuXHUwMDAwZD1cdTAwMTMpKGc5XHUwMDAxaStcdTAwMTQpaHJ2YXRza2lpdGFsaWFub3JvbUNcIm5EXHUwMDAzdEM8cmtDJ2VYJ1gxWC9ZXHUwMDA4dGFtYmlDKW5ub3RpY2lhc21lbnNhamVzcGVyc29uYXNkZXJlY2hvc25hY2lvbmFsc2VydmljaW9jb250YWN0b3VzdWFyaW9zcHJvZ3JhbWFnb2JpZXJub2VtcHJlc2FzYW51bmNpb3N2YWxlbmNpYWNvbG9tYmlhZGVzcHVDKXNkZXBvcnRlc3Byb3llY3RvcHJvZHVjdG9wQzpibGljb25vc290cm9zaGlzdG9yaWFwcmVzZW50ZW1pbGxvbmVzbWVkaWFudGVwcmVndW50YWFudGVyaW9ycmVjdXJzb3Nwcm9ibGVtYXNhbnRpYWdvbnVlc3Ryb3NvcGluaUMzbmltcHJpbWlybWllbnRyYXNhbUMpcmljYXZlbmRlZG9yc29jaWVkYWRyZXNwZWN0b3JlYWxpemFycmVnaXN0cm9wYWxhYnJhc2ludGVyQylzZW50b25jZXNlc3BlY2lhbG1pZW1icm9zcmVhbGlkYWRjQzNyZG9iYXphcmFnb3phcEMhZ2luYXNzb2NpYWxlc2Jsb3F1ZWFyZ2VzdGlDM25hbHF1aWxlcnNpc3RlbWFzY2llbmNpYXNjb21wbGV0b3ZlcnNpQzNuY29tcGxldGFlc3R1ZGlvc3BDOmJsaWNhb2JqZXRpdm9hbGljYW50ZWJ1c2NhZG9yY2FudGlkYWRlbnRyYWRhc2FjY2lvbmVzYXJjaGl2b3NzdXBlcmlvcm1heW9yQy1hYWxlbWFuaWFmdW5jaUMzbkM6bHRpbW9zaGFjaWVuZG9hcXVlbGxvc2VkaWNpQzNuZmVybmFuZG9hbWJpZW50ZWZhY2Vib29rbnVlc3RyYXNjbGllbnRlc3Byb2Nlc29zYmFzdGFudGVwcmVzZW50YXJlcG9ydGFyY29uZ3Jlc29wdWJsaWNhcmNvbWVyY2lvY29udHJhdG9qQzN2ZW5lc2Rpc3RyaXRvdEMpY25pY2Fjb25qdW50b2VuZXJnQy1hdHJhYmFqYXJhc3R1cmlhc3JlY2llbnRldXRpbGl6YXJib2xldEMtbnNhbHZhZG9yY29ycmVjdGF0cmFiYWpvc3ByaW1lcm9zbmVnb2Npb3NsaWJlcnRhZGRldGFsbGVzcGFudGFsbGFwckMzeGltb2FsbWVyQy1hYW5pbWFsZXNxdWlDKW5lc2NvcmF6QzNuc2VjY2lDM25idXNjYW5kb29wY2lvbmVzZXh0ZXJpb3Jjb25jZXB0b3RvZGF2Qy1hZ2FsZXJDLWFlc2NyaWJpcm1lZGljaW5hbGljZW5jaWFjb25zdWx0YWFzcGVjdG9zY3JDLXRpY2FkQzNsYXJlc2p1c3RpY2lhZGViZXJDIW5wZXJDLW9kb25lY2VzaXRhbWFudGVuZXJwZXF1ZUMxb3JlY2liaWRhdHJpYnVuYWx0ZW5lcmlmZWNhbmNpQzNuY2FuYXJpYXNkZXNjYXJnYWRpdmVyc29zbWFsbG9yY2FyZXF1aWVyZXRDKWNuaWNvZGViZXJDLWF2aXZpZW5kYWZpbmFuemFzYWRlbGFudGVmdW5jaW9uYWNvbnNlam9zZGlmQy1jaWxjaXVkYWRlc2FudGlndWFzYXZhbnphZGF0QylybWlub3VuaWRhZGVzc0MhbmNoZXpjYW1wYUMxYXNvZnRvbmljcmV2aXN0YXNjb250aWVuZXNlY3RvcmVzbW9tZW50b3NmYWN1bHRhZGNyQylkaXRvZGl2ZXJzYXNzdXB1ZXN0b2ZhY3RvcmVzc2VndW5kb3NwZXF1ZUMxYVAzUD5QNFAwUDVRXHUwMDAxUDtQOFA1UVx1MDAwMVFcdTAwMDJRXHUwMDBDUDFRXHUwMDBCUDtQPlAxUVx1MDAwQlFcdTAwMDJRXHUwMDBDUVxyUVx1MDAwMlA+UDxQXHUwMDE1UVx1MDAwMVA7UDhRXHUwMDAyUD5QM1A+UDxQNVA9UVx1MDAwRlAyUVx1MDAwMVA1UVx1MDAwNVFcclFcdTAwMDJQPlA5UDRQMFA2UDVQMVFcdTAwMEJQO1A4UDNQPlA0UVx1MDAwM1A0UDVQPVFcdTAwMENRXHJRXHUwMDAyUD5RXHUwMDAyUDFRXHUwMDBCUDtQMFFcdTAwMDFQNVAxUVx1MDAwRlA+UDRQOFA9UVx1MDAwMVA1UDFQNVA9UDBQNFA+UVx1MDAwMVAwUDlRXHUwMDAyUVx1MDAwNFA+UVx1MDAwMlA+UD1QNVAzUD5RXHUwMDAxUDJQPlA4UVx1MDAwMVAyUD5QOVA4UDNRXHUwMDAwUVx1MDAwQlFcdTAwMDJQPlA2UDVQMlFcdTAwMDFQNVA8UVx1MDAwMVAyUD5RXHUwMDBFUDtQOFFcdTAwMDhRXHUwMDBDUVxyUVx1MDAwMlA4UVx1MDAwNVA/UD5QOlAwUDRQPVA1UDlQNFA+UDxQMFA8UDhRXHUwMDAwUDBQO1A4UDFQPlFcdTAwMDJQNVA8UVx1MDAwM1FcdTAwMDVQPlFcdTAwMDJRXHUwMDBGUDRQMlFcdTAwMDNRXHUwMDA1UVx1MDAwMVA1UVx1MDAwMlA4UDtRXHUwMDBFUDRQOFA0UDVQO1A+UDxQOFFcdTAwMDBQNVFcdTAwMDJQNVAxUVx1MDAwRlFcdTAwMDFQMlA+UDVQMlA4UDRQNVFcdTAwMDdQNVAzUD5RXHJRXHUwMDAyUDhQPFFcdTAwMDFRXHUwMDA3UDVRXHUwMDAyUVx1MDAwMlA1UDxRXHUwMDBCUVx1MDAwNlA1UD1RXHUwMDBCUVx1MDAwMVFcdTAwMDJQMFA7UDJQNVA0UVx1MDAwQ1FcdTAwMDJQNVA8UDVQMlA+UDRRXHUwMDBCUVx1MDAwMlA1UDFQNVAyUVx1MDAwQlFcdTAwMDhQNVA9UDBQPFA4UVx1MDAwMlA4UD9QMFFcdTAwMDJQPlA8UVx1MDAwM1A/UVx1MDAwMFAwUDJQO1A4UVx1MDAwNlAwUD5QNFA9UDBQM1A+UDRRXHUwMDBCUDdQPVAwUVx1MDAwRVA8UD5QM1FcdTAwMDNQNFFcdTAwMDBRXHUwMDAzUDNQMlFcdTAwMDFQNVA5UDhQNFA1UVx1MDAwMlA6UDhQPVA+UD5QNFA9UD5QNFA1UDtQMFA0UDVQO1A1UVx1MDAwMVFcdTAwMDBQPlA6UDhRXHUwMDBFUD1RXHUwMDBGUDJQNVFcdTAwMDFRXHUwMDBDUFx1MDAxNVFcdTAwMDFRXHUwMDAyUVx1MDAwQ1FcdTAwMDBQMFA3UDBQPVAwUVx1MDAwOFA4WCdZXHUwMDA0WVx1MDAwNFlcdTAwMDdYJ1lcdTAwMDRYKllcblgsWVx1MDAwNVlcblg5WC5YJ1g1WClYJ1lcdTAwMDRYMFlcblg5WVx1MDAwNFlcbllcdTAwMDdYLFgvWVxuWC9YJ1lcdTAwMDRYXCJZXHUwMDA2WCdZXHUwMDA0WDFYL1gqWC1ZXHUwMDAzWVx1MDAwNVg1WVx1MDAwMVgtWClZXHUwMDAzWCdZXHUwMDA2WCpYJ1lcdTAwMDRZXHUwMDA0WVxuWVxuWVx1MDAwM1lcdTAwMDhZXHUwMDA2WDRYKFlcdTAwMDNYKVlcdTAwMDFZXG5ZXHUwMDA3WCdYKFlcdTAwMDZYJ1gqWC1ZXHUwMDA4WCdYIVgjWVx1MDAwM1grWDFYLllcdTAwMDRYJ1lcdTAwMDRYJ1lcdTAwMDRYLVgoWC9ZXHUwMDA0WVxuWVx1MDAwNFgvWDFZXHUwMDA4WDNYJ1g2WDpYN1gqWVx1MDAwM1lcdTAwMDhZXHUwMDA2WVx1MDAwN1lcdTAwMDZYJ1lcdTAwMDNYM1gnWC1YKVlcdTAwMDZYJ1gvWVxuWCdZXHUwMDA0WDdYKFg5WVx1MDAwNFlcbllcdTAwMDNYNFlcdTAwMDNYMVgnWVxuWVx1MDAwNVlcdTAwMDNZXHUwMDA2WVx1MDAwNVlcdTAwMDZZXHUwMDA3WCdYNFgxWVx1MDAwM1gpWDFYJllcblgzWVx1MDAwNlg0WVxuWDdZXHUwMDA1WCdYMFgnWCdZXHUwMDA0WVx1MDAwMVlcdTAwMDZYNFgoWCdYKFgqWDlYKFgxWDFYLVlcdTAwMDVYKVlcdTAwMDNYJ1lcdTAwMDFYKVlcbllcdTAwMDJZXHUwMDA4WVx1MDAwNFlcdTAwMDVYMVlcdTAwMDNYMllcdTAwMDNZXHUwMDA0WVx1MDAwNVgpWCNYLVlcdTAwMDVYL1lcdTAwMDJZXHUwMDA0WChZXG5ZXG5YOVlcdTAwMDZZXG5YNVlcdTAwMDhYMVgpWDdYMVlcbllcdTAwMDJYNFgnWDFZXHUwMDAzWCxZXHUwMDA4WCdZXHUwMDA0WCNYLlgxWVx0WVx1MDAwNVg5WVx1MDAwNlgnWCdYKFgtWCtYOVgxWVx1MDAwOFg2WChYNFlcdTAwMDNZXHUwMDA0WVx1MDAwNVgzWCxZXHUwMDA0WChZXHUwMDA2WCdZXHUwMDA2WC5YJ1lcdTAwMDRYL1lcdTAwMDNYKlgnWChZXHUwMDAzWVx1MDAwNFlcblgpWChYL1lcdTAwMDhZXHUwMDA2WCNZXG5YNlgnWVxuWVx1MDAwOFgsWC9ZXHUwMDAxWDFZXG5ZXHUwMDAyWVx1MDAwM1gqWChYKlgjWVx1MDAwMVg2WVx1MDAwNFlcdTAwMDVYN1goWC5YJ1lcdTAwMDNYK1gxWChYJ1gxWVx1MDAwM1gnWVx1MDAwMVg2WVx1MDAwNFgnWC1ZXHUwMDA0WVx0WVx1MDAwNllcdTAwMDFYM1lcdTAwMDdYI1lcblgnWVx1MDAwNVgxWC9ZXHUwMDA4WC9YI1lcdTAwMDZZXHUwMDA3WCdYL1lcbllcdTAwMDZYJ1gnWVx1MDAwNFgnWVx1MDAwNllcdTAwMDVYOVgxWDZYKlg5WVx1MDAwNFlcdTAwMDVYL1gnWC5ZXHUwMDA0WVx1MDAwNVlcdTAwMDVZXHUwMDAzWVx1MDAwNlx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwNFx1MDAwMFx1MDAwNFx1MDAwMFx1MDAwNFx1MDAwMFx1MDAwNFx1MDAwMFx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1x1MDAwN1x1MDAwNlx1MDAwNVx1MDAwNFx1MDAwM1x1MDAwMlx1MDAwMVx1MDAwMFx1MDAwOFx0XG5cdTAwMEJcdTAwMENcclx1MDAwRVx1MDAwRlx1MDAwRlx1MDAwRVxyXHUwMDBDXHUwMDBCXG5cdFx1MDAwOFx1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxN1x1MDAxNlx1MDAxNVx1MDAxNFx1MDAxM1x1MDAxMlx1MDAxMVx1MDAxMFx1MDAxOFx1MDAxOVx1MDAxQVx1MDAxQlx1MDAxQ1x1MDAxRFx1MDAxRVx1MDAxRlx1MDAxRlx1MDAxRVx1MDAxRFx1MDAxQ1x1MDAxQlx1MDAxQVx1MDAxOVx1MDAxOFx1MDA3Rlx1MDA3Rlx1MDA3Rlx1MDA3Rlx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMFx1MDA3Rlx1MDA3Rlx1MDA3Rlx1MDA3Rlx1MDAwMVx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwM1x1MDAwMFx1MDAwMFx1MDAwMFx1MDA3Rlx1MDA3Rlx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMFx1MDA3Rlx1MDA3Rlx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwOFx1MDAwMFx1MDAwOFx1MDAwMFx1MDAwOFx1MDAwMFx1MDAwOFx1MDAwMFx1MDAwMFx1MDAwMFx1MDAwMVx1MDAwMFx1MDAwMlx1MDAwMFx1MDAwM1x1MDAwMFx1MDAwNFx1MDAwMFx1MDAwNVx1MDAwMFx1MDAwNlx1MDAwMFx1MDAwN3Jlc291cmNlc2NvdW50cmllc3F1ZXN0aW9uc2VxdWlwbWVudGNvbW11bml0eWF2YWlsYWJsZWhpZ2hsaWdodERURC94aHRtbG1hcmtldGluZ2tub3dsZWRnZXNvbWV0aGluZ2NvbnRhaW5lcmRpcmVjdGlvbnN1YnNjcmliZWFkdmVydGlzZWNoYXJhY3RlclwiIHZhbHVlPVwiPC9zZWxlY3Q+QXVzdHJhbGlhXCIgY2xhc3M9XCJzaXR1YXRpb25hdXRob3JpdHlmb2xsb3dpbmdwcmltYXJpbHlvcGVyYXRpb25jaGFsbGVuZ2VkZXZlbG9wZWRhbm9ueW1vdXNmdW5jdGlvbiBmdW5jdGlvbnNjb21wYW5pZXNzdHJ1Y3R1cmVhZ3JlZW1lbnRcIiB0aXRsZT1cInBvdGVudGlhbGVkdWNhdGlvbmFyZ3VtZW50c3NlY29uZGFyeWNvcHlyaWdodGxhbmd1YWdlc2V4Y2x1c2l2ZWNvbmRpdGlvbjwvZm9ybT5cclxuc3RhdGVtZW50YXR0ZW50aW9uQmlvZ3JhcGh5fSBlbHNlIHtcbnNvbHV0aW9uc3doZW4gdGhlIEFuYWx5dGljc3RlbXBsYXRlc2Rhbmdlcm91c3NhdGVsbGl0ZWRvY3VtZW50c3B1Ymxpc2hlcmltcG9ydGFudHByb3RvdHlwZWluZmx1ZW5jZSZyYXF1bzs8L2VmZmVjdGl2ZWdlbmVyYWxseXRyYW5zZm9ybWJlYXV0aWZ1bHRyYW5zcG9ydG9yZ2FuaXplZHB1Ymxpc2hlZHByb21pbmVudHVudGlsIHRoZXRodW1ibmFpbE5hdGlvbmFsIC5mb2N1cygpO292ZXIgdGhlIG1pZ3JhdGlvbmFubm91bmNlZGZvb3RlclwiPlxuZXhjZXB0aW9ubGVzcyB0aGFuZXhwZW5zaXZlZm9ybWF0aW9uZnJhbWV3b3JrdGVycml0b3J5bmRpY2F0aW9uY3VycmVudGx5Y2xhc3NOYW1lY3JpdGljaXNtdHJhZGl0aW9uZWxzZXdoZXJlQWxleGFuZGVyYXBwb2ludGVkbWF0ZXJpYWxzYnJvYWRjYXN0bWVudGlvbmVkYWZmaWxpYXRlPC9vcHRpb24+dHJlYXRtZW50ZGlmZmVyZW50L2RlZmF1bHQuUHJlc2lkZW50b25jbGljaz1cImJpb2dyYXBoeW90aGVyd2lzZXBlcm1hbmVudEZyYW5DJ2Fpc0hvbGx5d29vZGV4cGFuc2lvbnN0YW5kYXJkczwvc3R5bGU+XG5yZWR1Y3Rpb25EZWNlbWJlciBwcmVmZXJyZWRDYW1icmlkZ2VvcHBvbmVudHNCdXNpbmVzcyBjb25mdXNpb24+XG48dGl0bGU+cHJlc2VudGVkZXhwbGFpbmVkZG9lcyBub3Qgd29ybGR3aWRlaW50ZXJmYWNlcG9zaXRpb25zbmV3c3BhcGVyPC90YWJsZT5cbm1vdW50YWluc2xpa2UgdGhlIGVzc2VudGlhbGZpbmFuY2lhbHNlbGVjdGlvbmFjdGlvbj1cIi9hYmFuZG9uZWRFZHVjYXRpb25wYXJzZUludChzdGFiaWxpdHl1bmFibGUgdG88L3RpdGxlPlxucmVsYXRpb25zTm90ZSB0aGF0ZWZmaWNpZW50cGVyZm9ybWVkdHdvIHllYXJzU2luY2UgdGhldGhlcmVmb3Jld3JhcHBlclwiPmFsdGVybmF0ZWluY3JlYXNlZEJhdHRsZSBvZnBlcmNlaXZlZHRyeWluZyB0b25lY2Vzc2FyeXBvcnRyYXllZGVsZWN0aW9uc0VsaXphYmV0aDwvaWZyYW1lPmRpc2NvdmVyeWluc3VyYW5jZXMubGVuZ3RoO2xlZ2VuZGFyeUdlb2dyYXBoeWNhbmRpZGF0ZWNvcnBvcmF0ZXNvbWV0aW1lc3NlcnZpY2VzLmluaGVyaXRlZDwvc3Ryb25nPkNvbW11bml0eXJlbGlnaW91c2xvY2F0aW9uc0NvbW1pdHRlZWJ1aWxkaW5nc3RoZSB3b3JsZG5vIGxvbmdlcmJlZ2lubmluZ3JlZmVyZW5jZWNhbm5vdCBiZWZyZXF1ZW5jeXR5cGljYWxseWludG8gdGhlIHJlbGF0aXZlO3JlY29yZGluZ3ByZXNpZGVudGluaXRpYWxseXRlY2huaXF1ZXRoZSBvdGhlcml0IGNhbiBiZWV4aXN0ZW5jZXVuZGVybGluZXRoaXMgdGltZXRlbGVwaG9uZWl0ZW1zY29wZXByYWN0aWNlc2FkdmFudGFnZSk7cmV0dXJuIEZvciBvdGhlcnByb3ZpZGluZ2RlbW9jcmFjeWJvdGggdGhlIGV4dGVuc2l2ZXN1ZmZlcmluZ3N1cHBvcnRlZGNvbXB1dGVycyBmdW5jdGlvbnByYWN0aWNhbHNhaWQgdGhhdGl0IG1heSBiZUVuZ2xpc2g8L2Zyb20gdGhlIHNjaGVkdWxlZGRvd25sb2FkczwvbGFiZWw+XG5zdXNwZWN0ZWRtYXJnaW46IDBzcGlyaXR1YWw8L2hlYWQ+XG5cbm1pY3Jvc29mdGdyYWR1YWxseWRpc2N1c3NlZGhlIGJlY2FtZWV4ZWN1dGl2ZWpxdWVyeS5qc2hvdXNlaG9sZGNvbmZpcm1lZHB1cmNoYXNlZGxpdGVyYWxseWRlc3Ryb3llZHVwIHRvIHRoZXZhcmlhdGlvbnJlbWFpbmluZ2l0IGlzIG5vdGNlbnR1cmllc0phcGFuZXNlIGFtb25nIHRoZWNvbXBsZXRlZGFsZ29yaXRobWludGVyZXN0c3JlYmVsbGlvbnVuZGVmaW5lZGVuY291cmFnZXJlc2l6YWJsZWludm9sdmluZ3NlbnNpdGl2ZXVuaXZlcnNhbHByb3Zpc2lvbihhbHRob3VnaGZlYXR1cmluZ2NvbmR1Y3RlZCksIHdoaWNoIGNvbnRpbnVlZC1oZWFkZXJcIj5GZWJydWFyeSBudW1lcm91cyBvdmVyZmxvdzpjb21wb25lbnRmcmFnbWVudHNleGNlbGxlbnRjb2xzcGFuPVwidGVjaG5pY2FsbmVhciB0aGUgQWR2YW5jZWQgc291cmNlIG9mZXhwcmVzc2VkSG9uZyBLb25nIEZhY2Vib29rbXVsdGlwbGUgbWVjaGFuaXNtZWxldmF0aW9ub2ZmZW5zaXZlPC9mb3JtPlxuXHRzcG9uc29yZWRkb2N1bWVudC5vciAmcXVvdDt0aGVyZSBhcmV0aG9zZSB3aG9tb3ZlbWVudHNwcm9jZXNzZXNkaWZmaWN1bHRzdWJtaXR0ZWRyZWNvbW1lbmRjb252aW5jZWRwcm9tb3RpbmdcIiB3aWR0aD1cIi5yZXBsYWNlKGNsYXNzaWNhbGNvYWxpdGlvbmhpcyBmaXJzdGRlY2lzaW9uc2Fzc2lzdGFudGluZGljYXRlZGV2b2x1dGlvbi13cmFwcGVyXCJlbm91Z2ggdG9hbG9uZyB0aGVkZWxpdmVyZWQtLT5cclxuPCEtLUFtZXJpY2FuIHByb3RlY3RlZE5vdmVtYmVyIDwvc3R5bGU+PGZ1cm5pdHVyZUludGVybmV0ICBvbmJsdXI9XCJzdXNwZW5kZWRyZWNpcGllbnRiYXNlZCBvbiBNb3Jlb3ZlcixhYm9saXNoZWRjb2xsZWN0ZWR3ZXJlIG1hZGVlbW90aW9uYWxlbWVyZ2VuY3luYXJyYXRpdmVhZHZvY2F0ZXNweDtib3JkZXJjb21taXR0ZWRkaXI9XCJsdHJcImVtcGxveWVlc3Jlc2VhcmNoLiBzZWxlY3RlZHN1Y2Nlc3NvcmN1c3RvbWVyc2Rpc3BsYXllZFNlcHRlbWJlcmFkZENsYXNzKEZhY2Vib29rIHN1Z2dlc3RlZGFuZCBsYXRlcm9wZXJhdGluZ2VsYWJvcmF0ZVNvbWV0aW1lc0luc3RpdHV0ZWNlcnRhaW5seWluc3RhbGxlZGZvbGxvd2Vyc0plcnVzYWxlbXRoZXkgaGF2ZWNvbXB1dGluZ2dlbmVyYXRlZHByb3ZpbmNlc2d1YXJhbnRlZWFyYml0cmFyeXJlY29nbml6ZXdhbnRlZCB0b3B4O3dpZHRoOnRoZW9yeSBvZmJlaGF2aW91cldoaWxlIHRoZWVzdGltYXRlZGJlZ2FuIHRvIGl0IGJlY2FtZW1hZ25pdHVkZW11c3QgaGF2ZW1vcmUgdGhhbkRpcmVjdG9yeWV4dGVuc2lvbnNlY3JldGFyeW5hdHVyYWxseW9jY3VycmluZ3ZhcmlhYmxlc2dpdmVuIHRoZXBsYXRmb3JtLjwvbGFiZWw+PGZhaWxlZCB0b2NvbXBvdW5kc2tpbmRzIG9mIHNvY2lldGllc2Fsb25nc2lkZSAtLSZndDtcblxuc291dGh3ZXN0dGhlIHJpZ2h0cmFkaWF0aW9ubWF5IGhhdmUgdW5lc2NhcGUoc3Bva2VuIGluXCIgaHJlZj1cIi9wcm9ncmFtbWVvbmx5IHRoZSBjb21lIGZyb21kaXJlY3RvcnlidXJpZWQgaW5hIHNpbWlsYXJ0aGV5IHdlcmU8L2ZvbnQ+PC9Ob3J3ZWdpYW5zcGVjaWZpZWRwcm9kdWNpbmdwYXNzZW5nZXIobmV3IERhdGV0ZW1wb3JhcnlmaWN0aW9uYWxBZnRlciB0aGVlcXVhdGlvbnNkb3dubG9hZC5yZWd1bGFybHlkZXZlbG9wZXJhYm92ZSB0aGVsaW5rZWQgdG9waGVub21lbmFwZXJpb2Qgb2Z0b29sdGlwXCI+c3Vic3RhbmNlYXV0b21hdGljYXNwZWN0IG9mQW1vbmcgdGhlY29ubmVjdGVkZXN0aW1hdGVzQWlyIEZvcmNlc3lzdGVtIG9mb2JqZWN0aXZlaW1tZWRpYXRlbWFraW5nIGl0cGFpbnRpbmdzY29ucXVlcmVkYXJlIHN0aWxscHJvY2VkdXJlZ3Jvd3RoIG9maGVhZGVkIGJ5RXVyb3BlYW4gZGl2aXNpb25zbW9sZWN1bGVzZnJhbmNoaXNlaW50ZW50aW9uYXR0cmFjdGVkY2hpbGRob29kYWxzbyB1c2VkZGVkaWNhdGVkc2luZ2Fwb3JlZGVncmVlIG9mZmF0aGVyIG9mY29uZmxpY3RzPC9hPjwvcD5cbmNhbWUgZnJvbXdlcmUgdXNlZG5vdGUgdGhhdHJlY2VpdmluZ0V4ZWN1dGl2ZWV2ZW4gbW9yZWFjY2VzcyB0b2NvbW1hbmRlclBvbGl0aWNhbG11c2ljaWFuc2RlbGljaW91c3ByaXNvbmVyc2FkdmVudCBvZlVURi04XCIgLz48IVtDREFUQVtcIj5Db250YWN0U291dGhlcm4gYmdjb2xvcj1cInNlcmllcyBvZi4gSXQgd2FzIGluIEV1cm9wZXBlcm1pdHRlZHZhbGlkYXRlLmFwcGVhcmluZ29mZmljaWFsc3NlcmlvdXNseS1sYW5ndWFnZWluaXRpYXRlZGV4dGVuZGluZ2xvbmctdGVybWluZmxhdGlvbnN1Y2ggdGhhdGdldENvb2tpZW1hcmtlZCBieTwvYnV0dG9uPmltcGxlbWVudGJ1dCBpdCBpc2luY3JlYXNlc2Rvd24gdGhlIHJlcXVpcmluZ2RlcGVuZGVudC0tPlxuPCEtLSBpbnRlcnZpZXdXaXRoIHRoZSBjb3BpZXMgb2Zjb25zZW5zdXN3YXMgYnVpbHRWZW5lenVlbGEoZm9ybWVybHl0aGUgc3RhdGVwZXJzb25uZWxzdHJhdGVnaWNmYXZvdXIgb2ZpbnZlbnRpb25XaWtpcGVkaWFjb250aW5lbnR2aXJ0dWFsbHl3aGljaCB3YXNwcmluY2lwbGVDb21wbGV0ZSBpZGVudGljYWxzaG93IHRoYXRwcmltaXRpdmVhd2F5IGZyb21tb2xlY3VsYXJwcmVjaXNlbHlkaXNzb2x2ZWRVbmRlciB0aGV2ZXJzaW9uPVwiPiZuYnNwOzwvSXQgaXMgdGhlIFRoaXMgaXMgd2lsbCBoYXZlb3JnYW5pc21zc29tZSB0aW1lRnJpZWRyaWNod2FzIGZpcnN0dGhlIG9ubHkgZmFjdCB0aGF0Zm9ybSBpZD1cInByZWNlZGluZ1RlY2huaWNhbHBoeXNpY2lzdG9jY3VycyBpbm5hdmlnYXRvcnNlY3Rpb25cIj5zcGFuIGlkPVwic291Z2h0IHRvYmVsb3cgdGhlc3Vydml2aW5nfTwvc3R5bGU+aGlzIGRlYXRoYXMgaW4gdGhlY2F1c2VkIGJ5cGFydGlhbGx5ZXhpc3RpbmcgdXNpbmcgdGhld2FzIGdpdmVuYSBsaXN0IG9mbGV2ZWxzIG9mbm90aW9uIG9mT2ZmaWNpYWwgZGlzbWlzc2Vkc2NpZW50aXN0cmVzZW1ibGVzZHVwbGljYXRlZXhwbG9zaXZlcmVjb3ZlcmVkYWxsIG90aGVyZ2FsbGVyaWVze3BhZGRpbmc6cGVvcGxlIG9mcmVnaW9uIG9mYWRkcmVzc2VzYXNzb2NpYXRlaW1nIGFsdD1cImluIG1vZGVybnNob3VsZCBiZW1ldGhvZCBvZnJlcG9ydGluZ3RpbWVzdGFtcG5lZWRlZCB0b3RoZSBHcmVhdHJlZ2FyZGluZ3NlZW1lZCB0b3ZpZXdlZCBhc2ltcGFjdCBvbmlkZWEgdGhhdHRoZSBXb3JsZGhlaWdodCBvZmV4cGFuZGluZ1RoZXNlIGFyZWN1cnJlbnRcIj5jYXJlZnVsbHltYWludGFpbnNjaGFyZ2Ugb2ZDbGFzc2ljYWxhZGRyZXNzZWRwcmVkaWN0ZWRvd25lcnNoaXA8ZGl2IGlkPVwicmlnaHRcIj5cclxucmVzaWRlbmNlbGVhdmUgdGhlY29udGVudFwiPmFyZSBvZnRlbiAgfSkoKTtcclxucHJvYmFibHkgUHJvZmVzc29yLWJ1dHRvblwiIHJlc3BvbmRlZHNheXMgdGhhdGhhZCB0byBiZXBsYWNlZCBpbkh1bmdhcmlhbnN0YXR1cyBvZnNlcnZlcyBhc1VuaXZlcnNhbGV4ZWN1dGlvbmFnZ3JlZ2F0ZWZvciB3aGljaGluZmVjdGlvbmFncmVlZCB0b2hvd2V2ZXIsIHBvcHVsYXJcIj5wbGFjZWQgb25jb25zdHJ1Y3RlbGVjdG9yYWxzeW1ib2wgb2ZpbmNsdWRpbmdyZXR1cm4gdG9hcmNoaXRlY3RDaHJpc3RpYW5wcmV2aW91cyBsaXZpbmcgaW5lYXNpZXIgdG9wcm9mZXNzb3JcbiZsdDshLS0gZWZmZWN0IG9mYW5hbHl0aWNzd2FzIHRha2Vud2hlcmUgdGhldG9vayBvdmVyYmVsaWVmIGluQWZyaWthYW5zYXMgZmFyIGFzcHJldmVudGVkd29yayB3aXRoYSBzcGVjaWFsPGZpZWxkc2V0Q2hyaXN0bWFzUmV0cmlldmVkXG5cbkluIHRoZSBiYWNrIGludG9ub3J0aGVhc3RtYWdhemluZXM+PHN0cm9uZz5jb21taXR0ZWVnb3Zlcm5pbmdncm91cHMgb2ZzdG9yZWQgaW5lc3RhYmxpc2hhIGdlbmVyYWxpdHMgZmlyc3R0aGVpciBvd25wb3B1bGF0ZWRhbiBvYmplY3RDYXJpYmJlYW5hbGxvdyB0aGVkaXN0cmljdHN3aXNjb25zaW5sb2NhdGlvbi47IHdpZHRoOiBpbmhhYml0ZWRTb2NpYWxpc3RKYW51YXJ5IDE8L2Zvb3Rlcj5zaW1pbGFybHljaG9pY2Ugb2Z0aGUgc2FtZSBzcGVjaWZpYyBidXNpbmVzcyBUaGUgZmlyc3QubGVuZ3RoOyBkZXNpcmUgdG9kZWFsIHdpdGhzaW5jZSB0aGV1c2VyQWdlbnRjb25jZWl2ZWRpbmRleC5waHBhcyAmcXVvdDtlbmdhZ2UgaW5yZWNlbnRseSxmZXcgeWVhcnN3ZXJlIGFsc29cbjxoZWFkPlxuPGVkaXRlZCBieWFyZSBrbm93bmNpdGllcyBpbmFjY2Vzc2tleWNvbmRlbW5lZGFsc28gaGF2ZXNlcnZpY2VzLGZhbWlseSBvZlNjaG9vbCBvZmNvbnZlcnRlZG5hdHVyZSBvZiBsYW5ndWFnZW1pbmlzdGVyczwvb2JqZWN0PnRoZXJlIGlzIGEgcG9wdWxhcnNlcXVlbmNlc2Fkdm9jYXRlZFRoZXkgd2VyZWFueSBvdGhlcmxvY2F0aW9uPWVudGVyIHRoZW11Y2ggbW9yZXJlZmxlY3RlZHdhcyBuYW1lZG9yaWdpbmFsIGEgdHlwaWNhbHdoZW4gdGhleWVuZ2luZWVyc2NvdWxkIG5vdHJlc2lkZW50c3dlZG5lc2RheXRoZSB0aGlyZCBwcm9kdWN0c0phbnVhcnkgMndoYXQgdGhleWEgY2VydGFpbnJlYWN0aW9uc3Byb2Nlc3NvcmFmdGVyIGhpc3RoZSBsYXN0IGNvbnRhaW5lZFwiPjwvZGl2PlxuPC9hPjwvdGQ+ZGVwZW5kIG9uc2VhcmNoXCI+XG5waWVjZXMgb2Zjb21wZXRpbmdSZWZlcmVuY2V0ZW5uZXNzZWV3aGljaCBoYXMgdmVyc2lvbj08L3NwYW4+IDw8L2hlYWRlcj5naXZlcyB0aGVoaXN0b3JpYW52YWx1ZT1cIlwiPnBhZGRpbmc6MHZpZXcgdGhhdHRvZ2V0aGVyLHRoZSBtb3N0IHdhcyBmb3VuZHN1YnNldCBvZmF0dGFjayBvbmNoaWxkcmVuLHBvaW50cyBvZnBlcnNvbmFsIHBvc2l0aW9uOmFsbGVnZWRseUNsZXZlbGFuZHdhcyBsYXRlcmFuZCBhZnRlcmFyZSBnaXZlbndhcyBzdGlsbHNjcm9sbGluZ2Rlc2lnbiBvZm1ha2VzIHRoZW11Y2ggbGVzc0FtZXJpY2Fucy5cblxuQWZ0ZXIgLCBidXQgdGhlTXVzZXVtIG9mbG91aXNpYW5hKGZyb20gdGhlbWlubmVzb3RhcGFydGljbGVzYSBwcm9jZXNzRG9taW5pY2Fudm9sdW1lIG9mcmV0dXJuaW5nZGVmZW5zaXZlMDBweHxyaWdobWFkZSBmcm9tbW91c2VvdmVyXCIgc3R5bGU9XCJzdGF0ZXMgb2Yod2hpY2ggaXNjb250aW51ZXNGcmFuY2lzY29idWlsZGluZyB3aXRob3V0IGF3aXRoIHNvbWV3aG8gd291bGRhIGZvcm0gb2ZhIHBhcnQgb2ZiZWZvcmUgaXRrbm93biBhcyAgU2VydmljZXNsb2NhdGlvbiBhbmQgb2Z0ZW5tZWFzdXJpbmdhbmQgaXQgaXNwYXBlcmJhY2t2YWx1ZXMgb2ZcclxuPHRpdGxlPj0gd2luZG93LmRldGVybWluZWVyJnF1b3Q7IHBsYXllZCBieWFuZCBlYXJseTwvY2VudGVyPmZyb20gdGhpc3RoZSB0aHJlZXBvd2VyIGFuZG9mICZxdW90O2lubmVySFRNTDxhIGhyZWY9XCJ5OmlubGluZTtDaHVyY2ggb2Z0aGUgZXZlbnR2ZXJ5IGhpZ2hvZmZpY2lhbCAtaGVpZ2h0OiBjb250ZW50PVwiL2NnaS1iaW4vdG8gY3JlYXRlYWZyaWthYW5zZXNwZXJhbnRvZnJhbkMnYWlzbGF0dmllRSF1bGlldHV2aUUzRFx1MDAwQ2VFIXRpbmFEXHJlRSF0aW5hYDlcdTAwMDRgOFx1MDAxN2A4XCJmXHUwMDE3JWZcdTAwMUMsaCpcdTAwMUVnLlx1MDAwMGQ9XHUwMDEzZS1cdTAwMTdnOVx1MDAwMWkrXHUwMDE0ZS1cdTAwMTdtXHUwMDE1XHUwMDFDajUtbFx1MDAxNjRkODpkO1x1MDAwMGQ5XHUwMDA4aC4hZy5cdTAwMTdmXHUwMDFDOmcsXHUwMDE0aC4wZlx1MDAxQyxoKFx1MDAwRWgrXHUwMDE2ZVxyXHUwMDAwZlx1MDAxQ1xyZVxuIWVcdTAwMTkoZDpcdTAwMTJoXHUwMDAxXHUwMDE0Zz1cdTAwMTFmXHUwMDA4P2VcdTAwMUMwZDonZD8xZDlcdTAwMTBpXHUwMDAzKGVcdTAwMDc6Z1x0XHUwMDA4ZyQ+Zlx1MDAwRVx1MDAxMmghXHUwMDBDZiZcdTAwMUNpXHUwMDAzKGhcdTAwMTA9ZiA8aD9cdTAwMUJkOFx1MDAwMGYtJWZcdTAwMTQvZDtcdTAwMThlLlx1MDAxRGkqXHUwMDBDaC9cdTAwMDFnIFx1MDAwMWUnXHUwMDE0ZVx1MDAxMVx1MDAxOGQ8XHUwMDFBZlx1MDAxNTBmXHIuZTpcdTAwMTNmNlx1MDAwOGg0OWhcdTAwMDBcdTAwMDVlXG5cdTAwMUVlXHUwMDA1LGUuJGguKGguOmVcdTAwMEM6ZjcxZVx1MDAxQzNlOFx1MDAwMmZcdTAwMTItZlx1MDAxND5lXHUwMDE5KGVcdTAwMENcdTAwMTdkOixlOFx1MDAwMmUkJ2UtJmdcdTAwMTRcdTAwMUZoNlxuZlx1MDAxRCVoNlxuZy4hZ1x1MDAxMFx1MDAwNmVcdTAwMTFcdTAwMThkPyFmXHUwMDAxL2c9XHUwMDExc2VydmljaW9zYXJ0Qy1jdWxvYXJnZW50aW5hYmFyY2Vsb25hY3VhbHF1aWVycHVibGljYWRvcHJvZHVjdG9zcG9sQy10aWNhcmVzcHVlc3Rhd2lraXBlZGlhc2lndWllbnRlYkM6c3F1ZWRhY29tdW5pZGFkc2VndXJpZGFkcHJpbmNpcGFscHJlZ3VudGFzY29udGVuaWRvcmVzcG9uZGVydmVuZXp1ZWxhcHJvYmxlbWFzZGljaWVtYnJlcmVsYWNpQzNubm92aWVtYnJlc2ltaWxhcmVzcHJveWVjdG9zcHJvZ3JhbWFzaW5zdGl0dXRvYWN0aXZpZGFkZW5jdWVudHJhZWNvbm9tQy1haW1DIWdlbmVzY29udGFjdGFyZGVzY2FyZ2FybmVjZXNhcmlvYXRlbmNpQzNudGVsQylmb25vY29taXNpQzNuY2FuY2lvbmVzY2FwYWNpZGFkZW5jb250cmFyYW5DIWxpc2lzZmF2b3JpdG9zdEMpcm1pbm9zcHJvdmluY2lhZXRpcXVldGFzZWxlbWVudG9zZnVuY2lvbmVzcmVzdWx0YWRvY2FyQyFjdGVycHJvcGllZGFkcHJpbmNpcGlvbmVjZXNpZGFkbXVuaWNpcGFsY3JlYWNpQzNuZGVzY2FyZ2FzcHJlc2VuY2lhY29tZXJjaWFsb3BpbmlvbmVzZWplcmNpY2lvZWRpdG9yaWFsc2FsYW1hbmNhZ29uekMhbGV6ZG9jdW1lbnRvcGVsQy1jdWxhcmVjaWVudGVzZ2VuZXJhbGVzdGFycmFnb25hcHJDIWN0aWNhbm92ZWRhZGVzcHJvcHVlc3RhcGFjaWVudGVzdEMpY25pY2Fzb2JqZXRpdm9zY29udGFjdG9zYCQuYCVcdTAwMDdgJFx1MDAwMmAkMmAkP2AkXHUwMDBGYCQ5YCVcdTAwMDhgJFx1MDAwMmAkXHUwMDE3YCQvYCQ+YCQ4YCQ+YCQlYCRcdTAwMEZgJDVgJFx1MDAwMmAkMGAkOWAlXHUwMDA3YCRcdTAwMTVgJVx1MDAwQmAkXHUwMDA4YCRcdTAwMTVgJVx1MDAwMWAkXHUwMDFCYCQwYCQ5YCQ+YCQsYCQ+YCQmYCRcdTAwMTVgJDlgJD5gJDhgJC1gJVx1MDAwMGAkOWAlXHUwMDAxYCRcdTAwMEZgJDBgJDlgJVx1MDAwMGAkLmAlXHUwMDA4YCRcdTAwMDJgJCZgJD9gJChgJCxgJD5gJCRkaXBsb2RvY3NgJDhgJC5gJC9gJDBgJVx1MDAwMmAkKmAkKGAkPmAkLmAkKmAkJGAkPmAkK2AkP2AkMGAkXHUwMDE0YCQ4YCQkYCQkYCQwYCQ5YCQyYCVcdTAwMEJgJFx1MDAxN2AkOWAlXHUwMDAxYCRcdTAwMDZgJCxgJD5gJDBgJCZgJVx1MDAwN2AkNmAkOWAlXHUwMDAxYCRcdTAwMDhgJFx1MDAxNmAlXHUwMDA3YCQyYCQvYCQmYCQ/YCRcdTAwMTVgJD5gJC5gJDVgJVx1MDAwN2AkLGAkJGAlXHUwMDAwYCQoYCQsYCVcdTAwMDBgJFx1MDAxQWAkLmAlXHUwMDBDYCQkYCQ4YCQ+YCQyYCQyYCVcdTAwMDdgJFx1MDAxNmAkXHUwMDFDYCVcdGAkLGAkLmAkJmAkJmAkJGAkJWAkPmAkKGAkOWAlXHUwMDAwYCQ2YCQ5YCQwYCRcdTAwMDVgJDJgJFx1MDAxN2AkXHUwMDE1YCQtYCVcdTAwMDBgJChgJFx1MDAxN2AkMGAkKmAkPmAkOGAkMGAkPmAkJGAkXHUwMDE1YCQ/YCRcdTAwMEZgJFx0YCQ4YCVcdTAwMDdgJFx1MDAxN2AkL2AlXHUwMDAwYCQ5YCVcdTAwMDJgJFx1MDAwMWAkXHUwMDA2YCRcdTAwMTdgJVx1MDAwN2AkXHUwMDFGYCVcdTAwMDBgJC5gJFx1MDAxNmAlXHUwMDBCYCRcdTAwMUNgJFx1MDAxNWAkPmAkMGAkXHUwMDA1YCQtYCVcdTAwMDBgJFx1MDAxN2AkL2AlXHUwMDA3YCQkYCVcdTAwMDFgJC5gJDVgJVx1MDAwQmAkXHUwMDFGYCQmYCVcdTAwMDdgJFx1MDAwMmAkXHUwMDA1YCRcdTAwMTdgJDBgJFx1MDAxMGAkOGAlXHUwMDA3YCQuYCVcdTAwMDdgJDJgJDJgJFx1MDAxN2AkPmAkOWAkPmAkMmAkXG5gJCpgJDBgJFx1MDAxQWAkPmAkMGAkXHUwMDEwYCQ4YCQ+YCQmYCVcdTAwMDdgJDBgJFx1MDAxQ2AkP2AkOGAkJmAkP2AkMmAkLGAkXHUwMDAyYCQmYCQsYCQoYCQ+YCQ5YCVcdTAwMDJgJFx1MDAwMmAkMmAkPmAkXHUwMDE2YCRcdTAwMUNgJVx1MDAwMGAkJGAkLGAkXHUwMDFGYCQoYCQuYCQ/YCQyYCRcdTAwMDdgJDhgJVx1MDAwN2AkXHUwMDA2YCQoYCVcdTAwMDdgJChgJC9gJD5gJFx1MDAxNWAlXHUwMDAxYCQyYCQyYCVcdGAkXHUwMDE3YCQtYCQ+YCRcdTAwMTdgJDBgJVx1MDAwN2AkMmAkXHUwMDFDYCRcdTAwMTdgJDlgJDBgJD5gJC5gJDJgJFx1MDAxN2AlXHUwMDA3YCQqYCVcdTAwMDdgJFx1MDAxQ2AkOWAkPmAkJWAkXHUwMDA3YCQ4YCVcdTAwMDBgJDhgJDlgJVx1MDAwMGAkXHUwMDE1YCQyYCQ+YCQgYCVcdTAwMDBgJFx1MDAxNWAkOWAkPmAkXHUwMDAxYCQmYCVcdTAwMDJgJDBgJCRgJDlgJCRgJDhgJD5gJCRgJC9gJD5gJCZgJFx1MDAwNmAkL2AkPmAkKmAkPmAkXHUwMDE1YCRcdTAwMTVgJVx1MDAwQ2AkKGAkNmAkPmAkLmAkJmAlXHUwMDA3YCRcdTAwMTZgJC9gJDlgJVx1MDAwMGAkMGAkPmAkL2AkXHUwMDE2YCVcdTAwMDFgJCZgJDJgJFx1MDAxN2AlXHUwMDAwY2F0ZWdvcmllc2V4cGVyaWVuY2U8L3RpdGxlPlxyXG5Db3B5cmlnaHQgamF2YXNjcmlwdGNvbmRpdGlvbnNldmVyeXRoaW5nPHAgY2xhc3M9XCJ0ZWNobm9sb2d5YmFja2dyb3VuZDxhIGNsYXNzPVwibWFuYWdlbWVudCZjb3B5OyAyMDFqYXZhU2NyaXB0Y2hhcmFjdGVyc2JyZWFkY3J1bWJ0aGVtc2VsdmVzaG9yaXpvbnRhbGdvdmVybm1lbnRDYWxpZm9ybmlhYWN0aXZpdGllc2Rpc2NvdmVyZWROYXZpZ2F0aW9udHJhbnNpdGlvbmNvbm5lY3Rpb25uYXZpZ2F0aW9uYXBwZWFyYW5jZTwvdGl0bGU+PG1jaGVja2JveFwiIHRlY2huaXF1ZXNwcm90ZWN0aW9uYXBwYXJlbnRseWFzIHdlbGwgYXN1bnQnLCAnVUEtcmVzb2x1dGlvbm9wZXJhdGlvbnN0ZWxldmlzaW9udHJhbnNsYXRlZFdhc2hpbmd0b25uYXZpZ2F0b3IuID0gd2luZG93LmltcHJlc3Npb24mbHQ7YnImZ3Q7bGl0ZXJhdHVyZXBvcHVsYXRpb25iZ2NvbG9yPVwiI2VzcGVjaWFsbHkgY29udGVudD1cInByb2R1Y3Rpb25uZXdzbGV0dGVycHJvcGVydGllc2RlZmluaXRpb25sZWFkZXJzaGlwVGVjaG5vbG9neVBhcmxpYW1lbnRjb21wYXJpc29udWwgY2xhc3M9XCIuaW5kZXhPZihcImNvbmNsdXNpb25kaXNjdXNzaW9uY29tcG9uZW50c2Jpb2xvZ2ljYWxSZXZvbHV0aW9uX2NvbnRhaW5lcnVuZGVyc3Rvb2Rub3NjcmlwdD48cGVybWlzc2lvbmVhY2ggb3RoZXJhdG1vc3BoZXJlIG9uZm9jdXM9XCI8Zm9ybSBpZD1cInByb2Nlc3Npbmd0aGlzLnZhbHVlZ2VuZXJhdGlvbkNvbmZlcmVuY2VzdWJzZXF1ZW50d2VsbC1rbm93bnZhcmlhdGlvbnNyZXB1dGF0aW9ucGhlbm9tZW5vbmRpc2NpcGxpbmVsb2dvLnBuZ1wiIChkb2N1bWVudCxib3VuZGFyaWVzZXhwcmVzc2lvbnNldHRsZW1lbnRCYWNrZ3JvdW5kb3V0IG9mIHRoZWVudGVycHJpc2UoXCJodHRwczpcIiB1bmVzY2FwZShcInBhc3N3b3JkXCIgZGVtb2NyYXRpYzxhIGhyZWY9XCIvd3JhcHBlclwiPlxubWVtYmVyc2hpcGxpbmd1aXN0aWNweDtwYWRkaW5ncGhpbG9zb3BoeWFzc2lzdGFuY2V1bml2ZXJzaXR5ZmFjaWxpdGllc3JlY29nbml6ZWRwcmVmZXJlbmNlaWYgKHR5cGVvZm1haW50YWluZWR2b2NhYnVsYXJ5aHlwb3RoZXNpcy5zdWJtaXQoKTsmYW1wO25ic3A7YW5ub3RhdGlvbmJlaGluZCB0aGVGb3VuZGF0aW9ucHVibGlzaGVyXCJhc3N1bXB0aW9uaW50cm9kdWNlZGNvcnJ1cHRpb25zY2llbnRpc3RzZXhwbGljaXRseWluc3RlYWQgb2ZkaW1lbnNpb25zIG9uQ2xpY2s9XCJjb25zaWRlcmVkZGVwYXJ0bWVudG9jY3VwYXRpb25zb29uIGFmdGVyaW52ZXN0bWVudHByb25vdW5jZWRpZGVudGlmaWVkZXhwZXJpbWVudE1hbmFnZW1lbnRnZW9ncmFwaGljXCIgaGVpZ2h0PVwibGluayByZWw9XCIucmVwbGFjZSgvZGVwcmVzc2lvbmNvbmZlcmVuY2VwdW5pc2htZW50ZWxpbWluYXRlZHJlc2lzdGFuY2VhZGFwdGF0aW9ub3Bwb3NpdGlvbndlbGwga25vd25zdXBwbGVtZW50ZGV0ZXJtaW5lZGgxIGNsYXNzPVwiMHB4O21hcmdpbm1lY2hhbmljYWxzdGF0aXN0aWNzY2VsZWJyYXRlZEdvdmVybm1lbnRcblxuRHVyaW5nIHRkZXZlbG9wZXJzYXJ0aWZpY2lhbGVxdWl2YWxlbnRvcmlnaW5hdGVkQ29tbWlzc2lvbmF0dGFjaG1lbnQ8c3BhbiBpZD1cInRoZXJlIHdlcmVOZWRlcmxhbmRzYmV5b25kIHRoZXJlZ2lzdGVyZWRqb3VybmFsaXN0ZnJlcXVlbnRseWFsbCBvZiB0aGVsYW5nPVwiZW5cIiA8L3N0eWxlPlxyXG5hYnNvbHV0ZTsgc3VwcG9ydGluZ2V4dHJlbWVseSBtYWluc3RyZWFtPC9zdHJvbmc+IHBvcHVsYXJpdHllbXBsb3ltZW50PC90YWJsZT5cclxuIGNvbHNwYW49XCI8L2Zvcm0+XG4gIGNvbnZlcnNpb25hYm91dCB0aGUgPC9wPjwvZGl2PmludGVncmF0ZWRcIiBsYW5nPVwiZW5Qb3J0dWd1ZXNlc3Vic3RpdHV0ZWluZGl2aWR1YWxpbXBvc3NpYmxlbXVsdGltZWRpYWFsbW9zdCBhbGxweCBzb2xpZCAjYXBhcnQgZnJvbXN1YmplY3QgdG9pbiBFbmdsaXNoY3JpdGljaXplZGV4Y2VwdCBmb3JndWlkZWxpbmVzb3JpZ2luYWxseXJlbWFya2FibGV0aGUgc2Vjb25kaDIgY2xhc3M9XCI8YSB0aXRsZT1cIihpbmNsdWRpbmdwYXJhbWV0ZXJzcHJvaGliaXRlZD0gXCJodHRwOi8vZGljdGlvbmFyeXBlcmNlcHRpb25yZXZvbHV0aW9uZm91bmRhdGlvbnB4O2hlaWdodDpzdWNjZXNzZnVsc3VwcG9ydGVyc21pbGxlbm5pdW1oaXMgZmF0aGVydGhlICZxdW90O25vLXJlcGVhdDtjb21tZXJjaWFsaW5kdXN0cmlhbGVuY291cmFnZWRhbW91bnQgb2YgdW5vZmZpY2lhbGVmZmljaWVuY3lSZWZlcmVuY2VzY29vcmRpbmF0ZWRpc2NsYWltZXJleHBlZGl0aW9uZGV2ZWxvcGluZ2NhbGN1bGF0ZWRzaW1wbGlmaWVkbGVnaXRpbWF0ZXN1YnN0cmluZygwXCIgY2xhc3M9XCJjb21wbGV0ZWx5aWxsdXN0cmF0ZWZpdmUgeWVhcnNpbnN0cnVtZW50UHVibGlzaGluZzFcIiBjbGFzcz1cInBzeWNob2xvZ3ljb25maWRlbmNlbnVtYmVyIG9mIGFic2VuY2Ugb2Zmb2N1c2VkIG9uam9pbmVkIHRoZXN0cnVjdHVyZXNwcmV2aW91c2x5PjwvaWZyYW1lPm9uY2UgYWdhaW5idXQgcmF0aGVyaW1taWdyYW50c29mIGNvdXJzZSxhIGdyb3VwIG9mTGl0ZXJhdHVyZVVubGlrZSB0aGU8L2E+Jm5ic3A7XG5mdW5jdGlvbiBpdCB3YXMgdGhlQ29udmVudGlvbmF1dG9tb2JpbGVQcm90ZXN0YW50YWdncmVzc2l2ZWFmdGVyIHRoZSBTaW1pbGFybHksXCIgLz48L2Rpdj5jb2xsZWN0aW9uXHJcbmZ1bmN0aW9udmlzaWJpbGl0eXRoZSB1c2Ugb2Z2b2x1bnRlZXJzYXR0cmFjdGlvbnVuZGVyIHRoZSB0aHJlYXRlbmVkKjwhW0NEQVRBW2ltcG9ydGFuY2VpbiBnZW5lcmFsdGhlIGxhdHRlcjwvZm9ybT5cbjwvLmluZGV4T2YoJ2kgPSAwOyBpIDxkaWZmZXJlbmNlZGV2b3RlZCB0b3RyYWRpdGlvbnNzZWFyY2ggZm9ydWx0aW1hdGVseXRvdXJuYW1lbnRhdHRyaWJ1dGVzc28tY2FsbGVkIH1cbjwvc3R5bGU+ZXZhbHVhdGlvbmVtcGhhc2l6ZWRhY2Nlc3NpYmxlPC9zZWN0aW9uPnN1Y2Nlc3Npb25hbG9uZyB3aXRoTWVhbndoaWxlLGluZHVzdHJpZXM8L2E+PGJyIC8+aGFzIGJlY29tZWFzcGVjdHMgb2ZUZWxldmlzaW9uc3VmZmljaWVudGJhc2tldGJhbGxib3RoIHNpZGVzY29udGludWluZ2FuIGFydGljbGU8aW1nIGFsdD1cImFkdmVudHVyZXNoaXMgbW90aGVybWFuY2hlc3RlcnByaW5jaXBsZXNwYXJ0aWN1bGFyY29tbWVudGFyeWVmZmVjdHMgb2ZkZWNpZGVkIHRvXCI+PHN0cm9uZz5wdWJsaXNoZXJzSm91cm5hbCBvZmRpZmZpY3VsdHlmYWNpbGl0YXRlYWNjZXB0YWJsZXN0eWxlLmNzc1wiXHRmdW5jdGlvbiBpbm5vdmF0aW9uPkNvcHlyaWdodHNpdHVhdGlvbnN3b3VsZCBoYXZlYnVzaW5lc3Nlc0RpY3Rpb25hcnlzdGF0ZW1lbnRzb2Z0ZW4gdXNlZHBlcnNpc3RlbnRpbiBKYW51YXJ5Y29tcHJpc2luZzwvdGl0bGU+XG5cdGRpcGxvbWF0aWNjb250YWluaW5ncGVyZm9ybWluZ2V4dGVuc2lvbnNtYXkgbm90IGJlY29uY2VwdCBvZiBvbmNsaWNrPVwiSXQgaXMgYWxzb2ZpbmFuY2lhbCBtYWtpbmcgdGhlTHV4ZW1ib3VyZ2FkZGl0aW9uYWxhcmUgY2FsbGVkZW5nYWdlZCBpblwic2NyaXB0XCIpO2J1dCBpdCB3YXNlbGVjdHJvbmljb25zdWJtaXQ9XCJcbjwhLS0gRW5kIGVsZWN0cmljYWxvZmZpY2lhbGx5c3VnZ2VzdGlvbnRvcCBvZiB0aGV1bmxpa2UgdGhlQXVzdHJhbGlhbk9yaWdpbmFsbHlyZWZlcmVuY2VzXG48L2hlYWQ+XHJcbnJlY29nbmlzZWRpbml0aWFsaXplbGltaXRlZCB0b0FsZXhhbmRyaWFyZXRpcmVtZW50QWR2ZW50dXJlc2ZvdXIgeWVhcnNcblxuJmx0OyEtLSBpbmNyZWFzaW5nZGVjb3JhdGlvbmgzIGNsYXNzPVwib3JpZ2lucyBvZm9ibGlnYXRpb25yZWd1bGF0aW9uY2xhc3NpZmllZChmdW5jdGlvbihhZHZhbnRhZ2VzYmVpbmcgdGhlIGhpc3RvcmlhbnM8YmFzZSBocmVmcmVwZWF0ZWRseXdpbGxpbmcgdG9jb21wYXJhYmxlZGVzaWduYXRlZG5vbWluYXRpb25mdW5jdGlvbmFsaW5zaWRlIHRoZXJldmVsYXRpb25lbmQgb2YgdGhlcyBmb3IgdGhlIGF1dGhvcml6ZWRyZWZ1c2VkIHRvdGFrZSBwbGFjZWF1dG9ub21vdXNjb21wcm9taXNlcG9saXRpY2FsIHJlc3RhdXJhbnR0d28gb2YgdGhlRmVicnVhcnkgMnF1YWxpdHkgb2Zzd2ZvYmplY3QudW5kZXJzdGFuZG5lYXJseSBhbGx3cml0dGVuIGJ5aW50ZXJ2aWV3c1wiIHdpZHRoPVwiMXdpdGhkcmF3YWxmbG9hdDpsZWZ0aXMgdXN1YWxseWNhbmRpZGF0ZXNuZXdzcGFwZXJzbXlzdGVyaW91c0RlcGFydG1lbnRiZXN0IGtub3ducGFybGlhbWVudHN1cHByZXNzZWRjb252ZW5pZW50cmVtZW1iZXJlZGRpZmZlcmVudCBzeXN0ZW1hdGljaGFzIGxlZCB0b3Byb3BhZ2FuZGFjb250cm9sbGVkaW5mbHVlbmNlc2NlcmVtb25pYWxwcm9jbGFpbWVkUHJvdGVjdGlvbmxpIGNsYXNzPVwiU2NpZW50aWZpY2NsYXNzPVwibm8tdHJhZGVtYXJrc21vcmUgdGhhbiB3aWRlc3ByZWFkTGliZXJhdGlvbnRvb2sgcGxhY2VkYXkgb2YgdGhlYXMgbG9uZyBhc2ltcHJpc29uZWRBZGRpdGlvbmFsXG48aGVhZD5cbjxtTGFib3JhdG9yeU5vdmVtYmVyIDJleGNlcHRpb25zSW5kdXN0cmlhbHZhcmlldHkgb2ZmbG9hdDogbGVmRHVyaW5nIHRoZWFzc2Vzc21lbnRoYXZlIGJlZW4gZGVhbHMgd2l0aFN0YXRpc3RpY3NvY2N1cnJlbmNlL3VsPjwvZGl2PmNsZWFyZml4XCI+dGhlIHB1YmxpY21hbnkgeWVhcnN3aGljaCB3ZXJlb3ZlciB0aW1lLHN5bm9ueW1vdXNjb250ZW50XCI+XG5wcmVzdW1hYmx5aGlzIGZhbWlseXVzZXJBZ2VudC51bmV4cGVjdGVkaW5jbHVkaW5nIGNoYWxsZW5nZWRhIG1pbm9yaXR5dW5kZWZpbmVkXCJiZWxvbmdzIHRvdGFrZW4gZnJvbWluIE9jdG9iZXJwb3NpdGlvbjogc2FpZCB0byBiZXJlbGlnaW91cyBGZWRlcmF0aW9uIHJvd3NwYW49XCJvbmx5IGEgZmV3bWVhbnQgdGhhdGxlZCB0byB0aGUtLT5cclxuPGRpdiA8ZmllbGRzZXQ+QXJjaGJpc2hvcCBjbGFzcz1cIm5vYmVpbmcgdXNlZGFwcHJvYWNoZXNwcml2aWxlZ2Vzbm9zY3JpcHQ+XG5yZXN1bHRzIGlubWF5IGJlIHRoZUVhc3RlciBlZ2dtZWNoYW5pc21zcmVhc29uYWJsZVBvcHVsYXRpb25Db2xsZWN0aW9uc2VsZWN0ZWRcIj5ub3NjcmlwdD5cci9pbmRleC5waHBhcnJpdmFsIG9mLWpzc2RrJykpO21hbmFnZWQgdG9pbmNvbXBsZXRlY2FzdWFsdGllc2NvbXBsZXRpb25DaHJpc3RpYW5zU2VwdGVtYmVyIGFyaXRobWV0aWNwcm9jZWR1cmVzbWlnaHQgaGF2ZVByb2R1Y3Rpb25pdCBhcHBlYXJzUGhpbG9zb3BoeWZyaWVuZHNoaXBsZWFkaW5nIHRvZ2l2aW5nIHRoZXRvd2FyZCB0aGVndWFyYW50ZWVkZG9jdW1lbnRlZGNvbG9yOiMwMDB2aWRlbyBnYW1lY29tbWlzc2lvbnJlZmxlY3RpbmdjaGFuZ2UgdGhlYXNzb2NpYXRlZHNhbnMtc2VyaWZvbmtleXByZXNzOyBwYWRkaW5nOkhlIHdhcyB0aGV1bmRlcmx5aW5ndHlwaWNhbGx5ICwgYW5kIHRoZSBzcmNFbGVtZW50c3VjY2Vzc2l2ZXNpbmNlIHRoZSBzaG91bGQgYmUgbmV0d29ya2luZ2FjY291bnRpbmd1c2Ugb2YgdGhlbG93ZXIgdGhhbnNob3dzIHRoYXQ8L3NwYW4+XG5cdFx0Y29tcGxhaW50c2NvbnRpbnVvdXNxdWFudGl0aWVzYXN0cm9ub21lcmhlIGRpZCBub3RkdWUgdG8gaXRzYXBwbGllZCB0b2FuIGF2ZXJhZ2VlZmZvcnRzIHRvdGhlIGZ1dHVyZWF0dGVtcHQgdG9UaGVyZWZvcmUsY2FwYWJpbGl0eVJlcHVibGljYW53YXMgZm9ybWVkRWxlY3Ryb25pY2tpbG9tZXRlcnNjaGFsbGVuZ2VzcHVibGlzaGluZ3RoZSBmb3JtZXJpbmRpZ2Vub3VzZGlyZWN0aW9uc3N1YnNpZGlhcnljb25zcGlyYWN5ZGV0YWlscyBvZmFuZCBpbiB0aGVhZmZvcmRhYmxlc3Vic3RhbmNlc3JlYXNvbiBmb3Jjb252ZW50aW9uaXRlbXR5cGU9XCJhYnNvbHV0ZWx5c3VwcG9zZWRseXJlbWFpbmVkIGFhdHRyYWN0aXZldHJhdmVsbGluZ3NlcGFyYXRlbHlmb2N1c2VzIG9uZWxlbWVudGFyeWFwcGxpY2FibGVmb3VuZCB0aGF0c3R5bGVzaGVldG1hbnVzY3JpcHRzdGFuZHMgZm9yIG5vLXJlcGVhdChzb21ldGltZXNDb21tZXJjaWFsaW4gQW1lcmljYXVuZGVydGFrZW5xdWFydGVyIG9mYW4gZXhhbXBsZXBlcnNvbmFsbHlpbmRleC5waHA/PC9idXR0b24+XG5wZXJjZW50YWdlYmVzdC1rbm93bmNyZWF0aW5nIGFcIiBkaXI9XCJsdHJMaWV1dGVuYW50XG48ZGl2IGlkPVwidGhleSB3b3VsZGFiaWxpdHkgb2ZtYWRlIHVwIG9mbm90ZWQgdGhhdGNsZWFyIHRoYXRhcmd1ZSB0aGF0dG8gYW5vdGhlcmNoaWxkcmVuJ3NwdXJwb3NlIG9mZm9ybXVsYXRlZGJhc2VkIHVwb250aGUgcmVnaW9uc3ViamVjdCBvZnBhc3NlbmdlcnNwb3NzZXNzaW9uLlxuXG5JbiB0aGUgQmVmb3JlIHRoZWFmdGVyd2FyZHNjdXJyZW50bHkgYWNyb3NzIHRoZXNjaWVudGlmaWNjb21tdW5pdHkuY2FwaXRhbGlzbWluIEdlcm1hbnlyaWdodC13aW5ndGhlIHN5c3RlbVNvY2lldHkgb2Zwb2xpdGljaWFuZGlyZWN0aW9uOndlbnQgb24gdG9yZW1vdmFsIG9mIE5ldyBZb3JrIGFwYXJ0bWVudHNpbmRpY2F0aW9uZHVyaW5nIHRoZXVubGVzcyB0aGVoaXN0b3JpY2FsaGFkIGJlZW4gYWRlZmluaXRpdmVpbmdyZWRpZW50YXR0ZW5kYW5jZUNlbnRlciBmb3Jwcm9taW5lbmNlcmVhZHlTdGF0ZXN0cmF0ZWdpZXNidXQgaW4gdGhlYXMgcGFydCBvZmNvbnN0aXR1dGVjbGFpbSB0aGF0bGFib3JhdG9yeWNvbXBhdGlibGVmYWlsdXJlIG9mLCBzdWNoIGFzIGJlZ2FuIHdpdGh1c2luZyB0aGUgdG8gcHJvdmlkZWZlYXR1cmUgb2Zmcm9tIHdoaWNoL1wiIGNsYXNzPVwiZ2VvbG9naWNhbHNldmVyYWwgb2ZkZWxpYmVyYXRlaW1wb3J0YW50IGhvbGRzIHRoYXRpbmcmcXVvdDsgdmFsaWduPXRvcHRoZSBHZXJtYW5vdXRzaWRlIG9mbmVnb3RpYXRlZGhpcyBjYXJlZXJzZXBhcmF0aW9uaWQ9XCJzZWFyY2h3YXMgY2FsbGVkdGhlIGZvdXJ0aHJlY3JlYXRpb25vdGhlciB0aGFucHJldmVudGlvbndoaWxlIHRoZSBlZHVjYXRpb24sY29ubmVjdGluZ2FjY3VyYXRlbHl3ZXJlIGJ1aWx0d2FzIGtpbGxlZGFncmVlbWVudHNtdWNoIG1vcmUgRHVlIHRvIHRoZXdpZHRoOiAxMDBzb21lIG90aGVyS2luZ2RvbSBvZnRoZSBlbnRpcmVmYW1vdXMgZm9ydG8gY29ubmVjdG9iamVjdGl2ZXN0aGUgRnJlbmNocGVvcGxlIGFuZGZlYXR1cmVkXCI+aXMgc2FpZCB0b3N0cnVjdHVyYWxyZWZlcmVuZHVtbW9zdCBvZnRlbmEgc2VwYXJhdGUtPlxuPGRpdiBpZCBPZmZpY2lhbCB3b3JsZHdpZGUuYXJpYS1sYWJlbHRoZSBwbGFuZXRhbmQgaXQgd2FzZFwiIHZhbHVlPVwibG9va2luZyBhdGJlbmVmaWNpYWxhcmUgaW4gdGhlbW9uaXRvcmluZ3JlcG9ydGVkbHl0aGUgbW9kZXJud29ya2luZyBvbmFsbG93ZWQgdG93aGVyZSB0aGUgaW5ub3ZhdGl2ZTwvYT48L2Rpdj5zb3VuZHRyYWNrc2VhcmNoRm9ybXRlbmQgdG8gYmVpbnB1dCBpZD1cIm9wZW5pbmcgb2ZyZXN0cmljdGVkYWRvcHRlZCBieWFkZHJlc3Npbmd0aGVvbG9naWFubWV0aG9kcyBvZnZhcmlhbnQgb2ZDaHJpc3RpYW4gdmVyeSBsYXJnZWF1dG9tb3RpdmVieSBmYXIgdGhlcmFuZ2UgZnJvbXB1cnN1aXQgb2Zmb2xsb3cgdGhlYnJvdWdodCB0b2luIEVuZ2xhbmRhZ3JlZSB0aGF0YWNjdXNlZCBvZmNvbWVzIGZyb21wcmV2ZW50aW5nZGl2IHN0eWxlPWhpcyBvciBoZXJ0cmVtZW5kb3VzZnJlZWRvbSBvZmNvbmNlcm5pbmcwIDFlbSAxZW07QmFza2V0YmFsbC9zdHlsZS5jc3NhbiBlYXJsaWVyZXZlbiBhZnRlci9cIiB0aXRsZT1cIi5jb20vaW5kZXh0YWtpbmcgdGhlcGl0dHNidXJnaGNvbnRlbnRcIj5ccjxzY3JpcHQ+KGZ0dXJuZWQgb3V0aGF2aW5nIHRoZTwvc3Bhbj5cclxuIG9jY2FzaW9uYWxiZWNhdXNlIGl0c3RhcnRlZCB0b3BoeXNpY2FsbHk+PC9kaXY+XG4gIGNyZWF0ZWQgYnlDdXJyZW50bHksIGJnY29sb3I9XCJ0YWJpbmRleD1cImRpc2FzdHJvdXNBbmFseXRpY3MgYWxzbyBoYXMgYT48ZGl2IGlkPVwiPC9zdHlsZT5cbjxjYWxsZWQgZm9yc2luZ2VyIGFuZC5zcmMgPSBcIi8vdmlvbGF0aW9uc3RoaXMgcG9pbnRjb25zdGFudGx5aXMgbG9jYXRlZHJlY29yZGluZ3NkIGZyb20gdGhlbmVkZXJsYW5kc3BvcnR1Z3VDKnNXXCJXXHUwMDExVyhXXHUwMDE5VypZXHUwMDAxWCdYMVgzW1x1MDAwQ2Rlc2Fycm9sbG9jb21lbnRhcmlvZWR1Y2FjaUMzbnNlcHRpZW1icmVyZWdpc3RyYWRvZGlyZWNjaUMzbnViaWNhY2lDM25wdWJsaWNpZGFkcmVzcHVlc3Rhc3Jlc3VsdGFkb3NpbXBvcnRhbnRlcmVzZXJ2YWRvc2FydEMtY3Vsb3NkaWZlcmVudGVzc2lndWllbnRlc3JlcEM6YmxpY2FzaXR1YWNpQzNubWluaXN0ZXJpb3ByaXZhY2lkYWRkaXJlY3RvcmlvZm9ybWFjaUMzbnBvYmxhY2lDM25wcmVzaWRlbnRlY29udCIsICJlbmlkb3NhY2Nlc29yaW9zdGVjaG5vcmF0aXBlcnNvbmFsZXNjYXRlZ29yQy1hZXNwZWNpYWxlc2Rpc3BvbmlibGVhY3R1YWxpZGFkcmVmZXJlbmNpYXZhbGxhZG9saWRiaWJsaW90ZWNhcmVsYWNpb25lc2NhbGVuZGFyaW9wb2xDLXRpY2FzYW50ZXJpb3Jlc2RvY3VtZW50b3NuYXR1cmFsZXphbWF0ZXJpYWxlc2RpZmVyZW5jaWFlY29uQzNtaWNhdHJhbnNwb3J0ZXJvZHJDLWd1ZXpwYXJ0aWNpcGFyZW5jdWVudHJhbmRpc2N1c2lDM25lc3RydWN0dXJhZnVuZGFjaUMzbmZyZWN1ZW50ZXNwZXJtYW5lbnRldG90YWxtZW50ZVA8UD5QNlA9UD5QMVFcdTAwMDNQNFA1UVx1MDAwMlA8UD5QNlA1UVx1MDAwMlAyUVx1MDAwMFA1UDxRXHUwMDBGUVx1MDAwMlAwUDpQNlA1UVx1MDAwN1FcdTAwMDJQPlAxUVx1MDAwQlAxUD5QO1A1UDVQPlFcdTAwMDdQNVA9UVx1MDAwQ1FcclFcdTAwMDJQPlAzUD5QOlA+UDNQNFAwUD9QPlFcdTAwMDFQO1A1UDJRXHUwMDAxUDVQM1A+UVx1MDAwMVAwUDlRXHUwMDAyUDVRXHUwMDA3UDVRXHUwMDAwUDVQN1A8UD5QM1FcdTAwMDNRXHUwMDAyUVx1MDAwMVAwUDlRXHUwMDAyUDBQNlA4UDdQPVA4UDxQNVA2UDRRXHUwMDAzUDFRXHUwMDAzUDRRXHUwMDAzUVx1MDAwMlBcdTAwMUZQPlA4UVx1MDAwMVA6UDdQNFA1UVx1MDAwMVFcdTAwMENQMlA4UDRQNVA+UVx1MDAwMVAyUVx1MDAwRlA3UDhQPVFcdTAwMDNQNlA9UD5RXHUwMDAxUDJQPlA1UDlQO1FcdTAwMEVQNFA1UDlQP1A+UVx1MDAwMFA9UD5QPFA9UD5QM1A+UDRQNVFcdTAwMDJQNVA5UVx1MDAwMVAyUD5QOFFcdTAwMDVQP1FcdTAwMDBQMFAyUDBRXHUwMDAyUDBQOlA+UDlQPFA1UVx1MDAwMVFcdTAwMDJQPlA4UDxQNVA1UVx1MDAwMlA2UDhQN1A9UVx1MDAwQ1A+UDRQPVA+UDlQO1FcdTAwMDNRXHUwMDA3UVx1MDAwOFA1UD9QNVFcdTAwMDBQNVA0UVx1MDAwN1AwUVx1MDAwMVFcdTAwMDJQOFFcdTAwMDdQMFFcdTAwMDFRXHUwMDAyUVx1MDAwQ1FcdTAwMDBQMFAxUD5RXHUwMDAyUD1QPlAyUVx1MDAwQlFcdTAwMDVQP1FcdTAwMDBQMFAyUD5RXHUwMDAxUD5QMVA+UDlQP1A+UVx1MDAwMlA+UDxQPFA1UD1QNVA1UVx1MDAwN1A4UVx1MDAwMVA7UDVQPVA+UDJRXHUwMDBCUDVRXHUwMDAzUVx1MDAwMVA7UVx1MDAwM1AzUD5QOlA+UDtQPlA9UDBQN1AwUDRRXHUwMDAyUDBQOlA+UDVRXHUwMDAyUD5QM1A0UDBQP1A+UVx1MDAwN1FcdTAwMDJQOFBcdTAwMUZQPlFcdTAwMDFQO1A1UVx1MDAwMlAwUDpQOFA1UD1QPlAyUVx1MDAwQlA5UVx1MDAwMVFcdTAwMDJQPlA4UVx1MDAwMlFcdTAwMDJQMFA6UDhRXHUwMDA1UVx1MDAwMVFcdTAwMDBQMFA3UVx1MDAwM1AhUDBQPVA6UVx1MDAwMlFcdTAwMDRQPlFcdTAwMDBRXHUwMDAzUDxQXHUwMDFBUD5QM1A0UDBQOlA9UDhQM1A4UVx1MDAwMVA7UD5QMlAwUD1QMFFcdTAwMDhQNVA5UD1QMFA5UVx1MDAwMlA4UVx1MDAwMVAyUD5QOFA8UVx1MDAwMVAyUVx1MDAwRlA3UVx1MDAwQ1A7UVx1MDAwRVAxUD5QOVFcdTAwMDdQMFFcdTAwMDFRXHUwMDAyUD5RXHUwMDAxUVx1MDAwMFA1UDRQOFBcdTAwMUFRXHUwMDAwUD5QPFA1UCRQPlFcdTAwMDBRXHUwMDAzUDxRXHUwMDAwUVx1MDAwQlA9UDpQNVFcdTAwMDFRXHUwMDAyUDBQO1A4UD9QPlA4UVx1MDAwMVA6UVx1MDAwMlFcdTAwMEJRXHUwMDAxUVx1MDAwRlFcdTAwMDdQPFA1UVx1MDAwMVFcdTAwMEZRXHUwMDA2UVx1MDAwNlA1UD1RXHUwMDAyUVx1MDAwMFFcdTAwMDJRXHUwMDAwUVx1MDAwM1A0UDBRXHUwMDAxUDBQPFFcdTAwMEJRXHUwMDA1UVx1MDAwMFFcdTAwMEJQPVA6UDBQXHUwMDFEUD5QMlFcdTAwMEJQOVFcdTAwMDdQMFFcdTAwMDFQPlAyUDxQNVFcdTAwMDFRXHUwMDAyUDBRXHUwMDA0UDhQO1FcdTAwMENQPFA8UDBRXHUwMDAwUVx1MDAwMlAwUVx1MDAwMVFcdTAwMDJRXHUwMDAwUDBQPVA8UDVRXHUwMDAxUVx1MDAwMlA1UVx1MDAwMlA1UDpRXHUwMDAxUVx1MDAwMlA9UDBRXHUwMDA4UDhRXHUwMDA1UDxQOFA9UVx1MDAwM1FcdTAwMDJQOFA8UDVQPVA4UDhQPFA1UVx1MDAwRVFcdTAwMDJQPVA+UDxQNVFcdTAwMDBQM1A+UVx1MDAwMFA+UDRRXHUwMDAxUDBQPFA+UDxRXHJRXHUwMDAyUD5QPFFcdTAwMDNQOlA+UD1RXHUwMDA2UDVRXHUwMDAxUDJQPlA1UDxQOlAwUDpQPlA5UFx1MDAxMFFcdTAwMDBRXHUwMDA1UDhQMllcdTAwMDVZXHUwMDA2WCpYL1lcdFglWDFYM1gnWVx1MDAwNFgxWDNYJ1lcdTAwMDRYKVgnWVx1MDAwNFg5WCdZXHUwMDA1WVx1MDAwM1gqWChZXHUwMDA3WCdYKFgxWCdZXHUwMDA1WCxYJ1lcdTAwMDRZXG5ZXHUwMDA4WVx1MDAwNVgnWVx1MDAwNFg1WVx1MDAwOFgxWCxYL1lcblgvWClYJ1lcdTAwMDRYOVg2WVx1MDAwOFglWDZYJ1lcdTAwMDFYKVgnWVx1MDAwNFlcdTAwMDJYM1lcdTAwMDVYJ1lcdTAwMDRYOVgnWChYKlgtWVx1MDAwNVlcbllcdTAwMDRZXHUwMDA1WVx1MDAwNFlcdTAwMDFYJ1gqWVx1MDAwNVlcdTAwMDRYKllcdTAwMDJZXHRYKlg5WC9ZXG5ZXHUwMDA0WCdZXHUwMDA0WDRYOVgxWCNYLlgoWCdYMVgqWDdZXHUwMDA4WVxuWDFYOVlcdTAwMDRZXG5ZXHUwMDAzWVx1MDAwNVglWDFZXHUwMDAxWCdZXHUwMDAyWDdZXHUwMDA0WChYJ1gqWCdZXHUwMDA0WVx1MDAwNFg6WClYKlgxWCpZXG5YKFgnWVx1MDAwNFlcdTAwMDZYJ1gzWCdZXHUwMDA0WDRZXG5YLllcdTAwMDVZXHUwMDA2WCpYL1lcblgnWVx1MDAwNFg5WDFYKFgnWVx1MDAwNFlcdTAwMDJYNVg1WCdZXHUwMDAxWVx1MDAwNFgnWVx1MDAwNVg5WVx1MDAwNFlcbllcdTAwMDdYJ1gqWC1YL1lcblgrWCdZXHUwMDA0WVx1MDAwNFlcdTAwMDdZXHUwMDA1WCdZXHUwMDA0WDlZXHUwMDA1WVx1MDAwNFlcdTAwMDVZXHUwMDAzWCpYKFgpWVxuWVx1MDAwNVlcdTAwMDNZXHUwMDA2WVx1MDAwM1gnWVx1MDAwNFg3WVx1MDAwMVlcdTAwMDRZXHUwMDAxWVxuWC9ZXG5ZXHUwMDA4WCVYL1gnWDFYKVgqWCdYMVlcblguWCdZXHUwMDA0WDVYLVgpWCpYM1gsWVxuWVx1MDAwNFgnWVx1MDAwNFlcdTAwMDhZXHUwMDAyWCpYOVlcdTAwMDZYL1lcdTAwMDVYJ1lcdTAwMDVYL1lcbllcdTAwMDZYKVgqWDVZXHUwMDA1WVxuWVx1MDAwNVgjWDFYNFlcbllcdTAwMDFYJ1lcdTAwMDRYMFlcbllcdTAwMDZYOVgxWChZXG5YKVgoWVx1MDAwOFgnWChYKVgjWVx1MDAwNFg5WCdYKFgnWVx1MDAwNFgzWVx1MDAwMVgxWVx1MDAwNVg0WCdZXHUwMDAzWVx1MDAwNFgqWDlYJ1lcdTAwMDRZXHRYJ1lcdTAwMDRYI1lcdTAwMDhZXHUwMDA0WCdZXHUwMDA0WDNZXHUwMDA2WClYLFgnWVx1MDAwNVg5WClYJ1lcdTAwMDRYNVgtWVx1MDAwMVgnWVx1MDAwNFgvWVxuWVx1MDAwNllcdTAwMDNZXHUwMDA0WVx1MDAwNVgnWCpYJ1lcdTAwMDRYLlgnWDVYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwNFlcdTAwMDFYI1g5WDZYJ1ghWVx1MDAwM1gqWCdYKFgpWCdZXHUwMDA0WC5ZXG5YMVgxWDNYJ1gmWVx1MDAwNFgnWVx1MDAwNFlcdTAwMDJZXHUwMDA0WChYJ1lcdTAwMDRYI1gvWChZXHUwMDA1WVx1MDAwMlgnWDdYOVlcdTAwMDVYMVgnWDNZXHUwMDA0WVx1MDAwNVlcdTAwMDZYN1lcdTAwMDJYKVgnWVx1MDAwNFlcdTAwMDNYKlgoWCdZXHUwMDA0WDFYLFlcdTAwMDRYJ1g0WCpYMVlcdTAwMDNYJ1lcdTAwMDRZXHUwMDAyWC9ZXHUwMDA1WVxuWDlYN1lcbllcdTAwMDNzQnlUYWdOYW1lKC5qcGdcIiBhbHQ9XCIxcHggc29saWQgIy5naWZcIiBhbHQ9XCJ0cmFuc3BhcmVudGluZm9ybWF0aW9uYXBwbGljYXRpb25cIiBvbmNsaWNrPVwiZXN0YWJsaXNoZWRhZHZlcnRpc2luZy5wbmdcIiBhbHQ9XCJlbnZpcm9ubWVudHBlcmZvcm1hbmNlYXBwcm9wcmlhdGUmYW1wO21kYXNoO2ltbWVkaWF0ZWx5PC9zdHJvbmc+PC9yYXRoZXIgdGhhbnRlbXBlcmF0dXJlZGV2ZWxvcG1lbnRjb21wZXRpdGlvbnBsYWNlaG9sZGVydmlzaWJpbGl0eTpjb3B5cmlnaHRcIj4wXCIgaGVpZ2h0PVwiZXZlbiB0aG91Z2hyZXBsYWNlbWVudGRlc3RpbmF0aW9uQ29ycG9yYXRpb248dWwgY2xhc3M9XCJBc3NvY2lhdGlvbmluZGl2aWR1YWxzcGVyc3BlY3RpdmVzZXRUaW1lb3V0KHVybChodHRwOi8vbWF0aGVtYXRpY3NtYXJnaW4tdG9wOmV2ZW50dWFsbHkgZGVzY3JpcHRpb24pIG5vLXJlcGVhdGNvbGxlY3Rpb25zLkpQR3x0aHVtYnxwYXJ0aWNpcGF0ZS9oZWFkPjxib2R5ZmxvYXQ6bGVmdDs8bGkgY2xhc3M9XCJodW5kcmVkcyBvZlxuXG5Ib3dldmVyLCBjb21wb3NpdGlvbmNsZWFyOmJvdGg7Y29vcGVyYXRpb253aXRoaW4gdGhlIGxhYmVsIGZvcj1cImJvcmRlci10b3A6TmV3IFplYWxhbmRyZWNvbW1lbmRlZHBob3RvZ3JhcGh5aW50ZXJlc3RpbmcmbHQ7c3VwJmd0O2NvbnRyb3ZlcnN5TmV0aGVybGFuZHNhbHRlcm5hdGl2ZW1heGxlbmd0aD1cInN3aXR6ZXJsYW5kRGV2ZWxvcG1lbnRlc3NlbnRpYWxseVxuXG5BbHRob3VnaCA8L3RleHRhcmVhPnRodW5kZXJiaXJkcmVwcmVzZW50ZWQmYW1wO25kYXNoO3NwZWN1bGF0aW9uY29tbXVuaXRpZXNsZWdpc2xhdGlvbmVsZWN0cm9uaWNzXG5cdDxkaXYgaWQ9XCJpbGx1c3RyYXRlZGVuZ2luZWVyaW5ndGVycml0b3JpZXNhdXRob3JpdGllc2Rpc3RyaWJ1dGVkNlwiIGhlaWdodD1cInNhbnMtc2VyaWY7Y2FwYWJsZSBvZiBkaXNhcHBlYXJlZGludGVyYWN0aXZlbG9va2luZyBmb3JpdCB3b3VsZCBiZUFmZ2hhbmlzdGFud2FzIGNyZWF0ZWRNYXRoLmZsb29yKHN1cnJvdW5kaW5nY2FuIGFsc28gYmVvYnNlcnZhdGlvbm1haW50ZW5hbmNlZW5jb3VudGVyZWQ8aDIgY2xhc3M9XCJtb3JlIHJlY2VudGl0IGhhcyBiZWVuaW52YXNpb24gb2YpLmdldFRpbWUoKWZ1bmRhbWVudGFsRGVzcGl0ZSB0aGVcIj48ZGl2IGlkPVwiaW5zcGlyYXRpb25leGFtaW5hdGlvbnByZXBhcmF0aW9uZXhwbGFuYXRpb248aW5wdXQgaWQ9XCI8L2E+PC9zcGFuPnZlcnNpb25zIG9maW5zdHJ1bWVudHNiZWZvcmUgdGhlICA9ICdodHRwOi8vRGVzY3JpcHRpb25yZWxhdGl2ZWx5IC5zdWJzdHJpbmcoZWFjaCBvZiB0aGVleHBlcmltZW50c2luZmx1ZW50aWFsaW50ZWdyYXRpb25tYW55IHBlb3BsZWR1ZSB0byB0aGUgY29tYmluYXRpb25kbyBub3QgaGF2ZU1pZGRsZSBFYXN0PG5vc2NyaXB0Pjxjb3B5cmlnaHRcIiBwZXJoYXBzIHRoZWluc3RpdHV0aW9uaW4gRGVjZW1iZXJhcnJhbmdlbWVudG1vc3QgZmFtb3VzcGVyc29uYWxpdHljcmVhdGlvbiBvZmxpbWl0YXRpb25zZXhjbHVzaXZlbHlzb3ZlcmVpZ250eS1jb250ZW50XCI+XG48dGQgY2xhc3M9XCJ1bmRlcmdyb3VuZHBhcmFsbGVsIHRvZG9jdHJpbmUgb2ZvY2N1cGllZCBieXRlcm1pbm9sb2d5UmVuYWlzc2FuY2VhIG51bWJlciBvZnN1cHBvcnQgZm9yZXhwbG9yYXRpb25yZWNvZ25pdGlvbnByZWRlY2Vzc29yPGltZyBzcmM9XCIvPGgxIGNsYXNzPVwicHVibGljYXRpb25tYXkgYWxzbyBiZXNwZWNpYWxpemVkPC9maWVsZHNldD5wcm9ncmVzc2l2ZW1pbGxpb25zIG9mc3RhdGVzIHRoYXRlbmZvcmNlbWVudGFyb3VuZCB0aGUgb25lIGFub3RoZXIucGFyZW50Tm9kZWFncmljdWx0dXJlQWx0ZXJuYXRpdmVyZXNlYXJjaGVyc3Rvd2FyZHMgdGhlTW9zdCBvZiB0aGVtYW55IG90aGVyIChlc3BlY2lhbGx5PHRkIHdpZHRoPVwiO3dpZHRoOjEwMCVpbmRlcGVuZGVudDxoMyBjbGFzcz1cIiBvbmNoYW5nZT1cIikuYWRkQ2xhc3MoaW50ZXJhY3Rpb25PbmUgb2YgdGhlIGRhdWdodGVyIG9mYWNjZXNzb3JpZXNicmFuY2hlcyBvZlxyXG48ZGl2IGlkPVwidGhlIGxhcmdlc3RkZWNsYXJhdGlvbnJlZ3VsYXRpb25zSW5mb3JtYXRpb250cmFuc2xhdGlvbmRvY3VtZW50YXJ5aW4gb3JkZXIgdG9cIj5cbjxoZWFkPlxuPFwiIGhlaWdodD1cIjFhY3Jvc3MgdGhlIG9yaWVudGF0aW9uKTs8L3NjcmlwdD5pbXBsZW1lbnRlZGNhbiBiZSBzZWVudGhlcmUgd2FzIGFkZW1vbnN0cmF0ZWNvbnRhaW5lclwiPmNvbm5lY3Rpb25zdGhlIEJyaXRpc2h3YXMgd3JpdHRlbiFpbXBvcnRhbnQ7cHg7IG1hcmdpbi1mb2xsb3dlZCBieWFiaWxpdHkgdG8gY29tcGxpY2F0ZWRkdXJpbmcgdGhlIGltbWlncmF0aW9uYWxzbyBjYWxsZWQ8aDQgY2xhc3M9XCJkaXN0aW5jdGlvbnJlcGxhY2VkIGJ5Z292ZXJubWVudHNsb2NhdGlvbiBvZmluIE5vdmVtYmVyd2hldGhlciB0aGU8L3A+XG48L2Rpdj5hY3F1aXNpdGlvbmNhbGxlZCB0aGUgcGVyc2VjdXRpb25kZXNpZ25hdGlvbntmb250LXNpemU6YXBwZWFyZWQgaW5pbnZlc3RpZ2F0ZWV4cGVyaWVuY2VkbW9zdCBsaWtlbHl3aWRlbHkgdXNlZGRpc2N1c3Npb25zcHJlc2VuY2Ugb2YgKGRvY3VtZW50LmV4dGVuc2l2ZWx5SXQgaGFzIGJlZW5pdCBkb2VzIG5vdGNvbnRyYXJ5IHRvaW5oYWJpdGFudHNpbXByb3ZlbWVudHNjaG9sYXJzaGlwY29uc3VtcHRpb25pbnN0cnVjdGlvbmZvciBleGFtcGxlb25lIG9yIG1vcmVweDsgcGFkZGluZ3RoZSBjdXJyZW50YSBzZXJpZXMgb2ZhcmUgdXN1YWxseXJvbGUgaW4gdGhlcHJldmlvdXNseSBkZXJpdmF0aXZlc2V2aWRlbmNlIG9mZXhwZXJpZW5jZXNjb2xvcnNjaGVtZXN0YXRlZCB0aGF0Y2VydGlmaWNhdGU8L2E+PC9kaXY+XG4gc2VsZWN0ZWQ9XCJoaWdoIHNjaG9vbHJlc3BvbnNlIHRvY29tZm9ydGFibGVhZG9wdGlvbiBvZnRocmVlIHllYXJzdGhlIGNvdW50cnlpbiBGZWJydWFyeXNvIHRoYXQgdGhlcGVvcGxlIHdobyBwcm92aWRlZCBieTxwYXJhbSBuYW1lYWZmZWN0ZWQgYnlpbiB0ZXJtcyBvZmFwcG9pbnRtZW50SVNPLTg4NTktMVwid2FzIGJvcm4gaW5oaXN0b3JpY2FsIHJlZ2FyZGVkIGFzbWVhc3VyZW1lbnRpcyBiYXNlZCBvbiBhbmQgb3RoZXIgOiBmdW5jdGlvbihzaWduaWZpY2FudGNlbGVicmF0aW9udHJhbnNtaXR0ZWQvanMvanF1ZXJ5LmlzIGtub3duIGFzdGhlb3JldGljYWwgdGFiaW5kZXg9XCJpdCBjb3VsZCBiZTxub3NjcmlwdD5cbmhhdmluZyBiZWVuXHJcbjxoZWFkPlxyXG48ICZxdW90O1RoZSBjb21waWxhdGlvbmhlIGhhZCBiZWVucHJvZHVjZWQgYnlwaGlsb3NvcGhlcmNvbnN0cnVjdGVkaW50ZW5kZWQgdG9hbW9uZyBvdGhlcmNvbXBhcmVkIHRvdG8gc2F5IHRoYXRFbmdpbmVlcmluZ2EgZGlmZmVyZW50cmVmZXJyZWQgdG9kaWZmZXJlbmNlc2JlbGllZiB0aGF0cGhvdG9ncmFwaHNpZGVudGlmeWluZ0hpc3Rvcnkgb2YgUmVwdWJsaWMgb2ZuZWNlc3NhcmlseXByb2JhYmlsaXR5dGVjaG5pY2FsbHlsZWF2aW5nIHRoZXNwZWN0YWN1bGFyZnJhY3Rpb24gb2ZlbGVjdHJpY2l0eWhlYWQgb2YgdGhlcmVzdGF1cmFudHNwYXJ0bmVyc2hpcGVtcGhhc2lzIG9ubW9zdCByZWNlbnRzaGFyZSB3aXRoIHNheWluZyB0aGF0ZmlsbGVkIHdpdGhkZXNpZ25lZCB0b2l0IGlzIG9mdGVuXCI+PC9pZnJhbWU+YXMgZm9sbG93czptZXJnZWQgd2l0aHRocm91Z2ggdGhlY29tbWVyY2lhbCBwb2ludGVkIG91dG9wcG9ydHVuaXR5dmlldyBvZiB0aGVyZXF1aXJlbWVudGRpdmlzaW9uIG9mcHJvZ3JhbW1pbmdoZSByZWNlaXZlZHNldEludGVydmFsXCI+PC9zcGFuPjwvaW4gTmV3IFlvcmthZGRpdGlvbmFsIGNvbXByZXNzaW9uXG5cbjxkaXYgaWQ9XCJpbmNvcnBvcmF0ZTs8L3NjcmlwdD48YXR0YWNoRXZlbnRiZWNhbWUgdGhlIFwiIHRhcmdldD1cIl9jYXJyaWVkIG91dFNvbWUgb2YgdGhlc2NpZW5jZSBhbmR0aGUgdGltZSBvZkNvbnRhaW5lclwiPm1haW50YWluaW5nQ2hyaXN0b3BoZXJNdWNoIG9mIHRoZXdyaXRpbmdzIG9mXCIgaGVpZ2h0PVwiMnNpemUgb2YgdGhldmVyc2lvbiBvZiBtaXh0dXJlIG9mIGJldHdlZW4gdGhlRXhhbXBsZXMgb2ZlZHVjYXRpb25hbGNvbXBldGl0aXZlIG9uc3VibWl0PVwiZGlyZWN0b3Igb2ZkaXN0aW5jdGl2ZS9EVEQgWEhUTUwgcmVsYXRpbmcgdG90ZW5kZW5jeSB0b3Byb3ZpbmNlIG9md2hpY2ggd291bGRkZXNwaXRlIHRoZXNjaWVudGlmaWMgbGVnaXNsYXR1cmUuaW5uZXJIVE1MIGFsbGVnYXRpb25zQWdyaWN1bHR1cmV3YXMgdXNlZCBpbmFwcHJvYWNoIHRvaW50ZWxsaWdlbnR5ZWFycyBsYXRlcixzYW5zLXNlcmlmZGV0ZXJtaW5pbmdQZXJmb3JtYW5jZWFwcGVhcmFuY2VzLCB3aGljaCBpcyBmb3VuZGF0aW9uc2FiYnJldmlhdGVkaGlnaGVyIHRoYW5zIGZyb20gdGhlIGluZGl2aWR1YWwgY29tcG9zZWQgb2ZzdXBwb3NlZCB0b2NsYWltcyB0aGF0YXR0cmlidXRpb25mb250LXNpemU6MWVsZW1lbnRzIG9mSGlzdG9yaWNhbCBoaXMgYnJvdGhlcmF0IHRoZSB0aW1lYW5uaXZlcnNhcnlnb3Zlcm5lZCBieXJlbGF0ZWQgdG8gdWx0aW1hdGVseSBpbm5vdmF0aW9uc2l0IGlzIHN0aWxsY2FuIG9ubHkgYmVkZWZpbml0aW9uc3RvR01UU3RyaW5nQSBudW1iZXIgb2ZpbWcgY2xhc3M9XCJFdmVudHVhbGx5LHdhcyBjaGFuZ2Vkb2NjdXJyZWQgaW5uZWlnaGJvcmluZ2Rpc3Rpbmd1aXNod2hlbiBoZSB3YXNpbnRyb2R1Y2luZ3RlcnJlc3RyaWFsTWFueSBvZiB0aGVhcmd1ZXMgdGhhdGFuIEFtZXJpY2FuY29ucXVlc3Qgb2Z3aWRlc3ByZWFkIHdlcmUga2lsbGVkc2NyZWVuIGFuZCBJbiBvcmRlciB0b2V4cGVjdGVkIHRvZGVzY2VuZGFudHNhcmUgbG9jYXRlZGxlZ2lzbGF0aXZlZ2VuZXJhdGlvbnMgYmFja2dyb3VuZG1vc3QgcGVvcGxleWVhcnMgYWZ0ZXJ0aGVyZSBpcyBub3RoZSBoaWdoZXN0ZnJlcXVlbnRseSB0aGV5IGRvIG5vdGFyZ3VlZCB0aGF0c2hvd2VkIHRoYXRwcmVkb21pbmFudHRoZW9sb2dpY2FsYnkgdGhlIHRpbWVjb25zaWRlcmluZ3Nob3J0LWxpdmVkPC9zcGFuPjwvYT5jYW4gYmUgdXNlZHZlcnkgbGl0dGxlb25lIG9mIHRoZSBoYWQgYWxyZWFkeWludGVycHJldGVkY29tbXVuaWNhdGVmZWF0dXJlcyBvZmdvdmVybm1lbnQsPC9ub3NjcmlwdD5lbnRlcmVkIHRoZVwiIGhlaWdodD1cIjNJbmRlcGVuZGVudHBvcHVsYXRpb25zbGFyZ2Utc2NhbGUuIEFsdGhvdWdoIHVzZWQgaW4gdGhlZGVzdHJ1Y3Rpb25wb3NzaWJpbGl0eXN0YXJ0aW5nIGludHdvIG9yIG1vcmVleHByZXNzaW9uc3N1Ym9yZGluYXRlbGFyZ2VyIHRoYW5oaXN0b3J5IGFuZDwvb3B0aW9uPlxyXG5Db250aW5lbnRhbGVsaW1pbmF0aW5nd2lsbCBub3QgYmVwcmFjdGljZSBvZmluIGZyb250IG9mc2l0ZSBvZiB0aGVlbnN1cmUgdGhhdHRvIGNyZWF0ZSBhbWlzc2lzc2lwcGlwb3RlbnRpYWxseW91dHN0YW5kaW5nYmV0dGVyIHRoYW53aGF0IGlzIG5vd3NpdHVhdGVkIGlubWV0YSBuYW1lPVwiVHJhZGl0aW9uYWxzdWdnZXN0aW9uc1RyYW5zbGF0aW9udGhlIGZvcm0gb2ZhdG1vc3BoZXJpY2lkZW9sb2dpY2FsZW50ZXJwcmlzZXNjYWxjdWxhdGluZ2Vhc3Qgb2YgdGhlcmVtbmFudHMgb2ZwbHVnaW5zcGFnZS9pbmRleC5waHA/cmVtYWluZWQgaW50cmFuc2Zvcm1lZEhlIHdhcyBhbHNvd2FzIGFscmVhZHlzdGF0aXN0aWNhbGluIGZhdm9yIG9mTWluaXN0cnkgb2Ztb3ZlbWVudCBvZmZvcm11bGF0aW9uaXMgcmVxdWlyZWQ8bGluayByZWw9XCJUaGlzIGlzIHRoZSA8YSBocmVmPVwiL3BvcHVsYXJpemVkaW52b2x2ZWQgaW5hcmUgdXNlZCB0b2FuZCBzZXZlcmFsbWFkZSBieSB0aGVzZWVtcyB0byBiZWxpa2VseSB0aGF0UGFsZXN0aW5pYW5uYW1lZCBhZnRlcml0IGhhZCBiZWVubW9zdCBjb21tb250byByZWZlciB0b2J1dCB0aGlzIGlzY29uc2VjdXRpdmV0ZW1wb3JhcmlseUluIGdlbmVyYWwsY29udmVudGlvbnN0YWtlcyBwbGFjZXN1YmRpdmlzaW9udGVycml0b3JpYWxvcGVyYXRpb25hbHBlcm1hbmVudGx5d2FzIGxhcmdlbHlvdXRicmVhayBvZmluIHRoZSBwYXN0Zm9sbG93aW5nIGEgeG1sbnM6b2c9XCI+PGEgY2xhc3M9XCJjbGFzcz1cInRleHRDb252ZXJzaW9uIG1heSBiZSB1c2VkbWFudWZhY3R1cmVhZnRlciBiZWluZ2NsZWFyZml4XCI+XG5xdWVzdGlvbiBvZndhcyBlbGVjdGVkdG8gYmVjb21lIGFiZWNhdXNlIG9mIHNvbWUgcGVvcGxlaW5zcGlyZWQgYnlzdWNjZXNzZnVsIGEgdGltZSB3aGVubW9yZSBjb21tb25hbW9uZ3N0IHRoZWFuIG9mZmljaWFsd2lkdGg6MTAwJTt0ZWNobm9sb2d5LHdhcyBhZG9wdGVkdG8ga2VlcCB0aGVzZXR0bGVtZW50c2xpdmUgYmlydGhzaW5kZXguaHRtbFwiQ29ubmVjdGljdXRhc3NpZ25lZCB0byZhbXA7dGltZXM7YWNjb3VudCBmb3JhbGlnbj1yaWdodHRoZSBjb21wYW55YWx3YXlzIGJlZW5yZXR1cm5lZCB0b2ludm9sdmVtZW50QmVjYXVzZSB0aGV0aGlzIHBlcmlvZFwiIG5hbWU9XCJxXCIgY29uZmluZWQgdG9hIHJlc3VsdCBvZnZhbHVlPVwiXCIgLz5pcyBhY3R1YWxseUVudmlyb25tZW50XHJcbjwvaGVhZD5cclxuQ29udmVyc2VseSw+XG48ZGl2IGlkPVwiMFwiIHdpZHRoPVwiMWlzIHByb2JhYmx5aGF2ZSBiZWNvbWVjb250cm9sbGluZ3RoZSBwcm9ibGVtY2l0aXplbnMgb2Zwb2xpdGljaWFuc3JlYWNoZWQgdGhlYXMgZWFybHkgYXM6bm9uZTsgb3Zlcjx0YWJsZSBjZWxsdmFsaWRpdHkgb2ZkaXJlY3RseSB0b29ubW91c2Vkb3dud2hlcmUgaXQgaXN3aGVuIGl0IHdhc21lbWJlcnMgb2YgcmVsYXRpb24gdG9hY2NvbW1vZGF0ZWFsb25nIHdpdGggSW4gdGhlIGxhdGV0aGUgRW5nbGlzaGRlbGljaW91c1wiPnRoaXMgaXMgbm90dGhlIHByZXNlbnRpZiB0aGV5IGFyZWFuZCBmaW5hbGx5YSBtYXR0ZXIgb2ZcclxuXHQ8L2Rpdj5cclxuXHJcbjwvc2NyaXB0PmZhc3RlciB0aGFubWFqb3JpdHkgb2ZhZnRlciB3aGljaGNvbXBhcmF0aXZldG8gbWFpbnRhaW5pbXByb3ZlIHRoZWF3YXJkZWQgdGhlZXJcIiBjbGFzcz1cImZyYW1lYm9yZGVycmVzdG9yYXRpb25pbiB0aGUgc2FtZWFuYWx5c2lzIG9mdGhlaXIgZmlyc3REdXJpbmcgdGhlIGNvbnRpbmVudGFsc2VxdWVuY2Ugb2ZmdW5jdGlvbigpe2ZvbnQtc2l6ZTogd29yayBvbiB0aGU8L3NjcmlwdD5cbjxiZWdpbnMgd2l0aGphdmFzY3JpcHQ6Y29uc3RpdHVlbnR3YXMgZm91bmRlZGVxdWlsaWJyaXVtYXNzdW1lIHRoYXRpcyBnaXZlbiBieW5lZWRzIHRvIGJlY29vcmRpbmF0ZXN0aGUgdmFyaW91c2FyZSBwYXJ0IG9mb25seSBpbiB0aGVzZWN0aW9ucyBvZmlzIGEgY29tbW9udGhlb3JpZXMgb2ZkaXNjb3Zlcmllc2Fzc29jaWF0aW9uZWRnZSBvZiB0aGVzdHJlbmd0aCBvZnBvc2l0aW9uIGlucHJlc2VudC1kYXl1bml2ZXJzYWxseXRvIGZvcm0gdGhlYnV0IGluc3RlYWRjb3Jwb3JhdGlvbmF0dGFjaGVkIHRvaXMgY29tbW9ubHlyZWFzb25zIGZvciAmcXVvdDt0aGUgY2FuIGJlIG1hZGV3YXMgYWJsZSB0b3doaWNoIG1lYW5zYnV0IGRpZCBub3Rvbk1vdXNlT3ZlcmFzIHBvc3NpYmxlb3BlcmF0ZWQgYnljb21pbmcgZnJvbXRoZSBwcmltYXJ5YWRkaXRpb24gb2Zmb3Igc2V2ZXJhbHRyYW5zZmVycmVkYSBwZXJpb2Qgb2ZhcmUgYWJsZSB0b2hvd2V2ZXIsIGl0c2hvdWxkIGhhdmVtdWNoIGxhcmdlclxuXHQ8L3NjcmlwdD5hZG9wdGVkIHRoZXByb3BlcnR5IG9mZGlyZWN0ZWQgYnllZmZlY3RpdmVseXdhcyBicm91Z2h0Y2hpbGRyZW4gb2ZQcm9ncmFtbWluZ2xvbmdlciB0aGFubWFudXNjcmlwdHN3YXIgYWdhaW5zdGJ5IG1lYW5zIG9mYW5kIG1vc3Qgb2ZzaW1pbGFyIHRvIHByb3ByaWV0YXJ5b3JpZ2luYXRpbmdwcmVzdGlnaW91c2dyYW1tYXRpY2FsZXhwZXJpZW5jZS50byBtYWtlIHRoZUl0IHdhcyBhbHNvaXMgZm91bmQgaW5jb21wZXRpdG9yc2luIHRoZSBVLlMucmVwbGFjZSB0aGVicm91Z2h0IHRoZWNhbGN1bGF0aW9uZmFsbCBvZiB0aGV0aGUgZ2VuZXJhbHByYWN0aWNhbGx5aW4gaG9ub3Igb2ZyZWxlYXNlZCBpbnJlc2lkZW50aWFsYW5kIHNvbWUgb2ZraW5nIG9mIHRoZXJlYWN0aW9uIHRvMXN0IEVhcmwgb2ZjdWx0dXJlIGFuZHByaW5jaXBhbGx5PC90aXRsZT5cbiAgdGhleSBjYW4gYmViYWNrIHRvIHRoZXNvbWUgb2YgaGlzZXhwb3N1cmUgdG9hcmUgc2ltaWxhcmZvcm0gb2YgdGhlYWRkRmF2b3JpdGVjaXRpemVuc2hpcHBhcnQgaW4gdGhlcGVvcGxlIHdpdGhpbiBwcmFjdGljZXRvIGNvbnRpbnVlJmFtcDttaW51czthcHByb3ZlZCBieSB0aGUgZmlyc3QgYWxsb3dlZCB0aGVhbmQgZm9yIHRoZWZ1bmN0aW9uaW5ncGxheWluZyB0aGVzb2x1dGlvbiB0b2hlaWdodD1cIjBcIiBpbiBoaXMgYm9va21vcmUgdGhhbiBhZm9sbG93cyB0aGVjcmVhdGVkIHRoZXByZXNlbmNlIGluJm5ic3A7PC90ZD5uYXRpb25hbGlzdHRoZSBpZGVhIG9mYSBjaGFyYWN0ZXJ3ZXJlIGZvcmNlZCBjbGFzcz1cImJ0bmRheXMgb2YgdGhlZmVhdHVyZWQgaW5zaG93aW5nIHRoZWludGVyZXN0IGluaW4gcGxhY2Ugb2Z0dXJuIG9mIHRoZXRoZSBoZWFkIG9mTG9yZCBvZiB0aGVwb2xpdGljYWxseWhhcyBpdHMgb3duRWR1Y2F0aW9uYWxhcHByb3ZhbCBvZnNvbWUgb2YgdGhlZWFjaCBvdGhlcixiZWhhdmlvciBvZmFuZCBiZWNhdXNlYW5kIGFub3RoZXJhcHBlYXJlZCBvbnJlY29yZGVkIGluYmxhY2smcXVvdDttYXkgaW5jbHVkZXRoZSB3b3JsZCdzY2FuIGxlYWQgdG9yZWZlcnMgdG8gYWJvcmRlcj1cIjBcIiBnb3Zlcm5tZW50IHdpbm5pbmcgdGhlcmVzdWx0ZWQgaW4gd2hpbGUgdGhlIFdhc2hpbmd0b24sdGhlIHN1YmplY3RjaXR5IGluIHRoZT48L2Rpdj5cclxuXHRcdHJlZmxlY3QgdGhldG8gY29tcGxldGViZWNhbWUgbW9yZXJhZGlvYWN0aXZlcmVqZWN0ZWQgYnl3aXRob3V0IGFueWhpcyBmYXRoZXIsd2hpY2ggY291bGRjb3B5IG9mIHRoZXRvIGluZGljYXRlYSBwb2xpdGljYWxhY2NvdW50cyBvZmNvbnN0aXR1dGVzd29ya2VkIHdpdGhlcjwvYT48L2xpPm9mIGhpcyBsaWZlYWNjb21wYW5pZWRjbGllbnRXaWR0aHByZXZlbnQgdGhlTGVnaXNsYXRpdmVkaWZmZXJlbnRseXRvZ2V0aGVyIGluaGFzIHNldmVyYWxmb3IgYW5vdGhlcnRleHQgb2YgdGhlZm91bmRlZCB0aGVlIHdpdGggdGhlIGlzIHVzZWQgZm9yY2hhbmdlZCB0aGV1c3VhbGx5IHRoZXBsYWNlIHdoZXJld2hlcmVhcyB0aGU+IDxhIGhyZWY9XCJcIj48YSBocmVmPVwidGhlbXNlbHZlcyxhbHRob3VnaCBoZXRoYXQgY2FuIGJldHJhZGl0aW9uYWxyb2xlIG9mIHRoZWFzIGEgcmVzdWx0cmVtb3ZlQ2hpbGRkZXNpZ25lZCBieXdlc3Qgb2YgdGhlU29tZSBwZW9wbGVwcm9kdWN0aW9uLHNpZGUgb2YgdGhlbmV3c2xldHRlcnN1c2VkIGJ5IHRoZWRvd24gdG8gdGhlYWNjZXB0ZWQgYnlsaXZlIGluIHRoZWF0dGVtcHRzIHRvb3V0c2lkZSB0aGVmcmVxdWVuY2llc0hvd2V2ZXIsIGlucHJvZ3JhbW1lcnNhdCBsZWFzdCBpbmFwcHJveGltYXRlYWx0aG91Z2ggaXR3YXMgcGFydCBvZmFuZCB2YXJpb3VzR292ZXJub3Igb2Z0aGUgYXJ0aWNsZXR1cm5lZCBpbnRvPjxhIGhyZWY9XCIvdGhlIGVjb25vbXlpcyB0aGUgbW9zdG1vc3Qgd2lkZWx5d291bGQgbGF0ZXJhbmQgcGVyaGFwc3Jpc2UgdG8gdGhlb2NjdXJzIHdoZW51bmRlciB3aGljaGNvbmRpdGlvbnMudGhlIHdlc3Rlcm50aGVvcnkgdGhhdGlzIHByb2R1Y2VkdGhlIGNpdHkgb2ZpbiB3aGljaCBoZXNlZW4gaW4gdGhldGhlIGNlbnRyYWxidWlsZGluZyBvZm1hbnkgb2YgaGlzYXJlYSBvZiB0aGVpcyB0aGUgb25seW1vc3Qgb2YgdGhlbWFueSBvZiB0aGV0aGUgV2VzdGVyblRoZXJlIGlzIG5vZXh0ZW5kZWQgdG9TdGF0aXN0aWNhbGNvbHNwYW49MiB8c2hvcnQgc3Rvcnlwb3NzaWJsZSB0b3RvcG9sb2dpY2FsY3JpdGljYWwgb2ZyZXBvcnRlZCB0b2EgQ2hyaXN0aWFuZGVjaXNpb24gdG9pcyBlcXVhbCB0b3Byb2JsZW1zIG9mVGhpcyBjYW4gYmVtZXJjaGFuZGlzZWZvciBtb3N0IG9mbm8gZXZpZGVuY2VlZGl0aW9ucyBvZmVsZW1lbnRzIGluJnF1b3Q7LiBUaGVjb20vaW1hZ2VzL3doaWNoIG1ha2VzdGhlIHByb2Nlc3NyZW1haW5zIHRoZWxpdGVyYXR1cmUsaXMgYSBtZW1iZXJ0aGUgcG9wdWxhcnRoZSBhbmNpZW50cHJvYmxlbXMgaW50aW1lIG9mIHRoZWRlZmVhdGVkIGJ5Ym9keSBvZiB0aGVhIGZldyB5ZWFyc211Y2ggb2YgdGhldGhlIHdvcmsgb2ZDYWxpZm9ybmlhLHNlcnZlZCBhcyBhZ292ZXJubWVudC5jb25jZXB0cyBvZm1vdmVtZW50IGluXHRcdDxkaXYgaWQ9XCJpdFwiIHZhbHVlPVwibGFuZ3VhZ2Ugb2ZhcyB0aGV5IGFyZXByb2R1Y2VkIGluaXMgdGhhdCB0aGVleHBsYWluIHRoZWRpdj48L2Rpdj5cbkhvd2V2ZXIgdGhlbGVhZCB0byB0aGVcdDxhIGhyZWY9XCIvd2FzIGdyYW50ZWRwZW9wbGUgaGF2ZWNvbnRpbnVhbGx5d2FzIHNlZW4gYXNhbmQgcmVsYXRlZHRoZSByb2xlIG9mcHJvcG9zZWQgYnlvZiB0aGUgYmVzdGVhY2ggb3RoZXIuQ29uc3RhbnRpbmVwZW9wbGUgZnJvbWRpYWxlY3RzIG9mdG8gcmV2aXNpb253YXMgcmVuYW1lZGEgc291cmNlIG9mdGhlIGluaXRpYWxsYXVuY2hlZCBpbnByb3ZpZGUgdGhldG8gdGhlIHdlc3R3aGVyZSB0aGVyZWFuZCBzaW1pbGFyYmV0d2VlbiB0d29pcyBhbHNvIHRoZUVuZ2xpc2ggYW5kY29uZGl0aW9ucyx0aGF0IGl0IHdhc2VudGl0bGVkIHRvdGhlbXNlbHZlcy5xdWFudGl0eSBvZnJhbnNwYXJlbmN5dGhlIHNhbWUgYXN0byBqb2luIHRoZWNvdW50cnkgYW5kdGhpcyBpcyB0aGVUaGlzIGxlZCB0b2Egc3RhdGVtZW50Y29udHJhc3QgdG9sYXN0SW5kZXhPZnRocm91Z2ggaGlzaXMgZGVzaWduZWR0aGUgdGVybSBpc2lzIHByb3ZpZGVkcHJvdGVjdCB0aGVuZzwvYT48L2xpPlRoZSBjdXJyZW50dGhlIHNpdGUgb2ZzdWJzdGFudGlhbGV4cGVyaWVuY2UsaW4gdGhlIFdlc3R0aGV5IHNob3VsZHNsb3ZlbkRccmluYWNvbWVudGFyaW9zdW5pdmVyc2lkYWRjb25kaWNpb25lc2FjdGl2aWRhZGVzZXhwZXJpZW5jaWF0ZWNub2xvZ0MtYXByb2R1Y2NpQzNucHVudHVhY2lDM25hcGxpY2FjaUMzbmNvbnRyYXNlQzFhY2F0ZWdvckMtYXNyZWdpc3RyYXJzZXByb2Zlc2lvbmFsdHJhdGFtaWVudG9yZWdDLXN0cmF0ZXNlY3JldGFyQy1hcHJpbmNpcGFsZXNwcm90ZWNjaUMzbmltcG9ydGFudGVzaW1wb3J0YW5jaWFwb3NpYmlsaWRhZGludGVyZXNhbnRlY3JlY2ltaWVudG9uZWNlc2lkYWRlc3N1c2NyaWJpcnNlYXNvY2lhY2lDM25kaXNwb25pYmxlc2V2YWx1YWNpQzNuZXN0dWRpYW50ZXNyZXNwb25zYWJsZXJlc29sdWNpQzNuZ3VhZGFsYWphcmFyZWdpc3RyYWRvc29wb3J0dW5pZGFkY29tZXJjaWFsZXNmb3RvZ3JhZkMtYWF1dG9yaWRhZGVzaW5nZW5pZXJDLWF0ZWxldmlzaUMzbmNvbXBldGVuY2lhb3BlcmFjaW9uZXNlc3RhYmxlY2lkb3NpbXBsZW1lbnRlYWN0dWFsbWVudGVuYXZlZ2FjaUMzbmNvbmZvcm1pZGFkbGluZS1oZWlnaHQ6Zm9udC1mYW1pbHk6XCIgOiBcImh0dHA6Ly9hcHBsaWNhdGlvbnNsaW5rXCIgaHJlZj1cInNwZWNpZmljYWxseS8vPCFbQ0RBVEFbXG5Pcmdhbml6YXRpb25kaXN0cmlidXRpb24wcHg7IGhlaWdodDpyZWxhdGlvbnNoaXBkZXZpY2Utd2lkdGg8ZGl2IGNsYXNzPVwiPGxhYmVsIGZvcj1cInJlZ2lzdHJhdGlvbjwvbm9zY3JpcHQ+XG4vaW5kZXguaHRtbFwid2luZG93Lm9wZW4oICFpbXBvcnRhbnQ7YXBwbGljYXRpb24vaW5kZXBlbmRlbmNlLy93d3cuZ29vZ2xlb3JnYW5pemF0aW9uYXV0b2NvbXBsZXRlcmVxdWlyZW1lbnRzY29uc2VydmF0aXZlPGZvcm0gbmFtZT1cImludGVsbGVjdHVhbG1hcmdpbi1sZWZ0OjE4dGggY2VudHVyeWFuIGltcG9ydGFudGluc3RpdHV0aW9uc2FiYnJldmlhdGlvbjxpbWcgY2xhc3M9XCJvcmdhbmlzYXRpb25jaXZpbGl6YXRpb24xOXRoIGNlbnR1cnlhcmNoaXRlY3R1cmVpbmNvcnBvcmF0ZWQyMHRoIGNlbnR1cnktY29udGFpbmVyXCI+bW9zdCBub3RhYmx5Lz48L2E+PC9kaXY+bm90aWZpY2F0aW9uJ3VuZGVmaW5lZCcpRnVydGhlcm1vcmUsYmVsaWV2ZSB0aGF0aW5uZXJIVE1MID0gcHJpb3IgdG8gdGhlZHJhbWF0aWNhbGx5cmVmZXJyaW5nIHRvbmVnb3RpYXRpb25zaGVhZHF1YXJ0ZXJzU291dGggQWZyaWNhdW5zdWNjZXNzZnVsUGVubnN5bHZhbmlhQXMgYSByZXN1bHQsPGh0bWwgbGFuZz1cIiZsdDsvc3VwJmd0O2RlYWxpbmcgd2l0aHBoaWxhZGVscGhpYWhpc3RvcmljYWxseSk7PC9zY3JpcHQ+XG5wYWRkaW5nLXRvcDpleHBlcmltZW50YWxnZXRBdHRyaWJ1dGVpbnN0cnVjdGlvbnN0ZWNobm9sb2dpZXNwYXJ0IG9mIHRoZSA9ZnVuY3Rpb24oKXtzdWJzY3JpcHRpb25sLmR0ZFwiPlxyXG48aHRnZW9ncmFwaGljYWxDb25zdGl0dXRpb24nLCBmdW5jdGlvbihzdXBwb3J0ZWQgYnlhZ3JpY3VsdHVyYWxjb25zdHJ1Y3Rpb25wdWJsaWNhdGlvbnNmb250LXNpemU6IDFhIHZhcmlldHkgb2Y8ZGl2IHN0eWxlPVwiRW5jeWNsb3BlZGlhaWZyYW1lIHNyYz1cImRlbW9uc3RyYXRlZGFjY29tcGxpc2hlZHVuaXZlcnNpdGllc0RlbW9ncmFwaGljcyk7PC9zY3JpcHQ+PGRlZGljYXRlZCB0b2tub3dsZWRnZSBvZnNhdGlzZmFjdGlvbnBhcnRpY3VsYXJseTwvZGl2PjwvZGl2PkVuZ2xpc2ggKFVTKWFwcGVuZENoaWxkKHRyYW5zbWlzc2lvbnMuIEhvd2V2ZXIsIGludGVsbGlnZW5jZVwiIHRhYmluZGV4PVwiZmxvYXQ6cmlnaHQ7Q29tbW9ud2VhbHRocmFuZ2luZyBmcm9taW4gd2hpY2ggdGhlYXQgbGVhc3Qgb25lcmVwcm9kdWN0aW9uZW5jeWNsb3BlZGlhO2ZvbnQtc2l6ZToxanVyaXNkaWN0aW9uYXQgdGhhdCB0aW1lXCI+PGEgY2xhc3M9XCJJbiBhZGRpdGlvbixkZXNjcmlwdGlvbitjb252ZXJzYXRpb25jb250YWN0IHdpdGhpcyBnZW5lcmFsbHlyXCIgY29udGVudD1cInJlcHJlc2VudGluZyZsdDttYXRoJmd0O3ByZXNlbnRhdGlvbm9jY2FzaW9uYWxseTxpbWcgd2lkdGg9XCJuYXZpZ2F0aW9uXCI+Y29tcGVuc2F0aW9uY2hhbXBpb25zaGlwbWVkaWE9XCJhbGxcIiB2aW9sYXRpb24gb2ZyZWZlcmVuY2UgdG9yZXR1cm4gdHJ1ZTtTdHJpY3QvL0VOXCIgdHJhbnNhY3Rpb25zaW50ZXJ2ZW50aW9udmVyaWZpY2F0aW9uSW5mb3JtYXRpb24gZGlmZmljdWx0aWVzQ2hhbXBpb25zaGlwY2FwYWJpbGl0aWVzPCFbZW5kaWZdLS0+fVxuPC9zY3JpcHQ+XG5DaHJpc3RpYW5pdHlmb3IgZXhhbXBsZSxQcm9mZXNzaW9uYWxyZXN0cmljdGlvbnNzdWdnZXN0IHRoYXR3YXMgcmVsZWFzZWQoc3VjaCBhcyB0aGVyZW1vdmVDbGFzcyh1bmVtcGxveW1lbnR0aGUgQW1lcmljYW5zdHJ1Y3R1cmUgb2YvaW5kZXguaHRtbCBwdWJsaXNoZWQgaW5zcGFuIGNsYXNzPVwiXCI+PGEgaHJlZj1cIi9pbnRyb2R1Y3Rpb25iZWxvbmdpbmcgdG9jbGFpbWVkIHRoYXRjb25zZXF1ZW5jZXM8bWV0YSBuYW1lPVwiR3VpZGUgdG8gdGhlb3ZlcndoZWxtaW5nYWdhaW5zdCB0aGUgY29uY2VudHJhdGVkLFxuLm5vbnRvdWNoIG9ic2VydmF0aW9uczwvYT5cbjwvZGl2PlxuZiAoZG9jdW1lbnQuYm9yZGVyOiAxcHgge2ZvbnQtc2l6ZToxdHJlYXRtZW50IG9mMFwiIGhlaWdodD1cIjFtb2RpZmljYXRpb25JbmRlcGVuZGVuY2VkaXZpZGVkIGludG9ncmVhdGVyIHRoYW5hY2hpZXZlbWVudHNlc3RhYmxpc2hpbmdKYXZhU2NyaXB0XCIgbmV2ZXJ0aGVsZXNzc2lnbmlmaWNhbmNlQnJvYWRjYXN0aW5nPiZuYnNwOzwvdGQ+Y29udGFpbmVyXCI+XG5zdWNoIGFzIHRoZSBpbmZsdWVuY2Ugb2ZhIHBhcnRpY3VsYXJzcmM9J2h0dHA6Ly9uYXZpZ2F0aW9uXCIgaGFsZiBvZiB0aGUgc3Vic3RhbnRpYWwgJm5ic3A7PC9kaXY+YWR2YW50YWdlIG9mZGlzY292ZXJ5IG9mZnVuZGFtZW50YWwgbWV0cm9wb2xpdGFudGhlIG9wcG9zaXRlXCIgeG1sOmxhbmc9XCJkZWxpYmVyYXRlbHlhbGlnbj1jZW50ZXJldm9sdXRpb24gb2ZwcmVzZXJ2YXRpb25pbXByb3ZlbWVudHNiZWdpbm5pbmcgaW5KZXN1cyBDaHJpc3RQdWJsaWNhdGlvbnNkaXNhZ3JlZW1lbnR0ZXh0LWFsaWduOnIsIGZ1bmN0aW9uKClzaW1pbGFyaXRpZXNib2R5PjwvaHRtbD5pcyBjdXJyZW50bHlhbHBoYWJldGljYWxpcyBzb21ldGltZXN0eXBlPVwiaW1hZ2UvbWFueSBvZiB0aGUgZmxvdzpoaWRkZW47YXZhaWxhYmxlIGluZGVzY3JpYmUgdGhlZXhpc3RlbmNlIG9mYWxsIG92ZXIgdGhldGhlIEludGVybmV0XHQ8dWwgY2xhc3M9XCJpbnN0YWxsYXRpb25uZWlnaGJvcmhvb2Rhcm1lZCBmb3JjZXNyZWR1Y2luZyB0aGVjb250aW51ZXMgdG9Ob25ldGhlbGVzcyx0ZW1wZXJhdHVyZXNcblx0XHQ8YSBocmVmPVwiY2xvc2UgdG8gdGhlZXhhbXBsZXMgb2YgaXMgYWJvdXQgdGhlKHNlZSBiZWxvdykuXCIgaWQ9XCJzZWFyY2hwcm9mZXNzaW9uYWxpcyBhdmFpbGFibGV0aGUgb2ZmaWNpYWxcdFx0PC9zY3JpcHQ+XG5cblx0XHQ8ZGl2IGlkPVwiYWNjZWxlcmF0aW9udGhyb3VnaCB0aGUgSGFsbCBvZiBGYW1lZGVzY3JpcHRpb25zdHJhbnNsYXRpb25zaW50ZXJmZXJlbmNlIHR5cGU9J3RleHQvcmVjZW50IHllYXJzaW4gdGhlIHdvcmxkdmVyeSBwb3B1bGFye2JhY2tncm91bmQ6dHJhZGl0aW9uYWwgc29tZSBvZiB0aGUgY29ubmVjdGVkIHRvZXhwbG9pdGF0aW9uZW1lcmdlbmNlIG9mY29uc3RpdHV0aW9uQSBIaXN0b3J5IG9mc2lnbmlmaWNhbnQgbWFudWZhY3R1cmVkZXhwZWN0YXRpb25zPjxub3NjcmlwdD48Y2FuIGJlIGZvdW5kYmVjYXVzZSB0aGUgaGFzIG5vdCBiZWVubmVpZ2hib3VyaW5nd2l0aG91dCB0aGUgYWRkZWQgdG8gdGhlXHQ8bGkgY2xhc3M9XCJpbnN0cnVtZW50YWxTb3ZpZXQgVW5pb25hY2tub3dsZWRnZWR3aGljaCBjYW4gYmVuYW1lIGZvciB0aGVhdHRlbnRpb24gdG9hdHRlbXB0cyB0byBkZXZlbG9wbWVudHNJbiBmYWN0LCB0aGU8bGkgY2xhc3M9XCJhaW1wbGljYXRpb25zc3VpdGFibGUgZm9ybXVjaCBvZiB0aGUgY29sb25pemF0aW9ucHJlc2lkZW50aWFsY2FuY2VsQnViYmxlIEluZm9ybWF0aW9ubW9zdCBvZiB0aGUgaXMgZGVzY3JpYmVkcmVzdCBvZiB0aGUgbW9yZSBvciBsZXNzaW4gU2VwdGVtYmVySW50ZWxsaWdlbmNlc3JjPVwiaHR0cDovL3B4OyBoZWlnaHQ6IGF2YWlsYWJsZSB0b21hbnVmYWN0dXJlcmh1bWFuIHJpZ2h0c2xpbmsgaHJlZj1cIi9hdmFpbGFiaWxpdHlwcm9wb3J0aW9uYWxvdXRzaWRlIHRoZSBhc3Ryb25vbWljYWxodW1hbiBiZWluZ3NuYW1lIG9mIHRoZSBhcmUgZm91bmQgaW5hcmUgYmFzZWQgb25zbWFsbGVyIHRoYW5hIHBlcnNvbiB3aG9leHBhbnNpb24gb2Zhcmd1aW5nIHRoYXRub3cga25vd24gYXNJbiB0aGUgZWFybHlpbnRlcm1lZGlhdGVkZXJpdmVkIGZyb21TY2FuZGluYXZpYW48L2E+PC9kaXY+XHJcbmNvbnNpZGVyIHRoZWFuIGVzdGltYXRlZHRoZSBOYXRpb25hbDxkaXYgaWQ9XCJwYWdyZXN1bHRpbmcgaW5jb21taXNzaW9uZWRhbmFsb2dvdXMgdG9hcmUgcmVxdWlyZWQvdWw+XG48L2Rpdj5cbndhcyBiYXNlZCBvbmFuZCBiZWNhbWUgYSZuYnNwOyZuYnNwO3RcIiB2YWx1ZT1cIlwiIHdhcyBjYXB0dXJlZG5vIG1vcmUgdGhhbnJlc3BlY3RpdmVseWNvbnRpbnVlIHRvID5cclxuPGhlYWQ+XHJcbjx3ZXJlIGNyZWF0ZWRtb3JlIGdlbmVyYWxpbmZvcm1hdGlvbiB1c2VkIGZvciB0aGVpbmRlcGVuZGVudCB0aGUgSW1wZXJpYWxjb21wb25lbnQgb2Z0byB0aGUgbm9ydGhpbmNsdWRlIHRoZSBDb25zdHJ1Y3Rpb25zaWRlIG9mIHRoZSB3b3VsZCBub3QgYmVmb3IgaW5zdGFuY2VpbnZlbnRpb24gb2Ztb3JlIGNvbXBsZXhjb2xsZWN0aXZlbHliYWNrZ3JvdW5kOiB0ZXh0LWFsaWduOiBpdHMgb3JpZ2luYWxpbnRvIGFjY291bnR0aGlzIHByb2Nlc3NhbiBleHRlbnNpdmVob3dldmVyLCB0aGV0aGV5IGFyZSBub3RyZWplY3RlZCB0aGVjcml0aWNpc20gb2ZkdXJpbmcgd2hpY2hwcm9iYWJseSB0aGV0aGlzIGFydGljbGUoZnVuY3Rpb24oKXtJdCBzaG91bGQgYmVhbiBhZ3JlZW1lbnRhY2NpZGVudGFsbHlkaWZmZXJzIGZyb21BcmNoaXRlY3R1cmViZXR0ZXIga25vd25hcnJhbmdlbWVudHNpbmZsdWVuY2Ugb25hdHRlbmRlZCB0aGVpZGVudGljYWwgdG9zb3V0aCBvZiB0aGVwYXNzIHRocm91Z2h4bWxcIiB0aXRsZT1cIndlaWdodDpib2xkO2NyZWF0aW5nIHRoZWRpc3BsYXk6bm9uZXJlcGxhY2VkIHRoZTxpbWcgc3JjPVwiL2lodHRwczovL3d3dy5Xb3JsZCBXYXIgSUl0ZXN0aW1vbmlhbHNmb3VuZCBpbiB0aGVyZXF1aXJlZCB0byBhbmQgdGhhdCB0aGViZXR3ZWVuIHRoZSB3YXMgZGVzaWduZWRjb25zaXN0cyBvZiBjb25zaWRlcmFibHlwdWJsaXNoZWQgYnl0aGUgbGFuZ3VhZ2VDb25zZXJ2YXRpb25jb25zaXN0ZWQgb2ZyZWZlciB0byB0aGViYWNrIHRvIHRoZSBjc3NcIiBtZWRpYT1cIlBlb3BsZSBmcm9tIGF2YWlsYWJsZSBvbnByb3ZlZCB0byBiZXN1Z2dlc3Rpb25zXCJ3YXMga25vd24gYXN2YXJpZXRpZXMgb2ZsaWtlbHkgdG8gYmVjb21wcmlzZWQgb2ZzdXBwb3J0IHRoZSBoYW5kcyBvZiB0aGVjb3VwbGVkIHdpdGhjb25uZWN0IGFuZCBib3JkZXI6bm9uZTtwZXJmb3JtYW5jZXNiZWZvcmUgYmVpbmdsYXRlciBiZWNhbWVjYWxjdWxhdGlvbnNvZnRlbiBjYWxsZWRyZXNpZGVudHMgb2ZtZWFuaW5nIHRoYXQ+PGxpIGNsYXNzPVwiZXZpZGVuY2UgZm9yZXhwbGFuYXRpb25zZW52aXJvbm1lbnRzXCI+PC9hPjwvZGl2PndoaWNoIGFsbG93c0ludHJvZHVjdGlvbmRldmVsb3BlZCBieWEgd2lkZSByYW5nZW9uIGJlaGFsZiBvZnZhbGlnbj1cInRvcFwicHJpbmNpcGxlIG9mYXQgdGhlIHRpbWUsPC9ub3NjcmlwdD5ccnNhaWQgdG8gaGF2ZWluIHRoZSBmaXJzdHdoaWxlIG90aGVyc2h5cG90aGV0aWNhbHBoaWxvc29waGVyc3Bvd2VyIG9mIHRoZWNvbnRhaW5lZCBpbnBlcmZvcm1lZCBieWluYWJpbGl0eSB0b3dlcmUgd3JpdHRlbnNwYW4gc3R5bGU9XCJpbnB1dCBuYW1lPVwidGhlIHF1ZXN0aW9uaW50ZW5kZWQgZm9ycmVqZWN0aW9uIG9maW1wbGllcyB0aGF0aW52ZW50ZWQgdGhldGhlIHN0YW5kYXJkd2FzIHByb2JhYmx5bGluayBiZXR3ZWVucHJvZmVzc29yIG9maW50ZXJhY3Rpb25zY2hhbmdpbmcgdGhlSW5kaWFuIE9jZWFuIGNsYXNzPVwibGFzdHdvcmtpbmcgd2l0aCdodHRwOi8vd3d3LnllYXJzIGJlZm9yZVRoaXMgd2FzIHRoZXJlY3JlYXRpb25hbGVudGVyaW5nIHRoZW1lYXN1cmVtZW50c2FuIGV4dHJlbWVseXZhbHVlIG9mIHRoZXN0YXJ0IG9mIHRoZVxuPC9zY3JpcHQ+XG5cbmFuIGVmZm9ydCB0b2luY3JlYXNlIHRoZXRvIHRoZSBzb3V0aHNwYWNpbmc9XCIwXCI+c3VmZmljaWVudGx5dGhlIEV1cm9wZWFuY29udmVydGVkIHRvY2xlYXJUaW1lb3V0ZGlkIG5vdCBoYXZlY29uc2VxdWVudGx5Zm9yIHRoZSBuZXh0ZXh0ZW5zaW9uIG9mZWNvbm9taWMgYW5kYWx0aG91Z2ggdGhlYXJlIHByb2R1Y2VkYW5kIHdpdGggdGhlaW5zdWZmaWNpZW50Z2l2ZW4gYnkgdGhlc3RhdGluZyB0aGF0ZXhwZW5kaXR1cmVzPC9zcGFuPjwvYT5cbnRob3VnaHQgdGhhdG9uIHRoZSBiYXNpc2NlbGxwYWRkaW5nPWltYWdlIG9mIHRoZXJldHVybmluZyB0b2luZm9ybWF0aW9uLHNlcGFyYXRlZCBieWFzc2Fzc2luYXRlZHNcIiBjb250ZW50PVwiYXV0aG9yaXR5IG9mbm9ydGh3ZXN0ZXJuPC9kaXY+XG48ZGl2IFwiPjwvZGl2PlxyXG4gIGNvbnN1bHRhdGlvbmNvbW11bml0eSBvZnRoZSBuYXRpb25hbGl0IHNob3VsZCBiZXBhcnRpY2lwYW50cyBhbGlnbj1cImxlZnR0aGUgZ3JlYXRlc3RzZWxlY3Rpb24gb2ZzdXBlcm5hdHVyYWxkZXBlbmRlbnQgb25pcyBtZW50aW9uZWRhbGxvd2luZyB0aGV3YXMgaW52ZW50ZWRhY2NvbXBhbnlpbmdoaXMgcGVyc29uYWxhdmFpbGFibGUgYXRzdHVkeSBvZiB0aGVvbiB0aGUgb3RoZXJleGVjdXRpb24gb2ZIdW1hbiBSaWdodHN0ZXJtcyBvZiB0aGVhc3NvY2lhdGlvbnNyZXNlYXJjaCBhbmRzdWNjZWVkZWQgYnlkZWZlYXRlZCB0aGVhbmQgZnJvbSB0aGVidXQgdGhleSBhcmVjb21tYW5kZXIgb2ZzdGF0ZSBvZiB0aGV5ZWFycyBvZiBhZ2V0aGUgc3R1ZHkgb2Y8dWwgY2xhc3M9XCJzcGxhY2UgaW4gdGhld2hlcmUgaGUgd2FzPGxpIGNsYXNzPVwiZnRoZXJlIGFyZSBub3doaWNoIGJlY2FtZWhlIHB1Ymxpc2hlZGV4cHJlc3NlZCBpbnRvIHdoaWNoIHRoZWNvbW1pc3Npb25lcmZvbnQtd2VpZ2h0OnRlcnJpdG9yeSBvZmV4dGVuc2lvbnNcIj5Sb21hbiBFbXBpcmVlcXVhbCB0byB0aGVJbiBjb250cmFzdCxob3dldmVyLCBhbmRpcyB0eXBpY2FsbHlhbmQgaGlzIHdpZmUoYWxzbyBjYWxsZWQ+PHVsIGNsYXNzPVwiZWZmZWN0aXZlbHkgZXZvbHZlZCBpbnRvc2VlbSB0byBoYXZld2hpY2ggaXMgdGhldGhlcmUgd2FzIG5vYW4gZXhjZWxsZW50YWxsIG9mIHRoZXNlZGVzY3JpYmVkIGJ5SW4gcHJhY3RpY2UsYnJvYWRjYXN0aW5nY2hhcmdlZCB3aXRocmVmbGVjdGVkIGluc3ViamVjdGVkIHRvbWlsaXRhcnkgYW5kdG8gdGhlIHBvaW50ZWNvbm9taWNhbGx5c2V0VGFyZ2V0aW5nYXJlIGFjdHVhbGx5dmljdG9yeSBvdmVyKCk7PC9zY3JpcHQ+Y29udGludW91c2x5cmVxdWlyZWQgZm9yZXZvbHV0aW9uYXJ5YW4gZWZmZWN0aXZlbm9ydGggb2YgdGhlLCB3aGljaCB3YXMgZnJvbnQgb2YgdGhlb3Igb3RoZXJ3aXNlc29tZSBmb3JtIG9maGFkIG5vdCBiZWVuZ2VuZXJhdGVkIGJ5aW5mb3JtYXRpb24ucGVybWl0dGVkIHRvaW5jbHVkZXMgdGhlZGV2ZWxvcG1lbnQsZW50ZXJlZCBpbnRvdGhlIHByZXZpb3VzY29uc2lzdGVudGx5YXJlIGtub3duIGFzdGhlIGZpZWxkIG9mdGhpcyB0eXBlIG9mZ2l2ZW4gdG8gdGhldGhlIHRpdGxlIG9mY29udGFpbnMgdGhlaW5zdGFuY2VzIG9maW4gdGhlIG5vcnRoZHVlIHRvIHRoZWlyYXJlIGRlc2lnbmVkY29ycG9yYXRpb25zd2FzIHRoYXQgdGhlb25lIG9mIHRoZXNlbW9yZSBwb3B1bGFyc3VjY2VlZGVkIGluc3VwcG9ydCBmcm9taW4gZGlmZmVyZW50ZG9taW5hdGVkIGJ5ZGVzaWduZWQgZm9yb3duZXJzaGlwIG9mYW5kIHBvc3NpYmx5c3RhbmRhcmRpemVkcmVzcG9uc2VUZXh0d2FzIGludGVuZGVkcmVjZWl2ZWQgdGhlYXNzdW1lZCB0aGF0YXJlYXMgb2YgdGhlcHJpbWFyaWx5IGludGhlIGJhc2lzIG9maW4gdGhlIHNlbnNlYWNjb3VudHMgZm9yZGVzdHJveWVkIGJ5YXQgbGVhc3QgdHdvd2FzIGRlY2xhcmVkY291bGQgbm90IGJlU2VjcmV0YXJ5IG9mYXBwZWFyIHRvIGJlbWFyZ2luLXRvcDoxL15cXHMrfFxccyskL2dlKXt0aHJvdyBlfTt0aGUgc3RhcnQgb2Z0d28gc2VwYXJhdGVsYW5ndWFnZSBhbmR3aG8gaGFkIGJlZW5vcGVyYXRpb24gb2ZkZWF0aCBvZiB0aGVyZWFsIG51bWJlcnNcdDxsaW5rIHJlbD1cInByb3ZpZGVkIHRoZXRoZSBzdG9yeSBvZmNvbXBldGl0aW9uc2VuZ2xpc2ggKFVLKWVuZ2xpc2ggKFVTKVBcdTAwMUNQPlA9UDNQPlA7UCFRXHUwMDAwUD9RXHUwMDAxUDpQOFFcdTAwMDFRXHUwMDAwUD9RXHUwMDAxUDpQOFFcdTAwMDFRXHUwMDAwUD9RXHUwMDAxUDpQPllcdTAwMDRYOVgxWChZXG5YKWYtI2krXHUwMDE0ZDgtZlx1MDAxNlx1MDAwN2cuXHUwMDAwZD1cdTAwMTNkOC1mXHUwMDE2XHUwMDA3ZzlcdTAwMDFkPVx1MDAxM2Q4LWZcdTAwMTZcdTAwMDdmXHUwMDFDXHRpXHUwMDE5XHUwMDEwZVx1MDAwNSxlXHUwMDBGOGQ6OmYwXHUwMDExZlx1MDAxND9lOlx1MDAxQ2lcdTAwMTg/aVx1MDAwN1x1MDAwQ2U3NGU3NGckPmQ8XHUwMDFBZDg7ZDlcdGZcdTAwMTNccmQ9XHUwMDFDZzM7ZztcdTAwMUZmXHUwMDE0P2ctXHUwMDE2ZjNcdTAwMTVoJ1x1MDAwNGluZm9ybWFjaUMzbmhlcnJhbWllbnRhc2VsZWN0ckMzbmljb2Rlc2NyaXBjaUMzbmNsYXNpZmljYWRvc2Nvbm9jaW1pZW50b3B1YmxpY2FjaUMzbnJlbGFjaW9uYWRhc2luZm9ybUMhdGljYXJlbGFjaW9uYWRvc2RlcGFydGFtZW50b3RyYWJhamFkb3Jlc2RpcmVjdGFtZW50ZWF5dW50YW1pZW50b21lcmNhZG9MaWJyZWNvbnRDIWN0ZW5vc2hhYml0YWNpb25lc2N1bXBsaW1pZW50b3Jlc3RhdXJhbnRlc2Rpc3Bvc2ljaUMzbmNvbnNlY3VlbmNpYWVsZWN0ckMzbmljYWFwbGljYWNpb25lc2Rlc2NvbmVjdGFkb2luc3RhbGFjaUMzbnJlYWxpemFjaUMzbnV0aWxpemFjaUMzbmVuY2ljbG9wZWRpYWVuZmVybWVkYWRlc2luc3RydW1lbnRvc2V4cGVyaWVuY2lhc2luc3RpdHVjaUMzbnBhcnRpY3VsYXJlc3N1YmNhdGVnb3JpYVFcdTAwMDJQPlA7UVx1MDAwQ1A6UD5QIFA+UVx1MDAwMVFcdTAwMDFQOFA4UVx1MDAwMFAwUDFQPlFcdTAwMDJRXHUwMDBCUDFQPlA7UVx1MDAwQ1FcdTAwMDhQNVA/UVx1MDAwMFA+UVx1MDAwMVFcdTAwMDJQPlA8UD5QNlA1UVx1MDAwMlA1UDRRXHUwMDAwUVx1MDAwM1AzUDhRXHUwMDA1UVx1MDAwMVA7UVx1MDAwM1FcdTAwMDdQMFA1UVx1MDAwMVA1UDlRXHUwMDA3UDBRXHUwMDAxUDJRXHUwMDAxUDVQM1A0UDBQIFA+UVx1MDAwMVFcdTAwMDFQOFFcdTAwMEZQXHUwMDFDUD5RXHUwMDAxUDpQMlA1UDRRXHUwMDAwUVx1MDAwM1AzUDhQNVAzUD5RXHUwMDAwUD5QNFAwUDJQPlA/UVx1MDAwMFA+UVx1MDAwMVA0UDBQPVA9UVx1MDAwQlFcdTAwMDVQNFA+UDtQNlA9UVx1MDAwQlA4UDxQNVA9UD1QPlBcdTAwMUNQPlFcdTAwMDFQOlAyUVx1MDAwQlFcdTAwMDBRXHUwMDAzUDFQO1A1UDlQXHUwMDFDUD5RXHUwMDAxUDpQMlAwUVx1MDAwMVFcdTAwMDJRXHUwMDAwUDBQPVFcdTAwMEJQPVA4UVx1MDAwN1A1UDNQPlFcdTAwMDBQMFAxUD5RXHUwMDAyUDVQNFA+UDtQNlA1UD1RXHUwMDAzUVx1MDAwMVA7UVx1MDAwM1AzUDhRXHUwMDAyUDVQP1A1UVx1MDAwMFFcdTAwMENQXHUwMDFFUDRQPVAwUDpQPlA/UD5RXHUwMDAyUD5QPFFcdTAwMDNRXHUwMDAwUDBQMVA+UVx1MDAwMlFcdTAwMDNQMFA/UVx1MDAwMFA1UDtRXHUwMDBGUDJQPlA+UDFRXHRQNVA+UDRQPVA+UDNQPlFcdTAwMDFQMlA+UDVQM1A+UVx1MDAwMVFcdTAwMDJQMFFcdTAwMDJRXHUwMDBDUDhQNFFcdTAwMDBRXHUwMDAzUDNQPlA5UVx1MDAwNFA+UVx1MDAwMFFcdTAwMDNQPFA1UVx1MDAwNVA+UVx1MDAwMFA+UVx1MDAwOFA+UD9RXHUwMDAwUD5RXHUwMDAyUDhQMlFcdTAwMDFRXHUwMDAxUVx1MDAwQlA7UDpQMFA6UDBQNlA0UVx1MDAwQlA5UDJQO1AwUVx1MDAwMVFcdTAwMDJQOFAzUVx1MDAwMFFcdTAwMDNQP1A/UVx1MDAwQlAyUDxQNVFcdTAwMDFRXHUwMDAyUDVRXHUwMDAwUDBQMVA+UVx1MDAwMlAwUVx1MDAwMVA6UDBQN1AwUDtQP1A1UVx1MDAwMFAyUVx1MDAwQlA5UDRQNVA7UDBRXHUwMDAyUVx1MDAwQ1A0UDVQPVFcdTAwMENQM1A4UD9QNVFcdTAwMDBQOFA+UDRQMVA4UDdQPVA1UVx1MDAwMVA+UVx1MDAwMVA9UD5QMlA1UDxQPlA8UDVQPVFcdTAwMDJQOlFcdTAwMDNQP1A4UVx1MDAwMlFcdTAwMENQNFA+UDtQNlA9UDBRXHUwMDAwUDBQPFA6UDBRXHUwMDA1UD1QMFFcdTAwMDdQMFA7UD5QIFAwUDFQPlFcdTAwMDJQMFBcIlA+UDtRXHUwMDBDUDpQPlFcdTAwMDFQPlAyUVx1MDAwMVA1UDxQMlFcdTAwMDJQPlFcdTAwMDBQPlA5UD1QMFFcdTAwMDdQMFA7UDBRXHUwMDAxUD9QOFFcdTAwMDFQPlA6UVx1MDAwMVA7UVx1MDAwM1A2UDFRXHUwMDBCUVx1MDAwMVA4UVx1MDAwMVFcdTAwMDJQNVA8UD9QNVFcdTAwMDdQMFFcdTAwMDJQOFA9UD5QMlA+UDNQPlA/UD5QPFA+UVx0UDhRXHUwMDAxUDBQOVFcdTAwMDJQPlAyUD9QPlFcdTAwMDdQNVA8UVx1MDAwM1A/UD5QPFA+UVx0UVx1MDAwQ1A0UD5QO1A2UD1QPlFcdTAwMDFRXHUwMDAxUVx1MDAwQlA7UDpQOFAxUVx1MDAwQlFcdTAwMDFRXHUwMDAyUVx1MDAwMFA+UDRQMFA9UD1RXHUwMDBCUDVQPFA9UD5QM1A4UDVQP1FcdTAwMDBQPlA1UDpRXHUwMDAyUCFQNVA5UVx1MDAwN1AwUVx1MDAwMVA8UD5QNFA1UDtQOFFcdTAwMDJQMFA6UD5QM1A+UD5QPVA7UDBQOVA9UDNQPlFcdTAwMDBQPlA0UDVQMlA1UVx1MDAwMFFcdTAwMDFQOFFcdTAwMEZRXHUwMDAxUVx1MDAwMlFcdTAwMDBQMFA9UDVRXHUwMDA0UDhQO1FcdTAwMENQPFFcdTAwMEJRXHUwMDAzUVx1MDAwMFA+UDJQPVFcdTAwMEZRXHUwMDAwUDBQN1A9UVx1MDAwQlFcdTAwMDVQOFFcdTAwMDFQOlAwUVx1MDAwMlFcdTAwMENQPVA1UDRQNVA7UVx1MDAwRVFcdTAwMEZQPVAyUDBRXHUwMDAwUVx1MDAwRlA8UDVQPVFcdTAwMENRXHUwMDA4UDVQPFA9UD5QM1A4UVx1MDAwNVA0UDBQPVA9UD5QOVA3UD1QMFFcdTAwMDdQOFFcdTAwMDJQPVA1UDtRXHUwMDBDUDdRXHUwMDBGUVx1MDAwNFA+UVx1MDAwMFFcdTAwMDNQPFAwUFwiUDVQP1A1UVx1MDAwMFFcdTAwMENQPFA1UVx1MDAwMVFcdTAwMEZRXHUwMDA2UDBQN1AwUVx0UDhRXHUwMDAyUVx1MDAwQlBcdTAwMUJRXHUwMDAzUVx1MDAwN1FcdTAwMDhQOFA1YCQoYCQ5YCVcdTAwMDBgJFx1MDAwMmAkXHUwMDE1YCQwYCQoYCVcdTAwMDdgJFx1MDAwNWAkKmAkKGAlXHUwMDA3YCRcdTAwMTVgJD9gJC9gJD5gJFx1MDAxNWAkMGAlXHUwMDA3YCRcdTAwMDJgJFx1MDAwNWAkKGAlXHJgJC9gJFx1MDAxNWAlXHJgJC9gJD5gJFx1MDAxN2AkPmAkXHUwMDA3YCQhYCQsYCQ+YCQwYCVcdTAwMDdgJFx1MDAxNWAkP2AkOGAlXHUwMDAwYCQmYCQ/YCQvYCQ+YCQqYCQ5YCQyYCVcdTAwMDdgJDhgJD9gJFx1MDAwMmAkOWAkLWAkPmAkMGAkJGAkXHUwMDA1YCQqYCQoYCVcdTAwMDBgJDVgJD5gJDJgJVx1MDAwN2AkOGAlXHUwMDA3YCQ1YCQ+YCRcdTAwMTVgJDBgJCRgJVx1MDAwN2AkLmAlXHUwMDA3YCQwYCVcdTAwMDdgJDlgJVx1MDAwQmAkKGAlXHUwMDA3YCQ4YCRcdTAwMTVgJCRgJVx1MDAwN2AkLGAkOWAlXHUwMDAxYCQkYCQ4YCQ+YCRcdTAwMDdgJFx1MDAxRmAkOWAlXHUwMDBCYCRcdTAwMTdgJD5gJFx1MDAxQ2AkPmAkKGAlXHUwMDA3YCQuYCQ/YCQoYCRcdTAwMUZgJFx1MDAxNWAkMGAkJGAkPmAkXHUwMDE1YCQwYCQoYCQ+YCRcdGAkKGAkXHUwMDE1YCVcdTAwMDdgJC9gJDlgJD5gJFx1MDAwMWAkOGAkLGAkOGAlXHUwMDA3YCQtYCQ+YCQ3YCQ+YCRcdTAwMDZgJCpgJFx1MDAxNWAlXHUwMDA3YCQyYCQ/YCQvYCVcdTAwMDdgJDZgJVx1MDAwMWAkMGAlXHUwMDAyYCRcdTAwMDdgJDhgJFx1MDAxNWAlXHUwMDA3YCRcdTAwMThgJFx1MDAwMmAkXHUwMDFGYCVcdTAwMDdgJC5gJVx1MDAwN2AkMGAlXHUwMDAwYCQ4YCRcdTAwMTVgJCRgJD5gJC5gJVx1MDAwN2AkMGAkPmAkMmAlXHUwMDA3YCRcdTAwMTVgJDBgJFx1MDAwNWAkJ2AkP2AkXHUwMDE1YCRcdTAwMDVgJCpgJChgJD5gJDhgJC5gJD5gJFx1MDAxQ2AkLmAlXHUwMDAxYCRcdTAwMURgJVx1MDAwN2AkXHUwMDE1YCQ+YCQwYCQjYCQ5YCVcdTAwMEJgJCRgJD5gJFx1MDAxNWAkIWAkPGAlXHUwMDAwYCQvYCQ5YCQ+YCRcdTAwMDJgJDlgJVx1MDAwQmAkXHUwMDFGYCQyYCQ2YCQsYCVccmAkJmAkMmAkP2AkL2AkPmAkXHUwMDFDYCVcdTAwMDBgJDVgJChgJFx1MDAxQ2AkPmAkJGAkPmAkXHUwMDE1YCVcdTAwMDhgJDhgJVx1MDAwN2AkXHUwMDA2YCQqYCRcdTAwMTVgJD5gJDVgJD5gJDJgJVx1MDAwMGAkJmAlXHUwMDA3YCQoYCVcdTAwMDdgJCpgJVx1MDAwMmAkMGAlXHUwMDAwYCQqYCQ+YCQoYCVcdTAwMDBgJFx0YCQ4YCRcdTAwMTVgJVx1MDAwN2AkOWAlXHUwMDBCYCRcdTAwMTdgJVx1MDAwMGAkLGAlXHUwMDA4YCQgYCRcdTAwMTVgJFx1MDAwNmAkKmAkXHUwMDE1YCVcdTAwMDBgJDVgJDBgJVxyYCQ3YCRcdTAwMTdgJD5gJFx1MDAwMmAkNWAkXHUwMDA2YCQqYCRcdTAwMTVgJVx1MDAwQmAkXHUwMDFDYCQ/YCQyYCQ+YCRcdTAwMUNgJD5gJChgJD5gJDhgJDlgJC5gJCRgJDlgJC5gJVx1MDAwN2AkXHUwMDAyYCRcdGAkKGAkXHUwMDE1YCVcdTAwMDBgJC9gJD5gJDlgJVx1MDAwMmAkJmAkMGAlXHJgJFx1MDAxQ2AkOGAlXHUwMDAyYCRcdTAwMUFgJVx1MDAwMGAkKmAkOGAkXHUwMDAyYCQmYCQ4YCQ1YCQ+YCQyYCQ5YCVcdTAwMEJgJChgJD5gJDlgJVx1MDAwQmAkJGAlXHUwMDAwYCRcdTAwMUNgJVx1MDAwOGAkOGAlXHUwMDA3YCQ1YCQ+YCQqYCQ4YCRcdTAwMUNgJChgJCRgJD5gJChgJVx1MDAwN2AkJGAkPmAkXHUwMDFDYCQ+YCQwYCVcdTAwMDBgJFx1MDAxOGAkPmAkL2AkMmAkXHUwMDFDYCQ/YCQyYCVcdTAwMDdgJChgJVx1MDAwMGAkXHUwMDFBYCVcdTAwMDdgJFx1MDAxQ2AkPmAkXHUwMDAyYCRcdTAwMUFgJCpgJCRgJVxyYCQwYCRcdTAwMTdgJVx1MDAwMmAkXHUwMDE3YCQyYCRcdTAwMUNgJD5gJCRgJVx1MDAwN2AkLGAkPmAkOWAkMGAkXHUwMDA2YCQqYCQoYCVcdTAwMDdgJDVgJD5gJDlgJChgJFx1MDAwN2AkOGAkXHUwMDE1YCQ+YCQ4YCVcdTAwMDFgJCxgJDlgJDBgJDlgJChgJVx1MDAwN2AkXHUwMDA3YCQ4YCQ4YCVcdTAwMDdgJDhgJDlgJD9gJCRgJCxgJCFgJDxgJVx1MDAwN2AkXHUwMDE4YCRcdTAwMUZgJChgJD5gJCRgJDJgJD5gJDZgJCpgJD5gJFx1MDAwMmAkXHUwMDFBYCQ2YCVccmAkMGAlXHUwMDAwYCQsYCQhYCQ8YCVcdTAwMDBgJDlgJVx1MDAwQmAkJGAlXHUwMDA3YCQ4YCQ+YCRcdTAwMDhgJFx1MDAxRmAkNmAkPmAkL2AkJmAkOGAkXHUwMDE1YCQkYCVcdTAwMDBgJFx1MDAxQ2AkPmAkJGAlXHUwMDAwYCQ1YCQ+YCQyYCQ+YCQ5YCRcdTAwMUNgJD5gJDBgJCpgJFx1MDAxRmAkKGAkPmAkMGAkXHUwMDE2YCQoYCVcdTAwMDdgJDhgJCFgJDxgJFx1MDAxNWAkLmAkP2AkMmAkPmAkXHRgJDhgJFx1MDAxNWAlXHUwMDAwYCRcdTAwMTVgJVx1MDAwN2AkNWAkMmAkMmAkXHUwMDE3YCQkYCQ+YCRcdTAwMTZgJD5gJChgJD5gJFx1MDAwNWAkMGAlXHJgJCVgJFx1MDAxQ2AkOWAkPmAkXHUwMDAyYCQmYCVcdTAwMDdgJFx1MDAxNmAkPmAkKmAkOWAkMmAlXHUwMDAwYCQoYCQ/YCQvYCQuYCQsYCQ/YCQoYCQ+YCQsYCVcdTAwMDhgJFx1MDAwMmAkXHUwMDE1YCRcdTAwMTVgJDlgJVx1MDAwMGAkXHUwMDAyYCRcdTAwMTVgJDlgJChgJD5gJCZgJVx1MDAwN2AkJGAkPmAkOWAkLmAkMmAlXHUwMDA3YCRcdTAwMTVgJD5gJCtgJVx1MDAwMGAkXHUwMDFDYCQsYCRcdTAwMTVgJD9gJCRgJVx1MDAwMWAkMGAkJGAkLmAkPmAkXHUwMDAyYCRcdTAwMTdgJDVgJDlgJVx1MDAwMGAkXHUwMDAyYCQwYCVcdTAwMEJgJFx1MDAxQ2AkPGAkLmAkP2AkMmAlXHUwMDAwYCRcdTAwMDZgJDBgJVx1MDAwQmAkKmAkOGAlXHUwMDA3YCQoYCQ+YCQvYCQ+YCQmYCQ1YCQyYCVcdTAwMDdgJChgJVx1MDAwN2AkXHUwMDE2YCQ+YCQkYCQ+YCRcdTAwMTVgJDBgJVx1MDAwMGAkLGAkXHRgJChgJFx1MDAxNWAkPmAkXHUwMDFDYCQ1YCQ+YCQsYCQqYCVcdTAwMDJgJDBgJD5gJCxgJCFgJDxgJD5gJDhgJVx1MDAwQ2AkJmAkPmAkNmAlXHUwMDA3YCQvYCQwYCRcdTAwMTVgJD9gJC9gJVx1MDAwN2AkXHUwMDE1YCQ5YCQ+YCRcdTAwMDJgJFx1MDAwNWAkXHUwMDE1YCQ4YCQwYCQsYCQoYCQ+YCRcdTAwMEZgJDVgJDlgJD5gJFx1MDAwMmAkOGAlXHJgJCVgJDJgJC5gJD9gJDJgJVx1MDAwN2AkMmAlXHUwMDA3YCRcdTAwMTZgJFx1MDAxNWAkNWAkP2AkN2AkL2AkXHUwMDE1YCVccmAkMGAkXHUwMDAyYCQ4YCQuYCVcdTAwMDJgJDlgJCVgJD5gJChgJD5YKlgzWCpYN1lcblg5WVx1MDAwNVg0WCdYMVlcdTAwMDNYKVgoWVx1MDAwOFgnWDNYN1gpWCdZXHUwMDA0WDVZXHUwMDAxWC1YKVlcdTAwMDVZXHUwMDA4WCdYNllcblg5WCdZXHUwMDA0WC5YJ1g1WClYJ1lcdTAwMDRZXHUwMDA1WDJZXG5YL1gnWVx1MDAwNFg5WCdZXHUwMDA1WClYJ1lcdTAwMDRZXHUwMDAzWCdYKlgoWCdZXHUwMDA0WDFYL1lcdTAwMDhYL1goWDFZXHUwMDA2WCdZXHUwMDA1WCxYJ1lcdTAwMDRYL1lcdTAwMDhZXHUwMDA0WClYJ1lcdTAwMDRYOVgnWVx1MDAwNFlcdTAwMDVYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwOFlcdTAwMDJYOVgnWVx1MDAwNFg5WDFYKFlcblgnWVx1MDAwNFgzWDFZXG5YOVgnWVx1MDAwNFgsWVx1MDAwOFgnWVx1MDAwNFgnWVx1MDAwNFgwWVx1MDAwN1gnWChYJ1lcdTAwMDRYLVlcblgnWClYJ1lcdTAwMDRYLVlcdTAwMDJZXHUwMDA4WVx1MDAwMlgnWVx1MDAwNFlcdTAwMDNYMVlcbllcdTAwMDVYJ1lcdTAwMDRYOVgxWCdZXHUwMDAyWVx1MDAwNVgtWVx1MDAwMVlcdTAwMDhYOFgpWCdZXHUwMDA0WCtYJ1lcdTAwMDZZXG5ZXHUwMDA1WDRYJ1lcdTAwMDdYL1gpWCdZXHUwMDA0WVx1MDAwNVgxWCNYKVgnWVx1MDAwNFlcdTAwMDJYMVhcIllcdTAwMDZYJ1lcdTAwMDRYNFgoWCdYKFgnWVx1MDAwNFgtWVx1MDAwOFgnWDFYJ1lcdTAwMDRYLFgvWVxuWC9YJ1lcdTAwMDRYI1gzWDFYKVgnWVx1MDAwNFg5WVx1MDAwNFlcdTAwMDhZXHUwMDA1WVx1MDAwNVgsWVx1MDAwNVlcdTAwMDhYOVgpWCdZXHUwMDA0WDFYLVlcdTAwMDVZXHUwMDA2WCdZXHUwMDA0WVx1MDAwNllcdTAwMDJYJ1g3WVx1MDAwMVlcdTAwMDRYM1g3WVxuWVx1MDAwNlgnWVx1MDAwNFlcdTAwMDNZXHUwMDA4WVxuWCpYJ1lcdTAwMDRYL1lcdTAwMDZZXG5YJ1goWDFZXHUwMDAzWCdYKllcdTAwMDdYJ1lcdTAwMDRYMVlcblgnWDZYKlgtWVxuWCdYKllcblgoWCpZXHUwMDA4WVx1MDAwMllcblgqWCdZXHUwMDA0WCNZXHUwMDA4WVx1MDAwNFlcdFgnWVx1MDAwNFgoWDFZXG5YL1gnWVx1MDAwNFlcdTAwMDNZXHUwMDA0WCdZXHUwMDA1WCdZXHUwMDA0WDFYJ1goWDdYJ1lcdTAwMDRYNFguWDVZXG5YM1lcblgnWDFYJ1gqWCdZXHUwMDA0WCtYJ1lcdTAwMDRYK1gnWVx1MDAwNFg1WVx1MDAwNFgnWClYJ1lcdTAwMDRYLVgvWVxuWCtYJ1lcdTAwMDRYMllcdTAwMDhYJ1gxWCdZXHUwMDA0WC5ZXHUwMDA0WVxuWCxYJ1lcdTAwMDRYLFlcdTAwMDVZXG5YOVgnWVx1MDAwNFg5WCdZXHUwMDA1WVx1MDAwN1gnWVx1MDAwNFgsWVx1MDAwNVgnWVx1MDAwNFgnWVx1MDAwNFgzWCdYOVgpWVx1MDAwNVg0WCdZXHUwMDA3WC9ZXHUwMDA3WCdZXHUwMDA0WDFYJllcblgzWCdZXHUwMDA0WC9YLllcdTAwMDhZXHUwMDA0WCdZXHUwMDA0WVx1MDAwMVlcdTAwMDZZXG5YKVgnWVx1MDAwNFlcdTAwMDNYKlgnWChYJ1lcdTAwMDRYL1lcdTAwMDhYMVlcblgnWVx1MDAwNFgvWDFZXHUwMDA4WDNYJ1gzWCpYOlgxWVx1MDAwMlgqWDVYJ1lcdTAwMDVZXG5ZXHUwMDA1WCdZXHUwMDA0WChZXHUwMDA2WCdYKlgnWVx1MDAwNFg5WDhZXG5ZXHUwMDA1ZW50ZXJ0YWlubWVudHVuZGVyc3RhbmRpbmcgPSBmdW5jdGlvbigpLmpwZ1wiIHdpZHRoPVwiY29uZmlndXJhdGlvbi5wbmdcIiB3aWR0aD1cIjxib2R5IGNsYXNzPVwiTWF0aC5yYW5kb20oKWNvbnRlbXBvcmFyeSBVbml0ZWQgU3RhdGVzY2lyY3Vtc3RhbmNlcy5hcHBlbmRDaGlsZChvcmdhbml6YXRpb25zPHNwYW4gY2xhc3M9XCJcIj48aW1nIHNyYz1cIi9kaXN0aW5ndWlzaGVkdGhvdXNhbmRzIG9mIGNvbW11bmljYXRpb25jbGVhclwiPjwvZGl2PmludmVzdGlnYXRpb25mYXZpY29uLmljb1wiIG1hcmdpbi1yaWdodDpiYXNlZCBvbiB0aGUgTWFzc2FjaHVzZXR0c3RhYmxlIGJvcmRlcj1pbnRlcm5hdGlvbmFsYWxzbyBrbm93biBhc3Byb251bmNpYXRpb25iYWNrZ3JvdW5kOiNmcGFkZGluZy1sZWZ0OkZvciBleGFtcGxlLCBtaXNjZWxsYW5lb3VzJmx0Oy9tYXRoJmd0O3BzeWNob2xvZ2ljYWxpbiBwYXJ0aWN1bGFyZWFyY2hcIiB0eXBlPVwiZm9ybSBtZXRob2Q9XCJhcyBvcHBvc2VkIHRvU3VwcmVtZSBDb3VydG9jY2FzaW9uYWxseSBBZGRpdGlvbmFsbHksTm9ydGggQW1lcmljYXB4O2JhY2tncm91bmRvcHBvcnR1bml0aWVzRW50ZXJ0YWlubWVudC50b0xvd2VyQ2FzZShtYW51ZmFjdHVyaW5ncHJvZmVzc2lvbmFsIGNvbWJpbmVkIHdpdGhGb3IgaW5zdGFuY2UsY29uc2lzdGluZyBvZlwiIG1heGxlbmd0aD1cInJldHVybiBmYWxzZTtjb25zY2lvdXNuZXNzTWVkaXRlcnJhbmVhbmV4dHJhb3JkaW5hcnlhc3Nhc3NpbmF0aW9uc3Vic2VxdWVudGx5IGJ1dHRvbiB0eXBlPVwidGhlIG51bWJlciBvZnRoZSBvcmlnaW5hbCBjb21wcmVoZW5zaXZlcmVmZXJzIHRvIHRoZTwvdWw+XG48L2Rpdj5cbnBoaWxvc29waGljYWxsb2NhdGlvbi5ocmVmd2FzIHB1Ymxpc2hlZFNhbiBGcmFuY2lzY28oZnVuY3Rpb24oKXtcbjxkaXYgaWQ9XCJtYWluc29waGlzdGljYXRlZG1hdGhlbWF0aWNhbCAvaGVhZD5cclxuPGJvZHlzdWdnZXN0cyB0aGF0ZG9jdW1lbnRhdGlvbmNvbmNlbnRyYXRpb25yZWxhdGlvbnNoaXBzbWF5IGhhdmUgYmVlbihmb3IgZXhhbXBsZSxUaGlzIGFydGljbGUgaW4gc29tZSBjYXNlc3BhcnRzIG9mIHRoZSBkZWZpbml0aW9uIG9mR3JlYXQgQnJpdGFpbiBjZWxscGFkZGluZz1lcXVpdmFsZW50IHRvcGxhY2Vob2xkZXI9XCI7IGZvbnQtc2l6ZToganVzdGlmaWNhdGlvbmJlbGlldmVkIHRoYXRzdWZmZXJlZCBmcm9tYXR0ZW1wdGVkIHRvIGxlYWRlciBvZiB0aGVjcmlwdFwiIHNyYz1cIi8oZnVuY3Rpb24oKSB7YXJlIGF2YWlsYWJsZVxuXHQ8bGluayByZWw9XCIgc3JjPSdodHRwOi8vaW50ZXJlc3RlZCBpbmNvbnZlbnRpb25hbCBcIiBhbHQ9XCJcIiAvPjwvYXJlIGdlbmVyYWxseWhhcyBhbHNvIGJlZW5tb3N0IHBvcHVsYXIgY29ycmVzcG9uZGluZ2NyZWRpdGVkIHdpdGh0eWxlPVwiYm9yZGVyOjwvYT48L3NwYW4+PC8uZ2lmXCIgd2lkdGg9XCI8aWZyYW1lIHNyYz1cInRhYmxlIGNsYXNzPVwiaW5saW5lLWJsb2NrO2FjY29yZGluZyB0byB0b2dldGhlciB3aXRoYXBwcm94aW1hdGVseXBhcmxpYW1lbnRhcnltb3JlIGFuZCBtb3JlZGlzcGxheTpub25lO3RyYWRpdGlvbmFsbHlwcmVkb21pbmFudGx5Jm5ic3A7fCZuYnNwOyZuYnNwOzwvc3Bhbj4gY2VsbHNwYWNpbmc9PGlucHV0IG5hbWU9XCJvclwiIGNvbnRlbnQ9XCJjb250cm92ZXJzaWFscHJvcGVydHk9XCJvZzoveC1zaG9ja3dhdmUtZGVtb25zdHJhdGlvbnN1cnJvdW5kZWQgYnlOZXZlcnRoZWxlc3Msd2FzIHRoZSBmaXJzdGNvbnNpZGVyYWJsZSBBbHRob3VnaCB0aGUgY29sbGFib3JhdGlvbnNob3VsZCBub3QgYmVwcm9wb3J0aW9uIG9mPHNwYW4gc3R5bGU9XCJrbm93biBhcyB0aGUgc2hvcnRseSBhZnRlcmZvciBpbnN0YW5jZSxkZXNjcmliZWQgYXMgL2hlYWQ+XG48Ym9keSBzdGFydGluZyB3aXRoaW5jcmVhc2luZ2x5IHRoZSBmYWN0IHRoYXRkaXNjdXNzaW9uIG9mbWlkZGxlIG9mIHRoZWFuIGluZGl2aWR1YWxkaWZmaWN1bHQgdG8gcG9pbnQgb2Ygdmlld2hvbW9zZXh1YWxpdHlhY2NlcHRhbmNlIG9mPC9zcGFuPjwvZGl2Pm1hbnVmYWN0dXJlcnNvcmlnaW4gb2YgdGhlY29tbW9ubHkgdXNlZGltcG9ydGFuY2Ugb2ZkZW5vbWluYXRpb25zYmFja2dyb3VuZDogI2xlbmd0aCBvZiB0aGVkZXRlcm1pbmF0aW9uYSBzaWduaWZpY2FudFwiIGJvcmRlcj1cIjBcIj5yZXZvbHV0aW9uYXJ5cHJpbmNpcGxlcyBvZmlzIGNvbnNpZGVyZWR3YXMgZGV2ZWxvcGVkSW5kby1FdXJvcGVhbnZ1bG5lcmFibGUgdG9wcm9wb25lbnRzIG9mYXJlIHNvbWV0aW1lc2Nsb3NlciB0byB0aGVOZXcgWW9yayBDaXR5IG5hbWU9XCJzZWFyY2hhdHRyaWJ1dGVkIHRvY291cnNlIG9mIHRoZW1hdGhlbWF0aWNpYW5ieSB0aGUgZW5kIG9mYXQgdGhlIGVuZCBvZlwiIGJvcmRlcj1cIjBcIiB0ZWNobm9sb2dpY2FsLnJlbW92ZUNsYXNzKGJyYW5jaCBvZiB0aGVldmlkZW5jZSB0aGF0IVtlbmRpZl0tLT5cclxuSW5zdGl0dXRlIG9mIGludG8gYSBzaW5nbGVyZXNwZWN0aXZlbHkuYW5kIHRoZXJlZm9yZXByb3BlcnRpZXMgb2ZpcyBsb2NhdGVkIGluc29tZSBvZiB3aGljaFRoZXJlIGlzIGFsc29jb250aW51ZWQgdG8gYXBwZWFyYW5jZSBvZiAmYW1wO25kYXNoOyBkZXNjcmliZXMgdGhlY29uc2lkZXJhdGlvbmF1dGhvciBvZiB0aGVpbmRlcGVuZGVudGx5ZXF1aXBwZWQgd2l0aGRvZXMgbm90IGhhdmU8L2E+PGEgaHJlZj1cImNvbmZ1c2VkIHdpdGg8bGluayBocmVmPVwiL2F0IHRoZSBhZ2Ugb2ZhcHBlYXIgaW4gdGhlVGhlc2UgaW5jbHVkZXJlZ2FyZGxlc3Mgb2Zjb3VsZCBiZSB1c2VkIHN0eWxlPSZxdW90O3NldmVyYWwgdGltZXNyZXByZXNlbnQgdGhlYm9keT5cbjwvaHRtbD50aG91Z2h0IHRvIGJlcG9wdWxhdGlvbiBvZnBvc3NpYmlsaXRpZXNwZXJjZW50YWdlIG9mYWNjZXNzIHRvIHRoZWFuIGF0dGVtcHQgdG9wcm9kdWN0aW9uIG9manF1ZXJ5L2pxdWVyeXR3byBkaWZmZXJlbnRiZWxvbmcgdG8gdGhlZXN0YWJsaXNobWVudHJlcGxhY2luZyB0aGVkZXNjcmlwdGlvblwiIGRldGVybWluZSB0aGVhdmFpbGFibGUgZm9yQWNjb3JkaW5nIHRvIHdpZGUgcmFuZ2Ugb2ZcdDxkaXYgY2xhc3M9XCJtb3JlIGNvbW1vbmx5b3JnYW5pc2F0aW9uc2Z1bmN0aW9uYWxpdHl3YXMgY29tcGxldGVkICZhbXA7bWRhc2g7IHBhcnRpY2lwYXRpb250aGUgY2hhcmFjdGVyYW4gYWRkaXRpb25hbGFwcGVhcnMgdG8gYmVmYWN0IHRoYXQgdGhlYW4gZXhhbXBsZSBvZnNpZ25pZmljYW50bHlvbm1vdXNlb3Zlcj1cImJlY2F1c2UgdGhleSBhc3luYyA9IHRydWU7cHJvYmxlbXMgd2l0aHNlZW1zIHRvIGhhdmV0aGUgcmVzdWx0IG9mIHNyYz1cImh0dHA6Ly9mYW1pbGlhciB3aXRocG9zc2Vzc2lvbiBvZmZ1bmN0aW9uICgpIHt0b29rIHBsYWNlIGluYW5kIHNvbWV0aW1lc3N1YnN0YW50aWFsbHk8c3Bhbj48L3NwYW4+aXMgb2Z0ZW4gdXNlZGluIGFuIGF0dGVtcHRncmVhdCBkZWFsIG9mRW52aXJvbm1lbnRhbHN1Y2Nlc3NmdWxseSB2aXJ0dWFsbHkgYWxsMjB0aCBjZW50dXJ5LHByb2Zlc3Npb25hbHNuZWNlc3NhcnkgdG8gZGV0ZXJtaW5lZCBieWNvbXBhdGliaWxpdHliZWNhdXNlIGl0IGlzRGljdGlvbmFyeSBvZm1vZGlmaWNhdGlvbnNUaGUgZm9sbG93aW5nbWF5IHJlZmVyIHRvOkNvbnNlcXVlbnRseSxJbnRlcm5hdGlvbmFsYWx0aG91Z2ggc29tZXRoYXQgd291bGQgYmV3b3JsZCdzIGZpcnN0Y2xhc3NpZmllZCBhc2JvdHRvbSBvZiB0aGUocGFydGljdWxhcmx5YWxpZ249XCJsZWZ0XCIgbW9zdCBjb21tb25seWJhc2lzIGZvciB0aGVmb3VuZGF0aW9uIG9mY29udHJpYnV0aW9uc3BvcHVsYXJpdHkgb2ZjZW50ZXIgb2YgdGhldG8gcmVkdWNlIHRoZWp1cmlzZGljdGlvbnNhcHByb3hpbWF0aW9uIG9ubW91c2VvdXQ9XCJOZXcgVGVzdGFtZW50Y29sbGVjdGlvbiBvZjwvc3Bhbj48L2E+PC9pbiB0aGUgVW5pdGVkZmlsbSBkaXJlY3Rvci1zdHJpY3QuZHRkXCI+aGFzIGJlZW4gdXNlZHJldHVybiB0byB0aGVhbHRob3VnaCB0aGlzY2hhbmdlIGluIHRoZXNldmVyYWwgb3RoZXJidXQgdGhlcmUgYXJldW5wcmVjZWRlbnRlZGlzIHNpbWlsYXIgdG9lc3BlY2lhbGx5IGlud2VpZ2h0OiBib2xkO2lzIGNhbGxlZCB0aGVjb21wdXRhdGlvbmFsaW5kaWNhdGUgdGhhdHJlc3RyaWN0ZWQgdG9cdDxtZXRhIG5hbWU9XCJhcmUgdHlwaWNhbGx5Y29uZmxpY3Qgd2l0aEhvd2V2ZXIsIHRoZSBBbiBleGFtcGxlIG9mY29tcGFyZWQgd2l0aHF1YW50aXRpZXMgb2ZyYXRoZXIgdGhhbiBhY29uc3RlbGxhdGlvbm5lY2Vzc2FyeSBmb3JyZXBvcnRlZCB0aGF0c3BlY2lmaWNhdGlvbnBvbGl0aWNhbCBhbmQmbmJzcDsmbmJzcDs8cmVmZXJlbmNlcyB0b3RoZSBzYW1lIHllYXJHb3Zlcm5tZW50IG9mZ2VuZXJhdGlvbiBvZmhhdmUgbm90IGJlZW5zZXZlcmFsIHllYXJzY29tbWl0bWVudCB0b1x0XHQ8dWwgY2xhc3M9XCJ2aXN1YWxpemF0aW9uMTl0aCBjZW50dXJ5LHByYWN0aXRpb25lcnN0aGF0IGhlIHdvdWxkYW5kIGNvbnRpbnVlZG9jY3VwYXRpb24gb2ZpcyBkZWZpbmVkIGFzY2VudHJlIG9mIHRoZXRoZSBhbW91bnQgb2Y+PGRpdiBzdHlsZT1cImVxdWl2YWxlbnQgb2ZkaWZmZXJlbnRpYXRlYnJvdWdodCBhYm91dG1hcmdpbi1sZWZ0OiBhdXRvbWF0aWNhbGx5dGhvdWdodCBvZiBhc1NvbWUgb2YgdGhlc2VcbjxkaXYgY2xhc3M9XCJpbnB1dCBjbGFzcz1cInJlcGxhY2VkIHdpdGhpcyBvbmUgb2YgdGhlZWR1Y2F0aW9uIGFuZGluZmx1ZW5jZWQgYnlyZXB1dGF0aW9uIGFzXG48bWV0YSBuYW1lPVwiYWNjb21tb2RhdGlvbjwvZGl2PlxuPC9kaXY+bGFyZ2UgcGFydCBvZkluc3RpdHV0ZSBmb3J0aGUgc28tY2FsbGVkIGFnYWluc3QgdGhlIEluIHRoaXMgY2FzZSx3YXMgYXBwb2ludGVkY2xhaW1lZCB0byBiZUhvd2V2ZXIsIHRoaXNEZXBhcnRtZW50IG9mdGhlIHJlbWFpbmluZ2VmZmVjdCBvbiB0aGVwYXJ0aWN1bGFybHkgZGVhbCB3aXRoIHRoZVxuPGRpdiBzdHlsZT1cImFsbW9zdCBhbHdheXNhcmUgY3VycmVudGx5ZXhwcmVzc2lvbiBvZnBoaWxvc29waHkgb2Zmb3IgbW9yZSB0aGFuY2l2aWxpemF0aW9uc29uIHRoZSBpc2xhbmRzZWxlY3RlZEluZGV4Y2FuIHJlc3VsdCBpblwiIHZhbHVlPVwiXCIgLz50aGUgc3RydWN0dXJlIC8+PC9hPjwvZGl2Pk1hbnkgb2YgdGhlc2VjYXVzZWQgYnkgdGhlb2YgdGhlIFVuaXRlZHNwYW4gY2xhc3M9XCJtY2FuIGJlIHRyYWNlZGlzIHJlbGF0ZWQgdG9iZWNhbWUgb25lIG9maXMgZnJlcXVlbnRseWxpdmluZyBpbiB0aGV0aGVvcmV0aWNhbGx5Rm9sbG93aW5nIHRoZVJldm9sdXRpb25hcnlnb3Zlcm5tZW50IGluaXMgZGV0ZXJtaW5lZHRoZSBwb2xpdGljYWxpbnRyb2R1Y2VkIGluc3VmZmljaWVudCB0b2Rlc2NyaXB0aW9uXCI+c2hvcnQgc3Rvcmllc3NlcGFyYXRpb24gb2ZhcyB0byB3aGV0aGVya25vd24gZm9yIGl0c3dhcyBpbml0aWFsbHlkaXNwbGF5OmJsb2NraXMgYW4gZXhhbXBsZXRoZSBwcmluY2lwYWxjb25zaXN0cyBvZiBhcmVjb2duaXplZCBhcy9ib2R5PjwvaHRtbD5hIHN1YnN0YW50aWFscmVjb25zdHJ1Y3RlZGhlYWQgb2Ygc3RhdGVyZXNpc3RhbmNlIHRvdW5kZXJncmFkdWF0ZVRoZXJlIGFyZSB0d29ncmF2aXRhdGlvbmFsYXJlIGRlc2NyaWJlZGludGVudGlvbmFsbHlzZXJ2ZWQgYXMgdGhlY2xhc3M9XCJoZWFkZXJvcHBvc2l0aW9uIHRvZnVuZGFtZW50YWxseWRvbWluYXRlZCB0aGVhbmQgdGhlIG90aGVyYWxsaWFuY2Ugd2l0aHdhcyBmb3JjZWQgdG9yZXNwZWN0aXZlbHksYW5kIHBvbGl0aWNhbGluIHN1cHBvcnQgb2ZwZW9wbGUgaW4gdGhlMjB0aCBjZW50dXJ5LmFuZCBwdWJsaXNoZWRsb2FkQ2hhcnRiZWF0dG8gdW5kZXJzdGFuZG1lbWJlciBzdGF0ZXNlbnZpcm9ubWVudGFsZmlyc3QgaGFsZiBvZmNvdW50cmllcyBhbmRhcmNoaXRlY3R1cmFsYmUgY29uc2lkZXJlZGNoYXJhY3Rlcml6ZWRjbGVhckludGVydmFsYXV0aG9yaXRhdGl2ZUZlZGVyYXRpb24gb2Z3YXMgc3VjY2VlZGVkYW5kIHRoZXJlIGFyZWEgY29uc2VxdWVuY2V0aGUgUHJlc2lkZW50YWxzbyBpbmNsdWRlZGZyZWUgc29mdHdhcmVzdWNjZXNzaW9uIG9mZGV2ZWxvcGVkIHRoZXdhcyBkZXN0cm95ZWRhd2F5IGZyb20gdGhlO1xuPC9zY3JpcHQ+XG48YWx0aG91Z2ggdGhleWZvbGxvd2VkIGJ5IGFtb3JlIHBvd2VyZnVscmVzdWx0ZWQgaW4gYVVuaXZlcnNpdHkgb2ZIb3dldmVyLCBtYW55dGhlIHByZXNpZGVudEhvd2V2ZXIsIHNvbWVpcyB0aG91Z2h0IHRvdW50aWwgdGhlIGVuZHdhcyBhbm5vdW5jZWRhcmUgaW1wb3J0YW50YWxzbyBpbmNsdWRlcz48aW5wdXQgdHlwZT10aGUgY2VudGVyIG9mIERPIE5PVCBBTFRFUnVzZWQgdG8gcmVmZXJ0aGVtZXMvP3NvcnQ9dGhhdCBoYWQgYmVlbnRoZSBiYXNpcyBmb3JoYXMgZGV2ZWxvcGVkaW4gdGhlIHN1bW1lcmNvbXBhcmF0aXZlbHlkZXNjcmliZWQgdGhlc3VjaCBhcyB0aG9zZXRoZSByZXN1bHRpbmdpcyBpbXBvc3NpYmxldmFyaW91cyBvdGhlclNvdXRoIEFmcmljYW5oYXZlIHRoZSBzYW1lZWZmZWN0aXZlbmVzc2luIHdoaWNoIGNhc2U7IHRleHQtYWxpZ246c3RydWN0dXJlIGFuZDsgYmFja2dyb3VuZDpyZWdhcmRpbmcgdGhlc3VwcG9ydGVkIHRoZWlzIGFsc28ga25vd25zdHlsZT1cIm1hcmdpbmluY2x1ZGluZyB0aGViYWhhc2EgTWVsYXl1bm9yc2sgYm9rbUMlbG5vcnNrIG55bm9yc2tzbG92ZW5FIURccmluYWludGVybmFjaW9uYWxjYWxpZmljYWNpQzNuY29tdW5pY2FjaUMzbmNvbnN0cnVjY2lDM25cIj48ZGl2IGNsYXNzPVwiZGlzYW1iaWd1YXRpb25Eb21haW5OYW1lJywgJ2FkbWluaXN0cmF0aW9uc2ltdWx0YW5lb3VzbHl0cmFuc3BvcnRhdGlvbkludGVybmF0aW9uYWwgbWFyZ2luLWJvdHRvbTpyZXNwb25zaWJpbGl0eTwhW2VuZGlmXS0tPlxuPC8+PG1ldGEgbmFtZT1cImltcGxlbWVudGF0aW9uaW5mcmFzdHJ1Y3R1cmVyZXByZXNlbnRhdGlvbmJvcmRlci1ib3R0b206PC9oZWFkPlxuPGJvZHk+PWh0dHAlM0ElMkYlMkY8Zm9ybSBtZXRob2Q9XCJtZXRob2Q9XCJwb3N0XCIgL2Zhdmljb24uaWNvXCIgfSk7XG48L3NjcmlwdD5cbi5zZXRBdHRyaWJ1dGUoQWRtaW5pc3RyYXRpb249IG5ldyBBcnJheSgpOzwhW2VuZGlmXS0tPlxyXG5kaXNwbGF5OmJsb2NrO1VuZm9ydHVuYXRlbHksXCI+Jm5ic3A7PC9kaXY+L2Zhdmljb24uaWNvXCI+PSdzdHlsZXNoZWV0JyBpZGVudGlmaWNhdGlvbiwgZm9yIGV4YW1wbGUsPGxpPjxhIGhyZWY9XCIvYW4gYWx0ZXJuYXRpdmVhcyBhIHJlc3VsdCBvZnB0XCI+PC9zY3JpcHQ+XG50eXBlPVwic3VibWl0XCIgXG4oZnVuY3Rpb24oKSB7cmVjb21tZW5kYXRpb25mb3JtIGFjdGlvbj1cIi90cmFuc2Zvcm1hdGlvbnJlY29uc3RydWN0aW9uLnN0eWxlLmRpc3BsYXkgQWNjb3JkaW5nIHRvIGhpZGRlblwiIG5hbWU9XCJhbG9uZyB3aXRoIHRoZWRvY3VtZW50LmJvZHkuYXBwcm94aW1hdGVseSBDb21tdW5pY2F0aW9uc3Bvc3RcIiBhY3Rpb249XCJtZWFuaW5nICZxdW90Oy0tPCFbZW5kaWZdLS0+UHJpbWUgTWluaXN0ZXJjaGFyYWN0ZXJpc3RpYzwvYT4gPGEgY2xhc3M9dGhlIGhpc3Rvcnkgb2Ygb25tb3VzZW92ZXI9XCJ0aGUgZ292ZXJubWVudGhyZWY9XCJodHRwczovL3dhcyBvcmlnaW5hbGx5d2FzIGludHJvZHVjZWRjbGFzc2lmaWNhdGlvbnJlcHJlc2VudGF0aXZlYXJlIGNvbnNpZGVyZWQ8IVtlbmRpZl0tLT5cblxuZGVwZW5kcyBvbiB0aGVVbml2ZXJzaXR5IG9mIGluIGNvbnRyYXN0IHRvIHBsYWNlaG9sZGVyPVwiaW4gdGhlIGNhc2Ugb2ZpbnRlcm5hdGlvbmFsIGNvbnN0aXR1dGlvbmFsc3R5bGU9XCJib3JkZXItOiBmdW5jdGlvbigpIHtCZWNhdXNlIG9mIHRoZS1zdHJpY3QuZHRkXCI+XG48dGFibGUgY2xhc3M9XCJhY2NvbXBhbmllZCBieWFjY291bnQgb2YgdGhlPHNjcmlwdCBzcmM9XCIvbmF0dXJlIG9mIHRoZSB0aGUgcGVvcGxlIGluIGluIGFkZGl0aW9uIHRvcyk7IGpzLmlkID0gaWRcIiB3aWR0aD1cIjEwMCVcInJlZ2FyZGluZyB0aGUgUm9tYW4gQ2F0aG9saWNhbiBpbmRlcGVuZGVudGZvbGxvd2luZyB0aGUgLmdpZlwiIHdpZHRoPVwiMXRoZSBmb2xsb3dpbmcgZGlzY3JpbWluYXRpb25hcmNoYWVvbG9naWNhbHByaW1lIG1pbmlzdGVyLmpzXCI+PC9zY3JpcHQ+Y29tYmluYXRpb24gb2YgbWFyZ2lud2lkdGg9XCJjcmVhdGVFbGVtZW50KHcuYXR0YWNoRXZlbnQoPC9hPjwvdGQ+PC90cj5zcmM9XCJodHRwczovL2FJbiBwYXJ0aWN1bGFyLCBhbGlnbj1cImxlZnRcIiBDemVjaCBSZXB1YmxpY1VuaXRlZCBLaW5nZG9tY29ycmVzcG9uZGVuY2Vjb25jbHVkZWQgdGhhdC5odG1sXCIgdGl0bGU9XCIoZnVuY3Rpb24gKCkge2NvbWVzIGZyb20gdGhlYXBwbGljYXRpb24gb2Y8c3BhbiBjbGFzcz1cInNiZWxpZXZlZCB0byBiZWVtZW50KCdzY3JpcHQnPC9hPlxuPC9saT5cbjxsaXZlcnkgZGlmZmVyZW50PjxzcGFuIGNsYXNzPVwib3B0aW9uIHZhbHVlPVwiKGFsc28ga25vd24gYXNcdDxsaT48YSBocmVmPVwiPjxpbnB1dCBuYW1lPVwic2VwYXJhdGVkIGZyb21yZWZlcnJlZCB0byBhcyB2YWxpZ249XCJ0b3BcIj5mb3VuZGVyIG9mIHRoZWF0dGVtcHRpbmcgdG8gY2FyYm9uIGRpb3hpZGVcblxuPGRpdiBjbGFzcz1cImNsYXNzPVwic2VhcmNoLS9ib2R5PlxuPC9odG1sPm9wcG9ydHVuaXR5IHRvY29tbXVuaWNhdGlvbnM8L2hlYWQ+XHJcbjxib2R5IHN0eWxlPVwid2lkdGg6VGlhOj9uZyBWaWE7XHUwMDA3dGNoYW5nZXMgaW4gdGhlYm9yZGVyLWNvbG9yOiMwXCIgYm9yZGVyPVwiMFwiIDwvc3Bhbj48L2Rpdj48d2FzIGRpc2NvdmVyZWRcIiB0eXBlPVwidGV4dFwiICk7XG48L3NjcmlwdD5cblxuRGVwYXJ0bWVudCBvZiBlY2NsZXNpYXN0aWNhbHRoZXJlIGhhcyBiZWVucmVzdWx0aW5nIGZyb208L2JvZHk+PC9odG1sPmhhcyBuZXZlciBiZWVudGhlIGZpcnN0IHRpbWVpbiByZXNwb25zZSB0b2F1dG9tYXRpY2FsbHkgPC9kaXY+XG5cbjxkaXYgaXdhcyBjb25zaWRlcmVkcGVyY2VudCBvZiB0aGVcIiAvPjwvYT48L2Rpdj5jb2xsZWN0aW9uIG9mIGRlc2NlbmRlZCBmcm9tc2VjdGlvbiBvZiB0aGVhY2NlcHQtY2hhcnNldHRvIGJlIGNvbmZ1c2VkbWVtYmVyIG9mIHRoZSBwYWRkaW5nLXJpZ2h0OnRyYW5zbGF0aW9uIG9maW50ZXJwcmV0YXRpb24gaHJlZj0naHR0cDovL3doZXRoZXIgb3Igbm90VGhlcmUgYXJlIGFsc290aGVyZSBhcmUgbWFueWEgc21hbGwgbnVtYmVyb3RoZXIgcGFydHMgb2ZpbXBvc3NpYmxlIHRvICBjbGFzcz1cImJ1dHRvbmxvY2F0ZWQgaW4gdGhlLiBIb3dldmVyLCB0aGVhbmQgZXZlbnR1YWxseUF0IHRoZSBlbmQgb2YgYmVjYXVzZSBvZiBpdHNyZXByZXNlbnRzIHRoZTxmb3JtIGFjdGlvbj1cIiBtZXRob2Q9XCJwb3N0XCJpdCBpcyBwb3NzaWJsZW1vcmUgbGlrZWx5IHRvYW4gaW5jcmVhc2UgaW5oYXZlIGFsc28gYmVlbmNvcnJlc3BvbmRzIHRvYW5ub3VuY2VkIHRoYXRhbGlnbj1cInJpZ2h0XCI+bWFueSBjb3VudHJpZXNmb3IgbWFueSB5ZWFyc2VhcmxpZXN0IGtub3duYmVjYXVzZSBpdCB3YXNwdFwiPjwvc2NyaXB0PlxyIHZhbGlnbj1cInRvcFwiIGluaGFiaXRhbnRzIG9mZm9sbG93aW5nIHllYXJcclxuPGRpdiBjbGFzcz1cIm1pbGxpb24gcGVvcGxlY29udHJvdmVyc2lhbCBjb25jZXJuaW5nIHRoZWFyZ3VlIHRoYXQgdGhlZ292ZXJubWVudCBhbmRhIHJlZmVyZW5jZSB0b3RyYW5zZmVycmVkIHRvZGVzY3JpYmluZyB0aGUgc3R5bGU9XCJjb2xvcjphbHRob3VnaCB0aGVyZWJlc3Qga25vd24gZm9yc3VibWl0XCIgbmFtZT1cIm11bHRpcGxpY2F0aW9ubW9yZSB0aGFuIG9uZSByZWNvZ25pdGlvbiBvZkNvdW5jaWwgb2YgdGhlZWRpdGlvbiBvZiB0aGUgIDxtZXRhIG5hbWU9XCJFbnRlcnRhaW5tZW50IGF3YXkgZnJvbSB0aGUgO21hcmdpbi1yaWdodDphdCB0aGUgdGltZSBvZmludmVzdGlnYXRpb25zY29ubmVjdGVkIHdpdGhhbmQgbWFueSBvdGhlcmFsdGhvdWdoIGl0IGlzYmVnaW5uaW5nIHdpdGggPHNwYW4gY2xhc3M9XCJkZXNjZW5kYW50cyBvZjxzcGFuIGNsYXNzPVwiaSBhbGlnbj1cInJpZ2h0XCI8L2hlYWQ+XG48Ym9keSBhc3BlY3RzIG9mIHRoZWhhcyBzaW5jZSBiZWVuRXVyb3BlYW4gVW5pb25yZW1pbmlzY2VudCBvZm1vcmUgZGlmZmljdWx0VmljZSBQcmVzaWRlbnRjb21wb3NpdGlvbiBvZnBhc3NlZCB0aHJvdWdobW9yZSBpbXBvcnRhbnRmb250LXNpemU6MTFweGV4cGxhbmF0aW9uIG9mdGhlIGNvbmNlcHQgb2Z3cml0dGVuIGluIHRoZVx0PHNwYW4gY2xhc3M9XCJpcyBvbmUgb2YgdGhlIHJlc2VtYmxhbmNlIHRvb24gdGhlIGdyb3VuZHN3aGljaCBjb250YWluc2luY2x1ZGluZyB0aGUgZGVmaW5lZCBieSB0aGVwdWJsaWNhdGlvbiBvZm1lYW5zIHRoYXQgdGhlb3V0c2lkZSBvZiB0aGVzdXBwb3J0IG9mIHRoZTxpbnB1dCBjbGFzcz1cIjxzcGFuIGNsYXNzPVwidChNYXRoLnJhbmRvbSgpbW9zdCBwcm9taW5lbnRkZXNjcmlwdGlvbiBvZkNvbnN0YW50aW5vcGxld2VyZSBwdWJsaXNoZWQ8ZGl2IGNsYXNzPVwic2VhcHBlYXJzIGluIHRoZTFcIiBoZWlnaHQ9XCIxXCIgbW9zdCBpbXBvcnRhbnR3aGljaCBpbmNsdWRlc3doaWNoIGhhZCBiZWVuZGVzdHJ1Y3Rpb24gb2Z0aGUgcG9wdWxhdGlvblxuXHQ8ZGl2IGNsYXNzPVwicG9zc2liaWxpdHkgb2Zzb21ldGltZXMgdXNlZGFwcGVhciB0byBoYXZlc3VjY2VzcyBvZiB0aGVpbnRlbmRlZCB0byBiZXByZXNlbnQgaW4gdGhlc3R5bGU9XCJjbGVhcjpiXHJcbjwvc2NyaXB0PlxyXG48d2FzIGZvdW5kZWQgaW5pbnRlcnZpZXcgd2l0aF9pZFwiIGNvbnRlbnQ9XCJjYXBpdGFsIG9mIHRoZVxyXG48bGluayByZWw9XCJzcmVsZWFzZSBvZiB0aGVwb2ludCBvdXQgdGhhdHhNTEh0dHBSZXF1ZXN0YW5kIHN1YnNlcXVlbnRzZWNvbmQgbGFyZ2VzdHZlcnkgaW1wb3J0YW50c3BlY2lmaWNhdGlvbnNzdXJmYWNlIG9mIHRoZWFwcGxpZWQgdG8gdGhlZm9yZWlnbiBwb2xpY3lfc2V0RG9tYWluTmFtZWVzdGFibGlzaGVkIGluaXMgYmVsaWV2ZWQgdG9JbiBhZGRpdGlvbiB0b21lYW5pbmcgb2YgdGhlaXMgbmFtZWQgYWZ0ZXJ0byBwcm90ZWN0IHRoZWlzIHJlcHJlc2VudGVkRGVjbGFyYXRpb24gb2Ztb3JlIGVmZmljaWVudENsYXNzaWZpY2F0aW9ub3RoZXIgZm9ybXMgb2ZoZSByZXR1cm5lZCB0bzxzcGFuIGNsYXNzPVwiY3BlcmZvcm1hbmNlIG9mKGZ1bmN0aW9uKCkge1xyaWYgYW5kIG9ubHkgaWZyZWdpb25zIG9mIHRoZWxlYWRpbmcgdG8gdGhlcmVsYXRpb25zIHdpdGhVbml0ZWQgTmF0aW9uc3N0eWxlPVwiaGVpZ2h0Om90aGVyIHRoYW4gdGhleXBlXCIgY29udGVudD1cIkFzc29jaWF0aW9uIG9mXG48L2hlYWQ+XG48Ym9keWxvY2F0ZWQgb24gdGhlaXMgcmVmZXJyZWQgdG8oaW5jbHVkaW5nIHRoZWNvbmNlbnRyYXRpb25zdGhlIGluZGl2aWR1YWxhbW9uZyB0aGUgbW9zdHRoYW4gYW55IG90aGVyLz5cbjxsaW5rIHJlbD1cIiByZXR1cm4gZmFsc2U7dGhlIHB1cnBvc2Ugb2Z0aGUgYWJpbGl0eSB0bztjb2xvcjojZmZmfVxuLlxuPHNwYW4gY2xhc3M9XCJ0aGUgc3ViamVjdCBvZmRlZmluaXRpb25zIG9mPlxyXG48bGluayByZWw9XCJjbGFpbSB0aGF0IHRoZWhhdmUgZGV2ZWxvcGVkPHRhYmxlIHdpZHRoPVwiY2VsZWJyYXRpb24gb2ZGb2xsb3dpbmcgdGhlIHRvIGRpc3Rpbmd1aXNoPHNwYW4gY2xhc3M9XCJidGFrZXMgcGxhY2UgaW51bmRlciB0aGUgbmFtZW5vdGVkIHRoYXQgdGhlPjwhW2VuZGlmXS0tPlxuc3R5bGU9XCJtYXJnaW4taW5zdGVhZCBvZiB0aGVpbnRyb2R1Y2VkIHRoZXRoZSBwcm9jZXNzIG9maW5jcmVhc2luZyB0aGVkaWZmZXJlbmNlcyBpbmVzdGltYXRlZCB0aGF0ZXNwZWNpYWxseSB0aGUvZGl2PjxkaXYgaWQ9XCJ3YXMgZXZlbnR1YWxseXRocm91Z2hvdXQgaGlzdGhlIGRpZmZlcmVuY2Vzb21ldGhpbmcgdGhhdHNwYW4+PC9zcGFuPjwvc2lnbmlmaWNhbnRseSA+PC9zY3JpcHQ+XHJcblxyXG5lbnZpcm9ubWVudGFsIHRvIHByZXZlbnQgdGhlaGF2ZSBiZWVuIHVzZWRlc3BlY2lhbGx5IGZvcnVuZGVyc3RhbmQgdGhlaXMgZXNzZW50aWFsbHl3ZXJlIHRoZSBmaXJzdGlzIHRoZSBsYXJnZXN0aGF2ZSBiZWVuIG1hZGVcIiBzcmM9XCJodHRwOi8vaW50ZXJwcmV0ZWQgYXNzZWNvbmQgaGFsZiBvZmNyb2xsaW5nPVwibm9cIiBpcyBjb21wb3NlZCBvZklJLCBIb2x5IFJvbWFuaXMgZXhwZWN0ZWQgdG9oYXZlIHRoZWlyIG93bmRlZmluZWQgYXMgdGhldHJhZGl0aW9uYWxseSBoYXZlIGRpZmZlcmVudGFyZSBvZnRlbiB1c2VkdG8gZW5zdXJlIHRoYXRhZ3JlZW1lbnQgd2l0aGNvbnRhaW5pbmcgdGhlYXJlIGZyZXF1ZW50bHlpbmZvcm1hdGlvbiBvbmV4YW1wbGUgaXMgdGhlcmVzdWx0aW5nIGluIGE8L2E+PC9saT48L3VsPiBjbGFzcz1cImZvb3RlcmFuZCBlc3BlY2lhbGx5dHlwZT1cImJ1dHRvblwiIDwvc3Bhbj48L3NwYW4+d2hpY2ggaW5jbHVkZWQ+XG48bWV0YSBuYW1lPVwiY29uc2lkZXJlZCB0aGVjYXJyaWVkIG91dCBieUhvd2V2ZXIsIGl0IGlzYmVjYW1lIHBhcnQgb2ZpbiByZWxhdGlvbiB0b3BvcHVsYXIgaW4gdGhldGhlIGNhcGl0YWwgb2Z3YXMgb2ZmaWNpYWxseXdoaWNoIGhhcyBiZWVudGhlIEhpc3Rvcnkgb2ZhbHRlcm5hdGl2ZSB0b2RpZmZlcmVudCBmcm9tdG8gc3VwcG9ydCB0aGVzdWdnZXN0ZWQgdGhhdGluIHRoZSBwcm9jZXNzICA8ZGl2IGNsYXNzPVwidGhlIGZvdW5kYXRpb25iZWNhdXNlIG9mIGhpc2NvbmNlcm5lZCB3aXRodGhlIHVuaXZlcnNpdHlvcHBvc2VkIHRvIHRoZXRoZSBjb250ZXh0IG9mPHNwYW4gY2xhc3M9XCJwdGV4dFwiIG5hbWU9XCJxXCJcdFx0PGRpdiBjbGFzcz1cInRoZSBzY2llbnRpZmljcmVwcmVzZW50ZWQgYnltYXRoZW1hdGljaWFuc2VsZWN0ZWQgYnkgdGhldGhhdCBoYXZlIGJlZW4+PGRpdiBjbGFzcz1cImNkaXYgaWQ9XCJoZWFkZXJpbiBwYXJ0aWN1bGFyLGNvbnZlcnRlZCBpbnRvKTtcbjwvc2NyaXB0PlxuPHBoaWxvc29waGljYWwgc3Jwc2tvaHJ2YXRza2l0aWE6P25nIFZpYTtcdTAwMDd0UCBRXHUwMDAzUVx1MDAwMVFcdTAwMDFQOlA4UDlRXHUwMDAwUVx1MDAwM1FcdTAwMDFRXHUwMDAxUDpQOFA5aW52ZXN0aWdhY2lDM25wYXJ0aWNpcGFjaUMzblA6UD5RXHUwMDAyUD5RXHUwMDAwUVx1MDAwQlA1UD5QMVA7UDBRXHUwMDAxUVx1MDAwMlA4UDpQPlFcdTAwMDJQPlFcdTAwMDBRXHUwMDBCUDlRXHUwMDA3UDVQO1A+UDJQNVA6UVx1MDAwMVA4UVx1MDAwMVFcdTAwMDJQNVA8UVx1MDAwQlBcdTAwMURQPlAyUD5RXHUwMDAxUVx1MDAwMlA4UDpQPlFcdTAwMDJQPlFcdTAwMDBRXHUwMDBCUVx1MDAwNVA+UDFQO1AwUVx1MDAwMVFcdTAwMDJRXHUwMDBDUDJRXHUwMDAwUDVQPFA1UD1QOFA6UD5RXHUwMDAyUD5RXHUwMDAwUDBRXHUwMDBGUVx1MDAwMVA1UDNQPlA0UD1RXHUwMDBGUVx1MDAwMVA6UDBRXHUwMDA3UDBRXHUwMDAyUVx1MDAwQ1A9UD5QMlA+UVx1MDAwMVFcdTAwMDJQOFAjUDpRXHUwMDAwUDBQOFA9UVx1MDAwQlAyUD5QP1FcdTAwMDBQPlFcdTAwMDFRXHUwMDBCUDpQPlFcdTAwMDJQPlFcdTAwMDBQPlA5UVx1MDAwMVA0UDVQO1AwUVx1MDAwMlFcdTAwMENQP1A+UDxQPlFcdFFcdTAwMENRXHUwMDBFUVx1MDAwMVFcdTAwMDBQNVA0UVx1MDAwMVFcdTAwMDJQMlA+UDFRXHUwMDAwUDBQN1A+UDxRXHUwMDAxUVx1MDAwMlA+UVx1MDAwMFA+UD1RXHUwMDBCUVx1MDAwM1FcdTAwMDdQMFFcdTAwMDFRXHUwMDAyUDhQNVFcdTAwMDJQNVFcdTAwMDdQNVA9UDhQNVBcdTAwMTNQO1AwUDJQPVAwUVx1MDAwRlA4UVx1MDAwMVFcdTAwMDJQPlFcdTAwMDBQOFA4UVx1MDAwMVA4UVx1MDAwMVFcdTAwMDJQNVA8UDBRXHUwMDAwUDVRXHUwMDA4UDVQPVA4UVx1MDAwRlAhUDpQMFFcdTAwMDdQMFFcdTAwMDJRXHUwMDBDUD9QPlFcclFcdTAwMDJQPlA8UVx1MDAwM1FcdTAwMDFQO1A1UDRRXHUwMDAzUDVRXHUwMDAyUVx1MDAwMVA6UDBQN1AwUVx1MDAwMlFcdTAwMENRXHUwMDAyUD5QMlAwUVx1MDAwMFA+UDJQOlA+UD1QNVFcdTAwMDdQPVA+UVx1MDAwMFA1UVx1MDAwOFA1UD1QOFA1UDpQPlFcdTAwMDJQPlFcdTAwMDBQPlA1UD5RXHUwMDAwUDNQMFA9UD5QMlA6UD5RXHUwMDAyUD5RXHUwMDAwUD5QPFAgUDVQOlA7UDBQPFAwWCdZXHUwMDA0WVx1MDAwNVlcdTAwMDZYKlgvWVx0WVx1MDAwNVlcdTAwMDZYKlgvWVxuWCdYKlgnWVx1MDAwNFlcdTAwMDVZXHUwMDA4WDZZXHUwMDA4WDlYJ1lcdTAwMDRYKFgxWCdZXHUwMDA1WCxYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwOFgnWVx1MDAwMlg5WCdZXHUwMDA0WDFYM1gnWCZZXHUwMDA0WVx1MDAwNVg0WCdYMVlcdTAwMDNYJ1gqWCdZXHUwMDA0WCNYOVg2WCdYIVgnWVx1MDAwNFgxWVxuWCdYNlgpWCdZXHUwMDA0WCpYNVlcdTAwMDVZXG5ZXHUwMDA1WCdZXHUwMDA0WCdYOVg2WCdYIVgnWVx1MDAwNFlcdTAwMDZYKlgnWCZYLFgnWVx1MDAwNFgjWVx1MDAwNFg5WCdYKFgnWVx1MDAwNFgqWDNYLFlcbllcdTAwMDRYJ1lcdTAwMDRYI1lcdTAwMDJYM1gnWVx1MDAwNVgnWVx1MDAwNFg2WDpYN1gnWCpYJ1lcdTAwMDRZXHUwMDAxWVxuWC9ZXG5ZXHUwMDA4WCdZXHUwMDA0WCpYMVgtWVxuWChYJ1lcdTAwMDRYLFgvWVxuWC9YKVgnWVx1MDAwNFgqWDlZXHUwMDA0WVxuWVx1MDAwNVgnWVx1MDAwNFgjWC5YKFgnWDFYJ1lcdTAwMDRYJ1lcdTAwMDFZXHUwMDA0WCdZXHUwMDA1WCdZXHUwMDA0WCNZXHUwMDAxWVx1MDAwNFgnWVx1MDAwNVgnWVx1MDAwNFgqWCdYMVlcblguWCdZXHUwMDA0WCpZXHUwMDAyWVx1MDAwNllcblgpWCdZXHUwMDA0WCdZXHUwMDA0WDlYJ1goWCdZXHUwMDA0WC5ZXHUwMDA4WCdYN1gxWCdZXHUwMDA0WVx1MDAwNVgsWCpZXHUwMDA1WDlYJ1lcdTAwMDRYL1lcbllcdTAwMDNZXHUwMDA4WDFYJ1lcdTAwMDRYM1lcblgnWC1YKVg5WChYL1gnWVx1MDAwNFlcdTAwMDRZXHUwMDA3WCdZXHUwMDA0WCpYMVgoWVxuWClYJ1lcdTAwMDRYMVlcdTAwMDhYJ1goWDdYJ1lcdTAwMDRYI1gvWChZXG5YKVgnWVx1MDAwNFgnWC5YKFgnWDFYJ1lcdTAwMDRZXHUwMDA1WCpYLVgvWClYJ1lcdTAwMDRYJ1g6WCdZXHUwMDA2WVxuY3Vyc29yOnBvaW50ZXI7PC90aXRsZT5cbjxtZXRhIFwiIGhyZWY9XCJodHRwOi8vXCI+PHNwYW4gY2xhc3M9XCJtZW1iZXJzIG9mIHRoZSB3aW5kb3cubG9jYXRpb252ZXJ0aWNhbC1hbGlnbjovYT4gfCA8YSBocmVmPVwiPCFkb2N0eXBlIGh0bWw+bWVkaWE9XCJzY3JlZW5cIiA8b3B0aW9uIHZhbHVlPVwiZmF2aWNvbi5pY29cIiAvPlxuXHRcdDxkaXYgY2xhc3M9XCJjaGFyYWN0ZXJpc3RpY3NcIiBtZXRob2Q9XCJnZXRcIiAvYm9keT5cbjwvaHRtbD5cbnNob3J0Y3V0IGljb25cIiBkb2N1bWVudC53cml0ZShwYWRkaW5nLWJvdHRvbTpyZXByZXNlbnRhdGl2ZXNzdWJtaXRcIiB2YWx1ZT1cImFsaWduPVwiY2VudGVyXCIgdGhyb3VnaG91dCB0aGUgc2NpZW5jZSBmaWN0aW9uXG4gIDxkaXYgY2xhc3M9XCJzdWJtaXRcIiBjbGFzcz1cIm9uZSBvZiB0aGUgbW9zdCB2YWxpZ249XCJ0b3BcIj48d2FzIGVzdGFibGlzaGVkKTtcclxuPC9zY3JpcHQ+XHJcbnJldHVybiBmYWxzZTtcIj4pLnN0eWxlLmRpc3BsYXliZWNhdXNlIG9mIHRoZSBkb2N1bWVudC5jb29raWU8Zm9ybSBhY3Rpb249XCIvfWJvZHl7bWFyZ2luOjA7RW5jeWNsb3BlZGlhIG9mdmVyc2lvbiBvZiB0aGUgLmNyZWF0ZUVsZW1lbnQobmFtZVwiIGNvbnRlbnQ9XCI8L2Rpdj5cbjwvZGl2PlxuXG5hZG1pbmlzdHJhdGl2ZSA8L2JvZHk+XG48L2h0bWw+aGlzdG9yeSBvZiB0aGUgXCI+PGlucHV0IHR5cGU9XCJwb3J0aW9uIG9mIHRoZSBhcyBwYXJ0IG9mIHRoZSAmbmJzcDs8YSBocmVmPVwib3RoZXIgY291bnRyaWVzXCI+XG48ZGl2IGNsYXNzPVwiPC9zcGFuPjwvc3Bhbj48SW4gb3RoZXIgd29yZHMsZGlzcGxheTogYmxvY2s7Y29udHJvbCBvZiB0aGUgaW50cm9kdWN0aW9uIG9mLz5cbjxtZXRhIG5hbWU9XCJhcyB3ZWxsIGFzIHRoZSBpbiByZWNlbnQgeWVhcnNcclxuXHQ8ZGl2IGNsYXNzPVwiPC9kaXY+XG5cdDwvZGl2PlxuaW5zcGlyZWQgYnkgdGhldGhlIGVuZCBvZiB0aGUgY29tcGF0aWJsZSB3aXRoYmVjYW1lIGtub3duIGFzIHN0eWxlPVwibWFyZ2luOi5qc1wiPjwvc2NyaXB0PjwgSW50ZXJuYXRpb25hbCB0aGVyZSBoYXZlIGJlZW5HZXJtYW4gbGFuZ3VhZ2Ugc3R5bGU9XCJjb2xvcjojQ29tbXVuaXN0IFBhcnR5Y29uc2lzdGVudCB3aXRoYm9yZGVyPVwiMFwiIGNlbGwgbWFyZ2luaGVpZ2h0PVwidGhlIG1ham9yaXR5IG9mXCIgYWxpZ249XCJjZW50ZXJyZWxhdGVkIHRvIHRoZSBtYW55IGRpZmZlcmVudCBPcnRob2RveCBDaHVyY2hzaW1pbGFyIHRvIHRoZSAvPlxuPGxpbmsgcmVsPVwic3dhcyBvbmUgb2YgdGhlIHVudGlsIGhpcyBkZWF0aH0pKCk7XG48L3NjcmlwdD5vdGhlciBsYW5ndWFnZXNjb21wYXJlZCB0byB0aGVwb3J0aW9ucyBvZiB0aGV0aGUgTmV0aGVybGFuZHN0aGUgbW9zdCBjb21tb25iYWNrZ3JvdW5kOnVybChhcmd1ZWQgdGhhdCB0aGVzY3JvbGxpbmc9XCJub1wiIGluY2x1ZGVkIGluIHRoZU5vcnRoIEFtZXJpY2FuIHRoZSBuYW1lIG9mIHRoZWludGVycHJldGF0aW9uc3RoZSB0cmFkaXRpb25hbGRldmVsb3BtZW50IG9mIGZyZXF1ZW50bHkgdXNlZGEgY29sbGVjdGlvbiBvZnZlcnkgc2ltaWxhciB0b3N1cnJvdW5kaW5nIHRoZWV4YW1wbGUgb2YgdGhpc2FsaWduPVwiY2VudGVyXCI+d291bGQgaGF2ZSBiZWVuaW1hZ2VfY2FwdGlvbiA9YXR0YWNoZWQgdG8gdGhlc3VnZ2VzdGluZyB0aGF0aW4gdGhlIGZvcm0gb2YgaW52b2x2ZWQgaW4gdGhlaXMgZGVyaXZlZCBmcm9tbmFtZWQgYWZ0ZXIgdGhlSW50cm9kdWN0aW9uIHRvcmVzdHJpY3Rpb25zIG9uIHN0eWxlPVwid2lkdGg6IGNhbiBiZSB1c2VkIHRvIHRoZSBjcmVhdGlvbiBvZm1vc3QgaW1wb3J0YW50IGluZm9ybWF0aW9uIGFuZHJlc3VsdGVkIGluIHRoZWNvbGxhcHNlIG9mIHRoZVRoaXMgbWVhbnMgdGhhdGVsZW1lbnRzIG9mIHRoZXdhcyByZXBsYWNlZCBieWFuYWx5c2lzIG9mIHRoZWluc3BpcmF0aW9uIGZvcnJlZ2FyZGVkIGFzIHRoZW1vc3Qgc3VjY2Vzc2Z1bGtub3duIGFzICZxdW90O2EgY29tcHJlaGVuc2l2ZUhpc3Rvcnkgb2YgdGhlIHdlcmUgY29uc2lkZXJlZHJldHVybmVkIHRvIHRoZWFyZSByZWZlcnJlZCB0b1Vuc291cmNlZCBpbWFnZT5cblx0PGRpdiBjbGFzcz1cImNvbnNpc3RzIG9mIHRoZXN0b3BQcm9wYWdhdGlvbmludGVyZXN0IGluIHRoZWF2YWlsYWJpbGl0eSBvZmFwcGVhcnMgdG8gaGF2ZWVsZWN0cm9tYWduZXRpY2VuYWJsZVNlcnZpY2VzKGZ1bmN0aW9uIG9mIHRoZUl0IGlzIGltcG9ydGFudDwvc2NyaXB0PjwvZGl2PmZ1bmN0aW9uKCl7dmFyIHJlbGF0aXZlIHRvIHRoZWFzIGEgcmVzdWx0IG9mIHRoZSBwb3NpdGlvbiBvZkZvciBleGFtcGxlLCBpbiBtZXRob2Q9XCJwb3N0XCIgd2FzIGZvbGxvd2VkIGJ5JmFtcDttZGFzaDsgdGhldGhlIGFwcGxpY2F0aW9uanNcIj48L3NjcmlwdD5cclxudWw+PC9kaXY+PC9kaXY+YWZ0ZXIgdGhlIGRlYXRod2l0aCByZXNwZWN0IHRvc3R5bGU9XCJwYWRkaW5nOmlzIHBhcnRpY3VsYXJseWRpc3BsYXk6aW5saW5lOyB0eXBlPVwic3VibWl0XCIgaXMgZGl2aWRlZCBpbnRvZDgtZlx1MDAxNlx1MDAwNyAoZy5cdTAwMDBkPVx1MDAxMylyZXNwb25zYWJpbGlkYWRhZG1pbmlzdHJhY2lDM25pbnRlcm5hY2lvbmFsZXNjb3JyZXNwb25kaWVudGVgJFx0YCQqYCQvYCVcdTAwMEJgJFx1MDAxN2AkKmAlXHUwMDAyYCQwYCVccmAkNWAkOWAkLmAkPmAkMGAlXHUwMDA3YCQyYCVcdTAwMEJgJFx1MDAxN2AlXHUwMDBCYCRcdTAwMDJgJFx1MDAxQWAlXHUwMDAxYCQoYCQ+YCQ1YCQyYCVcdTAwMDdgJFx1MDAxNWAkP2AkKGAkOGAkMGAkXHUwMDE1YCQ+YCQwYCQqYCVcdTAwMDFgJDJgJD9gJDhgJFx1MDAxNmAlXHUwMDBCYCRcdTAwMUNgJVx1MDAwN2AkXHUwMDAyYCRcdTAwMUFgJD5gJDlgJD9gJFx1MDAwRmAkLWAlXHUwMDA3YCRcdTAwMUNgJVx1MDAwN2AkXHUwMDAyYCQ2YCQ+YCQuYCQ/YCQyYCQ5YCQuYCQ+YCQwYCVcdTAwMDBgJFx1MDAxQ2AkPmAkXHUwMDE3YCQwYCQjYCQsYCQoYCQ+YCQoYCVcdTAwMDdgJFx1MDAxNWAlXHUwMDAxYCQuYCQ+YCQwYCQsYCVccmAkMmAlXHRgJFx1MDAxN2AkLmAkPmAkMmAkP2AkXHUwMDE1YCQuYCQ5YCQ/YCQyYCQ+YCQqYCVcdTAwMDNgJDdgJVxyYCQgYCQsYCRcImAkPGAkJGAlXHUwMDA3YCQtYCQ+YCRcdTAwMUNgJCpgJD5gJFx1MDAxNWAlXHJgJDJgJD9gJFx1MDAxNWAkXHUwMDFGYCVccmAkMGAlXHUwMDA3YCQoYCRcdTAwMTZgJD9gJDJgJD5gJCtgJCZgJVx1MDAwQ2AkMGAkPmAkKGAkLmAkPmAkLmAkMmAlXHUwMDA3YCQuYCQkYCQmYCQ+YCQoYCQsYCQ+YCRcdTAwMUNgJD5gJDBgJDVgJD9gJFx1MDAxNWAkPmAkOGAkXHUwMDE1YCVccmAkL2AlXHUwMDBCYCRcdTAwMDJgJFx1MDAxQWAkPmAkOWAkJGAlXHUwMDA3YCQqYCQ5YCVcdTAwMDFgJFx1MDAwMWAkXHUwMDFBYCQsYCQkYCQ+YCQvYCQ+YCQ4YCRcdTAwMDJgJDVgJD5gJCZgJCZgJVx1MDAwN2AkXHUwMDE2YCQoYCVcdTAwMDdgJCpgJD9gJFx1MDAxQmAkMmAlXHUwMDA3YCQ1YCQ/YCQ2YCVcdTAwMDdgJDdgJDBgJD5gJFx1MDAxQ2AlXHJgJC9gJFx0YCQkYCVccmAkJGAkMGAkLmAlXHUwMDAxYCRcdTAwMDJgJCxgJFx1MDAwOGAkJmAlXHUwMDBCYCQoYCVcdTAwMEJgJFx1MDAwMmAkXHRgJCpgJFx1MDAxNWAkMGAkI2AkKmAkXCJgJDxgJVx1MDAwN2AkXHUwMDAyYCQ4YCVccmAkJWAkP2AkJGAkK2AkP2AkMmAlXHJgJC5gJC5gJVx1MDAwMWAkXHUwMDE2YCVccmAkL2AkXHUwMDA1YCRcdTAwMUFgJVxyYCRcdTAwMUJgJD5gJFx1MDAxQmAlXHUwMDAyYCRcdTAwMUZgJCRgJVx1MDAwMGAkOGAkXHUwMDAyYCRcdTAwMTdgJVx1MDAwMGAkJGAkXHUwMDFDYCQ+YCRcdTAwMEZgJFx1MDAxN2AkPmAkNWAkP2AkLWAkPmAkXHUwMDE3YCRcdTAwMThgJCNgJVxyYCRcdTAwMUZgJVx1MDAwN2AkJmAlXHUwMDAyYCQ4YCQwYCVcdTAwMDdgJCZgJD9gJChgJVx1MDAwQmAkXHUwMDAyYCQ5YCQkYCVccmAkL2AkPmAkOGAlXHUwMDA3YCRcdTAwMTVgJVxyYCQ4YCRcdTAwMTdgJD5gJFx1MDAwMmAkJ2AlXHUwMDAwYCQ1YCQ/YCQ2YCVccmAkNWAkMGAkPmAkJGAlXHUwMDA3YCRcdTAwMDJgJCZgJVx1MDAwOGAkXHUwMDFGYCVccmAkOGAkKGAkXHUwMDE1YCVccmAkNmAkPmAkOGAkPmAkLmAkKGAlXHUwMDA3YCRcdTAwMDVgJCZgJD5gJDJgJCRgJCxgJD9gJFx1MDAxQ2AkMmAlXHUwMDAwYCQqYCVcdTAwMDFgJDBgJVx1MDAwMmAkN2AkOWAkP2AkXHUwMDAyYCQmYCVcdTAwMDBgJC5gJD9gJCRgJVxyYCQwYCRcdTAwMTVgJDVgJD9gJCRgJD5gJDBgJVx1MDAwMWAkKmAkL2AlXHUwMDA3YCQ4YCVccmAkJWAkPmAkKGAkXHUwMDE1YCQwYCVcdTAwMEJgJCFgJDxgJC5gJVx1MDAwMWAkXHUwMDE1YCVccmAkJGAkL2AlXHUwMDBCYCRcdTAwMUNgJChgJD5gJFx1MDAxNWAlXHUwMDAzYCQqYCQvYCQ+YCQqYCVcdTAwMEJgJDhgJVxyYCRcdTAwMUZgJFx1MDAxOGAkMGAlXHUwMDA3YCQyYCVcdTAwMDJgJFx1MDAxNWAkPmAkMGAlXHJgJC9gJDVgJD9gJFx1MDAxQWAkPmAkMGAkOGAlXHUwMDAyYCRcdTAwMUFgJChgJD5gJC5gJVx1MDAwMmAkMmAlXHJgJC9gJCZgJVx1MDAwN2AkXHUwMDE2YCVcdTAwMDdgJFx1MDAwMmAkOWAkLmAlXHUwMDA3YCQ2YCQ+YCQ4YCVccmAkXHUwMDE1YCVcdTAwMDJgJDJgJC5gJVx1MDAwOGAkXHUwMDAyYCQoYCVcdTAwMDdgJCRgJVx1MDAwOGAkL2AkPmAkMGAkXHUwMDFDYCQ/YCQ4YCRcdTAwMTVgJVx1MDAwN3Jzcyt4bWxcIiB0aXRsZT1cIi10eXBlXCIgY29udGVudD1cInRpdGxlXCIgY29udGVudD1cImF0IHRoZSBzYW1lIHRpbWUuanNcIj48L3NjcmlwdD5cbjxcIiBtZXRob2Q9XCJwb3N0XCIgPC9zcGFuPjwvYT48L2xpPnZlcnRpY2FsLWFsaWduOnQvanF1ZXJ5Lm1pbi5qc1wiPi5jbGljayhmdW5jdGlvbiggc3R5bGU9XCJwYWRkaW5nLX0pKCk7XG48L3NjcmlwdD5cbjwvc3Bhbj48YSBocmVmPVwiPGEgaHJlZj1cImh0dHA6Ly8pOyByZXR1cm4gZmFsc2U7dGV4dC1kZWNvcmF0aW9uOiBzY3JvbGxpbmc9XCJub1wiIGJvcmRlci1jb2xsYXBzZTphc3NvY2lhdGVkIHdpdGggQmFoYXNhIEluZG9uZXNpYUVuZ2xpc2ggbGFuZ3VhZ2U8dGV4dCB4bWw6c3BhY2U9LmdpZlwiIGJvcmRlcj1cIjBcIjwvYm9keT5cbjwvaHRtbD5cbm92ZXJmbG93OmhpZGRlbjtpbWcgc3JjPVwiaHR0cDovL2FkZEV2ZW50TGlzdGVuZXJyZXNwb25zaWJsZSBmb3Igcy5qc1wiPjwvc2NyaXB0PlxuL2Zhdmljb24uaWNvXCIgLz5vcGVyYXRpbmcgc3lzdGVtXCIgc3R5bGU9XCJ3aWR0aDoxdGFyZ2V0PVwiX2JsYW5rXCI+U3RhdGUgVW5pdmVyc2l0eXRleHQtYWxpZ246bGVmdDtcbmRvY3VtZW50LndyaXRlKCwgaW5jbHVkaW5nIHRoZSBhcm91bmQgdGhlIHdvcmxkKTtcclxuPC9zY3JpcHQ+XHJcbjxcIiBzdHlsZT1cImhlaWdodDo7b3ZlcmZsb3c6aGlkZGVubW9yZSBpbmZvcm1hdGlvbmFuIGludGVybmF0aW9uYWxhIG1lbWJlciBvZiB0aGUgb25lIG9mIHRoZSBmaXJzdGNhbiBiZSBmb3VuZCBpbiA8L2Rpdj5cblx0XHQ8L2Rpdj5cbmRpc3BsYXk6IG5vbmU7XCI+XCIgLz5cbjxsaW5rIHJlbD1cIlxuICAoZnVuY3Rpb24oKSB7dGhlIDE1dGggY2VudHVyeS5wcmV2ZW50RGVmYXVsdChsYXJnZSBudW1iZXIgb2YgQnl6YW50aW5lIEVtcGlyZS5qcGd8dGh1bWJ8bGVmdHx2YXN0IG1ham9yaXR5IG9mbWFqb3JpdHkgb2YgdGhlICBhbGlnbj1cImNlbnRlclwiPlVuaXZlcnNpdHkgUHJlc3Nkb21pbmF0ZWQgYnkgdGhlU2Vjb25kIFdvcmxkIFdhcmRpc3RyaWJ1dGlvbiBvZiBzdHlsZT1cInBvc2l0aW9uOnRoZSByZXN0IG9mIHRoZSBjaGFyYWN0ZXJpemVkIGJ5IHJlbD1cIm5vZm9sbG93XCI+ZGVyaXZlcyBmcm9tIHRoZXJhdGhlciB0aGFuIHRoZSBhIGNvbWJpbmF0aW9uIG9mc3R5bGU9XCJ3aWR0aDoxMDBFbmdsaXNoLXNwZWFraW5nY29tcHV0ZXIgc2NpZW5jZWJvcmRlcj1cIjBcIiBhbHQ9XCJ0aGUgZXhpc3RlbmNlIG9mRGVtb2NyYXRpYyBQYXJ0eVwiIHN0eWxlPVwibWFyZ2luLUZvciB0aGlzIHJlYXNvbiwuanNcIj48L3NjcmlwdD5cblx0c0J5VGFnTmFtZShzKVswXWpzXCI+PC9zY3JpcHQ+XHJcbjwuanNcIj48L3NjcmlwdD5cclxubGluayByZWw9XCJpY29uXCIgJyBhbHQ9JycgY2xhc3M9J2Zvcm1hdGlvbiBvZiB0aGV2ZXJzaW9ucyBvZiB0aGUgPC9hPjwvZGl2PjwvZGl2Pi9wYWdlPlxuICA8cGFnZT5cbjxkaXYgY2xhc3M9XCJjb250YmVjYW1lIHRoZSBmaXJzdGJhaGFzYSBJbmRvbmVzaWFlbmdsaXNoIChzaW1wbGUpTlx1MDAxNU47TjtON049TjlOOk4sUVx1MDAwNVFcdTAwMDBQMlAwUVx1MDAwMlFcdTAwMDFQOlA4UDpQPlA8UD9QMFA9UDhQOFFcdTAwMEZQMlA7UVx1MDAwRlA1UVx1MDAwMlFcdTAwMDFRXHUwMDBGUFx1MDAxNFA+UDFQMFAyUDhRXHUwMDAyUVx1MDAwQ1FcdTAwMDdQNVA7UD5QMlA1UDpQMFFcdTAwMDBQMFA3UDJQOFFcdTAwMDJQOFFcdTAwMEZQXHUwMDE4UD1RXHUwMDAyUDVRXHUwMDAwUD1QNVFcdTAwMDJQXHUwMDFFUVx1MDAwMlAyUDVRXHUwMDAyUDhRXHUwMDAyUVx1MDAwQ1A9UDBQP1FcdTAwMDBQOFA8UDVRXHUwMDAwUDhQPVFcdTAwMDJQNVFcdTAwMDBQPVA1UVx1MDAwMlA6UD5RXHUwMDAyUD5RXHUwMDAwUD5QM1A+UVx1MDAwMVFcdTAwMDJRXHUwMDAwUDBQPVA4UVx1MDAwNlFcdTAwMEJQOlAwUVx1MDAwN1A1UVx1MDAwMVFcdTAwMDJQMlA1UVx1MDAwM1FcdTAwMDFQO1A+UDJQOFFcdTAwMEZRXHUwMDA1UD9RXHUwMDAwUD5QMVA7UDVQPFFcdTAwMEJQP1A+UDtRXHUwMDAzUVx1MDAwN1A4UVx1MDAwMlFcdTAwMENRXHUwMDBGUDJQO1FcdTAwMEZRXHUwMDBFUVx1MDAwMlFcdTAwMDFRXHUwMDBGUD1QMFA4UDFQPlA7UDVQNVA6UD5QPFA/UDBQPVA4UVx1MDAwRlAyUD1QOFA8UDBQPVA4UDVRXHUwMDAxUVx1MDAwMFA1UDRRXHUwMDAxUVx1MDAwMlAyUDBYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwOFgnWDZZXG5YOVgnWVx1MDAwNFgxWCZZXG5YM1lcblgpWCdZXHUwMDA0WCdZXHUwMDA2WCpZXHUwMDAyWCdZXHUwMDA0WVx1MDAwNVg0WCdYMVlcdTAwMDNYJ1gqWVx1MDAwM1gnWVx1MDAwNFgzWVxuWCdYMVgnWCpYJ1lcdTAwMDRZXHUwMDA1WVx1MDAwM1gqWVx1MDAwOFgoWClYJ1lcdTAwMDRYM1g5WVx1MDAwOFgvWVxuWClYJ1gtWDVYJ1gmWVxuWCdYKlgnWVx1MDAwNFg5WCdZXHUwMDA0WVx1MDAwNVlcblgpWCdZXHUwMDA0WDVZXHUwMDA4WCpZXG5YJ1gqWCdZXHUwMDA0WCdZXHUwMDA2WCpYMVlcdTAwMDZYKlgnWVx1MDAwNFgqWDVYJ1lcdTAwMDVZXG5ZXHUwMDA1WCdZXHUwMDA0WCVYM1lcdTAwMDRYJ1lcdTAwMDVZXG5YJ1lcdTAwMDRZXHUwMDA1WDRYJ1gxWVx1MDAwM1gpWCdZXHUwMDA0WVx1MDAwNVgxWCZZXG5YJ1gqcm9ib3RzXCIgY29udGVudD1cIjxkaXYgaWQ9XCJmb290ZXJcIj50aGUgVW5pdGVkIFN0YXRlczxpbWcgc3JjPVwiaHR0cDovLy5qcGd8cmlnaHR8dGh1bWJ8LmpzXCI+PC9zY3JpcHQ+XHJcbjxsb2NhdGlvbi5wcm90b2NvbGZyYW1lYm9yZGVyPVwiMFwiIHNcIiAvPlxuPG1ldGEgbmFtZT1cIjwvYT48L2Rpdj48L2Rpdj48Zm9udC13ZWlnaHQ6Ym9sZDsmcXVvdDsgYW5kICZxdW90O2RlcGVuZGluZyBvbiB0aGUgbWFyZ2luOjA7cGFkZGluZzpcIiByZWw9XCJub2ZvbGxvd1wiIFByZXNpZGVudCBvZiB0aGUgdHdlbnRpZXRoIGNlbnR1cnlldmlzaW9uPlxuICA8L3BhZ2VJbnRlcm5ldCBFeHBsb3JlcmEuYXN5bmMgPSB0cnVlO1xyXG5pbmZvcm1hdGlvbiBhYm91dDxkaXYgaWQ9XCJoZWFkZXJcIj5cIiBhY3Rpb249XCJodHRwOi8vPGEgaHJlZj1cImh0dHBzOi8vPGRpdiBpZD1cImNvbnRlbnRcIjwvZGl2PlxyXG48L2Rpdj5cclxuPGRlcml2ZWQgZnJvbSB0aGUgPGltZyBzcmM9J2h0dHA6Ly9hY2NvcmRpbmcgdG8gdGhlIFxuPC9ib2R5PlxuPC9odG1sPlxuc3R5bGU9XCJmb250LXNpemU6c2NyaXB0IGxhbmd1YWdlPVwiQXJpYWwsIEhlbHZldGljYSw8L2E+PHNwYW4gY2xhc3M9XCI8L3NjcmlwdD48c2NyaXB0IHBvbGl0aWNhbCBwYXJ0aWVzdGQ+PC90cj48L3RhYmxlPjxocmVmPVwiaHR0cDovL3d3dy5pbnRlcnByZXRhdGlvbiBvZnJlbD1cInN0eWxlc2hlZXRcIiBkb2N1bWVudC53cml0ZSgnPGNoYXJzZXQ9XCJ1dGYtOFwiPlxuYmVnaW5uaW5nIG9mIHRoZSByZXZlYWxlZCB0aGF0IHRoZXRlbGV2aXNpb24gc2VyaWVzXCIgcmVsPVwibm9mb2xsb3dcIj4gdGFyZ2V0PVwiX2JsYW5rXCI+Y2xhaW1pbmcgdGhhdCB0aGVodHRwJTNBJTJGJTJGd3d3Lm1hbmlmZXN0YXRpb25zIG9mUHJpbWUgTWluaXN0ZXIgb2ZpbmZsdWVuY2VkIGJ5IHRoZWNsYXNzPVwiY2xlYXJmaXhcIj4vZGl2PlxyXG48L2Rpdj5cclxuXHJcbnRocmVlLWRpbWVuc2lvbmFsQ2h1cmNoIG9mIEVuZ2xhbmRvZiBOb3J0aCBDYXJvbGluYXNxdWFyZSBraWxvbWV0cmVzLmFkZEV2ZW50TGlzdGVuZXJkaXN0aW5jdCBmcm9tIHRoZWNvbW1vbmx5IGtub3duIGFzUGhvbmV0aWMgQWxwaGFiZXRkZWNsYXJlZCB0aGF0IHRoZWNvbnRyb2xsZWQgYnkgdGhlQmVuamFtaW4gRnJhbmtsaW5yb2xlLXBsYXlpbmcgZ2FtZXRoZSBVbml2ZXJzaXR5IG9maW4gV2VzdGVybiBFdXJvcGVwZXJzb25hbCBjb21wdXRlclByb2plY3QgR3V0ZW5iZXJncmVnYXJkbGVzcyBvZiB0aGVoYXMgYmVlbiBwcm9wb3NlZHRvZ2V0aGVyIHdpdGggdGhlPjwvbGk+PGxpIGNsYXNzPVwiaW4gc29tZSBjb3VudHJpZXNtaW4uanNcIj48L3NjcmlwdD5vZiB0aGUgcG9wdWxhdGlvbm9mZmljaWFsIGxhbmd1YWdlPGltZyBzcmM9XCJpbWFnZXMvaWRlbnRpZmllZCBieSB0aGVuYXR1cmFsIHJlc291cmNlc2NsYXNzaWZpY2F0aW9uIG9mY2FuIGJlIGNvbnNpZGVyZWRxdWFudHVtIG1lY2hhbmljc05ldmVydGhlbGVzcywgdGhlbWlsbGlvbiB5ZWFycyBhZ288L2JvZHk+XHJcbjwvaHRtbD5cck5cdTAwMTVOO047TjdOPU45TjpOLFxudGFrZSBhZHZhbnRhZ2Ugb2ZhbmQsIGFjY29yZGluZyB0b2F0dHJpYnV0ZWQgdG8gdGhlTWljcm9zb2Z0IFdpbmRvd3N0aGUgZmlyc3QgY2VudHVyeXVuZGVyIHRoZSBjb250cm9sZGl2IGNsYXNzPVwiaGVhZGVyc2hvcnRseSBhZnRlciB0aGVub3RhYmxlIGV4Y2VwdGlvbnRlbnMgb2YgdGhvdXNhbmRzc2V2ZXJhbCBkaWZmZXJlbnRhcm91bmQgdGhlIHdvcmxkLnJlYWNoaW5nIG1pbGl0YXJ5aXNvbGF0ZWQgZnJvbSB0aGVvcHBvc2l0aW9uIHRvIHRoZXRoZSBPbGQgVGVzdGFtZW50QWZyaWNhbiBBbWVyaWNhbnNpbnNlcnRlZCBpbnRvIHRoZXNlcGFyYXRlIGZyb20gdGhlbWV0cm9wb2xpdGFuIGFyZWFtYWtlcyBpdCBwb3NzaWJsZWFja25vd2xlZGdlZCB0aGF0YXJndWFibHkgdGhlIG1vc3R0eXBlPVwidGV4dC9jc3NcIj5cbnRoZSBJbnRlcm5hdGlvbmFsQWNjb3JkaW5nIHRvIHRoZSBwZT1cInRleHQvY3NzXCIgLz5cbmNvaW5jaWRlIHdpdGggdGhldHdvLXRoaXJkcyBvZiB0aGVEdXJpbmcgdGhpcyB0aW1lLGR1cmluZyB0aGUgcGVyaW9kYW5ub3VuY2VkIHRoYXQgaGV0aGUgaW50ZXJuYXRpb25hbGFuZCBtb3JlIHJlY2VudGx5YmVsaWV2ZWQgdGhhdCB0aGVjb25zY2lvdXNuZXNzIGFuZGZvcm1lcmx5IGtub3duIGFzc3Vycm91bmRlZCBieSB0aGVmaXJzdCBhcHBlYXJlZCBpbm9jY2FzaW9uYWxseSB1c2VkcG9zaXRpb246YWJzb2x1dGU7XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7amF4L2xpYnMvanF1ZXJ5LzEuYmFja2dyb3VuZC1jb2xvcjojdHlwZT1cImFwcGxpY2F0aW9uL2FuZ3VhZ2VcIiBjb250ZW50PVwiPG1ldGEgaHR0cC1lcXVpdj1cIlByaXZhY3kgUG9saWN5PC9hPmUoXCIlM0NzY3JpcHQgc3JjPSdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5PbiB0aGUgb3RoZXIgaGFuZCwuanBnfHRodW1ifHJpZ2h0fDI8L2Rpdj48ZGl2IGNsYXNzPVwiPGRpdiBzdHlsZT1cImZsb2F0Om5pbmV0ZWVudGggY2VudHVyeTwvYm9keT5cclxuPC9odG1sPlxyXG48aW1nIHNyYz1cImh0dHA6Ly9zO3RleHQtYWxpZ246Y2VudGVyZm9udC13ZWlnaHQ6IGJvbGQ7IEFjY29yZGluZyB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuXCIgZnJhbWVib3JkZXI9XCIwXCIgXCIgc3R5bGU9XCJwb3NpdGlvbjpsaW5rIGhyZWY9XCJodHRwOi8vaHRtbDQvbG9vc2UuZHRkXCI+XG5kdXJpbmcgdGhpcyBwZXJpb2Q8L3RkPjwvdHI+PC90YWJsZT5jbG9zZWx5IHJlbGF0ZWQgdG9mb3IgdGhlIGZpcnN0IHRpbWU7Zm9udC13ZWlnaHQ6Ym9sZDtpbnB1dCB0eXBlPVwidGV4dFwiIDxzcGFuIHN0eWxlPVwiZm9udC1vbnJlYWR5c3RhdGVjaGFuZ2VcdDxkaXYgY2xhc3M9XCJjbGVhcmRvY3VtZW50LmxvY2F0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIGEgd2lkZSB2YXJpZXR5IG9mIDwhRE9DVFlQRSBodG1sPlxyXG48Jm5ic3A7Jm5ic3A7Jm5ic3A7XCI+PGEgaHJlZj1cImh0dHA6Ly9zdHlsZT1cImZsb2F0OmxlZnQ7Y29uY2VybmVkIHdpdGggdGhlPWh0dHAlM0ElMkYlMkZ3d3cuaW4gcG9wdWxhciBjdWx0dXJldHlwZT1cInRleHQvY3NzXCIgLz5pdCBpcyBwb3NzaWJsZSB0byBIYXJ2YXJkIFVuaXZlcnNpdHl0eWxlc2hlZXRcIiBocmVmPVwiL3RoZSBtYWluIGNoYXJhY3Rlck94Zm9yZCBVbml2ZXJzaXR5ICBuYW1lPVwia2V5d29yZHNcIiBjc3R5bGU9XCJ0ZXh0LWFsaWduOnRoZSBVbml0ZWQgS2luZ2RvbWZlZGVyYWwgZ292ZXJubWVudDxkaXYgc3R5bGU9XCJtYXJnaW4gZGVwZW5kaW5nIG9uIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGU8ZGl2IGNsYXNzPVwiaGVhZGVyLm1pbi5qc1wiPjwvc2NyaXB0PmRlc3RydWN0aW9uIG9mIHRoZXNsaWdodGx5IGRpZmZlcmVudGluIGFjY29yZGFuY2Ugd2l0aHRlbGVjb21tdW5pY2F0aW9uc2luZGljYXRlcyB0aGF0IHRoZXNob3J0bHkgdGhlcmVhZnRlcmVzcGVjaWFsbHkgaW4gdGhlIEV1cm9wZWFuIGNvdW50cmllc0hvd2V2ZXIsIHRoZXJlIGFyZXNyYz1cImh0dHA6Ly9zdGF0aWNzdWdnZXN0ZWQgdGhhdCB0aGVcIiBzcmM9XCJodHRwOi8vd3d3LmEgbGFyZ2UgbnVtYmVyIG9mIFRlbGVjb21tdW5pY2F0aW9uc1wiIHJlbD1cIm5vZm9sbG93XCIgdEhvbHkgUm9tYW4gRW1wZXJvcmFsbW9zdCBleGNsdXNpdmVseVwiIGJvcmRlcj1cIjBcIiBhbHQ9XCJTZWNyZXRhcnkgb2YgU3RhdGVjdWxtaW5hdGluZyBpbiB0aGVDSUEgV29ybGQgRmFjdGJvb2t0aGUgbW9zdCBpbXBvcnRhbnRhbm5pdmVyc2FyeSBvZiB0aGVzdHlsZT1cImJhY2tncm91bmQtPGxpPjxlbT48YSBocmVmPVwiL3RoZSBBdGxhbnRpYyBPY2VhbnN0cmljdGx5IHNwZWFraW5nLHNob3J0bHkgYmVmb3JlIHRoZWRpZmZlcmVudCB0eXBlcyBvZnRoZSBPdHRvbWFuIEVtcGlyZT48aW1nIHNyYz1cImh0dHA6Ly9BbiBJbnRyb2R1Y3Rpb24gdG9jb25zZXF1ZW5jZSBvZiB0aGVkZXBhcnR1cmUgZnJvbSB0aGVDb25mZWRlcmF0ZSBTdGF0ZXNpbmRpZ2Vub3VzIHBlb3BsZXNQcm9jZWVkaW5ncyBvZiB0aGVpbmZvcm1hdGlvbiBvbiB0aGV0aGVvcmllcyBoYXZlIGJlZW5pbnZvbHZlbWVudCBpbiB0aGVkaXZpZGVkIGludG8gdGhyZWVhZGphY2VudCBjb3VudHJpZXNpcyByZXNwb25zaWJsZSBmb3JkaXNzb2x1dGlvbiBvZiB0aGVjb2xsYWJvcmF0aW9uIHdpdGh3aWRlbHkgcmVnYXJkZWQgYXNoaXMgY29udGVtcG9yYXJpZXNmb3VuZGluZyBtZW1iZXIgb2ZEb21pbmljYW4gUmVwdWJsaWNnZW5lcmFsbHkgYWNjZXB0ZWR0aGUgcG9zc2liaWxpdHkgb2ZhcmUgYWxzbyBhdmFpbGFibGV1bmRlciBjb25zdHJ1Y3Rpb25yZXN0b3JhdGlvbiBvZiB0aGV0aGUgZ2VuZXJhbCBwdWJsaWNpcyBhbG1vc3QgZW50aXJlbHlwYXNzZXMgdGhyb3VnaCB0aGVoYXMgYmVlbiBzdWdnZXN0ZWRjb21wdXRlciBhbmQgdmlkZW9HZXJtYW5pYyBsYW5ndWFnZXMgYWNjb3JkaW5nIHRvIHRoZSBkaWZmZXJlbnQgZnJvbSB0aGVzaG9ydGx5IGFmdGVyd2FyZHNocmVmPVwiaHR0cHM6Ly93d3cucmVjZW50IGRldmVsb3BtZW50Qm9hcmQgb2YgRGlyZWN0b3JzPGRpdiBjbGFzcz1cInNlYXJjaHwgPGEgaHJlZj1cImh0dHA6Ly9JbiBwYXJ0aWN1bGFyLCB0aGVNdWx0aXBsZSBmb290bm90ZXNvciBvdGhlciBzdWJzdGFuY2V0aG91c2FuZHMgb2YgeWVhcnN0cmFuc2xhdGlvbiBvZiB0aGU8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YSBocmVmPVwiaW5kZXgucGhwd2FzIGVzdGFibGlzaGVkIGlubWluLmpzXCI+PC9zY3JpcHQ+XG5wYXJ0aWNpcGF0ZSBpbiB0aGVhIHN0cm9uZyBpbmZsdWVuY2VzdHlsZT1cIm1hcmdpbi10b3A6cmVwcmVzZW50ZWQgYnkgdGhlZ3JhZHVhdGVkIGZyb20gdGhlVHJhZGl0aW9uYWxseSwgdGhlRWxlbWVudChcInNjcmlwdFwiKTtIb3dldmVyLCBzaW5jZSB0aGUvZGl2PlxuPC9kaXY+XG48ZGl2IGxlZnQ7IG1hcmdpbi1sZWZ0OnByb3RlY3Rpb24gYWdhaW5zdDA7IHZlcnRpY2FsLWFsaWduOlVuZm9ydHVuYXRlbHksIHRoZXR5cGU9XCJpbWFnZS94LWljb24vZGl2PlxuPGRpdiBjbGFzcz1cIiBjbGFzcz1cImNsZWFyZml4XCI+PGRpdiBjbGFzcz1cImZvb3Rlclx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cbnRoZSBtb3Rpb24gcGljdHVyZVBcdTAwMTFRXG5QO1AzUDBRXHUwMDAwUVx1MDAwMVA6UDhQMVFcblA7UDNQMFFcdTAwMDBRXHUwMDAxUDpQOFAkUDVQNFA1UVx1MDAwMFAwUVx1MDAwNlA4UDhQPVA1UVx1MDAwMVA6UD5QO1FcdTAwMENQOlA+UVx1MDAwMVA+UD5QMVFcdFA1UD1QOFA1UVx1MDAwMVA+UD5QMVFcdFA1UD1QOFFcdTAwMEZQP1FcdTAwMDBQPlAzUVx1MDAwMFAwUDxQPFFcdTAwMEJQXHUwMDFFUVx1MDAwMlA/UVx1MDAwMFAwUDJQOFFcdTAwMDJRXHUwMDBDUDFQNVFcdTAwMDFQP1A7UDBRXHUwMDAyUD1QPlA8UDBRXHUwMDAyUDVRXHUwMDAwUDhQMFA7UVx1MDAwQlA/UD5QN1AyUD5QO1FcdTAwMEZQNVFcdTAwMDJQP1A+UVx1MDAwMVA7UDVQNFA9UDhQNVFcdTAwMDBQMFA3UDtQOFFcdTAwMDdQPVFcdTAwMEJRXHUwMDA1UD9RXHUwMDAwUD5QNFFcdTAwMDNQOlFcdTAwMDZQOFA4UD9RXHUwMDAwUD5QM1FcdTAwMDBQMFA8UDxQMFA/UD5QO1A9UD5RXHUwMDAxUVx1MDAwMlFcdTAwMENRXHUwMDBFUD1QMFFcdTAwMDVQPlA0UDhRXHUwMDAyUVx1MDAwMVFcdTAwMEZQOFA3UDFRXHUwMDAwUDBQPVA9UD5QNVA9UDBRXHUwMDAxUDVQO1A1UD1QOFFcdTAwMEZQOFA3UDxQNVA9UDVQPVA4UVx1MDAwRlA6UDBRXHUwMDAyUDVQM1A+UVx1MDAwMFA4UDhQXHUwMDEwUDtQNVA6UVx1MDAwMVAwUD1QNFFcdTAwMDBgJCZgJVxyYCQ1YCQ+YCQwYCQ+YCQuYCVcdTAwMDhgJChgJVx1MDAwMWAkXHUwMDA1YCQyYCQqYCVccmAkMGAkJmAkPmAkKGAkLWAkPmAkMGAkJGAlXHUwMDAwYCQvYCRcdTAwMDVgJChgJVx1MDAwMWAkJmAlXHUwMDA3YCQ2YCQ5YCQ/YCQoYCVccmAkJmAlXHUwMDAwYCRcdTAwMDdgJFx1MDAwMmAkIWAkP2AkL2AkPmAkJmAkP2AkMmAlXHJgJDJgJVx1MDAwMGAkXHUwMDA1YCQnYCQ/YCRcdTAwMTVgJD5gJDBgJDVgJVx1MDAwMGAkIWAkP2AkL2AlXHUwMDBCYCRcdTAwMUFgJD9gJFx1MDAxRmAlXHJgJCBgJVx1MDAwN2AkOGAkLmAkPmAkXHUwMDFBYCQ+YCQwYCRcdTAwMUNgJFx1MDAwMmAkXHUwMDE1YCVccmAkNmAkKGAkJmAlXHUwMDAxYCQoYCQ/YCQvYCQ+YCQqYCVccmAkMGAkL2AlXHUwMDBCYCRcdTAwMTdgJFx1MDAwNWAkKGAlXHUwMDAxYCQ4YCQ+YCQwYCRcdTAwMTFgJChgJDJgJD5gJFx1MDAwN2AkKGAkKmAkPmAkMGAlXHJgJFx1MDAxRmAlXHUwMDAwYCQ2YCQwYCVccmAkJGAlXHUwMDBCYCRcdTAwMDJgJDJgJVx1MDAwQmAkXHUwMDE1YCQ4YCQtYCQ+YCQrYCQ8YCVccmAkMmAlXHUwMDA4YCQ2YCQ2YCQwYCVccmAkJGAlXHUwMDA3YCRcdTAwMDJgJCpgJVxyYCQwYCQmYCVcdTAwMDdgJDZgJCpgJVxyYCQyYCVcdTAwMDdgJC9gJDBgJFx1MDAxNWAlXHUwMDA3YCRcdTAwMDJgJCZgJVxyYCQwYCQ4YCVccmAkJWAkP2AkJGAkP2AkXHRgJCRgJVxyYCQqYCQ+YCQmYCRcdGAkKGAlXHJgJDlgJVx1MDAwN2AkXHUwMDAyYCRcdTAwMUFgJD9gJFx1MDAxRmAlXHJgJCBgJD5gJC9gJD5gJCRgJVxyYCQwYCQ+YCRcdTAwMUNgJVxyYCQvYCQ+YCQmYCQ+YCQqYCVcdTAwMDFgJDBgJD5gJChgJVx1MDAwN2AkXHUwMDFDYCVcdTAwMEJgJCFgJDxgJVx1MDAwN2AkXHUwMDAyYCRcdTAwMDVgJChgJVx1MDAwMWAkNWAkPmAkJmAkNmAlXHJgJDBgJVx1MDAwN2AkI2AlXHUwMDAwYCQ2YCQ/YCRcdTAwMTVgJVxyYCQ3YCQ+YCQ4YCQwYCRcdTAwMTVgJD5gJDBgJVx1MDAwMGAkOGAkXHUwMDAyYCRcdTAwMTdgJVxyYCQwYCQ5YCQqYCQwYCQ/YCQjYCQ+YCQuYCQsYCVccmAkMGAkPmAkXHUwMDAyYCQhYCQsYCRcdTAwMUFgJVxyYCRcdTAwMUFgJVx1MDAwQmAkXHUwMDAyYCRcdGAkKmAkMmAkLGAlXHJgJCdgJC5gJFx1MDAwMmAkJGAlXHJgJDBgJVx1MDAwMGAkOGAkXHUwMDAyYCQqYCQwYCVccmAkXHUwMDE1YCRcdGAkLmAlXHJgJC5gJVx1MDAwMGAkJmAkLmAkPmAkJ2AlXHJgJC9gJC5gJDhgJDlgJD5gJC9gJCRgJD5gJDZgJCxgJVxyYCQmYCVcdTAwMEJgJFx1MDAwMmAkLmAlXHUwMDAwYCQhYCQ/YCQvYCQ+YCRcdTAwMDZgJFx1MDAwOGAkKmAlXHUwMDAwYCRcdTAwMEZgJDJgJC5gJVx1MDAwQmAkLGAkPmAkXHUwMDA3YCQyYCQ4YCRcdTAwMDJgJFx1MDAxNmAlXHJgJC9gJD5gJFx1MDAwNmAkKmAkMGAlXHUwMDA3YCQ2YCQoYCRcdTAwMDVgJChgJVx1MDAwMWAkLGAkXHUwMDAyYCQnYCQsYCQ+YCRcdTAwMUNgJDxgJD5gJDBgJChgJDVgJVx1MDAwMGAkKGAkJGAkLmAkKmAlXHJgJDBgJC5gJVx1MDAwMWAkXHUwMDE2YCQqYCVccmAkMGAkNmAlXHJgJChgJCpgJDBgJD9gJDVgJD5gJDBgJChgJVx1MDAwMWAkXHUwMDE1YCQ4YCQ+YCQoYCQ4YCQuYCQwYCVccmAkJWAkKGAkXHUwMDA2YCQvYCVcdTAwMEJgJFx1MDAxQ2AkP2AkJGAkOGAlXHUwMDBCYCQuYCQ1YCQ+YCQwWCdZXHUwMDA0WVx1MDAwNVg0WCdYMVlcdTAwMDNYJ1gqWCdZXHUwMDA0WVx1MDAwNVlcdTAwMDZYKlgvWVxuWCdYKlgnWVx1MDAwNFlcdTAwMDNZXHUwMDA1WChZXG5ZXHUwMDA4WCpYMVgnWVx1MDAwNFlcdTAwMDVYNFgnWVx1MDAwN1gvWCdYKlg5WC9YL1gnWVx1MDAwNFgyWVx1MDAwOFgnWDFYOVgvWC9YJ1lcdTAwMDRYMVgvWVx1MDAwOFgvWCdZXHUwMDA0WCVYM1lcdTAwMDRYJ1lcdTAwMDVZXG5YKVgnWVx1MDAwNFlcdTAwMDFZXHUwMDA4WCpZXHUwMDA4WDRZXHUwMDA4WChYJ1lcdTAwMDRZXHUwMDA1WDNYJ1goWVx1MDAwMlgnWCpYJ1lcdTAwMDRZXHUwMDA1WDlZXHUwMDA0WVx1MDAwOFlcdTAwMDVYJ1gqWCdZXHUwMDA0WVx1MDAwNVgzWVx1MDAwNFgzWVx1MDAwNFgnWCpYJ1lcdTAwMDRYLFgxWCdZXHUwMDAxWVxuWVx1MDAwM1gzWCdZXHUwMDA0WCdYM1lcdTAwMDRYJ1lcdTAwMDVZXG5YKVgnWVx1MDAwNFgnWCpYNVgnWVx1MDAwNFgnWCprZXl3b3Jkc1wiIGNvbnRlbnQ9XCJ3My5vcmcvMTk5OS94aHRtbFwiPjxhIHRhcmdldD1cIl9ibGFua1wiIHRleHQvaHRtbDsgY2hhcnNldD1cIiB0YXJnZXQ9XCJfYmxhbmtcIj48dGFibGUgY2VsbHBhZGRpbmc9XCJhdXRvY29tcGxldGU9XCJvZmZcIiB0ZXh0LWFsaWduOiBjZW50ZXI7dG8gbGFzdCB2ZXJzaW9uIGJ5IGJhY2tncm91bmQtY29sb3I6ICNcIiBocmVmPVwiaHR0cDovL3d3dy4vZGl2PjwvZGl2PjxkaXYgaWQ9PGEgaHJlZj1cIiNcIiBjbGFzcz1cIlwiPjxpbWcgc3JjPVwiaHR0cDovL2NyaXB0XCIgc3JjPVwiaHR0cDovL1xuPHNjcmlwdCBsYW5ndWFnZT1cIi8vRU5cIiBcImh0dHA6Ly93d3cud2VuY29kZVVSSUNvbXBvbmVudChcIiBocmVmPVwiamF2YXNjcmlwdDo8ZGl2IGNsYXNzPVwiY29udGVudGRvY3VtZW50LndyaXRlKCc8c2Nwb3NpdGlvbjogYWJzb2x1dGU7c2NyaXB0IHNyYz1cImh0dHA6Ly8gc3R5bGU9XCJtYXJnaW4tdG9wOi5taW4uanNcIj48L3NjcmlwdD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInczLm9yZy8xOTk5L3hodG1sXCIgXG5cclxuPC9ib2R5PlxyXG48L2h0bWw+ZGlzdGluY3Rpb24gYmV0d2Vlbi9cIiB0YXJnZXQ9XCJfYmxhbmtcIj48bGluayBocmVmPVwiaHR0cDovL2VuY29kaW5nPVwidXRmLThcIj8+XG53LmFkZEV2ZW50TGlzdGVuZXI/YWN0aW9uPVwiaHR0cDovL3d3dy5pY29uXCIgaHJlZj1cImh0dHA6Ly8gc3R5bGU9XCJiYWNrZ3JvdW5kOnR5cGU9XCJ0ZXh0L2Nzc1wiIC8+XG5tZXRhIHByb3BlcnR5PVwib2c6dDxpbnB1dCB0eXBlPVwidGV4dFwiICBzdHlsZT1cInRleHQtYWxpZ246dGhlIGRldmVsb3BtZW50IG9mIHR5bGVzaGVldFwiIHR5cGU9XCJ0ZWh0bWw7IGNoYXJzZXQ9dXRmLThpcyBjb25zaWRlcmVkIHRvIGJldGFibGUgd2lkdGg9XCIxMDAlXCIgSW4gYWRkaXRpb24gdG8gdGhlIGNvbnRyaWJ1dGVkIHRvIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuZGV2ZWxvcG1lbnQgb2YgdGhlIEl0IGlzIGltcG9ydGFudCB0byA8L3NjcmlwdD5cblxuPHNjcmlwdCAgc3R5bGU9XCJmb250LXNpemU6MT48L3NwYW4+PHNwYW4gaWQ9Z2JMaWJyYXJ5IG9mIENvbmdyZXNzPGltZyBzcmM9XCJodHRwOi8vaW1FbmdsaXNoIHRyYW5zbGF0aW9uQWNhZGVteSBvZiBTY2llbmNlc2RpdiBzdHlsZT1cImRpc3BsYXk6Y29uc3RydWN0aW9uIG9mIHRoZS5nZXRFbGVtZW50QnlJZChpZClpbiBjb25qdW5jdGlvbiB3aXRoRWxlbWVudCgnc2NyaXB0Jyk7IDxtZXRhIHByb3BlcnR5PVwib2c6UFx1MDAxMVFcblA7UDNQMFFcdTAwMDBRXHUwMDAxUDpQOFxuIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIj5Qcml2YWN5IFBvbGljeTwvYT5hZG1pbmlzdGVyZWQgYnkgdGhlZW5hYmxlU2luZ2xlUmVxdWVzdHN0eWxlPSZxdW90O21hcmdpbjo8L2Rpdj48L2Rpdj48L2Rpdj48PjxpbWcgc3JjPVwiaHR0cDovL2kgc3R5bGU9JnF1b3Q7ZmxvYXQ6cmVmZXJyZWQgdG8gYXMgdGhlIHRvdGFsIHBvcHVsYXRpb24gb2ZpbiBXYXNoaW5ndG9uLCBELkMuIHN0eWxlPVwiYmFja2dyb3VuZC1hbW9uZyBvdGhlciB0aGluZ3Msb3JnYW5pemF0aW9uIG9mIHRoZXBhcnRpY2lwYXRlZCBpbiB0aGV0aGUgaW50cm9kdWN0aW9uIG9maWRlbnRpZmllZCB3aXRoIHRoZWZpY3Rpb25hbCBjaGFyYWN0ZXIgT3hmb3JkIFVuaXZlcnNpdHkgbWlzdW5kZXJzdGFuZGluZyBvZlRoZXJlIGFyZSwgaG93ZXZlcixzdHlsZXNoZWV0XCIgaHJlZj1cIi9Db2x1bWJpYSBVbml2ZXJzaXR5ZXhwYW5kZWQgdG8gaW5jbHVkZXVzdWFsbHkgcmVmZXJyZWQgdG9pbmRpY2F0aW5nIHRoYXQgdGhlaGF2ZSBzdWdnZXN0ZWQgdGhhdGFmZmlsaWF0ZWQgd2l0aCB0aGVjb3JyZWxhdGlvbiBiZXR3ZWVubnVtYmVyIG9mIGRpZmZlcmVudD48L3RkPjwvdHI+PC90YWJsZT5SZXB1YmxpYyBvZiBJcmVsYW5kXG48L3NjcmlwdD5cbjxzY3JpcHQgdW5kZXIgdGhlIGluZmx1ZW5jZWNvbnRyaWJ1dGlvbiB0byB0aGVPZmZpY2lhbCB3ZWJzaXRlIG9maGVhZHF1YXJ0ZXJzIG9mIHRoZWNlbnRlcmVkIGFyb3VuZCB0aGVpbXBsaWNhdGlvbnMgb2YgdGhlaGF2ZSBiZWVuIGRldmVsb3BlZEZlZGVyYWwgUmVwdWJsaWMgb2ZiZWNhbWUgaW5jcmVhc2luZ2x5Y29udGludWF0aW9uIG9mIHRoZU5vdGUsIGhvd2V2ZXIsIHRoYXRzaW1pbGFyIHRvIHRoYXQgb2YgY2FwYWJpbGl0aWVzIG9mIHRoZWFjY29yZGFuY2Ugd2l0aCB0aGVwYXJ0aWNpcGFudHMgaW4gdGhlZnVydGhlciBkZXZlbG9wbWVudHVuZGVyIHRoZSBkaXJlY3Rpb25pcyBvZnRlbiBjb25zaWRlcmVkaGlzIHlvdW5nZXIgYnJvdGhlcjwvdGQ+PC90cj48L3RhYmxlPjxhIGh0dHAtZXF1aXY9XCJYLVVBLXBoeXNpY2FsIHByb3BlcnRpZXNvZiBCcml0aXNoIENvbHVtYmlhaGFzIGJlZW4gY3JpdGljaXplZCh3aXRoIHRoZSBleGNlcHRpb25xdWVzdGlvbnMgYWJvdXQgdGhlcGFzc2luZyB0aHJvdWdoIHRoZTBcIiBjZWxscGFkZGluZz1cIjBcIiB0aG91c2FuZHMgb2YgcGVvcGxlcmVkaXJlY3RzIGhlcmUuIEZvcmhhdmUgY2hpbGRyZW4gdW5kZXIlM0UlM0Mvc2NyaXB0JTNFXCIpKTs8YSBocmVmPVwiaHR0cDovL3d3dy48bGk+PGEgaHJlZj1cImh0dHA6Ly9zaXRlX25hbWVcIiBjb250ZW50PVwidGV4dC1kZWNvcmF0aW9uOm5vbmVzdHlsZT1cImRpc3BsYXk6IG5vbmU8bWV0YSBodHRwLWVxdWl2PVwiWC1uZXcgRGF0ZSgpLmdldFRpbWUoKSB0eXBlPVwiaW1hZ2UveC1pY29uXCI8L3NwYW4+PHNwYW4gY2xhc3M9XCJsYW5ndWFnZT1cImphdmFzY3JpcHR3aW5kb3cubG9jYXRpb24uaHJlZjxhIGhyZWY9XCJqYXZhc2NyaXB0Oi0tPlxyXG48c2NyaXB0IHR5cGU9XCJ0PGEgaHJlZj0naHR0cDovL3d3dy5ob3J0Y3V0IGljb25cIiBocmVmPVwiPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCI8c2NyaXB0IHNyYz1cImh0dHA6Ly9cIiByZWw9XCJzdHlsZXNoZWV0XCIgdDwvZGl2PlxuPHNjcmlwdCB0eXBlPS9hPiA8YSBocmVmPVwiaHR0cDovLyBhbGxvd1RyYW5zcGFyZW5jeT1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnJlbGF0aW9uc2hpcCBiZXR3ZWVuXG48L3NjcmlwdD5cclxuPHNjcmlwdCA8L2E+PC9saT48L3VsPjwvZGl2PmFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U8L2E+PGEgaHJlZj1cImh0dHA6Ly88L2E+PC9saT48bGkgY2xhc3M9XCJmb3JtIGFjdGlvbj1cImh0dHA6Ly88ZGl2IHN0eWxlPVwiZGlzcGxheTp0eXBlPVwidGV4dFwiIG5hbWU9XCJxXCI8dGFibGUgd2lkdGg9XCIxMDAlXCIgYmFja2dyb3VuZC1wb3NpdGlvbjpcIiBib3JkZXI9XCIwXCIgd2lkdGg9XCJyZWw9XCJzaG9ydGN1dCBpY29uXCIgaDY+PHVsPjxsaT48YSBocmVmPVwiICA8bWV0YSBodHRwLWVxdWl2PVwiY3NzXCIgbWVkaWE9XCJzY3JlZW5cIiByZXNwb25zaWJsZSBmb3IgdGhlIFwiIHR5cGU9XCJhcHBsaWNhdGlvbi9cIiBzdHlsZT1cImJhY2tncm91bmQtaHRtbDsgY2hhcnNldD11dGYtOFwiIGFsbG93dHJhbnNwYXJlbmN5PVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZVxyXG48bWV0YSBodHRwLWVxdWl2PVwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIj47XG48L3NjcmlwdD5cbjxzY3JpcHQgc29tZXRpbWVzIGNhbGxlZCB0aGVkb2VzIG5vdCBuZWNlc3NhcmlseUZvciBtb3JlIGluZm9ybWF0aW9uYXQgdGhlIGJlZ2lubmluZyBvZiA8IURPQ1RZUEUgaHRtbD48aHRtbHBhcnRpY3VsYXJseSBpbiB0aGUgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJlZmZlY3RpdmVuZXNzIG9mIHRoZSBhdXRvY29tcGxldGU9XCJvZmZcIiBnZW5lcmFsbHkgY29uc2lkZXJlZD48aW5wdXQgdHlwZT1cInRleHRcIiBcIj48L3NjcmlwdD5cclxuPHNjcmlwdHRocm91Z2hvdXQgdGhlIHdvcmxkY29tbW9uIG1pc2NvbmNlcHRpb25hc3NvY2lhdGlvbiB3aXRoIHRoZTwvZGl2PlxuPC9kaXY+XG48ZGl2IGNkdXJpbmcgaGlzIGxpZmV0aW1lLGNvcnJlc3BvbmRpbmcgdG8gdGhldHlwZT1cImltYWdlL3gtaWNvblwiIGFuIGluY3JlYXNpbmcgbnVtYmVyZGlwbG9tYXRpYyByZWxhdGlvbnNhcmUgb2Z0ZW4gY29uc2lkZXJlZG1ldGEgY2hhcnNldD1cInV0Zi04XCIgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZXhhbXBsZXMgaW5jbHVkZSB0aGVcIj48aW1nIHNyYz1cImh0dHA6Ly9pcGFydGljaXBhdGlvbiBpbiB0aGV0aGUgZXN0YWJsaXNobWVudCBvZlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiJmFtcDtuYnNwOyZhbXA7bmJzcDt0byBkZXRlcm1pbmUgd2hldGhlcnF1aXRlIGRpZmZlcmVudCBmcm9tbWFya2VkIHRoZSBiZWdpbm5pbmdkaXN0YW5jZSBiZXR3ZWVuIHRoZWNvbnRyaWJ1dGlvbnMgdG8gdGhlY29uZmxpY3QgYmV0d2VlbiB0aGV3aWRlbHkgY29uc2lkZXJlZCB0b3dhcyBvbmUgb2YgdGhlIGZpcnN0d2l0aCB2YXJ5aW5nIGRlZ3JlZXNoYXZlIHNwZWN1bGF0ZWQgdGhhdChkb2N1bWVudC5nZXRFbGVtZW50cGFydGljaXBhdGluZyBpbiB0aGVvcmlnaW5hbGx5IGRldmVsb3BlZGV0YSBjaGFyc2V0PVwidXRmLThcIj4gdHlwZT1cInRleHQvY3NzXCIgLz5cbmludGVyY2hhbmdlYWJseSB3aXRobW9yZSBjbG9zZWx5IHJlbGF0ZWRzb2NpYWwgYW5kIHBvbGl0aWNhbHRoYXQgd291bGQgb3RoZXJ3aXNlcGVycGVuZGljdWxhciB0byB0aGVzdHlsZSB0eXBlPVwidGV4dC9jc3N0eXBlPVwic3VibWl0XCIgbmFtZT1cImZhbWlsaWVzIHJlc2lkaW5nIGluZGV2ZWxvcGluZyBjb3VudHJpZXNjb21wdXRlciBwcm9ncmFtbWluZ2Vjb25vbWljIGRldmVsb3BtZW50ZGV0ZXJtaW5hdGlvbiBvZiB0aGVmb3IgbW9yZSBpbmZvcm1hdGlvbm9uIHNldmVyYWwgb2NjYXNpb25zcG9ydHVndUMqcyAoRXVyb3BldSlQI1A6UVx1MDAwMFAwUVx1MDAxN1A9UVx1MDAwMVFcdTAwMENQOlAwUVx1MDAwM1A6UVx1MDAwMFAwUVx1MDAxN1A9UVx1MDAwMVFcdTAwMENQOlAwUCBQPlFcdTAwMDFRXHUwMDAxUDhQOVFcdTAwMDFQOlA+UDlQPFAwUVx1MDAwMlA1UVx1MDAwMFA4UDBQO1A+UDJQOFA9UVx1MDAwNFA+UVx1MDAwMFA8UDBRXHUwMDA2UDhQOFFcdTAwMDNQP1FcdTAwMDBQMFAyUDtQNVA9UDhRXHUwMDBGUD1QNVA+UDFRXHUwMDA1UD5QNFA4UDxQPlA4UD1RXHUwMDA0UD5RXHUwMDAwUDxQMFFcdTAwMDZQOFFcdTAwMEZQXHUwMDE4UD1RXHUwMDA0UD5RXHUwMDAwUDxQMFFcdTAwMDZQOFFcdTAwMEZQIFA1UVx1MDAwMVA/UVx1MDAwM1AxUDtQOFA6UDhQOlA+UDtQOFFcdTAwMDdQNVFcdTAwMDFRXHUwMDAyUDJQPlA4UD1RXHUwMDA0UD5RXHUwMDAwUDxQMFFcdTAwMDZQOFFcdTAwMEVRXHUwMDAyUDVRXHUwMDAwUVx1MDAwMFA4UVx1MDAwMlA+UVx1MDAwMFA4UDhQNFA+UVx1MDAwMVFcdTAwMDJQMFFcdTAwMDJQPlFcdTAwMDdQPVA+WCdZXHUwMDA0WVx1MDAwNVgqWVx1MDAwOFgnWCxYL1lcdTAwMDhZXHUwMDA2WCdZXHUwMDA0WCdYNFgqWDFYJ1lcdTAwMDNYJ1gqWCdZXHUwMDA0WCdZXHUwMDAyWCpYMVgnWC1YJ1gqaHRtbDsgY2hhcnNldD1VVEYtOFwiIHNldFRpbWVvdXQoZnVuY3Rpb24oKWRpc3BsYXk6aW5saW5lLWJsb2NrOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdHlwZSA9ICd0ZXh0L2phdmFzY3JpPGltZyBzcmM9XCJodHRwOi8vd3d3LlwiIFwiaHR0cDovL3d3dy53My5vcmcvc2hvcnRjdXQgaWNvblwiIGhyZWY9XCJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiA8L2E+PC9kaXY+PGRpdiBjbGFzcz08L2E+PC9saT5cbjxsaSBjbGFzcz1cImNzc1wiIHR5cGU9XCJ0ZXh0L2Nzc1wiIDxmb3JtIGFjdGlvbj1cImh0dHA6Ly94dC9jc3NcIiBocmVmPVwiaHR0cDovL2xpbmsgcmVsPVwiYWx0ZXJuYXRlXCIgXHJcbjxzY3JpcHQgdHlwZT1cInRleHQvIG9uY2xpY2s9XCJqYXZhc2NyaXB0OihuZXcgRGF0ZSkuZ2V0VGltZSgpfWhlaWdodD1cIjFcIiB3aWR0aD1cIjFcIiBQZW9wbGUncyBSZXB1YmxpYyBvZiAgPGEgaHJlZj1cImh0dHA6Ly93d3cudGV4dC1kZWNvcmF0aW9uOnVuZGVydGhlIGJlZ2lubmluZyBvZiB0aGUgPC9kaXY+XG48L2Rpdj5cbjwvZGl2PlxuZXN0YWJsaXNobWVudCBvZiB0aGUgPC9kaXY+PC9kaXY+PC9kaXY+PC9kI3ZpZXdwb3J0e21pbi1oZWlnaHQ6XG48c2NyaXB0IHNyYz1cImh0dHA6Ly9vcHRpb24+PG9wdGlvbiB2YWx1ZT1vZnRlbiByZWZlcnJlZCB0byBhcyAvb3B0aW9uPlxuPG9wdGlvbiB2YWx1PCFET0NUWVBFIGh0bWw+XG48IS0tW0ludGVybmF0aW9uYWwgQWlycG9ydD5cbjxhIGhyZWY9XCJodHRwOi8vd3d3PC9hPjxhIGhyZWY9XCJodHRwOi8vd2A4IGA4MmA4KWA4MmA5XHUwMDA0YDhcdTAwMTdgOFwiYVx1MDAwMyVhXHUwMDAzXHUwMDEwYVx1MDAwMyBhXHUwMDAzXHUwMDE3YVx1MDAwMyNhXHUwMDAzXHUwMDFBYVx1MDAwM1x1MDAxOGYtI2krXHUwMDE0ZDgtZlx1MDAxNlx1MDAwNyAoZzlcdTAwMDFpK1x1MDAxNClgJChgJD9gJDBgJVxyYCQmYCVcdTAwMDdgJDZgJCFgJD5gJFx0YCQoYCQyYCVcdTAwMEJgJCFgJFx1MDAxNWAlXHJgJDdgJVx1MDAwN2AkJGAlXHJgJDBgJFx1MDAxQ2AkPmAkKGAkXHUwMDE1YCQ+YCQwYCVcdTAwMDBgJDhgJFx1MDAwMmAkLGAkXHUwMDAyYCQnYCQ/YCQkYCQ4YCVccmAkJWAkPmAkKmAkKGAkPmAkOGAlXHJgJDVgJVx1MDAwMGAkXHUwMDE1YCQ+YCQwYCQ4YCRcdTAwMDJgJDhgJVxyYCRcdTAwMTVgJDBgJCNgJDhgJD5gJC5gJFx1MDAxN2AlXHJgJDBgJVx1MDAwMGAkXHUwMDFBYCQ/YCRcdTAwMUZgJVxyYCQgYCVcdTAwMEJgJFx1MDAwMmAkNWAkP2AkXHUwMDFDYCVccmAkXHUwMDFFYCQ+YCQoYCRcdTAwMDVgJC5gJVx1MDAwN2AkMGAkP2AkXHUwMDE1YCQ+YCQ1YCQ/YCQtYCQ/YCQoYCVccmAkKGAkXHUwMDE3YCQ+YCQhYCQ/YCQvYCQ+YCRcdTAwMDFgJFx1MDAxNWAlXHJgJC9gJVx1MDAwQmAkXHUwMDAyYCRcdTAwMTVgJD9gJDhgJVx1MDAwMWAkMGAkXHUwMDE1YCVccmAkN2AkPmAkKmAkOWAlXHUwMDAxYCRcdTAwMDFgJFx1MDAxQWAkJGAlXHUwMDAwYCQqYCVccmAkMGAkLGAkXHUwMDAyYCQnYCQoYCRcdTAwMUZgJD9gJCpgJVxyYCQqYCQjYCVcdTAwMDBgJFx1MDAxNWAlXHJgJDBgJD9gJFx1MDAxNWAlXHUwMDA3YCRcdTAwMUZgJCpgJVxyYCQwYCQ+YCQwYCRcdTAwMDJgJC1gJCpgJVxyYCQwYCQ+YCQqYCVccmAkJGAkLmAkPmAkMmAkP2AkXHUwMDE1YCVcdTAwMEJgJFx1MDAwMmAkMGAkK2AkPGAlXHJgJCRgJD5gJDBgJChgJD9gJDBgJVxyYCQuYCQ+YCQjYCQyYCQ/YCQuYCQ/YCRcdTAwMUZgJVx1MDAwN2AkIWRlc2NyaXB0aW9uXCIgY29udGVudD1cImRvY3VtZW50LmxvY2F0aW9uLnByb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoPCFET0NUWVBFIGh0bWw+XG48aHRtbCA8bWV0YSBjaGFyc2V0PVwidXRmLThcIj46dXJsXCIgY29udGVudD1cImh0dHA6Ly8uY3NzXCIgcmVsPVwic3R5bGVzaGVldFwic3R5bGUgdHlwZT1cInRleHQvY3NzXCI+dHlwZT1cInRleHQvY3NzXCIgaHJlZj1cInczLm9yZy8xOTk5L3hodG1sXCIgeG1sdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cImxpbmsgcmVsPVwic3R5bGVzaGVldFwiICA9IGRvY3VtZW50LmdldEVsZW1lbnR0eXBlPVwiaW1hZ2UveC1pY29uXCIgLz5jZWxscGFkZGluZz1cIjBcIiBjZWxsc3AuY3NzXCIgdHlwZT1cInRleHQvY3NzXCIgPC9hPjwvbGk+PGxpPjxhIGhyZWY9XCJcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCJcIj48YSBocmVmPVwiaHR0cDovL3d3dy5zdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5hbHRlcm5hdGVcIiB0eXBlPVwiYXBwbGktLy9XM0MvL0RURCBYSFRNTCAxLjAgZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkIHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT1cIi9hPiZuYnNwOzxzcGFuIHJvbGU9XCJzXG48aW5wdXQgdHlwZT1cImhpZGRlblwiIGxhbmd1YWdlPVwiSmF2YVNjcmlwdFwiICBkb2N1bWVudC5nZXRFbGVtZW50c0JnPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIHlwZT1cInRleHQvY3NzXCIgbWVkaWE9XCJ0eXBlPSd0ZXh0L2phdmFzY3JpcHQnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3QgaGVpZ2h0PVwiMVwiIHdpZHRoPVwiMVwiID0nK2VuY29kZVVSSUNvbXBvbmVudCg8bGluayByZWw9XCJhbHRlcm5hdGVcIiBcbmJvZHksIHRyLCBpbnB1dCwgdGV4dG1ldGEgbmFtZT1cInJvYm90c1wiIGNvbm1ldGhvZD1cInBvc3RcIiBhY3Rpb249XCI+XG48YSBocmVmPVwiaHR0cDovL3d3dy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgPC9kaXY+PC9kaXY+PGRpdiBjbGFzc2xhbmd1YWdlPVwiamF2YXNjcmlwdFwiPmFyaWEtaGlkZGVuPVwidHJ1ZVwiPkI3PHJpcHRcIiB0eXBlPVwidGV4dC9qYXZhc2w9MDt9KSgpO1xuKGZ1bmN0aW9uKCl7YmFja2dyb3VuZC1pbWFnZTogdXJsKC9hPjwvbGk+PGxpPjxhIGhyZWY9XCJoXHRcdDxsaT48YSBocmVmPVwiaHR0cDovL2F0b3JcIiBhcmlhLWhpZGRlbj1cInRydT4gPGEgaHJlZj1cImh0dHA6Ly93d3cubGFuZ3VhZ2U9XCJqYXZhc2NyaXB0XCIgL29wdGlvbj5cbjxvcHRpb24gdmFsdWUvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cmF0b3JcIiBhcmlhLWhpZGRlbj1cInRyZT0obmV3IERhdGUpLmdldFRpbWUoKXBvcnR1Z3VDKnMgKGRvIEJyYXNpbClQPlFcdTAwMDBQM1AwUD1QOFA3UDBRXHUwMDA2UDhQOFAyUD5QN1A8UD5QNlA9UD5RXHUwMDAxUVx1MDAwMlFcdTAwMENQPlAxUVx1MDAwMFAwUDdQPlAyUDBQPVA4UVx1MDAwRlFcdTAwMDBQNVAzUDhRXHUwMDAxUVx1MDAwMlFcdTAwMDBQMFFcdTAwMDZQOFA4UDJQPlA3UDxQPlA2UD1QPlFcdTAwMDFRXHUwMDAyUDhQPlAxUVx1MDAwRlA3UDBRXHUwMDAyUDVQO1FcdTAwMENQPVAwPCFET0NUWVBFIGh0bWwgUFVCTElDIFwibnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0LzxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZXJhbnNpdGlvbmFsLy9FTlwiIFwiaHR0cDo8aHRtbCB4bWxucz1cImh0dHA6Ly93d3ctLy9XM0MvL0RURCBYSFRNTCAxLjAgVERURC94aHRtbDEtdHJhbnNpdGlvbmFsLy93d3cudzMub3JnL1RSL3hodG1sMS9wZSA9ICd0ZXh0L2phdmFzY3JpcHQnOzxtZXRhIG5hbWU9XCJkZXNjcmlwdGlvbnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYWpzXCIgdHlwZT1cInRleHQvamF2YXNjcmkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aXNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2ltYWdlXCIgY29udGVudD1cImh0dHA6Ly9VQS1Db21wYXRpYmxlXCIgY29udGVudD10bWw7IGNoYXJzZXQ9dXRmLThcIiAvPlxubGluayByZWw9XCJzaG9ydGN1dCBpY29uPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIDwvc2NyaXB0PlxuPHNjcmlwdCB0eXBlPT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVuPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCaW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPWEudHlwZSA9ICd0ZXh0L2phdmFzY3JpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZWh0bWw7IGNoYXJzZXQ9dXRmLThcIiAvPmR0ZFwiPlxuPGh0bWwgeG1sbnM9XCJodHRwLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRlbnRzQnlUYWdOYW1lKCdzY3JpcHQnKWlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW08c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCI+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnaW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzbmljYWxcIiBocmVmPVwiaHR0cDovL3d3dy5DLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXQ8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+XG5cbjxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5pb25hbC5kdGRcIj5cbjxodG1sIHhtbG5zPWh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiaHRtbDsgY2hhcnNldD11dGYtOFwiIC8+XG4gc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCI+PDxsaT48YSBocmVmPVwiaHR0cDovL3d3dy4gdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5QNFA1UVx1MDAwRlFcdTAwMDJQNVA7UVx1MDAwQ1A9UD5RXHUwMDAxUVx1MDAwMlA4UVx1MDAwMVA+UD5RXHUwMDAyUDJQNVFcdTAwMDJRXHUwMDAxUVx1MDAwMlAyUDhQOFA/UVx1MDAwMFA+UDhQN1AyUD5QNFFcdTAwMDFRXHUwMDAyUDJQMFAxUDVQN1A+UD9QMFFcdTAwMDFQPVA+UVx1MDAwMVFcdTAwMDJQOGAkKmAlXHUwMDAxYCQ4YCVccmAkJGAkP2AkXHUwMDE1YCQ+YCRcdTAwMTVgJD5gJFx1MDAwMmAkXHUwMDE3YCVccmAkMGAlXHUwMDA3YCQ4YCRcdGAkKGAlXHJgJDlgJVx1MDAwQmAkXHUwMDAyYCQoYCVcdTAwMDdgJDVgJD9gJCdgJD5gJChgJDhgJC1gJD5gJCtgJD9gJFx1MDAxNWAlXHJgJDhgJD9gJFx1MDAwMmAkXHUwMDE3YCQ4YCVcdTAwMDFgJDBgJFx1MDAxNWAlXHJgJDdgJD9gJCRgJFx1MDAxNWAlXHRgJCpgJVx1MDAwMGAkMGAkPmAkXHUwMDA3YCRcdTAwMUZgJDVgJD9gJFx1MDAxQ2AlXHJgJFx1MDAxRWAkPmAkKmAkKGAkXHUwMDE1YCQ+YCQwYCVccmAkMGAkNWAkPmAkXHUwMDA4YCQ4YCRcdTAwMTVgJVxyYCQwYCQ/YCQvYCQkYCQ+IiwgIlx1MDZGNyVcdTAxOEMnVCVcdTAwODUnVyVcdTAwRDclTyVnJVx1MDBBNiZcdTAxOTMlXHUwMUU1Jj4mKiYnJl4mXHUwMDg4XHUwMTc4XHUwQzNFJlx1MDFBRCZcdTAxOTImKSZeJiUmJyZcdTAwODImUCYxJlx1MDBCMSYzJl0mbSZ1JkUmdCZDJlx1MDBDRiZWJlYmLyY+JjYmXHUwRjc2XHUxNzdDbyZwJkAmRSZNJlAmeCZAJkYmZSZcdTAwQ0MmNyY6JigmRCYwJkMmKSYuJkYmLSYxJigmTCZGJjFcdTAyNUUqXHUwM0VBXHUyMUYzJlx1MTM3MiZLJjsmKSZFJkgmUCYwJj8mOSZWJlx1MDA4MSYtJnYmYSYsJkUmKSY/Jj0mJyYnJkImXHUwRDJFJlx1MDUwMyZcdTAzMTYqJio4JiUmJSYmJiUsKSZcdTAwOUEmPiZcdTAwODYmNyZdJkYmMiY+JkomNiZuJjImJSY/Jlx1MDA4RSYyJjYmSiZnJi0mMCYsJiomSiYqJk8mKSY2JigmPCZCJk4mLiZQJkAmMiYuJlcmTSYlXHUwNTNDXHUwMDg0KCwoPCYsJlx1MDNEQSZcdTE4QzcmLSYsKCUmKCYlJihcdTAxM0IwJlgmRCZcdTAwODEmaiYnJkomKCYuJkImMyZaJlImaCYzJkUmRSY8XHUwMEM2LVx1MDM2MFx1MUVGMyYlOD8mQCYsJlomQCYwJkomLCZeJngmXyY2JkMmNiZDXHUwNzJDXHUyQTI1JmYmLSYtJi0mLSYsJkomMiY4JnomOCZDJlkmOCYtJmQmXHUxRTc4XHUwMENDLSY3JjEmRiY3JnQmVyY3JkkmLiYuJl4mPVx1MEY5Q1x1MTlEMyY4KD4mLyYvJlx1MDc3QicpJ1x1MTA2NScpJyVALyYwJiVcdTA0M0VcdTA5QzAqJipAJkNcdTA1M0RcdTA1RDRcdTAyNzRcdTA1RUI0XHUwREQ3XHUwNzFBXHUwNEQxNlx1MEQ4NCYvXHUwMTc4XHUwMzAzWiYqJVx1MDI0Nlx1MDNGRiZcdTAxMzQmMVx1MDBBOFx1MDRCNFx1MDE3NCIpOworICAgIGZsaXBCdWZmZXIoZGljdGlvbmFyeSk7CisgICAgRElDVElPTkFSWV9EQVRBID0gZGljdGlvbmFyeTsKKyAgfQorCisKKyAgLyoqCisgICAqIEBwYXJhbSB7IW51bWJlcn0gYQorICAgKiBAcGFyYW0geyFudW1iZXJ9IGIKKyAgICogQHJldHVybiB7IW51bWJlcn0KKyAgICovCisgIGZ1bmN0aW9uIG1pbihhLCBiKSB7CisgICAgcmV0dXJuIGEgPD0gYiA/IGEgOiBiOworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSB7IUlucHV0U3RyZWFtfG51bGx9IHNyYworICAgKiBAcGFyYW0geyFJbnQ4QXJyYXl9IGRzdAorICAgKiBAcGFyYW0geyFudW1iZXJ9IG9mZnNldAorICAgKiBAcGFyYW0geyFudW1iZXJ9IGxlbmd0aAorICAgKiBAcmV0dXJuIHshbnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gcmVhZElucHV0KHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkgeworICAgIGlmIChzcmMgPT0gbnVsbCkgcmV0dXJuIC0xOworICAgIHZhciAvKiogbnVtYmVyICovIGVuZCA9IG1pbihzcmMub2Zmc2V0ICsgbGVuZ3RoLCBzcmMuZGF0YS5sZW5ndGgpOworICAgIHZhciAvKiogbnVtYmVyICovIGJ5dGVzUmVhZCA9IGVuZCAtIHNyYy5vZmZzZXQ7CisgICAgZHN0LnNldChzcmMuZGF0YS5zdWJhcnJheShzcmMub2Zmc2V0LCBlbmQpLCBvZmZzZXQpOworICAgIHNyYy5vZmZzZXQgKz0gYnl0ZXNSZWFkOworICAgIHJldHVybiBieXRlc1JlYWQ7CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHshSW5wdXRTdHJlYW19IHNyYworICAgKiBAcmV0dXJuIHshbnVtYmVyfQorICAgKi8KKyAgZnVuY3Rpb24gY2xvc2VJbnB1dChzcmMpIHsgcmV0dXJuIDA7IH0KKworICAvKioKKyAgICogQHBhcmFtIHshSW50OEFycmF5fSBidWZmZXIKKyAgICogQHJldHVybiB7dm9pZH0KKyAgICovCisgIGZ1bmN0aW9uIGZsaXBCdWZmZXIoYnVmZmVyKSB7IC8qIG5vLW9wICovIH0KKworICAvKioKKyAgICogQHBhcmFtIHshc3RyaW5nfSBzcmMKKyAgICogQHJldHVybiB7IUludDhBcnJheX0KKyAgICovCisgIGZ1bmN0aW9uIHRvVXNBc2NpaUJ5dGVzKHNyYykgeworICAgIHZhciAvKiogIW51bWJlciAqLyBuID0gc3JjLmxlbmd0aDsKKyAgICB2YXIgLyoqICFJbnQ4QXJyYXkgKi8gcmVzdWx0ID0gbmV3IEludDhBcnJheShuKTsKKyAgICBmb3IgKHZhciAvKiogIW51bWJlciAqLyBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgcmVzdWx0W2ldID0gc3JjLmNoYXJDb2RlQXQoaSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHshSW50OEFycmF5fSBieXRlcworICAgKiBAcmV0dXJuIHshSW50OEFycmF5fQorICAgKi8KKyAgZnVuY3Rpb24gZGVjb2RlKGJ5dGVzKSB7CisgICAgdmFyIC8qKiAhU3RhdGUgKi8gcyA9IG5ldyBTdGF0ZSgpOworICAgIGluaXRTdGF0ZShzLCBuZXcgSW5wdXRTdHJlYW0oYnl0ZXMpKTsKKyAgICB2YXIgLyoqICFudW1iZXIgKi8gdG90YWxPdXRwdXQgPSAwOworICAgIHZhciAvKiogIUFycmF5PCFJbnQ4QXJyYXk+ICovIGNodW5rcyA9IFtdOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICB2YXIgLyoqICFJbnQ4QXJyYXkgKi8gY2h1bmsgPSBuZXcgSW50OEFycmF5KDE2Mzg0KTsKKyAgICAgIGNodW5rcy5wdXNoKGNodW5rKTsKKyAgICAgIHMub3V0cHV0ID0gY2h1bms7CisgICAgICBzLm91dHB1dE9mZnNldCA9IDA7CisgICAgICBzLm91dHB1dExlbmd0aCA9IDE2Mzg0OworICAgICAgcy5vdXRwdXRVc2VkID0gMDsKKyAgICAgIGRlY29tcHJlc3Mocyk7CisgICAgICB0b3RhbE91dHB1dCArPSBzLm91dHB1dFVzZWQ7CisgICAgICBpZiAocy5vdXRwdXRVc2VkIDwgMTYzODQpIGJyZWFrOworICAgIH0KKyAgICBjbG9zZShzKTsKKyAgICB2YXIgLyoqICFJbnQ4QXJyYXkgKi8gcmVzdWx0ID0gbmV3IEludDhBcnJheSh0b3RhbE91dHB1dCk7CisgICAgdmFyIC8qKiAhbnVtYmVyICovIG9mZnNldCA9IDA7CisgICAgZm9yICh2YXIgLyoqICFudW1iZXIgKi8gaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciAvKiogIUludDhBcnJheSAqLyBjaHVuayA9IGNodW5rc1tpXTsKKyAgICAgIHZhciAvKiogIW51bWJlciAqLyBlbmQgPSBtaW4odG90YWxPdXRwdXQsIG9mZnNldCArIDE2Mzg0KTsKKyAgICAgIHZhciAvKiogIW51bWJlciAqLyBsZW4gPSBlbmQgLSBvZmZzZXQ7CisgICAgICBpZiAobGVuIDwgMTYzODQpIHsKKyAgICAgICAgcmVzdWx0LnNldChjaHVuay5zdWJhcnJheSgwLCBsZW4pLCBvZmZzZXQpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0LnNldChjaHVuaywgb2Zmc2V0KTsKKyAgICAgIH0KKyAgICAgIG9mZnNldCArPSBsZW47CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICByZXR1cm4gZGVjb2RlOworfQorCisvKiogQGV4cG9ydCAqLwordmFyIEJyb3RsaURlY29kZSA9IEJyb3RsaURlY29kZUNsb3N1cmUoKTsKKword2luZG93WyJCcm90bGlEZWNvZGUiXSA9IEJyb3RsaURlY29kZTsKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9qcy9kZWNvZGUubWluLmpzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2pzL2RlY29kZS5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlZTAwMQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qcy9kZWNvZGUubWluLmpzCkBAIC0wLDAgKzEsMiBAQAorZnVuY3Rpb24gQnJvdGxpRGVjb2RlQ2xvc3VyZSgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKGUpe3RoaXMuYT1lLHRoaXMuYj0wfWZ1bmN0aW9uIHQoZSl7Zm9yKHZhciB0PS0xLGk9MTY7aT4wOyllPj4+aSE9MCYmKHQrPWksZT4+Pj1pKSxpPj49MTtyZXR1cm4gdCtlfWZ1bmN0aW9uIGkoZSx0LGkpe3JldHVybiAxNit0KzIqKGk8PGUpfWZ1bmN0aW9uIG4oZSxpLG4pe2lmKGU8bisoMjw8aSkpdGhyb3cibWF4RGlzdGFuY2UgaXMgdG9vIHNtYWxsIjt2YXIgYT0oZS1uPj5pKSs0LG89dChhKS0xLHI9by0xPDwxfGE+Pm8mMTtyZXR1cm4oci0xPDxpKSsoMTw8aSkrbisxNn1mdW5jdGlvbiBhKGUpe3ZhciB0PW5ldyBJbnQxNkFycmF5KDI0KSxpPW5ldyBJbnQxNkFycmF5KDI0KTtpWzBdPTI7Zm9yKHZhciBuPTA7bjwyMzsrK24pdFtuKzFdPXRbbl0rKDE8PFBlW25dKSxpW24rMV09aVtuXSsoMTw8JGVbbl0pO2Zvcih2YXIgYT0wO2E8NzA0OysrYSl7dmFyIG89YT4+PjYscj0tNDtvPj0yJiYoby09MixyPTApO3ZhciBzPSgxNzAwNjQ+Pj4yKm8mMyk8PDN8YT4+PjMmNyxsPSgxNTYyMjg+Pj4yKm8mMyk8PDN8NyZhLGM9aVtsXSxkPXIrKGM+ND8zOmMtMiksaD00KmE7ZVtoKzBdPVBlW3NdfCRlW2xdPDw4LGVbaCsxXT10W3NdLGVbaCsyXT1pW2xdLGVbaCszXT1kfX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUuYztpZihlLmM9MCxlLmQ+PTE2JiYoZS5lPWUuZltlLmcrK108PDE2fGUuZT4+PjE2LGUuZC09MTYpLDA9PUgoZSwxKSlyZXR1cm4gMTY7dmFyIGk9SChlLDMpO3JldHVybiAwIT1pPzE3K2k6KGk9SChlLDMpLDAhPWk/MT09aT8wPT10Py0xOihlLmM9MSwxPT1IKGUsMSk/LTE6KGk9SChlLDYpLGk8MTB8fGk+MzA/LTE6aSkpOjgraToxNyl9ZnVuY3Rpb24gcihlLHQpe2lmKDAhPWUuaCl0aHJvdyJTdGF0ZSBNVVNUIGJlIHVuaW5pdGlhbGl6ZWQiO2Uuaj1uZXcgSW50MzJBcnJheSgzMDkxKSxlLmpbMF09NyxlLms9Mzt2YXIgaT1uKDIxNDc0ODM2NDQsMywxMjApO2UubD1uZXcgSW50OEFycmF5KGkpLGUubT1uZXcgSW50MzJBcnJheShpKSxlLmlucHV0PXQsVShlKSxlLmg9MX1mdW5jdGlvbiBzKGUpe2lmKDA9PWUuaCl0aHJvdyJTdGF0ZSBNVVNUIGJlIGluaXRpYWxpemVkIjsxMSE9ZS5oJiYoZS5oPTExLG51bGwhPWUuaW5wdXQmJihuZShlLmlucHV0KSxlLmlucHV0PW51bGwpKX1mdW5jdGlvbiBsKGUpe2lmKGUuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNiksMCE9SChlLDEpKXt2YXIgdD1IKGUsMyk7cmV0dXJuIDA9PXQ/MTpIKGUsdCkrKDE8PHQpfXJldHVybiAwfWZ1bmN0aW9uIGMoZSl7aWYoZS5kPj0xNiYmKGUuZT1lLmZbZS5nKytdPDwxNnxlLmU+Pj4xNixlLmQtPTE2KSxlLm49SChlLDEpLGUubz0wLGUucD0wLGUucT0wLDA9PWUubnx8MD09SChlLDEpKXt2YXIgdD1IKGUsMikrNDtpZig3PT10KXtpZihlLnE9MSwwIT1IKGUsMSkpdGhyb3ciQ29ycnVwdGVkIHJlc2VydmVkIGJpdCI7dmFyIGk9SChlLDIpO2lmKDA9PWkpcmV0dXJuO2Zvcih2YXIgbj0wO248aTtuKyspe2UuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNik7dmFyIGE9SChlLDgpO2lmKDA9PWEmJm4rMT09aSYmaT4xKXRocm93IkV4dWJlcmFudCBuaWJibGUiO2Uub3w9YTw8OCpufX1lbHNlIGZvcih2YXIgbj0wO248dDtuKyspe2UuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNik7dmFyIGE9SChlLDQpO2lmKDA9PWEmJm4rMT09dCYmdD40KXRocm93IkV4dWJlcmFudCBuaWJibGUiO2Uub3w9YTw8NCpufWUubysrLDA9PWUubiYmKGUucD1IKGUsMSkpfX1mdW5jdGlvbiBkKGUsdCxpKXt2YXIgbj1lW3RdLGE9aS5lPj4+aS5kO24rPTI1NSZhO3ZhciBvPWVbbl0+PjE2LHI9NjU1MzUmZVtuXTtpZihvPD04KXJldHVybiBpLmQrPW8scjtuKz1yO3ZhciBzPSgxPDxvKS0xO3JldHVybiBuKz0oYSZzKT4+PjgsaS5kKz0oZVtuXT4+MTYpKzgsNjU1MzUmZVtuXX1mdW5jdGlvbiBoKGUsdCxpKXtpLmQ+PTE2JiYoaS5lPWkuZltpLmcrK108PDE2fGkuZT4+PjE2LGkuZC09MTYpO3ZhciBuPWQoZSx0LGkpLGE9Z2Vbbl07cmV0dXJuIGkuZD49MTYmJihpLmU9aS5mW2kuZysrXTw8MTZ8aS5lPj4+MTYsaS5kLT0xNiksbWVbbl0rKGE8PTE2P0goaSxhKTpSKGksYSkpfWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIGk9ZVt0XTt0PjA7dC0tKWVbdF09ZVt0LTFdO2VbMF09aX1mdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciBpPW5ldyBJbnQzMkFycmF5KDI1Niksbj0wO248MjU2O24rKylpW25dPW47Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIGE9MjU1JmVbbl07ZVtuXT1pW2FdLDAhPWEmJmYoaSxhKX19ZnVuY3Rpb24gdShlLHQsaSxuKXt2YXIgYT0wLG89OCxyPTAscz0wLGw9MzI3NjgsYz1uZXcgSW50MzJBcnJheSgzMyksZD1jLmxlbmd0aC0xO2ZvcihXKGMsZCw1LGUsMTgpO2E8dCYmbD4wOyl7bi5nPjIwMzAmJkIobiksbi5kPj0xNiYmKG4uZT1uLmZbbi5nKytdPDwxNnxuLmU+Pj4xNixuLmQtPTE2KTt2YXIgaD1uLmU+Pj5uLmQmMzE7bi5kKz1jW2hdPj4xNjt2YXIgZj02NTUzNSZjW2hdO2lmKGY8MTYpcj0wLGlbYSsrXT1mLDAhPWYmJihvPWYsbC09MzI3Njg+PmYpO2Vsc2V7dmFyIHA9Zi0xNCx1PTA7MTY9PWYmJih1PW8pLHMhPXUmJihyPTAscz11KTt2YXIgbT1yO3I+MCYmKHItPTIscjw8PXApLG4uZD49MTYmJihuLmU9bi5mW24uZysrXTw8MTZ8bi5lPj4+MTYsbi5kLT0xNikscis9SChuLHApKzM7dmFyIGc9ci1tO2lmKGErZz50KXRocm93InN5bWJvbCArIHJlcGVhdERlbHRhID4gbnVtU3ltYm9scyI7Zm9yKHZhciBQPTA7UDxnO1ArKylpW2ErK109czswIT1zJiYobC09Zzw8MTUtcyl9fWlmKDAhPWwpdGhyb3ciVW51c2VkIHNwYWNlIjtpLmZpbGwoMCxhLHQpfWZ1bmN0aW9uIG0oZSx0KXtmb3IodmFyIGk9MDtpPHQtMTsrK2kpZm9yKHZhciBuPWkrMTtuPHQ7KytuKWlmKGVbaV09PWVbbl0pdGhyb3ciRHVwbGljYXRlIHNpbXBsZSBIdWZmbWFuIGNvZGUgc3ltYm9sIn1mdW5jdGlvbiBnKGUsaSxuLGEsbyl7Zm9yKHZhciByPW5ldyBJbnQzMkFycmF5KGkpLHM9bmV3IEludDMyQXJyYXkoNCksbD0xK3QoZS0xKSxjPUgobywyKSsxLGQ9MDtkPGM7ZCsrKXtvLmQ+PTE2JiYoby5lPW8uZltvLmcrK108PDE2fG8uZT4+PjE2LG8uZC09MTYpO3ZhciBoPUgobyxsKTtpZihoPj1pKXRocm93IkNhbid0IHJlYWRIdWZmbWFuQ29kZSI7c1tkXT1ofW0ocyxjKTt2YXIgZj1jO3N3aXRjaCg0PT1jJiYoZis9SChvLDEpKSxmKXtjYXNlIDE6cltzWzBdXT0xO2JyZWFrO2Nhc2UgMjpyW3NbMF1dPTEscltzWzFdXT0xO2JyZWFrO2Nhc2UgMzpyW3NbMF1dPTEscltzWzFdXT0yLHJbc1syXV09MjticmVhaztjYXNlIDQ6cltzWzBdXT0yLHJbc1sxXV09MixyW3NbMl1dPTIscltzWzNdXT0yO2JyZWFrO2Nhc2UgNTpyW3NbMF1dPTEscltzWzFdXT0yLHJbc1syXV09MyxyW3NbM11dPTN9cmV0dXJuIFcobixhLDgscixpKX1mdW5jdGlvbiBQKGUsdCxpLG4sYSl7Zm9yKHZhciBvPW5ldyBJbnQzMkFycmF5KGUpLHI9bmV3IEludDMyQXJyYXkoMTgpLHM9MzIsbD0wLGM9dDtjPDE4JiZzPjA7YysrKXt2YXIgZD1jZVtjXTthLmQ+PTE2JiYoYS5lPWEuZlthLmcrK108PDE2fGEuZT4+PjE2LGEuZC09MTYpO3ZhciBoPWEuZT4+PmEuZCYxNTthLmQrPWZlW2hdPj4xNjt2YXIgZj02NTUzNSZmZVtoXTtyW2RdPWYsMCE9ZiYmKHMtPTMyPj5mLGwrKyl9aWYoMCE9cyYmMSE9bCl0aHJvdyJDb3JydXB0ZWQgSHVmZm1hbiBjb2RlIGhpc3RvZ3JhbSI7cmV0dXJuIHUocixlLG8sYSksVyhpLG4sOCxvLGUpfWZ1bmN0aW9uICQoZSx0LGksbixhKXthLmc+MjAzMCYmQihhKSxhLmQ+PTE2JiYoYS5lPWEuZlthLmcrK108PDE2fGEuZT4+PjE2LGEuZC09MTYpO3ZhciBvPUgoYSwyKTtyZXR1cm4gMT09bz9nKGUsdCxpLG4sYSk6UCh0LG8saSxuLGEpfWZ1bmN0aW9uIGIoZSx0LGkpe2kuZz4yMDMwJiZCKGkpO3ZhciBuPWwoaSkrMTtpZigxPT1uKXJldHVybiB0LmZpbGwoMCwwLGUpLG47aS5kPj0xNiYmKGkuZT1pLmZbaS5nKytdPDwxNnxpLmU+Pj4xNixpLmQtPTE2KTt2YXIgYT1IKGksMSksbz0wOzAhPWEmJihvPUgoaSw0KSsxKTt2YXIgcj1uK28scz1sZVtyKzMxPj41XSxjPW5ldyBJbnQzMkFycmF5KHMrMSksaD1jLmxlbmd0aC0xOyQocixyLGMsaCxpKTtmb3IodmFyIGY9MDtmPGU7KXtpLmc+MjAzMCYmQihpKSxpLmQ+PTE2JiYoaS5lPWkuZltpLmcrK108PDE2fGkuZT4+PjE2LGkuZC09MTYpO3ZhciB1PWQoYyxoLGkpO2lmKDA9PXUpdFtmXT0wLGYrKztlbHNlIGlmKHU8PW8pe2kuZD49MTYmJihpLmU9aS5mW2kuZysrXTw8MTZ8aS5lPj4+MTYsaS5kLT0xNik7Zm9yKHZhciBtPSgxPDx1KStIKGksdSk7MCE9bTspe2lmKGY+PWUpdGhyb3ciQ29ycnVwdGVkIGNvbnRleHQgbWFwIjt0W2ZdPTAsZisrLG0tLX19ZWxzZSB0W2ZdPXUtbyxmKyt9cmV0dXJuIGkuZD49MTYmJihpLmU9aS5mW2kuZysrXTw8MTZ8aS5lPj4+MTYsaS5kLT0xNiksMT09SChpLDEpJiZwKHQsZSksbn1mdW5jdGlvbiB2KGUsdCxpKXt2YXIgbj1lLnIsYT00KzIqdDtlLmQ+PTE2JiYoZS5lPWUuZltlLmcrK108PDE2fGUuZT4+PjE2LGUuZC09MTYpO3ZhciBvPWQoZS5qLDIqdCxlKSxyPWgoZS5qLDIqdCsxLGUpO3JldHVybiAxPT1vP289blthKzFdKzE6MD09bz9vPW5bYV06by09MixvPj1pJiYoby09aSksblthXT1uW2ErMV0sblthKzFdPW8scn1mdW5jdGlvbiB5KGUpe2Uucz12KGUsMCxlLnQpO3ZhciB0PWUucls1XTtlLnU9dDw8NixlLnY9MjU1JmUud1tlLnVdO3ZhciBpPWUueFt0XTtlLnk9aTw8OSxlLno9ZS55KzI1Nn1mdW5jdGlvbiBYKGUpe2UuQT12KGUsMSxlLkIpLGUuQz1lLnJbN119ZnVuY3Rpb24gdyhlKXtlLkQ9dihlLDIsZS5GKSxlLkc9ZS5yWzldPDwyfWZ1bmN0aW9uIFkoZSl7dmFyIHQ9ZS5IO2lmKHQ+ZS5JKXtmb3IodmFyIGk9ZS5JO3Q+PjE+aTspdD4+PTE7MD09ZS5uJiZ0PDE2Mzg0JiZlLkg+PTE2Mzg0JiYodD0xNjM4NCl9aWYoISh0PD1lLkopKXt2YXIgbj10KzM3LGE9bmV3IEludDhBcnJheShuKTswIT1lLksubGVuZ3RoJiZhLkwoZS5LLk0oMCwwK2UuSiksMCksZS5LPWEsZS5KPXR9fWZ1bmN0aW9uIFEoZSl7cmV0dXJuIDAhPWUubj8oZS5OPTEwLHZvaWQoZS5oPTEyKSk6KGUuTz1uZXcgSW50MzJBcnJheSgwKSxlLlA9bmV3IEludDMyQXJyYXkoMCksZS5RPW5ldyBJbnQzMkFycmF5KDApLGUuZz4yMDMwJiZCKGUpLGMoZSksdm9pZCgwPT1lLm8mJjA9PWUucXx8KDAhPWUucHx8MCE9ZS5xPyhKKGUpLGUuaD0wIT1lLnE/NTo2KTplLmg9MywwPT1lLnEmJihlLkkrPWUubyxlLkk+MTw8MzAmJihlLkk9MTw8MzApLGUuSjxlLkgmJlkoZSkpKSkpfWZ1bmN0aW9uIGsoZSx0LGkpe3ZhciBuPWUualsyKnRdO2lmKGk8PTEpcmV0dXJuIGUualsyKnQrMV09bixlLmpbMip0KzJdPW4sMTw8Mjg7dmFyIGE9aSsyO24rPSQoYSxhLGUuaiwyKnQsZSksZS5qWzIqdCsxXT1uO3ZhciBvPTI2O3JldHVybiBuKz0kKG8sbyxlLmosMip0KzEsZSksZS5qWzIqdCsyXT1uLGgoZS5qLDIqdCsxLGUpfWZ1bmN0aW9uIHgoZSx0KXtmb3IodmFyIGk9ZS5sLG49ZS5tLGE9ZS5SLG89ZS5TLHI9MTw8YSxzPTEsbD0wLGM9MTYsZD0wO2Q8bzsrK2QpaVtjXT0wLG5bY109ZCsxLCsrYztmb3IoO2M8dDspe2Zvcih2YXIgaD1vKygoMitsPDxzKS00PDxhKSsxLGQ9MDtkPHI7KytkKWlbY109cyxuW2NdPWgrZCwrK2M7cys9bCxsXj0xfX1mdW5jdGlvbiBDKGUpe2UudD1sKGUpKzEsZS5zPWsoZSwwLGUudCksZS5CPWwoZSkrMSxlLkE9ayhlLDEsZS5CKSxlLkY9bChlKSsxLGUuRD1rKGUsMixlLkYpLGUuZz4yMDMwJiZCKGUpLGUuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNiksZS5SPUgoZSwyKSxlLlM9SChlLDQpPDxlLlIsZS5UPSgxPDxlLlIpLTEsZS54PW5ldyBJbnQ4QXJyYXkoZS50KTtmb3IodmFyIHQ9MDt0PGUudDspe2Zvcih2YXIgYT10ZSh0Kzk2LGUudCk7dDxhOysrdCllLmQ+PTE2JiYoZS5lPWUuZltlLmcrK108PDE2fGUuZT4+PjE2LGUuZC09MTYpLGUueFt0XT1IKGUsMik7ZS5nPjIwMzAmJkIoZSl9ZS53PW5ldyBJbnQ4QXJyYXkoZS50PDw2KTt2YXIgbz1iKGUudDw8NixlLncsZSk7ZS5VPTE7Zm9yKHZhciByPTA7cjxlLnQ8PDY7cisrKWlmKGUud1tyXSE9cj4+Nil7ZS5VPTA7YnJlYWt9ZS5WPW5ldyBJbnQ4QXJyYXkoZS5GPDwyKTt2YXIgcz1iKGUuRjw8MixlLlYsZSk7ZS5PPUkoMjU2LDI1NixvLGUpLGUuUD1JKDcwNCw3MDQsZS5CLGUpO3ZhciBjPWkoZS5SLGUuUywyNCksZD1jOzE9PWUuYyYmKGM9aShlLlIsZS5TLDYyKSxkPW4oMjE0NzQ4MzY0NCxlLlIsZS5TKSksZS5RPUkoYyxkLHMsZSkseChlLGQpLGUudT0wLGUuRz0wLGUueT01MTIqZS54WzBdLGUuej1lLnkrMjU2LGUudj0wLGUuQz0wLGUucls0XT0xLGUucls1XT0wLGUucls2XT0xLGUucls3XT0wLGUucls4XT0xLGUucls5XT0wfWZ1bmN0aW9uIGooZSl7dmFyIHQ9ZS5LO2lmKGUubzw9MClyZXR1cm4gTChlKSx2b2lkKGUuaD0yKTt2YXIgaT10ZShlLkotZS5XLGUubyk7cmV0dXJuIEcoZSx0LGUuVyxpKSxlLm8tPWksZS5XKz1pLGUuVz09ZS5KPyhlLk49Nix2b2lkKGUuaD0xMikpOihMKGUpLHZvaWQoZS5oPTIpKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXRlKGUuWC1lLlksZS5aLWUuJCk7cmV0dXJuIDAhPXQmJihlLl8uTChlLksuTShlLiQsZS4kK3QpLGUuYWErZS5ZKSxlLlkrPXQsZS4kKz10KSxlLlk8ZS5YPzE6MH1mdW5jdGlvbiBJKGUsdCxpLG4pe2Zvcih2YXIgYT1sZVt0KzMxPj41XSxvPW5ldyBJbnQzMkFycmF5KGkraSphKSxyPWkscz0wO3M8aTsrK3Mpb1tzXT1yLHIrPSQoZSx0LG8scyxuKTtyZXR1cm4gb31mdW5jdGlvbiBxKGUpe3ZhciB0PWUuSjtyZXR1cm4gMCE9ZS5pJiYodD10ZSh0LGUuJCtlLlgtZS5ZKSksdH1mdW5jdGlvbiBUKGUpe2lmKDA9PWUuaCl0aHJvdyJDYW4ndCBkZWNvbXByZXNzIHVudGlsIGluaXRpYWxpemVkIjtpZigxMT09ZS5oKXRocm93IkNhbid0IGRlY29tcHJlc3MgYWZ0ZXIgY2xvc2UiO2lmKDE9PWUuaCl7dmFyIHQ9byhlKTtpZih0PT0tMSl0aHJvdyJJbnZhbGlkICd3aW5kb3dCaXRzJyBjb2RlIjtlLkg9MTw8dCxlLmJhPWUuSC0xNixlLmg9Mn1mb3IodmFyIGk9cShlKSxuPWUuSi0xLGE9ZS5LOzEwIT1lLmg7KXN3aXRjaChlLmgpe2Nhc2UgMjppZihlLm88MCl0aHJvdyJJbnZhbGlkIG1ldGFibG9jayBsZW5ndGgiO1EoZSksaT1xKGUpLG49ZS5KLTEsYT1lLks7Y29udGludWU7Y2FzZSAzOkMoZSksZS5oPTQ7Y2FzZSA0OmlmKGUubzw9MCl7ZS5oPTI7Y29udGludWV9ZS5nPjIwMzAmJkIoZSksMD09ZS5BJiZYKGUpLGUuQS0tLGUuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNik7dmFyIHI9ZChlLlAsZS5DLGUpPDwyLHM9YmVbcl0sbD1iZVtyKzFdLGM9YmVbcisyXTtlLmNhPWJlW3IrM10sZS5kPj0xNiYmKGUuZT1lLmZbZS5nKytdPDwxNnxlLmU+Pj4xNixlLmQtPTE2KTt2YXIgaD0yNTUmcztlLmRhPWwrKGg8PTE2P0goZSxoKTpSKGUsaCkpLGUuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNik7dmFyIGg9cz4+ODtlLmVhPWMrKGg8PTE2P0goZSxoKTpSKGUsaCkpLGUuZmE9MCxlLmg9NztjYXNlIDc6aWYoMCE9ZS5VKXtmb3IoO2UuZmE8ZS5kYTspaWYoZS5nPjIwMzAmJkIoZSksMD09ZS5zJiZ5KGUpLGUucy0tLGUuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNiksYVtlLlddPWQoZS5PLGUudixlKSxlLlcrKyxlLmZhKyssZS5XPj1pKXtlLk49NyxlLmg9MTI7YnJlYWt9fWVsc2UgZm9yKHZhciBmPTI1NSZhW2UuVy0xJm5dLHA9MjU1JmFbZS5XLTImbl07ZS5mYTxlLmRhOyl7ZS5nPjIwMzAmJkIoZSksMD09ZS5zJiZ5KGUpO3ZhciB1PXllW2UueStmXXx5ZVtlLnorcF0sbT0yNTUmZS53W2UudSt1XTtpZihlLnMtLSxwPWYsZS5kPj0xNiYmKGUuZT1lLmZbZS5nKytdPDwxNnxlLmU+Pj4xNixlLmQtPTE2KSxmPWQoZS5PLG0sZSksYVtlLlddPWYsZS5XKyssZS5mYSsrLGUuVz49aSl7ZS5OPTcsZS5oPTEyO2JyZWFrfX1pZig3IT1lLmgpY29udGludWU7aWYoZS5vLT1lLmRhLGUubzw9MCl7ZS5oPTQ7Y29udGludWV9dmFyIGc9ZS5jYTtpZihnPDApZS5nYT1lLnJbZS5rXTtlbHNle2UuZz4yMDMwJiZCKGUpLDA9PWUuRCYmdyhlKSxlLkQtLSxlLmQ+PTE2JiYoZS5lPWUuZltlLmcrK108PDE2fGUuZT4+PjE2LGUuZC09MTYpO3ZhciBQPTI1NSZlLlZbZS5HK2ddO2lmKGc9ZChlLlEsUCxlKSxnPDE2KXt2YXIgJD1lLmsrZGVbZ10mMztpZihlLmdhPWUuclskXStoZVtnXSxlLmdhPDApdGhyb3ciTmVnYXRpdmUgZGlzdGFuY2UifWVsc2V7dmFyIGIsaD1lLmxbZ107ZS5kK2g8PTMyP2I9SChlLGgpOihlLmQ+PTE2JiYoZS5lPWUuZltlLmcrK108PDE2fGUuZT4+PjE2LGUuZC09MTYpLGI9aDw9MTY/SChlLGgpOlIoZSxoKSksZS5nYT1lLm1bZ10rKGI8PGUuUil9fWlmKGUuaGEhPWUuYmEmJmUuVzxlLmJhP2UuaGE9ZS5XOmUuaGE9ZS5iYSxlLmdhPmUuaGEpe2UuaD05O2NvbnRpbnVlfWlmKGc+MCYmKGUuaz1lLmsrMSYzLGUucltlLmtdPWUuZ2EpLGUuZWE+ZS5vKXRocm93IkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlIjtlLmZhPTAsZS5oPTg7Y2FzZSA4OnZhciB2PWUuVy1lLmdhJm4sWT1lLlcsaz1lLmVhLWUuZmEseD12K2ssST1ZK2s7aWYoeDxuJiZJPG4pe2lmKGs8MTJ8fHg+WSYmST52KWZvcih2YXIgVD0wO1Q8aztUKz00KWFbWSsrXT1hW3YrK10sYVtZKytdPWFbdisrXSxhW1krK109YVt2KytdLGFbWSsrXT1hW3YrK107ZWxzZSBhLmNvcHlXaXRoaW4oWSx2LHgpO2UuZmErPWssZS5vLT1rLGUuVys9a31lbHNlIGZvcig7ZS5mYTxlLmVhOylpZihhW2UuV109YVtlLlctZS5nYSZuXSxlLm8tLSxlLlcrKyxlLmZhKyssZS5XPj1pKXtlLk49OCxlLmg9MTI7YnJlYWt9OD09ZS5oJiYoZS5oPTQpO2NvbnRpbnVlO2Nhc2UgOTppZihlLmdhPjIxNDc0ODM2NDQpdGhyb3ciSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UiO2lmKCEoZS5lYT49NCYmZS5lYTw9MjQpKXRocm93IkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlIjt2YXIgUz1wZVtlLmVhXSxFPWUuZ2EtZS5oYS0xLEQ9dWVbZS5lYV0sTj0oMTw8RCktMSxGPUUmTixXPUU+Pj5EO2lmKFMrPUYqZS5lYSwhKFc8MTIxKSl0aHJvdyJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSI7dmFyIFU9eihhLGUuVyxzZSxTLGUuZWEsdmUsVyk7aWYoZS5XKz1VLGUuby09VSxlLlc+PWkpe2UuTj00LGUuaD0xMjtjb250aW51ZX1lLmg9NDtjb250aW51ZTtjYXNlIDU6Zm9yKDtlLm8+MDspZS5nPjIwMzAmJkIoZSksZS5kPj0xNiYmKGUuZT1lLmZbZS5nKytdPDwxNnxlLmU+Pj4xNixlLmQtPTE2KSxIKGUsOCksZS5vLS07ZS5oPTI7Y29udGludWU7Y2FzZSA2OmooZSk7Y29udGludWU7Y2FzZSAxMjplLlo9dGUoZS5XLGUuSiksZS5oPTEzO2Nhc2UgMTM6aWYoMD09QShlKSlyZXR1cm47ZS5XPj1lLmJhJiYoZS5oYT1lLmJhKSxlLlc+PWUuSiYmKGUuVz5lLkomJmEuY29weVdpdGhpbigwLGUuSixlLlcpLGUuVyY9bixlLiQ9MCksZS5oPWUuTjtjb250aW51ZTtkZWZhdWx0OnRocm93IlVuZXhwZWN0ZWQgc3RhdGUgIitlLmh9aWYoMTA9PWUuaCl7aWYoZS5vPDApdGhyb3ciSW52YWxpZCBtZXRhYmxvY2sgbGVuZ3RoIjtKKGUpLE0oZSwxKX19ZnVuY3Rpb24gUyhlLHQsaSl7dGhpcy5pYT0wLHRoaXMuamE9bmV3IEludDMyQXJyYXkoMCksdGhpcy5rYT1uZXcgSW50OEFycmF5KDApLHRoaXMubGE9bmV3IEludDMyQXJyYXkoMCksdGhpcy5tYT1uZXcgSW50MTZBcnJheSgwKSx0aGlzLmlhPWUsdGhpcy5qYT1uZXcgSW50MzJBcnJheSgzKmUpLHRoaXMubWE9bmV3IEludDE2QXJyYXkoZSksdGhpcy5rYT1uZXcgSW50OEFycmF5KHQpLHRoaXMubGE9bmV3IEludDMyQXJyYXkoaSsxKX1mdW5jdGlvbiBFKGUsdCxpLG4sYSl7Zm9yKHZhciBvPW4ubGVuZ3RoLHI9MSxzPTAsbD0wO2w8bzsrK2wpe3ZhciBjPW4uY2hhckNvZGVBdChsKTszNT09Yz90W3IrK109czplW3MrK109Y31mb3IodmFyIGw9MDtsPDM2MzsrK2wpaVtsXT1hLmNoYXJDb2RlQXQobCktMzJ9ZnVuY3Rpb24geihlLHQsaSxuLGEsbyxyKXt2YXIgcz10LGw9by5qYSxjPW8ua2EsZD1vLmxhLGg9MypyLGY9bFtoXSxwPWxbaCsxXSx1PWxbaCsyXSxtPWRbZl0sZz1kW2YrMV0sUD1kW3VdLCQ9ZFt1KzFdLGI9cC0xMSx2PXAtMDtmb3IoKGI8MXx8Yj45KSYmKGI9MCksKHY8MXx8dj45KSYmKHY9MCk7bSE9ZzspZVtzKytdPWNbbSsrXTtiPmEmJihiPWEpLG4rPWIsYS09YixhLT12O2Zvcih2YXIgeT1hO3k+MDspZVtzKytdPWlbbisrXSx5LS07aWYoMTA9PXB8fDExPT1wKXt2YXIgWD1zLWE7Zm9yKDEwPT1wJiYoYT0xKTthPjA7KXt2YXIgdz0yNTUmZVtYXTt3PDE5Mj8odz49OTcmJnc8PTEyMiYmKGVbWF1ePTMyKSxYKz0xLGEtPTEpOnc8MjI0PyhlW1grMV1ePTMyLFgrPTIsYS09Mik6KGVbWCsyXV49NSxYKz0zLGEtPTMpfX1lbHNlIGlmKDIxPT1wfHwyMj09cClmb3IodmFyIFk9cy1hLFE9by5tYVtyXSxrPSgzMjc2NyZRKSsoMTY3NzcyMTYtKDMyNzY4JlEpKTthPjA7KXt2YXIgeD0xLHc9MjU1JmVbWV07aWYodzwxMjgpays9dyxlW1ldPTEyNyZrO2Vsc2UgaWYodzwxOTIpO2Vsc2UgaWYodzwyMjQpaWYoYT49Mil7dmFyIEM9ZVtZKzFdO2srPTYzJkN8KDMxJncpPDw2LGVbWV09MTkyfGs+PjYmMzEsZVtZKzFdPTE5MiZDfDYzJmsseD0yfWVsc2UgeD1hO2Vsc2UgaWYodzwyNDApaWYoYT49Myl7dmFyIEM9ZVtZKzFdLGo9ZVtZKzJdO2srPTYzJmp8KDYzJkMpPDw2fCgxNSZ3KTw8MTIsZVtZXT0yMjR8az4+MTImMTUsZVtZKzFdPTE5MiZDfGs+PjYmNjMsZVtZKzJdPTE5MiZqfDYzJmsseD0zfWVsc2UgeD1hO2Vsc2UgaWYodzwyNDgpaWYoYT49NCl7dmFyIEM9ZVtZKzFdLGo9ZVtZKzJdLEE9ZVtZKzNdO2srPTYzJkF8KDYzJmopPDw2fCg2MyZDKTw8MTJ8KDcmdyk8PDE4LGVbWV09MjQwfGs+PjE4JjcsZVtZKzFdPTE5MiZDfGs+PjEyJjYzLGVbWSsyXT0xOTImanxrPj42JjYzLGVbWSszXT0xOTImQXw2MyZrLHg9NH1lbHNlIHg9YTtZKz14LGEtPXgsMjE9PXAmJihhPTApfWZvcig7UCE9JDspZVtzKytdPWNbUCsrXTtyZXR1cm4gcy10fWZ1bmN0aW9uIEQoZSx0KXtmb3IodmFyIGk9MTw8dC0xOzAhPShlJmkpOylpPj49MTtyZXR1cm4oZSZpLTEpK2l9ZnVuY3Rpb24gTihlLHQsaSxuLGEpe2RvIG4tPWksZVt0K25dPWE7d2hpbGUobj4wKX1mdW5jdGlvbiBGKGUsdCxpKXtmb3IodmFyIG49MTw8dC1pO3Q8MTUmJihuLT1lW3RdLCEobjw9MCkpOyl0Kyssbjw8PTE7cmV0dXJuIHQtaX1mdW5jdGlvbiBXKGUsdCxpLG4sYSl7dmFyIG8scixzPWVbdF0sbD1uZXcgSW50MzJBcnJheShhKSxjPW5ldyBJbnQzMkFycmF5KDE2KSxkPW5ldyBJbnQzMkFycmF5KDE2KTtmb3Iocj0wO3I8YTtyKyspY1tuW3JdXSsrO2RbMV09MDtmb3IodmFyIGg9MTtoPDE1O2grKylkW2grMV09ZFtoXStjW2hdO2ZvcihyPTA7cjxhO3IrKykwIT1uW3JdJiYobFtkW25bcl1dKytdPXIpO3ZhciBmPWkscD0xPDxmLHU9cDtpZigxPT1kWzE1XSl7Zm9yKG89MDtvPHU7bysrKWVbcytvXT1sWzBdO3JldHVybiB1fW89MCxyPTA7Zm9yKHZhciBoPTEsbT0yO2g8PWk7aCsrLG08PD0xKWZvcig7Y1toXT4wO2NbaF0tLSlOKGUscytvLG0scCxoPDwxNnxsW3IrK10pLG89RChvLGgpO2Zvcih2YXIgZz11LTEsUD0tMSwkPXMsaD1pKzEsbT0yO2g8PTE1O2grKyxtPDw9MSlmb3IoO2NbaF0+MDtjW2hdLS0pKG8mZykhPVAmJigkKz1wLGY9RihjLGgsaSkscD0xPDxmLHUrPXAsUD1vJmcsZVtzK1BdPWYraTw8MTZ8JC1zLVApLE4oZSwkKyhvPj5pKSxtLHAsaC1pPDwxNnxsW3IrK10pLG89RChvLGgpO3JldHVybiB1fWZ1bmN0aW9uIEIoZSl7aWYoMCE9ZS5uYSl7aWYoXyhlKT49LTIpcmV0dXJuO3Rocm93Ik5vIG1vcmUgaW5wdXQifXZhciB0PWUuZzw8MSxpPTQwOTYtdDtmb3IoZS5vYS5jb3B5V2l0aGluKDAsdCw0MDk2KSxlLmc9MDtpPDQwOTY7KXt2YXIgbj00MDk2LWksYT1pZShlLmlucHV0LGUub2EsaSxuKTtpZihhPD0wKXtlLm5hPTEsZS5wYT1pLGkrPTE7YnJlYWt9aSs9YX1LKGUsaSl9ZnVuY3Rpb24gTShlLHQpe2lmKDAhPWUubmEpe3ZhciBpPShlLmc8PDEpKyhlLmQrNz4+MyktNDtpZihpPmUucGEpdGhyb3ciUmVhZCBhZnRlciBlbmQiO2lmKDAhPXQmJmkhPWUucGEpdGhyb3ciVW51c2VkIGJ5dGVzIGFmdGVyIGVuZCJ9fWZ1bmN0aW9uIEgoZSx0KXt2YXIgaT1lLmU+Pj5lLmQmKDE8PHQpLTE7cmV0dXJuIGUuZCs9dCxpfWZ1bmN0aW9uIFIoZSx0KXt2YXIgaT1IKGUsMTYpO3JldHVybiBlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNixpfEgoZSx0LTE2KTw8MTZ9ZnVuY3Rpb24gVShlKXtlLm9hPW5ldyBJbnQ4QXJyYXkoNDE2MCksZS5lPTAsZS5mPW5ldyBJbnQxNkFycmF5KDIwODApLGUuZD0zMixlLmc9MjA0OCxlLm5hPTAsTyhlKX1mdW5jdGlvbiBPKGUpe2UuZz4yMDMwJiZCKGUpLE0oZSwwKSxlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNixlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNn1mdW5jdGlvbiBMKGUpezMyPT1lLmQmJk8oZSl9ZnVuY3Rpb24gSihlKXt2YXIgdD0zMi1lLmQmNztpZigwIT10KXt2YXIgaT1IKGUsdCk7aWYoMCE9aSl0aHJvdyJDb3JydXB0ZWQgcGFkZGluZyBiaXRzIn19ZnVuY3Rpb24gXyhlKXt2YXIgdD0yMDQ4O3JldHVybiAwIT1lLm5hJiYodD1lLnBhKzE+PjEpLHQtZS5nfWZ1bmN0aW9uIEcoZSx0LGksbil7aWYoMCE9KDcmZS5kKSl0aHJvdyJVbmFsaWduZWQgY29weUJ5dGVzIjtmb3IoOzMyIT1lLmQmJjAhPW47KXRbaSsrXT1lLmU+Pj5lLmQsZS5kKz04LG4tLTtpZigwIT1uKXt2YXIgYT10ZShfKGUpLG4+PjEpO2lmKGE+MCl7dmFyIG89ZS5nPDwxLHI9YTw8MTt0LkwoZS5vYS5NKG8sbytyKSxpKSxpKz1yLG4tPXIsZS5nKz1hfWlmKDAhPW4pe2lmKF8oZSk+MCl7Zm9yKGUuZD49MTYmJihlLmU9ZS5mW2UuZysrXTw8MTZ8ZS5lPj4+MTYsZS5kLT0xNik7MCE9bjspdFtpKytdPWUuZT4+PmUuZCxlLmQrPTgsbi0tO3JldHVybiB2b2lkIE0oZSwwKX1mb3IoO24+MDspe3ZhciBzPWllKGUuaW5wdXQsdCxpLG4pO2lmKHM9PS0xKXRocm93IlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IjtpKz1zLG4tPXN9fX19ZnVuY3Rpb24gSyhlLHQpe2Zvcih2YXIgaT1lLm9hLG49dD4+MSxhPWUuZixvPTA7bzxuOysrbylhW29dPTI1NSZpWzIqb118KDI1NSZpWzIqbysxXSk8PDh9ZnVuY3Rpb24gVihlLHQsaSl7Zm9yKHZhciBuPTA7bjwyNTY7KytuKWVbbl09NjMmbixlWzUxMituXT1uPj4yLGVbMTc5MituXT0yKyhuPj42KTtmb3IodmFyIG49MDtuPDEyODsrK24pZVsxMDI0K25dPTQqKHQuY2hhckNvZGVBdChuKS0zMik7Zm9yKHZhciBuPTA7bjw2NDsrK24pZVsxMTUyK25dPTEmbixlWzEyMTYrbl09MisoMSZuKTtmb3IodmFyIGE9MTI4MCxvPTA7bzwxOTsrK28pZm9yKHZhciByPTMmbyxzPWkuY2hhckNvZGVBdChvKS0zMixuPTA7bjxzOysrbillW2ErK109cjtmb3IodmFyIG49MDtuPDE2OysrbillWzE3OTIrbl09MSxlWzIwMzIrbl09NjtlWzE3OTJdPTAsZVsyMDQ3XT03O2Zvcih2YXIgbj0wO248MjU2OysrbillWzE1MzYrbl09ZVsxNzkyK25dPDwzfWZ1bmN0aW9uIFooKXt0aGlzLks9bmV3IEludDhBcnJheSgwKSx0aGlzLng9bmV3IEludDhBcnJheSgwKSx0aGlzLnc9bmV3IEludDhBcnJheSgwKSx0aGlzLlY9bmV3IEludDhBcnJheSgwKSx0aGlzLmw9bmV3IEludDhBcnJheSgwKSx0aGlzLl89bmV3IEludDhBcnJheSgwKSx0aGlzLm9hPW5ldyBJbnQ4QXJyYXkoMCksdGhpcy5mPW5ldyBJbnQxNkFycmF5KDApLHRoaXMucWE9bmV3IEludDMyQXJyYXkoMCksdGhpcy5yPW5ldyBJbnQzMkFycmF5KDApLHRoaXMuaj1uZXcgSW50MzJBcnJheSgwKSx0aGlzLk89bmV3IEludDMyQXJyYXkoMCksdGhpcy5QPW5ldyBJbnQzMkFycmF5KDApLHRoaXMuUT1uZXcgSW50MzJBcnJheSgwKSx0aGlzLm09bmV3IEludDMyQXJyYXkoMCksdGhpcy5oPTAsdGhpcy5OPTAsdGhpcy5lPTAsdGhpcy5kPTAsdGhpcy5nPTAsdGhpcy5wYT0wLHRoaXMubmE9MCx0aGlzLm89MCx0aGlzLm49MCx0aGlzLnA9MCx0aGlzLnE9MCx0aGlzLnM9MCx0aGlzLnQ9MCx0aGlzLkE9MCx0aGlzLkI9MCx0aGlzLkQ9MCx0aGlzLkY9MCx0aGlzLlc9MCx0aGlzLmhhPTAsdGhpcy5rPTAsdGhpcy5VPTAsdGhpcy52PTAsdGhpcy5DPTAsdGhpcy5mYT0wLHRoaXMuZGE9MCx0aGlzLnU9MCx0aGlzLkc9MCx0aGlzLnk9MCx0aGlzLno9MCx0aGlzLmNhPTAsdGhpcy5TPTAsdGhpcy5UPTAsdGhpcy5SPTAsdGhpcy5nYT0wLHRoaXMuZWE9MCx0aGlzLmJhPTAsdGhpcy5IPTAsdGhpcy5KPTAsdGhpcy5JPTAsdGhpcy5hYT0wLHRoaXMuWD0wLHRoaXMuWT0wLHRoaXMuJD0wLHRoaXMuWj0wLHRoaXMuaT0wLHRoaXMuYz0wLHRoaXMuaW5wdXQ9bnVsbCx0aGlzLks9bmV3IEludDhBcnJheSgwKSx0aGlzLnI9bmV3IEludDMyQXJyYXkoMTApLHRoaXMuclswXT0xNix0aGlzLnJbMV09MTUsdGhpcy5yWzJdPTExLHRoaXMuclszXT00fWZ1bmN0aW9uIGVlKGUsdCxpLG4pe3ZhciBhPW9lKHQraSk7aWYoYS5sZW5ndGghPWUubGVuZ3RoKXRocm93IkNvcnJ1cHRlZCBicm90bGkgZGljdGlvbmFyeSI7Zm9yKHZhciBvPTAscj1uLmxlbmd0aCxzPTA7czxyO3MrPTIpe3ZhciBsPW4uY2hhckNvZGVBdChzKS0zNixjPW4uY2hhckNvZGVBdChzKzEpLTM2O28rPWw7Zm9yKHZhciBkPTA7ZDxjOysrZClhW29dfD0xMjgsbysrfWUuTChhKX1mdW5jdGlvbiB0ZShlLHQpe3JldHVybiBlPD10P2U6dH1mdW5jdGlvbiBpZShlLHQsaSxuKXtpZihudWxsPT1lKXJldHVybi0xO3ZhciBhPXRlKGUuYituLGUuYS5sZW5ndGgpLG89YS1lLmI7cmV0dXJuIHQuTChlLmEuTShlLmIsYSksaSksZS5iKz1vLG99ZnVuY3Rpb24gbmUoZSl7cmV0dXJuIDB9ZnVuY3Rpb24gYWUoZSl7fWZ1bmN0aW9uIG9lKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxpPW5ldyBJbnQ4QXJyYXkodCksbj0wO248dDsrK24paVtuXT1lLmNoYXJDb2RlQXQobik7cmV0dXJuIGl9ZnVuY3Rpb24gcmUodCl7dmFyIGk9bmV3IFo7cihpLG5ldyBlKHQpKTtmb3IodmFyIG49MCxhPVtdOzspe3ZhciBvPW5ldyBJbnQ4QXJyYXkoMTYzODQpO2lmKGEucHVzaChvKSxpLl89byxpLmFhPTAsaS5YPTE2Mzg0LGkuWT0wLFQoaSksbis9aS5ZLGkuWTwxNjM4NClicmVha31zKGkpO2Zvcih2YXIgbD1uZXcgSW50OEFycmF5KG4pLGM9MCxkPTA7ZDxhLmxlbmd0aDsrK2Qpe3ZhciBvPWFbZF0saD10ZShuLGMrMTYzODQpLGY9aC1jO2Y8MTYzODQ/bC5MKG8uTSgwLGYpLGMpOmwuTChvLGMpLGMrPWZ9cmV0dXJuIGx9dmFyIHNlPW5ldyBJbnQ4QXJyYXkoMCksbGU9SW50MzJBcnJheS5mcm9tKFsyNTYsNDAyLDQzNiw0NjgsNTAwLDUzNCw1NjYsNTk4LDYzMCw2NjIsNjk0LDcyNiw3NTgsNzkwLDgyMiw4NTQsODg2LDkyMCw5NTIsOTg0LDEwMTYsMTA0OCwxMDgwXSksY2U9SW50MzJBcnJheS5mcm9tKFsxLDIsMyw0LDAsNSwxNyw2LDE2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1XSksZGU9SW50MzJBcnJheS5mcm9tKFswLDMsMiwxLDAsMCwwLDAsMCwwLDMsMywzLDMsMywzXSksaGU9SW50MzJBcnJheS5mcm9tKFswLDAsMCwwLC0xLDEsLTIsMiwtMywzLC0xLDEsLTIsMiwtMywzXSksZmU9SW50MzJBcnJheS5mcm9tKFsxMzEwNzIsMTMxMDc2LDEzMTA3NSwxOTY2MTAsMTMxMDcyLDEzMTA3NiwxMzEwNzUsMjYyMTQ1LDEzMTA3MiwxMzEwNzYsMTMxMDc1LDE5NjYxMCwxMzEwNzIsMTMxMDc2LDEzMTA3NSwyNjIxNDldKSxwZT1JbnQzMkFycmF5LmZyb20oWzAsMCwwLDAsMCw0MDk2LDkyMTYsMjE1MDQsMzU4NDAsNDQwMzIsNTMyNDgsNjM0ODgsNzQ3NTIsODcwNDAsOTM2OTYsMTAwODY0LDEwNDcwNCwxMDY3NTIsMTA4OTI4LDExMzUzNiwxMTU5NjgsMTE4NTI4LDExOTg3MiwxMjEyODAsMTIyMDE2XSksdWU9SW50MzJBcnJheS5mcm9tKFswLDAsMCwwLDEwLDEwLDExLDExLDEwLDEwLDEwLDEwLDEwLDksOSw4LDcsNyw4LDcsNyw2LDYsNSw1XSksbWU9SW50MzJBcnJheS5mcm9tKFsxLDUsOSwxMywxNywyNSwzMyw0MSw0OSw2NSw4MSw5NywxMTMsMTQ1LDE3NywyMDksMjQxLDMwNSwzNjksNDk3LDc1MywxMjY1LDIyODksNDMzNyw4NDMzLDE2NjI1XSksZ2U9SW50MzJBcnJheS5mcm9tKFsyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDYsNiw3LDgsOSwxMCwxMSwxMiwxMywyNF0pLFBlPUludDE2QXJyYXkuZnJvbShbMCwwLDAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDcsOCw5LDEwLDEyLDE0LDI0XSksJGU9SW50MTZBcnJheS5mcm9tKFswLDAsMCwwLDAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDcsOCw5LDEwLDI0XSksYmU9bmV3IEludDE2QXJyYXkoMjgxNik7YShiZSk7dmFyIHZlPW5ldyBTKDEyMSwxNjcsNTApO0UodmUua2EsdmUubGEsdmUuamEsJyMgI3MgIywgI2UgIy4jIHRoZSAjLmNvbS8jXHhjMlx4YTAjIG9mICMgYW5kICMgaW4gIyB0byAjIiMiPiNcbiNdIyBmb3IgIyBhICMgdGhhdCAjLiAjIHdpdGggI1wnIyBmcm9tICMgYnkgIy4gVGhlICMgb24gIyBhcyAjIGlzICNpbmcgI1xuXHQjOiNlZCAjKCMgYXQgI2x5ICM9IiMgb2YgdGhlICMuIFRoaXMgIywjIG5vdCAjZXIgI2FsICM9XCcjZnVsICNpdmUgI2xlc3MgI2VzdCAjaXplICNvdXMgIycsIiAgICAgISEgISAsICAqISAgJiEgIFwiICEgICkgKiAgICogLSAgISAjICEgICMhKiEgICsgICwkICEgIC0gICUgIC4gIC8gIyAgIDAgIDEgLiAgXCIgICAyICAzISogICA0JSAgISAjIC8gICA1ICA2ICA3ICA4IDAgIDEgJiAgICQgICA5ICsgICA6ICA7ICA8ICcgICE9ICA+ICA/ISA0ICBAIDQgIDIgICYgICBBICojICggICBCICBDJiApICUgICkgISojICotJSBBICshICouICBEISAlJyAgJiBFICo2ICBGICBHJSAhICpBIColICBIISBEICBJISshICBKISsgICBLICstICo0ISBBICBMISo0ICBNICBOICs2ICBPISolICsuISBLICpHICBQICslKCAgISBHICpEICtEICBRICsjICpLISpHIStEISsjICtHICtBICs0ISslICtLISs0ISpEIStLISpLIik7dmFyIHllPW5ldyBJbnQzMkFycmF5KDIwNDgpO1YoeWUsIiAgICAgICAgICEhICAhICAgICAgICAgICAgICAgICAgXCIjJCMjJSMkJicjIygjKSMrKysrKysrKysrKCgmKicjIywtLS0sLS0tLC0tLS0tLC0tLS0tLC0tLS0tJiMnIyMjLi8vLy4vLy8uLy8vLy8uLy8vLy8uLy8vLy8mIycjICIsIkEvKiAgJzogICYgOiAkICBceDgxIEAiKTt2YXIgWGU9bmV3IEludDhBcnJheSgxMjI3ODQpO3JldHVybiBlZShYZSwndGltZWRvd25saWZlbGVmdGJhY2tjb2RlZGF0YXNob3dvbmx5c2l0ZWNpdHlvcGVuanVzdGxpa2VmcmVld29ya3RleHR5ZWFyb3ZlcmJvZHlsb3ZlZm9ybWJvb2twbGF5bGl2ZWxpbmVoZWxwaG9tZXNpZGVtb3Jld29yZGxvbmd0aGVtdmlld2ZpbmRwYWdlZGF5c2Z1bGxoZWFkdGVybWVhY2hhcmVhZnJvbXRydWVtYXJrYWJsZXVwb25oaWdoZGF0ZWxhbmRuZXdzZXZlbm5leHRjYXNlYm90aHBvc3R1c2VkbWFkZWhhbmRoZXJld2hhdG5hbWVMaW5rYmxvZ3NpemViYXNlaGVsZG1ha2VtYWludXNlclwnKSAraG9sZGVuZHN3aXRoTmV3c3JlYWR3ZXJlc2lnbnRha2VoYXZlZ2FtZXNlZW5jYWxscGF0aHdlbGxwbHVzbWVudWZpbG1wYXJ0am9pbnRoaXNsaXN0Z29vZG5lZWR3YXlzd2VzdGpvYnNtaW5kYWxzb2xvZ29yaWNodXNlc2xhc3R0ZWFtYXJteWZvb2RraW5nd2lsbGVhc3R3YXJkYmVzdGZpcmVQYWdla25vd2F3YXkucG5nbW92ZXRoYW5sb2FkZ2l2ZXNlbGZub3RlbXVjaGZlZWRtYW55cm9ja2ljb25vbmNlbG9va2hpZGVkaWVkSG9tZXJ1bGVob3N0YWpheGluZm9jbHVibGF3c2xlc3NoYWxmc29tZXN1Y2h6b25lMTAwJW9uZXNjYXJlVGltZXJhY2VibHVlZm91cndlZWtmYWNlaG9wZWdhdmVoYXJkbG9zdHdoZW5wYXJra2VwdHBhc3NzaGlwcm9vbUhUTUxwbGFuVHlwZWRvbmVzYXZla2VlcGZsYWdsaW5rc29sZGZpdmV0b29rcmF0ZXRvd25qdW1wdGh1c2RhcmtjYXJkZmlsZWZlYXJzdGF5a2lsbHRoYXRmYWxsYXV0b2V2ZXIuY29tdGFsa3Nob3B2b3RlZGVlcG1vZGVyZXN0dHVybmJvcm5iYW5kZmVsbHJvc2V1cmwoc2tpbnJvbGVjb21lYWN0c2FnZXNtZWV0Z29sZC5qcGdpdGVtdmFyeWZlbHR0aGVuc2VuZGRyb3BWaWV3Y29weTEuMCI8L2E+c3RvcGVsc2VsaWVzdG91cnBhY2suZ2lmcGFzdGNzcz9ncmF5bWVhbiZndDtyaWRlc2hvdGxhdGVzYWlkcm9hZHZhciBmZWVsam9obnJpY2twb3J0ZmFzdFwnVUEtZGVhZDwvYj5wb29yYmlsbHR5cGVVLlMud29vZG11c3QycHg7SW5mb3Jhbmt3aWRld2FudHdhbGxsZWFkWzBdO3BhdWx3YXZlc3VyZSQoXCcjd2FpdG1hc3Nhcm1zZ29lc2dhaW5sYW5ncGFpZCEtLSBsb2NrdW5pdHJvb3R3YWxrZmlybXdpZmV4bWwic29uZ3Rlc3QyMHB4a2luZHJvd3N0b29sZm9udG1haWxzYWZlc3Rhcm1hcHNjb3JlcmFpbmZsb3diYWJ5c3BhbnNheXM0cHg7NnB4O2FydHNmb290cmVhbHdpa2loZWF0c3RlcHRyaXBvcmcvbGFrZXdlYWt0b2xkRm9ybWNhc3RmYW5zYmFua3ZlcnlydW5zanVseXRhc2sxcHg7Z29hbGdyZXdzbG93ZWRnZWlkPSJzZXRzNXB4Oy5qcz80MHB4aWYgKHNvb25zZWF0bm9uZXR1YmV6ZXJvc2VudHJlZWRmYWN0aW50b2dpZnRoYXJtMThweGNhbWVoaWxsYm9sZHpvb212b2lkZWFzeXJpbmdmaWxscGVha2luaXRjb3N0M3B4O2phY2t0YWdzYml0c3JvbGxlZGl0a25ld25lYXI8IS0tZ3Jvd0pTT05kdXR5TmFtZXNhbGV5b3UgbG90c3BhaW5qYXp6Y29sZGV5ZXNmaXNod3d3LnJpc2t0YWJzcHJldjEwcHhyaXNlMjVweEJsdWVkaW5nMzAwLGJhbGxmb3JkZWFybndpbGRib3guZmFpcmxhY2t2ZXJzcGFpcmp1bmV0ZWNoaWYoIXBpY2tldmlsJCgiI3dhcm1sb3JkZG9lc3B1bGwsMDAwaWRlYWRyYXdodWdlc3BvdGZ1bmRidXJuaHJlZmNlbGxrZXlzdGlja2hvdXJsb3NzZnVlbDEycHhzdWl0ZGVhbFJTUyJhZ2VkZ3JleUdFVCJlYXNlYWltc2dpcmxhaWRzOHB4O25hdnlncmlkdGlwcyM5OTl3YXJzbGFkeWNhcnMpOyB9cGhwP2hlbGx0YWxsd2hvbXpoOmUqL1xyXG4gMTAwaGFsbC5cblxuQTdweDtwdXNoY2hhdDBweDtjcmV3Ki88L2hhc2g3NXB4ZmxhdHJhcmUgJiYgdGVsbGNhbXBvbnRvbGFpZG1pc3Nza2lwdGVudGZpbmVtYWxlZ2V0c3Bsb3Q0MDAsXHJcblxyXG5jb29sZmVldC5waHA8YnI+ZXJpY21vc3RndWlkYmVsbGRlc2NoYWlybWF0aGF0b20vaW1nJiM4Mmx1Y2tjZW50MDAwO3Rpbnlnb25laHRtbHNlbGxkcnVnRlJFRW5vZGVuaWNrP2lkPWxvc2VudWxsdmFzdHdpbmRSU1Mgd2VhcnJlbHliZWVuc2FtZWR1a2VuYXNhY2FwZXdpc2hndWxmVDIzOmhpdHNzbG90Z2F0ZWtpY2tibHVydGhleTE1cHhcJ1wnKTspOyI+bXNpZXdpbnNiaXJkc29ydGJldGFzZWVrVDE4Om9yZHN0cmVlbWFsbDYwcHhmYXJtYlwwXHgxOXNib3lzWzBdLlwnKTsiUE9TVGJlYXJraWRzKTt9fW1hcnl0ZW5kKFVLKXF1YWR6aDpmLXNpei0tLS1wcm9wXCcpO1xybGlmdFQxOTp2aWNlYW5keWRlYnQ+UlNTcG9vbG5lY2tibG93VDE2OmRvb3JldmFsVDE3OmxldHNmYWlsb3JhbHBvbGxub3ZhY29sc2dlbmUgYlwwXHgxNHNvZnRyb21ldGlsbHJvc3M8aDM+cG91cmZhZGVwaW5rPHRyPm1pbmkpfCEobWluZXpoOmhiYXJzaGVhcjAwKTttaWxrIC0tPmlyb25mcmVkZGlza3dlbnRzb2lscHV0cy9qcy9ob2x5VDIyOklTQk5UMjA6YWRhbXNlZXM8aDI+anNvblwnLCBcJ2NvbnRUMjE6IFJTU2xvb3Bhc2lhbW9vbjwvcD5zb3VsTElORWZvcnRjYXJ0VDE0OjxoMT44MHB4IS0tPDlweDtUMDQ6bWlrZTo0NlpuaWNlaW5jaFlvcmtyaWNlemg6ZFwnKSk7cHVyZW1hZ2VwYXJhdG9uZWJvbmQ6MzdaX29mX1wnXSk7MDAwLHpoOmd0YW5reWFyZGJvd2xidXNoOjU2WkphdmEzMHB4XG58fVxuJUMzJTozNFpqZWZmRVhQSWNhc2h2aXNhZ29sZnNub3d6aDppcXVlci5jc3NzaWNrbWVhdG1pbi5iaW5kZGVsbGhpcmVwaWNzcmVudDozNlpIVFRQLTIwMWZvdG93b2xmRU5EIHhib3g6NTRaQk9EWWRpY2s7XG59XG5leGl0OjM1WnZhcnNiZWF0XCd9KTtkaWV0OTk5O2FubmV9fTwvW2ldLkxhbmdrbUIyd2lyZXRveXNhZGRzc2VhbGFsZXg7XG5cdH1lY2hvbmluZS5vcmcwMDUpdG9ueWpld3NzYW5kbGVnc3Jvb2YwMDApIDIwMHdpbmVnZWFyZG9nc2Jvb3RnYXJ5Y3V0c3R5bGV0ZW1wdGlvbi54bWxjb2NrZ2FuZyQoXCcuNTBweFBoLkRtaXNjYWxhbmxvYW5kZXNrbWlsZXJ5YW51bml4ZGlzYyk7fVxuZHVzdGNsaXApLlxuXG43MHB4LTIwMERWRHM3XT48dGFwZWRlbW9pKyspd2FnZWV1cm9waGlsb3B0c2hvbGVGQVFzYXNpbi0yNlRsYWJzcGV0c1VSTCBidWxrY29vazt9XHJcbkhFQURbMF0pYWJicmp1YW4oMTk4bGVzaHR3aW48L2k+c29ueWd1eXNmdWNrcGlwZXwtXG4hMDAyKW5kb3dbMV07W107XG5Mb2cgc2FsdFxyXG5cdFx0YmFuZ3RyaW1iYXRoKXtcclxuMDBweFxufSk7a286bGZlZXNhZD5ccnM6Ly8gW107dG9sbHBsdWcoKXtcbntcclxuIC5qc1wnMjAwcGR1YWxib2F0LkpQRyk7XG59cXVvdCk7XG5cblwnKTtcblxyXG59XHIyMDE0MjAxNTIwMTYyMDE3MjAxODIwMTkyMDIwMjAyMTIwMjIyMDIzMjAyNDIwMjUyMDI2MjAyNzIwMjgyMDI5MjAzMDIwMzEyMDMyMjAzMzIwMzQyMDM1MjAzNjIwMzcyMDEzMjAxMjIwMTEyMDEwMjAwOTIwMDgyMDA3MjAwNjIwMDUyMDA0MjAwMzIwMDIyMDAxMjAwMDE5OTkxOTk4MTk5NzE5OTYxOTk1MTk5NDE5OTMxOTkyMTk5MTE5OTAxOTg5MTk4ODE5ODcxOTg2MTk4NTE5ODQxOTgzMTk4MjE5ODExOTgwMTk3OTE5NzgxOTc3MTk3NjE5NzUxOTc0MTk3MzE5NzIxOTcxMTk3MDE5NjkxOTY4MTk2NzE5NjYxOTY1MTk2NDE5NjMxOTYyMTk2MTE5NjAxOTU5MTk1ODE5NTcxOTU2MTk1NTE5NTQxOTUzMTk1MjE5NTExOTUwMTAwMDEwMjQxMzk0MDAwMDk5OTljb21vbUMhc2VzdGVlc3RhcGVyb3RvZG9oYWNlY2FkYWFDMW9iaWVuZEMtYWFzQy12aWRhY2Fzb290cm9mb3Jvc29sb290cmFjdWFsZGlqb3NpZG9ncmFudGlwb3RlbWFkZWJlYWxnb3F1Qyllc3RvbmFkYXRyZXNwb2NvY2FzYWJham90b2Rhc2lub2FndWFwdWVzdW5vc2FudGVkaWNlbHVpc2VsbGFtYXlvem9uYWFtb3JwaXNvb2JyYWNsaWNlbGxvZGlvc2hvcmFjYXNpUDdQMFA9UDBQPlA8UVwwUDBRXDBRXHgwM1FceDAyUDBQPVA1UD9QPlA+UVx4MDJQOFA3UD1QPlA0UD5RXHgwMlA+UDZQNVA+UD1QOFFceDA1UFx4MWRQMFA1UDVQMVFcdlA8UVx2UFx4MTJRXHZRXHgwMVA+UDJRXHZQMlA+UFx4MWRQPlA+UDFQXHgxZlA+UDtQOFA9UDhQIFAkUFx4MWRQNVBceDFjUVx2UVx4MDJRXHZQXHgxZVA9UDhQPFA0UDBQXHgxN1AwUFx4MTRQMFBceDFkUVx4MDNQXHgxZVAxUVx4MDJQNVBceDE4UDdQNVA5UD1RXHgwM1A8UDxQIlFcdlFceDAzUDZZXHgwMVlcblgjWVx4MDZZXHgwNVhcJ1lceDA1WDlZXHgwM1lceDA0WCNZXGJYMVgvWVxuWFwnWVx4MDFZXHRZXHgwN1lcYllceDA0WVx4MDVZXHgwNFlceDAzWFwnWVxiWVx4MDRZXHgwN1goWDNYXCdZXHgwNFglWVx4MDZZXHgwN1lcblgjWVxuWVx4MDJYL1lceDA3WVx4MDRYK1lceDA1WChZXHgwN1lceDA0WVxiWVx4MDRZXG5YKFlceDA0WFwnWVxuWChZXHgwM1g0WVxuWFwnWVx4MDVYI1lceDA1WVx4MDZYKlgoWVxuWVx4MDRZXHgwNlgtWChZXHgwN1lceDA1WVx4MDVYNFlcYlg0Zmlyc3R2aWRlb2xpZ2h0d29ybGRtZWRpYXdoaXRlY2xvc2VibGFja3JpZ2h0c21hbGxib29rc3BsYWNlbXVzaWNmaWVsZG9yZGVycG9pbnR2YWx1ZWxldmVsdGFibGVib2FyZGhvdXNlZ3JvdXB3b3Jrc3llYXJzc3RhdGV0b2RheXdhdGVyc3RhcnRzdHlsZWRlYXRocG93ZXJwaG9uZW5pZ2h0ZXJyb3JpbnB1dGFib3V0dGVybXN0aXRsZXRvb2xzZXZlbnRsb2NhbHRpbWVzbGFyZ2V3b3Jkc2dhbWVzc2hvcnRzcGFjZWZvY3VzY2xlYXJtb2RlbGJsb2NrZ3VpZGVyYWRpb3NoYXJld29tZW5hZ2Fpbm1vbmV5aW1hZ2VuYW1lc3lvdW5nbGluZXNsYXRlcmNvbG9yZ3JlZW5mcm9udCZhbXA7d2F0Y2hmb3JjZXByaWNlcnVsZXNiZWdpbmFmdGVydmlzaXRpc3N1ZWFyZWFzYmVsb3dpbmRleHRvdGFsaG91cnNsYWJlbHByaW50cHJlc3NidWlsdGxpbmtzc3BlZWRzdHVkeXRyYWRlZm91bmRzZW5zZXVuZGVyc2hvd25mb3Jtc3JhbmdlYWRkZWRzdGlsbG1vdmVkdGFrZW5hYm92ZWZsYXNoZml4ZWRvZnRlbm90aGVydmlld3NjaGVja2xlZ2Fscml2ZXJpdGVtc3F1aWNrc2hhcGVodW1hbmV4aXN0Z29pbmdtb3ZpZXRoaXJkYmFzaWNwZWFjZXN0YWdld2lkdGhsb2dpbmlkZWFzd3JvdGVwYWdlc3VzZXJzZHJpdmVzdG9yZWJyZWFrc291dGh2b2ljZXNpdGVzbW9udGh3aGVyZWJ1aWxkd2hpY2hlYXJ0aGZvcnVtdGhyZWVzcG9ydHBhcnR5Q2xpY2tsb3dlcmxpdmVzY2xhc3NsYXllcmVudHJ5c3Rvcnl1c2FnZXNvdW5kY291cnR5b3VyIGJpcnRocG9wdXB0eXBlc2FwcGx5SW1hZ2ViZWluZ3VwcGVybm90ZXNldmVyeXNob3dzbWVhbnNleHRyYW1hdGNodHJhY2trbm93bmVhcmx5YmVnYW5zdXBlcnBhcGVybm9ydGhsZWFybmdpdmVubmFtZWRlbmRlZFRlcm1zcGFydHNHcm91cGJyYW5kdXNpbmd3b21hbmZhbHNlcmVhZHlhdWRpb3Rha2Vzd2hpbGUuY29tL2xpdmVkY2FzZXNkYWlseWNoaWxkZ3JlYXRqdWRnZXRob3NldW5pdHNuZXZlcmJyb2FkY29hc3Rjb3ZlcmFwcGxlZmlsZXNjeWNsZXNjZW5lcGxhbnNjbGlja3dyaXRlcXVlZW5waWVjZWVtYWlsZnJhbWVvbGRlcnBob3RvbGltaXRjYWNoZWNpdmlsc2NhbGVlbnRlcnRoZW1ldGhlcmV0b3VjaGJvdW5kcm95YWxhc2tlZHdob2xlc2luY2VzdG9jayBuYW1lZmFpdGhoZWFydGVtcHR5b2ZmZXJzY29wZW93bmVkbWlnaHRhbGJ1bXRoaW5rYmxvb2RhcnJheW1ham9ydHJ1c3RjYW5vbnVuaW9uY291bnR2YWxpZHN0b25lU3R5bGVMb2dpbmhhcHB5b2NjdXJsZWZ0OmZyZXNocXVpdGVmaWxtc2dyYWRlbmVlZHN1cmJhbmZpZ2h0YmFzaXNob3ZlcmF1dG87cm91dGUuaHRtbG1peGVkZmluYWxZb3VyIHNsaWRldG9waWNicm93bmFsb25lZHJhd25zcGxpdHJlYWNoUmlnaHRkYXRlc21hcmNocXVvdGVnb29kc0xpbmtzZG91YnRhc3luY3RodW1iYWxsb3djaGllZnlvdXRobm92ZWwxMHB4O3NlcnZldW50aWxoYW5kc0NoZWNrU3BhY2VxdWVyeWphbWVzZXF1YWx0d2ljZTAsMDAwU3RhcnRwYW5lbHNvbmdzcm91bmRlaWdodHNoaWZ0d29ydGhwb3N0c2xlYWRzd2Vla3Nhdm9pZHRoZXNlbWlsZXNwbGFuZXNtYXJ0YWxwaGFwbGFudG1hcmtzcmF0ZXNwbGF5c2NsYWltc2FsZXN0ZXh0c3N0YXJzd3Jvbmc8L2gzPnRoaW5nLm9yZy9tdWx0aWhlYXJkUG93ZXJzdGFuZHRva2Vuc29saWQodGhpc2JyaW5nc2hpcHNzdGFmZnRyaWVkY2FsbHNmdWxseWZhY3RzYWdlbnRUaGlzIC8vLS0+YWRtaW5lZ3lwdEV2ZW50MTVweDtFbWFpbHRydWUiY3Jvc3NzcGVudGJsb2dzYm94Ij5ub3RlZGxlYXZlY2hpbmFzaXplc2d1ZXN0PC9oND5yb2JvdGhlYXZ5dHJ1ZSxzZXZlbmdyYW5kY3JpbWVzaWduc2F3YXJlZGFuY2VwaGFzZT48IS0tZW5fVVMmIzM5OzIwMHB4X25hbWVsYXRpbmVuam95YWpheC5hdGlvbnNtaXRoVS5TLiBob2xkc3BldGVyaW5kaWFuYXYiPmNoYWluc2NvcmVjb21lc2RvaW5ncHJpb3JTaGFyZTE5OTBzcm9tYW5saXN0c2phcGFuZmFsbHN0cmlhbG93bmVyYWdyZWU8L2gyPmFidXNlYWxlcnRvcGVyYSItLy9XY2FyZHNoaWxsc3RlYW1zUGhvdG90cnV0aGNsZWFuLnBocD9zYWludG1ldGFsbG91aXNtZWFudHByb29mYnJpZWZyb3ciPmdlbnJldHJ1Y2tsb29rc1ZhbHVlRnJhbWUubmV0Ly0tPlxuPHRyeSB7XG52YXIgbWFrZXNjb3N0c3BsYWluYWR1bHRxdWVzdHRyYWlubGFib3JoZWxwc2NhdXNlbWFnaWNtb3RvcnRoZWlyMjUwcHhsZWFzdHN0ZXBzQ291bnRjb3VsZGdsYXNzc2lkZXNmdW5kc2hvdGVsYXdhcmRtb3V0aG1vdmVzcGFyaXNnaXZlc2R1dGNodGV4YXNmcnVpdG51bGwsfHxbXTt0b3AiPlxuPCEtLVBPU1Qib2NlYW48YnIvPmZsb29yc3BlYWtkZXB0aCBzaXplYmFua3NjYXRjaGNoYXJ0MjBweDthbGlnbmRlYWxzd291bGQ1MHB4O3VybD0icGFya3Ntb3VzZU1vc3QgLi4uPC9hbW9uZ2JyYWluYm9keSBub25lO2Jhc2VkY2FycnlkcmFmdHJlZmVycGFnZV9ob21lLm1ldGVyZGVsYXlkcmVhbXByb3Zlam9pbnQ8L3RyPmRydWdzPCEtLSBhcHJpbGlkZWFsYWxsZW5leGFjdGZvcnRoY29kZXNsb2dpY1ZpZXcgc2VlbXNibGFua3BvcnRzICgyMDBzYXZlZF9saW5rZ29hbHNncmFudGdyZWVraG9tZXNyaW5nc3JhdGVkMzBweDt3aG9zZXBhcnNlKCk7IiBCbG9ja2xpbnV4am9uZXNwaXhlbFwnKTsiPik7aWYoLWxlZnRkYXZpZGhvcnNlRm9jdXNyYWlzZWJveGVzVHJhY2tlbWVudDwvZW0+YmFyIj4uc3JjPXRvd2VyYWx0PSJjYWJsZWhlbnJ5MjRweDtzZXR1cGl0YWx5c2hhcnBtaW5vcnRhc3Rld2FudHN0aGlzLnJlc2V0d2hlZWxnaXJscy9jc3MvMTAwJTtjbHVic3N0dWZmYmlibGV2b3RlcyAxMDAwa29yZWF9KTtcclxuYmFuZHNxdWV1ZT0ge307ODBweDtja2luZ3tcclxuXHRcdGFoZWFkY2xvY2tpcmlzaGxpa2UgcmF0aW9zdGF0c0Zvcm0ieWFob28pWzBdO0Fib3V0ZmluZHM8L2gxPmRlYnVndGFza3NVUkwgPWNlbGxzfSkoKTsxMnB4O3ByaW1ldGVsbHN0dXJuczB4NjAwLmpwZyJzcGFpbmJlYWNodGF4ZXNtaWNyb2FuZ2VsLS0+PC9naWZ0c3N0ZXZlLWxpbmtib2R5Ln0pO1xuXHRtb3VudCAoMTk5RkFRPC9yb2dlcmZyYW5rQ2xhc3MyOHB4O2ZlZWRzPGgxPjxzY290dHRlc3RzMjJweDtkcmluaykgfHwgbGV3aXNzaGFsbCMwMzk7IGZvciBsb3ZlZHdhc3RlMDBweDtqYTpjXHgwMnNpbW9uPGZvbnRyZXBseW1lZXRzdW50ZXJjaGVhcHRpZ2h0QnJhbmQpICE9IGRyZXNzY2xpcHNyb29tc29ua2V5bW9iaWxtYWluLk5hbWUgcGxhdGVmdW5ueXRyZWVzY29tLyIxLmpwZ3dtb2RlcGFyYW1TVEFSVGxlZnQgaWRkZW4sIDIwMSk7XG59XG5mb3JtLnZpcnVzY2hhaXJ0cmFuc3dvcnN0UGFnZXNpdGlvbnBhdGNoPCEtLVxuby1jYWNmaXJtc3RvdXJzLDAwMCBhc2lhbmkrKyl7YWRvYmVcJylbMF1pZD0xMGJvdGg7bWVudSAuMi5taS5wbmcia2V2aW5jb2FjaENoaWxkYnJ1Y2UyLmpwZ1VSTCkrLmpwZ3xzdWl0ZXNsaWNlaGFycnkxMjAiIHN3ZWV0dHI+XHJcbm5hbWU9ZGllZ29wYWdlIHN3aXNzLS0+XG5cbiNmZmY7Ij5Mb2cuY29tInRyZWF0c2hlZXQpICYmIDE0cHg7c2xlZXBudGVudGZpbGVkamE6Y1x4MDNpZD0iY05hbWUid29yc2VzaG90cy1ib3gtZGVsdGFcbiZsdDtiZWFyczo0OFo8ZGF0YS1ydXJhbDwvYT4gc3BlbmRiYWtlcnNob3BzPSAiIjtwaHAiPmN0aW9uMTNweDticmlhbmhlbGxvc2l6ZT1vPSUyRiBqb2lubWF5YmU8aW1nIGltZyI+LCBmanNpbWciICIpWzBdTVRvcEJUeXBlIm5ld2x5RGFuc2tjemVjaHRyYWlsa25vd3M8L2g1PmZhcSI+emgtY24xMCk7XG4tMSIpO3R5cGU9Ymx1ZXN0cnVseWRhdmlzLmpzXCc7PlxyXG48IXN0ZWVsIHlvdSBoMj5cclxuZm9ybSBqZXN1czEwMCUgbWVudS5cclxuXHRcclxud2FsZXNyaXNrc3VtZW50ZGRpbmdiLWxpa3RlYWNoZ2lmIiB2ZWdhc2RhbnNrZWVzdGlzaHFpcHN1b21pc29icmVkZXNkZWVudHJldG9kb3NwdWVkZWFDMW9zZXN0QyF0aWVuZWhhc3Rhb3Ryb3NwYXJ0ZWRvbmRlbnVldm9oYWNlcmZvcm1hbWlzbW9tZWpvcm11bmRvYXF1Qy1kQy1hc3NDM2xvYXl1ZGFmZWNoYXRvZGFzdGFudG9tZW5vc2RhdG9zb3RyYXNzaXRpb211Y2hvYWhvcmFsdWdhcm1heW9yZXN0b3Nob3Jhc3RlbmVyYW50ZXNmb3Rvc2VzdGFzcGFDLXNudWV2YXNhbHVkZm9yb3NtZWRpb3F1aWVubWVzZXNwb2RlcmNoaWxlc2VyQyF2ZWNlc2RlY2lyam9zQyllc3RhcnZlbnRhZ3J1cG9oZWNob2VsbG9zdGVuZ29hbWlnb2Nvc2Fzbml2ZWxnZW50ZW1pc21hYWlyZXNqdWxpb3RlbWFzaGFjaWFmYXZvcmp1bmlvbGlicmVwdW50b2J1ZW5vYXV0b3JhYnJpbGJ1ZW5hdGV4dG9tYXJ6b3NhYmVybGlzdGFsdWVnb2NDM21vZW5lcm9qdWVnb3BlckM6aGFiZXJlc3RveW51bmNhbXVqZXJ2YWxvcmZ1ZXJhbGlicm9ndXN0YWlndWFsdm90b3NjYXNvc2d1Qy1hcHVlZG9zb21vc2F2aXNvdXN0ZWRkZWJlbm5vY2hlYnVzY2FmYWx0YWV1cm9zc2VyaWVkaWNob2N1cnNvY2xhdmVjYXNhc2xlQzNucGxhem9sYXJnb29icmFzdmlzdGFhcG95b2p1bnRvdHJhdGF2aXN0b2NyZWFyY2FtcG9oZW1vc2NpbmNvY2FyZ29waXNvc29yZGVuaGFjZW5DIXJlYWRpc2NvcGVkcm9jZXJjYXB1ZWRhcGFwZWxtZW5vckM6dGlsY2xhcm9qb3JnZWNhbGxlcG9uZXJ0YXJkZW5hZGllbWFyY2FzaWd1ZWVsbGFzc2lnbG9jb2NoZW1vdG9zbWFkcmVjbGFzZXJlc3RvbmlDMW9xdWVkYXBhc2FyYmFuY29oaWpvc3ZpYWplcGFibG9DKXN0ZXZpZW5lcmVpbm9kZWphcmZvbmRvY2FuYWxub3J0ZWxldHJhY2F1c2F0b21hcm1hbm9zbHVuZXNhdXRvc3ZpbGxhdmVuZG9wZXNhcnRpcG9zdGVuZ2FtYXJjb2xsZXZhcGFkcmV1bmlkb3ZhbW9zem9uYXNhbWJvc2JhbmRhbWFyaWFhYnVzb211Y2hhc3ViaXJyaW9qYXZpdmlyZ3JhZG9jaGljYWFsbEMtam92ZW5kaWNoYWVzdGFudGFsZXNzYWxpcnN1ZWxvcGVzb3NmaW5lc2xsYW1hYnVzY29DKXN0YWxsZWdhbmVncm9wbGF6YWh1bW9ycGFnYXJqdW50YWRvYmxlaXNsYXNib2xzYWJhQzFvaGFibGFsdWNoYUNceDAxcmVhZGljZW5qdWdhcm5vdGFzdmFsbGVhbGxDIWNhcmdhZG9sb3JhYmFqb2VzdEMpZ3VzdG9tZW50ZW1hcmlvZmlybWFjb3N0b2ZpY2hhcGxhdGFob2dhcmFydGVzbGV5ZXNhcXVlbG11c2VvYmFzZXNwb2Nvc21pdGFkY2llbG9jaGljb21pZWRvZ2FuYXJzYW50b2V0YXBhZGViZXNwbGF5YXJlZGVzc2lldGVjb3J0ZWNvcmVhZHVkYXNkZXNlb3ZpZWpvZGVzZWFhZ3VhcyZxdW90O2RvbWFpbmNvbW1vbnN0YXR1c2V2ZW50c21hc3RlcnN5c3RlbWFjdGlvbmJhbm5lcnJlbW92ZXNjcm9sbHVwZGF0ZWdsb2JhbG1lZGl1bWZpbHRlcm51bWJlcmNoYW5nZXJlc3VsdHB1YmxpY3NjcmVlbmNob29zZW5vcm1hbHRyYXZlbGlzc3Vlc3NvdXJjZXRhcmdldHNwcmluZ21vZHVsZW1vYmlsZXN3aXRjaHBob3Rvc2JvcmRlcnJlZ2lvbml0c2VsZnNvY2lhbGFjdGl2ZWNvbHVtbnJlY29yZGZvbGxvd3RpdGxlPmVpdGhlcmxlbmd0aGZhbWlseWZyaWVuZGxheW91dGF1dGhvcmNyZWF0ZXJldmlld3N1bW1lcnNlcnZlcnBsYXllZHBsYXllcmV4cGFuZHBvbGljeWZvcm1hdGRvdWJsZXBvaW50c3Nlcmllc3BlcnNvbmxpdmluZ2Rlc2lnbm1vbnRoc2ZvcmNlc3VuaXF1ZXdlaWdodHBlb3BsZWVuZXJneW5hdHVyZXNlYXJjaGZpZ3VyZWhhdmluZ2N1c3RvbW9mZnNldGxldHRlcndpbmRvd3N1Ym1pdHJlbmRlcmdyb3Vwc3VwbG9hZGhlYWx0aG1ldGhvZHZpZGVvc3NjaG9vbGZ1dHVyZXNoYWRvd2RlYmF0ZXZhbHVlc09iamVjdG90aGVyc3JpZ2h0c2xlYWd1ZWNocm9tZXNpbXBsZW5vdGljZXNoYXJlZGVuZGluZ3NlYXNvbnJlcG9ydG9ubGluZXNxdWFyZWJ1dHRvbmltYWdlc2VuYWJsZW1vdmluZ2xhdGVzdHdpbnRlckZyYW5jZXBlcmlvZHN0cm9uZ3JlcGVhdExvbmRvbmRldGFpbGZvcm1lZGRlbWFuZHNlY3VyZXBhc3NlZHRvZ2dsZXBsYWNlc2RldmljZXN0YXRpY2NpdGllc3N0cmVhbXllbGxvd2F0dGFja3N0cmVldGZsaWdodGhpZGRlbmluZm8iPm9wZW5lZHVzZWZ1bHZhbGxleWNhdXNlc2xlYWRlcnNlY3JldHNlY29uZGRhbWFnZXNwb3J0c2V4Y2VwdHJhdGluZ3NpZ25lZHRoaW5nc2VmZmVjdGZpZWxkc3N0YXRlc29mZmljZXZpc3VhbGVkaXRvcnZvbHVtZVJlcG9ydG11c2V1bW1vdmllc3BhcmVudGFjY2Vzc21vc3RseW1vdGhlciIgaWQ9Im1hcmtldGdyb3VuZGNoYW5jZXN1cnZleWJlZm9yZXN5bWJvbG1vbWVudHNwZWVjaG1vdGlvbmluc2lkZW1hdHRlckNlbnRlcm9iamVjdGV4aXN0c21pZGRsZUV1cm9wZWdyb3d0aGxlZ2FjeW1hbm5lcmVub3VnaGNhcmVlcmFuc3dlcm9yaWdpbnBvcnRhbGNsaWVudHNlbGVjdHJhbmRvbWNsb3NlZHRvcGljc2NvbWluZ2ZhdGhlcm9wdGlvbnNpbXBseXJhaXNlZGVzY2FwZWNob3NlbmNodXJjaGRlZmluZXJlYXNvbmNvcm5lcm91dHB1dG1lbW9yeWlmcmFtZXBvbGljZW1vZGVsc051bWJlcmR1cmluZ29mZmVyc3N0eWxlc2tpbGxlZGxpc3RlZGNhbGxlZHNpbHZlcm1hcmdpbmRlbGV0ZWJldHRlcmJyb3dzZWxpbWl0c0dsb2JhbHNpbmdsZXdpZGdldGNlbnRlcmJ1ZGdldG5vd3JhcGNyZWRpdGNsYWltc2VuZ2luZXNhZmV0eWNob2ljZXNwaXJpdC1zdHlsZXNwcmVhZG1ha2luZ25lZWRlZHJ1c3NpYXBsZWFzZWV4dGVudFNjcmlwdGJyb2tlbmFsbG93c2NoYXJnZWRpdmlkZWZhY3Rvcm1lbWJlci1iYXNlZHRoZW9yeWNvbmZpZ2Fyb3VuZHdvcmtlZGhlbHBlZENodXJjaGltcGFjdHNob3VsZGFsd2F5c2xvZ28iIGJvdHRvbWxpc3QiPil7dmFyIHByZWZpeG9yYW5nZUhlYWRlci5wdXNoKGNvdXBsZWdhcmRlbmJyaWRnZWxhdW5jaFJldmlld3Rha2luZ3Zpc2lvbmxpdHRsZWRhdGluZ0J1dHRvbmJlYXV0eXRoZW1lc2ZvcmdvdFNlYXJjaGFuY2hvcmFsbW9zdGxvYWRlZENoYW5nZXJldHVybnN0cmluZ3JlbG9hZE1vYmlsZWluY29tZXN1cHBseVNvdXJjZW9yZGVyc3ZpZXdlZCZuYnNwO2NvdXJzZUFib3V0IGlzbGFuZDxodG1sIGNvb2tpZW5hbWU9ImFtYXpvbm1vZGVybmFkdmljZWluPC9hPjogVGhlIGRpYWxvZ2hvdXNlc0JFR0lOIE1leGljb3N0YXJ0c2NlbnRyZWhlaWdodGFkZGluZ0lzbGFuZGFzc2V0c0VtcGlyZVNjaG9vbGVmZm9ydGRpcmVjdG5lYXJseW1hbnVhbFNlbGVjdC5cblxuT25lam9pbmVkbWVudSI+UGhpbGlwYXdhcmRzaGFuZGxlaW1wb3J0T2ZmaWNlcmVnYXJkc2tpbGxzbmF0aW9uU3BvcnRzZGVncmVld2Vla2x5IChlLmcuYmVoaW5kZG9jdG9ybG9nZ2VkdW5pdGVkPC9iPjwvYmVnaW5zcGxhbnRzYXNzaXN0YXJ0aXN0aXNzdWVkMzAwcHh8Y2FuYWRhYWdlbmN5c2NoZW1lcmVtYWluQnJhemlsc2FtcGxlbG9nbyI+YmV5b25kLXNjYWxlYWNjZXB0c2VydmVkbWFyaW5lRm9vdGVyY2FtZXJhPC9oMT5cbl9mb3JtImxlYXZlc3N0cmVzcyIgLz5cclxuLmdpZiIgb25sb2FkbG9hZGVyT3hmb3Jkc2lzdGVyc3Vydml2bGlzdGVuZmVtYWxlRGVzaWduc2l6ZT0iYXBwZWFsdGV4dCI+bGV2ZWxzdGhhbmtzaGlnaGVyZm9yY2VkYW5pbWFsYW55b25lQWZyaWNhYWdyZWVkcmVjZW50UGVvcGxlPGJyIC8+d29uZGVycHJpY2VzdHVybmVkfHwge307bWFpbiI+aW5saW5lc3VuZGF5d3JhcCI+ZmFpbGVkY2Vuc3VzbWludXRlYmVhY29ucXVvdGVzMTUwcHh8ZXN0YXRlcmVtb3RlZW1haWwibGlua2VkcmlnaHQ7c2lnbmFsZm9ybWFsMS5odG1sc2lnbnVwcHJpbmNlZmxvYXQ6LnBuZyIgZm9ydW0uQWNjZXNzcGFwZXJzc291bmRzZXh0ZW5kSGVpZ2h0c2xpZGVyVVRGLTgiJmFtcDsgQmVmb3JlLiBXaXRoc3R1ZGlvb3duZXJzbWFuYWdlcHJvZml0alF1ZXJ5YW5udWFscGFyYW1zYm91Z2h0ZmFtb3VzZ29vZ2xlbG9uZ2VyaSsrKSB7aXNyYWVsc2F5aW5nZGVjaWRlaG9tZSI+aGVhZGVyZW5zdXJlYnJhbmNocGllY2VzYmxvY2s7c3RhdGVkdG9wIj48cmFjaW5ncmVzaXplLS0mZ3Q7cGFjaXR5c2V4dWFsYnVyZWF1LmpwZyIgMTAsMDAwb2J0YWludGl0bGVzYW1vdW50LCBJbmMuY29tZWR5bWVudSIgbHlyaWNzdG9kYXkuaW5kZWVkY291bnR5X2xvZ28uRmFtaWx5bG9va2VkTWFya2V0bHNlIGlmUGxheWVydHVya2V5KTt2YXIgZm9yZXN0Z2l2aW5nZXJyb3JzRG9tYWlufWVsc2V7aW5zZXJ0QmxvZzwvZm9vdGVybG9naW4uZmFzdGVyYWdlbnRzPGJvZHkgMTBweCAwcHJhZ21hZnJpZGF5anVuaW9yZG9sbGFycGxhY2VkY292ZXJzcGx1Z2luNSwwMDAgcGFnZSI+Ym9zdG9uLnRlc3QoYXZhdGFydGVzdGVkX2NvdW50Zm9ydW1zc2NoZW1haW5kZXgsZmlsbGVkc2hhcmVzcmVhZGVyYWxlcnQoYXBwZWFyU3VibWl0bGluZSI+Ym9keSI+XG4qIFRoZVRob3VnaHNlZWluZ2plcnNleU5ld3M8L3ZlcmlmeWV4cGVydGluanVyeXdpZHRoPUNvb2tpZVNUQVJUIGFjcm9zc19pbWFnZXRocmVhZG5hdGl2ZXBvY2tldGJveCI+XG5TeXN0ZW0gRGF2aWRjYW5jZXJ0YWJsZXNwcm92ZWRBcHJpbCByZWFsbHlkcml2ZXJpdGVtIj5tb3JlIj5ib2FyZHNjb2xvcnNjYW1wdXNmaXJzdCB8fCBbXTttZWRpYS5ndWl0YXJmaW5pc2h3aWR0aDpzaG93ZWRPdGhlciAucGhwIiBhc3N1bWVsYXllcnN3aWxzb25zdG9yZXNyZWxpZWZzd2VkZW5DdXN0b21lYXNpbHkgeW91ciBTdHJpbmdcblxuV2hpbHRheWxvcmNsZWFyOnJlc29ydGZyZW5jaHRob3VnaCIpICsgIjxib2R5PmJ1eWluZ2JyYW5kc01lbWJlcm5hbWUiPm9wcGluZ3NlY3RvcjVweDsiPnZzcGFjZXBvc3Rlcm1ham9yIGNvZmZlZW1hcnRpbm1hdHVyZWhhcHBlbjwvbmF2PmthbnNhc2xpbmsiPkltYWdlcz1mYWxzZXdoaWxlIGhzcGFjZTAmYW1wOyBcblxuSW4gIHBvd2VyUG9sc2tpLWNvbG9yam9yZGFuQm90dG9tU3RhcnQgLWNvdW50Mi5odG1sbmV3cyI+MDEuanBnT25saW5lLXJpZ2h0bWlsbGVyc2VuaW9ySVNCTiAwMCwwMDAgZ3VpZGVzdmFsdWUpZWN0aW9ucmVwYWlyLnhtbCIgIHJpZ2h0cy5odG1sLWJsb2NrcmVnRXhwOmhvdmVyd2l0aGludmlyZ2lucGhvbmVzPC90cj5ccnVzaW5nIFxuXHR2YXIgPlwnKTtcblx0PC90ZD5cbjwvdHI+XG5iYWhhc2FicmFzaWxnYWxlZ29tYWd5YXJwb2xza2lzcnBza2lYMVgvWVxiZDgtZlx4MTZceDA3Zy5cMGQ9XHgxM2c5XHgwMWkrXHgxNGQ/IWZceDAxL2Q4LWVceDFiPWZcYlx4MTFkOyxkOFwwZDgqZVx4MDUsZVx4MGY4Zy4hZ1x4MTBceDA2aC46ZVx4MWRceDFiZVx4MGYvZDslZlx4MWNccmVcbiFmXHgxNzZpXHgxNzRkOCpkOjpkOlwnZVx4MTNceDAxaFx4MDcqZTcxZDxceDAxZDhceDFhZlx4MWYlZ1x4MWNcdmU3JWQ9XHgxY2hceDAxXHgxNGczO2YyIWZceDFjXHRnPVx4MTFnK1x4MTlmXHRcMGZceDFjXHRoL1x4MDRoLjpkOC1lP1x4MDNmXHgxNlx4MDdnKyBnXHgxNChmXGI3aSZceDE2aSE1ZD1ceDFjaFwwXHgwNWZcblwwZlx4MWMvaVx4MTcuaSJceDE4Z1x4MWI4ZVx4MDUzZDhcdmg9PWZceDEwXHgxY2c0ImQ9P2dceDE0KGg9L2Q7NmVceDFjKGc6P2Q4O2kiXHgxOGg1XHgwNGZceDE2XHgxOWhcJ1x4MDZpIlx4MTFlXHgxYlx4MWVlJFxyZjMoZVx4MDZcZmc9XHgxMWc7XHgxY2ZceDE0NmhceDE3XHgwZmVceDA2XHgwNWUuOWZceDBlKGhcclx4MTBlOFx4MDJlXHgxYzpmNlxiZlx4MDEvZyk6aVx4MTc0ZVx4MGZceDExZThceDAzZDtcMGQ5XGJlJT1lXHgwZlx2Z1x4MTRceDFmZjQ7ZVx4MWI+Z1x0XHgwN2VceDBmXHgxMWUxXHgxNWUmXHgwMmZceDFlXHgxY2ZcdFx2Zlx4MWM6Zlx4MTYwaVx4MTc7Zlx4MWNcMGZceDE2MGZceDE2OWU8XHgwZmVcZlx4MTdkOixmXHgwZlx4MTBkPlx4MWJlXHgwNTNkOlx4MGVmXHgxYjRlJFx4MWFoP1x4MTlkOCpnMztnO1x4MWZnXHgxZiVpXHgwMVx4MTNmODhmXGJceDBmZTk/ZVx4MTFcbmVceDA1NmQ7XHgxNmVceDBmXHgxMWghKGUuXHRlXHgwNShnLCxkOFwwZDxceDFhZVx4MTFceDE4aD9ceDFiaCFcZmdceDAyOWVceDA3O2dcdFxiZlx4MWRceDAzZ1x4MTQ1ZS1ceDEwZDhceDE2Z1x4MTVcZmguPmguIWVceDA1XHJoNDlmXHgxNVx4MTloXHgwMjJlXG4gZVx4MDUlZjQ7ZVxuKGQ7XHgxNmQ7LGVceDE1XHgwNmVceDEzXHgwMWVcclx4MWFlLiJnXHgwZTBlXHgxYyhkOFxuZjU3ZSZceDAyZD1ceDE1ZTcyZztceDBmZ1x4MTVceDE5aChcMGgvJmc7XHgwNmckPmVcZjpnXHgxOTtlPVx4MTVmXHgxYyxnK1x4MTlpXHgxY1wwaCZceDAxZDs3ZiA8Zlx4MTQvZlxmXHgwMWVceDFiPWlceDE5XHgwNWlceDEzPmZceDBlJWVceDFiPWUuNmU7OmguPmZceDFjXHZlXHgwZlx2aVx4MThceDA1aC87ZjNceDE1ZT5cdmQ9XHJnPS5nO1x4MGZmNVx4MGVpXDBcdGZcdiloP1x4MTlmIDdlPVx4MTNlXHRccmVcYlx4MDZnMTtmXHgwZVx4MTJoIVxmZVx4MWIgZDg6ZDokZlx4MThceDEzZlx4MWNcMGVceDEwXHgwZWlceDFmM2Q5XHgxMGQ4XHJoXHgwMz1pXDBceDFhaD9ceDA3aCFcZmQ4XHgxYWdcJ1x4MTFmXG5cMGVceDBmL2hceDAzPWguPmUkXHgwN2VceDEwXGJkPVx4MWNlJFwnZS42ZyQ+ZDxceDFhZyBceDE0Zyk2ZDhceDEzZDhceDFhZVx4MDUoaVx4MDMoaSE5Z1x4MWIuaD9ceDE5aVx4MDdcZmg/XHgxOGZceDE4L2U8XDBlXCdcdmZceDAzXHgwNWVceDA2NWdceDE0NWhceDA0XHgxMWZceDE2XHgwN2Q7NmVceDEzXHgwMWdcdFxmZTguZVxuKWZceDE2XHgwN2VcZlx4MTZoNVx4MDRmOlx4MTBlJFwnZS0mZS0mZDkgZVx4MWMwZVx4MWRcMGY1XHgwZmhcJ1xiZlxuXHgxNWg1XHgwNGU3JWcoXHZoJlx4MDFmMVx4MDJmXDBceDBlZDlcYmZceDE3NmVcMFx4MTllXG5ceDFmaFx4MDM9ZDg7aCZceDAxZ1x4MWIuZVx0XHJoNVx4MDRoLi9lXHgxZlx4MGVlOFx4MDJmXHgxNjlmM1x4MTVnXHgxNDVlPTFmXHZceDFiaFx4MDFceDE4ZSMwZlx4MThceDBlZDs7ZD1ceDE1ZVx4MDElZTo3Zlx4MTUwZlxyLmc+XHgwZWVceDFiPWYxPWg9JmQ7XHZnO1xyZD1ceDA2Zlx4MTgvZDokZjVceDAxZ1x4MTRceDFmZDpcJ2ZcdFwwZDslZ1x4MTQ1aC9ceDFkZlx4MTg+ZyQ6ZDhcMGQ6XHgxYmVcclx4MTVkPVxyZDo6ZVx4MTFceDE4ZVxiXHgwNmZceDFlXHgxMGVceDFjMGVceDFiPmZceDE3XHgwNWY4OGU3JWVceDA1N2UtJmdceDE0XHgxZmczO2VcYlx4MTdnPVx4MTFlXHgwZlx2ZThceDE2ZS1ceDEwZS9ceDA2ZyBceDAxaSJceDExaVx4MDFceDEzZlx4MGVcJ2VcYjZlXHgxYzBlXGY6ZVx4MWY6Zlx4MWMsZVx4MDUoZVx4MWI9Zz1ceDExZDhcbmlceDA3XHJoJlx4MDFnLCxkOlxmZVx4MTZceDFjZiwiaD9ceDFiZVx4MDUlZVx4MGZcdmZceDAzXHgwNWg/XHgxOWQ6XHgxYmhcMFx4MDNoL1x4MTVlXHgwZlx4MTFnXHgwZTBlXHgxZjloLi1kOyVkOFxuZlx4MTQ/ZTpceDFjZlxiXHgxMGQ4OmdceDBlL2UiXHgwM2kmXHgxOWY4L2VceDEwXGZmXHgxNzZlKDFkOVx4MTBlXHgwZlx4MTFpXDBceDAxZDhcMGUuXHgxYWU8XDBlXHgwZlx4MTFkPVx4MWNlXHgxM1x4MDFmIFx4MDdlXHgwN1x4MDZmLCJoP1x4MGVoXCcjZVx4MDYzZVx4MWMwZlx4MTY5ZDhcMGQ4XHZkOyVlXHgwZlxuaDQjZDs7ZlxiXHgxNmhcMFx4MDVlLiJmXGI3ZDsjaCEoZ1wnL2VcYlx4MDZlJTNkOjpmXHgxNTBnIFx4MDFpXHgxNFwwZVx4MTQuZVx4MDc6Z1x4MGUwZyY7Zzo/ZTpceDE0Z1x4MTQoZVxiXHgxN2ghKGQ4XHJlXHgxMFxmZzxceDE2aD5ceDExZztceDFmaC4hZlx4MWYlaC8iZDhccmgmXHgwMWZceDFjXHRlXHgwNTNmXHgxYzpmXHgxZVx4MDRlPlxiZSRceDFhZlx4MTItZlx4MTQ+ZztceDA0ZztceDA3Zlx4MTQ/Zy1ceDE2Z1x4MWI0Zlx4MGUlaFx4MDM9ZVxuXHgxYmZceDFkJWY6XHgxMGZceDE5XHgwMmlceDE2XHgxM2dceDFjXHZlXGIwZ1x4MDMtaVx4MTcoZVx4MDUzaVx4MTQuZDhceDEzZVxmOmlceDFkXHgxZWU4OGhcdjFoLy1nXHgxOT5lOiZlOFxmZlx4MWNceDFiZz5ceDBlZSUzZi9ceDE0aD5ceDAzZ1x4MWYlaC9ceDA2aFwnXHgwNGUuXHgxYWU7OmguLmlceDAzKGlceDE3KGZceDA0XHgwZmhcJ1x4MDFnMj5lPSlmXHgxNyVmXHgxYyxmXHgwZlx4MTBpK1x4MThlXHgwZlx4MTFoKFwwZlx4MTY5aVx4MWQiZVx4MWY6aVx4MDdceDExZSRceDA0Z1x4MTBceDA2Zlx4MWRceDAzaVx4MTlceDEwZT0xZ1x0XHgwN2lceDEzNmghXGZoP1x4MThmXHgxY1x0ZVxiXHgwNmQ6K2dcdCllXHgxM1x4MDFnO1x4MGZoXHgxMCVmNztlXG4gZDhceDEzZS42aD9ceDE5Z1wnXHJoL1x4MWRpIlx4MThoNTdmXHgxZCVkOFx4MWFlXG4hZVx4MDUsZVx4MTFcbmguMGU9XHgxNWcuXDBkO1x2aDQoaVx4MDdceDBmZ1x4MTQ3ZDo6ZT0xZVx4MTNccmU8XHgxNWdceDE0KGZcbiVlXHgxMVxuaVx4MDMoZVxiXHgwNmU/K2lcMFx4MWZlXHgxMihoLyJmXHgxNzZlMFx4MWFmMyhmXHgwNFx4MGZnXHgxNDNoLzdlLSZmICFlOlx4MTRoLyVlXHgwZVx4MDZlXHgwZjJlXHgwZipmXHgxOC9oP1x4MTRlXHgxYlx4MWVoNC1kOTBlXHgxMFxyZ1wnMGQ4OmQ6XHgwNmZcYlx4MTBlXG5ceDFmaC80Zlx4MThceDBlZD5ceDFiZTpceDE0ZS0pZS1ceDEwZDhceDEzaSJceDE4ZyhcdmU6XHgwZmQ4XDBoXGIsZlx4MWNceDAzZVx4MTMhZVx4MGYqZlx4MWNcdGVceDA1NmUuXHgwM2Q/XHgxZGZcbiRoXDBcZmQ4XHgxNGQ7XG5lJClnKlx4MTdlXHgwZiNlXG4oZlwwXHgwMWdcbjZmXDBceDAxZ1x0OWVcYitoLiRkODplP1x4MDVpITtmXHgxYjRmXHgxNjBlMFx4MGZoLzRmXGJceDExZVwwXHgxMWQ9XHgxY2Q4OmUqXHgxMmQ9XHgxM2VcZlx4MDVmXHYsaVx4MDIjZDlcYmQ4XDBmIDdlXHgxYj1lXHgwNlx4MDVmXHgxOC9lXHgxMCZmIDlmXHIuZ1x4MTQ1aFwnXHgwNmUtJmlceDE5ImVceDA1N2ZceDFjXHRoP1x4MDdnKFx2Z1x4MTQxZDpceDBlZDo6Zlx0XHJlXHgwNzpmXHgxZCVkOFxyaD9ceDA3Zi0jZVx4MWMoZlx4MThceDBlZlx4MThceDFmZlx4MTVceDA1ZDpcdmVceDA1M2czO2YgXHgwN2kiXHgxOGVceDE1XHgwNmVcbiFoPlx4MTNlXHgwNSVkOFwwZ1x4MWI0ZVx4MWY6ZyFcMGZceDE1XHgxOWUtJmQ6XHgwNmhcJyNlOzpnLVx4MTFnO1x4MTNmXHgxZVx4MWNlXHgwNShnXHgxMFx4MDNpXDBceDFhZ1x4MWYlaC4hZVxiXHgxMmUvOWQ6XHgwZWhcdDpmXHgxYy9nXHgxYjhlXHgwNlxmZVx4MGZceDExZ1x4MTRceDFmZ1x4MWNceDFmZ1x4MWFceDA0ZTs6ZytcdmctXHRnOlwnZzE7ZVx4MWVcdmc7XHgwZmkqXGZlLlx4MWVnXHgwZTBlXGI2ZD1ceDFjZlx4MWQlaFx4MDcqZiBceDA3Zy0+ZDslZDhcdmVceDBlXHgxZmVcYlx4MWJmXHgxNyBmM1x4MTVlXHgwNTZkOC1lXDBcdmQ6OmQ4XDBlXGJceDA3ZlxmXHgwN2Vcclx4MTdlXHgwNTNpXHgxNy1pXHgxYlx4MDZlXHgxYiJnLCxkOFx0ZVx4MDUzZjMoZVx4MWIgZi0kZ1x4MDVcJ2dcdFx4MDdmNzFlXHgxYzNlXHgxNVx4MDZkOFx4MWFlOT9lN1x4MWVmXHgxNyVmXHgxY1x4MWZpK1x4MThnOlwnZlx4MWNcMGg/XHgxMWc7PGVceDEwXGJoIShnJDpkOFx4MTNoPlx4MTFoIVxmZDg6ZDokaVwwXHgxYWgvXHgwNGQ7N2hcJ1x0ZT5ceDE3ZzI+ZVxyXHgwZWUuNmU6LWUuXGZmXGJceDEwZlx4MDRceDFmaFwnXHRlLlx0aCNceDA1ZT5ceDE3ZVxiMGlceDAyLmQ7NmVcYjZlOiZpI1x4MWZlXHgxM1x4MDFoXHgxOT1nXHgwNDZoPSxoPT1mXG4lZDs3aC4waFwwXHgwNWZceDE2OWYhXGJoIVxmZlx4MTQ/ZDo6ZjBceDExZ1x4MTQoZVx4MTNceDAxZDhceDFjaCU/Zlx4MGZceDEwZVx4MDc6aVx4MDVceDEyZTpceDE3Z1x4MDQ2ZVx4MTBceDBlZDtceDE4Ziw+Z1x4MDMtZ1x4MDI5ZDslZVx0XHJlLlxmZVx4MDUoZVx4MGZceDExZThceDE2aC4+Zz0uaSJceDA2ZS88ZTclZDhceDFhZVxmO2lceDE5ImdceDFjXHZnXHgxY1x2ZztceDBmZVx4MDU4ZVx4MGVceDFmZVx4MWIgZTkzZVx4MGYwZVx4MTBceDA0Z1wnXHJlIlx4MWVlXG4gZlx4MWRceDEwZlx4MTZceDE5Zlx4MTYwZSJceDFlZDlcdmVceDEwXHgwZWhceDAxXGZkOFx4MWFmXHgxNVxiZlx4MWVceDFjZDtcbmU5NGguOmZceDE2XHgwN2ZcYlx4MTFlXHgxYj1lXHgxMVxuaC9cdGdcdFxiZDg7ZD8uZlx4MTQ5ZVx4MGZceDAyZDhceDBlZlx0XHgxM2VccjBlPytkOVx4MTBmXHgxYzpmIjBoXCdceDAyZ1x4MDI5ZS1ceDE4ZVx4MWMoZzI+ZyVceDFlaFx4MGU3ZT5ceDE3ZVxiKWdceDE0KGc7XCdnOy1kPSBkOyxoP1x4MTlkOVxiZighZTxceDBmaC8taChcMGhceDAzPWUkXHgxZmlceDFiXHgwNWhceDE5XHgwZWZceDEzXHJkPVx4MWNpI1x4MGVmIDxkOFwwaDU3Z1wnXHgxMWUtJmQ9XHgxM2hceDAyMmdceDFmLWQ/IWZceDFkIWQ7NmYyO2dceDE2XHgxN2g/XHgxMGVcbihkOlwnZDhceDFhZDxceDFhaC4uZS88aFxiKmVceDA1XGJnXHgxNFx4MWZoXHgwMVx4MTRnXHgxYlx4MWZlXHgwZi9mXHgxOC9lXHgxNVx4MGZpIVxmZztceDEzZlx4MWVceDA0ZD1ceDFjZ1x4MTQoaDBceDAzZlx4MWYlaDNceDA3Zlx4MTZceDE5aFx4MDcqZVxuKGg0XHgxZmg0I2VceDA2XHgxY2Q4XHgxYWguP2lceDE3LmUuXHgxZWZceDE2PWZceDBlJWVceDBmXHgxN2guKGguOmlceDAyI2Q4KmVceDBmXHJpJlxiZVxuIGU8OmUlM2ZcMFwnaFxmXHgwM2VceDFiNGZceDFjXHJlXHZceDE5ZDxceDExaVx4MTcyZDtcbmZceDE3JWUuImZceDFjXHJoXCdcMGdceDFjXHZlXHgwZlx4MDJlXG4gZ1x4MWFceDA0aC9ceDFkZDhcMGdceDAyOWQ/XHgxZGgvXHgwMWVceDFiPmQ5JmZceDFjXHRmXHgxNVxiZjVcdmgvXHgxNWdcJztlXG4oZlx0XHJoXHgwMz1lXHgwNjNlLlx4MWFoXHgwMiFnJShkOFxyZlx4MTYtaVx4MWNcMGYxXHgwMmQ4XHJlPlx4MTdlXG5ceDFlZjNceDE1ZDlcdmlceDE3NGlceDA3XHgwN2dceDE0KGhceDEwJWlceDE0XDBmXG5ceDE1aC9cdGdceDFiLmYgXHgwN2dcYjFmXHgwM1x4MDVmXHgxMVx4MDRlPTFmXHgxY1x0ZDpceDFiaCRceDA3aCM9Zlx4MTZceDA3ZS0mZlx4MWM6ZDxceDFhZlx4MTUwZS1ceDE3aCNceDA1ZD8uaDQtZ1x0KWVceDA2XHgxY2ZceDFkXHgxMWVceDA1KGlceDFkImcyPmVceDEzXHgwMWVceDA1NmUuXHgxZWQ6XHZmXHgwM1x4MDVmMDRlOTNmXHgwZlx4MTBnJDpkOFxuZThceDAyaDAiaDAiZlx4MTkuaVwwXHgxYWZceDE1XHgxOWU4XGJkOFxuZDwgZzE7ZVxiK2YtXGZmXHgxYjJmXHYlZlx4MWNcdGVcYlx4MWJmXHgxNjBpXHgwNVxyZDs2ZVx4MGYqaCZceDAxZlx4MTc2ZDsjaDNceDA3aChcbmg+PmVcYjBkOjpnXHgxNFx4MWZoLiJpXHgxOFx4MDVoXDBceDAxZThcYmUxXHgxNWckOmU/XHgwM2dceDEwXHgwNmg0NGUtXHgxMGc2MmcrXHgxOWQ4O2khXGZoXHgwNypnXHgwNDZnOlwnZVxiK2cuXDBlXHJceDE1Zlx4MTQ5aVx4MWQpaVx4MDIjZDpceDFiZlx4MWQlaC80Zlx0XHgxM2U8XDBkOyNnIFx4MDFlXGIgaVx4MTkkaC9ceDAxZVxiOGhcblx4MDJnXHgxYi5pXHgwN1xyZ1x4MDI5ZiwhZlx4MTU4ZSRceDFhZTBceDExaFwnXHgwNGVcYlx4MTJoNVx4MDRpXHgwN1x4MTFmXHQ+ZVxiMGQ7JWVceDEwXHgwZWUkXCdlXHgwNShkODtpITVmXHgxY1wwZD0zZVx4MWJceDFlZy1ceDE0ZSQpZDhcdmQ/XHgxZGlceDFhXHgxY2dceDBlMGQ7I2YjXDBmXHgxZiVmXG5ceDE1ZyUoZTBceDBmZlx4MTc2ZjJceDEyZlx4MWNcdGYtI2U4OGdceDE0XHgxYWhceDA3M2Q7I2dceDEwXHgwNmdceDFiLmU9XHgxNWVceDA1LGU8XDBlJFxyZVxiNmlceDA3XHgxMWhceDFlXHJlOThnJlx4MGZnXHRcYmZceDFjLGU9ImZcYlx4MTBlXHgwN1x4MDZlJFx4MDdoIVxmZlx4MDNceDA1ZVx4MWJceDFlZVxiMGZcMFx4MWRmXHgwMzNmXDBceDBlZiA3ZVxyXHgwZmguLmguJGgvXHgwMWZceDFjXDBlJT1kOlwnZ1x4MTRceDFmZlxmXHRnXHgwNVwnZlx4MWNccmgjXHgwNWU5P2Q4XHgxY2VcbihmPCtpXHgwN1x4MDdoNC1mXHgxNjBmXHRcdmc7XHgwNGVceDFiPmlceDFkImZceDFkP2VceDBmXHgwMmhcMFx4MDNmXHgxND9mMjtlLjlmXHgxOFx4MTNlJCllXHgxYzBlXG4qZVxuXHgxYmQ6OmQ7LGVcclx4MDdnOlwnaVwwXHgxZmU6JmQ6OmdcdCloMFx4MDNmXHgxNTRmNVx4MDFoIVxmaVwwIGZcYlx4MTBmXHgxNlx4MDdlLVx4MTdpXHgxZillXHgxYj1oNDhmXHgxOFx4MTNlPFwwZTFceDE1Z1x4MWI4aVx4MTdceDFjaCEoZ1x4MGUwZT0xaFwnXHgwNmUmXHgwMmYtJGc+XHgwZWUuOWUkXCdlMFx4MGZmXG4laVx4MDFceDEzZlx4MWQhZiw+ZT9ceDAzZlx4MDNceDA1aC44ZSRceDFhZjNceDE1aFwnXHgwNGUuNmUxXHgwNWQ5JmU6XHgxN2g/XHgxZWZceDBlJWcrXHZlXHIzZDg+ZlxuJWZcblwwZTdcJ2UlJWg/XHgxMGdceDE5O2VceDA1JWQ7JWZceDFkJWdceDEwXHgwNmguOmQ6XHZkOzZoXHgwNypnXHgxNDFkOC1lXHJceDBlZVxuXHgxZWVceDA1LGUmXGJlJlxiZ1x4MWNceDFmZi0jZDhccmlceDE0XHgxOWVceDA1KGZceDE2XHgwN2VceDEwXGJlXHgxMFxmZDs3ZVwwPGVcYitkOjpnXHgxYlx4MTFnXHgxZCNlXHgwNTdkPVx4MTNkOFx4MTZnOiplXHgxYiJpXHgxOFx4MWZlXGJceDFiZDhceDFhZlx0P2Zcdlx4MDVlIlx4MWVpXHgxNT9mXHgxY1x0ZDo6ZD9ceDFkZlxmXHgwMWVceDE1XHgwNmUuNmc7NGQ/LmVceDBmMGY5PmU3JmVceDBmM2hceDAyIWQ7PWctXHgxNGYhXGJlLlx4MWVpXHgxOVx4MDVnXHgxNDVkPyFnO1x4MGZnXHgxMFx4MDZnXHgxNFx4MWZlXHgxMT1lLiNkPCBkOztlXG4hZi0jZTxceDBmZ1x0OWhcdDJkOFx2Zlx4MWQlZVxyXHgwZmQ8XHgxYWVceDBmKmhceDAzPWU9XHgxM2dceDA0NmlceDA3XHJmXHgxNjBlXHgwNVwnZS45ZlxmXHgwN2UvPGg/XHgxMGghXGZmXHgxNyVlP1x4MTdoMyNlLjZoNlx4MDVoP1x4MDdlXHgxY1x4MWZlXHgxYzBmNVx4MTlmMVx4MWZmXHgxNC9kO1x4MThmXHgwZShlXHgwNzpnK1x4MTlpXHgxNT9mXHgxZC1lN1x4MWVmXHRcJ2ghXGZlXGI2aVwwIGQ5XHZkOFwwZlx4MGUoZTk/Z1x4MGUwZVx4MWM6Zlx4MGZceDBmaD8wZVx4MGZceDE4ZVxmXHgxNmQ8IGc7XHgxZmYtXGZmXHRcdmQ/XHgxZGlceDE5KWgvPmcoXHZlXGY7Z1x4MTZceDE3ZztceDBmaD9ceDA3aD9ceDA3ZVx4MGU7ZDlcdmVcdFxyZlx4MTQ2ZVx4MDUlZTk0ZTomZlx4MWRceDAyZT9ceDE3Zz5ceDBlZDg9Zlx4MWNcMGkrXHgxOGdceDE5O2lceDE5XHgwNmZceDFjKmZceDFkJWVcbiBlNyVlXHgwNVxyaDQjZlx4MTVceDE5ZyhcdmdcdFxiZVx4MWRceDE3aDorZD1ceDEzaVx4MDdccmU6XHgwNmVceDA3OmVceDE0LmZcYlx4MTBmXHgxYyxlPSJlPFx4MGZlXHgxY1x4MWZoMVx4MDZlXHgwNzplXHgwMzlkOFx4MWNmXHgxNjlpXHgwMi5nLjFlXHJceDE3ZDosZjFceDAyaFx4MDFcZmVceDBmXHgxNmU+XHgxN2hceDAxXGZkPVxyZ1x4MWI4ZD8haSE1aVx4MWQiZVxiXHgwNmlceDEyXHgxZmc9XHgxMWkhNWchLmUuXHgxYWVceDFiPmQ+XHZnPVx4MTFlXHgxZFwwZ1wnL2ZceDFlXHgwMWlceDE0XHgxOWgvL2dceDFiLmdceDFhXHgwNGUuXHgxZGg0XHgxZGZceDFjOmVceDA1M2kjXHgwZWlceDE5KWZceDBlXGJmXHgxZFx4MDNnXHgxN1x4MDVmL1x4MTJlLiBnXHQpaVx4MTkkZDpceDA2aClceDE1aCtceDE2Z1x4MTY+Z1x4MTdceDA1ZVx4MGZcbmZceDE3NmYxXHgwMmg0LWcrXHgxOWdceDAyOWVceDA0P2crJWYvXHgwZmUkKWQ4LWUkLmguJGgvXHgwNmYvXHgwZmQ4KmUkKWY0JWUtXHgxN2Q9XHgxM2VceDBmMGdceDAxI2c7NGZcbiRmXHgxYyxpITVkOCpmXDBcJ2UuXHgxOGZceDE2OWU4OGhcJ1x4MDFnXHgxYjhmXHgxYzpmXGJceDE4Z1x4MTUlZTpceDE0ZT1ceDEzZT5cdmU4XGJmXHgxNjlkPj9mICFlXHgxYi1oXHgwMiFlOFx4MDJmXGI/ZTFcdmYgXHgwZmdceDFiLmVceDExXHgxOGU3JWUvPGhceDA3NGcqXHgwMWdceDA0NmlceDAxXHgxM2VceDA1N2ZceDFjLGc9XHgxMWc7XHgxM2VceDEwXGJmISNmIVxiZVxuM2VcbihlXHgwZiZlJFx4MTZnPlx4MGVlXHgwNVx4MDNlPFx4MTVoNTdmXHgxNDllXHgwZlx4MThnLCxlXHgxYlx4MWJkPFx4MWFoLiFoKipmXHgxOFx4MGVpXHgxYVx4MTBnXCdceDAxZS5ceDFkZS5ceDFkaFwnXHgwNGhcZlx4MDNmNlxiaDQ5ZVx4MDUxZVx4MTBcZmU/XHgxOGguMGQ9XHgxM2czO2U4JmZceDFkJWVceDEwXHJlLVx4MTdnXHgxOTxoIShlPFwwZlx4MTQ+ZVxuIGdceDFiXHgxZmVceDBmXHgxN2VcYjBkOlxmZlx0XHZlJFwnaVx4MDdceDBmZlxiXHgxMGQ6OmZceDE1MGlceDA3XHgwZmVceDA1MWQ6K2VcZjplXHgxZlx4MWZlJTNlLSllXHgwZVx4MWZlXGJceDE5Zlx0XDBlXHgxYyhnO1x4MTNmXHgxZFx4MWZpXDBceDFhZD8haDZceDA1ZzpcJ2lceDA1XHJnPS5lPVx4MTNmXHgxNzZkPFx4MThnXCdcMGZcMFwnZlx4MDRceDFmZlxiP2Q6XCdpXHgwMVxuZlxiMmVceDA3OmVceDBmI2ZceDBmXHgxMGQ6JGUwMWQ4XHgxYWQ/XHgxZGVceDAxJWcoXHZlOiZlXHgwZlx4MDJmXHgxNTBkOlx2ZDhceDFhZlx4MTU0ZDgqZTExZDhceDFjZlx4MDNceDA1Zlx4MDRceDFmZ1x0OWYuXG5lXGJceDA2aSFceDFlZlx4MTBceDFjZTBcdmUxXHgxZWQ6XHgwZWlceDE3KGZcYjdoNCJlXG4hZSMwaVx4MWYzZVx4MGZcbmVceDA1Nmg0Imc7XHgwZmVceDFkXHgxYWZcZlx4MDFlOTJpXHgwMyhmXGJceDEwZytcdmVcYilnXHgxYlxuaFwwXHgwM2hceDE5XHgxMWZcYlx4MTBpXHgwMz1lXGZceDA1aCNceDA1Z1x4MTQoZlxiNmYvXHgxNGg1XHgxYmZceDE2XHgwN2ZceDE4XHgwZWZcdlx4MWJlXHgxNVx4MDZlLlxmZlx4MTU0Z1x4MWNceDFmZlx4MTgvZ1x4MWM8Z1x4MWRceDFiZDxceDE5ZDw0ZShceDAxZlx4MWNceDFiaSJceDA2ZVx4MWZceDFmZVxyK2dceDE0XHgxZmQ8XHgxOGZceDAzIGgrXHgxNmUjXHgwN2VceDA1LGVceDA1MWhcdC9lJT1lXHgwNVx4MDVlXGJceDA2ZywmZVx4MTBcYmlceDE5XHgwNGQ7NmdcdDlnXHgwMjlkOFxyZVx4MGYvaFx2MWZceDE2XHgwN2g1XHgwNGQ6XCdmIDlmXHgxYyxmXHgxOFx4MGVmXHgxOD5lL1x4MDZnIjxlXHgwNSxkPFx4MTdmMFx4MTFmXHgxN1x4MGZmXHgxYjRlXG4gZDorZVx4MGZceDE3ZVx4MTBcZmUtJmVceDEwL2VcbihpXDBceDAyZVx4MTBcYmVceDBlXHgxZmZceDFkJWlceDE3LmctXHgxNGZceDFjLGZceDE2XHgwN2c+XHgwZWkjXHgxZmc7P2hcdDJnKDNlLlx4MWFnO1xiZDpceDBlZ1x4MTRceDFmZ1x0KWQ+XHgxYmYxXHgwMmZceDEwXHgxY2dcdlx4MTBlXG5ceDFiaVx4MDdceDBmZDglaVx4MDdccmYwOGg/XHgxY2VceDA2XHgxOWdceDFjXHgxZmZceDFjXHRpXHgxOVx4MTBnK1x4MWVkOlx0ZS85aDEhaDQ5Z1x4MTQoZDhccmUlPWc7XHgxZGUvOWVcclx4MDFlXGJceDA2ZD9ceDAzaD9ceDFiZ1x4MDI5aC9ceDA0ZT0xaVx4MWYzZDxceDE4ZVxuP2Q4XHJlMFx4MTFmLCNoNVx4MGZlOTZkOFx4MTRmXHgxY1x0Z1x4MDI5Zlx4MTY5ZVx4MTBceDExZVx4MDUoZlx4MTYwZD8hZ1x4MTQoaC4+Zlx4MTY9ZT0iaDEhaDVceDA0ZiA8ZypceDAxZyA0aVx4MWFceDBmZ1x4MWRcMGlceDA3XHJlJFwnZDpceDBlZlx4MTgvZi9ceDE1ZDhceDFhZlx4MTk6aFx4MDM9ZVxmXHgxNmU3JWUuXGZnPlx4MGVlXHgxNVx4MDZlXHgxZlx4MGVnO1x4MWZkOFwwZVx4MDc6Z1x0XGJmXHRceDEzaVwwIGdceDE0ImVceDEzXHgwMWYmXHgwMmVceDA2NWdceDE0KGQ6XHgwZWQ/XHgxZGdceDE1XHgxOWVceDFiIGc0IGQ4LWVceDFjXHZlLVx4MThlXHgwMihoNDRlXHgxYj5mXHgxY1wwZlx4MDRceDFiaVx4MTU/Zlx4MWNceDFmZVx4MGYjZDs3Z1x4MTBceDA2aDQiZVx4MWY6ZVx4MWMwZS5cdGZceDBlXHgxMmYtJmYxXHRpXHgwN1xmaVx4MWQiZVxiXHgxYmU7OmUkKWcpOmkmXHgxNmVceDA1XGJlLlxmZVx4MTZceDA0aSkxZVxuKGQ4XHZpXHgxZCJkOFxyZVx4MDZccmgvXHgxYWQ/IWZceDA0XHgwZmQ5XHRpXHgxODNlXHgwNVx0aFx2MWVceDFiPWY8XHgwMmQ6LmVceDA2XHgxYmQ6XHZnXHgwZSllLjZnPiRkPFx4MTdlXHgwNlx4MWNmMFx4MTFlXHIzZVx4MGYvZVx4MTBccmcoMWUuNmVceDA1N2VcbihnXHgxNDtmXHgwMzNlXGIwZjMoZlx4MThceDBlZTBceDBmZS0mZlwwXCdoXHgwMz1oXDBceDAzZyBceDE0ZyEsZDs2aFwnXHgwMmdceDFjXHZmOFx4MDVmJVx4MWFmXHgxMFx4MWVnLFx4MTFpJlx4MTZpIFx4MDFpO1x4MDRpXHgwN1x4MTFpXDBceDAyZ1x4MTQoZjFceDFmaFx2XHgwZmdceDFjXHgxZmUuXHgxZWQ4O2cuIWlceDE4NmYuNWgoO2VceDA2XG5nPztoL1x4MTFmXHgxZFx4MDNlXGIpZVx4MDFceDFhZSU9ZDw8ZDlceDBlaVwwXHgxYWguL2ZceDE2PWU3JWdcdlwwZlx4MDVcdmQ5XHgxZmguOGdceDBlL2Q/XHgxZGVceDFmOWVceDA1O2YmXHgwMmU/NWUkXCdlXHgxZVx2Zlx4MWM6ZyUoZ1x4MTBceDA2aFwnI2VcZj9lXHgxMFxyY3VhbmRvZW52aWFybWFkcmlkYnVzY2FyaW5pY2lvdGllbXBvcG9ycXVlY3VlbnRhZXN0YWRvcHVlZGVuanVlZ29zY29udHJhZXN0QyFubm9tYnJldGllbmVucGVyZmlsbWFuZXJhYW1pZ29zY2l1ZGFkY2VudHJvYXVucXVlcHVlZGVzZGVudHJvcHJpbWVycHJlY2lvc2VnQzpuYnVlbm9zdm9sdmVycHVudG9zc2VtYW5haGFiQy1hYWdvc3RvbnVldm9zdW5pZG9zY2FybG9zZXF1aXBvbmlDMW9zbXVjaG9zYWxndW5hY29ycmVvaW1hZ2VucGFydGlyYXJyaWJhbWFyQy1haG9tYnJlZW1wbGVvdmVyZGFkY2FtYmlvbXVjaGFzZnVlcm9ucGFzYWRvbEMtbmVhcGFyZWNlbnVldmFzY3Vyc29zZXN0YWJhcXVpZXJvbGlicm9zY3VhbnRvYWNjZXNvbWlndWVsdmFyaW9zY3VhdHJvdGllbmVzZ3J1cG9zc2VyQyFuZXVyb3BhbWVkaW9zZnJlbnRlYWNlcmNhZGVtQyFzb2ZlcnRhY29jaGVzbW9kZWxvaXRhbGlhbGV0cmFzYWxnQzpuY29tcHJhY3VhbGVzZXhpc3RlY3VlcnBvc2llbmRvcHJlbnNhbGxlZ2FydmlhamVzZGluZXJvbXVyY2lhcG9kckMhcHVlc3RvZGlhcmlvcHVlYmxvcXVpZXJlbWFudWVscHJvcGlvY3Jpc2lzY2llcnRvc2VndXJvbXVlcnRlZnVlbnRlY2VycmFyZ3JhbmRlZWZlY3RvcGFydGVzbWVkaWRhcHJvcGlhb2ZyZWNldGllcnJhZS1tYWlsdmFyaWFzZm9ybWFzZnV0dXJvb2JqZXRvc2VndWlycmllc2dvbm9ybWFzbWlzbW9zQzpuaWNvY2FtaW5vc2l0aW9zcmF6QzNuZGViaWRvcHJ1ZWJhdG9sZWRvdGVuQy1hamVzQzpzZXNwZXJvY29jaW5hb3JpZ2VudGllbmRhY2llbnRvY0MhZGl6aGFibGFyc2VyQy1hbGF0aW5hZnVlcnphZXN0aWxvZ3VlcnJhZW50cmFyQyl4aXRvbEMzcGV6YWdlbmRhdkMtZGVvZXZpdGFycGFnaW5hbWV0cm9zamF2aWVycGFkcmVzZkMhY2lsY2FiZXphQyFyZWFzc2FsaWRhZW52Qy1vamFwQzNuYWJ1c29zYmllbmVzdGV4dG9zbGxldmFycHVlZGFuZnVlcnRlY29tQzpuY2xhc2VzaHVtYW5vdGVuaWRvYmlsYmFvdW5pZGFkZXN0QyFzZWRpdGFyY3JlYWRvUDRQO1FceDBmUVx4MDdRXHgwMlA+UDpQMFA6UDhQO1A4UVxyUVx4MDJQPlAyUVx4MDFQNVA1UDNQPlA/UVwwUDhRXHgwMlAwUDpQNVFcdFA1UVx4MDNQNlA1UFx4MWFQMFA6UDFQNVA3UDFRXHZQO1A+UD1QOFBceDEyUVx4MDFQNVA/UD5QNFAtUVx4MDJQPlFceDAyUD5QPFFceDA3UDVQPFA9UDVRXHgwMlA7UDVRXHgwMlFcMFAwUDdQPlA9UDBQM1A0UDVQPFA9UDVQXHgxNFA7UVx4MGZQXHgxZlFcMFA4UD1QMFFceDAxUD1QOFFceDA1UVx4MDJQNVA8UDpRXHgwMlA+UDNQPlA0UDJQPlFceDAyUVx4MDJQMFA8UCFQKFBceDEwUDxQMFFceDBmUFwnUVx4MDJQPlAyUDBRXHgwMVAyUDBQPFA1UDxRXHgwM1AiUDBQOlA0UDJQMFA9UDBQPFFcclFceDAyUDhRXHJRXHgwMlFceDAzUFx4MTJQMFA8UVx4MDJQNVFceDA1UD9RXDBQPlFceDAyUVx4MDNRXHgwMlA9UDBQNFA0UD1RXHgwZlBceDEyUD5RXHgwMlFceDAyUVwwUDhQPVA1UDlQXHgxMlAwUVx4MDFQPVA4UDxRXHgwMVAwUDxRXHgwMlA+UVx4MDJRXDBRXHgwM1AxUFx4MWVQPVA4UDxQOFFcMFA9UDVQNVBceDFlUFx4MWVQXHgxZVA7UDhRXHgwNlFcclFceDAyUDBQXHgxZVA9UDBQPVA1UDxQNFA+UDxQPFA+UDlQNFAyUDVQPlA9UD5RXHgwMVFceDAzUDRgJFx4MTVgJVx4MDdgJDlgJVxiYCRceDE1YCVcMGAkOGAlXHgwN2AkXHgxNWAkPmAkXHgxNWAlXHZgJFx4MTRgJDBgJCpgJDBgJChgJVx4MDdgJFx4MGZgJFx4MTVgJFx4MTVgJD9gJC1gJVwwYCRceDA3YCQ4YCRceDE1YCQwYCQkYCVcdmAkOWAlXHZgJFx4MDZgJCpgJDlgJVwwYCQvYCQ5YCQvYCQ+YCQkYCRceDE1YCQlYCQ+amFncmFuYCRceDA2YCRceDFjYCRceDFjYCVcdmAkXHgwNWAkLGAkJmAlXHZgJFx4MTdgJFxiYCRceDFjYCQ+YCRceDE3YCRceDBmYCQ5YCQuYCRceDA3YCQoYCQ1YCQ5YCQvYCVceDA3YCQlYCVceDA3YCQlYCVcMGAkXHgxOGAkMGAkXHgxY2AkLGAkJmAlXDBgJFx4MTVgJFxiYCRceDFjYCVcMGAkNWAlXHgwN2AkKGAkXGJgJChgJFx4MGZgJDlgJDBgJFx0YCQ4YCQuYCVceDA3YCRceDE1YCQuYCQ1YCVcdmAkMmAlXHgwN2AkOGAkLGAkLmAkXGJgJCZgJVx4MDdgJFx4MTNgJDBgJFx4MDZgJC5gJCxgJDhgJC1gJDBgJCxgJChgJFx4MWFgJDJgJC5gJChgJFx4MDZgJFx4MTdgJDhgJVwwYCQyYCVcMFg5WVx4MDRZXHRYJVlceDA0WVx0WVx4MDdYMFhcJ1giWC5YMVg5WC9YL1hcJ1lceDA0WVx0WVx4MDdYMFlceDA3WDVZXGJYMVg6WVxuWDFZXHgwM1hcJ1lceDA2WVxiWVx4MDRYXCdYKFlcbllceDA2WDlYMVg2WDBZXHgwNFlceDAzWVx4MDdZXHgwNlhcJ1lcbllcYllceDA1WVx4MDJYXCdZXHgwNFg5WVx4MDRZXG5YXCdZXHgwNlhcJ1lceDA0WVx4MDNZXHgwNlgtWCpZXHRZXHgwMlgoWVx4MDRZXGJYLVgpWFwnWC5YMVlceDAxWVx4MDJYN1g5WChYL1gxWVx4MDNZXHgwNlglWDBYXCdZXHgwM1lceDA1WFwnWFwnWC1YL1glWVx4MDRYXCdZXHgwMVlcbllceDA3WChYOVg2WVx4MDNZXG5ZXHgwMVgoWC1YK1lcYllceDA1WVx4MDZZXGJZXHgwN1lcYlgjWVx4MDZYXCdYLFgvWFwnWVx4MDRZXHgwN1hcJ1gzWVx4MDRZXHgwNVg5WVx4MDZYL1lceDA0WVxuWDNYOVgoWDFYNVlceDA0WVx0WVx4MDVZXHgwNlgwWChZXHgwN1hcJ1gjWVx4MDZZXHgwN1lceDA1WCtZXHgwNFlceDAzWVx4MDZYKlhcJ1lceDA0WFwnWC1ZXG5YK1lceDA1WDVYMVg0WDFYLVgtWVxiWVx4MDRZXGJZXHgwMVlcblhcJ1gwWFwnWVx4MDRZXHgwM1lceDA0WVx4MDVYMVgpWFwnWVx4MDZYKlhcJ1lceDA0WVx4MDFYI1goWVxiWC5YXCdYNVgjWVx4MDZYKlhcJ1lceDA2WVx4MDdYXCdZXHgwNFlcblg5WDZZXGJZXGJZXHgwMlgvWFwnWChZXHgwNlguWVxuWDFYKFlceDA2WCpZXHgwNFlceDAzWVx4MDVYNFhcJ1ghWVxiWVx4MDdZXG5YXCdYKFlcYllceDAyWDVYNVlcYllceDA1WFwnWDFZXHgwMllceDA1WCNYLVgvWVx4MDZYLVlceDA2WDlYL1lceDA1WDFYI1lcblhcJ1gtWClZXHgwM1gqWChYL1lcYllceDA2WVxuWCxYKFlceDA1WVx4MDZZXHgwN1gqWC1YKlgsWVx4MDdYKVgzWVx4MDZYKVlcblgqWVx4MDVZXHgwM1gxWClYOlgyWClZXHgwNllceDAxWDNYKFlcblgqWVx4MDRZXHgwNFlceDA3WVx4MDRZXHgwNlhcJ1gqWVx4MDRZXHgwM1lceDAyWVx4MDRYKFlceDA0WVx4MDVYXCdYOVlceDA2WVx4MDdYI1lcYllceDA0WDRZXG5YIVlceDA2WVxiWDFYI1lceDA1WFwnWVx4MDFZXG5ZXHgwM1goWVx4MDNZXHgwNFgwWFwnWCpYMVgqWChYKFgjWVx4MDZZXHgwN1lceDA1WDNYXCdZXHgwNllceDAzWChZXG5YOVlceDAxWVx4MDJYL1gtWDNZXHgwNllceDA0WVx4MDdZXHgwNVg0WDlYMVgjWVx4MDdZXHgwNFg0WVx4MDdYMVlceDAyWDdYMVg3WVx4MDRYKHByb2ZpbGVzZXJ2aWNlZGVmYXVsdGhpbXNlbGZkZXRhaWxzY29udGVudHN1cHBvcnRzdGFydGVkbWVzc2FnZXN1Y2Nlc3NmYXNoaW9uPHRpdGxlPmNvdW50cnlhY2NvdW50Y3JlYXRlZHN0b3JpZXNyZXN1bHRzcnVubmluZ3Byb2Nlc3N3cml0aW5nb2JqZWN0c3Zpc2libGV3ZWxjb21lYXJ0aWNsZXVua25vd25uZXR3b3JrY29tcGFueWR5bmFtaWNicm93c2VycHJpdmFjeXByb2JsZW1TZXJ2aWNlcmVzcGVjdGRpc3BsYXlyZXF1ZXN0cmVzZXJ2ZXdlYnNpdGVoaXN0b3J5ZnJpZW5kc29wdGlvbnN3b3JraW5ndmVyc2lvbm1pbGxpb25jaGFubmVsd2luZG93LmFkZHJlc3N2aXNpdGVkd2VhdGhlcmNvcnJlY3Rwcm9kdWN0ZWRpcmVjdGZvcndhcmR5b3UgY2FucmVtb3ZlZHN1YmplY3Rjb250cm9sYXJjaGl2ZWN1cnJlbnRyZWFkaW5nbGlicmFyeWxpbWl0ZWRtYW5hZ2VyZnVydGhlcnN1bW1hcnltYWNoaW5lbWludXRlc3ByaXZhdGVjb250ZXh0cHJvZ3JhbXNvY2lldHludW1iZXJzd3JpdHRlbmVuYWJsZWR0cmlnZ2Vyc291cmNlc2xvYWRpbmdlbGVtZW50cGFydG5lcmZpbmFsbHlwZXJmZWN0bWVhbmluZ3N5c3RlbXNrZWVwaW5nY3VsdHVyZSZxdW90Oyxqb3VybmFscHJvamVjdHN1cmZhY2VzJnF1b3Q7ZXhwaXJlc3Jldmlld3NiYWxhbmNlRW5nbGlzaENvbnRlbnR0aHJvdWdoUGxlYXNlIG9waW5pb25jb250YWN0YXZlcmFnZXByaW1hcnl2aWxsYWdlU3BhbmlzaGdhbGxlcnlkZWNsaW5lbWVldGluZ21pc3Npb25wb3B1bGFycXVhbGl0eW1lYXN1cmVnZW5lcmFsc3BlY2llc3Nlc3Npb25zZWN0aW9ud3JpdGVyc2NvdW50ZXJpbml0aWFscmVwb3J0c2ZpZ3VyZXNtZW1iZXJzaG9sZGluZ2Rpc3B1dGVlYXJsaWVyZXhwcmVzc2RpZ2l0YWxwaWN0dXJlQW5vdGhlcm1hcnJpZWR0cmFmZmljbGVhZGluZ2NoYW5nZWRjZW50cmFsdmljdG9yeWltYWdlcy9yZWFzb25zc3R1ZGllc2ZlYXR1cmVsaXN0aW5nbXVzdCBiZXNjaG9vbHNWZXJzaW9udXN1YWxseWVwaXNvZGVwbGF5aW5nZ3Jvd2luZ29idmlvdXNvdmVybGF5cHJlc2VudGFjdGlvbnM8L3VsPlxyXG53cmFwcGVyYWxyZWFkeWNlcnRhaW5yZWFsaXR5c3RvcmFnZWFub3RoZXJkZXNrdG9wb2ZmZXJlZHBhdHRlcm51bnVzdWFsRGlnaXRhbGNhcGl0YWxXZWJzaXRlZmFpbHVyZWNvbm5lY3RyZWR1Y2VkQW5kcm9pZGRlY2FkZXNyZWd1bGFyICZhbXA7IGFuaW1hbHNyZWxlYXNlQXV0b21hdGdldHRpbmdtZXRob2Rzbm90aGluZ1BvcHVsYXJjYXB0aW9ubGV0dGVyc2NhcHR1cmVzY2llbmNlbGljZW5zZWNoYW5nZXNFbmdsYW5kPTEmYW1wO0hpc3RvcnkgPSBuZXcgQ2VudHJhbHVwZGF0ZWRTcGVjaWFsTmV0d29ya3JlcXVpcmVjb21tZW50d2FybmluZ0NvbGxlZ2V0b29sYmFycmVtYWluc2JlY2F1c2VlbGVjdGVkRGV1dHNjaGZpbmFuY2V3b3JrZXJzcXVpY2tseWJldHdlZW5leGFjdGx5c2V0dGluZ2Rpc2Vhc2VTb2NpZXR5d2VhcG9uc2V4aGliaXQmbHQ7IS0tQ29udHJvbGNsYXNzZXNjb3ZlcmVkb3V0bGluZWF0dGFja3NkZXZpY2VzKHdpbmRvd3B1cnBvc2V0aXRsZT0iTW9iaWxlIGtpbGxpbmdzaG93aW5nSXRhbGlhbmRyb3BwZWRoZWF2aWx5ZWZmZWN0cy0xXCddKTtcbmNvbmZpcm1DdXJyZW50YWR2YW5jZXNoYXJpbmdvcGVuaW5nZHJhd2luZ2JpbGxpb25vcmRlcmVkR2VybWFueXJlbGF0ZWQ8L2Zvcm0+aW5jbHVkZXdoZXRoZXJkZWZpbmVkU2NpZW5jZWNhdGFsb2dBcnRpY2xlYnV0dG9uc2xhcmdlc3R1bmlmb3Jtam91cm5leXNpZGViYXJDaGljYWdvaG9saWRheUdlbmVyYWxwYXNzYWdlLCZxdW90O2FuaW1hdGVmZWVsaW5nYXJyaXZlZHBhc3NpbmduYXR1cmFscm91Z2hseS5cblxuVGhlIGJ1dCBub3RkZW5zaXR5QnJpdGFpbkNoaW5lc2VsYWNrIG9mdHJpYnV0ZUlyZWxhbmQiIGRhdGEtZmFjdG9yc3JlY2VpdmV0aGF0IGlzTGlicmFyeWh1c2JhbmRpbiBmYWN0YWZmYWlyc0NoYXJsZXNyYWRpY2FsYnJvdWdodGZpbmRpbmdsYW5kaW5nOmxhbmc9InJldHVybiBsZWFkZXJzcGxhbm5lZHByZW1pdW1wYWNrYWdlQW1lcmljYUVkaXRpb25dJnF1b3Q7TWVzc2FnZW5lZWQgdG92YWx1ZT0iY29tcGxleGxvb2tpbmdzdGF0aW9uYmVsaWV2ZXNtYWxsZXItbW9iaWxlcmVjb3Jkc3dhbnQgdG9raW5kIG9mRmlyZWZveHlvdSBhcmVzaW1pbGFyc3R1ZGllZG1heGltdW1oZWFkaW5ncmFwaWRseWNsaW1hdGVraW5nZG9tZW1lcmdlZGFtb3VudHNmb3VuZGVkcGlvbmVlcmZvcm11bGFkeW5hc3R5aG93IHRvIFN1cHBvcnRyZXZlbnVlZWNvbm9teVJlc3VsdHNicm90aGVyc29sZGllcmxhcmdlbHljYWxsaW5nLiZxdW90O0FjY291bnRFZHdhcmQgc2VnbWVudFJvYmVydCBlZmZvcnRzUGFjaWZpY2xlYXJuZWR1cCB3aXRoaGVpZ2h0OndlIGhhdmVBbmdlbGVzbmF0aW9uc19zZWFyY2hhcHBsaWVkYWNxdWlyZW1hc3NpdmVncmFudGVkOiBmYWxzZXRyZWF0ZWRiaWdnZXN0YmVuZWZpdGRyaXZpbmdTdHVkaWVzbWluaW11bXBlcmhhcHNtb3JuaW5nc2VsbGluZ2lzIHVzZWRyZXZlcnNldmFyaWFudCByb2xlPSJtaXNzaW5nYWNoaWV2ZXByb21vdGVzdHVkZW50c29tZW9uZWV4dHJlbWVyZXN0b3JlYm90dG9tOmV2b2x2ZWRhbGwgdGhlc2l0ZW1hcGVuZ2xpc2h3YXkgdG8gIEF1Z3VzdHN5bWJvbHNDb21wYW55bWF0dGVyc211c2ljYWxhZ2FpbnN0c2VydmluZ30pKCk7XHJcbnBheW1lbnR0cm91YmxlY29uY2VwdGNvbXBhcmVwYXJlbnRzcGxheWVyc3JlZ2lvbnNtb25pdG9yIFwnXCdUaGUgd2lubmluZ2V4cGxvcmVhZGFwdGVkR2FsbGVyeXByb2R1Y2VhYmlsaXR5ZW5oYW5jZWNhcmVlcnMpLiBUaGUgY29sbGVjdFNlYXJjaCBhbmNpZW50ZXhpc3RlZGZvb3RlciBoYW5kbGVycHJpbnRlZGNvbnNvbGVFYXN0ZXJuZXhwb3J0c3dpbmRvd3NDaGFubmVsaWxsZWdhbG5ldXRyYWxzdWdnZXN0X2hlYWRlcnNpZ25pbmcuaHRtbCI+c2V0dGxlZHdlc3Rlcm5jYXVzaW5nLXdlYmtpdGNsYWltZWRKdXN0aWNlY2hhcHRlcnZpY3RpbXNUaG9tYXMgbW96aWxsYXByb21pc2VwYXJ0aWVzZWRpdGlvbm91dHNpZGU6ZmFsc2UsaHVuZHJlZE9seW1waWNfYnV0dG9uYXV0aG9yc3JlYWNoZWRjaHJvbmljZGVtYW5kc3NlY29uZHNwcm90ZWN0YWRvcHRlZHByZXBhcmVuZWl0aGVyZ3JlYXRseWdyZWF0ZXJvdmVyYWxsaW1wcm92ZWNvbW1hbmRzcGVjaWFsc2VhcmNoLndvcnNoaXBmdW5kaW5ndGhvdWdodGhpZ2hlc3RpbnN0ZWFkdXRpbGl0eXF1YXJ0ZXJDdWx0dXJldGVzdGluZ2NsZWFybHlleHBvc2VkQnJvd3NlcmxpYmVyYWx9IGNhdGNoUHJvamVjdGV4YW1wbGVoaWRlKCk7RmxvcmlkYWFuc3dlcnNhbGxvd2VkRW1wZXJvcmRlZmVuc2VzZXJpb3VzZnJlZWRvbVNldmVyYWwtYnV0dG9uRnVydGhlcm91dCBvZiAhPSBudWxsdHJhaW5lZERlbm1hcmt2b2lkKDApL2FsbC5qc3ByZXZlbnRSZXF1ZXN0U3RlcGhlblxuXG5XaGVuIG9ic2VydmU8L2gyPlxyXG5Nb2Rlcm4gcHJvdmlkZSIgYWx0PSJib3JkZXJzLlxuXG5Gb3IgXG5cbk1hbnkgYXJ0aXN0c3Bvd2VyZWRwZXJmb3JtZmljdGlvbnR5cGUgb2ZtZWRpY2FsdGlja2V0c29wcG9zZWRDb3VuY2lsd2l0bmVzc2p1c3RpY2VHZW9yZ2UgQmVsZ2l1bS4uLjwvYT50d2l0dGVybm90YWJseXdhaXRpbmd3YXJmYXJlIE90aGVyIHJhbmtpbmdwaHJhc2VzbWVudGlvbnN1cnZpdmVzY2hvbGFyPC9wPlxyXG4gQ291bnRyeWlnbm9yZWRsb3NzIG9manVzdCBhc0dlb3JnaWFzdHJhbmdlPGhlYWQ+PHN0b3BwZWQxXCddKTtcclxuaXNsYW5kc25vdGFibGVib3JkZXI6bGlzdCBvZmNhcnJpZWQxMDAsMDAwPC9oMz5cbiBzZXZlcmFsYmVjb21lc3NlbGVjdCB3ZWRkaW5nMDAuaHRtbG1vbmFyY2hvZmYgdGhldGVhY2hlcmhpZ2hseSBiaW9sb2d5bGlmZSBvZm9yIGV2ZW5yaXNlIG9mJnJhcXVvO3BsdXNvbmVodW50aW5nKHRob3VnaERvdWdsYXNqb2luaW5nY2lyY2xlc0ZvciB0aGVBbmNpZW50VmlldG5hbXZlaGljbGVzdWNoIGFzY3J5c3RhbHZhbHVlID1XaW5kb3dzZW5qb3llZGEgc21hbGxhc3N1bWVkPGEgaWQ9ImZvcmVpZ24gQWxsIHJpaG93IHRoZURpc3BsYXlyZXRpcmVkaG93ZXZlcmhpZGRlbjtiYXR0bGVzc2Vla2luZ2NhYmluZXR3YXMgbm90bG9vayBhdGNvbmR1Y3RnZXQgdGhlSmFudWFyeWhhcHBlbnN0dXJuaW5nYTpob3Zlck9ubGluZSBGcmVuY2ggbGFja2luZ3R5cGljYWxleHRyYWN0ZW5lbWllc2V2ZW4gaWZnZW5lcmF0ZGVjaWRlZGFyZSBub3Qvc2VhcmNoYmVsaWVmcy1pbWFnZTpsb2NhdGVkc3RhdGljLmxvZ2luIj5jb252ZXJ0dmlvbGVudGVudGVyZWRmaXJzdCI+Y2lyY3VpdEZpbmxhbmRjaGVtaXN0c2hlIHdhczEwcHg7Ij5hcyBzdWNoZGl2aWRlZDwvc3Bhbj53aWxsIGJlbGluZSBvZmEgZ3JlYXRteXN0ZXJ5L2luZGV4LmZhbGxpbmdkdWUgdG8gcmFpbHdheWNvbGxlZ2Vtb25zdGVyZGVzY2VudGl0IHdpdGhudWNsZWFySmV3aXNoIHByb3Rlc3RCcml0aXNoZmxvd2Vyc3ByZWRpY3RyZWZvcm1zYnV0dG9uIHdobyB3YXNsZWN0dXJlaW5zdGFudHN1aWNpZGVnZW5lcmljcGVyaW9kc21hcmtldHNTb2NpYWwgZmlzaGluZ2NvbWJpbmVncmFwaGljd2lubmVyczxiciAvPjxieSB0aGUgTmF0dXJhbFByaXZhY3ljb29raWVzb3V0Y29tZXJlc29sdmVTd2VkaXNoYnJpZWZseVBlcnNpYW5zbyBtdWNoQ2VudHVyeWRlcGljdHNjb2x1bW5zaG91c2luZ3NjcmlwdHNuZXh0IHRvYmVhcmluZ21hcHBpbmdyZXZpc2VkalF1ZXJ5KC13aWR0aDp0aXRsZSI+dG9vbHRpcFNlY3Rpb25kZXNpZ25zVHVya2lzaHlvdW5nZXIubWF0Y2gofSkoKTtcblxuYnVybmluZ29wZXJhdGVkZWdyZWVzc291cmNlPVJpY2hhcmRjbG9zZWx5cGxhc3RpY2VudHJpZXM8L3RyPlxyXG5jb2xvcjojdWwgaWQ9InBvc3Nlc3Nyb2xsaW5ncGh5c2ljc2ZhaWxpbmdleGVjdXRlY29udGVzdGxpbmsgdG9EZWZhdWx0PGJyIC8+XG46IHRydWUsY2hhcnRlcnRvdXJpc21jbGFzc2ljcHJvY2VlZGV4cGxhaW48L2gxPlxyXG5vbmxpbmUuP3htbCB2ZWhlbHBpbmdkaWFtb25kdXNlIHRoZWFpcmxpbmVlbmQgLS0+KS5hdHRyKHJlYWRlcnNob3N0aW5nI2ZmZmZmZnJlYWxpemVWaW5jZW50c2lnbmFscyBzcmM9Ii9Qcm9kdWN0ZGVzcGl0ZWRpdmVyc2V0ZWxsaW5nUHVibGljIGhlbGQgaW5Kb3NlcGggdGhlYXRyZWFmZmVjdHM8c3R5bGU+YSBsYXJnZWRvZXNuXCd0bGF0ZXIsIEVsZW1lbnRmYXZpY29uY3JlYXRvckh1bmdhcnlBaXJwb3J0c2VlIHRoZXNvIHRoYXRNaWNoYWVsU3lzdGVtc1Byb2dyYW1zLCBhbmQgIHdpZHRoPWUmcXVvdDt0cmFkaW5nbGVmdCI+XG5wZXJzb25zR29sZGVuIEFmZmFpcnNncmFtbWFyZm9ybWluZ2Rlc3Ryb3lpZGVhIG9mY2FzZSBvZm9sZGVzdCB0aGlzIGlzLnNyYyA9IGNhcnRvb25yZWdpc3RyQ29tbW9uc011c2xpbXNXaGF0IGlzaW4gbWFueW1hcmtpbmdyZXZlYWxzSW5kZWVkLGVxdWFsbHkvc2hvd19hb3V0ZG9vcmVzY2FwZShBdXN0cmlhZ2VuZXRpY3N5c3RlbSxJbiB0aGUgc2l0dGluZ0hlIGFsc29Jc2xhbmRzQWNhZGVteVxuXHRcdDwhLS1EYW5pZWwgYmluZGluZ2Jsb2NrIj5pbXBvc2VkdXRpbGl6ZUFicmFoYW0oZXhjZXB0e3dpZHRoOnB1dHRpbmcpLmh0bWwofHwgW107XG5EQVRBWyAqa2l0Y2hlbm1vdW50ZWRhY3R1YWwgZGlhbGVjdG1haW5seSBfYmxhbmtcJ2luc3RhbGxleHBlcnRzaWYodHlwZUl0IGFsc28mY29weTsgIj5UZXJtc2Jvcm4gaW5PcHRpb25zZWFzdGVybnRhbGtpbmdjb25jZXJuZ2FpbmVkIG9uZ29pbmdqdXN0aWZ5Y3JpdGljc2ZhY3RvcnlpdHMgb3duYXNzYXVsdGludml0ZWRsYXN0aW5naGlzIG93bmhyZWY9Ii8iIHJlbD0iZGV2ZWxvcGNvbmNlcnRkaWFncmFtZG9sbGFyc2NsdXN0ZXJwaHA/aWQ9YWxjb2hvbCk7fSkoKTt1c2luZyBhPjxzcGFuPnZlc3NlbHNyZXZpdmFsQWRkcmVzc2FtYXRldXJhbmRyb2lkYWxsZWdlZGlsbG5lc3N3YWxraW5nY2VudGVyc3F1YWxpZnltYXRjaGVzdW5pZmllZGV4dGluY3REZWZlbnNlZGllZCBpblxuXHQ8IS0tIGN1c3RvbXNsaW5raW5nTGl0dGxlIEJvb2sgb2ZldmVuaW5nbWluLmpzP2FyZSB0aGVrb250YWt0dG9kYXlcJ3MuaHRtbCIgdGFyZ2V0PXdlYXJpbmdBbGwgUmlnO1xufSkoKTtyYWlzaW5nIEFsc28sIGNydWNpYWxhYm91dCI+ZGVjbGFyZS0tPlxuPHNjZmlyZWZveGFzIG11Y2hhcHBsaWVzaW5kZXgsIHMsIGJ1dCB0eXBlID0gXG5cclxuPCEtLXRvd2FyZHNSZWNvcmRzUHJpdmF0ZUZvcmVpZ25QcmVtaWVyY2hvaWNlc1ZpcnR1YWxyZXR1cm5zQ29tbWVudFBvd2VyZWRpbmxpbmU7cG92ZXJ0eWNoYW1iZXJMaXZpbmcgdm9sdW1lc0FudGhvbnlsb2dpbiIgUmVsYXRlZEVjb25vbXlyZWFjaGVzY3V0dGluZ2dyYXZpdHlsaWZlIGluQ2hhcHRlci1zaGFkb3dOb3RhYmxlPC90ZD5cclxuIHJldHVybnN0YWRpdW13aWRnZXRzdmFyeWluZ3RyYXZlbHNoZWxkIGJ5d2hvIGFyZXdvcmsgaW5mYWN1bHR5YW5ndWxhcndobyBoYWRhaXJwb3J0dG93biBvZlxuXG5Tb21lIFwnY2xpY2tcJ2NoYXJnZXNrZXl3b3JkaXQgd2lsbGNpdHkgb2YodGhpcyk7QW5kcmV3IHVuaXF1ZSBjaGVja2Vkb3IgbW9yZTMwMHB4OyByZXR1cm47cnNpb249InBsdWdpbnN3aXRoaW4gaGVyc2VsZlN0YXRpb25GZWRlcmFsdmVudHVyZXB1Ymxpc2hzZW50IHRvdGVuc2lvbmFjdHJlc3Njb21lIHRvZmluZ2Vyc0R1a2Ugb2ZwZW9wbGUsZXhwbG9pdHdoYXQgaXNoYXJtb255YSBtYWpvciI6Imh0dHBpbiBoaXMgbWVudSI+XG5tb250aGx5b2ZmaWNlcmNvdW5jaWxnYWluaW5nZXZlbiBpblN1bW1hcnlkYXRlIG9mbG95YWx0eWZpdG5lc3NhbmQgd2FzZW1wZXJvcnN1cHJlbWVTZWNvbmQgaGVhcmluZ1J1c3NpYW5sb25nZXN0QWxiZXJ0YWxhdGVyYWxzZXQgb2Ygc21hbGwiPi5hcHBlbmRkbyB3aXRoZmVkZXJhbGJhbmsgb2ZiZW5lYXRoRGVzcGl0ZUNhcGl0YWxncm91bmRzKSwgYW5kIHBlcmNlbnRpdCBmcm9tY2xvc2luZ2NvbnRhaW5JbnN0ZWFkZmlmdGVlbmFzIHdlbGwueWFob28ucmVzcG9uZGZpZ2h0ZXJvYnNjdXJlcmVmbGVjdG9yZ2FuaWM9IE1hdGguZWRpdGluZ29ubGluZSBwYWRkaW5nYSB3aG9sZW9uZXJyb3J5ZWFyIG9mZW5kIG9mIGJhcnJpZXJ3aGVuIGl0aGVhZGVyIGhvbWUgb2ZyZXN1bWVkcmVuYW1lZHN0cm9uZz5oZWF0aW5ncmV0YWluc2Nsb3VkZnJ3YXkgb2YgTWFyY2ggMWtub3dpbmdpbiBwYXJ0QmV0d2Vlbmxlc3NvbnNjbG9zZXN0dmlydHVhbGxpbmtzIj5jcm9zc2VkRU5EIC0tPmZhbW91cyBhd2FyZGVkTGljZW5zZUhlYWx0aCBmYWlybHkgd2VhbHRoeW1pbmltYWxBZnJpY2FuY29tcGV0ZWxhYmVsIj5zaW5naW5nZmFybWVyc0JyYXNpbClkaXNjdXNzcmVwbGFjZUdyZWdvcnlmb250IGNvcHVyc3VlZGFwcGVhcnNtYWtlIHVwcm91bmRlZGJvdGggb2ZibG9ja2Vkc2F3IHRoZW9mZmljZXNjb2xvdXJzaWYoZG9jdXdoZW4gaGVlbmZvcmNlcHVzaChmdUF1Z3VzdCBVVEYtOCI+RmFudGFzeWluIG1vc3Rpbmp1cmVkVXN1YWxseWZhcm1pbmdjbG9zdXJlb2JqZWN0IGRlZmVuY2V1c2Ugb2YgTWVkaWNhbDxib2R5PlxuZXZpZGVudGJlIHVzZWRrZXlDb2Rlc2l4dGVlbklzbGFtaWMjMDAwMDAwZW50aXJlIHdpZGVseSBhY3RpdmUgKHR5cGVvZm9uZSBjYW5jb2xvciA9c3BlYWtlcmV4dGVuZHNQaHlzaWNzdGVycmFpbjx0Ym9keT5mdW5lcmFsdmlld2luZ21pZGRsZSBjcmlja2V0cHJvcGhldHNoaWZ0ZWRkb2N0b3JzUnVzc2VsbCB0YXJnZXRjb21wYWN0YWxnZWJyYXNvY2lhbC1idWxrIG9mbWFuIGFuZDwvdGQ+XG4gaGUgbGVmdCkudmFsKClmYWxzZSk7bG9naWNhbGJhbmtpbmdob21lIHRvbmFtaW5nIEFyaXpvbmFjcmVkaXRzKTtcbn0pO1xuZm91bmRlcmluIHR1cm5Db2xsaW5zYmVmb3JlIEJ1dCB0aGVjaGFyZ2VkVGl0bGUiPkNhcHRhaW5zcGVsbGVkZ29kZGVzc1RhZyAtLT5BZGRpbmc6YnV0IHdhc1JlY2VudCBwYXRpZW50YmFjayBpbj1mYWxzZSZMaW5jb2xud2Uga25vd0NvdW50ZXJKdWRhaXNtc2NyaXB0IGFsdGVyZWRcJ10pO1xuICBoYXMgdGhldW5jbGVhckV2ZW50XCcsYm90aCBpbm5vdCBhbGxcblxuPCEtLSBwbGFjaW5naGFyZCB0byBjZW50ZXJzb3J0IG9mY2xpZW50c3N0cmVldHNCZXJuYXJkYXNzZXJ0c3RlbmQgdG9mYW50YXN5ZG93biBpbmhhcmJvdXJGcmVlZG9tamV3ZWxyeS9hYm91dC4uc2VhcmNobGVnZW5kc2lzIG1hZGVtb2Rlcm4gb25seSBvbm9ubHkgdG9pbWFnZSIgbGluZWFyIHBhaW50ZXJhbmQgbm90cmFyZWx5IGFjcm9ueW1kZWxpdmVyc2hvcnRlcjAwJmFtcDthcyBtYW55d2lkdGg9Ii8qIDwhW0N0aXRsZSA9b2YgdGhlIGxvd2VzdCBwaWNrZWQgZXNjYXBlZHVzZXMgb2ZwZW9wbGVzIFB1YmxpY01hdHRoZXd0YWN0aWNzZGFtYWdlZHdheSBmb3JsYXdzIG9mZWFzeSB0byB3aW5kb3dzdHJvbmcgIHNpbXBsZX1jYXRjaChzZXZlbnRoaW5mb2JveHdlbnQgdG9wYWludGVkY2l0aXplbkkgZG9uXCd0cmV0cmVhdC4gU29tZSB3dy4iKTtcbmJvbWJpbmdtYWlsdG86bWFkZSBpbi4gTWFueSBjYXJyaWVzfHx7fTt3aXdvcmsgb2ZzeW5vbnltZGVmZWF0c2Zhdm9yZWRvcHRpY2FscGFnZVRyYXVubGVzcyBzZW5kaW5nbGVmdCI+PGNvbVNjb3JBbGwgdGhlalF1ZXJ5LnRvdXJpc3RDbGFzc2ljZmFsc2UiIFdpbGhlbG1zdWJ1cmJzZ2VudWluZWJpc2hvcHMuc3BsaXQoZ2xvYmFsIGZvbGxvd3Nib2R5IG9mbm9taW5hbENvbnRhY3RzZWN1bGFybGVmdCB0b2NoaWVmbHktaGlkZGVuLWJhbm5lcjwvbGk+XG5cbi4gV2hlbiBpbiBib3RoZGlzbWlzc0V4cGxvcmVhbHdheXMgdmlhIHRoZXNwYUMxb2x3ZWxmYXJlcnVsaW5nIGFycmFuZ2VjYXB0YWluaGlzIHNvbnJ1bGUgb2ZoZSB0b29raXRzZWxmLD0wJmFtcDsoY2FsbGVkc2FtcGxlc3RvIG1ha2Vjb20vcGFnTWFydGluIEtlbm5lZHlhY2NlcHRzZnVsbCBvZmhhbmRsZWRCZXNpZGVzLy8tLT48L2FibGUgdG90YXJnZXRzZXNzZW5jZWhpbSB0byBpdHMgYnkgY29tbW9uLm1pbmVyYWx0byB0YWtld2F5cyB0b3Mub3JnL2xhZHZpc2VkcGVuYWx0eXNpbXBsZTppZiB0aGV5TGV0dGVyc2Egc2hvcnRIZXJiZXJ0c3RyaWtlcyBncm91cHMubGVuZ3RoZmxpZ2h0c292ZXJsYXBzbG93bHkgbGVzc2VyIHNvY2lhbCA8L3A+XG5cdFx0aXQgaW50b3JhbmtlZCByYXRlIG9mdWw+XHJcbiAgYXR0ZW1wdHBhaXIgb2ZtYWtlIGl0S29udGFrdEFudG9uaW9oYXZpbmcgcmF0aW5ncyBhY3RpdmVzdHJlYW1zdHJhcHBlZCIpLmNzcyhob3N0aWxlbGVhZCB0b2xpdHRsZSBncm91cHMsUGljdHVyZS0tPlxyXG5cclxuIHJvd3M9IiBvYmplY3RpbnZlcnNlPGZvb3RlckN1c3RvbVY+PFxcL3NjcnNvbHZpbmdDaGFtYmVyc2xhdmVyeXdvdW5kZWR3aGVyZWFzIT0gXCd1bmRmb3IgYWxscGFydGx5IC1yaWdodDpBcmFiaWFuYmFja2VkIGNlbnR1cnl1bml0IG9mbW9iaWxlLUV1cm9wZSxpcyBob21lcmlzayBvZmRlc2lyZWRDbGludG9uY29zdCBvZmFnZSBvZiBiZWNvbWUgbm9uZSBvZnAmcXVvdDtNaWRkbGUgZWFkXCcpWzBDcml0aWNzc3R1ZGlvcz4mY29weTtncm91cCI+YXNzZW1ibG1ha2luZyBwcmVzc2Vkd2lkZ2V0LnBzOiIgPyByZWJ1aWx0Ynkgc29tZUZvcm1lciBlZGl0b3JzZGVsYXllZENhbm9uaWNoYWQgdGhlcHVzaGluZ2NsYXNzPSJidXQgYXJlcGFydGlhbEJhYnlsb25ib3R0b20gY2FycmllckNvbW1hbmRpdHMgdXNlQXMgd2l0aGNvdXJzZXNhIHRoaXJkZGVub3Rlc2Fsc28gaW5Ib3VzdG9uMjBweDsiPmFjY3VzZWRkb3VibGUgZ29hbCBvZkZhbW91cyApLmJpbmQocHJpZXN0cyBPbmxpbmVpbiBKdWx5c3QgKyAiZ2NvbnN1bHRkZWNpbWFsaGVscGZ1bHJldml2ZWRpcyB2ZXJ5clwnK1wnaXB0bG9zaW5nIGZlbWFsZXNpcyBhbHNvc3RyaW5nc2RheXMgb2ZhcnJpdmFsZnV0dXJlIDxvYmplY3Rmb3JjaW5nU3RyaW5nKCIgLz5cblx0XHRoZXJlIGlzZW5jb2RlZC4gIFRoZSBiYWxsb29uZG9uZSBieS9jb21tb25iZ2NvbG9ybGF3IG9mIEluZGlhbmFhdm9pZGVkYnV0IHRoZTJweCAzcHhqcXVlcnkuYWZ0ZXIgYXBvbGljeS5tZW4gYW5kZm9vdGVyLT0gdHJ1ZTtmb3IgdXNlc2NyZWVuLkluZGlhbiBpbWFnZSA9ZmFtaWx5LGh0dHA6Ly8gJm5ic3A7ZHJpdmVyc2V0ZXJuYWxzYW1lIGFzbm90aWNlZHZpZXdlcnN9KSgpO1xuIGlzIG1vcmVzZWFzb25zZm9ybWVyIHRoZSBuZXdpcyBqdXN0Y29uc2VudCBTZWFyY2h3YXMgdGhld2h5IHRoZXNoaXBwZWRicj48YnI+d2lkdGg6IGhlaWdodD1tYWRlIG9mY3Vpc2luZWlzIHRoYXRhIHZlcnkgQWRtaXJhbCBmaXhlZDtub3JtYWwgTWlzc2lvblByZXNzLCBvbnRhcmlvY2hhcnNldHRyeSB0byBpbnZhZGVkPSJ0cnVlInNwYWNpbmdpcyBtb3N0YSBtb3JlIHRvdGFsbHlmYWxsIG9mfSk7XHJcbiAgaW1tZW5zZXRpbWUgaW5zZXQgb3V0c2F0aXNmeXRvIGZpbmRkb3duIHRvbG90IG9mIFBsYXllcnNpbiBKdW5lcXVhbnR1bW5vdCB0aGV0aW1lIHRvZGlzdGFudEZpbm5pc2hzcmMgPSAoc2luZ2xlIGhlbHAgb2ZHZXJtYW4gbGF3IGFuZGxhYmVsZWRmb3Jlc3RzY29va2luZ3NwYWNlIj5oZWFkZXItd2VsbCBhc1N0YW5sZXlicmlkZ2VzL2dsb2JhbENyb2F0aWEgQWJvdXQgWzBdO1xuICBpdCwgYW5kZ3JvdXBlZGJlaW5nIGEpe3Rocm93aGUgbWFkZWxpZ2h0ZXJldGhpY2FsRkZGRkZGImJvdHRvbSJsaWtlIGEgZW1wbG95c2xpdmUgaW5hcyBzZWVucHJpbnRlcm1vc3Qgb2Z1Yi1saW5rcmVqZWN0c2FuZCB1c2VpbWFnZSI+c3VjY2VlZGZlZWRpbmdOdWNsZWFyaW5mb3JtYXRvIGhlbHBXb21lblwnc05laXRoZXJNZXhpY2FucHJvdGVpbjx0YWJsZSBieSBtYW55aGVhbHRoeWxhd3N1aXRkZXZpc2VkLnB1c2goe3NlbGxlcnNzaW1wbHkgVGhyb3VnaC5jb29raWUgSW1hZ2Uob2xkZXIiPnVzLmpzIj4gU2luY2UgdW5pdmVyc2xhcmdlciBvcGVuIHRvIS0tIGVuZGxpZXMgaW5cJ10pO1xyXG4gIG1hcmtldHdobyBpcyAoIkRPTUNvbWFuYWdlZG9uZSBmb3J0eXBlb2YgS2luZ2RvbXByb2ZpdHNwcm9wb3NldG8gc2hvd2NlbnRlcjttYWRlIGl0ZHJlc3NlZHdlcmUgaW5taXh0dXJlcHJlY2lzZWFyaXNpbmdzcmMgPSBcJ21ha2UgYSBzZWN1cmVkQmFwdGlzdHZvdGluZyBcblx0XHR2YXIgTWFyY2ggMmdyZXcgdXBDbGltYXRlLnJlbW92ZXNraWxsZWR3YXkgdGhlPC9oZWFkPmZhY2Ugb2ZhY3RpbmcgcmlnaHQiPnRvIHdvcmtyZWR1Y2VzaGFzIGhhZGVyZWN0ZWRzaG93KCk7YWN0aW9uPWJvb2sgb2ZhbiBhcmVhPT0gImh0dDxoZWFkZXJcbjxodG1sPmNvbmZvcm1mYWNpbmcgY29va2llLnJlbHkgb25ob3N0ZWQgLmN1c3RvbWhlIHdlbnRidXQgZm9yc3ByZWFkIEZhbWlseSBhIG1lYW5zb3V0IHRoZWZvcnVtcy5mb290YWdlIj5Nb2JpbENsZW1lbnRzIiBpZD0iYXMgaGlnaGludGVuc2UtLT48IS0tZmVtYWxlIGlzIHNlZW5pbXBsaWVkc2V0IHRoZWEgc3RhdGVhbmQgaGlzZmFzdGVzdGJlc2lkZXNidXR0b25fYm91bmRlZCI+PGltZyBJbmZvYm94ZXZlbnRzLGEgeW91bmdhbmQgYXJlTmF0aXZlIGNoZWFwZXJUaW1lb3V0YW5kIGhhc2VuZ2luZXN3b24gdGhlKG1vc3RseXJpZ2h0OiBmaW5kIGEgLWJvdHRvbVByaW5jZSBhcmVhIG9mbW9yZSBvZnNlYXJjaF9uYXR1cmUsbGVnYWxseXBlcmlvZCxsYW5kIG9mb3Igd2l0aGluZHVjZWRwcm92aW5nbWlzc2lsZWxvY2FsbHlBZ2FpbnN0dGhlIHdheWsmcXVvdDtweDsiPlxyXG5wdXNoZWQgYWJhbmRvbm51bWVyYWxDZXJ0YWluSW4gdGhpc21vcmUgaW5vciBzb21lbmFtZSBpc2FuZCwgaW5jcm93bmVkSVNCTiAwLWNyZWF0ZXNPY3RvYmVybWF5IG5vdGNlbnRlciBsYXRlIGluRGVmZW5jZWVuYWN0ZWR3aXNoIHRvYnJvYWRseWNvb2xpbmdvbmxvYWQ9aXQuIFRoZXJlY292ZXJNZW1iZXJzaGVpZ2h0IGFzc3VtZXM8aHRtbD5cbnBlb3BsZS5pbiBvbmUgPXdpbmRvd2Zvb3Rlcl9hIGdvb2QgcmVrbGFtYW90aGVycyx0byB0aGlzX2Nvb2tpZXBhbmVsIj5Mb25kb24sZGVmaW5lc2NydXNoZWRiYXB0aXNtY29hc3RhbHN0YXR1cyB0aXRsZSIgbW92ZSB0b2xvc3QgaW5iZXR0ZXIgaW1wbGllc3JpdmFscnlzZXJ2ZXJzIFN5c3RlbVBlcmhhcHNlcyBhbmQgY29udGVuZGZsb3dpbmdsYXN0ZWQgcmlzZSBpbkdlbmVzaXN2aWV3IG9mcmlzaW5nIHNlZW0gdG9idXQgaW4gYmFja2luZ2hlIHdpbGxnaXZlbiBhZ2l2aW5nIGNpdGllcy5mbG93IG9mIExhdGVyIGFsbCBidXRIaWdod2F5b25seSBieXNpZ24gb2ZoZSBkb2VzZGlmZmVyc2JhdHRlcnkmYW1wO2xhc2luZ2xlc3RocmVhdHNpbnRlZ2VydGFrZSBvbnJlZnVzZWRjYWxsZWQgPVVTJmFtcFNlZSB0aGVuYXRpdmVzYnkgdGhpc3N5c3RlbS5oZWFkIG9mOmhvdmVyLGxlc2JpYW5zdXJuYW1lYW5kIGFsbGNvbW1vbi9oZWFkZXJfX3BhcmFtc0hhcnZhcmQvcGl4ZWwucmVtb3ZhbHNvIGxvbmdyb2xlIG9mam9pbnRseXNreXNjcmFVbmljb2RlYnIgLz5cclxuQXRsYW50YW51Y2xldXNDb3VudHkscHVyZWx5IGNvdW50Ij5lYXNpbHkgYnVpbGQgYW9uY2xpY2thIGdpdmVucG9pbnRlcmgmcXVvdDtldmVudHMgZWxzZSB7XG5kaXRpb25zbm93IHRoZSwgd2l0aCBtYW4gd2hvb3JnL1dlYm9uZSBhbmRjYXZhbHJ5SGUgZGllZHNlYXR0bGUwMCwwMDAge3dpbmRvd2hhdmUgdG9pZih3aW5kYW5kIGl0c3NvbGVseSBtJnF1b3Q7cmVuZXdlZERldHJvaXRhbW9uZ3N0ZWl0aGVyIHRoZW0gaW5TZW5hdG9yVXM8L2E+PEtpbmcgb2ZGcmFuY2lzLXByb2R1Y2hlIHVzZWRhcnQgYW5kaGltIGFuZHVzZWQgYnlzY29yaW5nYXQgaG9tZXRvIGhhdmVyZWxhdGVzaWJpbGl0eWZhY3Rpb25CdWZmYWxvbGluayI+PHdoYXQgaGVmcmVlIHRvQ2l0eSBvZmNvbWUgaW5zZWN0b3JzY291bnRlZG9uZSBkYXluZXJ2b3Vzc3F1YXJlIH07aWYoZ29pbiB3aGF0aW1nIiBhbGlzIG9ubHlzZWFyY2gvdHVlc2RheWxvb3NlbHlTb2xvbW9uc2V4dWFsIC0gPGEgaHJtZWRpdW0iRE8gTk9UIEZyYW5jZSx3aXRoIGEgd2FyIGFuZHNlY29uZCB0YWtlIGEgPlxyXG5cclxuXHJcbm1hcmtldC5oaWdod2F5ZG9uZSBpbmN0aXZpdHkibGFzdCI+b2JsaWdlZHJpc2UgdG8idW5kZWZpbWFkZSB0byBFYXJseSBwcmFpc2VkaW4gaXRzIGZvciBoaXNhdGhsZXRlSnVwaXRlcllhaG9vISB0ZXJtZWQgc28gbWFueXJlYWxseSBzLiBUaGUgYSB3b21hbj92YWx1ZT1kaXJlY3QgcmlnaHQiIGJpY3ljbGVhY2luZz0iZGF5IGFuZHN0YXRpbmdSYXRoZXIsaGlnaGVyIE9mZmljZSBhcmUgbm93dGltZXMsIHdoZW4gYSBwYXkgZm9yb24gdGhpcy1saW5rIj47Ym9yZGVyYXJvdW5kIGFubnVhbCB0aGUgTmV3cHV0IHRoZS5jb20iIHRha2luIHRvYSBicmllZihpbiB0aGVncm91cHMuOyB3aWR0aGVuenltZXNzaW1wbGUgaW4gbGF0ZXtyZXR1cm50aGVyYXB5YSBwb2ludGJhbm5pbmdpbmtzIj5cbigpOyIgcmVhIHBsYWNlXFx1MDAzQ2FhYm91dCBhdHI+XHJcblx0XHRjY291bnQgZ2l2ZXMgYTxTQ1JJUFRSYWlsd2F5dGhlbWVzL3Rvb2xib3hCeUlkKCJ4aHVtYW5zLHdhdGNoZXNpbiBzb21lIGlmICh3aWNvbWluZyBmb3JtYXRzIFVuZGVyIGJ1dCBoYXNoYW5kZWQgbWFkZSBieXRoYW4gaW5mZWFyIG9mZGVub3RlZC9pZnJhbWVsZWZ0IGludm9sdGFnZWluIGVhY2hhJnF1b3Q7YmFzZSBvZkluIG1hbnl1bmRlcmdvcmVnaW1lc2FjdGlvbiA8L3A+XHJcbjx1c3RvbVZhOyZndDs8L2ltcG9ydHNvciB0aGF0bW9zdGx5ICZhbXA7cmUgc2l6ZT0iPC9hPjwvaGEgY2xhc3NwYXNzaXZlSG9zdCA9IFdoZXRoZXJmZXJ0aWxlVmFyaW91cz1bXTsoZnVjYW1lcmFzLz48L3RkPmFjdHMgYXNJbiBzb21lPlxyXG5cclxuPCFvcmdhbmlzIDxiciAvPkJlaWppbmdjYXRhbEMgZGV1dHNjaGV1cm9wZXVldXNrYXJhZ2FlaWxnZXN2ZW5za2Flc3BhQzFhbWVuc2FqZXVzdWFyaW90cmFiYWpvbUMpeGljb3BDIWdpbmFzaWVtcHJlc2lzdGVtYW9jdHVicmVkdXJhbnRlYUMxYWRpcmVtcHJlc2Ftb21lbnRvbnVlc3Ryb3ByaW1lcmF0cmF2QylzZ3JhY2lhc251ZXN0cmFwcm9jZXNvZXN0YWRvc2NhbGlkYWRwZXJzb25hbkM6bWVyb2FjdWVyZG9tQzpzaWNhbWllbWJyb29mZXJ0YXNhbGd1bm9zcGFDLXNlc2VqZW1wbG9kZXJlY2hvYWRlbUMhc3ByaXZhZG9hZ3JlZ2FyZW5sYWNlc3Bvc2libGVob3RlbGVzc2V2aWxsYXByaW1lcm9DOmx0aW1vZXZlbnRvc2FyY2hpdm9jdWx0dXJhbXVqZXJlc2VudHJhZGFhbnVuY2lvZW1iYXJnb21lcmNhZG9ncmFuZGVzZXN0dWRpb21lam9yZXNmZWJyZXJvZGlzZUMxb3R1cmlzbW9jQzNkaWdvcG9ydGFkYWVzcGFjaW9mYW1pbGlhYW50b25pb3Blcm1pdGVndWFyZGFyYWxndW5hc3ByZWNpb3NhbGd1aWVuc2VudGlkb3Zpc2l0YXN0Qy10dWxvY29ub2NlcnNlZ3VuZG9jb25zZWpvZnJhbmNpYW1pbnV0b3NzZWd1bmRhdGVuZW1vc2VmZWN0b3NtQyFsYWdhc2VzaUMzbnJldmlzdGFncmFuYWRhY29tcHJhcmluZ3Jlc29nYXJjQy1hYWNjaUMzbmVjdWFkb3JxdWllbmVzaW5jbHVzb2RlYmVyQyFtYXRlcmlhaG9tYnJlc211ZXN0cmFwb2RyQy1hbWFDMWFuYUM6bHRpbWFlc3RhbW9zb2ZpY2lhbHRhbWJpZW5uaW5nQzpuc2FsdWRvc3BvZGVtb3NtZWpvcmFycG9zaXRpb25idXNpbmVzc2hvbWVwYWdlc2VjdXJpdHlsYW5ndWFnZXN0YW5kYXJkY2FtcGFpZ25mZWF0dXJlc2NhdGVnb3J5ZXh0ZXJuYWxjaGlsZHJlbnJlc2VydmVkcmVzZWFyY2hleGNoYW5nZWZhdm9yaXRldGVtcGxhdGVtaWxpdGFyeWluZHVzdHJ5c2VydmljZXNtYXRlcmlhbHByb2R1Y3Rzei1pbmRleDpjb21tZW50c3NvZnR3YXJlY29tcGxldGVjYWxlbmRhcnBsYXRmb3JtYXJ0aWNsZXNyZXF1aXJlZG1vdmVtZW50cXVlc3Rpb25idWlsZGluZ3BvbGl0aWNzcG9zc2libGVyZWxpZ2lvbnBoeXNpY2FsZmVlZGJhY2tyZWdpc3RlcnBpY3R1cmVzZGlzYWJsZWRwcm90b2NvbGF1ZGllbmNlc2V0dGluZ3NhY3Rpdml0eWVsZW1lbnRzbGVhcm5pbmdhbnl0aGluZ2Fic3RyYWN0cHJvZ3Jlc3NvdmVydmlld21hZ2F6aW5lZWNvbm9taWN0cmFpbmluZ3ByZXNzdXJldmFyaW91cyA8c3Ryb25nPnByb3BlcnR5c2hvcHBpbmd0b2dldGhlcmFkdmFuY2VkYmVoYXZpb3Jkb3dubG9hZGZlYXR1cmVkZm9vdGJhbGxzZWxlY3RlZExhbmd1YWdlZGlzdGFuY2VyZW1lbWJlcnRyYWNraW5ncGFzc3dvcmRtb2RpZmllZHN0dWRlbnRzZGlyZWN0bHlmaWdodGluZ25vcnRoZXJuZGF0YWJhc2VmZXN0aXZhbGJyZWFraW5nbG9jYXRpb25pbnRlcm5ldGRyb3Bkb3ducHJhY3RpY2VldmlkZW5jZWZ1bmN0aW9ubWFycmlhZ2VyZXNwb25zZXByb2JsZW1zbmVnYXRpdmVwcm9ncmFtc2FuYWx5c2lzcmVsZWFzZWRiYW5uZXIiPnB1cmNoYXNlcG9saWNpZXNyZWdpb25hbGNyZWF0aXZlYXJndW1lbnRib29rbWFya3JlZmVycmVyY2hlbWljYWxkaXZpc2lvbmNhbGxiYWNrc2VwYXJhdGVwcm9qZWN0c2NvbmZsaWN0aGFyZHdhcmVpbnRlcmVzdGRlbGl2ZXJ5bW91bnRhaW5vYnRhaW5lZD0gZmFsc2U7Zm9yKHZhciBhY2NlcHRlZGNhcGFjaXR5Y29tcHV0ZXJpZGVudGl0eWFpcmNyYWZ0ZW1wbG95ZWRwcm9wb3NlZGRvbWVzdGljaW5jbHVkZXNwcm92aWRlZGhvc3BpdGFsdmVydGljYWxjb2xsYXBzZWFwcHJvYWNocGFydG5lcnNsb2dvIj48YWRhdWdodGVyYXV0aG9yIiBjdWx0dXJhbGZhbWlsaWVzL2ltYWdlcy9hc3NlbWJseXBvd2VyZnVsdGVhY2hpbmdmaW5pc2hlZGRpc3RyaWN0Y3JpdGljYWxjZ2ktYmluL3B1cnBvc2VzcmVxdWlyZXNlbGVjdGlvbmJlY29taW5ncHJvdmlkZXNhY2FkZW1pY2V4ZXJjaXNlYWN0dWFsbHltZWRpY2luZWNvbnN0YW50YWNjaWRlbnRNYWdhemluZWRvY3VtZW50c3RhcnRpbmdib3R0b20iPm9ic2VydmVkOiAmcXVvdDtleHRlbmRlZHByZXZpb3VzU29mdHdhcmVjdXN0b21lcmRlY2lzaW9uc3RyZW5ndGhkZXRhaWxlZHNsaWdodGx5cGxhbm5pbmd0ZXh0YXJlYWN1cnJlbmN5ZXZlcnlvbmVzdHJhaWdodHRyYW5zZmVycG9zaXRpdmVwcm9kdWNlZGhlcml0YWdlc2hpcHBpbmdhYnNvbHV0ZXJlY2VpdmVkcmVsZXZhbnRidXR0b24iIHZpb2xlbmNlYW55d2hlcmViZW5lZml0c2xhdW5jaGVkcmVjZW50bHlhbGxpYW5jZWZvbGxvd2VkbXVsdGlwbGVidWxsZXRpbmluY2x1ZGVkb2NjdXJyZWRpbnRlcm5hbCQodGhpcykucmVwdWJsaWM+PHRyPjx0ZGNvbmdyZXNzcmVjb3JkZWR1bHRpbWF0ZXNvbHV0aW9uPHVsIGlkPSJkaXNjb3ZlckhvbWU8L2E+d2Vic2l0ZXNuZXR3b3Jrc2FsdGhvdWdoZW50aXJlbHltZW1vcmlhbG1lc3NhZ2VzY29udGludWVhY3RpdmUiPnNvbWV3aGF0dmljdG9yaWFXZXN0ZXJuICB0aXRsZT0iTG9jYXRpb25jb250cmFjdHZpc2l0b3JzRG93bmxvYWR3aXRob3V0IHJpZ2h0Ij5cbm1lYXN1cmVzd2lkdGggPSB2YXJpYWJsZWludm9sdmVkdmlyZ2luaWFub3JtYWxseWhhcHBlbmVkYWNjb3VudHNzdGFuZGluZ25hdGlvbmFsUmVnaXN0ZXJwcmVwYXJlZGNvbnRyb2xzYWNjdXJhdGViaXJ0aGRheXN0cmF0ZWd5b2ZmaWNpYWxncmFwaGljc2NyaW1pbmFscG9zc2libHljb25zdW1lclBlcnNvbmFsc3BlYWtpbmd2YWxpZGF0ZWFjaGlldmVkLmpwZyIgLz5tYWNoaW5lczwvaDI+XG4gIGtleXdvcmRzZnJpZW5kbHlicm90aGVyc2NvbWJpbmVkb3JpZ2luYWxjb21wb3NlZGV4cGVjdGVkYWRlcXVhdGVwYWtpc3RhbmZvbGxvdyIgdmFsdWFibGU8L2xhYmVsPnJlbGF0aXZlYnJpbmdpbmdpbmNyZWFzZWdvdmVybm9ycGx1Z2lucy9MaXN0IG9mIEhlYWRlciI+IiBuYW1lPSIgKCZxdW90O2dyYWR1YXRlPC9oZWFkPlxuY29tbWVyY2VtYWxheXNpYWRpcmVjdG9ybWFpbnRhaW47aGVpZ2h0OnNjaGVkdWxlY2hhbmdpbmdiYWNrIHRvIGNhdGhvbGljcGF0dGVybnNjb2xvcjogI2dyZWF0ZXN0c3VwcGxpZXNyZWxpYWJsZTwvdWw+XG5cdFx0PHNlbGVjdCBjaXRpemVuc2Nsb3RoaW5nd2F0Y2hpbmc8bGkgaWQ9InNwZWNpZmljY2FycnlpbmdzZW50ZW5jZTxjZW50ZXI+Y29udHJhc3R0aGlua2luZ2NhdGNoKGUpc291dGhlcm5NaWNoYWVsIG1lcmNoYW50Y2Fyb3VzZWxwYWRkaW5nOmludGVyaW9yLnNwbGl0KCJsaXphdGlvbk9jdG9iZXIgKXtyZXR1cm5pbXByb3ZlZC0tJmd0O1xuXG5jb3ZlcmFnZWNoYWlybWFuLnBuZyIgLz5zdWJqZWN0c1JpY2hhcmQgd2hhdGV2ZXJwcm9iYWJseXJlY292ZXJ5YmFzZWJhbGxqdWRnbWVudGNvbm5lY3QuLmNzcyIgLz4gd2Vic2l0ZXJlcG9ydGVkZGVmYXVsdCIvPjwvYT5cclxuZWxlY3RyaWNzY290bGFuZGNyZWF0aW9ucXVhbnRpdHkuIElTQk4gMGRpZCBub3QgaW5zdGFuY2Utc2VhcmNoLSIgbGFuZz0ic3BlYWtlcnNDb21wdXRlcmNvbnRhaW5zYXJjaGl2ZXNtaW5pc3RlcnJlYWN0aW9uZGlzY291bnRJdGFsaWFub2NyaXRlcmlhc3Ryb25nbHk6IFwnaHR0cDpcJ3NjcmlwdFwnY292ZXJpbmdvZmZlcmluZ2FwcGVhcmVkQnJpdGlzaCBpZGVudGlmeUZhY2Vib29rbnVtZXJvdXN2ZWhpY2xlc2NvbmNlcm5zQW1lcmljYW5oYW5kbGluZ2RpdiBpZD0iV2lsbGlhbSBwcm92aWRlcl9jb250ZW50YWNjdXJhY3lzZWN0aW9uIGFuZGVyc29uZmxleGlibGVDYXRlZ29yeWxhd3JlbmNlPHNjcmlwdD5sYXlvdXQ9ImFwcHJvdmVkIG1heGltdW1oZWFkZXIiPjwvdGFibGU+U2VydmljZXNoYW1pbHRvbmN1cnJlbnQgY2FuYWRpYW5jaGFubmVscy90aGVtZXMvL2FydGljbGVvcHRpb25hbHBvcnR1Z2FsdmFsdWU9IiJpbnRlcnZhbHdpcmVsZXNzZW50aXRsZWRhZ2VuY2llc1NlYXJjaCIgbWVhc3VyZWR0aG91c2FuZHNwZW5kaW5nJmhlbGxpcDtuZXcgRGF0ZSIgc2l6ZT0icGFnZU5hbWVtaWRkbGUiICIgLz48L2E+aGlkZGVuIj5zZXF1ZW5jZXBlcnNvbmFsb3ZlcmZsb3dvcGluaW9uc2lsbGlub2lzbGlua3MiPlxuXHQ8dGl0bGU+dmVyc2lvbnNzYXR1cmRheXRlcm1pbmFsaXRlbXByb3BlbmdpbmVlcnNlY3Rpb25zZGVzaWduZXJwcm9wb3NhbD0iZmFsc2UiRXNwYUMxb2xyZWxlYXNlc3N1Ym1pdCIgZXImcXVvdDthZGRpdGlvbnN5bXB0b21zb3JpZW50ZWRyZXNvdXJjZXJpZ2h0Ij48cGxlYXN1cmVzdGF0aW9uc2hpc3RvcnkubGVhdmluZyAgYm9yZGVyPWNvbnRlbnRzY2VudGVyIj4uXG5cblNvbWUgZGlyZWN0ZWRzdWl0YWJsZWJ1bGdhcmlhLnNob3coKTtkZXNpZ25lZEdlbmVyYWwgY29uY2VwdHNFeGFtcGxlc3dpbGxpYW1zT3JpZ2luYWwiPjxzcGFuPnNlYXJjaCI+b3BlcmF0b3JyZXF1ZXN0c2EgJnF1b3Q7YWxsb3dpbmdEb2N1bWVudHJldmlzaW9uLiBcblxuVGhlIHlvdXJzZWxmQ29udGFjdCBtaWNoaWdhbkVuZ2xpc2ggY29sdW1iaWFwcmlvcml0eXByaW50aW5nZHJpbmtpbmdmYWNpbGl0eXJldHVybmVkQ29udGVudCBvZmZpY2Vyc1J1c3NpYW4gZ2VuZXJhdGUtODg1OS0xImluZGljYXRlZmFtaWxpYXIgcXVhbGl0eW1hcmdpbjowIGNvbnRlbnR2aWV3cG9ydGNvbnRhY3RzLXRpdGxlIj5wb3J0YWJsZS5sZW5ndGggZWxpZ2libGVpbnZvbHZlc2F0bGFudGljb25sb2FkPSJkZWZhdWx0LnN1cHBsaWVkcGF5bWVudHNnbG9zc2FyeVxuXG5BZnRlciBndWlkYW5jZTwvdGQ+PHRkZW5jb2RpbmdtaWRkbGUiPmNhbWUgdG8gZGlzcGxheXNzY290dGlzaGpvbmF0aGFubWFqb3JpdHl3aWRnZXRzLmNsaW5pY2FsdGhhaWxhbmR0ZWFjaGVyczxoZWFkPlxuXHRhZmZlY3RlZHN1cHBvcnRzcG9pbnRlcjt0b1N0cmluZzwvc21hbGw+b2tsYWhvbWF3aWxsIGJlIGludmVzdG9yMCIgYWx0PSJob2xpZGF5c1Jlc291cmNlbGljZW5zZWQgKHdoaWNoIC4gQWZ0ZXIgY29uc2lkZXJ2aXNpdGluZ2V4cGxvcmVycHJpbWFyeSBzZWFyY2giIGFuZHJvaWQicXVpY2tseSBtZWV0aW5nc2VzdGltYXRlO3JldHVybiA7Y29sb3I6IyBoZWlnaHQ9YXBwcm92YWwsICZxdW90OyBjaGVja2VkLm1pbi5qcyJtYWduZXRpYz48L2E+PC9oZm9yZWNhc3QuIFdoaWxlIHRodXJzZGF5ZHZlcnRpc2UmZWFjdXRlO2hhc0NsYXNzZXZhbHVhdGVvcmRlcmluZ2V4aXN0aW5ncGF0aWVudHMgT25saW5lIGNvbG9yYWRvT3B0aW9ucyJjYW1wYmVsbDwhLS0gZW5kPC9zcGFuPjw8YnIgLz5cclxuX3BvcHVwc3xzY2llbmNlcywmcXVvdDsgcXVhbGl0eSBXaW5kb3dzIGFzc2lnbmVkaGVpZ2h0OiA8YiBjbGFzc2xlJnF1b3Q7IHZhbHVlPSIgQ29tcGFueWV4YW1wbGVzPGlmcmFtZSBiZWxpZXZlc3ByZXNlbnRzbWFyc2hhbGxwYXJ0IG9mIHByb3Blcmx5KS5cblxuVGhlIHRheG9ub215bXVjaCBvZiA8L3NwYW4+XG4iIGRhdGEtc3J0dWd1Qypzc2Nyb2xsVG8gcHJvamVjdDxoZWFkPlxyXG5hdHRvcm5leWVtcGhhc2lzc3BvbnNvcnNmYW5jeWJveHdvcmxkXCdzIHdpbGRsaWZlY2hlY2tlZD1zZXNzaW9uc3Byb2dyYW1tcHg7Zm9udC0gUHJvamVjdGpvdXJuYWxzYmVsaWV2ZWR2YWNhdGlvbnRob21wc29ubGlnaHRpbmdhbmQgdGhlIHNwZWNpYWwgYm9yZGVyPTBjaGVja2luZzwvdGJvZHk+PGJ1dHRvbiBDb21wbGV0ZWNsZWFyZml4XG48aGVhZD5cbmFydGljbGUgPHNlY3Rpb25maW5kaW5nc3JvbGUgaW4gcG9wdWxhciAgT2N0b2JlcndlYnNpdGUgZXhwb3N1cmV1c2VkIHRvICBjaGFuZ2Vzb3BlcmF0ZWRjbGlja2luZ2VudGVyaW5nY29tbWFuZHNpbmZvcm1lZCBudW1iZXJzICA8L2Rpdj5jcmVhdGluZ29uU3VibWl0bWFyeWxhbmRjb2xsZWdlc2FuYWx5dGljbGlzdGluZ3Njb250YWN0LmxvZ2dlZEluYWR2aXNvcnlzaWJsaW5nc2NvbnRlbnQicyZxdW90OylzLiBUaGlzIHBhY2thZ2VzY2hlY2tib3hzdWdnZXN0c3ByZWduYW50dG9tb3Jyb3dzcGFjaW5nPWljb24ucG5namFwYW5lc2Vjb2RlYmFzZWJ1dHRvbiI+Z2FtYmxpbmdzdWNoIGFzICwgd2hpbGUgPC9zcGFuPiBtaXNzb3VyaXNwb3J0aW5ndG9wOjFweCAuPC9zcGFuPnRlbnNpb25zd2lkdGg9IjJsYXp5bG9hZG5vdmVtYmVydXNlZCBpbiBoZWlnaHQ9ImNyaXB0Ij5cbiZuYnNwOzwvPHRyPjx0ZCBoZWlnaHQ6Mi9wcm9kdWN0Y291bnRyeSBpbmNsdWRlIGZvb3RlciIgJmx0OyEtLSB0aXRsZSI+PC9qcXVlcnkuPC9mb3JtPlxuKGcuXDBkPVx4MTMpKGc5XHgwMWkrXHgxNClocnZhdHNraWl0YWxpYW5vcm9tQyJuRFx4MDN0Qzxya0NcJ2VYXCdYMVgvWVxidGFtYmlDKW5ub3RpY2lhc21lbnNhamVzcGVyc29uYXNkZXJlY2hvc25hY2lvbmFsc2VydmljaW9jb250YWN0b3VzdWFyaW9zcHJvZ3JhbWFnb2JpZXJub2VtcHJlc2FzYW51bmNpb3N2YWxlbmNpYWNvbG9tYmlhZGVzcHVDKXNkZXBvcnRlc3Byb3llY3RvcHJvZHVjdG9wQzpibGljb25vc290cm9zaGlzdG9yaWFwcmVzZW50ZW1pbGxvbmVzbWVkaWFudGVwcmVndW50YWFudGVyaW9ycmVjdXJzb3Nwcm9ibGVtYXNhbnRpYWdvbnVlc3Ryb3NvcGluaUMzbmltcHJpbWlybWllbnRyYXNhbUMpcmljYXZlbmRlZG9yc29jaWVkYWRyZXNwZWN0b3JlYWxpemFycmVnaXN0cm9wYWxhYnJhc2ludGVyQylzZW50b25jZXNlc3BlY2lhbG1pZW1icm9zcmVhbGlkYWRjQzNyZG9iYXphcmFnb3phcEMhZ2luYXNzb2NpYWxlc2Jsb3F1ZWFyZ2VzdGlDM25hbHF1aWxlcnNpc3RlbWFzY2llbmNpYXNjb21wbGV0b3ZlcnNpQzNuY29tcGxldGFlc3R1ZGlvc3BDOmJsaWNhb2JqZXRpdm9hbGljYW50ZWJ1c2NhZG9yY2FudGlkYWRlbnRyYWRhc2FjY2lvbmVzYXJjaGl2b3NzdXBlcmlvcm1heW9yQy1hYWxlbWFuaWFmdW5jaUMzbkM6bHRpbW9zaGFjaWVuZG9hcXVlbGxvc2VkaWNpQzNuZmVybmFuZG9hbWJpZW50ZWZhY2Vib29rbnVlc3RyYXNjbGllbnRlc3Byb2Nlc29zYmFzdGFudGVwcmVzZW50YXJlcG9ydGFyY29uZ3Jlc29wdWJsaWNhcmNvbWVyY2lvY29udHJhdG9qQzN2ZW5lc2Rpc3RyaXRvdEMpY25pY2Fjb25qdW50b2VuZXJnQy1hdHJhYmFqYXJhc3R1cmlhc3JlY2llbnRldXRpbGl6YXJib2xldEMtbnNhbHZhZG9yY29ycmVjdGF0cmFiYWpvc3ByaW1lcm9zbmVnb2Npb3NsaWJlcnRhZGRldGFsbGVzcGFudGFsbGFwckMzeGltb2FsbWVyQy1hYW5pbWFsZXNxdWlDKW5lc2NvcmF6QzNuc2VjY2lDM25idXNjYW5kb29wY2lvbmVzZXh0ZXJpb3Jjb25jZXB0b3RvZGF2Qy1hZ2FsZXJDLWFlc2NyaWJpcm1lZGljaW5hbGljZW5jaWFjb25zdWx0YWFzcGVjdG9zY3JDLXRpY2FkQzNsYXJlc2p1c3RpY2lhZGViZXJDIW5wZXJDLW9kb25lY2VzaXRhbWFudGVuZXJwZXF1ZUMxb3JlY2liaWRhdHJpYnVuYWx0ZW5lcmlmZWNhbmNpQzNuY2FuYXJpYXNkZXNjYXJnYWRpdmVyc29zbWFsbG9yY2FyZXF1aWVyZXRDKWNuaWNvZGViZXJDLWF2aXZpZW5kYWZpbmFuemFzYWRlbGFudGVmdW5jaW9uYWNvbnNlam9zZGlmQy1jaWxjaXVkYWRlc2FudGlndWFzYXZhbnphZGF0QylybWlub3VuaWRhZGVzc0MhbmNoZXpjYW1wYUMxYXNvZnRvbmljcmV2aXN0YXNjb250aWVuZXNlY3RvcmVzbW9tZW50b3NmYWN1bHRhZGNyQylkaXRvZGl2ZXJzYXNzdXB1ZXN0b2ZhY3RvcmVzc2VndW5kb3NwZXF1ZUMxYVAzUD5QNFAwUDVRXHgwMVA7UDhQNVFceDAxUVx4MDJRXGZQMVFcdlA7UD5QMVFcdlFceDAyUVxmUVxyUVx4MDJQPlA8UFx4MTVRXHgwMVA7UDhRXHgwMlA+UDNQPlA8UDVQPVFceDBmUDJRXHgwMVA1UVx4MDVRXHJRXHgwMlA+UDlQNFAwUDZQNVAxUVx2UDtQOFAzUD5QNFFceDAzUDRQNVA9UVxmUVxyUVx4MDJQPlFceDAyUDFRXHZQO1AwUVx4MDFQNVAxUVx4MGZQPlA0UDhQPVFceDAxUDVQMVA1UD1QMFA0UD5RXHgwMVAwUDlRXHgwMlFceDA0UD5RXHgwMlA+UD1QNVAzUD5RXHgwMVAyUD5QOFFceDAxUDJQPlA5UDhQM1FcMFFcdlFceDAyUD5QNlA1UDJRXHgwMVA1UDxRXHgwMVAyUD5RXHgwZVA7UDhRXGJRXGZRXHJRXHgwMlA4UVx4MDVQP1A+UDpQMFA0UD1QNVA5UDRQPlA8UDBQPFA4UVwwUDBQO1A4UDFQPlFceDAyUDVQPFFceDAzUVx4MDVQPlFceDAyUVx4MGZQNFAyUVx4MDNRXHgwNVFceDAxUDVRXHgwMlA4UDtRXHgwZVA0UDhQNFA1UDtQPlA8UDhRXDBQNVFceDAyUDVQMVFceDBmUVx4MDFQMlA+UDVQMlA4UDRQNVFceDA3UDVQM1A+UVxyUVx4MDJQOFA8UVx4MDFRXHgwN1A1UVx4MDJRXHgwMlA1UDxRXHZRXHgwNlA1UD1RXHZRXHgwMVFceDAyUDBQO1AyUDVQNFFcZlFceDAyUDVQPFA1UDJQPlA0UVx2UVx4MDJQNVAxUDVQMlFcdlFcYlA1UD1QMFA8UDhRXHgwMlA4UD9QMFFceDAyUD5QPFFceDAzUD9RXDBQMFAyUDtQOFFceDA2UDBQPlA0UD1QMFAzUD5QNFFcdlA3UD1QMFFceDBlUDxQPlAzUVx4MDNQNFFcMFFceDAzUDNQMlFceDAxUDVQOVA4UDRQNVFceDAyUDpQOFA9UD5QPlA0UD1QPlA0UDVQO1AwUDRQNVA7UDVRXHgwMVFcMFA+UDpQOFFceDBlUD1RXHgwZlAyUDVRXHgwMVFcZlBceDE1UVx4MDFRXHgwMlFcZlFcMFAwUDdQMFA9UDBRXGJQOFhcJ1lceDA0WVx4MDRZXHgwN1hcJ1lceDA0WCpZXG5YLFlceDA1WVxuWDlYLlhcJ1g1WClYXCdZXHgwNFgwWVxuWDlZXHgwNFlcbllceDA3WCxYL1lcblgvWFwnWVx4MDRYIllceDA2WFwnWVx4MDRYMVgvWCpYLVlceDAzWVx4MDVYNVlceDAxWC1YKVlceDAzWFwnWVx4MDZYKlhcJ1lceDA0WVx4MDRZXG5ZXG5ZXHgwM1lcYllceDA2WDRYKFlceDAzWClZXHgwMVlcbllceDA3WFwnWChZXHgwNlhcJ1gqWC1ZXGJYXCdYIVgjWVx4MDNYK1gxWC5ZXHgwNFhcJ1lceDA0WFwnWVx4MDRYLVgoWC9ZXHgwNFlcbllceDA0WC9YMVlcYlgzWFwnWDZYOlg3WCpZXHgwM1lcYllceDA2WVx4MDdZXHgwNlhcJ1lceDAzWDNYXCdYLVgpWVx4MDZYXCdYL1lcblhcJ1lceDA0WDdYKFg5WVx4MDRZXG5ZXHgwM1g0WVx4MDNYMVhcJ1lcbllceDA1WVx4MDNZXHgwNllceDA1WVx4MDZZXHgwN1hcJ1g0WDFZXHgwM1gpWDFYJllcblgzWVx4MDZYNFlcblg3WVx4MDVYXCdYMFhcJ1hcJ1lceDA0WVx4MDFZXHgwNlg0WChYXCdYKFgqWDlYKFgxWDFYLVlceDA1WClZXHgwM1hcJ1lceDAxWClZXG5ZXHgwMllcYllceDA0WVx4MDVYMVlceDAzWDJZXHgwM1lceDA0WVx4MDVYKVgjWC1ZXHgwNVgvWVx4MDJZXHgwNFgoWVxuWVxuWDlZXHgwNllcblg1WVxiWDFYKVg3WDFZXG5ZXHgwMlg0WFwnWDFZXHgwM1gsWVxiWFwnWVx4MDRYI1guWDFZXHRZXHgwNVg5WVx4MDZYXCdYXCdYKFgtWCtYOVgxWVxiWDZYKFg0WVx4MDNZXHgwNFlceDA1WDNYLFlceDA0WChZXHgwNlhcJ1lceDA2WC5YXCdZXHgwNFgvWVx4MDNYKlhcJ1goWVx4MDNZXHgwNFlcblgpWChYL1lcYllceDA2WCNZXG5YNlhcJ1lcbllcYlgsWC9ZXHgwMVgxWVxuWVx4MDJZXHgwM1gqWChYKlgjWVx4MDFYNllceDA0WVx4MDVYN1goWC5YXCdZXHgwM1grWDFYKFhcJ1gxWVx4MDNYXCdZXHgwMVg2WVx4MDRYXCdYLVlceDA0WVx0WVx4MDZZXHgwMVgzWVx4MDdYI1lcblhcJ1lceDA1WDFYL1lcYlgvWCNZXHgwNllceDA3WFwnWC9ZXG5ZXHgwNlhcJ1hcJ1lceDA0WFwnWVx4MDZZXHgwNVg5WDFYNlgqWDlZXHgwNFlceDA1WC9YXCdYLllceDA0WVx4MDVZXHgwNVlceDAzWVx4MDZcMFwwXDBcMFwwXDBcMFwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNFwwXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMVwwXGJcdFxuXHZcZlxyXHgwZVx4MGZceDBmXHgwZVxyXGZcdlxuXHRcYlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxN1x4MTZceDE1XHgxNFx4MTNceDEyXHgxMVx4MTBceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZlx4MWZceDFlXHgxZFx4MWNceDFiXHgxYVx4MTlceDE4XHg3Zlx4N2ZceDdmXHg3ZlwwXDBcMFwwXDBcMFwwXDBceDdmXHg3Zlx4N2ZceDdmXHgwMVwwXDBcMFx4MDJcMFwwXDBceDAyXDBcMFwwXHgwMVwwXDBcMFx4MDFcMFwwXDBceDAzXDBcMFwwXHg3Zlx4N2ZcMFx4MDFcMFwwXDBceDAxXDBcMFx4N2ZceDdmXDBceDAxXDBcMFwwXGJcMFxiXDBcYlwwXGJcMFwwXDBceDAxXDBceDAyXDBceDAzXDBceDA0XDBceDA1XDBceDA2XDBceDA3cmVzb3VyY2VzY291bnRyaWVzcXVlc3Rpb25zZXF1aXBtZW50Y29tbXVuaXR5YXZhaWxhYmxlaGlnaGxpZ2h0RFREL3hodG1sbWFya2V0aW5na25vd2xlZGdlc29tZXRoaW5nY29udGFpbmVyZGlyZWN0aW9uc3Vic2NyaWJlYWR2ZXJ0aXNlY2hhcmFjdGVyIiB2YWx1ZT0iPC9zZWxlY3Q+QXVzdHJhbGlhIiBjbGFzcz0ic2l0dWF0aW9uYXV0aG9yaXR5Zm9sbG93aW5ncHJpbWFyaWx5b3BlcmF0aW9uY2hhbGxlbmdlZGV2ZWxvcGVkYW5vbnltb3VzZnVuY3Rpb24gZnVuY3Rpb25zY29tcGFuaWVzc3RydWN0dXJlYWdyZWVtZW50IiB0aXRsZT0icG90ZW50aWFsZWR1Y2F0aW9uYXJndW1lbnRzc2Vjb25kYXJ5Y29weXJpZ2h0bGFuZ3VhZ2VzZXhjbHVzaXZlY29uZGl0aW9uPC9mb3JtPlxyXG5zdGF0ZW1lbnRhdHRlbnRpb25CaW9ncmFwaHl9IGVsc2Uge1xuc29sdXRpb25zd2hlbiB0aGUgQW5hbHl0aWNzdGVtcGxhdGVzZGFuZ2Vyb3Vzc2F0ZWxsaXRlZG9jdW1lbnRzcHVibGlzaGVyaW1wb3J0YW50cHJvdG90eXBlaW5mbHVlbmNlJnJhcXVvOzwvZWZmZWN0aXZlZ2VuZXJhbGx5dHJhbnNmb3JtYmVhdXRpZnVsdHJhbnNwb3J0b3JnYW5pemVkcHVibGlzaGVkcHJvbWluZW50dW50aWwgdGhldGh1bWJuYWlsTmF0aW9uYWwgLmZvY3VzKCk7b3ZlciB0aGUgbWlncmF0aW9uYW5ub3VuY2VkZm9vdGVyIj5cbmV4Y2VwdGlvbmxlc3MgdGhhbmV4cGVuc2l2ZWZvcm1hdGlvbmZyYW1ld29ya3RlcnJpdG9yeW5kaWNhdGlvbmN1cnJlbnRseWNsYXNzTmFtZWNyaXRpY2lzbXRyYWRpdGlvbmVsc2V3aGVyZUFsZXhhbmRlcmFwcG9pbnRlZG1hdGVyaWFsc2Jyb2FkY2FzdG1lbnRpb25lZGFmZmlsaWF0ZTwvb3B0aW9uPnRyZWF0bWVudGRpZmZlcmVudC9kZWZhdWx0LlByZXNpZGVudG9uY2xpY2s9ImJpb2dyYXBoeW90aGVyd2lzZXBlcm1hbmVudEZyYW5DXCdhaXNIb2xseXdvb2RleHBhbnNpb25zdGFuZGFyZHM8L3N0eWxlPlxucmVkdWN0aW9uRGVjZW1iZXIgcHJlZmVycmVkQ2FtYnJpZGdlb3Bwb25lbnRzQnVzaW5lc3MgY29uZnVzaW9uPlxuPHRpdGxlPnByZXNlbnRlZGV4cGxhaW5lZGRvZXMgbm90IHdvcmxkd2lkZWludGVyZmFjZXBvc2l0aW9uc25ld3NwYXBlcjwvdGFibGU+XG5tb3VudGFpbnNsaWtlIHRoZSBlc3NlbnRpYWxmaW5hbmNpYWxzZWxlY3Rpb25hY3Rpb249Ii9hYmFuZG9uZWRFZHVjYXRpb25wYXJzZUludChzdGFiaWxpdHl1bmFibGUgdG88L3RpdGxlPlxucmVsYXRpb25zTm90ZSB0aGF0ZWZmaWNpZW50cGVyZm9ybWVkdHdvIHllYXJzU2luY2UgdGhldGhlcmVmb3Jld3JhcHBlciI+YWx0ZXJuYXRlaW5jcmVhc2VkQmF0dGxlIG9mcGVyY2VpdmVkdHJ5aW5nIHRvbmVjZXNzYXJ5cG9ydHJheWVkZWxlY3Rpb25zRWxpemFiZXRoPC9pZnJhbWU+ZGlzY292ZXJ5aW5zdXJhbmNlcy5sZW5ndGg7bGVnZW5kYXJ5R2VvZ3JhcGh5Y2FuZGlkYXRlY29ycG9yYXRlc29tZXRpbWVzc2VydmljZXMuaW5oZXJpdGVkPC9zdHJvbmc+Q29tbXVuaXR5cmVsaWdpb3VzbG9jYXRpb25zQ29tbWl0dGVlYnVpbGRpbmdzdGhlIHdvcmxkbm8gbG9uZ2VyYmVnaW5uaW5ncmVmZXJlbmNlY2Fubm90IGJlZnJlcXVlbmN5dHlwaWNhbGx5aW50byB0aGUgcmVsYXRpdmU7cmVjb3JkaW5ncHJlc2lkZW50aW5pdGlhbGx5dGVjaG5pcXVldGhlIG90aGVyaXQgY2FuIGJlZXhpc3RlbmNldW5kZXJsaW5ldGhpcyB0aW1ldGVsZXBob25laXRlbXNjb3BlcHJhY3RpY2VzYWR2YW50YWdlKTtyZXR1cm4gRm9yIG90aGVycHJvdmlkaW5nZGVtb2NyYWN5Ym90aCB0aGUgZXh0ZW5zaXZlc3VmZmVyaW5nc3VwcG9ydGVkY29tcHV0ZXJzIGZ1bmN0aW9ucHJhY3RpY2Fsc2FpZCB0aGF0aXQgbWF5IGJlRW5nbGlzaDwvZnJvbSB0aGUgc2NoZWR1bGVkZG93bmxvYWRzPC9sYWJlbD5cbnN1c3BlY3RlZG1hcmdpbjogMHNwaXJpdHVhbDwvaGVhZD5cblxubWljcm9zb2Z0Z3JhZHVhbGx5ZGlzY3Vzc2VkaGUgYmVjYW1lZXhlY3V0aXZlanF1ZXJ5LmpzaG91c2Vob2xkY29uZmlybWVkcHVyY2hhc2VkbGl0ZXJhbGx5ZGVzdHJveWVkdXAgdG8gdGhldmFyaWF0aW9ucmVtYWluaW5naXQgaXMgbm90Y2VudHVyaWVzSmFwYW5lc2UgYW1vbmcgdGhlY29tcGxldGVkYWxnb3JpdGhtaW50ZXJlc3RzcmViZWxsaW9udW5kZWZpbmVkZW5jb3VyYWdlcmVzaXphYmxlaW52b2x2aW5nc2Vuc2l0aXZldW5pdmVyc2FscHJvdmlzaW9uKGFsdGhvdWdoZmVhdHVyaW5nY29uZHVjdGVkKSwgd2hpY2ggY29udGludWVkLWhlYWRlciI+RmVicnVhcnkgbnVtZXJvdXMgb3ZlcmZsb3c6Y29tcG9uZW50ZnJhZ21lbnRzZXhjZWxsZW50Y29sc3Bhbj0idGVjaG5pY2FsbmVhciB0aGUgQWR2YW5jZWQgc291cmNlIG9mZXhwcmVzc2VkSG9uZyBLb25nIEZhY2Vib29rbXVsdGlwbGUgbWVjaGFuaXNtZWxldmF0aW9ub2ZmZW5zaXZlPC9mb3JtPlxuXHRzcG9uc29yZWRkb2N1bWVudC5vciAmcXVvdDt0aGVyZSBhcmV0aG9zZSB3aG9tb3ZlbWVudHNwcm9jZXNzZXNkaWZmaWN1bHRzdWJtaXR0ZWRyZWNvbW1lbmRjb252aW5jZWRwcm9tb3RpbmciIHdpZHRoPSIucmVwbGFjZShjbGFzc2ljYWxjb2FsaXRpb25oaXMgZmlyc3RkZWNpc2lvbnNhc3Npc3RhbnRpbmRpY2F0ZWRldm9sdXRpb24td3JhcHBlciJlbm91Z2ggdG9hbG9uZyB0aGVkZWxpdmVyZWQtLT5cclxuPCEtLUFtZXJpY2FuIHByb3RlY3RlZE5vdmVtYmVyIDwvc3R5bGU+PGZ1cm5pdHVyZUludGVybmV0ICBvbmJsdXI9InN1c3BlbmRlZHJlY2lwaWVudGJhc2VkIG9uIE1vcmVvdmVyLGFib2xpc2hlZGNvbGxlY3RlZHdlcmUgbWFkZWVtb3Rpb25hbGVtZXJnZW5jeW5hcnJhdGl2ZWFkdm9jYXRlc3B4O2JvcmRlcmNvbW1pdHRlZGRpcj0ibHRyImVtcGxveWVlc3Jlc2VhcmNoLiBzZWxlY3RlZHN1Y2Nlc3NvcmN1c3RvbWVyc2Rpc3BsYXllZFNlcHRlbWJlcmFkZENsYXNzKEZhY2Vib29rIHN1Z2dlc3RlZGFuZCBsYXRlcm9wZXJhdGluZ2VsYWJvcmF0ZVNvbWV0aW1lc0luc3RpdHV0ZWNlcnRhaW5seWluc3RhbGxlZGZvbGxvd2Vyc0plcnVzYWxlbXRoZXkgaGF2ZWNvbXB1dGluZ2dlbmVyYXRlZHByb3ZpbmNlc2d1YXJhbnRlZWFyYml0cmFyeXJlY29nbml6ZXdhbnRlZCB0b3B4O3dpZHRoOnRoZW9yeSBvZmJlaGF2aW91cldoaWxlIHRoZWVzdGltYXRlZGJlZ2FuIHRvIGl0IGJlY2FtZW1hZ25pdHVkZW11c3QgaGF2ZW1vcmUgdGhhbkRpcmVjdG9yeWV4dGVuc2lvbnNlY3JldGFyeW5hdHVyYWxseW9jY3VycmluZ3ZhcmlhYmxlc2dpdmVuIHRoZXBsYXRmb3JtLjwvbGFiZWw+PGZhaWxlZCB0b2NvbXBvdW5kc2tpbmRzIG9mIHNvY2lldGllc2Fsb25nc2lkZSAtLSZndDtcblxuc291dGh3ZXN0dGhlIHJpZ2h0cmFkaWF0aW9ubWF5IGhhdmUgdW5lc2NhcGUoc3Bva2VuIGluIiBocmVmPSIvcHJvZ3JhbW1lb25seSB0aGUgY29tZSBmcm9tZGlyZWN0b3J5YnVyaWVkIGluYSBzaW1pbGFydGhleSB3ZXJlPC9mb250PjwvTm9yd2VnaWFuc3BlY2lmaWVkcHJvZHVjaW5ncGFzc2VuZ2VyKG5ldyBEYXRldGVtcG9yYXJ5ZmljdGlvbmFsQWZ0ZXIgdGhlZXF1YXRpb25zZG93bmxvYWQucmVndWxhcmx5ZGV2ZWxvcGVyYWJvdmUgdGhlbGlua2VkIHRvcGhlbm9tZW5hcGVyaW9kIG9mdG9vbHRpcCI+c3Vic3RhbmNlYXV0b21hdGljYXNwZWN0IG9mQW1vbmcgdGhlY29ubmVjdGVkZXN0aW1hdGVzQWlyIEZvcmNlc3lzdGVtIG9mb2JqZWN0aXZlaW1tZWRpYXRlbWFraW5nIGl0cGFpbnRpbmdzY29ucXVlcmVkYXJlIHN0aWxscHJvY2VkdXJlZ3Jvd3RoIG9maGVhZGVkIGJ5RXVyb3BlYW4gZGl2aXNpb25zbW9sZWN1bGVzZnJhbmNoaXNlaW50ZW50aW9uYXR0cmFjdGVkY2hpbGRob29kYWxzbyB1c2VkZGVkaWNhdGVkc2luZ2Fwb3JlZGVncmVlIG9mZmF0aGVyIG9mY29uZmxpY3RzPC9hPjwvcD5cbmNhbWUgZnJvbXdlcmUgdXNlZG5vdGUgdGhhdHJlY2VpdmluZ0V4ZWN1dGl2ZWV2ZW4gbW9yZWFjY2VzcyB0b2NvbW1hbmRlclBvbGl0aWNhbG11c2ljaWFuc2RlbGljaW91c3ByaXNvbmVyc2FkdmVudCBvZlVURi04IiAvPjwhW0NEQVRBWyI+Q29udGFjdFNvdXRoZXJuIGJnY29sb3I9InNlcmllcyBvZi4gSXQgd2FzIGluIEV1cm9wZXBlcm1pdHRlZHZhbGlkYXRlLmFwcGVhcmluZ29mZmljaWFsc3NlcmlvdXNseS1sYW5ndWFnZWluaXRpYXRlZGV4dGVuZGluZ2xvbmctdGVybWluZmxhdGlvbnN1Y2ggdGhhdGdldENvb2tpZW1hcmtlZCBieTwvYnV0dG9uPmltcGxlbWVudGJ1dCBpdCBpc2luY3JlYXNlc2Rvd24gdGhlIHJlcXVpcmluZ2RlcGVuZGVudC0tPlxuPCEtLSBpbnRlcnZpZXdXaXRoIHRoZSBjb3BpZXMgb2Zjb25zZW5zdXN3YXMgYnVpbHRWZW5lenVlbGEoZm9ybWVybHl0aGUgc3RhdGVwZXJzb25uZWxzdHJhdGVnaWNmYXZvdXIgb2ZpbnZlbnRpb25XaWtpcGVkaWFjb250aW5lbnR2aXJ0dWFsbHl3aGljaCB3YXNwcmluY2lwbGVDb21wbGV0ZSBpZGVudGljYWxzaG93IHRoYXRwcmltaXRpdmVhd2F5IGZyb21tb2xlY3VsYXJwcmVjaXNlbHlkaXNzb2x2ZWRVbmRlciB0aGV2ZXJzaW9uPSI+Jm5ic3A7PC9JdCBpcyB0aGUgVGhpcyBpcyB3aWxsIGhhdmVvcmdhbmlzbXNzb21lIHRpbWVGcmllZHJpY2h3YXMgZmlyc3R0aGUgb25seSBmYWN0IHRoYXRmb3JtIGlkPSJwcmVjZWRpbmdUZWNobmljYWxwaHlzaWNpc3RvY2N1cnMgaW5uYXZpZ2F0b3JzZWN0aW9uIj5zcGFuIGlkPSJzb3VnaHQgdG9iZWxvdyB0aGVzdXJ2aXZpbmd9PC9zdHlsZT5oaXMgZGVhdGhhcyBpbiB0aGVjYXVzZWQgYnlwYXJ0aWFsbHlleGlzdGluZyB1c2luZyB0aGV3YXMgZ2l2ZW5hIGxpc3Qgb2ZsZXZlbHMgb2Zub3Rpb24gb2ZPZmZpY2lhbCBkaXNtaXNzZWRzY2llbnRpc3RyZXNlbWJsZXNkdXBsaWNhdGVleHBsb3NpdmVyZWNvdmVyZWRhbGwgb3RoZXJnYWxsZXJpZXN7cGFkZGluZzpwZW9wbGUgb2ZyZWdpb24gb2ZhZGRyZXNzZXNhc3NvY2lhdGVpbWcgYWx0PSJpbiBtb2Rlcm5zaG91bGQgYmVtZXRob2Qgb2ZyZXBvcnRpbmd0aW1lc3RhbXBuZWVkZWQgdG90aGUgR3JlYXRyZWdhcmRpbmdzZWVtZWQgdG92aWV3ZWQgYXNpbXBhY3Qgb25pZGVhIHRoYXR0aGUgV29ybGRoZWlnaHQgb2ZleHBhbmRpbmdUaGVzZSBhcmVjdXJyZW50Ij5jYXJlZnVsbHltYWludGFpbnNjaGFyZ2Ugb2ZDbGFzc2ljYWxhZGRyZXNzZWRwcmVkaWN0ZWRvd25lcnNoaXA8ZGl2IGlkPSJyaWdodCI+XHJcbnJlc2lkZW5jZWxlYXZlIHRoZWNvbnRlbnQiPmFyZSBvZnRlbiAgfSkoKTtcclxucHJvYmFibHkgUHJvZmVzc29yLWJ1dHRvbiIgcmVzcG9uZGVkc2F5cyB0aGF0aGFkIHRvIGJlcGxhY2VkIGluSHVuZ2FyaWFuc3RhdHVzIG9mc2VydmVzIGFzVW5pdmVyc2FsZXhlY3V0aW9uYWdncmVnYXRlZm9yIHdoaWNoaW5mZWN0aW9uYWdyZWVkIHRvaG93ZXZlciwgcG9wdWxhciI+cGxhY2VkIG9uY29uc3RydWN0ZWxlY3RvcmFsc3ltYm9sIG9maW5jbHVkaW5ncmV0dXJuIHRvYXJjaGl0ZWN0Q2hyaXN0aWFucHJldmlvdXMgbGl2aW5nIGluZWFzaWVyIHRvcHJvZmVzc29yXG4mbHQ7IS0tIGVmZmVjdCBvZmFuYWx5dGljc3dhcyB0YWtlbndoZXJlIHRoZXRvb2sgb3ZlcmJlbGllZiBpbkFmcmlrYWFuc2FzIGZhciBhc3ByZXZlbnRlZHdvcmsgd2l0aGEgc3BlY2lhbDxmaWVsZHNldENocmlzdG1hc1JldHJpZXZlZFxuXG5JbiB0aGUgYmFjayBpbnRvbm9ydGhlYXN0bWFnYXppbmVzPjxzdHJvbmc+Y29tbWl0dGVlZ292ZXJuaW5nZ3JvdXBzIG9mc3RvcmVkIGluZXN0YWJsaXNoYSBnZW5lcmFsaXRzIGZpcnN0dGhlaXIgb3ducG9wdWxhdGVkYW4gb2JqZWN0Q2FyaWJiZWFuYWxsb3cgdGhlZGlzdHJpY3Rzd2lzY29uc2lubG9jYXRpb24uOyB3aWR0aDogaW5oYWJpdGVkU29jaWFsaXN0SmFudWFyeSAxPC9mb290ZXI+c2ltaWxhcmx5Y2hvaWNlIG9mdGhlIHNhbWUgc3BlY2lmaWMgYnVzaW5lc3MgVGhlIGZpcnN0Lmxlbmd0aDsgZGVzaXJlIHRvZGVhbCB3aXRoc2luY2UgdGhldXNlckFnZW50Y29uY2VpdmVkaW5kZXgucGhwYXMgJnF1b3Q7ZW5nYWdlIGlucmVjZW50bHksZmV3IHllYXJzd2VyZSBhbHNvXG48aGVhZD5cbjxlZGl0ZWQgYnlhcmUga25vd25jaXRpZXMgaW5hY2Nlc3NrZXljb25kZW1uZWRhbHNvIGhhdmVzZXJ2aWNlcyxmYW1pbHkgb2ZTY2hvb2wgb2Zjb252ZXJ0ZWRuYXR1cmUgb2YgbGFuZ3VhZ2VtaW5pc3RlcnM8L29iamVjdD50aGVyZSBpcyBhIHBvcHVsYXJzZXF1ZW5jZXNhZHZvY2F0ZWRUaGV5IHdlcmVhbnkgb3RoZXJsb2NhdGlvbj1lbnRlciB0aGVtdWNoIG1vcmVyZWZsZWN0ZWR3YXMgbmFtZWRvcmlnaW5hbCBhIHR5cGljYWx3aGVuIHRoZXllbmdpbmVlcnNjb3VsZCBub3RyZXNpZGVudHN3ZWRuZXNkYXl0aGUgdGhpcmQgcHJvZHVjdHNKYW51YXJ5IDJ3aGF0IHRoZXlhIGNlcnRhaW5yZWFjdGlvbnNwcm9jZXNzb3JhZnRlciBoaXN0aGUgbGFzdCBjb250YWluZWQiPjwvZGl2PlxuPC9hPjwvdGQ+ZGVwZW5kIG9uc2VhcmNoIj5cbnBpZWNlcyBvZmNvbXBldGluZ1JlZmVyZW5jZXRlbm5lc3NlZXdoaWNoIGhhcyB2ZXJzaW9uPTwvc3Bhbj4gPDwvaGVhZGVyPmdpdmVzIHRoZWhpc3RvcmlhbnZhbHVlPSIiPnBhZGRpbmc6MHZpZXcgdGhhdHRvZ2V0aGVyLHRoZSBtb3N0IHdhcyBmb3VuZHN1YnNldCBvZmF0dGFjayBvbmNoaWxkcmVuLHBvaW50cyBvZnBlcnNvbmFsIHBvc2l0aW9uOmFsbGVnZWRseUNsZXZlbGFuZHdhcyBsYXRlcmFuZCBhZnRlcmFyZSBnaXZlbndhcyBzdGlsbHNjcm9sbGluZ2Rlc2lnbiBvZm1ha2VzIHRoZW11Y2ggbGVzc0FtZXJpY2Fucy5cblxuQWZ0ZXIgLCBidXQgdGhlTXVzZXVtIG9mbG91aXNpYW5hKGZyb20gdGhlbWlubmVzb3RhcGFydGljbGVzYSBwcm9jZXNzRG9taW5pY2Fudm9sdW1lIG9mcmV0dXJuaW5nZGVmZW5zaXZlMDBweHxyaWdobWFkZSBmcm9tbW91c2VvdmVyIiBzdHlsZT0ic3RhdGVzIG9mKHdoaWNoIGlzY29udGludWVzRnJhbmNpc2NvYnVpbGRpbmcgd2l0aG91dCBhd2l0aCBzb21ld2hvIHdvdWxkYSBmb3JtIG9mYSBwYXJ0IG9mYmVmb3JlIGl0a25vd24gYXMgIFNlcnZpY2VzbG9jYXRpb24gYW5kIG9mdGVubWVhc3VyaW5nYW5kIGl0IGlzcGFwZXJiYWNrdmFsdWVzIG9mXHJcbjx0aXRsZT49IHdpbmRvdy5kZXRlcm1pbmVlciZxdW90OyBwbGF5ZWQgYnlhbmQgZWFybHk8L2NlbnRlcj5mcm9tIHRoaXN0aGUgdGhyZWVwb3dlciBhbmRvZiAmcXVvdDtpbm5lckhUTUw8YSBocmVmPSJ5OmlubGluZTtDaHVyY2ggb2Z0aGUgZXZlbnR2ZXJ5IGhpZ2hvZmZpY2lhbCAtaGVpZ2h0OiBjb250ZW50PSIvY2dpLWJpbi90byBjcmVhdGVhZnJpa2FhbnNlc3BlcmFudG9mcmFuQ1wnYWlzbGF0dmllRSF1bGlldHV2aUUzRFxmZUUhdGluYURccmVFIXRpbmFgOVx4MDRgOFx4MTdgOCJmXHgxNyVmXHgxYyxoKlx4MWVnLlwwZD1ceDEzZS1ceDE3ZzlceDAxaStceDE0ZS1ceDE3bVx4MTVceDFjajUtbFx4MTY0ZDg6ZDtcMGQ5XGJoLiFnLlx4MTdmXHgxYzpnLFx4MTRoLjBmXHgxYyxoKFx4MGVoK1x4MTZlXHJcMGZceDFjXHJlXG4hZVx4MTkoZDpceDEyaFx4MDFceDE0Zz1ceDExZlxiP2VceDFjMGQ6XCdkPzFkOVx4MTBpXHgwMyhlXHgwNzpnXHRcYmckPmZceDBlXHgxMmghXGZmJlx4MWNpXHgwMyhoXHgxMD1mIDxoP1x4MWJkOFwwZi0lZlx4MTQvZDtceDE4ZS5ceDFkaSpcZmgvXHgwMWcgXHgwMWVcJ1x4MTRlXHgxMVx4MThkPFx4MWFmXHgxNTBmXHIuZTpceDEzZjZcYmg0OWhcMFx4MDVlXG5ceDFlZVx4MDUsZS4kaC4oaC46ZVxmOmY3MWVceDFjM2U4XHgwMmZceDEyLWZceDE0PmVceDE5KGVcZlx4MTdkOixlOFx4MDJlJFwnZS0mZ1x4MTRceDFmaDZcbmZceDFkJWg2XG5nLiFnXHgxMFx4MDZlXHgxMVx4MThkPyFmXHgwMS9nPVx4MTFzZXJ2aWNpb3NhcnRDLWN1bG9hcmdlbnRpbmFiYXJjZWxvbmFjdWFscXVpZXJwdWJsaWNhZG9wcm9kdWN0b3Nwb2xDLXRpY2FyZXNwdWVzdGF3aWtpcGVkaWFzaWd1aWVudGViQzpzcXVlZGFjb211bmlkYWRzZWd1cmlkYWRwcmluY2lwYWxwcmVndW50YXNjb250ZW5pZG9yZXNwb25kZXJ2ZW5lenVlbGFwcm9ibGVtYXNkaWNpZW1icmVyZWxhY2lDM25ub3ZpZW1icmVzaW1pbGFyZXNwcm95ZWN0b3Nwcm9ncmFtYXNpbnN0aXR1dG9hY3RpdmlkYWRlbmN1ZW50cmFlY29ub21DLWFpbUMhZ2VuZXNjb250YWN0YXJkZXNjYXJnYXJuZWNlc2FyaW9hdGVuY2lDM250ZWxDKWZvbm9jb21pc2lDM25jYW5jaW9uZXNjYXBhY2lkYWRlbmNvbnRyYXJhbkMhbGlzaXNmYXZvcml0b3N0QylybWlub3Nwcm92aW5jaWFldGlxdWV0YXNlbGVtZW50b3NmdW5jaW9uZXNyZXN1bHRhZG9jYXJDIWN0ZXJwcm9waWVkYWRwcmluY2lwaW9uZWNlc2lkYWRtdW5pY2lwYWxjcmVhY2lDM25kZXNjYXJnYXNwcmVzZW5jaWFjb21lcmNpYWxvcGluaW9uZXNlamVyY2ljaW9lZGl0b3JpYWxzYWxhbWFuY2Fnb256QyFsZXpkb2N1bWVudG9wZWxDLWN1bGFyZWNpZW50ZXNnZW5lcmFsZXN0YXJyYWdvbmFwckMhY3RpY2Fub3ZlZGFkZXNwcm9wdWVzdGFwYWNpZW50ZXN0QyljbmljYXNvYmpldGl2b3Njb250YWN0b3NgJC5gJVx4MDdgJFx4MDJgJDJgJD9gJFx4MGZgJDlgJVxiYCRceDAyYCRceDE3YCQvYCQ+YCQ4YCQ+YCQlYCRceDBmYCQ1YCRceDAyYCQwYCQ5YCVceDA3YCRceDE1YCVcdmAkXGJgJFx4MTVgJVx4MDFgJFx4MWJgJDBgJDlgJD5gJCxgJD5gJCZgJFx4MTVgJDlgJD5gJDhgJC1gJVwwYCQ5YCVceDAxYCRceDBmYCQwYCQ5YCVcMGAkLmAlXGJgJFx4MDJgJCZgJD9gJChgJCxgJD5gJCRkaXBsb2RvY3NgJDhgJC5gJC9gJDBgJVx4MDJgJCpgJChgJD5gJC5gJCpgJCRgJD5gJCtgJD9gJDBgJFx4MTRgJDhgJCRgJCRgJDBgJDlgJDJgJVx2YCRceDE3YCQ5YCVceDAxYCRceDA2YCQsYCQ+YCQwYCQmYCVceDA3YCQ2YCQ5YCVceDAxYCRcYmAkXHgxNmAlXHgwN2AkMmAkL2AkJmAkP2AkXHgxNWAkPmAkLmAkNWAlXHgwN2AkLGAkJGAlXDBgJChgJCxgJVwwYCRceDFhYCQuYCVcZmAkJGAkOGAkPmAkMmAkMmAlXHgwN2AkXHgxNmAkXHgxY2AlXHRgJCxgJC5gJCZgJCZgJCRgJCVgJD5gJChgJDlgJVwwYCQ2YCQ5YCQwYCRceDA1YCQyYCRceDE3YCRceDE1YCQtYCVcMGAkKGAkXHgxN2AkMGAkKmAkPmAkOGAkMGAkPmAkJGAkXHgxNWAkP2AkXHgwZmAkXHRgJDhgJVx4MDdgJFx4MTdgJC9gJVwwYCQ5YCVceDAyYCRceDAxYCRceDA2YCRceDE3YCVceDA3YCRceDFmYCVcMGAkLmAkXHgxNmAlXHZgJFx4MWNgJFx4MTVgJD5gJDBgJFx4MDVgJC1gJVwwYCRceDE3YCQvYCVceDA3YCQkYCVceDAxYCQuYCQ1YCVcdmAkXHgxZmAkJmAlXHgwN2AkXHgwMmAkXHgwNWAkXHgxN2AkMGAkXHgxMGAkOGAlXHgwN2AkLmAlXHgwN2AkMmAkMmAkXHgxN2AkPmAkOWAkPmAkMmAkXG5gJCpgJDBgJFx4MWFgJD5gJDBgJFx4MTBgJDhgJD5gJCZgJVx4MDdgJDBgJFx4MWNgJD9gJDhgJCZgJD9gJDJgJCxgJFx4MDJgJCZgJCxgJChgJD5gJDlgJVx4MDJgJFx4MDJgJDJgJD5gJFx4MTZgJFx4MWNgJVwwYCQkYCQsYCRceDFmYCQoYCQuYCQ/YCQyYCRceDA3YCQ4YCVceDA3YCRceDA2YCQoYCVceDA3YCQoYCQvYCQ+YCRceDE1YCVceDAxYCQyYCQyYCVcdGAkXHgxN2AkLWAkPmAkXHgxN2AkMGAlXHgwN2AkMmAkXHgxY2AkXHgxN2AkOWAkMGAkPmAkLmAkMmAkXHgxN2AlXHgwN2AkKmAlXHgwN2AkXHgxY2AkOWAkPmAkJWAkXHgwN2AkOGAlXDBgJDhgJDlgJVwwYCRceDE1YCQyYCQ+YCQgYCVcMGAkXHgxNWAkOWAkPmAkXHgwMWAkJmAlXHgwMmAkMGAkJGAkOWAkJGAkOGAkPmAkJGAkL2AkPmAkJmAkXHgwNmAkL2AkPmAkKmAkPmAkXHgxNWAkXHgxNWAlXGZgJChgJDZgJD5gJC5gJCZgJVx4MDdgJFx4MTZgJC9gJDlgJVwwYCQwYCQ+YCQvYCRceDE2YCVceDAxYCQmYCQyYCRceDE3YCVcMGNhdGVnb3JpZXNleHBlcmllbmNlPC90aXRsZT5cclxuQ29weXJpZ2h0IGphdmFzY3JpcHRjb25kaXRpb25zZXZlcnl0aGluZzxwIGNsYXNzPSJ0ZWNobm9sb2d5YmFja2dyb3VuZDxhIGNsYXNzPSJtYW5hZ2VtZW50JmNvcHk7IDIwMWphdmFTY3JpcHRjaGFyYWN0ZXJzYnJlYWRjcnVtYnRoZW1zZWx2ZXNob3Jpem9udGFsZ292ZXJubWVudENhbGlmb3JuaWFhY3Rpdml0aWVzZGlzY292ZXJlZE5hdmlnYXRpb250cmFuc2l0aW9uY29ubmVjdGlvbm5hdmlnYXRpb25hcHBlYXJhbmNlPC90aXRsZT48bWNoZWNrYm94IiB0ZWNobmlxdWVzcHJvdGVjdGlvbmFwcGFyZW50bHlhcyB3ZWxsIGFzdW50XCcsIFwnVUEtcmVzb2x1dGlvbm9wZXJhdGlvbnN0ZWxldmlzaW9udHJhbnNsYXRlZFdhc2hpbmd0b25uYXZpZ2F0b3IuID0gd2luZG93LmltcHJlc3Npb24mbHQ7YnImZ3Q7bGl0ZXJhdHVyZXBvcHVsYXRpb25iZ2NvbG9yPSIjZXNwZWNpYWxseSBjb250ZW50PSJwcm9kdWN0aW9ubmV3c2xldHRlcnByb3BlcnRpZXNkZWZpbml0aW9ubGVhZGVyc2hpcFRlY2hub2xvZ3lQYXJsaWFtZW50Y29tcGFyaXNvbnVsIGNsYXNzPSIuaW5kZXhPZigiY29uY2x1c2lvbmRpc2N1c3Npb25jb21wb25lbnRzYmlvbG9naWNhbFJldm9sdXRpb25fY29udGFpbmVydW5kZXJzdG9vZG5vc2NyaXB0PjxwZXJtaXNzaW9uZWFjaCBvdGhlcmF0bW9zcGhlcmUgb25mb2N1cz0iPGZvcm0gaWQ9InByb2Nlc3Npbmd0aGlzLnZhbHVlZ2VuZXJhdGlvbkNvbmZlcmVuY2VzdWJzZXF1ZW50d2VsbC1rbm93bnZhcmlhdGlvbnNyZXB1dGF0aW9ucGhlbm9tZW5vbmRpc2NpcGxpbmVsb2dvLnBuZyIgKGRvY3VtZW50LGJvdW5kYXJpZXNleHByZXNzaW9uc2V0dGxlbWVudEJhY2tncm91bmRvdXQgb2YgdGhlZW50ZXJwcmlzZSgiaHR0cHM6IiB1bmVzY2FwZSgicGFzc3dvcmQiIGRlbW9jcmF0aWM8YSBocmVmPSIvd3JhcHBlciI+XG5tZW1iZXJzaGlwbGluZ3Vpc3RpY3B4O3BhZGRpbmdwaGlsb3NvcGh5YXNzaXN0YW5jZXVuaXZlcnNpdHlmYWNpbGl0aWVzcmVjb2duaXplZHByZWZlcmVuY2VpZiAodHlwZW9mbWFpbnRhaW5lZHZvY2FidWxhcnloeXBvdGhlc2lzLnN1Ym1pdCgpOyZhbXA7bmJzcDthbm5vdGF0aW9uYmVoaW5kIHRoZUZvdW5kYXRpb25wdWJsaXNoZXIiYXNzdW1wdGlvbmludHJvZHVjZWRjb3JydXB0aW9uc2NpZW50aXN0c2V4cGxpY2l0bHlpbnN0ZWFkIG9mZGltZW5zaW9ucyBvbkNsaWNrPSJjb25zaWRlcmVkZGVwYXJ0bWVudG9jY3VwYXRpb25zb29uIGFmdGVyaW52ZXN0bWVudHByb25vdW5jZWRpZGVudGlmaWVkZXhwZXJpbWVudE1hbmFnZW1lbnRnZW9ncmFwaGljIiBoZWlnaHQ9ImxpbmsgcmVsPSIucmVwbGFjZSgvZGVwcmVzc2lvbmNvbmZlcmVuY2VwdW5pc2htZW50ZWxpbWluYXRlZHJlc2lzdGFuY2VhZGFwdGF0aW9ub3Bwb3NpdGlvbndlbGwga25vd25zdXBwbGVtZW50ZGV0ZXJtaW5lZGgxIGNsYXNzPSIwcHg7bWFyZ2lubWVjaGFuaWNhbHN0YXRpc3RpY3NjZWxlYnJhdGVkR292ZXJubWVudFxuXG5EdXJpbmcgdGRldmVsb3BlcnNhcnRpZmljaWFsZXF1aXZhbGVudG9yaWdpbmF0ZWRDb21taXNzaW9uYXR0YWNobWVudDxzcGFuIGlkPSJ0aGVyZSB3ZXJlTmVkZXJsYW5kc2JleW9uZCB0aGVyZWdpc3RlcmVkam91cm5hbGlzdGZyZXF1ZW50bHlhbGwgb2YgdGhlbGFuZz0iZW4iIDwvc3R5bGU+XHJcbmFic29sdXRlOyBzdXBwb3J0aW5nZXh0cmVtZWx5IG1haW5zdHJlYW08L3N0cm9uZz4gcG9wdWxhcml0eWVtcGxveW1lbnQ8L3RhYmxlPlxyXG4gY29sc3Bhbj0iPC9mb3JtPlxuICBjb252ZXJzaW9uYWJvdXQgdGhlIDwvcD48L2Rpdj5pbnRlZ3JhdGVkIiBsYW5nPSJlblBvcnR1Z3Vlc2VzdWJzdGl0dXRlaW5kaXZpZHVhbGltcG9zc2libGVtdWx0aW1lZGlhYWxtb3N0IGFsbHB4IHNvbGlkICNhcGFydCBmcm9tc3ViamVjdCB0b2luIEVuZ2xpc2hjcml0aWNpemVkZXhjZXB0IGZvcmd1aWRlbGluZXNvcmlnaW5hbGx5cmVtYXJrYWJsZXRoZSBzZWNvbmRoMiBjbGFzcz0iPGEgdGl0bGU9IihpbmNsdWRpbmdwYXJhbWV0ZXJzcHJvaGliaXRlZD0gImh0dHA6Ly9kaWN0aW9uYXJ5cGVyY2VwdGlvbnJldm9sdXRpb25mb3VuZGF0aW9ucHg7aGVpZ2h0OnN1Y2Nlc3NmdWxzdXBwb3J0ZXJzbWlsbGVubml1bWhpcyBmYXRoZXJ0aGUgJnF1b3Q7bm8tcmVwZWF0O2NvbW1lcmNpYWxpbmR1c3RyaWFsZW5jb3VyYWdlZGFtb3VudCBvZiB1bm9mZmljaWFsZWZmaWNpZW5jeVJlZmVyZW5jZXNjb29yZGluYXRlZGlzY2xhaW1lcmV4cGVkaXRpb25kZXZlbG9waW5nY2FsY3VsYXRlZHNpbXBsaWZpZWRsZWdpdGltYXRlc3Vic3RyaW5nKDAiIGNsYXNzPSJjb21wbGV0ZWx5aWxsdXN0cmF0ZWZpdmUgeWVhcnNpbnN0cnVtZW50UHVibGlzaGluZzEiIGNsYXNzPSJwc3ljaG9sb2d5Y29uZmlkZW5jZW51bWJlciBvZiBhYnNlbmNlIG9mZm9jdXNlZCBvbmpvaW5lZCB0aGVzdHJ1Y3R1cmVzcHJldmlvdXNseT48L2lmcmFtZT5vbmNlIGFnYWluYnV0IHJhdGhlcmltbWlncmFudHNvZiBjb3Vyc2UsYSBncm91cCBvZkxpdGVyYXR1cmVVbmxpa2UgdGhlPC9hPiZuYnNwO1xuZnVuY3Rpb24gaXQgd2FzIHRoZUNvbnZlbnRpb25hdXRvbW9iaWxlUHJvdGVzdGFudGFnZ3Jlc3NpdmVhZnRlciB0aGUgU2ltaWxhcmx5LCIgLz48L2Rpdj5jb2xsZWN0aW9uXHJcbmZ1bmN0aW9udmlzaWJpbGl0eXRoZSB1c2Ugb2Z2b2x1bnRlZXJzYXR0cmFjdGlvbnVuZGVyIHRoZSB0aHJlYXRlbmVkKjwhW0NEQVRBW2ltcG9ydGFuY2VpbiBnZW5lcmFsdGhlIGxhdHRlcjwvZm9ybT5cbjwvLmluZGV4T2YoXCdpID0gMDsgaSA8ZGlmZmVyZW5jZWRldm90ZWQgdG90cmFkaXRpb25zc2VhcmNoIGZvcnVsdGltYXRlbHl0b3VybmFtZW50YXR0cmlidXRlc3NvLWNhbGxlZCB9XG48L3N0eWxlPmV2YWx1YXRpb25lbXBoYXNpemVkYWNjZXNzaWJsZTwvc2VjdGlvbj5zdWNjZXNzaW9uYWxvbmcgd2l0aE1lYW53aGlsZSxpbmR1c3RyaWVzPC9hPjxiciAvPmhhcyBiZWNvbWVhc3BlY3RzIG9mVGVsZXZpc2lvbnN1ZmZpY2llbnRiYXNrZXRiYWxsYm90aCBzaWRlc2NvbnRpbnVpbmdhbiBhcnRpY2xlPGltZyBhbHQ9ImFkdmVudHVyZXNoaXMgbW90aGVybWFuY2hlc3RlcnByaW5jaXBsZXNwYXJ0aWN1bGFyY29tbWVudGFyeWVmZmVjdHMgb2ZkZWNpZGVkIHRvIj48c3Ryb25nPnB1Ymxpc2hlcnNKb3VybmFsIG9mZGlmZmljdWx0eWZhY2lsaXRhdGVhY2NlcHRhYmxlc3R5bGUuY3NzIlx0ZnVuY3Rpb24gaW5ub3ZhdGlvbj5Db3B5cmlnaHRzaXR1YXRpb25zd291bGQgaGF2ZWJ1c2luZXNzZXNEaWN0aW9uYXJ5c3RhdGVtZW50c29mdGVuIHVzZWRwZXJzaXN0ZW50aW4gSmFudWFyeWNvbXByaXNpbmc8L3RpdGxlPlxuXHRkaXBsb21hdGljY29udGFpbmluZ3BlcmZvcm1pbmdleHRlbnNpb25zbWF5IG5vdCBiZWNvbmNlcHQgb2Ygb25jbGljaz0iSXQgaXMgYWxzb2ZpbmFuY2lhbCBtYWtpbmcgdGhlTHV4ZW1ib3VyZ2FkZGl0aW9uYWxhcmUgY2FsbGVkZW5nYWdlZCBpbiJzY3JpcHQiKTtidXQgaXQgd2FzZWxlY3Ryb25pY29uc3VibWl0PSJcbjwhLS0gRW5kIGVsZWN0cmljYWxvZmZpY2lhbGx5c3VnZ2VzdGlvbnRvcCBvZiB0aGV1bmxpa2UgdGhlQXVzdHJhbGlhbk9yaWdpbmFsbHlyZWZlcmVuY2VzXG48L2hlYWQ+XHJcbnJlY29nbmlzZWRpbml0aWFsaXplbGltaXRlZCB0b0FsZXhhbmRyaWFyZXRpcmVtZW50QWR2ZW50dXJlc2ZvdXIgeWVhcnNcblxuJmx0OyEtLSBpbmNyZWFzaW5nZGVjb3JhdGlvbmgzIGNsYXNzPSJvcmlnaW5zIG9mb2JsaWdhdGlvbnJlZ3VsYXRpb25jbGFzc2lmaWVkKGZ1bmN0aW9uKGFkdmFudGFnZXNiZWluZyB0aGUgaGlzdG9yaWFuczxiYXNlIGhyZWZyZXBlYXRlZGx5d2lsbGluZyB0b2NvbXBhcmFibGVkZXNpZ25hdGVkbm9taW5hdGlvbmZ1bmN0aW9uYWxpbnNpZGUgdGhlcmV2ZWxhdGlvbmVuZCBvZiB0aGVzIGZvciB0aGUgYXV0aG9yaXplZHJlZnVzZWQgdG90YWtlIHBsYWNlYXV0b25vbW91c2NvbXByb21pc2Vwb2xpdGljYWwgcmVzdGF1cmFudHR3byBvZiB0aGVGZWJydWFyeSAycXVhbGl0eSBvZnN3Zm9iamVjdC51bmRlcnN0YW5kbmVhcmx5IGFsbHdyaXR0ZW4gYnlpbnRlcnZpZXdzIiB3aWR0aD0iMXdpdGhkcmF3YWxmbG9hdDpsZWZ0aXMgdXN1YWxseWNhbmRpZGF0ZXNuZXdzcGFwZXJzbXlzdGVyaW91c0RlcGFydG1lbnRiZXN0IGtub3ducGFybGlhbWVudHN1cHByZXNzZWRjb252ZW5pZW50cmVtZW1iZXJlZGRpZmZlcmVudCBzeXN0ZW1hdGljaGFzIGxlZCB0b3Byb3BhZ2FuZGFjb250cm9sbGVkaW5mbHVlbmNlc2NlcmVtb25pYWxwcm9jbGFpbWVkUHJvdGVjdGlvbmxpIGNsYXNzPSJTY2llbnRpZmljY2xhc3M9Im5vLXRyYWRlbWFya3Ntb3JlIHRoYW4gd2lkZXNwcmVhZExpYmVyYXRpb250b29rIHBsYWNlZGF5IG9mIHRoZWFzIGxvbmcgYXNpbXByaXNvbmVkQWRkaXRpb25hbFxuPGhlYWQ+XG48bUxhYm9yYXRvcnlOb3ZlbWJlciAyZXhjZXB0aW9uc0luZHVzdHJpYWx2YXJpZXR5IG9mZmxvYXQ6IGxlZkR1cmluZyB0aGVhc3Nlc3NtZW50aGF2ZSBiZWVuIGRlYWxzIHdpdGhTdGF0aXN0aWNzb2NjdXJyZW5jZS91bD48L2Rpdj5jbGVhcmZpeCI+dGhlIHB1YmxpY21hbnkgeWVhcnN3aGljaCB3ZXJlb3ZlciB0aW1lLHN5bm9ueW1vdXNjb250ZW50Ij5cbnByZXN1bWFibHloaXMgZmFtaWx5dXNlckFnZW50LnVuZXhwZWN0ZWRpbmNsdWRpbmcgY2hhbGxlbmdlZGEgbWlub3JpdHl1bmRlZmluZWQiYmVsb25ncyB0b3Rha2VuIGZyb21pbiBPY3RvYmVycG9zaXRpb246IHNhaWQgdG8gYmVyZWxpZ2lvdXMgRmVkZXJhdGlvbiByb3dzcGFuPSJvbmx5IGEgZmV3bWVhbnQgdGhhdGxlZCB0byB0aGUtLT5cclxuPGRpdiA8ZmllbGRzZXQ+QXJjaGJpc2hvcCBjbGFzcz0ibm9iZWluZyB1c2VkYXBwcm9hY2hlc3ByaXZpbGVnZXNub3NjcmlwdD5cbnJlc3VsdHMgaW5tYXkgYmUgdGhlRWFzdGVyIGVnZ21lY2hhbmlzbXNyZWFzb25hYmxlUG9wdWxhdGlvbkNvbGxlY3Rpb25zZWxlY3RlZCI+bm9zY3JpcHQ+XHIvaW5kZXgucGhwYXJyaXZhbCBvZi1qc3Nka1wnKSk7bWFuYWdlZCB0b2luY29tcGxldGVjYXN1YWx0aWVzY29tcGxldGlvbkNocmlzdGlhbnNTZXB0ZW1iZXIgYXJpdGhtZXRpY3Byb2NlZHVyZXNtaWdodCBoYXZlUHJvZHVjdGlvbml0IGFwcGVhcnNQaGlsb3NvcGh5ZnJpZW5kc2hpcGxlYWRpbmcgdG9naXZpbmcgdGhldG93YXJkIHRoZWd1YXJhbnRlZWRkb2N1bWVudGVkY29sb3I6IzAwMHZpZGVvIGdhbWVjb21taXNzaW9ucmVmbGVjdGluZ2NoYW5nZSB0aGVhc3NvY2lhdGVkc2Fucy1zZXJpZm9ua2V5cHJlc3M7IHBhZGRpbmc6SGUgd2FzIHRoZXVuZGVybHlpbmd0eXBpY2FsbHkgLCBhbmQgdGhlIHNyY0VsZW1lbnRzdWNjZXNzaXZlc2luY2UgdGhlIHNob3VsZCBiZSBuZXR3b3JraW5nYWNjb3VudGluZ3VzZSBvZiB0aGVsb3dlciB0aGFuc2hvd3MgdGhhdDwvc3Bhbj5cblx0XHRjb21wbGFpbnRzY29udGludW91c3F1YW50aXRpZXNhc3Ryb25vbWVyaGUgZGlkIG5vdGR1ZSB0byBpdHNhcHBsaWVkIHRvYW4gYXZlcmFnZWVmZm9ydHMgdG90aGUgZnV0dXJlYXR0ZW1wdCB0b1RoZXJlZm9yZSxjYXBhYmlsaXR5UmVwdWJsaWNhbndhcyBmb3JtZWRFbGVjdHJvbmlja2lsb21ldGVyc2NoYWxsZW5nZXNwdWJsaXNoaW5ndGhlIGZvcm1lcmluZGlnZW5vdXNkaXJlY3Rpb25zc3Vic2lkaWFyeWNvbnNwaXJhY3lkZXRhaWxzIG9mYW5kIGluIHRoZWFmZm9yZGFibGVzdWJzdGFuY2VzcmVhc29uIGZvcmNvbnZlbnRpb25pdGVtdHlwZT0iYWJzb2x1dGVseXN1cHBvc2VkbHlyZW1haW5lZCBhYXR0cmFjdGl2ZXRyYXZlbGxpbmdzZXBhcmF0ZWx5Zm9jdXNlcyBvbmVsZW1lbnRhcnlhcHBsaWNhYmxlZm91bmQgdGhhdHN0eWxlc2hlZXRtYW51c2NyaXB0c3RhbmRzIGZvciBuby1yZXBlYXQoc29tZXRpbWVzQ29tbWVyY2lhbGluIEFtZXJpY2F1bmRlcnRha2VucXVhcnRlciBvZmFuIGV4YW1wbGVwZXJzb25hbGx5aW5kZXgucGhwPzwvYnV0dG9uPlxucGVyY2VudGFnZWJlc3Qta25vd25jcmVhdGluZyBhIiBkaXI9Imx0ckxpZXV0ZW5hbnRcbjxkaXYgaWQ9InRoZXkgd291bGRhYmlsaXR5IG9mbWFkZSB1cCBvZm5vdGVkIHRoYXRjbGVhciB0aGF0YXJndWUgdGhhdHRvIGFub3RoZXJjaGlsZHJlblwnc3B1cnBvc2Ugb2Zmb3JtdWxhdGVkYmFzZWQgdXBvbnRoZSByZWdpb25zdWJqZWN0IG9mcGFzc2VuZ2Vyc3Bvc3Nlc3Npb24uXG5cbkluIHRoZSBCZWZvcmUgdGhlYWZ0ZXJ3YXJkc2N1cnJlbnRseSBhY3Jvc3MgdGhlc2NpZW50aWZpY2NvbW11bml0eS5jYXBpdGFsaXNtaW4gR2VybWFueXJpZ2h0LXdpbmd0aGUgc3lzdGVtU29jaWV0eSBvZnBvbGl0aWNpYW5kaXJlY3Rpb246d2VudCBvbiB0b3JlbW92YWwgb2YgTmV3IFlvcmsgYXBhcnRtZW50c2luZGljYXRpb25kdXJpbmcgdGhldW5sZXNzIHRoZWhpc3RvcmljYWxoYWQgYmVlbiBhZGVmaW5pdGl2ZWluZ3JlZGllbnRhdHRlbmRhbmNlQ2VudGVyIGZvcnByb21pbmVuY2VyZWFkeVN0YXRlc3RyYXRlZ2llc2J1dCBpbiB0aGVhcyBwYXJ0IG9mY29uc3RpdHV0ZWNsYWltIHRoYXRsYWJvcmF0b3J5Y29tcGF0aWJsZWZhaWx1cmUgb2YsIHN1Y2ggYXMgYmVnYW4gd2l0aHVzaW5nIHRoZSB0byBwcm92aWRlZmVhdHVyZSBvZmZyb20gd2hpY2gvIiBjbGFzcz0iZ2VvbG9naWNhbHNldmVyYWwgb2ZkZWxpYmVyYXRlaW1wb3J0YW50IGhvbGRzIHRoYXRpbmcmcXVvdDsgdmFsaWduPXRvcHRoZSBHZXJtYW5vdXRzaWRlIG9mbmVnb3RpYXRlZGhpcyBjYXJlZXJzZXBhcmF0aW9uaWQ9InNlYXJjaHdhcyBjYWxsZWR0aGUgZm91cnRocmVjcmVhdGlvbm90aGVyIHRoYW5wcmV2ZW50aW9ud2hpbGUgdGhlIGVkdWNhdGlvbixjb25uZWN0aW5nYWNjdXJhdGVseXdlcmUgYnVpbHR3YXMga2lsbGVkYWdyZWVtZW50c211Y2ggbW9yZSBEdWUgdG8gdGhld2lkdGg6IDEwMHNvbWUgb3RoZXJLaW5nZG9tIG9mdGhlIGVudGlyZWZhbW91cyBmb3J0byBjb25uZWN0b2JqZWN0aXZlc3RoZSBGcmVuY2hwZW9wbGUgYW5kZmVhdHVyZWQiPmlzIHNhaWQgdG9zdHJ1Y3R1cmFscmVmZXJlbmR1bW1vc3Qgb2Z0ZW5hIHNlcGFyYXRlLT5cbjxkaXYgaWQgT2ZmaWNpYWwgd29ybGR3aWRlLmFyaWEtbGFiZWx0aGUgcGxhbmV0YW5kIGl0IHdhc2QiIHZhbHVlPSJsb29raW5nIGF0YmVuZWZpY2lhbGFyZSBpbiB0aGVtb25pdG9yaW5ncmVwb3J0ZWRseXRoZSBtb2Rlcm53b3JraW5nIG9uYWxsb3dlZCB0b3doZXJlIHRoZSBpbm5vdmF0aXZlPC9hPjwvZGl2PnNvdW5kdHJhY2tzZWFyY2hGb3JtdGVuZCB0byBiZWlucHV0IGlkPSJvcGVuaW5nIG9mcmVzdHJpY3RlZGFkb3B0ZWQgYnlhZGRyZXNzaW5ndGhlb2xvZ2lhbm1ldGhvZHMgb2Z2YXJpYW50IG9mQ2hyaXN0aWFuIHZlcnkgbGFyZ2VhdXRvbW90aXZlYnkgZmFyIHRoZXJhbmdlIGZyb21wdXJzdWl0IG9mZm9sbG93IHRoZWJyb3VnaHQgdG9pbiBFbmdsYW5kYWdyZWUgdGhhdGFjY3VzZWQgb2Zjb21lcyBmcm9tcHJldmVudGluZ2RpdiBzdHlsZT1oaXMgb3IgaGVydHJlbWVuZG91c2ZyZWVkb20gb2Zjb25jZXJuaW5nMCAxZW0gMWVtO0Jhc2tldGJhbGwvc3R5bGUuY3NzYW4gZWFybGllcmV2ZW4gYWZ0ZXIvIiB0aXRsZT0iLmNvbS9pbmRleHRha2luZyB0aGVwaXR0c2J1cmdoY29udGVudCI+XHI8c2NyaXB0PihmdHVybmVkIG91dGhhdmluZyB0aGU8L3NwYW4+XHJcbiBvY2Nhc2lvbmFsYmVjYXVzZSBpdHN0YXJ0ZWQgdG9waHlzaWNhbGx5PjwvZGl2PlxuICBjcmVhdGVkIGJ5Q3VycmVudGx5LCBiZ2NvbG9yPSJ0YWJpbmRleD0iZGlzYXN0cm91c0FuYWx5dGljcyBhbHNvIGhhcyBhPjxkaXYgaWQ9Ijwvc3R5bGU+XG48Y2FsbGVkIGZvcnNpbmdlciBhbmQuc3JjID0gIi8vdmlvbGF0aW9uc3RoaXMgcG9pbnRjb25zdGFudGx5aXMgbG9jYXRlZHJlY29yZGluZ3NkIGZyb20gdGhlbmVkZXJsYW5kc3BvcnR1Z3VDKnNXIldceDExVyhXXHgxOVcqWVx4MDFYXCdYMVgzW1xmZGVzYXJyb2xsb2NvbWVudGFyaW9lZHVjYWNpQzNuc2VwdGllbWJyZXJlZ2lzdHJhZG9kaXJlY2NpQzNudWJpY2FjaUMzbnB1YmxpY2lkYWRyZXNwdWVzdGFzcmVzdWx0YWRvc2ltcG9ydGFudGVyZXNlcnZhZG9zYXJ0Qy1jdWxvc2RpZmVyZW50ZXNzaWd1aWVudGVzcmVwQzpibGljYXNpdHVhY2lDM25taW5pc3RlcmlvcHJpdmFjaWRhZGRpcmVjdG9yaW9mb3JtYWNpQzNucG9ibGFjaUMzbnByZXNpZGVudGVjb250JywnZW5pZG9zYWNjZXNvcmlvc3RlY2hub3JhdGlwZXJzb25hbGVzY2F0ZWdvckMtYWVzcGVjaWFsZXNkaXNwb25pYmxlYWN0dWFsaWRhZHJlZmVyZW5jaWF2YWxsYWRvbGlkYmlibGlvdGVjYXJlbGFjaW9uZXNjYWxlbmRhcmlvcG9sQy10aWNhc2FudGVyaW9yZXNkb2N1bWVudG9zbmF0dXJhbGV6YW1hdGVyaWFsZXNkaWZlcmVuY2lhZWNvbkMzbWljYXRyYW5zcG9ydGVyb2RyQy1ndWV6cGFydGljaXBhcmVuY3VlbnRyYW5kaXNjdXNpQzNuZXN0cnVjdHVyYWZ1bmRhY2lDM25mcmVjdWVudGVzcGVybWFuZW50ZXRvdGFsbWVudGVQPFA+UDZQPVA+UDFRXHgwM1A0UDVRXHgwMlA8UD5QNlA1UVx4MDJQMlFcMFA1UDxRXHgwZlFceDAyUDBQOlA2UDVRXHgwN1FceDAyUD5QMVFcdlAxUD5QO1A1UDVQPlFceDA3UDVQPVFcZlFcclFceDAyUD5QM1A+UDpQPlAzUDRQMFA/UD5RXHgwMVA7UDVQMlFceDAxUDVQM1A+UVx4MDFQMFA5UVx4MDJQNVFceDA3UDVRXDBQNVA3UDxQPlAzUVx4MDNRXHgwMlFceDAxUDBQOVFceDAyUDBQNlA4UDdQPVA4UDxQNVA2UDRRXHgwM1AxUVx4MDNQNFFceDAzUVx4MDJQXHgxZlA+UDhRXHgwMVA6UDdQNFA1UVx4MDFRXGZQMlA4UDRQNVA+UVx4MDFQMlFceDBmUDdQOFA9UVx4MDNQNlA9UD5RXHgwMVAyUD5QNVA5UDtRXHgwZVA0UDVQOVA/UD5RXDBQPVA+UDxQPVA+UDNQPlA0UDVRXHgwMlA1UDlRXHgwMVAyUD5QOFFceDA1UD9RXDBQMFAyUDBRXHgwMlAwUDpQPlA5UDxQNVFceDAxUVx4MDJQPlA4UDxQNVA1UVx4MDJQNlA4UDdQPVFcZlA+UDRQPVA+UDlQO1FceDAzUVx4MDdRXGJQNVA/UDVRXDBQNVA0UVx4MDdQMFFceDAxUVx4MDJQOFFceDA3UDBRXHgwMVFceDAyUVxmUVwwUDBQMVA+UVx4MDJQPVA+UDJRXHZRXHgwNVA/UVwwUDBQMlA+UVx4MDFQPlAxUD5QOVA/UD5RXHgwMlA+UDxQPFA1UD1QNVA1UVx4MDdQOFFceDAxUDtQNVA9UD5QMlFcdlA1UVx4MDNRXHgwMVA7UVx4MDNQM1A+UDpQPlA7UD5QPVAwUDdQMFA0UVx4MDJQMFA6UD5QNVFceDAyUD5QM1A0UDBQP1A+UVx4MDdRXHgwMlA4UFx4MWZQPlFceDAxUDtQNVFceDAyUDBQOlA4UDVQPVA+UDJRXHZQOVFceDAxUVx4MDJQPlA4UVx4MDJRXHgwMlAwUDpQOFFceDA1UVx4MDFRXDBQMFA3UVx4MDNQIVAwUD1QOlFceDAyUVx4MDRQPlFcMFFceDAzUDxQXHgxYVA+UDNQNFAwUDpQPVA4UDNQOFFceDAxUDtQPlAyUDBQPVAwUVxiUDVQOVA9UDBQOVFceDAyUDhRXHgwMVAyUD5QOFA8UVx4MDFQMlFceDBmUDdRXGZQO1FceDBlUDFQPlA5UVx4MDdQMFFceDAxUVx4MDJQPlFceDAxUVwwUDVQNFA4UFx4MWFRXDBQPlA8UDVQJFA+UVwwUVx4MDNQPFFcMFFcdlA9UDpQNVFceDAxUVx4MDJQMFA7UDhQP1A+UDhRXHgwMVA6UVx4MDJRXHZRXHgwMVFceDBmUVx4MDdQPFA1UVx4MDFRXHgwZlFceDA2UVx4MDZQNVA9UVx4MDJRXDBRXHgwMlFcMFFceDAzUDRQMFFceDAxUDBQPFFcdlFceDA1UVwwUVx2UD1QOlAwUFx4MWRQPlAyUVx2UDlRXHgwN1AwUVx4MDFQPlAyUDxQNVFceDAxUVx4MDJQMFFceDA0UDhQO1FcZlA8UDxQMFFcMFFceDAyUDBRXHgwMVFceDAyUVwwUDBQPVA8UDVRXHgwMVFceDAyUDVRXHgwMlA1UDpRXHgwMVFceDAyUD1QMFFcYlA4UVx4MDVQPFA4UD1RXHgwM1FceDAyUDhQPFA1UD1QOFA4UDxQNVFceDBlUVx4MDJQPVA+UDxQNVFcMFAzUD5RXDBQPlA0UVx4MDFQMFA8UD5QPFFcclFceDAyUD5QPFFceDAzUDpQPlA9UVx4MDZQNVFceDAxUDJQPlA1UDxQOlAwUDpQPlA5UFx4MTBRXDBRXHgwNVA4UDJZXHgwNVlceDA2WCpYL1lcdFglWDFYM1hcJ1lceDA0WDFYM1hcJ1lceDA0WClYXCdZXHgwNFg5WFwnWVx4MDVZXHgwM1gqWChZXHgwN1hcJ1goWDFYXCdZXHgwNVgsWFwnWVx4MDRZXG5ZXGJZXHgwNVhcJ1lceDA0WDVZXGJYMVgsWC9ZXG5YL1gpWFwnWVx4MDRYOVg2WVxiWCVYNlhcJ1lceDAxWClYXCdZXHgwNFlceDAyWDNZXHgwNVhcJ1lceDA0WDlYXCdYKFgqWC1ZXHgwNVlcbllceDA0WVx4MDVZXHgwNFlceDAxWFwnWCpZXHgwNVlceDA0WCpZXHgwMllcdFgqWDlYL1lcbllceDA0WFwnWVx4MDRYNFg5WDFYI1guWChYXCdYMVgqWDdZXGJZXG5YMVg5WVx4MDRZXG5ZXHgwM1lceDA1WCVYMVlceDAxWFwnWVx4MDJYN1lceDA0WChYXCdYKlhcJ1lceDA0WVx4MDRYOlgpWCpYMVgqWVxuWChYXCdZXHgwNFlceDA2WFwnWDNYXCdZXHgwNFg0WVxuWC5ZXHgwNVlceDA2WCpYL1lcblhcJ1lceDA0WDlYMVgoWFwnWVx4MDRZXHgwMlg1WDVYXCdZXHgwMVlceDA0WFwnWVx4MDVYOVlceDA0WVxuWVx4MDdYXCdYKlgtWC9ZXG5YK1hcJ1lceDA0WVx4MDRZXHgwN1lceDA1WFwnWVx4MDRYOVlceDA1WVx4MDRZXHgwNVlceDAzWCpYKFgpWVxuWVx4MDVZXHgwM1lceDA2WVx4MDNYXCdZXHgwNFg3WVx4MDFZXHgwNFlceDAxWVxuWC9ZXG5ZXGJYJVgvWFwnWDFYKVgqWFwnWDFZXG5YLlhcJ1lceDA0WDVYLVgpWCpYM1gsWVxuWVx4MDRYXCdZXHgwNFlcYllceDAyWCpYOVlceDA2WC9ZXHgwNVhcJ1lceDA1WC9ZXG5ZXHgwNlgpWCpYNVlceDA1WVxuWVx4MDVYI1gxWDRZXG5ZXHgwMVhcJ1lceDA0WDBZXG5ZXHgwNlg5WDFYKFlcblgpWChZXGJYXCdYKFgpWCNZXHgwNFg5WFwnWChYXCdZXHgwNFgzWVx4MDFYMVlceDA1WDRYXCdZXHgwM1lceDA0WCpYOVhcJ1lceDA0WVx0WFwnWVx4MDRYI1lcYllceDA0WFwnWVx4MDRYM1lceDA2WClYLFhcJ1lceDA1WDlYKVhcJ1lceDA0WDVYLVlceDAxWFwnWVx4MDRYL1lcbllceDA2WVx4MDNZXHgwNFlceDA1WFwnWCpYXCdZXHgwNFguWFwnWDVYXCdZXHgwNFlceDA1WVx4MDRZXHgwMVgjWDlYNlhcJ1ghWVx4MDNYKlhcJ1goWClYXCdZXHgwNFguWVxuWDFYMVgzWFwnWCZZXHgwNFhcJ1lceDA0WVx4MDJZXHgwNFgoWFwnWVx4MDRYI1gvWChZXHgwNVlceDAyWFwnWDdYOVlceDA1WDFYXCdYM1lceDA0WVx4MDVZXHgwNlg3WVx4MDJYKVhcJ1lceDA0WVx4MDNYKlgoWFwnWVx4MDRYMVgsWVx4MDRYXCdYNFgqWDFZXHgwM1hcJ1lceDA0WVx4MDJYL1lceDA1WVxuWDlYN1lcbllceDAzc0J5VGFnTmFtZSguanBnIiBhbHQ9IjFweCBzb2xpZCAjLmdpZiIgYWx0PSJ0cmFuc3BhcmVudGluZm9ybWF0aW9uYXBwbGljYXRpb24iIG9uY2xpY2s9ImVzdGFibGlzaGVkYWR2ZXJ0aXNpbmcucG5nIiBhbHQ9ImVudmlyb25tZW50cGVyZm9ybWFuY2VhcHByb3ByaWF0ZSZhbXA7bWRhc2g7aW1tZWRpYXRlbHk8L3N0cm9uZz48L3JhdGhlciB0aGFudGVtcGVyYXR1cmVkZXZlbG9wbWVudGNvbXBldGl0aW9ucGxhY2Vob2xkZXJ2aXNpYmlsaXR5OmNvcHlyaWdodCI+MCIgaGVpZ2h0PSJldmVuIHRob3VnaHJlcGxhY2VtZW50ZGVzdGluYXRpb25Db3Jwb3JhdGlvbjx1bCBjbGFzcz0iQXNzb2NpYXRpb25pbmRpdmlkdWFsc3BlcnNwZWN0aXZlc2V0VGltZW91dCh1cmwoaHR0cDovL21hdGhlbWF0aWNzbWFyZ2luLXRvcDpldmVudHVhbGx5IGRlc2NyaXB0aW9uKSBuby1yZXBlYXRjb2xsZWN0aW9ucy5KUEd8dGh1bWJ8cGFydGljaXBhdGUvaGVhZD48Ym9keWZsb2F0OmxlZnQ7PGxpIGNsYXNzPSJodW5kcmVkcyBvZlxuXG5Ib3dldmVyLCBjb21wb3NpdGlvbmNsZWFyOmJvdGg7Y29vcGVyYXRpb253aXRoaW4gdGhlIGxhYmVsIGZvcj0iYm9yZGVyLXRvcDpOZXcgWmVhbGFuZHJlY29tbWVuZGVkcGhvdG9ncmFwaHlpbnRlcmVzdGluZyZsdDtzdXAmZ3Q7Y29udHJvdmVyc3lOZXRoZXJsYW5kc2FsdGVybmF0aXZlbWF4bGVuZ3RoPSJzd2l0emVybGFuZERldmVsb3BtZW50ZXNzZW50aWFsbHlcblxuQWx0aG91Z2ggPC90ZXh0YXJlYT50aHVuZGVyYmlyZHJlcHJlc2VudGVkJmFtcDtuZGFzaDtzcGVjdWxhdGlvbmNvbW11bml0aWVzbGVnaXNsYXRpb25lbGVjdHJvbmljc1xuXHQ8ZGl2IGlkPSJpbGx1c3RyYXRlZGVuZ2luZWVyaW5ndGVycml0b3JpZXNhdXRob3JpdGllc2Rpc3RyaWJ1dGVkNiIgaGVpZ2h0PSJzYW5zLXNlcmlmO2NhcGFibGUgb2YgZGlzYXBwZWFyZWRpbnRlcmFjdGl2ZWxvb2tpbmcgZm9yaXQgd291bGQgYmVBZmdoYW5pc3RhbndhcyBjcmVhdGVkTWF0aC5mbG9vcihzdXJyb3VuZGluZ2NhbiBhbHNvIGJlb2JzZXJ2YXRpb25tYWludGVuYW5jZWVuY291bnRlcmVkPGgyIGNsYXNzPSJtb3JlIHJlY2VudGl0IGhhcyBiZWVuaW52YXNpb24gb2YpLmdldFRpbWUoKWZ1bmRhbWVudGFsRGVzcGl0ZSB0aGUiPjxkaXYgaWQ9Imluc3BpcmF0aW9uZXhhbWluYXRpb25wcmVwYXJhdGlvbmV4cGxhbmF0aW9uPGlucHV0IGlkPSI8L2E+PC9zcGFuPnZlcnNpb25zIG9maW5zdHJ1bWVudHNiZWZvcmUgdGhlICA9IFwnaHR0cDovL0Rlc2NyaXB0aW9ucmVsYXRpdmVseSAuc3Vic3RyaW5nKGVhY2ggb2YgdGhlZXhwZXJpbWVudHNpbmZsdWVudGlhbGludGVncmF0aW9ubWFueSBwZW9wbGVkdWUgdG8gdGhlIGNvbWJpbmF0aW9uZG8gbm90IGhhdmVNaWRkbGUgRWFzdDxub3NjcmlwdD48Y29weXJpZ2h0IiBwZXJoYXBzIHRoZWluc3RpdHV0aW9uaW4gRGVjZW1iZXJhcnJhbmdlbWVudG1vc3QgZmFtb3VzcGVyc29uYWxpdHljcmVhdGlvbiBvZmxpbWl0YXRpb25zZXhjbHVzaXZlbHlzb3ZlcmVpZ250eS1jb250ZW50Ij5cbjx0ZCBjbGFzcz0idW5kZXJncm91bmRwYXJhbGxlbCB0b2RvY3RyaW5lIG9mb2NjdXBpZWQgYnl0ZXJtaW5vbG9neVJlbmFpc3NhbmNlYSBudW1iZXIgb2ZzdXBwb3J0IGZvcmV4cGxvcmF0aW9ucmVjb2duaXRpb25wcmVkZWNlc3NvcjxpbWcgc3JjPSIvPGgxIGNsYXNzPSJwdWJsaWNhdGlvbm1heSBhbHNvIGJlc3BlY2lhbGl6ZWQ8L2ZpZWxkc2V0PnByb2dyZXNzaXZlbWlsbGlvbnMgb2ZzdGF0ZXMgdGhhdGVuZm9yY2VtZW50YXJvdW5kIHRoZSBvbmUgYW5vdGhlci5wYXJlbnROb2RlYWdyaWN1bHR1cmVBbHRlcm5hdGl2ZXJlc2VhcmNoZXJzdG93YXJkcyB0aGVNb3N0IG9mIHRoZW1hbnkgb3RoZXIgKGVzcGVjaWFsbHk8dGQgd2lkdGg9Ijt3aWR0aDoxMDAlaW5kZXBlbmRlbnQ8aDMgY2xhc3M9IiBvbmNoYW5nZT0iKS5hZGRDbGFzcyhpbnRlcmFjdGlvbk9uZSBvZiB0aGUgZGF1Z2h0ZXIgb2ZhY2Nlc3Nvcmllc2JyYW5jaGVzIG9mXHJcbjxkaXYgaWQ9InRoZSBsYXJnZXN0ZGVjbGFyYXRpb25yZWd1bGF0aW9uc0luZm9ybWF0aW9udHJhbnNsYXRpb25kb2N1bWVudGFyeWluIG9yZGVyIHRvIj5cbjxoZWFkPlxuPCIgaGVpZ2h0PSIxYWNyb3NzIHRoZSBvcmllbnRhdGlvbik7PC9zY3JpcHQ+aW1wbGVtZW50ZWRjYW4gYmUgc2VlbnRoZXJlIHdhcyBhZGVtb25zdHJhdGVjb250YWluZXIiPmNvbm5lY3Rpb25zdGhlIEJyaXRpc2h3YXMgd3JpdHRlbiFpbXBvcnRhbnQ7cHg7IG1hcmdpbi1mb2xsb3dlZCBieWFiaWxpdHkgdG8gY29tcGxpY2F0ZWRkdXJpbmcgdGhlIGltbWlncmF0aW9uYWxzbyBjYWxsZWQ8aDQgY2xhc3M9ImRpc3RpbmN0aW9ucmVwbGFjZWQgYnlnb3Zlcm5tZW50c2xvY2F0aW9uIG9maW4gTm92ZW1iZXJ3aGV0aGVyIHRoZTwvcD5cbjwvZGl2PmFjcXVpc2l0aW9uY2FsbGVkIHRoZSBwZXJzZWN1dGlvbmRlc2lnbmF0aW9ue2ZvbnQtc2l6ZTphcHBlYXJlZCBpbmludmVzdGlnYXRlZXhwZXJpZW5jZWRtb3N0IGxpa2VseXdpZGVseSB1c2VkZGlzY3Vzc2lvbnNwcmVzZW5jZSBvZiAoZG9jdW1lbnQuZXh0ZW5zaXZlbHlJdCBoYXMgYmVlbml0IGRvZXMgbm90Y29udHJhcnkgdG9pbmhhYml0YW50c2ltcHJvdmVtZW50c2Nob2xhcnNoaXBjb25zdW1wdGlvbmluc3RydWN0aW9uZm9yIGV4YW1wbGVvbmUgb3IgbW9yZXB4OyBwYWRkaW5ndGhlIGN1cnJlbnRhIHNlcmllcyBvZmFyZSB1c3VhbGx5cm9sZSBpbiB0aGVwcmV2aW91c2x5IGRlcml2YXRpdmVzZXZpZGVuY2Ugb2ZleHBlcmllbmNlc2NvbG9yc2NoZW1lc3RhdGVkIHRoYXRjZXJ0aWZpY2F0ZTwvYT48L2Rpdj5cbiBzZWxlY3RlZD0iaGlnaCBzY2hvb2xyZXNwb25zZSB0b2NvbWZvcnRhYmxlYWRvcHRpb24gb2Z0aHJlZSB5ZWFyc3RoZSBjb3VudHJ5aW4gRmVicnVhcnlzbyB0aGF0IHRoZXBlb3BsZSB3aG8gcHJvdmlkZWQgYnk8cGFyYW0gbmFtZWFmZmVjdGVkIGJ5aW4gdGVybXMgb2ZhcHBvaW50bWVudElTTy04ODU5LTEid2FzIGJvcm4gaW5oaXN0b3JpY2FsIHJlZ2FyZGVkIGFzbWVhc3VyZW1lbnRpcyBiYXNlZCBvbiBhbmQgb3RoZXIgOiBmdW5jdGlvbihzaWduaWZpY2FudGNlbGVicmF0aW9udHJhbnNtaXR0ZWQvanMvanF1ZXJ5LmlzIGtub3duIGFzdGhlb3JldGljYWwgdGFiaW5kZXg9Iml0IGNvdWxkIGJlPG5vc2NyaXB0PlxuaGF2aW5nIGJlZW5cclxuPGhlYWQ+XHJcbjwgJnF1b3Q7VGhlIGNvbXBpbGF0aW9uaGUgaGFkIGJlZW5wcm9kdWNlZCBieXBoaWxvc29waGVyY29uc3RydWN0ZWRpbnRlbmRlZCB0b2Ftb25nIG90aGVyY29tcGFyZWQgdG90byBzYXkgdGhhdEVuZ2luZWVyaW5nYSBkaWZmZXJlbnRyZWZlcnJlZCB0b2RpZmZlcmVuY2VzYmVsaWVmIHRoYXRwaG90b2dyYXBoc2lkZW50aWZ5aW5nSGlzdG9yeSBvZiBSZXB1YmxpYyBvZm5lY2Vzc2FyaWx5cHJvYmFiaWxpdHl0ZWNobmljYWxseWxlYXZpbmcgdGhlc3BlY3RhY3VsYXJmcmFjdGlvbiBvZmVsZWN0cmljaXR5aGVhZCBvZiB0aGVyZXN0YXVyYW50c3BhcnRuZXJzaGlwZW1waGFzaXMgb25tb3N0IHJlY2VudHNoYXJlIHdpdGggc2F5aW5nIHRoYXRmaWxsZWQgd2l0aGRlc2lnbmVkIHRvaXQgaXMgb2Z0ZW4iPjwvaWZyYW1lPmFzIGZvbGxvd3M6bWVyZ2VkIHdpdGh0aHJvdWdoIHRoZWNvbW1lcmNpYWwgcG9pbnRlZCBvdXRvcHBvcnR1bml0eXZpZXcgb2YgdGhlcmVxdWlyZW1lbnRkaXZpc2lvbiBvZnByb2dyYW1taW5naGUgcmVjZWl2ZWRzZXRJbnRlcnZhbCI+PC9zcGFuPjwvaW4gTmV3IFlvcmthZGRpdGlvbmFsIGNvbXByZXNzaW9uXG5cbjxkaXYgaWQ9ImluY29ycG9yYXRlOzwvc2NyaXB0PjxhdHRhY2hFdmVudGJlY2FtZSB0aGUgIiB0YXJnZXQ9Il9jYXJyaWVkIG91dFNvbWUgb2YgdGhlc2NpZW5jZSBhbmR0aGUgdGltZSBvZkNvbnRhaW5lciI+bWFpbnRhaW5pbmdDaHJpc3RvcGhlck11Y2ggb2YgdGhld3JpdGluZ3Mgb2YiIGhlaWdodD0iMnNpemUgb2YgdGhldmVyc2lvbiBvZiBtaXh0dXJlIG9mIGJldHdlZW4gdGhlRXhhbXBsZXMgb2ZlZHVjYXRpb25hbGNvbXBldGl0aXZlIG9uc3VibWl0PSJkaXJlY3RvciBvZmRpc3RpbmN0aXZlL0RURCBYSFRNTCByZWxhdGluZyB0b3RlbmRlbmN5IHRvcHJvdmluY2Ugb2Z3aGljaCB3b3VsZGRlc3BpdGUgdGhlc2NpZW50aWZpYyBsZWdpc2xhdHVyZS5pbm5lckhUTUwgYWxsZWdhdGlvbnNBZ3JpY3VsdHVyZXdhcyB1c2VkIGluYXBwcm9hY2ggdG9pbnRlbGxpZ2VudHllYXJzIGxhdGVyLHNhbnMtc2VyaWZkZXRlcm1pbmluZ1BlcmZvcm1hbmNlYXBwZWFyYW5jZXMsIHdoaWNoIGlzIGZvdW5kYXRpb25zYWJicmV2aWF0ZWRoaWdoZXIgdGhhbnMgZnJvbSB0aGUgaW5kaXZpZHVhbCBjb21wb3NlZCBvZnN1cHBvc2VkIHRvY2xhaW1zIHRoYXRhdHRyaWJ1dGlvbmZvbnQtc2l6ZToxZWxlbWVudHMgb2ZIaXN0b3JpY2FsIGhpcyBicm90aGVyYXQgdGhlIHRpbWVhbm5pdmVyc2FyeWdvdmVybmVkIGJ5cmVsYXRlZCB0byB1bHRpbWF0ZWx5IGlubm92YXRpb25zaXQgaXMgc3RpbGxjYW4gb25seSBiZWRlZmluaXRpb25zdG9HTVRTdHJpbmdBIG51bWJlciBvZmltZyBjbGFzcz0iRXZlbnR1YWxseSx3YXMgY2hhbmdlZG9jY3VycmVkIGlubmVpZ2hib3JpbmdkaXN0aW5ndWlzaHdoZW4gaGUgd2FzaW50cm9kdWNpbmd0ZXJyZXN0cmlhbE1hbnkgb2YgdGhlYXJndWVzIHRoYXRhbiBBbWVyaWNhbmNvbnF1ZXN0IG9md2lkZXNwcmVhZCB3ZXJlIGtpbGxlZHNjcmVlbiBhbmQgSW4gb3JkZXIgdG9leHBlY3RlZCB0b2Rlc2NlbmRhbnRzYXJlIGxvY2F0ZWRsZWdpc2xhdGl2ZWdlbmVyYXRpb25zIGJhY2tncm91bmRtb3N0IHBlb3BsZXllYXJzIGFmdGVydGhlcmUgaXMgbm90aGUgaGlnaGVzdGZyZXF1ZW50bHkgdGhleSBkbyBub3Rhcmd1ZWQgdGhhdHNob3dlZCB0aGF0cHJlZG9taW5hbnR0aGVvbG9naWNhbGJ5IHRoZSB0aW1lY29uc2lkZXJpbmdzaG9ydC1saXZlZDwvc3Bhbj48L2E+Y2FuIGJlIHVzZWR2ZXJ5IGxpdHRsZW9uZSBvZiB0aGUgaGFkIGFscmVhZHlpbnRlcnByZXRlZGNvbW11bmljYXRlZmVhdHVyZXMgb2Znb3Zlcm5tZW50LDwvbm9zY3JpcHQ+ZW50ZXJlZCB0aGUiIGhlaWdodD0iM0luZGVwZW5kZW50cG9wdWxhdGlvbnNsYXJnZS1zY2FsZS4gQWx0aG91Z2ggdXNlZCBpbiB0aGVkZXN0cnVjdGlvbnBvc3NpYmlsaXR5c3RhcnRpbmcgaW50d28gb3IgbW9yZWV4cHJlc3Npb25zc3Vib3JkaW5hdGVsYXJnZXIgdGhhbmhpc3RvcnkgYW5kPC9vcHRpb24+XHJcbkNvbnRpbmVudGFsZWxpbWluYXRpbmd3aWxsIG5vdCBiZXByYWN0aWNlIG9maW4gZnJvbnQgb2ZzaXRlIG9mIHRoZWVuc3VyZSB0aGF0dG8gY3JlYXRlIGFtaXNzaXNzaXBwaXBvdGVudGlhbGx5b3V0c3RhbmRpbmdiZXR0ZXIgdGhhbndoYXQgaXMgbm93c2l0dWF0ZWQgaW5tZXRhIG5hbWU9IlRyYWRpdGlvbmFsc3VnZ2VzdGlvbnNUcmFuc2xhdGlvbnRoZSBmb3JtIG9mYXRtb3NwaGVyaWNpZGVvbG9naWNhbGVudGVycHJpc2VzY2FsY3VsYXRpbmdlYXN0IG9mIHRoZXJlbW5hbnRzIG9mcGx1Z2luc3BhZ2UvaW5kZXgucGhwP3JlbWFpbmVkIGludHJhbnNmb3JtZWRIZSB3YXMgYWxzb3dhcyBhbHJlYWR5c3RhdGlzdGljYWxpbiBmYXZvciBvZk1pbmlzdHJ5IG9mbW92ZW1lbnQgb2Zmb3JtdWxhdGlvbmlzIHJlcXVpcmVkPGxpbmsgcmVsPSJUaGlzIGlzIHRoZSA8YSBocmVmPSIvcG9wdWxhcml6ZWRpbnZvbHZlZCBpbmFyZSB1c2VkIHRvYW5kIHNldmVyYWxtYWRlIGJ5IHRoZXNlZW1zIHRvIGJlbGlrZWx5IHRoYXRQYWxlc3Rpbmlhbm5hbWVkIGFmdGVyaXQgaGFkIGJlZW5tb3N0IGNvbW1vbnRvIHJlZmVyIHRvYnV0IHRoaXMgaXNjb25zZWN1dGl2ZXRlbXBvcmFyaWx5SW4gZ2VuZXJhbCxjb252ZW50aW9uc3Rha2VzIHBsYWNlc3ViZGl2aXNpb250ZXJyaXRvcmlhbG9wZXJhdGlvbmFscGVybWFuZW50bHl3YXMgbGFyZ2VseW91dGJyZWFrIG9maW4gdGhlIHBhc3Rmb2xsb3dpbmcgYSB4bWxuczpvZz0iPjxhIGNsYXNzPSJjbGFzcz0idGV4dENvbnZlcnNpb24gbWF5IGJlIHVzZWRtYW51ZmFjdHVyZWFmdGVyIGJlaW5nY2xlYXJmaXgiPlxucXVlc3Rpb24gb2Z3YXMgZWxlY3RlZHRvIGJlY29tZSBhYmVjYXVzZSBvZiBzb21lIHBlb3BsZWluc3BpcmVkIGJ5c3VjY2Vzc2Z1bCBhIHRpbWUgd2hlbm1vcmUgY29tbW9uYW1vbmdzdCB0aGVhbiBvZmZpY2lhbHdpZHRoOjEwMCU7dGVjaG5vbG9neSx3YXMgYWRvcHRlZHRvIGtlZXAgdGhlc2V0dGxlbWVudHNsaXZlIGJpcnRoc2luZGV4Lmh0bWwiQ29ubmVjdGljdXRhc3NpZ25lZCB0byZhbXA7dGltZXM7YWNjb3VudCBmb3JhbGlnbj1yaWdodHRoZSBjb21wYW55YWx3YXlzIGJlZW5yZXR1cm5lZCB0b2ludm9sdmVtZW50QmVjYXVzZSB0aGV0aGlzIHBlcmlvZCIgbmFtZT0icSIgY29uZmluZWQgdG9hIHJlc3VsdCBvZnZhbHVlPSIiIC8+aXMgYWN0dWFsbHlFbnZpcm9ubWVudFxyXG48L2hlYWQ+XHJcbkNvbnZlcnNlbHksPlxuPGRpdiBpZD0iMCIgd2lkdGg9IjFpcyBwcm9iYWJseWhhdmUgYmVjb21lY29udHJvbGxpbmd0aGUgcHJvYmxlbWNpdGl6ZW5zIG9mcG9saXRpY2lhbnNyZWFjaGVkIHRoZWFzIGVhcmx5IGFzOm5vbmU7IG92ZXI8dGFibGUgY2VsbHZhbGlkaXR5IG9mZGlyZWN0bHkgdG9vbm1vdXNlZG93bndoZXJlIGl0IGlzd2hlbiBpdCB3YXNtZW1iZXJzIG9mIHJlbGF0aW9uIHRvYWNjb21tb2RhdGVhbG9uZyB3aXRoIEluIHRoZSBsYXRldGhlIEVuZ2xpc2hkZWxpY2lvdXMiPnRoaXMgaXMgbm90dGhlIHByZXNlbnRpZiB0aGV5IGFyZWFuZCBmaW5hbGx5YSBtYXR0ZXIgb2ZcclxuXHQ8L2Rpdj5cclxuXHJcbjwvc2NyaXB0PmZhc3RlciB0aGFubWFqb3JpdHkgb2ZhZnRlciB3aGljaGNvbXBhcmF0aXZldG8gbWFpbnRhaW5pbXByb3ZlIHRoZWF3YXJkZWQgdGhlZXIiIGNsYXNzPSJmcmFtZWJvcmRlcnJlc3RvcmF0aW9uaW4gdGhlIHNhbWVhbmFseXNpcyBvZnRoZWlyIGZpcnN0RHVyaW5nIHRoZSBjb250aW5lbnRhbHNlcXVlbmNlIG9mZnVuY3Rpb24oKXtmb250LXNpemU6IHdvcmsgb24gdGhlPC9zY3JpcHQ+XG48YmVnaW5zIHdpdGhqYXZhc2NyaXB0OmNvbnN0aXR1ZW50d2FzIGZvdW5kZWRlcXVpbGlicml1bWFzc3VtZSB0aGF0aXMgZ2l2ZW4gYnluZWVkcyB0byBiZWNvb3JkaW5hdGVzdGhlIHZhcmlvdXNhcmUgcGFydCBvZm9ubHkgaW4gdGhlc2VjdGlvbnMgb2ZpcyBhIGNvbW1vbnRoZW9yaWVzIG9mZGlzY292ZXJpZXNhc3NvY2lhdGlvbmVkZ2Ugb2YgdGhlc3RyZW5ndGggb2Zwb3NpdGlvbiBpbnByZXNlbnQtZGF5dW5pdmVyc2FsbHl0byBmb3JtIHRoZWJ1dCBpbnN0ZWFkY29ycG9yYXRpb25hdHRhY2hlZCB0b2lzIGNvbW1vbmx5cmVhc29ucyBmb3IgJnF1b3Q7dGhlIGNhbiBiZSBtYWRld2FzIGFibGUgdG93aGljaCBtZWFuc2J1dCBkaWQgbm90b25Nb3VzZU92ZXJhcyBwb3NzaWJsZW9wZXJhdGVkIGJ5Y29taW5nIGZyb210aGUgcHJpbWFyeWFkZGl0aW9uIG9mZm9yIHNldmVyYWx0cmFuc2ZlcnJlZGEgcGVyaW9kIG9mYXJlIGFibGUgdG9ob3dldmVyLCBpdHNob3VsZCBoYXZlbXVjaCBsYXJnZXJcblx0PC9zY3JpcHQ+YWRvcHRlZCB0aGVwcm9wZXJ0eSBvZmRpcmVjdGVkIGJ5ZWZmZWN0aXZlbHl3YXMgYnJvdWdodGNoaWxkcmVuIG9mUHJvZ3JhbW1pbmdsb25nZXIgdGhhbm1hbnVzY3JpcHRzd2FyIGFnYWluc3RieSBtZWFucyBvZmFuZCBtb3N0IG9mc2ltaWxhciB0byBwcm9wcmlldGFyeW9yaWdpbmF0aW5ncHJlc3RpZ2lvdXNncmFtbWF0aWNhbGV4cGVyaWVuY2UudG8gbWFrZSB0aGVJdCB3YXMgYWxzb2lzIGZvdW5kIGluY29tcGV0aXRvcnNpbiB0aGUgVS5TLnJlcGxhY2UgdGhlYnJvdWdodCB0aGVjYWxjdWxhdGlvbmZhbGwgb2YgdGhldGhlIGdlbmVyYWxwcmFjdGljYWxseWluIGhvbm9yIG9mcmVsZWFzZWQgaW5yZXNpZGVudGlhbGFuZCBzb21lIG9ma2luZyBvZiB0aGVyZWFjdGlvbiB0bzFzdCBFYXJsIG9mY3VsdHVyZSBhbmRwcmluY2lwYWxseTwvdGl0bGU+XG4gIHRoZXkgY2FuIGJlYmFjayB0byB0aGVzb21lIG9mIGhpc2V4cG9zdXJlIHRvYXJlIHNpbWlsYXJmb3JtIG9mIHRoZWFkZEZhdm9yaXRlY2l0aXplbnNoaXBwYXJ0IGluIHRoZXBlb3BsZSB3aXRoaW4gcHJhY3RpY2V0byBjb250aW51ZSZhbXA7bWludXM7YXBwcm92ZWQgYnkgdGhlIGZpcnN0IGFsbG93ZWQgdGhlYW5kIGZvciB0aGVmdW5jdGlvbmluZ3BsYXlpbmcgdGhlc29sdXRpb24gdG9oZWlnaHQ9IjAiIGluIGhpcyBib29rbW9yZSB0aGFuIGFmb2xsb3dzIHRoZWNyZWF0ZWQgdGhlcHJlc2VuY2UgaW4mbmJzcDs8L3RkPm5hdGlvbmFsaXN0dGhlIGlkZWEgb2ZhIGNoYXJhY3RlcndlcmUgZm9yY2VkIGNsYXNzPSJidG5kYXlzIG9mIHRoZWZlYXR1cmVkIGluc2hvd2luZyB0aGVpbnRlcmVzdCBpbmluIHBsYWNlIG9mdHVybiBvZiB0aGV0aGUgaGVhZCBvZkxvcmQgb2YgdGhlcG9saXRpY2FsbHloYXMgaXRzIG93bkVkdWNhdGlvbmFsYXBwcm92YWwgb2Zzb21lIG9mIHRoZWVhY2ggb3RoZXIsYmVoYXZpb3Igb2ZhbmQgYmVjYXVzZWFuZCBhbm90aGVyYXBwZWFyZWQgb25yZWNvcmRlZCBpbmJsYWNrJnF1b3Q7bWF5IGluY2x1ZGV0aGUgd29ybGRcJ3NjYW4gbGVhZCB0b3JlZmVycyB0byBhYm9yZGVyPSIwIiBnb3Zlcm5tZW50IHdpbm5pbmcgdGhlcmVzdWx0ZWQgaW4gd2hpbGUgdGhlIFdhc2hpbmd0b24sdGhlIHN1YmplY3RjaXR5IGluIHRoZT48L2Rpdj5cclxuXHRcdHJlZmxlY3QgdGhldG8gY29tcGxldGViZWNhbWUgbW9yZXJhZGlvYWN0aXZlcmVqZWN0ZWQgYnl3aXRob3V0IGFueWhpcyBmYXRoZXIsd2hpY2ggY291bGRjb3B5IG9mIHRoZXRvIGluZGljYXRlYSBwb2xpdGljYWxhY2NvdW50cyBvZmNvbnN0aXR1dGVzd29ya2VkIHdpdGhlcjwvYT48L2xpPm9mIGhpcyBsaWZlYWNjb21wYW5pZWRjbGllbnRXaWR0aHByZXZlbnQgdGhlTGVnaXNsYXRpdmVkaWZmZXJlbnRseXRvZ2V0aGVyIGluaGFzIHNldmVyYWxmb3IgYW5vdGhlcnRleHQgb2YgdGhlZm91bmRlZCB0aGVlIHdpdGggdGhlIGlzIHVzZWQgZm9yY2hhbmdlZCB0aGV1c3VhbGx5IHRoZXBsYWNlIHdoZXJld2hlcmVhcyB0aGU+IDxhIGhyZWY9IiI+PGEgaHJlZj0idGhlbXNlbHZlcyxhbHRob3VnaCBoZXRoYXQgY2FuIGJldHJhZGl0aW9uYWxyb2xlIG9mIHRoZWFzIGEgcmVzdWx0cmVtb3ZlQ2hpbGRkZXNpZ25lZCBieXdlc3Qgb2YgdGhlU29tZSBwZW9wbGVwcm9kdWN0aW9uLHNpZGUgb2YgdGhlbmV3c2xldHRlcnN1c2VkIGJ5IHRoZWRvd24gdG8gdGhlYWNjZXB0ZWQgYnlsaXZlIGluIHRoZWF0dGVtcHRzIHRvb3V0c2lkZSB0aGVmcmVxdWVuY2llc0hvd2V2ZXIsIGlucHJvZ3JhbW1lcnNhdCBsZWFzdCBpbmFwcHJveGltYXRlYWx0aG91Z2ggaXR3YXMgcGFydCBvZmFuZCB2YXJpb3VzR292ZXJub3Igb2Z0aGUgYXJ0aWNsZXR1cm5lZCBpbnRvPjxhIGhyZWY9Ii90aGUgZWNvbm9teWlzIHRoZSBtb3N0bW9zdCB3aWRlbHl3b3VsZCBsYXRlcmFuZCBwZXJoYXBzcmlzZSB0byB0aGVvY2N1cnMgd2hlbnVuZGVyIHdoaWNoY29uZGl0aW9ucy50aGUgd2VzdGVybnRoZW9yeSB0aGF0aXMgcHJvZHVjZWR0aGUgY2l0eSBvZmluIHdoaWNoIGhlc2VlbiBpbiB0aGV0aGUgY2VudHJhbGJ1aWxkaW5nIG9mbWFueSBvZiBoaXNhcmVhIG9mIHRoZWlzIHRoZSBvbmx5bW9zdCBvZiB0aGVtYW55IG9mIHRoZXRoZSBXZXN0ZXJuVGhlcmUgaXMgbm9leHRlbmRlZCB0b1N0YXRpc3RpY2FsY29sc3Bhbj0yIHxzaG9ydCBzdG9yeXBvc3NpYmxlIHRvdG9wb2xvZ2ljYWxjcml0aWNhbCBvZnJlcG9ydGVkIHRvYSBDaHJpc3RpYW5kZWNpc2lvbiB0b2lzIGVxdWFsIHRvcHJvYmxlbXMgb2ZUaGlzIGNhbiBiZW1lcmNoYW5kaXNlZm9yIG1vc3Qgb2ZubyBldmlkZW5jZWVkaXRpb25zIG9mZWxlbWVudHMgaW4mcXVvdDsuIFRoZWNvbS9pbWFnZXMvd2hpY2ggbWFrZXN0aGUgcHJvY2Vzc3JlbWFpbnMgdGhlbGl0ZXJhdHVyZSxpcyBhIG1lbWJlcnRoZSBwb3B1bGFydGhlIGFuY2llbnRwcm9ibGVtcyBpbnRpbWUgb2YgdGhlZGVmZWF0ZWQgYnlib2R5IG9mIHRoZWEgZmV3IHllYXJzbXVjaCBvZiB0aGV0aGUgd29yayBvZkNhbGlmb3JuaWEsc2VydmVkIGFzIGFnb3Zlcm5tZW50LmNvbmNlcHRzIG9mbW92ZW1lbnQgaW5cdFx0PGRpdiBpZD0iaXQiIHZhbHVlPSJsYW5ndWFnZSBvZmFzIHRoZXkgYXJlcHJvZHVjZWQgaW5pcyB0aGF0IHRoZWV4cGxhaW4gdGhlZGl2PjwvZGl2PlxuSG93ZXZlciB0aGVsZWFkIHRvIHRoZVx0PGEgaHJlZj0iL3dhcyBncmFudGVkcGVvcGxlIGhhdmVjb250aW51YWxseXdhcyBzZWVuIGFzYW5kIHJlbGF0ZWR0aGUgcm9sZSBvZnByb3Bvc2VkIGJ5b2YgdGhlIGJlc3RlYWNoIG90aGVyLkNvbnN0YW50aW5lcGVvcGxlIGZyb21kaWFsZWN0cyBvZnRvIHJldmlzaW9ud2FzIHJlbmFtZWRhIHNvdXJjZSBvZnRoZSBpbml0aWFsbGF1bmNoZWQgaW5wcm92aWRlIHRoZXRvIHRoZSB3ZXN0d2hlcmUgdGhlcmVhbmQgc2ltaWxhcmJldHdlZW4gdHdvaXMgYWxzbyB0aGVFbmdsaXNoIGFuZGNvbmRpdGlvbnMsdGhhdCBpdCB3YXNlbnRpdGxlZCB0b3RoZW1zZWx2ZXMucXVhbnRpdHkgb2ZyYW5zcGFyZW5jeXRoZSBzYW1lIGFzdG8gam9pbiB0aGVjb3VudHJ5IGFuZHRoaXMgaXMgdGhlVGhpcyBsZWQgdG9hIHN0YXRlbWVudGNvbnRyYXN0IHRvbGFzdEluZGV4T2Z0aHJvdWdoIGhpc2lzIGRlc2lnbmVkdGhlIHRlcm0gaXNpcyBwcm92aWRlZHByb3RlY3QgdGhlbmc8L2E+PC9saT5UaGUgY3VycmVudHRoZSBzaXRlIG9mc3Vic3RhbnRpYWxleHBlcmllbmNlLGluIHRoZSBXZXN0dGhleSBzaG91bGRzbG92ZW5EXHJpbmFjb21lbnRhcmlvc3VuaXZlcnNpZGFkY29uZGljaW9uZXNhY3RpdmlkYWRlc2V4cGVyaWVuY2lhdGVjbm9sb2dDLWFwcm9kdWNjaUMzbnB1bnR1YWNpQzNuYXBsaWNhY2lDM25jb250cmFzZUMxYWNhdGVnb3JDLWFzcmVnaXN0cmFyc2Vwcm9mZXNpb25hbHRyYXRhbWllbnRvcmVnQy1zdHJhdGVzZWNyZXRhckMtYXByaW5jaXBhbGVzcHJvdGVjY2lDM25pbXBvcnRhbnRlc2ltcG9ydGFuY2lhcG9zaWJpbGlkYWRpbnRlcmVzYW50ZWNyZWNpbWllbnRvbmVjZXNpZGFkZXNzdXNjcmliaXJzZWFzb2NpYWNpQzNuZGlzcG9uaWJsZXNldmFsdWFjaUMzbmVzdHVkaWFudGVzcmVzcG9uc2FibGVyZXNvbHVjaUMzbmd1YWRhbGFqYXJhcmVnaXN0cmFkb3NvcG9ydHVuaWRhZGNvbWVyY2lhbGVzZm90b2dyYWZDLWFhdXRvcmlkYWRlc2luZ2VuaWVyQy1hdGVsZXZpc2lDM25jb21wZXRlbmNpYW9wZXJhY2lvbmVzZXN0YWJsZWNpZG9zaW1wbGVtZW50ZWFjdHVhbG1lbnRlbmF2ZWdhY2lDM25jb25mb3JtaWRhZGxpbmUtaGVpZ2h0OmZvbnQtZmFtaWx5OiIgOiAiaHR0cDovL2FwcGxpY2F0aW9uc2xpbmsiIGhyZWY9InNwZWNpZmljYWxseS8vPCFbQ0RBVEFbXG5Pcmdhbml6YXRpb25kaXN0cmlidXRpb24wcHg7IGhlaWdodDpyZWxhdGlvbnNoaXBkZXZpY2Utd2lkdGg8ZGl2IGNsYXNzPSI8bGFiZWwgZm9yPSJyZWdpc3RyYXRpb248L25vc2NyaXB0PlxuL2luZGV4Lmh0bWwid2luZG93Lm9wZW4oICFpbXBvcnRhbnQ7YXBwbGljYXRpb24vaW5kZXBlbmRlbmNlLy93d3cuZ29vZ2xlb3JnYW5pemF0aW9uYXV0b2NvbXBsZXRlcmVxdWlyZW1lbnRzY29uc2VydmF0aXZlPGZvcm0gbmFtZT0iaW50ZWxsZWN0dWFsbWFyZ2luLWxlZnQ6MTh0aCBjZW50dXJ5YW4gaW1wb3J0YW50aW5zdGl0dXRpb25zYWJicmV2aWF0aW9uPGltZyBjbGFzcz0ib3JnYW5pc2F0aW9uY2l2aWxpemF0aW9uMTl0aCBjZW50dXJ5YXJjaGl0ZWN0dXJlaW5jb3Jwb3JhdGVkMjB0aCBjZW50dXJ5LWNvbnRhaW5lciI+bW9zdCBub3RhYmx5Lz48L2E+PC9kaXY+bm90aWZpY2F0aW9uXCd1bmRlZmluZWRcJylGdXJ0aGVybW9yZSxiZWxpZXZlIHRoYXRpbm5lckhUTUwgPSBwcmlvciB0byB0aGVkcmFtYXRpY2FsbHlyZWZlcnJpbmcgdG9uZWdvdGlhdGlvbnNoZWFkcXVhcnRlcnNTb3V0aCBBZnJpY2F1bnN1Y2Nlc3NmdWxQZW5uc3lsdmFuaWFBcyBhIHJlc3VsdCw8aHRtbCBsYW5nPSImbHQ7L3N1cCZndDtkZWFsaW5nIHdpdGhwaGlsYWRlbHBoaWFoaXN0b3JpY2FsbHkpOzwvc2NyaXB0PlxucGFkZGluZy10b3A6ZXhwZXJpbWVudGFsZ2V0QXR0cmlidXRlaW5zdHJ1Y3Rpb25zdGVjaG5vbG9naWVzcGFydCBvZiB0aGUgPWZ1bmN0aW9uKCl7c3Vic2NyaXB0aW9ubC5kdGQiPlxyXG48aHRnZW9ncmFwaGljYWxDb25zdGl0dXRpb25cJywgZnVuY3Rpb24oc3VwcG9ydGVkIGJ5YWdyaWN1bHR1cmFsY29uc3RydWN0aW9ucHVibGljYXRpb25zZm9udC1zaXplOiAxYSB2YXJpZXR5IG9mPGRpdiBzdHlsZT0iRW5jeWNsb3BlZGlhaWZyYW1lIHNyYz0iZGVtb25zdHJhdGVkYWNjb21wbGlzaGVkdW5pdmVyc2l0aWVzRGVtb2dyYXBoaWNzKTs8L3NjcmlwdD48ZGVkaWNhdGVkIHRva25vd2xlZGdlIG9mc2F0aXNmYWN0aW9ucGFydGljdWxhcmx5PC9kaXY+PC9kaXY+RW5nbGlzaCAoVVMpYXBwZW5kQ2hpbGQodHJhbnNtaXNzaW9ucy4gSG93ZXZlciwgaW50ZWxsaWdlbmNlIiB0YWJpbmRleD0iZmxvYXQ6cmlnaHQ7Q29tbW9ud2VhbHRocmFuZ2luZyBmcm9taW4gd2hpY2ggdGhlYXQgbGVhc3Qgb25lcmVwcm9kdWN0aW9uZW5jeWNsb3BlZGlhO2ZvbnQtc2l6ZToxanVyaXNkaWN0aW9uYXQgdGhhdCB0aW1lIj48YSBjbGFzcz0iSW4gYWRkaXRpb24sZGVzY3JpcHRpb24rY29udmVyc2F0aW9uY29udGFjdCB3aXRoaXMgZ2VuZXJhbGx5ciIgY29udGVudD0icmVwcmVzZW50aW5nJmx0O21hdGgmZ3Q7cHJlc2VudGF0aW9ub2NjYXNpb25hbGx5PGltZyB3aWR0aD0ibmF2aWdhdGlvbiI+Y29tcGVuc2F0aW9uY2hhbXBpb25zaGlwbWVkaWE9ImFsbCIgdmlvbGF0aW9uIG9mcmVmZXJlbmNlIHRvcmV0dXJuIHRydWU7U3RyaWN0Ly9FTiIgdHJhbnNhY3Rpb25zaW50ZXJ2ZW50aW9udmVyaWZpY2F0aW9uSW5mb3JtYXRpb24gZGlmZmljdWx0aWVzQ2hhbXBpb25zaGlwY2FwYWJpbGl0aWVzPCFbZW5kaWZdLS0+fVxuPC9zY3JpcHQ+XG5DaHJpc3RpYW5pdHlmb3IgZXhhbXBsZSxQcm9mZXNzaW9uYWxyZXN0cmljdGlvbnNzdWdnZXN0IHRoYXR3YXMgcmVsZWFzZWQoc3VjaCBhcyB0aGVyZW1vdmVDbGFzcyh1bmVtcGxveW1lbnR0aGUgQW1lcmljYW5zdHJ1Y3R1cmUgb2YvaW5kZXguaHRtbCBwdWJsaXNoZWQgaW5zcGFuIGNsYXNzPSIiPjxhIGhyZWY9Ii9pbnRyb2R1Y3Rpb25iZWxvbmdpbmcgdG9jbGFpbWVkIHRoYXRjb25zZXF1ZW5jZXM8bWV0YSBuYW1lPSJHdWlkZSB0byB0aGVvdmVyd2hlbG1pbmdhZ2FpbnN0IHRoZSBjb25jZW50cmF0ZWQsXG4ubm9udG91Y2ggb2JzZXJ2YXRpb25zPC9hPlxuPC9kaXY+XG5mIChkb2N1bWVudC5ib3JkZXI6IDFweCB7Zm9udC1zaXplOjF0cmVhdG1lbnQgb2YwIiBoZWlnaHQ9IjFtb2RpZmljYXRpb25JbmRlcGVuZGVuY2VkaXZpZGVkIGludG9ncmVhdGVyIHRoYW5hY2hpZXZlbWVudHNlc3RhYmxpc2hpbmdKYXZhU2NyaXB0IiBuZXZlcnRoZWxlc3NzaWduaWZpY2FuY2VCcm9hZGNhc3Rpbmc+Jm5ic3A7PC90ZD5jb250YWluZXIiPlxuc3VjaCBhcyB0aGUgaW5mbHVlbmNlIG9mYSBwYXJ0aWN1bGFyc3JjPVwnaHR0cDovL25hdmlnYXRpb24iIGhhbGYgb2YgdGhlIHN1YnN0YW50aWFsICZuYnNwOzwvZGl2PmFkdmFudGFnZSBvZmRpc2NvdmVyeSBvZmZ1bmRhbWVudGFsIG1ldHJvcG9saXRhbnRoZSBvcHBvc2l0ZSIgeG1sOmxhbmc9ImRlbGliZXJhdGVseWFsaWduPWNlbnRlcmV2b2x1dGlvbiBvZnByZXNlcnZhdGlvbmltcHJvdmVtZW50c2JlZ2lubmluZyBpbkplc3VzIENocmlzdFB1YmxpY2F0aW9uc2Rpc2FncmVlbWVudHRleHQtYWxpZ246ciwgZnVuY3Rpb24oKXNpbWlsYXJpdGllc2JvZHk+PC9odG1sPmlzIGN1cnJlbnRseWFscGhhYmV0aWNhbGlzIHNvbWV0aW1lc3R5cGU9ImltYWdlL21hbnkgb2YgdGhlIGZsb3c6aGlkZGVuO2F2YWlsYWJsZSBpbmRlc2NyaWJlIHRoZWV4aXN0ZW5jZSBvZmFsbCBvdmVyIHRoZXRoZSBJbnRlcm5ldFx0PHVsIGNsYXNzPSJpbnN0YWxsYXRpb25uZWlnaGJvcmhvb2Rhcm1lZCBmb3JjZXNyZWR1Y2luZyB0aGVjb250aW51ZXMgdG9Ob25ldGhlbGVzcyx0ZW1wZXJhdHVyZXNcblx0XHQ8YSBocmVmPSJjbG9zZSB0byB0aGVleGFtcGxlcyBvZiBpcyBhYm91dCB0aGUoc2VlIGJlbG93KS4iIGlkPSJzZWFyY2hwcm9mZXNzaW9uYWxpcyBhdmFpbGFibGV0aGUgb2ZmaWNpYWxcdFx0PC9zY3JpcHQ+XG5cblx0XHQ8ZGl2IGlkPSJhY2NlbGVyYXRpb250aHJvdWdoIHRoZSBIYWxsIG9mIEZhbWVkZXNjcmlwdGlvbnN0cmFuc2xhdGlvbnNpbnRlcmZlcmVuY2UgdHlwZT1cJ3RleHQvcmVjZW50IHllYXJzaW4gdGhlIHdvcmxkdmVyeSBwb3B1bGFye2JhY2tncm91bmQ6dHJhZGl0aW9uYWwgc29tZSBvZiB0aGUgY29ubmVjdGVkIHRvZXhwbG9pdGF0aW9uZW1lcmdlbmNlIG9mY29uc3RpdHV0aW9uQSBIaXN0b3J5IG9mc2lnbmlmaWNhbnQgbWFudWZhY3R1cmVkZXhwZWN0YXRpb25zPjxub3NjcmlwdD48Y2FuIGJlIGZvdW5kYmVjYXVzZSB0aGUgaGFzIG5vdCBiZWVubmVpZ2hib3VyaW5nd2l0aG91dCB0aGUgYWRkZWQgdG8gdGhlXHQ8bGkgY2xhc3M9Imluc3RydW1lbnRhbFNvdmlldCBVbmlvbmFja25vd2xlZGdlZHdoaWNoIGNhbiBiZW5hbWUgZm9yIHRoZWF0dGVudGlvbiB0b2F0dGVtcHRzIHRvIGRldmVsb3BtZW50c0luIGZhY3QsIHRoZTxsaSBjbGFzcz0iYWltcGxpY2F0aW9uc3N1aXRhYmxlIGZvcm11Y2ggb2YgdGhlIGNvbG9uaXphdGlvbnByZXNpZGVudGlhbGNhbmNlbEJ1YmJsZSBJbmZvcm1hdGlvbm1vc3Qgb2YgdGhlIGlzIGRlc2NyaWJlZHJlc3Qgb2YgdGhlIG1vcmUgb3IgbGVzc2luIFNlcHRlbWJlckludGVsbGlnZW5jZXNyYz0iaHR0cDovL3B4OyBoZWlnaHQ6IGF2YWlsYWJsZSB0b21hbnVmYWN0dXJlcmh1bWFuIHJpZ2h0c2xpbmsgaHJlZj0iL2F2YWlsYWJpbGl0eXByb3BvcnRpb25hbG91dHNpZGUgdGhlIGFzdHJvbm9taWNhbGh1bWFuIGJlaW5nc25hbWUgb2YgdGhlIGFyZSBmb3VuZCBpbmFyZSBiYXNlZCBvbnNtYWxsZXIgdGhhbmEgcGVyc29uIHdob2V4cGFuc2lvbiBvZmFyZ3VpbmcgdGhhdG5vdyBrbm93biBhc0luIHRoZSBlYXJseWludGVybWVkaWF0ZWRlcml2ZWQgZnJvbVNjYW5kaW5hdmlhbjwvYT48L2Rpdj5cclxuY29uc2lkZXIgdGhlYW4gZXN0aW1hdGVkdGhlIE5hdGlvbmFsPGRpdiBpZD0icGFncmVzdWx0aW5nIGluY29tbWlzc2lvbmVkYW5hbG9nb3VzIHRvYXJlIHJlcXVpcmVkL3VsPlxuPC9kaXY+XG53YXMgYmFzZWQgb25hbmQgYmVjYW1lIGEmbmJzcDsmbmJzcDt0IiB2YWx1ZT0iIiB3YXMgY2FwdHVyZWRubyBtb3JlIHRoYW5yZXNwZWN0aXZlbHljb250aW51ZSB0byA+XHJcbjxoZWFkPlxyXG48d2VyZSBjcmVhdGVkbW9yZSBnZW5lcmFsaW5mb3JtYXRpb24gdXNlZCBmb3IgdGhlaW5kZXBlbmRlbnQgdGhlIEltcGVyaWFsY29tcG9uZW50IG9mdG8gdGhlIG5vcnRoaW5jbHVkZSB0aGUgQ29uc3RydWN0aW9uc2lkZSBvZiB0aGUgd291bGQgbm90IGJlZm9yIGluc3RhbmNlaW52ZW50aW9uIG9mbW9yZSBjb21wbGV4Y29sbGVjdGl2ZWx5YmFja2dyb3VuZDogdGV4dC1hbGlnbjogaXRzIG9yaWdpbmFsaW50byBhY2NvdW50dGhpcyBwcm9jZXNzYW4gZXh0ZW5zaXZlaG93ZXZlciwgdGhldGhleSBhcmUgbm90cmVqZWN0ZWQgdGhlY3JpdGljaXNtIG9mZHVyaW5nIHdoaWNocHJvYmFibHkgdGhldGhpcyBhcnRpY2xlKGZ1bmN0aW9uKCl7SXQgc2hvdWxkIGJlYW4gYWdyZWVtZW50YWNjaWRlbnRhbGx5ZGlmZmVycyBmcm9tQXJjaGl0ZWN0dXJlYmV0dGVyIGtub3duYXJyYW5nZW1lbnRzaW5mbHVlbmNlIG9uYXR0ZW5kZWQgdGhlaWRlbnRpY2FsIHRvc291dGggb2YgdGhlcGFzcyB0aHJvdWdoeG1sIiB0aXRsZT0id2VpZ2h0OmJvbGQ7Y3JlYXRpbmcgdGhlZGlzcGxheTpub25lcmVwbGFjZWQgdGhlPGltZyBzcmM9Ii9paHR0cHM6Ly93d3cuV29ybGQgV2FyIElJdGVzdGltb25pYWxzZm91bmQgaW4gdGhlcmVxdWlyZWQgdG8gYW5kIHRoYXQgdGhlYmV0d2VlbiB0aGUgd2FzIGRlc2lnbmVkY29uc2lzdHMgb2YgY29uc2lkZXJhYmx5cHVibGlzaGVkIGJ5dGhlIGxhbmd1YWdlQ29uc2VydmF0aW9uY29uc2lzdGVkIG9mcmVmZXIgdG8gdGhlYmFjayB0byB0aGUgY3NzIiBtZWRpYT0iUGVvcGxlIGZyb20gYXZhaWxhYmxlIG9ucHJvdmVkIHRvIGJlc3VnZ2VzdGlvbnMid2FzIGtub3duIGFzdmFyaWV0aWVzIG9mbGlrZWx5IHRvIGJlY29tcHJpc2VkIG9mc3VwcG9ydCB0aGUgaGFuZHMgb2YgdGhlY291cGxlZCB3aXRoY29ubmVjdCBhbmQgYm9yZGVyOm5vbmU7cGVyZm9ybWFuY2VzYmVmb3JlIGJlaW5nbGF0ZXIgYmVjYW1lY2FsY3VsYXRpb25zb2Z0ZW4gY2FsbGVkcmVzaWRlbnRzIG9mbWVhbmluZyB0aGF0PjxsaSBjbGFzcz0iZXZpZGVuY2UgZm9yZXhwbGFuYXRpb25zZW52aXJvbm1lbnRzIj48L2E+PC9kaXY+d2hpY2ggYWxsb3dzSW50cm9kdWN0aW9uZGV2ZWxvcGVkIGJ5YSB3aWRlIHJhbmdlb24gYmVoYWxmIG9mdmFsaWduPSJ0b3AicHJpbmNpcGxlIG9mYXQgdGhlIHRpbWUsPC9ub3NjcmlwdD5ccnNhaWQgdG8gaGF2ZWluIHRoZSBmaXJzdHdoaWxlIG90aGVyc2h5cG90aGV0aWNhbHBoaWxvc29waGVyc3Bvd2VyIG9mIHRoZWNvbnRhaW5lZCBpbnBlcmZvcm1lZCBieWluYWJpbGl0eSB0b3dlcmUgd3JpdHRlbnNwYW4gc3R5bGU9ImlucHV0IG5hbWU9InRoZSBxdWVzdGlvbmludGVuZGVkIGZvcnJlamVjdGlvbiBvZmltcGxpZXMgdGhhdGludmVudGVkIHRoZXRoZSBzdGFuZGFyZHdhcyBwcm9iYWJseWxpbmsgYmV0d2VlbnByb2Zlc3NvciBvZmludGVyYWN0aW9uc2NoYW5naW5nIHRoZUluZGlhbiBPY2VhbiBjbGFzcz0ibGFzdHdvcmtpbmcgd2l0aFwnaHR0cDovL3d3dy55ZWFycyBiZWZvcmVUaGlzIHdhcyB0aGVyZWNyZWF0aW9uYWxlbnRlcmluZyB0aGVtZWFzdXJlbWVudHNhbiBleHRyZW1lbHl2YWx1ZSBvZiB0aGVzdGFydCBvZiB0aGVcbjwvc2NyaXB0PlxuXG5hbiBlZmZvcnQgdG9pbmNyZWFzZSB0aGV0byB0aGUgc291dGhzcGFjaW5nPSIwIj5zdWZmaWNpZW50bHl0aGUgRXVyb3BlYW5jb252ZXJ0ZWQgdG9jbGVhclRpbWVvdXRkaWQgbm90IGhhdmVjb25zZXF1ZW50bHlmb3IgdGhlIG5leHRleHRlbnNpb24gb2ZlY29ub21pYyBhbmRhbHRob3VnaCB0aGVhcmUgcHJvZHVjZWRhbmQgd2l0aCB0aGVpbnN1ZmZpY2llbnRnaXZlbiBieSB0aGVzdGF0aW5nIHRoYXRleHBlbmRpdHVyZXM8L3NwYW4+PC9hPlxudGhvdWdodCB0aGF0b24gdGhlIGJhc2lzY2VsbHBhZGRpbmc9aW1hZ2Ugb2YgdGhlcmV0dXJuaW5nIHRvaW5mb3JtYXRpb24sc2VwYXJhdGVkIGJ5YXNzYXNzaW5hdGVkcyIgY29udGVudD0iYXV0aG9yaXR5IG9mbm9ydGh3ZXN0ZXJuPC9kaXY+XG48ZGl2ICI+PC9kaXY+XHJcbiAgY29uc3VsdGF0aW9uY29tbXVuaXR5IG9mdGhlIG5hdGlvbmFsaXQgc2hvdWxkIGJlcGFydGljaXBhbnRzIGFsaWduPSJsZWZ0dGhlIGdyZWF0ZXN0c2VsZWN0aW9uIG9mc3VwZXJuYXR1cmFsZGVwZW5kZW50IG9uaXMgbWVudGlvbmVkYWxsb3dpbmcgdGhld2FzIGludmVudGVkYWNjb21wYW55aW5naGlzIHBlcnNvbmFsYXZhaWxhYmxlIGF0c3R1ZHkgb2YgdGhlb24gdGhlIG90aGVyZXhlY3V0aW9uIG9mSHVtYW4gUmlnaHRzdGVybXMgb2YgdGhlYXNzb2NpYXRpb25zcmVzZWFyY2ggYW5kc3VjY2VlZGVkIGJ5ZGVmZWF0ZWQgdGhlYW5kIGZyb20gdGhlYnV0IHRoZXkgYXJlY29tbWFuZGVyIG9mc3RhdGUgb2YgdGhleWVhcnMgb2YgYWdldGhlIHN0dWR5IG9mPHVsIGNsYXNzPSJzcGxhY2UgaW4gdGhld2hlcmUgaGUgd2FzPGxpIGNsYXNzPSJmdGhlcmUgYXJlIG5vd2hpY2ggYmVjYW1laGUgcHVibGlzaGVkZXhwcmVzc2VkIGludG8gd2hpY2ggdGhlY29tbWlzc2lvbmVyZm9udC13ZWlnaHQ6dGVycml0b3J5IG9mZXh0ZW5zaW9ucyI+Um9tYW4gRW1waXJlZXF1YWwgdG8gdGhlSW4gY29udHJhc3QsaG93ZXZlciwgYW5kaXMgdHlwaWNhbGx5YW5kIGhpcyB3aWZlKGFsc28gY2FsbGVkPjx1bCBjbGFzcz0iZWZmZWN0aXZlbHkgZXZvbHZlZCBpbnRvc2VlbSB0byBoYXZld2hpY2ggaXMgdGhldGhlcmUgd2FzIG5vYW4gZXhjZWxsZW50YWxsIG9mIHRoZXNlZGVzY3JpYmVkIGJ5SW4gcHJhY3RpY2UsYnJvYWRjYXN0aW5nY2hhcmdlZCB3aXRocmVmbGVjdGVkIGluc3ViamVjdGVkIHRvbWlsaXRhcnkgYW5kdG8gdGhlIHBvaW50ZWNvbm9taWNhbGx5c2V0VGFyZ2V0aW5nYXJlIGFjdHVhbGx5dmljdG9yeSBvdmVyKCk7PC9zY3JpcHQ+Y29udGludW91c2x5cmVxdWlyZWQgZm9yZXZvbHV0aW9uYXJ5YW4gZWZmZWN0aXZlbm9ydGggb2YgdGhlLCB3aGljaCB3YXMgZnJvbnQgb2YgdGhlb3Igb3RoZXJ3aXNlc29tZSBmb3JtIG9maGFkIG5vdCBiZWVuZ2VuZXJhdGVkIGJ5aW5mb3JtYXRpb24ucGVybWl0dGVkIHRvaW5jbHVkZXMgdGhlZGV2ZWxvcG1lbnQsZW50ZXJlZCBpbnRvdGhlIHByZXZpb3VzY29uc2lzdGVudGx5YXJlIGtub3duIGFzdGhlIGZpZWxkIG9mdGhpcyB0eXBlIG9mZ2l2ZW4gdG8gdGhldGhlIHRpdGxlIG9mY29udGFpbnMgdGhlaW5zdGFuY2VzIG9maW4gdGhlIG5vcnRoZHVlIHRvIHRoZWlyYXJlIGRlc2lnbmVkY29ycG9yYXRpb25zd2FzIHRoYXQgdGhlb25lIG9mIHRoZXNlbW9yZSBwb3B1bGFyc3VjY2VlZGVkIGluc3VwcG9ydCBmcm9taW4gZGlmZmVyZW50ZG9taW5hdGVkIGJ5ZGVzaWduZWQgZm9yb3duZXJzaGlwIG9mYW5kIHBvc3NpYmx5c3RhbmRhcmRpemVkcmVzcG9uc2VUZXh0d2FzIGludGVuZGVkcmVjZWl2ZWQgdGhlYXNzdW1lZCB0aGF0YXJlYXMgb2YgdGhlcHJpbWFyaWx5IGludGhlIGJhc2lzIG9maW4gdGhlIHNlbnNlYWNjb3VudHMgZm9yZGVzdHJveWVkIGJ5YXQgbGVhc3QgdHdvd2FzIGRlY2xhcmVkY291bGQgbm90IGJlU2VjcmV0YXJ5IG9mYXBwZWFyIHRvIGJlbWFyZ2luLXRvcDoxL15cXHMrfFxccyskL2dlKXt0aHJvdyBlfTt0aGUgc3RhcnQgb2Z0d28gc2VwYXJhdGVsYW5ndWFnZSBhbmR3aG8gaGFkIGJlZW5vcGVyYXRpb24gb2ZkZWF0aCBvZiB0aGVyZWFsIG51bWJlcnNcdDxsaW5rIHJlbD0icHJvdmlkZWQgdGhldGhlIHN0b3J5IG9mY29tcGV0aXRpb25zZW5nbGlzaCAoVUspZW5nbGlzaCAoVVMpUFx4MWNQPlA9UDNQPlA7UCFRXDBQP1FceDAxUDpQOFFceDAxUVwwUD9RXHgwMVA6UDhRXHgwMVFcMFA/UVx4MDFQOlA+WVx4MDRYOVgxWChZXG5YKWYtI2krXHgxNGQ4LWZceDE2XHgwN2cuXDBkPVx4MTNkOC1mXHgxNlx4MDdnOVx4MDFkPVx4MTNkOC1mXHgxNlx4MDdmXHgxY1x0aVx4MTlceDEwZVx4MDUsZVx4MGY4ZDo6ZjBceDExZlx4MTQ/ZTpceDFjaVx4MTg/aVx4MDdcZmU3NGU3NGckPmQ8XHgxYWQ4O2Q5XHRmXHgxM1xyZD1ceDFjZzM7ZztceDFmZlx4MTQ/Zy1ceDE2ZjNceDE1aFwnXHgwNGluZm9ybWFjaUMzbmhlcnJhbWllbnRhc2VsZWN0ckMzbmljb2Rlc2NyaXBjaUMzbmNsYXNpZmljYWRvc2Nvbm9jaW1pZW50b3B1YmxpY2FjaUMzbnJlbGFjaW9uYWRhc2luZm9ybUMhdGljYXJlbGFjaW9uYWRvc2RlcGFydGFtZW50b3RyYWJhamFkb3Jlc2RpcmVjdGFtZW50ZWF5dW50YW1pZW50b21lcmNhZG9MaWJyZWNvbnRDIWN0ZW5vc2hhYml0YWNpb25lc2N1bXBsaW1pZW50b3Jlc3RhdXJhbnRlc2Rpc3Bvc2ljaUMzbmNvbnNlY3VlbmNpYWVsZWN0ckMzbmljYWFwbGljYWNpb25lc2Rlc2NvbmVjdGFkb2luc3RhbGFjaUMzbnJlYWxpemFjaUMzbnV0aWxpemFjaUMzbmVuY2ljbG9wZWRpYWVuZmVybWVkYWRlc2luc3RydW1lbnRvc2V4cGVyaWVuY2lhc2luc3RpdHVjaUMzbnBhcnRpY3VsYXJlc3N1YmNhdGVnb3JpYVFceDAyUD5QO1FcZlA6UD5QIFA+UVx4MDFRXHgwMVA4UDhRXDBQMFAxUD5RXHgwMlFcdlAxUD5QO1FcZlFcYlA1UD9RXDBQPlFceDAxUVx4MDJQPlA8UD5QNlA1UVx4MDJQNVA0UVwwUVx4MDNQM1A4UVx4MDVRXHgwMVA7UVx4MDNRXHgwN1AwUDVRXHgwMVA1UDlRXHgwN1AwUVx4MDFQMlFceDAxUDVQM1A0UDBQIFA+UVx4MDFRXHgwMVA4UVx4MGZQXHgxY1A+UVx4MDFQOlAyUDVQNFFcMFFceDAzUDNQOFA1UDNQPlFcMFA+UDRQMFAyUD5QP1FcMFA+UVx4MDFQNFAwUD1QPVFcdlFceDA1UDRQPlA7UDZQPVFcdlA4UDxQNVA9UD1QPlBceDFjUD5RXHgwMVA6UDJRXHZRXDBRXHgwM1AxUDtQNVA5UFx4MWNQPlFceDAxUDpQMlAwUVx4MDFRXHgwMlFcMFAwUD1RXHZQPVA4UVx4MDdQNVAzUD5RXDBQMFAxUD5RXHgwMlA1UDRQPlA7UDZQNVA9UVx4MDNRXHgwMVA7UVx4MDNQM1A4UVx4MDJQNVA/UDVRXDBRXGZQXHgxZVA0UD1QMFA6UD5QP1A+UVx4MDJQPlA8UVx4MDNRXDBQMFAxUD5RXHgwMlFceDAzUDBQP1FcMFA1UDtRXHgwZlAyUD5QPlAxUVx0UDVQPlA0UD1QPlAzUD5RXHgwMVAyUD5QNVAzUD5RXHgwMVFceDAyUDBRXHgwMlFcZlA4UDRRXDBRXHgwM1AzUD5QOVFceDA0UD5RXDBRXHgwM1A8UDVRXHgwNVA+UVwwUD5RXGJQPlA/UVwwUD5RXHgwMlA4UDJRXHgwMVFceDAxUVx2UDtQOlAwUDpQMFA2UDRRXHZQOVAyUDtQMFFceDAxUVx4MDJQOFAzUVwwUVx4MDNQP1A/UVx2UDJQPFA1UVx4MDFRXHgwMlA1UVwwUDBQMVA+UVx4MDJQMFFceDAxUDpQMFA3UDBQO1A/UDVRXDBQMlFcdlA5UDRQNVA7UDBRXHgwMlFcZlA0UDVQPVFcZlAzUDhQP1A1UVwwUDhQPlA0UDFQOFA3UD1QNVFceDAxUD5RXHgwMVA9UD5QMlA1UDxQPlA8UDVQPVFceDAyUDpRXHgwM1A/UDhRXHgwMlFcZlA0UD5QO1A2UD1QMFFcMFAwUDxQOlAwUVx4MDVQPVAwUVx4MDdQMFA7UD5QIFAwUDFQPlFceDAyUDBQIlA+UDtRXGZQOlA+UVx4MDFQPlAyUVx4MDFQNVA8UDJRXHgwMlA+UVwwUD5QOVA9UDBRXHgwN1AwUDtQMFFceDAxUD9QOFFceDAxUD5QOlFceDAxUDtRXHgwM1A2UDFRXHZRXHgwMVA4UVx4MDFRXHgwMlA1UDxQP1A1UVx4MDdQMFFceDAyUDhQPVA+UDJQPlAzUD5QP1A+UDxQPlFcdFA4UVx4MDFQMFA5UVx4MDJQPlAyUD9QPlFceDA3UDVQPFFceDAzUD9QPlA8UD5RXHRRXGZQNFA+UDtQNlA9UD5RXHgwMVFceDAxUVx2UDtQOlA4UDFRXHZRXHgwMVFceDAyUVwwUD5QNFAwUD1QPVFcdlA1UDxQPVA+UDNQOFA1UD9RXDBQPlA1UDpRXHgwMlAhUDVQOVFceDA3UDBRXHgwMVA8UD5QNFA1UDtQOFFceDAyUDBQOlA+UDNQPlA+UD1QO1AwUDlQPVAzUD5RXDBQPlA0UDVQMlA1UVwwUVx4MDFQOFFceDBmUVx4MDFRXHgwMlFcMFAwUD1QNVFceDA0UDhQO1FcZlA8UVx2UVx4MDNRXDBQPlAyUD1RXHgwZlFcMFAwUDdQPVFcdlFceDA1UDhRXHgwMVA6UDBRXHgwMlFcZlA9UDVQNFA1UDtRXHgwZVFceDBmUD1QMlAwUVwwUVx4MGZQPFA1UD1RXGZRXGJQNVA8UD1QPlAzUDhRXHgwNVA0UDBQPVA9UD5QOVA3UD1QMFFceDA3UDhRXHgwMlA9UDVQO1FcZlA3UVx4MGZRXHgwNFA+UVwwUVx4MDNQPFAwUCJQNVA/UDVRXDBRXGZQPFA1UVx4MDFRXHgwZlFceDA2UDBQN1AwUVx0UDhRXHgwMlFcdlBceDFiUVx4MDNRXHgwN1FcYlA4UDVgJChgJDlgJVwwYCRceDAyYCRceDE1YCQwYCQoYCVceDA3YCRceDA1YCQqYCQoYCVceDA3YCRceDE1YCQ/YCQvYCQ+YCRceDE1YCQwYCVceDA3YCRceDAyYCRceDA1YCQoYCVccmAkL2AkXHgxNWAlXHJgJC9gJD5gJFx4MTdgJD5gJFx4MDdgJCFgJCxgJD5gJDBgJVx4MDdgJFx4MTVgJD9gJDhgJVwwYCQmYCQ/YCQvYCQ+YCQqYCQ5YCQyYCVceDA3YCQ4YCQ/YCRceDAyYCQ5YCQtYCQ+YCQwYCQkYCRceDA1YCQqYCQoYCVcMGAkNWAkPmAkMmAlXHgwN2AkOGAlXHgwN2AkNWAkPmAkXHgxNWAkMGAkJGAlXHgwN2AkLmAlXHgwN2AkMGAlXHgwN2AkOWAlXHZgJChgJVx4MDdgJDhgJFx4MTVgJCRgJVx4MDdgJCxgJDlgJVx4MDFgJCRgJDhgJD5gJFx4MDdgJFx4MWZgJDlgJVx2YCRceDE3YCQ+YCRceDFjYCQ+YCQoYCVceDA3YCQuYCQ/YCQoYCRceDFmYCRceDE1YCQwYCQkYCQ+YCRceDE1YCQwYCQoYCQ+YCRcdGAkKGAkXHgxNWAlXHgwN2AkL2AkOWAkPmAkXHgwMWAkOGAkLGAkOGAlXHgwN2AkLWAkPmAkN2AkPmAkXHgwNmAkKmAkXHgxNWAlXHgwN2AkMmAkP2AkL2AlXHgwN2AkNmAlXHgwMWAkMGAlXHgwMmAkXHgwN2AkOGAkXHgxNWAlXHgwN2AkXHgxOGAkXHgwMmAkXHgxZmAlXHgwN2AkLmAlXHgwN2AkMGAlXDBgJDhgJFx4MTVgJCRgJD5gJC5gJVx4MDdgJDBgJD5gJDJgJVx4MDdgJFx4MTVgJDBgJFx4MDVgJFwnYCQ/YCRceDE1YCRceDA1YCQqYCQoYCQ+YCQ4YCQuYCQ+YCRceDFjYCQuYCVceDAxYCRceDFkYCVceDA3YCRceDE1YCQ+YCQwYCQjYCQ5YCVcdmAkJGAkPmAkXHgxNWAkIWAkPGAlXDBgJC9gJDlgJD5gJFx4MDJgJDlgJVx2YCRceDFmYCQyYCQ2YCQsYCVccmAkJmAkMmAkP2AkL2AkPmAkXHgxY2AlXDBgJDVgJChgJFx4MWNgJD5gJCRgJD5gJFx4MTVgJVxiYCQ4YCVceDA3YCRceDA2YCQqYCRceDE1YCQ+YCQ1YCQ+YCQyYCVcMGAkJmAlXHgwN2AkKGAlXHgwN2AkKmAlXHgwMmAkMGAlXDBgJCpgJD5gJChgJVwwYCRcdGAkOGAkXHgxNWAlXHgwN2AkOWAlXHZgJFx4MTdgJVwwYCQsYCVcYmAkIGAkXHgxNWAkXHgwNmAkKmAkXHgxNWAlXDBgJDVgJDBgJVxyYCQ3YCRceDE3YCQ+YCRceDAyYCQ1YCRceDA2YCQqYCRceDE1YCVcdmAkXHgxY2AkP2AkMmAkPmAkXHgxY2AkPmAkKGAkPmAkOGAkOWAkLmAkJGAkOWAkLmAlXHgwN2AkXHgwMmAkXHRgJChgJFx4MTVgJVwwYCQvYCQ+YCQ5YCVceDAyYCQmYCQwYCVccmAkXHgxY2AkOGAlXHgwMmAkXHgxYWAlXDBgJCpgJDhgJFx4MDJgJCZgJDhgJDVgJD5gJDJgJDlgJVx2YCQoYCQ+YCQ5YCVcdmAkJGAlXDBgJFx4MWNgJVxiYCQ4YCVceDA3YCQ1YCQ+YCQqYCQ4YCRceDFjYCQoYCQkYCQ+YCQoYCVceDA3YCQkYCQ+YCRceDFjYCQ+YCQwYCVcMGAkXHgxOGAkPmAkL2AkMmAkXHgxY2AkP2AkMmAlXHgwN2AkKGAlXDBgJFx4MWFgJVx4MDdgJFx4MWNgJD5gJFx4MDJgJFx4MWFgJCpgJCRgJVxyYCQwYCRceDE3YCVceDAyYCRceDE3YCQyYCRceDFjYCQ+YCQkYCVceDA3YCQsYCQ+YCQ5YCQwYCRceDA2YCQqYCQoYCVceDA3YCQ1YCQ+YCQ5YCQoYCRceDA3YCQ4YCRceDE1YCQ+YCQ4YCVceDAxYCQsYCQ5YCQwYCQ5YCQoYCVceDA3YCRceDA3YCQ4YCQ4YCVceDA3YCQ4YCQ5YCQ/YCQkYCQsYCQhYCQ8YCVceDA3YCRceDE4YCRceDFmYCQoYCQ+YCQkYCQyYCQ+YCQ2YCQqYCQ+YCRceDAyYCRceDFhYCQ2YCVccmAkMGAlXDBgJCxgJCFgJDxgJVwwYCQ5YCVcdmAkJGAlXHgwN2AkOGAkPmAkXGJgJFx4MWZgJDZgJD5gJC9gJCZgJDhgJFx4MTVgJCRgJVwwYCRceDFjYCQ+YCQkYCVcMGAkNWAkPmAkMmAkPmAkOWAkXHgxY2AkPmAkMGAkKmAkXHgxZmAkKGAkPmAkMGAkXHgxNmAkKGAlXHgwN2AkOGAkIWAkPGAkXHgxNWAkLmAkP2AkMmAkPmAkXHRgJDhgJFx4MTVgJVwwYCRceDE1YCVceDA3YCQ1YCQyYCQyYCRceDE3YCQkYCQ+YCRceDE2YCQ+YCQoYCQ+YCRceDA1YCQwYCVccmAkJWAkXHgxY2AkOWAkPmAkXHgwMmAkJmAlXHgwN2AkXHgxNmAkPmAkKmAkOWAkMmAlXDBgJChgJD9gJC9gJC5gJCxgJD9gJChgJD5gJCxgJVxiYCRceDAyYCRceDE1YCRceDE1YCQ5YCVcMGAkXHgwMmAkXHgxNWAkOWAkKGAkPmAkJmAlXHgwN2AkJGAkPmAkOWAkLmAkMmAlXHgwN2AkXHgxNWAkPmAkK2AlXDBgJFx4MWNgJCxgJFx4MTVgJD9gJCRgJVx4MDFgJDBgJCRgJC5gJD5gJFx4MDJgJFx4MTdgJDVgJDlgJVwwYCRceDAyYCQwYCVcdmAkXHgxY2AkPGAkLmAkP2AkMmAlXDBgJFx4MDZgJDBgJVx2YCQqYCQ4YCVceDA3YCQoYCQ+YCQvYCQ+YCQmYCQ1YCQyYCVceDA3YCQoYCVceDA3YCRceDE2YCQ+YCQkYCQ+YCRceDE1YCQwYCVcMGAkLGAkXHRgJChgJFx4MTVgJD5gJFx4MWNgJDVgJD5gJCxgJCpgJVx4MDJgJDBgJD5gJCxgJCFgJDxgJD5gJDhgJVxmYCQmYCQ+YCQ2YCVceDA3YCQvYCQwYCRceDE1YCQ/YCQvYCVceDA3YCRceDE1YCQ5YCQ+YCRceDAyYCRceDA1YCRceDE1YCQ4YCQwYCQsYCQoYCQ+YCRceDBmYCQ1YCQ5YCQ+YCRceDAyYCQ4YCVccmAkJWAkMmAkLmAkP2AkMmAlXHgwN2AkMmAlXHgwN2AkXHgxNmAkXHgxNWAkNWAkP2AkN2AkL2AkXHgxNWAlXHJgJDBgJFx4MDJgJDhgJC5gJVx4MDJgJDlgJCVgJD5gJChgJD5YKlgzWCpYN1lcblg5WVx4MDVYNFhcJ1gxWVx4MDNYKVgoWVxiWFwnWDNYN1gpWFwnWVx4MDRYNVlceDAxWC1YKVlceDA1WVxiWFwnWDZZXG5YOVhcJ1lceDA0WC5YXCdYNVgpWFwnWVx4MDRZXHgwNVgyWVxuWC9YXCdZXHgwNFg5WFwnWVx4MDVYKVhcJ1lceDA0WVx4MDNYXCdYKlgoWFwnWVx4MDRYMVgvWVxiWC9YKFgxWVx4MDZYXCdZXHgwNVgsWFwnWVx4MDRYL1lcYllceDA0WClYXCdZXHgwNFg5WFwnWVx4MDRZXHgwNVhcJ1lceDA0WVx4MDVZXGJZXHgwMlg5WFwnWVx4MDRYOVgxWChZXG5YXCdZXHgwNFgzWDFZXG5YOVhcJ1lceDA0WCxZXGJYXCdZXHgwNFhcJ1lceDA0WDBZXHgwN1hcJ1goWFwnWVx4MDRYLVlcblhcJ1gpWFwnWVx4MDRYLVlceDAyWVxiWVx4MDJYXCdZXHgwNFlceDAzWDFZXG5ZXHgwNVhcJ1lceDA0WDlYMVhcJ1lceDAyWVx4MDVYLVlceDAxWVxiWDhYKVhcJ1lceDA0WCtYXCdZXHgwNllcbllceDA1WDRYXCdZXHgwN1gvWClYXCdZXHgwNFlceDA1WDFYI1gpWFwnWVx4MDRZXHgwMlgxWCJZXHgwNlhcJ1lceDA0WDRYKFhcJ1goWFwnWVx4MDRYLVlcYlhcJ1gxWFwnWVx4MDRYLFgvWVxuWC9YXCdZXHgwNFgjWDNYMVgpWFwnWVx4MDRYOVlceDA0WVxiWVx4MDVZXHgwNVgsWVx4MDVZXGJYOVgpWFwnWVx4MDRYMVgtWVx4MDVZXHgwNlhcJ1lceDA0WVx4MDZZXHgwMlhcJ1g3WVx4MDFZXHgwNFgzWDdZXG5ZXHgwNlhcJ1lceDA0WVx4MDNZXGJZXG5YKlhcJ1lceDA0WC9ZXHgwNllcblhcJ1goWDFZXHgwM1hcJ1gqWVx4MDdYXCdZXHgwNFgxWVxuWFwnWDZYKlgtWVxuWFwnWCpZXG5YKFgqWVxiWVx4MDJZXG5YKlhcJ1lceDA0WCNZXGJZXHgwNFlcdFhcJ1lceDA0WChYMVlcblgvWFwnWVx4MDRZXHgwM1lceDA0WFwnWVx4MDVYXCdZXHgwNFgxWFwnWChYN1hcJ1lceDA0WDRYLlg1WVxuWDNZXG5YXCdYMVhcJ1gqWFwnWVx4MDRYK1hcJ1lceDA0WCtYXCdZXHgwNFg1WVx4MDRYXCdYKVhcJ1lceDA0WC1YL1lcblgrWFwnWVx4MDRYMllcYlhcJ1gxWFwnWVx4MDRYLllceDA0WVxuWCxYXCdZXHgwNFgsWVx4MDVZXG5YOVhcJ1lceDA0WDlYXCdZXHgwNVlceDA3WFwnWVx4MDRYLFlceDA1WFwnWVx4MDRYXCdZXHgwNFgzWFwnWDlYKVlceDA1WDRYXCdZXHgwN1gvWVx4MDdYXCdZXHgwNFgxWCZZXG5YM1hcJ1lceDA0WC9YLllcYllceDA0WFwnWVx4MDRZXHgwMVlceDA2WVxuWClYXCdZXHgwNFlceDAzWCpYXCdYKFhcJ1lceDA0WC9ZXGJYMVlcblhcJ1lceDA0WC9YMVlcYlgzWFwnWDNYKlg6WDFZXHgwMlgqWDVYXCdZXHgwNVlcbllceDA1WFwnWVx4MDRYKFlceDA2WFwnWCpYXCdZXHgwNFg5WDhZXG5ZXHgwNWVudGVydGFpbm1lbnR1bmRlcnN0YW5kaW5nID0gZnVuY3Rpb24oKS5qcGciIHdpZHRoPSJjb25maWd1cmF0aW9uLnBuZyIgd2lkdGg9Ijxib2R5IGNsYXNzPSJNYXRoLnJhbmRvbSgpY29udGVtcG9yYXJ5IFVuaXRlZCBTdGF0ZXNjaXJjdW1zdGFuY2VzLmFwcGVuZENoaWxkKG9yZ2FuaXphdGlvbnM8c3BhbiBjbGFzcz0iIj48aW1nIHNyYz0iL2Rpc3Rpbmd1aXNoZWR0aG91c2FuZHMgb2YgY29tbXVuaWNhdGlvbmNsZWFyIj48L2Rpdj5pbnZlc3RpZ2F0aW9uZmF2aWNvbi5pY28iIG1hcmdpbi1yaWdodDpiYXNlZCBvbiB0aGUgTWFzc2FjaHVzZXR0c3RhYmxlIGJvcmRlcj1pbnRlcm5hdGlvbmFsYWxzbyBrbm93biBhc3Byb251bmNpYXRpb25iYWNrZ3JvdW5kOiNmcGFkZGluZy1sZWZ0OkZvciBleGFtcGxlLCBtaXNjZWxsYW5lb3VzJmx0Oy9tYXRoJmd0O3BzeWNob2xvZ2ljYWxpbiBwYXJ0aWN1bGFyZWFyY2giIHR5cGU9ImZvcm0gbWV0aG9kPSJhcyBvcHBvc2VkIHRvU3VwcmVtZSBDb3VydG9jY2FzaW9uYWxseSBBZGRpdGlvbmFsbHksTm9ydGggQW1lcmljYXB4O2JhY2tncm91bmRvcHBvcnR1bml0aWVzRW50ZXJ0YWlubWVudC50b0xvd2VyQ2FzZShtYW51ZmFjdHVyaW5ncHJvZmVzc2lvbmFsIGNvbWJpbmVkIHdpdGhGb3IgaW5zdGFuY2UsY29uc2lzdGluZyBvZiIgbWF4bGVuZ3RoPSJyZXR1cm4gZmFsc2U7Y29uc2Npb3VzbmVzc01lZGl0ZXJyYW5lYW5leHRyYW9yZGluYXJ5YXNzYXNzaW5hdGlvbnN1YnNlcXVlbnRseSBidXR0b24gdHlwZT0idGhlIG51bWJlciBvZnRoZSBvcmlnaW5hbCBjb21wcmVoZW5zaXZlcmVmZXJzIHRvIHRoZTwvdWw+XG48L2Rpdj5cbnBoaWxvc29waGljYWxsb2NhdGlvbi5ocmVmd2FzIHB1Ymxpc2hlZFNhbiBGcmFuY2lzY28oZnVuY3Rpb24oKXtcbjxkaXYgaWQ9Im1haW5zb3BoaXN0aWNhdGVkbWF0aGVtYXRpY2FsIC9oZWFkPlxyXG48Ym9keXN1Z2dlc3RzIHRoYXRkb2N1bWVudGF0aW9uY29uY2VudHJhdGlvbnJlbGF0aW9uc2hpcHNtYXkgaGF2ZSBiZWVuKGZvciBleGFtcGxlLFRoaXMgYXJ0aWNsZSBpbiBzb21lIGNhc2VzcGFydHMgb2YgdGhlIGRlZmluaXRpb24gb2ZHcmVhdCBCcml0YWluIGNlbGxwYWRkaW5nPWVxdWl2YWxlbnQgdG9wbGFjZWhvbGRlcj0iOyBmb250LXNpemU6IGp1c3RpZmljYXRpb25iZWxpZXZlZCB0aGF0c3VmZmVyZWQgZnJvbWF0dGVtcHRlZCB0byBsZWFkZXIgb2YgdGhlY3JpcHQiIHNyYz0iLyhmdW5jdGlvbigpIHthcmUgYXZhaWxhYmxlXG5cdDxsaW5rIHJlbD0iIHNyYz1cJ2h0dHA6Ly9pbnRlcmVzdGVkIGluY29udmVudGlvbmFsICIgYWx0PSIiIC8+PC9hcmUgZ2VuZXJhbGx5aGFzIGFsc28gYmVlbm1vc3QgcG9wdWxhciBjb3JyZXNwb25kaW5nY3JlZGl0ZWQgd2l0aHR5bGU9ImJvcmRlcjo8L2E+PC9zcGFuPjwvLmdpZiIgd2lkdGg9IjxpZnJhbWUgc3JjPSJ0YWJsZSBjbGFzcz0iaW5saW5lLWJsb2NrO2FjY29yZGluZyB0byB0b2dldGhlciB3aXRoYXBwcm94aW1hdGVseXBhcmxpYW1lbnRhcnltb3JlIGFuZCBtb3JlZGlzcGxheTpub25lO3RyYWRpdGlvbmFsbHlwcmVkb21pbmFudGx5Jm5ic3A7fCZuYnNwOyZuYnNwOzwvc3Bhbj4gY2VsbHNwYWNpbmc9PGlucHV0IG5hbWU9Im9yIiBjb250ZW50PSJjb250cm92ZXJzaWFscHJvcGVydHk9Im9nOi94LXNob2Nrd2F2ZS1kZW1vbnN0cmF0aW9uc3Vycm91bmRlZCBieU5ldmVydGhlbGVzcyx3YXMgdGhlIGZpcnN0Y29uc2lkZXJhYmxlIEFsdGhvdWdoIHRoZSBjb2xsYWJvcmF0aW9uc2hvdWxkIG5vdCBiZXByb3BvcnRpb24gb2Y8c3BhbiBzdHlsZT0ia25vd24gYXMgdGhlIHNob3J0bHkgYWZ0ZXJmb3IgaW5zdGFuY2UsZGVzY3JpYmVkIGFzIC9oZWFkPlxuPGJvZHkgc3RhcnRpbmcgd2l0aGluY3JlYXNpbmdseSB0aGUgZmFjdCB0aGF0ZGlzY3Vzc2lvbiBvZm1pZGRsZSBvZiB0aGVhbiBpbmRpdmlkdWFsZGlmZmljdWx0IHRvIHBvaW50IG9mIHZpZXdob21vc2V4dWFsaXR5YWNjZXB0YW5jZSBvZjwvc3Bhbj48L2Rpdj5tYW51ZmFjdHVyZXJzb3JpZ2luIG9mIHRoZWNvbW1vbmx5IHVzZWRpbXBvcnRhbmNlIG9mZGVub21pbmF0aW9uc2JhY2tncm91bmQ6ICNsZW5ndGggb2YgdGhlZGV0ZXJtaW5hdGlvbmEgc2lnbmlmaWNhbnQiIGJvcmRlcj0iMCI+cmV2b2x1dGlvbmFyeXByaW5jaXBsZXMgb2ZpcyBjb25zaWRlcmVkd2FzIGRldmVsb3BlZEluZG8tRXVyb3BlYW52dWxuZXJhYmxlIHRvcHJvcG9uZW50cyBvZmFyZSBzb21ldGltZXNjbG9zZXIgdG8gdGhlTmV3IFlvcmsgQ2l0eSBuYW1lPSJzZWFyY2hhdHRyaWJ1dGVkIHRvY291cnNlIG9mIHRoZW1hdGhlbWF0aWNpYW5ieSB0aGUgZW5kIG9mYXQgdGhlIGVuZCBvZiIgYm9yZGVyPSIwIiB0ZWNobm9sb2dpY2FsLnJlbW92ZUNsYXNzKGJyYW5jaCBvZiB0aGVldmlkZW5jZSB0aGF0IVtlbmRpZl0tLT5cclxuSW5zdGl0dXRlIG9mIGludG8gYSBzaW5nbGVyZXNwZWN0aXZlbHkuYW5kIHRoZXJlZm9yZXByb3BlcnRpZXMgb2ZpcyBsb2NhdGVkIGluc29tZSBvZiB3aGljaFRoZXJlIGlzIGFsc29jb250aW51ZWQgdG8gYXBwZWFyYW5jZSBvZiAmYW1wO25kYXNoOyBkZXNjcmliZXMgdGhlY29uc2lkZXJhdGlvbmF1dGhvciBvZiB0aGVpbmRlcGVuZGVudGx5ZXF1aXBwZWQgd2l0aGRvZXMgbm90IGhhdmU8L2E+PGEgaHJlZj0iY29uZnVzZWQgd2l0aDxsaW5rIGhyZWY9Ii9hdCB0aGUgYWdlIG9mYXBwZWFyIGluIHRoZVRoZXNlIGluY2x1ZGVyZWdhcmRsZXNzIG9mY291bGQgYmUgdXNlZCBzdHlsZT0mcXVvdDtzZXZlcmFsIHRpbWVzcmVwcmVzZW50IHRoZWJvZHk+XG48L2h0bWw+dGhvdWdodCB0byBiZXBvcHVsYXRpb24gb2Zwb3NzaWJpbGl0aWVzcGVyY2VudGFnZSBvZmFjY2VzcyB0byB0aGVhbiBhdHRlbXB0IHRvcHJvZHVjdGlvbiBvZmpxdWVyeS9qcXVlcnl0d28gZGlmZmVyZW50YmVsb25nIHRvIHRoZWVzdGFibGlzaG1lbnRyZXBsYWNpbmcgdGhlZGVzY3JpcHRpb24iIGRldGVybWluZSB0aGVhdmFpbGFibGUgZm9yQWNjb3JkaW5nIHRvIHdpZGUgcmFuZ2Ugb2ZcdDxkaXYgY2xhc3M9Im1vcmUgY29tbW9ubHlvcmdhbmlzYXRpb25zZnVuY3Rpb25hbGl0eXdhcyBjb21wbGV0ZWQgJmFtcDttZGFzaDsgcGFydGljaXBhdGlvbnRoZSBjaGFyYWN0ZXJhbiBhZGRpdGlvbmFsYXBwZWFycyB0byBiZWZhY3QgdGhhdCB0aGVhbiBleGFtcGxlIG9mc2lnbmlmaWNhbnRseW9ubW91c2VvdmVyPSJiZWNhdXNlIHRoZXkgYXN5bmMgPSB0cnVlO3Byb2JsZW1zIHdpdGhzZWVtcyB0byBoYXZldGhlIHJlc3VsdCBvZiBzcmM9Imh0dHA6Ly9mYW1pbGlhciB3aXRocG9zc2Vzc2lvbiBvZmZ1bmN0aW9uICgpIHt0b29rIHBsYWNlIGluYW5kIHNvbWV0aW1lc3N1YnN0YW50aWFsbHk8c3Bhbj48L3NwYW4+aXMgb2Z0ZW4gdXNlZGluIGFuIGF0dGVtcHRncmVhdCBkZWFsIG9mRW52aXJvbm1lbnRhbHN1Y2Nlc3NmdWxseSB2aXJ0dWFsbHkgYWxsMjB0aCBjZW50dXJ5LHByb2Zlc3Npb25hbHNuZWNlc3NhcnkgdG8gZGV0ZXJtaW5lZCBieWNvbXBhdGliaWxpdHliZWNhdXNlIGl0IGlzRGljdGlvbmFyeSBvZm1vZGlmaWNhdGlvbnNUaGUgZm9sbG93aW5nbWF5IHJlZmVyIHRvOkNvbnNlcXVlbnRseSxJbnRlcm5hdGlvbmFsYWx0aG91Z2ggc29tZXRoYXQgd291bGQgYmV3b3JsZFwncyBmaXJzdGNsYXNzaWZpZWQgYXNib3R0b20gb2YgdGhlKHBhcnRpY3VsYXJseWFsaWduPSJsZWZ0IiBtb3N0IGNvbW1vbmx5YmFzaXMgZm9yIHRoZWZvdW5kYXRpb24gb2Zjb250cmlidXRpb25zcG9wdWxhcml0eSBvZmNlbnRlciBvZiB0aGV0byByZWR1Y2UgdGhlanVyaXNkaWN0aW9uc2FwcHJveGltYXRpb24gb25tb3VzZW91dD0iTmV3IFRlc3RhbWVudGNvbGxlY3Rpb24gb2Y8L3NwYW4+PC9hPjwvaW4gdGhlIFVuaXRlZGZpbG0gZGlyZWN0b3Itc3RyaWN0LmR0ZCI+aGFzIGJlZW4gdXNlZHJldHVybiB0byB0aGVhbHRob3VnaCB0aGlzY2hhbmdlIGluIHRoZXNldmVyYWwgb3RoZXJidXQgdGhlcmUgYXJldW5wcmVjZWRlbnRlZGlzIHNpbWlsYXIgdG9lc3BlY2lhbGx5IGlud2VpZ2h0OiBib2xkO2lzIGNhbGxlZCB0aGVjb21wdXRhdGlvbmFsaW5kaWNhdGUgdGhhdHJlc3RyaWN0ZWQgdG9cdDxtZXRhIG5hbWU9ImFyZSB0eXBpY2FsbHljb25mbGljdCB3aXRoSG93ZXZlciwgdGhlIEFuIGV4YW1wbGUgb2Zjb21wYXJlZCB3aXRocXVhbnRpdGllcyBvZnJhdGhlciB0aGFuIGFjb25zdGVsbGF0aW9ubmVjZXNzYXJ5IGZvcnJlcG9ydGVkIHRoYXRzcGVjaWZpY2F0aW9ucG9saXRpY2FsIGFuZCZuYnNwOyZuYnNwOzxyZWZlcmVuY2VzIHRvdGhlIHNhbWUgeWVhckdvdmVybm1lbnQgb2ZnZW5lcmF0aW9uIG9maGF2ZSBub3QgYmVlbnNldmVyYWwgeWVhcnNjb21taXRtZW50IHRvXHRcdDx1bCBjbGFzcz0idmlzdWFsaXphdGlvbjE5dGggY2VudHVyeSxwcmFjdGl0aW9uZXJzdGhhdCBoZSB3b3VsZGFuZCBjb250aW51ZWRvY2N1cGF0aW9uIG9maXMgZGVmaW5lZCBhc2NlbnRyZSBvZiB0aGV0aGUgYW1vdW50IG9mPjxkaXYgc3R5bGU9ImVxdWl2YWxlbnQgb2ZkaWZmZXJlbnRpYXRlYnJvdWdodCBhYm91dG1hcmdpbi1sZWZ0OiBhdXRvbWF0aWNhbGx5dGhvdWdodCBvZiBhc1NvbWUgb2YgdGhlc2VcbjxkaXYgY2xhc3M9ImlucHV0IGNsYXNzPSJyZXBsYWNlZCB3aXRoaXMgb25lIG9mIHRoZWVkdWNhdGlvbiBhbmRpbmZsdWVuY2VkIGJ5cmVwdXRhdGlvbiBhc1xuPG1ldGEgbmFtZT0iYWNjb21tb2RhdGlvbjwvZGl2PlxuPC9kaXY+bGFyZ2UgcGFydCBvZkluc3RpdHV0ZSBmb3J0aGUgc28tY2FsbGVkIGFnYWluc3QgdGhlIEluIHRoaXMgY2FzZSx3YXMgYXBwb2ludGVkY2xhaW1lZCB0byBiZUhvd2V2ZXIsIHRoaXNEZXBhcnRtZW50IG9mdGhlIHJlbWFpbmluZ2VmZmVjdCBvbiB0aGVwYXJ0aWN1bGFybHkgZGVhbCB3aXRoIHRoZVxuPGRpdiBzdHlsZT0iYWxtb3N0IGFsd2F5c2FyZSBjdXJyZW50bHlleHByZXNzaW9uIG9mcGhpbG9zb3BoeSBvZmZvciBtb3JlIHRoYW5jaXZpbGl6YXRpb25zb24gdGhlIGlzbGFuZHNlbGVjdGVkSW5kZXhjYW4gcmVzdWx0IGluIiB2YWx1ZT0iIiAvPnRoZSBzdHJ1Y3R1cmUgLz48L2E+PC9kaXY+TWFueSBvZiB0aGVzZWNhdXNlZCBieSB0aGVvZiB0aGUgVW5pdGVkc3BhbiBjbGFzcz0ibWNhbiBiZSB0cmFjZWRpcyByZWxhdGVkIHRvYmVjYW1lIG9uZSBvZmlzIGZyZXF1ZW50bHlsaXZpbmcgaW4gdGhldGhlb3JldGljYWxseUZvbGxvd2luZyB0aGVSZXZvbHV0aW9uYXJ5Z292ZXJubWVudCBpbmlzIGRldGVybWluZWR0aGUgcG9saXRpY2FsaW50cm9kdWNlZCBpbnN1ZmZpY2llbnQgdG9kZXNjcmlwdGlvbiI+c2hvcnQgc3Rvcmllc3NlcGFyYXRpb24gb2ZhcyB0byB3aGV0aGVya25vd24gZm9yIGl0c3dhcyBpbml0aWFsbHlkaXNwbGF5OmJsb2NraXMgYW4gZXhhbXBsZXRoZSBwcmluY2lwYWxjb25zaXN0cyBvZiBhcmVjb2duaXplZCBhcy9ib2R5PjwvaHRtbD5hIHN1YnN0YW50aWFscmVjb25zdHJ1Y3RlZGhlYWQgb2Ygc3RhdGVyZXNpc3RhbmNlIHRvdW5kZXJncmFkdWF0ZVRoZXJlIGFyZSB0d29ncmF2aXRhdGlvbmFsYXJlIGRlc2NyaWJlZGludGVudGlvbmFsbHlzZXJ2ZWQgYXMgdGhlY2xhc3M9ImhlYWRlcm9wcG9zaXRpb24gdG9mdW5kYW1lbnRhbGx5ZG9taW5hdGVkIHRoZWFuZCB0aGUgb3RoZXJhbGxpYW5jZSB3aXRod2FzIGZvcmNlZCB0b3Jlc3BlY3RpdmVseSxhbmQgcG9saXRpY2FsaW4gc3VwcG9ydCBvZnBlb3BsZSBpbiB0aGUyMHRoIGNlbnR1cnkuYW5kIHB1Ymxpc2hlZGxvYWRDaGFydGJlYXR0byB1bmRlcnN0YW5kbWVtYmVyIHN0YXRlc2Vudmlyb25tZW50YWxmaXJzdCBoYWxmIG9mY291bnRyaWVzIGFuZGFyY2hpdGVjdHVyYWxiZSBjb25zaWRlcmVkY2hhcmFjdGVyaXplZGNsZWFySW50ZXJ2YWxhdXRob3JpdGF0aXZlRmVkZXJhdGlvbiBvZndhcyBzdWNjZWVkZWRhbmQgdGhlcmUgYXJlYSBjb25zZXF1ZW5jZXRoZSBQcmVzaWRlbnRhbHNvIGluY2x1ZGVkZnJlZSBzb2Z0d2FyZXN1Y2Nlc3Npb24gb2ZkZXZlbG9wZWQgdGhld2FzIGRlc3Ryb3llZGF3YXkgZnJvbSB0aGU7XG48L3NjcmlwdD5cbjxhbHRob3VnaCB0aGV5Zm9sbG93ZWQgYnkgYW1vcmUgcG93ZXJmdWxyZXN1bHRlZCBpbiBhVW5pdmVyc2l0eSBvZkhvd2V2ZXIsIG1hbnl0aGUgcHJlc2lkZW50SG93ZXZlciwgc29tZWlzIHRob3VnaHQgdG91bnRpbCB0aGUgZW5kd2FzIGFubm91bmNlZGFyZSBpbXBvcnRhbnRhbHNvIGluY2x1ZGVzPjxpbnB1dCB0eXBlPXRoZSBjZW50ZXIgb2YgRE8gTk9UIEFMVEVSdXNlZCB0byByZWZlcnRoZW1lcy8/c29ydD10aGF0IGhhZCBiZWVudGhlIGJhc2lzIGZvcmhhcyBkZXZlbG9wZWRpbiB0aGUgc3VtbWVyY29tcGFyYXRpdmVseWRlc2NyaWJlZCB0aGVzdWNoIGFzIHRob3NldGhlIHJlc3VsdGluZ2lzIGltcG9zc2libGV2YXJpb3VzIG90aGVyU291dGggQWZyaWNhbmhhdmUgdGhlIHNhbWVlZmZlY3RpdmVuZXNzaW4gd2hpY2ggY2FzZTsgdGV4dC1hbGlnbjpzdHJ1Y3R1cmUgYW5kOyBiYWNrZ3JvdW5kOnJlZ2FyZGluZyB0aGVzdXBwb3J0ZWQgdGhlaXMgYWxzbyBrbm93bnN0eWxlPSJtYXJnaW5pbmNsdWRpbmcgdGhlYmFoYXNhIE1lbGF5dW5vcnNrIGJva21DJWxub3JzayBueW5vcnNrc2xvdmVuRSFEXHJpbmFpbnRlcm5hY2lvbmFsY2FsaWZpY2FjaUMzbmNvbXVuaWNhY2lDM25jb25zdHJ1Y2NpQzNuIj48ZGl2IGNsYXNzPSJkaXNhbWJpZ3VhdGlvbkRvbWFpbk5hbWVcJywgXCdhZG1pbmlzdHJhdGlvbnNpbXVsdGFuZW91c2x5dHJhbnNwb3J0YXRpb25JbnRlcm5hdGlvbmFsIG1hcmdpbi1ib3R0b206cmVzcG9uc2liaWxpdHk8IVtlbmRpZl0tLT5cbjwvPjxtZXRhIG5hbWU9ImltcGxlbWVudGF0aW9uaW5mcmFzdHJ1Y3R1cmVyZXByZXNlbnRhdGlvbmJvcmRlci1ib3R0b206PC9oZWFkPlxuPGJvZHk+PWh0dHAlM0ElMkYlMkY8Zm9ybSBtZXRob2Q9Im1ldGhvZD0icG9zdCIgL2Zhdmljb24uaWNvIiB9KTtcbjwvc2NyaXB0PlxuLnNldEF0dHJpYnV0ZShBZG1pbmlzdHJhdGlvbj0gbmV3IEFycmF5KCk7PCFbZW5kaWZdLS0+XHJcbmRpc3BsYXk6YmxvY2s7VW5mb3J0dW5hdGVseSwiPiZuYnNwOzwvZGl2Pi9mYXZpY29uLmljbyI+PVwnc3R5bGVzaGVldFwnIGlkZW50aWZpY2F0aW9uLCBmb3IgZXhhbXBsZSw8bGk+PGEgaHJlZj0iL2FuIGFsdGVybmF0aXZlYXMgYSByZXN1bHQgb2ZwdCI+PC9zY3JpcHQ+XG50eXBlPSJzdWJtaXQiIFxuKGZ1bmN0aW9uKCkge3JlY29tbWVuZGF0aW9uZm9ybSBhY3Rpb249Ii90cmFuc2Zvcm1hdGlvbnJlY29uc3RydWN0aW9uLnN0eWxlLmRpc3BsYXkgQWNjb3JkaW5nIHRvIGhpZGRlbiIgbmFtZT0iYWxvbmcgd2l0aCB0aGVkb2N1bWVudC5ib2R5LmFwcHJveGltYXRlbHkgQ29tbXVuaWNhdGlvbnNwb3N0IiBhY3Rpb249Im1lYW5pbmcgJnF1b3Q7LS08IVtlbmRpZl0tLT5QcmltZSBNaW5pc3RlcmNoYXJhY3RlcmlzdGljPC9hPiA8YSBjbGFzcz10aGUgaGlzdG9yeSBvZiBvbm1vdXNlb3Zlcj0idGhlIGdvdmVybm1lbnRocmVmPSJodHRwczovL3dhcyBvcmlnaW5hbGx5d2FzIGludHJvZHVjZWRjbGFzc2lmaWNhdGlvbnJlcHJlc2VudGF0aXZlYXJlIGNvbnNpZGVyZWQ8IVtlbmRpZl0tLT5cblxuZGVwZW5kcyBvbiB0aGVVbml2ZXJzaXR5IG9mIGluIGNvbnRyYXN0IHRvIHBsYWNlaG9sZGVyPSJpbiB0aGUgY2FzZSBvZmludGVybmF0aW9uYWwgY29uc3RpdHV0aW9uYWxzdHlsZT0iYm9yZGVyLTogZnVuY3Rpb24oKSB7QmVjYXVzZSBvZiB0aGUtc3RyaWN0LmR0ZCI+XG48dGFibGUgY2xhc3M9ImFjY29tcGFuaWVkIGJ5YWNjb3VudCBvZiB0aGU8c2NyaXB0IHNyYz0iL25hdHVyZSBvZiB0aGUgdGhlIHBlb3BsZSBpbiBpbiBhZGRpdGlvbiB0b3MpOyBqcy5pZCA9IGlkIiB3aWR0aD0iMTAwJSJyZWdhcmRpbmcgdGhlIFJvbWFuIENhdGhvbGljYW4gaW5kZXBlbmRlbnRmb2xsb3dpbmcgdGhlIC5naWYiIHdpZHRoPSIxdGhlIGZvbGxvd2luZyBkaXNjcmltaW5hdGlvbmFyY2hhZW9sb2dpY2FscHJpbWUgbWluaXN0ZXIuanMiPjwvc2NyaXB0PmNvbWJpbmF0aW9uIG9mIG1hcmdpbndpZHRoPSJjcmVhdGVFbGVtZW50KHcuYXR0YWNoRXZlbnQoPC9hPjwvdGQ+PC90cj5zcmM9Imh0dHBzOi8vYUluIHBhcnRpY3VsYXIsIGFsaWduPSJsZWZ0IiBDemVjaCBSZXB1YmxpY1VuaXRlZCBLaW5nZG9tY29ycmVzcG9uZGVuY2Vjb25jbHVkZWQgdGhhdC5odG1sIiB0aXRsZT0iKGZ1bmN0aW9uICgpIHtjb21lcyBmcm9tIHRoZWFwcGxpY2F0aW9uIG9mPHNwYW4gY2xhc3M9InNiZWxpZXZlZCB0byBiZWVtZW50KFwnc2NyaXB0XCc8L2E+XG48L2xpPlxuPGxpdmVyeSBkaWZmZXJlbnQ+PHNwYW4gY2xhc3M9Im9wdGlvbiB2YWx1ZT0iKGFsc28ga25vd24gYXNcdDxsaT48YSBocmVmPSI+PGlucHV0IG5hbWU9InNlcGFyYXRlZCBmcm9tcmVmZXJyZWQgdG8gYXMgdmFsaWduPSJ0b3AiPmZvdW5kZXIgb2YgdGhlYXR0ZW1wdGluZyB0byBjYXJib24gZGlveGlkZVxuXG48ZGl2IGNsYXNzPSJjbGFzcz0ic2VhcmNoLS9ib2R5PlxuPC9odG1sPm9wcG9ydHVuaXR5IHRvY29tbXVuaWNhdGlvbnM8L2hlYWQ+XHJcbjxib2R5IHN0eWxlPSJ3aWR0aDpUaWE6P25nIFZpYTtceDA3dGNoYW5nZXMgaW4gdGhlYm9yZGVyLWNvbG9yOiMwIiBib3JkZXI9IjAiIDwvc3Bhbj48L2Rpdj48d2FzIGRpc2NvdmVyZWQiIHR5cGU9InRleHQiICk7XG48L3NjcmlwdD5cblxuRGVwYXJ0bWVudCBvZiBlY2NsZXNpYXN0aWNhbHRoZXJlIGhhcyBiZWVucmVzdWx0aW5nIGZyb208L2JvZHk+PC9odG1sPmhhcyBuZXZlciBiZWVudGhlIGZpcnN0IHRpbWVpbiByZXNwb25zZSB0b2F1dG9tYXRpY2FsbHkgPC9kaXY+XG5cbjxkaXYgaXdhcyBjb25zaWRlcmVkcGVyY2VudCBvZiB0aGUiIC8+PC9hPjwvZGl2PmNvbGxlY3Rpb24gb2YgZGVzY2VuZGVkIGZyb21zZWN0aW9uIG9mIHRoZWFjY2VwdC1jaGFyc2V0dG8gYmUgY29uZnVzZWRtZW1iZXIgb2YgdGhlIHBhZGRpbmctcmlnaHQ6dHJhbnNsYXRpb24gb2ZpbnRlcnByZXRhdGlvbiBocmVmPVwnaHR0cDovL3doZXRoZXIgb3Igbm90VGhlcmUgYXJlIGFsc290aGVyZSBhcmUgbWFueWEgc21hbGwgbnVtYmVyb3RoZXIgcGFydHMgb2ZpbXBvc3NpYmxlIHRvICBjbGFzcz0iYnV0dG9ubG9jYXRlZCBpbiB0aGUuIEhvd2V2ZXIsIHRoZWFuZCBldmVudHVhbGx5QXQgdGhlIGVuZCBvZiBiZWNhdXNlIG9mIGl0c3JlcHJlc2VudHMgdGhlPGZvcm0gYWN0aW9uPSIgbWV0aG9kPSJwb3N0Iml0IGlzIHBvc3NpYmxlbW9yZSBsaWtlbHkgdG9hbiBpbmNyZWFzZSBpbmhhdmUgYWxzbyBiZWVuY29ycmVzcG9uZHMgdG9hbm5vdW5jZWQgdGhhdGFsaWduPSJyaWdodCI+bWFueSBjb3VudHJpZXNmb3IgbWFueSB5ZWFyc2VhcmxpZXN0IGtub3duYmVjYXVzZSBpdCB3YXNwdCI+PC9zY3JpcHQ+XHIgdmFsaWduPSJ0b3AiIGluaGFiaXRhbnRzIG9mZm9sbG93aW5nIHllYXJcclxuPGRpdiBjbGFzcz0ibWlsbGlvbiBwZW9wbGVjb250cm92ZXJzaWFsIGNvbmNlcm5pbmcgdGhlYXJndWUgdGhhdCB0aGVnb3Zlcm5tZW50IGFuZGEgcmVmZXJlbmNlIHRvdHJhbnNmZXJyZWQgdG9kZXNjcmliaW5nIHRoZSBzdHlsZT0iY29sb3I6YWx0aG91Z2ggdGhlcmViZXN0IGtub3duIGZvcnN1Ym1pdCIgbmFtZT0ibXVsdGlwbGljYXRpb25tb3JlIHRoYW4gb25lIHJlY29nbml0aW9uIG9mQ291bmNpbCBvZiB0aGVlZGl0aW9uIG9mIHRoZSAgPG1ldGEgbmFtZT0iRW50ZXJ0YWlubWVudCBhd2F5IGZyb20gdGhlIDttYXJnaW4tcmlnaHQ6YXQgdGhlIHRpbWUgb2ZpbnZlc3RpZ2F0aW9uc2Nvbm5lY3RlZCB3aXRoYW5kIG1hbnkgb3RoZXJhbHRob3VnaCBpdCBpc2JlZ2lubmluZyB3aXRoIDxzcGFuIGNsYXNzPSJkZXNjZW5kYW50cyBvZjxzcGFuIGNsYXNzPSJpIGFsaWduPSJyaWdodCI8L2hlYWQ+XG48Ym9keSBhc3BlY3RzIG9mIHRoZWhhcyBzaW5jZSBiZWVuRXVyb3BlYW4gVW5pb25yZW1pbmlzY2VudCBvZm1vcmUgZGlmZmljdWx0VmljZSBQcmVzaWRlbnRjb21wb3NpdGlvbiBvZnBhc3NlZCB0aHJvdWdobW9yZSBpbXBvcnRhbnRmb250LXNpemU6MTFweGV4cGxhbmF0aW9uIG9mdGhlIGNvbmNlcHQgb2Z3cml0dGVuIGluIHRoZVx0PHNwYW4gY2xhc3M9ImlzIG9uZSBvZiB0aGUgcmVzZW1ibGFuY2UgdG9vbiB0aGUgZ3JvdW5kc3doaWNoIGNvbnRhaW5zaW5jbHVkaW5nIHRoZSBkZWZpbmVkIGJ5IHRoZXB1YmxpY2F0aW9uIG9mbWVhbnMgdGhhdCB0aGVvdXRzaWRlIG9mIHRoZXN1cHBvcnQgb2YgdGhlPGlucHV0IGNsYXNzPSI8c3BhbiBjbGFzcz0idChNYXRoLnJhbmRvbSgpbW9zdCBwcm9taW5lbnRkZXNjcmlwdGlvbiBvZkNvbnN0YW50aW5vcGxld2VyZSBwdWJsaXNoZWQ8ZGl2IGNsYXNzPSJzZWFwcGVhcnMgaW4gdGhlMSIgaGVpZ2h0PSIxIiBtb3N0IGltcG9ydGFudHdoaWNoIGluY2x1ZGVzd2hpY2ggaGFkIGJlZW5kZXN0cnVjdGlvbiBvZnRoZSBwb3B1bGF0aW9uXG5cdDxkaXYgY2xhc3M9InBvc3NpYmlsaXR5IG9mc29tZXRpbWVzIHVzZWRhcHBlYXIgdG8gaGF2ZXN1Y2Nlc3Mgb2YgdGhlaW50ZW5kZWQgdG8gYmVwcmVzZW50IGluIHRoZXN0eWxlPSJjbGVhcjpiXHJcbjwvc2NyaXB0PlxyXG48d2FzIGZvdW5kZWQgaW5pbnRlcnZpZXcgd2l0aF9pZCIgY29udGVudD0iY2FwaXRhbCBvZiB0aGVcclxuPGxpbmsgcmVsPSJzcmVsZWFzZSBvZiB0aGVwb2ludCBvdXQgdGhhdHhNTEh0dHBSZXF1ZXN0YW5kIHN1YnNlcXVlbnRzZWNvbmQgbGFyZ2VzdHZlcnkgaW1wb3J0YW50c3BlY2lmaWNhdGlvbnNzdXJmYWNlIG9mIHRoZWFwcGxpZWQgdG8gdGhlZm9yZWlnbiBwb2xpY3lfc2V0RG9tYWluTmFtZWVzdGFibGlzaGVkIGluaXMgYmVsaWV2ZWQgdG9JbiBhZGRpdGlvbiB0b21lYW5pbmcgb2YgdGhlaXMgbmFtZWQgYWZ0ZXJ0byBwcm90ZWN0IHRoZWlzIHJlcHJlc2VudGVkRGVjbGFyYXRpb24gb2Ztb3JlIGVmZmljaWVudENsYXNzaWZpY2F0aW9ub3RoZXIgZm9ybXMgb2ZoZSByZXR1cm5lZCB0bzxzcGFuIGNsYXNzPSJjcGVyZm9ybWFuY2Ugb2YoZnVuY3Rpb24oKSB7XHJpZiBhbmQgb25seSBpZnJlZ2lvbnMgb2YgdGhlbGVhZGluZyB0byB0aGVyZWxhdGlvbnMgd2l0aFVuaXRlZCBOYXRpb25zc3R5bGU9ImhlaWdodDpvdGhlciB0aGFuIHRoZXlwZSIgY29udGVudD0iQXNzb2NpYXRpb24gb2ZcbjwvaGVhZD5cbjxib2R5bG9jYXRlZCBvbiB0aGVpcyByZWZlcnJlZCB0byhpbmNsdWRpbmcgdGhlY29uY2VudHJhdGlvbnN0aGUgaW5kaXZpZHVhbGFtb25nIHRoZSBtb3N0dGhhbiBhbnkgb3RoZXIvPlxuPGxpbmsgcmVsPSIgcmV0dXJuIGZhbHNlO3RoZSBwdXJwb3NlIG9mdGhlIGFiaWxpdHkgdG87Y29sb3I6I2ZmZn1cbi5cbjxzcGFuIGNsYXNzPSJ0aGUgc3ViamVjdCBvZmRlZmluaXRpb25zIG9mPlxyXG48bGluayByZWw9ImNsYWltIHRoYXQgdGhlaGF2ZSBkZXZlbG9wZWQ8dGFibGUgd2lkdGg9ImNlbGVicmF0aW9uIG9mRm9sbG93aW5nIHRoZSB0byBkaXN0aW5ndWlzaDxzcGFuIGNsYXNzPSJidGFrZXMgcGxhY2UgaW51bmRlciB0aGUgbmFtZW5vdGVkIHRoYXQgdGhlPjwhW2VuZGlmXS0tPlxuc3R5bGU9Im1hcmdpbi1pbnN0ZWFkIG9mIHRoZWludHJvZHVjZWQgdGhldGhlIHByb2Nlc3Mgb2ZpbmNyZWFzaW5nIHRoZWRpZmZlcmVuY2VzIGluZXN0aW1hdGVkIHRoYXRlc3BlY2lhbGx5IHRoZS9kaXY+PGRpdiBpZD0id2FzIGV2ZW50dWFsbHl0aHJvdWdob3V0IGhpc3RoZSBkaWZmZXJlbmNlc29tZXRoaW5nIHRoYXRzcGFuPjwvc3Bhbj48L3NpZ25pZmljYW50bHkgPjwvc2NyaXB0PlxyXG5cclxuZW52aXJvbm1lbnRhbCB0byBwcmV2ZW50IHRoZWhhdmUgYmVlbiB1c2VkZXNwZWNpYWxseSBmb3J1bmRlcnN0YW5kIHRoZWlzIGVzc2VudGlhbGx5d2VyZSB0aGUgZmlyc3RpcyB0aGUgbGFyZ2VzdGhhdmUgYmVlbiBtYWRlIiBzcmM9Imh0dHA6Ly9pbnRlcnByZXRlZCBhc3NlY29uZCBoYWxmIG9mY3JvbGxpbmc9Im5vIiBpcyBjb21wb3NlZCBvZklJLCBIb2x5IFJvbWFuaXMgZXhwZWN0ZWQgdG9oYXZlIHRoZWlyIG93bmRlZmluZWQgYXMgdGhldHJhZGl0aW9uYWxseSBoYXZlIGRpZmZlcmVudGFyZSBvZnRlbiB1c2VkdG8gZW5zdXJlIHRoYXRhZ3JlZW1lbnQgd2l0aGNvbnRhaW5pbmcgdGhlYXJlIGZyZXF1ZW50bHlpbmZvcm1hdGlvbiBvbmV4YW1wbGUgaXMgdGhlcmVzdWx0aW5nIGluIGE8L2E+PC9saT48L3VsPiBjbGFzcz0iZm9vdGVyYW5kIGVzcGVjaWFsbHl0eXBlPSJidXR0b24iIDwvc3Bhbj48L3NwYW4+d2hpY2ggaW5jbHVkZWQ+XG48bWV0YSBuYW1lPSJjb25zaWRlcmVkIHRoZWNhcnJpZWQgb3V0IGJ5SG93ZXZlciwgaXQgaXNiZWNhbWUgcGFydCBvZmluIHJlbGF0aW9uIHRvcG9wdWxhciBpbiB0aGV0aGUgY2FwaXRhbCBvZndhcyBvZmZpY2lhbGx5d2hpY2ggaGFzIGJlZW50aGUgSGlzdG9yeSBvZmFsdGVybmF0aXZlIHRvZGlmZmVyZW50IGZyb210byBzdXBwb3J0IHRoZXN1Z2dlc3RlZCB0aGF0aW4gdGhlIHByb2Nlc3MgIDxkaXYgY2xhc3M9InRoZSBmb3VuZGF0aW9uYmVjYXVzZSBvZiBoaXNjb25jZXJuZWQgd2l0aHRoZSB1bml2ZXJzaXR5b3Bwb3NlZCB0byB0aGV0aGUgY29udGV4dCBvZjxzcGFuIGNsYXNzPSJwdGV4dCIgbmFtZT0icSJcdFx0PGRpdiBjbGFzcz0idGhlIHNjaWVudGlmaWNyZXByZXNlbnRlZCBieW1hdGhlbWF0aWNpYW5zZWxlY3RlZCBieSB0aGV0aGF0IGhhdmUgYmVlbj48ZGl2IGNsYXNzPSJjZGl2IGlkPSJoZWFkZXJpbiBwYXJ0aWN1bGFyLGNvbnZlcnRlZCBpbnRvKTtcbjwvc2NyaXB0PlxuPHBoaWxvc29waGljYWwgc3Jwc2tvaHJ2YXRza2l0aWE6P25nIFZpYTtceDA3dFAgUVx4MDNRXHgwMVFceDAxUDpQOFA5UVwwUVx4MDNRXHgwMVFceDAxUDpQOFA5aW52ZXN0aWdhY2lDM25wYXJ0aWNpcGFjaUMzblA6UD5RXHgwMlA+UVwwUVx2UDVQPlAxUDtQMFFceDAxUVx4MDJQOFA6UD5RXHgwMlA+UVwwUVx2UDlRXHgwN1A1UDtQPlAyUDVQOlFceDAxUDhRXHgwMVFceDAyUDVQPFFcdlBceDFkUD5QMlA+UVx4MDFRXHgwMlA4UDpQPlFceDAyUD5RXDBRXHZRXHgwNVA+UDFQO1AwUVx4MDFRXHgwMlFcZlAyUVwwUDVQPFA1UD1QOFA6UD5RXHgwMlA+UVwwUDBRXHgwZlFceDAxUDVQM1A+UDRQPVFceDBmUVx4MDFQOlAwUVx4MDdQMFFceDAyUVxmUD1QPlAyUD5RXHgwMVFceDAyUDhQI1A6UVwwUDBQOFA9UVx2UDJQPlA/UVwwUD5RXHgwMVFcdlA6UD5RXHgwMlA+UVwwUD5QOVFceDAxUDRQNVA7UDBRXHgwMlFcZlA/UD5QPFA+UVx0UVxmUVx4MGVRXHgwMVFcMFA1UDRRXHgwMVFceDAyUDJQPlAxUVwwUDBQN1A+UDxRXHgwMVFceDAyUD5RXDBQPlA9UVx2UVx4MDNRXHgwN1AwUVx4MDFRXHgwMlA4UDVRXHgwMlA1UVx4MDdQNVA9UDhQNVBceDEzUDtQMFAyUD1QMFFceDBmUDhRXHgwMVFceDAyUD5RXDBQOFA4UVx4MDFQOFFceDAxUVx4MDJQNVA8UDBRXDBQNVFcYlA1UD1QOFFceDBmUCFQOlAwUVx4MDdQMFFceDAyUVxmUD9QPlFcclFceDAyUD5QPFFceDAzUVx4MDFQO1A1UDRRXHgwM1A1UVx4MDJRXHgwMVA6UDBQN1AwUVx4MDJRXGZRXHgwMlA+UDJQMFFcMFA+UDJQOlA+UD1QNVFceDA3UD1QPlFcMFA1UVxiUDVQPVA4UDVQOlA+UVx4MDJQPlFcMFA+UDVQPlFcMFAzUDBQPVA+UDJQOlA+UVx4MDJQPlFcMFA+UDxQIFA1UDpQO1AwUDxQMFhcJ1lceDA0WVx4MDVZXHgwNlgqWC9ZXHRZXHgwNVlceDA2WCpYL1lcblhcJ1gqWFwnWVx4MDRZXHgwNVlcYlg2WVxiWDlYXCdZXHgwNFgoWDFYXCdZXHgwNVgsWFwnWVx4MDRZXHgwNVlcYlhcJ1lceDAyWDlYXCdZXHgwNFgxWDNYXCdYJllceDA0WVx4MDVYNFhcJ1gxWVx4MDNYXCdYKlhcJ1lceDA0WCNYOVg2WFwnWCFYXCdZXHgwNFgxWVxuWFwnWDZYKVhcJ1lceDA0WCpYNVlceDA1WVxuWVx4MDVYXCdZXHgwNFhcJ1g5WDZYXCdYIVhcJ1lceDA0WVx4MDZYKlhcJ1gmWCxYXCdZXHgwNFgjWVx4MDRYOVhcJ1goWFwnWVx4MDRYKlgzWCxZXG5ZXHgwNFhcJ1lceDA0WCNZXHgwMlgzWFwnWVx4MDVYXCdZXHgwNFg2WDpYN1hcJ1gqWFwnWVx4MDRZXHgwMVlcblgvWVxuWVxiWFwnWVx4MDRYKlgxWC1ZXG5YKFhcJ1lceDA0WCxYL1lcblgvWClYXCdZXHgwNFgqWDlZXHgwNFlcbllceDA1WFwnWVx4MDRYI1guWChYXCdYMVhcJ1lceDA0WFwnWVx4MDFZXHgwNFhcJ1lceDA1WFwnWVx4MDRYI1lceDAxWVx4MDRYXCdZXHgwNVhcJ1lceDA0WCpYXCdYMVlcblguWFwnWVx4MDRYKllceDAyWVx4MDZZXG5YKVhcJ1lceDA0WFwnWVx4MDRYOVhcJ1goWFwnWVx4MDRYLllcYlhcJ1g3WDFYXCdZXHgwNFlceDA1WCxYKllceDA1WDlYXCdZXHgwNFgvWVxuWVx4MDNZXGJYMVhcJ1lceDA0WDNZXG5YXCdYLVgpWDlYKFgvWFwnWVx4MDRZXHgwNFlceDA3WFwnWVx4MDRYKlgxWChZXG5YKVhcJ1lceDA0WDFZXGJYXCdYKFg3WFwnWVx4MDRYI1gvWChZXG5YKVhcJ1lceDA0WFwnWC5YKFhcJ1gxWFwnWVx4MDRZXHgwNVgqWC1YL1gpWFwnWVx4MDRYXCdYOlhcJ1lceDA2WVxuY3Vyc29yOnBvaW50ZXI7PC90aXRsZT5cbjxtZXRhICIgaHJlZj0iaHR0cDovLyI+PHNwYW4gY2xhc3M9Im1lbWJlcnMgb2YgdGhlIHdpbmRvdy5sb2NhdGlvbnZlcnRpY2FsLWFsaWduOi9hPiB8IDxhIGhyZWY9IjwhZG9jdHlwZSBodG1sPm1lZGlhPSJzY3JlZW4iIDxvcHRpb24gdmFsdWU9ImZhdmljb24uaWNvIiAvPlxuXHRcdDxkaXYgY2xhc3M9ImNoYXJhY3RlcmlzdGljcyIgbWV0aG9kPSJnZXQiIC9ib2R5PlxuPC9odG1sPlxuc2hvcnRjdXQgaWNvbiIgZG9jdW1lbnQud3JpdGUocGFkZGluZy1ib3R0b206cmVwcmVzZW50YXRpdmVzc3VibWl0IiB2YWx1ZT0iYWxpZ249ImNlbnRlciIgdGhyb3VnaG91dCB0aGUgc2NpZW5jZSBmaWN0aW9uXG4gIDxkaXYgY2xhc3M9InN1Ym1pdCIgY2xhc3M9Im9uZSBvZiB0aGUgbW9zdCB2YWxpZ249InRvcCI+PHdhcyBlc3RhYmxpc2hlZCk7XHJcbjwvc2NyaXB0PlxyXG5yZXR1cm4gZmFsc2U7Ij4pLnN0eWxlLmRpc3BsYXliZWNhdXNlIG9mIHRoZSBkb2N1bWVudC5jb29raWU8Zm9ybSBhY3Rpb249Ii99Ym9keXttYXJnaW46MDtFbmN5Y2xvcGVkaWEgb2Z2ZXJzaW9uIG9mIHRoZSAuY3JlYXRlRWxlbWVudChuYW1lIiBjb250ZW50PSI8L2Rpdj5cbjwvZGl2PlxuXG5hZG1pbmlzdHJhdGl2ZSA8L2JvZHk+XG48L2h0bWw+aGlzdG9yeSBvZiB0aGUgIj48aW5wdXQgdHlwZT0icG9ydGlvbiBvZiB0aGUgYXMgcGFydCBvZiB0aGUgJm5ic3A7PGEgaHJlZj0ib3RoZXIgY291bnRyaWVzIj5cbjxkaXYgY2xhc3M9Ijwvc3Bhbj48L3NwYW4+PEluIG90aGVyIHdvcmRzLGRpc3BsYXk6IGJsb2NrO2NvbnRyb2wgb2YgdGhlIGludHJvZHVjdGlvbiBvZi8+XG48bWV0YSBuYW1lPSJhcyB3ZWxsIGFzIHRoZSBpbiByZWNlbnQgeWVhcnNcclxuXHQ8ZGl2IGNsYXNzPSI8L2Rpdj5cblx0PC9kaXY+XG5pbnNwaXJlZCBieSB0aGV0aGUgZW5kIG9mIHRoZSBjb21wYXRpYmxlIHdpdGhiZWNhbWUga25vd24gYXMgc3R5bGU9Im1hcmdpbjouanMiPjwvc2NyaXB0PjwgSW50ZXJuYXRpb25hbCB0aGVyZSBoYXZlIGJlZW5HZXJtYW4gbGFuZ3VhZ2Ugc3R5bGU9ImNvbG9yOiNDb21tdW5pc3QgUGFydHljb25zaXN0ZW50IHdpdGhib3JkZXI9IjAiIGNlbGwgbWFyZ2luaGVpZ2h0PSJ0aGUgbWFqb3JpdHkgb2YiIGFsaWduPSJjZW50ZXJyZWxhdGVkIHRvIHRoZSBtYW55IGRpZmZlcmVudCBPcnRob2RveCBDaHVyY2hzaW1pbGFyIHRvIHRoZSAvPlxuPGxpbmsgcmVsPSJzd2FzIG9uZSBvZiB0aGUgdW50aWwgaGlzIGRlYXRofSkoKTtcbjwvc2NyaXB0Pm90aGVyIGxhbmd1YWdlc2NvbXBhcmVkIHRvIHRoZXBvcnRpb25zIG9mIHRoZXRoZSBOZXRoZXJsYW5kc3RoZSBtb3N0IGNvbW1vbmJhY2tncm91bmQ6dXJsKGFyZ3VlZCB0aGF0IHRoZXNjcm9sbGluZz0ibm8iIGluY2x1ZGVkIGluIHRoZU5vcnRoIEFtZXJpY2FuIHRoZSBuYW1lIG9mIHRoZWludGVycHJldGF0aW9uc3RoZSB0cmFkaXRpb25hbGRldmVsb3BtZW50IG9mIGZyZXF1ZW50bHkgdXNlZGEgY29sbGVjdGlvbiBvZnZlcnkgc2ltaWxhciB0b3N1cnJvdW5kaW5nIHRoZWV4YW1wbGUgb2YgdGhpc2FsaWduPSJjZW50ZXIiPndvdWxkIGhhdmUgYmVlbmltYWdlX2NhcHRpb24gPWF0dGFjaGVkIHRvIHRoZXN1Z2dlc3RpbmcgdGhhdGluIHRoZSBmb3JtIG9mIGludm9sdmVkIGluIHRoZWlzIGRlcml2ZWQgZnJvbW5hbWVkIGFmdGVyIHRoZUludHJvZHVjdGlvbiB0b3Jlc3RyaWN0aW9ucyBvbiBzdHlsZT0id2lkdGg6IGNhbiBiZSB1c2VkIHRvIHRoZSBjcmVhdGlvbiBvZm1vc3QgaW1wb3J0YW50IGluZm9ybWF0aW9uIGFuZHJlc3VsdGVkIGluIHRoZWNvbGxhcHNlIG9mIHRoZVRoaXMgbWVhbnMgdGhhdGVsZW1lbnRzIG9mIHRoZXdhcyByZXBsYWNlZCBieWFuYWx5c2lzIG9mIHRoZWluc3BpcmF0aW9uIGZvcnJlZ2FyZGVkIGFzIHRoZW1vc3Qgc3VjY2Vzc2Z1bGtub3duIGFzICZxdW90O2EgY29tcHJlaGVuc2l2ZUhpc3Rvcnkgb2YgdGhlIHdlcmUgY29uc2lkZXJlZHJldHVybmVkIHRvIHRoZWFyZSByZWZlcnJlZCB0b1Vuc291cmNlZCBpbWFnZT5cblx0PGRpdiBjbGFzcz0iY29uc2lzdHMgb2YgdGhlc3RvcFByb3BhZ2F0aW9uaW50ZXJlc3QgaW4gdGhlYXZhaWxhYmlsaXR5IG9mYXBwZWFycyB0byBoYXZlZWxlY3Ryb21hZ25ldGljZW5hYmxlU2VydmljZXMoZnVuY3Rpb24gb2YgdGhlSXQgaXMgaW1wb3J0YW50PC9zY3JpcHQ+PC9kaXY+ZnVuY3Rpb24oKXt2YXIgcmVsYXRpdmUgdG8gdGhlYXMgYSByZXN1bHQgb2YgdGhlIHBvc2l0aW9uIG9mRm9yIGV4YW1wbGUsIGluIG1ldGhvZD0icG9zdCIgd2FzIGZvbGxvd2VkIGJ5JmFtcDttZGFzaDsgdGhldGhlIGFwcGxpY2F0aW9uanMiPjwvc2NyaXB0PlxyXG51bD48L2Rpdj48L2Rpdj5hZnRlciB0aGUgZGVhdGh3aXRoIHJlc3BlY3QgdG9zdHlsZT0icGFkZGluZzppcyBwYXJ0aWN1bGFybHlkaXNwbGF5OmlubGluZTsgdHlwZT0ic3VibWl0IiBpcyBkaXZpZGVkIGludG9kOC1mXHgxNlx4MDcgKGcuXDBkPVx4MTMpcmVzcG9uc2FiaWxpZGFkYWRtaW5pc3RyYWNpQzNuaW50ZXJuYWNpb25hbGVzY29ycmVzcG9uZGllbnRlYCRcdGAkKmAkL2AlXHZgJFx4MTdgJCpgJVx4MDJgJDBgJVxyYCQ1YCQ5YCQuYCQ+YCQwYCVceDA3YCQyYCVcdmAkXHgxN2AlXHZgJFx4MDJgJFx4MWFgJVx4MDFgJChgJD5gJDVgJDJgJVx4MDdgJFx4MTVgJD9gJChgJDhgJDBgJFx4MTVgJD5gJDBgJCpgJVx4MDFgJDJgJD9gJDhgJFx4MTZgJVx2YCRceDFjYCVceDA3YCRceDAyYCRceDFhYCQ+YCQ5YCQ/YCRceDBmYCQtYCVceDA3YCRceDFjYCVceDA3YCRceDAyYCQ2YCQ+YCQuYCQ/YCQyYCQ5YCQuYCQ+YCQwYCVcMGAkXHgxY2AkPmAkXHgxN2AkMGAkI2AkLGAkKGAkPmAkKGAlXHgwN2AkXHgxNWAlXHgwMWAkLmAkPmAkMGAkLGAlXHJgJDJgJVx0YCRceDE3YCQuYCQ+YCQyYCQ/YCRceDE1YCQuYCQ5YCQ/YCQyYCQ+YCQqYCVceDAzYCQ3YCVccmAkIGAkLGAkImAkPGAkJGAlXHgwN2AkLWAkPmAkXHgxY2AkKmAkPmAkXHgxNWAlXHJgJDJgJD9gJFx4MTVgJFx4MWZgJVxyYCQwYCVceDA3YCQoYCRceDE2YCQ/YCQyYCQ+YCQrYCQmYCVcZmAkMGAkPmAkKGAkLmAkPmAkLmAkMmAlXHgwN2AkLmAkJGAkJmAkPmAkKGAkLGAkPmAkXHgxY2AkPmAkMGAkNWAkP2AkXHgxNWAkPmAkOGAkXHgxNWAlXHJgJC9gJVx2YCRceDAyYCRceDFhYCQ+YCQ5YCQkYCVceDA3YCQqYCQ5YCVceDAxYCRceDAxYCRceDFhYCQsYCQkYCQ+YCQvYCQ+YCQ4YCRceDAyYCQ1YCQ+YCQmYCQmYCVceDA3YCRceDE2YCQoYCVceDA3YCQqYCQ/YCRceDFiYCQyYCVceDA3YCQ1YCQ/YCQ2YCVceDA3YCQ3YCQwYCQ+YCRceDFjYCVccmAkL2AkXHRgJCRgJVxyYCQkYCQwYCQuYCVceDAxYCRceDAyYCQsYCRcYmAkJmAlXHZgJChgJVx2YCRceDAyYCRcdGAkKmAkXHgxNWAkMGAkI2AkKmAkImAkPGAlXHgwN2AkXHgwMmAkOGAlXHJgJCVgJD9gJCRgJCtgJD9gJDJgJVxyYCQuYCQuYCVceDAxYCRceDE2YCVccmAkL2AkXHgwNWAkXHgxYWAlXHJgJFx4MWJgJD5gJFx4MWJgJVx4MDJgJFx4MWZgJCRgJVwwYCQ4YCRceDAyYCRceDE3YCVcMGAkJGAkXHgxY2AkPmAkXHgwZmAkXHgxN2AkPmAkNWAkP2AkLWAkPmAkXHgxN2AkXHgxOGAkI2AlXHJgJFx4MWZgJVx4MDdgJCZgJVx4MDJgJDhgJDBgJVx4MDdgJCZgJD9gJChgJVx2YCRceDAyYCQ5YCQkYCVccmAkL2AkPmAkOGAlXHgwN2AkXHgxNWAlXHJgJDhgJFx4MTdgJD5gJFx4MDJgJFwnYCVcMGAkNWAkP2AkNmAlXHJgJDVgJDBgJD5gJCRgJVx4MDdgJFx4MDJgJCZgJVxiYCRceDFmYCVccmAkOGAkKGAkXHgxNWAlXHJgJDZgJD5gJDhgJD5gJC5gJChgJVx4MDdgJFx4MDVgJCZgJD5gJDJgJCRgJCxgJD9gJFx4MWNgJDJgJVwwYCQqYCVceDAxYCQwYCVceDAyYCQ3YCQ5YCQ/YCRceDAyYCQmYCVcMGAkLmAkP2AkJGAlXHJgJDBgJFx4MTVgJDVgJD9gJCRgJD5gJDBgJVx4MDFgJCpgJC9gJVx4MDdgJDhgJVxyYCQlYCQ+YCQoYCRceDE1YCQwYCVcdmAkIWAkPGAkLmAlXHgwMWAkXHgxNWAlXHJgJCRgJC9gJVx2YCRceDFjYCQoYCQ+YCRceDE1YCVceDAzYCQqYCQvYCQ+YCQqYCVcdmAkOGAlXHJgJFx4MWZgJFx4MThgJDBgJVx4MDdgJDJgJVx4MDJgJFx4MTVgJD5gJDBgJVxyYCQvYCQ1YCQ/YCRceDFhYCQ+YCQwYCQ4YCVceDAyYCRceDFhYCQoYCQ+YCQuYCVceDAyYCQyYCVccmAkL2AkJmAlXHgwN2AkXHgxNmAlXHgwN2AkXHgwMmAkOWAkLmAlXHgwN2AkNmAkPmAkOGAlXHJgJFx4MTVgJVx4MDJgJDJgJC5gJVxiYCRceDAyYCQoYCVceDA3YCQkYCVcYmAkL2AkPmAkMGAkXHgxY2AkP2AkOGAkXHgxNWAlXHgwN3Jzcyt4bWwiIHRpdGxlPSItdHlwZSIgY29udGVudD0idGl0bGUiIGNvbnRlbnQ9ImF0IHRoZSBzYW1lIHRpbWUuanMiPjwvc2NyaXB0PlxuPCIgbWV0aG9kPSJwb3N0IiA8L3NwYW4+PC9hPjwvbGk+dmVydGljYWwtYWxpZ246dC9qcXVlcnkubWluLmpzIj4uY2xpY2soZnVuY3Rpb24oIHN0eWxlPSJwYWRkaW5nLX0pKCk7XG48L3NjcmlwdD5cbjwvc3Bhbj48YSBocmVmPSI8YSBocmVmPSJodHRwOi8vKTsgcmV0dXJuIGZhbHNlO3RleHQtZGVjb3JhdGlvbjogc2Nyb2xsaW5nPSJubyIgYm9yZGVyLWNvbGxhcHNlOmFzc29jaWF0ZWQgd2l0aCBCYWhhc2EgSW5kb25lc2lhRW5nbGlzaCBsYW5ndWFnZTx0ZXh0IHhtbDpzcGFjZT0uZ2lmIiBib3JkZXI9IjAiPC9ib2R5PlxuPC9odG1sPlxub3ZlcmZsb3c6aGlkZGVuO2ltZyBzcmM9Imh0dHA6Ly9hZGRFdmVudExpc3RlbmVycmVzcG9uc2libGUgZm9yIHMuanMiPjwvc2NyaXB0PlxuL2Zhdmljb24uaWNvIiAvPm9wZXJhdGluZyBzeXN0ZW0iIHN0eWxlPSJ3aWR0aDoxdGFyZ2V0PSJfYmxhbmsiPlN0YXRlIFVuaXZlcnNpdHl0ZXh0LWFsaWduOmxlZnQ7XG5kb2N1bWVudC53cml0ZSgsIGluY2x1ZGluZyB0aGUgYXJvdW5kIHRoZSB3b3JsZCk7XHJcbjwvc2NyaXB0PlxyXG48IiBzdHlsZT0iaGVpZ2h0OjtvdmVyZmxvdzpoaWRkZW5tb3JlIGluZm9ybWF0aW9uYW4gaW50ZXJuYXRpb25hbGEgbWVtYmVyIG9mIHRoZSBvbmUgb2YgdGhlIGZpcnN0Y2FuIGJlIGZvdW5kIGluIDwvZGl2PlxuXHRcdDwvZGl2PlxuZGlzcGxheTogbm9uZTsiPiIgLz5cbjxsaW5rIHJlbD0iXG4gIChmdW5jdGlvbigpIHt0aGUgMTV0aCBjZW50dXJ5LnByZXZlbnREZWZhdWx0KGxhcmdlIG51bWJlciBvZiBCeXphbnRpbmUgRW1waXJlLmpwZ3x0aHVtYnxsZWZ0fHZhc3QgbWFqb3JpdHkgb2ZtYWpvcml0eSBvZiB0aGUgIGFsaWduPSJjZW50ZXIiPlVuaXZlcnNpdHkgUHJlc3Nkb21pbmF0ZWQgYnkgdGhlU2Vjb25kIFdvcmxkIFdhcmRpc3RyaWJ1dGlvbiBvZiBzdHlsZT0icG9zaXRpb246dGhlIHJlc3Qgb2YgdGhlIGNoYXJhY3Rlcml6ZWQgYnkgcmVsPSJub2ZvbGxvdyI+ZGVyaXZlcyBmcm9tIHRoZXJhdGhlciB0aGFuIHRoZSBhIGNvbWJpbmF0aW9uIG9mc3R5bGU9IndpZHRoOjEwMEVuZ2xpc2gtc3BlYWtpbmdjb21wdXRlciBzY2llbmNlYm9yZGVyPSIwIiBhbHQ9InRoZSBleGlzdGVuY2Ugb2ZEZW1vY3JhdGljIFBhcnR5IiBzdHlsZT0ibWFyZ2luLUZvciB0aGlzIHJlYXNvbiwuanMiPjwvc2NyaXB0PlxuXHRzQnlUYWdOYW1lKHMpWzBdanMiPjwvc2NyaXB0PlxyXG48LmpzIj48L3NjcmlwdD5cclxubGluayByZWw9Imljb24iIFwnIGFsdD1cJ1wnIGNsYXNzPVwnZm9ybWF0aW9uIG9mIHRoZXZlcnNpb25zIG9mIHRoZSA8L2E+PC9kaXY+PC9kaXY+L3BhZ2U+XG4gIDxwYWdlPlxuPGRpdiBjbGFzcz0iY29udGJlY2FtZSB0aGUgZmlyc3RiYWhhc2EgSW5kb25lc2lhZW5nbGlzaCAoc2ltcGxlKU5ceDE1TjtOO043Tj1OOU46TixRXHgwNVFcMFAyUDBRXHgwMlFceDAxUDpQOFA6UD5QPFA/UDBQPVA4UDhRXHgwZlAyUDtRXHgwZlA1UVx4MDJRXHgwMVFceDBmUFx4MTRQPlAxUDBQMlA4UVx4MDJRXGZRXHgwN1A1UDtQPlAyUDVQOlAwUVwwUDBQN1AyUDhRXHgwMlA4UVx4MGZQXHgxOFA9UVx4MDJQNVFcMFA9UDVRXHgwMlBceDFlUVx4MDJQMlA1UVx4MDJQOFFceDAyUVxmUD1QMFA/UVwwUDhQPFA1UVwwUDhQPVFceDAyUDVRXDBQPVA1UVx4MDJQOlA+UVx4MDJQPlFcMFA+UDNQPlFceDAxUVx4MDJRXDBQMFA9UDhRXHgwNlFcdlA6UDBRXHgwN1A1UVx4MDFRXHgwMlAyUDVRXHgwM1FceDAxUDtQPlAyUDhRXHgwZlFceDA1UD9RXDBQPlAxUDtQNVA8UVx2UD9QPlA7UVx4MDNRXHgwN1A4UVx4MDJRXGZRXHgwZlAyUDtRXHgwZlFceDBlUVx4MDJRXHgwMVFceDBmUD1QMFA4UDFQPlA7UDVQNVA6UD5QPFA/UDBQPVA4UVx4MGZQMlA9UDhQPFAwUD1QOFA1UVx4MDFRXDBQNVA0UVx4MDFRXHgwMlAyUDBYXCdZXHgwNFlceDA1WVxiWFwnWDZZXG5YOVhcJ1lceDA0WDFYJllcblgzWVxuWClYXCdZXHgwNFhcJ1lceDA2WCpZXHgwMlhcJ1lceDA0WVx4MDVYNFhcJ1gxWVx4MDNYXCdYKllceDAzWFwnWVx4MDRYM1lcblhcJ1gxWFwnWCpYXCdZXHgwNFlceDA1WVx4MDNYKllcYlgoWClYXCdZXHgwNFgzWDlZXGJYL1lcblgpWFwnWC1YNVhcJ1gmWVxuWFwnWCpYXCdZXHgwNFg5WFwnWVx4MDRZXHgwNVlcblgpWFwnWVx4MDRYNVlcYlgqWVxuWFwnWCpYXCdZXHgwNFhcJ1lceDA2WCpYMVlceDA2WCpYXCdZXHgwNFgqWDVYXCdZXHgwNVlcbllceDA1WFwnWVx4MDRYJVgzWVx4MDRYXCdZXHgwNVlcblhcJ1lceDA0WVx4MDVYNFhcJ1gxWVx4MDNYKVhcJ1lceDA0WVx4MDVYMVgmWVxuWFwnWCpyb2JvdHMiIGNvbnRlbnQ9IjxkaXYgaWQ9ImZvb3RlciI+dGhlIFVuaXRlZCBTdGF0ZXM8aW1nIHNyYz0iaHR0cDovLy5qcGd8cmlnaHR8dGh1bWJ8LmpzIj48L3NjcmlwdD5cclxuPGxvY2F0aW9uLnByb3RvY29sZnJhbWVib3JkZXI9IjAiIHMiIC8+XG48bWV0YSBuYW1lPSI8L2E+PC9kaXY+PC9kaXY+PGZvbnQtd2VpZ2h0OmJvbGQ7JnF1b3Q7IGFuZCAmcXVvdDtkZXBlbmRpbmcgb24gdGhlIG1hcmdpbjowO3BhZGRpbmc6IiByZWw9Im5vZm9sbG93IiBQcmVzaWRlbnQgb2YgdGhlIHR3ZW50aWV0aCBjZW50dXJ5ZXZpc2lvbj5cbiAgPC9wYWdlSW50ZXJuZXQgRXhwbG9yZXJhLmFzeW5jID0gdHJ1ZTtcclxuaW5mb3JtYXRpb24gYWJvdXQ8ZGl2IGlkPSJoZWFkZXIiPiIgYWN0aW9uPSJodHRwOi8vPGEgaHJlZj0iaHR0cHM6Ly88ZGl2IGlkPSJjb250ZW50IjwvZGl2PlxyXG48L2Rpdj5cclxuPGRlcml2ZWQgZnJvbSB0aGUgPGltZyBzcmM9XCdodHRwOi8vYWNjb3JkaW5nIHRvIHRoZSBcbjwvYm9keT5cbjwvaHRtbD5cbnN0eWxlPSJmb250LXNpemU6c2NyaXB0IGxhbmd1YWdlPSJBcmlhbCwgSGVsdmV0aWNhLDwvYT48c3BhbiBjbGFzcz0iPC9zY3JpcHQ+PHNjcmlwdCBwb2xpdGljYWwgcGFydGllc3RkPjwvdHI+PC90YWJsZT48aHJlZj0iaHR0cDovL3d3dy5pbnRlcnByZXRhdGlvbiBvZnJlbD0ic3R5bGVzaGVldCIgZG9jdW1lbnQud3JpdGUoXCc8Y2hhcnNldD0idXRmLTgiPlxuYmVnaW5uaW5nIG9mIHRoZSByZXZlYWxlZCB0aGF0IHRoZXRlbGV2aXNpb24gc2VyaWVzIiByZWw9Im5vZm9sbG93Ij4gdGFyZ2V0PSJfYmxhbmsiPmNsYWltaW5nIHRoYXQgdGhlaHR0cCUzQSUyRiUyRnd3dy5tYW5pZmVzdGF0aW9ucyBvZlByaW1lIE1pbmlzdGVyIG9maW5mbHVlbmNlZCBieSB0aGVjbGFzcz0iY2xlYXJmaXgiPi9kaXY+XHJcbjwvZGl2PlxyXG5cclxudGhyZWUtZGltZW5zaW9uYWxDaHVyY2ggb2YgRW5nbGFuZG9mIE5vcnRoIENhcm9saW5hc3F1YXJlIGtpbG9tZXRyZXMuYWRkRXZlbnRMaXN0ZW5lcmRpc3RpbmN0IGZyb20gdGhlY29tbW9ubHkga25vd24gYXNQaG9uZXRpYyBBbHBoYWJldGRlY2xhcmVkIHRoYXQgdGhlY29udHJvbGxlZCBieSB0aGVCZW5qYW1pbiBGcmFua2xpbnJvbGUtcGxheWluZyBnYW1ldGhlIFVuaXZlcnNpdHkgb2ZpbiBXZXN0ZXJuIEV1cm9wZXBlcnNvbmFsIGNvbXB1dGVyUHJvamVjdCBHdXRlbmJlcmdyZWdhcmRsZXNzIG9mIHRoZWhhcyBiZWVuIHByb3Bvc2VkdG9nZXRoZXIgd2l0aCB0aGU+PC9saT48bGkgY2xhc3M9ImluIHNvbWUgY291bnRyaWVzbWluLmpzIj48L3NjcmlwdD5vZiB0aGUgcG9wdWxhdGlvbm9mZmljaWFsIGxhbmd1YWdlPGltZyBzcmM9ImltYWdlcy9pZGVudGlmaWVkIGJ5IHRoZW5hdHVyYWwgcmVzb3VyY2VzY2xhc3NpZmljYXRpb24gb2ZjYW4gYmUgY29uc2lkZXJlZHF1YW50dW0gbWVjaGFuaWNzTmV2ZXJ0aGVsZXNzLCB0aGVtaWxsaW9uIHllYXJzIGFnbzwvYm9keT5cclxuPC9odG1sPlxyTlx4MTVOO047TjdOPU45TjpOLFxudGFrZSBhZHZhbnRhZ2Ugb2ZhbmQsIGFjY29yZGluZyB0b2F0dHJpYnV0ZWQgdG8gdGhlTWljcm9zb2Z0IFdpbmRvd3N0aGUgZmlyc3QgY2VudHVyeXVuZGVyIHRoZSBjb250cm9sZGl2IGNsYXNzPSJoZWFkZXJzaG9ydGx5IGFmdGVyIHRoZW5vdGFibGUgZXhjZXB0aW9udGVucyBvZiB0aG91c2FuZHNzZXZlcmFsIGRpZmZlcmVudGFyb3VuZCB0aGUgd29ybGQucmVhY2hpbmcgbWlsaXRhcnlpc29sYXRlZCBmcm9tIHRoZW9wcG9zaXRpb24gdG8gdGhldGhlIE9sZCBUZXN0YW1lbnRBZnJpY2FuIEFtZXJpY2Fuc2luc2VydGVkIGludG8gdGhlc2VwYXJhdGUgZnJvbSB0aGVtZXRyb3BvbGl0YW4gYXJlYW1ha2VzIGl0IHBvc3NpYmxlYWNrbm93bGVkZ2VkIHRoYXRhcmd1YWJseSB0aGUgbW9zdHR5cGU9InRleHQvY3NzIj5cbnRoZSBJbnRlcm5hdGlvbmFsQWNjb3JkaW5nIHRvIHRoZSBwZT0idGV4dC9jc3MiIC8+XG5jb2luY2lkZSB3aXRoIHRoZXR3by10aGlyZHMgb2YgdGhlRHVyaW5nIHRoaXMgdGltZSxkdXJpbmcgdGhlIHBlcmlvZGFubm91bmNlZCB0aGF0IGhldGhlIGludGVybmF0aW9uYWxhbmQgbW9yZSByZWNlbnRseWJlbGlldmVkIHRoYXQgdGhlY29uc2Npb3VzbmVzcyBhbmRmb3JtZXJseSBrbm93biBhc3N1cnJvdW5kZWQgYnkgdGhlZmlyc3QgYXBwZWFyZWQgaW5vY2Nhc2lvbmFsbHkgdXNlZHBvc2l0aW9uOmFic29sdXRlOyIgdGFyZ2V0PSJfYmxhbmsiIHBvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO2pheC9saWJzL2pxdWVyeS8xLmJhY2tncm91bmQtY29sb3I6I3R5cGU9ImFwcGxpY2F0aW9uL2FuZ3VhZ2UiIGNvbnRlbnQ9IjxtZXRhIGh0dHAtZXF1aXY9IlByaXZhY3kgUG9saWN5PC9hPmUoIiUzQ3NjcmlwdCBzcmM9XCciIHRhcmdldD0iX2JsYW5rIj5PbiB0aGUgb3RoZXIgaGFuZCwuanBnfHRodW1ifHJpZ2h0fDI8L2Rpdj48ZGl2IGNsYXNzPSI8ZGl2IHN0eWxlPSJmbG9hdDpuaW5ldGVlbnRoIGNlbnR1cnk8L2JvZHk+XHJcbjwvaHRtbD5cclxuPGltZyBzcmM9Imh0dHA6Ly9zO3RleHQtYWxpZ246Y2VudGVyZm9udC13ZWlnaHQ6IGJvbGQ7IEFjY29yZGluZyB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIiBmcmFtZWJvcmRlcj0iMCIgIiBzdHlsZT0icG9zaXRpb246bGluayBocmVmPSJodHRwOi8vaHRtbDQvbG9vc2UuZHRkIj5cbmR1cmluZyB0aGlzIHBlcmlvZDwvdGQ+PC90cj48L3RhYmxlPmNsb3NlbHkgcmVsYXRlZCB0b2ZvciB0aGUgZmlyc3QgdGltZTtmb250LXdlaWdodDpib2xkO2lucHV0IHR5cGU9InRleHQiIDxzcGFuIHN0eWxlPSJmb250LW9ucmVhZHlzdGF0ZWNoYW5nZVx0PGRpdiBjbGFzcz0iY2xlYXJkb2N1bWVudC5sb2NhdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBhIHdpZGUgdmFyaWV0eSBvZiA8IURPQ1RZUEUgaHRtbD5cclxuPCZuYnNwOyZuYnNwOyZuYnNwOyI+PGEgaHJlZj0iaHR0cDovL3N0eWxlPSJmbG9hdDpsZWZ0O2NvbmNlcm5lZCB3aXRoIHRoZT1odHRwJTNBJTJGJTJGd3d3LmluIHBvcHVsYXIgY3VsdHVyZXR5cGU9InRleHQvY3NzIiAvPml0IGlzIHBvc3NpYmxlIHRvIEhhcnZhcmQgVW5pdmVyc2l0eXR5bGVzaGVldCIgaHJlZj0iL3RoZSBtYWluIGNoYXJhY3Rlck94Zm9yZCBVbml2ZXJzaXR5ICBuYW1lPSJrZXl3b3JkcyIgY3N0eWxlPSJ0ZXh0LWFsaWduOnRoZSBVbml0ZWQgS2luZ2RvbWZlZGVyYWwgZ292ZXJubWVudDxkaXYgc3R5bGU9Im1hcmdpbiBkZXBlbmRpbmcgb24gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZTxkaXYgY2xhc3M9ImhlYWRlci5taW4uanMiPjwvc2NyaXB0PmRlc3RydWN0aW9uIG9mIHRoZXNsaWdodGx5IGRpZmZlcmVudGluIGFjY29yZGFuY2Ugd2l0aHRlbGVjb21tdW5pY2F0aW9uc2luZGljYXRlcyB0aGF0IHRoZXNob3J0bHkgdGhlcmVhZnRlcmVzcGVjaWFsbHkgaW4gdGhlIEV1cm9wZWFuIGNvdW50cmllc0hvd2V2ZXIsIHRoZXJlIGFyZXNyYz0iaHR0cDovL3N0YXRpY3N1Z2dlc3RlZCB0aGF0IHRoZSIgc3JjPSJodHRwOi8vd3d3LmEgbGFyZ2UgbnVtYmVyIG9mIFRlbGVjb21tdW5pY2F0aW9ucyIgcmVsPSJub2ZvbGxvdyIgdEhvbHkgUm9tYW4gRW1wZXJvcmFsbW9zdCBleGNsdXNpdmVseSIgYm9yZGVyPSIwIiBhbHQ9IlNlY3JldGFyeSBvZiBTdGF0ZWN1bG1pbmF0aW5nIGluIHRoZUNJQSBXb3JsZCBGYWN0Ym9va3RoZSBtb3N0IGltcG9ydGFudGFubml2ZXJzYXJ5IG9mIHRoZXN0eWxlPSJiYWNrZ3JvdW5kLTxsaT48ZW0+PGEgaHJlZj0iL3RoZSBBdGxhbnRpYyBPY2VhbnN0cmljdGx5IHNwZWFraW5nLHNob3J0bHkgYmVmb3JlIHRoZWRpZmZlcmVudCB0eXBlcyBvZnRoZSBPdHRvbWFuIEVtcGlyZT48aW1nIHNyYz0iaHR0cDovL0FuIEludHJvZHVjdGlvbiB0b2NvbnNlcXVlbmNlIG9mIHRoZWRlcGFydHVyZSBmcm9tIHRoZUNvbmZlZGVyYXRlIFN0YXRlc2luZGlnZW5vdXMgcGVvcGxlc1Byb2NlZWRpbmdzIG9mIHRoZWluZm9ybWF0aW9uIG9uIHRoZXRoZW9yaWVzIGhhdmUgYmVlbmludm9sdmVtZW50IGluIHRoZWRpdmlkZWQgaW50byB0aHJlZWFkamFjZW50IGNvdW50cmllc2lzIHJlc3BvbnNpYmxlIGZvcmRpc3NvbHV0aW9uIG9mIHRoZWNvbGxhYm9yYXRpb24gd2l0aHdpZGVseSByZWdhcmRlZCBhc2hpcyBjb250ZW1wb3Jhcmllc2ZvdW5kaW5nIG1lbWJlciBvZkRvbWluaWNhbiBSZXB1YmxpY2dlbmVyYWxseSBhY2NlcHRlZHRoZSBwb3NzaWJpbGl0eSBvZmFyZSBhbHNvIGF2YWlsYWJsZXVuZGVyIGNvbnN0cnVjdGlvbnJlc3RvcmF0aW9uIG9mIHRoZXRoZSBnZW5lcmFsIHB1YmxpY2lzIGFsbW9zdCBlbnRpcmVseXBhc3NlcyB0aHJvdWdoIHRoZWhhcyBiZWVuIHN1Z2dlc3RlZGNvbXB1dGVyIGFuZCB2aWRlb0dlcm1hbmljIGxhbmd1YWdlcyBhY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVudCBmcm9tIHRoZXNob3J0bHkgYWZ0ZXJ3YXJkc2hyZWY9Imh0dHBzOi8vd3d3LnJlY2VudCBkZXZlbG9wbWVudEJvYXJkIG9mIERpcmVjdG9yczxkaXYgY2xhc3M9InNlYXJjaHwgPGEgaHJlZj0iaHR0cDovL0luIHBhcnRpY3VsYXIsIHRoZU11bHRpcGxlIGZvb3Rub3Rlc29yIG90aGVyIHN1YnN0YW5jZXRob3VzYW5kcyBvZiB5ZWFyc3RyYW5zbGF0aW9uIG9mIHRoZTwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhIGhyZWY9ImluZGV4LnBocHdhcyBlc3RhYmxpc2hlZCBpbm1pbi5qcyI+PC9zY3JpcHQ+XG5wYXJ0aWNpcGF0ZSBpbiB0aGVhIHN0cm9uZyBpbmZsdWVuY2VzdHlsZT0ibWFyZ2luLXRvcDpyZXByZXNlbnRlZCBieSB0aGVncmFkdWF0ZWQgZnJvbSB0aGVUcmFkaXRpb25hbGx5LCB0aGVFbGVtZW50KCJzY3JpcHQiKTtIb3dldmVyLCBzaW5jZSB0aGUvZGl2PlxuPC9kaXY+XG48ZGl2IGxlZnQ7IG1hcmdpbi1sZWZ0OnByb3RlY3Rpb24gYWdhaW5zdDA7IHZlcnRpY2FsLWFsaWduOlVuZm9ydHVuYXRlbHksIHRoZXR5cGU9ImltYWdlL3gtaWNvbi9kaXY+XG48ZGl2IGNsYXNzPSIgY2xhc3M9ImNsZWFyZml4Ij48ZGl2IGNsYXNzPSJmb290ZXJcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG50aGUgbW90aW9uIHBpY3R1cmVQXHgxMVFcblA7UDNQMFFcMFFceDAxUDpQOFAxUVxuUDtQM1AwUVwwUVx4MDFQOlA4UCRQNVA0UDVRXDBQMFFceDA2UDhQOFA9UDVRXHgwMVA6UD5QO1FcZlA6UD5RXHgwMVA+UD5QMVFcdFA1UD1QOFA1UVx4MDFQPlA+UDFRXHRQNVA9UDhRXHgwZlA/UVwwUD5QM1FcMFAwUDxQPFFcdlBceDFlUVx4MDJQP1FcMFAwUDJQOFFceDAyUVxmUDFQNVFceDAxUD9QO1AwUVx4MDJQPVA+UDxQMFFceDAyUDVRXDBQOFAwUDtRXHZQP1A+UDdQMlA+UDtRXHgwZlA1UVx4MDJQP1A+UVx4MDFQO1A1UDRQPVA4UDVRXDBQMFA3UDtQOFFceDA3UD1RXHZRXHgwNVA/UVwwUD5QNFFceDAzUDpRXHgwNlA4UDhQP1FcMFA+UDNRXDBQMFA8UDxQMFA/UD5QO1A9UD5RXHgwMVFceDAyUVxmUVx4MGVQPVAwUVx4MDVQPlA0UDhRXHgwMlFceDAxUVx4MGZQOFA3UDFRXDBQMFA9UD1QPlA1UD1QMFFceDAxUDVQO1A1UD1QOFFceDBmUDhQN1A8UDVQPVA1UD1QOFFceDBmUDpQMFFceDAyUDVQM1A+UVwwUDhQOFBceDEwUDtQNVA6UVx4MDFQMFA9UDRRXDBgJCZgJVxyYCQ1YCQ+YCQwYCQ+YCQuYCVcYmAkKGAlXHgwMWAkXHgwNWAkMmAkKmAlXHJgJDBgJCZgJD5gJChgJC1gJD5gJDBgJCRgJVwwYCQvYCRceDA1YCQoYCVceDAxYCQmYCVceDA3YCQ2YCQ5YCQ/YCQoYCVccmAkJmAlXDBgJFx4MDdgJFx4MDJgJCFgJD9gJC9gJD5gJCZgJD9gJDJgJVxyYCQyYCVcMGAkXHgwNWAkXCdgJD9gJFx4MTVgJD5gJDBgJDVgJVwwYCQhYCQ/YCQvYCVcdmAkXHgxYWAkP2AkXHgxZmAlXHJgJCBgJVx4MDdgJDhgJC5gJD5gJFx4MWFgJD5gJDBgJFx4MWNgJFx4MDJgJFx4MTVgJVxyYCQ2YCQoYCQmYCVceDAxYCQoYCQ/YCQvYCQ+YCQqYCVccmAkMGAkL2AlXHZgJFx4MTdgJFx4MDVgJChgJVx4MDFgJDhgJD5gJDBgJFx4MTFgJChgJDJgJD5gJFx4MDdgJChgJCpgJD5gJDBgJVxyYCRceDFmYCVcMGAkNmAkMGAlXHJgJCRgJVx2YCRceDAyYCQyYCVcdmAkXHgxNWAkOGAkLWAkPmAkK2AkPGAlXHJgJDJgJVxiYCQ2YCQ2YCQwYCVccmAkJGAlXHgwN2AkXHgwMmAkKmAlXHJgJDBgJCZgJVx4MDdgJDZgJCpgJVxyYCQyYCVceDA3YCQvYCQwYCRceDE1YCVceDA3YCRceDAyYCQmYCVccmAkMGAkOGAlXHJgJCVgJD9gJCRgJD9gJFx0YCQkYCVccmAkKmAkPmAkJmAkXHRgJChgJVxyYCQ5YCVceDA3YCRceDAyYCRceDFhYCQ/YCRceDFmYCVccmAkIGAkPmAkL2AkPmAkJGAlXHJgJDBgJD5gJFx4MWNgJVxyYCQvYCQ+YCQmYCQ+YCQqYCVceDAxYCQwYCQ+YCQoYCVceDA3YCRceDFjYCVcdmAkIWAkPGAlXHgwN2AkXHgwMmAkXHgwNWAkKGAlXHgwMWAkNWAkPmAkJmAkNmAlXHJgJDBgJVx4MDdgJCNgJVwwYCQ2YCQ/YCRceDE1YCVccmAkN2AkPmAkOGAkMGAkXHgxNWAkPmAkMGAlXDBgJDhgJFx4MDJgJFx4MTdgJVxyYCQwYCQ5YCQqYCQwYCQ/YCQjYCQ+YCQuYCQsYCVccmAkMGAkPmAkXHgwMmAkIWAkLGAkXHgxYWAlXHJgJFx4MWFgJVx2YCRceDAyYCRcdGAkKmAkMmAkLGAlXHJgJFwnYCQuYCRceDAyYCQkYCVccmAkMGAlXDBgJDhgJFx4MDJgJCpgJDBgJVxyYCRceDE1YCRcdGAkLmAlXHJgJC5gJVwwYCQmYCQuYCQ+YCRcJ2AlXHJgJC9gJC5gJDhgJDlgJD5gJC9gJCRgJD5gJDZgJCxgJVxyYCQmYCVcdmAkXHgwMmAkLmAlXDBgJCFgJD9gJC9gJD5gJFx4MDZgJFxiYCQqYCVcMGAkXHgwZmAkMmAkLmAlXHZgJCxgJD5gJFx4MDdgJDJgJDhgJFx4MDJgJFx4MTZgJVxyYCQvYCQ+YCRceDA2YCQqYCQwYCVceDA3YCQ2YCQoYCRceDA1YCQoYCVceDAxYCQsYCRceDAyYCRcJ2AkLGAkPmAkXHgxY2AkPGAkPmAkMGAkKGAkNWAlXDBgJChgJCRgJC5gJCpgJVxyYCQwYCQuYCVceDAxYCRceDE2YCQqYCVccmAkMGAkNmAlXHJgJChgJCpgJDBgJD9gJDVgJD5gJDBgJChgJVx4MDFgJFx4MTVgJDhgJD5gJChgJDhgJC5gJDBgJVxyYCQlYCQoYCRceDA2YCQvYCVcdmAkXHgxY2AkP2AkJGAkOGAlXHZgJC5gJDVgJD5gJDBYXCdZXHgwNFlceDA1WDRYXCdYMVlceDAzWFwnWCpYXCdZXHgwNFlceDA1WVx4MDZYKlgvWVxuWFwnWCpYXCdZXHgwNFlceDAzWVx4MDVYKFlcbllcYlgqWDFYXCdZXHgwNFlceDA1WDRYXCdZXHgwN1gvWFwnWCpYOVgvWC9YXCdZXHgwNFgyWVxiWFwnWDFYOVgvWC9YXCdZXHgwNFgxWC9ZXGJYL1hcJ1lceDA0WCVYM1lceDA0WFwnWVx4MDVZXG5YKVhcJ1lceDA0WVx4MDFZXGJYKllcYlg0WVxiWChYXCdZXHgwNFlceDA1WDNYXCdYKFlceDAyWFwnWCpYXCdZXHgwNFlceDA1WDlZXHgwNFlcYllceDA1WFwnWCpYXCdZXHgwNFlceDA1WDNZXHgwNFgzWVx4MDRYXCdYKlhcJ1lceDA0WCxYMVhcJ1lceDAxWVxuWVx4MDNYM1hcJ1lceDA0WFwnWDNZXHgwNFhcJ1lceDA1WVxuWClYXCdZXHgwNFhcJ1gqWDVYXCdZXHgwNFhcJ1gqa2V5d29yZHMiIGNvbnRlbnQ9InczLm9yZy8xOTk5L3hodG1sIj48YSB0YXJnZXQ9Il9ibGFuayIgdGV4dC9odG1sOyBjaGFyc2V0PSIgdGFyZ2V0PSJfYmxhbmsiPjx0YWJsZSBjZWxscGFkZGluZz0iYXV0b2NvbXBsZXRlPSJvZmYiIHRleHQtYWxpZ246IGNlbnRlcjt0byBsYXN0IHZlcnNpb24gYnkgYmFja2dyb3VuZC1jb2xvcjogIyIgaHJlZj0iaHR0cDovL3d3dy4vZGl2PjwvZGl2PjxkaXYgaWQ9PGEgaHJlZj0iIyIgY2xhc3M9IiI+PGltZyBzcmM9Imh0dHA6Ly9jcmlwdCIgc3JjPSJodHRwOi8vXG48c2NyaXB0IGxhbmd1YWdlPSIvL0VOIiAiaHR0cDovL3d3dy53ZW5jb2RlVVJJQ29tcG9uZW50KCIgaHJlZj0iamF2YXNjcmlwdDo8ZGl2IGNsYXNzPSJjb250ZW50ZG9jdW1lbnQud3JpdGUoXCc8c2Nwb3NpdGlvbjogYWJzb2x1dGU7c2NyaXB0IHNyYz0iaHR0cDovLyBzdHlsZT0ibWFyZ2luLXRvcDoubWluLmpzIj48L3NjcmlwdD5cbjwvZGl2PlxuPGRpdiBjbGFzcz0idzMub3JnLzE5OTkveGh0bWwiIFxuXHJcbjwvYm9keT5cclxuPC9odG1sPmRpc3RpbmN0aW9uIGJldHdlZW4vIiB0YXJnZXQ9Il9ibGFuayI+PGxpbmsgaHJlZj0iaHR0cDovL2VuY29kaW5nPSJ1dGYtOCI/Plxudy5hZGRFdmVudExpc3RlbmVyP2FjdGlvbj0iaHR0cDovL3d3dy5pY29uIiBocmVmPSJodHRwOi8vIHN0eWxlPSJiYWNrZ3JvdW5kOnR5cGU9InRleHQvY3NzIiAvPlxubWV0YSBwcm9wZXJ0eT0ib2c6dDxpbnB1dCB0eXBlPSJ0ZXh0IiAgc3R5bGU9InRleHQtYWxpZ246dGhlIGRldmVsb3BtZW50IG9mIHR5bGVzaGVldCIgdHlwZT0idGVodG1sOyBjaGFyc2V0PXV0Zi04aXMgY29uc2lkZXJlZCB0byBiZXRhYmxlIHdpZHRoPSIxMDAlIiBJbiBhZGRpdGlvbiB0byB0aGUgY29udHJpYnV0ZWQgdG8gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW5kZXZlbG9wbWVudCBvZiB0aGUgSXQgaXMgaW1wb3J0YW50IHRvIDwvc2NyaXB0PlxuXG48c2NyaXB0ICBzdHlsZT0iZm9udC1zaXplOjE+PC9zcGFuPjxzcGFuIGlkPWdiTGlicmFyeSBvZiBDb25ncmVzczxpbWcgc3JjPSJodHRwOi8vaW1FbmdsaXNoIHRyYW5zbGF0aW9uQWNhZGVteSBvZiBTY2llbmNlc2RpdiBzdHlsZT0iZGlzcGxheTpjb25zdHJ1Y3Rpb24gb2YgdGhlLmdldEVsZW1lbnRCeUlkKGlkKWluIGNvbmp1bmN0aW9uIHdpdGhFbGVtZW50KFwnc2NyaXB0XCcpOyA8bWV0YSBwcm9wZXJ0eT0ib2c6UFx4MTFRXG5QO1AzUDBRXDBRXHgwMVA6UDhcbiB0eXBlPSJ0ZXh0IiBuYW1lPSI+UHJpdmFjeSBQb2xpY3k8L2E+YWRtaW5pc3RlcmVkIGJ5IHRoZWVuYWJsZVNpbmdsZVJlcXVlc3RzdHlsZT0mcXVvdDttYXJnaW46PC9kaXY+PC9kaXY+PC9kaXY+PD48aW1nIHNyYz0iaHR0cDovL2kgc3R5bGU9JnF1b3Q7ZmxvYXQ6cmVmZXJyZWQgdG8gYXMgdGhlIHRvdGFsIHBvcHVsYXRpb24gb2ZpbiBXYXNoaW5ndG9uLCBELkMuIHN0eWxlPSJiYWNrZ3JvdW5kLWFtb25nIG90aGVyIHRoaW5ncyxvcmdhbml6YXRpb24gb2YgdGhlcGFydGljaXBhdGVkIGluIHRoZXRoZSBpbnRyb2R1Y3Rpb24gb2ZpZGVudGlmaWVkIHdpdGggdGhlZmljdGlvbmFsIGNoYXJhY3RlciBPeGZvcmQgVW5pdmVyc2l0eSBtaXN1bmRlcnN0YW5kaW5nIG9mVGhlcmUgYXJlLCBob3dldmVyLHN0eWxlc2hlZXQiIGhyZWY9Ii9Db2x1bWJpYSBVbml2ZXJzaXR5ZXhwYW5kZWQgdG8gaW5jbHVkZXVzdWFsbHkgcmVmZXJyZWQgdG9pbmRpY2F0aW5nIHRoYXQgdGhlaGF2ZSBzdWdnZXN0ZWQgdGhhdGFmZmlsaWF0ZWQgd2l0aCB0aGVjb3JyZWxhdGlvbiBiZXR3ZWVubnVtYmVyIG9mIGRpZmZlcmVudD48L3RkPjwvdHI+PC90YWJsZT5SZXB1YmxpYyBvZiBJcmVsYW5kXG48L3NjcmlwdD5cbjxzY3JpcHQgdW5kZXIgdGhlIGluZmx1ZW5jZWNvbnRyaWJ1dGlvbiB0byB0aGVPZmZpY2lhbCB3ZWJzaXRlIG9maGVhZHF1YXJ0ZXJzIG9mIHRoZWNlbnRlcmVkIGFyb3VuZCB0aGVpbXBsaWNhdGlvbnMgb2YgdGhlaGF2ZSBiZWVuIGRldmVsb3BlZEZlZGVyYWwgUmVwdWJsaWMgb2ZiZWNhbWUgaW5jcmVhc2luZ2x5Y29udGludWF0aW9uIG9mIHRoZU5vdGUsIGhvd2V2ZXIsIHRoYXRzaW1pbGFyIHRvIHRoYXQgb2YgY2FwYWJpbGl0aWVzIG9mIHRoZWFjY29yZGFuY2Ugd2l0aCB0aGVwYXJ0aWNpcGFudHMgaW4gdGhlZnVydGhlciBkZXZlbG9wbWVudHVuZGVyIHRoZSBkaXJlY3Rpb25pcyBvZnRlbiBjb25zaWRlcmVkaGlzIHlvdW5nZXIgYnJvdGhlcjwvdGQ+PC90cj48L3RhYmxlPjxhIGh0dHAtZXF1aXY9IlgtVUEtcGh5c2ljYWwgcHJvcGVydGllc29mIEJyaXRpc2ggQ29sdW1iaWFoYXMgYmVlbiBjcml0aWNpemVkKHdpdGggdGhlIGV4Y2VwdGlvbnF1ZXN0aW9ucyBhYm91dCB0aGVwYXNzaW5nIHRocm91Z2ggdGhlMCIgY2VsbHBhZGRpbmc9IjAiIHRob3VzYW5kcyBvZiBwZW9wbGVyZWRpcmVjdHMgaGVyZS4gRm9yaGF2ZSBjaGlsZHJlbiB1bmRlciUzRSUzQy9zY3JpcHQlM0UiKSk7PGEgaHJlZj0iaHR0cDovL3d3dy48bGk+PGEgaHJlZj0iaHR0cDovL3NpdGVfbmFtZSIgY29udGVudD0idGV4dC1kZWNvcmF0aW9uOm5vbmVzdHlsZT0iZGlzcGxheTogbm9uZTxtZXRhIGh0dHAtZXF1aXY9IlgtbmV3IERhdGUoKS5nZXRUaW1lKCkgdHlwZT0iaW1hZ2UveC1pY29uIjwvc3Bhbj48c3BhbiBjbGFzcz0ibGFuZ3VhZ2U9ImphdmFzY3JpcHR3aW5kb3cubG9jYXRpb24uaHJlZjxhIGhyZWY9ImphdmFzY3JpcHQ6LS0+XHJcbjxzY3JpcHQgdHlwZT0idDxhIGhyZWY9XCdodHRwOi8vd3d3LmhvcnRjdXQgaWNvbiIgaHJlZj0iPC9kaXY+XHJcbjxkaXYgY2xhc3M9IjxzY3JpcHQgc3JjPSJodHRwOi8vIiByZWw9InN0eWxlc2hlZXQiIHQ8L2Rpdj5cbjxzY3JpcHQgdHlwZT0vYT4gPGEgaHJlZj0iaHR0cDovLyBhbGxvd1RyYW5zcGFyZW5jeT0iWC1VQS1Db21wYXRpYmxlIiBjb25yZWxhdGlvbnNoaXAgYmV0d2VlblxuPC9zY3JpcHQ+XHJcbjxzY3JpcHQgPC9hPjwvbGk+PC91bD48L2Rpdj5hc3NvY2lhdGVkIHdpdGggdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlPC9hPjxhIGhyZWY9Imh0dHA6Ly88L2E+PC9saT48bGkgY2xhc3M9ImZvcm0gYWN0aW9uPSJodHRwOi8vPGRpdiBzdHlsZT0iZGlzcGxheTp0eXBlPSJ0ZXh0IiBuYW1lPSJxIjx0YWJsZSB3aWR0aD0iMTAwJSIgYmFja2dyb3VuZC1wb3NpdGlvbjoiIGJvcmRlcj0iMCIgd2lkdGg9InJlbD0ic2hvcnRjdXQgaWNvbiIgaDY+PHVsPjxsaT48YSBocmVmPSIgIDxtZXRhIGh0dHAtZXF1aXY9ImNzcyIgbWVkaWE9InNjcmVlbiIgcmVzcG9uc2libGUgZm9yIHRoZSAiIHR5cGU9ImFwcGxpY2F0aW9uLyIgc3R5bGU9ImJhY2tncm91bmQtaHRtbDsgY2hhcnNldD11dGYtOCIgYWxsb3d0cmFuc3BhcmVuY3k9InN0eWxlc2hlZXQiIHR5cGU9InRlXHJcbjxtZXRhIGh0dHAtZXF1aXY9Ij48L3NwYW4+PHNwYW4gY2xhc3M9IjAiIGNlbGxzcGFjaW5nPSIwIj47XG48L3NjcmlwdD5cbjxzY3JpcHQgc29tZXRpbWVzIGNhbGxlZCB0aGVkb2VzIG5vdCBuZWNlc3NhcmlseUZvciBtb3JlIGluZm9ybWF0aW9uYXQgdGhlIGJlZ2lubmluZyBvZiA8IURPQ1RZUEUgaHRtbD48aHRtbHBhcnRpY3VsYXJseSBpbiB0aGUgdHlwZT0iaGlkZGVuIiBuYW1lPSJqYXZhc2NyaXB0OnZvaWQoMCk7ImVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGF1dG9jb21wbGV0ZT0ib2ZmIiBnZW5lcmFsbHkgY29uc2lkZXJlZD48aW5wdXQgdHlwZT0idGV4dCIgIj48L3NjcmlwdD5cclxuPHNjcmlwdHRocm91Z2hvdXQgdGhlIHdvcmxkY29tbW9uIG1pc2NvbmNlcHRpb25hc3NvY2lhdGlvbiB3aXRoIHRoZTwvZGl2PlxuPC9kaXY+XG48ZGl2IGNkdXJpbmcgaGlzIGxpZmV0aW1lLGNvcnJlc3BvbmRpbmcgdG8gdGhldHlwZT0iaW1hZ2UveC1pY29uIiBhbiBpbmNyZWFzaW5nIG51bWJlcmRpcGxvbWF0aWMgcmVsYXRpb25zYXJlIG9mdGVuIGNvbnNpZGVyZWRtZXRhIGNoYXJzZXQ9InV0Zi04IiA8aW5wdXQgdHlwZT0idGV4dCIgZXhhbXBsZXMgaW5jbHVkZSB0aGUiPjxpbWcgc3JjPSJodHRwOi8vaXBhcnRpY2lwYXRpb24gaW4gdGhldGhlIGVzdGFibGlzaG1lbnQgb2ZcbjwvZGl2PlxuPGRpdiBjbGFzcz0iJmFtcDtuYnNwOyZhbXA7bmJzcDt0byBkZXRlcm1pbmUgd2hldGhlcnF1aXRlIGRpZmZlcmVudCBmcm9tbWFya2VkIHRoZSBiZWdpbm5pbmdkaXN0YW5jZSBiZXR3ZWVuIHRoZWNvbnRyaWJ1dGlvbnMgdG8gdGhlY29uZmxpY3QgYmV0d2VlbiB0aGV3aWRlbHkgY29uc2lkZXJlZCB0b3dhcyBvbmUgb2YgdGhlIGZpcnN0d2l0aCB2YXJ5aW5nIGRlZ3JlZXNoYXZlIHNwZWN1bGF0ZWQgdGhhdChkb2N1bWVudC5nZXRFbGVtZW50cGFydGljaXBhdGluZyBpbiB0aGVvcmlnaW5hbGx5IGRldmVsb3BlZGV0YSBjaGFyc2V0PSJ1dGYtOCI+IHR5cGU9InRleHQvY3NzIiAvPlxuaW50ZXJjaGFuZ2VhYmx5IHdpdGhtb3JlIGNsb3NlbHkgcmVsYXRlZHNvY2lhbCBhbmQgcG9saXRpY2FsdGhhdCB3b3VsZCBvdGhlcndpc2VwZXJwZW5kaWN1bGFyIHRvIHRoZXN0eWxlIHR5cGU9InRleHQvY3NzdHlwZT0ic3VibWl0IiBuYW1lPSJmYW1pbGllcyByZXNpZGluZyBpbmRldmVsb3BpbmcgY291bnRyaWVzY29tcHV0ZXIgcHJvZ3JhbW1pbmdlY29ub21pYyBkZXZlbG9wbWVudGRldGVybWluYXRpb24gb2YgdGhlZm9yIG1vcmUgaW5mb3JtYXRpb25vbiBzZXZlcmFsIG9jY2FzaW9uc3BvcnR1Z3VDKnMgKEV1cm9wZXUpUCNQOlFcMFAwUVx4MTdQPVFceDAxUVxmUDpQMFFceDAzUDpRXDBQMFFceDE3UD1RXHgwMVFcZlA6UDBQIFA+UVx4MDFRXHgwMVA4UDlRXHgwMVA6UD5QOVA8UDBRXHgwMlA1UVwwUDhQMFA7UD5QMlA4UD1RXHgwNFA+UVwwUDxQMFFceDA2UDhQOFFceDAzUD9RXDBQMFAyUDtQNVA9UDhRXHgwZlA9UDVQPlAxUVx4MDVQPlA0UDhQPFA+UDhQPVFceDA0UD5RXDBQPFAwUVx4MDZQOFFceDBmUFx4MThQPVFceDA0UD5RXDBQPFAwUVx4MDZQOFFceDBmUCBQNVFceDAxUD9RXHgwM1AxUDtQOFA6UDhQOlA+UDtQOFFceDA3UDVRXHgwMVFceDAyUDJQPlA4UD1RXHgwNFA+UVwwUDxQMFFceDA2UDhRXHgwZVFceDAyUDVRXDBRXDBQOFFceDAyUD5RXDBQOFA4UDRQPlFceDAxUVx4MDJQMFFceDAyUD5RXHgwN1A9UD5YXCdZXHgwNFlceDA1WCpZXGJYXCdYLFgvWVxiWVx4MDZYXCdZXHgwNFhcJ1g0WCpYMVhcJ1lceDAzWFwnWCpYXCdZXHgwNFhcJ1lceDAyWCpYMVhcJ1gtWFwnWCpodG1sOyBjaGFyc2V0PVVURi04IiBzZXRUaW1lb3V0KGZ1bmN0aW9uKClkaXNwbGF5OmlubGluZS1ibG9jazs8aW5wdXQgdHlwZT0ic3VibWl0IiB0eXBlID0gXCd0ZXh0L2phdmFzY3JpPGltZyBzcmM9Imh0dHA6Ly93d3cuIiAiaHR0cDovL3d3dy53My5vcmcvc2hvcnRjdXQgaWNvbiIgaHJlZj0iIiBhdXRvY29tcGxldGU9Im9mZiIgPC9hPjwvZGl2PjxkaXYgY2xhc3M9PC9hPjwvbGk+XG48bGkgY2xhc3M9ImNzcyIgdHlwZT0idGV4dC9jc3MiIDxmb3JtIGFjdGlvbj0iaHR0cDovL3h0L2NzcyIgaHJlZj0iaHR0cDovL2xpbmsgcmVsPSJhbHRlcm5hdGUiIFxyXG48c2NyaXB0IHR5cGU9InRleHQvIG9uY2xpY2s9ImphdmFzY3JpcHQ6KG5ldyBEYXRlKS5nZXRUaW1lKCl9aGVpZ2h0PSIxIiB3aWR0aD0iMSIgUGVvcGxlXCdzIFJlcHVibGljIG9mICA8YSBocmVmPSJodHRwOi8vd3d3LnRleHQtZGVjb3JhdGlvbjp1bmRlcnRoZSBiZWdpbm5pbmcgb2YgdGhlIDwvZGl2PlxuPC9kaXY+XG48L2Rpdj5cbmVzdGFibGlzaG1lbnQgb2YgdGhlIDwvZGl2PjwvZGl2PjwvZGl2PjwvZCN2aWV3cG9ydHttaW4taGVpZ2h0OlxuPHNjcmlwdCBzcmM9Imh0dHA6Ly9vcHRpb24+PG9wdGlvbiB2YWx1ZT1vZnRlbiByZWZlcnJlZCB0byBhcyAvb3B0aW9uPlxuPG9wdGlvbiB2YWx1PCFET0NUWVBFIGh0bWw+XG48IS0tW0ludGVybmF0aW9uYWwgQWlycG9ydD5cbjxhIGhyZWY9Imh0dHA6Ly93d3c8L2E+PGEgaHJlZj0iaHR0cDovL3dgOCBgODJgOClgODJgOVx4MDRgOFx4MTdgOCJhXHgwMyVhXHgwM1x4MTBhXHgwMyBhXHgwM1x4MTdhXHgwMyNhXHgwM1x4MWFhXHgwM1x4MThmLSNpK1x4MTRkOC1mXHgxNlx4MDcgKGc5XHgwMWkrXHgxNClgJChgJD9gJDBgJVxyYCQmYCVceDA3YCQ2YCQhYCQ+YCRcdGAkKGAkMmAlXHZgJCFgJFx4MTVgJVxyYCQ3YCVceDA3YCQkYCVccmAkMGAkXHgxY2AkPmAkKGAkXHgxNWAkPmAkMGAlXDBgJDhgJFx4MDJgJCxgJFx4MDJgJFwnYCQ/YCQkYCQ4YCVccmAkJWAkPmAkKmAkKGAkPmAkOGAlXHJgJDVgJVwwYCRceDE1YCQ+YCQwYCQ4YCRceDAyYCQ4YCVccmAkXHgxNWAkMGAkI2AkOGAkPmAkLmAkXHgxN2AlXHJgJDBgJVwwYCRceDFhYCQ/YCRceDFmYCVccmAkIGAlXHZgJFx4MDJgJDVgJD9gJFx4MWNgJVxyYCRceDFlYCQ+YCQoYCRceDA1YCQuYCVceDA3YCQwYCQ/YCRceDE1YCQ+YCQ1YCQ/YCQtYCQ/YCQoYCVccmAkKGAkXHgxN2AkPmAkIWAkP2AkL2AkPmAkXHgwMWAkXHgxNWAlXHJgJC9gJVx2YCRceDAyYCRceDE1YCQ/YCQ4YCVceDAxYCQwYCRceDE1YCVccmAkN2AkPmAkKmAkOWAlXHgwMWAkXHgwMWAkXHgxYWAkJGAlXDBgJCpgJVxyYCQwYCQsYCRceDAyYCRcJ2AkKGAkXHgxZmAkP2AkKmAlXHJgJCpgJCNgJVwwYCRceDE1YCVccmAkMGAkP2AkXHgxNWAlXHgwN2AkXHgxZmAkKmAlXHJgJDBgJD5gJDBgJFx4MDJgJC1gJCpgJVxyYCQwYCQ+YCQqYCVccmAkJGAkLmAkPmAkMmAkP2AkXHgxNWAlXHZgJFx4MDJgJDBgJCtgJDxgJVxyYCQkYCQ+YCQwYCQoYCQ/YCQwYCVccmAkLmAkPmAkI2AkMmAkP2AkLmAkP2AkXHgxZmAlXHgwN2AkIWRlc2NyaXB0aW9uIiBjb250ZW50PSJkb2N1bWVudC5sb2NhdGlvbi5wcm90LmdldEVsZW1lbnRzQnlUYWdOYW1lKDwhRE9DVFlQRSBodG1sPlxuPGh0bWwgPG1ldGEgY2hhcnNldD0idXRmLTgiPjp1cmwiIGNvbnRlbnQ9Imh0dHA6Ly8uY3NzIiByZWw9InN0eWxlc2hlZXQic3R5bGUgdHlwZT0idGV4dC9jc3MiPnR5cGU9InRleHQvY3NzIiBocmVmPSJ3My5vcmcvMTk5OS94aHRtbCIgeG1sdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBtZXRob2Q9ImdldCIgYWN0aW9uPSJsaW5rIHJlbD0ic3R5bGVzaGVldCIgID0gZG9jdW1lbnQuZ2V0RWxlbWVudHR5cGU9ImltYWdlL3gtaWNvbiIgLz5jZWxscGFkZGluZz0iMCIgY2VsbHNwLmNzcyIgdHlwZT0idGV4dC9jc3MiIDwvYT48L2xpPjxsaT48YSBocmVmPSIiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIj48YSBocmVmPSJodHRwOi8vd3d3LnN0eWxlPSJkaXNwbGF5Om5vbmU7Ij5hbHRlcm5hdGUiIHR5cGU9ImFwcGxpLS8vVzNDLy9EVEQgWEhUTUwgMS4wIGVsbHNwYWNpbmc9IjAiIGNlbGxwYWQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL2E+Jm5ic3A7PHNwYW4gcm9sZT0ic1xuPGlucHV0IHR5cGU9ImhpZGRlbiIgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiICBkb2N1bWVudC5nZXRFbGVtZW50c0JnPSIwIiBjZWxsc3BhY2luZz0iMCIgeXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJ3dpdGggdGhlIGV4Y2VwdGlvbiBvZiB5cGU9InRleHQvY3NzIiByZWw9InN0IGhlaWdodD0iMSIgd2lkdGg9IjEiID1cJytlbmNvZGVVUklDb21wb25lbnQoPGxpbmsgcmVsPSJhbHRlcm5hdGUiIFxuYm9keSwgdHIsIGlucHV0LCB0ZXh0bWV0YSBuYW1lPSJyb2JvdHMiIGNvbm1ldGhvZD0icG9zdCIgYWN0aW9uPSI+XG48YSBocmVmPSJodHRwOi8vd3d3LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiA8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPmFyaWEtaGlkZGVuPSJ0cnVlIj5CNzxyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzbD0wO30pKCk7XG4oZnVuY3Rpb24oKXtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2E+PC9saT48bGk+PGEgaHJlZj0iaFx0XHQ8bGk+PGEgaHJlZj0iaHR0cDovL2F0b3IiIGFyaWEtaGlkZGVuPSJ0cnU+IDxhIGhyZWY9Imh0dHA6Ly93d3cubGFuZ3VhZ2U9ImphdmFzY3JpcHQiIC9vcHRpb24+XG48b3B0aW9uIHZhbHVlL2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJhdG9yIiBhcmlhLWhpZGRlbj0idHJlPShuZXcgRGF0ZSkuZ2V0VGltZSgpcG9ydHVndUMqcyAoZG8gQnJhc2lsKVA+UVwwUDNQMFA9UDhQN1AwUVx4MDZQOFA4UDJQPlA3UDxQPlA2UD1QPlFceDAxUVx4MDJRXGZQPlAxUVwwUDBQN1A+UDJQMFA9UDhRXHgwZlFcMFA1UDNQOFFceDAxUVx4MDJRXDBQMFFceDA2UDhQOFAyUD5QN1A8UD5QNlA9UD5RXHgwMVFceDAyUDhQPlAxUVx4MGZQN1AwUVx4MDJQNVA7UVxmUD1QMDwhRE9DVFlQRSBodG1sIFBVQkxJQyAibnQtVHlwZSIgY29udGVudD0idGV4dC88bWV0YSBodHRwLWVxdWl2PSJDb250ZXJhbnNpdGlvbmFsLy9FTiIgImh0dHA6PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3ctLy9XM0MvL0RURCBYSFRNTCAxLjAgVERURC94aHRtbDEtdHJhbnNpdGlvbmFsLy93d3cudzMub3JnL1RSL3hodG1sMS9wZSA9IFwndGV4dC9qYXZhc2NyaXB0XCc7PG1ldGEgbmFtZT0iZGVzY3JpcHRpb25wYXJlbnROb2RlLmluc2VydEJlZm9yZTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hanMiIHR5cGU9InRleHQvamF2YXNjcmkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aXNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzaW1hZ2UiIGNvbnRlbnQ9Imh0dHA6Ly9VQS1Db21wYXRpYmxlIiBjb250ZW50PXRtbDsgY2hhcnNldD11dGYtOCIgLz5cbmxpbmsgcmVsPSJzaG9ydGN1dCBpY29uPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiA8L3NjcmlwdD5cbjxzY3JpcHQgdHlwZT09IGRvY3VtZW50LmNyZWF0ZUVsZW1lbjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSBkb2N1bWVudC5nZXRFbGVtZW50c0JpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPWEudHlwZSA9IFwndGV4dC9qYXZhc2NyaW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1laHRtbDsgY2hhcnNldD11dGYtOCIgLz5kdGQiPlxuPGh0bWwgeG1sbnM9Imh0dHAtLy9XM0MvL0RURCBIVE1MIDQuMDEgVGVudHNCeVRhZ05hbWUoXCdzY3JpcHRcJylpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwnIHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJ2lucHV0IHR5cGU9InRleHQiIG5hbWU9ImQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoc25pY2FsIiBocmVmPSJodHRwOi8vd3d3LkMvL0RURCBIVE1MIDQuMDEgVHJhbnNpdDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+XG5cbjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+aW9uYWwuZHRkIj5cbjxodG1sIHhtbG5zPWh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZWRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwImh0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+XG4gc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjw8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy4gdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPlA0UDVRXHgwZlFceDAyUDVQO1FcZlA9UD5RXHgwMVFceDAyUDhRXHgwMVA+UD5RXHgwMlAyUDVRXHgwMlFceDAxUVx4MDJQMlA4UDhQP1FcMFA+UDhQN1AyUD5QNFFceDAxUVx4MDJQMlAwUDFQNVA3UD5QP1AwUVx4MDFQPVA+UVx4MDFRXHgwMlA4YCQqYCVceDAxYCQ4YCVccmAkJGAkP2AkXHgxNWAkPmAkXHgxNWAkPmAkXHgwMmAkXHgxN2AlXHJgJDBgJVx4MDdgJDhgJFx0YCQoYCVccmAkOWAlXHZgJFx4MDJgJChgJVx4MDdgJDVgJD9gJFwnYCQ+YCQoYCQ4YCQtYCQ+YCQrYCQ/YCRceDE1YCVccmAkOGAkP2AkXHgwMmAkXHgxN2AkOGAlXHgwMWAkMGAkXHgxNWAlXHJgJDdgJD9gJCRgJFx4MTVgJVx0YCQqYCVcMGAkMGAkPmAkXHgwN2AkXHgxZmAkNWAkP2AkXHgxY2AlXHJgJFx4MWVgJD5gJCpgJChgJFx4MTVgJD5gJDBgJVxyYCQwYCQ1YCQ+YCRcYmAkOGAkXHgxNWAlXHJgJDBgJD9gJC9gJCRgJD4nLCJcdTA2ZjclXHUwMThjJ1QlXHg4NSdXJVx4ZDclTyVnJVx4YTYmXHUwMTkzJVx1MDFlNSY+JiomJyZeJlx4ODhcdTAxNzhcdTBjM2UmXHUwMWFkJlx1MDE5MiYpJl4mJSYnJlx4ODImUCYxJlx4YjEmMyZdJm0mdSZFJnQmQyZceGNmJlYmViYvJj4mNiZcdTBmNzZcdTE3N2NvJnAmQCZFJk0mUCZ4JkAmRiZlJlx4Y2MmNyY6JigmRCYwJkMmKSYuJkYmLSYxJigmTCZGJjFcdTAyNWUqXHUwM2VhXHUyMWYzJlx1MTM3MiZLJjsmKSZFJkgmUCYwJj8mOSZWJlx4ODEmLSZ2JmEmLCZFJikmPyY9JicmJyZCJlx1MGQyZSZcdTA1MDMmXHUwMzE2KiYqOCYlJiUmJiYlLCkmXHg5YSY+Jlx4ODYmNyZdJkYmMiY+JkomNiZuJjImJSY/Jlx4OGUmMiY2JkomZyYtJjAmLCYqJkomKiZPJikmNiYoJjwmQiZOJi4mUCZAJjImLiZXJk0mJVx1MDUzY1x4ODQoLCg8JiwmXHUwM2RhJlx1MThjNyYtJiwoJSYoJiUmKFx1MDEzYjAmWCZEJlx4ODEmaiYnJkomKCYuJkImMyZaJlImaCYzJkUmRSY8XHhjNi1cdTAzNjBcdTFlZjMmJTg/JkAmLCZaJkAmMCZKJiwmXiZ4Jl8mNiZDJjYmQ1x1MDcyY1x1MmEyNSZmJi0mLSYtJi0mLCZKJjImOCZ6JjgmQyZZJjgmLSZkJlx1MWU3OFx4Y2MtJjcmMSZGJjcmdCZXJjcmSSYuJi4mXiY9XHUwZjljXHUxOWQzJjgoPiYvJi8mXHUwNzdiJyknXHUxMDY1JyknJUAvJjAmJVx1MDQzZVx1MDljMComKkAmQ1x1MDUzZFx1MDVkNFx1MDI3NFx1MDVlYjRcdTBkZDdcdTA3MWFcdTA0ZDE2XHUwZDg0Ji9cdTAxNzhcdTAzMDNaJiolXHUwMjQ2XHUwM2ZmJlx1MDEzNCYxXHhhOFx1MDRiNFx1MDE3NCIpLAorYWUoWGUpLHNlPVhlLHJlfXZhciBCcm90bGlEZWNvZGU9QnJvdGxpRGVjb2RlQ2xvc3VyZSgpO3dpbmRvdy5yYT1Ccm90bGlEZWNvZGU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL2pzL2RlY29kZV90ZXN0LmpzIGIvdGhpcmRfcGFydHkvYnJvdGxpL2pzL2RlY29kZV90ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMThmNDQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvanMvZGVjb2RlX3Rlc3QuanMKQEAgLTAsMCArMSw3OSBAQAorZ29vZy5yZXF1aXJlKCdnb29nLnRlc3RpbmcuYXNzZXJ0cycpOworZ29vZy5yZXF1aXJlKCdnb29nLnRlc3RpbmcuanN1bml0Jyk7CisKKy8qKgorICogQHBhcmFtIHshSW50OEFycmF5fSBieXRlcworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBieXRlc1RvU3RyaW5nKGJ5dGVzKSB7CisgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIG5ldyBVaW50MTZBcnJheShieXRlcykpOworfQorCitmdW5jdGlvbiB0ZXN0TWV0YWRhdGEoKSB7CisgIGFzc2VydEVxdWFscygiIiwgYnl0ZXNUb1N0cmluZyhCcm90bGlEZWNvZGUoSW50OEFycmF5LmZyb20oWzEsIDExLCAwLCA0MiwgM10pKSkpOworfQorCitmdW5jdGlvbiB0ZXN0RW1wdHkoKSB7CisgIGFzc2VydEVxdWFscygiIiwgYnl0ZXNUb1N0cmluZyhCcm90bGlEZWNvZGUoSW50OEFycmF5LmZyb20oWzZdKSkpKTsKKyAgYXNzZXJ0RXF1YWxzKCIiLCBieXRlc1RvU3RyaW5nKEJyb3RsaURlY29kZShJbnQ4QXJyYXkuZnJvbShbMHg4MSwgMV0pKSkpOworfQorCitmdW5jdGlvbiB0ZXN0QmFzZURpY3RXb3JkKCkgeworICB2YXIgaW5wdXQgPSBJbnQ4QXJyYXkuZnJvbShbCisgICAgMHgxYiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhlMywgMHhiNCwgMHgwZCwgMHgwMCwgMHgwMCwKKyAgICAweDA3LCAweDViLCAweDI2LCAweDMxLCAweDQwLCAweDAyLCAweDAwLCAweGUwLCAweDRlLCAweDFiLCAweDQxLCAweDAyCisgIF0pOworICAvKiogQHR5cGUgeyFJbnQ4QXJyYXl9ICovCisgIHZhciBvdXRwdXQgPSBCcm90bGlEZWNvZGUoaW5wdXQpOworICBhc3NlcnRFcXVhbHMoInRpbWUiLCBieXRlc1RvU3RyaW5nKG91dHB1dCkpOworfQorCitmdW5jdGlvbiB0ZXN0QmxvY2tDb3VudE1lc3NhZ2UoKSB7CisgIHZhciBpbnB1dCA9IEludDhBcnJheS5mcm9tKFsKKyAgICAweDFiLCAweDBiLCAweDAwLCAweDExLCAweDAxLCAweDhjLCAweGMxLCAweGM1LCAweDBkLCAweDA4LCAweDAwLCAweDIyLAorICAgIDB4NjUsIDB4ZTEsIDB4ZmMsIDB4ZmQsIDB4MjIsIDB4MmMsIDB4YzQsIDB4MDAsIDB4MDAsIDB4MzgsIDB4ZDgsIDB4MzIsCisgICAgMHg4OSwgMHgwMSwgMHgxMiwgMHgwMCwgMHgwMCwgMHg3NywgMHhkYSwgMHgwNCwgMHgxMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMAorICBdKTsKKyAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICB2YXIgb3V0cHV0ID0gQnJvdGxpRGVjb2RlKGlucHV0KTsKKyAgYXNzZXJ0RXF1YWxzKCJhYWJiYWFhYWFiYWIiLCBieXRlc1RvU3RyaW5nKG91dHB1dCkpOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcHJlc3NlZFVuY29tcHJlc3NlZFNob3J0Q29tcHJlc3NlZFNtYWxsV2luZG93KCkgeworICB2YXIgaW5wdXQgPSBJbnQ4QXJyYXkuZnJvbShbCisgICAgMHgyMSwgMHhmNCwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHhhNywgMHg2ZCwgMHgwMCwgMHgwMCwKKyAgICAweDM4LCAweGQ4LCAweDMyLCAweDg5LCAweDAxLCAweDEyLCAweDAwLCAweDAwLCAweDc3LCAweGRhLCAweDM0LCAweDdiLAorICAgIDB4ZGIsIDB4NTAsIDB4ODAsIDB4MDIsIDB4ODAsIDB4NjIsIDB4NjIsIDB4NjIsIDB4NjIsIDB4NjIsIDB4NjIsIDB4MzEsCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHg0ZSwgMHhkYiwgMHgwMCwgMHgwMCwgMHg3MCwgMHhiMCwKKyAgICAweDY1LCAweDEyLCAweDAzLCAweDI0LCAweDAwLCAweDAwLCAweGVlLCAweGI0LCAweDExLCAweDI0LCAweDAwCisgIF0pOworICAvKiogQHR5cGUgeyFJbnQ4QXJyYXl9ICovCisgIHZhciBvdXRwdXQgPSBCcm90bGlEZWNvZGUoaW5wdXQpOworICBhc3NlcnRFcXVhbHMoCisgICAgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKworICAgICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsKKyAgICAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArCisgICAgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKworICAgICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsKKyAgICAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArCisgICAgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKworICAgICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsKKyAgICAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArCisgICAgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKworICAgICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsKKyAgICAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiArCisgICAgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIgKworICAgICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiICsKKyAgICAiYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiIiwgYnl0ZXNUb1N0cmluZyhvdXRwdXQpKTsKK30KKworZnVuY3Rpb24gdGVzdEludGFjdERpc3RhbmNlUmluZ0J1ZmZlcjAoKSB7CisgIHZhciBpbnB1dCA9IEludDhBcnJheS5mcm9tKFsKKyAgICAweDFiLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGUzLCAweGI0LCAweDBkLCAweDAwLCAweDAwLAorICAgIDB4MDcsIDB4NWIsIDB4MjYsIDB4MzEsIDB4NDAsIDB4MDIsIDB4MDAsIDB4ZTAsIDB4NGUsIDB4MWIsIDB4YTEsIDB4ODAsCisgICAgMHgyMCwgMHgwMAorICBdKTsKKyAgLyoqIEB0eXBlIHshSW50OEFycmF5fSAqLworICB2YXIgb3V0cHV0ID0gQnJvdGxpRGVjb2RlKGlucHV0KTsKKyAgYXNzZXJ0RXF1YWxzKCJoaW1zZWxmc2VsZiIsIGJ5dGVzVG9TdHJpbmcob3V0cHV0KSk7Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvanMvcG9seWZpbGwuanMgYi90aGlyZF9wYXJ0eS9icm90bGkvanMvcG9seWZpbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA3YTg5YQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9qcy9wb2x5ZmlsbC5qcwpAQCAtMCwwICsxLDY1IEBACitpZiAoIUludDMyQXJyYXkuX19wcm90b19fLmZyb20pIHsKKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEludDMyQXJyYXkuX19wcm90b19fLCAnZnJvbScsIHsKKyAgICB2YWx1ZTogZnVuY3Rpb24ob2JqKSB7CisgICAgICBvYmogPSBPYmplY3Qob2JqKTsKKyAgICAgIGlmICghb2JqWydsZW5ndGgnXSkgeworICAgICAgICByZXR1cm4gbmV3IHRoaXMoMCk7CisgICAgICB9CisgICAgICB2YXIgdHlwZWRfYXJyYXkgPSBuZXcgdGhpcyhvYmoubGVuZ3RoKTsKKyAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0eXBlZF9hcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICB0eXBlZF9hcnJheVtpXSA9IG9ialtpXTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0eXBlZF9hcnJheTsKKyAgICB9CisgIH0pOworfQorCitpZiAoIUFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluKSB7CisgIEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluID0gZnVuY3Rpb24odGFyZ2V0LCBzdGFydCwgZW5kKSB7CisgICAgdmFyIE8gPSBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbiA9IE8ubGVuZ3RoID4+PiAwOworICAgIHZhciB0byA9IHRhcmdldCB8IDA7CisgICAgdmFyIGZyb20gPSBzdGFydCB8IDA7CisgICAgdmFyIGNvdW50ID0gTWF0aC5taW4oTWF0aC5taW4oZW5kIHwgMCwgbGVuKSAtIGZyb20sIGxlbiAtIHRvKTsKKyAgICB2YXIgZGlyZWN0aW9uID0gMTsKKyAgICBpZiAoZnJvbSA8IHRvICYmIHRvIDwgKGZyb20gKyBjb3VudCkpIHsKKyAgICAgIGRpcmVjdGlvbiA9IC0xOworICAgICAgZnJvbSArPSBjb3VudCAtIDE7CisgICAgICB0byArPSBjb3VudCAtIDE7CisgICAgfQorICAgIHdoaWxlIChjb3VudCA+IDApIHsKKyAgICAgIE9bdG9dID0gT1tmcm9tXTsKKyAgICAgIGZyb20gKz0gZGlyZWN0aW9uOworICAgICAgdG8gKz0gZGlyZWN0aW9uOworICAgICAgY291bnQtLTsKKyAgICB9CisgICAgcmV0dXJuIE87CisgIH07Cit9CisKK2lmICghQXJyYXkucHJvdG90eXBlLmZpbGwpIHsKKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgJ2ZpbGwnLCB7CisgICAgdmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBzdGFydCwgZW5kKSB7CisgICAgICBlbmQgPSBlbmQgfCAwOworICAgICAgdmFyIE8gPSBPYmplY3QodGhpcyk7CisgICAgICB2YXIgayA9IHN0YXJ0IHwgMDsKKyAgICAgIHdoaWxlIChrIDwgZW5kKSB7CisgICAgICAgIE9ba10gPSB2YWx1ZTsKKyAgICAgICAgaysrOworICAgICAgfQorICAgICAgcmV0dXJuIE87CisgICAgfQorICB9KTsKK30KKworaWYgKCFJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4pIHsKKyAgSW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluID0gQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW47Cit9CisKK2lmICghSW50OEFycmF5LnByb3RvdHlwZS5maWxsKSB7CisgIEludDhBcnJheS5wcm90b3R5cGUuZmlsbCA9IEFycmF5LnByb3RvdHlwZS5maWxsOworfQorCitpZiAoIUludDMyQXJyYXkucHJvdG90eXBlLmZpbGwpIHsKKyAgSW50MzJBcnJheS5wcm90b3R5cGUuZmlsbCA9IEFycmF5LnByb3RvdHlwZS5maWxsOworfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL0JVSUxEIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL0JVSUxECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiN2Q4MWIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvQlVJTEQKQEAgLTAsMCArMSw0NCBAQAorIyBEZXNjcmlwdGlvbjogYnJvdGxpIHJlc2VhcmNoIHRvb2xzLgorCitwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNlbnNlcyhbIm5vdGljZSJdKSAgIyBNSVQKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImRtIiwKKyAgICBzcmNzID0gWyJkZW9ydW1tb2xhZS5jYyJdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJkZW9ydW1tb2xhZS5oIiwKKyAgICAgICAgImVzYXh4L3NhaXMuaHh4IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZHVyY2hzY2hsYWciLAorICAgIHNyY3MgPSBbImR1cmNoc2NobGFnLmNjIl0sCisgICAgaGRycyA9IFsiZHVyY2hzY2hsYWcuaCJdLAorICAgIGRlcHMgPSBbIkBkaXZzdWZzb3J0Ly86bGliZGl2c3Vmc29ydCJdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAic2lldmUiLAorICAgIHNyY3MgPSBbInNpZXZlLmNjIl0sCisgICAgaGRycyA9IFsic2lldmUuaCJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJkaWN0aW9uYXJ5X2dlbmVyYXRvciIsCisgICAgc3JjcyA9IFsiZGljdGlvbmFyeV9nZW5lcmF0b3IuY2MiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmRtIiwKKyAgICAgICAgIjpkdXJjaHNjaGxhZyIsCisgICAgICAgICI6c2lldmUiLAorICAgIF0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImJyb3RsaV9kZWNvZGVyIiwKKyAgICBzcmNzID0gWyJicm90bGlfZGVjb2Rlci5jIl0sCisgICAgbGlua3N0YXRpYyA9IDEsCisgICAgZGVwcyA9IFsiQG9yZ19icm90bGkvLzpicm90bGlkZWMiXSwKKykKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9CVUlMRC5saWJkaXZzdWZzb3J0IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL0JVSUxELmxpYmRpdnN1ZnNvcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U2MGU5YwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9CVUlMRC5saWJkaXZzdWZzb3J0CkBAIC0wLDAgKzEsNTUgQEAKK3BhY2thZ2UoCisgICAgZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJsaWJkaXZzdWZzb3J0IiwKKyAgICBzcmNzID0gWworICAgICAgICAibGliL2RpdnN1ZnNvcnQuYyIsCisgICAgICAgICJsaWIvc3Nzb3J0LmMiLAorICAgICAgICAibGliL3Ryc29ydC5jIiwKKyAgICAgICAgImxpYi91dGlscy5jIiwKKyAgICBdLAorICAgIGhkcnMgPSBbCisgICAgICAgICJpbmNsdWRlL2NvbmZpZy5oIiwKKyAgICAgICAgImluY2x1ZGUvZGl2c3Vmc29ydC5oIiwKKyAgICAgICAgImluY2x1ZGUvZGl2c3Vmc29ydF9wcml2YXRlLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBbCisgICAgICAgICItREhBVkVfQ09ORklHX0g9MSIsCisgICAgXSwKKyAgICBpbmNsdWRlcyA9IFsiaW5jbHVkZSJdLAorKQorCitjb21tb21fYXdrX3JlcGxhY2VzID0gKAorICAgICJnc3ViKC8jY21ha2VkZWZpbmUvLCBcIiNkZWZpbmVcIik7ICIgKworICAgICJnc3ViKC9ARElWU1VGU09SVF9FWFBPUlRALywgXCJcIik7ICIgKworICAgICJnc3ViKC9ARElWU1VGU09SVF9JTVBPUlRALywgXCJcIik7ICIgKworICAgICJnc3ViKC9ASU5MSU5FQC8sIFwiaW5saW5lXCIpOyAiICsKKyAgICAiZ3N1YigvQElOQ0ZJTEVALywgXCIjaW5jbHVkZSA8aW50dHlwZXMuaD5cIik7ICIgKworICAgICJnc3ViKC9AU0FVQ0hBUl9UWVBFQC8sIFwidWludDhfdFwiKTsgIiArCisgICAgImdzdWIoL0BTQUlOVDMyX1RZUEVALywgXCJpbnQzMl90XCIpOyAiICsKKyAgICAiZ3N1YigvQFNBSU5UX1BSSWRALywgXCJQUklkMzJcIik7ICIKKykKKworZ2VucnVsZSgKKyAgICBuYW1lID0gImNvbmZpZ19oIiwKKyAgICBzcmNzID0gWyJpbmNsdWRlL2NvbmZpZy5oLmNtYWtlIl0sCisgICAgb3V0cyA9IFsiaW5jbHVkZS9jb25maWcuaCJdLAorICAgIGNtZCA9ICgiYXdrICd7ICIgKworICAgICAgICAgICAiZ3N1YigvQEhBVkVfSU9fSCAxQC8sIFwiSEFWRV9JT19IIDBcIik7ICIgKworICAgICAgICAgICBjb21tb21fYXdrX3JlcGxhY2VzICsKKyAgICAgICAgICAgInByaW50OyB9JyAkKDwpID4gJChAKSIpLAorKQorCitnZW5ydWxlKAorICAgIG5hbWUgPSAiZGl2c3Vmc29ydF9oIiwKKyAgICBzcmNzID0gWyJpbmNsdWRlL2RpdnN1ZnNvcnQuaC5jbWFrZSJdLAorICAgIG91dHMgPSBbImluY2x1ZGUvZGl2c3Vmc29ydC5oIl0sCisgICAgY21kID0gKCJhd2sgJ3sgIiArCisgICAgICAgICAgICJnc3ViKC9AVzY0QklUQC8sIFwiXCIpOyAiICsKKyAgICAgICAgICAgImdzdWIoL0BTQUlOREVYX1RZUEVALywgXCJpbnQzMl90XCIpOyAiICsKKyAgICAgICAgICAgImdzdWIoL0BTQUlOREVYX1BSSWRALywgXCJQUklkMzJcIik7ICIgKworICAgICAgICAgICBjb21tb21fYXdrX3JlcGxhY2VzICsKKyAgICAgICAgICAgInByaW50OyB9JyAkKDwpID4gJChAKSIpLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL01ha2VmaWxlIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MWIzMTYKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvTWFrZWZpbGUKQEAgLTAsMCArMSwxNyBAQAorQ0MgPSBnKysKK0NGTEFHUyArPSAtTzIKK0NQUEZMQUdTICs9IC1zdGQ9YysrMTEKK1NPVVJDRVMgPSAkKHdpbGRjYXJkICouY2MpCitFWEVDVVRBQkxFUyA9ICQoU09VUkNFUzouY2M9KQorQklORElSID0gYmluCisKK2FsbDogJChFWEVDVVRBQkxFUykKKworJChCSU5ESVIpOgorCW1rZGlyIC1wICRACisKKyQoRVhFQ1VUQUJMRVMpOiAkKEJJTkRJUikKKwkkKENDKSAkKENGTEFHUykgJChDUFBGTEFHUykgJChhZGRzdWZmaXggLmNjLCAkQCkgLW8gJChCSU5ESVIpLyRAIC1sZ2ZsYWdzX25vdGhyZWFkcworCitjbGVhbjoKKwlybSAtcmYgJChCSU5ESVIpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvUkVBRE1FLm1kIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzg3ZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL1JFQURNRS5tZApAQCAtMCwwICsxLDY3IEBACisjIyBJbnRyb2R1Y3Rpb24KKworSW4gdGhpcyBkaXJlY3Rvcnkgd2UgcHVibGlzaCBzaW1wbGUgdG9vbHMgdG8gYW5hbHl6ZSBiYWNrd2FyZCByZWZlcmVuY2UgZGlzdGFuY2UgZGlzdHJpYnV0aW9ucyBpbiBMWjc3IGNvbXByZXNzaW9uLiBXZSBkZXZlbG9wZWQgdGhlc2UgdG9vbHMgdG8gYmUgYWJsZSB0byBtYWtlIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIGRpc3RhbmNlcyBpbiBsYXJnZS13aW5kb3cgYnJvdGxpLiBJbiBsYXJnZS13aW5kb3cgY29tcHJlc3Npb24gdGhlIGF2ZXJhZ2UgY29zdCBvZiBhIGJhY2t3YXJkIHJlZmVyZW5jZSBkaXN0YW5jZSBpcyBoaWdoZXIsIGFuZCB0aGlzIG1heSBhbGxvdyBmb3IgbW9yZSBhZHZhbmNlZCBlbmNvZGluZyBzdHJhdGVnaWVzLCBzdWNoIGFzIGRlbHRhIGNvZGluZyBvciBhbiBpbmNyZWFzZSBpbiBjb250ZXh0IHNpemUsIHRvIGJyaW5nIHNpZ25pZmljYW50IGNvbXByZXNzaW9uIGRlbnNpdHkgaW1wcm92ZW1lbnRzLiBPdXIgdG9vbHMgdmlzdWFsaXplIHRoZSBiYWNrd2FyZCByZWZlcmVuY2VzIGFzIGhpc3RvZ3JhbSBpbWFnZXMsIGkuZS4sIG9uZSBwaXhlbCBpbiB0aGUgaW1hZ2Ugc2hvd3MgaG93IG1hbnkgZGlzdGFuY2VzIG9mIGEgY2VydGFpbiByYW5nZSBleGlzdCBhdCBhIGNlcnRhaW4gbG9jYWxpdHkgaW4gdGhlIGRhdGEuIFRoZSBodW1hbiB2aXN1YWwgc3lzdGVtIGlzIGV4Y2VsbGVudCBhdCBwYXR0ZXJuIGRldGVjdGlvbiwgc28gd2UgdHJpZWQgdG8gcm91Z2hseSBpZGVudGlmeSBwYXR0ZXJucyB2aXN1YWxseSBiZWZvcmUgZ29pbmcgaW50byBtb3JlIHF1YW50aXRhdGl2ZSBhbmFseXNpcy4gVGhlc2UgdG9vbHMgY2FuIHR1cm4gb3V0IHRvIGJlIHVzZWZ1bCBpbiBkZXZlbG9wbWVudCBvZiAgb3RoZXIgTFo3Ny1iYXNlZCBjb21wcmVzc29ycyBhbmQgd2UgaG9wZSB5b3UgdHJ5IHRoZW0gb3V0LgorCisKKyMjIFRvb2xzCisjIyMgZmluZFxfb3B0XF9yZWZlcmVuY2VzCisKK1RoaXMgdG9vbCBnZW5lcmF0ZXMgb3B0aW1hbCAobWF0Y2gtbGVuZ3RoLXdpc2UpIGJhY2t3YXJkIHJlZmVyZW5jZXMgZm9yIGV2ZXJ5IHBvc2l0aW9uIGluIHRoZSBpbnB1dCBmaWxlcyBhbmQgc3RvcmVzIHRoZW0gaW4gYCouZGlzdGAgZmlsZSBkZXNjcmliZWQgYmVsb3cuCisKK0V4YW1wbGUgdXNhZ2U6CisKKyAgICBmaW5kX29wdF9yZWZlcmVuY2VzIGlucHV0LnR4dCBvdXRwdXQuZGlzdAorCisjIyMgZHJhd1xfaGlzdG9ncmFtCisKK1RoaXMgdG9vbCBnZW5lcmF0ZXMgYSB2aXN1YWxpemF0aW9uIG9mIHRoZSBkaXN0cmlidXRpb24gb2YgYmFja3dhcmQgcmVmZXJlbmNlcyBzdG9yZWQgaW4gYCouZGlzdGAgZmlsZS4gVGhlIG9yaWdpbmFsIGZpbGUgc2l6ZSBoYXMgdG8gYmUgc3BlY2lmaWVkIGFzIGEgc2Vjb25kIHBhcmFtZXRlci4gVGhlIG91dHB1dCBpcyBhIGdyYXlzY2FsZSBQR00gKGJpbmFyeSkgaW1hZ2UuCisKK0V4YW1wbGUgdXNhZ2U6CisKKyAgICBkcmF3X2hpc3RvZ3JhbSBpbnB1dC5kaXN0IDY1NTM2IG91dHB1dC5wZ20KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgcmVzdWx0aW5nIGltYWdlOgorCishW10oaW1nL2Vud2lrOV9icm90bGkucG5nKQorCisjIyMgZHJhd1xfZGlmZgorCitUaGlzIHRvb2wgZ2VuZXJhdGVzIGEgZGlmZiBQUE0gKGJpbmFyeSkgaW1hZ2UgYmV0d2VlbiB0d28gaW5wdXQgOC1iaXQgUEdNIChiaW5hcnkpIGltYWdlcy4gSW5wdXQgaW1hZ2VzIG11c3QgYmUgb2Ygc2FtZSBzaXplLiBVc2VmdWwgZm9yIGNvbXBhcmluZyBkaWZmZXJlbnQgYmFja3dhcmQgcmVmZXJlbmNlcyBkaXN0cmlidXRpb25zIGZvciBzYW1lIGlucHV0IGZpbGUuIE5vcm1hbGx5IHVzZWQgZm9yIGNvbXBhcmlzb24gb2Ygb3V0cHV0IGltYWdlcyBmcm9tIGBkcmF3X2hpc3RvZ3JhbWAgdG9vbC4KKworRXhhbXBsZSB1c2FnZToKKworICAgIGRyYXdfZGlmZiBpbWFnZTEucGdtIGltYWdlMi5wZ20gZGlmZi5wcG0KKworRm9yIGV4YW1wbGUgdGhlIGRpZmYgb2YgdGhpcyBpbWFnZQorCishW10oaW1nL2Vud2lrOV9icm90bGkucG5nKQorCithbmQgdGhpcyBpbWFnZQorCishW10oaW1nL2Vud2lrOV9vcHQucG5nKQorCitsb29rcyBsaWtlIHRoaXM6CisKKyFbXShpbWcvZW53aWs5X2RpZmYucG5nKQorCisKKyMjIEJhY2t3YXJkIGRpc3RhbmNlIGZpbGUgZm9ybWF0CisKK1RoZSBmb3JtYXQgb2YgYCouZGlzdGAgZmlsZXMgaXMgYXMgZm9sbG93czoKKworICAgIFtbICAgICAwfCBtYXRjaCBsZW5ndGhdWyAgICAgMXxwb3NpdGlvbnxkaXN0YW5jZV0uLi5dCisgICAgIFsxIGJ5dGV8ICAgICAgNCBieXRlc11bMSBieXRlfCA0IGJ5dGVzfCA0IGJ5dGVzXQorCitNb3JlIHZlcmJvc2UgZXhwbGFuYXRpb246IGZvciBlYWNoIGJhY2t3YXJkIHJlZmVyZW5jZSB0aGVyZSBpcyBhIHBvc2l0aW9uLWRpc3RhbmNlIHBhaXIsIGFsc28gYSBjb3B5IGxlbmd0aCBtYXkgYmUgc3BlY2lmaWVkLiBDb3B5IGxlbmd0aCBpcyBwcmVmaXhlZCB3aXRoIGZsYWcgYnl0ZSAwLCBwb3NpdGlvbi1kaXN0YW5jZSBwYWlyIGlzIHByZWZpeGVkIHdpdGggZmxhZyBieXRlIDEuIEVhY2ggbnVtYmVyIGlzIGEgMzItYml0IGludGVnZXIuIENvcHkgbGVuZ3RoIGFsd2F5cyBjb21lcyBiZWZvcmUgcG9zaXRpb24tZGlzdGFuY2UgcGFpci4gU3RhbmRhbG9uZSBjb3B5IGxlbmd0aCBpcyBhbGxvd2VkLCBpbiB0aGlzIGNhc2UgaXQgaXMgaWdub3JlZC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHJlYWQgZnJvbSBgKi5kaXN0YCBmaWxlOgorCitgYGBjKysKKyNpbmNsdWRlICJyZWFkX2Rpc3QuaCIKKworRklMRSogZjsKK2ludCBjb3B5LCBwb3MsIGRpc3Q7Cit3aGlsZSAoUmVhZEJhY2t3YXJkUmVmZXJlbmNlKGZpbiwgJmNvcHksICZwb3MsICZkaXN0KSkgeworICAgLi4uCit9CitgYGAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9XT1JLU1BBQ0UgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvV09SS1NQQUNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMGY4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvV09SS1NQQUNFCkBAIC0wLDAgKzEsMTIgQEAKK3dvcmtzcGFjZShuYW1lID0gIm9yZ19icm90bGlfcmVzZWFyY2giKQorCitsb2NhbF9yZXBvc2l0b3J5KAorICAgIG5hbWUgPSAib3JnX2Jyb3RsaSIsCisgICAgcGF0aCA9ICIuLiIsCispCisKK25ld19sb2NhbF9yZXBvc2l0b3J5KAorICAgIG5hbWUgPSAiZGl2c3Vmc29ydCIsCisgICAgYnVpbGRfZmlsZSA9ICJCVUlMRC5saWJkaXZzdWZzb3J0IiwKKyAgICBwYXRoID0gImxpYmRpdnN1ZnNvcnQiLAorKQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2Jyb3RsaV9kZWNvZGVyLmMgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvYnJvdGxpX2RlY29kZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjBiYzRhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2Jyb3RsaV9kZWNvZGVyLmMKQEAgLTAsMCArMSw5NCBAQAorLyogQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxicm90bGkvZGVjb2RlLmg+CisKKyNkZWZpbmUgQlVGRkVSX1NJWkUgKDF1IDw8IDIwKQorCit0eXBlZGVmIHN0cnVjdCBDb250ZXh0IHsKKyAgRklMRSogZmluOworICBGSUxFKiBmb3V0OworICB1aW50OF90KiBpbnB1dF9idWZmZXI7CisgIHVpbnQ4X3QqIG91dHB1dF9idWZmZXI7CisgIEJyb3RsaURlY29kZXJTdGF0ZSogZGVjb2RlcjsKK30gQ29udGV4dDsKKwordm9pZCBpbml0KENvbnRleHQqIGN0eCkgeworICBjdHgtPmZpbiA9IDA7CisgIGN0eC0+Zm91dCA9IDA7CisgIGN0eC0+aW5wdXRfYnVmZmVyID0gMDsKKyAgY3R4LT5vdXRwdXRfYnVmZmVyID0gMDsKKyAgY3R4LT5kZWNvZGVyID0gMDsKK30KKwordm9pZCBjbGVhbnVwKENvbnRleHQqIGN0eCkgeworICBpZiAoY3R4LT5kZWNvZGVyKSBCcm90bGlEZWNvZGVyRGVzdHJveUluc3RhbmNlKGN0eC0+ZGVjb2Rlcik7CisgIGlmIChjdHgtPm91dHB1dF9idWZmZXIpIGZyZWUoY3R4LT5vdXRwdXRfYnVmZmVyKTsKKyAgaWYgKGN0eC0+aW5wdXRfYnVmZmVyKSBmcmVlKGN0eC0+aW5wdXRfYnVmZmVyKTsKKyAgaWYgKGN0eC0+Zm91dCkgZmNsb3NlKGN0eC0+Zm91dCk7CisgIGlmIChjdHgtPmZpbikgZmNsb3NlKGN0eC0+ZmluKTsKK30KKwordm9pZCBmYWlsKENvbnRleHQqIGN0eCwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtZXNzYWdlKTsKKyAgY2xlYW51cChjdHgpOworICBleGl0KDEpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgQ29udGV4dCBjdHg7CisgIEJyb3RsaURlY29kZXJSZXN1bHQgcmVzdWx0ID0gQlJPVExJX0RFQ09ERVJfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ7CisgIHNpemVfdCBhdmFpbGFibGVfaW47CisgIGNvbnN0IHVpbnQ4X3QqIG5leHRfaW47CisgIHNpemVfdCBhdmFpbGFibGVfb3V0ID0gQlVGRkVSX1NJWkU7CisgIHVpbnQ4X3QqIG5leHRfb3V0OworICBpbml0KCZjdHgpOworCisgIGN0eC5maW4gPSBmZG9wZW4oU1RESU5fRklMRU5PLCAicmIiKTsKKyAgaWYgKCFjdHguZmluKSBmYWlsKCZjdHgsICJjYW4ndCBvcGVuIGlucHV0IGZpbGUiKTsKKyAgY3R4LmZvdXQgPSBmZG9wZW4oU1RET1VUX0ZJTEVOTywgIndiIik7CisgIGlmICghY3R4LmZvdXQpIGZhaWwoJmN0eCwgImNhbid0IG9wZW4gb3V0cHV0IGZpbGUiKTsKKyAgY3R4LmlucHV0X2J1ZmZlciA9ICh1aW50OF90KiltYWxsb2MoQlVGRkVSX1NJWkUpOworICBpZiAoIWN0eC5pbnB1dF9idWZmZXIpIGZhaWwoJmN0eCwgIm91dCBvZiBtZW1vcnkgLyBpbnB1dCBidWZmZXIiKTsKKyAgY3R4Lm91dHB1dF9idWZmZXIgPSAodWludDhfdCopbWFsbG9jKEJVRkZFUl9TSVpFKTsKKyAgaWYgKCFjdHgub3V0cHV0X2J1ZmZlcikgZmFpbCgmY3R4LCAib3V0IG9mIG1lbW9yeSAvIG91dHB1dCBidWZmZXIiKTsKKyAgY3R4LmRlY29kZXIgPSBCcm90bGlEZWNvZGVyQ3JlYXRlSW5zdGFuY2UoMCwgMCwgMCk7CisgIGlmICghY3R4LmRlY29kZXIpIGZhaWwoJmN0eCwgIm91dCBvZiBtZW1vcnkgLyBkZWNvZGVyIik7CisgIEJyb3RsaURlY29kZXJTZXRQYXJhbWV0ZXIoY3R4LmRlY29kZXIsIEJST1RMSV9ERUNPREVSX1BBUkFNX0xBUkdFX1dJTkRPVywgMSk7CisKKyAgbmV4dF9vdXQgPSBjdHgub3V0cHV0X2J1ZmZlcjsKKyAgd2hpbGUgKDEpIHsKKyAgICBpZiAocmVzdWx0ID09IEJST1RMSV9ERUNPREVSX1JFU1VMVF9ORUVEU19NT1JFX0lOUFVUKSB7CisgICAgICBpZiAoZmVvZihjdHguZmluKSkgYnJlYWs7CisgICAgICBhdmFpbGFibGVfaW4gPSBmcmVhZChjdHguaW5wdXRfYnVmZmVyLCAxLCBCVUZGRVJfU0laRSwgY3R4LmZpbik7CisgICAgICBuZXh0X2luID0gY3R4LmlucHV0X2J1ZmZlcjsKKyAgICAgIGlmIChmZXJyb3IoY3R4LmZpbikpIGJyZWFrOworICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IEJST1RMSV9ERUNPREVSX1JFU1VMVF9ORUVEU19NT1JFX09VVFBVVCkgeworICAgICAgZndyaXRlKGN0eC5vdXRwdXRfYnVmZmVyLCAxLCBCVUZGRVJfU0laRSwgY3R4LmZvdXQpOworICAgICAgaWYgKGZlcnJvcihjdHguZm91dCkpIGJyZWFrOworICAgICAgYXZhaWxhYmxlX291dCA9IEJVRkZFUl9TSVpFOworICAgICAgbmV4dF9vdXQgPSBjdHgub3V0cHV0X2J1ZmZlcjsKKyAgICB9IGVsc2UgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIHJlc3VsdCA9IEJyb3RsaURlY29kZXJEZWNvbXByZXNzU3RyZWFtKAorICAgICAgICBjdHguZGVjb2RlciwgJmF2YWlsYWJsZV9pbiwgJm5leHRfaW4sICZhdmFpbGFibGVfb3V0LCAmbmV4dF9vdXQsIDApOworICB9CisgIGlmIChuZXh0X291dCAhPSBjdHgub3V0cHV0X2J1ZmZlcikgeworICAgIGZ3cml0ZShjdHgub3V0cHV0X2J1ZmZlciwgMSwgbmV4dF9vdXQgLSBjdHgub3V0cHV0X2J1ZmZlciwgY3R4LmZvdXQpOworICB9CisgIGlmICgocmVzdWx0ID09IEJST1RMSV9ERUNPREVSX1JFU1VMVF9ORUVEU19NT1JFX09VVFBVVCkgfHwgZmVycm9yKGN0eC5mb3V0KSkgeworICAgIGZhaWwoJmN0eCwgImZhaWxlZCB0byB3cml0ZSBvdXRwdXQiKTsKKyAgfSBlbHNlIGlmIChyZXN1bHQgIT0gQlJPVExJX0RFQ09ERVJfUkVTVUxUX1NVQ0NFU1MpIHsKKyAgICBmYWlsKCZjdHgsICJjb3JydXB0IGlucHV0Iik7CisgIH0KKyAgY2xlYW51cCgmY3R4KTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvYnJvdGxpZHVtcC5weSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9icm90bGlkdW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMTg5MzQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvYnJvdGxpZHVtcC5weQpAQCAtMCwwICsxLDIzNjIgQEAKKyMhcHl0aG9uMworIiIiUHJvZ3JhbSB0byBkdW1wIGNvbnRlbnRzIG9mIEJyb3RsaSBjb21wcmVzc2VkIGZpbGVzIHNob3dpbmcgdGhlIGNvbXByZXNzaW9uIGZvcm1hdC4KK0p1cmplbiBOLkUuIEJvcywgMjAxNi4KK0kgZm91bmQgdGhlIGZvbGxvd2luZyBpc3N1ZXMgd2l0aCB0aGUgQnJvdGxpIGZvcm1hdDoKKy0gVGhlIGRpc3RhbmNlIGFscGhhYmV0IGhhcyBzaXplIDE2Kyg0ODw8UE9TVEZJWCksCisgIGJ1dCB0aGUgbGFzdCBzeW1ib2xzIGFyZSB1c2VsZXNzLgorICBJdCBjb3VsZCBiZSBsb3dlcmVkIHRvIDE2Kyg0NC1QT1NURklYPDxQT1NURklYKSwgYW5kIHRoaXMgY291bGQgbWF0dGVyLgorLSBUaGUgYmxvY2sgdHlwZSBjb2RlIGlzIHVzZWxlc3MgaWYgTkJMVFlQRVM9PTIsIHlvdSB3b3VsZCBvbmx5IG5lZWQgMSBzeW1ib2wKKyAgYW55d2F5LCBzbyB3aHkgZG9uJ3QgeW91IGp1c3Qgc3dpdGNoIHRvICJ0aGUgb3RoZXIiIHR5cGU/CisiIiIKK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIsIG1ldGhvZGNhbGxlcgorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGFjY3VtdWxhdGUsIHJlcGVhdAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIGRlcXVlCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCitjbGFzcyBJbnZhbGlkU3RyZWFtKEV4Y2VwdGlvbik6IHBhc3MKKyNsb29rdXAgdGFibGUKK0wsIEksIEQgPSAibGl0ZXJhbCIsICJpbnNlcnQmY29weSIsICJkaXN0YW5jZSIKK3BMLCBwSSwgcEQgPSAnUCcrTCwgJ1AnK0ksICdQJytECisKK2RlZiBvdXRwdXRDaGFyRm9ybWF0dGVyKGMpOgorICAgICIiIlNob3cgY2hhcmFjdGVyIGluIHJlYWRhYmxlIGZvcm1hdAorICAgICIiIgorICAgICNUT0RPIDI6IGFsbG93IGhleCBvbmx5IG91dHB1dAorICAgIGlmIDMyPGM8MTI3OiByZXR1cm4gY2hyKGMpCisgICAgZWxpZiBjPT0xMDogcmV0dXJuICdcXG4nCisgICAgZWxpZiBjPT0xMzogcmV0dXJuICdcXHInCisgICAgZWxpZiBjPT0zMjogcmV0dXJuICciICInCisgICAgZWxzZTogcmV0dXJuICdcXHh7OjAyeH0nLmZvcm1hdChjKQorCitkZWYgb3V0cHV0Rm9ybWF0dGVyKHMpOgorICAgICIiIlNob3cgc3RyaW5nIG9yIGNoYXIuCisgICAgIiIiCisgICAgcmVzdWx0ID0gJycKKyAgICBkZWYgZm9ybWF0U3ViU3RyaW5nKHMpOgorICAgICAgICBmb3IgYyBpbiBzOgorICAgICAgICAgICAgaWYgYz09MzI6IHlpZWxkICcgJworICAgICAgICAgICAgZWxzZTogeWllbGQgb3V0cHV0Q2hhckZvcm1hdHRlcihjKQorICAgIGlmIGxlbihyZXN1bHQpPDIwMDogcmV0dXJuICcnLmpvaW4oZm9ybWF0U3ViU3RyaW5nKHMpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKGZvcm1hdFN1YlN0cmluZyhzWzoxMDBdKSkrJy4uLicrIFwKKyAgICAgICAgICAgICAgICcnLmpvaW4oZm9ybWF0U3ViU3RyaW5nKHNbLTEwMDpdKSkKKworCitjbGFzcyBCaXRTdHJlYW06CisgICAgIiIiUmVwcmVzZW50IGEgYnl0ZXMgb2JqZWN0LiBDYW4gcmVhZCBiaXRzIGFuZCBwcmVmaXggY29kZXMgdGhlIHdheQorICAgIEJyb3RsaSBkb2VzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBieXRlU3RyaW5nKToKKyAgICAgICAgc2VsZi5kYXRhID0gYnl0ZVN0cmluZworICAgICAgICAjcG9zaXRpb24gaW4gYml0czogYnl0ZSBwb3MgaXMgcG9zPj4zLCBiaXQgcG9zIGlzIHBvcyY3CisgICAgICAgIHNlbGYucG9zID0gMAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXByZXNlbnRhdGlvbgorICAgICAgICA+Pj4gb2xsZWtlCisgICAgICAgIEJpdFN0cmVhbShwb3M9MDowKQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICJCaXRTdHJlYW0ocG9zPXs6eH06e30pIi5mb3JtYXQoc2VsZi5wb3M+PjMsIHNlbGYucG9zJjcpCisKKyAgICBkZWYgcmVhZChzZWxmLCBuKToKKyAgICAgICAgIiIiUmVhZCBuIGJpdHMgZnJvbSB0aGUgc3RyZWFtIGFuZCByZXR1cm4gYXMgYW4gaW50ZWdlci4KKyAgICAgICAgUHJvZHVjZXMgemVybyBiaXRzIGJleW9uZCB0aGUgc3RyZWFtLgorICAgICAgICA+Pj4gb2xsZWtlLmRhdGFbMF09PTI3CisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IG9sbGVrZS5yZWFkKDUpCisgICAgICAgIDI3CisKKyAgICAgICAgPj4+IG9sbGVrZQorICAgICAgICBCaXRTdHJlYW0ocG9zPTA6NSkKKyAgICAgICAgIiIiCisgICAgICAgIHZhbHVlID0gc2VsZi5wZWVrKG4pCisgICAgICAgIHNlbGYucG9zICs9IG4KKyAgICAgICAgaWYgc2VsZi5wb3M+bGVuKHNlbGYuZGF0YSkqODoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1JlYWQgcGFzdCBlbmQgb2Ygc3RyZWFtJykKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBkZWYgcGVlayhzZWxmLCBuKToKKyAgICAgICAgIiIiUGVlayBhbiBuIGJpdCBpbnRlZ2VyIGZyb20gdGhlIHN0cmVhbSB3aXRob3V0IHVwZGF0aW5nIHRoZSBwb2ludGVyLgorICAgICAgICBJdCBpcyBub3QgYW4gZXJyb3IgdG8gcmVhZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgorICAgICAgICA+Pj4gb2xsZWtlLmRhdGFbOjJdPT1iJ1x4MWJceDJlJyBhbmQgMHgyZTFiPT0xMTgwMworICAgICAgICBUcnVlCisgICAgICAgID4+PiBvbGxla2UucGVlaygxNSkKKyAgICAgICAgMTE4MDMKKyAgICAgICAgPj4+IGhleChvbGxla2UucGVlaygzMikpCisgICAgICAgICcweDJlMWInCisgICAgICAgICIiIgorICAgICAgICAjcmVhZCBieXRlcyB0aGF0IGNvbnRhaW4gdGhlIGRhdGE6IHNlbGYuZGF0YVtzZWxmLnBvcz4+MzpzZWxmLnBvcytuKzc+PjNdCisgICAgICAgICNjb252ZXJ0IHRvIGludDogaW50LmZyb21fYnl0ZXMoLi4uLCAnbGl0dGxlJykKKyAgICAgICAgI3NoaWZ0IG91dCB0aGUgYml0cyBmcm9tIHRoZSBmaXJzdCBieXRlOiA+PihzZWxmLnBvcyY3KQorICAgICAgICAjbWFzayB1bndhbnRlZCBiaXRzOiAmICgxPDxuKS0xCisgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcygKKyAgICAgICAgICAgIHNlbGYuZGF0YVtzZWxmLnBvcz4+MzpzZWxmLnBvcytuKzc+PjNdLAorICAgICAgICAgICAgJ2xpdHRsZScpPj4oc2VsZi5wb3MmNykgJiAoMTw8biktMQorCisgICAgZGVmIHJlYWRCeXRlcyhzZWxmLCBuKToKKyAgICAgICAgIiIiUmVhZCBuIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBvbiBhIGJ5dGUgYm91bmRhcnkuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnBvcyY3OiByYWlzZSBWYWx1ZUVycm9yKCdyZWFkQnl0ZXM6IG5lZWQgYnl0ZSBib3VuZGFyeScpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZGF0YVtzZWxmLnBvcz4+Mzooc2VsZi5wb3M+PjMpK25dCisgICAgICAgIHNlbGYucG9zICs9IDgqbgorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVN5bWJvbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2NsYXNzIFN5bWJvbDoKKyAgICAiIiJBIHN5bWJvbCBpbiBhIGNvZGUuCisgICAgUmVmZXJzIGJhY2sgdG8gdGhlIGNvZGUgdGhhdCBjb250YWlucyBpdC4KKyAgICBJbmRleCBpcyB0aGUgcGxhY2UgaW4gdGhlIGFscGhhYmV0IG9mIHRoZSBzeW1ib2wuCisgICAgIiIiCisgICAgX19zbG90c19fID0gJ2NvZGUnLCAnaW5kZXgnCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUsIHZhbHVlKToKKyAgICAgICAgc2VsZi5jb2RlID0gY29kZQorICAgICAgICBzZWxmLmluZGV4ID0gdmFsdWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdTeW1ib2woe30sIHt9KScuZm9ybWF0KHNlbGYuY29kZS5uYW1lLCBzZWxmLmluZGV4KQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICIiIk51bWJlciBvZiBiaXRzIGluIHRoZSBwcmVmaXggbm90YXRpb24gb2YgdGhpcyBzeW1ib2wKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLmNvZGUubGVuZ3RoKHNlbGYuaW5kZXgpCisKKyAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgKKworICAgICN0aGVzZSByb3V0aW5lcyBjYWxsIGVxdWl2YWxlbnQgcm91dGluZSBpbiBDb2RlIGNsYXNzCisgICAgZGVmIGJpdFBhdHRlcm4oc2VsZik6CisgICAgICAgICIiIlZhbHVlIG9mIHRoZSBzeW1ib2wgaW4gdGhlIHN0cmVhbQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY29kZS5iaXRQYXR0ZXJuKHNlbGYuaW5kZXgpCisKKyAgICBkZWYgZXh0cmFCaXRzKHNlbGYpOgorICAgICAgICAiIiJOdW1iZXIgb2YgZXh0cmEgYml0cyB0byByZWFkIGZvciB0aGlzIHN5bWJvbAorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY29kZS5leHRyYUJpdHMoc2VsZi5pbmRleCkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAiIiJTaG9ydCBkZXNjcmlwdG9yIG9mIHRoZSBzeW1ib2wgd2l0aG91dCBleHRyYSBiaXRzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY29kZS5tbmVtb25pYyhzZWxmLmluZGV4KQorCisgICAgI3JlcXVpcmluZyBvcHRpb25hbCBleHRyYSBiaXRzLCBpZiBzZWxmLmNvZGUgc3VwcG9ydHMgdGhlbQorICAgIGRlZiB2YWx1ZShzZWxmLCBleHRyYT1Ob25lKToKKyAgICAgICAgIiIiVGhlIHZhbHVlIHVzZWQgZm9yIHByb2Nlc3NpbmcuIENhbiBiZSBhIHR1cGxlLgorICAgICAgICB3aXRoIG9wdGlvbmFsIGV4dHJhIGJpdHMKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jb2RlLCBXaXRoRXh0cmEpOgorICAgICAgICAgICAgaWYgbm90IDA8PWV4dHJhPDE8PHNlbGYuZXh0cmFCaXRzKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidmFsdWU6IGV4dHJhIHZhbHVlIGRvZXNuJ3QgZml0IGluIGV4dHJhQml0cyIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb2RlLnZhbHVlKHNlbGYuaW5kZXgsIGV4dHJhKQorICAgICAgICBpZiBleHRyYSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlOiBubyBleHRyYSBiaXRzIGZvciB0aGlzIGNvZGUnKQorICAgICAgICByZXR1cm4gc2VsZi5jb2RlLnZhbHVlKHNlbGYuaW5kZXgpCisKKyAgICBkZWYgZXhwbGFuYXRpb24oc2VsZiwgZXh0cmE9Tm9uZSk6CisgICAgICAgICIiIkxvbmcgZXhwbGFuYXRpb24gb2YgdGhlIHZhbHVlIGZyb20gdGhlIG51bWVyaWMgdmFsdWUKKyAgICAgICAgd2l0aCBvcHRpb25hbCBleHRyYSBiaXRzCisgICAgICAgIFVzZWQgYnkgTGF5b3V0LnZlcmJvc2VSZWFkIHdoZW4gcHJpbnRpbmcgdGhlIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY29kZSwgV2l0aEV4dHJhKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvZGUuY2FsbGJhY2soc2VsZiwgZXh0cmEpCisgICAgICAgIHJldHVybiBzZWxmLmNvZGUuY2FsbGJhY2soc2VsZikKKworIz09PT09PT09PT09PT09PT09PT09PT09PUNvZGUgZGVmaW5pdGlvbnM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitjbGFzcyBSYW5nZURlY29kZXI6CisgICAgIiIiQSBkZWNvZGVyIGZvciB0aGUgQ29kZSBjbGFzcyB0aGF0IGFzc3VtZXMgdGhlIHN5bWJvbHMKKyAgICBhcmUgZW5jb2RlZCBjb25zZWN1dGl2ZWx5IGluIGJpbmFyeS4KKyAgICBJdCBhbGwgZGVwZW5kcyBvbiB0aGUgImFscGhhYmV0U2l6ZSIgcHJvcGVydHkuCisgICAgVGhlIHJhbmdlIHJ1bnMgZnJvbSAwIHRvIGFscGhhYmV0U2l6ZS0xLgorICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVjb2Rlci4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgYWxwaGFiZXRTaXplPU5vbmUsIGJpdExlbmd0aD1Ob25lLCAqKmFyZ3MpOgorICAgICAgICBpZiBiaXRMZW5ndGggaXMgbm90IE5vbmU6IGFscGhhYmV0U2l6ZSA9IDE8PGJpdExlbmd0aAorICAgICAgICBpZiBhbHBoYWJldFNpemUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFscGhhYmV0U2l6ZSA9IGFscGhhYmV0U2l6ZQorICAgICAgICAgICAgc2VsZi5tYXhMZW5ndGggPSAoYWxwaGFiZXRTaXplLTEpLmJpdF9sZW5ndGgoKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmFscGhhYmV0U2l6ZQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAiIiJQcm9kdWNlIGFsbCBzeW1ib2xzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1hcChwYXJ0aWFsKFN5bWJvbCwgc2VsZiksIHJhbmdlKGxlbihzZWxmKSkpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgorICAgICAgICBpZiBpbmRleD49c2VsZi5hbHBoYWJldFNpemU6IHJhaXNlIFZhbHVlRXJyb3IoJ2luZGV4IG91dCBvZiByYW5nZScpCisgICAgICAgIHJldHVybiBTeW1ib2woc2VsZiwgaW5kZXgpCisKKyAgICBkZWYgYml0UGF0dGVybihzZWxmLCBpbmRleCk6CisgICAgICAgIHJldHVybiAnezowe31ifScuZm9ybWF0KGluZGV4LCBzZWxmLm1heExlbmd0aCkKKworICAgIGRlZiBsZW5ndGgoc2VsZiwgaW5kZXgpOgorICAgICAgICAiIiJFbmNvZGluZyBsZW5ndGggb2YgZ2l2ZW4gc3ltYm9sLgorICAgICAgICBEb2VzIG5vdCBkZXBlbmQgb24gaW5kZXggaW4gdGhpcyBjYXNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYubWF4TGVuZ3RoCisKKyAgICBkZWYgZGVjb2RlUGVlayhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiRmluZCB3aGljaCBzeW1ib2wgaW5kZXggbWF0Y2hlcyB0aGUgZ2l2ZW4gZGF0YSAoZnJvbSBwZWVrLCBhcyBhIG51bWJlcikKKyAgICAgICAgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgZGVjb2RlZC4KKyAgICAgICAgQ2FuIGFsc28gYmUgdXNlZCB0byBmaWd1cmUgb3V0IGxlbmd0aCBvZiBhIHN5bWJvbC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLm1heExlbmd0aCwgU3ltYm9sKHNlbGYsIGRhdGEmKDE8PHNlbGYubWF4TGVuZ3RoKS0xKQorCitjbGFzcyBQcmVmaXhEZWNvZGVyOgorICAgICIiIkEgZGVjb2RlciBmb3IgdGhlIENvZGUgY2xhc3MgdGhhdCB1c2VzIGEgcHJlZml4IGNvZGUuCisgICAgVGhlIGNvZGUgaXMgZGV0ZXJtaW5lZCBieSBlbmNvZGluZzoKKyAgICBlbmNvZGVbcF0gZ2l2ZXMgdGhlIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gYml0IHBhdHRlcm4gcC4KKyAgICBVc2VkIHNldERlY29kZShkZWNvZGVUYWJsZSkgdG8gc3dpdGNoIHRoZSBkZWNvZGVyIGZyb20gdGhlIGRlZmF1bHQKKyAgICB0byBhIHByZWZpeCBkZWNvZGVyLCBvciBwYXNzIGRlY29kZVRhYmxlIGF0IGluaXQuCisgICAgWW91IGNhbiBhbHNvIHVzZSBzZXRMZW5ndGgobGVuZ3RoVGFibGUpCisgICAgdG8gZGVmaW5lIHRoZSBlbmNvZGluZyBmcm9tIHRoZSBsZW5ndGhzLgorICAgIFRoZSBzZXQgb2Ygc3ltYm9sIHZhbHVlcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbnNlY3V0aXZlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBkZWNvZGVUYWJsZT1Ob25lLCAqKmFyZ3MpOgorICAgICAgICBpZiBkZWNvZGVUYWJsZSBpcyBub3QgTm9uZTogc2VsZi5zZXREZWNvZGUoZGVjb2RlVGFibGUpCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRlY29kZVRhYmxlKQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBkZWYgcmV2Qml0cyhpbmRleCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5iaXRQYXR0ZXJuKGluZGV4KVs6Oi0xXQorICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgU3ltYm9sKHNlbGYsIGluZGV4KQorICAgICAgICAgICAgZm9yIGluZGV4IGluIHNvcnRlZChzZWxmLmRlY29kZVRhYmxlLnZhbHVlcygpLCBrZXk9cmV2Qml0cykKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4IG5vdCBpbiBzZWxmLmxlbmd0aFRhYmxlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm8gc3ltYm9sIHt9W3t9XScuZm9ybWF0KAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpbmRleCkpCisgICAgICAgIHJldHVybiBTeW1ib2woc2VsZiwgaW5kZXgpCisKKyAgICBkZWYgYml0UGF0dGVybihzZWxmLCBpbmRleCk6CisgICAgICAgIGJpdHMgPSBuZXh0KGIgZm9yIChiLHMpIGluIHNlbGYuZGVjb2RlVGFibGUuaXRlbXMoKSBpZiBzPT1pbmRleCkKKyAgICAgICAgcmV0dXJuICd7OjB7fWJ9Jy5mb3JtYXQoYml0cywgc2VsZi5sZW5ndGgoaW5kZXgpKQorCisgICAgZGVmIGxlbmd0aChzZWxmLCBpbmRleCk6CisgICAgICAgICIiIkVuY29kaW5nIGxlbmd0aCBvZiBnaXZlbiBzeW1ib2wuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5sZW5ndGhUYWJsZVtpbmRleF0KKworICAgIGRlZiBkZWNvZGVQZWVrKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJGaW5kIHdoaWNoIHN5bWJvbCBpbmRleCBtYXRjaGVzIHRoZSBnaXZlbiBkYXRhIChmcm9tIHBlZWssIGFzIGEgbnVtYmVyKQorICAgICAgICBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBkZWNvZGVkLgorICAgICAgICBDYW4gYWxzbyBiZSB1c2VkIHRvIGZpZ3VyZSBvdXQgbGVuZ3RoIG9mIGEgc3ltYm9sLgorICAgICAgICAiIiIKKyAgICAgICAgI2RvIGJpbmFyeSBzZWFyY2ggZm9yIHdvcmQgbGVuZ3RoCisgICAgICAgICNpbnZhcmlhbnQ6IGxvPD1sZW5ndGg8PWhpCisgICAgICAgIGxvLCBoaSA9IHNlbGYubWluTGVuZ3RoLCBzZWxmLm1heExlbmd0aAorICAgICAgICB3aGlsZSBsbzw9aGk6CisgICAgICAgICAgICBtaWQgPSBsbytoaT4+MQorICAgICAgICAgICAgI25vdGUgbG88PW1pZDxoaSBhdCB0aGlzIHBvaW50CisgICAgICAgICAgICBtYXNrID0gKDE8PG1pZCktMQorICAgICAgICAgICAgI2xldHMgc2VlIHdoYXQgaGFwcGVucyBpZiB3ZSBndWVzcyBsZW5ndGggaXMgbWlkCisgICAgICAgICAgICB0cnk6IGluZGV4ID0gc2VsZi5kZWNvZGVUYWJsZVtkYXRhJm1hc2tdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgI3RvbyBtYW55IGJpdHMgc3BlY2lmaWVkLCByZWR1Y2UgZXN0aW1hdGVkIGxlbmd0aAorICAgICAgICAgICAgICAgIGhpID0gbWlkLTEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgI3dlIGZvdW5kIGEgc3ltYm9sLCBidXQgdGhlcmUgY291bGQgYmUgYSBsb25nZXIgbWF0Y2gKKyAgICAgICAgICAgIHN5bWJvbExlbmd0aCA9IHNlbGYubGVuZ3RoVGFibGVbaW5kZXhdCisgICAgICAgICAgICBpZiBzeW1ib2xMZW5ndGg8PW1pZDoKKyAgICAgICAgICAgICAgICAjYWxsIGJpdHMgbWF0Y2gsIHN5bWJvbCBtdXN0IGJlIHJpZ2h0CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbExlbmd0aCwgU3ltYm9sKHNlbGYsIGluZGV4KQorICAgICAgICAgICAgI3RoZXJlIG11c3QgYmUgbW9yZSBiaXRzIHRvIG1hdGNoCisgICAgICAgICAgICBsbyA9IG1pZCsxCisgICAgICAgIHJldHVybiBsbywgU3ltYm9sKHNlbGYsIGluZGV4KQorCisgICAgI3JvdXRpbmUgdG8gc2V0IHVwIHRoZSB0YWJsZXMKKyAgICBkZWYgc2V0RGVjb2RlKHNlbGYsIGRlY29kZVRhYmxlKToKKyAgICAgICAgIiIiU3RvcmUgZGVjb2RlVGFibGUsCisgICAgICAgIGFuZCBjb21wdXRlIGxlbmd0aFRhYmxlLCBtaW5MZW5ndGgsIG1heExlbmd0aCBmcm9tIGVuY29kaW5ncy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZGVjb2RlVGFibGUgPSBkZWNvZGVUYWJsZQorICAgICAgICAjc2V0IG9mIHN5bWJvbHMgd2l0aCB1bmtub3duIGxlbmd0aAorICAgICAgICB0b2RvID0gc2V0KGRlY29kZVRhYmxlKQorICAgICAgICAjYml0IHNpemUgdW5kZXIgaW52ZXN0aWdhdGlvbgorICAgICAgICBtYXNrTGVuZ3RoID0gMAorICAgICAgICBsZW5ndGhUYWJsZSA9IHt9CisgICAgICAgIHdoaWxlIHRvZG86CisgICAgICAgICAgICBtYXNrID0gKDE8PG1hc2tMZW5ndGgpLTEKKyAgICAgICAgICAgICNzcGxpdCB0aGUgZW5jb2RpbmdzIHRoYXQgd2UgZGlkbid0IGZpbmQgeWV0IHVzaW5nIGIgYml0cworICAgICAgICAgICAgc3BsaXRTeW1ib2xzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAgICAgIGZvciBzIGluIHRvZG86IHNwbGl0U3ltYm9sc1tzJm1hc2tdLmFwcGVuZChzKQorICAgICAgICAgICAgI3VuaXF1ZSBlbmNvZGluZ3MgaGF2ZSBhIGxlbmd0aCBvZiBtYXNrTGVuZ3RoIGJpdHMKKyAgICAgICAgICAgICNzZXQgbGVuZ3RoLCBhbmQgcmVtb3ZlIGZyb20gdG9kbyBsaXN0CisgICAgICAgICAgICBmb3IgcyxzdWJzZXQgaW4gc3BsaXRTeW1ib2xzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgbGVuKHN1YnNldCk9PTE6CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRhYmxlW3NlbGYuZGVjb2RlVGFibGVbc11dID0gbWFza0xlbmd0aAorICAgICAgICAgICAgICAgICAgICB0b2RvLnJlbW92ZShzKQorICAgICAgICAgICAgI25vdyBpbnZlc3RpZ2F0ZSB3aXRoIGxvbmdlciBtYXNrCisgICAgICAgICAgICBtYXNrTGVuZ3RoICs9MQorICAgICAgICAjc2F2ZSByZXN1bHQKKyAgICAgICAgc2VsZi5sZW5ndGhUYWJsZSA9IGxlbmd0aFRhYmxlCisgICAgICAgIHNlbGYubWluTGVuZ3RoID0gbWluKGxlbmd0aFRhYmxlLnZhbHVlcygpKQorICAgICAgICBzZWxmLm1heExlbmd0aCA9IG1heChsZW5ndGhUYWJsZS52YWx1ZXMoKSkKKyAgICAgICAgc2VsZi5zd2l0Y2hUb1ByZWZpeCgpCisKKyAgICBkZWYgc2V0TGVuZ3RoKHNlbGYsIGxlbmd0aFRhYmxlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGJpdCBwYXR0ZXJuIGxlbmd0aHMgZm9yIHN5bWJvbHMgZ2l2ZW4gaW4gbGVuZ3RoVGFibGUsCisgICAgICAgIHNldCBkZWNvZGVUYWJsZSwgbWluTGVuZ3RoLCBtYXhMZW5ndGgKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYubGVuZ3RoVGFibGUgPSBsZW5ndGhUYWJsZQorICAgICAgICBzZWxmLm1pbkxlbmd0aCA9IG1pbihsZW5ndGhUYWJsZS52YWx1ZXMoKSkKKyAgICAgICAgc2VsZi5tYXhMZW5ndGggPSBtYXgobGVuZ3RoVGFibGUudmFsdWVzKCkpCisgICAgICAgICNjb21wdXRlIHRoZSBiYWNrd2FyZHMgY29kZXMgZmlyc3Q7IHRoZW4gcmV2ZXJzZSB0aGVtCisgICAgICAgICNjb21wdXRlIChiYWNrd2FyZHMpIGZpcnN0IGNvZGUgZm9yIGV2ZXJ5IHNlcGFyYXRlIGxlbmd0aHMKKyAgICAgICAgbmV4dENvZGVzID0gW10KKyAgICAgICAgI2J1aWxkIGNvZGVzIGZvciBlYWNoIGxlbmd0aCwgZnJvbSByaWdodCB0byBsZWZ0CisgICAgICAgIGNvZGUgPSAwCisgICAgICAgIGZvciBiaXRzIGluIHJhbmdlKHNlbGYubWF4TGVuZ3RoKzEpOgorICAgICAgICAgICAgY29kZSA8PD0gMQorICAgICAgICAgICAgbmV4dENvZGVzLmFwcGVuZChjb2RlKQorICAgICAgICAgICAgY29kZSArPSBzdW0oeD09Yml0cyBmb3IgeCBpbiBsZW5ndGhUYWJsZS52YWx1ZXMoKSkKKyAgICAgICAgc2VsZi5kZWNvZGVUYWJsZSA9IHt9CisgICAgICAgICNjb3VudCBjb2RlcyBmb3IgZWFjaCBsZW5ndGgsIGFuZCBzdG9yZSByZXZlcnNlZCBpbiB0aGUgdGFibGUKKyAgICAgICAgZm9yIHN5bWJvbCBpbiBzb3J0ZWQobGVuZ3RoVGFibGUpOgorICAgICAgICAgICAgYml0cyA9IGxlbmd0aFRhYmxlW3N5bWJvbF0KKyAgICAgICAgICAgIGJpdHBhdHRlcm4gPSAnezowe31ifScuZm9ybWF0KG5leHRDb2Rlc1tiaXRzXSwgYml0cykKKyAgICAgICAgICAgIHNlbGYuZGVjb2RlVGFibGVbaW50KGJpdHBhdHRlcm5bOjotMV0sIDIpXSA9IHN5bWJvbAorICAgICAgICAgICAgbmV4dENvZGVzW2JpdHNdICs9IDEKKyAgICAgICAgc2VsZi5zd2l0Y2hUb1ByZWZpeCgpCisKKyAgICBkZWYgc3dpdGNoVG9QcmVmaXgoc2VsZik6CisgICAgICAgICIiIlRoaXMgcm91dGluZSBtYWtlcyBzdXJlIHRoZSBwcmVmaXggZGVjb2RlciBpcyBhY3RpdmF0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLm1vZGUgPSBQcmVmaXhEZWNvZGVyCisKK2NsYXNzIENvZGUoUmFuZ2VEZWNvZGVyLCBQcmVmaXhEZWNvZGVyKToKKyAgICAiIiJBbiBhbHBoYWJldCBvZiBzeW1ib2xzLCB0aGF0IGNhbiBiZSByZWFkIGZyb20gYSBzdHJlYW0uCisgICAgSWYgeW91IHVzZSBzZXREZWNvZGUgb3Igc2V0TGVuZ3RoLCB5b3UgaGF2ZSBhIHByZWZpeCBjb2RlLAorICAgIG90aGVyd2lzZSB5b3UgaGF2ZSBhIHJhbmdlIGNvZGUuCisgICAgRmVhdHVyZXM6CisgICAgY29kZVtpbmRleF0gcHJvZHVjZXMgc3ltYm9sIHdpdGggZ2l2ZW4gaW5kZXgKKyAgICB2YWx1ZShpbmRleCk6IHZhbHVlIG9mIHN5bWJvbAorICAgIG1uZW1vbmljKGluZGV4KTogc2hvcnQgZGVzY3JpcHRpb24gb2Ygc3ltYm9sCisgICAgZXhwbGFuYXRpb24oaW5kZXgpOiBzaG93IG1lYW5pbmcgb2Ygc3ltYm9sLCBzaG93biBpbiBMYXlvdXQudmVyYm9zZVJlYWQKKyAgICBpdGVyKGNvZGUpOiBwcm9kdWNlIGFsbCBzeW1ib2xzIGluIHNvbWUgb3JkZXIKKyAgICBuYW1lOiBzaG93IGFzIGNvbnRleHQgaW4gTGF5b3V0LnZlcmJvc2VSZWFkCisgICAgIiIiCisgICAgbmFtZSA9ICc/JworICAgICNjYWxsYmFjayBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgc3ltYm9sIGFuZCB0aGUgZXh0cmEgYml0cworICAgICNkZWZhdWx0IGNhbGxiYWNrIGNhbGxzIGV4cGxhbmF0aW9uCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgKiwgY2FsbGJhY2s9Tm9uZSwgZGVzY3JpcHRpb249JycsICoqYXJncyk6CisgICAgICAgICIiIkRvbid0IGZvcmdldCB0byBzZXQgZWl0aGVyIGFscGhhYmV0U2l6ZSBvciBkZWNvZGVUYWJsZQorICAgICAgICAiIiIKKyAgICAgICAgI3NldCBuYW1lIHdoZW4gcHJvdmlkZWQsIG90aGVyd2lzZSB0YWtlIGNsYXNzIHZhcmlhYmxlCisgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6IHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgaWYgY2FsbGJhY2sgaXMgbm90IE5vbmU6IHNlbGYuY2FsbGJhY2sgPSBjYWxsYmFjaworICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgI21vZGUgc3dpdGNoCisgICAgICAgIGlmICdiaXRMZW5ndGgnIGluIGFyZ3Mgb3IgJ2FscGhhYmV0U2l6ZScgaW4gYXJnczoKKyAgICAgICAgICAgIHNlbGYubW9kZSA9IFJhbmdlRGVjb2RlcgorICAgICAgICAgICAgUmFuZ2VEZWNvZGVyLl9faW5pdF9fKHNlbGYsICoqYXJncykKKyAgICAgICAgZWxpZiAnZGVjb2RlVGFibGUnIGluIGFyZ3M6CisgICAgICAgICAgICBzZWxmLm1vZGUgPSBQcmVmaXhEZWNvZGVyCisgICAgICAgICAgICBQcmVmaXhEZWNvZGVyLl9faW5pdF9fKHNlbGYsICoqYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiphcmdzKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uX19uYW1lX18rJyAnK3NlbGYubmFtZQorCisgICAgI3RoZSByb3V0aW5lcyB0aGF0IGdldCBzd2l0Y2hlZCBiZXR3ZWVuIFJhbmdlRGVjb2RlciBhbmQgUHJlZml4RGVjb2RlcgorICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gc2VsZi5tb2RlLl9fbGVuX18oc2VsZikKKyAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBzZWxmLm1vZGUuX19pdGVyX18oc2VsZikKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOiByZXR1cm4gc2VsZi5tb2RlLl9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KQorICAgIGRlZiBiaXRQYXR0ZXJuKHNlbGYsIGluZGV4KTogcmV0dXJuIHNlbGYubW9kZS5iaXRQYXR0ZXJuKHNlbGYsIGluZGV4KQorICAgIGRlZiBsZW5ndGgoc2VsZiwgaW5kZXgpOiByZXR1cm4gc2VsZi5tb2RlLmxlbmd0aChzZWxmLCBpbmRleCkKKyAgICBkZWYgZGVjb2RlUGVlayhzZWxmLCBkYXRhKTogcmV0dXJuIHNlbGYubW9kZS5kZWNvZGVQZWVrKHNlbGYsIGRhdGEpCisgICAgI2dlbmVyYWwgcm91dGluZXMKKyAgICBkZWYgdmFsdWUoc2VsZiwgaW5kZXgsIGV4dHJhPU5vbmUpOgorICAgICAgICAiIiJHZXQgdmFsdWUgb2Ygc3ltYm9sIGZvciBjb21wdXRhdGlvbnMuCisgICAgICAgIE92ZXJyaWRlIHdoZXJlIG5lZWRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGV4dHJhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndmFsdWU6IG5vIGV4dHJhIGZvciB0aGlzIHN5bWJvbCcpCisgICAgICAgIHJldHVybiBpbmRleAorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgIiIiR2l2ZSBtbmVtb25pYyBvZiBzeW1ib2wuCisgICAgICAgIE92ZXJyaWRlIHdoZXJlIG5lZWRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzdHIoc2VsZi52YWx1ZShpbmRleCkpCisKKyAgICBkZWYgY2FsbGJhY2soc2VsZiwgc3ltYm9sKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwbGFuYXRpb24oc3ltYm9sLmluZGV4KQorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4KToKKyAgICAgICAgIiIiTG9uZyBleHBsYW5hdGlvbiBvZiB0aGUgdmFsdWUgZnJvbSB0aGUgbnVtZXJpYyB2YWx1ZQorICAgICAgICBUaGlzIGlzIGEgZGVmYXVsdCByb3V0aW5lLgorICAgICAgICBZb3UgY2FuIGN1c3RvbWl6ZSBpbiB0aHJlZSB3YXlzOgorICAgICAgICAtIHNldCBkZXNjcmlwdGlvbiB0byBhZGQgc29tZSB0ZXh0CisgICAgICAgIC0gb3ZlcnJpZGUgdG8gZ2V0IG1vcmUgY29udHJvbAorICAgICAgICAtIHNldCBjYWxsYmFjayB0byBtYWtlIGl0IGRlcGVuZGVudCBvbiB5b3UgbG9jYWwgdmFyaWFibGVzCisgICAgICAgICIiIgorICAgICAgICB2YWx1ZSA9IHNlbGYudmFsdWUoaW5kZXgpCisgICAgICAgIHJldHVybiAnezB9ezF9OiB7Mn0nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb24gYW5kIHNlbGYuZGVzY3JpcHRpb24rJzogJywKKyAgICAgICAgICAgIHNlbGYuYml0UGF0dGVybihpbmRleCksCisgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBleHRyYUJpdHMoc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gMAorCisgICAgI1JvdXRpbmVzIHRoYXQgdXNlIHRoZSBkZWNvZGUgaW50ZXJmYWNlCisgICAgZGVmIHNob3dDb2RlKHNlbGYsIHdpZHRoPTgwKToKKyAgICAgICAgIiIiU2hvdyBhbGwgd29yZHMgb2YgdGhlIGNvZGUgaW4gYSBuaWNlIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgICNtYWtlIHRhYmxlIG9mIGFsbCBzeW1ib2xzIHdpdGggYmluYXJ5IHN0cmluZ3MKKyAgICAgICAgc3ltYm9sU3RyaW5ncyA9IFsKKyAgICAgICAgICAgIChzZWxmLmJpdFBhdHRlcm4ocy5pbmRleCksIHNlbGYubW5lbW9uaWMocy5pbmRleCkpCisgICAgICAgICAgICBmb3IgcyBpbiBzZWxmCisgICAgICAgICAgICBdCisgICAgICAgICNkZXRlcm1pbmUgY29sdW1uIHdpZHRocyB0aGUgd2F5IExpc3AgcHJvZ3JhbW1lcnMgZG8gaXQKKyAgICAgICAgbGVmdENvbFdpZHRoLCByaWdodENvbFdpZHRoID0gbWFwKG1heCwgbWFwKAorICAgICAgICAgICAgbWFwLAorICAgICAgICAgICAgcmVwZWF0KGxlbiksCisgICAgICAgICAgICB6aXAoKnN5bWJvbFN0cmluZ3MpCisgICAgICAgICAgICApKQorICAgICAgICBjb2x3aWR0aCA9IGxlZnRDb2xXaWR0aCtyaWdodENvbFdpZHRoCisgICAgICAgIGNvbHVtbnMgPSA4MS8vKGNvbHdpZHRoKzIpCisgICAgICAgIHJvd3MgPSAtKC1sZW4oc3ltYm9sU3RyaW5ncykvL2NvbHVtbnMpCisgICAgICAgIGRlZiBqdXN0aWZ5KGJzKToKKyAgICAgICAgICAgIGIscyA9IGJzCisgICAgICAgICAgICByZXR1cm4gYi5yanVzdChsZWZ0Q29sV2lkdGgpKyc6JytzLmxqdXN0KHJpZ2h0Q29sV2lkdGgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKHJvd3MpOgorICAgICAgICAgICAgcHJpbnQoJyAnLmpvaW4obWFwKGp1c3RpZnksIHN5bWJvbFN0cmluZ3NbaTo6cm93c10pKS5yc3RyaXAoKSkKKworICAgIGRlZiByZWFkVHVwbGUoc2VsZiwgc3RyZWFtKToKKyAgICAgICAgIiIiUmVhZCBzeW1ib2wgZnJvbSBzdHJlYW0uIFJldHVybnMgc3ltYm9sLCBsZW5ndGguCisgICAgICAgICIiIgorICAgICAgICBsZW5ndGgsIHN5bWJvbCA9IHNlbGYuZGVjb2RlUGVlayhzdHJlYW0ucGVlayhzZWxmLm1heExlbmd0aCkpCisgICAgICAgIHN0cmVhbS5wb3MgKz0gbGVuZ3RoCisgICAgICAgIHJldHVybiBsZW5ndGgsIHN5bWJvbAorCisgICAgZGVmIHJlYWRUdXBsZUFuZEV4dHJhKHNlbGYsIHN0cmVhbSk6CisgICAgICAgIHJldHVybiBzZWxmLnJlYWRUdXBsZShzdHJlYW0pKygwLCBOb25lKQorCitjbGFzcyBXaXRoRXh0cmEoQ29kZSk6CisgICAgIiIiRXh0ZW5zaW9uIGZvciBDb2RlIHNvIHRoYXQgc3ltYm9sIG1heSBoYXZlIGV4dHJhIGJpdHMgYXNzb2NpYXRlZC4KKyAgICBJZiB5b3Ugc3VwcGx5IGFuIGV4dHJhVGFibGUsIHlvdSBjYW4gdXNlIGV4dHJhQml0cworICAgIFlvdSBjYW4gZGVmaW5lIGFuIGV4dHJhVGFibGUsCisgICAgd2hpY2ggYWxsb3dzIHRvIGNhbGwgZXh0cmFCaXRzIHRvIGdldCB0aGUgbnVtYmVyIG9mIGV4dHJhQml0cy4KKyAgICBPdGhlcndpc2UsIHlvdSBjYW4gc3VwcGx5IGV4dHJhQml0cyB5b3Vyc2VsZi4KKyAgICBSb3V0aW5lIHJlYWRUdXBsZUFuZEV4dHJhIG5vdyByZWFkcyB0aGUgZXh0cmEgYml0cyB0b28uCisgICAgVmFsdWUgcHJvYmFibHkgbmVlZHMgdG8gYmUgb3ZlcnJpZGRlbjsgc2VlIEVudW1lcmF0b3IuCisgICAgTm90ZTogdGhpcyBkb2VzIG5vdCBnaXZlIHlvdSBhbiBkZWNvZGVUYWJsZS4KKyAgICAiIiIKKyAgICAjcmVkZWZpbmUgdGhlc2UgaWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIGFuIGV4dHJhVGFibGUKKyAgICBkZWYgZXh0cmFCaXRzKHNlbGYsIGluZGV4KToKKyAgICAgICAgIiIiR2V0IHRoZSBudW1iZXIgb2YgZXh0cmEgYml0cyBmb3IgdGhpcyBzeW1ib2wuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5leHRyYVRhYmxlW2luZGV4XQorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgIiIiVGhpcyB2YWx1ZSBtdXN0IGJlIGluZGVwZW5kZW50IG9mIGV4dHJhLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHN0cihpbmRleCkKKworICAgIGRlZiByZWFkVHVwbGVBbmRFeHRyYShzZWxmLCBzdHJlYW0pOgorICAgICAgICAiIiJSZWFkIHN5bWJvbCBhbmQgZXh0cmFiaXRzIGZyb20gc3RyZWFtLgorICAgICAgICBSZXR1cm5zIHN5bWJvbCBsZW5ndGgsIHN5bWJvbCwgZXh0cmFCaXRzLCBleHRyYQorICAgICAgICA+Pj4gb2xsZWtlLnBvcyA9IDYKKyAgICAgICAgPj4+IE1ldGFibG9ja0xlbmd0aEFscGhhYmV0KCkucmVhZFR1cGxlQW5kRXh0cmEob2xsZWtlKQorICAgICAgICAoMiwgU3ltYm9sKE1MRU4sIDQpLCAxNiwgNDYpCisgICAgICAgICIiIgorICAgICAgICBsZW5ndGgsIHN5bWJvbCA9IHNlbGYuZGVjb2RlUGVlayhzdHJlYW0ucGVlayhzZWxmLm1heExlbmd0aCkpCisgICAgICAgIHN0cmVhbS5wb3MgKz0gbGVuZ3RoCisgICAgICAgIGV4dHJhQml0cyA9IHNlbGYuZXh0cmFCaXRzKHN5bWJvbC5pbmRleCkKKyAgICAgICAgcmV0dXJuIGxlbmd0aCwgc3ltYm9sLCBleHRyYUJpdHMsIHN0cmVhbS5yZWFkKGV4dHJhQml0cykKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmE9Tm9uZSk6CisgICAgICAgICIiIkV4cGFuZGVkIHZlcnNpb24gb2YgQ29kZS5leHBsYW5hdGlvbiBzdXBwb3J0aW5nIGV4dHJhIGJpdHMuCisgICAgICAgIElmIHlvdSBkb24ndCBzdXBwbHkgZXh0cmEsIGl0IGlzIG5vdCBtZW50aW9uZWQuCisgICAgICAgICIiIgorICAgICAgICBleHRyYUJpdHMgPSAwIGlmIGV4dHJhIGlzIE5vbmUgZWxzZSBzZWxmLmV4dHJhQml0cyhpbmRleCkKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ2V4dHJhVGFibGUnKToKKyAgICAgICAgICAgIGZvcm1hdFN0cmluZyA9ICd7MH17M30nCisgICAgICAgICAgICBsbyA9IGhpID0gdmFsdWUgPSBzZWxmLnZhbHVlKGluZGV4LCBleHRyYSkKKyAgICAgICAgZWxpZiBleHRyYUJpdHM9PTA6CisgICAgICAgICAgICBmb3JtYXRTdHJpbmcgPSAnezB9ezJ9OiB7M30nCisgICAgICAgICAgICBsbywgaGkgPSBzZWxmLnNwYW4oaW5kZXgpCisgICAgICAgICAgICB2YWx1ZSA9IGxvCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3JtYXRTdHJpbmcgPSAnezB9ezF9IHsyfTogezN9LXs0fTsgezN9K3s1fT17Nn0nCisgICAgICAgICAgICBsbywgaGkgPSBzZWxmLnNwYW4oaW5kZXgpCisgICAgICAgICAgICB2YWx1ZSA9IGxvK2V4dHJhCisgICAgICAgIHJldHVybiBmb3JtYXRTdHJpbmcuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiBhbmQgc2VsZi5kZXNjcmlwdGlvbisnOiAnLAorICAgICAgICAgICAgJ3gnKmV4dHJhQml0cywKKyAgICAgICAgICAgIHNlbGYuYml0UGF0dGVybihpbmRleCksCisgICAgICAgICAgICBsbywgaGksCisgICAgICAgICAgICBleHRyYSwKKyAgICAgICAgICAgIHZhbHVlLAorICAgICAgICAgICAgKQorCisgICAgZGVmIGNhbGxiYWNrKHNlbGYsIHN5bWJvbCwgZXh0cmEpOgorICAgICAgICByZXR1cm4gc2VsZi5leHBsYW5hdGlvbihzeW1ib2wuaW5kZXgsIGV4dHJhKQorCitjbGFzcyBCb29sQ29kZShDb2RlKToKKyAgICAiIiJTYW1lIGFzIENvZGUoYml0TGVuZ3RoPTEpLCBidXQgc2hvd3MgYSBib29sZWFuLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsICoqYXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYml0TGVuZ3RoPTEsICoqYXJncykKKworICAgIGRlZiB2YWx1ZShzZWxmLCBpbmRleCwgZXh0cmE9Tm9uZSk6CisgICAgICAgIHJldHVybiBib29sKHN1cGVyKCkudmFsdWUoaW5kZXgsIGV4dHJhKSkKKworY2xhc3MgRW51bWVyYXRvcihXaXRoRXh0cmEpOgorICAgICIiIkNvZGUgdGhhdCBpcyBkZWZpbmVkIGJ5IHRoZSBFeHRyYVRhYmxlLgorICAgIGV4dHJhVGFibGUgaXMgYSBjbGFzcyB2YXJpYWJsZSB0aGF0IGNvbnRhaW5zCisgICAgdGhlIGV4dHJhQml0cyBvZiB0aGUgc3ltYm9scyBmcm9tIDAKKyAgICB2YWx1ZTAgY29udGFpbnMgdGhlIHZhbHVlIG9mIHN5bWJvbCAwCisgICAgZW5jb2RpbmdzIGlzIG5vdCBuZWNjZXNzYXJ5LCBidXQgYWxsb3dlZC4KKyAgICBOb3RlOiBwbGFjZSBmb3IgRml4ZWRDb2RlIHRvIG1ha2Ugc3VyZSBleHRyYUJpdHMgd29ya3MKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZT1Ob25lLCAqKmFyZ3MpOgorICAgICAgICAjaWYgdGhlcmUgaXMgbm8gZGVjb2RlVGFibGUgdG8gZGV0ZXJtaW5lIGxlbmd0aCwgY29tcHV0ZSBpdCBvdXJzZWx2ZXMKKyAgICAgICAgaWYgJ2RlY29kZVRhYmxlJyBub3QgaW4gYXJnczoKKyAgICAgICAgICAgIGFyZ3NbJ2FscGhhYmV0U2l6ZSddID0gbGVuKHNlbGYuZXh0cmFUYWJsZSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCAqKmFyZ3MpCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmV4dHJhVGFibGUpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgorICAgICAgICAiIiJGYXN0ZXIgdGhhbiBQcmVmaXhEZWNvZGVyCisgICAgICAgICIiIgorICAgICAgICBpZiBpbmRleD49bGVuKHNlbGYuZXh0cmFUYWJsZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBzeW1ib2wge31be31dIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGluZGV4KSkKKyAgICAgICAgcmV0dXJuIFN5bWJvbChzZWxmLCBpbmRleCkKKworICAgIGRlZiB2YWx1ZShzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICAiIiJPdmVycmlkZSBpZiB5b3UgZG9uJ3QgZGVmaW5lIHZhbHVlMCBhbmQgZXh0cmFUYWJsZQorICAgICAgICAiIiIKKyAgICAgICAgbG93ZXIsIHVwcGVyID0gc2VsZi5zcGFuKGluZGV4KQorICAgICAgICB2YWx1ZSA9IGxvd2VyKyhleHRyYSBvciAwKQorICAgICAgICBpZiB2YWx1ZT51cHBlcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlOiBleHRyYSBvdXQgb2YgcmFuZ2UnKQorICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGRlZiBzcGFuKHNlbGYsIGluZGV4KToKKyAgICAgICAgIiIiR2l2ZSB0aGUgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGluIGEgdHVwbGUKKyAgICAgICAgVXNlZnVsIGZvciBtbmVtb25pYyBhbmQgZXhwbGFuYXRpb24KKyAgICAgICAgIiIiCisgICAgICAgIGxvd2VyID0gc2VsZi52YWx1ZTArc3VtKDE8PHggZm9yIHggaW4gc2VsZi5leHRyYVRhYmxlWzppbmRleF0pCisgICAgICAgIHVwcGVyID0gbG93ZXIrKDE8PHNlbGYuZXh0cmFUYWJsZVtpbmRleF0pCisgICAgICAgIHJldHVybiBsb3dlciwgdXBwZXItMQorCisjPT09PT09PT09PT09PT09PT09PT09PUNvZGUgc3ViY2xhc3Nlcz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjQWxwaGFiZXRzIHVzZWQgaW4gdGhlIG1ldGFibG9jayBoZWFkZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjRm9yIHByZWZpeCBjb2RlcworY2xhc3MgUHJlZml4Q29kZUhlYWRlcihXaXRoRXh0cmEpOgorICAgICIiIkhlYWRlciBvZiBwcmVmaXggY29kZXMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGVuYW1lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygnUEZYJywgYml0TGVuZ3RoPTIpCisgICAgICAgICN0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBjb2RlIHRoYXQgaXQgZGVzY3JpYmVzCisgICAgICAgIHNlbGYuY29kZW5hbWUgPSBjb2RlbmFtZQorCisgICAgZGVmIGV4dHJhQml0cyhzZWxmLCBpbmRleCk6CisgICAgICAgIHJldHVybiAyIGlmIGluZGV4PT0xIGVsc2UgMAorCisgICAgZGVmIHZhbHVlKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgICIiIlJldHVybnMgKCdTaW1wbGUnLCAjY29kZXdvcmRzKSBvciAoJ0NvbXBsZXgnLCBIU0tJUCkKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGluZGV4PT0xOgorICAgICAgICAgICAgaWYgZXh0cmE+MzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd2YWx1ZTogZXh0cmEgb3V0IG9mIHJhbmdlJykKKyAgICAgICAgICAgIHJldHVybiAnU2ltcGxlJywgZXh0cmErMQorICAgICAgICBpZiBleHRyYToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlOiBleHRyYSBvdXQgb2YgcmFuZ2UnKQorICAgICAgICByZXR1cm4gJ0NvbXBsZXgnLCBpbmRleAorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgIGlmIGluZGV4PT0xOgorICAgICAgICAgICAgcmV0dXJuICd7fSBpcyBzaW1wbGUgd2l0aCB7fSBjb2RlIHdvcmR7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgIHNlbGYuY29kZW5hbWUsIGV4dHJhKzEsICdzJyBpZiBleHRyYSBlbHNlICcnKQorICAgICAgICBsZW5ndGhzID0gWzEsIDIsIDMsIDQsIDAsIDUsIDE3LCA2XQorICAgICAgICByZXR1cm4gJ3t9IGlzIGNvbXBsZXggd2l0aCBsZW5ndGhzIHt9Li4uJy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmNvZGVuYW1lLAorICAgICAgICAgICAgJywnLmpvaW4oCisgICAgICAgICAgICAgICAgbWFwKHN0ciwgbGVuZ3Roc1tpbmRleDppbmRleCs1XSkpCisgICAgICAgICAgICApCisKK2NsYXNzIFRyZWVTaGFwZUFsaGFiZXQoQm9vbENvZGUpOgorICAgICIiIlRoZSBiaXQgdXNlZCB0byBpbmRpY2F0ZSBpZiBmb3VyIHdvcmQgY29kZSBpcyAiZGVlcCIgb3IgIndpZGUiCisgICAgIiIiCisgICAgbmFtZSA9ICdTSEFQRScKKyAgICBkZWYgdmFsdWUoc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gWygyLDIsMiwyKSwgKDEsMiwzLDMpXVtpbmRleF0KKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCk6CisgICAgICAgIHJldHVybiBzdHIoYm9vbChpbmRleCkpKyc6IGxlbmd0aHMge30se30se30se30nLmZvcm1hdCgqc2VsZi52YWx1ZShpbmRleCkpCisKK2NsYXNzIExlbmd0aE9mTGVuZ3RoQWxwaGFiZXQoQ29kZSk6CisgICAgIiIiRm9yIHVzZSBpbiBkZWNvZGluZyBjb21wbGV4IGNvZGUgZGVzY3JpcHRvcnMuCisgICAgPj4+IGxlbmd0aE9mTGVuZ3RoQWxwaGFiZXQgPSBMZW5ndGhPZkxlbmd0aEFscGhhYmV0KCcnKQorICAgID4+PiBwcmludChsZW5ndGhPZkxlbmd0aEFscGhhYmV0WzJdKQorICAgIGNvZGVkIHdpdGggMiBiaXRzCisgICAgPj4+IGxlbihsZW5ndGhPZkxlbmd0aEFscGhhYmV0WzBdKQorICAgIDIKKyAgICA+Pj4gW2xlbihsZW5ndGhPZkxlbmd0aEFscGhhYmV0W3hdKSBmb3IgeCBpbiByYW5nZSg2KV0KKyAgICBbMiwgNCwgMywgMiwgMiwgNF0KKyAgICA+Pj4gbGVuZ3RoT2ZMZW5ndGhBbHBoYWJldC5zaG93Q29kZSgpCisgICAgICAwMDpza2lwcGVkICAgICAgICAgICAgIDAxOmNvZGVkIHdpdGggNCBiaXRzIDAxMTE6Y29kZWQgd2l0aCAxIGJpdHMKKyAgICAgIDEwOmNvZGVkIHdpdGggMyBiaXRzICAwMTE6Y29kZWQgd2l0aCAyIGJpdHMgMTExMTpjb2RlZCB3aXRoIDUgYml0cworICAgICIiIgorICAgIGRlY29kZVRhYmxlID0geworICAgICAgICAgMGIwMDowLCAgICAgMGIxMDozLAorICAgICAgIDBiMDExMToxLCAgICAgMGIwMTo0LAorICAgICAgICAwYjAxMToyLCAgIDBiMTExMTo1LAorICAgICAgIH0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsICoqYXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgZGVjb2RlVGFibGU9c2VsZi5kZWNvZGVUYWJsZSwgKiphcmdzKQorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgaWYgaW5kZXg9PTA6IHJldHVybiAnc2tpcHBlZCcKKyAgICAgICAgcmV0dXJuICdjb2RlZCB3aXRoIHt9IGJpdHMnLmZvcm1hdChpbmRleCkKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmE9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmLmRlc2NyaXB0aW9uKyc6ICcrc2VsZi5tbmVtb25pYyhpbmRleCkKKworY2xhc3MgTGVuZ3RoQWxwaGFiZXQoV2l0aEV4dHJhKToKKyAgICAiIiJMZW5ndGggb2Ygc3ltYm9scworICAgIFVzZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiBhIGNvZGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGFscGhhYmV0U2l6ZT0xOCkKKworICAgIGRlZiBleHRyYUJpdHMoc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gezE2OjIsIDE3OjN9LmdldChpbmRleCwgMCkKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gJ3VudXNlZCcKKyAgICAgICAgZWxpZiBpbmRleD09MTY6IHJldHVybiAncmVwIHh4JworICAgICAgICBlbGlmIGluZGV4PT0xNzogcmV0dXJuICd6ZXJvIHh4eCcKKyAgICAgICAgZWxzZTogcmV0dXJuICdsZW4ge30nLmZvcm1hdChpbmRleCkKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICByZXR1cm4gc2VsZi5kZXNjcmlwdGlvbi5mb3JtYXQoc2VsZltpbmRleF0sIGV4dHJhKQorCisgICAgZGVmIHZhbHVlKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgICN0aGUgY2FsbGVyIGdvdCB0aGUgbGVuZ3RoIGFscmVhZHksIHNvIGV4dHJhIGlzIGVub3VnaAorICAgICAgICByZXR1cm4gZXh0cmEKKworI1N0cmVhbSBoZWFkZXIKK2NsYXNzIFdpbmRvd1NpemVBbHBoYWJldChDb2RlKToKKyAgICAiIiJUaGUgYWxwaGFiZXQgdXNlZCBmb3Igd2luZG93IHNpemUgaW4gdGhlIHN0cmVhbSBoZWFkZXIuCisgICAgPj4+IFdpbmRvd1NpemVBbHBoYWJldCgpWzEwXS5leHBsYW5hdGlvbigpCisgICAgJ3dpbmRvd3NpemU9KDE8PDEwKS0xNj0xMDA4JworICAgICIiIgorICAgIGRlY29kZVRhYmxlID0geworICAgICAgICAwYjAxMDAwMDE6IDEwLCAgIDBiMTEwMDAwMTogMTQsICAgMGIwMDExOiAxOCwgICAwYjEwMTE6IDIyLAorICAgICAgICAwYjAxMTAwMDE6IDExLCAgIDBiMTExMDAwMTogMTUsICAgMGIwMTAxOiAxOSwgICAwYjExMDE6IDIzLAorICAgICAgICAwYjEwMDAwMDE6IDEyLCAgICAgICAgIDBiMDogMTYsICAgMGIwMTExOiAyMCwgICAwYjExMTE6IDI0LAorICAgICAgICAwYjEwMTAwMDE6IDEzLCAgIDBiMDAwMDAwMTogMTcsICAgMGIxMDAxOiAyMSwKKyAgICAgICAgMGIwMDEwMDAxOiBOb25lLAorICAgICAgICB9CisKKyAgICBuYW1lID0gJ1dTSVpFJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgZGVjb2RlVGFibGU9c2VsZi5kZWNvZGVUYWJsZSkKKworICAgIGRlZiB2YWx1ZShzZWxmLCBpbmRleCk6CisgICAgICAgICNtaXNzaW5nIHZhbHVlIGdpdmVzIGluZGV4IE5vbmUKKyAgICAgICAgaWYgaW5kZXggaXMgTm9uZTogcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuICgxPDxpbmRleCktMTYKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCk6CisgICAgICAgIHJldHVybiAnd2luZG93c2l6ZT0oMTw8e30pLTE2PXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBpbmRleCwgKDE8PGluZGV4KS0xNikKKworI01ldGFibG9jaworY2xhc3MgTWV0YWJsb2NrTGVuZ3RoQWxwaGFiZXQoV2l0aEV4dHJhKToKKyAgICAiIiJVc2VkIGZvciB0aGUgbWV0YSBibG9jayBsZW5ndGg7CisgICAgYWxzbyBpbmRpY2F0ZXMgYSBibG9jayB3aXRoIG5vIGRhdGEKKyAgICA+Pj4gbWV0YWJsb2NrTGVuZ3RoQWxwaGFiZXQgPSBNZXRhYmxvY2tMZW5ndGhBbHBoYWJldCgpCisgICAgPj4+IG1ldGFibG9ja0xlbmd0aEFscGhhYmV0WzBdOyBzdHIobWV0YWJsb2NrTGVuZ3RoQWxwaGFiZXRbMF0pCisgICAgU3ltYm9sKE1MRU4sIDApCisgICAgJ2VtcHR5JworICAgID4+PiBtZXRhYmxvY2tMZW5ndGhBbHBoYWJldFszXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogTm8gc3ltYm9sIE1ldGFibG9ja0xlbmd0aEFscGhhYmV0WzNdCisgICAgPj4+IHByaW50KG1ldGFibG9ja0xlbmd0aEFscGhhYmV0WzRdKQorICAgIGhoaGgwMAorICAgID4+PiBtZXRhYmxvY2tMZW5ndGhBbHBoYWJldFs0XS52YWx1ZSgweDEwMDApCisgICAgNDA5NworICAgID4+PiBtZXRhYmxvY2tMZW5ndGhBbHBoYWJldFs1XS52YWx1ZSgweDEwMDApCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBJbnZhbGlkU3RyZWFtOiBaZXJvcyBpbiBoaWdoIG5pYmJsZSBvZiBNTEVOCisgICAgPj4+IG1ldGFibG9ja0xlbmd0aEFscGhhYmV0WzVdLmV4cGxhbmF0aW9uKDB4MTIzNDUpCisgICAgJ2RhdGEgbGVuZ3RoOiAxMjM0NWgrMT03NDU2NicKKyAgICA+Pj4gbWV0YWJsb2NrTGVuZ3RoQWxwaGFiZXQuc2hvd0NvZGUoKQorICAgIDAwOmhoaGgwMCAgIDEwOmhoaGhoaDEwIDAxOmhoaGhoMDEgIDExOmVtcHR5CisgICAgIiIiCisgICAgZGVjb2RlVGFibGUgPSB7MGIxMTowLCAwYjAwOjQsIDBiMDE6NSwgMGIxMDo2fQorCisgICAgbmFtZSA9ICdNTEVOJworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGRlY29kZVRhYmxlPXNlbGYuZGVjb2RlVGFibGUpCisKKyAgICBkZWYgZXh0cmFCaXRzKHNlbGYsIGluZGV4KToKKyAgICAgICAgcmV0dXJuIGluZGV4KjQKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gJ2VtcHR5JworICAgICAgICByZXR1cm4gJ2gnKihzZWxmLmV4dHJhQml0cyhpbmRleCkvLzQpK3NlbGYuYml0UGF0dGVybihpbmRleCkKKworICAgIGRlZiB2YWx1ZShzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICBleHRyYUJpdHMgPSBzZWxmLmV4dHJhQml0cyhpbmRleCkKKyAgICAgICAgaWYgbm90IDA8PWV4dHJhPDE8PGV4dHJhQml0czoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlOiBleHRyYSBvdXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiBpbmRleD09MDogcmV0dXJuIDAKKyAgICAgICAgaWYgaW5kZXg+NCBhbmQgZXh0cmE+PmV4dHJhQml0cy00PT0wOiByYWlzZSBJbnZhbGlkU3RyZWFtKAorICAgICAgICAgICAgJ1plcm9zIGluIGhpZ2ggbmliYmxlIG9mIE1MRU4nKQorICAgICAgICByZXR1cm4gZXh0cmErMQorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gJzExOiBlbXB0eSBibG9jaycKKyAgICAgICAgZXh0cmFCaXRzID0gc2VsZi5leHRyYUJpdHMoaW5kZXgpCisgICAgICAgIHJldHVybiAnZGF0YSBsZW5ndGg6IHs6MHt9eH1oKzE9e30nLmZvcm1hdChleHRyYSwgZXh0cmFCaXRzLy80LCBleHRyYSsxKQorCisKK2NsYXNzIFJlc2VydmVkQWxwaGFiZXQoQm9vbENvZGUpOgorICAgICIiIlRoZSByZXNlcnZlZCBiaXQgdGhhdCBtdXN0IGJlIHplcm8uCisgICAgIiIiCisgICAgbmFtZSA9ICdSU1ZEJworICAgIGRlZiB2YWx1ZShzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4OiByYWlzZSBWYWx1ZUVycm9yKCdSZXNlcnZlZCBiaXQgaXMgbm90IHplcm8nKQorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4KToKKyAgICAgICAgcmV0dXJuICdSZXNlcnZlZCAobXVzdCBiZSB6ZXJvKScKKworY2xhc3MgRmlsbGVyQWxwaGFiZXQoQ29kZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIHN0cmVhbVBvcyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oJ1NLSVAnLCBiaXRMZW5ndGg9KC1zdHJlYW1Qb3MpJjcpCisKKyAgICBkZWYgZXhwbGFuYXRpb24oc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gJ3t9IGJpdHt9IGlnbm9yZWQnLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYubGVuZ3RoKGluZGV4KSwKKyAgICAgICAgICAgICcnIGlmIHNlbGYubGVuZ3RoKGluZGV4KT09MSBlbHNlICdzJywKKyAgICAgICAgICAgICkKKworY2xhc3MgU2tpcExlbmd0aEFscGhhYmV0KFdpdGhFeHRyYSk6CisgICAgIiIiVXNlZCBmb3IgdGhlIHNraXAgbGVuZ3RoIGluIGFuIGVtcHR5IG1ldGFibG9jaworICAgID4+PiBza2lwTGVuZ3RoQWxwaGFiZXQgPSBTa2lwTGVuZ3RoQWxwaGFiZXQoKQorICAgID4+PiBza2lwTGVuZ3RoQWxwaGFiZXRbMF07IHN0cihza2lwTGVuZ3RoQWxwaGFiZXRbMF0pCisgICAgU3ltYm9sKFNLSVAsIDApCisgICAgJ2VtcHR5JworICAgID4+PiBza2lwTGVuZ3RoQWxwaGFiZXRbNF0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFZhbHVlRXJyb3I6IGluZGV4IG91dCBvZiByYW5nZQorICAgID4+PiBwcmludChza2lwTGVuZ3RoQWxwaGFiZXRbM10pCisgICAgaGhoaGhoMTEKKyAgICA+Pj4gc2tpcExlbmd0aEFscGhhYmV0WzJdLnZhbHVlKDB4MTAwMCkKKyAgICA0MDk3CisgICAgPj4+IHNraXBMZW5ndGhBbHBoYWJldFszXS52YWx1ZSgweDEwMDApCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBJbnZhbGlkU3RyZWFtOiBaZXJvcyBpbiBoaWdoIGJ5dGUgb2YgU0tJUEJZVEVTCisgICAgPj4+IHNraXBMZW5ndGhBbHBoYWJldFszXS5leHBsYW5hdGlvbigweDEyMzQ1KQorICAgICdza2lwIGxlbmd0aDogMTIzNDVoKzE9NzQ1NjYnCisgICAgPj4+IHNraXBMZW5ndGhBbHBoYWJldC5zaG93Q29kZSgpCisgICAgMDA6ZW1wdHkgICAgMDE6aGgwMSAgICAgMTA6aGhoaDEwICAgMTE6aGhoaGhoMTEKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oJ1NLSVAnLCBiaXRMZW5ndGg9MikKKworICAgIGRlZiBleHRyYUJpdHMoc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gaW5kZXgqOAorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgaWYgaW5kZXg9PTA6IHJldHVybiAnZW1wdHknCisgICAgICAgIHJldHVybiAnaCcqKHNlbGYuZXh0cmFCaXRzKGluZGV4KS8vNCkrc2VsZi5iaXRQYXR0ZXJuKGluZGV4KQorCisgICAgZGVmIHZhbHVlKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgIGV4dHJhQml0cyA9IHNlbGYuZXh0cmFCaXRzKGluZGV4KQorICAgICAgICBpZiBub3QgMDw9ZXh0cmE8MTw8ZXh0cmFCaXRzOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndmFsdWU6IGV4dHJhIG91dCBvZiByYW5nZScpCisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gMAorICAgICAgICBpZiBpbmRleD4xIGFuZCBleHRyYT4+ZXh0cmFCaXRzLTg9PTA6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkU3RyZWFtKCdaZXJvcyBpbiBoaWdoIGJ5dGUgb2YgU0tJUEJZVEVTJykKKyAgICAgICAgcmV0dXJuIGV4dHJhKzEKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICBpZiBpbmRleD09MDogcmV0dXJuICcwMDogbm8gc2tpcCcKKyAgICAgICAgZXh0cmFCaXRzID0gc2VsZi5leHRyYUJpdHMoaW5kZXgpCisgICAgICAgIHJldHVybiAnc2tpcCBsZW5ndGg6IHs6e314fWgrMT17fScuZm9ybWF0KGV4dHJhLCBleHRyYUJpdHMvLzgsIGV4dHJhKzEpCisKKworY2xhc3MgVHlwZUNvdW50QWxwaGFiZXQoRW51bWVyYXRvcik6CisgICAgIiIiVXNlZCBmb3IgZ2l2aW5nIGJsb2NrIHR5cGUgY291bnRzIGFuZCB0cmVlIGNvdW50cy4KKyAgICA+Pj4gVHlwZUNvdW50QWxwaGFiZXQoZGVzY3JpcHRpb249JycpLnNob3dDb2RlKCkKKyAgICAgICAwOjAgICAgICAgICAgICAwMTAxOnh4LDAxMDEgICAgICAxMDExOnh4eHh4LDEwMTEKKyAgICAwMDAxOjAwMDEgICAgICAgICAxMTAxOnh4eHh4eCwxMTAxICAwMTExOnh4eCwwMTExCisgICAgMTAwMTp4eHh4LDEwMDEgICAgMDAxMTp4LDAwMTEgICAgICAgMTExMTp4eHh4eHh4LDExMTEKKyAgICAiIiIKKyAgICBkZWNvZGVUYWJsZSA9IHsKKyAgICAgICAgICAgICAwYjA6IDAsICAgMGIxMDAxOiA1LAorICAgICAgICAgIDBiMDAwMTogMSwgICAwYjEwMTE6IDYsCisgICAgICAgICAgMGIwMDExOiAyLCAgIDBiMTEwMTogNywKKyAgICAgICAgICAwYjAxMDE6IDMsICAgMGIxMTExOiA4LAorICAgICAgICAgIDBiMDExMTogNCwKKyAgICAgICAgICB9CisKKyAgICB2YWx1ZTAgPSAxCisgICAgZXh0cmFUYWJsZSA9IFswLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3XQorICAgIG5hbWUgPSAnQlQjJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgKiwgZGVzY3JpcHRpb24pOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKAorICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlY29kZVRhYmxlPXNlbGYuZGVjb2RlVGFibGUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbikKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gJzAnCisgICAgICAgIGlmIGluZGV4PT0xOiByZXR1cm4gJzAwMDEnCisgICAgICAgIHJldHVybiAneCcqKHNlbGYuZXh0cmFCaXRzKGluZGV4KSkrJywnK3NlbGYuYml0UGF0dGVybihpbmRleCkKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICB2YWx1ZSA9IHNlbGYudmFsdWUoaW5kZXgsIGV4dHJhKQorICAgICAgICBkZXNjcmlwdGlvbiA9IHNlbGYuZGVzY3JpcHRpb24KKyAgICAgICAgaWYgdmFsdWU9PTE6IGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25bOi0xXQorICAgICAgICByZXR1cm4gJ3t9OiB7fSB7fScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5tbmVtb25pYyhpbmRleCksCisgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKQorCitjbGFzcyBCbG9ja1R5cGVBbHBoYWJldChDb2RlKToKKyAgICAiIiJUaGUgYmxvY2sgdHlwZXM7IHRoaXMgY29kZSB3b3JrcyBmb3IgYWxsIHRocmVlIGtpbmRzLgorICAgID4+PiBiID0gQmxvY2tUeXBlQWxwaGFiZXQoJ1QnLCBOQkxUWVBFUz01KQorICAgID4+PiBwcmludCgqKHggZm9yIHggaW4gYikpCisgICAgcHJldiArMSAjMCAjMSAjMiAjMyAjNAorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBOQkxUWVBFUywgKiphcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBhbHBoYWJldFNpemU9TkJMVFlQRVMrMiwgKiphcmdzKQorICAgICAgICBzZWxmLk5CTFRZUEVTID0gTkJMVFlQRVMKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gJ3ByZXYnCisgICAgICAgIGVsaWYgaW5kZXg9PTE6IHJldHVybiAnKzEnCisgICAgICAgIGVsc2U6IHJldHVybiAnIycrc3RyKGluZGV4LTIpCisKKyAgICBkZWYgdmFsdWUoc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gaW5kZXgtMgorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4KToKKyAgICAgICAgaWYgaW5kZXg9PTA6IHJldHVybiAnMDogcHJldmlvdXMnCisgICAgICAgIGVsaWYgaW5kZXg9PTE6IHJldHVybiAnMTogaW5jcmVtZW50JworICAgICAgICBlbHNlOiByZXR1cm4gJ1NldCBibG9jayB0eXBlIHRvOiAnK3N0cihpbmRleC0yKQorCitjbGFzcyBCbG9ja0NvdW50QWxwaGFiZXQoRW51bWVyYXRvcik6CisgICAgIiIiQmxvY2sgY291bnRzCisgICAgPj4+IGIgPSBCbG9ja0NvdW50QWxwaGFiZXQoJ0wnKQorICAgID4+PiBwcmludChiWzI1XSkKKyAgICBbMjQqeF06IEJDMTY2MjUtMTY3OTM4NDAKKyAgICAiIiIKKworICAgIHZhbHVlMCA9IDEKKyAgICBleHRyYVRhYmxlID0gWzIsMiwyLDIsMywgMywzLDMsNCw0LCA0LDQsNSw1LDUsIDUsNiw2LDcsOCwgOSwxMCwxMSwxMiwxMywgMjRdCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsICoqYXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYWxwaGFiZXRTaXplPTI2LCAqKmFyZ3MpCisKKyAgICBkZWYgbW5lbW9uaWMoc2VsZiwgaW5kZXgpOgorICAgICAgICBleHRyYUJpdHMgPSBzZWxmLmV4dHJhQml0cyhpbmRleCkKKyAgICAgICAgcmV0dXJuICd7fTogQkN7fS17fScuZm9ybWF0KAorICAgICAgICAgICAgJ3gnKmV4dHJhQml0cyBpZiBpbmRleDw1IGVsc2UgJ1t7fSp4XScuZm9ybWF0KGV4dHJhQml0cyksCisgICAgICAgICAgICAqc2VsZi5zcGFuKGluZGV4KSkKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICByZXR1cm4gJ0Jsb2NrIGNvdW50OiAnK3N1cGVyKCkuZXhwbGFuYXRpb24oaW5kZXgsIGV4dHJhKQorCitjbGFzcyBEaXN0YW5jZVBhcmFtQWxwaGFiZXQoV2l0aEV4dHJhKToKKyAgICAiIiJUaGUgZGlzdGFuY2UgcGFyYW1ldGVycyBOUE9TVEZJWCBhbmQgTkRJUkVDVC4KKyAgICBBbHRob3VnaCB0aGVzZSBhcmUgdHJlYXRlZCBhcyB0d28gaW4gdGhlIGRlc2NyaXB0aW9uLCB0aGlzIGlzIGVhc2llci4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oJ0RJU1QnLCBiaXRMZW5ndGg9MikKKworICAgIGRlZiBleHRyYUJpdHMoc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gNAorCisgICAgZGVmIHZhbHVlKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgICIiIlJldHVybnMgTlBPU1RGSVggYW5kIE5ESVJFQ1Q8PE5QT1NURklYCisgICAgICAgICIiIgorICAgICAgICBpZiBleHRyYT4xNToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ZhbHVlOiBleHRyYSBvdXQgb2YgcmFuZ2UnKQorICAgICAgICByZXR1cm4gaW5kZXgsIGV4dHJhPDxpbmRleAorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgIHJldHVybiAne30gcG9zdGZpeCBiaXRzIGFuZCB7OjA0Yn08PHt9PXt9IGRpcmVjdCBjb2RlcycuZm9ybWF0KAorICAgICAgICAgICAgaW5kZXgsIGV4dHJhLCBpbmRleCwgZXh0cmE8PGluZGV4KQorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgcmV0dXJuICdQRicrc3RyKGluZGV4KQorCitjbGFzcyBMaXRlcmFsQ29udGV4dE1vZGUoQ29kZSk6CisgICAgIiIiRm9yIHRoZSBsaXRlcmFsIGNvbnRleHQgbW9kZXMuCisgICAgPj4+IExpdGVyYWxDb250ZXh0TW9kZSgpLnNob3dDb2RlKCkKKyAgICAwMDpMU0I2ICAgMDE6TVNCNiAgIDEwOlVURjggICAxMTpTaWduZWQKKyAgICA+Pj4gTGl0ZXJhbENvbnRleHRNb2RlKCkuZXhwbGFuYXRpb24oMikKKyAgICAnQ29udGV4dCBtb2RlIGZvciB0eXBlIDk6IDIoVVRGOCknCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgbnVtYmVyPTkpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCdMQycrc3RyKG51bWJlciksIGJpdExlbmd0aD0yKQorICAgICAgICBzZWxmLm51bWJlciA9IG51bWJlcgorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgcmV0dXJuIFsnTFNCNicsICdNU0I2JywgJ1VURjgnLCAnU2lnbmVkJ11baW5kZXhdCisKKyAgICBkZWYgZXhwbGFuYXRpb24oc2VsZiwgaW5kZXgpOgorICAgICAgICByZXR1cm4gJ0NvbnRleHQgbW9kZSBmb3IgdHlwZSB7fToge30oe30pJy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLm51bWJlciwKKyAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgc2VsZi5tbmVtb25pYyhpbmRleCkpCisKK2NsYXNzIFJMRW1heEFscGhhYmV0KEVudW1lcmF0b3IpOgorICAgICIiIlVzZWQgZm9yIGRlc2NyaWJpbmcgdGhlIHJ1biBsZW5ndGggZW5jb2RpbmcgdXNlZCBmb3IgZGVzY3JpYmluZyBjb250ZXh0IG1hcHMuCisgICAgPj4+IFJMRW1heEFscGhhYmV0KCkuc2hvd0NvZGUoKQorICAgIDA6MSAgICAxOm1vcmUKKyAgICAiIiIKKyAgICB2YWx1ZTAgPSAwCisgICAgZXh0cmFUYWJsZSA9IFswLCA0XQorICAgIG5hbWUgPSAnUkxFIycKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCk6CisgICAgICAgIHJldHVybiBbJzEnLCAnbW9yZSddW2luZGV4XQorCisgICAgZGVmIGV4cGxhbmF0aW9uKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgIGRlc2NyaXB0aW9uID0gc2VsZi5kZXNjcmlwdGlvbiBhbmQgc2VsZi5kZXNjcmlwdGlvbisnOiAnCisgICAgICAgIGlmIGluZGV4PT0wOiByZXR1cm4gZGVzY3JpcHRpb24rJ05vIFJMRSBjb2RpbmcnCisgICAgICAgIHJldHVybiAne314eHh4IDE6IFJMRU1BWD17fScuZm9ybWF0KGRlc2NyaXB0aW9uLCBleHRyYSsxKQorCitjbGFzcyBUcmVlQWxwaGFiZXQoV2l0aEV4dHJhKToKKyAgICAiIiJUaGUgYWxwaGFiZXQgdG8gZW51bWVyYXRlIGVudHJpZXMgKGNhbGxlZCB0cmVlcykgaW4gdGhlIGNvbnRleHQgbWFwLgorICAgIHBhcmFtZXRlcnMgYXJlIFJMRU1BWCBhbmQgTlRSRUVTCisgICAgPj4+IHQgPSBUcmVlQWxwaGFiZXQoJycsIFJMRU1BWD0zLCBOVFJFRVM9NSkKKyAgICA+Pj4gbGVuKHQpCisgICAgOAorICAgID4+PiBwcmludCh0WzJdKQorICAgIHh4KzQgemVyb2VzCisgICAgPj4+IHRbM10uZXhwbGFuYXRpb24oMikKKyAgICAnOCswMTA9MTAgemVyb2VzJworICAgID4+PiB0WzBdLnZhbHVlKDApCisgICAgKDEsIDApCisgICAgIiIiCisgICAgbmFtZSA9ICdDTUknCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgKiwgUkxFTUFYLCBOVFJFRVMsICoqYXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYWxwaGFiZXRTaXplPVJMRU1BWCtOVFJFRVMsICoqYXJncykKKyAgICAgICAgc2VsZi5STEVNQVggPSBSTEVNQVgKKyAgICAgICAgc2VsZi5OVFJFRVMgPSBOVFJFRVMKKworICAgIGRlZiBleHRyYUJpdHMoc2VsZiwgaW5kZXgpOgorICAgICAgICBpZiAwPGluZGV4PD1zZWxmLlJMRU1BWDogcmV0dXJuIGluZGV4CisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgbW5lbW9uaWMoc2VsZiwgaW5kZXgpOgorICAgICAgICBpZiBpbmRleD09MDogcmV0dXJuICdtYXAgIzAnCisgICAgICAgIGlmIGluZGV4PD1zZWxmLlJMRU1BWDoKKyAgICAgICAgICAgIHJldHVybiAne30re30gemVyb2VzJy5mb3JtYXQoJ3gnKmluZGV4LCAxPDxpbmRleCkKKyAgICAgICAgcmV0dXJuICdtYXAgI3t9Jy5mb3JtYXQoaW5kZXgtc2VsZi5STEVNQVgpCisKKyAgICBkZWYgdmFsdWUoc2VsZiwgaW5kZXgsIGV4dHJhKToKKyAgICAgICAgIiIiR2l2ZSBjb3VudCBhbmQgdmFsdWUuIiIiCisgICAgICAgIGluZGV4ID0gaW5kZXgKKyAgICAgICAgaWYgaW5kZXg9PTA6IHJldHVybiAxLCAwCisgICAgICAgIGlmIGluZGV4PD1zZWxmLlJMRU1BWDogcmV0dXJuICgxPDxpbmRleCkrZXh0cmEsIDAKKyAgICAgICAgcmV0dXJuIDEsIGluZGV4LXNlbGYuUkxFTUFYCisKKyAgICBkZWYgZXhwbGFuYXRpb24oc2VsZiwgaW5kZXgsIGV4dHJhKToKKyAgICAgICAgZGVzY3JpcHRpb24gPSBzZWxmLmRlc2NyaXB0aW9uIGFuZCBzZWxmLmRlc2NyaXB0aW9uKyc6ICcKKyAgICAgICAgaWYgaW5kZXg9PTA6IHJldHVybiBkZXNjcmlwdGlvbisnbWFwICMwJworICAgICAgICBpZiBpbmRleDw9c2VsZi5STEVNQVg6CisgICAgICAgICAgICByZXR1cm4gJ3t9K3s6MHt9Yn09e30gemVyb2VzJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgKDE8PGluZGV4KSwKKyAgICAgICAgICAgICAgICBleHRyYSwgc2VsZi5leHRyYUJpdHMoaW5kZXgpLAorICAgICAgICAgICAgICAgICgxPDxpbmRleCkrZXh0cmEpCisgICAgICAgIHJldHVybiAne31tYXAgI3t9LXt9PXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIGluZGV4LCBzZWxmLlJMRU1BWCwgaW5kZXgtc2VsZi5STEVNQVgpCisKKyNQcmVmaXggYWxwaGFiZXRzIGZvciB0aGUgZGF0YSBzdHJlYW0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjbGFzcyBMaXRlcmFsQWxwaGFiZXQoQ29kZSk6CisgICAgIiIiQWxwaGFiZXQgb2Ygc3ltYm9scy4KKyAgICAiIiIKKyAgICBtaW5MZW5ndGggPSBtYXhMZW5ndGggPSA4CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bWJlcik6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oJ0wnK3N0cihudW1iZXIpLCBhbHBoYWJldFNpemU9MTw8OCkKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCk6CisgICAgICAgIHJldHVybiBvdXRwdXRDaGFyRm9ybWF0dGVyKGluZGV4KQorCisgICAgZGVmIHZhbHVlKHNlbGYsIGluZGV4LCBleHRyYT1Ob25lKToKKyAgICAgICAgcmV0dXJuIGluZGV4CisKKyAgICBkZWYgZXhwbGFuYXRpb24oc2VsZiwgaW5kZXgsIGV4dHJhPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5tbmVtb25pYyhpbmRleCkKKworY2xhc3MgSW5zZXJ0TGVuZ3RoQWxwaGFiZXQoRW51bWVyYXRvcik6CisgICAgIiIiSW50ZXJuIGNvZGUgZm9yIGluc2VydCBjb3VudHMKKyAgICAiIiIKKyAgICB2YWx1ZTAgPSAwCisgICAgZXh0cmFUYWJsZSA9IFswLDAsMCwwLDAsIDAsMSwxLDIsMiwgMywzLDQsNCw1LCA1LDYsNyw4LDksIDEwLDEyLDE0LDI0XQorCitjbGFzcyBDb3B5TGVuZ3RoQWxwaGFiZXQoRW51bWVyYXRvcik6CisgICAgdmFsdWUwID0gMgorICAgIGV4dHJhVGFibGUgPSBbMCwwLDAsMCwwLCAwLDAsMCwxLDEsIDIsMiwzLDMsNCwgNCw1LDUsNiw3LCA4LDksMTAsMjRdCisKK2NsYXNzIEluc2VydEFuZENvcHlBbHBoYWJldChXaXRoRXh0cmEpOgorICAgICIiIlRoZSBpbnNlcnQgYW5kIGNvcHkgY29kZQorICAgID4+PiBmb3IgeCBpbiByYW5nZSgwLDcwNCw3MDQvLzEzKToKKyAgICAuLi4gICAgcHJpbnQoJ3s6MTBifScuZm9ybWF0KHgpLCBJbnNlcnRBbmRDb3B5QWxwaGFiZXQoKVt4XSkKKyAgICAgICAgICAgICAwIEkwQzImRD0wCisgICAgICAgIDExMDExMCBJNit4QzgmRD0wCisgICAgICAgMTEwMTEwMCBJNUMyMit4eHgmRD0wCisgICAgICAxMDEwMDAxMCBJNEM0CisgICAgICAxMTAxMTAwMCBJM0MxMCt4CisgICAgIDEwMDAwMTExMCBJMTQreHhDOAorICAgICAxMDEwMDAxMDAgSTEwK3h4QzIyK3h4eAorICAgICAxMDExMTEwMTAgSTk4K3h4eHh4QzE0K3h4CisgICAgIDExMDExMDAwMCBJNit4QzcwK3h4eHh4CisgICAgIDExMTEwMDExMCBJMTA5MCtbMTAqeF1DOAorICAgIDEwMDAwMTExMDAgSTI2K3h4eEMzMjYrWzgqeF0KKyAgICAxMDAxMDEwMDEwIEkzMjIrWzgqeF1DMTQreHgKKyAgICAxMDEwMDAxMDAwIEkxOTQrWzcqeF1DNzAreHh4eHgKKyAgICAxMDEwMTExMTEwIEkyMjU5NCtbMjQqeF1DMTA5NCtbMTAqeF0KKyAgICAiIiIKKyAgICBpbnNlcnRMZW5ndGhBbHBoYWJldCA9IEluc2VydExlbmd0aEFscGhhYmV0KE5vbmUpCisgICAgY29weUxlbmd0aEFscGhhYmV0ID0gQ29weUxlbmd0aEFscGhhYmV0KE5vbmUpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtYmVyPScnKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygnSUMnK3N0cihudW1iZXIpLCBiaXRMZW5ndGg9MTApCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIDcwNAorCisgICAgZGVmIGV4dHJhQml0cyhzZWxmLCBpbmRleCk6CisgICAgICAgIGluc2VydFN5bWJvbCwgY29weVN5bWJvbCwgZGlzdDAgPSBzZWxmLnNwbGl0U3ltYm9sKGluZGV4KQorICAgICAgICByZXR1cm4gSW5zZXJ0TGVuZ3RoQWxwaGFiZXQuZXh0cmFUYWJsZVtpbnNlcnRTeW1ib2wuaW5kZXhdICsgXAorICAgICAgICAgICAgQ29weUxlbmd0aEFscGhhYmV0LmV4dHJhVGFibGVbY29weVN5bWJvbC5pbmRleF0KKworICAgIGRlZiBzcGxpdFN5bWJvbChzZWxmLCBpbmRleCk6CisgICAgICAgICIiIkdpdmUgcmVsZXZhbnQgdmFsdWVzIGZvciBjb21wdXRhdGlvbnM6CisgICAgICAgIChpbnNlcnRTeW1ib2wsIGNvcHlTeW1ib2wsIGRpc3QwZmxhZykKKyAgICAgICAgIiIiCisgICAgICAgICNkZXRlcm1pbmUgaW5zZXJ0IGFuZCBjb3B5IHVwcGVyIGJpdHMgZnJvbSB0YWJsZQorICAgICAgICByb3cgPSBbMCwwLDEsMSwyLDIsMSwzLDIsMywzXVtpbmRleD4+Nl0KKyAgICAgICAgY29sID0gWzAsMSwwLDEsMCwxLDIsMCwyLDEsMl1baW5kZXg+PjZdCisgICAgICAgICNkZXRlcm1pbmUgaW5zZXJ0cyBhbmQgY29weSBzdWIgY29kZXMKKyAgICAgICAgaW5zZXJ0TGVuZ3RoQ29kZSA9IHJvdzw8MyB8IGluZGV4Pj4zJjcKKyAgICAgICAgaWYgcm93OiBpbnNlcnRMZW5ndGhDb2RlIC09IDgKKyAgICAgICAgY29weUxlbmd0aENvZGUgPSBjb2w8PDMgfCBpbmRleCY3CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBTeW1ib2woc2VsZi5pbnNlcnRMZW5ndGhBbHBoYWJldCwgaW5zZXJ0TGVuZ3RoQ29kZSksCisgICAgICAgICAgICBTeW1ib2woc2VsZi5jb3B5TGVuZ3RoQWxwaGFiZXQsIGNvcHlMZW5ndGhDb2RlKSwKKyAgICAgICAgICAgIHJvdz09MAorICAgICAgICAgICAgKQorCisgICAgZGVmIG1uZW1vbmljKHNlbGYsIGluZGV4KToKKyAgICAgICAgIiIiTWFrZSBhIG5pY2UgbW5lbW9uaWMKKyAgICAgICAgIiIiCisgICAgICAgIGksYyxkMCA9IHNlbGYuc3BsaXRTeW1ib2woaW5kZXgpCisgICAgICAgIGlMb3dlciwgXyA9IGkuY29kZS5zcGFuKGkuaW5kZXgpCisgICAgICAgIGlFeHRyYSA9IGkuZXh0cmFCaXRzKCkKKyAgICAgICAgY0xvd2VyLCBfID0gYy5jb2RlLnNwYW4oYy5pbmRleCkKKyAgICAgICAgY0V4dHJhID0gYy5leHRyYUJpdHMoKQorICAgICAgICByZXR1cm4gJ0l7fXt9e31De317fXt9e30nLmZvcm1hdCgKKyAgICAgICAgICAgIGlMb3dlciwKKyAgICAgICAgICAgICcrJyBpZiBpRXh0cmEgZWxzZSAnJywKKyAgICAgICAgICAgICd4JyppRXh0cmEgaWYgaUV4dHJhPDYgZWxzZSAnW3t9KnhdJy5mb3JtYXQoaUV4dHJhKSwKKyAgICAgICAgICAgIGNMb3dlciwKKyAgICAgICAgICAgICcrJyBpZiBjRXh0cmEgZWxzZSAnJywKKyAgICAgICAgICAgICd4JypjRXh0cmEgaWYgY0V4dHJhPDYgZWxzZSAnW3t9KnhdJy5mb3JtYXQoY0V4dHJhKSwKKyAgICAgICAgICAgICcmRD0wJyBpZiBkMCBlbHNlICcnKQorCisgICAgZGVmIHZhbHVlKHNlbGYsIGluZGV4LCBleHRyYSk6CisgICAgICAgIGksYyxkMCA9IHNlbGYuc3BsaXRTeW1ib2woaW5kZXgpCisgICAgICAgIGlFeHRyYSA9IGkuZXh0cmFCaXRzKCkKKyAgICAgICAgY2UsIGllID0gZXh0cmE+PmlFeHRyYSwgZXh0cmEmKDE8PGlFeHRyYSktMQorICAgICAgICBpbnNlcnQgPSBpLnZhbHVlKGllKQorICAgICAgICBjb3B5ID0gYy52YWx1ZShjZSkKKyAgICAgICAgcmV0dXJuIGluc2VydCwgY29weSwgZDAKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICBpbnNlcnQsIGNvcHksIGQwID0gc2VsZi52YWx1ZShpbmRleCwgZXh0cmEpCisgICAgICAgIGlmIGQwOiByZXR1cm4gJ0xpdGVyYWw6IHt9LCBjb3B5OiB7fSwgc2FtZSBkaXN0YW5jZScuZm9ybWF0KGluc2VydCwgY29weSkKKyAgICAgICAgZWxzZTogcmV0dXJuICdMaXRlcmFsOiB7fSwgY29weToge30nLmZvcm1hdChpbnNlcnQsIGNvcHkpCisKK2NsYXNzIERpc3RhbmNlQWxwaGFiZXQoV2l0aEV4dHJhKToKKyAgICAiIiJSZXByZXNlbnQgdGhlIGRpc3RhbmNlIGVuY29kaW5nLgorICAgIER5bmFtaWNhbGx5IGdlbmVyYXRlZCBhbHBoYWJldC4KKyAgICBUaGlzIGlzIHdoYXQgdGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIGhhdmUgc2FpZDoKKyAgICBJZ25vcmluZyBvZmZzZXRzIGZvciB0aGUgbW9tZW50LCB0aGUgImxvbmciIGVuY29kaW5nIHdvcmtzIGFzIGZvbGxvd3M6CisgICAgV3JpdGUgdGhlIGRpc3RhbmNlIGluIGJpbmFyeSBhcyBmb2xsb3dzOgorICAgIDF4eS4ueXouLnosIHRoZW4gdGhlIGRpc3RhbmNlIHN5bWJvbCBjb25zaXN0cyBvZiBuLi5ueHouLnoKKyAgICBXaGVyZToKKyAgICBuIGlzIG9uZSBsZXNzIHRoYW4gbnVtYmVyIG9mIGJpdHMgaW4geQorICAgIHggaXMgYSBzaW5nbGUgYml0CisgICAgeS4ueSBhcmUgbisxIGV4dHJhIGJpdHMgKGVuY29kZWQgaW4gdGhlIGJpdCBzdHJlYW0pCisgICAgei4ueiBpcyBOUE9TVEZJWCBiaXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHN5bWJvbAorICAgIFRoZSBvZmZzZXRzIGFyZSBzbyBhcyB0byBzdGFydCBhdCB0aGUgbG93ZXN0IHVzZWFibGUgdmFsdWU6CisgICAgaWYgMXh5eXl5eiA9IGRpc3RhbmNlICsoNDw8UE9TVEZJWCktTkRJUkVDVC0xCisgICAgdGhlbiBuLi5ueHouLnogaXMgc3ltYm9sIC1ORElSRUNULTE2CisgICAgPj4+IGQgPSBEaXN0YW5jZUFscGhhYmV0KCdEJywgTlBPU1RGSVg9MiwgTkRJUkVDVD0xMCkKKyAgICA+Pj4gcHJpbnQoZFs0XSwgZFsxN10sIGRbMzRdKQorICAgIGxhc3QtMSAxIDEweHgwMC01CisgICAgPj4+IFtzdHIoZFt4XSkgZm9yIHggaW4gcmFuZ2UoMjYsIDMyKV0KKyAgICBbJzEweDAwLTUnLCAnMTB4MDEtNScsICcxMHgxMC01JywgJzEweDExLTUnLCAnMTF4MDAtNScsICcxMXgwMS01J10KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtYmVyLCAqLCBOUE9TVEZJWCwgTkRJUkVDVCk6CisgICAgICAgIHNlbGYuTlBPU1RGSVggPSBOUE9TVEZJWAorICAgICAgICBzZWxmLk5ESVJFQ1QgPSBORElSRUNUCisgICAgICAgICNzZXQgbGVuZ3RoCisgICAgICAgICNBY3R1YWxseSwgbm90IGFsbCBzeW1ib2xzIGFyZSB1c2VkLAorICAgICAgICAjb25seSBORElSRUNUKzE2Kyg0NC0yKlBPU1RGSVg8PE5QT1NURklYKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCdEJytzdHIobnVtYmVyKSwKKyAgICAgICAgICAgIGFscGhhYmV0U2l6ZT1zZWxmLk5ESVJFQ1QrMTYrKDQ4PDxzZWxmLk5QT1NURklYKSkKKworICAgIGRlZiBleHRyYUJpdHMoc2VsZiwgaW5kZXgpOgorICAgICAgICAiIiJJbmRpY2F0ZSBob3cgbWFueSBleHRyYSBiaXRzIGFyZSBuZWVkZWQgdG8gaW50ZXJwcmV0IHN5bWJvbAorICAgICAgICA+Pj4gZCA9IERpc3RhbmNlQWxwaGFiZXQoJ0QnLCBOUE9TVEZJWD0yLCBORElSRUNUPTEwKQorICAgICAgICA+Pj4gW2RbaV0uZXh0cmFCaXRzKCkgZm9yIGkgaW4gcmFuZ2UoMjYpXQorICAgICAgICBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0KKyAgICAgICAgPj4+IFtkW2ldLmV4dHJhQml0cygpIGZvciBpIGluIHJhbmdlKDI2LDM2KV0KKyAgICAgICAgWzEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIsIDJdCisgICAgICAgICIiIgorICAgICAgICBpZiBpbmRleDwxNitzZWxmLk5ESVJFQ1Q6IHJldHVybiAwCisgICAgICAgIHJldHVybiAxICsgKChpbmRleCAtIHNlbGYuTkRJUkVDVCAtIDE2KSA+PiAoc2VsZi5OUE9TVEZJWCArIDEpKQorCisgICAgZGVmIHZhbHVlKHNlbGYsIGRjb2RlLCBkZXh0cmEpOgorICAgICAgICAiIiJEZWNvZGUgdmFsdWUgb2Ygc3ltYm9sIHRvZ2V0aGVyIHdpdGggdGhlIGV4dHJhIGJpdHMuCisgICAgICAgID4+PiBkID0gRGlzdGFuY2VBbHBoYWJldCgnRCcsIE5QT1NURklYPTIsIE5ESVJFQ1Q9MTApCisgICAgICAgID4+PiBkWzM0XS52YWx1ZSgyKQorICAgICAgICAoMCwgMzUpCisgICAgICAgICIiIgorICAgICAgICBpZiBkY29kZTwxNjoKKyAgICAgICAgICAgIHJldHVybiBbKDEsMCksKDIsMCksKDMsMCksKDQsMCksCisgICAgICAgICAgICAgICAgICAgICgxLC0xKSwoMSwrMSksKDEsLTIpLCgxLCsyKSwoMSwtMyksKDEsKzMpLAorICAgICAgICAgICAgICAgICAgICAoMiwtMSksKDIsKzEpLCgyLC0yKSwoMiwrMiksKDIsLTMpLCgyLCszKQorICAgICAgICAgICAgICAgIF1bZGNvZGVdCisgICAgICAgIGlmIGRjb2RlPDE2K3NlbGYuTkRJUkVDVDoKKyAgICAgICAgICAgIHJldHVybiAoMCxkY29kZS0xNikKKyAgICAgICAgI3dlIHVzZSB0aGUgb3JpZ2luYWwgZm9ybXVsYXMsIGluc3RlYWQgb2YgbXkgY2xlYXIgZXhwbGFuYXRpb24KKyAgICAgICAgUE9TVEZJWF9NQVNLID0gKDEgPDwgc2VsZi5OUE9TVEZJWCkgLSAxCisgICAgICAgIG5kaXN0Yml0cyA9IDEgKyAoKGRjb2RlIC0gc2VsZi5ORElSRUNUIC0gMTYpID4+IChzZWxmLk5QT1NURklYICsgMSkpCisgICAgICAgIGhjb2RlID0gKGRjb2RlIC0gc2VsZi5ORElSRUNUIC0gMTYpID4+IHNlbGYuTlBPU1RGSVgKKyAgICAgICAgbGNvZGUgPSAoZGNvZGUgLSBzZWxmLk5ESVJFQ1QgLSAxNikgJiBQT1NURklYX01BU0sKKyAgICAgICAgb2Zmc2V0ID0gKCgyICsgKGhjb2RlICYgMSkpIDw8IG5kaXN0Yml0cykgLSA0CisgICAgICAgIGRpc3RhbmNlID0gKChvZmZzZXQgKyBkZXh0cmEpIDw8IHNlbGYuTlBPU1RGSVgpICsgbGNvZGUgKyBzZWxmLk5ESVJFQ1QgKyAxCisgICAgICAgIHJldHVybiAoMCxkaXN0YW5jZSkKKworICAgIGRlZiBtbmVtb25pYyhzZWxmLCBpbmRleCwgdmVyYm9zZT1GYWxzZSk6CisgICAgICAgICIiIkdpdmUgbW5lbW9uaWMgcmVwcmVzZW50YXRpb24gb2YgbWVhbmluZy4KKyAgICAgICAgdmVyYm9zZSBjb21wcmVzc2VzIHN0cmluZ3Mgb2YgeCdzCisgICAgICAgICIiIgorICAgICAgICBpZiBpbmRleDwxNjoKKyAgICAgICAgICAgIHJldHVybiBbJ2xhc3QnLCAnMmxhc3QnLCAnM2xhc3QnLCAnNGxhc3QnLAorICAgICAgICAgICAgICAgICdsYXN0LTEnLCAnbGFzdCsxJywgJ2xhc3QtMicsICdsYXN0KzInLCAnbGFzdC0zJywgJ2xhc3QrMycsCisgICAgICAgICAgICAgICAgJzJsYXN0LTEnLCAnMmxhc3QrMScsICcybGFzdC0yJywgJzJsYXN0KzInLCAnMmxhc3QtMycsICcybGFzdCszJworICAgICAgICAgICAgICAgIF1baW5kZXhdCisgICAgICAgIGlmIGluZGV4PDE2K3NlbGYuTkRJUkVDVDoKKyAgICAgICAgICAgIHJldHVybiBzdHIoaW5kZXgtMTYpCisgICAgICAgICNjb25zdHJ1Y3Qgc3RyaW5ncyBsaWtlICIxeHgwMS0xNSIKKyAgICAgICAgaW5kZXggLT0gc2VsZi5ORElSRUNUKzE2CisgICAgICAgIGhjb2RlID0gaW5kZXggPj4gc2VsZi5OUE9TVEZJWAorICAgICAgICBsY29kZSA9IGluZGV4ICYgKDE8PHNlbGYuTlBPU1RGSVgpLTEKKyAgICAgICAgaWYgc2VsZi5OUE9TVEZJWDogZm9ybWF0U3RyaW5nID0gJzF7MH17MX17MjowezN9Yn17NDorZH0nCisgICAgICAgIGVsc2U6IGZvcm1hdFN0cmluZyA9ICcxezB9ezF9ezQ6K2R9JworICAgICAgICByZXR1cm4gZm9ybWF0U3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgIGhjb2RlJjEsCisgICAgICAgICAgICAneCcqKDIraGNvZGU+PjEpIGlmIGhjb2RlPDEzIG9yIHZlcmJvc2UgZWxzZSAnW3t9KnhdJy5mb3JtYXQoMitoY29kZT4+MSksCisgICAgICAgICAgICBsY29kZSwgc2VsZi5OUE9TVEZJWCwKKyAgICAgICAgICAgIHNlbGYuTkRJUkVDVCsxLSg0PDxzZWxmLk5QT1NURklYKSkKKworICAgIGRlZiBleHBsYW5hdGlvbihzZWxmLCBpbmRleCwgZXh0cmEpOgorICAgICAgICAiIiIKKyAgICAgICAgPj4+IGQgPSBEaXN0YW5jZUFscGhhYmV0KCdEJywgTlBPU1RGSVg9MiwgTkRJUkVDVD0xMCkKKyAgICAgICAgPj4+IGRbNTVdLmV4cGxhbmF0aW9uKDEzKQorICAgICAgICAnMTFbMTEwMV0wMS01OiBbMF0rMjQwJworICAgICAgICAiIiIKKyAgICAgICAgZXh0cmFCaXRzID0gc2VsZi5leHRyYUJpdHMoaW5kZXgpCisgICAgICAgIGV4dHJhU3RyaW5nID0gJ1t7OjB7fWJ9XScuZm9ybWF0KGV4dHJhLCBleHRyYUJpdHMpCisgICAgICAgIHJldHVybiAnezB9OiBbezFbMF19XXsxWzFdOitkfScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5tbmVtb25pYyhpbmRleCwgVHJ1ZSkucmVwbGFjZSgneCcqKGV4dHJhQml0cyBvciAxKSwgZXh0cmFTdHJpbmcpLAorICAgICAgICAgICAgc2VsZi52YWx1ZShpbmRleCwgZXh0cmEpKQorCisjQ2xhc3NlcyBmb3IgZG9pbmcgYWN0dWFsIHdvcmstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2NsYXNzIENvbnRleHRNb2RlS2VlcGVyOgorICAgICIiIkZvciBjb21wdXRpbmcgdGhlIGxpdGVyYWwgY29udGV4dCBtb2RlLgorICAgIFlvdSBmZWVkIGl0IGNoYXJhY3RlcnMsIGFuZCBpdCBjb21wdXRlcyBpbmRpY2VzIGluIHRoZSBjb250ZXh0IG1hcC4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZSk6CisgICAgICAgIHNlbGYuY2hhcnMgPSBkZXF1ZShbMCwwXSwgbWF4bGVuPTIpCisgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKKworICAgIGRlZiBzZXRDb250ZXh0TW9kZShzZWxmLCBtb2RlKToKKyAgICAgICAgIiIiU3dpdGNoIHRvIGdpdmVuIGNvbnRleHQgbW9kZSAoMC4uMykiIiIKKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQorICAgIGRlZiBnZXRJbmRleChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5tb2RlPT0wOiAgI0xTQjYKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNoYXJzWzFdJjB4M2YKKyAgICAgICAgZWxpZiBzZWxmLm1vZGU9PTE6ICNNU0I2CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jaGFyc1sxXT4+MgorICAgICAgICBlbGlmIHNlbGYubW9kZT09MjogI1VURjg6IGNoYXJhY3RlciBjbGFzcyBvZiBwcmV2aW91cyBhbmQgYSBiaXQgb2YgdGhlIHNlY29uZAorICAgICAgICAgICAgcDIscDEgPSBzZWxmLmNoYXJzCisgICAgICAgICAgICByZXR1cm4gc2VsZi5sdXQwW3AxXXxzZWxmLmx1dDFbcDJdCisgICAgICAgIGVsaWYgc2VsZi5tb2RlPT0zOiAjU2lnbmVkOiBpbml0aWFsIGJpdHMgb2YgbGFzdCB0d28gYnl0ZXMKKyAgICAgICAgICAgIHAyLHAxID0gc2VsZi5jaGFycworICAgICAgICAgICAgcmV0dXJuIHNlbGYubHV0MltwMV08PDN8c2VsZi5sdXQyW3AyXQorCisgICAgZGVmIGFkZChzZWxmLCBpbmRleCk6CisgICAgICAgICIiIkFkanVzdCB0aGUgY29udGV4dCBmb3Igb3V0cHV0IGNoYXIgKGFzIGludCkuIiIiCisgICAgICAgIHNlbGYuY2hhcnMuYXBwZW5kKGluZGV4KQorCisgICAgIzA6IGNvbnRyb2wgICAgICMxNjogcXVvdGUgICMzMjogLDo7ICAjNDg6IEFFSU9VCisgICAgIzQ6IHRhYi9sZi9jciAgICMyMDogJSAgICAgICMzNjogLiAgICAjNTI6IEJDLi5aCisgICAgIzg6IHNwYWNlICAgICAgICMyNDogKDxbeyAgICM0MDogPSAgICAjNTY6IGFlaW91CisgICAgIzEyOiEjJCYqKy0vP0B8ICMyODogKT5dfSAgICM0NDogMC05ICAjNjA6IGJjLi56CisgICAgbHV0MCA9IFswLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICA0LCAgNCwgIDAsICAwLCAgNCwgIDAsICAwLAorICAgICAgICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKKyAgICAgICAgICAgIDgsIDEyLCAxNiwgMTIsIDEyLCAyMCwgMTIsIDE2LCAyNCwgMjgsIDEyLCAxMiwgMzIsIDEyLCAzNiwgMTIsCisgICAgICAgICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAzMiwgMzIsIDI0LCA0MCwgMjgsIDEyLAorICAgICAgICAgICAxMiwgNDgsIDUyLCA1MiwgNTIsIDQ4LCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwKKyAgICAgICAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAyNCwgMTIsIDI4LCAxMiwgMTIsCisgICAgICAgICAgIDEyLCA1NiwgNjAsIDYwLCA2MCwgNTYsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDU2LAorICAgICAgICAgICA2MCwgNjAsIDYwLCA2MCwgNjAsIDU2LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDI0LCAxMiwgMjgsIDEyLCAgMAorICAgICAgICAgICBdK1swLDFdKjMyK1syLDNdKjMyCisgICAgIzA6IHNwYWNlICAxOnB1bmN0dWF0aW9uICAyOmRpZ2l0L3VwcGVyIDM6bG93ZXIKKyAgICBsdXQxID0gWyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKKyAgICAgICAgICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCAxLAorICAgICAgICAgICAgIDEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCisgICAgICAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMSwgMSwKKyAgICAgICAgICAgICAxLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLAorICAgICAgICAgICAgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDEsIDEsIDEsIDEsIDAKKyAgICAgICAgICAgXStbMF0qOTYrWzJdKjMyCisgICAgI2luaXRpYWwgYml0czogOCowLCA0KjAsIDIqMCwgMSowLCAxKjEsIDIqMSwgNCoxLCA4KjEKKyAgICBsdXQyID0gWzBdK1sxXSoxNStbMl0qNDgrWzNdKjY0K1s0XSo2NCtbNV0qNDgrWzZdKjE1K1s3XQorICAgIGFzc2VydCBsZW4obHV0MCk9PWxlbihsdXQxKT09bGVuKGx1dDIpPT0yNTYKKworY2xhc3MgV29yZExpc3Q6CisgICAgIiIiV29yZCBsaXN0LgorICAgID4+PiBXb3JkTGlzdCgpLndvcmQoNywgMzU1NTUpCisgICAgYidQcm9ncmFtIHRvICcKKyAgICAiIiIKKyAgICBOREJJVFMgPSBbMCwgIDAsICAwLCAgMCwgMTAsIDEwLCAxMSwgMTEsIDEwLCAxMCwKKyAgICAgICAgICAgICAxMCwgMTAsIDEwLCAgOSwgIDksICA4LCAgNywgIDcsICA4LCAgNywKKyAgICAgICAgICAgICAgNywgIDYsICA2LCAgNSwgIDVdCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKCdkaWN0JywgJ3JiJykKKyAgICAgICAgc2VsZi5jb21waWxlQWN0aW9ucygpCisKKyAgICBkZWYgd29yZChzZWxmLCBzaXplLCBkaXN0KToKKyAgICAgICAgIiIiR2V0IHdvcmQKKyAgICAgICAgIiIiCisgICAgICAgICNzcGxpdCBkaXN0IGluIGluZGV4IGFuZCBhY3Rpb24KKyAgICAgICAgbmRiaXRzID0gc2VsZi5OREJJVFNbc2l6ZV0KKyAgICAgICAgaW5kZXggPSBkaXN0JigxPDxuZGJpdHMpLTEKKyAgICAgICAgYWN0aW9uID0gZGlzdD4+bmRiaXRzCisgICAgICAgICNjb21wdXRlIHBvc2l0aW9uIGluIGZpbGUKKyAgICAgICAgcG9zaXRpb24gPSBzdW0objw8c2VsZi5OREJJVFNbbl0gZm9yIG4gaW4gcmFuZ2UoNCxzaXplKSkrc2l6ZSppbmRleAorICAgICAgICBzZWxmLmZpbGUuc2Vlayhwb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHNlbGYuZG9BY3Rpb24oc2VsZi5maWxlLnJlYWQoc2l6ZSksIGFjdGlvbikKKworICAgIGRlZiB1cHBlckNhc2UxKHNlbGYsIHdvcmQpOgorICAgICAgICB3b3JkID0gd29yZC5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICB3b3JkID0gd29yZFswXS51cHBlcigpK3dvcmRbMTpdCisgICAgICAgIHJldHVybiB3b3JkLmVuY29kZSgndXRmOCcpCisKKworICAgICNTdXBlciBjb21wYWN0IGZvcm0gb2YgYWN0aW9uIHRhYmxlLgorICAgICNfIG1lYW5zIHNwYWNlLCAuVSBtZWFucyBVcHBlckNhc2VBbGwsIFUodykgbWVhbnMgVXBwZXJDYXNlRmlyc3QKKyAgICBhY3Rpb25UYWJsZSA9IHIiIiIKKyAgICAgICAgMDp3ICAgICAgICAyNTp3K19mb3JfICAgICA1MDp3K1xuXHQgICAgICAgNzU6dysuIFRoaXNfMTAwOncraXplXworICAgICAgICAxOncrXyAgICAgIDI2OndbMzpdICAgICAgIDUxOncrOiAgICAgICAgICA3Njp3KywgICAgICAxMDE6dy5VKy4KKyAgICAgICAgMjpfK3crXyAgICAyNzp3WzotMl0gICAgICA1MjpfK3crLl8gICAgICAgNzc6Lit3K18gICAgMTAyOlx4YzJceGEwK3cKKyAgICAgICAgMzp3WzE6XSAgICAyODp3K19hXyAgICAgICA1Mzp3K2VkXyAgICAgICAgNzg6VSh3KSsoICAgMTAzOl8rdyssCisgICAgICAgIDQ6VSh3KStfICAgMjk6dytfdGhhdF8gICAgNTQ6d1s5Ol0gICAgICAgIDc5OlUodykrLiAgIDEwNDpVKHcpKz0iCisgICAgICAgIDU6dytfdGhlXyAgMzA6XytVKHcpICAgICAgNTU6d1s3Ol0gICAgICAgIDgwOncrX25vdF8gIDEwNTp3LlUrPSIKKyAgICAgICAgNjpfK3cgICAgICAzMTp3Ky5fICAgICAgICA1Njp3WzotNl0gICAgICAgODE6Xyt3Kz0iICAgMTA2Oncrb3VzXworICAgICAgICA3OnNfK3crXyAgIDMyOi4rdyAgICAgICAgIDU3OncrKCAgICAgICAgICA4Mjp3K2VyXyAgICAxMDc6dy5VKyxfCisgICAgICAgIDg6dytfb2ZfICAgMzM6Xyt3KyxfICAgICAgNTg6VSh3KSssXyAgICAgIDgzOl8rdy5VK18gIDEwODpVKHcpKz1cJworICAgICAgICA5OlUodykgICAgIDM0OndbNDpdICAgICAgIDU5OndbOi04XSAgICAgICA4NDp3K2FsXyAgICAxMDk6XytVKHcpKywKKyAgICAgICAxMDp3K19hbmRfICAzNTp3K193aXRoXyAgICA2MDp3K19hdF8gICAgICAgODU6Xyt3LlUgICAgMTEwOl8rdy5VKz0iCisgICAgICAgMTE6d1syOl0gICAgMzY6dytcJyAgICAgICAgNjE6dytseV8gICAgICAgIDg2OncrPVwnICAgIDExMTpfK3cuVSssXworICAgICAgIDEyOndbOi0xXSAgIDM3OncrX2Zyb21fICAgIDYyOl90aGVfK3crX29mXyA4Nzp3LlUrIiAgICAxMTI6Xyt3LlUrLAorICAgICAgIDEzOixfK3crXyAgIDM4OncrX2J5XyAgICAgIDYzOndbOi01XSAgICAgICA4ODpVKHcpKy5fICAxMTM6dy5VKygKKyAgICAgICAxNDp3KyxfICAgICAzOTp3WzU6XSAgICAgICA2NDp3WzotOV0gICAgICAgODk6Xyt3KyggICAgMTE0OncuVSsuXworICAgICAgIDE1Ol8rVSh3KStfIDQwOndbNjpdICAgICAgIDY1Ol8rVSh3KSssXyAgICA5MDp3K2Z1bF8gICAxMTU6Xyt3LlUrLgorICAgICAgIDE2OncrX2luXyAgIDQxOl90aGVfK3cgICAgIDY2OlUodykrIiAgICAgICA5MTpfK1UodykrLl8xMTY6dy5VKz1cJworICAgICAgIDE3OncrX3RvXyAgIDQyOndbOi00XSAgICAgIDY3Oi4rdysoICAgICAgICA5Mjp3K2l2ZV8gICAxMTc6Xyt3LlUrLl8KKyAgICAgICAxODplXyt3K18gICA0Mzp3Ky4gVGhlXyAgICA2ODp3LlUrXyAgICAgICAgOTM6dytsZXNzXyAgMTE4Ol8rVSh3KSs9IgorICAgICAgIDE5OncrIiAgICAgIDQ0OncuVSAgICAgICAgIDY5OlUodykrIj4gICAgICA5NDp3LlUrXCcgICAxMTk6Xyt3LlUrPVwnCisgICAgICAgMjA6dysuICAgICAgNDU6dytfb25fICAgICAgNzA6dys9IiAgICAgICAgIDk1OncrZXN0XyAgIDEyMDpfK1UodykrPVwnCisgICAgICAgMjE6dysiPiAgICAgNDY6dytfYXNfICAgICAgNzE6Xyt3Ky4gICAgICAgIDk2Ol8rVSh3KSsuCisgICAgICAgMjI6dytcbiAgICAgNDc6dytfaXNfICAgICAgNzI6LmNvbS8rdyAgICAgIDk3OncuVSsiPgorICAgICAgIDIzOndbOi0zXSAgIDQ4OndbOi03XSAgICAgICAgICAgICAgICAgICAgICA5ODpfK3crPVwnCisgICAgICAgMjQ6dytdICAgICAgNDk6d1s6LTFdK2luZ18gNzQ6VSh3KStcJyAgICAgIDk5OlUodykrLAorICAgICAgICAiIiIKKworICAgIGRlZiBjb21waWxlQWN0aW9ucyhzZWxmKToKKyAgICAgICAgIiIiQnVpbGQgdGhlIGFjdGlvbiB0YWJsZSBmcm9tIHRoZSB0ZXh0IGFib3ZlCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgc2VsZi5hY3Rpb25MaXN0ID0gYWN0aW9ucyA9IFtOb25lXSoxMjEKKyAgICAgICAgI0FjdGlvbiA3Mywgd2hpY2ggaXMgdG9vIGxvbmcsIGxvb2tzIGxpa2UgdGhpcyB3aGVuIGV4cGFuZGVkOgorICAgICAgICBhY3Rpb25zWzczXSA9ICJiJyB0aGUgJyt3K2InIG9mIHRoZSAnIgorICAgICAgICAjZmluZCBvdXQgd2hhdCB0aGUgY29sdW1ucyBhcmUKKyAgICAgICAgYWN0aW9uTGluZXMgPSBzZWxmLmFjdGlvblRhYmxlLnNwbGl0bGluZXMoKQorICAgICAgICBjb2xvblBvc2l0aW9ucyA9IFttLnN0YXJ0KCkKKyAgICAgICAgICAgIGZvciBtIGluIHJlLmZpbmRpdGVyKCc6JyxhY3Rpb25MaW5lc1sxXSkKKyAgICAgICAgICAgIF0rWzEwMF0KKyAgICAgICAgY29sdW1ucyA9IFsoY29sb25Qb3NpdGlvbnNbaV0tMyxjb2xvblBvc2l0aW9uc1tpKzFdLTMpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY29sb25Qb3NpdGlvbnMpLTEpXQorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmFjdGlvblRhYmxlLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpOgorICAgICAgICAgICAgZm9yIHN0YXJ0LGVuZCBpbiBjb2x1bW5zOgorICAgICAgICAgICAgICAgIGFjdGlvbiA9IGxpbmVbc3RhcnQ6ZW5kXQorICAgICAgICAgICAgICAgICNza2lwIGVtcHR5IGFjdGlvbnMKKyAgICAgICAgICAgICAgICBpZiBub3QgYWN0aW9uIG9yIGFjdGlvbi5pc3NwYWNlKCk6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgI2Nob3AgaXQgdXAsIGFuZCBjaGVjayBpZiB0aGUgY29sb24gaXMgcHJvcGVybHkgcGxhY2VkCisgICAgICAgICAgICAgICAgaW5kZXgsIGNvbG9uLCBhY3Rpb24gPSBhY3Rpb25bOjNdLCBhY3Rpb25bM10sIGFjdGlvbls0Ol0KKyAgICAgICAgICAgICAgICBhc3NlcnQgY29sb249PSc6JworICAgICAgICAgICAgICAgICNyZW1vdmUgZmlsbGVyIHNwYWNlcyBhdCByaWdodAorICAgICAgICAgICAgICAgIGFjdGlvbiA9IGFjdGlvbi5yc3RyaXAoKQorICAgICAgICAgICAgICAgICNyZXBsYWNlIHNwYWNlIHN5bWJvbHMKKyAgICAgICAgICAgICAgICBhY3Rpb24gPSBhY3Rpb24ucmVwbGFjZSgnXycsICcgJykKKyAgICAgICAgICAgICAgICB3UG9zID0gYWN0aW9uLmluZGV4KCd3JykKKyAgICAgICAgICAgICAgICAjYWRkIHF1b3RlcyBhcm91bmQgbGVmdCBzdHJpbmcgd2hlbiBwcmVzZW50CisgICAgICAgICAgICAgICAgI3RyYW5zbGF0aW9uOiBhbnkgcGF0dGVybiBmcm9tIGJlZ2lubmluZywgdXAgdG8KKyAgICAgICAgICAgICAgICAjKGJ1dCBub3QgaW5jbHVkaW5nKSBhICsgZm9sbG93aW5nIGJ5IGEgdyBsYXRlciBvbgorICAgICAgICAgICAgICAgIGFjdGlvbiA9IHJlLnN1YihyIl4oLiopKD89XCtbVShdKncpIiwgciJiJ1wxJyIsIGFjdGlvbikKKyAgICAgICAgICAgICAgICAjYWRkIHF1b3RlcyBhcm91bmQgcmlnaHQgc3RyaW5nIHdoZW4gcHJlc2VudAorICAgICAgICAgICAgICAgICN0cmFuc2xhdGlvbjogYW55dGhpbmcgd2l0aCBhIHcgaW4gaXQsIGZvbGxvd2VkIGJ5IGEgKworICAgICAgICAgICAgICAgICNhbmQgYSBwYXR0ZXJuIHVwIHRvIHRoZSBlbmQKKyAgICAgICAgICAgICAgICAjKHRoZXJlIGlzIG5vIHZhcmlhYmxlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uLAorICAgICAgICAgICAgICAgICNzbyB3ZSBoYXZlIHRvIGNvcHkgdGhlIHBhdHRlcm4pCisgICAgICAgICAgICAgICAgYWN0aW9uID0gcmUuc3ViKHIiKHdbWzpcLTFcXSkuVV0qKVwrKC4qKSQiLCByIlwxK2InXDInIiwgYWN0aW9uKQorICAgICAgICAgICAgICAgICNleHBhbmQgc2hvcnRjdXQgZm9yIHVwcGVyY2FzZUFsbAorICAgICAgICAgICAgICAgIGFjdGlvbiA9IGFjdGlvbi5yZXBsYWNlKCIuVSIsICIudXBwZXIoKSIpCisgICAgICAgICAgICAgICAgI3N0b3JlIGFjdGlvbgorICAgICAgICAgICAgICAgIGFjdGlvbnNbaW50KGluZGV4KV0gPSBhY3Rpb24KKworICAgIGRlZiBkb0FjdGlvbihzZWxmLCB3LCBhY3Rpb24pOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBwcm9wZXIgYWN0aW9uCisgICAgICAgICIiIgorICAgICAgICAjc2V0IGVudmlyb25tZW50IGZvciB0aGUgVXBwZXJDYXNlRmlyc3QKKyAgICAgICAgVSA9IHNlbGYudXBwZXJDYXNlMQorICAgICAgICByZXR1cm4gZXZhbChzZWxmLmFjdGlvbkxpc3RbYWN0aW9uXSwgbG9jYWxzKCkpCisKK2NsYXNzIExheW91dDoKKyAgICAiIiJDbGFzcyB0byBsYXlvdXQgdGhlIG91dHB1dC4KKyAgICAiIiIKKyAgICAjZGlzcGxheSB3aWR0aCBvZiBoZXhkYXRhK2JpdGRhdGEKKyAgICB3aWR0aCA9IDI1CisgICAgI2dlbmVyYWwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtKToKKyAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KKyAgICAgICAgc2VsZi5iaXRQdHIgPSBzZWxmLndpZHRoCisKKyAgICBkZWYgbWFrZUhleERhdGEoc2VsZiwgcG9zKToKKyAgICAgICAgIiIiUHJvZHVjZSBoZXggZHVtcCBvZiBhbGwgZGF0YSBjb250YWluaW5nIHRoZSBiaXRzCisgICAgICAgIGZyb20gcG9zIHRvIHN0cmVhbS5wb3MKKyAgICAgICAgIiIiCisgICAgICAgIGZpcnN0QWRkcmVzcyA9IHBvcys3Pj4zCisgICAgICAgIGxhc3RBZGRyZXNzID0gc2VsZi5zdHJlYW0ucG9zKzc+PjMKKyAgICAgICAgcmV0dXJuICcnLmpvaW4obWFwKCd7OjAyeH0gJy5mb3JtYXQsCisgICAgICAgICAgICBzZWxmLnN0cmVhbS5kYXRhW2ZpcnN0QWRkcmVzczpsYXN0QWRkcmVzc10pKQorCisgICAgZGVmIGZvcm1hdEJpdERhdGEoc2VsZiwgcG9zLCB3aWR0aDEsIHdpZHRoMj0wKToKKyAgICAgICAgIiIiU2hvdyBmb3JtYXR0ZWQgYml0IGRhdGE6CisgICAgICAgIEJ5dGVzIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzCisgICAgICAgIHdob2xlIGJ5dGVzIGFyZSBkaXNwbGF5ZWQgaW4gaGV4CisgICAgICAgID4+PiBMYXlvdXQob2xsZWtlKS5mb3JtYXRCaXREYXRhKDYsIDIsIDE2KQorICAgICAgICAnfDAwaHwyRWgsfDAwJworICAgICAgICA+Pj4gTGF5b3V0KG9sbGVrZSkuZm9ybWF0Qml0RGF0YSg0LCAxLCAwKQorICAgICAgICAnMScKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICNtYWtlIGVtcHR5IHByZWZpeCBjb2RlIGV4cGxpY2l0CisgICAgICAgIGlmIHdpZHRoMT09MDogcmVzdWx0ID0gWycoKScsICcsJ10KKyAgICAgICAgZm9yIHdpZHRoIGluIHdpZHRoMSwgd2lkdGgyOgorICAgICAgICAgICAgI3NraXAgZW1wdHkgd2lkdGgyCisgICAgICAgICAgICBpZiB3aWR0aD09MDogY29udGludWUKKyAgICAgICAgICAgICNidWlsZCByZXN1bHQgYmFja3dhcmRzIGluIGEgbGlzdAorICAgICAgICAgICAgd2hpbGUgd2lkdGg+MDoKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVCaXRzID0gOC0ocG9zJjcpCisgICAgICAgICAgICAgICAgaWYgd2lkdGg8YXZhaWxhYmxlQml0czoKKyAgICAgICAgICAgICAgICAgICAgI3JlYWQgcGFydGlhbCBieXRlLCBiZWdpbm5pbmcgbm9yIGVuZGluZyBhdCBib3VuZGFyeQorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5zdHJlYW0uZGF0YVtwb3M+PjNdID4+IChwb3MmNykgJiAoMTw8d2lkdGgpLTEKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnezowe31ifScuZm9ybWF0KGRhdGEsIHdpZHRoKSkKKyAgICAgICAgICAgICAgICBlbGlmIGF2YWlsYWJsZUJpdHM8ODoKKyAgICAgICAgICAgICAgICAgICAgI3JlYWQgcmVzdCBvZiBieXRlLCBlbmRpbmcgYXQgYm91bmRhcnkKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc3RyZWFtLmRhdGFbcG9zPj4zXSA+PiAocG9zJjcpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3x7OjB7fWJ9Jy5mb3JtYXQoZGF0YSwgYXZhaWxhYmxlQml0cykpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgI3JlYWQgd2hvbGUgYnl0ZSAoaW4gaGV4KSwgYmVnaW5uaW5nIGFuZCBlbmRpbmcgYXQgYm91bmRhcnkKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc3RyZWFtLmRhdGFbcG9zPj4zXQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd8ezowMlh9aCcuZm9ybWF0KGRhdGEpKQorICAgICAgICAgICAgICAgIHdpZHRoIC09IGF2YWlsYWJsZUJpdHMKKyAgICAgICAgICAgICAgICBwb3MgKz0gYXZhaWxhYmxlQml0cworICAgICAgICAgICAgI2lmIHdpZHRoIG92ZXJzaG90IGZyb20gdGhlIGF2YWlsYWJsZUJpdHMgc3VidHJhY3Rpb24sIGZpeCBpdAorICAgICAgICAgICAgcG9zICs9IHdpZHRoCisgICAgICAgICAgICAjYWRkIGNvbW1hIHRvIHNlcGFyYXRlIGZpZWxkcworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCcpCisgICAgICAgICNjb25jYXRlbmF0ZSBwaWVjZXMsIHJldmVyc2VkLCBza2lwcGluZyB0aGUgbGFzdCBzcGFjZQorICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHRbLTI6Oi0xXSkKKworICAgIGRlZiByZWFkUHJlZml4Q29kZShzZWxmLCBhbHBoYWJldCk6CisgICAgICAgICIiImdpdmUgYWxwaGFiZXQgdGhlIHByZWZpeCBjb2RlIHRoYXQgaXMgcmVhZCBmcm9tIHRoZSBzdHJlYW0KKyAgICAgICAgQ2FsbGVkIGZvciB0aGUgZm9sbG93aW5nIGFscGhhYmV0cywgaW4gdGhpcyBvcmRlcjoKKyAgICAgICAgVGhlIGFscGhhYmV0IGluIHF1ZXN0aW9uIG11c3QgaGF2ZSBhICJsb2dpY2FsIiBvcmRlciwKKyAgICAgICAgb3RoZXJ3aXNlIHRoZSBhc3NpZ25tZW50IG9mIHN5bWJvbHMgZG9lc24ndCB3b3JrLgorICAgICAgICAiIiIKKyAgICAgICAgbW9kZSwgbnVtYmVyT2ZTeW1ib2xzID0gc2VsZi52ZXJib3NlUmVhZChQcmVmaXhDb2RlSGVhZGVyKGFscGhhYmV0Lm5hbWUpKQorICAgICAgICBpZiBtb2RlPT0nQ29tcGxleCc6CisgICAgICAgICAgICAjZm9yIGEgY29tcGxleCBjb2RlLCBudW1iZXJPZlN5bWJvbHMgbWVhbnMgaHNraXAKKyAgICAgICAgICAgIHNlbGYucmVhZENvbXBsZXhDb2RlKG51bWJlck9mU3ltYm9scywgYWxwaGFiZXQpCisgICAgICAgICAgICByZXR1cm4gYWxwaGFiZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRhYmxlID0gW10KKyAgICAgICAgICAgICNTZXQgdGFibGUgb2YgbGVuZ3RocyBmb3IgbW5lbW9uaWMgZnVuY3Rpb24KKyAgICAgICAgICAgIGxlbmd0aHMgPSBbWzBdLCBbMSwxXSwgWzEsMiwyXSwgJz8/Pz8nXVtudW1iZXJPZlN5bWJvbHMtMV0KKyAgICAgICAgICAgICNhZGp1c3QgbW5lbW9uaWMgZnVuY3Rpb24gb2YgYWxwaGFiZXQgY2xhc3MKKyAgICAgICAgICAgIGRlZiBteU1uZW1vbmljKGluZGV4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3t9IGJpdHt9OiB7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBsZW5ndGhzW2ldLAorICAgICAgICAgICAgICAgICAgICAnJyBpZiBsZW5ndGhzW2ldPT0xIGVsc2UgJ3MnLAorICAgICAgICAgICAgICAgICAgICBhbHBoYWJldC5fX2NsYXNzX18ubW5lbW9uaWMoYWxwaGFiZXQsIGluZGV4KQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBhbHBoYWJldC5tbmVtb25pYyA9IG15TW5lbW9uaWMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG51bWJlck9mU3ltYm9scyk6CisgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kKHNlbGYudmVyYm9zZVJlYWQoYWxwaGFiZXQsIHNraXBFeHRyYT1UcnVlKS5pbmRleCkKKyAgICAgICAgICAgICNyZXN0b3JlIG1uZW1vbmljCisgICAgICAgICAgICBkZWwgYWxwaGFiZXQubW5lbW9uaWMKKyAgICAgICAgICAgIGlmIG51bWJlck9mU3ltYm9scz09NDoKKyAgICAgICAgICAgICAgICAjcmVhZCB0cmVlIHNoYXBlIHRvIHJlZGVmaW5lIGxlbmd0aHMKKyAgICAgICAgICAgICAgICBsZW5ndGhzID0gc2VsZi52ZXJib3NlUmVhZChUcmVlU2hhcGVBbGhhYmV0KCkpCisgICAgICAgICAgICAjY29uc3RydWN0IHRoZSBhbHBoYWJldCBwcmVmaXggY29kZQorICAgICAgICAgICAgYWxwaGFiZXQuc2V0TGVuZ3RoKGRpY3QoemlwKHRhYmxlLCBsZW5ndGhzKSkpCisgICAgICAgIHJldHVybiBhbHBoYWJldAorCisgICAgZGVmIHJlYWRDb21wbGV4Q29kZShzZWxmLCBoc2tpcCwgYWxwaGFiZXQpOgorICAgICAgICAiIiJSZWFkIGNvbXBsZXggY29kZSIiIgorICAgICAgICBzdHJlYW0gPSBzZWxmLnN0cmVhbQorICAgICAgICAjcmVhZCB0aGUgbGVuZ3RocyBmb3IgdGhlIGxlbmd0aCBjb2RlCisgICAgICAgIGxlbmd0aHMgPSBbMSwyLDMsNCwwLDUsMTcsNiwxNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNV1baHNraXA6XQorICAgICAgICBjb2RlTGVuZ3RocyA9IHt9CisgICAgICAgIHRvdGFsID0gMAorICAgICAgICBsb2wgPSBMZW5ndGhPZkxlbmd0aEFscGhhYmV0KCcjIycrYWxwaGFiZXQubmFtZSkKKyAgICAgICAgI2xlbmd0aENvZGUgd2lsbCBiZSB1c2VkIGZvciBjb2RpbmcgdGhlIGxlbmd0aHMgb2YgdGhlIG5ldyBjb2RlCisgICAgICAgICN3ZSB1c2UgaXQgZm9yIGRpc3BsYXkgdW50aWwgbm93OyBkZWZpbml0aW9uIGNvbWVzIGJlbG93CisgICAgICAgIGxlbmd0aENvZGUgPSBMZW5ndGhBbHBoYWJldCgnIycrYWxwaGFiZXQubmFtZSkKKyAgICAgICAgbGVuZ3RoSXRlciA9IGl0ZXIobGVuZ3RocykKKyAgICAgICAgbGVuZ3Roc0xlZnQgPSBsZW4obGVuZ3RocykKKyAgICAgICAgd2hpbGUgdG90YWw8MzIgYW5kIGxlbmd0aHNMZWZ0PjA6CisgICAgICAgICAgICBsZW5ndGhzTGVmdCAtPSAxCisgICAgICAgICAgICBuZXdTeW1ib2wgPSBuZXh0KGxlbmd0aEl0ZXIpCisgICAgICAgICAgICBsb2wuZGVzY3JpcHRpb24gPSBzdHIobGVuZ3RoQ29kZVtuZXdTeW1ib2xdKQorICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi52ZXJib3NlUmVhZChsb2wpCisgICAgICAgICAgICBpZiBsZW5ndGg6CisgICAgICAgICAgICAgICAgY29kZUxlbmd0aHNbbmV3U3ltYm9sXSA9IGxlbmd0aAorICAgICAgICAgICAgICAgIHRvdGFsICs9IDMyPj5sZW5ndGgKKyAgICAgICAgaWYgdG90YWw+MzI6IHJhaXNlIFZhbHVlRXJyb3IoIlN0cmVhbSBmb3JtYXQiKQorICAgICAgICBpZiBsZW4oY29kZUxlbmd0aHMpPT0xOiBjb2RlTGVuZ3Roc1tsaXN0KGNvZGVMZW5ndGhzLmtleXMoKSlbMF1dID0gMAorICAgICAgICAjTm93IHNldCB0aGUgZW5jb2Rpbmcgb2YgdGhlIGxlbmd0aENvZGUKKyAgICAgICAgbGVuZ3RoQ29kZS5zZXRMZW5ndGgoY29kZUxlbmd0aHMpCisgICAgICAgIHByaW50KCIqKioqKiBMZW5ndGhzIGZvciB7fSB3aWxsIGJlIGNvZGVkIGFzOiIuZm9ybWF0KGFscGhhYmV0Lm5hbWUpKQorICAgICAgICBsZW5ndGhDb2RlLnNob3dDb2RlKCkKKyAgICAgICAgI05vdyBkZXRlcm1pbmUgdGhlIHN5bWJvbCBsZW5ndGhzIHdpdGggdGhlIGxlbmd0aENvZGUKKyAgICAgICAgc3ltYm9sTGVuZ3RocyA9IHt9CisgICAgICAgIHRvdGFsID0gMAorICAgICAgICBsYXN0TGVuZ3RoID0gOAorICAgICAgICBhbHBoYWJldEl0ZXIgPSBpdGVyKGFscGhhYmV0KQorICAgICAgICB3aGlsZSB0b3RhbDwzMjc2ODoKKyAgICAgICAgICAgICNsb29rIGFoZWFkIHRvIHNlZSB3aGF0IGlzIGdvaW5nIHRvIGhhcHBlbgorICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoQ29kZS5kZWNvZGVQZWVrKAorICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLnBlZWsobGVuZ3RoQ29kZS5tYXhMZW5ndGgpKVsxXS5pbmRleAorICAgICAgICAgICAgI2luIGV2ZXJ5IGJyYW5jaCwgc2V0IGxlbmd0aENvZGUuZGVzY3JpcHRpb24gdG8gZXhwbGFuYXRvcnkgdGV4dAorICAgICAgICAgICAgI2xlbmd0aENvZGUgY2FsbHMgZm9ybWF0KHN5bWJvbCwgZXh0cmEpIHdpdGggdGhpcyBzdHJpbmcKKyAgICAgICAgICAgIGlmIGxlbmd0aD09MDoKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSBuZXh0KGFscGhhYmV0SXRlcikKKyAgICAgICAgICAgICAgICBsZW5ndGhDb2RlLmRlc2NyaXB0aW9uID0gJ3N5bWJvbCB7fSB1bnVzZWQnLmZvcm1hdChzeW1ib2wpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NlUmVhZChsZW5ndGhDb2RlKQorICAgICAgICAgICAgICAgICN1bnVzZWQgc3ltYm9sCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxlbmd0aD09MTY6CisgICAgICAgICAgICAgICAgbGVuZ3RoQ29kZS5kZXNjcmlwdGlvbiA9IFwKKyAgICAgICAgICAgICAgICAgICAgJ3sxfSszIHN5bWJvbHMgb2YgbGVuZ3RoICcrc3RyKGxhc3RMZW5ndGgpCisgICAgICAgICAgICAgICAgZXh0cmEgPSBzZWxmLnZlcmJvc2VSZWFkKGxlbmd0aENvZGUpCisgICAgICAgICAgICAgICAgI3NjYW4gc2VyaWVzIG9mIDE2cyAocmVwZWF0IGNvdW50cykKKyAgICAgICAgICAgICAgICAjc3RhcnQgd2l0aCByZXBlYXQgY291bnQgMgorICAgICAgICAgICAgICAgIHJlcGVhdCA9IDIKKyAgICAgICAgICAgICAgICBzdGFydFN5bWJvbCA9IG5leHQoYWxwaGFiZXRJdGVyKQorICAgICAgICAgICAgICAgIGVuZFN5bWJvbCA9IG5leHQoYWxwaGFiZXRJdGVyKQorICAgICAgICAgICAgICAgIHN5bWJvbExlbmd0aHNbc3RhcnRTeW1ib2wuaW5kZXhdID0gXAorICAgICAgICAgICAgICAgICAgICBzeW1ib2xMZW5ndGhzW2VuZFN5bWJvbC5pbmRleF0gPSBsYXN0TGVuZ3RoCisgICAgICAgICAgICAgICAgI2NvdW50IHRoZSB0d28ganVzdCBkZWZpbmVkIHN5bWJvbHMKKyAgICAgICAgICAgICAgICB0b3RhbCArPSAyKjMyNzY4Pj5sYXN0TGVuZ3RoCisgICAgICAgICAgICAgICAgI25vdGU6IGxvb3AgbWF5IGVuZCBiZWNhdXNlIHdlJ3JlIHRoZXJlCisgICAgICAgICAgICAgICAgI2V2ZW4gaWYgYSAxNiBfYXBwZWFyc18gdG8gZm9sbG93CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgI2RldGVybWluZSBsYXN0IHN5bWJvbAorICAgICAgICAgICAgICAgICAgICBvbGRSZXBlYXQgPSByZXBlYXQKKyAgICAgICAgICAgICAgICAgICAgcmVwZWF0ID0gKHJlcGVhdC0yPDwyKStleHRyYSszCisgICAgICAgICAgICAgICAgICAgICNyZWFkIGFzIG1hbnkgc3ltYm9scyBhcyByZXBlYXQgaW5jcmVhc2VkCisgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG9sZFJlcGVhdCwgcmVwZWF0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZFN5bWJvbCA9IG5leHQoYWxwaGFiZXRJdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sTGVuZ3Roc1tlbmRTeW1ib2wuaW5kZXhdID0gbGFzdExlbmd0aAorICAgICAgICAgICAgICAgICAgICAjY29tcHV0ZSBuZXcgdG90YWw7IGl0IG1heSBiZSBlbmQgb2YgbG9vcAorICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAocmVwZWF0LW9sZFJlcGVhdCkqMzI3Njg+Pmxhc3RMZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgaWYgdG90YWw+PTMyNzY4OiBicmVhaworICAgICAgICAgICAgICAgICAgICAjc2VlIGlmIHRoZXJlIGlzIG1vcmUgdG8gZG8KKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoQ29kZS5kZWNvZGVQZWVrKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0ucGVlayhsZW5ndGhDb2RlLm1heExlbmd0aCkpWzFdLmluZGV4CisgICAgICAgICAgICAgICAgICAgIGlmIGxlbmd0aCE9MTY6IGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aENvZGUuZGVzY3JpcHRpb24gPSAndG90YWwge30re3sxfX0gc3ltYm9scycuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGVhdC0yPDwyKSszKQorICAgICAgICAgICAgICAgICAgICBleHRyYSA9IHNlbGYudmVyYm9zZVJlYWQobGVuZ3RoQ29kZSkKKyAgICAgICAgICAgIGVsaWYgbGVuZ3RoPT0xNzoKKyAgICAgICAgICAgICAgICAjcmVhZCwgYW5kIHNob3cgZXhwbGFuYXRpb24KKyAgICAgICAgICAgICAgICBsZW5ndGhDb2RlLmRlc2NyaXB0aW9uID0gJ3sxfSszIHVudXNlZCcKKyAgICAgICAgICAgICAgICBleHRyYSA9IHNlbGYudmVyYm9zZVJlYWQobGVuZ3RoQ29kZSkKKyAgICAgICAgICAgICAgICAjc2NhbiBzZXJpZXMgb2YgMTdzIChncm91cHMgb2YgemVybyBjb3VudHMpCisgICAgICAgICAgICAgICAgI3N0YXJ0IHdpdGggcmVwZWF0IGNvdW50IDIKKyAgICAgICAgICAgICAgICByZXBlYXQgPSAyCisgICAgICAgICAgICAgICAgc3RhcnRTeW1ib2wgPSBuZXh0KGFscGhhYmV0SXRlcikKKyAgICAgICAgICAgICAgICBlbmRTeW1ib2wgPSBuZXh0KGFscGhhYmV0SXRlcikKKyAgICAgICAgICAgICAgICAjbm90ZTogbG9vcCB3aWxsIG5vdCBlbmQgd2l0aCB0b3RhbD09MzI3NjgsCisgICAgICAgICAgICAgICAgI3NpbmNlIHRvdGFsIGRvZXNuJ3QgY2hhbmdlIGhlcmUKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAjZGV0ZXJtaW5lIGxhc3Qgc3ltYm9sCisgICAgICAgICAgICAgICAgICAgIG9sZFJlcGVhdCA9IHJlcGVhdAorICAgICAgICAgICAgICAgICAgICByZXBlYXQgPSAocmVwZWF0LTI8PDMpK2V4dHJhKzMKKyAgICAgICAgICAgICAgICAgICAgI3JlYWQgYXMgbWFueSBzeW1ib2xzIGFzIHJlcGVhdCBpbmNyZWFzZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocmVwZWF0LW9sZFJlcGVhdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBlbmRTeW1ib2wgPSBuZXh0KGFscGhhYmV0SXRlcikKKyAgICAgICAgICAgICAgICAgICAgI3NlZSBpZiB0aGVyZSBpcyBtb3JlIHRvIGRvCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aENvZGUuZGVjb2RlUGVlaygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLnBlZWsobGVuZ3RoQ29kZS5tYXhMZW5ndGgpKVsxXS5pbmRleAorICAgICAgICAgICAgICAgICAgICBpZiBsZW5ndGghPTE3OiBicmVhaworICAgICAgICAgICAgICAgICAgICBsZW5ndGhDb2RlLmRlc2NyaXB0aW9uID0gJ3RvdGFsIHt9K3t7MX19IHVudXNlZCcuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGVhdC0yPDwzKSszKQorICAgICAgICAgICAgICAgICAgICBleHRyYSA9IHNlbGYudmVyYm9zZVJlYWQobGVuZ3RoQ29kZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3ltYm9sID0gbmV4dChhbHBoYWJldEl0ZXIpCisgICAgICAgICAgICAgICAgI2RvdWJsZSBicmFjZXMgZm9yIGZvcm1hdAorICAgICAgICAgICAgICAgIGNoYXIgPSBzdHIoc3ltYm9sKQorICAgICAgICAgICAgICAgIGlmIGNoYXIgaW4gJ3t9JzogY2hhciAqPSAyCisgICAgICAgICAgICAgICAgbGVuZ3RoQ29kZS5kZXNjcmlwdGlvbiA9IFwKKyAgICAgICAgICAgICAgICAgICAgJ0xlbmd0aCBmb3Ige30gaXMge3swLmluZGV4fX0gYml0cycuZm9ybWF0KGNoYXIpCisgICAgICAgICAgICAgICAgI291dHB1dCBpcyBub3QgbmVlZGVkICh3aWxsIGJlIDApCisgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NlUmVhZChsZW5ndGhDb2RlKQorICAgICAgICAgICAgICAgIHN5bWJvbExlbmd0aHNbc3ltYm9sLmluZGV4XSA9IGxlbmd0aAorICAgICAgICAgICAgICAgIHRvdGFsICs9IDMyNzY4Pj5sZW5ndGgKKyAgICAgICAgICAgICAgICBsYXN0TGVuZ3RoID0gbGVuZ3RoCisgICAgICAgIGFzc2VydCB0b3RhbD09MzI3NjgKKyAgICAgICAgYWxwaGFiZXQuc2V0TGVuZ3RoKHN5bWJvbExlbmd0aHMpCisgICAgICAgIHByaW50KCdFbmQgb2YgdGFibGUuIFByZWZpeCBjb2RlICcrYWxwaGFiZXQubmFtZSsnOicpCisgICAgICAgIGFscGhhYmV0LnNob3dDb2RlKCkKKworICAgICNzdHJlYW0KKyAgICBkZWYgcHJvY2Vzc1N0cmVhbShzZWxmKToKKyAgICAgICAgIiIiUHJvY2VzcyBhIGJyb3RsaSBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBwcmludCgnYWRkciAgaGV4ezp7fXN9YmluYXJ5IGNvbnRleHQgZXhwbGFuYXRpb24nLmZvcm1hdCgKKyAgICAgICAgICAgICcnLCBzZWxmLndpZHRoLTEwKSkKKyAgICAgICAgcHJpbnQoJ1N0cmVhbSBoZWFkZXInLmNlbnRlcig2MCwgJy0nKSkKKyAgICAgICAgc2VsZi53aW5kb3dTaXplID0gc2VsZi52ZXJib3NlUmVhZChXaW5kb3dTaXplQWxwaGFiZXQoKSkKKyAgICAgICAgcHJpbnQoJ01ldGFibG9jayBoZWFkZXInLmNlbnRlcig2MCwgJz0nKSkKKyAgICAgICAgc2VsZi5JU0xBU1QgPSBGYWxzZQorICAgICAgICBzZWxmLm91dHB1dCA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIG5vdCBzZWxmLklTTEFTVDoKKyAgICAgICAgICAgIHNlbGYuSVNMQVNUID0gc2VsZi52ZXJib3NlUmVhZCgKKyAgICAgICAgICAgICAgICBCb29sQ29kZSgnTEFTVCcsIGRlc2NyaXB0aW9uPSJMYXN0IGJsb2NrIikpCisgICAgICAgICAgICBpZiBzZWxmLklTTEFTVDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2VSZWFkKAorICAgICAgICAgICAgICAgICAgICBCb29sQ29kZSgnRU1QVFknLCBkZXNjcmlwdGlvbj0iRW1wdHkgYmxvY2siKSk6IGJyZWFrCisgICAgICAgICAgICBpZiBzZWxmLm1ldGFibG9ja0xlbmd0aCgpOiBjb250aW51ZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuSVNMQVNUIGFuZCBzZWxmLnVuY29tcHJlc3NlZCgpOiBjb250aW51ZQorICAgICAgICAgICAgcHJpbnQoJ0Jsb2NrIHR5cGUgZGVzY3JpcHRvcnMnLmNlbnRlcig2MCwgJy0nKSkKKyAgICAgICAgICAgIHNlbGYubnVtYmVyT2ZCbG9ja1R5cGVzID0ge30KKyAgICAgICAgICAgIHNlbGYuY3VycmVudEJsb2NrQ291bnRzID0ge30KKyAgICAgICAgICAgIHNlbGYuYmxvY2tUeXBlQ29kZXMgPSB7fQorICAgICAgICAgICAgc2VsZi5ibG9ja0NvdW50Q29kZXMgPSB7fQorICAgICAgICAgICAgZm9yIGJsb2NrVHlwZSBpbiAoTCxJLEQpOiBzZWxmLmJsb2NrVHlwZShibG9ja1R5cGUpCisgICAgICAgICAgICBwcmludCgnRGlzdGFuY2UgY29kZSBwYXJhbWV0ZXJzJy5jZW50ZXIoNjAsICctJykpCisgICAgICAgICAgICBzZWxmLk5QT1NURklYLCBzZWxmLk5ESVJFQ1QgPSBzZWxmLnZlcmJvc2VSZWFkKERpc3RhbmNlUGFyYW1BbHBoYWJldCgpKQorICAgICAgICAgICAgc2VsZi5yZWFkTGl0ZXJhbENvbnRleHRNb2RlcygpCisgICAgICAgICAgICBwcmludCgnQ29udGV4dCBtYXBzJy5jZW50ZXIoNjAsICctJykpCisgICAgICAgICAgICBzZWxmLmNtYXBzID0ge30KKyAgICAgICAgICAgICNrZWVwIHRoZSBudW1iZXIgb2YgZWFjaCBraW5kIG9mIHByZWZpeCB0cmVlIGZvciB0aGUgbGFzdCBsb29wCisgICAgICAgICAgICBudW1iZXJPZlRyZWVzID0ge0k6IHNlbGYubnVtYmVyT2ZCbG9ja1R5cGVzW0ldfQorICAgICAgICAgICAgZm9yIGJsb2NrVHlwZSBpbiAoTCxEKToKKyAgICAgICAgICAgICAgICBudW1iZXJPZlRyZWVzW2Jsb2NrVHlwZV0gPSBzZWxmLmNvbnRleHRNYXAoYmxvY2tUeXBlKQorICAgICAgICAgICAgcHJpbnQoJ1ByZWZpeCBjb2RlIGxpc3RzJy5jZW50ZXIoNjAsICctJykpCisgICAgICAgICAgICBzZWxmLnByZWZpeENvZGVzID0ge30KKyAgICAgICAgICAgIGZvciBibG9ja1R5cGUgaW4gKEwsSSxEKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlYWRQcmVmaXhBcnJheShibG9ja1R5cGUsIG51bWJlck9mVHJlZXNbYmxvY2tUeXBlXSkKKyAgICAgICAgICAgIHNlbGYubWV0YWJsb2NrKCkKKworICAgICNtZXRhYmxvY2sgaGVhZGVyCisgICAgZGVmIHZlcmJvc2VSZWFkKHNlbGYsIGFscGhhYmV0LCBjb250ZXh0PScnLCBza2lwRXh0cmE9RmFsc2UpOgorICAgICAgICAiIiJSZWFkIHN5bWJvbCBhbmQgZXh0cmEgZnJvbSBzdHJlYW0gYW5kIGV4cGxhaW4gd2hhdCBoYXBwZW5zLgorICAgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc3ltYm9sCisgICAgICAgID4+PiBvbGxla2UucG9zID0gMAorICAgICAgICA+Pj4gbCA9IExheW91dChvbGxla2UpCisgICAgICAgID4+PiBsLnZlcmJvc2VSZWFkKFdpbmRvd1NpemVBbHBoYWJldCgpKQorICAgICAgICAwMDAwICAxYiAgICAgICAgICAgICAgICAgICAxMDExIFdTSVpFICAgd2luZG93c2l6ZT0oMTw8MjIpLTE2PTQxOTQyODgKKyAgICAgICAgNDE5NDI4OAorICAgICAgICAiIiIKKyAgICAgICAgI1RPRE8gMjogdmVyYm9zaXR5IGxldmVsLCBlLmcuIHNob3cgb25seSBjb2RlcyBhbmQgbWFwcyBpbiBoZWFkZXIKKyAgICAgICAgc3RyZWFtID0gc2VsZi5zdHJlYW0KKyAgICAgICAgcG9zID0gc3RyZWFtLnBvcworICAgICAgICBpZiBza2lwRXh0cmE6CisgICAgICAgICAgICBsZW5ndGgsIHN5bWJvbCA9IGFscGhhYmV0LnJlYWRUdXBsZShzdHJlYW0pCisgICAgICAgICAgICBleHRyYUJpdHMsIGV4dHJhID0gMCwgTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVuZ3RoLCBzeW1ib2wsIGV4dHJhQml0cywgZXh0cmEgPSBhbHBoYWJldC5yZWFkVHVwbGVBbmRFeHRyYSgKKyAgICAgICAgICAgICAgICBzdHJlYW0pCisgICAgICAgICNmaWVsZHM6IGFkZHJlc3MsIGhleCBkYXRhLCBiaW5hcnkgZGF0YSwgbmFtZSBvZiBhbHBoYWJldCwgZXhwbGFuYXRpb24KKyAgICAgICAgaGV4ZGF0YSA9IHNlbGYubWFrZUhleERhdGEocG9zKQorICAgICAgICBhZGRyZXNzRmllbGQgPSAnezowNHh9Jy5mb3JtYXQocG9zKzc+PjMpIGlmIGhleGRhdGEgZWxzZSAnJworICAgICAgICBiaXRkYXRhID0gc2VsZi5mb3JtYXRCaXREYXRhKHBvcywgbGVuZ3RoLCBleHRyYUJpdHMpCisgICAgICAgICNiaXRQdHIgbW92ZXMgYml0ZGF0YSBzbyB0aGF0IHRoZSBieXRlcyBhcmUgZWFzaWVyIHRvIHJlYWQKKyAgICAgICAgI2p1bXAgYmFjayB0byByaWdodCBpZiBhIG5ldyBieXRlIHN0YXJ0cworICAgICAgICBpZiAnfCcgaW4gYml0ZGF0YVsxOl06CisgICAgICAgICAgICAjc3RhcnQgb3ZlciBvbiB0aGUgcmlnaHQgc2lkZQorICAgICAgICAgICAgc2VsZi5iaXRQdHIgPSBzZWxmLndpZHRoCisgICAgICAgIGZpbGxXaWR0aCA9IHNlbGYuYml0UHRyLShsZW4oaGV4ZGF0YSkrbGVuKGJpdGRhdGEpKQorICAgICAgICBpZiBmaWxsV2lkdGg8MDogZmlsbFdpZHRoID0gMAorICAgICAgICBwcmludCgnezo8NXN9IHs6PHt9c30gezo3c30ge30nLmZvcm1hdCgKKyAgICAgICAgICAgIGFkZHJlc3NGaWVsZCwKKyAgICAgICAgICAgIGhleGRhdGErJyAnKmZpbGxXaWR0aCtiaXRkYXRhLCBzZWxmLndpZHRoLAorICAgICAgICAgICAgY29udGV4dCthbHBoYWJldC5uYW1lLAorICAgICAgICAgICAgc3ltYm9sIGlmIHNraXBFeHRyYSBlbHNlIHN5bWJvbC5leHBsYW5hdGlvbihleHRyYSksCisgICAgICAgICAgICApKQorICAgICAgICAjanVtcCB0byB0aGUgcmlnaHQgaWYgd2Ugc3RhcnRlZCB3aXRoIGEgJ3wnCisgICAgICAgICNiZWNhdXNlIHdlIGRpZG4ndCBqdW1wIGJlZm9yZSBwcmludGluZworICAgICAgICBpZiBiaXRkYXRhLnN0YXJ0c3dpdGgoJ3wnKTogc2VsZi5iaXRQdHIgPSBzZWxmLndpZHRoCisgICAgICAgIGVsc2U6IHNlbGYuYml0UHRyIC09IGxlbihiaXRkYXRhKQorICAgICAgICByZXR1cm4gc3ltYm9sIGlmIHNraXBFeHRyYSBlbHNlIHN5bWJvbC52YWx1ZShleHRyYSkKKworICAgIGRlZiBtZXRhYmxvY2tMZW5ndGgoc2VsZik6CisgICAgICAgICIiIlJlYWQgTU5JQkJMRVMgYW5kIG1ldGEgYmxvY2sgbGVuZ3RoOworICAgICAgICBpZiBlbXB0eSBibG9jaywgc2tpcCBibG9jayBhbmQgcmV0dXJuIHRydWUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLk1MRU4gPSBzZWxmLnZlcmJvc2VSZWFkKE1ldGFibG9ja0xlbmd0aEFscGhhYmV0KCkpCisgICAgICAgIGlmIHNlbGYuTUxFTjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjZW1wdHkgYmxvY2s7IHNraXAgYW5kIHJldHVybiBGYWxzZQorICAgICAgICBzZWxmLnZlcmJvc2VSZWFkKFJlc2VydmVkQWxwaGFiZXQoKSkKKyAgICAgICAgTVNLSVAgPSBzZWxmLnZlcmJvc2VSZWFkKFNraXBMZW5ndGhBbHBoYWJldCgpKQorICAgICAgICBzZWxmLnZlcmJvc2VSZWFkKEZpbGxlckFscGhhYmV0KHN0cmVhbVBvcz1zZWxmLnN0cmVhbS5wb3MpKQorICAgICAgICBzZWxmLnN0cmVhbS5wb3MgKz0gOCpNU0tJUAorICAgICAgICBwcmludCgiU2tpcHBpbmcgdG8gezp4fSIuZm9ybWF0KHNlbGYuc3RyZWFtLnBvcz4+MykpCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgdW5jb21wcmVzc2VkKHNlbGYpOgorICAgICAgICAiIiJJZiB0cnVlLCBoYW5kbGUgdW5jb21wcmVzc2VkIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAgIElTVU5DT01QUkVTU0VEID0gc2VsZi52ZXJib3NlUmVhZCgKKyAgICAgICAgICAgIEJvb2xDb2RlKCdVTkNNUFInLCBkZXNjcmlwdGlvbj0nSXMgdW5jb21wcmVzc2VkPycpKQorICAgICAgICBpZiBJU1VOQ09NUFJFU1NFRDoKKyAgICAgICAgICAgIHNlbGYudmVyYm9zZVJlYWQoRmlsbGVyQWxwaGFiZXQoc3RyZWFtUG9zPXNlbGYuc3RyZWFtLnBvcykpCisgICAgICAgICAgICBwcmludCgnVW5jb21wcmVzc2VkIGRhdGE6JykKKyAgICAgICAgICAgIHNlbGYub3V0cHV0ICs9IHNlbGYuc3RyZWFtLnJlYWRCeXRlcyhzZWxmLk1MRU4pCisgICAgICAgICAgICBwcmludChvdXRwdXRGb3JtYXR0ZXIoc2VsZi5vdXRwdXRbLXNlbGYuTUxFTjpdKSkKKyAgICAgICAgcmV0dXJuIElTVU5DT01QUkVTU0VECisKKyAgICBkZWYgYmxvY2tUeXBlKHNlbGYsIGtpbmQpOgorICAgICAgICAiIiJSZWFkIGJsb2NrIHR5cGUgc3dpdGNoIGRlc2NyaXB0b3IgZm9yIGdpdmVuIGtpbmQgb2YgYmxvY2tUeXBlLiIiIgorICAgICAgICBOQkxUWVBFUyA9IHNlbGYudmVyYm9zZVJlYWQoVHlwZUNvdW50QWxwaGFiZXQoCisgICAgICAgICAgICAnQlQjJytraW5kWzBdLnVwcGVyKCksCisgICAgICAgICAgICBkZXNjcmlwdGlvbj0ne30gYmxvY2sgdHlwZXMnLmZvcm1hdChraW5kKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIHNlbGYubnVtYmVyT2ZCbG9ja1R5cGVzW2tpbmRdID0gTkJMVFlQRVMKKyAgICAgICAgaWYgTkJMVFlQRVM+PTI6CisgICAgICAgICAgICBzZWxmLmJsb2NrVHlwZUNvZGVzW2tpbmRdID0gc2VsZi5yZWFkUHJlZml4Q29kZSgKKyAgICAgICAgICAgICAgICBCbG9ja1R5cGVBbHBoYWJldCgnQlQnK2tpbmRbMF0udXBwZXIoKSwgTkJMVFlQRVMpKQorICAgICAgICAgICAgc2VsZi5ibG9ja0NvdW50Q29kZXNba2luZF0gPSBzZWxmLnJlYWRQcmVmaXhDb2RlKAorICAgICAgICAgICAgICAgIEJsb2NrQ291bnRBbHBoYWJldCgnQkMnK2tpbmRbMF0udXBwZXIoKSkpCisgICAgICAgICAgICBibG9ja0NvdW50ID0gc2VsZi52ZXJib3NlUmVhZChzZWxmLmJsb2NrQ291bnRDb2Rlc1traW5kXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJsb2NrQ291bnQgPSAxPDwyNAorICAgICAgICBzZWxmLmN1cnJlbnRCbG9ja0NvdW50c1traW5kXSA9IGJsb2NrQ291bnQKKworICAgIGRlZiByZWFkTGl0ZXJhbENvbnRleHRNb2RlcyhzZWxmKToKKyAgICAgICAgIiIiUmVhZCBsaXRlcmFsIGNvbnRleHQgbW9kZXMuCisgICAgICAgIExTQjY6IGxvd2VyIDYgYml0cyBvZiBsYXN0IGNoYXIKKyAgICAgICAgTVNCNjogdXBwZXIgNiBiaXRzIG9mIGxhc3QgY2hhcgorICAgICAgICBVVEY4OiByb3VnbHkgZGVwZW5kZW50IG9uIGNhdGVnb3JpZXM6CisgICAgICAgICAgICB1cHBlciA0IGJpdHMgZGVwZW5kIG9uIGNhdGVnb3J5IG9mIGxhc3QgY2hhcjoKKyAgICAgICAgICAgICAgICBjb250cm9sL3doaXRlc3BhY2Uvc3BhY2UvIHB1bmN0dWF0aW9uL3F1b3RlLyUvb3Blbi9jbG9zZS8KKyAgICAgICAgICAgICAgICBjb21tYS9wZXJpb2QvPS9kaWdpdHMvIFZPV0VML0NPTlNPTkFOVC92b3dlbC9jb25zb25hbnQKKyAgICAgICAgICAgIGxvd2VyIDIgYml0cyBkZXBlbmQgb24gY2F0ZWdvcnkgb2YgMm5kIGxhc3QgY2hhcjoKKyAgICAgICAgICAgICAgICBzcGFjZS9wdW5jdHVhdGlvbi9kaWdpdCBvciB1cHBlci9sb3dlcmNhc2UKKyAgICAgICAgc2lnbmVkOiBoYW1taW5nIHdlaWdodCBvZiBsYXN0IDIgY2hhcnMKKyAgICAgICAgIiIiCisgICAgICAgIHByaW50KCdDb250ZXh0IG1vZGVzJy5jZW50ZXIoNjAsICctJykpCisgICAgICAgIHNlbGYubGl0ZXJhbENvbnRleHRNb2RlcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYubnVtYmVyT2ZCbG9ja1R5cGVzW0xdKToKKyAgICAgICAgICAgIHNlbGYubGl0ZXJhbENvbnRleHRNb2Rlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NlUmVhZChMaXRlcmFsQ29udGV4dE1vZGUobnVtYmVyPWkpKSkKKworICAgIGRlZiBjb250ZXh0TWFwKHNlbGYsIGtpbmQpOgorICAgICAgICAiIiJSZWFkIGNvbnRleHQgbWFwcworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlmZmVybnQgdmFsdWVzIG9uIHRoZSBjb250ZXh0IG1hcAorICAgICAgICAoSW4gb3RoZXIgd29yZHMsIHRoZSBudW1iZXIgb2YgcHJlZml4IHRyZWVzKQorICAgICAgICAiIiIKKyAgICAgICAgTlRSRUVTID0gc2VsZi52ZXJib3NlUmVhZChUeXBlQ291bnRBbHBoYWJldCgKKyAgICAgICAgICAgIGtpbmRbMF0udXBwZXIoKSsnVCMnLAorICAgICAgICAgICAgZGVzY3JpcHRpb249J3t9IHByZWZpeCB0cmVlcycuZm9ybWF0KGtpbmQpKSkKKyAgICAgICAgbWFwU2l6ZSA9IHtMOjY0LCBEOjR9W2tpbmRdCisgICAgICAgIGlmIE5UUkVFUzwyOgorICAgICAgICAgICAgc2VsZi5jbWFwc1traW5kXSA9IFswXSptYXBTaXplCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjcmVhZCBDTUFQa2luZAorICAgICAgICAgICAgUkxFTUFYID0gc2VsZi52ZXJib3NlUmVhZChSTEVtYXhBbHBoYWJldCgKKyAgICAgICAgICAgICAgICAnUkxFIycra2luZFswXS51cHBlcigpLAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPWtpbmQrJyBjb250ZXh0IG1hcCcpKQorICAgICAgICAgICAgYWxwaGFiZXQgPSBUcmVlQWxwaGFiZXQoJ0NNJytraW5kWzBdLnVwcGVyKCksIE5UUkVFUz1OVFJFRVMsIFJMRU1BWD1STEVNQVgpCisgICAgICAgICAgICBjbWFwQ29kZSA9IHNlbGYucmVhZFByZWZpeENvZGUoYWxwaGFiZXQpCisgICAgICAgICAgICB0YWJsZVNpemUgPSBtYXBTaXplKnNlbGYubnVtYmVyT2ZCbG9ja1R5cGVzW2tpbmRdCisgICAgICAgICAgICBjbWFwID0gW10KKyAgICAgICAgICAgIHdoaWxlIGxlbihjbWFwKTx0YWJsZVNpemU6CisgICAgICAgICAgICAgICAgY21hcENvZGUuZGVzY3JpcHRpb24gPSAnbWFwIHt9LCBlbnRyeSB7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAqZGl2bW9kKGxlbihjbWFwKSwgbWFwU2l6ZSkpCisgICAgICAgICAgICAgICAgY291bnQsIHZhbHVlID0gc2VsZi52ZXJib3NlUmVhZChjbWFwQ29kZSkKKyAgICAgICAgICAgICAgICBjbWFwLmV4dGVuZChbdmFsdWVdKmNvdW50KQorICAgICAgICAgICAgYXNzZXJ0IGxlbihjbWFwKT09dGFibGVTaXplCisgICAgICAgICAgICBJTVRGID0gc2VsZi52ZXJib3NlUmVhZChCb29sQ29kZSgnSU1URicsIGRlc2NyaXB0aW9uPSdBcHBseSBpbnZlcnNlIE1URicpKQorICAgICAgICAgICAgaWYgSU1URjoKKyAgICAgICAgICAgICAgICBzZWxmLklNVEYoY21hcCkKKyAgICAgICAgICAgIGlmIGtpbmQ9PUw6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0NvbnRleHQgbWFwcyBmb3IgbGl0ZXJhbCBkYXRhOicpCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNtYXApLCA2NCk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCooCisgICAgICAgICAgICAgICAgICAgICAgICAnJy5qb2luKG1hcChzdHIsIGNtYXBbajpqKzhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKGksIGkrNjQsIDgpCisgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgnQ29udGV4dCBtYXAgZm9yIGRpc3RhbmNlczonKQorICAgICAgICAgICAgICAgIHByaW50KCooCisgICAgICAgICAgICAgICAgICAgICcnLmpvaW4obWFwKCd7Onh9Jy5mb3JtYXQsIGNtYXBbaTppKzRdKSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNtYXApLCA0KQorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5jbWFwc1traW5kXSA9IGNtYXAKKyAgICAgICAgcmV0dXJuIE5UUkVFUworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBJTVRGKHYpOgorICAgICAgICAiIiJJbiBwbGFjZSBpbnZlcnNlIG1vdmUgdG8gZnJvbnQgdHJhbnNmb3JtLgorICAgICAgICAiIiIKKyAgICAgICAgI210ZiBpcyBpbml0aWFsaXplZCB2aXJ0dWFsbHkgd2l0aCByYW5nZShpbmZpbml0eSkKKyAgICAgICAgbXRmID0gW10KKyAgICAgICAgZm9yIGksIHZpIGluIGVudW1lcmF0ZSh2KToKKyAgICAgICAgICAgICNnZXQgb2xkIHZhbHVlIGZyb20gbXRmLiBJZiBuZXZlciBzZWVuLCB0YWtlIHZpcnR1YWwgdmFsdWUKKyAgICAgICAgICAgIHRyeTogdmFsdWUgPSBtdGYucG9wKHZpKQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6IHZhbHVlID0gdmkKKyAgICAgICAgICAgICNwdXQgdmFsdWUgYXQgZnJvbnQKKyAgICAgICAgICAgIG10Zi5pbnNlcnQoMCwgdmFsdWUpCisgICAgICAgICAgICAjcmVwbGFjZSB0cmFuc2Zvcm1lZCB2YWx1ZQorICAgICAgICAgICAgdltpXSA9IHZhbHVlCisKKyAgICBkZWYgcmVhZFByZWZpeEFycmF5KHNlbGYsIGtpbmQsIG51bWJlck9mVHJlZXMpOgorICAgICAgICAiIiJSZWFkIHByZWZpeCBjb2RlIGFycmF5IiIiCisgICAgICAgIHByZWZpeGVzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtYmVyT2ZUcmVlcyk6CisgICAgICAgICAgICBpZiBraW5kPT1MOiBhbHBoYWJldCA9IExpdGVyYWxBbHBoYWJldChpKQorICAgICAgICAgICAgZWxpZiBraW5kPT1JOiBhbHBoYWJldCA9IEluc2VydEFuZENvcHlBbHBoYWJldChpKQorICAgICAgICAgICAgZWxpZiBraW5kPT1EOiBhbHBoYWJldCA9IERpc3RhbmNlQWxwaGFiZXQoCisgICAgICAgICAgICAgICAgaSwgTlBPU1RGSVg9c2VsZi5OUE9TVEZJWCwgTkRJUkVDVD1zZWxmLk5ESVJFQ1QpCisgICAgICAgICAgICBzZWxmLnJlYWRQcmVmaXhDb2RlKGFscGhhYmV0KQorICAgICAgICAgICAgcHJlZml4ZXMuYXBwZW5kKGFscGhhYmV0KQorICAgICAgICBzZWxmLnByZWZpeENvZGVzW2tpbmRdID0gcHJlZml4ZXMKKworICAgICNtZXRhYmxvY2sgZGF0YQorICAgIGRlZiBtZXRhYmxvY2soc2VsZik6CisgICAgICAgICIiIlByb2Nlc3MgdGhlIGRhdGEuCisgICAgICAgIFJlbGV2YW50IHZhcmlhYmxlcyBvZiBzZWxmOgorICAgICAgICBudW1iZXJPZkJsb2NrVHlwZXNba2luZF06IG51bWJlciBvZiBibG9jayB0eXBlcworICAgICAgICBjdXJyZW50QmxvY2tUeXBlc1traW5kXTogY3VycmVudCBibG9jayB0eXBlcyAoPTApCisgICAgICAgIGxpdGVyYWxDb250ZXh0TW9kZXM6IHRoZSBjb250ZXh0IG1vZGVzIGZvciB0aGUgbGl0ZXJhbCBibG9jayB0eXBlcworICAgICAgICBjdXJyZW50QmxvY2tDb3VudHNba2luZF06IGNvdW50ZXJzIGZvciBibG9jayB0eXBlcworICAgICAgICBibG9ja1R5cGVDb2Rlc1traW5kXTogY29kZSBmb3IgYmxvY2sgdHlwZQorICAgICAgICBibG9ja0NvdW50Q29kZXNba2luZF06IGNvZGUgZm9yIGJsb2NrIGNvdW50CisgICAgICAgIGNtYXBzW2tpbmRdOiB0aGUgY29udGV4dCBtYXBzIChub3QgZm9yIEkpCisgICAgICAgIHByZWZpeENvZGVzW2tpbmRdWyNdOiB0aGUgcHJlZml4IGNvZGVzCisgICAgICAgIGxhc3REaXN0YW5jZXM6IHRoZSBsYXN0IGZvdXIgZGlzdGFuY2VzCisgICAgICAgIGxhc3RDaGFyczogdGhlIGxhc3QgdHdvIGNoYXJzCisgICAgICAgIG91dHB1dDogdGhlIHJlc3VsdAorICAgICAgICAiIiIKKyAgICAgICAgcHJpbnQoJ01ldGEgYmxvY2sgY29udGVudHMnLmNlbnRlcig2MCwgJz0nKSkKKyAgICAgICAgc2VsZi5jdXJyZW50QmxvY2tUeXBlcyA9IHtMOjAsIEk6MCwgRDowLCBwTDoxLCBwSToxLCBwRDoxfQorICAgICAgICBzZWxmLmxhc3REaXN0YW5jZXMgPSBkZXF1ZShbMTcsMTYsMTEsNF0sIG1heGxlbj00KQorICAgICAgICAjdGhlIGN1cnJlbnQgY29udGV4dCBtb2RlIGlzIGZvciBibG9jayB0eXBlIDAKKyAgICAgICAgc2VsZi5jb250ZXh0TW9kZSA9IENvbnRleHRNb2RlS2VlcGVyKHNlbGYubGl0ZXJhbENvbnRleHRNb2Rlc1swXSkKKyAgICAgICAgd29yZExpc3QgPSBXb3JkTGlzdCgpCisKKyAgICAgICAgI3NldHVwIGRpc3RhbmNlIGNhbGxiYWNrIGZ1bmN0aW9uCisgICAgICAgIGRlZiBkaXN0YW5jZUNhbGxiYWNrKHN5bWJvbCwgZXh0cmEpOgorICAgICAgICAgICAgImNhbGxiYWNrIGZ1bmN0aW9uIGZvciBkaXNwbGF5aW5nIGRlY29kZWQgZGlzdGFuY2UiCisgICAgICAgICAgICBpbmRleCwgb2Zmc2V0ID0gc3ltYm9sLnZhbHVlKGV4dHJhKQorICAgICAgICAgICAgaWYgaW5kZXg6CisgICAgICAgICAgICAgICAgI3JlY2VudCBkaXN0YW5jZQorICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gc2VsZi5sYXN0RGlzdGFuY2VzWy1pbmRleF0rb2Zmc2V0CisgICAgICAgICAgICAgICAgcmV0dXJuICdEaXN0YW5jZToge31sYXN0ezorZH09e30nLmZvcm1hdChpbmRleCwgb2Zmc2V0LCBkaXN0YW5jZSkKKyAgICAgICAgICAgICNhYnNvbHV0ZSB2YWx1ZQorICAgICAgICAgICAgaWYgb2Zmc2V0PD1tYXhEaXN0YW5jZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ0Fic29sdXRlIHZhbHVlOiB7fSAocG9zIHt9KScuZm9ybWF0KG9mZnNldCwgbWF4RGlzdGFuY2Utb2Zmc2V0KQorICAgICAgICAgICAgI3dvcmQgbGlzdCB2YWx1ZQorICAgICAgICAgICAgYWN0aW9uLCB3b3JkID0gZGl2bW9kKG9mZnNldC1tYXhEaXN0YW5jZSwgMTw8d29yZExpc3QuTkRCSVRTW2NvcHlMZW5dKQorICAgICAgICAgICAgcmV0dXJuICd7fS17fSBnaXZlcyB3b3JkIHt9LHt9IGFjdGlvbiB7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgIG9mZnNldCwgbWF4RGlzdGFuY2UsIGNvcHlMZW4sIHdvcmQsIGFjdGlvbikKKyAgICAgICAgZm9yIGRwYyBpbiBzZWxmLnByZWZpeENvZGVzW0RdOiBkcGMuY2FsbGJhY2sgPSBkaXN0YW5jZUNhbGxiYWNrCisKKyAgICAgICAgYmxvY2tMZW4gPSAwCisgICAgICAgICN0aGVyZSB3ZSBnbworICAgICAgICB3aGlsZSBibG9ja0xlbjxzZWxmLk1MRU46CisgICAgICAgICAgICAjZ2V0IGluc2VydCZjb3B5IGNvbW1hbmQKKyAgICAgICAgICAgIGxpdExlbiwgY29weUxlbiwgZGlzdDBGbGFnID0gc2VsZi52ZXJib3NlUmVhZCgKKyAgICAgICAgICAgICAgICBzZWxmLnByZWZpeENvZGVzW0ldWworICAgICAgICAgICAgICAgICAgICBzZWxmLmZpZ3VyZUJsb2NrVHlwZShJKV0pCisgICAgICAgICAgICAjbGl0ZXJhbCBkYXRhCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsaXRMZW4pOgorICAgICAgICAgICAgICAgIGJ0ID0gc2VsZi5maWd1cmVCbG9ja1R5cGUoTCkKKyAgICAgICAgICAgICAgICBjbSA9IHNlbGYuY29udGV4dE1vZGUuZ2V0SW5kZXgoKQorICAgICAgICAgICAgICAgIGN0ID0gc2VsZi5jbWFwc1tMXVtidDw8NnxjbV0KKyAgICAgICAgICAgICAgICBjaGFyID0gc2VsZi52ZXJib3NlUmVhZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXhDb2Rlc1tMXVtjdF0sCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9J3t9LHt9PScuZm9ybWF0KGJ0LGNtKSkKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHRNb2RlLmFkZChjaGFyKQorICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0LmFwcGVuZChjaGFyKQorICAgICAgICAgICAgYmxvY2tMZW4gKz0gbGl0TGVuCisgICAgICAgICAgICAjY2hlY2sgaWYgd2UncmUgZG9uZQorICAgICAgICAgICAgaWYgYmxvY2tMZW4+PXNlbGYuTUxFTjogcmV0dXJuCisgICAgICAgICAgICAjZGlzdGFuY2UKKyAgICAgICAgICAgICNkaXN0YW5jZXMgYXJlIGNvbXB1dGVkIHJlbGF0aXZlIHRvIG91dHB1dCBsZW5ndGgsIGF0IG1vc3Qgd2luZG93IHNpemUKKyAgICAgICAgICAgIG1heERpc3RhbmNlID0gbWluKGxlbihzZWxmLm91dHB1dCksIHNlbGYud2luZG93U2l6ZSkKKyAgICAgICAgICAgIGlmIGRpc3QwRmxhZzoKKyAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IHNlbGYubGFzdERpc3RhbmNlc1stMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnQgPSBzZWxmLmZpZ3VyZUJsb2NrVHlwZShEKQorICAgICAgICAgICAgICAgIGNtID0gezI6MCwgMzoxLCA0OjJ9LmdldChjb3B5TGVuLCAzKQorICAgICAgICAgICAgICAgIGN0ID0gc2VsZi5jbWFwc1tEXVtidDw8MnxjbV0KKyAgICAgICAgICAgICAgICBpbmRleCwgb2Zmc2V0ID0gc2VsZi52ZXJib3NlUmVhZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXhDb2Rlc1tEXVtjdF0sCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9J3t9LHt9PScuZm9ybWF0KGJ0LGNtKSkKKyAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IHNlbGYubGFzdERpc3RhbmNlc1staW5kZXhdK29mZnNldCBpZiBpbmRleCBlbHNlIG9mZnNldAorICAgICAgICAgICAgICAgIGlmIGluZGV4PT0xIGFuZCBvZmZzZXQ9PTA6CisgICAgICAgICAgICAgICAgICAgICN0byBtYWtlIHN1cmUgZGlzdGFuY2UgaXMgbm90IHB1dCBpbiBsYXN0IGRpc3RhbmNlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgZGlzdDBGbGFnID0gVHJ1ZQorICAgICAgICAgICAgaWYgZGlzdGFuY2U8PW1heERpc3RhbmNlOgorICAgICAgICAgICAgICAgICNjb3B5IGZyb20gb3V0cHV0CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZS1kaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heERpc3RhbmNlLWRpc3RhbmNlK2NvcHlMZW4pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm91dHB1dC5hcHBlbmQoc2VsZi5vdXRwdXRbaV0pCisgICAgICAgICAgICAgICAgaWYgbm90IGRpc3QwRmxhZzogc2VsZi5sYXN0RGlzdGFuY2VzLmFwcGVuZChkaXN0YW5jZSkKKyAgICAgICAgICAgICAgICBjb21tZW50ID0gJ1NlZW4gYmVmb3JlJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjZmV0Y2ggZnJvbSB3b3JkbGlzdAorICAgICAgICAgICAgICAgIG5ld1dvcmQgPSB3b3JkTGlzdC53b3JkKGNvcHlMZW4sIGRpc3RhbmNlLW1heERpc3RhbmNlLTEpCisgICAgICAgICAgICAgICAgc2VsZi5vdXRwdXQuZXh0ZW5kKG5ld1dvcmQpCisgICAgICAgICAgICAgICAgI2FkanVzdCBjb3B5TGVuIHRvIHJlZmxlY3QgYWN0dWFsIG5ldyBkYXRhCisgICAgICAgICAgICAgICAgY29weUxlbiA9IGxlbihuZXdXb3JkKQorICAgICAgICAgICAgICAgIGNvbW1lbnQgPSAnRnJvbSB3b3JkbGlzdCcKKyAgICAgICAgICAgIGJsb2NrTGVuICs9IGNvcHlMZW4KKyAgICAgICAgICAgIHByaW50KCcgJyo0MCwKKyAgICAgICAgICAgICAgICBjb21tZW50LAorICAgICAgICAgICAgICAgICc6ICInLAorICAgICAgICAgICAgICAgIG91dHB1dEZvcm1hdHRlcihzZWxmLm91dHB1dFstY29weUxlbjpdKSwKKyAgICAgICAgICAgICAgICAnIicsCisgICAgICAgICAgICAgICAgc2VwPScnKQorICAgICAgICAgICAgc2VsZi5jb250ZXh0TW9kZS5hZGQoc2VsZi5vdXRwdXRbLTJdKQorICAgICAgICAgICAgc2VsZi5jb250ZXh0TW9kZS5hZGQoc2VsZi5vdXRwdXRbLTFdKQorCisgICAgZGVmIGZpZ3VyZUJsb2NrVHlwZShzZWxmLCBraW5kKToKKyAgICAgICAgY291bnRzLCB0eXBlcyA9IHNlbGYuY3VycmVudEJsb2NrQ291bnRzLCBzZWxmLmN1cnJlbnRCbG9ja1R5cGVzCisgICAgICAgIGlmIGNvdW50c1traW5kXT09MDoKKyAgICAgICAgICAgIG5ld1R5cGUgPSBzZWxmLnZlcmJvc2VSZWFkKHNlbGYuYmxvY2tUeXBlQ29kZXNba2luZF0pCisgICAgICAgICAgICBpZiBuZXdUeXBlPT0tMjogbmV3VHlwZSA9IHR5cGVzWydQJytraW5kXQorICAgICAgICAgICAgZWxpZiBuZXdUeXBlPT0tMToKKyAgICAgICAgICAgICAgICBuZXdUeXBlID0gKHR5cGVzW2tpbmRdKzEpJXNlbGYubnVtYmVyT2ZCbG9ja1R5cGVzW2tpbmRdCisgICAgICAgICAgICB0eXBlc1snUCcra2luZF0gPSB0eXBlc1traW5kXQorICAgICAgICAgICAgdHlwZXNba2luZF0gPSBuZXdUeXBlCisgICAgICAgICAgICBjb3VudHNba2luZF0gPSBzZWxmLnZlcmJvc2VSZWFkKHNlbGYuYmxvY2tDb3VudENvZGVzW2tpbmRdKQorICAgICAgICBjb3VudHNba2luZF0gLT0xCisgICAgICAgIHJldHVybiB0eXBlc1traW5kXQorCitfX3Rlc3RfXyA9IHsKKydCaXRTdHJlYW0nOiAiIiIKKyAgICA+Pj4gYnMgPSBCaXRTdHJlYW0oYidKdXJqZW4nKQorICAgID4+PiBicy5yZWFkQnl0ZXMoMikKKyAgICBiJ0p1JworICAgID4+PiBicy5yZWFkKDYpICNyPTAxMTEwMDEwCisgICAgNTAKKyAgICA+Pj4gYnMKKyAgICBCaXRTdHJlYW0ocG9zPTI6NikKKyAgICA+Pj4gYnMucGVlayg1KSAgI2o9MDExMDEwMTAKKyAgICA5CisgICAgPj4+IGJzLnJlYWRCeXRlcygyKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogcmVhZEJ5dGVzOiBuZWVkIGJ5dGUgYm91bmRhcnkKKyAgICAiIiIsCisKKydTeW1ib2wnOiAiIiIKKyAgICA+Pj4gYT1TeW1ib2woTWV0YWJsb2NrTGVuZ3RoQWxwaGFiZXQoKSw1KQorICAgID4+PiBsZW4oYSkKKyAgICAyCisgICAgPj4+IGludChhKQorICAgIDUKKyAgICA+Pj4gYS5iaXRQYXR0ZXJuKCkKKyAgICAnMDEnCisgICAgPj4+IGEudmFsdWUoMjAwMDAwKQorICAgIDIwMDAwMQorICAgID4+PiBhLmV4cGxhbmF0aW9uKDMwMDAwMCkKKyAgICAnZGF0YSBsZW5ndGg6IDQ5M2UwaCsxPTMwMDAwMScKKyAgICAiIiIsCisKKydSYW5nZURlY29kZXInOiAiIiIKKyAgICA+Pj4gYT1SYW5nZURlY29kZXIoYml0TGVuZ3RoPTMpCisgICAgPj4+IGxlbihhKQorICAgIDgKKyAgICA+Pj4gYS5uYW1lPSd0JworICAgID4+PiBsaXN0KGEpCisgICAgW1N5bWJvbCh0LCAwKSwgU3ltYm9sKHQsIDEpLCBTeW1ib2wodCwgMiksIFN5bWJvbCh0LCAzKSwgU3ltYm9sKHQsIDQpLCBTeW1ib2wodCwgNSksIFN5bWJvbCh0LCA2KSwgU3ltYm9sKHQsIDcpXQorICAgID4+PiBhWzJdCisgICAgU3ltYm9sKHQsIDIpCisgICAgPj4+IGEuYml0UGF0dGVybig0KQorICAgICcxMDAnCisgICAgPj4+IGEubGVuZ3RoKDIpCisgICAgMworICAgID4+PiBhLmRlY29kZVBlZWsoMTUpCisgICAgKDMsIFN5bWJvbCh0LCA3KSkKKyAgICA+Pj4KKworICAgICIiIiwKKworJ1ByZWZpeERlY29kZXInOiAiIiIKKyAgICA+Pj4gYT1QcmVmaXhEZWNvZGVyKGRlY29kZVRhYmxlPXswOjEsMToyLDM6Myw3OjR9KQorICAgID4+PiBsZW4oYSkKKyAgICA0CisgICAgPj4+IGEubmFtZT0ndCcKKyAgICA+Pj4gbGlzdChhKQorICAgIFtTeW1ib2wodCwgMSksIFN5bWJvbCh0LCAyKSwgU3ltYm9sKHQsIDMpLCBTeW1ib2wodCwgNCldCisgICAgPj4+IGEuZGVjb2RlUGVlaygyMikKKyAgICAoMSwgU3ltYm9sKHQsIDEpKQorICAgID4+PiBhLmRlY29kZVBlZWsoMjcpCisgICAgKDMsIFN5bWJvbCh0LCAzKSkKKyAgICA+Pj4gYS5sZW5ndGgoMSkKKyAgICAxCisgICAgPj4+IGEubGVuZ3RoKDQpCisgICAgMworICAgICIiIiwKKworJ0NvZGUnOiAiIiIKKyAgICA+Pj4gYT1Db2RlKCd0JyxhbHBoYWJldFNpemU9MTApCisgICAgPj4+IGxlbihhKQorICAgIDEwCisgICAgPj4+IGEuc2hvd0NvZGUoKQorICAgIDAwMDA6MCAwMDAxOjEgMDAxMDoyIDAwMTE6MyAwMTAwOjQgMDEwMTo1IDAxMTA6NiAwMTExOjcgMTAwMDo4IDEwMDE6OQorICAgID4+PiBhLnNldExlbmd0aCh7MjoxLDM6Miw1OjMsNjozfSkKKyAgICA+Pj4gYS5zaG93Q29kZSgpCisgICAgICAwOjIgIDAxOjMgMDExOjUgMTExOjYKKyAgICA+Pj4gbGVuKGEpCisgICAgNAorICAgID4+PiBkZWYgY2FsbGJhY2soaSk6IHJldHVybiAnY2FsbHt9YmFjaycuZm9ybWF0KGkpCisgICAgPj4+IGE9Q29kZSgndCcsY2FsbGJhY2s9Y2FsbGJhY2ssYml0TGVuZ3RoPTMpCisgICAgPj4+IGFbNl0uZXhwbGFuYXRpb24oKQorICAgICdjYWxsNmJhY2snCisgICAgIiIiLAorCisnV2l0aEV4dHJhJzogIiIiCisgICAgPj4+IGNsYXNzIEEoV2l0aEV4dHJhKToKKyAgICAuLi4gICAgZXh0cmFUYWJsZSA9IFswLDEsMSwyLDJdCisgICAgPj4+IGE9QSgndCcsYWxwaGFiZXRTaXplPTUpCisgICAgPj4+IGFbMV0KKyAgICBTeW1ib2wodCwgMSkKKyAgICA+Pj4gYS5leHRyYUJpdHMoMikKKyAgICAxCisgICAgPj4+IGEubW5lbW9uaWMoNCkKKyAgICAnNCcKKyAgICA+Pj4gYS5yZWFkVHVwbGVBbmRFeHRyYShCaXRTdHJlYW0oYidceDViJykpCisgICAgKDMsIFN5bWJvbCh0LCAzKSwgMiwgMykKKyAgICAiIiIsCisKKydCb29sQ29kZSc6ICIiIgorICAgID4+PiBCb29sQ29kZSgndGVzdCcpWzBdLmV4cGxhbmF0aW9uKCkKKyAgICAnMDogRmFsc2UnCisgICAgIiIiLAorCisnRW51bWVyYXRvcic6ICIiIgorICAgID4+PiBjbGFzcyBBKEVudW1lcmF0b3IpOgorICAgIC4uLiAgICBleHRyYVRhYmxlID0gWzAsMSwxLDIsMl0KKyAgICAuLi4gICAgdmFsdWUwPTMKKyAgICA+Pj4gYT1BKGFscGhhYmV0TGVuZ3RoPTUpCisgICAgPj4+IGEudmFsdWUoMykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogdmFsdWUoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2V4dHJhJworICAgID4+PiBhLmV4cGxhbmF0aW9uKDMsNCkKKyAgICAneHggMDExOiA4LTExOyA4KzQ9MTInCisgICAgIiIiLAorCisnV2luZG93U2l6ZUFscGhhYmV0JzogIiIiCisgICAgPj4+IHdpbmRvd1NpemVBbHBoYWJldCA9IFdpbmRvd1NpemVBbHBoYWJldCgpCisgICAgPj4+IHdpbmRvd1NpemVBbHBoYWJldFswXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogTm8gc3ltYm9sIFdpbmRvd1NpemVBbHBoYWJldFswXQorICAgID4+PiBsZW4od2luZG93U2l6ZUFscGhhYmV0KQorICAgIDE2CisgICAgPj4+IHdpbmRvd1NpemVBbHBoYWJldFsyMV0KKyAgICBTeW1ib2woV1NJWkUsIDIxKQorICAgID4+PiB3aW5kb3dTaXplQWxwaGFiZXRbMjFdLmJpdFBhdHRlcm4oKQorICAgICcxMDAxJworICAgID4+PiB3aW5kb3dTaXplQWxwaGFiZXRbMjFdLmV4dHJhQml0cygpCisgICAgMAorICAgID4+PiB3aW5kb3dTaXplQWxwaGFiZXRbMjFdLmluZGV4CisgICAgMjEKKyAgICA+Pj4gd2luZG93U2l6ZUFscGhhYmV0WzEwXS52YWx1ZSgpCisgICAgMTAwOAorICAgID4+PiB3aW5kb3dTaXplQWxwaGFiZXRbMTBdLmV4cGxhbmF0aW9uKCkKKyAgICAnd2luZG93c2l6ZT0oMTw8MTApLTE2PTEwMDgnCisgICAgPj4+IHdpbmRvd1NpemVBbHBoYWJldC5zaG93Q29kZSgpCisgICAgICAgICAgMDo2NTUyMCAgICAxMTAwMDAxOjE2MzY4ICAgIDExMTAwMDE6MzI3NTIgICAgICAgMDAxMToyNjIxMjgKKyAgICAwMDAwMDAxOjEzMTA1NiAgIDAwMTAwMDE6Tm9uZSAgICAgICAgMTAwMToyMDk3MTM2ICAgICAxMDExOjQxOTQyODgKKyAgICAxMDAwMDAxOjQwODAgICAgIDEwMTAwMDE6ODE3NiAgICAgICAgMDEwMTo1MjQyNzIgICAgICAwMTExOjEwNDg1NjAKKyAgICAwMTAwMDAxOjEwMDggICAgIDAxMTAwMDE6MjAzMiAgICAgICAgMTEwMTo4Mzg4NTkyICAgICAxMTExOjE2Nzc3MjAwCisgICAgIiIiLAorCisnVHlwZUNvdW50QWxwaGFiZXQnOiAiIiIKKyAgICA+Pj4gdHlwZUNvdW50QWxwaGFiZXQgPSBUeXBlQ291bnRBbHBoYWJldChkZXNjcmlwdGlvbj0nYmFuYW5hcycpCisgICAgPj4+IGxlbih0eXBlQ291bnRBbHBoYWJldCkKKyAgICA5CisgICAgPj4+IHR5cGVDb3VudEFscGhhYmV0WzNdCisgICAgU3ltYm9sKEJUIywgMykKKyAgICA+Pj4gdHlwZUNvdW50QWxwaGFiZXRbOV0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFZhbHVlRXJyb3I6IE5vIHN5bWJvbCBUeXBlQ291bnRBbHBoYWJldFs5XQorICAgID4+PiBwcmludCh0eXBlQ291bnRBbHBoYWJldFszXSkKKyAgICB4eCwwMTAxCisgICAgPj4+IHR5cGVDb3VudEFscGhhYmV0WzhdLnZhbHVlKDEyNykKKyAgICAyNTYKKyAgICA+Pj4gdHlwZUNvdW50QWxwaGFiZXRbNF0uZXhwbGFuYXRpb24oMikKKyAgICAneHh4LDAxMTE6IDExIGJhbmFuYXMnCisgICAgPj4+IHR5cGVDb3VudEFscGhhYmV0WzBdLmV4cGxhbmF0aW9uKCkKKyAgICAnMDogMSBiYW5hbmEnCisgICAgIiIiLAorCisnRGlzdGFuY2VQYXJhbUFscGhhYmV0JzogIiIiCisgICAgPj4+IGRwYSA9IERpc3RhbmNlUGFyYW1BbHBoYWJldCgpCisgICAgPj4+IGRwYS5zaG93Q29kZSgpCisgICAgMDA6UEYwIDAxOlBGMSAxMDpQRjIgMTE6UEYzCisgICAgPj4+IGRwYS5yZWFkVHVwbGVBbmRFeHRyYShCaXRTdHJlYW0oYidcXHgyOScpKQorICAgICgyLCBTeW1ib2woRElTVCwgMSksIDQsIDEwKQorICAgID4+PiBkcGEuZXhwbGFuYXRpb24oMiwgNSkKKyAgICAnMiBwb3N0Zml4IGJpdHMgYW5kIDAxMDE8PDI9MjAgZGlyZWN0IGNvZGVzJworICAgICIiIiwKKworJ0xpdGVyYWxBbHBoYWJldCc6ICIiIgorICAgID4+PiBMaXRlcmFsQWxwaGFiZXQoLTEpLnNob3dDb2RlKCkgICAjZG9jdGVzdDogK0VMTElQU0lTCisgICAgMDAwMDAwMDA6XFx4MDAgMDAxMTAxMDA6NCAgICAwMTEwMTAwMDpoICAgIDEwMDExMTAwOlxceDljIDExMDEwMDAwOlxceGQwCisgICAgMDAwMDAwMDE6XFx4MDEgMDAxMTAxMDE6NSAgICAwMTEwMTAwMTppICAgIDEwMDExMTAxOlxceDlkIDExMDEwMDAxOlxceGQxCisgICAgMDAwMDAwMTA6XFx4MDIgMDAxMTAxMTA6NiAgICAwMTEwMTAxMDpqICAgIDEwMDExMTEwOlxceDllIDExMDEwMDEwOlxceGQyCisgICAgLi4uCisgICAgMDAxMDExMTE6LyAgICAwMTEwMDAxMTpjICAgIDEwMDEwMTExOlxceDk3IDExMDAxMDExOlxceGNiIDExMTExMTExOlxceGZmCisgICAgMDAxMTAwMDA6MCAgICAwMTEwMDEwMDpkICAgIDEwMDExMDAwOlxceDk4IDExMDAxMTAwOlxceGNjCisgICAgMDAxMTAwMDE6MSAgICAwMTEwMDEwMTplICAgIDEwMDExMDAxOlxceDk5IDExMDAxMTAxOlxceGNkCisgICAgMDAxMTAwMTA6MiAgICAwMTEwMDExMDpmICAgIDEwMDExMDEwOlxceDlhIDExMDAxMTEwOlxceGNlCisgICAgMDAxMTAwMTE6MyAgICAwMTEwMDExMTpnICAgIDEwMDExMDExOlxceDliIDExMDAxMTExOlxceGNmCisgICAgIiIiLAorCisnQmxvY2tDb3VudEFscGhhYmV0JzogIiIiCisgICAgPj4+IGJjPUJsb2NrQ291bnRBbHBoYWJldCgnQkNMJykKKyAgICA+Pj4gbGVuKGJjKQorICAgIDI2CisgICAgPj4+IGJzPUJpdFN0cmVhbShiJ1xceDQwXFx4ODNcXHhjOFxceDU5XFwxMlxceDAyJykKKyAgICA+Pj4geCA9IGJjLnJlYWRUdXBsZUFuZEV4dHJhKGJzKTsgeFsxXS5leHBsYW5hdGlvbih4WzNdKQorICAgICdCbG9jayBjb3VudDogeHggMDAwMDA6IDEtNDsgMSsyPTMnCisgICAgPj4+IHggPSBiYy5yZWFkVHVwbGVBbmRFeHRyYShicyk7IHhbMV0uZXhwbGFuYXRpb24oeFszXSkKKyAgICAnQmxvY2sgY291bnQ6IHh4eCAwMDExMDogMzMtNDA7IDMzKzA9MzMnCisgICAgPj4+IHggPSBiYy5yZWFkVHVwbGVBbmRFeHRyYShicyk7IHhbMV0uZXhwbGFuYXRpb24oeFszXSkKKyAgICAnQmxvY2sgY291bnQ6IHh4eHh4eCAxMDAwMTogMzA1LTM2ODsgMzA1KzI4PTMzMycKKyAgICA+Pj4geCA9IGJjLnJlYWRUdXBsZUFuZEV4dHJhKGJzKTsgeFsxXS5leHBsYW5hdGlvbih4WzNdKQorICAgICdCbG9jayBjb3VudDogeHh4eHh4eHh4eHggMTAxMTA6IDIyODktNDMzNjsgMjI4OSsxMDQ0PTMzMzMnCisgICAgIiIiLAorCisnTGF5b3V0JzogIiIiCisgICAgPj4+IG9sbGVrZS5wb3MgPSAwCisgICAgPj4+IGwgPSBMYXlvdXQob2xsZWtlKQorICAgID4+PiBsLnZlcmJvc2VSZWFkKFdpbmRvd1NpemVBbHBoYWJldCgpKQorICAgIDAwMDAgIDFiICAgICAgICAgICAgICAgICAgIDEwMTEgV1NJWkUgICB3aW5kb3dzaXplPSgxPDwyMiktMTY9NDE5NDI4OAorICAgIDQxOTQyODgKKyAgICA+Pj4gbC52ZXJib3NlUmVhZChCb29sQ29kZSgnTEFTVCcsIGRlc2NyaXB0aW9uPSJMYXN0IGJsb2NrIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICBMQVNUICAgIExhc3QgYmxvY2s6IDE6IFRydWUKKyAgICBUcnVlCisgICAgPj4+IGwudmVyYm9zZVJlYWQoQm9vbENvZGUoJ0VNUFRZJywgZGVzY3JpcHRpb249IkVtcHR5IGJsb2NrIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICBFTVBUWSAgIEVtcHR5IGJsb2NrOiAwOiBGYWxzZQorICAgIEZhbHNlCisgICAgPj4+IGwudmVyYm9zZVJlYWQoTWV0YWJsb2NrTGVuZ3RoQWxwaGFiZXQoKSkKKyAgICAwMDAxICAyZSAwMCAgICAgICAgfDAwaHwyRWgsfDAwIE1MRU4gICAgZGF0YSBsZW5ndGg6IDAwMmVoKzE9NDcKKyAgICA0NworICAgID4+PiBvbGxla2UucG9zID0gNzYKKyAgICA+Pj4gbCA9IExheW91dChvbGxla2UpCisgICAgPj4+IHggPSBsLnZlcmJvc2VSZWFkKERpc3RhbmNlQWxwaGFiZXQoMCxOUE9TVEZJWD0wLE5ESVJFQ1Q9MCksIHNraXBFeHRyYT1UcnVlKQorICAgIDAwMGEgIDgyICAgICAgICAgICAgICAgIDEwfDExMDAgRDAgICAgICAxMFsxNSp4XS0zCisgICAgPj4+IHguZXhwbGFuYXRpb24oMHg4NmEzKQorICAgICcxMFsxMDAwMDExMDEwMTAwMDExXS0zOiBbMF0rMTAwMDAwJworICAgICIiIiwKKworJ29sbGVrZSc6ICIiIgorICAgID4+PiBvbGxla2UucG9zID0gMAorICAgID4+PiB0cnk6IExheW91dChvbGxla2UpLnByb2Nlc3NTdHJlYW0oKQorICAgIC4uLiBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjogcGFzcworICAgIC4uLiAjZG9jdGVzdDogK1JFUE9SVF9ORElGRgorICAgIGFkZHIgIGhleCAgICAgICAgICAgICAgIGJpbmFyeSBjb250ZXh0IGV4cGxhbmF0aW9uCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1TdHJlYW0gaGVhZGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgMDAwMCAgMWIgICAgICAgICAgICAgICAgICAgMTAxMSBXU0laRSAgIHdpbmRvd3NpemU9KDE8PDIyKS0xNj00MTk0Mjg4CisgICAgPT09PT09PT09PT09PT09PT09PT09PU1ldGFibG9jayBoZWFkZXI9PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICBMQVNUICAgIExhc3QgYmxvY2s6IDE6IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgIEVNUFRZICAgRW1wdHkgYmxvY2s6IDA6IEZhbHNlCisgICAgMDAwMSAgMmUgMDAgICAgICAgIHwwMGh8MkVoLHwwMCBNTEVOICAgIGRhdGEgbGVuZ3RoOiAwMDJlaCsxPTQ3CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLUJsb2NrIHR5cGUgZGVzY3JpcHRvcnMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgMDAwMyAgMDAgICAgICAgICAgICAgICAgICAgICAgMCBCVCNMICAgIDA6IDEgbGl0ZXJhbCBibG9jayB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICBCVCNJICAgIDA6IDEgaW5zZXJ0JmNvcHkgYmxvY2sgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgQlQjRCAgICAwOiAxIGRpc3RhbmNlIGJsb2NrIHR5cGUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS1EaXN0YW5jZSBjb2RlIHBhcmFtZXRlcnMtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAwMDA0ICA0NCAgICAgICAgICAgICAgIDB8MDAwLDAwIERJU1QgICAgMCBwb3N0Zml4IGJpdHMgYW5kIDAwMDA8PDA9MCBkaXJlY3QgY29kZXMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNvbnRleHQgbW9kZXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAxMCAgICAgICAgIExDMCAgICAgQ29udGV4dCBtb2RlIGZvciB0eXBlIDA6IDIoVVRGOCkKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Db250ZXh0IG1hcHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgIExUIyAgICAgMDogMSBsaXRlcmFsIHByZWZpeCB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICBEVCMgICAgIDA6IDEgZGlzdGFuY2UgcHJlZml4IHRyZWUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS1QcmVmaXggY29kZSBsaXN0cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIDEwICAgICAgICAgICAgIFBGWCAgICAgTDAgaXMgY29tcGxleCB3aXRoIGxlbmd0aHMgMyw0LDAsNSwxNy4uLgorICAgIDAwMDUgIDRmICAgICAgICAgICAgICAgICAgICAxfDAgIyNMMCAgICBsZW4gMzogY29kZWQgd2l0aCAzIGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMTExICAgICMjTDAgICAgbGVuIDQ6IGNvZGVkIHdpdGggMSBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICAgICAgICAjI0wwICAgIHVudXNlZDogY29kZWQgd2l0aCAzIGJpdHMKKyAgICAwMDA2ICBkNiAgICAgICAgICAgICAgICAgICAgMHwwICMjTDAgICAgbGVuIDU6IHNraXBwZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDExICAgICMjTDAgICAgemVybyB4eHg6IGNvZGVkIHdpdGggMiBiaXRzCisgICAgKioqKiogTGVuZ3RocyBmb3IgTDAgd2lsbCBiZSBjb2RlZCBhczoKKyAgICAgIDA6bGVuIDQgICAgIDAxOnplcm8geHh4IDAxMTp1bnVzZWQgICAxMTE6bGVuIDMKKyAgICAwMDA3ICA5NSAgICAgICAgICAgICAgICAxfDExLDAxICNMMCAgICAgNyszIHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgI0wwICAgICBMZW5ndGggZm9yIFxcbiBpcyA0IGJpdHMKKyAgICAgICAgICAgICAgICAgICAgIDAwMSwwMSAgICAgICAgICNMMCAgICAgMSszIHVudXNlZAorICAgIDAwMDggIDQ0ICAgICAgICAgICAgICAgIDAxMCwwfDEgI0wwICAgICB0b3RhbCAxOSsyIHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgI0wwICAgICBMZW5ndGggZm9yICIgIiBpcyA0IGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICNMMCAgICAgTGVuZ3RoIGZvciAhIGlzIDQgYml0cworICAgIDAwMDkgIGNiICAgICAgICAgICAgICAgIDAxMSx8MDEgI0wwICAgICAzKzMgdW51c2VkCisgICAgICAgICAgICAgICAgICAgICB8MTEwLDAxICAgICAgICAjTDAgICAgIHRvdGFsIDM1KzYgdW51c2VkCisgICAgMDAwYSAgODIgICAgICAgICAgICAgICAgICAgICAgMCAjTDAgICAgIExlbmd0aCBmb3IgSyBpcyA0IGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAsMDEgICNMMCAgICAgMCszIHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgI0wwICAgICBMZW5ndGggZm9yIE8gaXMgNCBiaXRzCisgICAgMDAwYiAgNGQgICAgICAgICAgICAgICAgICAgMDF8MSAjTDAgICAgIHN5bWJvbCBQIHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxMSAgICAgI0wwICAgICBzeW1ib2wgUSB1bnVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICNMMCAgICAgTGVuZ3RoIGZvciBSIGlzIDQgYml0cworICAgIDAwMGMgIDg4ICAgICAgICAgICAgICAgIDAwMCx8MDEgI0wwICAgICAwKzMgdW51c2VkCisgICAgICAgICAgICAgICAgICAgICB8MTAwLDAxICAgICAgICAjTDAgICAgIHRvdGFsIDExKzQgdW51c2VkCisgICAgMDAwZCAgYjYgICAgICAgICAgICAgICAgICAgICAgMCAjTDAgICAgIExlbmd0aCBmb3IgYiBpcyA0IGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMTEgICNMMCAgICAgc3ltYm9sIGMgdW51c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDExICAgICAjTDAgICAgIHN5bWJvbCBkIHVudXNlZAorICAgIDAwMGUgIDI3ICAgICAgICAgICAgICAgICAgIDExfDEgI0wwICAgICBMZW5ndGggZm9yIGUgaXMgMyBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgMDEwLDAxICAgICAjTDAgICAgIDIrMyB1bnVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgfDAgICAgICAgICAgICNMMCAgICAgTGVuZ3RoIGZvciBrIGlzIDQgYml0cworICAgIDAwMGYgIDFmICAgICAgICAgICAgICAgICAgICAxMTEgI0wwICAgICBMZW5ndGggZm9yIGwgaXMgMyBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxMSAgICAjTDAgICAgIHN5bWJvbCBtIHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgI0wwICAgICBMZW5ndGggZm9yIG4gaXMgNCBiaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwwICAgICAgICAjTDAgICAgIExlbmd0aCBmb3IgbyBpcyA0IGJpdHMKKyAgICAwMDEwICBjMSAgICAgICAgICAgICAgICAgMDAwLDAxICNMMCAgICAgMCszIHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgI0wwICAgICBMZW5ndGggZm9yIHMgaXMgNCBiaXRzCisgICAgMDAxMSAgYjQgICAgICAgICAgICAgICAgICAgMHwxMSAjTDAgICAgIHN5bWJvbCB0IHVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgI0wwICAgICBMZW5ndGggZm9yIHUgaXMgNCBiaXRzCisgICAgRW5kIG9mIHRhYmxlLiBQcmVmaXggY29kZSBMMDoKKyAgICAgMDAwOmUgICAwMDEwOlxcbiAgMDExMDohICAgMDAwMTpPICAgMDEwMTpiICAgMDAxMTpuICAgMDExMTpzCisgICAgIDEwMDpsICAgMTAxMDoiICIgMTExMDpLICAgMTAwMTpSICAgMTEwMTprICAgMTAxMTpvICAgMTExMTp1CisgICAgICAgICAgICAgICAgICAgICAgICAgMTEsMDEgICAgICBQRlggICAgIElDMCBpcyBzaW1wbGUgd2l0aCA0IGNvZGUgd29yZHMKKyAgICAwMDEyICAyYSAgICAgICAgICAgICAgICB8MkFofDEwIElDMCAgICAgPyBiaXRzOiBJNUM0CisgICAgMDAxMyAgYjUgZWMgICAgICAgICAgICAgIDAwfEI1aCBJQzAgICAgID8gYml0czogSTYreEM3CisgICAgMDAxNSAgMjIgICAgICAgICAgICAwMDEwfDExMTAxMSBJQzAgICAgID8gYml0czogSTgreEM1CisgICAgMDAxNiAgOGMgICAgICAgICAgICAwMDExMDB8MDAxMCBJQzAgICAgID8gYml0czogSTBDMTQreHgKKyAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgIFNIQVBFICAgRmFsc2U6IGxlbmd0aHMgMiwyLDIsMgorICAgIDAwMTcgIDc0ICAgICAgICAgICAgICAgICAxMCwwfDEgUEZYICAgICBEMCBpcyBzaW1wbGUgd2l0aCAzIGNvZGUgd29yZHMKKyAgICAwMDE4ICBhNiAgICAgICAgICAgICAgICAwfDAxMTEwIEQwICAgICAgMSBiaXQ6IDJsYXN0LTMKKyAgICAgICAgICAgICAgICAgICAgICAwMTAwMTEgICAgICAgIEQwICAgICAgMiBiaXRzOiAxMXh4LTMKKyAgICAwMDE5ICBhYSAgICAgICAgICAgICAgICAwMTAxMHwxIEQwICAgICAgMiBiaXRzOiAxMXh4eC0zCisgICAgPT09PT09PT09PT09PT09PT09PT1NZXRhIGJsb2NrIGNvbnRlbnRzPT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgICAgICAgIHwxLDAxICAgICAgICBJQzAgICAgIExpdGVyYWw6IDksIGNvcHk6IDUKKyAgICAwMDFhICA0MSAgICAgICAgICAgICAgICAgICAwMDAxIDAsMD1MMCAgTworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCAgICAgMCw0OD1MMCBsCisgICAgMDAxYiAgYTIgICAgICAgICAgICAgICAgICAgMTB8MCAwLDYyPUwwIGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAgICAgIDAsNjM9TDAgZQorICAgIDAwMWMgIGExICAgICAgICAgICAgICAgICAgMXwxMDEgMCw1OT1MMCBrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAgICAgICAwLDYzPUwwIGUKKyAgICAgICAgICAgICAgICAgICAgICB8MTAxMCAgICAgICAgIDAsNTk9TDAgIiAiCisgICAgMDAxZCAgYjUgICAgICAgICAgICAgICAgICAgMDEwMSAwLDExPUwwIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEwMTEgICAgIDAsNjA9TDAgbworICAgIDAwMWUgIDI0ICAgICAgICAgICAgICAgICAgICAgIDAgMCwzPUQwICBEaXN0YW5jZTogMmxhc3QtMz04CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gYmVmb3JlOiAibGxla2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLDEwICBJQzAgICAgIExpdGVyYWw6IDYsIGNvcHk6IDcKKyAgICAgICAgICAgICAgICAgICAgICAgICB8MDAxMCAgICAgIDAsNTk9TDAgXFxuCisgICAgMDAxZiAgODkgICAgICAgICAgICAgICAgICAgMTAwMSAwLDc9TDAgIFIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAgICAgIDAsNTI9TDAgZQorICAgIDAwMjAgIGZhICAgICAgICAgICAgICAgICAgMDEwfDEgMCw1OD1MMCBiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTEgICAgICAwLDYzPUwwIHUKKyAgICAwMDIxICBlYiAgICAgICAgICAgICAgICAgIDAxMXwxIDAsNTk9TDAgcworICAgICAgICAgICAgICAgICAgICAgICAgIDExLDAxICAgICAgMCwzPUQwICBBYnNvbHV0ZSB2YWx1ZTogMTIgKHBvcyA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWVuIGJlZm9yZTogIm9sbGVrZVxcbiIKKyAgICAwMDIyICBkYiAgICAgICAgICAgICAgICAgMDEsMXwxIElDMCAgICAgTGl0ZXJhbDogMCwgY29weTogMTUKKyAgICAgICAgICAgICAgICAgICAgICB8MTEwLDExICAgICAgIDAsMz1EMCAgQWJzb2x1dGUgdmFsdWU6IDI3IChwb3MgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlbiBiZWZvcmU6ICJPbGxla2UgYm9sbGVrZVxcbiIKKyAgICAwMDIzICBmOCAgICAgICAgICAgICAgICAgICAgIDAwIElDMCAgICAgTGl0ZXJhbDogNSwgY29weTogNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEwICAgMCw3PUwwICBLCisgICAgMDAyNCAgMmMgICAgICAgICAgICAgICAgICAwMHwxMSAwLDUyPUwwIG4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxMSAgICAgIDAsNjI9TDAgbworICAgIDAwMjUgIDBkICAgICAgICAgICAgICAgICAgIDF8MDAgMCw1OT1MMCBsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwMTEwICAgICAwLDYzPUwwICEKKyAgICAiIiIsCisKKydmaWxlJzogIiIiCisgICAgPj4+IHRyeTogTGF5b3V0KEJpdFN0cmVhbSgKKyAgICAuLi4gb3BlbigiSDovRG93bmxvYWRzL2Jyb3RsaS1tYXN0ZXIvdGVzdHMvdGVzdGRhdGEvMTB4MTB5LmNvbXByZXNzZWQiLCdyYicpCisgICAgLi4uICAgICAucmVhZCgpKSkucHJvY2Vzc1N0cmVhbSgpCisgICAgLi4uIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOiBwYXNzCisgICAgYWRkciAgaGV4ICAgICAgICAgICAgICAgYmluYXJ5IGNvbnRleHQgZXhwbGFuYXRpb24KKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVN0cmVhbSBoZWFkZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAwMDAwICAxYiAgICAgICAgICAgICAgICAgICAxMDExIFdTSVpFICAgd2luZG93c2l6ZT0oMTw8MjIpLTE2PTQxOTQyODgKKyAgICA9PT09PT09PT09PT09PT09PT09PT09TWV0YWJsb2NrIGhlYWRlcj09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgIExBU1QgICAgTGFzdCBibG9jazogMTogVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgRU1QVFkgICBFbXB0eSBibG9jazogMDogRmFsc2UKKyAgICAwMDAxICAxMyAwMCAgICAgICAgfDAwaHwxM2gsfDAwIE1MRU4gICAgZGF0YSBsZW5ndGg6IDAwMTNoKzE9MjAKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tQmxvY2sgdHlwZSBkZXNjcmlwdG9ycy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAwMDAzICAwMCAgICAgICAgICAgICAgICAgICAgICAwIEJUI0wgICAgMDogMSBsaXRlcmFsIGJsb2NrIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgIEJUI0kgICAgMDogMSBpbnNlcnQmY29weSBibG9jayB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICBCVCNEICAgIDA6IDEgZGlzdGFuY2UgYmxvY2sgdHlwZQorICAgIC0tLS0tLS0tLS0tLS0tLS0tLURpc3RhbmNlIGNvZGUgcGFyYW1ldGVycy0tLS0tLS0tLS0tLS0tLS0tLQorICAgIDAwMDQgIGE0ICAgICAgICAgICAgICAgMHwwMDAsMDAgRElTVCAgICAwIHBvc3RmaXggYml0cyBhbmQgMDAwMDw8MD0wIGRpcmVjdCBjb2RlcworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQ29udGV4dCBtb2Rlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgIDEwICAgICAgICAgTEMwICAgICBDb250ZXh0IG1vZGUgZm9yIHR5cGUgMDogMihVVEY4KQorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNvbnRleHQgbWFwcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgTFQjICAgICAwOiAxIGxpdGVyYWwgcHJlZml4IHRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgIERUIyAgICAgMDogMSBkaXN0YW5jZSBwcmVmaXggdHJlZQorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVByZWZpeCBjb2RlIGxpc3RzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIDAwMDUgIGIwICAgICAgICAgICAgICAgICAwfDEsMDEgUEZYICAgICBMMCBpcyBzaW1wbGUgd2l0aCAyIGNvZGUgd29yZHMKKyAgICAwMDA2ICBiMiAgICAgICAgICAgICAgMHwxMDExMDAwIEwwICAgICAgMSBiaXQ6IFgKKyAgICAwMDA3ICBlYSAgICAgICAgICAgICAgMHwxMDExMDAxIEwwICAgICAgMSBiaXQ6IFkKKyAgICAgICAgICAgICAgICAgICAgIDAxLDAxICAgICAgICAgIFBGWCAgICAgSUMwIGlzIHNpbXBsZSB3aXRoIDIgY29kZSB3b3JkcworICAgIDAwMDggIDgxICAgICAgICAgICAgMDAwMDAwMXwxMTEgSUMwICAgICAxIGJpdDogSTFDOSZEPTAKKyAgICAwMDA5ICA0NyAwMiAgICAgICAgICAgICAwfDQ3aHwxIElDMCAgICAgMSBiaXQ6IEkxQzkKKyAgICAgICAgICAgICAgICAgICAgICAgMDAsMDEgICAgICAgIFBGWCAgICAgRDAgaXMgc2ltcGxlIHdpdGggMSBjb2RlIHdvcmQKKyAgICAwMDBiICA4YSAgICAgICAgICAgICAgICAwMTB8MDAwIEQwICAgICAgMCBiaXRzOiAxMHgtMworICAgID09PT09PT09PT09PT09PT09PT09TWV0YSBibG9jayBjb250ZW50cz09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgSUMwICAgICBMaXRlcmFsOiAxLCBjb3B5OiA5CisgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAwLDA9TDAgIFgKKyAgICAgICAgICAgICAgICAgICAgICAwLCgpICAgICAgICAgIDAsMz1EMCAgQWJzb2x1dGUgdmFsdWU6IDEgKHBvcyAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWVuIGJlZm9yZTogIlhYWFhYWFhYWCIKKyAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgIElDMCAgICAgTGl0ZXJhbDogMSwgY29weTogOSwgc2FtZSBkaXN0YW5jZQorICAgICAgICAgICAgICAgICAgIHwxICAgICAgICAgICAgICAgMCw1ND1MMCBZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gYmVmb3JlOiAiWVlZWVlZWVlZIgorICAgICIiIiwKKworJ1hZJzogIiIiCisgICAgPj4+IHRyeTogTGF5b3V0KEJpdFN0cmVhbShicm90bGkuY29tcHJlc3MoJ1gnKjEwKydZJyoxMCkpKS5wcm9jZXNzU3RyZWFtKCkKKyAgICAuLi4gZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6IHBhc3MKKyAgICBhZGRyICBoZXggICAgICAgICAgICAgICBiaW5hcnkgY29udGV4dCBleHBsYW5hdGlvbgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU3RyZWFtIGhlYWRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIDAwMDAgIDFiICAgICAgICAgICAgICAgICAgIDEwMTEgV1NJWkUgICB3aW5kb3dzaXplPSgxPDwyMiktMTY9NDE5NDI4OAorICAgID09PT09PT09PT09PT09PT09PT09PT1NZXRhYmxvY2sgaGVhZGVyPT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgTEFTVCAgICBMYXN0IGJsb2NrOiAxOiBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICBFTVBUWSAgIEVtcHR5IGJsb2NrOiAwOiBGYWxzZQorICAgIDAwMDEgIDEzIDAwICAgICAgICB8MDBofDEzaCx8MDAgTUxFTiAgICBkYXRhIGxlbmd0aDogMDAxM2grMT0yMAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS1CbG9jayB0eXBlIGRlc2NyaXB0b3JzLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIDAwMDMgIDAwICAgICAgICAgICAgICAgICAgICAgIDAgQlQjTCAgICAwOiAxIGxpdGVyYWwgYmxvY2sgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgQlQjSSAgICAwOiAxIGluc2VydCZjb3B5IGJsb2NrIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgIEJUI0QgICAgMDogMSBkaXN0YW5jZSBibG9jayB0eXBlCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tRGlzdGFuY2UgY29kZSBwYXJhbWV0ZXJzLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgMDAwNCAgYTQgICAgICAgICAgICAgICAwfDAwMCwwMCBESVNUICAgIDAgcG9zdGZpeCBiaXRzIGFuZCAwMDAwPDwwPTAgZGlyZWN0IGNvZGVzCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Db250ZXh0IG1vZGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgMTAgICAgICAgICBMQzAgICAgIENvbnRleHQgbW9kZSBmb3IgdHlwZSAwOiAyKFVURjgpCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQ29udGV4dCBtYXBzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICBMVCMgICAgIDA6IDEgbGl0ZXJhbCBwcmVmaXggdHJlZQorICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgRFQjICAgICAwOiAxIGRpc3RhbmNlIHByZWZpeCB0cmVlCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJlZml4IGNvZGUgbGlzdHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgMDAwNSAgYjAgICAgICAgICAgICAgICAgIDB8MSwwMSBQRlggICAgIEwwIGlzIHNpbXBsZSB3aXRoIDIgY29kZSB3b3JkcworICAgIDAwMDYgIGIyICAgICAgICAgICAgICAwfDEwMTEwMDAgTDAgICAgICAxIGJpdDogWAorICAgIDAwMDcgIDgyICAgICAgICAgICAgICAwfDEwMTEwMDEgTDAgICAgICAxIGJpdDogWQorICAgICAgICAgICAgICAgICAgICAgMDAsMDEgICAgICAgICAgUEZYICAgICBJQzAgaXMgc2ltcGxlIHdpdGggMSBjb2RlIHdvcmQKKyAgICAwMDA4ICA4NCAgICAgICAgICAgIDAwMDAxMDB8MTAwIElDMCAgICAgMCBiaXRzOiBJNEM2JkQ9MAorICAgIDAwMDkgIDAwICAgICAgICAgICAgICAgICAwMCwwfDEgUEZYICAgICBEMCBpcyBzaW1wbGUgd2l0aCAxIGNvZGUgd29yZAorICAgIDAwMGEgIGUwICAgICAgICAgICAgICAgIDB8MDAwMDAgRDAgICAgICAwIGJpdHM6IGxhc3QKKyAgICA9PT09PT09PT09PT09PT09PT09PU1ldGEgYmxvY2sgY29udGVudHM9PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgIElDMCAgICAgTGl0ZXJhbDogNCwgY29weTogNiwgc2FtZSBkaXN0YW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgMCwwPUwwICBYCisgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAwLDUyPUwwIFgKKyAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgIDAsNTQ9TDAgWAorICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgMCw1ND1MMCBYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gYmVmb3JlOiAiWFhYWFhYIgorICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgSUMwICAgICBMaXRlcmFsOiA0LCBjb3B5OiA2LCBzYW1lIGRpc3RhbmNlCisgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAwLDU0PUwwIFkKKyAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDAsNTQ9TDAgWQorICAgICAgICAgICAgICAgIHwxICAgICAgICAgICAgICAgICAgMCw1ND1MMCBZCisgICAgMDAwYiAgMDEgICAgICAgICAgICAgICAgICAgICAgMSAwLDU0PUwwIFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlbiBiZWZvcmU6ICJZWVlZWVkiCisgICAgIiIiLAorCisnZW1wdHknOiAiIiIKKyAgICA+Pj4gdHJ5OiBMYXlvdXQoQml0U3RyZWFtKGInXFx4ODFcXHgxNlxceDAwXFx4NTgnKSkucHJvY2Vzc1N0cmVhbSgpCisgICAgLi4uIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOiBwYXNzCisgICAgYWRkciAgaGV4ICAgICAgICAgICAgICAgYmluYXJ5IGNvbnRleHQgZXhwbGFuYXRpb24KKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVN0cmVhbSBoZWFkZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAwMDAwICA4MSAgICAgICAgICAgICAgICAwMDAwMDAxIFdTSVpFICAgd2luZG93c2l6ZT0oMTw8MTcpLTE2PTEzMTA1NgorICAgID09PT09PT09PT09PT09PT09PT09PT1NZXRhYmxvY2sgaGVhZGVyPT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgICAgICAgICAgICB8MSAgICAgICAgTEFTVCAgICBMYXN0IGJsb2NrOiAxOiBUcnVlCisgICAgMDAwMSAgMTYgICAgICAgICAgICAgICAgICAgICAgMCBFTVBUWSAgIEVtcHR5IGJsb2NrOiAwOiBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSAgTUxFTiAgICAxMTogZW1wdHkgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgIFJTVkQgICAgUmVzZXJ2ZWQgKG11c3QgYmUgemVybykKKyAgICAwMDAyICAwMCAgICAgICAgICAgMDAwMDAwfDAwLDAxIFNLSVAgICAgc2tpcCBsZW5ndGg6IDBoKzE9MQorICAgICAgICAgICAgICAgICAgICB8MDAgICAgICAgICAgICAgU0tJUCAgICAyIGJpdHMgaWdub3JlZAorICAgIFNraXBwaW5nIHRvIDQKKyAgICAiIiIsCisKK30KKworaWYgX19uYW1lX189PSdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cworICAgIGlmIGxlbihzeXMuYXJndik+MToKKyAgICAgICAgbCA9IExheW91dChCaXRTdHJlYW0ob3BlbihzeXMuYXJndlsxXSwncmInKS5yZWFkKCkpKQorICAgICAgICBsLnByb2Nlc3NTdHJlYW0oKQorICAgIGVsc2U6CisgICAgICAgIHN5cy5wYXRoLmFwcGVuZCgiaDovUGVyc29vbmxpamsvYmluIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGJyb3RsaQorICAgICAgICAgICAgb3BlbignYnJvdGxpZHVtcC5icicsICd3YicpLndyaXRlKAorICAgICAgICAgICAgICAgIGJyb3RsaS5jb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgb3BlbignYnJvdGxpZHVtcC5weScsICdyJykucmVhZCgpCisgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIG9sbGVrZSA9IEJpdFN0cmVhbShicm90bGkuY29tcHJlc3MoCisgICAgICAgICAgICAgICAgJ09sbGVrZSBib2xsZWtlXG5SZWJ1c29sbGVrZVxuT2xsZWtlIGJvbGxla2Vcbktub2whJykpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjogcGFzcworICAgICAgICBpbXBvcnQgZG9jdGVzdAorICAgICAgICBkb2N0ZXN0LnRlc3Rtb2Qob3B0aW9uZmxhZ3M9ZG9jdGVzdC5SRVBPUlRfTkRJRkYKKyAgICAgICAgICAgICN8ZG9jdGVzdC5GQUlMX0ZBU1QKKyAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kZW9ydW1tb2xhZS5jYyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kZW9ydW1tb2xhZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTViN2VlCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2Rlb3J1bW1vbGFlLmNjCkBAIC0wLDAgKzEsMzAyIEBACisjaW5jbHVkZSAiLi9kZW9ydW1tb2xhZS5oIgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y3N0ZGlvPgorCisjaW5jbHVkZSAiLi9lc2F4eC9zYWlzLmh4eCIKKworLyogVXNlZCBmb3IgcXVpY2sgU0EtZW50cnkgdG8gZmlsZSBtYXBwaW5nLiBFYWNoIGZpbGUgaXMgcGFkZGVkIHRvIHNpemUgdGhhdAorICAgaXMgYSBtdWx0aXBsZSBvZiBjaHVuayBzaXplLiAqLworI2RlZmluZSBDSFVOS19TSVpFIDY0CisvKiBMZW5ndGggb2Ygc3Vic3RyaW5nIHRoYXQgaXMgY29uc2lkZXJlZCB0byBiZSBjb3ZlcmVkIGJ5IGRpY3Rpb25hcnkgc3RyaW5nLiAqLworI2RlZmluZSBDVVRfTUFUQ0ggNgorLyogTWluaW1hbCBkaWN0aW9uYXJ5IGVudHJ5IHNpemUuICovCisjZGVmaW5lIE1JTl9NQVRDSCAyNAorCisvKiBOb24gdHVuYWJsZSBkZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUgQ0hVTktfTUFTSyAoQ0hVTktfU0laRSAtIDEpCisjZGVmaW5lIENPVkVSQUdFX1NJWkUgKDEgPDwgKERNX0xPR19NQVhfRklMRVMgLSA2KSkKKworLyogRmlsZSBjb3ZlcmFnZTogZXZlcnkgYml0IHNldCB0byAxIGRlbm90ZXMgYSBmaWxlIGNvdmVyZWQgYnkgYW4gaXNsZS4gKi8KK3R5cGVkZWYgc3RkOjphcnJheTx1aW50NjRfdCwgQ09WRVJBR0VfU0laRT4gQ292ZXJhZ2U7CisKKy8qIFN5bWJvbCBvZiB0ZXh0IGFscGhhYmV0LiAqLwordHlwZWRlZiBpbnQzMl90IFRleHRDaGFyOworCisvKiBQb2ludGVyIHRvIHBvc2l0aW9uIGluIHRleHQuICovCit0eXBlZGVmIHVpbnQzMl90IFRleHRJZHg7CisKKy8qIFNBSVMgc2FycmF5X3R5cGU7IHVuZm9ydHVuYXRlbHksIG11c3QgYmUgYSBzaWduZWQgdHlwZS4gKi8KK3R5cGVkZWYgaW50MzJfdCBUZXh0U2FJZHg7CisKK3N0YXRpYyBzaXplX3QgcG9wY291bnQodWludDY0X3QgdSkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX2J1aWx0aW5fcG9wY291bnRsbCh1KSk7Cit9CisKKy8qIENvbmRlbnNlIHRlcm1pbmF0b3JzIGFuZCBwYWQgZmlsZSBlbnRyaWVzLiAqLworc3RhdGljIHZvaWQgcmV3cml0ZVRleHQoc3RkOjp2ZWN0b3I8VGV4dENoYXI+KiB0ZXh0KSB7CisgIFRleHRDaGFyIHRlcm1pbmF0b3IgPSB0ZXh0LT5iYWNrKCk7CisgIFRleHRDaGFyIHByZXYgPSB0ZXJtaW5hdG9yOworICBUZXh0SWR4IHRvID0gMDsKKyAgZm9yIChUZXh0SWR4IGZyb20gPSAwOyBmcm9tIDwgdGV4dC0+c2l6ZSgpOyArK2Zyb20pIHsKKyAgICBUZXh0Q2hhciBuZXh0ID0gdGV4dC0+YXQoZnJvbSk7CisgICAgaWYgKG5leHQgPCAyNTYgfHwgcHJldiA8IDI1NikgeworICAgICAgdGV4dC0+YXQodG8rKykgPSBuZXh0OworICAgICAgaWYgKG5leHQgPj0gMjU2KSB0ZXJtaW5hdG9yID0gbmV4dDsKKyAgICB9CisgICAgcHJldiA9IG5leHQ7CisgIH0KKyAgdGV4dC0+cmVzaXplKHRvKTsKKyAgaWYgKHRleHQtPmVtcHR5KCkpIHRleHQtPnB1c2hfYmFjayh0ZXJtaW5hdG9yKTsKKyAgd2hpbGUgKHRleHQtPnNpemUoKSAmIENIVU5LX01BU0spIHRleHQtPnB1c2hfYmFjayh0ZXJtaW5hdG9yKTsKK30KKworLyogUmVlbnVtZXJhdGUgdGVybWluYXRvcnMgZm9yIHNtYWxsZXIgYWxwaGFiZXQuICovCitzdGF0aWMgdm9pZCByZW1hcFRlcm1pbmF0b3JzKHN0ZDo6dmVjdG9yPFRleHRDaGFyPiogdGV4dCwKKyAgICBUZXh0Q2hhciogbmV4dF90ZXJtaW5hdG9yKSB7CisgIFRleHRDaGFyIHByZXYgPSAtMTsKKyAgVGV4dENoYXIgeCA9IDI1NjsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgdGV4dC0+c2l6ZSgpOyArK2kpIHsKKyAgICBUZXh0Q2hhciBuZXh0ID0gdGV4dC0+YXQoaSk7CisgICAgaWYgKG5leHQgPCAyNTYpIHsgIC8vIENoYXIuCisgICAgICAvLyBEbyBub3RoaW5nLgorICAgIH0gZWxzZSBpZiAocHJldiA8IDI1NikgeyAgLy8gVGVybWluYXRvciBhZnRlciBjaGFyLgorICAgICAgbmV4dCA9IHgrKzsKKyAgICB9IGVsc2UgeyAgLy8gVGVybWluYXRvciBhZnRlciB0ZXJtaW5hdG9yLgorICAgICAgbmV4dCA9IHByZXY7CisgICAgfQorICAgIHRleHQtPmF0KGkpID0gbmV4dDsKKyAgICBwcmV2ID0gbmV4dDsKKyAgfQorICAqbmV4dF90ZXJtaW5hdG9yID0geDsKK30KKworLyogQ29tYmluZSBhbGwgZmlsZSBlbnRyaWVzOyBjcmVhdGUgbWFwcGluZyBwb3NpdGlvbi0+ZmlsZS4gKi8KK3N0YXRpYyB2b2lkIGJ1aWxkRnVsbFRleHQoc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8VGV4dENoYXI+PiogZGF0YSwKKyAgICBzdGQ6OnZlY3RvcjxUZXh0Q2hhcj4qIGZ1bGxfdGV4dCwgc3RkOjp2ZWN0b3I8VGV4dElkeD4qIGZpbGVfbWFwLAorICAgIHN0ZDo6dmVjdG9yPFRleHRJZHg+KiBmaWxlX29mZnNldCwgVGV4dENoYXIqIG5leHRfdGVybWluYXRvcikgeworICBmaWxlX21hcC0+cmVzaXplKDApOworICBmaWxlX29mZnNldC0+cmVzaXplKDApOworICBmdWxsX3RleHQtPnJlc2l6ZSgwKTsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgZGF0YS0+c2l6ZSgpOyArK2kpIHsKKyAgICBmaWxlX29mZnNldC0+cHVzaF9iYWNrKGZ1bGxfdGV4dC0+c2l6ZSgpKTsKKyAgICBzdGQ6OnZlY3RvcjxUZXh0Q2hhcj4mIGZpbGUgPSBkYXRhLT5hdChpKTsKKyAgICByZXdyaXRlVGV4dCgmZmlsZSk7CisgICAgZnVsbF90ZXh0LT5pbnNlcnQoZnVsbF90ZXh0LT5lbmQoKSwgZmlsZS5iZWdpbigpLCBmaWxlLmVuZCgpKTsKKyAgICBmaWxlX21hcC0+aW5zZXJ0KGZpbGVfbWFwLT5lbmQoKSwgZmlsZS5zaXplKCkgLyBDSFVOS19TSVpFLCBpKTsKKyAgfQorICBpZiAoZmFsc2UpIHJlbWFwVGVybWluYXRvcnMoZnVsbF90ZXh0LCBuZXh0X3Rlcm1pbmF0b3IpOworfQorCisvKiBCdWlsZCBsb25nZXN0LWNvbW1vbi1wcmVmaXggYmFzZWQgb24gc3VmZml4IGFycmF5IGFuZCB0ZXh0LgorICAgVE9ETzogYm9ycm93ZWQgLT4gdW5rbm93biBlZmZpY2llbmN5LiAqLworc3RhdGljIHZvaWQgYnVpbGRMY3Aoc3RkOjp2ZWN0b3I8VGV4dENoYXI+KiB0ZXh0LCBzdGQ6OnZlY3RvcjxUZXh0SWR4Piogc2EsCisgICAgc3RkOjp2ZWN0b3I8VGV4dElkeD4qIGxjcCwgc3RkOjp2ZWN0b3I8VGV4dElkeD4qIGludmVzZV9zYSkgeworICBUZXh0SWR4IHNpemUgPSBzdGF0aWNfY2FzdDxUZXh0SWR4Pih0ZXh0LT5zaXplKCkpOworICBsY3AtPnJlc2l6ZShzaXplKTsKKyAgVGV4dElkeCBrID0gMDsKKyAgbGNwLT5hdChzaXplIC0gMSkgPSAwOworICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICBpZiAoaW52ZXNlX3NhLT5hdChpKSA9PSBzaXplIC0gMSkgeworICAgICAgayA9IDA7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLy8gU3VmZml4IHdoaWNoIGZvbGxvdyBpLXRoIHN1ZmZpeC4KKyAgICBUZXh0SWR4IGogPSBzYS0+YXQoaW52ZXNlX3NhLT5hdChpKSArIDEpOworICAgIHdoaWxlIChpICsgayA8IHNpemUgJiYgaiArIGsgPCBzaXplICYmIHRleHQtPmF0KGkgKyBrKSA9PSB0ZXh0LT5hdChqICsgaykpIHsKKyAgICAgICsrazsKKyAgICB9CisgICAgbGNwLT5hdChpbnZlc2Vfc2EtPmF0KGkpKSA9IGs7CisgICAgaWYgKGsgPiAwKSAtLWs7CisgIH0KK30KKworLyogSXNsZSBpcyBhIHJhbmdlIGluIFNBIHdpdGggTENQIG5vdCBsZXNzIHRoYW4gc29tZSB2YWx1ZS4KKyAgIFdoZW4gd2UgcmFpc2UgdGhlIExDUCByZXF1aXJlbWVudCwgdGhlIGlzbGUgc3Vua3MgYW5kIHNtYWxsZXIgaXNsZXMgYXBwZWFyCisgICBpbnN0ZWFkLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICBUZXh0SWR4IGxjcDsKKyAgVGV4dElkeCBsOworICBUZXh0SWR4IHI7CisgIENvdmVyYWdlIGNvdmVyYWdlOworfSBJc2xlOworCisvKiBIZWxwZXIgcm91dGluZSBmb3IgYGN1dE1hdGNoYC4gKi8KK3N0YXRpYyB2b2lkIHBvaXNvbkRhdGEoVGV4dElkeCBwb3MsIFRleHRJZHggbGVuZ3RoLAorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPFRleHRDaGFyPj4qIGRhdGEsIHN0ZDo6dmVjdG9yPFRleHRJZHg+KiBmaWxlX21hcCwKKyAgICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiogZmlsZV9vZmZzZXQsIFRleHRDaGFyKiBuZXh0X3Rlcm1pbmF0b3IpIHsKKyAgVGV4dElkeCBmID0gZmlsZV9tYXAtPmF0KHBvcyAvIENIVU5LX1NJWkUpOworICBwb3MgLT0gZmlsZV9vZmZzZXQtPmF0KGYpOworICBzdGQ6OnZlY3RvcjxUZXh0Q2hhcj4mIGZpbGUgPSBkYXRhLT5hdChmKTsKKyAgVGV4dElkeCBsID0gKGxlbmd0aCA9PSBDVVRfTUFUQ0gpID8gQ1VUX01BVENIIDogMTsKKyAgZm9yIChUZXh0SWR4IGogPSAwOyBqIDwgbDsgaisrLCBwb3MrKykgeworICAgIGlmIChmaWxlW3Bvc10gPj0gMjU2KSBjb250aW51ZTsKKyAgICBpZiAoZmlsZVtwb3MgKyAxXSA+PSAyNTYpIHsKKyAgICAgIGZpbGVbcG9zXSA9IGZpbGVbcG9zICsgMV07CisgICAgfSBlbHNlIGlmIChwb3MgPiAwICYmIGZpbGVbcG9zIC0gMV0gPj0gMjU2KSB7CisgICAgICBmaWxlW3Bvc10gPSBmaWxlW3BvcyAtIDFdOworICAgIH0gZWxzZSB7CisgICAgICBmaWxlW3Bvc10gPSAoKm5leHRfdGVybWluYXRvcikrKzsKKyAgICB9CisgIH0KK30KKworLyogUmVtb3ZlIHN1YnN0cmluZ3Mgb2YgYSBnaXZlbiBtYXRjaCBmcm9tIGZpbGVzLgorICAgU3Vic3RyaW5ncyBhcmUgcmVwbGFjZWQgd2l0aCB1bmlxdWUgdGVybWluYXRvcnMsIHNvIG5leHQgaXRlcmF0aW9uIFNBIHdvdWxkCisgICBub3QgYWxsb3cgdG8gY3Jvc3MgcmVtb3ZlZCBhcmVhcy4gKi8KK3N0YXRpYyB2b2lkIGN1dE1hdGNoKHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPFRleHRDaGFyPj4qIGRhdGEsIFRleHRJZHggaW5kZXgsCisgICAgVGV4dElkeCBsZW5ndGgsIHN0ZDo6dmVjdG9yPFRleHRJZHg+KiBzYSwgc3RkOjp2ZWN0b3I8VGV4dElkeD4qIGxjcCwKKyAgICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiogaW52ZXNlX3NhLCBUZXh0Q2hhciogbmV4dF90ZXJtaW5hdG9yLAorICAgIHN0ZDo6dmVjdG9yPFRleHRJZHg+KiBmaWxlX21hcCwgc3RkOjp2ZWN0b3I8VGV4dElkeD4qIGZpbGVfb2Zmc2V0KSB7CisgIHdoaWxlIChsZW5ndGggPj0gQ1VUX01BVENIKSB7CisgICAgVGV4dElkeCBpID0gaW5kZXg7CisgICAgd2hpbGUgKGxjcC0+YXQoaSkgPj0gbGVuZ3RoKSB7CisgICAgICBpKys7CisgICAgICBwb2lzb25EYXRhKAorICAgICAgICAgIHNhLT5hdChpKSwgbGVuZ3RoLCBkYXRhLCBmaWxlX21hcCwgZmlsZV9vZmZzZXQsIG5leHRfdGVybWluYXRvcik7CisgICAgfQorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBwb2lzb25EYXRhKAorICAgICAgICAgIHNhLT5hdChpbmRleCksIGxlbmd0aCwgZGF0YSwgZmlsZV9tYXAsIGZpbGVfb2Zmc2V0LCBuZXh0X3Rlcm1pbmF0b3IpOworICAgICAgaWYgKGluZGV4ID09IDAgfHwgbGNwLT5hdChpbmRleCAtIDEpIDwgbGVuZ3RoKSBicmVhazsKKyAgICAgIGluZGV4LS07CisgICAgfQorICAgIGxlbmd0aC0tOworICAgIGluZGV4ID0gaW52ZXNlX3NhLT5hdChzYS0+YXQoaW5kZXgpICsgMSk7CisgIH0KK30KKworc3RkOjpzdHJpbmcgRE1fZ2VuZXJhdGUoc2l6ZV90IGRpY3Rpb25hcnlfc2l6ZV9saW1pdCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBzYW1wbGVfc2l6ZXMsIGNvbnN0IHVpbnQ4X3QqIHNhbXBsZV9kYXRhKSB7CisgIHsKKyAgICBUZXh0SWR4IHRtcCA9IHN0YXRpY19jYXN0PFRleHRJZHg+KGRpY3Rpb25hcnlfc2l6ZV9saW1pdCk7CisgICAgaWYgKCh0bXAgIT0gZGljdGlvbmFyeV9zaXplX2xpbWl0KSB8fCAodG1wID4gMXUgPDwgMzApKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImRpY3Rpb25hcnlfc2l6ZV9saW1pdCBpcyB0b28gbGFyZ2VcbiIpOworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgfQorCisgIC8qIENvdWxkIHVzZSAyNTYgKyAnMCcgZm9yIGVhc2llciBkZWJ1Z2dpbmcuICovCisgIFRleHRDaGFyIG5leHRfdGVybWluYXRvciA9IDI1NjsKKworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPFRleHRDaGFyPj4gZGF0YTsKKworICBUZXh0SWR4IG9mZnNldCA9IDA7CisgIHNpemVfdCBudW1fc2FtcGxlcyA9IHNhbXBsZV9zaXplcy5zaXplKCk7CisgIGlmIChudW1fc2FtcGxlcyA+IERNX01BWF9GSUxFUykgbnVtX3NhbXBsZXMgPSBETV9NQVhfRklMRVM7CisgIGZvciAoc2l6ZV90IG4gPSAwOyBuIDwgbnVtX3NhbXBsZXM7ICsrbikgeworICAgIFRleHRJZHggZGVsdGEgPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihzYW1wbGVfc2l6ZXNbbl0pOworICAgIGlmIChkZWx0YSAhPSBzYW1wbGVfc2l6ZXNbbl0pIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAic2FtcGxlIGlzIHRvbyBsYXJnZVxuIik7CisgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIGlmIChkZWx0YSA9PSAwKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIjAtbGVuZ3RoIHNhbXBsZXMgYXJlIHByb2hpYml0ZWRcbiIpOworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBUZXh0SWR4IG5leHRfb2Zmc2V0ID0gb2Zmc2V0ICsgZGVsdGE7CisgICAgaWYgKG5leHRfb2Zmc2V0IDw9IG9mZnNldCkgeworICAgICAgZnByaW50ZihzdGRlcnIsICJjb3JwdXMgaXMgdG9vIGxhcmdlXG4iKTsKKyAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgZGF0YS5wdXNoX2JhY2soCisgICAgICAgIHN0ZDo6dmVjdG9yPFRleHRDaGFyPihzYW1wbGVfZGF0YSArIG9mZnNldCwgc2FtcGxlX2RhdGEgKyBuZXh0X29mZnNldCkpOworICAgIG9mZnNldCA9IG5leHRfb2Zmc2V0OworICAgIGRhdGEuYmFjaygpLnB1c2hfYmFjayhuZXh0X3Rlcm1pbmF0b3IrKyk7CisgIH0KKworICAvKiBNb3N0IGFycmF5cyBhcmUgYWxsb2NhdGVkIG9uY2UsIGFuZCB0aGVuIGp1c3QgcmVzaXplZCB0byBzbWFsbGVyIGFuZAorICAgICBzbWFsbGVyIHNpemVzLiAqLworICBzdGQ6OnZlY3RvcjxUZXh0Q2hhcj4gZnVsbF90ZXh0OworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBmaWxlX21hcDsKKyAgc3RkOjp2ZWN0b3I8VGV4dElkeD4gZmlsZV9vZmZzZXQ7CisgIHN0ZDo6dmVjdG9yPFRleHRJZHg+IHNhOworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBpbnZlc2Vfc2E7CisgIHN0ZDo6dmVjdG9yPFRleHRJZHg+IGxjcDsKKyAgc3RkOjp2ZWN0b3I8SXNsZT4gaXNsZXM7CisgIHN0ZDo6dmVjdG9yPGNoYXI+IG91dHB1dF9kYXRhOworICBUZXh0SWR4IHRvdGFsID0gMDsKKyAgVGV4dElkeCB0b3RhbF9jb3N0ID0gMDsKKyAgVGV4dElkeCBiZXN0X2Nvc3Q7CisgIElzbGUgYmVzdF9pc2xlOworICBzaXplX3QgbWluX2NvdW50ID0gbnVtX3NhbXBsZXM7CisKKyAgd2hpbGUgKHRydWUpIHsKKyAgICBUZXh0SWR4IG1heF9tYXRjaCA9IHN0YXRpY19jYXN0PFRleHRJZHg+KGRpY3Rpb25hcnlfc2l6ZV9saW1pdCkgLSB0b3RhbDsKKyAgICBidWlsZEZ1bGxUZXh0KCZkYXRhLCAmZnVsbF90ZXh0LCAmZmlsZV9tYXAsICZmaWxlX29mZnNldCwgJm5leHRfdGVybWluYXRvcik7CisgICAgc2EucmVzaXplKGZ1bGxfdGV4dC5zaXplKCkpOworICAgIC8qIEhvcGVmdWxseSwgbm9uLW5lZ2F0aXZlIFRleHRTYUlkeCBpcyB0aGUgc2FtZSBzYSBUZXh0SWR4IGNvdW50ZXJwYXJ0LiAqLworICAgIHNhaXN4eChmdWxsX3RleHQuZGF0YSgpLCByZWludGVycHJldF9jYXN0PFRleHRTYUlkeCo+KHNhLmRhdGEoKSksCisgICAgICAgIHN0YXRpY19jYXN0PFRleHRDaGFyPihmdWxsX3RleHQuc2l6ZSgpKSwgbmV4dF90ZXJtaW5hdG9yKTsKKyAgICBpbnZlc2Vfc2EucmVzaXplKGZ1bGxfdGV4dC5zaXplKCkpOworICAgIGZvciAoVGV4dElkeCBpID0gMDsgaSA8IGZ1bGxfdGV4dC5zaXplKCk7ICsraSkgeworICAgICAgaW52ZXNlX3NhW3NhW2ldXSA9IGk7CisgICAgfQorICAgIGJ1aWxkTGNwKCZmdWxsX3RleHQsICZzYSwgJmxjcCwgJmludmVzZV9zYSk7CisKKyAgICAvKiBEbyBub3QgcmVidWlsZCBTQS9MQ1AsIGp1c3QgdXNlIGRpZmZlcmVudCBzZWxlY3Rpb24uICovCisgIHJldHJ5OgorICAgIGJlc3RfY29zdCA9IDA7CisgICAgYmVzdF9pc2xlID0gezAsIDAsIDAsIHt7MH19fTsKKyAgICBpc2xlcy5yZXNpemUoMCk7CisgICAgaXNsZXMucHVzaF9iYWNrKGJlc3RfaXNsZSk7CisKKyAgICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCBsY3Auc2l6ZSgpOyArK2kpIHsKKyAgICAgIFRleHRJZHggbCA9IGk7CisgICAgICBDb3ZlcmFnZSBjb3YgPSB7ezB9fTsKKyAgICAgIHNpemVfdCBmID0gZmlsZV9tYXBbc2FbaV0gLyBDSFVOS19TSVpFXTsKKyAgICAgIGNvdltmID4+IDZdID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSkgPDwgKGYgJiA2Myk7CisgICAgICB3aGlsZSAobGNwW2ldIDwgaXNsZXMuYmFjaygpLmxjcCkgeworICAgICAgICBJc2xlJiB0b3AgPSBpc2xlcy5iYWNrKCk7CisgICAgICAgIHRvcC5yID0gaTsKKyAgICAgICAgbCA9IHRvcC5sOworICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IGNvdi5zaXplKCk7ICsreCkgY292W3hdIHw9IHRvcC5jb3ZlcmFnZVt4XTsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBjb3Yuc2l6ZSgpOyArK3gpIGNvdW50ICs9IHBvcGNvdW50KGNvdlt4XSk7CisgICAgICAgIFRleHRJZHggZWZmZWN0aXZlX2xjcCA9IHRvcC5sY3A7CisgICAgICAgIC8qIFJlc3RyaWN0IChsYXN0KSBkaWN0aW9uYXJ5IGVudHJ5IGxlbmd0aC4gKi8KKyAgICAgICAgaWYgKGVmZmVjdGl2ZV9sY3AgPiBtYXhfbWF0Y2gpIGVmZmVjdGl2ZV9sY3AgPSBtYXhfbWF0Y2g7CisgICAgICAgIFRleHRJZHggY29zdCA9IGNvdW50ICogZWZmZWN0aXZlX2xjcDsKKyAgICAgICAgaWYgKGNvc3QgPiBiZXN0X2Nvc3QgJiYgY291bnQgPj0gbWluX2NvdW50ICYmCisgICAgICAgICAgICBlZmZlY3RpdmVfbGNwID49IE1JTl9NQVRDSCkgeworICAgICAgICAgIGJlc3RfY29zdCA9IGNvc3Q7CisgICAgICAgICAgYmVzdF9pc2xlID0gdG9wOworICAgICAgICAgIGJlc3RfaXNsZS5sY3AgPSBlZmZlY3RpdmVfbGNwOworICAgICAgICB9CisgICAgICAgIGlzbGVzLnBvcF9iYWNrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgY292LnNpemUoKTsgKyt4KSB7CisgICAgICAgICAgaXNsZXMuYmFjaygpLmNvdmVyYWdlW3hdIHw9IGNvdlt4XTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKGxjcFtpXSA+IGlzbGVzLmJhY2soKS5sY3ApIGlzbGVzLnB1c2hfYmFjayh7bGNwW2ldLCBsLCAwLCB7ezB9fX0pOworICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBjb3Yuc2l6ZSgpOyArK3gpIHsKKyAgICAgICAgaXNsZXMuYmFjaygpLmNvdmVyYWdlW3hdIHw9IGNvdlt4XTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBXaGVuIHNhdHVyYXRlZCBtYXRjaGVzIGRvIG5vdCBtYXRjaCBsZW5ndGggcmVzdHJpY3Rpb25zLCBsb3dlciB0aGUKKyAgICAgICBzYXR1cmF0aW9uIHJlcXVpcmVtZW50cy4gKi8KKyAgICBpZiAoYmVzdF9jb3N0ID09IDAgfHwgYmVzdF9pc2xlLmxjcCA8IE1JTl9NQVRDSCkgeworICAgICAgaWYgKG1pbl9jb3VudCA+PSA4KSB7CisgICAgICAgIG1pbl9jb3VudCA9IChtaW5fY291bnQgKiA3KSAvIDg7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUmV0cnk6IG1pbl9jb3VudD0lenVcbiIsIG1pbl9jb3VudCk7CisgICAgICAgIGdvdG8gcmV0cnk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBTYXZlIHRoZSBlbnRyeS4gKi8KKyAgICBmcHJpbnRmKHN0ZGVyciwgIlNhdmluZ3M6ICVkKyVkLCBkaWN0aW9uYXJ5OiAlZCslZFxuIiwKKyAgICAgICAgdG90YWxfY29zdCwgYmVzdF9jb3N0LCB0b3RhbCwgYmVzdF9pc2xlLmxjcCk7CisgICAgaW50KiBwaWVjZSA9ICZmdWxsX3RleHRbc2FbYmVzdF9pc2xlLmxdXTsKKyAgICBvdXRwdXQuaW5zZXJ0KG91dHB1dC5lbmQoKSwgcGllY2UsIHBpZWNlICsgYmVzdF9pc2xlLmxjcCk7CisgICAgdG90YWwgKz0gYmVzdF9pc2xlLmxjcDsKKyAgICB0b3RhbF9jb3N0ICs9IGJlc3RfY29zdDsKKyAgICBjdXRNYXRjaCgmZGF0YSwgYmVzdF9pc2xlLmwsIGJlc3RfaXNsZS5sY3AsICZzYSwgJmxjcCwgJmludmVzZV9zYSwKKyAgICAgICAgJm5leHRfdGVybWluYXRvciwgJmZpbGVfbWFwLCAmZmlsZV9vZmZzZXQpOworICAgIGlmICh0b3RhbCA+PSBkaWN0aW9uYXJ5X3NpemVfbGltaXQpIGJyZWFrOworICB9CisKKyAgcmV0dXJuIG91dHB1dDsKK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kZW9ydW1tb2xhZS5oIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2Rlb3J1bW1vbGFlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxNTA5NwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kZW9ydW1tb2xhZS5oCkBAIC0wLDAgKzEsMjYgQEAKKyNpZm5kZWYgQlJPVExJX1JFU0VBUkNIX0RFT1JVTU1PTEFFX0hfCisjZGVmaW5lIEJST1RMSV9SRVNFQVJDSF9ERU9SVU1NT0xBRV9IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKy8qIGxvZzIobWF4aW1hbCBudW1iZXIgb2YgZmlsZXMpLiBWYWx1ZSA2IHByb3ZpZGVzIHNvbWUgc3BlZWR1cHMuICovCisjZGVmaW5lIERNX0xPR19NQVhfRklMRVMgNgorCisvKiBOb24gdHVuYWJsZSBkZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUgRE1fTUFYX0ZJTEVTICgxIDw8IERNX0xPR19NQVhfRklMRVMpCisKKy8qKgorICogR2VuZXJhdGUgYSBkaWN0aW9uYXJ5IGZvciBnaXZlbiBzYW1wbGVzLgorICoKKyAqIEBwYXJhbSBkaWN0aW9uYXJ5X3NpemVfbGltaXQgbWF4aW1hbCBkaWN0aW9uYXJ5IHNpemUKKyAqIEBwYXJhbSBzYW1wbGVfc2l6ZXMgdmVjdG9yIHdpdGggc2FtcGxlIHNpemVzCisgKiBAcGFyYW0gc2FtcGxlX2RhdGEgY29uY2F0ZW5hdGVkIHNhbXBsZXMKKyAqIEByZXR1cm4gZ2VuZXJhdGVkIGRpY3Rpb25hcnkKKyAqLworc3RkOjpzdHJpbmcgRE1fZ2VuZXJhdGUoc2l6ZV90IGRpY3Rpb25hcnlfc2l6ZV9saW1pdCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBzYW1wbGVfc2l6ZXMsIGNvbnN0IHVpbnQ4X3QqIHNhbXBsZV9kYXRhKTsKKworI2VuZGlmICAvLyBCUk9UTElfUkVTRUFSQ0hfREVPUlVNTU9MQUVfSF8KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kaWN0aW9uYXJ5X2dlbmVyYXRvci5jYyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kaWN0aW9uYXJ5X2dlbmVyYXRvci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2RmMmZhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2RpY3Rpb25hcnlfZ2VuZXJhdG9yLmNjCkBAIC0wLDAgKzEsMzI2IEBACisjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGZzdHJlYW0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiLi9kZW9ydW1tb2xhZS5oIgorI2luY2x1ZGUgIi4vZHVyY2hzY2hsYWcuaCIKKyNpbmNsdWRlICIuL3NpZXZlLmgiCisKKy8qIFRoaXMgaXNuJ3QgYSBkZWZpbml0aXZlIGxpc3Qgb2YgIi0tZm9vIiBhcmd1bWVudHMsIG9ubHkgdGhvc2UgdGhhdCB0YWtlIGFuCisgKiBhZGRpdGlvbmFsICI9IyIgaW50ZWdlciBwYXJhbWV0ZXIsIGxpa2UgIi0tZm9vPTIwIiBvciAiLS1mb289MzJLIi4KKyAqLworI2RlZmluZSBMT05HX0FSR19CTE9DS19MRU4gIi0tYmxvY2tfbGVuPSIKKyNkZWZpbmUgTE9OR19BUkdfU0xJQ0VfTEVOICItLXNsaWNlX2xlbj0iCisjZGVmaW5lIExPTkdfQVJHX1RBUkdFVF9ESUNUX0xFTiAiLS10YXJnZXRfZGljdF9sZW49IgorI2RlZmluZSBMT05HX0FSR19NSU5fU0xJQ0VfUE9QICItLW1pbl9zbGljZV9wb3A9IgorI2RlZmluZSBMT05HX0FSR19DSFVOS19MRU4gIi0tY2h1bmtfbGVuPSIKKyNkZWZpbmUgTE9OR19BUkdfT1ZFUkxBUF9MRU4gIi0tb3ZlcmxhcF9sZW49IgorCisjZGVmaW5lIE1FVEhPRF9ETSAwCisjZGVmaW5lIE1FVEhPRF9TSUVWRSAxCisjZGVmaW5lIE1FVEhPRF9EVVJDSFNDSExBRyAyCisjZGVmaW5lIE1FVEhPRF9ESVNUSUxMIDMKKyNkZWZpbmUgTUVUSE9EX1BVUklGWSA0CisKK3N0YXRpYyBzaXplX3QgcmVhZEludChjb25zdCBjaGFyKiBzdHIpIHsKKyAgc2l6ZV90IHJlc3VsdCA9IDA7CisgIGlmIChzdHJbMF0gPT0gMCB8fCBzdHJbMF0gPT0gJzAnKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMzsgKytpKSB7CisgICAgaWYgKHN0cltpXSA9PSAwKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoc3RyW2ldID09ICdrJyB8fCBzdHJbaV0gPT0gJ0snKSB7CisgICAgICBpZiAoKHN0cltpICsgMV0gPT0gMCkgJiYgKChyZXN1bHQgPDwgMTApID4gcmVzdWx0KSkgeworICAgICAgICByZXR1cm4gcmVzdWx0IDw8IDEwOworICAgICAgfQorICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChzdHJbaV0gPT0gJ20nIHx8IHN0cltpXSA9PSAnTScpIHsKKyAgICAgIGlmICgoc3RyW2kgKyAxXSA9PSAwKSAmJiAoKHJlc3VsdCA8PCAyMCkgPiByZXN1bHQpKSB7CisgICAgICAgIHJldHVybiByZXN1bHQgPDwgMjA7CisgICAgICB9CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHN0cltpXSA8ICcwJyB8fCBzdHJbaV0gPiAnOScpIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBzaXplX3QgbmV4dCA9ICgxMCAqIHJlc3VsdCkgKyAoc3RyW2ldIC0gJzAnKTsKKyAgICBpZiAobmV4dCA8PSByZXN1bHQpIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXN1bHQgPSBuZXh0OworICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgcmVhZEZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIHsKKyAgc3RkOjppZnN0cmVhbSBmaWxlKHBhdGgpOworICBzdGQ6OnN0cmluZyBjb250ZW50KAorICAgICAgKHN0ZDo6aXN0cmVhbWJ1Zl9pdGVyYXRvcjxjaGFyPihmaWxlKSksIHN0ZDo6aXN0cmVhbWJ1Zl9pdGVyYXRvcjxjaGFyPigpKTsKKyAgcmV0dXJuIGNvbnRlbnQ7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlRmlsZShjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudCkgeworICBzdGQ6Om9mc3RyZWFtIG91dGZpbGUoZmlsZSwgc3RkOjpvZnN0cmVhbTo6YmluYXJ5KTsKKyAgb3V0ZmlsZS53cml0ZShjb250ZW50LmNfc3RyKCksIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oY29udGVudC5zaXplKCkpKTsKKyAgb3V0ZmlsZS5jbG9zZSgpOworfQorCitzdGF0aWMgdm9pZCB3cml0ZVNhbXBsZXMoY2hhciBjb25zdCogYXJndltdLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBwYXRoQXJncywKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBzaXplcywgY29uc3QgdWludDhfdCogZGF0YSkgeworICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRoQXJncy5zaXplKCk7ICsraSkgeworICAgIGludCBqID0gcGF0aEFyZ3NbaV07CisgICAgY29uc3QgY2hhciogZmlsZSA9IGFyZ3Zbal07CisgICAgc2l6ZV90IHNhbXBsZVNpemUgPSBzaXplc1tpXTsKKyAgICBzdGQ6Om9mc3RyZWFtIG91dGZpbGUoZmlsZSwgc3RkOjpvZnN0cmVhbTo6YmluYXJ5KTsKKyAgICBvdXRmaWxlLndyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEgKyBvZmZzZXQpLAorICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KHNhbXBsZVNpemUpKTsKKyAgICBvdXRmaWxlLmNsb3NlKCk7CisgICAgb2Zmc2V0ICs9IHNhbXBsZVNpemU7CisgIH0KK30KKworLyogUmV0dXJucyAiYmFzZSBmaWxlIG5hbWUiIG9yIGl0cyB0YWlsLCBpZiBpdCBjb250YWlucyAnLycgb3IgJ1wnLiAqLworc3RhdGljIGNvbnN0IGNoYXIqIGZpbGVOYW1lKGNvbnN0IGNoYXIqIHBhdGgpIHsKKyAgY29uc3QgY2hhciogc2VwYXJhdG9yX3Bvc2l0aW9uID0gc3RycmNocihwYXRoLCAnLycpOworICBpZiAoc2VwYXJhdG9yX3Bvc2l0aW9uKSBwYXRoID0gc2VwYXJhdG9yX3Bvc2l0aW9uICsgMTsKKyAgc2VwYXJhdG9yX3Bvc2l0aW9uID0gc3RycmNocihwYXRoLCAnXFwnKTsKKyAgaWYgKHNlcGFyYXRvcl9wb3NpdGlvbikgcGF0aCA9IHNlcGFyYXRvcl9wb3NpdGlvbiArIDE7CisgIHJldHVybiBwYXRoOworfQorCitzdGF0aWMgdm9pZCBwcmludEhlbHAoY29uc3QgY2hhciogbmFtZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbT1BUSU9OXS4uLiBESUNUSU9OQVJZIFtTQU1QTEVdLi4uXG4iLCBuYW1lKTsKKyAgZnByaW50ZihzdGRlcnIsCisgICAgICAiT3B0aW9uczpcbiIKKyAgICAgICIgIC0tZG0gICAgICAgdXNlICdkZW9ydW1tb2xhZScgZW5naW5lXG4iCisgICAgICAiICAtLWRpc3RpbGwgIHJld3JpdGUgc2FtcGxlczsgdW5pcXVlIHRleHQgcGFydHMgYXJlIHJlbW92ZWRcbiIKKyAgICAgICIgIC0tZHNoICAgICAgdXNlICdkdXJjaHNjaGxhZycgZW5naW5lIChkZWZhdWx0KVxuIgorICAgICAgIiAgLS1wdXJpZnkgICByZXdyaXRlIHNhbXBsZXM7IHVuaXF1ZSB0ZXh0IHBhcnRzIGFyZSB6ZXJvZWQgb3V0XG4iCisgICAgICAiICAtLXNpZXZlICAgIHVzZSAnc2lldmUnIGVuZ2luZVxuIgorICAgICAgIiAgLWIjLCAtLWJsb2NrX2xlbj0jXG4iCisgICAgICAiICAgICAgICAgICAgIHNldCBibG9jayBsZW5ndGggZm9yICdkdXJjaHNjaGxhZyc7IGRlZmF1bHQ6IDEwMjRcbiIKKyAgICAgICIgIC1zIywgLS1zbGljZV9sZW49I1xuIgorICAgICAgIiAgICAgICAgICAgICBzZXQgc2xpY2UgbGVuZ3RoIGZvciAnZGlzdGlsbCcsICdkdXJjaHNjaGxhZycsICdwdXJpZnknXG4iCisgICAgICAiICAgICAgICAgICAgIGFuZCAnc2lldmUnOyBkZWZhdWx0OiAxNlxuIgorICAgICAgIiAgLXQjLCAtLXRhcmdldF9kaWN0X2xlbj0jXG4iCisgICAgICAiICAgICAgICAgICAgIHNldCB0YXJnZXQgZGljdGlvbmFyeSBsZW5ndGggKGxpbWl0KTsgZGVmYXVsdDogMTZLXG4iCisgICAgICAiICAtdSMsIC0tbWluX3NsaWNlX3BvcD0jXG4iCisgICAgICAiICAgICAgICAgICAgIHNldCBtaW5pbXVtIHNsaWNlIHBvcHVsYXRpb24gKGZvciByZXdyaXRlcyk7IGRlZmF1bHQ6IDJcbiIKKyAgICAgICIgIC1jIywgLS1jaHVua19sZW49I1xuIgorICAgICAgIiAgICAgICAgICAgICBpZiBwb3NpdGl2ZSwgc2FtcGxlcyBhcmUgY3V0IGludG8gY2h1bmtzIG9mIHRoaXMgbGVuZ3RoO1xuIgorICAgICAgIiAgICAgICAgICAgICBkZWZhdWx0OiAwOyBjYW5ub3QgbWl4IHdpdGggJ3Jld3JpdGUgc2FtcGxlcydcbiIKKyAgICAgICIgIC1vIywgLS1vdmVybGFwX2xlbj0jXG4iCisgICAgICAiICAgICAgICAgICAgIHNldCBjaHVuayBvdmVybGFwIGxlbmd0aDsgZGVmYXVsdCAwXG4iCisgICAgICAiIyBpcyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggb3B0aW9uYWwgay9LL20vTSBzdWZmaXguXG4iCisgICAgICAiV0FSTklORzogJ2Rpc3RpbGwnIGFuZCAncHVyaWZ5JyB3aWxsIG92ZXJ3cml0ZSBvcmlnaW5hbCBzYW1wbGVzIVxuIgorICAgICAgIiAgICAgICAgIENvbXBsZXRlbHkgdW5pcXVlIHNhbXBsZXMgbWlnaHQgYmVjb21lIGVtcHR5IGZpbGVzLlxuXG4iKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgY29uc3QqIGFyZ3ZbXSkgeworICBpbnQgZGljdGlvbmFyeUFyZyA9IC0xOworICBpbnQgbWV0aG9kID0gTUVUSE9EX0RVUkNIU0NITEFHOworICBzaXplX3Qgc2xpY2VMZW4gPSAxNjsKKyAgc2l6ZV90IHRhcmdldFNpemUgPSAxNiA8PCAxMDsKKyAgc2l6ZV90IGJsb2NrU2l6ZSA9IDEwMjQ7CisgIHNpemVfdCBtaW5pbXVtUG9wdWxhdGlvbiA9IDI7CisgIHNpemVfdCBjaHVua0xlbiA9IDA7CisgIHNpemVfdCBvdmVybGFwTGVuID0gMDsKKworICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBkYXRhOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNpemVzOworICBzdGQ6OnZlY3RvcjxpbnQ+IHBhdGhBcmdzOworICBzaXplX3QgdG90YWwgPSAwOworICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgeworICAgIGlmIChhcmd2W2ldID09IG51bGxwdHIpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChhcmd2W2ldWzBdID09ICctJykgeworICAgICAgY2hhciBhcmcxID0gYXJndltpXVsxXTsKKyAgICAgIGNvbnN0IGNoYXIqIGFyZzIgPSBhcmcxID8gJmFyZ3ZbaV1bMl0gOiBudWxscHRyOworICAgICAgaWYgKGFyZzEgPT0gJy0nKSB7CisgICAgICAgIGlmIChkaWN0aW9uYXJ5QXJnICE9IC0xKSB7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICJNZXRob2Qgc2hvdWxkIGJlIHNwZWNpZmllZCBiZWZvcmUgZGljdGlvbmFyeSAvIHNhbXBsZSAnJXMnXG4iLAorICAgICAgICAgICAgICBhcmd2W2ldKTsKKyAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisKKyAgICAgICAgLyogTG9vayBmb3IgIi0tbG9uZ19hcmciIHZpYSBleGFjdCBtYXRjaC4gKi8KKyAgICAgICAgaWYgKHN0ZDo6c3RyY21wKGFyZ3ZbaV0sICItLXNpZXZlIikgPT0gMCkgeworICAgICAgICAgIG1ldGhvZCA9IE1FVEhPRF9TSUVWRTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RkOjpzdHJjbXAoYXJndltpXSwgIi0tZG0iKSA9PSAwKSB7CisgICAgICAgICAgbWV0aG9kID0gTUVUSE9EX0RNOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzdGQ6OnN0cmNtcChhcmd2W2ldLCAiLS1kc2giKSA9PSAwKSB7CisgICAgICAgICAgbWV0aG9kID0gTUVUSE9EX0RVUkNIU0NITEFHOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzdGQ6OnN0cmNtcChhcmd2W2ldLCAiLS1kaXN0aWxsIikgPT0gMCkgeworICAgICAgICAgIG1ldGhvZCA9IE1FVEhPRF9ESVNUSUxMOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzdGQ6OnN0cmNtcChhcmd2W2ldLCAiLS1wdXJpZnkiKSA9PSAwKSB7CisgICAgICAgICAgbWV0aG9kID0gTUVUSE9EX1BVUklGWTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIExvb2sgZm9yICItLWxvbmdfYXJnPSMiIHZpYSBwcmVmaXggbWF0Y2guICovCisgICAgICAgIGlmIChzdGQ6OnN0cm5jbXAoYXJndltpXSwgTE9OR19BUkdfQkxPQ0tfTEVOLAorICAgICAgICAgICAgICBzdGQ6OnN0cmxlbihMT05HX0FSR19CTE9DS19MRU4pKSA9PSAwKSB7CisgICAgICAgICAgYXJnMSA9ICdiJzsKKyAgICAgICAgICBhcmcyID0gJmFyZ3ZbaV1bc3RkOjpzdHJsZW4oTE9OR19BUkdfQkxPQ0tfTEVOKV07CisgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpzdHJuY21wKGFyZ3ZbaV0sIExPTkdfQVJHX1NMSUNFX0xFTiwKKyAgICAgICAgICAgICAgc3RkOjpzdHJsZW4oTE9OR19BUkdfU0xJQ0VfTEVOKSkgPT0gMCkgeworICAgICAgICAgIGFyZzEgPSAncyc7CisgICAgICAgICAgYXJnMiA9ICZhcmd2W2ldW3N0ZDo6c3RybGVuKExPTkdfQVJHX1NMSUNFX0xFTildOworICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6c3RybmNtcChhcmd2W2ldLCBMT05HX0FSR19UQVJHRVRfRElDVF9MRU4sCisgICAgICAgICAgICAgIHN0ZDo6c3RybGVuKExPTkdfQVJHX1RBUkdFVF9ESUNUX0xFTikpID09IDApIHsKKyAgICAgICAgICBhcmcxID0gJ3QnOworICAgICAgICAgIGFyZzIgPSAmYXJndltpXVtzdGQ6OnN0cmxlbihMT05HX0FSR19UQVJHRVRfRElDVF9MRU4pXTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGQ6OnN0cm5jbXAoYXJndltpXSwgTE9OR19BUkdfTUlOX1NMSUNFX1BPUCwKKyAgICAgICAgICAgICAgc3RkOjpzdHJsZW4oTE9OR19BUkdfTUlOX1NMSUNFX1BPUCkpID09IDApIHsKKyAgICAgICAgICBhcmcxID0gJ3UnOworICAgICAgICAgIGFyZzIgPSAmYXJndltpXVtzdGQ6OnN0cmxlbihMT05HX0FSR19NSU5fU0xJQ0VfUE9QKV07CisgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpzdHJuY21wKGFyZ3ZbaV0sIExPTkdfQVJHX0NIVU5LX0xFTiwKKyAgICAgICAgICAgICAgc3RkOjpzdHJsZW4oTE9OR19BUkdfQ0hVTktfTEVOKSkgPT0gMCkgeworICAgICAgICAgIGFyZzEgPSAnYyc7CisgICAgICAgICAgYXJnMiA9ICZhcmd2W2ldW3N0ZDo6c3RybGVuKExPTkdfQVJHX0NIVU5LX0xFTildOworICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6c3RybmNtcChhcmd2W2ldLCBMT05HX0FSR19PVkVSTEFQX0xFTiwKKyAgICAgICAgICAgICAgc3RkOjpzdHJsZW4oTE9OR19BUkdfT1ZFUkxBUF9MRU4pKSA9PSAwKSB7CisgICAgICAgICAgYXJnMSA9ICdvJzsKKyAgICAgICAgICBhcmcyID0gJmFyZ3ZbaV1bc3RkOjpzdHJsZW4oTE9OR19BUkdfT1ZFUkxBUF9MRU4pXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwcmludEhlbHAoZmlsZU5hbWUoYXJndlswXSkpOworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBvcHRpb24gJyVzJ1xuIiwgYXJndltpXSk7CisgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBMb29rIGZvciAiLWYiIHNob3J0IGFyZ3Mgb3IgIi0tZm9vPSMiIGxvbmcgYXJncy4gKi8KKyAgICAgIGlmIChhcmcxID09ICdiJykgeworICAgICAgICBibG9ja1NpemUgPSByZWFkSW50KGFyZzIpOworICAgICAgICBpZiAoYmxvY2tTaXplIDwgMTYgfHwgYmxvY2tTaXplID4gNjU1MzYpIHsKKyAgICAgICAgICBwcmludEhlbHAoZmlsZU5hbWUoYXJndlswXSkpOworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBvcHRpb24gJyVzJ1xuIiwgYXJndltpXSk7CisgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChhcmcxID09ICdzJykgeworICAgICAgICBzbGljZUxlbiA9IHJlYWRJbnQoYXJnMik7CisgICAgICAgIGlmIChzbGljZUxlbiA8IDQgfHwgc2xpY2VMZW4gPiAyNTYpIHsKKyAgICAgICAgICBwcmludEhlbHAoZmlsZU5hbWUoYXJndlswXSkpOworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBvcHRpb24gJyVzJ1xuIiwgYXJndltpXSk7CisgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChhcmcxID09ICd0JykgeworICAgICAgICB0YXJnZXRTaXplID0gcmVhZEludChhcmcyKTsKKyAgICAgICAgaWYgKHRhcmdldFNpemUgPCAyNTYgfHwgdGFyZ2V0U2l6ZSA+ICgxIDw8IDI1KSkgeworICAgICAgICAgIHByaW50SGVscChmaWxlTmFtZShhcmd2WzBdKSk7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIG9wdGlvbiAnJXMnXG4iLCBhcmd2W2ldKTsKKyAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGFyZzEgPT0gJ3UnKSB7CisgICAgICAgIG1pbmltdW1Qb3B1bGF0aW9uID0gcmVhZEludChhcmcyKTsKKyAgICAgICAgaWYgKG1pbmltdW1Qb3B1bGF0aW9uIDwgMjU2IHx8IG1pbmltdW1Qb3B1bGF0aW9uID4gNjU1MzYpIHsKKyAgICAgICAgICBwcmludEhlbHAoZmlsZU5hbWUoYXJndlswXSkpOworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBvcHRpb24gJyVzJ1xuIiwgYXJndltpXSk7CisgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChhcmcxID09ICdjJykgeworICAgICAgICBjaHVua0xlbiA9IHJlYWRJbnQoYXJnMik7CisgICAgICAgIGlmIChjaHVua0xlbiA8IDAgfHwgY2h1bmtMZW4gPiBJTlRfTUFYKSB7CisgICAgICAgICAgcHJpbnRIZWxwKGZpbGVOYW1lKGFyZ3ZbMF0pKTsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgb3B0aW9uICclcydcbiIsIGFyZ3ZbaV0pOworICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoYXJnMSA9PSAnbycpIHsKKyAgICAgICAgb3ZlcmxhcExlbiA9IHJlYWRJbnQoYXJnMik7CisgICAgICAgIGlmIChvdmVybGFwTGVuIDwgMCB8fCBvdmVybGFwTGVuID4gSU5UX01BWCkgeworICAgICAgICAgIHByaW50SGVscChmaWxlTmFtZShhcmd2WzBdKSk7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIG9wdGlvbiAnJXMnXG4iLCBhcmd2W2ldKTsKKyAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBwcmludEhlbHAoZmlsZU5hbWUoYXJndlswXSkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVucmVjb2duaXplZCBvcHRpb24gJyVzJ1xuIiwgYXJndltpXSk7CisgICAgICAgIGV4aXQoMSk7CisgICAgICB9CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoZGljdGlvbmFyeUFyZyA9PSAtMSkgeworICAgICAgaWYgKG1ldGhvZCAhPSBNRVRIT0RfRElTVElMTCAmJiBtZXRob2QgIT0gTUVUSE9EX1BVUklGWSkgeworICAgICAgICBkaWN0aW9uYXJ5QXJnID0gaTsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHJlYWRGaWxlKGFyZ3ZbaV0pOworICAgIGlmIChjaHVua0xlbiA9PSAwKSB7CisgICAgICBwYXRoQXJncy5wdXNoX2JhY2soaSk7CisgICAgICBkYXRhLmluc2VydChkYXRhLmVuZCgpLCBjb250ZW50LmJlZ2luKCksIGNvbnRlbnQuZW5kKCkpOworICAgICAgdG90YWwgKz0gY29udGVudC5zaXplKCk7CisgICAgICBzaXplcy5wdXNoX2JhY2soY29udGVudC5zaXplKCkpOworICAgICAgY29udGludWU7CisgICAgfSBlbHNlIGlmIChjaHVua0xlbiA8PSBvdmVybGFwTGVuKSB7CisgICAgICBwcmludEhlbHAoZmlsZU5hbWUoYXJndlswXSkpOworICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGNodW5rTGVuIC0gb3ZlcmxhcExlbiBjb21iaW5hdGlvblxuIik7CisgICAgICBleGl0KDEpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBjaHVua1N0YXJ0ID0gMDsKKyAgICAgICAgY2h1bmtTdGFydCA8IGNvbnRlbnQuc2l6ZSgpOworICAgICAgICBjaHVua1N0YXJ0ICs9IGNodW5rTGVuIC0gb3ZlcmxhcExlbikgeworICAgICAgc3RkOjpzdHJpbmcgY2h1bmsgPSBjb250ZW50LnN1YnN0cihjaHVua1N0YXJ0LCBjaHVua0xlbik7CisgICAgICBkYXRhLmluc2VydChkYXRhLmVuZCgpLCBjaHVuay5iZWdpbigpLCBjaHVuay5lbmQoKSk7CisgICAgICB0b3RhbCArPSBjaHVuay5zaXplKCk7CisgICAgICBzaXplcy5wdXNoX2JhY2soY2h1bmsuc2l6ZSgpKTsKKyAgICB9CisgIH0KKworICBib29sIHdhbnREaWN0aW9uYXJ5ID0gKGRpY3Rpb25hcnlBcmcgPT0gLTEpOworICBpZiAobWV0aG9kID09IE1FVEhPRF9ESVNUSUxMIHx8IG1ldGhvZCA9PSBNRVRIT0RfUFVSSUZZKSB7CisgICAgd2FudERpY3Rpb25hcnkgPSBmYWxzZTsKKyAgICBpZiAoY2h1bmtMZW4gIT0gMCkgeworICAgICAgcHJpbnRIZWxwKGZpbGVOYW1lKGFyZ3ZbMF0pKTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG1peCAncmV3cml0ZSBzYW1wbGVzJyB3aXRoIHBvc2l0aXZlIGNodW5rX2xlblxuIik7CisgICAgICBleGl0KDEpOworICAgIH0KKyAgfQorICBpZiAod2FudERpY3Rpb25hcnkgfHwgdG90YWwgPT0gMCkgeworICAgIHByaW50SGVscChmaWxlTmFtZShhcmd2WzBdKSk7CisgICAgZnByaW50ZihzdGRlcnIsICJOb3QgZW5vdWdoIGFyZ3VtZW50c1xuIik7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIGlmIChtZXRob2QgPT0gTUVUSE9EX1NJRVZFKSB7CisgICAgd3JpdGVGaWxlKGFyZ3ZbZGljdGlvbmFyeUFyZ10sIHNpZXZlX2dlbmVyYXRlKAorICAgICAgICB0YXJnZXRTaXplLCBzbGljZUxlbiwgc2l6ZXMsIGRhdGEuZGF0YSgpKSk7CisgIH0gZWxzZSBpZiAobWV0aG9kID09IE1FVEhPRF9ETSkgeworICAgIHdyaXRlRmlsZShhcmd2W2RpY3Rpb25hcnlBcmddLCBETV9nZW5lcmF0ZSgKKyAgICAgICAgdGFyZ2V0U2l6ZSwgc2l6ZXMsIGRhdGEuZGF0YSgpKSk7CisgIH0gZWxzZSBpZiAobWV0aG9kID09IE1FVEhPRF9EVVJDSFNDSExBRykgeworICAgIHdyaXRlRmlsZShhcmd2W2RpY3Rpb25hcnlBcmddLCBkdXJjaHNjaGxhZ19nZW5lcmF0ZSgKKyAgICAgICAgdGFyZ2V0U2l6ZSwgc2xpY2VMZW4sIGJsb2NrU2l6ZSwgc2l6ZXMsIGRhdGEuZGF0YSgpKSk7CisgIH0gZWxzZSBpZiAobWV0aG9kID09IE1FVEhPRF9ESVNUSUxMKSB7CisgICAgZHVyY2hzY2hsYWdfZGlzdGlsbChzbGljZUxlbiwgbWluaW11bVBvcHVsYXRpb24sICZzaXplcywgZGF0YS5kYXRhKCkpOworICAgIHdyaXRlU2FtcGxlcyhhcmd2LCBwYXRoQXJncywgc2l6ZXMsIGRhdGEuZGF0YSgpKTsKKyAgfSBlbHNlIGlmIChtZXRob2QgPT0gTUVUSE9EX1BVUklGWSkgeworICAgIGR1cmNoc2NobGFnX3B1cmlmeShzbGljZUxlbiwgbWluaW11bVBvcHVsYXRpb24sIHNpemVzLCBkYXRhLmRhdGEoKSk7CisgICAgd3JpdGVTYW1wbGVzKGFyZ3YsIHBhdGhBcmdzLCBzaXplcywgZGF0YS5kYXRhKCkpOworICB9IGVsc2UgeworICAgIHByaW50SGVscChmaWxlTmFtZShhcmd2WzBdKSk7CisgICAgZnByaW50ZihzdGRlcnIsICJVbmtub3duIGdlbmVyYXRvclxuIik7CisgICAgZXhpdCgxKTsKKyAgfQorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kcmF3X2RpZmYuY2MgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZHJhd19kaWZmLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNTI4NjkKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZHJhd19kaWZmLmNjCkBAIC0wLDAgKzEsMTE3IEBACisvKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICAgQXV0aG9yOiB6aXA3NTNAZ21haWwuY29tIChJdmFuIE5pa3VsaW4pCisKKyAgIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLgorICAgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKyovCisKKy8qIFRvb2wgZm9yIGRyYXdpbmcgZGlmZiBQUE0gaW1hZ2VzIGJldHdlZW4gdHdvIGlucHV0IFBHTSBpbWFnZXMuIE5vcm1hbGx5IHVzZWQKKyAgIHdpdGggYmFja3dhcmQgcmVmZXJlbmNlIGhpc3RvZ3JhbSBkcmF3aW5nIHRvb2wuICovCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxjc3RkbGliPiAgLyogZXhpdCwgRVhJVF9GQUlMVVJFICovCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaWYgIWRlZmluZWQoQ0hFQ0spCisjZGVmaW5lIENIRUNLKFgpIGlmICghKFgpKSBleGl0KEVYSVRfRkFJTFVSRSk7CisjZW5kaWYKKwordHlwZWRlZiB1aW50OF90KiBTY2FuTGluZTsKK3R5cGVkZWYgU2NhbkxpbmUqIEltYWdlOworCit2b2lkIFJlYWRQR00oRklMRSogZiwgSW1hZ2UqIGltYWdlLCBzaXplX3QqIGhlaWdodCwgc2l6ZV90KiB3aWR0aCkgeworICBpbnQgY29sb3JzOworICBDSEVDSyhmc2NhbmYoZiwgIlA1XG4lbHUgJWx1XG4lZFxuIiwgd2lkdGgsIGhlaWdodCwgJmNvbG9ycykgPT0gMyk7CisgIGFzc2VydChjb2xvcnMgPT0gMjU1KTsKKyAgU2NhbkxpbmUqIGxpbmVzID0gbmV3IFNjYW5MaW5lWypoZWlnaHRdOworICAqaW1hZ2UgPSBsaW5lczsKKyAgZm9yIChpbnQgaSA9ICpoZWlnaHQgLSAxOyBpID49IDA7IC0taSkgeworICAgIFNjYW5MaW5lIGxpbmUgPSBuZXcgdWludDhfdFsqd2lkdGhdOworICAgIGxpbmVzW2ldID0gbGluZTsKKyAgICBDSEVDSyhmcmVhZChsaW5lLCAxLCAqd2lkdGgsIGYpID09ICp3aWR0aCk7CisgIH0KK30KKwordm9pZCBDYWxjdWxhdGVEaWZmKGludCoqIGRpZmYsIEltYWdlIGltYWdlMSwgSW1hZ2UgaW1hZ2UyLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsIHNpemVfdCB3aWR0aCkgeworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhlaWdodDsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3aWR0aDsgKytqKSB7CisgICAgICBkaWZmW2ldW2pdID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZTFbaV1bal0pIC0gaW1hZ2UyW2ldW2pdOworICAgIH0KKyAgfQorfQorCit2b2lkIERyYXdEaWZmKGludCoqIGRpZmYsIEltYWdlIGltYWdlMSwgSW1hZ2UgaW1hZ2UyLAorICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgd2lkdGgsIEZJTEUqIGYpIHsKKyAgaW50IG1heCA9IC0xMjM0OworICBpbnQgbWluID0gKzEyMzQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVpZ2h0OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHdpZHRoOyArK2opIHsKKyAgICAgIGlmIChtYXggPCBkaWZmW2ldW2pdKSBtYXggPSBkaWZmW2ldW2pdOworICAgICAgaWYgKG1pbiA+IGRpZmZbaV1bal0pIG1pbiA9IGRpZmZbaV1bal07CisgICAgICBpbnQgaW1nX21pbiA9IHN0ZDo6bWluKDI1NSAtIGltYWdlMVtpXVtqXSwgMjU1IC0gaW1hZ2UyW2ldW2pdKTsKKyAgICAgIGlmIChtYXggPCBpbWdfbWluKSBtYXggPSBpbWdfbWluOworICAgIH0KKyAgfQorCisgIGludCBhYnNfbWF4ID0gLW1pbjsKKyAgaWYgKGFic19tYXggPCBtYXgpIGFic19tYXggPSBtYXg7CisKKyAgZnByaW50ZihmLCAiUDZcbiVsdSAlbHVcbiVkXG4iLCB3aWR0aCwgaGVpZ2h0LCBhYnNfbWF4KTsKKworICB1aW50OF90KiByb3cgPSBuZXcgdWludDhfdFszICogd2lkdGhdOworICBmb3IgKGludCBpID0gaGVpZ2h0IC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyArK2opIHsKKyAgICAgIGludCBtaW5fdmFsID0gc3RkOjptaW4oMjU1IC0gaW1hZ2UxW2ldW2pdLCAyNTUgLSBpbWFnZTJbaV1bal0pOworICAgICAgaW50IG1heF92YWwgPSBzdGQ6Om1heChtaW5fdmFsLCBhYnMoZGlmZltpXVtqXSkpOworICAgICAgaWYgKGRpZmZbaV1bal0gPiAwKSB7IC8qIHJlZCAqLworICAgICAgICByb3dbMyAqIGogKyAwXSA9IGFic19tYXggLSBtYXhfdmFsICsgZGlmZltpXVtqXTsKKyAgICAgICAgcm93WzMgKiBqICsgMV0gPSBhYnNfbWF4IC0gbWF4X3ZhbDsKKyAgICAgICAgcm93WzMgKiBqICsgMl0gPSBhYnNfbWF4IC0gbWF4X3ZhbCArIG1pbl92YWw7CisgICAgICB9IGVsc2UgeyAvKiBncmVlbiAqLworICAgICAgICByb3dbMyAqIGogKyAwXSA9IGFic19tYXggLSBtYXhfdmFsOworICAgICAgICByb3dbMyAqIGogKyAxXSA9IGFic19tYXggLSBtYXhfdmFsIC0gZGlmZltpXVtqXTsKKyAgICAgICAgcm93WzMgKiBqICsgMl0gPSBhYnNfbWF4IC0gbWF4X3ZhbCArIG1pbl92YWw7CisgICAgICB9CisgICAgfQorICAgIGZ3cml0ZShyb3csIDEsIDMgKiB3aWR0aCwgZik7CisgIH0KKyAgZGVsZXRlW10gcm93OworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgaWYgKGFyZ2MgIT0gNCkgeworICAgIHByaW50ZigidXNhZ2U6ICVzIHBnbTEgcGdtMiBkaWZmX3BwbV9wYXRoXG4iLCBhcmd2WzBdKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIEltYWdlIGltYWdlMSwgaW1hZ2UyOworICBzaXplX3QgaDEsIHcxLCBoMiwgdzI7CisKKyAgRklMRSogZmltYWdlMSA9IGZvcGVuKGFyZ3ZbMV0sICJyYiIpOworICBSZWFkUEdNKGZpbWFnZTEsICZpbWFnZTEsICZoMSwgJncxKTsKKyAgZmNsb3NlKGZpbWFnZTEpOworCisgIEZJTEUqIGZpbWFnZTIgPSBmb3Blbihhcmd2WzJdLCAicmIiKTsKKyAgUmVhZFBHTShmaW1hZ2UyLCAmaW1hZ2UyLCAmaDIsICZ3Mik7CisgIGZjbG9zZShmaW1hZ2UyKTsKKworICBpZiAoIShoMSA9PSBoMiAmJiB3MSA9PSB3MikpIHsKKyAgICBwcmludGYoIkltYWdlcyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZS5cbiIpOworICAgIHJldHVybiAxOworICB9CisKKyAgaW50KiogZGlmZiA9IG5ldyBpbnQqW2gxXTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoMTsgKytpKSBkaWZmW2ldID0gbmV3IGludFt3MV07CisgIENhbGN1bGF0ZURpZmYoZGlmZiwgaW1hZ2UxLCBpbWFnZTIsIGgxLCB3MSk7CisKKyAgRklMRSogZmRpZmYgPSBmb3Blbihhcmd2WzNdLCAid2IiKTsKKyAgRHJhd0RpZmYoZGlmZiwgaW1hZ2UxLCBpbWFnZTIsIGgxLCB3MSwgZmRpZmYpOworICBmY2xvc2UoZmRpZmYpOworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2RyYXdfaGlzdG9ncmFtLmNjIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2RyYXdfaGlzdG9ncmFtLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYTQwNjkKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZHJhd19oaXN0b2dyYW0uY2MKQEAgLTAsMCArMSwyMDAgQEAKKy8qIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgICBBdXRob3I6IHppcDc1M0BnbWFpbC5jb20gKEl2YW4gTmlrdWxpbikKKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworLyogQmFja3dhcmQgcmVmZXJlbmNlIHZpc3VhbGl6YXRpb24gdG9vbC4gQWNjZXB0cyBmaWxlIHdpdGggYmFja3dhcmQgcmVmZXJlbmNlcworICAgYXMgYW4gaW5wdXQgYW5kIHByb2R1Y2VzIFBHTSBpbWFnZSB3aXRoIGhpc3RvZ3JhbSBvZiB0aG9zZSByZWZlcmVuY2VzLiAqLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPiAvKiBtaW4gKi8KKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdHJpbmc+IC8qIG1lbXNldCAqLworI2luY2x1ZGUgPGNtYXRoPiAvKiBsb2csIHJvdW5kICovCisjaW5jbHVkZSA8Y3N0ZGlvPiAvKiBmc2NhbmYsIGZwcmludGYgKi8KKyNpbmNsdWRlIDxjc3RkaW50PgorCisjaW5jbHVkZSA8Z2ZsYWdzL2dmbGFncy5oPgordXNpbmcgZ2ZsYWdzOjpQYXJzZUNvbW1hbmRMaW5lRmxhZ3M7CisKKyNpbmNsdWRlICIuL3JlYWRfZGlzdC5oIgorCitERUZJTkVfaW50MzIoaGVpZ2h0LCAxMDAwLCAiSGVpZ2h0IG9mIHRoZSByZXN1bHRpbmcgaGlzdG9nYW0uIik7CitERUZJTkVfaW50MzIod2lkdGgsIDgwMDAsICJXaWR0aCBvZiB0aGUgcmVzdWx0aW5nIGhpc3RvZ2FtLiIpOworREVGSU5FX2ludDMyKHNpemUsIDFlOCwgIlNpemUgb2YgdGhlIGNvbXByZXNzZWQgZmlsZS4iKTsKK0RFRklORV9pbnQzMihicm90bGlfd2luZG93LCAtMSwgIlNpemUgb2YgYnJvdGxpIHdpbmRvdyBpbiBiaXRzLiIpOworREVGSU5FX3VpbnQ2NChtaW5fZGlzdGFuY2UsIDAsICJNaW5pbXVtIGRpc3RhbmNlLiIpOworREVGSU5FX3VpbnQ2NChtYXhfZGlzdGFuY2UsIDEgPDwgMzAsICJNYXhpbXVtIGRpc3RhbmNlLiIpOworREVGSU5FX2Jvb2wod2l0aF9jb3BpZXMsIGZhbHNlLCAiVHJ1ZSBpZiBpbnB1dCBjb250YWlucyBjb3B5IGxlbmd0aC4iKTsKK0RFRklORV9ib29sKHNpbXBsZSwgZmFsc2UsICJUcnVlIGlmIHVzaW5nIG9ubHkgYmxhY2sgYW5kIHdoaXRlIHBpeGVscy4iKTsKK0RFRklORV9ib29sKGxpbmVhciwgZmFsc2UsICJUcnVlIGlmIHVzaW5nIGxpbmVhciBkaXN0YW5jZSBtYXBwaW5nLiIpOworREVGSU5FX3VpbnQ2NChza2lwLCAwLCAiTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAuIik7CisKK2lubGluZSBkb3VibGUgRGlzdGFuY2VUcmFuc2Zvcm0oZG91YmxlIHgpIHsKKyAgc3RhdGljIGJvb2wgbGluZWFyID0gRkxBR1NfbGluZWFyOworICBpZiAobGluZWFyKSB7CisgICAgcmV0dXJuIHg7CisgIH0gZWxzZSB7CisgICAgLyogVXNpbmcgbG9nXjIgc2NhbGUgYmVjYXVzZSBsb2cgc2NhbGUgcHJvZHVjZXMgYmlnIHdoaXRlIGdhcCBhdCB0aGUgYm90dG9tCisgICAgICAgb2YgaW1hZ2UuICovCisgICAgcmV0dXJuIGxvZyh4KSAqIGxvZyh4KTsKKyAgfQorfQorCisvKiBNYXBwaW5nIHBpeGVsIGRlbnNpdHkgb24gYXJjIGZ1bmN0aW9uIHRvIGluY3JlYXNlIGNvbnRyYXN0LiAqLworaW5saW5lIGRvdWJsZSBEZW5zaXR5VHJhbnNmb3JtKGRvdWJsZSB4KSB7CisgIGRvdWJsZSB6ID0gMjU1IC0geDsKKyAgcmV0dXJuIHNxcnQoMjU1ICogMjU1IC0geiAqIHopOworfQorCitpbmxpbmUgaW50IEdldE1heERpc3RhbmNlKCkgeworICByZXR1cm4gRkxBR1NfbWF4X2Rpc3RhbmNlOworfQorCit2b2lkIEFkanVzdFBvc2l0aW9uKGludCogcG9zKSB7CisgIHN0YXRpYyB1aW50MzJfdCBvZmZzZXQgPSAwOworICBzdGF0aWMgaW50IGxhc3QgPSAwOworICBzdGF0aWMgdWludDMyX3Qgd2luZG93X3NpemUgPSAoMSA8PCBGTEFHU19icm90bGlfd2luZG93KTsKKyAgYXNzZXJ0KCpwb3MgPj0gMCAmJiAqcG9zIDwgd2luZG93X3NpemUpOworICBpZiAoKnBvcyA8IGxhc3QpIHsKKyAgICBvZmZzZXQgKz0gd2luZG93X3NpemU7CisgIH0KKyAgbGFzdCA9ICpwb3M7CisgICpwb3MgKz0gb2Zmc2V0OworfQorCit2b2lkIEJ1aWxkSGlzdG9ncmFtKEZJTEUqIGZpbiwgaW50KiogaGlzdG8pIHsKKyAgaW50IGhlaWdodCA9IEZMQUdTX2hlaWdodDsKKyAgaW50IHdpZHRoID0gRkxBR1Nfd2lkdGg7CisgIGludCBza2lwID0gRkxBR1Nfc2tpcDsKKyAgc2l6ZV90IG1pbl9kaXN0YW5jZSA9IEZMQUdTX21pbl9kaXN0YW5jZTsKKworICBwcmludGYoImhlaWdodCA9ICVkLCB3aWR0aCA9ICVkXG4iLCBoZWlnaHQsIHdpZHRoKTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICBoaXN0b1tpXVtqXSA9IDA7CisgICAgfQorICB9CisKKyAgaW50IG1heF9wb3MgPSBGTEFHU19zaXplIC0gc2tpcDsKKyAgZG91YmxlIG1pbl9kaXN0ID0gbWluX2Rpc3RhbmNlID4gMCA/IERpc3RhbmNlVHJhbnNmb3JtKG1pbl9kaXN0YW5jZSkgOiAwOworICBkb3VibGUgbWF4X2Rpc3QgPSBEaXN0YW5jZVRyYW5zZm9ybShHZXRNYXhEaXN0YW5jZSgpKSAtIG1pbl9kaXN0OworICBpbnQgY29weSwgcG9zLCBkaXN0YW5jZSwgeCwgeTsKKyAgZG91YmxlIGRpc3Q7CisgIHdoaWxlIChSZWFkQmFja3dhcmRSZWZlcmVuY2UoZmluLCAmY29weSwgJnBvcywgJmRpc3RhbmNlKSkgeworICAgIGlmIChwb3MgPT0gLTEpIGNvbnRpbnVlOyAgLy8gSW4gY2FzZSB3aGVuIG9ubHkgaW5zZXJ0IGlzIHByZXNlbnQuCisgICAgaWYgKGRpc3RhbmNlIDwgbWluX2Rpc3RhbmNlIHx8IGRpc3RhbmNlID49IEdldE1heERpc3RhbmNlKCkpIGNvbnRpbnVlOworICAgIGlmIChGTEFHU19icm90bGlfd2luZG93ICE9IC0xKSB7CisgICAgICBBZGp1c3RQb3NpdGlvbigmcG9zKTsKKyAgICB9CisgICAgaWYgKHBvcyA+PSBza2lwICYmIGRpc3RhbmNlIDw9IHBvcykgeworICAgICAgcG9zIC09IHNraXA7CisgICAgICBpZiAocG9zID49IG1heF9wb3MpIGJyZWFrOworICAgICAgZGlzdCA9IERpc3RhbmNlVHJhbnNmb3JtKHN0YXRpY19jYXN0PGRvdWJsZT4oZGlzdGFuY2UpKSAtIG1pbl9kaXN0OworCisgICAgICB4ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChkaXN0IC8gbWF4X2Rpc3QgKiBoZWlnaHQpKSwKKyAgICAgICAgICAgICAgICAgICBoZWlnaHQgLSAxKTsKKyAgICAgIHkgPSAxdWwgKiBwb3MgKiB3aWR0aCAvIG1heF9wb3M7CisgICAgICBpZiAoISh5ID49IDAgJiYgeSA8IHdpZHRoKSkgeworICAgICAgICBwcmludGYoInBvcyA9ICVkLCBtYXhfcG9zID0gJWQsIHkgPSAlZFxuIiwgcG9zLCBtYXhfcG9zLCB5KTsKKyAgICAgICAgYXNzZXJ0KHkgPj0gMCAmJiB5IDwgd2lkdGgpOworICAgICAgfQorCisgICAgICBpZiAoRkxBR1Nfd2l0aF9jb3BpZXMpIHsKKyAgICAgICAgaW50IHJpZ2h0ID0gMXVsICogKHBvcyArIGNvcHkgLSAxKSAqIHdpZHRoIC8gbWF4X3BvczsKKyAgICAgICAgaWYgKHJpZ2h0IDwgMCkgeworICAgICAgICAgIHByaW50ZigicG9zID0gJWQsIGRpc3RhbmNlID0gJWQsIGNvcHkgPSAlZCwgeSA9ICVkLCByaWdodCA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgcG9zLCBkaXN0YW5jZSwgY29weSwgeSwgcmlnaHQpOworICAgICAgICAgIGFzc2VydChyaWdodCA+PSAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeSA9PSByaWdodCkgeworICAgICAgICAgIGhpc3RvW3hdW3ldICs9IGNvcHk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaW50IHBvczIgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoMS4wICogKHkgKyAxKSAqIG1heF9wb3MgLyB3aWR0aCkpOworICAgICAgICAgIGhpc3RvW3hdW3ldICs9IHBvczIgLSBwb3M7CisgICAgICAgICAgZm9yIChpbnQgaSA9IHkgKyAxOyBpIDwgcmlnaHQgJiYgaSA8IHdpZHRoOyArK2kpIHsKKyAgICAgICAgICAgIGhpc3RvW3hdW2ldICs9IG1heF9wb3MgLyB3aWR0aDsgIC8vIFNvbWV0aW1lcyAxIG1vcmUsIGJ1dCB3aG8gY2FyZXMuCisgICAgICAgICAgfQorICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbWF0Y2ggZG9lc24ndCBnbyBiZXlvbmQgdGhlIGltYWdlLgorICAgICAgICAgIGlmIChyaWdodCA8IHdpZHRoKSB7CisgICAgICAgICAgICBwb3MyID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsKDEuMCAqIHJpZ2h0ICogbWF4X3BvcyAvIHdpZHRoKSk7CisgICAgICAgICAgICBoaXN0b1t4XVtyaWdodF0gKz0gcG9zICsgY29weSAtIDEgLSBwb3MyICsgMTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGhpc3RvW3hdW3ldKys7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZvaWQgQ29udmVydFRvUGl4ZWxzKGludCoqIGhpc3RvLCB1aW50OF90KiogcGl4ZWwpIHsKKyAgaW50IGhlaWdodCA9IEZMQUdTX2hlaWdodDsKKyAgaW50IHdpZHRoID0gRkxBR1Nfd2lkdGg7CisKKyAgaW50IG1heHMgPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICBpZiAobWF4cyA8IGhpc3RvW2ldW2pdKSBtYXhzID0gaGlzdG9baV1bal07CisgICAgfQorICB9CisKKyAgYm9vbCBzaW1wbGUgPSBGTEFHU19zaW1wbGU7CisgIGRvdWJsZSBtYXhfaGlzdG8gPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1heHMpOworICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICBpZiAoc2ltcGxlKSB7CisgICAgICAgIHBpeGVsW2ldW2pdID0gaGlzdG9baV1bal0gPiAwID8gMCA6IDI1NTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBpeGVsW2ldW2pdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oCisgICAgICAgICAgICAyNTUgLSBEZW5zaXR5VHJhbnNmb3JtKGhpc3RvW2ldW2pdIC8gbWF4X2hpc3RvICogMjU1KSk7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZvaWQgRHJhd1BpeGVscyh1aW50OF90KiogcGl4ZWwsIEZJTEUqIGZvdXQpIHsKKyAgaW50IGhlaWdodCA9IEZMQUdTX2hlaWdodDsKKyAgaW50IHdpZHRoID0gRkxBR1Nfd2lkdGg7CisKKyAgZnByaW50Zihmb3V0LCAiUDVcbiVkICVkXG4yNTVcbiIsIHdpZHRoLCBoZWlnaHQpOworICBmb3IgKGludCBpID0gaGVpZ2h0IC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICBmd3JpdGUocGl4ZWxbaV0sIDEsIHdpZHRoLCBmb3V0KTsKKyAgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIFBhcnNlQ29tbWFuZExpbmVGbGFncygmYXJnYywgJmFyZ3YsIHRydWUpOworICBpZiAoYXJnYyAhPSAzKSB7CisgICAgcHJpbnRmKCJ1c2FnZTogZHJhd19oaXN0b2dyYW0uY2MgZGF0YSBvdXRwdXRfZmlsZVxuIik7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBpbnQgaGVpZ2h0ID0gRkxBR1NfaGVpZ2h0OworICBpbnQgd2lkdGggPSBGTEFHU193aWR0aDsKKworICBGSUxFKiBmaW4gPSBmb3Blbihhcmd2WzFdLCAiciIpOworICBGSUxFKiBmb3V0ID0gZm9wZW4oYXJndlsyXSwgIndiIik7CisKKyAgaWYgKGZpbiAhPSBudWxscHRyICYmIGZvdXQgIT0gbnVsbHB0cikgeworICAgIHVpbnQ4X3QqKiBwaXhlbCA9IG5ldyB1aW50OF90KltoZWlnaHRdOworICAgIGludCoqIGhpc3RvID0gbmV3IGludCpbaGVpZ2h0XTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CisgICAgICBwaXhlbFtpXSA9IG5ldyB1aW50OF90W3dpZHRoXTsKKyAgICAgIGhpc3RvW2ldID0gbmV3IGludFt3aWR0aF07CisgICAgfQorCisgICAgQnVpbGRIaXN0b2dyYW0oZmluLCBoaXN0byk7CisKKyAgICBDb252ZXJ0VG9QaXhlbHMoaGlzdG8sIHBpeGVsKTsKKworICAgIERyYXdQaXhlbHMocGl4ZWwsIGZvdXQpOworICB9CisKKyAgaWYgKGZpbikgZmNsb3NlKGZpbik7CisgIGlmIChmb3V0KSBmY2xvc2UoZm91dCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZHVyY2hzY2hsYWcuY2MgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZHVyY2hzY2hsYWcuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiZjQxYgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9kdXJjaHNjaGxhZy5jYwpAQCAtMCwwICsxLDcyNiBAQAorI2luY2x1ZGUgIi4vZHVyY2hzY2hsYWcuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxleGNlcHRpb24+ICAvKiB0ZXJtaW5hdGUgKi8KKworI2luY2x1ZGUgImRpdnN1ZnNvcnQuaCIKKworLyogUG9pbnRlciB0byBwb3NpdGlvbiBpbiB0ZXh0LiAqLwordHlwZWRlZiBEdXJjaHNjaGxhZ1RleHRJZHggVGV4dElkeDsKKworLyogKFN1bSBvZikgdmFsdWUocykgb2Ygc2xpY2UocykuICovCit0eXBlZGVmIHVpbnQzMl90IFNjb3JlOworCit0eXBlZGVmIHN0cnVjdCBIYXNoU2xvdCB7CisgIFRleHRJZHggbmV4dDsKKyAgVGV4dElkeCBvZmZzZXQ7Cit9IEhhc2hTbG90OworCit0eXBlZGVmIHN0cnVjdCBNZXRhU2xvdCB7CisgIFRleHRJZHggbWFyazsKKyAgU2NvcmUgc2NvcmU7Cit9IE1ldGFTbG90OworCit0eXBlZGVmIHN0cnVjdCBSYW5nZSB7CisgIFRleHRJZHggc3RhcnQ7CisgIFRleHRJZHggZW5kOworfSBSYW5nZTsKKwordHlwZWRlZiBzdHJ1Y3QgQ2FuZGlkYXRlIHsKKyAgU2NvcmUgc2NvcmU7CisgIFRleHRJZHggcG9zaXRpb247Cit9IENhbmRpZGF0ZTsKKworc3RydWN0IGdyZWF0ZXJTY29yZSB7CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDYW5kaWRhdGUmIGEsIGNvbnN0IENhbmRpZGF0ZSYgYikgY29uc3QgeworICAgIHJldHVybiAoYS5zY29yZSA+IGIuc2NvcmUpIHx8CisgICAgICAgICgoYS5zY29yZSA9PSBiLnNjb3JlKSAmJiAoYS5wb3NpdGlvbiA8IGIucG9zaXRpb24pKTsKKyAgfQorfTsKKworc3RydWN0IGxlc3NTY29yZSB7CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDYW5kaWRhdGUmIGEsIGNvbnN0IENhbmRpZGF0ZSYgYikgY29uc3QgeworICAgIHJldHVybiAoYS5zY29yZSA8IGIuc2NvcmUpIHx8CisgICAgICAgICgoYS5zY29yZSA9PSBiLnNjb3JlKSAmJiAoYS5wb3NpdGlvbiA+IGIucG9zaXRpb24pKTsKKyAgfQorfTsKKworI2RlZmluZSBDQU5ESURBVEVfQlVORExFX1NJWkUgKDEgPDwgMTgpCisKK3N0YXRpYyB2b2lkIGZhdGFsKGNvbnN0IGNoYXIqIGVycm9yKSB7CisgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGVycm9yKTsKKyAgc3RkOjp0ZXJtaW5hdGUoKTsKK30KKworc3RhdGljIFRleHRJZHggY2FsY3VsYXRlRGljdGlvbmFyeVNpemUoY29uc3Qgc3RkOjp2ZWN0b3I8UmFuZ2U+JiByYW5nZXMpIHsKKyAgVGV4dElkeCByZXN1bHQgPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJhbmdlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJhbmdlJiByID0gcmFuZ2VzW2ldOworICAgIHJlc3VsdCArPSByLmVuZCAtIHIuc3RhcnQ7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIGNyZWF0ZURpY3Rpb25hcnkoCisgICAgY29uc3QgdWludDhfdCogZGF0YSwgY29uc3Qgc3RkOjp2ZWN0b3I8UmFuZ2U+JiByYW5nZXMsIHNpemVfdCBsaW1pdCkgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIG91dHB1dC5yZXNlcnZlKGNhbGN1bGF0ZURpY3Rpb25hcnlTaXplKHJhbmdlcykpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJhbmdlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJhbmdlJiByID0gcmFuZ2VzW2ldOworICAgIG91dHB1dC5pbnNlcnQob3V0cHV0LmVuZCgpLCAmZGF0YVtyLnN0YXJ0XSwgJmRhdGFbci5lbmRdKTsKKyAgfQorICBpZiAob3V0cHV0LnNpemUoKSA+IGxpbWl0KSB7CisgICAgb3V0cHV0LnJlc2l6ZShsaW1pdCk7CisgIH0KKyAgcmV0dXJuIG91dHB1dDsKK30KKworLyogcHJlY29uZGl0aW9uOiBzcGFuID4gMAorICAgcHJlY29uZGl0aW9uOiBlbmQgKyBzcGFuID09IGxlbihzaG9ydGN1dCkgKi8KK3N0YXRpYyBTY29yZSBidWlsZENhbmRpZGF0ZXNMaXN0KHN0ZDo6dmVjdG9yPENhbmRpZGF0ZT4qIGNhbmRpZGF0ZXMsCisgICAgc3RkOjp2ZWN0b3I8TWV0YVNsb3Q+KiBtYXAsIFRleHRJZHggc3BhbiwgY29uc3QgVGV4dElkeCogc2hvcnRjdXQsCisgICAgVGV4dElkeCBlbmQpIHsKKyAgY2FuZGlkYXRlcy0+cmVzaXplKDApOworCisgIHNpemVfdCBuID0gbWFwLT5zaXplKCk7CisgIE1ldGFTbG90KiBzbG90cyA9IG1hcC0+ZGF0YSgpOworICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG47ICsraikgeworICAgIHNsb3RzW2pdLm1hcmsgPSAwOworICB9CisKKyAgU2NvcmUgc2NvcmUgPSAwOworICAvKiBDb25zaWRlciB0aGUgd2hvbGUgc3BhbiwgZXhjZXB0IG9uZSBsYXN0IGl0ZW0uIFRoZSBmb2xsb3dpbmcgbG9vcCB3aWxsCisgICAgIGFkZCB0aGUgbGFzdCBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlICJjaGFpbiIsIGV2YWx1YXRlIGl0LCBhbmQgY3V0IG9uZQorICAgICAibGluayIgZm9ybSB0aGUgYmVnaW5uaW5nLiAqLworICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHNwYW4gLSAxOyArK2opIHsKKyAgICBNZXRhU2xvdCYgaXRlbSA9IHNsb3RzW3Nob3J0Y3V0W2pdXTsKKyAgICBpZiAoaXRlbS5tYXJrID09IDApIHsKKyAgICAgIHNjb3JlICs9IGl0ZW0uc2NvcmU7CisgICAgfQorICAgIGl0ZW0ubWFyaysrOworICB9CisKKyAgVGV4dElkeCBpID0gMDsKKyAgVGV4dElkeCBsaW1pdCA9IHN0ZDo6bWluPFRleHRJZHg+KGVuZCwgQ0FORElEQVRFX0JVTkRMRV9TSVpFKTsKKyAgU2NvcmUgbWF4U2NvcmUgPSAwOworICBmb3IgKDsgaSA8IGxpbWl0OyArK2kpIHsKKyAgICBUZXh0SWR4IHNsaWNlID0gc2hvcnRjdXRbaSArIHNwYW4gLSAxXTsKKyAgICBNZXRhU2xvdCYgcGljayA9IHNsb3RzW3NsaWNlXTsKKyAgICBpZiAocGljay5tYXJrID09IDApIHsKKyAgICAgIHNjb3JlICs9IHBpY2suc2NvcmU7CisgICAgfQorICAgIHBpY2subWFyaysrOworCisgICAgaWYgKHNjb3JlID4gbWF4U2NvcmUpIHsKKyAgICAgIG1heFNjb3JlID0gc2NvcmU7CisgICAgfQorICAgIGNhbmRpZGF0ZXMtPnB1c2hfYmFjayh7c2NvcmUsIGl9KTsKKworICAgIE1ldGFTbG90JiBkcm9wID0gc2xvdHNbc2hvcnRjdXRbaV1dOworICAgIGRyb3AubWFyay0tOworICAgIGlmIChkcm9wLm1hcmsgPT0gMCkgeworICAgICAgc2NvcmUgLT0gZHJvcC5zY29yZTsKKyAgICB9CisgIH0KKworICBzdGQ6Om1ha2VfaGVhcChjYW5kaWRhdGVzLT5iZWdpbigpLCBjYW5kaWRhdGVzLT5lbmQoKSwgZ3JlYXRlclNjb3JlKCkpOworICBTY29yZSBtaW5TY29yZSA9IGNhbmRpZGF0ZXMtPmF0KDApLnNjb3JlOworICBmb3IgKDsgaSA8IGVuZDsgKytpKSB7CisgICAgVGV4dElkeCBzbGljZSA9IHNob3J0Y3V0W2kgKyBzcGFuIC0gMV07CisgICAgTWV0YVNsb3QmIHBpY2sgPSBzbG90c1tzbGljZV07CisgICAgaWYgKHBpY2subWFyayA9PSAwKSB7CisgICAgICBzY29yZSArPSBwaWNrLnNjb3JlOworICAgIH0KKyAgICBwaWNrLm1hcmsrKzsKKworICAgIGlmIChzY29yZSA+IG1heFNjb3JlKSB7CisgICAgICBtYXhTY29yZSA9IHNjb3JlOworICAgIH0KKyAgICBpZiAoc2NvcmUgPj0gbWluU2NvcmUpIHsKKyAgICAgIGNhbmRpZGF0ZXMtPnB1c2hfYmFjayh7c2NvcmUsIGl9KTsKKyAgICAgIHN0ZDo6cHVzaF9oZWFwKGNhbmRpZGF0ZXMtPmJlZ2luKCksIGNhbmRpZGF0ZXMtPmVuZCgpLCBncmVhdGVyU2NvcmUoKSk7CisgICAgICBpZiAoY2FuZGlkYXRlcy0+c2l6ZSgpID4gQ0FORElEQVRFX0JVTkRMRV9TSVpFICYmIG1heFNjb3JlICE9IG1pblNjb3JlKSB7CisgICAgICAgIHdoaWxlIChjYW5kaWRhdGVzLT5hdCgwKS5zY29yZSA9PSBtaW5TY29yZSkgeworICAgICAgICAgIHN0ZDo6cG9wX2hlYXAoY2FuZGlkYXRlcy0+YmVnaW4oKSwgY2FuZGlkYXRlcy0+ZW5kKCksIGdyZWF0ZXJTY29yZSgpKTsKKyAgICAgICAgICBjYW5kaWRhdGVzLT5wb3BfYmFjaygpOworICAgICAgICB9CisgICAgICAgIG1pblNjb3JlID0gY2FuZGlkYXRlcy0+YXQoMCkuc2NvcmU7CisgICAgICB9CisgICAgfQorCisgICAgTWV0YVNsb3QmIGRyb3AgPSBzbG90c1tzaG9ydGN1dFtpXV07CisgICAgZHJvcC5tYXJrLS07CisgICAgaWYgKGRyb3AubWFyayA9PSAwKSB7CisgICAgICBzY29yZSAtPSBkcm9wLnNjb3JlOworICAgIH0KKyAgfQorCisgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbjsgKytqKSB7CisgICAgc2xvdHNbal0ubWFyayA9IDA7CisgIH0KKworICBzdGQ6Om1ha2VfaGVhcChjYW5kaWRhdGVzLT5iZWdpbigpLCBjYW5kaWRhdGVzLT5lbmQoKSwgbGVzc1Njb3JlKCkpOworICByZXR1cm4gbWluU2NvcmU7Cit9CisKKy8qIHByZWNvbmRpdGlvbjogc3BhbiA+IDAKKyAgIHByZWNvbmRpdGlvbjogZW5kICsgc3BhbiA9PSBsZW4oc2hvcnRjdXQpICovCitzdGF0aWMgU2NvcmUgcmVidWlsZENhbmRpZGF0ZXNMaXN0KHN0ZDo6dmVjdG9yPFRleHRJZHg+KiBjYW5kaWRhdGVzLAorICAgIHN0ZDo6dmVjdG9yPE1ldGFTbG90PiogbWFwLCBUZXh0SWR4IHNwYW4sIGNvbnN0IFRleHRJZHgqIHNob3J0Y3V0LAorICAgIFRleHRJZHggZW5kLCBUZXh0SWR4KiBuZXh0KSB7CisgIHNpemVfdCBuID0gY2FuZGlkYXRlcy0+c2l6ZSgpOworICBUZXh0SWR4KiBkYXRhID0gY2FuZGlkYXRlcy0+ZGF0YSgpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgIGRhdGFbaV0gPSAwOworICB9CisKKyAgbiA9IG1hcC0+c2l6ZSgpOworICBNZXRhU2xvdCogc2xvdHMgPSBtYXAtPmRhdGEoKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICBzbG90c1tpXS5tYXJrID0gMDsKKyAgfQorCisgIFNjb3JlIHNjb3JlID0gMDsKKyAgLyogQ29uc2lkZXIgdGhlIHdob2xlIHNwYW4sIGV4Y2VwdCBvbmUgbGFzdCBpdGVtLiBUaGUgZm9sbG93aW5nIGxvb3Agd2lsbAorICAgICBhZGQgdGhlIGxhc3QgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSAiY2hhaW4iLCBldmFsdWF0ZSBpdCwgYW5kIGN1dCBvbmUKKyAgICAgImxpbmsiIGZvcm0gdGhlIGJlZ2lubmluZy4gKi8KKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgc3BhbiAtIDE7ICsraSkgeworICAgIE1ldGFTbG90JiBpdGVtID0gc2xvdHNbc2hvcnRjdXRbaV1dOworICAgIGlmIChpdGVtLm1hcmsgPT0gMCkgeworICAgICAgc2NvcmUgKz0gaXRlbS5zY29yZTsKKyAgICB9CisgICAgaXRlbS5tYXJrKys7CisgIH0KKworICBTY29yZSBtYXhTY29yZSA9IDA7CisgIGZvciAoVGV4dElkeCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgTWV0YVNsb3QmIHBpY2sgPSBzbG90c1tzaG9ydGN1dFtpICsgc3BhbiAtIDFdXTsKKyAgICBpZiAocGljay5tYXJrID09IDApIHsKKyAgICAgIHNjb3JlICs9IHBpY2suc2NvcmU7CisgICAgfQorICAgIHBpY2subWFyaysrOworCisgICAgaWYgKGNhbmRpZGF0ZXMtPnNpemUoKSA8PSBzY29yZSkgeworICAgICAgY2FuZGlkYXRlcy0+cmVzaXplKHNjb3JlICsgMSk7CisgICAgfQorICAgIGlmIChzY29yZSA+IG1heFNjb3JlKSB7CisgICAgICBtYXhTY29yZSA9IHNjb3JlOworICAgIH0KKyAgICBuZXh0W2ldID0gY2FuZGlkYXRlcy0+YXQoc2NvcmUpOworICAgIGNhbmRpZGF0ZXMtPmF0KHNjb3JlKSA9IGk7CisKKyAgICBNZXRhU2xvdCYgZHJvcCA9IHNsb3RzW3Nob3J0Y3V0W2ldXTsKKyAgICBkcm9wLm1hcmstLTsKKyAgICBpZiAoZHJvcC5tYXJrID09IDApIHsKKyAgICAgIHNjb3JlIC09IGRyb3Auc2NvcmU7CisgICAgfQorICB9CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICBzbG90c1tpXS5tYXJrID0gMDsKKyAgfQorCisgIGNhbmRpZGF0ZXMtPnJlc2l6ZShtYXhTY29yZSArIDEpOworICByZXR1cm4gbWF4U2NvcmU7Cit9CisKK3N0YXRpYyB2b2lkIGFkZFJhbmdlKHN0ZDo6dmVjdG9yPFJhbmdlPiogcmFuZ2VzLCBUZXh0SWR4IHN0YXJ0LCBUZXh0SWR4IGVuZCkgeworICBmb3IgKGF1dG8gaXQgPSByYW5nZXMtPmJlZ2luKCk7IGl0ICE9IHJhbmdlcy0+ZW5kKCk7KSB7CisgICAgaWYgKGVuZCA8IGl0LT5zdGFydCkgeworICAgICAgcmFuZ2VzLT5pbnNlcnQoaXQsIHtzdGFydCwgZW5kfSk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChpdC0+ZW5kIDwgc3RhcnQpIHsKKyAgICAgIGl0Kys7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLy8gQ29tYmluZSB3aXRoIGV4aXN0aW5nLgorICAgIHN0YXJ0ID0gc3RkOjptaW4oc3RhcnQsIGl0LT5zdGFydCk7CisgICAgZW5kID0gc3RkOjptYXgoZW5kLCBpdC0+ZW5kKTsKKyAgICAvLyBSZW1vdmUgY29uc3VtZWQgdmVjdG9yIGFuZCBjb250aW51ZS4KKyAgICBpdCA9IHJhbmdlcy0+ZXJhc2UoaXQpOworICB9CisgIHJhbmdlcy0+cHVzaF9iYWNrKHtzdGFydCwgZW5kfSk7Cit9CisKK3N0ZDo6c3RyaW5nIGR1cmNoc2NobGFnX2dlbmVyYXRlKAorICAgIHNpemVfdCBkaWN0aW9uYXJ5X3NpemVfbGltaXQsIHNpemVfdCBzbGljZV9sZW4sIHNpemVfdCBibG9ja19sZW4sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgc2FtcGxlX3NpemVzLCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSkgeworICBEdXJjaHNjaGxhZ0NvbnRleHQgY3R4ID0gZHVyY2hzY2hsYWdfcHJlcGFyZSgKKyAgICAgIHNsaWNlX2xlbiwgc2FtcGxlX3NpemVzLCBzYW1wbGVfZGF0YSk7CisgIHJldHVybiBkdXJjaHNjaGxhZ19nZW5lcmF0ZShEVVJDSFNDSExBR19DT0xMQUJPUkFUSVZFLAorICAgICAgZGljdGlvbmFyeV9zaXplX2xpbWl0LCBibG9ja19sZW4sIGN0eCwgc2FtcGxlX2RhdGEpOworfQorCitEdXJjaHNjaGxhZ0NvbnRleHQgZHVyY2hzY2hsYWdfcHJlcGFyZShzaXplX3Qgc2xpY2VfbGVuLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHNhbXBsZV9zaXplcywgY29uc3QgdWludDhfdCogc2FtcGxlX2RhdGEpIHsKKyAgLyogUGFyYW1ldGVycyBhbGlhc2luZyAqLworICBUZXh0SWR4IHNsaWNlTGVuID0gc3RhdGljX2Nhc3Q8VGV4dElkeD4oc2xpY2VfbGVuKTsKKyAgaWYgKHNsaWNlTGVuICE9IHNsaWNlX2xlbikgZmF0YWwoInNsaWNlX2xlbiBpcyB0b28gbGFyZ2UiKTsKKyAgaWYgKHNsaWNlTGVuIDwgMSkgZmF0YWwoInNsaWNlX2xlbiBpcyB0b28gc21hbGwiKTsKKyAgY29uc3QgdWludDhfdCogZGF0YSA9IHNhbXBsZV9kYXRhOworCisgIFRleHRJZHggdG90YWwgPSAwOworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBvZmZzZXRzOworICBvZmZzZXRzLnJlc2VydmUoc2FtcGxlX3NpemVzLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FtcGxlX3NpemVzLnNpemUoKTsgKytpKSB7CisgICAgVGV4dElkeCBkZWx0YSA9IHN0YXRpY19jYXN0PFRleHRJZHg+KHNhbXBsZV9zaXplc1tpXSk7CisgICAgaWYgKGRlbHRhICE9IHNhbXBsZV9zaXplc1tpXSkgZmF0YWwoInNhbXBsZSBpcyB0b28gbGFyZ2UiKTsKKyAgICBpZiAoZGVsdGEgPT0gMCkgZmF0YWwoIjAtbGVuZ3RoIHNhbXBsZXMgYXJlIHByb2hpYml0ZWQiKTsKKyAgICBUZXh0SWR4IG5leHRfdG90YWwgPSB0b3RhbCArIGRlbHRhOworICAgIGlmIChuZXh0X3RvdGFsIDw9IHRvdGFsKSBmYXRhbCgiY29ycHVzIGlzIHRvbyBsYXJnZSIpOworICAgIHRvdGFsID0gbmV4dF90b3RhbDsKKyAgICBvZmZzZXRzLnB1c2hfYmFjayh0b3RhbCk7CisgIH0KKworICBpZiAodG90YWwgPCBzbGljZUxlbikgZmF0YWwoInNsaWNlX2xlbiBpcyBsYXJnZXIgdGhhbiBjb3JwdXMgc2l6ZSIpOworICBUZXh0SWR4IGVuZCA9IHRvdGFsIC0gc3RhdGljX2Nhc3Q8VGV4dElkeD4oc2xpY2VMZW4pICsgMTsKKyAgVGV4dElkeCBoYXNoTGVuID0gMTE7CisgIHdoaWxlIChoYXNoTGVuIDwgMjkgJiYgKCgxdSA8PCBoYXNoTGVuKSA8IGVuZCkpIHsKKyAgICBoYXNoTGVuICs9IDM7CisgIH0KKyAgaGFzaExlbiAtPSAzOworICBUZXh0SWR4IGhhc2hNYXNrID0gKDF1IDw8IGhhc2hMZW4pIC0gMXU7CisgIHN0ZDo6dmVjdG9yPFRleHRJZHg+IGhhc2hIZWFkKDEgPDwgaGFzaExlbik7CisgIFRleHRJZHggaGFzaCA9IDA7CisgIFRleHRJZHggbFNoaWZ0ID0gMzsKKyAgVGV4dElkeCByU2hpZnQgPSBoYXNoTGVuIC0gbFNoaWZ0OworICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCBzbGljZUxlbiAtIDE7ICsraSkgeworICAgIFRleHRJZHggdiA9IGRhdGFbaV07CisgICAgaGFzaCA9ICgoKGhhc2ggPDwgbFNoaWZ0KSB8IChoYXNoID4+IHJTaGlmdCkpICYgaGFzaE1hc2spIF4gdjsKKyAgfQorICBUZXh0SWR4IGxTaGlmdFggPSAobFNoaWZ0ICogKHNsaWNlTGVuIC0gMSkpICUgaGFzaExlbjsKKyAgVGV4dElkeCByU2hpZnRYID0gaGFzaExlbiAtIGxTaGlmdFg7CisKKyAgc3RkOjp2ZWN0b3I8SGFzaFNsb3Q+IG1hcDsKKyAgbWFwLnB1c2hfYmFjayh7MCwgMH0pOworICBUZXh0SWR4IGhhc2hTbG90ID0gMTsKKyAgc3RkOjp2ZWN0b3I8VGV4dElkeD4gc2xpY2VNYXA7CisgIHNsaWNlTWFwLnJlc2VydmUoZW5kKTsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICBUZXh0SWR4IHYgPSBkYXRhW2kgKyBzbGljZUxlbiAtIDFdOworICAgIFRleHRJZHggYnVja2V0ID0gKCgoaGFzaCA8PCBsU2hpZnQpIHwgKGhhc2ggPj4gclNoaWZ0KSkgJiBoYXNoTWFzaykgXiB2OworICAgIHYgPSBkYXRhW2ldOworICAgIGhhc2ggPSBidWNrZXQgXiAoKCh2IDw8IGxTaGlmdFgpIHwgKHYgPj4gclNoaWZ0WCkpICYgaGFzaE1hc2spOworICAgIFRleHRJZHggc2xvdCA9IGhhc2hIZWFkW2J1Y2tldF07CisgICAgd2hpbGUgKHNsb3QgIT0gMCkgeworICAgICAgSGFzaFNsb3QmIGl0ZW0gPSBtYXBbc2xvdF07CisgICAgICBUZXh0SWR4IHN0YXJ0ID0gaXRlbS5vZmZzZXQ7CisgICAgICBib29sIG1pc3MgPSBmYWxzZTsKKyAgICAgIGZvciAoVGV4dElkeCBqID0gMDsgaiA8IHNsaWNlTGVuOyArK2opIHsKKyAgICAgICAgaWYgKGRhdGFbaSArIGpdICE9IGRhdGFbc3RhcnQgKyBqXSkgeworICAgICAgICAgIG1pc3MgPSB0cnVlOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoIW1pc3MpIHsKKyAgICAgICAgc2xpY2VNYXAucHVzaF9iYWNrKHNsb3QpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHNsb3QgPSBpdGVtLm5leHQ7CisgICAgfQorICAgIGlmIChzbG90ID09IDApIHsKKyAgICAgIG1hcC5wdXNoX2JhY2soe2hhc2hIZWFkW2J1Y2tldF0sIGl9KTsKKyAgICAgIGhhc2hIZWFkW2J1Y2tldF0gPSBoYXNoU2xvdDsKKyAgICAgIHNsaWNlTWFwLnB1c2hfYmFjayhoYXNoU2xvdCk7CisgICAgICBoYXNoU2xvdCsrOworICAgIH0KKyAgfQorCisgIHJldHVybiB7dG90YWwsIHNsaWNlTGVuLCBzdGF0aWNfY2FzdDxUZXh0SWR4PihtYXAuc2l6ZSgpKSwKKyAgICAgIHN0ZDo6bW92ZShvZmZzZXRzKSwgc3RkOjptb3ZlKHNsaWNlTWFwKX07Cit9CisKK0R1cmNoc2NobGFnQ29udGV4dCBkdXJjaHNjaGxhZ19wcmVwYXJlKHNpemVfdCBzbGljZV9sZW4sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgc2FtcGxlX3NpemVzLCBjb25zdCBEdXJjaHNjaGxhZ0luZGV4JiBpbmRleCkgeworICAvKiBQYXJhbWV0ZXJzIGFsaWFzaW5nICovCisgIFRleHRJZHggc2xpY2VMZW4gPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihzbGljZV9sZW4pOworICBpZiAoc2xpY2VMZW4gIT0gc2xpY2VfbGVuKSBmYXRhbCgic2xpY2VfbGVuIGlzIHRvbyBsYXJnZSIpOworICBpZiAoc2xpY2VMZW4gPCAxKSBmYXRhbCgic2xpY2VfbGVuIGlzIHRvbyBzbWFsbCIpOworICBjb25zdCBUZXh0SWR4KiBsY3AgPSBpbmRleC5sY3AuZGF0YSgpOworICBjb25zdCBUZXh0SWR4KiBzYSA9IGluZGV4LnNhLmRhdGEoKTsKKworICBUZXh0SWR4IHRvdGFsID0gMDsKKyAgc3RkOjp2ZWN0b3I8VGV4dElkeD4gb2Zmc2V0czsKKyAgb2Zmc2V0cy5yZXNlcnZlKHNhbXBsZV9zaXplcy5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbXBsZV9zaXplcy5zaXplKCk7ICsraSkgeworICAgIFRleHRJZHggZGVsdGEgPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihzYW1wbGVfc2l6ZXNbaV0pOworICAgIGlmIChkZWx0YSAhPSBzYW1wbGVfc2l6ZXNbaV0pIGZhdGFsKCJzYW1wbGUgaXMgdG9vIGxhcmdlIik7CisgICAgaWYgKGRlbHRhID09IDApIGZhdGFsKCIwLWxlbmd0aCBzYW1wbGVzIGFyZSBwcm9oaWJpdGVkIik7CisgICAgVGV4dElkeCBuZXh0X3RvdGFsID0gdG90YWwgKyBkZWx0YTsKKyAgICBpZiAobmV4dF90b3RhbCA8PSB0b3RhbCkgZmF0YWwoImNvcnB1cyBpcyB0b28gbGFyZ2UiKTsKKyAgICB0b3RhbCA9IG5leHRfdG90YWw7CisgICAgb2Zmc2V0cy5wdXNoX2JhY2sodG90YWwpOworICB9CisKKyAgaWYgKHRvdGFsIDwgc2xpY2VMZW4pIGZhdGFsKCJzbGljZV9sZW4gaXMgbGFyZ2VyIHRoYW4gY29ycHVzIHNpemUiKTsKKyAgVGV4dElkeCBjb3VudGVyID0gMTsKKyAgVGV4dElkeCBlbmQgPSB0b3RhbCAtIHNsaWNlTGVuICsgMTsKKyAgc3RkOjp2ZWN0b3I8VGV4dElkeD4gc2xpY2VNYXAodG90YWwpOworICBUZXh0SWR4IGxhc3QgPSAwOworICBUZXh0SWR4IGN1cnJlbnQgPSAxOworICB3aGlsZSAoY3VycmVudCA8PSB0b3RhbCkgeworICAgIGlmIChsY3BbY3VycmVudCAtIDFdIDwgc2xpY2VMZW4pIHsKKyAgICAgIGZvciAoVGV4dElkeCBpID0gbGFzdDsgaSA8IGN1cnJlbnQ7ICsraSkgeworICAgICAgICBzbGljZU1hcFtzYVtpXV0gPSBjb3VudGVyOworICAgICAgfQorICAgICAgY291bnRlcisrOworICAgICAgbGFzdCA9IGN1cnJlbnQ7CisgICAgfQorICAgIGN1cnJlbnQrKzsKKyAgfQorICBzbGljZU1hcC5yZXNpemUoZW5kKTsKKworICAvLyBSZW9yZGVyIGl0ZW1zIGZvciB0aGUgYmV0dGVyIGxvY2FsaXR5LgorICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiByZW9yZGVyKGNvdW50ZXIpOworICBjb3VudGVyID0gMTsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICBpZiAocmVvcmRlcltzbGljZU1hcFtpXV0gPT0gMCkgeworICAgICAgcmVvcmRlcltzbGljZU1hcFtpXV0gPSBjb3VudGVyKys7CisgICAgfQorICB9CisgIGZvciAoVGV4dElkeCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgc2xpY2VNYXBbaV0gPSByZW9yZGVyW3NsaWNlTWFwW2ldXTsKKyAgfQorCisgIHJldHVybiB7dG90YWwsIHNsaWNlTGVuLCBjb3VudGVyLCBzdGQ6Om1vdmUob2Zmc2V0cyksIHN0ZDo6bW92ZShzbGljZU1hcCl9OworfQorCitEdXJjaHNjaGxhZ0luZGV4IGR1cmNoc2NobGFnX2luZGV4KGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7CisgIFRleHRJZHggdG90YWwgPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihkYXRhLnNpemUoKSk7CisgIGlmICh0b3RhbCAhPSBkYXRhLnNpemUoKSkgZmF0YWwoImNvcnB1cyBpcyB0b28gbGFyZ2UiKTsKKyAgc2FpZHhfdCBzYVRvdGFsID0gc3RhdGljX2Nhc3Q8c2FpZHhfdD4odG90YWwpOworICBpZiAoc2FUb3RhbCA8IDApIGZhdGFsKCJjb3JwdXMgaXMgdG9vIGxhcmdlIik7CisgIGlmIChzdGF0aWNfY2FzdDxUZXh0SWR4PihzYVRvdGFsKSAhPSB0b3RhbCkgZmF0YWwoImNvcnB1cyBpcyB0b28gbGFyZ2UiKTsKKyAgc3RkOjp2ZWN0b3I8VGV4dElkeD4gc2EodG90YWwpOworICAvKiBIb3BlZnVsbHksIG5vbi1uZWdhdGl2ZSBpbnQzMl90IHZhbHVlcyBtYXRjaCBUZXh0SWR4IG9uZXMuICovCisgIGlmIChzaXplb2YoVGV4dElkeCkgIT0gc2l6ZW9mKGludDMyX3QpKSBmYXRhbCgidHlwZSBsZW5ndGggbWlzbWF0Y2giKTsKKyAgaW50MzJfdCogc2FEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oc2EuZGF0YSgpKTsKKyAgZGl2c3Vmc29ydChkYXRhLmRhdGEoKSwgc2FEYXRhLCBzYVRvdGFsKTsKKworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBpc2EodG90YWwpOworICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCB0b3RhbDsgKytpKSBpc2Fbc2FbaV1dID0gaTsKKworICAvLyBUT0RPOiBib3Jyb3dlZCAtPiB1bmtub3duIGVmZmljaWVuY3kuCisgIHN0ZDo6dmVjdG9yPFRleHRJZHg+IGxjcCh0b3RhbCk7CisgIFRleHRJZHggayA9IDA7CisgIGxjcFt0b3RhbCAtIDFdID0gMDsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgdG90YWw7ICsraSkgeworICAgIFRleHRJZHggY3VycmVudCA9IGlzYVtpXTsKKyAgICBpZiAoY3VycmVudCA9PSB0b3RhbCAtIDEpIHsKKyAgICAgIGsgPSAwOworICAgICAgY29udGludWU7CisgICAgfQorICAgIFRleHRJZHggaiA9IHNhW2N1cnJlbnQgKyAxXTsgIC8vIFN1ZmZpeCB3aGljaCBmb2xsb3cgaS10aCBzdWZmaXguCisgICAgd2hpbGUgKChpICsgayA8IHRvdGFsKSAmJiAoaiArIGsgPCB0b3RhbCkgJiYgKGRhdGFbaSArIGtdID09IGRhdGFbaiArIGtdKSkgeworICAgICAgKytrOworICAgIH0KKyAgICBsY3BbY3VycmVudF0gPSBrOworICAgIGlmIChrID4gMCkgLS1rOworICB9CisKKyAgcmV0dXJuIHtzdGQ6Om1vdmUobGNwKSwgc3RkOjptb3ZlKHNhKX07Cit9CisKK3N0YXRpYyB2b2lkIFNjb3JlU2xpY2VzKGNvbnN0IHN0ZDo6dmVjdG9yPFRleHRJZHg+JiBvZmZzZXRzLAorICAgIHN0ZDo6dmVjdG9yPE1ldGFTbG90PiYgbWFwLCBjb25zdCBUZXh0SWR4KiBzaG9ydGN1dCwgVGV4dElkeCBlbmQpIHsKKyAgVGV4dElkeCBwaWVjZSA9IDA7CisgIC8qIEZyZXNoIG1hcCBjb250YWlucyBhbGwgemVyb2VzIC0+IGluaXRpYWwgbWFyayBzaG91bGQgYmUgZGlmZmVyZW50LiAqLworICBUZXh0SWR4IG1hcmsgPSAxOworICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgIGlmIChvZmZzZXRzW3BpZWNlXSA9PSBpKSB7CisgICAgICBwaWVjZSsrOworICAgICAgbWFyaysrOworICAgIH0KKyAgICBNZXRhU2xvdCYgaXRlbSA9IG1hcFtzaG9ydGN1dFtpXV07CisgICAgaWYgKGl0ZW0ubWFyayAhPSBtYXJrKSB7CisgICAgICBpdGVtLm1hcmsgPSBtYXJrOworICAgICAgaXRlbS5zY29yZSsrOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgZHVyY2hzY2hsYWdHZW5lcmF0ZUV4Y2x1c2l2ZSgKKyAgICBzaXplX3QgZGljdGlvbmFyeV9zaXplX2xpbWl0LCBzaXplX3QgYmxvY2tfbGVuLAorICAgIGNvbnN0IER1cmNoc2NobGFnQ29udGV4dCYgY29udGV4dCwgY29uc3QgdWludDhfdCogc2FtcGxlX2RhdGEpIHsKKyAgLyogUGFyYW1ldGVycyBhbGlhc2luZyAqLworICBUZXh0SWR4IHRhcmdldFNpemUgPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihkaWN0aW9uYXJ5X3NpemVfbGltaXQpOworICBpZiAodGFyZ2V0U2l6ZSAhPSBkaWN0aW9uYXJ5X3NpemVfbGltaXQpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImRpY3Rpb25hcnlfc2l6ZV9saW1pdCBpcyB0b28gbGFyZ2VcbiIpOworICAgIHJldHVybiAiIjsKKyAgfQorICBUZXh0SWR4IHNsaWNlTGVuID0gY29udGV4dC5zbGljZUxlbjsKKyAgVGV4dElkeCB0b3RhbCA9IGNvbnRleHQuZGF0YVNpemU7CisgIFRleHRJZHggYmxvY2tMZW4gPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihibG9ja19sZW4pOworICBpZiAoYmxvY2tMZW4gIT0gYmxvY2tfbGVuKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJibG9ja19sZW4gaXMgdG9vIGxhcmdlXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgY29uc3QgdWludDhfdCogZGF0YSA9IHNhbXBsZV9kYXRhOworICBjb25zdCBzdGQ6OnZlY3RvcjxUZXh0SWR4PiYgb2Zmc2V0cyA9IGNvbnRleHQub2Zmc2V0czsKKyAgc3RkOjp2ZWN0b3I8TWV0YVNsb3Q+IG1hcChjb250ZXh0Lm51bVVuaXF1ZVNsaWNlcyk7CisgIGNvbnN0IFRleHRJZHgqIHNob3J0Y3V0ID0gY29udGV4dC5zbGljZU1hcC5kYXRhKCk7CisKKyAgLyogSW5pdGlhbGl6YXRpb24gKi8KKyAgaWYgKGJsb2NrTGVuIDwgc2xpY2VMZW4pIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgInNsaWNlTGVuIGlzIGxhcmdlciB0aGFuIGJsb2NrX2xlblxuIik7CisgICAgcmV0dXJuICIiOworICB9CisgIGlmICh0YXJnZXRTaXplIDwgYmxvY2tMZW4gfHwgdG90YWwgPCBibG9ja0xlbikgeworICAgIGZwcmludGYoc3RkZXJyLCAiYmxvY2tfbGVuIGlzIHRvbyBsYXJnZVxuIik7CisgICAgcmV0dXJuICIiOworICB9CisgIFRleHRJZHggZW5kID0gdG90YWwgLSBzbGljZUxlbiArIDE7CisgIFNjb3JlU2xpY2VzKG9mZnNldHMsIG1hcCwgc2hvcnRjdXQsIGVuZCk7CisgIFRleHRJZHggc3BhbiA9IGJsb2NrTGVuIC0gc2xpY2VMZW4gKyAxOworICBlbmQgPSBzdGF0aWNfY2FzdDxUZXh0SWR4Pihjb250ZXh0LnNsaWNlTWFwLnNpemUoKSkgLSBzcGFuOworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBjYW5kaWRhdGVzOworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBuZXh0KGVuZCk7CisgIFNjb3JlIG1heFNjb3JlID0gcmVidWlsZENhbmRpZGF0ZXNMaXN0KAorICAgICAgJmNhbmRpZGF0ZXMsICZtYXAsIHNwYW4sIHNob3J0Y3V0LCBlbmQsIG5leHQuZGF0YSgpKTsKKworICAvKiBCbG9jayBzZWxlY3Rpb24gKi8KKyAgY29uc3Qgc2l6ZV90IHRyaWVzTGltaXQgPSAoNjAwICogMTAwMDAwMCkgLyBzcGFuOworICBjb25zdCBzaXplX3QgY2FuZGlkYXRlc0xpbWl0ID0gKDE1MCAqIDEwMDAwMDApIC8gc3BhbjsKKyAgc3RkOjp2ZWN0b3I8UmFuZ2U+IHJhbmdlczsKKyAgVGV4dElkeCBtYXJrID0gMDsKKyAgc2l6ZV90IG51bVRyaWVzID0gMDsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICBUZXh0SWR4IGRpY3RTaXplID0gY2FsY3VsYXRlRGljdGlvbmFyeVNpemUocmFuZ2VzKTsKKyAgICBzaXplX3QgbnVtQ2FuZGlkYXRlcyA9IDA7CisgICAgaWYgKGRpY3RTaXplID4gdGFyZ2V0U2l6ZSAtIGJsb2NrTGVuKSB7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKG1heFNjb3JlID09IDApIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgVGV4dElkeCBjYW5kaWRhdGUgPSAwOworICAgICAgd2hpbGUgKG1heFNjb3JlID4gMCkgeworICAgICAgICBpZiAoY2FuZGlkYXRlc1ttYXhTY29yZV0gIT0gMCkgeworICAgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbbWF4U2NvcmVdOworICAgICAgICAgIGNhbmRpZGF0ZXNbbWF4U2NvcmVdID0gbmV4dFtjYW5kaWRhdGVdOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG1heFNjb3JlLS07CisgICAgICB9CisgICAgICBpZiAobWF4U2NvcmUgPT0gMCkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIG1hcmsrKzsKKyAgICAgIG51bVRyaWVzKys7CisgICAgICBudW1DYW5kaWRhdGVzKys7CisgICAgICBTY29yZSBzY29yZSA9IDA7CisgICAgICBmb3IgKHNpemVfdCBqID0gY2FuZGlkYXRlOyBqIDwgY2FuZGlkYXRlICsgc3BhbjsgKytqKSB7CisgICAgICAgIE1ldGFTbG90JiBpdGVtID0gbWFwW3Nob3J0Y3V0W2pdXTsKKyAgICAgICAgaWYgKGl0ZW0ubWFyayAhPSBtYXJrKSB7CisgICAgICAgICAgc2NvcmUgKz0gaXRlbS5zY29yZTsKKyAgICAgICAgICBpdGVtLm1hcmsgPSBtYXJrOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoc2NvcmUgPCBtYXhTY29yZSkgeworICAgICAgICBpZiAobnVtVHJpZXMgPCB0cmllc0xpbWl0ICYmIG51bUNhbmRpZGF0ZXMgPCBjYW5kaWRhdGVzTGltaXQpIHsKKyAgICAgICAgICBuZXh0W2NhbmRpZGF0ZV0gPSBjYW5kaWRhdGVzW3Njb3JlXTsKKyAgICAgICAgICBjYW5kaWRhdGVzW3Njb3JlXSA9IGNhbmRpZGF0ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBtYXhTY29yZSA9IHJlYnVpbGRDYW5kaWRhdGVzTGlzdCgKKyAgICAgICAgICAgICAgJmNhbmRpZGF0ZXMsICZtYXAsIHNwYW4sIHNob3J0Y3V0LCBlbmQsIG5leHQuZGF0YSgpKTsKKyAgICAgICAgICBtYXJrID0gMDsKKyAgICAgICAgICBudW1UcmllcyA9IDA7CisgICAgICAgICAgbnVtQ2FuZGlkYXRlcyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY29udGludWU7CisgICAgICB9IGVsc2UgaWYgKHNjb3JlID4gbWF4U2NvcmUpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJCcm9rZW4gaW52YXJpYW50XG4iKTsKKyAgICAgICAgcmV0dXJuICIiOworICAgICAgfQorICAgICAgZm9yIChUZXh0SWR4IGogPSBjYW5kaWRhdGU7IGogPCBjYW5kaWRhdGUgKyBzcGFuOyArK2opIHsKKyAgICAgICAgTWV0YVNsb3QmIGl0ZW0gPSBtYXBbc2hvcnRjdXRbal1dOworICAgICAgICBpdGVtLnNjb3JlID0gMDsKKyAgICAgIH0KKyAgICAgIGFkZFJhbmdlKCZyYW5nZXMsIGNhbmRpZGF0ZSwgY2FuZGlkYXRlICsgYmxvY2tMZW4pOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGNyZWF0ZURpY3Rpb25hcnkoZGF0YSwgcmFuZ2VzLCB0YXJnZXRTaXplKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIGR1cmNoc2NobGFnR2VuZXJhdGVDb2xsYWJvcmF0aXZlKAorICAgIHNpemVfdCBkaWN0aW9uYXJ5X3NpemVfbGltaXQsIHNpemVfdCBibG9ja19sZW4sCisgICAgY29uc3QgRHVyY2hzY2hsYWdDb250ZXh0JiBjb250ZXh0LCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSkgeworICAvKiBQYXJhbWV0ZXJzIGFsaWFzaW5nICovCisgIFRleHRJZHggdGFyZ2V0U2l6ZSA9IHN0YXRpY19jYXN0PFRleHRJZHg+KGRpY3Rpb25hcnlfc2l6ZV9saW1pdCk7CisgIGlmICh0YXJnZXRTaXplICE9IGRpY3Rpb25hcnlfc2l6ZV9saW1pdCkgeworICAgIGZwcmludGYoc3RkZXJyLCAiZGljdGlvbmFyeV9zaXplX2xpbWl0IGlzIHRvbyBsYXJnZVxuIik7CisgICAgcmV0dXJuICIiOworICB9CisgIFRleHRJZHggc2xpY2VMZW4gPSBjb250ZXh0LnNsaWNlTGVuOworICBUZXh0SWR4IHRvdGFsID0gY29udGV4dC5kYXRhU2l6ZTsKKyAgVGV4dElkeCBibG9ja0xlbiA9IHN0YXRpY19jYXN0PFRleHRJZHg+KGJsb2NrX2xlbik7CisgIGlmIChibG9ja0xlbiAhPSBibG9ja19sZW4pIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImJsb2NrX2xlbiBpcyB0b28gbGFyZ2VcbiIpOworICAgIHJldHVybiAiIjsKKyAgfQorICBjb25zdCB1aW50OF90KiBkYXRhID0gc2FtcGxlX2RhdGE7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRleHRJZHg+JiBvZmZzZXRzID0gY29udGV4dC5vZmZzZXRzOworICBzdGQ6OnZlY3RvcjxNZXRhU2xvdD4gbWFwKGNvbnRleHQubnVtVW5pcXVlU2xpY2VzKTsKKyAgY29uc3QgVGV4dElkeCogc2hvcnRjdXQgPSBjb250ZXh0LnNsaWNlTWFwLmRhdGEoKTsKKworICAvKiBJbml0aWFsaXphdGlvbiAqLworICBpZiAoYmxvY2tMZW4gPCBzbGljZUxlbikgeworICAgIGZwcmludGYoc3RkZXJyLCAic2xpY2VMZW4gaXMgbGFyZ2VyIHRoYW4gYmxvY2tfbGVuXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgaWYgKHRhcmdldFNpemUgPCBibG9ja0xlbiB8fCB0b3RhbCA8IGJsb2NrTGVuKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJibG9ja19sZW4gaXMgdG9vIGxhcmdlXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgVGV4dElkeCBlbmQgPSB0b3RhbCAtIHNsaWNlTGVuICsgMTsKKyAgU2NvcmVTbGljZXMob2Zmc2V0cywgbWFwLCBzaG9ydGN1dCwgZW5kKTsKKyAgVGV4dElkeCBzcGFuID0gYmxvY2tMZW4gLSBzbGljZUxlbiArIDE7CisgIGVuZCA9IHN0YXRpY19jYXN0PFRleHRJZHg+KGNvbnRleHQuc2xpY2VNYXAuc2l6ZSgpKSAtIHNwYW47CisgIHN0ZDo6dmVjdG9yPENhbmRpZGF0ZT4gY2FuZGlkYXRlczsKKyAgY2FuZGlkYXRlcy5yZXNlcnZlKENBTkRJREFURV9CVU5ETEVfU0laRSArIDEwMjQpOworICBTY29yZSBtaW5TY29yZSA9IGJ1aWxkQ2FuZGlkYXRlc0xpc3QoJmNhbmRpZGF0ZXMsICZtYXAsIHNwYW4sIHNob3J0Y3V0LCBlbmQpOworCisgIC8qIEJsb2NrIHNlbGVjdGlvbiAqLworICBzdGQ6OnZlY3RvcjxSYW5nZT4gcmFuZ2VzOworICBUZXh0SWR4IG1hcmsgPSAwOworICB3aGlsZSAodHJ1ZSkgeworICAgIFRleHRJZHggZGljdFNpemUgPSBjYWxjdWxhdGVEaWN0aW9uYXJ5U2l6ZShyYW5nZXMpOworICAgIGlmIChkaWN0U2l6ZSA+IHRhcmdldFNpemUgLSBibG9ja0xlbikgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChtaW5TY29yZSA9PSAwICYmIGNhbmRpZGF0ZXMuZW1wdHkoKSkgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBpZiAoY2FuZGlkYXRlcy5lbXB0eSgpKSB7CisgICAgICAgIG1pblNjb3JlID0gYnVpbGRDYW5kaWRhdGVzTGlzdCgmY2FuZGlkYXRlcywgJm1hcCwgc3Bhbiwgc2hvcnRjdXQsIGVuZCk7CisgICAgICAgIG1hcmsgPSAwOworICAgICAgfQorICAgICAgVGV4dElkeCBjYW5kaWRhdGUgPSBjYW5kaWRhdGVzWzBdLnBvc2l0aW9uOworICAgICAgU2NvcmUgZXhwZWN0ZWRTY29yZSA9IGNhbmRpZGF0ZXNbMF0uc2NvcmU7CisgICAgICBpZiAoZXhwZWN0ZWRTY29yZSA9PSAwKSB7CisgICAgICAgIGNhbmRpZGF0ZXMucmVzaXplKDApOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0ZDo6cG9wX2hlYXAoY2FuZGlkYXRlcy5iZWdpbigpLCBjYW5kaWRhdGVzLmVuZCgpLCBsZXNzU2NvcmUoKSk7CisgICAgICBjYW5kaWRhdGVzLnBvcF9iYWNrKCk7CisgICAgICBtYXJrKys7CisgICAgICBTY29yZSBzY29yZSA9IDA7CisgICAgICBmb3IgKFRleHRJZHggaiA9IGNhbmRpZGF0ZTsgaiA8IGNhbmRpZGF0ZSArIHNwYW47ICsraikgeworICAgICAgICBNZXRhU2xvdCYgaXRlbSA9IG1hcFtzaG9ydGN1dFtqXV07CisgICAgICAgIGlmIChpdGVtLm1hcmsgIT0gbWFyaykgeworICAgICAgICAgIHNjb3JlICs9IGl0ZW0uc2NvcmU7CisgICAgICAgICAgaXRlbS5tYXJrID0gbWFyazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKHNjb3JlIDwgZXhwZWN0ZWRTY29yZSkgeworICAgICAgICBpZiAoc2NvcmUgPj0gbWluU2NvcmUpIHsKKyAgICAgICAgICBjYW5kaWRhdGVzLnB1c2hfYmFjayh7c2NvcmUsIGNhbmRpZGF0ZX0pOworICAgICAgICAgIHN0ZDo6cHVzaF9oZWFwKGNhbmRpZGF0ZXMuYmVnaW4oKSwgY2FuZGlkYXRlcy5lbmQoKSwgbGVzc1Njb3JlKCkpOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfSBlbHNlIGlmIChzY29yZSA+IGV4cGVjdGVkU2NvcmUpIHsKKyAgICAgICAgZmF0YWwoIkJyb2tlbiBpbnZhcmlhbnQiKTsKKyAgICAgIH0KKyAgICAgIGZvciAoVGV4dElkeCBqID0gY2FuZGlkYXRlOyBqIDwgY2FuZGlkYXRlICsgc3BhbjsgKytqKSB7CisgICAgICAgIE1ldGFTbG90JiBpdGVtID0gbWFwW3Nob3J0Y3V0W2pdXTsKKyAgICAgICAgaXRlbS5zY29yZSA9IDA7CisgICAgICB9CisgICAgICBhZGRSYW5nZSgmcmFuZ2VzLCBjYW5kaWRhdGUsIGNhbmRpZGF0ZSArIGJsb2NrTGVuKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHJldHVybiBjcmVhdGVEaWN0aW9uYXJ5KGRhdGEsIHJhbmdlcywgdGFyZ2V0U2l6ZSk7Cit9CisKK3N0ZDo6c3RyaW5nIGR1cmNoc2NobGFnX2dlbmVyYXRlKER1cmNoc2NoYWxnUmVzb3VyY2VTdHJhdGVneSBzdHJhdGVneSwKKyAgICBzaXplX3QgZGljdGlvbmFyeV9zaXplX2xpbWl0LCBzaXplX3QgYmxvY2tfbGVuLAorICAgIGNvbnN0IER1cmNoc2NobGFnQ29udGV4dCYgY29udGV4dCwgY29uc3QgdWludDhfdCogc2FtcGxlX2RhdGEpIHsKKyAgaWYgKHN0cmF0ZWd5ID09IERVUkNIU0NITEFHX0NPTExBQk9SQVRJVkUpIHsKKyAgICByZXR1cm4gZHVyY2hzY2hsYWdHZW5lcmF0ZUNvbGxhYm9yYXRpdmUoCisgICAgICAgIGRpY3Rpb25hcnlfc2l6ZV9saW1pdCwgYmxvY2tfbGVuLCBjb250ZXh0LCBzYW1wbGVfZGF0YSk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGR1cmNoc2NobGFnR2VuZXJhdGVFeGNsdXNpdmUoCisgICAgICAgIGRpY3Rpb25hcnlfc2l6ZV9saW1pdCwgYmxvY2tfbGVuLCBjb250ZXh0LCBzYW1wbGVfZGF0YSk7CisgIH0KK30KKwordm9pZCBkdXJjaHNjaGxhZ19kaXN0aWxsKHNpemVfdCBzbGljZV9sZW4sIHNpemVfdCBtaW5pbXVtX3BvcHVsYXRpb24sCisgICAgc3RkOjp2ZWN0b3I8c2l6ZV90Piogc2FtcGxlX3NpemVzLCB1aW50OF90KiBzYW1wbGVfZGF0YSkgeworICAvKiBQYXJhbWV0ZXJzIGFsaWFzaW5nICovCisgIHVpbnQ4X3QqIGRhdGEgPSBzYW1wbGVfZGF0YTsKKworICAvKiBCdWlsZCBzbGljZSBtYXAuICovCisgIER1cmNoc2NobGFnQ29udGV4dCBjb250ZXh0ID0gZHVyY2hzY2hsYWdfcHJlcGFyZSgKKyAgICAgIHNsaWNlX2xlbiwgKnNhbXBsZV9zaXplcywgZGF0YSk7CisKKyAgLyogQ2FsY3VsYXRlIHNsaWNlIHBvcHVsYXRpb24uICovCisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRleHRJZHg+JiBvZmZzZXRzID0gY29udGV4dC5vZmZzZXRzOworICBzdGQ6OnZlY3RvcjxNZXRhU2xvdD4gbWFwKGNvbnRleHQubnVtVW5pcXVlU2xpY2VzKTsKKyAgY29uc3QgVGV4dElkeCogc2hvcnRjdXQgPSBjb250ZXh0LnNsaWNlTWFwLmRhdGEoKTsKKyAgVGV4dElkeCBzbGljZUxlbiA9IGNvbnRleHQuc2xpY2VMZW47CisgIFRleHRJZHggdG90YWwgPSBjb250ZXh0LmRhdGFTaXplOworICBUZXh0SWR4IGVuZCA9IHRvdGFsIC0gc2xpY2VMZW4gKyAxOworICBTY29yZVNsaWNlcyhvZmZzZXRzLCBtYXAsIHNob3J0Y3V0LCBlbmQpOworCisgIC8qIENvbmRlbnNlIHNhbXBsZXMsIG9taXR0aW5nIHVuaXF1ZSBzbGljZXMuICovCisgIFRleHRJZHggcmVhZFBvcyA9IDA7CisgIFRleHRJZHggd3JpdGVQb3MgPSAwOworICBUZXh0SWR4IGxhc3ROb25VbmlxdWVQb3MgPSAwOworICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCBzYW1wbGVfc2l6ZXMtPnNpemUoKTsgKytpKSB7CisgICAgVGV4dElkeCBzYW1wbGVTdGFydCA9IHdyaXRlUG9zOworICAgIFRleHRJZHggb2xkU2FtcGxlRW5kID0KKyAgICAgICAgcmVhZFBvcyArIHN0YXRpY19jYXN0PFRleHRJZHg+KHNhbXBsZV9zaXplcy0+YXQoaSkpOworICAgIHdoaWxlIChyZWFkUG9zIDwgb2xkU2FtcGxlRW5kKSB7CisgICAgICBpZiAocmVhZFBvcyA8IGVuZCkgeworICAgICAgICBNZXRhU2xvdCYgaXRlbSA9IG1hcFtzaG9ydGN1dFtyZWFkUG9zXV07CisgICAgICAgIGlmIChpdGVtLnNjb3JlID49IG1pbmltdW1fcG9wdWxhdGlvbikgeworICAgICAgICAgIGxhc3ROb25VbmlxdWVQb3MgPSByZWFkUG9zICsgc2xpY2VMZW47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChyZWFkUG9zIDwgbGFzdE5vblVuaXF1ZVBvcykgeworICAgICAgICBkYXRhW3dyaXRlUG9zKytdID0gZGF0YVtyZWFkUG9zXTsKKyAgICAgIH0KKyAgICAgIHJlYWRQb3MrKzsKKyAgICB9CisgICAgc2FtcGxlX3NpemVzLT5hdChpKSA9IHdyaXRlUG9zIC0gc2FtcGxlU3RhcnQ7CisgIH0KK30KKwordm9pZCBkdXJjaHNjaGxhZ19wdXJpZnkoc2l6ZV90IHNsaWNlX2xlbiwgc2l6ZV90IG1pbmltdW1fcG9wdWxhdGlvbiwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBzYW1wbGVfc2l6ZXMsIHVpbnQ4X3QqIHNhbXBsZV9kYXRhKSB7CisgIC8qIFBhcmFtZXRlcnMgYWxpYXNpbmcgKi8KKyAgdWludDhfdCogZGF0YSA9IHNhbXBsZV9kYXRhOworCisgIC8qIEJ1aWxkIHNsaWNlIG1hcC4gKi8KKyAgRHVyY2hzY2hsYWdDb250ZXh0IGNvbnRleHQgPSBkdXJjaHNjaGxhZ19wcmVwYXJlKAorICAgICAgc2xpY2VfbGVuLCBzYW1wbGVfc2l6ZXMsIGRhdGEpOworCisgIC8qIENhbGN1bGF0ZSBzbGljZSBwb3B1bGF0aW9uLiAqLworICBjb25zdCBzdGQ6OnZlY3RvcjxUZXh0SWR4PiYgb2Zmc2V0cyA9IGNvbnRleHQub2Zmc2V0czsKKyAgc3RkOjp2ZWN0b3I8TWV0YVNsb3Q+IG1hcChjb250ZXh0Lm51bVVuaXF1ZVNsaWNlcyk7CisgIGNvbnN0IFRleHRJZHgqIHNob3J0Y3V0ID0gY29udGV4dC5zbGljZU1hcC5kYXRhKCk7CisgIFRleHRJZHggc2xpY2VMZW4gPSBjb250ZXh0LnNsaWNlTGVuOworICBUZXh0SWR4IHRvdGFsID0gY29udGV4dC5kYXRhU2l6ZTsKKyAgVGV4dElkeCBlbmQgPSB0b3RhbCAtIHNsaWNlTGVuICsgMTsKKyAgU2NvcmVTbGljZXMob2Zmc2V0cywgbWFwLCBzaG9ydGN1dCwgZW5kKTsKKworICAvKiBSZXdyaXRlIHNhbXBsZXMsIHplcm9pbmcgb3V0IHVuaXF1ZSBzbGljZXMuICovCisgIFRleHRJZHggbGFzdE5vblVuaXF1ZVBvcyA9IDA7CisgIGZvciAoVGV4dElkeCByZWFkUG9zID0gMDsgcmVhZFBvcyA8IHRvdGFsOyArK3JlYWRQb3MpIHsKKyAgICBpZiAocmVhZFBvcyA8IGVuZCkgeworICAgICAgTWV0YVNsb3QmIGl0ZW0gPSBtYXBbc2hvcnRjdXRbcmVhZFBvc11dOworICAgICAgaWYgKGl0ZW0uc2NvcmUgPj0gbWluaW11bV9wb3B1bGF0aW9uKSB7CisgICAgICAgIGxhc3ROb25VbmlxdWVQb3MgPSByZWFkUG9zICsgc2xpY2VMZW47CisgICAgICB9CisgICAgfQorICAgIGlmIChyZWFkUG9zID49IGxhc3ROb25VbmlxdWVQb3MpIHsKKyAgICAgIGRhdGFbcmVhZFBvc10gPSAwOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2R1cmNoc2NobGFnLmggYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZHVyY2hzY2hsYWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGJjNTMxCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2R1cmNoc2NobGFnLmgKQEAgLTAsMCArMSw5OSBAQAorI2lmbmRlZiBCUk9UTElfUkVTRUFSQ0hfRFVSQ0hTQ0hMQUdfSF8KKyNkZWZpbmUgQlJPVExJX1JFU0VBUkNIX0RVUkNIU0NITEFHX0hfCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworLyoqCisgKiBHZW5lcmF0ZSBhIGRpY3Rpb25hcnkgZm9yIGdpdmVuIHNhbXBsZXMuCisgKgorICogQHBhcmFtIGRpY3Rpb25hcnlfc2l6ZV9saW1pdCBtYXhpbWFsIGRpY3Rpb25hcnkgc2l6ZQorICogQHBhcmFtIHNsaWNlX2xlbiB0ZXh0IHNsaWNlIHNpemUKKyAqIEBwYXJhbSBibG9ja19sZW4gc2NvcmUgYmxvY2sgbGVuZ3RoCisgKiBAcGFyYW0gc2FtcGxlX3NpemVzIHZlY3RvciB3aXRoIHNhbXBsZSBzaXplcworICogQHBhcmFtIHNhbXBsZV9kYXRhIGNvbmNhdGVuYXRlZCBzYW1wbGVzCisgKiBAcmV0dXJuIGdlbmVyYXRlZCBkaWN0aW9uYXJ5CisgKi8KK3N0ZDo6c3RyaW5nIGR1cmNoc2NobGFnX2dlbmVyYXRlKAorICAgIHNpemVfdCBkaWN0aW9uYXJ5X3NpemVfbGltaXQsIHNpemVfdCBzbGljZV9sZW4sIHNpemVfdCBibG9ja19sZW4sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgc2FtcGxlX3NpemVzLCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMb3dlciBsZXZlbCBBUEkgZm9yIHJlcGV0aXRpdmUgZGljdGlvbmFyeSBnZW5lcmF0aW9uLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyogUG9pbnRlciB0byBwb3NpdGlvbiBpbiB0ZXh0LiAqLwordHlwZWRlZiB1aW50MzJfdCBEdXJjaHNjaGxhZ1RleHRJZHg7CisKKy8qIENvbnRleHQgaXMgbWFkZSBwdWJsaWMgZm9yIGZsZXhpYmxlIHNlcmlhbGl6YXRpb24gLyBkZXNlcmlhbGl6YXRpb24uICovCit0eXBlZGVmIHN0cnVjdCBEdXJjaHNjaGxhZ0NvbnRleHQgeworICBEdXJjaHNjaGxhZ1RleHRJZHggZGF0YVNpemU7CisgIER1cmNoc2NobGFnVGV4dElkeCBzbGljZUxlbjsKKyAgRHVyY2hzY2hsYWdUZXh0SWR4IG51bVVuaXF1ZVNsaWNlczsKKyAgc3RkOjp2ZWN0b3I8RHVyY2hzY2hsYWdUZXh0SWR4PiBvZmZzZXRzOworICBzdGQ6OnZlY3RvcjxEdXJjaHNjaGxhZ1RleHRJZHg+IHNsaWNlTWFwOworfSBEdXJjaHNjaGxhZ0NvbnRleHQ7CisKK0R1cmNoc2NobGFnQ29udGV4dCBkdXJjaHNjaGxhZ19wcmVwYXJlKHNpemVfdCBzbGljZV9sZW4sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgc2FtcGxlX3NpemVzLCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSk7CisKK3R5cGVkZWYgZW51bSBEdXJjaHNjaGFsZ1Jlc291cmNlU3RyYXRlZ3kgeworICAvLyBGYXN0ZXIKKyAgRFVSQ0hTQ0hMQUdfRVhDTFVTSVZFID0gMCwKKyAgLy8gVXNlcyBtdWNoIGxlc3MgbWVtb3J5CisgIERVUkNIU0NITEFHX0NPTExBQk9SQVRJVkUgPSAxCit9IER1cmNoc2NoYWxnUmVzb3VyY2VTdHJhdGVneTsKKworc3RkOjpzdHJpbmcgZHVyY2hzY2hsYWdfZ2VuZXJhdGUoRHVyY2hzY2hhbGdSZXNvdXJjZVN0cmF0ZWd5IHN0cmF0ZWd5LAorICAgIHNpemVfdCBkaWN0aW9uYXJ5X3NpemVfbGltaXQsIHNpemVfdCBibG9ja19sZW4sCisgICAgY29uc3QgRHVyY2hzY2hsYWdDb250ZXh0JiBjb250ZXh0LCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBTdWZmaXggQXJyYXkgYmFzZWQgcHJlcGFyYXRpb24uCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0eXBlZGVmIHN0cnVjdCBEdXJjaHNjaGxhZ0luZGV4IHsKKyAgc3RkOjp2ZWN0b3I8RHVyY2hzY2hsYWdUZXh0SWR4PiBsY3A7CisgIHN0ZDo6dmVjdG9yPER1cmNoc2NobGFnVGV4dElkeD4gc2E7Cit9IER1cmNoc2NobGFnSW5kZXg7CisKK0R1cmNoc2NobGFnSW5kZXggZHVyY2hzY2hsYWdfaW5kZXgoY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGRhdGEpOworCitEdXJjaHNjaGxhZ0NvbnRleHQgZHVyY2hzY2hsYWdfcHJlcGFyZShzaXplX3Qgc2xpY2VfbGVuLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHNhbXBsZV9zaXplcywgY29uc3QgRHVyY2hzY2hsYWdJbmRleCYgaW5kZXgpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRGF0YSBwcmVwYXJhdGlvbi4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qKgorICogQ3V0IG91dCB1bmlxdWUgc2xpY2VzLgorICoKKyAqIEJvdGggQHAgc2FtcGxlX3NpemVzIGFuZCBAcCBzYW1wbGVfZGF0YSBhcmUgbW9kaWZpZWQgaW4tcGxhY2UuIE51bWJlciBvZgorICogc2FtcGxlcyByZW1haW5zIHVuY2hhbmdlZCwgYnV0IHNvbWUgc2FtcGxlcyBiZWNvbWUgc2hvcnRlci4KKyAqCisgKiBAcGFyYW0gc2xpY2VfbGVuICh1bmlxdWUpIHNsaWNlIHNpemUKKyAqIEBwYXJhbSBtaW5pbXVtX3BvcHVsYXRpb24gbWluaW11bSBub24tdW5pcXVlIHNsaWNlIG9jY3VycmVuY2UKKyAqIEBwYXJhbSBzYW1wbGVfc2l6ZXMgW2luIC8gb3V0XSB2ZWN0b3Igd2l0aCBzYW1wbGUgc2l6ZXMKKyAqIEBwYXJhbSBzYW1wbGVfZGF0YSBbaW4gLyBvdXRdIGNvbmNhdGVuYXRlZCBzYW1wbGVzCisgKi8KK3ZvaWQgZHVyY2hzY2hsYWdfZGlzdGlsbChzaXplX3Qgc2xpY2VfbGVuLCBzaXplX3QgbWluaW11bV9wb3B1bGF0aW9uLAorICAgIHN0ZDo6dmVjdG9yPHNpemVfdD4qIHNhbXBsZV9zaXplcywgdWludDhfdCogc2FtcGxlX2RhdGEpOworCisvKioKKyAqIFJlcGxhY2UgdW5pcXVlIHNsaWNlcyB3aXRoIHplcm9lcy4KKyAqCisgKiBAcCBzYW1wbGVfZGF0YSBpcyBtb2RpZmllZCBpbi1wbGFjZS4gTnVtYmVyIG9mIHNhbXBsZXMgYW5kIHRoZWlyIGxlbmd0aAorICogcmVtYWluIHVuY2hhbmdlZC4KKyAqCisgKiBAcGFyYW0gc2xpY2VfbGVuICh1bmlxdWUpIHNsaWNlIHNpemUKKyAqIEBwYXJhbSBtaW5pbXVtX3BvcHVsYXRpb24gbWluaW11bSBub24tdW5pcXVlIHNsaWNlIG9jY3VycmVuY2UKKyAqIEBwYXJhbSBzYW1wbGVfc2l6ZXMgdmVjdG9yIHdpdGggc2FtcGxlIHNpemVzCisgKiBAcGFyYW0gc2FtcGxlX2RhdGEgW2luIC8gb3V0XSBjb25jYXRlbmF0ZWQgc2FtcGxlcworICovCit2b2lkIGR1cmNoc2NobGFnX3B1cmlmeShzaXplX3Qgc2xpY2VfbGVuLCBzaXplX3QgbWluaW11bV9wb3B1bGF0aW9uLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHNhbXBsZV9zaXplcywgdWludDhfdCogc2FtcGxlX2RhdGEpOworCisjZW5kaWYgIC8vIEJST1RMSV9SRVNFQVJDSF9EVVJDSFNDSExBR19IXwpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2ZpbmRfb3B0X3JlZmVyZW5jZXMuY2MgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvZmluZF9vcHRfcmVmZXJlbmNlcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzhkM2I1Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2ZpbmRfb3B0X3JlZmVyZW5jZXMuY2MKQEAgLTAsMCArMSwyNjcgQEAKKy8qIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgICBBdXRob3I6IHppcDc1M0BnbWFpbC5jb20gKEl2YW4gTmlrdWxpbikKKworICAgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgICBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAorKi8KKworLyogVG9vbCBmb3IgZ2VuZXJhdGluZyBvcHRpbWFsIGJhY2t3YXJkIHJlZmVyZW5jZXMgZm9yIHRoZSBpbnB1dCBmaWxlLiBVc2VzCisgICBzYWlzLWxpdGUgbGlicmFyeSBmb3IgYnVpbGRpbmcgc3VmZml4IGFycmF5LiAqLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPGdmbGFncy9nZmxhZ3MuaD4KK3VzaW5nIGdmbGFnczo6UGFyc2VDb21tYW5kTGluZUZsYWdzOworCisjaW5jbHVkZSAiLi9lc2F4eC9zYWlzLmh4eCIKKworREVGSU5FX2Jvb2woYWR2YW5jZWQsIGZhbHNlLCAiQWR2YW5jZWQgc2VhcmNoaW5nIG1vZGU6IGZpbmRzIGFsbCBsb25nZXN0ICIKKyAgICAibWF0Y2hlcyBhdCBwb3NpdGlvbnMgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgbWF0Y2hlcyBvZiBsZW5ndGggYXQgbGVhc3QgIgorICAgICJtYXhfbGVuZ3RoLiBXQVJOSU5HOiB1c2VzIG11Y2ggbW9yZSBtZW1vcnkgdGhhbiBzaW1wbGUgbW9kZSwgZXNwZWNpYWxseSAiCisgICAgImZvciBzbWFsbCB2YWx1ZXMgb2YgbWluX2xlbmd0aC4iKTsKK0RFRklORV9pbnQzMihtaW5fbGVuZ3RoLCAxLCAiTWluaW1hbCBsZW5ndGggb2YgZm91bmQgYmFja3dhcmQgcmVmZXJlbmNlcy4iKTsKKy8qIEZvciBhZHZhbmNlZCBtb2RlLiAqLworREVGSU5FX2ludDMyKGxvbmdfbGVuZ3RoLCAzMiwKKyAgICAgICAgICAgICAiTWF4aW1hbCBsZW5ndGggb2YgZm91bmQgYmFja3dhcmQgcmVmZXJlbmNlcyBmb3IgYWR2YW5jZWQgbW9kZS4iKTsKK0RFRklORV9pbnQzMihza2lwLCAxLCAiTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAuIik7CisKK2NvbnN0IHNpemVfdCBrRmlsZUJ1ZmZlclNpemUgPSAoMSA8PCAxNik7ICAvLyA2NEtCCisKK3R5cGVkZWYgaW50IHNhcnJheV90eXBlOyAgLy8gQ2FuJ3QgbWFrZSBpdCB1bnNpZ25lZCBiZWNhdXNlIG9mIHRlbXBsYXRlcyA6KAordHlwZWRlZiB1aW50OF90IGlucHV0X3R5cGU7Cit0eXBlZGVmIHVpbnQzMl90IGxjcF90eXBlOwordHlwZWRlZiBzdGQ6OnBhaXI8aW50LCBzdGQ6OnZlY3RvcjxpbnQ+ID4gZW50cnlfdHlwZTsKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKHNhcnJheV90eXBlKiwgbGNwX3R5cGUqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk+IEZuOworCit2b2lkIFJlYWRJbnB1dChGSUxFKiBmaW4sIGlucHV0X3R5cGUqIHN0b3JhZ2UsIHNpemVfdCBpbnB1dF9zaXplKSB7CisgIHNpemVfdCBsYXN0X3BvcyA9IDA7CisgIHNpemVfdCBhdmFpbGFibGVfaW47CisgIGZzZWVrKGZpbiwgMCwgU0VFS19TRVQpOworICBkbyB7CisgICAgYXZhaWxhYmxlX2luID0gZnJlYWQoc3RvcmFnZSArIGxhc3RfcG9zLCAxLCBrRmlsZUJ1ZmZlclNpemUsIGZpbik7CisgICAgbGFzdF9wb3MgKz0gYXZhaWxhYmxlX2luOworICB9IHdoaWxlIChhdmFpbGFibGVfaW4gIT0gMCk7CisgIGFzc2VydChsYXN0X3BvcyA9PSBpbnB1dF9zaXplKTsKK30KKwordm9pZCBCdWlsZExDUChpbnB1dF90eXBlKiBzdG9yYWdlLCBzYXJyYXlfdHlwZSogc2FycmF5LCBsY3BfdHlwZSogbGNwLAorICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgdWludDMyX3QqIHBvcykgeworICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgIHBvc1tzYXJyYXlbaV1dID0gaTsKKyAgfQorICB1aW50MzJfdCBrID0gMDsKKyAgbGNwW3NpemUgLSAxXSA9IDA7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgaWYgKHBvc1tpXSA9PSBzaXplIC0gMSkgeworICAgICAgayA9IDA7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdWludDMyX3QgaiA9IHNhcnJheVtwb3NbaV0gKyAxXTsgIC8vIFN1ZmZpeCB3aGljaCBmb2xsb3cgaS10aCBzdWZmaXggaW4gU0EuCisgICAgd2hpbGUgKGkgKyBrIDwgc2l6ZSAmJiBqICsgayA8IHNpemUgJiYgc3RvcmFnZVtpICsga10gPT0gc3RvcmFnZVtqICsga10pIHsKKyAgICAgICsrazsKKyAgICB9CisgICAgbGNwW3Bvc1tpXV0gPSBrOworICAgIGlmIChrID4gMCkgLS1rOworICB9Cit9CisKK2lubGluZSB2b2lkIFByaW50UmVmZXJlbmNlKHNhcnJheV90eXBlKiBzYXJyYXksIGxjcF90eXBlKiBsY3AsIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkeCwgaW50IGxlZnRfaXgsIGludCByaWdodF9peCwgaW50IGxlZnRfbGNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJpZ2h0X2xjcCwgRklMRSogZm91dCkgeworICBpbnQgbWF4X2xjcF9peDsKKyAgaWYgKHJpZ2h0X2l4ID09IHNpemUgLSAxIHx8IChsZWZ0X2l4ID49IDAgJiYgbGVmdF9sY3AgPj0gcmlnaHRfbGNwKSkgeworICAgIG1heF9sY3BfaXggPSBsZWZ0X2l4OworICB9IGVsc2UgeworICAgIG1heF9sY3BfaXggPSByaWdodF9peDsKKyAgfQorICBpbnQgZGlzdCA9IGlkeCAtIHNhcnJheVttYXhfbGNwX2l4XTsKKyAgYXNzZXJ0KGRpc3QgPiAwKTsKKyAgZnB1dGMoMSwgZm91dCk7CisgIGZ3cml0ZSgmaWR4LCBzaXplb2YoaW50KSwgMSwgZm91dCk7ICAgLy8gUG9zaXRpb24gaW4gaW5wdXQuCisgIGZ3cml0ZSgmZGlzdCwgc2l6ZW9mKGludCksIDEsIGZvdXQpOyAgLy8gQmFja3dhcmQgZGlzdGFuY2UuCit9CisKK2lubGluZSB2b2lkIEdvTGVmdChzYXJyYXlfdHlwZSogc2FycmF5LCBsY3BfdHlwZSogbGNwLCBpbnQgaWR4LCBpbnQgbGVmdF9peCwKKyAgICAgICAgICAgICAgICAgICBpbnQgbGVmdF9sY3AsIGVudHJ5X3R5cGUqIGVudHJ5KSB7CisgIGVudHJ5LT5maXJzdCA9IGxlZnRfbGNwOworICBpZiAobGVmdF9sY3AgPiBGTEFHU19sb25nX2xlbmd0aCkgcmV0dXJuOworICBmb3IgKDsgbGVmdF9peCA+PSAwOyAtLWxlZnRfaXgpIHsKKyAgICBpZiAobGNwW2xlZnRfaXhdIDwgbGVmdF9sY3ApIGJyZWFrOworICAgIGlmIChzYXJyYXlbbGVmdF9peF0gPCBpZHgpIHsKKyAgICAgIGVudHJ5LT5zZWNvbmQucHVzaF9iYWNrKGlkeCAtIHNhcnJheVtsZWZ0X2l4XSk7CisgICAgfQorICB9Cit9CisKK2lubGluZSB2b2lkIEdvUmlnaHQoc2FycmF5X3R5cGUqIHNhcnJheSwgbGNwX3R5cGUqIGxjcCwgaW50IGlkeCwgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgIGludCByaWdodF9peCwgaW50IHJpZ2h0X2xjcCwgZW50cnlfdHlwZSogZW50cnkpIHsKKyAgZW50cnktPmZpcnN0ID0gcmlnaHRfbGNwOworICBpZiAocmlnaHRfbGNwID4gRkxBR1NfbG9uZ19sZW5ndGgpIHJldHVybjsKKyAgZm9yICg7IHJpZ2h0X2l4IDwgc2l6ZSAtIDE7ICsrcmlnaHRfaXgpIHsKKyAgICBpZiAobGNwW3JpZ2h0X2l4XSA8IHJpZ2h0X2xjcCkgYnJlYWs7CisgICAgaWYgKHNhcnJheVtyaWdodF9peF0gPCBpZHgpIHsKKyAgICAgIGVudHJ5LT5zZWNvbmQucHVzaF9iYWNrKGlkeCAtIHNhcnJheVtyaWdodF9peF0pOworICAgIH0KKyAgfQorfQorCitpbmxpbmUgdm9pZCBTdG9yZVJlZmVyZW5jZShzYXJyYXlfdHlwZSogc2FycmF5LCBsY3BfdHlwZSogbGNwLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZHgsIGludCBsZWZ0X2l4LCBpbnQgcmlnaHRfaXgsIGludCBsZWZ0X2xjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByaWdodF9sY3AsIGVudHJ5X3R5cGUqIGVudHJpZXMpIHsKKyAgaWYgKHJpZ2h0X2l4ID09IHNpemUgLSAxIHx8IChsZWZ0X2l4ID49IDAgJiYgbGVmdF9sY3AgPiByaWdodF9sY3ApKSB7CisgICAgLy8gcmlnaHQgaXMgaW52YWxpZCBvciBsZWZ0IGlzIGJldHRlcgorICAgIEdvTGVmdChzYXJyYXksIGxjcCwgaWR4LCBsZWZ0X2l4LCBsZWZ0X2xjcCwgJmVudHJpZXNbaWR4XSk7CisgIH0gZWxzZSBpZiAobGVmdF9peCA8IDAgfHwgKHJpZ2h0X2l4IDwgc2l6ZSAtIDEgJiYgcmlnaHRfbGNwID4gbGVmdF9sY3ApKSB7CisgICAgLy8gbGVmdCBpcyBpbnZhbGlkIG9yIHJpZ2h0IGlzIGJldHRlcgorICAgIEdvUmlnaHQoc2FycmF5LCBsY3AsIGlkeCwgc2l6ZSwgcmlnaHRfaXgsIHJpZ2h0X2xjcCwgJmVudHJpZXNbaWR4XSk7CisgIH0gZWxzZSB7ICAvLyBib3RoIGFyZSB2YWxpZCBhbmQgb2YgZXF1YWwgbGVuZ3RoCisgICAgR29MZWZ0KHNhcnJheSwgbGNwLCBpZHgsIGxlZnRfaXgsIGxlZnRfbGNwLCAmZW50cmllc1tpZHhdKTsKKyAgICBHb1JpZ2h0KHNhcnJheSwgbGNwLCBpZHgsIHNpemUsIHJpZ2h0X2l4LCByaWdodF9sY3AsICZlbnRyaWVzW2lkeF0pOworICB9Cit9CisKK3ZvaWQgUHJvY2Vzc1JlZmVyZW5jZXMoc2FycmF5X3R5cGUqIHNhcnJheSwgbGNwX3R5cGUqIGxjcCwgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBwb3MsIGNvbnN0IEZuJiBwcm9jZXNzX291dHB1dCkgeworICBpbnQgbWluX2xlbmd0aCA9IEZMQUdTX21pbl9sZW5ndGg7CisgIGZvciAoaW50IGlkeCA9IEZMQUdTX3NraXA7IGlkeCA8IHNpemU7ICsraWR4KSB7CisgICAgaW50IGxlZnRfbGNwID0gLTE7CisgICAgaW50IGxlZnRfaXg7CisgICAgZm9yIChsZWZ0X2l4ID0gcG9zW2lkeF0gLSAxOyBsZWZ0X2l4ID49IDA7IC0tbGVmdF9peCkgeworICAgICAgaWYgKGxlZnRfbGNwID09IC0xIHx8IGxlZnRfbGNwID4gbGNwW2xlZnRfaXhdKSB7CisgICAgICAgIGxlZnRfbGNwID0gbGNwW2xlZnRfaXhdOworICAgICAgfQorICAgICAgaWYgKGxlZnRfbGNwID09IDApIGJyZWFrOworICAgICAgaWYgKHNhcnJheVtsZWZ0X2l4XSA8IGlkeCkgYnJlYWs7CisgICAgfQorCisgICAgaW50IHJpZ2h0X2xjcCA9IC0xOworICAgIGludCByaWdodF9peDsKKyAgICBmb3IgKHJpZ2h0X2l4ID0gcG9zW2lkeF07IHJpZ2h0X2l4IDwgc2l6ZSAtIDE7ICsrcmlnaHRfaXgpIHsKKyAgICAgIGlmIChyaWdodF9sY3AgPT0gLTEgfHwgcmlnaHRfbGNwID4gbGNwW3JpZ2h0X2l4XSkgeworICAgICAgICByaWdodF9sY3AgPSBsY3BbcmlnaHRfaXhdOworICAgICAgfQorICAgICAgLy8gU3RvcCBpZiB3ZSBoYXZlIGJldHRlciByZXN1bHQgZnJvbSB0aGUgbGVmdCBzaWRlIGFscmVhZHkuCisgICAgICBpZiAocmlnaHRfbGNwIDwgbGVmdF9sY3AgJiYgbGVmdF9peCA+PSAwKSBicmVhazsKKyAgICAgIGlmIChyaWdodF9sY3AgPT0gMCkgYnJlYWs7CisgICAgICBpZiAoc2FycmF5W3JpZ2h0X2l4XSA8IGlkeCkgYnJlYWs7CisgICAgfQorCisgICAgaWYgKChsZWZ0X2l4ID49IDAgJiYgbGVmdF9sY3AgPj0gbWluX2xlbmd0aCkgfHwKKyAgICAgICAgKHJpZ2h0X2l4IDwgc2l6ZSAtIDEgJiYgcmlnaHRfbGNwID49IG1pbl9sZW5ndGgpKSB7CisgICAgICBwcm9jZXNzX291dHB1dChzYXJyYXksIGxjcCwgc2l6ZSwgaWR4LCBsZWZ0X2l4LCByaWdodF9peCwgbGVmdF9sY3AsCisgICAgICAgICAgICAgICAgICAgICByaWdodF9sY3ApOworICAgIH0KKyAgfQorfQorCit2b2lkIFByb2Nlc3NFbnRyaWVzKGVudHJ5X3R5cGUqIGVudHJpZXMsIHNpemVfdCBzaXplLCBGSUxFKiBmb3V0KSB7CisgIGludCBsb25nX2xlbmd0aCA9IEZMQUdTX2xvbmdfbGVuZ3RoOworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+ID4gc2VnbWVudHM7CisgIHNpemVfdCBpZHg7CisgIGZvciAoaWR4ID0gMDsgaWR4IDwgc2l6ZTspIHsKKyAgICBlbnRyeV90eXBlJiBlbnRyeSA9IGVudHJpZXNbaWR4XTsKKyAgICBpZiAoZW50cnkuZmlyc3QgPiBsb25nX2xlbmd0aCkgeworICAgICAgLy8gQWRkIHNlZ21lbnQuCisgICAgICBpZiAoc2VnbWVudHMuZW1wdHkoKSB8fCBzZWdtZW50cy5iYWNrKCkuc2Vjb25kIDwgaWR4KSB7CisgICAgICAgIHNlZ21lbnRzLnB1c2hfYmFjayh7aWR4LCBpZHggKyBlbnRyeS5maXJzdH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2VnbWVudHMuYmFjaygpLnNlY29uZCA9IGlkeCArIGVudHJ5LmZpcnN0OworICAgICAgfQorICAgIH0KKyAgICArK2lkeDsKKyAgfQorICBwcmludGYoIlNlZ21lbnRzIGdlbmVyYXRlZC5cbiIpOworICBzaXplX3Qgc2VnbWVudHNfaXggPSAwOworICBmb3IgKGlkeCA9IDA7IGlkeCA8IHNpemU7KSB7CisgICAgaWYgKGlkeCA9PSBzZWdtZW50c1tzZWdtZW50c19peF0uZmlyc3QpIHsKKyAgICAgIC8vIFNraXAgc2VnbWVudC4KKyAgICAgIGlkeCA9IHNlZ21lbnRzW3NlZ21lbnRzX2l4XS5zZWNvbmQ7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAoYXV0byYgZGlzdCA6IGVudHJpZXNbaWR4XS5zZWNvbmQpIHsKKyAgICAgICAgZnB1dGMoMSwgZm91dCk7CisgICAgICAgIGZ3cml0ZSgmaWR4LCBzaXplb2YoaW50KSwgMSwgZm91dCk7ICAgLy8gUG9zaXRpb24gaW4gaW5wdXQuCisgICAgICAgIGZ3cml0ZSgmZGlzdCwgc2l6ZW9mKGludCksIDEsIGZvdXQpOyAgLy8gQmFja3dhcmQgZGlzdGFuY2UuCisgICAgICB9CisgICAgICArK2lkeDsKKyAgICB9CisgIH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoJmFyZ2MsICZhcmd2LCB0cnVlKTsKKyAgaWYgKGFyZ2MgIT0gMykgeworICAgIHByaW50ZigidXNhZ2U6ICVzIGlucHV0X2ZpbGUgb3V0cHV0X2ZpbGVcbiIsIGFyZ3ZbMF0pOworICAgIHJldHVybiAxOworICB9CisKKyAgRklMRSogZmluID0gZm9wZW4oYXJndlsxXSwgInJiIik7CisgIEZJTEUqIGZvdXQgPSBmb3Blbihhcmd2WzJdLCAidyIpOworCisgIGZzZWVrKGZpbiwgMCwgU0VFS19FTkQpOworICBpbnQgaW5wdXRfc2l6ZSA9IGZ0ZWxsKGZpbik7CisgIGZzZWVrKGZpbiwgMCwgU0VFS19TRVQpOworICBwcmludGYoIlRoZSBmaWxlIHNpemUgaXMgJXUgYnl0ZXNcbiIsIGlucHV0X3NpemUpOworCisgIGlucHV0X3R5cGUqIHN0b3JhZ2UgPSBuZXcgaW5wdXRfdHlwZVtpbnB1dF9zaXplXTsKKworICBSZWFkSW5wdXQoZmluLCBzdG9yYWdlLCBpbnB1dF9zaXplKTsKKyAgZmNsb3NlKGZpbik7CisKKyAgc2FycmF5X3R5cGUqIHNhcnJheSA9IG5ldyBzYXJyYXlfdHlwZVtpbnB1dF9zaXplXTsKKyAgc2Fpc3h4KHN0b3JhZ2UsIHNhcnJheSwgaW5wdXRfc2l6ZSk7CisgIHByaW50ZigiU3VmZml4IGFycmF5IGNhbGN1bGF0ZWQuXG4iKTsKKworICAvLyBJbnZlcnNlIHN1ZmZpeCBhcnJheS4KKyAgdWludDMyX3QqIHBvcyA9IG5ldyB1aW50MzJfdFtpbnB1dF9zaXplXTsKKworICBsY3BfdHlwZSogbGNwID0gbmV3IGxjcF90eXBlW2lucHV0X3NpemVdOworICBCdWlsZExDUChzdG9yYWdlLCBzYXJyYXksIGxjcCwgaW5wdXRfc2l6ZSwgcG9zKTsKKyAgcHJpbnRmKCJMQ1AgYXJyYXkgY29uc3RydWN0ZWQuXG4iKTsKKyAgZGVsZXRlW10gc3RvcmFnZTsKKworICB1c2luZyBzdGQ6OnBsYWNlaG9sZGVyczo6XzE7CisgIHVzaW5nIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMjsKKyAgdXNpbmcgc3RkOjpwbGFjZWhvbGRlcnM6Ol8zOworICB1c2luZyBzdGQ6OnBsYWNlaG9sZGVyczo6XzQ7CisgIHVzaW5nIHN0ZDo6cGxhY2Vob2xkZXJzOjpfNTsKKyAgdXNpbmcgc3RkOjpwbGFjZWhvbGRlcnM6Ol82OworICB1c2luZyBzdGQ6OnBsYWNlaG9sZGVyczo6Xzc7CisgIHVzaW5nIHN0ZDo6cGxhY2Vob2xkZXJzOjpfODsKKyAgZW50cnlfdHlwZSogZW50cmllczsKKyAgaWYgKEZMQUdTX2FkdmFuY2VkKSB7CisgICAgZW50cmllcyA9IG5ldyBlbnRyeV90eXBlW2lucHV0X3NpemVdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXRfc2l6ZTsgKytpKSBlbnRyaWVzW2ldLmZpcnN0ID0gLTE7CisgIH0KKyAgRm4gcHJpbnQgPSBzdGQ6OmJpbmQoUHJpbnRSZWZlcmVuY2UsIF8xLCBfMiwgXzMsIF80LCBfNSwgXzYsIF83LCBfOCwgZm91dCk7CisgIEZuIHN0b3JlID0gc3RkOjpiaW5kKFN0b3JlUmVmZXJlbmNlLCBfMSwgXzIsIF8zLCBfNCwgXzUsIF82LCBfNywgXzgsIGVudHJpZXMpOworCisgIFByb2Nlc3NSZWZlcmVuY2VzKHNhcnJheSwgbGNwLCBpbnB1dF9zaXplLCBwb3MsCisgICAgICAgICAgICAgICAgICAgIEZMQUdTX2FkdmFuY2VkID8gc3RvcmUgOiBwcmludCk7CisgIHByaW50ZigiUmVmZXJlbmNlcyBwcm9jZXNzZWQuXG4iKTsKKworICBpZiAoRkxBR1NfYWR2YW5jZWQpIHsKKyAgICBpbnQgZ29vZF9jbnQgPSAwOworICAgIHVpbnQ2NF90IGF2Z19jbnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXRfc2l6ZTsgKytpKSB7CisgICAgICBpZiAoZW50cmllc1tpXS5maXJzdCAhPSAtMSkgeworICAgICAgICArK2dvb2RfY250OworICAgICAgICBhdmdfY250ICs9IGVudHJpZXNbaV0uc2Vjb25kLnNpemUoKTsKKyAgICAgIH0KKyAgICB9CisgICAgcHJpbnRmKCJOdW1iZXIgb2YgY292ZXJlZCBwb3NpdGlvbnMgPSAlZFxuIiwgZ29vZF9jbnQpOworICAgIHByaW50ZigiQXZlcmFnZSBudW1iZXIgb2YgcmVmZXJlbmNlcyBwZXIgY292ZXJlZCBwb3NpdGlvbiA9ICUuNGxmXG4iLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihhdmdfY250KSAvIGdvb2RfY250KTsKKyAgICBQcm9jZXNzRW50cmllcyhlbnRyaWVzLCBpbnB1dF9zaXplLCBmb3V0KTsKKyAgICBwcmludGYoIkVudHJpZXMgcHJvY2Vzc2VkLlxuIik7CisgIH0KKworICBmY2xvc2UoZm91dCk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2ltZy9lbndpazlfYnJvdGxpLnBuZyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9pbWcvZW53aWs5X2Jyb3RsaS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1ZWJhOQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9pbWcvZW53aWs5X2Jyb3RsaS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2ltZy9lbndpazlfZGlmZi5wbmcgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvaW1nL2Vud2lrOV9kaWZmLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGY2NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2ltZy9lbndpazlfZGlmZi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL2ltZy9lbndpazlfb3B0LnBuZyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9pbWcvZW53aWs5X29wdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjNjU1ZAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9pbWcvZW53aWs5X29wdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL3JlYWRfZGlzdC5oIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL3JlYWRfZGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZDNiOTcKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvcmVhZF9kaXN0LmgKQEAgLTAsMCArMSw1MCBAQAorLyogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAgIEF1dGhvcjogemlwNzUzQGdtYWlsLmNvbSAoSXZhbiBOaWt1bGluKQorCisgICBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZS4KKyAgIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCisqLworCisvKiBBUEkgZm9yIHJlYWRpbmcgZGlzdGFuY2VzIGZyb20gKi5kaXN0IGZpbGUuCisgICBUaGUgZm9ybWF0IG9mICouZGlzdCBmaWxlIGlzIGFzIGZvbGxvd3M6IGZvciBlYWNoIGJhY2t3YXJkIHJlZmVyZW5jZSB0aGVyZSBpcworICAgYSBwb3NpdGlvbi1kaXN0YW5jZSBwYWlyLCBhbHNvIGEgY29weSBsZW5ndGggbWF5IGJlIHNwZWNpZmllZC4gQ29weSBsZW5ndGggaXMKKyAgIHByZWZpeGVkIHdpdGggZmxhZyBieXRlIDAsIHBvc2l0aW9uLWRpc3RhbmNlIHBhaXIgaXMgcHJlZml4ZWQgd2l0aCBmbGFnCisgICBieXRlIDEuIEVhY2ggbnVtYmVyIGlzIGEgMzItYml0IGludGVnZXIuIENvcHkgbGVuZ3RoIGFsd2F5cyBjb21lcyBiZWZvcmUKKyAgIHBvc2l0aW9uLWRpc3RhbmNlIHBhaXIuIFN0YW5kYWxvbmUgY29weSBsZW5ndGggaXMgYWxsb3dlZCwgaW4gdGhpcyBjYXNlIGl0IGlzCisgICBpZ25vcmVkLiAqLworCisjaWZuZGVmIEJST1RMSV9SRVNFQVJDSF9SRUFEX0RJU1RfSF8KKyNkZWZpbmUgQlJPVExJX1JFU0VBUkNIX1JFQURfRElTVF9IXworCisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPGNzdGRsaWI+ICAvKiBleGl0LCBFWElUX0ZBSUxVUkUgKi8KKworI2lmICFkZWZpbmVkKENIRUNLKQorI2RlZmluZSBDSEVDSyhYKSBpZiAoIShYKSkgZXhpdChFWElUX0ZBSUxVUkUpOworI2VuZGlmCisKKy8qIFJlYWRzIGJhY2t3YXJkcyByZWZlcmVuY2UgZnJvbSAuZGlzdCBmaWxlLiBTZXRzIGFsbCBtaXNzaW5nIGZpZWxkcyB0byAtMS4KKyAgIFJldHVybnMgZmFsc2Ugd2hlbiBFT0YgaXMgbWV0IG9yIGlucHV0IGlzIGNvcnJ1cHQuICovCitib29sIFJlYWRCYWNrd2FyZFJlZmVyZW5jZShGSUxFKiBmaW4sIGludCogY29weSwgaW50KiBwb3MsIGludCogZGlzdCkgeworICBpbnQgYyA9IGdldGMoZmluKTsKKyAgaWYgKGMgPT0gRU9GKSByZXR1cm4gZmFsc2U7CisgIGlmIChjID09IDApIHsKKyAgICBDSEVDSyhmcmVhZChjb3B5LCBzaXplb2YoaW50KSwgMSwgZmluKSA9PSAxKTsKKyAgICBpZiAoKGMgPSBnZXRjKGZpbikpICE9IDEpIHsKKyAgICAgIHVuZ2V0YyhjLCBmaW4pOworICAgICAgKnBvcyA9ICpkaXN0ID0gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgIENIRUNLKGZyZWFkKHBvcywgc2l6ZW9mKGludCksIDEsIGZpbikgPT0gMSk7CisgICAgICBDSEVDSyhmcmVhZChkaXN0LCBzaXplb2YoaW50KSwgMSwgZmluKSA9PSAxKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoYyAhPSAxKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9IGVsc2UgeworICAgIENIRUNLKGZyZWFkKHBvcywgc2l6ZW9mKGludCksIDEsIGZpbikgPT0gMSk7CisgICAgQ0hFQ0soZnJlYWQoZGlzdCwgc2l6ZW9mKGludCksIDEsIGZpbikgPT0gMSk7CisgICAgKmNvcHkgPSAtMTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmICAvKiBCUk9UTElfUkVTRUFSQ0hfUkVBRF9ESVNUX0hfICovCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvc2lldmUuY2MgYi90aGlyZF9wYXJ0eS9icm90bGkvcmVzZWFyY2gvc2lldmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxNDdlMQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9zaWV2ZS5jYwpAQCAtMCwwICsxLDI1OSBAQAorI2luY2x1ZGUgIi4vc2lldmUuaCIKKworLyogUG9pbnRlciB0byBwb3NpdGlvbiBpbiAoY29tYmluZWQgY29ycHVzKSB0ZXh0LiAqLwordHlwZWRlZiB1aW50MzJfdCBUZXh0SWR4OworCisvKiBJbmRleCBvZiBzYW1wbGUgLyBnZW5lcmF0aW9uLiAqLwordHlwZWRlZiB1aW50MTZfdCBTYW1wbGVJZHg7CisKK3R5cGVkZWYgc3RydWN0IFNsb3QgeworICBUZXh0SWR4IG5leHQ7CisgIFRleHRJZHggb2Zmc2V0OworICBTYW1wbGVJZHggcHJlc2VuY2U7CisgIFNhbXBsZUlkeCBtYXJrOworfSBTbG90OworCitzdGF0aWMgY29uc3QgVGV4dElkeCBrTm93aGVyZSA9IHN0YXRpY19jYXN0PFRleHRJZHg+KC0xKTsKKworc3RhdGljIFRleHRJZHggZHJ5UnVuKFRleHRJZHggc2xpY2VMZW4sIFNsb3QqIG1hcCwgVGV4dElkeCogc2hvcnRjdXQsCisgICAgVGV4dElkeCBlbmQsIFRleHRJZHggbWlkZGxlLCBTYW1wbGVJZHggbWluUHJlc2VuY2UsIFNhbXBsZUlkeCBpdGVyYXRpb24pIHsKKyAgVGV4dElkeCBmcm9tID0ga05vd2hlcmU7CisgIFRleHRJZHggdG8gPSBrTm93aGVyZTsKKyAgVGV4dElkeCByZXN1bHQgPSAwOworICBTYW1wbGVJZHggdGFyZ2V0UHJlc2VuY2UgPSBtaW5QcmVzZW5jZTsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICBpZiAoaSA9PSBtaWRkbGUpIHsKKyAgICAgIHRhcmdldFByZXNlbmNlKys7CisgICAgfQorICAgIFNsb3QmIGl0ZW0gPSBtYXBbc2hvcnRjdXRbaV1dOworICAgIGlmIChpdGVtLm1hcmsgIT0gaXRlcmF0aW9uKSB7CisgICAgICBpdGVtLm1hcmsgPSBpdGVyYXRpb247CisgICAgICBpZiAoaXRlbS5wcmVzZW5jZSA+PSB0YXJnZXRQcmVzZW5jZSkgeworICAgICAgICBpZiAoKHRvID09IGtOb3doZXJlKSB8fCAodG8gPCBpKSkgeworICAgICAgICAgIGlmIChmcm9tICE9IGtOb3doZXJlKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gdG8gLSBmcm9tOworICAgICAgICAgIH0KKyAgICAgICAgICBmcm9tID0gaTsKKyAgICAgICAgfQorICAgICAgICB0byA9IGkgKyBzbGljZUxlbjsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgaWYgKGZyb20gIT0ga05vd2hlcmUpIHsKKyAgICByZXN1bHQgKz0gdG8gLSBmcm9tOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBzdGQ6OnN0cmluZyBjcmVhdGVEaWN0aW9uYXJ5KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIFRleHRJZHggc2xpY2VMZW4sCisgICAgU2xvdCogbWFwLCBUZXh0SWR4KiBzaG9ydGN1dCwgVGV4dElkeCBlbmQsIFRleHRJZHggbWlkZGxlLAorICAgIFNhbXBsZUlkeCBtaW5QcmVzZW5jZSwgU2FtcGxlSWR4IGl0ZXJhdGlvbikgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIFRleHRJZHggZnJvbSA9IGtOb3doZXJlOworICBUZXh0SWR4IHRvID0ga05vd2hlcmU7CisgIFNhbXBsZUlkeCB0YXJnZXRQcmVzZW5jZSA9IG1pblByZXNlbmNlOworICBmb3IgKFRleHRJZHggaSA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgIGlmIChpID09IG1pZGRsZSkgeworICAgICAgdGFyZ2V0UHJlc2VuY2UrKzsKKyAgICB9CisgICAgU2xvdCYgaXRlbSA9IG1hcFtzaG9ydGN1dFtpXV07CisgICAgaWYgKGl0ZW0ubWFyayAhPSBpdGVyYXRpb24pIHsKKyAgICAgIGl0ZW0ubWFyayA9IGl0ZXJhdGlvbjsKKyAgICAgIGlmIChpdGVtLnByZXNlbmNlID49IHRhcmdldFByZXNlbmNlKSB7CisgICAgICAgIGlmICgodG8gPT0ga05vd2hlcmUpIHx8ICh0byA8IGkpKSB7CisgICAgICAgICAgaWYgKGZyb20gIT0ga05vd2hlcmUpIHsKKyAgICAgICAgICAgIG91dHB1dC5pbnNlcnQob3V0cHV0LmVuZCgpLCAmZGF0YVtmcm9tXSwgJmRhdGFbdG9dKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZnJvbSA9IGk7CisgICAgICAgIH0KKyAgICAgICAgdG8gPSBpICsgc2xpY2VMZW47CisgICAgICB9CisgICAgfQorICB9CisgIGlmIChmcm9tICE9IGtOb3doZXJlKSB7CisgICAgb3V0cHV0Lmluc2VydChvdXRwdXQuZW5kKCksICZkYXRhW2Zyb21dLCAmZGF0YVt0b10pOworICB9CisgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0ZDo6c3RyaW5nIHNpZXZlX2dlbmVyYXRlKHNpemVfdCBkaWN0aW9uYXJ5X3NpemVfbGltaXQsIHNpemVfdCBzbGljZV9sZW4sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgc2FtcGxlX3NpemVzLCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSkgeworICAvKiBQYXJhbWV0ZXJzIGFsaWFzaW5nICovCisgIFRleHRJZHggdGFyZ2V0U2l6ZSA9IHN0YXRpY19jYXN0PFRleHRJZHg+KGRpY3Rpb25hcnlfc2l6ZV9saW1pdCk7CisgIGlmICh0YXJnZXRTaXplICE9IGRpY3Rpb25hcnlfc2l6ZV9saW1pdCkgeworICAgIGZwcmludGYoc3RkZXJyLCAiZGljdGlvbmFyeV9zaXplX2xpbWl0IGlzIHRvbyBsYXJnZVxuIik7CisgICAgcmV0dXJuICIiOworICB9CisgIFRleHRJZHggc2xpY2VMZW4gPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihzbGljZV9sZW4pOworICBpZiAoc2xpY2VMZW4gIT0gc2xpY2VfbGVuKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJzbGljZV9sZW4gaXMgdG9vIGxhcmdlXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgaWYgKHNsaWNlTGVuIDwgMSkgeworICAgIGZwcmludGYoc3RkZXJyLCAic2xpY2VfbGVuIGlzIHRvbyBzbWFsbFxuIik7CisgICAgcmV0dXJuICIiOworICB9CisgIFNhbXBsZUlkeCBudW1TYW1wbGVzID0gc3RhdGljX2Nhc3Q8U2FtcGxlSWR4PihzYW1wbGVfc2l6ZXMuc2l6ZSgpKTsKKyAgaWYgKChudW1TYW1wbGVzICE9IHNhbXBsZV9zaXplcy5zaXplKCkpIHx8IChudW1TYW1wbGVzICogMiA8IG51bVNhbXBsZXMpKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJ0b28gbWFueSBzYW1wbGVzXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgY29uc3QgdWludDhfdCogZGF0YSA9IHNhbXBsZV9kYXRhOworCisgIFRleHRJZHggdG90YWwgPSAwOworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBvZmZzZXRzOworICBmb3IgKFNhbXBsZUlkeCBpID0gMDsgaSA8IG51bVNhbXBsZXM7ICsraSkgeworICAgIFRleHRJZHggZGVsdGEgPSBzdGF0aWNfY2FzdDxUZXh0SWR4PihzYW1wbGVfc2l6ZXNbaV0pOworICAgIGlmIChkZWx0YSAhPSBzYW1wbGVfc2l6ZXNbaV0pIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAic2FtcGxlIGlzIHRvbyBsYXJnZVxuIik7CisgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIGlmIChkZWx0YSA9PSAwKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImVtcHR5IHNhbXBsZXMgYXJlIHByb2hpYml0ZWRcbiIpOworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBpZiAodG90YWwgKyBkZWx0YSA8PSB0b3RhbCkgeworICAgICAgZnByaW50ZihzdGRlcnIsICJjb3JwdXMgaXMgdG9vIGxhcmdlXG4iKTsKKyAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgdG90YWwgKz0gZGVsdGE7CisgICAgb2Zmc2V0cy5wdXNoX2JhY2sodG90YWwpOworICB9CisKKyAgaWYgKHRvdGFsICogMiA8IHRvdGFsKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJjb3JwdXMgaXMgdG9vIGxhcmdlXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICBpZiAodG90YWwgPCBzbGljZUxlbikgeworICAgIGZwcmludGYoc3RkZXJyLCAic2xpY2VfbGVuIGlzIGxhcmdlciB0aGFuIGNvcnB1cyBzaXplXG4iKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICogQnVpbGQgY292ZXJhZ2UgbWFwLgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgc3RkOjp2ZWN0b3I8U2xvdD4gbWFwOworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBzaG9ydGN1dDsKKyAgbWFwLnB1c2hfYmFjayh7MCwgMCwgMCwgMH0pOworICBUZXh0SWR4IGVuZCA9IHRvdGFsIC0gc2xpY2VMZW47CisgIFRleHRJZHggaGFzaExlbiA9IDExOworICB3aGlsZSAoaGFzaExlbiA8IDI5ICYmICgoMXUgPDwgaGFzaExlbikgPCBlbmQpKSB7CisgICAgaGFzaExlbiArPSAzOworICB9CisgIGhhc2hMZW4gLT0gMzsKKyAgVGV4dElkeCBoYXNoTWFzayA9ICgxdSA8PCBoYXNoTGVuKSAtIDF1OworICBzdGQ6OnZlY3RvcjxUZXh0SWR4PiBoYXNoSGVhZCgxIDw8IGhhc2hMZW4pOworICBUZXh0SWR4IGhhc2hTbG90ID0gMTsKKyAgU2FtcGxlSWR4IHBpZWNlID0gMDsKKyAgVGV4dElkeCBoYXNoID0gMDsKKyAgVGV4dElkeCBsU2hpZnQgPSAzOworICBUZXh0SWR4IHJTaGlmdCA9IGhhc2hMZW4gLSBsU2hpZnQ7CisgIGZvciAoVGV4dElkeCBpID0gMDsgaSA8IHNsaWNlTGVuIC0gMTsgKytpKSB7CisgICAgVGV4dElkeCB2ID0gZGF0YVtpXTsKKyAgICBoYXNoID0gKCgoaGFzaCA8PCBsU2hpZnQpIHwgKGhhc2ggPj4gclNoaWZ0KSkgJiBoYXNoTWFzaykgXiB2OworICB9CisgIFRleHRJZHggbFNoaWZ0WCA9IChsU2hpZnQgKiAoc2xpY2VMZW4gLSAxKSkgJSBoYXNoTGVuOworICBUZXh0SWR4IHJTaGlmdFggPSBoYXNoTGVuIC0gbFNoaWZ0WDsKKyAgZm9yIChUZXh0SWR4IGkgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICBUZXh0SWR4IHYgPSBkYXRhW2kgKyBzbGljZUxlbiAtIDFdOworICAgIGhhc2ggPSAoKChoYXNoIDw8IGxTaGlmdCkgfCAoaGFzaCA+PiByU2hpZnQpKSAmIGhhc2hNYXNrKSBeIHY7CisKKyAgICBpZiAob2Zmc2V0c1twaWVjZV0gPT0gaSkgeworICAgICAgcGllY2UrKzsKKyAgICB9CisgICAgVGV4dElkeCBzbG90ID0gaGFzaEhlYWRbaGFzaF07CisgICAgd2hpbGUgKHNsb3QgIT0gMCkgeworICAgICAgU2xvdCYgaXRlbSA9IG1hcFtzbG90XTsKKyAgICAgIFRleHRJZHggc3RhcnQgPSBpdGVtLm9mZnNldDsKKyAgICAgIGJvb2wgbWlzcyA9IGZhbHNlOworICAgICAgZm9yIChUZXh0SWR4IGogPSAwOyBqIDwgc2xpY2VMZW47ICsraikgeworICAgICAgICBpZiAoZGF0YVtpICsgal0gIT0gZGF0YVtzdGFydCArIGpdKSB7CisgICAgICAgICAgbWlzcyA9IHRydWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmICghbWlzcykgeworICAgICAgICBpZiAoaXRlbS5tYXJrICE9IHBpZWNlKSB7CisgICAgICAgICAgaXRlbS5tYXJrID0gcGllY2U7CisgICAgICAgICAgaXRlbS5wcmVzZW5jZSsrOworICAgICAgICB9CisgICAgICAgIHNob3J0Y3V0LnB1c2hfYmFjayhzbG90KTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBzbG90ID0gaXRlbS5uZXh0OworICAgIH0KKyAgICBpZiAoc2xvdCA9PSAwKSB7CisgICAgICBtYXAucHVzaF9iYWNrKHtoYXNoSGVhZFtoYXNoXSwgaSwgMSwgcGllY2V9KTsKKyAgICAgIGhhc2hIZWFkW2hhc2hdID0gaGFzaFNsb3Q7CisgICAgICBzaG9ydGN1dC5wdXNoX2JhY2soaGFzaFNsb3QpOworICAgICAgaGFzaFNsb3QrKzsKKyAgICB9CisgICAgdiA9IGRhdGFbaV07CisgICAgaGFzaCBePSAoKHYgPDwgbFNoaWZ0WCkgfCAodiA+PiByU2hpZnRYKSkgJiBoYXNoTWFzazsKKyAgfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBCdWlsZCBkaWN0aW9uYXJ5IG9mIHNwZWNpZmllZCBzaXplLgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgU2FtcGxlSWR4IGEgPSAxOworICBUZXh0SWR4IHNpemUgPSBkcnlSdW4oCisgICAgICBzbGljZUxlbiwgbWFwLmRhdGEoKSwgc2hvcnRjdXQuZGF0YSgpLCBlbmQsIGVuZCwgYSwgKytwaWVjZSk7CisgIC8qIE1heGltYWwgb3V0cHV0IGlzIHNtYWxsZXIgdGhhbiB0YXJnZXQuICovCisgIGlmIChzaXplIDw9IHRhcmdldFNpemUpIHsKKyAgICByZXR1cm4gY3JlYXRlRGljdGlvbmFyeSgKKyAgICAgICAgZGF0YSwgc2xpY2VMZW4sIG1hcC5kYXRhKCksIHNob3J0Y3V0LmRhdGEoKSwgZW5kLCBlbmQsIGEsICsrcGllY2UpOworICB9CisKKyAgU2FtcGxlSWR4IGIgPSBudW1TYW1wbGVzOworICBzaXplID0gZHJ5UnVuKHNsaWNlTGVuLCBtYXAuZGF0YSgpLCBzaG9ydGN1dC5kYXRhKCksIGVuZCwgZW5kLCBiLCArK3BpZWNlKTsKKyAgaWYgKHNpemUgPT0gdGFyZ2V0U2l6ZSkgeworICAgIHJldHVybiBjcmVhdGVEaWN0aW9uYXJ5KAorICAgICAgICBkYXRhLCBzbGljZUxlbiwgbWFwLmRhdGEoKSwgc2hvcnRjdXQuZGF0YSgpLCBlbmQsIGVuZCwgYiwgKytwaWVjZSk7CisgIH0KKyAgLyogUnVuIGJpbmFyeSBzZWFyY2guICovCisgIGlmIChzaXplIDwgdGFyZ2V0U2l6ZSkgeworICAgIC8qIHNpemUoYSkgPiB0YXJnZXRTaXplID4gc2l6ZShiKSAmJiBhIDwgbSA8IGIgKi8KKyAgICB3aGlsZSAoYSArIDEgPCBiKSB7CisgICAgICBTYW1wbGVJZHggbSA9IHN0YXRpY19jYXN0PFNhbXBsZUlkeD4oKGEgKyBiKSAvIDIpOworICAgICAgc2l6ZSA9IGRyeVJ1bigKKyAgICAgICAgICBzbGljZUxlbiwgbWFwLmRhdGEoKSwgc2hvcnRjdXQuZGF0YSgpLCBlbmQsIGVuZCwgbSwgKytwaWVjZSk7CisgICAgICBpZiAoc2l6ZSA8IHRhcmdldFNpemUpIHsKKyAgICAgICAgYiA9IG07CisgICAgICB9IGVsc2UgaWYgKHNpemUgPiB0YXJnZXRTaXplKSB7CisgICAgICAgIGEgPSBtOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZURpY3Rpb25hcnkoCisgICAgICAgICAgICBkYXRhLCBzbGljZUxlbiwgbWFwLmRhdGEoKSwgc2hvcnRjdXQuZGF0YSgpLCBlbmQsIGVuZCwgYiwgKytwaWVjZSk7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgeworICAgIGEgPSBiOworICB9CisgIC8qIHNpemUobWluUHJlc2VuY2UpID4gdGFyZ2V0U2l6ZSA+IHNpemUobWluUHJlc2VuY2UgKyAxKSAqLworICBTYW1wbGVJZHggbWluUHJlc2VuY2UgPSBhOworICBUZXh0SWR4IGMgPSAwOworICBUZXh0SWR4IGQgPSBlbmQ7CisgIC8qIHNpemUoYSkgPCB0YXJnZXRTaXplIDwgc2l6ZShiKSAmJiBhIDwgbSA8IGIgKi8KKyAgd2hpbGUgKGMgKyAxIDwgZCkgeworICAgIFRleHRJZHggbSA9IChjICsgZCkgLyAyOworICAgIHNpemUgPSBkcnlSdW4oCisgICAgICAgIHNsaWNlTGVuLCBtYXAuZGF0YSgpLCBzaG9ydGN1dC5kYXRhKCksIGVuZCwgbSwgbWluUHJlc2VuY2UsICsrcGllY2UpOworICAgIGlmIChzaXplIDwgdGFyZ2V0U2l6ZSkgeworICAgICAgYyA9IG07CisgICAgfSBlbHNlIGlmIChzaXplID4gdGFyZ2V0U2l6ZSkgeworICAgICAgZCA9IG07CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBjcmVhdGVEaWN0aW9uYXJ5KGRhdGEsIHNsaWNlTGVuLCBtYXAuZGF0YSgpLCBzaG9ydGN1dC5kYXRhKCksIGVuZCwKKyAgICAgICAgICBtLCBtaW5QcmVzZW5jZSwgKytwaWVjZSk7CisgICAgfQorICB9CisKKyAgYm9vbCB1bnJlc3RyaWN0ZWQgPSBmYWxzZTsKKyAgaWYgKG1pblByZXNlbmNlIDw9IDIgJiYgIXVucmVzdHJpY3RlZCkgeworICAgIG1pblByZXNlbmNlID0gMjsKKyAgICBjID0gZW5kOworICB9CisgIHJldHVybiBjcmVhdGVEaWN0aW9uYXJ5KGRhdGEsIHNsaWNlTGVuLCBtYXAuZGF0YSgpLCBzaG9ydGN1dC5kYXRhKCksIGVuZCwgYywKKyAgICAgIG1pblByZXNlbmNlLCArK3BpZWNlKTsKK30KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9zaWV2ZS5oIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Jlc2VhcmNoL3NpZXZlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM2NWRjOAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9yZXNlYXJjaC9zaWV2ZS5oCkBAIC0wLDAgKzEsMjEgQEAKKyNpZm5kZWYgQlJPVExJX1JFU0VBUkNIX1NJRVZFX0hfCisjZGVmaW5lIEJST1RMSV9SRVNFQVJDSF9TSUVWRV9IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKy8qKgorICogR2VuZXJhdGUgYSBkaWN0aW9uYXJ5IGZvciBnaXZlbiBzYW1wbGVzLgorICoKKyAqIEBwYXJhbSBkaWN0aW9uYXJ5X3NpemVfbGltaXQgbWF4aW1hbCBkaWN0aW9uYXJ5IHNpemUKKyAqIEBwYXJhbSBzbGljZV9sZW4gdGV4dCBzbGljZSBzaXplCisgKiBAcGFyYW0gc2FtcGxlX3NpemVzIHZlY3RvciB3aXRoIHNhbXBsZSBzaXplcworICogQHBhcmFtIHNhbXBsZV9kYXRhIGNvbmNhdGVuYXRlZCBzYW1wbGVzCisgKiBAcmV0dXJuIGdlbmVyYXRlZCBkaWN0aW9uYXJ5CisgKi8KK3N0ZDo6c3RyaW5nIHNpZXZlX2dlbmVyYXRlKHNpemVfdCBkaWN0aW9uYXJ5X3NpemVfbGltaXQsIHNpemVfdCBzbGljZV9sZW4sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgc2FtcGxlX3NpemVzLCBjb25zdCB1aW50OF90KiBzYW1wbGVfZGF0YSk7CisKKyNlbmRpZiAgLy8gQlJPVExJX1JFU0VBUkNIX1NJRVZFX0hfCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy8uYmludHJheS5qc29uIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvLmJpbnRyYXkuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y5OWVkCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvLmJpbnRyYXkuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICAgInBhY2thZ2UiOiB7CisgICAgICAgICJuYW1lIjogImJpbiIsCisgICAgICAgICJyZXBvIjogImJyb3RsaSIsCisgICAgICAgICJzdWJqZWN0IjogImV1c3RhcyIKKyAgICB9LAorCisgICAgInZlcnNpb24iOiB7Im5hbWUiOiAibGF0ZXN0In0sCisKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpbmNsdWRlUGF0dGVybiI6ICJicm90bGkuemlwIiwKKyAgICAgICAgICAgICJ1cGxvYWRQYXR0ZXJuIjogImJyb3RsaS0ke1RSQVZJU19PU19OQU1FfS0ke1JFTEVBU0VfREFURX0uemlwIiwKKyAgICAgICAgICAgICJtYXRyaXhfcGFyYW1zIjogeyJvdmVycmlkZSI6IDF9CisgICAgICAgIH0KKyAgICBdLAorCisgICAgInB1Ymxpc2giOiB0cnVlCit9CmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy8uY29uZmlndXJlLWN1c3RvbS5zaCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9zY3JpcHRzLy5jb25maWd1cmUtY3VzdG9tLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjY0MWEKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy8uY29uZmlndXJlLWN1c3RvbS5zaApAQCAtMCwwICsxIEBACisjIS91c3IvYmluL2VudiBiYXNoCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy8udHJhdmlzLnNoIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvLnRyYXZpcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iNWFkMTNhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvLnRyYXZpcy5zaApAQCAtMCwwICsxLDgxIEBACisjIS9iaW4vYmFzaAorCitjYXNlICIkMSIgaW4KKyAgICAiYmVmb3JlX2luc3RhbGwiKQorCTs7CisgICAgImluc3RhbGwiKQorCWNhc2UgIiR7VFJBVklTX09TX05BTUV9IiBpbgorCSAgICAib3N4IikKKwkJYnJldyB1cGRhdGUgPi9kZXYvbnVsbAorCQlicmV3IGluc3RhbGwgYmludXRpbHMKKworCQljYXNlICIke0NDfSIgaW4KKwkJICAgICJnY2MtIiopCisJCQl3aGljaCAke0NDfSB8fCBicmV3IGluc3RhbGwgJChlY2hvICIke0NDfSIgfCBzZWQgJ3MvXC0vQC8nKSB8fCBicmV3IGxpbmsgLS1vdmVyd3JpdGUgJChlY2hvICIke0NDfSIgfCBzZWQgJ3MvXC0vQC8nKQorCQkJOzsKKwkJZXNhYworCisJCWNhc2UgIiR7QlVJTERfU1lTVEVNfSIgaW4KKwkJICAgICJiYXplbCIpCisJCQlicmV3IGNhc2sgaW5zdGFsbCBob21lYnJldy9jYXNrLXZlcnNpb25zL2Fkb3B0b3BlbmpkazgKKwkJCWJyZXcgaW5zdGFsbCBiYXplbAorCQkJOzsKKwkJZXNhYworCQk7OworCSAgICAibGludXgiKQorCQljYXNlICIke0NDfSIgaW4KKwkJICAgICJwZ2NjIikKKwkJCXdnZXQgJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9uZW1lcXUvcGdpLXRyYXZpcy9kZTYyMTJkOTRmZDBlN2QwN2E2ZWY3MzBjMjM1NDhjMzM3YzQzNmE3L2luc3RhbGwtcGdpLnNoJworCQkJZWNobyAnYWNkM2VmOTk1YWQ5M2NmYjg3ZDI2ZjY1MTQ3Mzk1ZGNiZWRkNGMzYzg0NGVlNmVjMzk2MTZmMWEzNDdjOGRmNSAgaW5zdGFsbC1wZ2kuc2gnIHwgc2hhMjU2c3VtIC1jIC0tc3RyaWN0IHx8IGV4aXQgMQorCQkJL2Jpbi9zaCBpbnN0YWxsLXBnaS5zaAorCQkJOzsKKwkJZXNhYworCQk7OworCWVzYWMKKwk7OworICAgICJzY3JpcHQiKQorCWNhc2UgIiR7QlVJTERfU1lTVEVNfSIgaW4KKwkgICAgImNtYWtlIikKKwkJbWtkaXIgYnVpbGRkaXIgJiYgY2QgYnVpbGRkaXIKKwkJQ01BS0VfRkxBR1M9CisJCWlmIFsgIiR7Q1JPU1NfQ09NUElMRX0iID0gInllcyIgXTsgdGhlbgorCQkgICAgQ01BS0VfRkxBR1M9Ii1EQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9QUk9HUkFNPU5FVkVSIC1EQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9MSUJSQVJZPU9OTFkgLURDTUFLRV9GSU5EX1JPT1RfUEFUSF9NT0RFX0lOQ0xVREU9T05MWSAtRENNQUtFX1NZU1RFTV9OQU1FPVdpbmRvd3MgLURDTUFLRV9SQ19DT01QSUxFUj0ke1JDX0NPTVBJTEVSfSIKKwkJZmkKKwkJY21ha2UgJHtDTUFLRV9GTEFHU30gLURDTUFLRV9DX0NPTVBJTEVSPSIkQ0MiIC1EQ01BS0VfQ1hYX0NPTVBJTEVSPSIkQ1hYIiAtREVOQUJMRV9TQU5JVElaRVI9IiR7U0FOSVRJWkVSfSIgLURDTUFLRV9DX0ZMQUdTPSIke0NGTEFHU30iIC4uIHx8IGV4aXQgMQorCQltYWtlIFZFUkJPU0U9MSB8fCBleGl0IDEKKwkJY3Rlc3QgLVYgfHwgZXhpdCAxCisJCTs7CisJICAgICJweXRob24iKQorCQlweXRob24gc2V0dXAucHkgdGVzdAorCQk7OworCSAgICAibWF2ZW4iKQorCQljZCBqYXZhL29yZy9icm90bGkKKwkJbXZuIGluc3RhbGwgJiYgY2QgaW50ZWdyYXRpb24gJiYgbXZuIHZlcmlmeQorCQk7OworCSAgICAiYXV0b3Rvb2xzIikKKwkJLi9ib290c3RyYXAgJiYgLi9jb25maWd1cmUgJiYgbWFrZQorCQk7OworCSAgICAiZnV6eiIpCisJCS4vYy9mdXp6L3Rlc3RfZnV6emVyLnNoCisJCTs7CisJICAgICJiYXplbCIpCisJCWJhemVsIGJ1aWxkIC1jIG9wdCAuLi46YWxsICYmCisJCWNkIGdvICYmIGJhemVsIHRlc3QgLWMgb3B0IC4uLjphbGwgJiYgY2QgLi4gJiYKKwkJY2QgamF2YSAmJiBiYXplbCB0ZXN0IC1jIG9wdCAuLi46YWxsICYmIGNkIC4uICYmCisJCWNkIGpzICYmIGJhemVsIHRlc3QgLWMgb3B0IC4uLjphbGwgJiYgY2QgLi4gJiYKKwkJY2QgcmVzZWFyY2ggJiYgYmF6ZWwgYnVpbGQgLWMgb3B0IC4uLjphbGwgJiYgY2QgLi4KKwkJOzsKKwllc2FjCisJOzsKKyAgICAiYWZ0ZXJfc3VjY2VzcyIpCisJOzsKKyAgICAiYmVmb3JlX2RlcGxveSIpCisJY2FzZSAiJHtCVUlMRF9TWVNURU19IiBpbgorCSAgICAiYmF6ZWwiKQorCQlleHBvcnQgUkVMRUFTRV9EQVRFPWBkYXRlICslWS0lbS0lZGAKKwkJcGVybCAtcCAtaSAtZSAncy9cJFx7KFtefV0rKVx9L2RlZmluZWQgJEVOVnskMX0gPyAkRU5WeyQxfSA6ICQmL2VnJyBzY3JpcHRzLy5iaW50cmF5Lmpzb24KKwkJemlwIC1qOSBicm90bGkuemlwIGJhemVsLWJpbi9saWJicm90bGkqLmEgYmF6ZWwtYmluL2xpYmJyb3RsaSouc28gYmF6ZWwtYmluL2Jyb3RsaQorCQk7OworCWVzYWMKKwk7OworZXNhYwpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvYXBwdmV5b3IueW1sIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvYXBwdmV5b3IueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmY2NWEKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9hcHB2ZXlvci55bWwKQEAgLTAsMCArMSwxMTEgQEAKK2JyYW5jaGVzOg0KKyAgb25seToNCisgIC0gbWFzdGVyDQorDQorZW52aXJvbm1lbnQ6DQorICBtYXRyaXg6DQorICAtIEFQUFZFWU9SX0JVSUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE3DQorICAgIEJVSUxEX1NZU1RFTTogQ01ha2UNCisgICAgR0VORVJBVE9SOiBWaXN1YWwgU3R1ZGlvIDE1IDIwMTcgV2luNjQNCisgICAgQ09ORklHOiBSZWxlYXNlDQorDQorICAtIEFQUFZFWU9SX0JVSUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE3DQorICAgIEJVSUxEX1NZU1RFTTogQ01ha2UNCisgICAgR0VORVJBVE9SOiBWaXN1YWwgU3R1ZGlvIDE1IDIwMTcgV2luNjQNCisgICAgQ09ORklHOiBEZWJ1Zw0KKw0KKyAgLSBCVUlMRF9TWVNURU06IENNYWtlDQorICAgIEdFTkVSQVRPUjogVmlzdWFsIFN0dWRpbyAxNCAyMDE1IFdpbjY0DQorICAgIENPTkZJRzogRGVidWcNCisNCisgIC0gQlVJTERfU1lTVEVNOiBDTWFrZQ0KKyAgICBHRU5FUkFUT1I6IFZpc3VhbCBTdHVkaW8gMTQgMjAxNQ0KKyAgICBDT05GSUc6IERlYnVnDQorDQorICAtIEJVSUxEX1NZU1RFTTogUHl0aG9uDQorICAgIFBZVEhPTjogIkM6XFxQeXRob24yNyINCisgICAgUFlUSE9OX1ZFUlNJT046ICIyLjcueCINCisgICAgUFlUSE9OX0FSQ0g6ICIzMiINCisNCisgIC0gQlVJTERfU1lTVEVNOiBQeXRob24NCisgICAgUFlUSE9OOiAiQzpcXFB5dGhvbjM2LXg2NCINCisgICAgUFlUSE9OX1ZFUlNJT046ICIzLjYueCINCisgICAgUFlUSE9OX0FSQ0g6ICI2NCINCisNCisgIC0gQlVJTERfU1lTVEVNOiBtYWtlDQorICAgIEFSQ0g6ICJpNjg2Ig0KKw0KKyAgLSBCVUlMRF9TWVNURU06IG1ha2UNCisgICAgQVJDSDogIng4Nl82NCINCisNCisgIC0gQlVJTERfU1lTVEVNOiBiYXplbA0KKw0KK2luc3RhbGw6DQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0iUHl0aG9uIiAoDQorICAgIFNFVCAiUEFUSD0lUFlUSE9OJTslUFlUSE9OJVxTY3JpcHRzOyVQQVRIJSIgJiYNCisgICAgcHl0aG9uIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAgJiYNCisgICAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHNldHVwdG9vbHMNCisgICkNCistIElGICIlQlVJTERfU1lTVEVNJSI9PSJtYWtlIiAoDQorICAgIElGICIlQVJDSCUiPT0iaTY4NiIgKA0KKyAgICAgIFNFVCAiVE9PTENIQUlOPWk2ODYtNi4zLjAtcG9zaXgtZHdhcmYtcnRfdjUtcmV2MVxtaW5ndzMyIg0KKyAgICApIEVMU0UgKA0KKyAgICAgIFNFVCAiVE9PTENIQUlOPXg4Nl82NC03LjMuMC1wb3NpeC1zZWgtcnRfdjUtcmV2MFxtaW5ndzY0Ig0KKyAgICApDQorICApDQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0iYmF6ZWwiICgNCisgICAgYXBwdmV5b3IgRG93bmxvYWRGaWxlIGh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL2JhemVsL3JlbGVhc2VzL2Rvd25sb2FkLzIuMi4wL2JhemVsLTIuMi4wLXdpbmRvd3MteDg2XzY0LmV4ZSAtRmlsZU5hbWUgYmF6ZWwuZXhlDQorICApDQorDQorYmVmb3JlX2J1aWxkOg0KKy0gRk9SIC9mICUlaSBpbiAoJ0M6XGN5Z3dpbjY0XGJpblxkYXRlLmV4ZSArJSVZLSUlbS0lJWQnKSBETyBTRVQgIlJFTEVBU0VfREFURT0lJWkiDQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0iQ01ha2UiICggbWtkaXIgYnVpbGRkaXIgJiYgY2QgYnVpbGRkaXIgJiYgY21ha2UgLUcgIiVHRU5FUkFUT1IlIiAuLiApDQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0ibWFrZSIgKA0KKyAgICBTRVQgIkNDPWdjYyIgJiYNCisgICAgU0VUICJQQVRIPUM6XG1pbmd3LXc2NFwlVE9PTENIQUlOJVxiaW47JVBBVEglIiAmJg0KKyAgICBDT1BZIEM6XG1zeXM2NFx1c3JcYmluXG1ha2UuZXhlIEM6XG1pbmd3LXc2NFwlVE9PTENIQUlOJVxiaW5cbWFrZS5leGUNCisgICkNCistIFNFVCAiUk9PVD0lQVBQVkVZT1JfQlVJTERfRk9MREVSJSINCisNCitidWlsZF9zY3JpcHQ6DQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0iQ01ha2UiICggY21ha2UgLS1idWlsZCAuIC0tY29uZmlnICVDT05GSUclICkNCistIElGICIlQlVJTERfU1lTVEVNJSI9PSJQeXRob24iICggcHl0aG9uIHNldHVwLnB5IGJ1aWxkX2V4dCApDQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0ibWFrZSIgKA0KKyAgICBzaCAtYyAibWFrZSBicm90bGkiICYmDQorICAgIGNkIGJpbiAmJiA3eiBhIC10emlwIC1teDkgYnJvdGxpLXdpbi0lQVJDSCUtJVJFTEVBU0VfREFURSUuemlwIGJyb3RsaS5leGUgJiYNCisgICAgYXBwdmV5b3IgUHVzaEFydGlmYWN0IGJyb3RsaS13aW4tJUFSQ0glLSVSRUxFQVNFX0RBVEUlLnppcCAmJiBjZCAuLg0KKyAgKQ0KKy0gSUYgIiVCVUlMRF9TWVNURU0lIj09ImJhemVsIiAoDQorICAgIGNkIGphdmEgJiYNCisgICAgICAlUk9PVCVcYmF6ZWwuZXhlIC0tYmF0Y2ggYnVpbGQgLWMgb3B0IG9yZy9icm90bGkvd3JhcHBlci8uLi46YWxsICYmDQorICAgICAgcHl0aG9uICVST09UJVxzY3JpcHRzXGZpeC13aW4tYmF6ZWwtYnVpbGQucHkgJiYNCisgICAgICBjZCBiYXplbC1iaW4gJiYNCisgICAgICAgIDd6IGEgLXR6aXAgLW14OSBicm90bGktd2luLWJhemVsLWpuaS0lUkVMRUFTRV9EQVRFJS56aXAgYnJvdGxpX2puaS5kbGwgJiYNCisgICAgICAgIGFwcHZleW9yIFB1c2hBcnRpZmFjdCBicm90bGktd2luLWJhemVsLWpuaS0lUkVMRUFTRV9EQVRFJS56aXAgJiYNCisgICAgICBjZCAuLiAmJg0KKyAgICBjZCAuLg0KKyAgKQ0KKw0KK3Rlc3Rfc2NyaXB0Og0KKy0gSUYgIiVCVUlMRF9TWVNURU0lIj09IkNNYWtlIiAoIGN0ZXN0IC0tb3V0cHV0LW9uLWZhaWx1cmUgLS1pbnRlcmFjdGl2ZS1kZWJ1Zy1tb2RlIDAgLUMgJUNPTkZJRyUgKQ0KKy0gSUYgIiVCVUlMRF9TWVNURU0lIj09IlB5dGhvbiIgKCBweXRob24gc2V0dXAucHkgdGVzdCApDQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0ibWFrZSIgKCBzaCAtYyAibWFrZSB0ZXN0IiApDQorLSBJRiAiJUJVSUxEX1NZU1RFTSUiPT0iYmF6ZWwiICgNCisgICAgY2QgamF2YSAmJg0KKyAgICAgICVST09UJVxiYXplbC5leGUgLS1iYXRjaCB0ZXN0IC1jIG9wdCAtLXRlc3Rfb3V0cHV0IHN0cmVhbWVkIG9yZy9icm90bGkvd3JhcHBlci8uLi46YWxsICYmDQorICAgIGNkIC4uDQorICApDQorDQorZGVwbG95Og0KKy0gcHJvdmlkZXI6IEJpblRyYXkNCisgIG9uOg0KKyAgICBicmFuY2g6IG1hc3Rlcg0KKyAgdXNlcm5hbWU6IGV1c3Rhcw0KKyAgYXBpX2tleToNCisgICAgc2VjdXJlOiBCM3JNOEpZZUlISXc2QmZPakhnZ0FleVRteEVmOFpEWW15RjlnQ3dxeVdheHl4RUNEOUJ1TjUwU2lWMktFL1JJDQorICBzdWJqZWN0OiBldXN0YXMNCisgIHJlcG86IGJyb3RsaQ0KKyAgcGFja2FnZTogYmluDQorICB2ZXJzaW9uOiBsYXRlc3QNCisgIHB1Ymxpc2g6IHRydWUNCisgIG92ZXJyaWRlOiB0cnVlDQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvZGljdGlvbmFyeS9SRUFETUUubWQgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjZhODJjCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvZGljdGlvbmFyeS9SRUFETUUubWQKQEAgLTAsMCArMSwzIEBACitTZXQgb2YgdG9vbHMgdGhhdCBjYW4gYmUgdXNlZCB0byBkb3dubG9hZCBicm90bGkgUkZDLCBleHRyYWN0IGFuZCB2YWxpZGF0ZQorYmluYXJ5IGRpY3Rpb25hcnksIGFuZCBnZW5lcmF0ZSBkaWN0aW9uYXJ5IGRlcml2YXRpdmVzCisoZS5nLiBKYXZhIGBEaWN0aW9uYXJ5RGF0YWAgY2xhc3MgY29uc3RhbnRzKS4KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS9zY3JpcHRzL2RpY3Rpb25hcnkvc3RlcC0wMS1kb3dubG9hZC1yZmMucHkgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDEtZG93bmxvYWQtcmZjLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZjY1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDEtZG93bmxvYWQtcmZjLnB5CkBAIC0wLDAgKzEsMTYgQEAKKyMgU3RlcCAwMSAtIGRvd25sb2FkIFJGQzc5MzIuCisjCisjIFJGQyBpcyB0aGUgdWx0aW1hdGUgc291cmNlIGZvciBicm90bGkgZm9ybWF0IGFuZCBjb25zdGFudHMsIGluY2x1ZGluZworIyBzdGF0aWMgZGljdGlvbmFyeS4KKworaW1wb3J0IHVybGxpYjIKKworcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4oJ2h0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvcmZjL3JmYzc5MzIudHh0JykKKwordGV4dCA9IHJlc3BvbnNlLnJlYWQoKQorcGF0aCA9ICJyZmM3OTMyLnR4dCIKKword2l0aCBvcGVuKHBhdGgsICJ3IikgYXMgcmZjOgorICByZmMud3JpdGUodGV4dCkKKworcHJpbnQoIkRvd25sb2FkZWQgYW5kIHNhdmVkICIgKyBzdHIobGVuKHRleHQpKSArICIgYnl0ZXMgdG8gIiArIHBhdGgpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDItcmZjLXRvLWJpbi5weSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9zY3JpcHRzL2RpY3Rpb25hcnkvc3RlcC0wMi1yZmMtdG8tYmluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzM3YzUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDItcmZjLXRvLWJpbi5weQpAQCAtMCwwICsxLDM0IEBACisjIFN0ZXAgMDIgLSBwYXJzZSBSRkMuCisjCisjIFN0YXRpYyBkaWN0aW9uYXJ5IGlzIGRlc2NyaWJlZCBpbiAiQXBwZW5kaXggQSIgc2VjdGlvbiBpbiBhIGhleGFkZWNpbWFsIGZvcm0uCisjIFRoaXMgdG9vbCBsb2NhdGVzIGRpY3Rpb25hcnkgZGF0YSBpbiBSRkMgYW5kIGNvbnZlcnRzIGl0IHRvIHJhdyBiaW5hcnkgZm9ybWF0LgorCitpbXBvcnQgcmUKKworcmZjX3BhdGggPSAicmZjNzkzMi50eHQiCisKK3dpdGggb3BlbihyZmNfcGF0aCwgInIiKSBhcyByZmM6CisgIGxpbmVzID0gcmZjLnJlYWRsaW5lcygpCisKK3JlX2RhdGFfbGluZSA9IHJlLmNvbXBpbGUoIl4gICAgICBbMC05YS1mXXs2NH0kIikKKworYXBwZW5kaXhfYV9mb3VuZCA9IEZhbHNlCitkaWN0aW9uYXJ5ID0gW10KK2ZvciBsaW5lIGluIGxpbmVzOgorICBpZiBhcHBlbmRpeF9hX2ZvdW5kOgorICAgIGlmIHJlX2RhdGFfbGluZS5tYXRjaChsaW5lKSBpcyBub3QgTm9uZToKKyAgICAgIGRhdGEgPSBsaW5lLnN0cmlwKCkKKyAgICAgIGZvciBpIGluIHJhbmdlKDMyKToKKyAgICAgICAgZGljdGlvbmFyeS5hcHBlbmQoaW50KGRhdGFbMiAqIGkgOiAyICogaSArIDJdLCAxNikpCisgICAgICBpZiBsZW4oZGljdGlvbmFyeSkgPT0gMTIyNzg0OgorICAgICAgICBicmVhaworICBlbHNlOgorICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQXBwZW5kaXggQS4iKToKKyAgICAgIGFwcGVuZGl4X2FfZm91bmQgPSBUcnVlCisKK2Jpbl9wYXRoID0gImRpY3Rpb25hcnkuYmluIgorCit3aXRoIG9wZW4oYmluX3BhdGgsICJ3YiIpIGFzIG91dHB1dDoKKyAgb3V0cHV0LndyaXRlKGJ5dGVhcnJheShkaWN0aW9uYXJ5KSkKKworcHJpbnQoIlBhcnNlZCBhbmQgc2F2ZWQgIiArIHN0cihsZW4oZGljdGlvbmFyeSkpICsgIiBieXRlcyB0byAiICsgYmluX3BhdGgpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDMtdmFsaWRhdGUtYmluLnB5IGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvZGljdGlvbmFyeS9zdGVwLTAzLXZhbGlkYXRlLWJpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzFjYzliCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvZGljdGlvbmFyeS9zdGVwLTAzLXZhbGlkYXRlLWJpbi5weQpAQCAtMCwwICsxLDM4IEBACisjIFN0ZXAgMDMgLSB2YWxpZGF0ZSByYXcgZGljdGlvbmFyeSBmaWxlLgorIworIyBDUkMzMiwgTUQ1LCBTSEExIGFuZCBTSEEyNTYgY2hlY2tzdW1zIGZvciByYXcgYmluYXJ5IGRpY3Rpb25hcnkgYXJlIGNoZWNrZWQuCisKK2ltcG9ydCBoYXNobGliCitpbXBvcnQgemxpYgorCitiaW5fcGF0aCA9ICJkaWN0aW9uYXJ5LmJpbiIKKword2l0aCBvcGVuKGJpbl9wYXRoLCAicmIiKSBhcyByYXc6CisgIGRhdGEgPSByYXcucmVhZCgpCisKK2RlZiBjaGVja19kaWdlc3QobmFtZSwgZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVjdGVkID09IGFjdHVhbDoKKyAgICBwcmludCgiW09LXSAiICsgbmFtZSkKKyAgZWxzZToKKyAgICBwcmludCgiW0VSUk9SXSAiICsgbmFtZSArICIgfCAiICsgZXhwZWN0ZWQgKyAiICE9ICIgKyBhY3R1YWwpCisKKworY2hlY2tfZGlnZXN0KAorICAgICJDUkMzMiIsICAjIFRoaXMgaXMgdGhlIG9ubHkgY2hlY2tzdW0gcHJvdmlkZWQgaW4gUkZDLgorICAgICIweDUxMzZjYjA0IiwKKyAgICBoZXgoemxpYi5jcmMzMihkYXRhKSkpCisKK2NoZWNrX2RpZ2VzdCgKKyAgICAiTUQ1IiwKKyAgICAiOTZjZWNkMmVlN2E2NjZkNWFhMzYyN2Q3NDczNWIzMmEiLAorICAgIGhhc2hsaWIubWQ1KGRhdGEpLmhleGRpZ2VzdCgpKQorCitjaGVja19kaWdlc3QoCisgICAgIlNIQTEiLAorICAgICI3MmI0MTA1MWNiNjFhOTI4MWJhM2M0NDE0YzI4OWRhNTBkOWE3NjQwIiwKKyAgICBoYXNobGliLnNoYTEoZGF0YSkuaGV4ZGlnZXN0KCkpCisKK2NoZWNrX2RpZ2VzdCgKKyAgICAiU0hBMjU2IiwKKyAgICAiMjBlNDJlYjFiNTExYzIxODA2ZDRkMjI3ZDA3ZTVkZDA2ODc3ZDhjZTdiM2E4MTdmMzc4ZjMxMzY1M2YzNWM3MCIsCisgICAgaGFzaGxpYi5zaGEyNTYoZGF0YSkuaGV4ZGlnZXN0KCkpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDQtZ2VuZXJhdGUtamF2YS1saXRlcmFscy5weSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS9zY3JpcHRzL2RpY3Rpb25hcnkvc3RlcC0wNC1nZW5lcmF0ZS1qYXZhLWxpdGVyYWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkM2M2NGUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9kaWN0aW9uYXJ5L3N0ZXAtMDQtZ2VuZXJhdGUtamF2YS1saXRlcmFscy5weQpAQCAtMCwwICsxLDc5IEBACisjIFN0ZXAgMDQgLSBnZW5lcmF0ZSBKYXZhIGxpdGVyYWxzLgorIworIyBKYXZhIGJ5dGUtY29kZSBoYXMgcmlkaWN1bG91cyByZXN0cmljdGlvbnMuIFRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMKKyMgImFycmF5IGxpdGVyYWwiIC0gdGhvc2UgYXJlIGltcGxlbWVudGVkIGFzIHNlcmllcyBvZiBkYXRhW3hdID0geTsKKyMgYXMgYSBjb25zZXF1ZW5jZSBOLWJ5dGUgYXJyYXkgd2lsbCB1c2UgN04gYnl0ZXMgaW4gY2xhc3MsIHBsdXMgTiBieXRlcworIyBpbiBpbnN0YW50aWF0ZWQgdmFyaWFibGUuIEFsc28gbm8gbGl0ZXJhbCBjb3VsZCBiZSBsb25nZXIgdGhhbiA2NEtpQi4KKyMKKyMgVG8ga2VlcCBkaWN0aW9uYXJ5IGRhdGEgY29tcGFjdCBib3RoIGluIHNvdXJjZSBjb2RlIGFuZCBpbiBjb21waWxlZCBmb3JtYXQKKyMgd2UgdXNlIHRoZSBmb2xsb3dpbmcgdHJpY2tzOgorIyAgKiB1c2UgU3RyaW5nIGFzIGEgZGF0YSBjb250YWluZXIKKyMgICogc3RvcmUgb25seSBsb3dlc3QgNyBiaXRzOyBpLmUuIGFsbCBjaGFyYWN0ZXJzIGZpdCBBU0NJSSB0YWJsZTsgdGhpcyBhbGxvd3MKKyMgICAgZWZmaWNpZW50IGNvbnZlcnNpb24gdG8gYnl0ZSBhcnJheTsgYWxzbyBBU0NJSSBjaGFyYWN0ZXJzIHVzZSBvbmx5IDEgYnl0ZQorIy4gICBvZiBtZW1vcnkgKFVURi04IGVuY29kaW5nKQorIyAgKiBSTEUtY29tcHJlc3Mgc2VxdWVuY2Ugb2YgOC10aCBiaXRzCisjCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBsaXRlcmFscyB1c2VkIGluIEphdmEgY29kZS4KKworYmluX3BhdGggPSAiZGljdGlvbmFyeS5iaW4iCisKK3dpdGggb3BlbihiaW5fcGF0aCwgInJiIikgYXMgcmF3OgorICBkYXRhID0gcmF3LnJlYWQoKQorCitsb3cgPSBbXQoraGkgPSBbXQoraXNfc2tpcCA9IFRydWUKK3NraXBfZmxpcF9vZmZzZXQgPSAzNgorY250ciA9IHNraXBfZmxpcF9vZmZzZXQKK2ZvciBiIGluIGRhdGE6CisgIHZhbHVlID0gb3JkKGIpCisgIGxvdy5hcHBlbmQoY2hyKHZhbHVlICYgMHg3RikpCisgIGlmIGlzX3NraXA6CisgICAgaWYgdmFsdWUgPCAweDgwOgorICAgICAgY250ciArPSAxCisgICAgZWxzZToKKyAgICAgIGlzX3NraXAgPSBGYWxzZQorICAgICAgaGkuYXBwZW5kKHVuaWNocihjbnRyKSkKKyAgICAgIGNudHIgPSBza2lwX2ZsaXBfb2Zmc2V0ICsgMQorICBlbHNlOgorICAgIGlmIHZhbHVlID49IDB4ODA6CisgICAgICBjbnRyICs9IDEKKyAgICBlbHNlOgorICAgICAgaXNfc2tpcCA9IFRydWUKKyAgICAgIGhpLmFwcGVuZCh1bmljaHIoY250cikpCisgICAgICBjbnRyID0gc2tpcF9mbGlwX29mZnNldCArIDEKK2hpLmFwcGVuZCh1bmljaHIoY250cikpCisKK2xvdzAgPSBsb3dbMCA6IGxlbihsb3cpIC8vIDJdCitsb3cxID0gbG93W2xlbihsb3cpIC8vIDIgOiBsZW4obG93KV0KKworZGVmIGVzY2FwZShjaGFycyk6CisgIHJlc3VsdCA9IFtdCisgIGZvciBjIGluIGNoYXJzOgorICAgIGlmICJcciIgPT0gYzoKKyAgICAgIHJlc3VsdC5hcHBlbmQoIlxcciIpCisgICAgZWxpZiAiXG4iID09IGM6CisgICAgICByZXN1bHQuYXBwZW5kKCJcXG4iKQorICAgIGVsaWYgIlx0IiA9PSBjOgorICAgICAgcmVzdWx0LmFwcGVuZCgiXFx0IikKKyAgICBlbGlmICJcIiIgPT0gYzoKKyAgICAgIHJlc3VsdC5hcHBlbmQoIlxcXCIiKQorICAgIGVsaWYgIlxcIiA9PSBjOgorICAgICAgcmVzdWx0LmFwcGVuZCgiXFxcXCIpCisgICAgZWxpZiBvcmQoYykgPCAzMiBvciBvcmQoYykgPj0gMTI3OgorICAgICAgcmVzdWx0LmFwcGVuZCgiXFx1JTA0WCIgJSBvcmQoYykpCisgICAgZWxzZToKKyAgICAgIHJlc3VsdC5hcHBlbmQoYyk7CisgIHJldHVybiByZXN1bHQKKworCitzb3VyY2VfY29kZSA9IFsKKyAgICAiICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQTAgPSBcIiIsICIiLmpvaW4oZXNjYXBlKGxvdzApKSwgIlwiO1xuIiwKKyAgICAiICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQTEgPSBcIiIsICIiLmpvaW4oZXNjYXBlKGxvdzEpKSwgIlwiO1xuIiwKKyAgICAiICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0tJUF9GTElQID0gXCIiLCAiIi5qb2luKGVzY2FwZShoaSkpLCAiXCI7XG4iCitdCisKK3NyY19wYXRoID0gIkRpY3Rpb25hcnlEYXRhLmluYy5qYXZhIgorCit3aXRoIG9wZW4oc3JjX3BhdGgsICJ3IikgYXMgc291cmNlOgorICBzb3VyY2Uud3JpdGUoIiIuam9pbihzb3VyY2VfY29kZSkpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvc2NyaXB0cy9maXgtd2luLWJhemVsLWJ1aWxkLnB5IGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvZml4LXdpbi1iYXplbC1idWlsZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTliMjExCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3NjcmlwdHMvZml4LXdpbi1iYXplbC1idWlsZC5weQpAQCAtMCwwICsxLDM2IEBACitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHlmaWxlCisKK3ByaW50KCdTZWFyY2hpbmcgZm9yIG1hbmlmZXN0cy4uLicpCisKK21hdGNoZXMgPSBbXQorZm9yIHJvb3QsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsaygnYmF6ZWwtYmluXFxvcmdcXGJyb3RsaScpOgorICBmb3IgZmlsZW5hbWUgaW4gZm5tYXRjaC5maWx0ZXIoZmlsZW5hbWVzLCAnKi5ydW5maWxlc19tYW5pZmVzdCcpOgorICAgIG1hdGNoZXMuYXBwZW5kKG9zLnBhdGguam9pbihyb290LCBmaWxlbmFtZSkpCisKK2ZvciBtYXRjaCBpbiBtYXRjaGVzOgorICBwcmludCgnU2Nhbm5pbmcgbWFuaWZlc3QgJyArIG1hdGNoKQorICBydW5maWxlcyA9IG1hdGNoWzotbGVuKCdfbWFuaWZlc3QnKV0KKyAgd2l0aCBvcGVuKG1hdGNoKSBhcyBtYW5pZmVzdDoKKyAgICBmb3IgZW50cnkgaW4gbWFuaWZlc3Q6CisgICAgICBlbnRyeSA9IGVudHJ5LnN0cmlwKCkKKyAgICAgIGlmIG5vdCBlbnRyeS5zdGFydHN3aXRoKCJvcmdfYnJvdGxpX2phdmEiKToKKyAgICAgICAgY29udGludWUKKyAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoJ29yZ19icm90bGlfamF2YS9leHRlcm5hbCcpOgorICAgICAgICBjb250aW51ZQorICAgICAgKGFsaWFzLCBzcGFjZSwgbGluaykgPSBlbnRyeS5wYXJ0aXRpb24oJyAnKQorICAgICAgaWYgYWxpYXMuZW5kc3dpdGgoJy5qYXInKSBvciBhbGlhcy5lbmRzd2l0aCgnLmV4ZScpOgorICAgICAgICBjb250aW51ZQorICAgICAgbGluayA9IGxpbmsucmVwbGFjZSgnLycsICdcXCcpCisgICAgICBhbGlhcyA9IGFsaWFzLnJlcGxhY2UoJy8nLCAnXFwnKQorICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHJ1bmZpbGVzLCBhbGlhcykKKyAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3QpOgorICAgICAgICBwcmludChsaW5rICsgJyAtPiAnICsgZHN0KQorICAgICAgICBwYXJlbnQgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGFyZW50KToKKyAgICAgICAgICBvcy5tYWtlZGlycyhwYXJlbnQpCisgICAgICAgIGNvcHlmaWxlKGxpbmssIGRzdCkKKworcHJpbnQoJ0ZpbmlzaGVkIHJlc29sdmluZyBzeW1saW5rcycpCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvMTB4MTB5IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhLzEweDEweQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjljZjg2Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhLzEweDEweQpAQCAtMCwwICsxIEBACitYWFhYWFhYWFhYWVlZWVlZWVlZWQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS8xMHgxMHkuY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS8xMHgxMHkuY29tcHJlc3NlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzY5NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhLzEweDEweS5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS82NHggYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvNjR4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTQxNzEKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvNjR4CkBAIC0wLDAgKzEgQEAKK1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvNjR4LmNvbXByZXNzZWQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvNjR4LmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRkMGJlMQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS82NHguY29tcHJlc3NlZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYWxpY2UyOS50eHQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYWxpY2UyOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAzMzY1NQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9hbGljZTI5LnR4dApAQCAtMCwwICsxLDM2MDkgQEAKKw0KKw0KKw0KKw0KKyAgICAgICAgICAgICAgICBBTElDRSdTIEFEVkVOVFVSRVMgSU4gV09OREVSTEFORA0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgTGV3aXMgQ2Fycm9sbA0KKw0KKyAgICAgICAgICAgICAgIFRIRSBNSUxMRU5OSVVNIEZVTENSVU0gRURJVElPTiAyLjkNCisNCisNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBUFRFUiBJDQorDQorICAgICAgICAgICAgICAgICAgICAgIERvd24gdGhlIFJhYmJpdC1Ib2xlDQorDQorDQorICBBbGljZSB3YXMgYmVnaW5uaW5nIHRvIGdldCB2ZXJ5IHRpcmVkIG9mIHNpdHRpbmcgYnkgaGVyIHNpc3Rlcg0KK29uIHRoZSBiYW5rLCBhbmQgb2YgaGF2aW5nIG5vdGhpbmcgdG8gZG86ICBvbmNlIG9yIHR3aWNlIHNoZSBoYWQNCitwZWVwZWQgaW50byB0aGUgYm9vayBoZXIgc2lzdGVyIHdhcyByZWFkaW5nLCBidXQgaXQgaGFkIG5vDQorcGljdHVyZXMgb3IgY29udmVyc2F0aW9ucyBpbiBpdCwgYGFuZCB3aGF0IGlzIHRoZSB1c2Ugb2YgYSBib29rLCcNCit0aG91Z2h0IEFsaWNlIGB3aXRob3V0IHBpY3R1cmVzIG9yIGNvbnZlcnNhdGlvbj8nDQorDQorICBTbyBzaGUgd2FzIGNvbnNpZGVyaW5nIGluIGhlciBvd24gbWluZCAoYXMgd2VsbCBhcyBzaGUgY291bGQsDQorZm9yIHRoZSBob3QgZGF5IG1hZGUgaGVyIGZlZWwgdmVyeSBzbGVlcHkgYW5kIHN0dXBpZCksIHdoZXRoZXINCit0aGUgcGxlYXN1cmUgb2YgbWFraW5nIGEgZGFpc3ktY2hhaW4gd291bGQgYmUgd29ydGggdGhlIHRyb3VibGUNCitvZiBnZXR0aW5nIHVwIGFuZCBwaWNraW5nIHRoZSBkYWlzaWVzLCB3aGVuIHN1ZGRlbmx5IGEgV2hpdGUNCitSYWJiaXQgd2l0aCBwaW5rIGV5ZXMgcmFuIGNsb3NlIGJ5IGhlci4NCisNCisgIFRoZXJlIHdhcyBub3RoaW5nIHNvIFZFUlkgcmVtYXJrYWJsZSBpbiB0aGF0OyBub3IgZGlkIEFsaWNlDQordGhpbmsgaXQgc28gVkVSWSBtdWNoIG91dCBvZiB0aGUgd2F5IHRvIGhlYXIgdGhlIFJhYmJpdCBzYXkgdG8NCitpdHNlbGYsIGBPaCBkZWFyISAgT2ggZGVhciEgIEkgc2hhbGwgYmUgbGF0ZSEnICAod2hlbiBzaGUgdGhvdWdodA0KK2l0IG92ZXIgYWZ0ZXJ3YXJkcywgaXQgb2NjdXJyZWQgdG8gaGVyIHRoYXQgc2hlIG91Z2h0IHRvIGhhdmUNCit3b25kZXJlZCBhdCB0aGlzLCBidXQgYXQgdGhlIHRpbWUgaXQgYWxsIHNlZW1lZCBxdWl0ZSBuYXR1cmFsKTsNCitidXQgd2hlbiB0aGUgUmFiYml0IGFjdHVhbGx5IFRPT0sgQSBXQVRDSCBPVVQgT0YgSVRTIFdBSVNUQ09BVC0NCitQT0NLRVQsIGFuZCBsb29rZWQgYXQgaXQsIGFuZCB0aGVuIGh1cnJpZWQgb24sIEFsaWNlIHN0YXJ0ZWQgdG8NCitoZXIgZmVldCwgZm9yIGl0IGZsYXNoZWQgYWNyb3NzIGhlciBtaW5kIHRoYXQgc2hlIGhhZCBuZXZlcg0KK2JlZm9yZSBzZWVuIGEgcmFiYml0IHdpdGggZWl0aGVyIGEgd2Fpc3Rjb2F0LXBvY2tldCwgb3IgYSB3YXRjaCB0bw0KK3Rha2Ugb3V0IG9mIGl0LCBhbmQgYnVybmluZyB3aXRoIGN1cmlvc2l0eSwgc2hlIHJhbiBhY3Jvc3MgdGhlDQorZmllbGQgYWZ0ZXIgaXQsIGFuZCBmb3J0dW5hdGVseSB3YXMganVzdCBpbiB0aW1lIHRvIHNlZSBpdCBwb3ANCitkb3duIGEgbGFyZ2UgcmFiYml0LWhvbGUgdW5kZXIgdGhlIGhlZGdlLg0KKw0KKyAgSW4gYW5vdGhlciBtb21lbnQgZG93biB3ZW50IEFsaWNlIGFmdGVyIGl0LCBuZXZlciBvbmNlDQorY29uc2lkZXJpbmcgaG93IGluIHRoZSB3b3JsZCBzaGUgd2FzIHRvIGdldCBvdXQgYWdhaW4uDQorDQorICBUaGUgcmFiYml0LWhvbGUgd2VudCBzdHJhaWdodCBvbiBsaWtlIGEgdHVubmVsIGZvciBzb21lIHdheSwNCithbmQgdGhlbiBkaXBwZWQgc3VkZGVubHkgZG93biwgc28gc3VkZGVubHkgdGhhdCBBbGljZSBoYWQgbm90IGENCittb21lbnQgdG8gdGhpbmsgYWJvdXQgc3RvcHBpbmcgaGVyc2VsZiBiZWZvcmUgc2hlIGZvdW5kIGhlcnNlbGYNCitmYWxsaW5nIGRvd24gYSB2ZXJ5IGRlZXAgd2VsbC4NCisNCisgIEVpdGhlciB0aGUgd2VsbCB3YXMgdmVyeSBkZWVwLCBvciBzaGUgZmVsbCB2ZXJ5IHNsb3dseSwgZm9yIHNoZQ0KK2hhZCBwbGVudHkgb2YgdGltZSBhcyBzaGUgd2VudCBkb3duIHRvIGxvb2sgYWJvdXQgaGVyIGFuZCB0bw0KK3dvbmRlciB3aGF0IHdhcyBnb2luZyB0byBoYXBwZW4gbmV4dC4gIEZpcnN0LCBzaGUgdHJpZWQgdG8gbG9vaw0KK2Rvd24gYW5kIG1ha2Ugb3V0IHdoYXQgc2hlIHdhcyBjb21pbmcgdG8sIGJ1dCBpdCB3YXMgdG9vIGRhcmsgdG8NCitzZWUgYW55dGhpbmc7IHRoZW4gc2hlIGxvb2tlZCBhdCB0aGUgc2lkZXMgb2YgdGhlIHdlbGwsIGFuZA0KK25vdGljZWQgdGhhdCB0aGV5IHdlcmUgZmlsbGVkIHdpdGggY3VwYm9hcmRzIGFuZCBib29rLXNoZWx2ZXM7DQoraGVyZSBhbmQgdGhlcmUgc2hlIHNhdyBtYXBzIGFuZCBwaWN0dXJlcyBodW5nIHVwb24gcGVncy4gIFNoZQ0KK3Rvb2sgZG93biBhIGphciBmcm9tIG9uZSBvZiB0aGUgc2hlbHZlcyBhcyBzaGUgcGFzc2VkOyBpdCB3YXMNCitsYWJlbGxlZCBgT1JBTkdFIE1BUk1BTEFERScsIGJ1dCB0byBoZXIgZ3JlYXQgZGlzYXBwb2ludG1lbnQgaXQNCit3YXMgZW1wdHk6ICBzaGUgZGlkIG5vdCBsaWtlIHRvIGRyb3AgdGhlIGphciBmb3IgZmVhciBvZiBraWxsaW5nDQorc29tZWJvZHksIHNvIG1hbmFnZWQgdG8gcHV0IGl0IGludG8gb25lIG9mIHRoZSBjdXBib2FyZHMgYXMgc2hlDQorZmVsbCBwYXN0IGl0Lg0KKw0KKyAgYFdlbGwhJyB0aG91Z2h0IEFsaWNlIHRvIGhlcnNlbGYsIGBhZnRlciBzdWNoIGEgZmFsbCBhcyB0aGlzLCBJDQorc2hhbGwgdGhpbmsgbm90aGluZyBvZiB0dW1ibGluZyBkb3duIHN0YWlycyEgIEhvdyBicmF2ZSB0aGV5J2xsDQorYWxsIHRoaW5rIG1lIGF0IGhvbWUhICBXaHksIEkgd291bGRuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IGl0LA0KK2V2ZW4gaWYgSSBmZWxsIG9mZiB0aGUgdG9wIG9mIHRoZSBob3VzZSEnIChXaGljaCB3YXMgdmVyeSBsaWtlbHkNCit0cnVlLikNCisNCisgIERvd24sIGRvd24sIGRvd24uICBXb3VsZCB0aGUgZmFsbCBORVZFUiBjb21lIHRvIGFuIGVuZCEgIGBJDQord29uZGVyIGhvdyBtYW55IG1pbGVzIEkndmUgZmFsbGVuIGJ5IHRoaXMgdGltZT8nIHNoZSBzYWlkIGFsb3VkLg0KK2BJIG11c3QgYmUgZ2V0dGluZyBzb21ld2hlcmUgbmVhciB0aGUgY2VudHJlIG9mIHRoZSBlYXJ0aC4gIExldA0KK21lIHNlZTogIHRoYXQgd291bGQgYmUgZm91ciB0aG91c2FuZCBtaWxlcyBkb3duLCBJIHRoaW5rLS0nIChmb3IsDQoreW91IHNlZSwgQWxpY2UgaGFkIGxlYXJudCBzZXZlcmFsIHRoaW5ncyBvZiB0aGlzIHNvcnQgaW4gaGVyDQorbGVzc29ucyBpbiB0aGUgc2Nob29scm9vbSwgYW5kIHRob3VnaCB0aGlzIHdhcyBub3QgYSBWRVJZIGdvb2QNCitvcHBvcnR1bml0eSBmb3Igc2hvd2luZyBvZmYgaGVyIGtub3dsZWRnZSwgYXMgdGhlcmUgd2FzIG5vIG9uZSB0bw0KK2xpc3RlbiB0byBoZXIsIHN0aWxsIGl0IHdhcyBnb29kIHByYWN0aWNlIHRvIHNheSBpdCBvdmVyKSBgLS15ZXMsDQordGhhdCdzIGFib3V0IHRoZSByaWdodCBkaXN0YW5jZS0tYnV0IHRoZW4gSSB3b25kZXIgd2hhdCBMYXRpdHVkZQ0KK29yIExvbmdpdHVkZSBJJ3ZlIGdvdCB0bz8nICAoQWxpY2UgaGFkIG5vIGlkZWEgd2hhdCBMYXRpdHVkZSB3YXMsDQorb3IgTG9uZ2l0dWRlIGVpdGhlciwgYnV0IHRob3VnaHQgdGhleSB3ZXJlIG5pY2UgZ3JhbmQgd29yZHMgdG8NCitzYXkuKQ0KKw0KKyAgUHJlc2VudGx5IHNoZSBiZWdhbiBhZ2Fpbi4gIGBJIHdvbmRlciBpZiBJIHNoYWxsIGZhbGwgcmlnaHQNCitUSFJPVUdIIHRoZSBlYXJ0aCEgIEhvdyBmdW5ueSBpdCdsbCBzZWVtIHRvIGNvbWUgb3V0IGFtb25nIHRoZQ0KK3Blb3BsZSB0aGF0IHdhbGsgd2l0aCB0aGVpciBoZWFkcyBkb3dud2FyZCEgIFRoZSBBbnRpcGF0aGllcywgSQ0KK3RoaW5rLS0nIChzaGUgd2FzIHJhdGhlciBnbGFkIHRoZXJlIFdBUyBubyBvbmUgbGlzdGVuaW5nLCB0aGlzDQordGltZSwgYXMgaXQgZGlkbid0IHNvdW5kIGF0IGFsbCB0aGUgcmlnaHQgd29yZCkgYC0tYnV0IEkgc2hhbGwNCitoYXZlIHRvIGFzayB0aGVtIHdoYXQgdGhlIG5hbWUgb2YgdGhlIGNvdW50cnkgaXMsIHlvdSBrbm93Lg0KK1BsZWFzZSwgTWEnYW0sIGlzIHRoaXMgTmV3IFplYWxhbmQgb3IgQXVzdHJhbGlhPycgKGFuZCBzaGUgdHJpZWQNCit0byBjdXJ0c2V5IGFzIHNoZSBzcG9rZS0tZmFuY3kgQ1VSVFNFWUlORyBhcyB5b3UncmUgZmFsbGluZw0KK3Rocm91Z2ggdGhlIGFpciEgIERvIHlvdSB0aGluayB5b3UgY291bGQgbWFuYWdlIGl0PykgIGBBbmQgd2hhdA0KK2FuIGlnbm9yYW50IGxpdHRsZSBnaXJsIHNoZSdsbCB0aGluayBtZSBmb3IgYXNraW5nISAgTm8sIGl0J2xsDQorbmV2ZXIgZG8gdG8gYXNrOiAgcGVyaGFwcyBJIHNoYWxsIHNlZSBpdCB3cml0dGVuIHVwIHNvbWV3aGVyZS4nDQorDQorICBEb3duLCBkb3duLCBkb3duLiAgVGhlcmUgd2FzIG5vdGhpbmcgZWxzZSB0byBkbywgc28gQWxpY2Ugc29vbg0KK2JlZ2FuIHRhbGtpbmcgYWdhaW4uICBgRGluYWgnbGwgbWlzcyBtZSB2ZXJ5IG11Y2ggdG8tbmlnaHQsIEkNCitzaG91bGQgdGhpbmshJyAgKERpbmFoIHdhcyB0aGUgY2F0LikgIGBJIGhvcGUgdGhleSdsbCByZW1lbWJlcg0KK2hlciBzYXVjZXIgb2YgbWlsayBhdCB0ZWEtdGltZS4gIERpbmFoIG15IGRlYXIhICBJIHdpc2ggeW91IHdlcmUNCitkb3duIGhlcmUgd2l0aCBtZSEgIFRoZXJlIGFyZSBubyBtaWNlIGluIHRoZSBhaXIsIEknbSBhZnJhaWQsIGJ1dA0KK3lvdSBtaWdodCBjYXRjaCBhIGJhdCwgYW5kIHRoYXQncyB2ZXJ5IGxpa2UgYSBtb3VzZSwgeW91IGtub3cuDQorQnV0IGRvIGNhdHMgZWF0IGJhdHMsIEkgd29uZGVyPycgIEFuZCBoZXJlIEFsaWNlIGJlZ2FuIHRvIGdldA0KK3JhdGhlciBzbGVlcHksIGFuZCB3ZW50IG9uIHNheWluZyB0byBoZXJzZWxmLCBpbiBhIGRyZWFteSBzb3J0IG9mDQord2F5LCBgRG8gY2F0cyBlYXQgYmF0cz8gIERvIGNhdHMgZWF0IGJhdHM/JyBhbmQgc29tZXRpbWVzLCBgRG8NCitiYXRzIGVhdCBjYXRzPycgZm9yLCB5b3Ugc2VlLCBhcyBzaGUgY291bGRuJ3QgYW5zd2VyIGVpdGhlcg0KK3F1ZXN0aW9uLCBpdCBkaWRuJ3QgbXVjaCBtYXR0ZXIgd2hpY2ggd2F5IHNoZSBwdXQgaXQuICBTaGUgZmVsdA0KK3RoYXQgc2hlIHdhcyBkb3ppbmcgb2ZmLCBhbmQgaGFkIGp1c3QgYmVndW4gdG8gZHJlYW0gdGhhdCBzaGUNCit3YXMgd2Fsa2luZyBoYW5kIGluIGhhbmQgd2l0aCBEaW5haCwgYW5kIHNheWluZyB0byBoZXIgdmVyeQ0KK2Vhcm5lc3RseSwgYE5vdywgRGluYWgsIHRlbGwgbWUgdGhlIHRydXRoOiAgZGlkIHlvdSBldmVyIGVhdCBhDQorYmF0Pycgd2hlbiBzdWRkZW5seSwgdGh1bXAhIHRodW1wISBkb3duIHNoZSBjYW1lIHVwb24gYSBoZWFwIG9mDQorc3RpY2tzIGFuZCBkcnkgbGVhdmVzLCBhbmQgdGhlIGZhbGwgd2FzIG92ZXIuDQorDQorICBBbGljZSB3YXMgbm90IGEgYml0IGh1cnQsIGFuZCBzaGUganVtcGVkIHVwIG9uIHRvIGhlciBmZWV0IGluIGENCittb21lbnQ6ICBzaGUgbG9va2VkIHVwLCBidXQgaXQgd2FzIGFsbCBkYXJrIG92ZXJoZWFkOyBiZWZvcmUgaGVyDQord2FzIGFub3RoZXIgbG9uZyBwYXNzYWdlLCBhbmQgdGhlIFdoaXRlIFJhYmJpdCB3YXMgc3RpbGwgaW4NCitzaWdodCwgaHVycnlpbmcgZG93biBpdC4gIFRoZXJlIHdhcyBub3QgYSBtb21lbnQgdG8gYmUgbG9zdDoNCithd2F5IHdlbnQgQWxpY2UgbGlrZSB0aGUgd2luZCwgYW5kIHdhcyBqdXN0IGluIHRpbWUgdG8gaGVhciBpdA0KK3NheSwgYXMgaXQgdHVybmVkIGEgY29ybmVyLCBgT2ggbXkgZWFycyBhbmQgd2hpc2tlcnMsIGhvdyBsYXRlDQoraXQncyBnZXR0aW5nIScgIFNoZSB3YXMgY2xvc2UgYmVoaW5kIGl0IHdoZW4gc2hlIHR1cm5lZCB0aGUNCitjb3JuZXIsIGJ1dCB0aGUgUmFiYml0IHdhcyBubyBsb25nZXIgdG8gYmUgc2VlbjogIHNoZSBmb3VuZA0KK2hlcnNlbGYgaW4gYSBsb25nLCBsb3cgaGFsbCwgd2hpY2ggd2FzIGxpdCB1cCBieSBhIHJvdyBvZiBsYW1wcw0KK2hhbmdpbmcgZnJvbSB0aGUgcm9vZi4NCisNCisgIFRoZXJlIHdlcmUgZG9vcnMgYWxsIHJvdW5kIHRoZSBoYWxsLCBidXQgdGhleSB3ZXJlIGFsbCBsb2NrZWQ7DQorYW5kIHdoZW4gQWxpY2UgaGFkIGJlZW4gYWxsIHRoZSB3YXkgZG93biBvbmUgc2lkZSBhbmQgdXAgdGhlDQorb3RoZXIsIHRyeWluZyBldmVyeSBkb29yLCBzaGUgd2Fsa2VkIHNhZGx5IGRvd24gdGhlIG1pZGRsZSwNCit3b25kZXJpbmcgaG93IHNoZSB3YXMgZXZlciB0byBnZXQgb3V0IGFnYWluLg0KKw0KKyAgU3VkZGVubHkgc2hlIGNhbWUgdXBvbiBhIGxpdHRsZSB0aHJlZS1sZWdnZWQgdGFibGUsIGFsbCBtYWRlIG9mDQorc29saWQgZ2xhc3M7IHRoZXJlIHdhcyBub3RoaW5nIG9uIGl0IGV4Y2VwdCBhIHRpbnkgZ29sZGVuIGtleSwNCithbmQgQWxpY2UncyBmaXJzdCB0aG91Z2h0IHdhcyB0aGF0IGl0IG1pZ2h0IGJlbG9uZyB0byBvbmUgb2YgdGhlDQorZG9vcnMgb2YgdGhlIGhhbGw7IGJ1dCwgYWxhcyEgZWl0aGVyIHRoZSBsb2NrcyB3ZXJlIHRvbyBsYXJnZSwgb3INCit0aGUga2V5IHdhcyB0b28gc21hbGwsIGJ1dCBhdCBhbnkgcmF0ZSBpdCB3b3VsZCBub3Qgb3BlbiBhbnkgb2YNCit0aGVtLiAgSG93ZXZlciwgb24gdGhlIHNlY29uZCB0aW1lIHJvdW5kLCBzaGUgY2FtZSB1cG9uIGEgbG93DQorY3VydGFpbiBzaGUgaGFkIG5vdCBub3RpY2VkIGJlZm9yZSwgYW5kIGJlaGluZCBpdCB3YXMgYSBsaXR0bGUNCitkb29yIGFib3V0IGZpZnRlZW4gaW5jaGVzIGhpZ2g6ICBzaGUgdHJpZWQgdGhlIGxpdHRsZSBnb2xkZW4ga2V5DQoraW4gdGhlIGxvY2ssIGFuZCB0byBoZXIgZ3JlYXQgZGVsaWdodCBpdCBmaXR0ZWQhDQorDQorICBBbGljZSBvcGVuZWQgdGhlIGRvb3IgYW5kIGZvdW5kIHRoYXQgaXQgbGVkIGludG8gYSBzbWFsbA0KK3Bhc3NhZ2UsIG5vdCBtdWNoIGxhcmdlciB0aGFuIGEgcmF0LWhvbGU6ICBzaGUga25lbHQgZG93biBhbmQNCitsb29rZWQgYWxvbmcgdGhlIHBhc3NhZ2UgaW50byB0aGUgbG92ZWxpZXN0IGdhcmRlbiB5b3UgZXZlciBzYXcuDQorSG93IHNoZSBsb25nZWQgdG8gZ2V0IG91dCBvZiB0aGF0IGRhcmsgaGFsbCwgYW5kIHdhbmRlciBhYm91dA0KK2Ftb25nIHRob3NlIGJlZHMgb2YgYnJpZ2h0IGZsb3dlcnMgYW5kIHRob3NlIGNvb2wgZm91bnRhaW5zLCBidXQNCitzaGUgY291bGQgbm90IGV2ZW4gZ2V0IGhlciBoZWFkIHRob3VnaCB0aGUgZG9vcndheTsgYGFuZCBldmVuIGlmDQorbXkgaGVhZCB3b3VsZCBnbyB0aHJvdWdoLCcgdGhvdWdodCBwb29yIEFsaWNlLCBgaXQgd291bGQgYmUgb2YNCit2ZXJ5IGxpdHRsZSB1c2Ugd2l0aG91dCBteSBzaG91bGRlcnMuICBPaCwgaG93IEkgd2lzaA0KK0kgY291bGQgc2h1dCB1cCBsaWtlIGEgdGVsZXNjb3BlISAgSSB0aGluayBJIGNvdWxkLCBpZiBJIG9ubHkNCitrbm93IGhvdyB0byBiZWdpbi4nICBGb3IsIHlvdSBzZWUsIHNvIG1hbnkgb3V0LW9mLXRoZS13YXkgdGhpbmdzDQoraGFkIGhhcHBlbmVkIGxhdGVseSwgdGhhdCBBbGljZSBoYWQgYmVndW4gdG8gdGhpbmsgdGhhdCB2ZXJ5IGZldw0KK3RoaW5ncyBpbmRlZWQgd2VyZSByZWFsbHkgaW1wb3NzaWJsZS4NCisNCisgIFRoZXJlIHNlZW1lZCB0byBiZSBubyB1c2UgaW4gd2FpdGluZyBieSB0aGUgbGl0dGxlIGRvb3IsIHNvIHNoZQ0KK3dlbnQgYmFjayB0byB0aGUgdGFibGUsIGhhbGYgaG9waW5nIHNoZSBtaWdodCBmaW5kIGFub3RoZXIga2V5IG9uDQoraXQsIG9yIGF0IGFueSByYXRlIGEgYm9vayBvZiBydWxlcyBmb3Igc2h1dHRpbmcgcGVvcGxlIHVwIGxpa2UNCit0ZWxlc2NvcGVzOiAgdGhpcyB0aW1lIHNoZSBmb3VuZCBhIGxpdHRsZSBib3R0bGUgb24gaXQsIChgd2hpY2gNCitjZXJ0YWlubHkgd2FzIG5vdCBoZXJlIGJlZm9yZSwnIHNhaWQgQWxpY2UsKSBhbmQgcm91bmQgdGhlIG5lY2sNCitvZiB0aGUgYm90dGxlIHdhcyBhIHBhcGVyIGxhYmVsLCB3aXRoIHRoZSB3b3JkcyBgRFJJTksgTUUnDQorYmVhdXRpZnVsbHkgcHJpbnRlZCBvbiBpdCBpbiBsYXJnZSBsZXR0ZXJzLg0KKw0KKyAgSXQgd2FzIGFsbCB2ZXJ5IHdlbGwgdG8gc2F5IGBEcmluayBtZSwnIGJ1dCB0aGUgd2lzZSBsaXR0bGUNCitBbGljZSB3YXMgbm90IGdvaW5nIHRvIGRvIFRIQVQgaW4gYSBodXJyeS4gIGBObywgSSdsbCBsb29rDQorZmlyc3QsJyBzaGUgc2FpZCwgYGFuZCBzZWUgd2hldGhlciBpdCdzIG1hcmtlZCAicG9pc29uIiBvciBub3QnOw0KK2ZvciBzaGUgaGFkIHJlYWQgc2V2ZXJhbCBuaWNlIGxpdHRsZSBoaXN0b3JpZXMgYWJvdXQgY2hpbGRyZW4gd2hvDQoraGFkIGdvdCBidXJudCwgYW5kIGVhdGVuIHVwIGJ5IHdpbGQgYmVhc3RzIGFuZCBvdGhlciB1bnBsZWFzYW50DQordGhpbmdzLCBhbGwgYmVjYXVzZSB0aGV5IFdPVUxEIG5vdCByZW1lbWJlciB0aGUgc2ltcGxlIHJ1bGVzDQordGhlaXIgZnJpZW5kcyBoYWQgdGF1Z2h0IHRoZW06ICBzdWNoIGFzLCB0aGF0IGEgcmVkLWhvdCBwb2tlcg0KK3dpbGwgYnVybiB5b3UgaWYgeW91IGhvbGQgaXQgdG9vIGxvbmc7IGFuZCB0aGF0IGlmIHlvdSBjdXQgeW91cg0KK2ZpbmdlciBWRVJZIGRlZXBseSB3aXRoIGEga25pZmUsIGl0IHVzdWFsbHkgYmxlZWRzOyBhbmQgc2hlIGhhZA0KK25ldmVyIGZvcmdvdHRlbiB0aGF0LCBpZiB5b3UgZHJpbmsgbXVjaCBmcm9tIGEgYm90dGxlIG1hcmtlZA0KK2Bwb2lzb24sJyBpdCBpcyBhbG1vc3QgY2VydGFpbiB0byBkaXNhZ3JlZSB3aXRoIHlvdSwgc29vbmVyIG9yDQorbGF0ZXIuDQorDQorICBIb3dldmVyLCB0aGlzIGJvdHRsZSB3YXMgTk9UIG1hcmtlZCBgcG9pc29uLCcgc28gQWxpY2UgdmVudHVyZWQNCit0byB0YXN0ZSBpdCwgYW5kIGZpbmRpbmcgaXQgdmVyeSBuaWNlLCAoaXQgaGFkLCBpbiBmYWN0LCBhIHNvcnQNCitvZiBtaXhlZCBmbGF2b3VyIG9mIGNoZXJyeS10YXJ0LCBjdXN0YXJkLCBwaW5lLWFwcGxlLCByb2FzdA0KK3R1cmtleSwgdG9mZmVlLCBhbmQgaG90IGJ1dHRlcmVkIHRvYXN0LCkgc2hlIHZlcnkgc29vbiBmaW5pc2hlZA0KK2l0IG9mZi4NCisNCisgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICoNCisNCisgICAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKg0KKw0KKyAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKg0KKw0KKyAgYFdoYXQgYSBjdXJpb3VzIGZlZWxpbmchJyBzYWlkIEFsaWNlOyBgSSBtdXN0IGJlIHNodXR0aW5nIHVwDQorbGlrZSBhIHRlbGVzY29wZS4nDQorDQorICBBbmQgc28gaXQgd2FzIGluZGVlZDogIHNoZSB3YXMgbm93IG9ubHkgdGVuIGluY2hlcyBoaWdoLCBhbmQNCitoZXIgZmFjZSBicmlnaHRlbmVkIHVwIGF0IHRoZSB0aG91Z2h0IHRoYXQgc2hlIHdhcyBub3cgdGhlIHJpZ2h0DQorc2l6ZSBmb3IgZ29pbmcgdGhvdWdoIHRoZSBsaXR0bGUgZG9vciBpbnRvIHRoYXQgbG92ZWx5IGdhcmRlbi4NCitGaXJzdCwgaG93ZXZlciwgc2hlIHdhaXRlZCBmb3IgYSBmZXcgbWludXRlcyB0byBzZWUgaWYgc2hlIHdhcw0KK2dvaW5nIHRvIHNocmluayBhbnkgZnVydGhlcjogIHNoZSBmZWx0IGEgbGl0dGxlIG5lcnZvdXMgYWJvdXQNCit0aGlzOyBgZm9yIGl0IG1pZ2h0IGVuZCwgeW91IGtub3csJyBzYWlkIEFsaWNlIHRvIGhlcnNlbGYsIGBpbiBteQ0KK2dvaW5nIG91dCBhbHRvZ2V0aGVyLCBsaWtlIGEgY2FuZGxlLiAgSSB3b25kZXIgd2hhdCBJIHNob3VsZCBiZQ0KK2xpa2UgdGhlbj8nICBBbmQgc2hlIHRyaWVkIHRvIGZhbmN5IHdoYXQgdGhlIGZsYW1lIG9mIGEgY2FuZGxlIGlzDQorbGlrZSBhZnRlciB0aGUgY2FuZGxlIGlzIGJsb3duIG91dCwgZm9yIHNoZSBjb3VsZCBub3QgcmVtZW1iZXINCitldmVyIGhhdmluZyBzZWVuIHN1Y2ggYSB0aGluZy4NCisNCisgIEFmdGVyIGEgd2hpbGUsIGZpbmRpbmcgdGhhdCBub3RoaW5nIG1vcmUgaGFwcGVuZWQsIHNoZSBkZWNpZGVkDQorb24gZ29pbmcgaW50byB0aGUgZ2FyZGVuIGF0IG9uY2U7IGJ1dCwgYWxhcyBmb3IgcG9vciBBbGljZSEgd2hlbg0KK3NoZSBnb3QgdG8gdGhlIGRvb3IsIHNoZSBmb3VuZCBoZSBoYWQgZm9yZ290dGVuIHRoZSBsaXR0bGUgZ29sZGVuDQora2V5LCBhbmQgd2hlbiBzaGUgd2VudCBiYWNrIHRvIHRoZSB0YWJsZSBmb3IgaXQsIHNoZSBmb3VuZCBzaGUNCitjb3VsZCBub3QgcG9zc2libHkgcmVhY2ggaXQ6ICBzaGUgY291bGQgc2VlIGl0IHF1aXRlIHBsYWlubHkNCit0aHJvdWdoIHRoZSBnbGFzcywgYW5kIHNoZSB0cmllZCBoZXIgYmVzdCB0byBjbGltYiB1cCBvbmUgb2YgdGhlDQorbGVncyBvZiB0aGUgdGFibGUsIGJ1dCBpdCB3YXMgdG9vIHNsaXBwZXJ5OyBhbmQgd2hlbiBzaGUgaGFkDQordGlyZWQgaGVyc2VsZiBvdXQgd2l0aCB0cnlpbmcsIHRoZSBwb29yIGxpdHRsZSB0aGluZyBzYXQgZG93biBhbmQNCitjcmllZC4NCisNCisgIGBDb21lLCB0aGVyZSdzIG5vIHVzZSBpbiBjcnlpbmcgbGlrZSB0aGF0IScgc2FpZCBBbGljZSB0bw0KK2hlcnNlbGYsIHJhdGhlciBzaGFycGx5OyBgSSBhZHZpc2UgeW91IHRvIGxlYXZlIG9mZiB0aGlzIG1pbnV0ZSEnDQorU2hlIGdlbmVyYWxseSBnYXZlIGhlcnNlbGYgdmVyeSBnb29kIGFkdmljZSwgKHRob3VnaCBzaGUgdmVyeQ0KK3NlbGRvbSBmb2xsb3dlZCBpdCksIGFuZCBzb21ldGltZXMgc2hlIHNjb2xkZWQgaGVyc2VsZiBzbw0KK3NldmVyZWx5IGFzIHRvIGJyaW5nIHRlYXJzIGludG8gaGVyIGV5ZXM7IGFuZCBvbmNlIHNoZSByZW1lbWJlcmVkDQordHJ5aW5nIHRvIGJveCBoZXIgb3duIGVhcnMgZm9yIGhhdmluZyBjaGVhdGVkIGhlcnNlbGYgaW4gYSBnYW1lDQorb2YgY3JvcXVldCBzaGUgd2FzIHBsYXlpbmcgYWdhaW5zdCBoZXJzZWxmLCBmb3IgdGhpcyBjdXJpb3VzDQorY2hpbGQgd2FzIHZlcnkgZm9uZCBvZiBwcmV0ZW5kaW5nIHRvIGJlIHR3byBwZW9wbGUuICBgQnV0IGl0J3Mgbm8NCit1c2Ugbm93LCcgdGhvdWdodCBwb29yIEFsaWNlLCBgdG8gcHJldGVuZCB0byBiZSB0d28gcGVvcGxlISAgV2h5LA0KK3RoZXJlJ3MgaGFyZGx5IGVub3VnaCBvZiBtZSBsZWZ0IHRvIG1ha2UgT05FIHJlc3BlY3RhYmxlDQorcGVyc29uIScNCisNCisgIFNvb24gaGVyIGV5ZSBmZWxsIG9uIGEgbGl0dGxlIGdsYXNzIGJveCB0aGF0IHdhcyBseWluZyB1bmRlcg0KK3RoZSB0YWJsZTogIHNoZSBvcGVuZWQgaXQsIGFuZCBmb3VuZCBpbiBpdCBhIHZlcnkgc21hbGwgY2FrZSwgb24NCit3aGljaCB0aGUgd29yZHMgYEVBVCBNRScgd2VyZSBiZWF1dGlmdWxseSBtYXJrZWQgaW4gY3VycmFudHMuDQorYFdlbGwsIEknbGwgZWF0IGl0LCcgc2FpZCBBbGljZSwgYGFuZCBpZiBpdCBtYWtlcyBtZSBncm93IGxhcmdlciwNCitJIGNhbiByZWFjaCB0aGUga2V5OyBhbmQgaWYgaXQgbWFrZXMgbWUgZ3JvdyBzbWFsbGVyLCBJIGNhbiBjcmVlcA0KK3VuZGVyIHRoZSBkb29yOyBzbyBlaXRoZXIgd2F5IEknbGwgZ2V0IGludG8gdGhlIGdhcmRlbiwgYW5kIEkNCitkb24ndCBjYXJlIHdoaWNoIGhhcHBlbnMhJw0KKw0KKyAgU2hlIGF0ZSBhIGxpdHRsZSBiaXQsIGFuZCBzYWlkIGFueGlvdXNseSB0byBoZXJzZWxmLCBgV2hpY2gNCit3YXk/ICBXaGljaCB3YXk/JywgaG9sZGluZyBoZXIgaGFuZCBvbiB0aGUgdG9wIG9mIGhlciBoZWFkIHRvDQorZmVlbCB3aGljaCB3YXkgaXQgd2FzIGdyb3dpbmcsIGFuZCBzaGUgd2FzIHF1aXRlIHN1cnByaXNlZCB0bw0KK2ZpbmQgdGhhdCBzaGUgcmVtYWluZWQgdGhlIHNhbWUgc2l6ZTogIHRvIGJlIHN1cmUsIHRoaXMgZ2VuZXJhbGx5DQoraGFwcGVucyB3aGVuIG9uZSBlYXRzIGNha2UsIGJ1dCBBbGljZSBoYWQgZ290IHNvIG11Y2ggaW50byB0aGUNCit3YXkgb2YgZXhwZWN0aW5nIG5vdGhpbmcgYnV0IG91dC1vZi10aGUtd2F5IHRoaW5ncyB0byBoYXBwZW4sDQordGhhdCBpdCBzZWVtZWQgcXVpdGUgZHVsbCBhbmQgc3R1cGlkIGZvciBsaWZlIHRvIGdvIG9uIGluIHRoZQ0KK2NvbW1vbiB3YXkuDQorDQorICBTbyBzaGUgc2V0IHRvIHdvcmssIGFuZCB2ZXJ5IHNvb24gZmluaXNoZWQgb2ZmIHRoZSBjYWtlLg0KKw0KKyAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKg0KKw0KKyAgICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqDQorDQorICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqDQorDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBUFRFUiBJSQ0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBQb29sIG9mIFRlYXJzDQorDQorDQorICBgQ3VyaW91c2VyIGFuZCBjdXJpb3VzZXIhJyBjcmllZCBBbGljZSAoc2hlIHdhcyBzbyBtdWNoDQorc3VycHJpc2VkLCB0aGF0IGZvciB0aGUgbW9tZW50IHNoZSBxdWl0ZSBmb3Jnb3QgaG93IHRvIHNwZWFrIGdvb2QNCitFbmdsaXNoKTsgYG5vdyBJJ20gb3BlbmluZyBvdXQgbGlrZSB0aGUgbGFyZ2VzdCB0ZWxlc2NvcGUgdGhhdA0KK2V2ZXIgd2FzISAgR29vZC1ieWUsIGZlZXQhJyAoZm9yIHdoZW4gc2hlIGxvb2tlZCBkb3duIGF0IGhlcg0KK2ZlZXQsIHRoZXkgc2VlbWVkIHRvIGJlIGFsbW9zdCBvdXQgb2Ygc2lnaHQsIHRoZXkgd2VyZSBnZXR0aW5nIHNvDQorZmFyIG9mZikuICBgT2gsIG15IHBvb3IgbGl0dGxlIGZlZXQsIEkgd29uZGVyIHdobyB3aWxsIHB1dCBvbg0KK3lvdXIgc2hvZXMgYW5kIHN0b2NraW5ncyBmb3IgeW91IG5vdywgZGVhcnM/ICBJJ20gc3VyZSBfSV8gc2hhbid0DQorYmUgYWJsZSEgIEkgc2hhbGwgYmUgYSBncmVhdCBkZWFsIHRvbyBmYXIgb2ZmIHRvIHRyb3VibGUgbXlzZWxmDQorYWJvdXQgeW91OiAgeW91IG11c3QgbWFuYWdlIHRoZSBiZXN0IHdheSB5b3UgY2FuOyAtLWJ1dCBJIG11c3QgYmUNCitraW5kIHRvIHRoZW0sJyB0aG91Z2h0IEFsaWNlLCBgb3IgcGVyaGFwcyB0aGV5IHdvbid0IHdhbGsgdGhlDQord2F5IEkgd2FudCB0byBnbyEgIExldCBtZSBzZWU6ICBJJ2xsIGdpdmUgdGhlbSBhIG5ldyBwYWlyIG9mDQorYm9vdHMgZXZlcnkgQ2hyaXN0bWFzLicNCisNCisgIEFuZCBzaGUgd2VudCBvbiBwbGFubmluZyB0byBoZXJzZWxmIGhvdyBzaGUgd291bGQgbWFuYWdlIGl0Lg0KK2BUaGV5IG11c3QgZ28gYnkgdGhlIGNhcnJpZXIsJyBzaGUgdGhvdWdodDsgYGFuZCBob3cgZnVubnkgaXQnbGwNCitzZWVtLCBzZW5kaW5nIHByZXNlbnRzIHRvIG9uZSdzIG93biBmZWV0ISAgQW5kIGhvdyBvZGQgdGhlDQorZGlyZWN0aW9ucyB3aWxsIGxvb2shDQorDQorICAgICAgICAgICAgQUxJQ0UnUyBSSUdIVCBGT09ULCBFU1EuDQorICAgICAgICAgICAgICAgIEhFQVJUSFJVRywNCisgICAgICAgICAgICAgICAgICAgIE5FQVIgVEhFIEZFTkRFUiwNCisgICAgICAgICAgICAgICAgICAgICAgICAoV0lUSCBBTElDRSdTIExPVkUpLg0KKw0KK09oIGRlYXIsIHdoYXQgbm9uc2Vuc2UgSSdtIHRhbGtpbmchJw0KKw0KKyAgSnVzdCB0aGVuIGhlciBoZWFkIHN0cnVjayBhZ2FpbnN0IHRoZSByb29mIG9mIHRoZSBoYWxsOiAgaW4NCitmYWN0IHNoZSB3YXMgbm93IG1vcmUgdGhhbiBuaW5lIGZlZXQgaGlnaCwgYW5kIHNoZSBhdCBvbmNlIHRvb2sNCit1cCB0aGUgbGl0dGxlIGdvbGRlbiBrZXkgYW5kIGh1cnJpZWQgb2ZmIHRvIHRoZSBnYXJkZW4gZG9vci4NCisNCisgIFBvb3IgQWxpY2UhICBJdCB3YXMgYXMgbXVjaCBhcyBzaGUgY291bGQgZG8sIGx5aW5nIGRvd24gb24gb25lDQorc2lkZSwgdG8gbG9vayB0aHJvdWdoIGludG8gdGhlIGdhcmRlbiB3aXRoIG9uZSBleWU7IGJ1dCB0byBnZXQNCit0aHJvdWdoIHdhcyBtb3JlIGhvcGVsZXNzIHRoYW4gZXZlcjogIHNoZSBzYXQgZG93biBhbmQgYmVnYW4gdG8NCitjcnkgYWdhaW4uDQorDQorICBgWW91IG91Z2h0IHRvIGJlIGFzaGFtZWQgb2YgeW91cnNlbGYsJyBzYWlkIEFsaWNlLCBgYSBncmVhdA0KK2dpcmwgbGlrZSB5b3UsJyAoc2hlIG1pZ2h0IHdlbGwgc2F5IHRoaXMpLCBgdG8gZ28gb24gY3J5aW5nIGluDQordGhpcyB3YXkhICBTdG9wIHRoaXMgbW9tZW50LCBJIHRlbGwgeW91IScgIEJ1dCBzaGUgd2VudCBvbiBhbGwNCit0aGUgc2FtZSwgc2hlZGRpbmcgZ2FsbG9ucyBvZiB0ZWFycywgdW50aWwgdGhlcmUgd2FzIGEgbGFyZ2UgcG9vbA0KK2FsbCByb3VuZCBoZXIsIGFib3V0IGZvdXIgaW5jaGVzIGRlZXAgYW5kIHJlYWNoaW5nIGhhbGYgZG93biB0aGUNCitoYWxsLg0KKw0KKyAgQWZ0ZXIgYSB0aW1lIHNoZSBoZWFyZCBhIGxpdHRsZSBwYXR0ZXJpbmcgb2YgZmVldCBpbiB0aGUNCitkaXN0YW5jZSwgYW5kIHNoZSBoYXN0aWx5IGRyaWVkIGhlciBleWVzIHRvIHNlZSB3aGF0IHdhcyBjb21pbmcuDQorSXQgd2FzIHRoZSBXaGl0ZSBSYWJiaXQgcmV0dXJuaW5nLCBzcGxlbmRpZGx5IGRyZXNzZWQsIHdpdGggYQ0KK3BhaXIgb2Ygd2hpdGUga2lkIGdsb3ZlcyBpbiBvbmUgaGFuZCBhbmQgYSBsYXJnZSBmYW4gaW4gdGhlDQorb3RoZXI6ICBoZSBjYW1lIHRyb3R0aW5nIGFsb25nIGluIGEgZ3JlYXQgaHVycnksIG11dHRlcmluZyB0bw0KK2hpbXNlbGYgYXMgaGUgY2FtZSwgYE9oISB0aGUgRHVjaGVzcywgdGhlIER1Y2hlc3MhIE9oISB3b24ndCBzaGUNCitiZSBzYXZhZ2UgaWYgSSd2ZSBrZXB0IGhlciB3YWl0aW5nIScgIEFsaWNlIGZlbHQgc28gZGVzcGVyYXRlDQordGhhdCBzaGUgd2FzIHJlYWR5IHRvIGFzayBoZWxwIG9mIGFueSBvbmU7IHNvLCB3aGVuIHRoZSBSYWJiaXQNCitjYW1lIG5lYXIgaGVyLCBzaGUgYmVnYW4sIGluIGEgbG93LCB0aW1pZCB2b2ljZSwgYElmIHlvdSBwbGVhc2UsDQorc2lyLS0nICBUaGUgUmFiYml0IHN0YXJ0ZWQgdmlvbGVudGx5LCBkcm9wcGVkIHRoZSB3aGl0ZSBraWQNCitnbG92ZXMgYW5kIHRoZSBmYW4sIGFuZCBza3VycmllZCBhd2F5IGludG8gdGhlIGRhcmtuZXNzIGFzIGhhcmQNCithcyBoZSBjb3VsZCBnby4NCisNCisgIEFsaWNlIHRvb2sgdXAgdGhlIGZhbiBhbmQgZ2xvdmVzLCBhbmQsIGFzIHRoZSBoYWxsIHdhcyB2ZXJ5DQoraG90LCBzaGUga2VwdCBmYW5uaW5nIGhlcnNlbGYgYWxsIHRoZSB0aW1lIHNoZSB3ZW50IG9uIHRhbGtpbmc6DQorYERlYXIsIGRlYXIhICBIb3cgcXVlZXIgZXZlcnl0aGluZyBpcyB0by1kYXkhICBBbmQgeWVzdGVyZGF5DQordGhpbmdzIHdlbnQgb24ganVzdCBhcyB1c3VhbC4gIEkgd29uZGVyIGlmIEkndmUgYmVlbiBjaGFuZ2VkIGluDQordGhlIG5pZ2h0PyAgTGV0IG1lIHRoaW5rOiAgd2FzIEkgdGhlIHNhbWUgd2hlbiBJIGdvdCB1cCB0aGlzDQorbW9ybmluZz8gIEkgYWxtb3N0IHRoaW5rIEkgY2FuIHJlbWVtYmVyIGZlZWxpbmcgYSBsaXR0bGUNCitkaWZmZXJlbnQuICBCdXQgaWYgSSdtIG5vdCB0aGUgc2FtZSwgdGhlIG5leHQgcXVlc3Rpb24gaXMsIFdobyBpbg0KK3RoZSB3b3JsZCBhbSBJPyAgQWgsIFRIQVQnUyB0aGUgZ3JlYXQgcHV6emxlIScgIEFuZCBzaGUgYmVnYW4NCit0aGlua2luZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4gc2hlIGtuZXcgdGhhdCB3ZXJlIG9mIHRoZSBzYW1lIGFnZQ0KK2FzIGhlcnNlbGYsIHRvIHNlZSBpZiBzaGUgY291bGQgaGF2ZSBiZWVuIGNoYW5nZWQgZm9yIGFueSBvZg0KK3RoZW0uDQorDQorICBgSSdtIHN1cmUgSSdtIG5vdCBBZGEsJyBzaGUgc2FpZCwgYGZvciBoZXIgaGFpciBnb2VzIGluIHN1Y2gNCitsb25nIHJpbmdsZXRzLCBhbmQgbWluZSBkb2Vzbid0IGdvIGluIHJpbmdsZXRzIGF0IGFsbDsgYW5kIEknbQ0KK3N1cmUgSSBjYW4ndCBiZSBNYWJlbCwgZm9yIEkga25vdyBhbGwgc29ydHMgb2YgdGhpbmdzLCBhbmQgc2hlLA0KK29oISBzaGUga25vd3Mgc3VjaCBhIHZlcnkgbGl0dGxlISAgQmVzaWRlcywgU0hFJ1Mgc2hlLCBhbmQgSSdtIEksDQorYW5kLS1vaCBkZWFyLCBob3cgcHV6emxpbmcgaXQgYWxsIGlzISAgSSdsbCB0cnkgaWYgSSBrbm93IGFsbCB0aGUNCit0aGluZ3MgSSB1c2VkIHRvIGtub3cuICBMZXQgbWUgc2VlOiAgZm91ciB0aW1lcyBmaXZlIGlzIHR3ZWx2ZSwNCithbmQgZm91ciB0aW1lcyBzaXggaXMgdGhpcnRlZW4sIGFuZCBmb3VyIHRpbWVzIHNldmVuIGlzLS1vaCBkZWFyIQ0KK0kgc2hhbGwgbmV2ZXIgZ2V0IHRvIHR3ZW50eSBhdCB0aGF0IHJhdGUhICBIb3dldmVyLCB0aGUNCitNdWx0aXBsaWNhdGlvbiBUYWJsZSBkb2Vzbid0IHNpZ25pZnk6ICBsZXQncyB0cnkgR2VvZ3JhcGh5Lg0KK0xvbmRvbiBpcyB0aGUgY2FwaXRhbCBvZiBQYXJpcywgYW5kIFBhcmlzIGlzIHRoZSBjYXBpdGFsIG9mIFJvbWUsDQorYW5kIFJvbWUtLW5vLCBUSEFUJ1MgYWxsIHdyb25nLCBJJ20gY2VydGFpbiEgIEkgbXVzdCBoYXZlIGJlZW4NCitjaGFuZ2VkIGZvciBNYWJlbCEgIEknbGwgdHJ5IGFuZCBzYXkgIkhvdyBkb3RoIHRoZSBsaXR0bGUtLSInDQorYW5kIHNoZSBjcm9zc2VkIGhlciBoYW5kcyBvbiBoZXIgbGFwIGFzIGlmIHNoZSB3ZXJlIHNheWluZyBsZXNzb25zLA0KK2FuZCBiZWdhbiB0byByZXBlYXQgaXQsIGJ1dCBoZXIgdm9pY2Ugc291bmRlZCBob2Fyc2UgYW5kDQorc3RyYW5nZSwgYW5kIHRoZSB3b3JkcyBkaWQgbm90IGNvbWUgdGhlIHNhbWUgYXMgdGhleSB1c2VkIHRvIGRvOi0tDQorDQorICAgICAgICAgICAgYEhvdyBkb3RoIHRoZSBsaXR0bGUgY3JvY29kaWxlDQorICAgICAgICAgICAgICBJbXByb3ZlIGhpcyBzaGluaW5nIHRhaWwsDQorICAgICAgICAgICAgQW5kIHBvdXIgdGhlIHdhdGVycyBvZiB0aGUgTmlsZQ0KKyAgICAgICAgICAgICAgT24gZXZlcnkgZ29sZGVuIHNjYWxlIQ0KKw0KKyAgICAgICAgICAgIGBIb3cgY2hlZXJmdWxseSBoZSBzZWVtcyB0byBncmluLA0KKyAgICAgICAgICAgICAgSG93IG5lYXRseSBzcHJlYWQgaGlzIGNsYXdzLA0KKyAgICAgICAgICAgIEFuZCB3ZWxjb21lIGxpdHRsZSBmaXNoZXMgaW4NCisgICAgICAgICAgICAgIFdpdGggZ2VudGx5IHNtaWxpbmcgamF3cyEnDQorDQorICBgSSdtIHN1cmUgdGhvc2UgYXJlIG5vdCB0aGUgcmlnaHQgd29yZHMsJyBzYWlkIHBvb3IgQWxpY2UsIGFuZA0KK2hlciBleWVzIGZpbGxlZCB3aXRoIHRlYXJzIGFnYWluIGFzIHNoZSB3ZW50IG9uLCBgSSBtdXN0IGJlIE1hYmVsDQorYWZ0ZXIgYWxsLCBhbmQgSSBzaGFsbCBoYXZlIHRvIGdvIGFuZCBsaXZlIGluIHRoYXQgcG9reSBsaXR0bGUNCitob3VzZSwgYW5kIGhhdmUgbmV4dCB0byBubyB0b3lzIHRvIHBsYXkgd2l0aCwgYW5kIG9oISBldmVyIHNvDQorbWFueSBsZXNzb25zIHRvIGxlYXJuISAgTm8sIEkndmUgbWFkZSB1cCBteSBtaW5kIGFib3V0IGl0OyBpZiBJJ20NCitNYWJlbCwgSSdsbCBzdGF5IGRvd24gaGVyZSEgIEl0J2xsIGJlIG5vIHVzZSB0aGVpciBwdXR0aW5nIHRoZWlyDQoraGVhZHMgZG93biBhbmQgc2F5aW5nICJDb21lIHVwIGFnYWluLCBkZWFyISIgIEkgc2hhbGwgb25seSBsb29rDQordXAgYW5kIHNheSAiV2hvIGFtIEkgdGhlbj8gIFRlbGwgbWUgdGhhdCBmaXJzdCwgYW5kIHRoZW4sIGlmIEkNCitsaWtlIGJlaW5nIHRoYXQgcGVyc29uLCBJJ2xsIGNvbWUgdXA6ICBpZiBub3QsIEknbGwgc3RheSBkb3duDQoraGVyZSB0aWxsIEknbSBzb21lYm9keSBlbHNlIi0tYnV0LCBvaCBkZWFyIScgY3JpZWQgQWxpY2UsIHdpdGggYQ0KK3N1ZGRlbiBidXJzdCBvZiB0ZWFycywgYEkgZG8gd2lzaCB0aGV5IFdPVUxEIHB1dCB0aGVpciBoZWFkcw0KK2Rvd24hICBJIGFtIHNvIFZFUlkgdGlyZWQgb2YgYmVpbmcgYWxsIGFsb25lIGhlcmUhJw0KKw0KKyAgQXMgc2hlIHNhaWQgdGhpcyBzaGUgbG9va2VkIGRvd24gYXQgaGVyIGhhbmRzLCBhbmQgd2FzDQorc3VycHJpc2VkIHRvIHNlZSB0aGF0IHNoZSBoYWQgcHV0IG9uIG9uZSBvZiB0aGUgUmFiYml0J3MgbGl0dGxlDQord2hpdGUga2lkIGdsb3ZlcyB3aGlsZSBzaGUgd2FzIHRhbGtpbmcuICBgSG93IENBTiBJIGhhdmUgZG9uZQ0KK3RoYXQ/JyBzaGUgdGhvdWdodC4gIGBJIG11c3QgYmUgZ3Jvd2luZyBzbWFsbCBhZ2Fpbi4nICBTaGUgZ290IHVwDQorYW5kIHdlbnQgdG8gdGhlIHRhYmxlIHRvIG1lYXN1cmUgaGVyc2VsZiBieSBpdCwgYW5kIGZvdW5kIHRoYXQsDQorYXMgbmVhcmx5IGFzIHNoZSBjb3VsZCBndWVzcywgc2hlIHdhcyBub3cgYWJvdXQgdHdvIGZlZXQgaGlnaCwNCithbmQgd2FzIGdvaW5nIG9uIHNocmlua2luZyByYXBpZGx5OiAgc2hlIHNvb24gZm91bmQgb3V0IHRoYXQgdGhlDQorY2F1c2Ugb2YgdGhpcyB3YXMgdGhlIGZhbiBzaGUgd2FzIGhvbGRpbmcsIGFuZCBzaGUgZHJvcHBlZCBpdA0KK2hhc3RpbHksIGp1c3QgaW4gdGltZSB0byBhdm9pZCBzaHJpbmtpbmcgYXdheSBhbHRvZ2V0aGVyLg0KKw0KK2BUaGF0IFdBUyBhIG5hcnJvdyBlc2NhcGUhJyBzYWlkIEFsaWNlLCBhIGdvb2QgZGVhbCBmcmlnaHRlbmVkIGF0DQordGhlIHN1ZGRlbiBjaGFuZ2UsIGJ1dCB2ZXJ5IGdsYWQgdG8gZmluZCBoZXJzZWxmIHN0aWxsIGluDQorZXhpc3RlbmNlOyBgYW5kIG5vdyBmb3IgdGhlIGdhcmRlbiEnIGFuZCBzaGUgcmFuIHdpdGggYWxsIHNwZWVkDQorYmFjayB0byB0aGUgbGl0dGxlIGRvb3I6ICBidXQsIGFsYXMhIHRoZSBsaXR0bGUgZG9vciB3YXMgc2h1dA0KK2FnYWluLCBhbmQgdGhlIGxpdHRsZSBnb2xkZW4ga2V5IHdhcyBseWluZyBvbiB0aGUgZ2xhc3MgdGFibGUgYXMNCitiZWZvcmUsIGBhbmQgdGhpbmdzIGFyZSB3b3JzZSB0aGFuIGV2ZXIsJyB0aG91Z2h0IHRoZSBwb29yIGNoaWxkLA0KK2Bmb3IgSSBuZXZlciB3YXMgc28gc21hbGwgYXMgdGhpcyBiZWZvcmUsIG5ldmVyISAgQW5kIEkgZGVjbGFyZQ0KK2l0J3MgdG9vIGJhZCwgdGhhdCBpdCBpcyEnDQorDQorICBBcyBzaGUgc2FpZCB0aGVzZSB3b3JkcyBoZXIgZm9vdCBzbGlwcGVkLCBhbmQgaW4gYW5vdGhlcg0KK21vbWVudCwgc3BsYXNoISBzaGUgd2FzIHVwIHRvIGhlciBjaGluIGluIHNhbHQgd2F0ZXIuICBIZSBmaXJzdA0KK2lkZWEgd2FzIHRoYXQgc2hlIGhhZCBzb21laG93IGZhbGxlbiBpbnRvIHRoZSBzZWEsIGBhbmQgaW4gdGhhdA0KK2Nhc2UgSSBjYW4gZ28gYmFjayBieSByYWlsd2F5LCcgc2hlIHNhaWQgdG8gaGVyc2VsZi4gIChBbGljZSBoYWQNCitiZWVuIHRvIHRoZSBzZWFzaWRlIG9uY2UgaW4gaGVyIGxpZmUsIGFuZCBoYWQgY29tZSB0byB0aGUgZ2VuZXJhbA0KK2NvbmNsdXNpb24sIHRoYXQgd2hlcmV2ZXIgeW91IGdvIHRvIG9uIHRoZSBFbmdsaXNoIGNvYXN0IHlvdSBmaW5kDQorYSBudW1iZXIgb2YgYmF0aGluZyBtYWNoaW5lcyBpbiB0aGUgc2VhLCBzb21lIGNoaWxkcmVuIGRpZ2dpbmcgaW4NCit0aGUgc2FuZCB3aXRoIHdvb2RlbiBzcGFkZXMsIHRoZW4gYSByb3cgb2YgbG9kZ2luZyBob3VzZXMsIGFuZA0KK2JlaGluZCB0aGVtIGEgcmFpbHdheSBzdGF0aW9uLikgIEhvd2V2ZXIsIHNoZSBzb29uIG1hZGUgb3V0IHRoYXQNCitzaGUgd2FzIGluIHRoZSBwb29sIG9mIHRlYXJzIHdoaWNoIHNoZSBoYWQgd2VwdCB3aGVuIHNoZSB3YXMgbmluZQ0KK2ZlZXQgaGlnaC4NCisNCisgIGBJIHdpc2ggSSBoYWRuJ3QgY3JpZWQgc28gbXVjaCEnIHNhaWQgQWxpY2UsIGFzIHNoZSBzd2FtIGFib3V0LA0KK3RyeWluZyB0byBmaW5kIGhlciB3YXkgb3V0LiAgYEkgc2hhbGwgYmUgcHVuaXNoZWQgZm9yIGl0IG5vdywgSQ0KK3N1cHBvc2UsIGJ5IGJlaW5nIGRyb3duZWQgaW4gbXkgb3duIHRlYXJzISAgVGhhdCBXSUxMIGJlIGEgcXVlZXINCit0aGluZywgdG8gYmUgc3VyZSEgIEhvd2V2ZXIsIGV2ZXJ5dGhpbmcgaXMgcXVlZXIgdG8tZGF5LicNCisNCisgIEp1c3QgdGhlbiBzaGUgaGVhcmQgc29tZXRoaW5nIHNwbGFzaGluZyBhYm91dCBpbiB0aGUgcG9vbCBhDQorbGl0dGxlIHdheSBvZmYsIGFuZCBzaGUgc3dhbSBuZWFyZXIgdG8gbWFrZSBvdXQgd2hhdCBpdCB3YXM6ICBhdA0KK2ZpcnN0IHNoZSB0aG91Z2h0IGl0IG11c3QgYmUgYSB3YWxydXMgb3IgaGlwcG9wb3RhbXVzLCBidXQgdGhlbg0KK3NoZSByZW1lbWJlcmVkIGhvdyBzbWFsbCBzaGUgd2FzIG5vdywgYW5kIHNoZSBzb29uIG1hZGUgb3V0IHRoYXQNCitpdCB3YXMgb25seSBhIG1vdXNlIHRoYXQgaGFkIHNsaXBwZWQgaW4gbGlrZSBoZXJzZWxmLg0KKw0KKyAgYFdvdWxkIGl0IGJlIG9mIGFueSB1c2UsIG5vdywnIHRob3VnaHQgQWxpY2UsIGB0byBzcGVhayB0byB0aGlzDQorbW91c2U/ICBFdmVyeXRoaW5nIGlzIHNvIG91dC1vZi10aGUtd2F5IGRvd24gaGVyZSwgdGhhdCBJIHNob3VsZA0KK3RoaW5rIHZlcnkgbGlrZWx5IGl0IGNhbiB0YWxrOiAgYXQgYW55IHJhdGUsIHRoZXJlJ3Mgbm8gaGFybSBpbg0KK3RyeWluZy4nICBTbyBzaGUgYmVnYW46ICBgTyBNb3VzZSwgZG8geW91IGtub3cgdGhlIHdheSBvdXQgb2YNCit0aGlzIHBvb2w/ICBJIGFtIHZlcnkgdGlyZWQgb2Ygc3dpbW1pbmcgYWJvdXQgaGVyZSwgTyBNb3VzZSEnDQorKEFsaWNlIHRob3VnaHQgdGhpcyBtdXN0IGJlIHRoZSByaWdodCB3YXkgb2Ygc3BlYWtpbmcgdG8gYSBtb3VzZToNCitzaGUgaGFkIG5ldmVyIGRvbmUgc3VjaCBhIHRoaW5nIGJlZm9yZSwgYnV0IHNoZSByZW1lbWJlcmVkIGhhdmluZw0KK3NlZW4gaW4gaGVyIGJyb3RoZXIncyBMYXRpbiBHcmFtbWFyLCBgQSBtb3VzZS0tb2YgYSBtb3VzZS0tdG8gYQ0KK21vdXNlLS1hIG1vdXNlLS1PIG1vdXNlIScgIFRoZSBNb3VzZSBsb29rZWQgYXQgaGVyIHJhdGhlcg0KK2lucXVpc2l0aXZlbHksIGFuZCBzZWVtZWQgdG8gaGVyIHRvIHdpbmsgd2l0aCBvbmUgb2YgaXRzIGxpdHRsZQ0KK2V5ZXMsIGJ1dCBpdCBzYWlkIG5vdGhpbmcuDQorDQorICBgUGVyaGFwcyBpdCBkb2Vzbid0IHVuZGVyc3RhbmQgRW5nbGlzaCwnIHRob3VnaHQgQWxpY2U7IGBJDQorZGFyZXNheSBpdCdzIGEgRnJlbmNoIG1vdXNlLCBjb21lIG92ZXIgd2l0aCBXaWxsaWFtIHRoZQ0KK0NvbnF1ZXJvci4nICAoRm9yLCB3aXRoIGFsbCBoZXIga25vd2xlZGdlIG9mIGhpc3RvcnksIEFsaWNlIGhhZA0KK25vIHZlcnkgY2xlYXIgbm90aW9uIGhvdyBsb25nIGFnbyBhbnl0aGluZyBoYWQgaGFwcGVuZWQuKSAgU28gc2hlDQorYmVnYW4gYWdhaW46ICBgT3UgZXN0IG1hIGNoYXR0ZT8nIHdoaWNoIHdhcyB0aGUgZmlyc3Qgc2VudGVuY2UgaW4NCitoZXIgRnJlbmNoIGxlc3Nvbi1ib29rLiAgVGhlIE1vdXNlIGdhdmUgYSBzdWRkZW4gbGVhcCBvdXQgb2YgdGhlDQord2F0ZXIsIGFuZCBzZWVtZWQgdG8gcXVpdmVyIGFsbCBvdmVyIHdpdGggZnJpZ2h0LiAgYE9oLCBJIGJlZw0KK3lvdXIgcGFyZG9uIScgY3JpZWQgQWxpY2UgaGFzdGlseSwgYWZyYWlkIHRoYXQgc2hlIGhhZCBodXJ0IHRoZQ0KK3Bvb3IgYW5pbWFsJ3MgZmVlbGluZ3MuICBgSSBxdWl0ZSBmb3Jnb3QgeW91IGRpZG4ndCBsaWtlIGNhdHMuJw0KKw0KKyAgYE5vdCBsaWtlIGNhdHMhJyBjcmllZCB0aGUgTW91c2UsIGluIGEgc2hyaWxsLCBwYXNzaW9uYXRlDQordm9pY2UuICBgV291bGQgWU9VIGxpa2UgY2F0cyBpZiB5b3Ugd2VyZSBtZT8nDQorDQorICBgV2VsbCwgcGVyaGFwcyBub3QsJyBzYWlkIEFsaWNlIGluIGEgc29vdGhpbmcgdG9uZTogIGBkb24ndCBiZQ0KK2FuZ3J5IGFib3V0IGl0LiAgQW5kIHlldCBJIHdpc2ggSSBjb3VsZCBzaG93IHlvdSBvdXIgY2F0IERpbmFoOg0KK0kgdGhpbmsgeW91J2QgdGFrZSBhIGZhbmN5IHRvIGNhdHMgaWYgeW91IGNvdWxkIG9ubHkgc2VlIGhlci4NCitTaGUgaXMgc3VjaCBhIGRlYXIgcXVpZXQgdGhpbmcsJyBBbGljZSB3ZW50IG9uLCBoYWxmIHRvIGhlcnNlbGYsDQorYXMgc2hlIHN3YW0gbGF6aWx5IGFib3V0IGluIHRoZSBwb29sLCBgYW5kIHNoZSBzaXRzIHB1cnJpbmcgc28NCituaWNlbHkgYnkgdGhlIGZpcmUsIGxpY2tpbmcgaGVyIHBhd3MgYW5kIHdhc2hpbmcgaGVyIGZhY2UtLWFuZA0KK3NoZSBpcyBzdWNoIGEgbmljZSBzb2Z0IHRoaW5nIHRvIG51cnNlLS1hbmQgc2hlJ3Mgc3VjaCBhIGNhcGl0YWwNCitvbmUgZm9yIGNhdGNoaW5nIG1pY2UtLW9oLCBJIGJlZyB5b3VyIHBhcmRvbiEnIGNyaWVkIEFsaWNlIGFnYWluLA0KK2ZvciB0aGlzIHRpbWUgdGhlIE1vdXNlIHdhcyBicmlzdGxpbmcgYWxsIG92ZXIsIGFuZCBzaGUgZmVsdA0KK2NlcnRhaW4gaXQgbXVzdCBiZSByZWFsbHkgb2ZmZW5kZWQuICBgV2Ugd29uJ3QgdGFsayBhYm91dCBoZXIgYW55DQorbW9yZSBpZiB5b3UnZCByYXRoZXIgbm90LicNCisNCisgIGBXZSBpbmRlZWQhJyBjcmllZCB0aGUgTW91c2UsIHdobyB3YXMgdHJlbWJsaW5nIGRvd24gdG8gdGhlIGVuZA0KK29mIGhpcyB0YWlsLiAgYEFzIGlmIEkgd291bGQgdGFsayBvbiBzdWNoIGEgc3ViamVjdCEgIE91ciBmYW1pbHkNCithbHdheXMgSEFURUQgY2F0czogIG5hc3R5LCBsb3csIHZ1bGdhciB0aGluZ3MhICBEb24ndCBsZXQgbWUgaGVhcg0KK3RoZSBuYW1lIGFnYWluIScNCisNCisgIGBJIHdvbid0IGluZGVlZCEnIHNhaWQgQWxpY2UsIGluIGEgZ3JlYXQgaHVycnkgdG8gY2hhbmdlIHRoZQ0KK3N1YmplY3Qgb2YgY29udmVyc2F0aW9uLiAgYEFyZSB5b3UtLWFyZSB5b3UgZm9uZC0tb2YtLW9mIGRvZ3M/Jw0KK1RoZSBNb3VzZSBkaWQgbm90IGFuc3dlciwgc28gQWxpY2Ugd2VudCBvbiBlYWdlcmx5OiAgYFRoZXJlIGlzDQorc3VjaCBhIG5pY2UgbGl0dGxlIGRvZyBuZWFyIG91ciBob3VzZSBJIHNob3VsZCBsaWtlIHRvIHNob3cgeW91IQ0KK0EgbGl0dGxlIGJyaWdodC1leWVkIHRlcnJpZXIsIHlvdSBrbm93LCB3aXRoIG9oLCBzdWNoIGxvbmcgY3VybHkNCiticm93biBoYWlyISAgQW5kIGl0J2xsIGZldGNoIHRoaW5ncyB3aGVuIHlvdSB0aHJvdyB0aGVtLCBhbmQNCitpdCdsbCBzaXQgdXAgYW5kIGJlZyBmb3IgaXRzIGRpbm5lciwgYW5kIGFsbCBzb3J0cyBvZiB0aGluZ3MtLUkNCitjYW4ndCByZW1lbWJlciBoYWxmIG9mIHRoZW0tLWFuZCBpdCBiZWxvbmdzIHRvIGEgZmFybWVyLCB5b3UNCitrbm93LCBhbmQgaGUgc2F5cyBpdCdzIHNvIHVzZWZ1bCwgaXQncyB3b3J0aCBhIGh1bmRyZWQgcG91bmRzIQ0KK0hlIHNheXMgaXQga2lsbHMgYWxsIHRoZSByYXRzIGFuZC0tb2ggZGVhciEnIGNyaWVkIEFsaWNlIGluIGENCitzb3Jyb3dmdWwgdG9uZSwgYEknbSBhZnJhaWQgSSd2ZSBvZmZlbmRlZCBpdCBhZ2FpbiEnICBGb3IgdGhlDQorTW91c2Ugd2FzIHN3aW1taW5nIGF3YXkgZnJvbSBoZXIgYXMgaGFyZCBhcyBpdCBjb3VsZCBnbywgYW5kDQorbWFraW5nIHF1aXRlIGEgY29tbW90aW9uIGluIHRoZSBwb29sIGFzIGl0IHdlbnQuDQorDQorICBTbyBzaGUgY2FsbGVkIHNvZnRseSBhZnRlciBpdCwgYE1vdXNlIGRlYXIhICBEbyBjb21lIGJhY2sNCithZ2FpbiwgYW5kIHdlIHdvbid0IHRhbGsgYWJvdXQgY2F0cyBvciBkb2dzIGVpdGhlciwgaWYgeW91IGRvbid0DQorbGlrZSB0aGVtIScgIFdoZW4gdGhlIE1vdXNlIGhlYXJkIHRoaXMsIGl0IHR1cm5lZCByb3VuZCBhbmQgc3dhbQ0KK3Nsb3dseSBiYWNrIHRvIGhlcjogIGl0cyBmYWNlIHdhcyBxdWl0ZSBwYWxlICh3aXRoIHBhc3Npb24sIEFsaWNlDQordGhvdWdodCksIGFuZCBpdCBzYWlkIGluIGEgbG93IHRyZW1ibGluZyB2b2ljZSwgYExldCB1cyBnZXQgdG8NCit0aGUgc2hvcmUsIGFuZCB0aGVuIEknbGwgdGVsbCB5b3UgbXkgaGlzdG9yeSwgYW5kIHlvdSdsbA0KK3VuZGVyc3RhbmQgd2h5IGl0IGlzIEkgaGF0ZSBjYXRzIGFuZCBkb2dzLicNCisNCisgIEl0IHdhcyBoaWdoIHRpbWUgdG8gZ28sIGZvciB0aGUgcG9vbCB3YXMgZ2V0dGluZyBxdWl0ZSBjcm93ZGVkDQord2l0aCB0aGUgYmlyZHMgYW5kIGFuaW1hbHMgdGhhdCBoYWQgZmFsbGVuIGludG8gaXQ6ICB0aGVyZSB3ZXJlIGENCitEdWNrIGFuZCBhIERvZG8sIGEgTG9yeSBhbmQgYW4gRWFnbGV0LCBhbmQgc2V2ZXJhbCBvdGhlciBjdXJpb3VzDQorY3JlYXR1cmVzLiAgQWxpY2UgbGVkIHRoZSB3YXksIGFuZCB0aGUgd2hvbGUgcGFydHkgc3dhbSB0byB0aGUNCitzaG9yZS4NCisNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDSEFQVEVSIElJSQ0KKw0KKyAgICAgICAgICAgICAgICAgIEEgQ2F1Y3VzLVJhY2UgYW5kIGEgTG9uZyBUYWxlDQorDQorDQorICBUaGV5IHdlcmUgaW5kZWVkIGEgcXVlZXItbG9va2luZyBwYXJ0eSB0aGF0IGFzc2VtYmxlZCBvbiB0aGUNCitiYW5rLS10aGUgYmlyZHMgd2l0aCBkcmFnZ2xlZCBmZWF0aGVycywgdGhlIGFuaW1hbHMgd2l0aCB0aGVpcg0KK2Z1ciBjbGluZ2luZyBjbG9zZSB0byB0aGVtLCBhbmQgYWxsIGRyaXBwaW5nIHdldCwgY3Jvc3MsIGFuZA0KK3VuY29tZm9ydGFibGUuDQorDQorICBUaGUgZmlyc3QgcXVlc3Rpb24gb2YgY291cnNlIHdhcywgaG93IHRvIGdldCBkcnkgYWdhaW46ICB0aGV5DQoraGFkIGEgY29uc3VsdGF0aW9uIGFib3V0IHRoaXMsIGFuZCBhZnRlciBhIGZldyBtaW51dGVzIGl0IHNlZW1lZA0KK3F1aXRlIG5hdHVyYWwgdG8gQWxpY2UgdG8gZmluZCBoZXJzZWxmIHRhbGtpbmcgZmFtaWxpYXJseSB3aXRoDQordGhlbSwgYXMgaWYgc2hlIGhhZCBrbm93biB0aGVtIGFsbCBoZXIgbGlmZS4gIEluZGVlZCwgc2hlIGhhZA0KK3F1aXRlIGEgbG9uZyBhcmd1bWVudCB3aXRoIHRoZSBMb3J5LCB3aG8gYXQgbGFzdCB0dXJuZWQgc3Vsa3ksDQorYW5kIHdvdWxkIG9ubHkgc2F5LCBgSSBhbSBvbGRlciB0aGFuIHlvdSwgYW5kIG11c3Qga25vdyBiZXR0ZXInOw0KK2FuZCB0aGlzIEFsaWNlIHdvdWxkIG5vdCBhbGxvdyB3aXRob3V0IGtub3dpbmcgaG93IG9sZCBpdCB3YXMsDQorYW5kLCBhcyB0aGUgTG9yeSBwb3NpdGl2ZWx5IHJlZnVzZWQgdG8gdGVsbCBpdHMgYWdlLCB0aGVyZSB3YXMgbm8NCittb3JlIHRvIGJlIHNhaWQuDQorDQorICBBdCBsYXN0IHRoZSBNb3VzZSwgd2hvIHNlZW1lZCB0byBiZSBhIHBlcnNvbiBvZiBhdXRob3JpdHkgYW1vbmcNCit0aGVtLCBjYWxsZWQgb3V0LCBgU2l0IGRvd24sIGFsbCBvZiB5b3UsIGFuZCBsaXN0ZW4gdG8gbWUhICBJJ0xMDQorc29vbiBtYWtlIHlvdSBkcnkgZW5vdWdoIScgIFRoZXkgYWxsIHNhdCBkb3duIGF0IG9uY2UsIGluIGEgbGFyZ2UNCityaW5nLCB3aXRoIHRoZSBNb3VzZSBpbiB0aGUgbWlkZGxlLiAgQWxpY2Uga2VwdCBoZXIgZXllcw0KK2FueGlvdXNseSBmaXhlZCBvbiBpdCwgZm9yIHNoZSBmZWx0IHN1cmUgc2hlIHdvdWxkIGNhdGNoIGEgYmFkDQorY29sZCBpZiBzaGUgZGlkIG5vdCBnZXQgZHJ5IHZlcnkgc29vbi4NCisNCisgIGBBaGVtIScgc2FpZCB0aGUgTW91c2Ugd2l0aCBhbiBpbXBvcnRhbnQgYWlyLCBgYXJlIHlvdSBhbGwgcmVhZHk/DQorVGhpcyBpcyB0aGUgZHJpZXN0IHRoaW5nIEkga25vdy4gIFNpbGVuY2UgYWxsIHJvdW5kLCBpZiB5b3UgcGxlYXNlIQ0KKyJXaWxsaWFtIHRoZSBDb25xdWVyb3IsIHdob3NlIGNhdXNlIHdhcyBmYXZvdXJlZCBieSB0aGUgcG9wZSwgd2FzDQorc29vbiBzdWJtaXR0ZWQgdG8gYnkgdGhlIEVuZ2xpc2gsIHdobyB3YW50ZWQgbGVhZGVycywgYW5kIGhhZCBiZWVuDQorb2YgbGF0ZSBtdWNoIGFjY3VzdG9tZWQgdG8gdXN1cnBhdGlvbiBhbmQgY29ucXVlc3QuICBFZHdpbiBhbmQNCitNb3JjYXIsIHRoZSBlYXJscyBvZiBNZXJjaWEgYW5kIE5vcnRodW1icmlhLS0iJw0KKw0KKyAgYFVnaCEnIHNhaWQgdGhlIExvcnksIHdpdGggYSBzaGl2ZXIuDQorDQorICBgSSBiZWcgeW91ciBwYXJkb24hJyBzYWlkIHRoZSBNb3VzZSwgZnJvd25pbmcsIGJ1dCB2ZXJ5DQorcG9saXRlbHk6ICBgRGlkIHlvdSBzcGVhaz8nDQorDQorICBgTm90IEkhJyBzYWlkIHRoZSBMb3J5IGhhc3RpbHkuDQorDQorICBgSSB0aG91Z2h0IHlvdSBkaWQsJyBzYWlkIHRoZSBNb3VzZS4gIGAtLUkgcHJvY2VlZC4gICJFZHdpbiBhbmQNCitNb3JjYXIsIHRoZSBlYXJscyBvZiBNZXJjaWEgYW5kIE5vcnRodW1icmlhLCBkZWNsYXJlZCBmb3IgaGltOg0KK2FuZCBldmVuIFN0aWdhbmQsIHRoZSBwYXRyaW90aWMgYXJjaGJpc2hvcCBvZiBDYW50ZXJidXJ5LCBmb3VuZA0KK2l0IGFkdmlzYWJsZS0tIicNCisNCisgIGBGb3VuZCBXSEFUPycgc2FpZCB0aGUgRHVjay4NCisNCisgIGBGb3VuZCBJVCwnIHRoZSBNb3VzZSByZXBsaWVkIHJhdGhlciBjcm9zc2x5OiAgYG9mIGNvdXJzZSB5b3UNCitrbm93IHdoYXQgIml0IiBtZWFucy4nDQorDQorICBgSSBrbm93IHdoYXQgIml0IiBtZWFucyB3ZWxsIGVub3VnaCwgd2hlbiBJIGZpbmQgYSB0aGluZywnIHNhaWQNCit0aGUgRHVjazogIGBpdCdzIGdlbmVyYWxseSBhIGZyb2cgb3IgYSB3b3JtLiAgVGhlIHF1ZXN0aW9uIGlzLA0KK3doYXQgZGlkIHRoZSBhcmNoYmlzaG9wIGZpbmQ/Jw0KKw0KKyAgVGhlIE1vdXNlIGRpZCBub3Qgbm90aWNlIHRoaXMgcXVlc3Rpb24sIGJ1dCBodXJyaWVkbHkgd2VudCBvbiwNCitgIi0tZm91bmQgaXQgYWR2aXNhYmxlIHRvIGdvIHdpdGggRWRnYXIgQXRoZWxpbmcgdG8gbWVldCBXaWxsaWFtDQorYW5kIG9mZmVyIGhpbSB0aGUgY3Jvd24uICBXaWxsaWFtJ3MgY29uZHVjdCBhdCBmaXJzdCB3YXMNCittb2RlcmF0ZS4gIEJ1dCB0aGUgaW5zb2xlbmNlIG9mIGhpcyBOb3JtYW5zLS0iICBIb3cgYXJlIHlvdQ0KK2dldHRpbmcgb24gbm93LCBteSBkZWFyPycgaXQgY29udGludWVkLCB0dXJuaW5nIHRvIEFsaWNlIGFzIGl0DQorc3Bva2UuDQorDQorICBgQXMgd2V0IGFzIGV2ZXIsJyBzYWlkIEFsaWNlIGluIGEgbWVsYW5jaG9seSB0b25lOiAgYGl0IGRvZXNuJ3QNCitzZWVtIHRvIGRyeSBtZSBhdCBhbGwuJw0KKw0KKyAgYEluIHRoYXQgY2FzZSwnIHNhaWQgdGhlIERvZG8gc29sZW1ubHksIHJpc2luZyB0byBpdHMgZmVldCwgYEkNCittb3ZlIHRoYXQgdGhlIG1lZXRpbmcgYWRqb3VybiwgZm9yIHRoZSBpbW1lZGlhdGUgYWRvcHRpb24gb2YgbW9yZQ0KK2VuZXJnZXRpYyByZW1lZGllcy0tJw0KKw0KKyAgYFNwZWFrIEVuZ2xpc2ghJyBzYWlkIHRoZSBFYWdsZXQuICBgSSBkb24ndCBrbm93IHRoZSBtZWFuaW5nIG9mDQoraGFsZiB0aG9zZSBsb25nIHdvcmRzLCBhbmQsIHdoYXQncyBtb3JlLCBJIGRvbid0IGJlbGlldmUgeW91IGRvDQorZWl0aGVyIScgIEFuZCB0aGUgRWFnbGV0IGJlbnQgZG93biBpdHMgaGVhZCB0byBoaWRlIGEgc21pbGU6DQorc29tZSBvZiB0aGUgb3RoZXIgYmlyZHMgdGl0dGVyZWQgYXVkaWJseS4NCisNCisgIGBXaGF0IEkgd2FzIGdvaW5nIHRvIHNheSwnIHNhaWQgdGhlIERvZG8gaW4gYW4gb2ZmZW5kZWQgdG9uZSwNCitgd2FzLCB0aGF0IHRoZSBiZXN0IHRoaW5nIHRvIGdldCB1cyBkcnkgd291bGQgYmUgYSBDYXVjdXMtcmFjZS4nDQorDQorICBgV2hhdCBJUyBhIENhdWN1cy1yYWNlPycgc2FpZCBBbGljZTsgbm90IHRoYXQgc2hlIHdhbnRlZCBtdWNoDQordG8ga25vdywgYnV0IHRoZSBEb2RvIGhhZCBwYXVzZWQgYXMgaWYgaXQgdGhvdWdodCB0aGF0IFNPTUVCT0RZDQorb3VnaHQgdG8gc3BlYWssIGFuZCBubyBvbmUgZWxzZSBzZWVtZWQgaW5jbGluZWQgdG8gc2F5IGFueXRoaW5nLg0KKw0KKyAgYFdoeSwnIHNhaWQgdGhlIERvZG8sIGB0aGUgYmVzdCB3YXkgdG8gZXhwbGFpbiBpdCBpcyB0byBkbyBpdC4nDQorKEFuZCwgYXMgeW91IG1pZ2h0IGxpa2UgdG8gdHJ5IHRoZSB0aGluZyB5b3Vyc2VsZiwgc29tZSB3aW50ZXINCitkYXksIEkgd2lsbCB0ZWxsIHlvdSBob3cgdGhlIERvZG8gbWFuYWdlZCBpdC4pDQorDQorICBGaXJzdCBpdCBtYXJrZWQgb3V0IGEgcmFjZS1jb3Vyc2UsIGluIGEgc29ydCBvZiBjaXJjbGUsIChgdGhlDQorZXhhY3Qgc2hhcGUgZG9lc24ndCBtYXR0ZXIsJyBpdCBzYWlkLCkgYW5kIHRoZW4gYWxsIHRoZSBwYXJ0eQ0KK3dlcmUgcGxhY2VkIGFsb25nIHRoZSBjb3Vyc2UsIGhlcmUgYW5kIHRoZXJlLiAgVGhlcmUgd2FzIG5vIGBPbmUsDQordHdvLCB0aHJlZSwgYW5kIGF3YXksJyBidXQgdGhleSBiZWdhbiBydW5uaW5nIHdoZW4gdGhleSBsaWtlZCwNCithbmQgbGVmdCBvZmYgd2hlbiB0aGV5IGxpa2VkLCBzbyB0aGF0IGl0IHdhcyBub3QgZWFzeSB0byBrbm93DQord2hlbiB0aGUgcmFjZSB3YXMgb3Zlci4gIEhvd2V2ZXIsIHdoZW4gdGhleSBoYWQgYmVlbiBydW5uaW5nIGhhbGYNCithbiBob3VyIG9yIHNvLCBhbmQgd2VyZSBxdWl0ZSBkcnkgYWdhaW4sIHRoZSBEb2RvIHN1ZGRlbmx5IGNhbGxlZA0KK291dCBgVGhlIHJhY2UgaXMgb3ZlciEnIGFuZCB0aGV5IGFsbCBjcm93ZGVkIHJvdW5kIGl0LCBwYW50aW5nLA0KK2FuZCBhc2tpbmcsIGBCdXQgd2hvIGhhcyB3b24/Jw0KKw0KKyAgVGhpcyBxdWVzdGlvbiB0aGUgRG9kbyBjb3VsZCBub3QgYW5zd2VyIHdpdGhvdXQgYSBncmVhdCBkZWFsIG9mDQordGhvdWdodCwgYW5kIGl0IHNhdCBmb3IgYSBsb25nIHRpbWUgd2l0aCBvbmUgZmluZ2VyIHByZXNzZWQgdXBvbg0KK2l0cyBmb3JlaGVhZCAodGhlIHBvc2l0aW9uIGluIHdoaWNoIHlvdSB1c3VhbGx5IHNlZSBTaGFrZXNwZWFyZSwNCitpbiB0aGUgcGljdHVyZXMgb2YgaGltKSwgd2hpbGUgdGhlIHJlc3Qgd2FpdGVkIGluIHNpbGVuY2UuICBBdA0KK2xhc3QgdGhlIERvZG8gc2FpZCwgYEVWRVJZQk9EWSBoYXMgd29uLCBhbmQgYWxsIG11c3QgaGF2ZQ0KK3ByaXplcy4nDQorDQorICBgQnV0IHdobyBpcyB0byBnaXZlIHRoZSBwcml6ZXM/JyBxdWl0ZSBhIGNob3J1cyBvZiB2b2ljZXMNCithc2tlZC4NCisNCisgIGBXaHksIFNIRSwgb2YgY291cnNlLCcgc2FpZCB0aGUgRG9kbywgcG9pbnRpbmcgdG8gQWxpY2Ugd2l0aA0KK29uZSBmaW5nZXI7IGFuZCB0aGUgd2hvbGUgcGFydHkgYXQgb25jZSBjcm93ZGVkIHJvdW5kIGhlciwNCitjYWxsaW5nIG91dCBpbiBhIGNvbmZ1c2VkIHdheSwgYFByaXplcyEgUHJpemVzIScNCisNCisgIEFsaWNlIGhhZCBubyBpZGVhIHdoYXQgdG8gZG8sIGFuZCBpbiBkZXNwYWlyIHNoZSBwdXQgaGVyIGhhbmQNCitpbiBoZXIgcG9ja2V0LCBhbmQgcHVsbGVkIG91dCBhIGJveCBvZiBjb21maXRzLCAobHVja2lseSB0aGUgc2FsdA0KK3dhdGVyIGhhZCBub3QgZ290IGludG8gaXQpLCBhbmQgaGFuZGVkIHRoZW0gcm91bmQgYXMgcHJpemVzLg0KK1RoZXJlIHdhcyBleGFjdGx5IG9uZSBhLXBpZWNlIGFsbCByb3VuZC4NCisNCisgIGBCdXQgc2hlIG11c3QgaGF2ZSBhIHByaXplIGhlcnNlbGYsIHlvdSBrbm93LCcgc2FpZCB0aGUgTW91c2UuDQorDQorICBgT2YgY291cnNlLCcgdGhlIERvZG8gcmVwbGllZCB2ZXJ5IGdyYXZlbHkuICBgV2hhdCBlbHNlIGhhdmUNCit5b3UgZ290IGluIHlvdXIgcG9ja2V0PycgaGUgd2VudCBvbiwgdHVybmluZyB0byBBbGljZS4NCisNCisgIGBPbmx5IGEgdGhpbWJsZSwnIHNhaWQgQWxpY2Ugc2FkbHkuDQorDQorICBgSGFuZCBpdCBvdmVyIGhlcmUsJyBzYWlkIHRoZSBEb2RvLg0KKw0KKyAgVGhlbiB0aGV5IGFsbCBjcm93ZGVkIHJvdW5kIGhlciBvbmNlIG1vcmUsIHdoaWxlIHRoZSBEb2RvDQorc29sZW1ubHkgcHJlc2VudGVkIHRoZSB0aGltYmxlLCBzYXlpbmcgYFdlIGJlZyB5b3VyIGFjY2VwdGFuY2Ugb2YNCit0aGlzIGVsZWdhbnQgdGhpbWJsZSc7IGFuZCwgd2hlbiBpdCBoYWQgZmluaXNoZWQgdGhpcyBzaG9ydA0KK3NwZWVjaCwgdGhleSBhbGwgY2hlZXJlZC4NCisNCisgIEFsaWNlIHRob3VnaHQgdGhlIHdob2xlIHRoaW5nIHZlcnkgYWJzdXJkLCBidXQgdGhleSBhbGwgbG9va2VkDQorc28gZ3JhdmUgdGhhdCBzaGUgZGlkIG5vdCBkYXJlIHRvIGxhdWdoOyBhbmQsIGFzIHNoZSBjb3VsZCBub3QNCit0aGluayBvZiBhbnl0aGluZyB0byBzYXksIHNoZSBzaW1wbHkgYm93ZWQsIGFuZCB0b29rIHRoZSB0aGltYmxlLA0KK2xvb2tpbmcgYXMgc29sZW1uIGFzIHNoZSBjb3VsZC4NCisNCisgIFRoZSBuZXh0IHRoaW5nIHdhcyB0byBlYXQgdGhlIGNvbWZpdHM6ICB0aGlzIGNhdXNlZCBzb21lIG5vaXNlDQorYW5kIGNvbmZ1c2lvbiwgYXMgdGhlIGxhcmdlIGJpcmRzIGNvbXBsYWluZWQgdGhhdCB0aGV5IGNvdWxkIG5vdA0KK3Rhc3RlIHRoZWlycywgYW5kIHRoZSBzbWFsbCBvbmVzIGNob2tlZCBhbmQgaGFkIHRvIGJlIHBhdHRlZCBvbg0KK3RoZSBiYWNrLiAgSG93ZXZlciwgaXQgd2FzIG92ZXIgYXQgbGFzdCwgYW5kIHRoZXkgc2F0IGRvd24gYWdhaW4NCitpbiBhIHJpbmcsIGFuZCBiZWdnZWQgdGhlIE1vdXNlIHRvIHRlbGwgdGhlbSBzb21ldGhpbmcgbW9yZS4NCisNCisgIGBZb3UgcHJvbWlzZWQgdG8gdGVsbCBtZSB5b3VyIGhpc3RvcnksIHlvdSBrbm93LCcgc2FpZCBBbGljZSwNCitgYW5kIHdoeSBpdCBpcyB5b3UgaGF0ZS0tQyBhbmQgRCwnIHNoZSBhZGRlZCBpbiBhIHdoaXNwZXIsIGhhbGYNCithZnJhaWQgdGhhdCBpdCB3b3VsZCBiZSBvZmZlbmRlZCBhZ2Fpbi4NCisNCisgIGBNaW5lIGlzIGEgbG9uZyBhbmQgYSBzYWQgdGFsZSEnIHNhaWQgdGhlIE1vdXNlLCB0dXJuaW5nIHRvDQorQWxpY2UsIGFuZCBzaWdoaW5nLg0KKw0KKyAgYEl0IElTIGEgbG9uZyB0YWlsLCBjZXJ0YWlubHksJyBzYWlkIEFsaWNlLCBsb29raW5nIGRvd24gd2l0aA0KK3dvbmRlciBhdCB0aGUgTW91c2UncyB0YWlsOyBgYnV0IHdoeSBkbyB5b3UgY2FsbCBpdCBzYWQ/JyAgQW5kDQorc2hlIGtlcHQgb24gcHV6emxpbmcgYWJvdXQgaXQgd2hpbGUgdGhlIE1vdXNlIHdhcyBzcGVha2luZywgc28NCit0aGF0IGhlciBpZGVhIG9mIHRoZSB0YWxlIHdhcyBzb21ldGhpbmcgbGlrZSB0aGlzOi0tDQorDQorICAgICAgICAgICAgICAgICAgICBgRnVyeSBzYWlkIHRvIGENCisgICAgICAgICAgICAgICAgICAgbW91c2UsIFRoYXQgaGUNCisgICAgICAgICAgICAgICAgIG1ldCBpbiB0aGUNCisgICAgICAgICAgICAgICBob3VzZSwNCisgICAgICAgICAgICAiTGV0IHVzDQorICAgICAgICAgICAgICBib3RoIGdvIHRvDQorICAgICAgICAgICAgICAgIGxhdzogIEkgd2lsbA0KKyAgICAgICAgICAgICAgICAgIHByb3NlY3V0ZQ0KKyAgICAgICAgICAgICAgICAgICAgWU9VLiAgLS1Db21lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSSdsbCB0YWtlIG5vDQorICAgICAgICAgICAgICAgICAgICAgICAgZGVuaWFsOyBXZQ0KKyAgICAgICAgICAgICAgICAgICAgIG11c3QgaGF2ZSBhDQorICAgICAgICAgICAgICAgICB0cmlhbDogIEZvcg0KKyAgICAgICAgICAgICAgcmVhbGx5IHRoaXMNCisgICAgICAgICAgIG1vcm5pbmcgSSd2ZQ0KKyAgICAgICAgICBub3RoaW5nDQorICAgICAgICAgdG8gZG8uIg0KKyAgICAgICAgICAgU2FpZCB0aGUNCisgICAgICAgICAgICAgbW91c2UgdG8gdGhlDQorICAgICAgICAgICAgICAgY3VyLCAiU3VjaA0KKyAgICAgICAgICAgICAgICAgYSB0cmlhbCwNCisgICAgICAgICAgICAgICAgICAgZGVhciBTaXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGgNCisgICAgICAgICAgICAgICAgICAgICBubyBqdXJ5DQorICAgICAgICAgICAgICAgICAgb3IganVkZ2UsDQorICAgICAgICAgICAgICAgIHdvdWxkIGJlDQorICAgICAgICAgICAgICB3YXN0aW5nDQorICAgICAgICAgICAgIG91cg0KKyAgICAgICAgICAgICAgYnJlYXRoLiINCisgICAgICAgICAgICAgICAiSSdsbCBiZQ0KKyAgICAgICAgICAgICAgICAganVkZ2UsIEknbGwNCisgICAgICAgICAgICAgICAgICAgYmUganVyeSwiDQorICAgICAgICAgICAgICAgICAgICAgICAgIFNhaWQNCisgICAgICAgICAgICAgICAgICAgIGN1bm5pbmcNCisgICAgICAgICAgICAgICAgICAgICAgb2xkIEZ1cnk6DQorICAgICAgICAgICAgICAgICAgICAgIkknbGwNCisgICAgICAgICAgICAgICAgICAgICAgdHJ5IHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICB3aG9sZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQNCisgICAgICAgICAgICAgICAgICAgICAgICBjb25kZW1uDQorICAgICAgICAgICAgICAgICAgICAgICB5b3UNCisgICAgICAgICAgICAgICAgICAgICAgdG8NCisgICAgICAgICAgICAgICAgICAgICAgIGRlYXRoLiInDQorDQorDQorICBgWW91IGFyZSBub3QgYXR0ZW5kaW5nIScgc2FpZCB0aGUgTW91c2UgdG8gQWxpY2Ugc2V2ZXJlbHkuDQorYFdoYXQgYXJlIHlvdSB0aGlua2luZyBvZj8nDQorDQorICBgSSBiZWcgeW91ciBwYXJkb24sJyBzYWlkIEFsaWNlIHZlcnkgaHVtYmx5OiAgYHlvdSBoYWQgZ290IHRvDQordGhlIGZpZnRoIGJlbmQsIEkgdGhpbms/Jw0KKw0KKyAgYEkgaGFkIE5PVCEnIGNyaWVkIHRoZSBNb3VzZSwgc2hhcnBseSBhbmQgdmVyeSBhbmdyaWx5Lg0KKw0KKyAgYEEga25vdCEnIHNhaWQgQWxpY2UsIGFsd2F5cyByZWFkeSB0byBtYWtlIGhlcnNlbGYgdXNlZnVsLCBhbmQNCitsb29raW5nIGFueGlvdXNseSBhYm91dCBoZXIuICBgT2gsIGRvIGxldCBtZSBoZWxwIHRvIHVuZG8gaXQhJw0KKw0KKyAgYEkgc2hhbGwgZG8gbm90aGluZyBvZiB0aGUgc29ydCwnIHNhaWQgdGhlIE1vdXNlLCBnZXR0aW5nIHVwDQorYW5kIHdhbGtpbmcgYXdheS4gIGBZb3UgaW5zdWx0IG1lIGJ5IHRhbGtpbmcgc3VjaCBub25zZW5zZSEnDQorDQorICBgSSBkaWRuJ3QgbWVhbiBpdCEnIHBsZWFkZWQgcG9vciBBbGljZS4gIGBCdXQgeW91J3JlIHNvIGVhc2lseQ0KK29mZmVuZGVkLCB5b3Uga25vdyEnDQorDQorICBUaGUgTW91c2Ugb25seSBncm93bGVkIGluIHJlcGx5Lg0KKw0KKyAgYFBsZWFzZSBjb21lIGJhY2sgYW5kIGZpbmlzaCB5b3VyIHN0b3J5IScgQWxpY2UgY2FsbGVkIGFmdGVyDQoraXQ7IGFuZCB0aGUgb3RoZXJzIGFsbCBqb2luZWQgaW4gY2hvcnVzLCBgWWVzLCBwbGVhc2UgZG8hJyBidXQNCit0aGUgTW91c2Ugb25seSBzaG9vayBpdHMgaGVhZCBpbXBhdGllbnRseSwgYW5kIHdhbGtlZCBhIGxpdHRsZQ0KK3F1aWNrZXIuDQorDQorICBgV2hhdCBhIHBpdHkgaXQgd291bGRuJ3Qgc3RheSEnIHNpZ2hlZCB0aGUgTG9yeSwgYXMgc29vbiBhcyBpdA0KK3dhcyBxdWl0ZSBvdXQgb2Ygc2lnaHQ7IGFuZCBhbiBvbGQgQ3JhYiB0b29rIHRoZSBvcHBvcnR1bml0eSBvZg0KK3NheWluZyB0byBoZXIgZGF1Z2h0ZXIgYEFoLCBteSBkZWFyISAgTGV0IHRoaXMgYmUgYSBsZXNzb24gdG8geW91DQorbmV2ZXIgdG8gbG9zZSBZT1VSIHRlbXBlciEnICBgSG9sZCB5b3VyIHRvbmd1ZSwgTWEhJyBzYWlkIHRoZQ0KK3lvdW5nIENyYWIsIGEgbGl0dGxlIHNuYXBwaXNobHkuICBgWW91J3JlIGVub3VnaCB0byB0cnkgdGhlDQorcGF0aWVuY2Ugb2YgYW4gb3lzdGVyIScNCisNCisgIGBJIHdpc2ggSSBoYWQgb3VyIERpbmFoIGhlcmUsIEkga25vdyBJIGRvIScgc2FpZCBBbGljZSBhbG91ZCwNCithZGRyZXNzaW5nIG5vYm9keSBpbiBwYXJ0aWN1bGFyLiAgYFNoZSdkIHNvb24gZmV0Y2ggaXQgYmFjayEnDQorDQorICBgQW5kIHdobyBpcyBEaW5haCwgaWYgSSBtaWdodCB2ZW50dXJlIHRvIGFzayB0aGUgcXVlc3Rpb24/Jw0KK3NhaWQgdGhlIExvcnkuDQorDQorICBBbGljZSByZXBsaWVkIGVhZ2VybHksIGZvciBzaGUgd2FzIGFsd2F5cyByZWFkeSB0byB0YWxrIGFib3V0DQoraGVyIHBldDogIGBEaW5haCdzIG91ciBjYXQuICBBbmQgc2hlJ3Mgc3VjaCBhIGNhcGl0YWwgb25lIGZvcg0KK2NhdGNoaW5nIG1pY2UgeW91IGNhbid0IHRoaW5rISAgQW5kIG9oLCBJIHdpc2ggeW91IGNvdWxkIHNlZSBoZXINCithZnRlciB0aGUgYmlyZHMhICBXaHksIHNoZSdsbCBlYXQgYSBsaXR0bGUgYmlyZCBhcyBzb29uIGFzIGxvb2sNCithdCBpdCEnDQorDQorICBUaGlzIHNwZWVjaCBjYXVzZWQgYSByZW1hcmthYmxlIHNlbnNhdGlvbiBhbW9uZyB0aGUgcGFydHkuDQorU29tZSBvZiB0aGUgYmlyZHMgaHVycmllZCBvZmYgYXQgb25jZTogIG9uZSB0aGUgb2xkIE1hZ3BpZSBiZWdhbg0KK3dyYXBwaW5nIGl0c2VsZiB1cCB2ZXJ5IGNhcmVmdWxseSwgcmVtYXJraW5nLCBgSSByZWFsbHkgbXVzdCBiZQ0KK2dldHRpbmcgaG9tZTsgdGhlIG5pZ2h0LWFpciBkb2Vzbid0IHN1aXQgbXkgdGhyb2F0IScgYW5kIGEgQ2FuYXJ5DQorY2FsbGVkIG91dCBpbiBhIHRyZW1ibGluZyB2b2ljZSB0byBpdHMgY2hpbGRyZW4sIGBDb21lIGF3YXksIG15DQorZGVhcnMhICBJdCdzIGhpZ2ggdGltZSB5b3Ugd2VyZSBhbGwgaW4gYmVkIScgIE9uIHZhcmlvdXMgcHJldGV4dHMNCit0aGV5IGFsbCBtb3ZlZCBvZmYsIGFuZCBBbGljZSB3YXMgc29vbiBsZWZ0IGFsb25lLg0KKw0KKyAgYEkgd2lzaCBJIGhhZG4ndCBtZW50aW9uZWQgRGluYWghJyBzaGUgc2FpZCB0byBoZXJzZWxmIGluIGENCittZWxhbmNob2x5IHRvbmUuICBgTm9ib2R5IHNlZW1zIHRvIGxpa2UgaGVyLCBkb3duIGhlcmUsIGFuZCBJJ20NCitzdXJlIHNoZSdzIHRoZSBiZXN0IGNhdCBpbiB0aGUgd29ybGQhICBPaCwgbXkgZGVhciBEaW5haCEgIEkNCit3b25kZXIgaWYgSSBzaGFsbCBldmVyIHNlZSB5b3UgYW55IG1vcmUhJyAgQW5kIGhlcmUgcG9vciBBbGljZQ0KK2JlZ2FuIHRvIGNyeSBhZ2FpbiwgZm9yIHNoZSBmZWx0IHZlcnkgbG9uZWx5IGFuZCBsb3ctc3Bpcml0ZWQuDQorSW4gYSBsaXR0bGUgd2hpbGUsIGhvd2V2ZXIsIHNoZSBhZ2FpbiBoZWFyZCBhIGxpdHRsZSBwYXR0ZXJpbmcgb2YNCitmb290c3RlcHMgaW4gdGhlIGRpc3RhbmNlLCBhbmQgc2hlIGxvb2tlZCB1cCBlYWdlcmx5LCBoYWxmIGhvcGluZw0KK3RoYXQgdGhlIE1vdXNlIGhhZCBjaGFuZ2VkIGhpcyBtaW5kLCBhbmQgd2FzIGNvbWluZyBiYWNrIHRvDQorZmluaXNoIGhpcyBzdG9yeS4NCisNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDSEFQVEVSIElWDQorDQorICAgICAgICAgICAgICAgIFRoZSBSYWJiaXQgU2VuZHMgaW4gYSBMaXR0bGUgQmlsbA0KKw0KKw0KKyAgSXQgd2FzIHRoZSBXaGl0ZSBSYWJiaXQsIHRyb3R0aW5nIHNsb3dseSBiYWNrIGFnYWluLCBhbmQNCitsb29raW5nIGFueGlvdXNseSBhYm91dCBhcyBpdCB3ZW50LCBhcyBpZiBpdCBoYWQgbG9zdCBzb21ldGhpbmc7DQorYW5kIHNoZSBoZWFyZCBpdCBtdXR0ZXJpbmcgdG8gaXRzZWxmIGBUaGUgRHVjaGVzcyEgIFRoZSBEdWNoZXNzIQ0KK09oIG15IGRlYXIgcGF3cyEgIE9oIG15IGZ1ciBhbmQgd2hpc2tlcnMhICBTaGUnbGwgZ2V0IG1lDQorZXhlY3V0ZWQsIGFzIHN1cmUgYXMgZmVycmV0cyBhcmUgZmVycmV0cyEgIFdoZXJlIENBTiBJIGhhdmUNCitkcm9wcGVkIHRoZW0sIEkgd29uZGVyPycgIEFsaWNlIGd1ZXNzZWQgaW4gYSBtb21lbnQgdGhhdCBpdCB3YXMNCitsb29raW5nIGZvciB0aGUgZmFuIGFuZCB0aGUgcGFpciBvZiB3aGl0ZSBraWQgZ2xvdmVzLCBhbmQgc2hlDQordmVyeSBnb29kLW5hdHVyZWRseSBiZWdhbiBodW50aW5nIGFib3V0IGZvciB0aGVtLCBidXQgdGhleSB3ZXJlDQorbm93aGVyZSB0byBiZSBzZWVuLS1ldmVyeXRoaW5nIHNlZW1lZCB0byBoYXZlIGNoYW5nZWQgc2luY2UgaGVyDQorc3dpbSBpbiB0aGUgcG9vbCwgYW5kIHRoZSBncmVhdCBoYWxsLCB3aXRoIHRoZSBnbGFzcyB0YWJsZSBhbmQNCit0aGUgbGl0dGxlIGRvb3IsIGhhZCB2YW5pc2hlZCBjb21wbGV0ZWx5Lg0KKw0KKyAgVmVyeSBzb29uIHRoZSBSYWJiaXQgbm90aWNlZCBBbGljZSwgYXMgc2hlIHdlbnQgaHVudGluZyBhYm91dCwNCithbmQgY2FsbGVkIG91dCB0byBoZXIgaW4gYW4gYW5ncnkgdG9uZSwgYFdoeSwgTWFyeSBBbm4sIHdoYXQgQVJFDQoreW91IGRvaW5nIG91dCBoZXJlPyAgUnVuIGhvbWUgdGhpcyBtb21lbnQsIGFuZCBmZXRjaCBtZSBhIHBhaXIgb2YNCitnbG92ZXMgYW5kIGEgZmFuISAgUXVpY2ssIG5vdyEnICBBbmQgQWxpY2Ugd2FzIHNvIG11Y2ggZnJpZ2h0ZW5lZA0KK3RoYXQgc2hlIHJhbiBvZmYgYXQgb25jZSBpbiB0aGUgZGlyZWN0aW9uIGl0IHBvaW50ZWQgdG8sIHdpdGhvdXQNCit0cnlpbmcgdG8gZXhwbGFpbiB0aGUgbWlzdGFrZSBpdCBoYWQgbWFkZS4NCisNCisgIGBIZSB0b29rIG1lIGZvciBoaXMgaG91c2VtYWlkLCcgc2hlIHNhaWQgdG8gaGVyc2VsZiBhcyBzaGUgcmFuLg0KK2BIb3cgc3VycHJpc2VkIGhlJ2xsIGJlIHdoZW4gaGUgZmluZHMgb3V0IHdobyBJIGFtISAgQnV0IEknZA0KK2JldHRlciB0YWtlIGhpbSBoaXMgZmFuIGFuZCBnbG92ZXMtLXRoYXQgaXMsIGlmIEkgY2FuIGZpbmQgdGhlbS4nDQorQXMgc2hlIHNhaWQgdGhpcywgc2hlIGNhbWUgdXBvbiBhIG5lYXQgbGl0dGxlIGhvdXNlLCBvbiB0aGUgZG9vcg0KK29mIHdoaWNoIHdhcyBhIGJyaWdodCBicmFzcyBwbGF0ZSB3aXRoIHRoZSBuYW1lIGBXLiBSQUJCSVQnDQorZW5ncmF2ZWQgdXBvbiBpdC4gIFNoZSB3ZW50IGluIHdpdGhvdXQga25vY2tpbmcsIGFuZCBodXJyaWVkDQordXBzdGFpcnMsIGluIGdyZWF0IGZlYXIgbGVzdCBzaGUgc2hvdWxkIG1lZXQgdGhlIHJlYWwgTWFyeSBBbm4sDQorYW5kIGJlIHR1cm5lZCBvdXQgb2YgdGhlIGhvdXNlIGJlZm9yZSBzaGUgaGFkIGZvdW5kIHRoZSBmYW4gYW5kDQorZ2xvdmVzLg0KKw0KKyAgYEhvdyBxdWVlciBpdCBzZWVtcywnIEFsaWNlIHNhaWQgdG8gaGVyc2VsZiwgYHRvIGJlIGdvaW5nDQorbWVzc2FnZXMgZm9yIGEgcmFiYml0ISAgSSBzdXBwb3NlIERpbmFoJ2xsIGJlIHNlbmRpbmcgbWUgb24NCittZXNzYWdlcyBuZXh0IScgIEFuZCBzaGUgYmVnYW4gZmFuY3lpbmcgdGhlIHNvcnQgb2YgdGhpbmcgdGhhdA0KK3dvdWxkIGhhcHBlbjogIGAiTWlzcyBBbGljZSEgIENvbWUgaGVyZSBkaXJlY3RseSwgYW5kIGdldCByZWFkeQ0KK2ZvciB5b3VyIHdhbGshIiAiQ29taW5nIGluIGEgbWludXRlLCBudXJzZSEgIEJ1dCBJJ3ZlIGdvdCB0byBzZWUNCit0aGF0IHRoZSBtb3VzZSBkb2Vzbid0IGdldCBvdXQuIiAgT25seSBJIGRvbid0IHRoaW5rLCcgQWxpY2Ugd2VudA0KK29uLCBgdGhhdCB0aGV5J2QgbGV0IERpbmFoIHN0b3AgaW4gdGhlIGhvdXNlIGlmIGl0IGJlZ2FuIG9yZGVyaW5nDQorcGVvcGxlIGFib3V0IGxpa2UgdGhhdCEnDQorDQorICBCeSB0aGlzIHRpbWUgc2hlIGhhZCBmb3VuZCBoZXIgd2F5IGludG8gYSB0aWR5IGxpdHRsZSByb29tIHdpdGgNCithIHRhYmxlIGluIHRoZSB3aW5kb3csIGFuZCBvbiBpdCAoYXMgc2hlIGhhZCBob3BlZCkgYSBmYW4gYW5kIHR3bw0KK29yIHRocmVlIHBhaXJzIG9mIHRpbnkgd2hpdGUga2lkIGdsb3ZlczogIHNoZSB0b29rIHVwIHRoZSBmYW4gYW5kDQorYSBwYWlyIG9mIHRoZSBnbG92ZXMsIGFuZCB3YXMganVzdCBnb2luZyB0byBsZWF2ZSB0aGUgcm9vbSwgd2hlbg0KK2hlciBleWUgZmVsbCB1cG9uIGEgbGl0dGxlIGJvdHRsZSB0aGF0IHN0b29kIG5lYXIgdGhlIGxvb2tpbmctDQorZ2xhc3MuICBUaGVyZSB3YXMgbm8gbGFiZWwgdGhpcyB0aW1lIHdpdGggdGhlIHdvcmRzIGBEUklOSyBNRSwnDQorYnV0IG5ldmVydGhlbGVzcyBzaGUgdW5jb3JrZWQgaXQgYW5kIHB1dCBpdCB0byBoZXIgbGlwcy4gIGBJIGtub3cNCitTT01FVEhJTkcgaW50ZXJlc3RpbmcgaXMgc3VyZSB0byBoYXBwZW4sJyBzaGUgc2FpZCB0byBoZXJzZWxmLA0KK2B3aGVuZXZlciBJIGVhdCBvciBkcmluayBhbnl0aGluZzsgc28gSSdsbCBqdXN0IHNlZSB3aGF0IHRoaXMNCitib3R0bGUgZG9lcy4gIEkgZG8gaG9wZSBpdCdsbCBtYWtlIG1lIGdyb3cgbGFyZ2UgYWdhaW4sIGZvcg0KK3JlYWxseSBJJ20gcXVpdGUgdGlyZWQgb2YgYmVpbmcgc3VjaCBhIHRpbnkgbGl0dGxlIHRoaW5nIScNCisNCisgIEl0IGRpZCBzbyBpbmRlZWQsIGFuZCBtdWNoIHNvb25lciB0aGFuIHNoZSBoYWQgZXhwZWN0ZWQ6DQorYmVmb3JlIHNoZSBoYWQgZHJ1bmsgaGFsZiB0aGUgYm90dGxlLCBzaGUgZm91bmQgaGVyIGhlYWQgcHJlc3NpbmcNCithZ2FpbnN0IHRoZSBjZWlsaW5nLCBhbmQgaGFkIHRvIHN0b29wIHRvIHNhdmUgaGVyIG5lY2sgZnJvbSBiZWluZw0KK2Jyb2tlbi4gIFNoZSBoYXN0aWx5IHB1dCBkb3duIHRoZSBib3R0bGUsIHNheWluZyB0byBoZXJzZWxmDQorYFRoYXQncyBxdWl0ZSBlbm91Z2gtLUkgaG9wZSBJIHNoYW4ndCBncm93IGFueSBtb3JlLS1BcyBpdCBpcywgSQ0KK2Nhbid0IGdldCBvdXQgYXQgdGhlIGRvb3ItLUkgZG8gd2lzaCBJIGhhZG4ndCBkcnVuayBxdWl0ZSBzbw0KK211Y2ghJw0KKw0KKyAgQWxhcyEgaXQgd2FzIHRvbyBsYXRlIHRvIHdpc2ggdGhhdCEgIFNoZSB3ZW50IG9uIGdyb3dpbmcsIGFuZA0KK2dyb3dpbmcsIGFuZCB2ZXJ5IHNvb24gaGFkIHRvIGtuZWVsIGRvd24gb24gdGhlIGZsb29yOiAgaW4NCithbm90aGVyIG1pbnV0ZSB0aGVyZSB3YXMgbm90IGV2ZW4gcm9vbSBmb3IgdGhpcywgYW5kIHNoZSB0cmllZA0KK3RoZSBlZmZlY3Qgb2YgbHlpbmcgZG93biB3aXRoIG9uZSBlbGJvdyBhZ2FpbnN0IHRoZSBkb29yLCBhbmQgdGhlDQorb3RoZXIgYXJtIGN1cmxlZCByb3VuZCBoZXIgaGVhZC4gIFN0aWxsIHNoZSB3ZW50IG9uIGdyb3dpbmcsIGFuZCwNCithcyBhIGxhc3QgcmVzb3VyY2UsIHNoZSBwdXQgb25lIGFybSBvdXQgb2YgdGhlIHdpbmRvdywgYW5kIG9uZQ0KK2Zvb3QgdXAgdGhlIGNoaW1uZXksIGFuZCBzYWlkIHRvIGhlcnNlbGYgYE5vdyBJIGNhbiBkbyBubyBtb3JlLA0KK3doYXRldmVyIGhhcHBlbnMuICBXaGF0IFdJTEwgYmVjb21lIG9mIG1lPycNCisNCisgIEx1Y2tpbHkgZm9yIEFsaWNlLCB0aGUgbGl0dGxlIG1hZ2ljIGJvdHRsZSBoYWQgbm93IGhhZCBpdHMgZnVsbA0KK2VmZmVjdCwgYW5kIHNoZSBncmV3IG5vIGxhcmdlcjogIHN0aWxsIGl0IHdhcyB2ZXJ5IHVuY29tZm9ydGFibGUsDQorYW5kLCBhcyB0aGVyZSBzZWVtZWQgdG8gYmUgbm8gc29ydCBvZiBjaGFuY2Ugb2YgaGVyIGV2ZXIgZ2V0dGluZw0KK291dCBvZiB0aGUgcm9vbSBhZ2Fpbiwgbm8gd29uZGVyIHNoZSBmZWx0IHVuaGFwcHkuDQorDQorICBgSXQgd2FzIG11Y2ggcGxlYXNhbnRlciBhdCBob21lLCcgdGhvdWdodCBwb29yIEFsaWNlLCBgd2hlbiBvbmUNCit3YXNuJ3QgYWx3YXlzIGdyb3dpbmcgbGFyZ2VyIGFuZCBzbWFsbGVyLCBhbmQgYmVpbmcgb3JkZXJlZCBhYm91dA0KK2J5IG1pY2UgYW5kIHJhYmJpdHMuICBJIGFsbW9zdCB3aXNoIEkgaGFkbid0IGdvbmUgZG93biB0aGF0DQorcmFiYml0LWhvbGUtLWFuZCB5ZXQtLWFuZCB5ZXQtLWl0J3MgcmF0aGVyIGN1cmlvdXMsIHlvdSBrbm93LA0KK3RoaXMgc29ydCBvZiBsaWZlISAgSSBkbyB3b25kZXIgd2hhdCBDQU4gaGF2ZSBoYXBwZW5lZCB0byBtZSENCitXaGVuIEkgdXNlZCB0byByZWFkIGZhaXJ5LXRhbGVzLCBJIGZhbmNpZWQgdGhhdCBraW5kIG9mIHRoaW5nDQorbmV2ZXIgaGFwcGVuZWQsIGFuZCBub3cgaGVyZSBJIGFtIGluIHRoZSBtaWRkbGUgb2Ygb25lISAgVGhlcmUNCitvdWdodCB0byBiZSBhIGJvb2sgd3JpdHRlbiBhYm91dCBtZSwgdGhhdCB0aGVyZSBvdWdodCEgIEFuZCB3aGVuDQorSSBncm93IHVwLCBJJ2xsIHdyaXRlIG9uZS0tYnV0IEknbSBncm93biB1cCBub3csJyBzaGUgYWRkZWQgaW4gYQ0KK3NvcnJvd2Z1bCB0b25lOyBgYXQgbGVhc3QgdGhlcmUncyBubyByb29tIHRvIGdyb3cgdXAgYW55IG1vcmUNCitIRVJFLicNCisNCisgIGBCdXQgdGhlbiwnIHRob3VnaHQgQWxpY2UsIGBzaGFsbCBJIE5FVkVSIGdldCBhbnkgb2xkZXIgdGhhbiBJDQorYW0gbm93PyAgVGhhdCdsbCBiZSBhIGNvbWZvcnQsIG9uZSB3YXktLW5ldmVyIHRvIGJlIGFuIG9sZCB3b21hbi0NCistYnV0IHRoZW4tLWFsd2F5cyB0byBoYXZlIGxlc3NvbnMgdG8gbGVhcm4hICBPaCwgSSBzaG91bGRuJ3QgbGlrZQ0KK1RIQVQhJw0KKw0KKyAgYE9oLCB5b3UgZm9vbGlzaCBBbGljZSEnIHNoZSBhbnN3ZXJlZCBoZXJzZWxmLiAgYEhvdyBjYW4geW91DQorbGVhcm4gbGVzc29ucyBpbiBoZXJlPyAgV2h5LCB0aGVyZSdzIGhhcmRseSByb29tIGZvciBZT1UsIGFuZCBubw0KK3Jvb20gYXQgYWxsIGZvciBhbnkgbGVzc29uLWJvb2tzIScNCisNCisgIEFuZCBzbyBzaGUgd2VudCBvbiwgdGFraW5nIGZpcnN0IG9uZSBzaWRlIGFuZCB0aGVuIHRoZSBvdGhlciwNCithbmQgbWFraW5nIHF1aXRlIGEgY29udmVyc2F0aW9uIG9mIGl0IGFsdG9nZXRoZXI7IGJ1dCBhZnRlciBhIGZldw0KK21pbnV0ZXMgc2hlIGhlYXJkIGEgdm9pY2Ugb3V0c2lkZSwgYW5kIHN0b3BwZWQgdG8gbGlzdGVuLg0KKw0KKyAgYE1hcnkgQW5uISAgTWFyeSBBbm4hJyBzYWlkIHRoZSB2b2ljZS4gIGBGZXRjaCBtZSBteSBnbG92ZXMNCit0aGlzIG1vbWVudCEnICBUaGVuIGNhbWUgYSBsaXR0bGUgcGF0dGVyaW5nIG9mIGZlZXQgb24gdGhlDQorc3RhaXJzLiAgQWxpY2Uga25ldyBpdCB3YXMgdGhlIFJhYmJpdCBjb21pbmcgdG8gbG9vayBmb3IgaGVyLCBhbmQNCitzaGUgdHJlbWJsZWQgdGlsbCBzaGUgc2hvb2sgdGhlIGhvdXNlLCBxdWl0ZSBmb3JnZXR0aW5nIHRoYXQgc2hlDQord2FzIG5vdyBhYm91dCBhIHRob3VzYW5kIHRpbWVzIGFzIGxhcmdlIGFzIHRoZSBSYWJiaXQsIGFuZCBoYWQgbm8NCityZWFzb24gdG8gYmUgYWZyYWlkIG9mIGl0Lg0KKw0KKyAgUHJlc2VudGx5IHRoZSBSYWJiaXQgY2FtZSB1cCB0byB0aGUgZG9vciwgYW5kIHRyaWVkIHRvIG9wZW4gaXQ7DQorYnV0LCBhcyB0aGUgZG9vciBvcGVuZWQgaW53YXJkcywgYW5kIEFsaWNlJ3MgZWxib3cgd2FzIHByZXNzZWQNCitoYXJkIGFnYWluc3QgaXQsIHRoYXQgYXR0ZW1wdCBwcm92ZWQgYSBmYWlsdXJlLiAgQWxpY2UgaGVhcmQgaXQNCitzYXkgdG8gaXRzZWxmIGBUaGVuIEknbGwgZ28gcm91bmQgYW5kIGdldCBpbiBhdCB0aGUgd2luZG93LicNCisNCisgIGBUSEFUIHlvdSB3b24ndCcgdGhvdWdodCBBbGljZSwgYW5kLCBhZnRlciB3YWl0aW5nIHRpbGwgc2hlDQorZmFuY2llZCBzaGUgaGVhcmQgdGhlIFJhYmJpdCBqdXN0IHVuZGVyIHRoZSB3aW5kb3csIHNoZSBzdWRkZW5seQ0KK3NwcmVhZCBvdXQgaGVyIGhhbmQsIGFuZCBtYWRlIGEgc25hdGNoIGluIHRoZSBhaXIuICBTaGUgZGlkIG5vdA0KK2dldCBob2xkIG9mIGFueXRoaW5nLCBidXQgc2hlIGhlYXJkIGEgbGl0dGxlIHNocmllayBhbmQgYSBmYWxsLA0KK2FuZCBhIGNyYXNoIG9mIGJyb2tlbiBnbGFzcywgZnJvbSB3aGljaCBzaGUgY29uY2x1ZGVkIHRoYXQgaXQgd2FzDQoranVzdCBwb3NzaWJsZSBpdCBoYWQgZmFsbGVuIGludG8gYSBjdWN1bWJlci1mcmFtZSwgb3Igc29tZXRoaW5nDQorb2YgdGhlIHNvcnQuDQorDQorICBOZXh0IGNhbWUgYW4gYW5ncnkgdm9pY2UtLXRoZSBSYWJiaXQncy0tYFBhdCEgUGF0ISAgV2hlcmUgYXJlDQoreW91PycgIEFuZCB0aGVuIGEgdm9pY2Ugc2hlIGhhZCBuZXZlciBoZWFyZCBiZWZvcmUsIGBTdXJlIHRoZW4NCitJJ20gaGVyZSEgIERpZ2dpbmcgZm9yIGFwcGxlcywgeWVyIGhvbm91ciEnDQorDQorICBgRGlnZ2luZyBmb3IgYXBwbGVzLCBpbmRlZWQhJyBzYWlkIHRoZSBSYWJiaXQgYW5ncmlseS4gIGBIZXJlIQ0KK0NvbWUgYW5kIGhlbHAgbWUgb3V0IG9mIFRISVMhJyAgKFNvdW5kcyBvZiBtb3JlIGJyb2tlbiBnbGFzcy4pDQorDQorICBgTm93IHRlbGwgbWUsIFBhdCwgd2hhdCdzIHRoYXQgaW4gdGhlIHdpbmRvdz8nDQorDQorICBgU3VyZSwgaXQncyBhbiBhcm0sIHllciBob25vdXIhJyAgKEhlIHByb25vdW5jZWQgaXQgYGFycnVtLicpDQorDQorICBgQW4gYXJtLCB5b3UgZ29vc2UhICAgV2hvIGV2ZXIgc2F3IG9uZSB0aGF0IHNpemU/ICBXaHksIGl0DQorZmlsbHMgdGhlIHdob2xlIHdpbmRvdyEnDQorDQorICBgU3VyZSwgaXQgZG9lcywgeWVyIGhvbm91cjogIGJ1dCBpdCdzIGFuIGFybSBmb3IgYWxsIHRoYXQuJw0KKw0KKyAgYFdlbGwsIGl0J3MgZ290IG5vIGJ1c2luZXNzIHRoZXJlLCBhdCBhbnkgcmF0ZTogIGdvIGFuZCB0YWtlIGl0DQorYXdheSEnDQorDQorICBUaGVyZSB3YXMgYSBsb25nIHNpbGVuY2UgYWZ0ZXIgdGhpcywgYW5kIEFsaWNlIGNvdWxkIG9ubHkgaGVhcg0KK3doaXNwZXJzIG5vdyBhbmQgdGhlbjsgc3VjaCBhcywgYFN1cmUsIEkgZG9uJ3QgbGlrZSBpdCwgeWVyDQoraG9ub3VyLCBhdCBhbGwsIGF0IGFsbCEnICBgRG8gYXMgSSB0ZWxsIHlvdSwgeW91IGNvd2FyZCEnIGFuZCBhdA0KK2xhc3Qgc2hlIHNwcmVhZCBvdXQgaGVyIGhhbmQgYWdhaW4sIGFuZCBtYWRlIGFub3RoZXIgc25hdGNoIGluDQordGhlIGFpci4gIFRoaXMgdGltZSB0aGVyZSB3ZXJlIFRXTyBsaXR0bGUgc2hyaWVrcywgYW5kIG1vcmUNCitzb3VuZHMgb2YgYnJva2VuIGdsYXNzLiAgYFdoYXQgYSBudW1iZXIgb2YgY3VjdW1iZXItZnJhbWVzIHRoZXJlDQorbXVzdCBiZSEnIHRob3VnaHQgQWxpY2UuICBgSSB3b25kZXIgd2hhdCB0aGV5J2xsIGRvIG5leHQhICBBcyBmb3INCitwdWxsaW5nIG1lIG91dCBvZiB0aGUgd2luZG93LCBJIG9ubHkgd2lzaCB0aGV5IENPVUxEISAgSSdtIHN1cmUgSQ0KK2Rvbid0IHdhbnQgdG8gc3RheSBpbiBoZXJlIGFueSBsb25nZXIhJw0KKw0KKyAgU2hlIHdhaXRlZCBmb3Igc29tZSB0aW1lIHdpdGhvdXQgaGVhcmluZyBhbnl0aGluZyBtb3JlOiAgYXQNCitsYXN0IGNhbWUgYSBydW1ibGluZyBvZiBsaXR0bGUgY2FydHdoZWVscywgYW5kIHRoZSBzb3VuZCBvZiBhDQorZ29vZCBtYW55IHZvaWNlIGFsbCB0YWxraW5nIHRvZ2V0aGVyOiAgc2hlIG1hZGUgb3V0IHRoZSB3b3JkczoNCitgV2hlcmUncyB0aGUgb3RoZXIgbGFkZGVyPy0tV2h5LCBJIGhhZG4ndCB0byBicmluZyBidXQgb25lOw0KK0JpbGwncyBnb3QgdGhlIG90aGVyLS1CaWxsISBmZXRjaCBpdCBoZXJlLCBsYWQhLS1IZXJlLCBwdXQgJ2VtIHVwDQorYXQgdGhpcyBjb3JuZXItLU5vLCB0aWUgJ2VtIHRvZ2V0aGVyIGZpcnN0LS10aGV5IGRvbid0IHJlYWNoIGhhbGYNCitoaWdoIGVub3VnaCB5ZXQtLU9oISB0aGV5J2xsIGRvIHdlbGwgZW5vdWdoOyBkb24ndCBiZSBwYXJ0aWN1bGFyLQ0KKy1IZXJlLCBCaWxsISBjYXRjaCBob2xkIG9mIHRoaXMgcm9wZS0tV2lsbCB0aGUgcm9vZiBiZWFyPy0tTWluZA0KK3RoYXQgbG9vc2Ugc2xhdGUtLU9oLCBpdCdzIGNvbWluZyBkb3duISAgSGVhZHMgYmVsb3chJyAoYSBsb3VkDQorY3Jhc2gpLS1gTm93LCB3aG8gZGlkIHRoYXQ/LS1JdCB3YXMgQmlsbCwgSSBmYW5jeS0tV2hvJ3MgdG8gZ28NCitkb3duIHRoZSBjaGltbmV5Py0tTmF5LCBJIHNoYW4ndCEgWU9VIGRvIGl0IS0tVGhhdCBJIHdvbid0LA0KK3RoZW4hLS1CaWxsJ3MgdG8gZ28gZG93bi0tSGVyZSwgQmlsbCEgdGhlIG1hc3RlciBzYXlzIHlvdSdyZSB0bw0KK2dvIGRvd24gdGhlIGNoaW1uZXkhJw0KKw0KKyAgYE9oISBTbyBCaWxsJ3MgZ290IHRvIGNvbWUgZG93biB0aGUgY2hpbW5leSwgaGFzIGhlPycgc2FpZA0KK0FsaWNlIHRvIGhlcnNlbGYuICBgU2h5LCB0aGV5IHNlZW0gdG8gcHV0IGV2ZXJ5dGhpbmcgdXBvbiBCaWxsIQ0KK0kgd291bGRuJ3QgYmUgaW4gQmlsbCdzIHBsYWNlIGZvciBhIGdvb2QgZGVhbDogIHRoaXMgZmlyZXBsYWNlIGlzDQorbmFycm93LCB0byBiZSBzdXJlOyBidXQgSSBUSElOSyBJIGNhbiBraWNrIGEgbGl0dGxlIScNCisNCisgIFNoZSBkcmV3IGhlciBmb290IGFzIGZhciBkb3duIHRoZSBjaGltbmV5IGFzIHNoZSBjb3VsZCwgYW5kDQord2FpdGVkIHRpbGwgc2hlIGhlYXJkIGEgbGl0dGxlIGFuaW1hbCAoc2hlIGNvdWxkbid0IGd1ZXNzIG9mIHdoYXQNCitzb3J0IGl0IHdhcykgc2NyYXRjaGluZyBhbmQgc2NyYW1ibGluZyBhYm91dCBpbiB0aGUgY2hpbW5leSBjbG9zZQ0KK2Fib3ZlIGhlcjogIHRoZW4sIHNheWluZyB0byBoZXJzZWxmIGBUaGlzIGlzIEJpbGwsJyBzaGUgZ2F2ZSBvbmUNCitzaGFycCBraWNrLCBhbmQgd2FpdGVkIHRvIHNlZSB3aGF0IHdvdWxkIGhhcHBlbiBuZXh0Lg0KKw0KKyAgVGhlIGZpcnN0IHRoaW5nIHNoZSBoZWFyZCB3YXMgYSBnZW5lcmFsIGNob3J1cyBvZiBgVGhlcmUgZ29lcw0KK0JpbGwhJyB0aGVuIHRoZSBSYWJiaXQncyB2b2ljZSBhbG9uZy0tYENhdGNoIGhpbSwgeW91IGJ5IHRoZQ0KK2hlZGdlIScgdGhlbiBzaWxlbmNlLCBhbmQgdGhlbiBhbm90aGVyIGNvbmZ1c2lvbiBvZiB2b2ljZXMtLWBIb2xkDQordXAgaGlzIGhlYWQtLUJyYW5keSBub3ctLURvbid0IGNob2tlIGhpbS0tSG93IHdhcyBpdCwgb2xkIGZlbGxvdz8NCitXaGF0IGhhcHBlbmVkIHRvIHlvdT8gIFRlbGwgdXMgYWxsIGFib3V0IGl0IScNCisNCisgIExhc3QgY2FtZSBhIGxpdHRsZSBmZWVibGUsIHNxdWVha2luZyB2b2ljZSwgKGBUaGF0J3MgQmlsbCwnDQordGhvdWdodCBBbGljZSwpIGBXZWxsLCBJIGhhcmRseSBrbm93LS1ObyBtb3JlLCB0aGFuayB5ZTsgSSdtDQorYmV0dGVyIG5vdy0tYnV0IEknbSBhIGRlYWwgdG9vIGZsdXN0ZXJlZCB0byB0ZWxsIHlvdS0tYWxsIEkga25vdw0KK2lzLCBzb21ldGhpbmcgY29tZXMgYXQgbWUgbGlrZSBhIEphY2staW4tdGhlLWJveCwgYW5kIHVwIEkgZ29lcw0KK2xpa2UgYSBza3ktcm9ja2V0IScNCisNCisgIGBTbyB5b3UgZGlkLCBvbGQgZmVsbG93IScgc2FpZCB0aGUgb3RoZXJzLg0KKw0KKyAgYFdlIG11c3QgYnVybiB0aGUgaG91c2UgZG93biEnIHNhaWQgdGhlIFJhYmJpdCdzIHZvaWNlOyBhbmQNCitBbGljZSBjYWxsZWQgb3V0IGFzIGxvdWQgYXMgc2hlIGNvdWxkLCBgSWYgeW91IGRvLiAgSSdsbCBzZXQNCitEaW5haCBhdCB5b3UhJw0KKw0KKyAgVGhlcmUgd2FzIGEgZGVhZCBzaWxlbmNlIGluc3RhbnRseSwgYW5kIEFsaWNlIHRob3VnaHQgdG8NCitoZXJzZWxmLCBgSSB3b25kZXIgd2hhdCB0aGV5IFdJTEwgZG8gbmV4dCEgIElmIHRoZXkgaGFkIGFueQ0KK3NlbnNlLCB0aGV5J2QgdGFrZSB0aGUgcm9vZiBvZmYuJyAgQWZ0ZXIgYSBtaW51dGUgb3IgdHdvLCB0aGV5DQorYmVnYW4gbW92aW5nIGFib3V0IGFnYWluLCBhbmQgQWxpY2UgaGVhcmQgdGhlIFJhYmJpdCBzYXksIGBBDQorYmFycm93ZnVsIHdpbGwgZG8sIHRvIGJlZ2luIHdpdGguJw0KKw0KKyAgYEEgYmFycm93ZnVsIG9mIFdIQVQ/JyB0aG91Z2h0IEFsaWNlOyBidXQgc2hlIGhhZCBub3QgbG9uZyB0bw0KK2RvdWJ0LCBmb3IgdGhlIG5leHQgbW9tZW50IGEgc2hvd2VyIG9mIGxpdHRsZSBwZWJibGVzIGNhbWUNCityYXR0bGluZyBpbiBhdCB0aGUgd2luZG93LCBhbmQgc29tZSBvZiB0aGVtIGhpdCBoZXIgaW4gdGhlIGZhY2UuDQorYEknbGwgcHV0IGEgc3RvcCB0byB0aGlzLCcgc2hlIHNhaWQgdG8gaGVyc2VsZiwgYW5kIHNob3V0ZWQgb3V0LA0KK2BZb3UnZCBiZXR0ZXIgbm90IGRvIHRoYXQgYWdhaW4hJyB3aGljaCBwcm9kdWNlZCBhbm90aGVyIGRlYWQNCitzaWxlbmNlLg0KKw0KKyAgQWxpY2Ugbm90aWNlZCB3aXRoIHNvbWUgc3VycHJpc2UgdGhhdCB0aGUgcGViYmxlcyB3ZXJlIGFsbA0KK3R1cm5pbmcgaW50byBsaXR0bGUgY2FrZXMgYXMgdGhleSBsYXkgb24gdGhlIGZsb29yLCBhbmQgYSBicmlnaHQNCitpZGVhIGNhbWUgaW50byBoZXIgaGVhZC4gIGBJZiBJIGVhdCBvbmUgb2YgdGhlc2UgY2FrZXMsJyBzaGUNCit0aG91Z2h0LCBgaXQncyBzdXJlIHRvIG1ha2UgU09NRSBjaGFuZ2UgaW4gbXkgc2l6ZTsgYW5kIGFzIGl0DQorY2FuJ3QgcG9zc2libHkgbWFrZSBtZSBsYXJnZXIsIGl0IG11c3QgbWFrZSBtZSBzbWFsbGVyLCBJDQorc3VwcG9zZS4nDQorDQorICBTbyBzaGUgc3dhbGxvd2VkIG9uZSBvZiB0aGUgY2FrZXMsIGFuZCB3YXMgZGVsaWdodGVkIHRvIGZpbmQNCit0aGF0IHNoZSBiZWdhbiBzaHJpbmtpbmcgZGlyZWN0bHkuICBBcyBzb29uIGFzIHNoZSB3YXMgc21hbGwNCitlbm91Z2ggdG8gZ2V0IHRocm91Z2ggdGhlIGRvb3IsIHNoZSByYW4gb3V0IG9mIHRoZSBob3VzZSwgYW5kDQorZm91bmQgcXVpdGUgYSBjcm93ZCBvZiBsaXR0bGUgYW5pbWFscyBhbmQgYmlyZHMgd2FpdGluZyBvdXRzaWRlLg0KK1RoZSBwb29yIGxpdHRsZSBMaXphcmQsIEJpbGwsIHdhcyBpbiB0aGUgbWlkZGxlLCBiZWluZyBoZWxkIHVwIGJ5DQordHdvIGd1aW5lYS1waWdzLCB3aG8gd2VyZSBnaXZpbmcgaXQgc29tZXRoaW5nIG91dCBvZiBhIGJvdHRsZS4NCitUaGV5IGFsbCBtYWRlIGEgcnVzaCBhdCBBbGljZSB0aGUgbW9tZW50IHNoZSBhcHBlYXJlZDsgYnV0IHNoZQ0KK3JhbiBvZmYgYXMgaGFyZCBhcyBzaGUgY291bGQsIGFuZCBzb29uIGZvdW5kIGhlcnNlbGYgc2FmZSBpbiBhDQordGhpY2sgd29vZC4NCisNCisgIGBUaGUgZmlyc3QgdGhpbmcgSSd2ZSBnb3QgdG8gZG8sJyBzYWlkIEFsaWNlIHRvIGhlcnNlbGYsIGFzIHNoZQ0KK3dhbmRlcmVkIGFib3V0IGluIHRoZSB3b29kLCBgaXMgdG8gZ3JvdyB0byBteSByaWdodCBzaXplIGFnYWluOw0KK2FuZCB0aGUgc2Vjb25kIHRoaW5nIGlzIHRvIGZpbmQgbXkgd2F5IGludG8gdGhhdCBsb3ZlbHkgZ2FyZGVuLg0KK0kgdGhpbmsgdGhhdCB3aWxsIGJlIHRoZSBiZXN0IHBsYW4uJw0KKw0KKyAgSXQgc291bmRlZCBhbiBleGNlbGxlbnQgcGxhbiwgbm8gZG91YnQsIGFuZCB2ZXJ5IG5lYXRseSBhbmQNCitzaW1wbHkgYXJyYW5nZWQ7IHRoZSBvbmx5IGRpZmZpY3VsdHkgd2FzLCB0aGF0IHNoZSBoYWQgbm90IHRoZQ0KK3NtYWxsZXN0IGlkZWEgaG93IHRvIHNldCBhYm91dCBpdDsgYW5kIHdoaWxlIHNoZSB3YXMgcGVlcmluZw0KK2Fib3V0IGFueGlvdXNseSBhbW9uZyB0aGUgdHJlZXMsIGEgbGl0dGxlIHNoYXJwIGJhcmsganVzdCBvdmVyDQoraGVyIGhlYWQgbWFkZSBoZXIgbG9vayB1cCBpbiBhIGdyZWF0IGh1cnJ5Lg0KKw0KKyAgQW4gZW5vcm1vdXMgcHVwcHkgd2FzIGxvb2tpbmcgZG93biBhdCBoZXIgd2l0aCBsYXJnZSByb3VuZA0KK2V5ZXMsIGFuZCBmZWVibHkgc3RyZXRjaGluZyBvdXQgb25lIHBhdywgdHJ5aW5nIHRvIHRvdWNoIGhlci4NCitgUG9vciBsaXR0bGUgdGhpbmchJyBzYWlkIEFsaWNlLCBpbiBhIGNvYXhpbmcgdG9uZSwgYW5kIHNoZSB0cmllZA0KK2hhcmQgdG8gd2hpc3RsZSB0byBpdDsgYnV0IHNoZSB3YXMgdGVycmlibHkgZnJpZ2h0ZW5lZCBhbGwgdGhlDQordGltZSBhdCB0aGUgdGhvdWdodCB0aGF0IGl0IG1pZ2h0IGJlIGh1bmdyeSwgaW4gd2hpY2ggY2FzZSBpdA0KK3dvdWxkIGJlIHZlcnkgbGlrZWx5IHRvIGVhdCBoZXIgdXAgaW4gc3BpdGUgb2YgYWxsIGhlciBjb2F4aW5nLg0KKw0KKyAgSGFyZGx5IGtub3dpbmcgd2hhdCBzaGUgZGlkLCBzaGUgcGlja2VkIHVwIGEgbGl0dGxlIGJpdCBvZg0KK3N0aWNrLCBhbmQgaGVsZCBpdCBvdXQgdG8gdGhlIHB1cHB5OyB3aGVyZXVwb24gdGhlIHB1cHB5IGp1bXBlZA0KK2ludG8gdGhlIGFpciBvZmYgYWxsIGl0cyBmZWV0IGF0IG9uY2UsIHdpdGggYSB5ZWxwIG9mIGRlbGlnaHQsDQorYW5kIHJ1c2hlZCBhdCB0aGUgc3RpY2ssIGFuZCBtYWRlIGJlbGlldmUgdG8gd29ycnkgaXQ7IHRoZW4gQWxpY2UNCitkb2RnZWQgYmVoaW5kIGEgZ3JlYXQgdGhpc3RsZSwgdG8ga2VlcCBoZXJzZWxmIGZyb20gYmVpbmcgcnVuDQorb3ZlcjsgYW5kIHRoZSBtb21lbnQgc2hlIGFwcGVhcmVkIG9uIHRoZSBvdGhlciBzaWRlLCB0aGUgcHVwcHkNCittYWRlIGFub3RoZXIgcnVzaCBhdCB0aGUgc3RpY2ssIGFuZCB0dW1ibGVkIGhlYWQgb3ZlciBoZWVscyBpbg0KK2l0cyBodXJyeSB0byBnZXQgaG9sZCBvZiBpdDsgdGhlbiBBbGljZSwgdGhpbmtpbmcgaXQgd2FzIHZlcnkNCitsaWtlIGhhdmluZyBhIGdhbWUgb2YgcGxheSB3aXRoIGEgY2FydC1ob3JzZSwgYW5kIGV4cGVjdGluZyBldmVyeQ0KK21vbWVudCB0byBiZSB0cmFtcGxlZCB1bmRlciBpdHMgZmVldCwgcmFuIHJvdW5kIHRoZSB0aGlzdGxlDQorYWdhaW47IHRoZW4gdGhlIHB1cHB5IGJlZ2FuIGEgc2VyaWVzIG9mIHNob3J0IGNoYXJnZXMgYXQgdGhlDQorc3RpY2ssIHJ1bm5pbmcgYSB2ZXJ5IGxpdHRsZSB3YXkgZm9yd2FyZHMgZWFjaCB0aW1lIGFuZCBhIGxvbmcNCit3YXkgYmFjaywgYW5kIGJhcmtpbmcgaG9hcnNlbHkgYWxsIHRoZSB3aGlsZSwgdGlsbCBhdCBsYXN0IGl0IHNhdA0KK2Rvd24gYSBnb29kIHdheSBvZmYsIHBhbnRpbmcsIHdpdGggaXRzIHRvbmd1ZSBoYW5naW5nIG91dCBvZiBpdHMNCittb3V0aCwgYW5kIGl0cyBncmVhdCBleWVzIGhhbGYgc2h1dC4NCisNCisgIFRoaXMgc2VlbWVkIHRvIEFsaWNlIGEgZ29vZCBvcHBvcnR1bml0eSBmb3IgbWFraW5nIGhlciBlc2NhcGU7DQorc28gc2hlIHNldCBvZmYgYXQgb25jZSwgYW5kIHJhbiB0aWxsIHNoZSB3YXMgcXVpdGUgdGlyZWQgYW5kIG91dA0KK29mIGJyZWF0aCwgYW5kIHRpbGwgdGhlIHB1cHB5J3MgYmFyayBzb3VuZGVkIHF1aXRlIGZhaW50IGluIHRoZQ0KK2Rpc3RhbmNlLg0KKw0KKyAgYEFuZCB5ZXQgd2hhdCBhIGRlYXIgbGl0dGxlIHB1cHB5IGl0IHdhcyEnIHNhaWQgQWxpY2UsIGFzIHNoZQ0KK2xlYW50IGFnYWluc3QgYSBidXR0ZXJjdXAgdG8gcmVzdCBoZXJzZWxmLCBhbmQgZmFubmVkIGhlcnNlbGYNCit3aXRoIG9uZSBvZiB0aGUgbGVhdmVzOiAgYEkgc2hvdWxkIGhhdmUgbGlrZWQgdGVhY2hpbmcgaXQgdHJpY2tzDQordmVyeSBtdWNoLCBpZi0taWYgSSdkIG9ubHkgYmVlbiB0aGUgcmlnaHQgc2l6ZSB0byBkbyBpdCEgIE9oDQorZGVhciEgIEknZCBuZWFybHkgZm9yZ290dGVuIHRoYXQgSSd2ZSBnb3QgdG8gZ3JvdyB1cCBhZ2FpbiEgIExldA0KK21lIHNlZS0taG93IElTIGl0IHRvIGJlIG1hbmFnZWQ/ICBJIHN1cHBvc2UgSSBvdWdodCB0byBlYXQgb3INCitkcmluayBzb21ldGhpbmcgb3Igb3RoZXI7IGJ1dCB0aGUgZ3JlYXQgcXVlc3Rpb24gaXMsIHdoYXQ/Jw0KKw0KKyAgVGhlIGdyZWF0IHF1ZXN0aW9uIGNlcnRhaW5seSB3YXMsIHdoYXQ/ICBBbGljZSBsb29rZWQgYWxsIHJvdW5kDQoraGVyIGF0IHRoZSBmbG93ZXJzIGFuZCB0aGUgYmxhZGVzIG9mIGdyYXNzLCBidXQgc2hlIGRpZCBub3Qgc2VlDQorYW55dGhpbmcgdGhhdCBsb29rZWQgbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8gZWF0IG9yIGRyaW5rIHVuZGVyDQordGhlIGNpcmN1bXN0YW5jZXMuICBUaGVyZSB3YXMgYSBsYXJnZSBtdXNocm9vbSBncm93aW5nIG5lYXIgaGVyLA0KK2Fib3V0IHRoZSBzYW1lIGhlaWdodCBhcyBoZXJzZWxmOyBhbmQgd2hlbiBzaGUgaGFkIGxvb2tlZCB1bmRlcg0KK2l0LCBhbmQgb24gYm90aCBzaWRlcyBvZiBpdCwgYW5kIGJlaGluZCBpdCwgaXQgb2NjdXJyZWQgdG8gaGVyDQordGhhdCBzaGUgbWlnaHQgYXMgd2VsbCBsb29rIGFuZCBzZWUgd2hhdCB3YXMgb24gdGhlIHRvcCBvZiBpdC4NCisNCisgIFNoZSBzdHJldGNoZWQgaGVyc2VsZiB1cCBvbiB0aXB0b2UsIGFuZCBwZWVwZWQgb3ZlciB0aGUgZWRnZSBvZg0KK3RoZSBtdXNocm9vbSwgYW5kIGhlciBleWVzIGltbWVkaWF0ZWx5IG1ldCB0aG9zZSBvZiBhIGxhcmdlDQorY2F0ZXJwaWxsYXIsIHRoYXQgd2FzIHNpdHRpbmcgb24gdGhlIHRvcCB3aXRoIGl0cyBhcm1zIGZvbGRlZCwNCitxdWlldGx5IHNtb2tpbmcgYSBsb25nIGhvb2thaCwgYW5kIHRha2luZyBub3QgdGhlIHNtYWxsZXN0IG5vdGljZQ0KK29mIGhlciBvciBvZiBhbnl0aGluZyBlbHNlLg0KKw0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSEFQVEVSIFYNCisNCisgICAgICAgICAgICAgICAgICAgIEFkdmljZSBmcm9tIGEgQ2F0ZXJwaWxsYXINCisNCisNCisgIFRoZSBDYXRlcnBpbGxhciBhbmQgQWxpY2UgbG9va2VkIGF0IGVhY2ggb3RoZXIgZm9yIHNvbWUgdGltZSBpbg0KK3NpbGVuY2U6ICBhdCBsYXN0IHRoZSBDYXRlcnBpbGxhciB0b29rIHRoZSBob29rYWggb3V0IG9mIGl0cw0KK21vdXRoLCBhbmQgYWRkcmVzc2VkIGhlciBpbiBhIGxhbmd1aWQsIHNsZWVweSB2b2ljZS4NCisNCisgIGBXaG8gYXJlIFlPVT8nIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgVGhpcyB3YXMgbm90IGFuIGVuY291cmFnaW5nIG9wZW5pbmcgZm9yIGEgY29udmVyc2F0aW9uLiAgQWxpY2UNCityZXBsaWVkLCByYXRoZXIgc2h5bHksIGBJLS1JIGhhcmRseSBrbm93LCBzaXIsIGp1c3QgYXQgcHJlc2VudC0tDQorYXQgbGVhc3QgSSBrbm93IHdobyBJIFdBUyB3aGVuIEkgZ290IHVwIHRoaXMgbW9ybmluZywgYnV0IEkgdGhpbmsNCitJIG11c3QgaGF2ZSBiZWVuIGNoYW5nZWQgc2V2ZXJhbCB0aW1lcyBzaW5jZSB0aGVuLicNCisNCisgIGBXaGF0IGRvIHlvdSBtZWFuIGJ5IHRoYXQ/JyBzYWlkIHRoZSBDYXRlcnBpbGxhciBzdGVybmx5Lg0KK2BFeHBsYWluIHlvdXJzZWxmIScNCisNCisgIGBJIGNhbid0IGV4cGxhaW4gTVlTRUxGLCBJJ20gYWZyYWlkLCBzaXInIHNhaWQgQWxpY2UsIGBiZWNhdXNlDQorSSdtIG5vdCBteXNlbGYsIHlvdSBzZWUuJw0KKw0KKyAgYEkgZG9uJ3Qgc2VlLCcgc2FpZCB0aGUgQ2F0ZXJwaWxsYXIuDQorDQorICBgSSdtIGFmcmFpZCBJIGNhbid0IHB1dCBpdCBtb3JlIGNsZWFybHksJyBBbGljZSByZXBsaWVkIHZlcnkNCitwb2xpdGVseSwgYGZvciBJIGNhbid0IHVuZGVyc3RhbmQgaXQgbXlzZWxmIHRvIGJlZ2luIHdpdGg7IGFuZA0KK2JlaW5nIHNvIG1hbnkgZGlmZmVyZW50IHNpemVzIGluIGEgZGF5IGlzIHZlcnkgY29uZnVzaW5nLicNCisNCisgIGBJdCBpc24ndCwnIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgYFdlbGwsIHBlcmhhcHMgeW91IGhhdmVuJ3QgZm91bmQgaXQgc28geWV0LCcgc2FpZCBBbGljZTsgYGJ1dA0KK3doZW4geW91IGhhdmUgdG8gdHVybiBpbnRvIGEgY2hyeXNhbGlzLS15b3Ugd2lsbCBzb21lIGRheSwgeW91DQora25vdy0tYW5kIHRoZW4gYWZ0ZXIgdGhhdCBpbnRvIGEgYnV0dGVyZmx5LCBJIHNob3VsZCB0aGluayB5b3UnbGwNCitmZWVsIGl0IGEgbGl0dGxlIHF1ZWVyLCB3b24ndCB5b3U/Jw0KKw0KKyAgYE5vdCBhIGJpdCwnIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgYFdlbGwsIHBlcmhhcHMgeW91ciBmZWVsaW5ncyBtYXkgYmUgZGlmZmVyZW50LCcgc2FpZCBBbGljZTsNCitgYWxsIEkga25vdyBpcywgaXQgd291bGQgZmVlbCB2ZXJ5IHF1ZWVyIHRvIE1FLicNCisNCisgIGBZb3UhJyBzYWlkIHRoZSBDYXRlcnBpbGxhciBjb250ZW1wdHVvdXNseS4gIGBXaG8gYXJlIFlPVT8nDQorDQorICBXaGljaCBicm91Z2h0IHRoZW0gYmFjayBhZ2FpbiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZQ0KK2NvbnZlcnNhdGlvbi4gIEFsaWNlIGZlbHQgYSBsaXR0bGUgaXJyaXRhdGVkIGF0IHRoZSBDYXRlcnBpbGxhcidzDQorbWFraW5nIHN1Y2ggVkVSWSBzaG9ydCByZW1hcmtzLCBhbmQgc2hlIGRyZXcgaGVyc2VsZiB1cCBhbmQgc2FpZCwNCit2ZXJ5IGdyYXZlbHksIGBJIHRoaW5rLCB5b3Ugb3VnaHQgdG8gdGVsbCBtZSB3aG8gWU9VIGFyZSwgZmlyc3QuJw0KKw0KKyAgYFdoeT8nIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgSGVyZSB3YXMgYW5vdGhlciBwdXp6bGluZyBxdWVzdGlvbjsgYW5kIGFzIEFsaWNlIGNvdWxkIG5vdA0KK3RoaW5rIG9mIGFueSBnb29kIHJlYXNvbiwgYW5kIGFzIHRoZSBDYXRlcnBpbGxhciBzZWVtZWQgdG8gYmUgaW4NCithIFZFUlkgdW5wbGVhc2FudCBzdGF0ZSBvZiBtaW5kLCBzaGUgdHVybmVkIGF3YXkuDQorDQorICBgQ29tZSBiYWNrIScgdGhlIENhdGVycGlsbGFyIGNhbGxlZCBhZnRlciBoZXIuICBgSSd2ZSBzb21ldGhpbmcNCitpbXBvcnRhbnQgdG8gc2F5IScNCisNCisgIFRoaXMgc291bmRlZCBwcm9taXNpbmcsIGNlcnRhaW5seTogIEFsaWNlIHR1cm5lZCBhbmQgY2FtZSBiYWNrDQorYWdhaW4uDQorDQorICBgS2VlcCB5b3VyIHRlbXBlciwnIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgYElzIHRoYXQgYWxsPycgc2FpZCBBbGljZSwgc3dhbGxvd2luZyBkb3duIGhlciBhbmdlciBhcyB3ZWxsIGFzDQorc2hlIGNvdWxkLg0KKw0KKyAgYE5vLCcgc2FpZCB0aGUgQ2F0ZXJwaWxsYXIuDQorDQorICBBbGljZSB0aG91Z2h0IHNoZSBtaWdodCBhcyB3ZWxsIHdhaXQsIGFzIHNoZSBoYWQgbm90aGluZyBlbHNlDQordG8gZG8sIGFuZCBwZXJoYXBzIGFmdGVyIGFsbCBpdCBtaWdodCB0ZWxsIGhlciBzb21ldGhpbmcgd29ydGgNCitoZWFyaW5nLiAgRm9yIHNvbWUgbWludXRlcyBpdCBwdWZmZWQgYXdheSB3aXRob3V0IHNwZWFraW5nLCBidXQNCithdCBsYXN0IGl0IHVuZm9sZGVkIGl0cyBhcm1zLCB0b29rIHRoZSBob29rYWggb3V0IG9mIGl0cyBtb3V0aA0KK2FnYWluLCBhbmQgc2FpZCwgYFNvIHlvdSB0aGluayB5b3UncmUgY2hhbmdlZCwgZG8geW91PycNCisNCisgIGBJJ20gYWZyYWlkIEkgYW0sIHNpciwnIHNhaWQgQWxpY2U7IGBJIGNhbid0IHJlbWVtYmVyIHRoaW5ncyBhcw0KK0kgdXNlZC0tYW5kIEkgZG9uJ3Qga2VlcCB0aGUgc2FtZSBzaXplIGZvciB0ZW4gbWludXRlcyB0b2dldGhlciEnDQorDQorICBgQ2FuJ3QgcmVtZW1iZXIgV0hBVCB0aGluZ3M/JyBzYWlkIHRoZSBDYXRlcnBpbGxhci4NCisNCisgIGBXZWxsLCBJJ3ZlIHRyaWVkIHRvIHNheSAiSE9XIERPVEggVEhFIExJVFRMRSBCVVNZIEJFRSwiIGJ1dCBpdA0KK2FsbCBjYW1lIGRpZmZlcmVudCEnIEFsaWNlIHJlcGxpZWQgaW4gYSB2ZXJ5IG1lbGFuY2hvbHkgdm9pY2UuDQorDQorICBgUmVwZWF0LCAiWU9VIEFSRSBPTEQsIEZBVEhFUiBXSUxMSUFNLCInIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgQWxpY2UgZm9sZGVkIGhlciBoYW5kcywgYW5kIGJlZ2FuOi0tDQorDQorICAgIGBZb3UgYXJlIG9sZCwgRmF0aGVyIFdpbGxpYW0sJyB0aGUgeW91bmcgbWFuIHNhaWQsDQorICAgICAgYEFuZCB5b3VyIGhhaXIgaGFzIGJlY29tZSB2ZXJ5IHdoaXRlOw0KKyAgICBBbmQgeWV0IHlvdSBpbmNlc3NhbnRseSBzdGFuZCBvbiB5b3VyIGhlYWQtLQ0KKyAgICAgIERvIHlvdSB0aGluaywgYXQgeW91ciBhZ2UsIGl0IGlzIHJpZ2h0PycNCisNCisgICAgYEluIG15IHlvdXRoLCcgRmF0aGVyIFdpbGxpYW0gcmVwbGllZCB0byBoaXMgc29uLA0KKyAgICAgIGBJIGZlYXJlZCBpdCBtaWdodCBpbmp1cmUgdGhlIGJyYWluOw0KKyAgICBCdXQsIG5vdyB0aGF0IEknbSBwZXJmZWN0bHkgc3VyZSBJIGhhdmUgbm9uZSwNCisgICAgICBXaHksIEkgZG8gaXQgYWdhaW4gYW5kIGFnYWluLicNCisNCisgICAgYFlvdSBhcmUgb2xkLCcgc2FpZCB0aGUgeW91dGgsIGBhcyBJIG1lbnRpb25lZCBiZWZvcmUsDQorICAgICAgQW5kIGhhdmUgZ3Jvd24gbW9zdCB1bmNvbW1vbmx5IGZhdDsNCisgICAgWWV0IHlvdSB0dXJuZWQgYSBiYWNrLXNvbWVyc2F1bHQgaW4gYXQgdGhlIGRvb3ItLQ0KKyAgICAgIFByYXksIHdoYXQgaXMgdGhlIHJlYXNvbiBvZiB0aGF0PycNCisNCisgICAgYEluIG15IHlvdXRoLCcgc2FpZCB0aGUgc2FnZSwgYXMgaGUgc2hvb2sgaGlzIGdyZXkgbG9ja3MsDQorICAgICAgYEkga2VwdCBhbGwgbXkgbGltYnMgdmVyeSBzdXBwbGUNCisgICAgQnkgdGhlIHVzZSBvZiB0aGlzIG9pbnRtZW50LS1vbmUgc2hpbGxpbmcgdGhlIGJveC0tDQorICAgICAgQWxsb3cgbWUgdG8gc2VsbCB5b3UgYSBjb3VwbGU/Jw0KKw0KKyAgICBgWW91IGFyZSBvbGQsJyBzYWlkIHRoZSB5b3V0aCwgYGFuZCB5b3VyIGphd3MgYXJlIHRvbyB3ZWFrDQorICAgICAgRm9yIGFueXRoaW5nIHRvdWdoZXIgdGhhbiBzdWV0Ow0KKyAgICBZZXQgeW91IGZpbmlzaGVkIHRoZSBnb29zZSwgd2l0aCB0aGUgYm9uZXMgYW5kIHRoZSBiZWFrLS0NCisgICAgICBQcmF5IGhvdyBkaWQgeW91IG1hbmFnZSB0byBkbyBpdD8nDQorDQorICAgIGBJbiBteSB5b3V0aCwnIHNhaWQgaGlzIGZhdGhlciwgYEkgdG9vayB0byB0aGUgbGF3LA0KKyAgICAgIEFuZCBhcmd1ZWQgZWFjaCBjYXNlIHdpdGggbXkgd2lmZTsNCisgICAgQW5kIHRoZSBtdXNjdWxhciBzdHJlbmd0aCwgd2hpY2ggaXQgZ2F2ZSB0byBteSBqYXcsDQorICAgICAgSGFzIGxhc3RlZCB0aGUgcmVzdCBvZiBteSBsaWZlLicNCisNCisgICAgYFlvdSBhcmUgb2xkLCcgc2FpZCB0aGUgeW91dGgsIGBvbmUgd291bGQgaGFyZGx5IHN1cHBvc2UNCisgICAgICBUaGF0IHlvdXIgZXllIHdhcyBhcyBzdGVhZHkgYXMgZXZlcjsNCisgICAgWWV0IHlvdSBiYWxhbmNlZCBhbiBlZWwgb24gdGhlIGVuZCBvZiB5b3VyIG5vc2UtLQ0KKyAgICAgIFdoYXQgbWFkZSB5b3Ugc28gYXdmdWxseSBjbGV2ZXI/Jw0KKw0KKyAgICBgSSBoYXZlIGFuc3dlcmVkIHRocmVlIHF1ZXN0aW9ucywgYW5kIHRoYXQgaXMgZW5vdWdoLCcNCisgICAgICBTYWlkIGhpcyBmYXRoZXI7IGBkb24ndCBnaXZlIHlvdXJzZWxmIGFpcnMhDQorICAgIERvIHlvdSB0aGluayBJIGNhbiBsaXN0ZW4gYWxsIGRheSB0byBzdWNoIHN0dWZmPw0KKyAgICAgIEJlIG9mZiwgb3IgSSdsbCBraWNrIHlvdSBkb3duIHN0YWlycyEnDQorDQorDQorICBgVGhhdCBpcyBub3Qgc2FpZCByaWdodCwnIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgYE5vdCBRVUlURSByaWdodCwgSSdtIGFmcmFpZCwnIHNhaWQgQWxpY2UsIHRpbWlkbHk7IGBzb21lIG9mIHRoZQ0KK3dvcmRzIGhhdmUgZ290IGFsdGVyZWQuJw0KKw0KKyAgYEl0IGlzIHdyb25nIGZyb20gYmVnaW5uaW5nIHRvIGVuZCwnIHNhaWQgdGhlIENhdGVycGlsbGFyDQorZGVjaWRlZGx5LCBhbmQgdGhlcmUgd2FzIHNpbGVuY2UgZm9yIHNvbWUgbWludXRlcy4NCisNCisgIFRoZSBDYXRlcnBpbGxhciB3YXMgdGhlIGZpcnN0IHRvIHNwZWFrLg0KKw0KKyAgYFdoYXQgc2l6ZSBkbyB5b3Ugd2FudCB0byBiZT8nIGl0IGFza2VkLg0KKw0KKyAgYE9oLCBJJ20gbm90IHBhcnRpY3VsYXIgYXMgdG8gc2l6ZSwnIEFsaWNlIGhhc3RpbHkgcmVwbGllZDsNCitgb25seSBvbmUgZG9lc24ndCBsaWtlIGNoYW5naW5nIHNvIG9mdGVuLCB5b3Uga25vdy4nDQorDQorICBgSSBET04nVCBrbm93LCcgc2FpZCB0aGUgQ2F0ZXJwaWxsYXIuDQorDQorICBBbGljZSBzYWlkIG5vdGhpbmc6ICBzaGUgaGFkIG5ldmVyIGJlZW4gc28gbXVjaCBjb250cmFkaWN0ZWQgaW4NCitoZXIgbGlmZSBiZWZvcmUsIGFuZCBzaGUgZmVsdCB0aGF0IHNoZSB3YXMgbG9zaW5nIGhlciB0ZW1wZXIuDQorDQorICBgQXJlIHlvdSBjb250ZW50IG5vdz8nIHNhaWQgdGhlIENhdGVycGlsbGFyLg0KKw0KKyAgYFdlbGwsIEkgc2hvdWxkIGxpa2UgdG8gYmUgYSBMSVRUTEUgbGFyZ2VyLCBzaXIsIGlmIHlvdQ0KK3dvdWxkbid0IG1pbmQsJyBzYWlkIEFsaWNlOiAgYHRocmVlIGluY2hlcyBpcyBzdWNoIGEgd3JldGNoZWQNCitoZWlnaHQgdG8gYmUuJw0KKw0KKyAgYEl0IGlzIGEgdmVyeSBnb29kIGhlaWdodCBpbmRlZWQhJyBzYWlkIHRoZSBDYXRlcnBpbGxhcg0KK2FuZ3JpbHksIHJlYXJpbmcgaXRzZWxmIHVwcmlnaHQgYXMgaXQgc3Bva2UgKGl0IHdhcyBleGFjdGx5IHRocmVlDQoraW5jaGVzIGhpZ2gpLg0KKw0KKyAgYEJ1dCBJJ20gbm90IHVzZWQgdG8gaXQhJyBwbGVhZGVkIHBvb3IgQWxpY2UgaW4gYSBwaXRlb3VzIHRvbmUuDQorQW5kIHNoZSB0aG91Z2h0IG9mIGhlcnNlbGYsIGBJIHdpc2ggdGhlIGNyZWF0dXJlcyB3b3VsZG4ndCBiZSBzbw0KK2Vhc2lseSBvZmZlbmRlZCEnDQorDQorICBgWW91J2xsIGdldCB1c2VkIHRvIGl0IGluIHRpbWUsJyBzYWlkIHRoZSBDYXRlcnBpbGxhcjsgYW5kIGl0DQorcHV0IHRoZSBob29rYWggaW50byBpdHMgbW91dGggYW5kIGJlZ2FuIHNtb2tpbmcgYWdhaW4uDQorDQorICBUaGlzIHRpbWUgQWxpY2Ugd2FpdGVkIHBhdGllbnRseSB1bnRpbCBpdCBjaG9zZSB0byBzcGVhayBhZ2Fpbi4NCitJbiBhIG1pbnV0ZSBvciB0d28gdGhlIENhdGVycGlsbGFyIHRvb2sgdGhlIGhvb2thaCBvdXQgb2YgaXRzDQorbW91dGggYW5kIHlhd25lZCBvbmNlIG9yIHR3aWNlLCBhbmQgc2hvb2sgaXRzZWxmLiAgVGhlbiBpdCBnb3QNCitkb3duIG9mZiB0aGUgbXVzaHJvb20sIGFuZCBjcmF3bGVkIGF3YXkgaW4gdGhlIGdyYXNzLCBtZXJlbHkNCityZW1hcmtpbmcgYXMgaXQgd2VudCwgYE9uZSBzaWRlIHdpbGwgbWFrZSB5b3UgZ3JvdyB0YWxsZXIsIGFuZA0KK3RoZSBvdGhlciBzaWRlIHdpbGwgbWFrZSB5b3UgZ3JvdyBzaG9ydGVyLicNCisNCisgIGBPbmUgc2lkZSBvZiBXSEFUPyAgVGhlIG90aGVyIHNpZGUgb2YgV0hBVD8nIHRob3VnaHQgQWxpY2UgdG8NCitoZXJzZWxmLg0KKw0KKyAgYE9mIHRoZSBtdXNocm9vbSwnIHNhaWQgdGhlIENhdGVycGlsbGFyLCBqdXN0IGFzIGlmIHNoZSBoYWQNCithc2tlZCBpdCBhbG91ZDsgYW5kIGluIGFub3RoZXIgbW9tZW50IGl0IHdhcyBvdXQgb2Ygc2lnaHQuDQorDQorICBBbGljZSByZW1haW5lZCBsb29raW5nIHRob3VnaHRmdWxseSBhdCB0aGUgbXVzaHJvb20gZm9yIGENCittaW51dGUsIHRyeWluZyB0byBtYWtlIG91dCB3aGljaCB3ZXJlIHRoZSB0d28gc2lkZXMgb2YgaXQ7IGFuZCBhcw0KK2l0IHdhcyBwZXJmZWN0bHkgcm91bmQsIHNoZSBmb3VuZCB0aGlzIGEgdmVyeSBkaWZmaWN1bHQgcXVlc3Rpb24uDQorSG93ZXZlciwgYXQgbGFzdCBzaGUgc3RyZXRjaGVkIGhlciBhcm1zIHJvdW5kIGl0IGFzIGZhciBhcyB0aGV5DQord291bGQgZ28sIGFuZCBicm9rZSBvZmYgYSBiaXQgb2YgdGhlIGVkZ2Ugd2l0aCBlYWNoIGhhbmQuDQorDQorICBgQW5kIG5vdyB3aGljaCBpcyB3aGljaD8nIHNoZSBzYWlkIHRvIGhlcnNlbGYsIGFuZCBuaWJibGVkIGENCitsaXR0bGUgb2YgdGhlIHJpZ2h0LWhhbmQgYml0IHRvIHRyeSB0aGUgZWZmZWN0OiAgdGhlIG5leHQgbW9tZW50DQorc2hlIGZlbHQgYSB2aW9sZW50IGJsb3cgdW5kZXJuZWF0aCBoZXIgY2hpbjogIGl0IGhhZCBzdHJ1Y2sgaGVyDQorZm9vdCENCisNCisgIFNoZSB3YXMgYSBnb29kIGRlYWwgZnJpZ2h0ZW5lZCBieSB0aGlzIHZlcnkgc3VkZGVuIGNoYW5nZSwgYnV0DQorc2hlIGZlbHQgdGhhdCB0aGVyZSB3YXMgbm8gdGltZSB0byBiZSBsb3N0LCBhcyBzaGUgd2FzIHNocmlua2luZw0KK3JhcGlkbHk7IHNvIHNoZSBzZXQgdG8gd29yayBhdCBvbmNlIHRvIGVhdCBzb21lIG9mIHRoZSBvdGhlciBiaXQuDQorSGVyIGNoaW4gd2FzIHByZXNzZWQgc28gY2xvc2VseSBhZ2FpbnN0IGhlciBmb290LCB0aGF0IHRoZXJlIHdhcw0KK2hhcmRseSByb29tIHRvIG9wZW4gaGVyIG1vdXRoOyBidXQgc2hlIGRpZCBpdCBhdCBsYXN0LCBhbmQNCittYW5hZ2VkIHRvIHN3YWxsb3cgYSBtb3JzZWwgb2YgdGhlIGxlZnRoYW5kIGJpdC4NCisNCisNCisgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICoNCisNCisgICAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKg0KKw0KKyAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKiAgICAgICAqICAgICAgICogICAgICAgKg0KKw0KKyAgYENvbWUsIG15IGhlYWQncyBmcmVlIGF0IGxhc3QhJyBzYWlkIEFsaWNlIGluIGEgdG9uZSBvZg0KK2RlbGlnaHQsIHdoaWNoIGNoYW5nZWQgaW50byBhbGFybSBpbiBhbm90aGVyIG1vbWVudCwgd2hlbiBzaGUNCitmb3VuZCB0aGF0IGhlciBzaG91bGRlcnMgd2VyZSBub3doZXJlIHRvIGJlIGZvdW5kOiAgYWxsIHNoZSBjb3VsZA0KK3NlZSwgd2hlbiBzaGUgbG9va2VkIGRvd24sIHdhcyBhbiBpbW1lbnNlIGxlbmd0aCBvZiBuZWNrLCB3aGljaA0KK3NlZW1lZCB0byByaXNlIGxpa2UgYSBzdGFsayBvdXQgb2YgYSBzZWEgb2YgZ3JlZW4gbGVhdmVzIHRoYXQgbGF5DQorZmFyIGJlbG93IGhlci4NCisNCisgIGBXaGF0IENBTiBhbGwgdGhhdCBncmVlbiBzdHVmZiBiZT8nIHNhaWQgQWxpY2UuICBgQW5kIHdoZXJlDQorSEFWRSBteSBzaG91bGRlcnMgZ290IHRvPyAgQW5kIG9oLCBteSBwb29yIGhhbmRzLCBob3cgaXMgaXQgSQ0KK2Nhbid0IHNlZSB5b3U/JyAgU2hlIHdhcyBtb3ZpbmcgdGhlbSBhYm91dCBhcyBzaGUgc3Bva2UsIGJ1dCBubw0KK3Jlc3VsdCBzZWVtZWQgdG8gZm9sbG93LCBleGNlcHQgYSBsaXR0bGUgc2hha2luZyBhbW9uZyB0aGUNCitkaXN0YW50IGdyZWVuIGxlYXZlcy4NCisNCisgIEFzIHRoZXJlIHNlZW1lZCB0byBiZSBubyBjaGFuY2Ugb2YgZ2V0dGluZyBoZXIgaGFuZHMgdXAgdG8gaGVyDQoraGVhZCwgc2hlIHRyaWVkIHRvIGdldCBoZXIgaGVhZCBkb3duIHRvIHRoZW0sIGFuZCB3YXMgZGVsaWdodGVkDQordG8gZmluZCB0aGF0IGhlciBuZWNrIHdvdWxkIGJlbmQgYWJvdXQgZWFzaWx5IGluIGFueSBkaXJlY3Rpb24sDQorbGlrZSBhIHNlcnBlbnQuICBTaGUgaGFkIGp1c3Qgc3VjY2VlZGVkIGluIGN1cnZpbmcgaXQgZG93biBpbnRvIGENCitncmFjZWZ1bCB6aWd6YWcsIGFuZCB3YXMgZ29pbmcgdG8gZGl2ZSBpbiBhbW9uZyB0aGUgbGVhdmVzLCB3aGljaA0KK3NoZSBmb3VuZCB0byBiZSBub3RoaW5nIGJ1dCB0aGUgdG9wcyBvZiB0aGUgdHJlZXMgdW5kZXIgd2hpY2ggc2hlDQoraGFkIGJlZW4gd2FuZGVyaW5nLCB3aGVuIGEgc2hhcnAgaGlzcyBtYWRlIGhlciBkcmF3IGJhY2sgaW4gYQ0KK2h1cnJ5OiAgYSBsYXJnZSBwaWdlb24gaGFkIGZsb3duIGludG8gaGVyIGZhY2UsIGFuZCB3YXMgYmVhdGluZw0KK2hlciB2aW9sZW50bHkgd2l0aCBpdHMgd2luZ3MuDQorDQorICBgU2VycGVudCEnIHNjcmVhbWVkIHRoZSBQaWdlb24uDQorDQorICBgSSdtIE5PVCBhIHNlcnBlbnQhJyBzYWlkIEFsaWNlIGluZGlnbmFudGx5LiAgYExldCBtZSBhbG9uZSEnDQorDQorICBgU2VycGVudCwgSSBzYXkgYWdhaW4hJyByZXBlYXRlZCB0aGUgUGlnZW9uLCBidXQgaW4gYSBtb3JlDQorc3ViZHVlZCB0b25lLCBhbmQgYWRkZWQgd2l0aCBhIGtpbmQgb2Ygc29iLCBgSSd2ZSB0cmllZCBldmVyeQ0KK3dheSwgYW5kIG5vdGhpbmcgc2VlbXMgdG8gc3VpdCB0aGVtIScNCisNCisgIGBJIGhhdmVuJ3QgdGhlIGxlYXN0IGlkZWEgd2hhdCB5b3UncmUgdGFsa2luZyBhYm91dCwnIHNhaWQNCitBbGljZS4NCisNCisgIGBJJ3ZlIHRyaWVkIHRoZSByb290cyBvZiB0cmVlcywgYW5kIEkndmUgdHJpZWQgYmFua3MsIGFuZCBJJ3ZlDQordHJpZWQgaGVkZ2VzLCcgdGhlIFBpZ2VvbiB3ZW50IG9uLCB3aXRob3V0IGF0dGVuZGluZyB0byBoZXI7IGBidXQNCit0aG9zZSBzZXJwZW50cyEgIFRoZXJlJ3Mgbm8gcGxlYXNpbmcgdGhlbSEnDQorDQorICBBbGljZSB3YXMgbW9yZSBhbmQgbW9yZSBwdXp6bGVkLCBidXQgc2hlIHRob3VnaHQgdGhlcmUgd2FzIG5vDQordXNlIGluIHNheWluZyBhbnl0aGluZyBtb3JlIHRpbGwgdGhlIFBpZ2VvbiBoYWQgZmluaXNoZWQuDQorDQorICBgQXMgaWYgaXQgd2Fzbid0IHRyb3VibGUgZW5vdWdoIGhhdGNoaW5nIHRoZSBlZ2dzLCcgc2FpZCB0aGUNCitQaWdlb247IGBidXQgSSBtdXN0IGJlIG9uIHRoZSBsb29rLW91dCBmb3Igc2VycGVudHMgbmlnaHQgYW5kDQorZGF5ISAgV2h5LCBJIGhhdmVuJ3QgaGFkIGEgd2luayBvZiBzbGVlcCB0aGVzZSB0aHJlZSB3ZWVrcyEnDQorDQorICBgSSdtIHZlcnkgc29ycnkgeW91J3ZlIGJlZW4gYW5ub3llZCwnIHNhaWQgQWxpY2UsIHdobyB3YXMNCitiZWdpbm5pbmcgdG8gc2VlIGl0cyBtZWFuaW5nLg0KKw0KKyAgYEFuZCBqdXN0IGFzIEknZCB0YWtlbiB0aGUgaGlnaGVzdCB0cmVlIGluIHRoZSB3b29kLCcgY29udGludWVkDQordGhlIFBpZ2VvbiwgcmFpc2luZyBpdHMgdm9pY2UgdG8gYSBzaHJpZWssIGBhbmQganVzdCBhcyBJIHdhcw0KK3RoaW5raW5nIEkgc2hvdWxkIGJlIGZyZWUgb2YgdGhlbSBhdCBsYXN0LCB0aGV5IG11c3QgbmVlZHMgY29tZQ0KK3dyaWdnbGluZyBkb3duIGZyb20gdGhlIHNreSEgIFVnaCwgU2VycGVudCEnDQorDQorICBgQnV0IEknbSBOT1QgYSBzZXJwZW50LCBJIHRlbGwgeW91IScgc2FpZCBBbGljZS4gIGBJJ20gYS0tSSdtDQorYS0tJw0KKw0KKyAgYFdlbGwhICBXSEFUIGFyZSB5b3U/JyBzYWlkIHRoZSBQaWdlb24uICBgSSBjYW4gc2VlIHlvdSdyZQ0KK3RyeWluZyB0byBpbnZlbnQgc29tZXRoaW5nIScNCisNCisgIGBJLS1JJ20gYSBsaXR0bGUgZ2lybCwnIHNhaWQgQWxpY2UsIHJhdGhlciBkb3VidGZ1bGx5LCBhcyBzaGUNCityZW1lbWJlcmVkIHRoZSBudW1iZXIgb2YgY2hhbmdlcyBzaGUgaGFkIGdvbmUgdGhyb3VnaCB0aGF0IGRheS4NCisNCisgIGBBIGxpa2VseSBzdG9yeSBpbmRlZWQhJyBzYWlkIHRoZSBQaWdlb24gaW4gYSB0b25lIG9mIHRoZQ0KK2RlZXBlc3QgY29udGVtcHQuICBgSSd2ZSBzZWVuIGEgZ29vZCBtYW55IGxpdHRsZSBnaXJscyBpbiBteQ0KK3RpbWUsIGJ1dCBuZXZlciBPTkUgd2l0aCBzdWNoIGEgbmVjayBhcyB0aGF0ISAgTm8sIG5vISAgWW91J3JlIGENCitzZXJwZW50OyBhbmQgdGhlcmUncyBubyB1c2UgZGVueWluZyBpdC4gIEkgc3VwcG9zZSB5b3UnbGwgYmUNCit0ZWxsaW5nIG1lIG5leHQgdGhhdCB5b3UgbmV2ZXIgdGFzdGVkIGFuIGVnZyEnDQorDQorICBgSSBIQVZFIHRhc3RlZCBlZ2dzLCBjZXJ0YWlubHksJyBzYWlkIEFsaWNlLCB3aG8gd2FzIGEgdmVyeQ0KK3RydXRoZnVsIGNoaWxkOyBgYnV0IGxpdHRsZSBnaXJscyBlYXQgZWdncyBxdWl0ZSBhcyBtdWNoIGFzDQorc2VycGVudHMgZG8sIHlvdSBrbm93LicNCisNCisgIGBJIGRvbid0IGJlbGlldmUgaXQsJyBzYWlkIHRoZSBQaWdlb247IGBidXQgaWYgdGhleSBkbywgd2h5DQordGhlbiB0aGV5J3JlIGEga2luZCBvZiBzZXJwZW50LCB0aGF0J3MgYWxsIEkgY2FuIHNheS4nDQorDQorICBUaGlzIHdhcyBzdWNoIGEgbmV3IGlkZWEgdG8gQWxpY2UsIHRoYXQgc2hlIHdhcyBxdWl0ZSBzaWxlbnQNCitmb3IgYSBtaW51dGUgb3IgdHdvLCB3aGljaCBnYXZlIHRoZSBQaWdlb24gdGhlIG9wcG9ydHVuaXR5IG9mDQorYWRkaW5nLCBgWW91J3JlIGxvb2tpbmcgZm9yIGVnZ3MsIEkga25vdyBUSEFUIHdlbGwgZW5vdWdoOyBhbmQNCit3aGF0IGRvZXMgaXQgbWF0dGVyIHRvIG1lIHdoZXRoZXIgeW91J3JlIGEgbGl0dGxlIGdpcmwgb3IgYQ0KK3NlcnBlbnQ/Jw0KKw0KKyAgYEl0IG1hdHRlcnMgYSBnb29kIGRlYWwgdG8gTUUsJyBzYWlkIEFsaWNlIGhhc3RpbHk7IGBidXQgSSdtDQorbm90IGxvb2tpbmcgZm9yIGVnZ3MsIGFzIGl0IGhhcHBlbnM7IGFuZCBpZiBJIHdhcywgSSBzaG91bGRuJ3QNCit3YW50IFlPVVJTOiAgSSBkb24ndCBsaWtlIHRoZW0gcmF3LicNCisNCisgIGBXZWxsLCBiZSBvZmYsIHRoZW4hJyBzYWlkIHRoZSBQaWdlb24gaW4gYSBzdWxreSB0b25lLCBhcyBpdA0KK3NldHRsZWQgZG93biBhZ2FpbiBpbnRvIGl0cyBuZXN0LiAgQWxpY2UgY3JvdWNoZWQgZG93biBhbW9uZyB0aGUNCit0cmVlcyBhcyB3ZWxsIGFzIHNoZSBjb3VsZCwgZm9yIGhlciBuZWNrIGtlcHQgZ2V0dGluZyBlbnRhbmdsZWQNCithbW9uZyB0aGUgYnJhbmNoZXMsIGFuZCBldmVyeSBub3cgYW5kIHRoZW4gc2hlIGhhZCB0byBzdG9wIGFuZA0KK3VudHdpc3QgaXQuICBBZnRlciBhIHdoaWxlIHNoZSByZW1lbWJlcmVkIHRoYXQgc2hlIHN0aWxsIGhlbGQgdGhlDQorcGllY2VzIG9mIG11c2hyb29tIGluIGhlciBoYW5kcywgYW5kIHNoZSBzZXQgdG8gd29yayB2ZXJ5DQorY2FyZWZ1bGx5LCBuaWJibGluZyBmaXJzdCBhdCBvbmUgYW5kIHRoZW4gYXQgdGhlIG90aGVyLCBhbmQNCitncm93aW5nIHNvbWV0aW1lcyB0YWxsZXIgYW5kIHNvbWV0aW1lcyBzaG9ydGVyLCB1bnRpbCBzaGUgaGFkDQorc3VjY2VlZGVkIGluIGJyaW5naW5nIGhlcnNlbGYgZG93biB0byBoZXIgdXN1YWwgaGVpZ2h0Lg0KKw0KKyAgSXQgd2FzIHNvIGxvbmcgc2luY2Ugc2hlIGhhZCBiZWVuIGFueXRoaW5nIG5lYXIgdGhlIHJpZ2h0IHNpemUsDQordGhhdCBpdCBmZWx0IHF1aXRlIHN0cmFuZ2UgYXQgZmlyc3Q7IGJ1dCBzaGUgZ290IHVzZWQgdG8gaXQgaW4gYQ0KK2ZldyBtaW51dGVzLCBhbmQgYmVnYW4gdGFsa2luZyB0byBoZXJzZWxmLCBhcyB1c3VhbC4gIGBDb21lLA0KK3RoZXJlJ3MgaGFsZiBteSBwbGFuIGRvbmUgbm93ISAgSG93IHB1enpsaW5nIGFsbCB0aGVzZSBjaGFuZ2VzDQorYXJlISAgSSdtIG5ldmVyIHN1cmUgd2hhdCBJJ20gZ29pbmcgdG8gYmUsIGZyb20gb25lIG1pbnV0ZSB0bw0KK2Fub3RoZXIhICBIb3dldmVyLCBJJ3ZlIGdvdCBiYWNrIHRvIG15IHJpZ2h0IHNpemU6ICB0aGUgbmV4dA0KK3RoaW5nIGlzLCB0byBnZXQgaW50byB0aGF0IGJlYXV0aWZ1bCBnYXJkZW4tLWhvdyBJUyB0aGF0IHRvIGJlDQorZG9uZSwgSSB3b25kZXI/JyAgQXMgc2hlIHNhaWQgdGhpcywgc2hlIGNhbWUgc3VkZGVubHkgdXBvbiBhbg0KK29wZW4gcGxhY2UsIHdpdGggYSBsaXR0bGUgaG91c2UgaW4gaXQgYWJvdXQgZm91ciBmZWV0IGhpZ2guDQorYFdob2V2ZXIgbGl2ZXMgdGhlcmUsJyB0aG91Z2h0IEFsaWNlLCBgaXQnbGwgbmV2ZXIgZG8gdG8gY29tZQ0KK3Vwb24gdGhlbSBUSElTIHNpemU6ICB3aHksIEkgc2hvdWxkIGZyaWdodGVuIHRoZW0gb3V0IG9mIHRoZWlyDQord2l0cyEnICBTbyBzaGUgYmVnYW4gbmliYmxpbmcgYXQgdGhlIHJpZ2h0aGFuZCBiaXQgYWdhaW4sIGFuZCBkaWQNCitub3QgdmVudHVyZSB0byBnbyBuZWFyIHRoZSBob3VzZSB0aWxsIHNoZSBoYWQgYnJvdWdodCBoZXJzZWxmDQorZG93biB0byBuaW5lIGluY2hlcyBoaWdoLg0KKw0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQVBURVIgVkkNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgUGlnIGFuZCBQZXBwZXINCisNCisNCisgIEZvciBhIG1pbnV0ZSBvciB0d28gc2hlIHN0b29kIGxvb2tpbmcgYXQgdGhlIGhvdXNlLCBhbmQNCit3b25kZXJpbmcgd2hhdCB0byBkbyBuZXh0LCB3aGVuIHN1ZGRlbmx5IGEgZm9vdG1hbiBpbiBsaXZlcnkgY2FtZQ0KK3J1bm5pbmcgb3V0IG9mIHRoZSB3b29kLS0oc2hlIGNvbnNpZGVyZWQgaGltIHRvIGJlIGEgZm9vdG1hbg0KK2JlY2F1c2UgaGUgd2FzIGluIGxpdmVyeTogIG90aGVyd2lzZSwganVkZ2luZyBieSBoaXMgZmFjZSBvbmx5LA0KK3NoZSB3b3VsZCBoYXZlIGNhbGxlZCBoaW0gYSBmaXNoKS0tYW5kIHJhcHBlZCBsb3VkbHkgYXQgdGhlIGRvb3INCit3aXRoIGhpcyBrbnVja2xlcy4gIEl0IHdhcyBvcGVuZWQgYnkgYW5vdGhlciBmb290bWFuIGluIGxpdmVyeSwNCit3aXRoIGEgcm91bmQgZmFjZSwgYW5kIGxhcmdlIGV5ZXMgbGlrZSBhIGZyb2c7IGFuZCBib3RoIGZvb3RtZW4sDQorQWxpY2Ugbm90aWNlZCwgaGFkIHBvd2RlcmVkIGhhaXIgdGhhdCBjdXJsZWQgYWxsIG92ZXIgdGhlaXINCitoZWFkcy4gIFNoZSBmZWx0IHZlcnkgY3VyaW91cyB0byBrbm93IHdoYXQgaXQgd2FzIGFsbCBhYm91dCwgYW5kDQorY3JlcHQgYSBsaXR0bGUgd2F5IG91dCBvZiB0aGUgd29vZCB0byBsaXN0ZW4uDQorDQorICBUaGUgRmlzaC1Gb290bWFuIGJlZ2FuIGJ5IHByb2R1Y2luZyBmcm9tIHVuZGVyIGhpcyBhcm0gYSBncmVhdA0KK2xldHRlciwgbmVhcmx5IGFzIGxhcmdlIGFzIGhpbXNlbGYsIGFuZCB0aGlzIGhlIGhhbmRlZCBvdmVyIHRvDQordGhlIG90aGVyLCBzYXlpbmcsIGluIGEgc29sZW1uIHRvbmUsIGBGb3IgdGhlIER1Y2hlc3MuICBBbg0KK2ludml0YXRpb24gZnJvbSB0aGUgUXVlZW4gdG8gcGxheSBjcm9xdWV0LicgIFRoZSBGcm9nLUZvb3RtYW4NCityZXBlYXRlZCwgaW4gdGhlIHNhbWUgc29sZW1uIHRvbmUsIG9ubHkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIHRoZQ0KK3dvcmRzIGEgbGl0dGxlLCBgRnJvbSB0aGUgUXVlZW4uICBBbiBpbnZpdGF0aW9uIGZvciB0aGUgRHVjaGVzcw0KK3RvIHBsYXkgY3JvcXVldC4nDQorDQorICBUaGVuIHRoZXkgYm90aCBib3dlZCBsb3csIGFuZCB0aGVpciBjdXJscyBnb3QgZW50YW5nbGVkDQordG9nZXRoZXIuDQorDQorICBBbGljZSBsYXVnaGVkIHNvIG11Y2ggYXQgdGhpcywgdGhhdCBzaGUgaGFkIHRvIHJ1biBiYWNrIGludG8NCit0aGUgd29vZCBmb3IgZmVhciBvZiB0aGVpciBoZWFyaW5nIGhlcjsgYW5kIHdoZW4gc2hlIG5leHQgcGVlcGVkDQorb3V0IHRoZSBGaXNoLUZvb3RtYW4gd2FzIGdvbmUsIGFuZCB0aGUgb3RoZXIgd2FzIHNpdHRpbmcgb24gdGhlDQorZ3JvdW5kIG5lYXIgdGhlIGRvb3IsIHN0YXJpbmcgc3R1cGlkbHkgdXAgaW50byB0aGUgc2t5Lg0KKw0KKyAgQWxpY2Ugd2VudCB0aW1pZGx5IHVwIHRvIHRoZSBkb29yLCBhbmQga25vY2tlZC4NCisNCisgIGBUaGVyZSdzIG5vIHNvcnQgb2YgdXNlIGluIGtub2NraW5nLCcgc2FpZCB0aGUgRm9vdG1hbiwgYGFuZA0KK3RoYXQgZm9yIHR3byByZWFzb25zLiAgRmlyc3QsIGJlY2F1c2UgSSdtIG9uIHRoZSBzYW1lIHNpZGUgb2YgdGhlDQorZG9vciBhcyB5b3UgYXJlOyBzZWNvbmRseSwgYmVjYXVzZSB0aGV5J3JlIG1ha2luZyBzdWNoIGEgbm9pc2UNCitpbnNpZGUsIG5vIG9uZSBjb3VsZCBwb3NzaWJseSBoZWFyIHlvdS4nICBBbmQgY2VydGFpbmx5IHRoZXJlIHdhcw0KK2EgbW9zdCBleHRyYW9yZGluYXJ5IG5vaXNlIGdvaW5nIG9uIHdpdGhpbi0tYSBjb25zdGFudCBob3dsaW5nDQorYW5kIHNuZWV6aW5nLCBhbmQgZXZlcnkgbm93IGFuZCB0aGVuIGEgZ3JlYXQgY3Jhc2gsIGFzIGlmIGEgZGlzaA0KK29yIGtldHRsZSBoYWQgYmVlbiBicm9rZW4gdG8gcGllY2VzLg0KKw0KKyAgYFBsZWFzZSwgdGhlbiwnIHNhaWQgQWxpY2UsIGBob3cgYW0gSSB0byBnZXQgaW4/Jw0KKw0KKyAgYFRoZXJlIG1pZ2h0IGJlIHNvbWUgc2Vuc2UgaW4geW91ciBrbm9ja2luZywnIHRoZSBGb290bWFuIHdlbnQNCitvbiB3aXRob3V0IGF0dGVuZGluZyB0byBoZXIsIGBpZiB3ZSBoYWQgdGhlIGRvb3IgYmV0d2VlbiB1cy4gIEZvcg0KK2luc3RhbmNlLCBpZiB5b3Ugd2VyZSBJTlNJREUsIHlvdSBtaWdodCBrbm9jaywgYW5kIEkgY291bGQgbGV0DQoreW91IG91dCwgeW91IGtub3cuJyAgSGUgd2FzIGxvb2tpbmcgdXAgaW50byB0aGUgc2t5IGFsbCB0aGUgdGltZQ0KK2hlIHdhcyBzcGVha2luZywgYW5kIHRoaXMgQWxpY2UgdGhvdWdodCBkZWNpZGVkbHkgdW5jaXZpbC4gIGBCdXQNCitwZXJoYXBzIGhlIGNhbid0IGhlbHAgaXQsJyBzaGUgc2FpZCB0byBoZXJzZWxmOyBgaGlzIGV5ZXMgYXJlIHNvDQorVkVSWSBuZWFybHkgYXQgdGhlIHRvcCBvZiBoaXMgaGVhZC4gIEJ1dCBhdCBhbnkgcmF0ZSBoZSBtaWdodA0KK2Fuc3dlciBxdWVzdGlvbnMuLS1Ib3cgYW0gSSB0byBnZXQgaW4/JyBzaGUgcmVwZWF0ZWQsIGFsb3VkLg0KKw0KKyAgYEkgc2hhbGwgc2l0IGhlcmUsJyB0aGUgRm9vdG1hbiByZW1hcmtlZCwgYHRpbGwgdG9tb3Jyb3ctLScNCisNCisgIEF0IHRoaXMgbW9tZW50IHRoZSBkb29yIG9mIHRoZSBob3VzZSBvcGVuZWQsIGFuZCBhIGxhcmdlIHBsYXRlDQorY2FtZSBza2ltbWluZyBvdXQsIHN0cmFpZ2h0IGF0IHRoZSBGb290bWFuJ3MgaGVhZDogIGl0IGp1c3QNCitncmF6ZWQgaGlzIG5vc2UsIGFuZCBicm9rZSB0byBwaWVjZXMgYWdhaW5zdCBvbmUgb2YgdGhlIHRyZWVzDQorYmVoaW5kIGhpbS4NCisNCisgIGAtLW9yIG5leHQgZGF5LCBtYXliZSwnIHRoZSBGb290bWFuIGNvbnRpbnVlZCBpbiB0aGUgc2FtZSB0b25lLA0KK2V4YWN0bHkgYXMgaWYgbm90aGluZyBoYWQgaGFwcGVuZWQuDQorDQorICBgSG93IGFtIEkgdG8gZ2V0IGluPycgYXNrZWQgQWxpY2UgYWdhaW4sIGluIGEgbG91ZGVyIHRvbmUuDQorDQorICBgQVJFIHlvdSB0byBnZXQgaW4gYXQgYWxsPycgc2FpZCB0aGUgRm9vdG1hbi4gIGBUaGF0J3MgdGhlDQorZmlyc3QgcXVlc3Rpb24sIHlvdSBrbm93LicNCisNCisgIEl0IHdhcywgbm8gZG91YnQ6ICBvbmx5IEFsaWNlIGRpZCBub3QgbGlrZSB0byBiZSB0b2xkIHNvLg0KK2BJdCdzIHJlYWxseSBkcmVhZGZ1bCwnIHNoZSBtdXR0ZXJlZCB0byBoZXJzZWxmLCBgdGhlIHdheSBhbGwgdGhlDQorY3JlYXR1cmVzIGFyZ3VlLiAgSXQncyBlbm91Z2ggdG8gZHJpdmUgb25lIGNyYXp5IScNCisNCisgIFRoZSBGb290bWFuIHNlZW1lZCB0byB0aGluayB0aGlzIGEgZ29vZCBvcHBvcnR1bml0eSBmb3INCityZXBlYXRpbmcgaGlzIHJlbWFyaywgd2l0aCB2YXJpYXRpb25zLiAgYEkgc2hhbGwgc2l0IGhlcmUsJyBoZQ0KK3NhaWQsIGBvbiBhbmQgb2ZmLCBmb3IgZGF5cyBhbmQgZGF5cy4nDQorDQorICBgQnV0IHdoYXQgYW0gSSB0byBkbz8nIHNhaWQgQWxpY2UuDQorDQorICBgQW55dGhpbmcgeW91IGxpa2UsJyBzYWlkIHRoZSBGb290bWFuLCBhbmQgYmVnYW4gd2hpc3RsaW5nLg0KKw0KKyAgYE9oLCB0aGVyZSdzIG5vIHVzZSBpbiB0YWxraW5nIHRvIGhpbSwnIHNhaWQgQWxpY2UgZGVzcGVyYXRlbHk6DQorYGhlJ3MgcGVyZmVjdGx5IGlkaW90aWMhJyAgQW5kIHNoZSBvcGVuZWQgdGhlIGRvb3IgYW5kIHdlbnQgaW4uDQorDQorICBUaGUgZG9vciBsZWQgcmlnaHQgaW50byBhIGxhcmdlIGtpdGNoZW4sIHdoaWNoIHdhcyBmdWxsIG9mDQorc21va2UgZnJvbSBvbmUgZW5kIHRvIHRoZSBvdGhlcjogIHRoZSBEdWNoZXNzIHdhcyBzaXR0aW5nIG9uIGENCit0aHJlZS1sZWdnZWQgc3Rvb2wgaW4gdGhlIG1pZGRsZSwgbnVyc2luZyBhIGJhYnk7IHRoZSBjb29rIHdhcw0KK2xlYW5pbmcgb3ZlciB0aGUgZmlyZSwgc3RpcnJpbmcgYSBsYXJnZSBjYXVsZHJvbiB3aGljaCBzZWVtZWQgdG8NCitiZSBmdWxsIG9mIHNvdXAuDQorDQorICBgVGhlcmUncyBjZXJ0YWlubHkgdG9vIG11Y2ggcGVwcGVyIGluIHRoYXQgc291cCEnIEFsaWNlIHNhaWQgdG8NCitoZXJzZWxmLCBhcyB3ZWxsIGFzIHNoZSBjb3VsZCBmb3Igc25lZXppbmcuDQorDQorICBUaGVyZSB3YXMgY2VydGFpbmx5IHRvbyBtdWNoIG9mIGl0IGluIHRoZSBhaXIuICBFdmVuIHRoZQ0KK0R1Y2hlc3Mgc25lZXplZCBvY2Nhc2lvbmFsbHk7IGFuZCBhcyBmb3IgdGhlIGJhYnksIGl0IHdhcw0KK3NuZWV6aW5nIGFuZCBob3dsaW5nIGFsdGVybmF0ZWx5IHdpdGhvdXQgYSBtb21lbnQncyBwYXVzZS4gIFRoZQ0KK29ubHkgdGhpbmdzIGluIHRoZSBraXRjaGVuIHRoYXQgZGlkIG5vdCBzbmVlemUsIHdlcmUgdGhlIGNvb2ssDQorYW5kIGEgbGFyZ2UgY2F0IHdoaWNoIHdhcyBzaXR0aW5nIG9uIHRoZSBoZWFydGggYW5kIGdyaW5uaW5nIGZyb20NCitlYXIgdG8gZWFyLg0KKw0KKyAgYFBsZWFzZSB3b3VsZCB5b3UgdGVsbCBtZSwnIHNhaWQgQWxpY2UsIGEgbGl0dGxlIHRpbWlkbHksIGZvcg0KK3NoZSB3YXMgbm90IHF1aXRlIHN1cmUgd2hldGhlciBpdCB3YXMgZ29vZCBtYW5uZXJzIGZvciBoZXIgdG8NCitzcGVhayBmaXJzdCwgYHdoeSB5b3VyIGNhdCBncmlucyBsaWtlIHRoYXQ/Jw0KKw0KKyAgYEl0J3MgYSBDaGVzaGlyZSBjYXQsJyBzYWlkIHRoZSBEdWNoZXNzLCBgYW5kIHRoYXQncyB3aHkuDQorUGlnIScNCisNCisgIFNoZSBzYWlkIHRoZSBsYXN0IHdvcmQgd2l0aCBzdWNoIHN1ZGRlbiB2aW9sZW5jZSB0aGF0IEFsaWNlDQorcXVpdGUganVtcGVkOyBidXQgc2hlIHNhdyBpbiBhbm90aGVyIG1vbWVudCB0aGF0IGl0IHdhcyBhZGRyZXNzZWQNCit0byB0aGUgYmFieSwgYW5kIG5vdCB0byBoZXIsIHNvIHNoZSB0b29rIGNvdXJhZ2UsIGFuZCB3ZW50IG9uDQorYWdhaW46LS0NCisNCisgIGBJIGRpZG4ndCBrbm93IHRoYXQgQ2hlc2hpcmUgY2F0cyBhbHdheXMgZ3Jpbm5lZDsgaW4gZmFjdCwgSQ0KK2RpZG4ndCBrbm93IHRoYXQgY2F0cyBDT1VMRCBncmluLicNCisNCisgIGBUaGV5IGFsbCBjYW4sJyBzYWlkIHRoZSBEdWNoZXNzOyBgYW5kIG1vc3Qgb2YgJ2VtIGRvLicNCisNCisgIGBJIGRvbid0IGtub3cgb2YgYW55IHRoYXQgZG8sJyBBbGljZSBzYWlkIHZlcnkgcG9saXRlbHksDQorZmVlbGluZyBxdWl0ZSBwbGVhc2VkIHRvIGhhdmUgZ290IGludG8gYSBjb252ZXJzYXRpb24uDQorDQorICBgWW91IGRvbid0IGtub3cgbXVjaCwnIHNhaWQgdGhlIER1Y2hlc3M7IGBhbmQgdGhhdCdzIGEgZmFjdC4nDQorDQorICBBbGljZSBkaWQgbm90IGF0IGFsbCBsaWtlIHRoZSB0b25lIG9mIHRoaXMgcmVtYXJrLCBhbmQgdGhvdWdodA0KK2l0IHdvdWxkIGJlIGFzIHdlbGwgdG8gaW50cm9kdWNlIHNvbWUgb3RoZXIgc3ViamVjdCBvZg0KK2NvbnZlcnNhdGlvbi4gIFdoaWxlIHNoZSB3YXMgdHJ5aW5nIHRvIGZpeCBvbiBvbmUsIHRoZSBjb29rIHRvb2sNCit0aGUgY2F1bGRyb24gb2Ygc291cCBvZmYgdGhlIGZpcmUsIGFuZCBhdCBvbmNlIHNldCB0byB3b3JrDQordGhyb3dpbmcgZXZlcnl0aGluZyB3aXRoaW4gaGVyIHJlYWNoIGF0IHRoZSBEdWNoZXNzIGFuZCB0aGUgYmFieQ0KKy0tdGhlIGZpcmUtaXJvbnMgY2FtZSBmaXJzdDsgdGhlbiBmb2xsb3dlZCBhIHNob3dlciBvZiBzYXVjZXBhbnMsDQorcGxhdGVzLCBhbmQgZGlzaGVzLiAgVGhlIER1Y2hlc3MgdG9vayBubyBub3RpY2Ugb2YgdGhlbSBldmVuIHdoZW4NCit0aGV5IGhpdCBoZXI7IGFuZCB0aGUgYmFieSB3YXMgaG93bGluZyBzbyBtdWNoIGFscmVhZHksIHRoYXQgaXQNCit3YXMgcXVpdGUgaW1wb3NzaWJsZSB0byBzYXkgd2hldGhlciB0aGUgYmxvd3MgaHVydCBpdCBvciBub3QuDQorDQorICBgT2gsIFBMRUFTRSBtaW5kIHdoYXQgeW91J3JlIGRvaW5nIScgY3JpZWQgQWxpY2UsIGp1bXBpbmcgdXANCithbmQgZG93biBpbiBhbiBhZ29ueSBvZiB0ZXJyb3IuICBgT2gsIHRoZXJlIGdvZXMgaGlzIFBSRUNJT1VTDQorbm9zZSc7IGFzIGFuIHVudXN1YWxseSBsYXJnZSBzYXVjZXBhbiBmbGV3IGNsb3NlIGJ5IGl0LCBhbmQgdmVyeQ0KK25lYXJseSBjYXJyaWVkIGl0IG9mZi4NCisNCisgIGBJZiBldmVyeWJvZHkgbWluZGVkIHRoZWlyIG93biBidXNpbmVzcywnIHRoZSBEdWNoZXNzIHNhaWQgaW4gYQ0KK2hvYXJzZSBncm93bCwgYHRoZSB3b3JsZCB3b3VsZCBnbyByb3VuZCBhIGRlYWwgZmFzdGVyIHRoYW4gaXQNCitkb2VzLicNCisNCisgIGBXaGljaCB3b3VsZCBOT1QgYmUgYW4gYWR2YW50YWdlLCcgc2FpZCBBbGljZSwgd2hvIGZlbHQgdmVyeQ0KK2dsYWQgdG8gZ2V0IGFuIG9wcG9ydHVuaXR5IG9mIHNob3dpbmcgb2ZmIGEgbGl0dGxlIG9mIGhlcg0KK2tub3dsZWRnZS4gIGBKdXN0IHRoaW5rIG9mIHdoYXQgd29yayBpdCB3b3VsZCBtYWtlIHdpdGggdGhlIGRheQ0KK2FuZCBuaWdodCEgIFlvdSBzZWUgdGhlIGVhcnRoIHRha2VzIHR3ZW50eS1mb3VyIGhvdXJzIHRvIHR1cm4NCityb3VuZCBvbiBpdHMgYXhpcy0tJw0KKw0KKyAgYFRhbGtpbmcgb2YgYXhlcywnIHNhaWQgdGhlIER1Y2hlc3MsIGBjaG9wIG9mZiBoZXIgaGVhZCEnDQorDQorICBBbGljZSBnbGFuY2VkIHJhdGhlciBhbnhpb3VzbHkgYXQgdGhlIGNvb2ssIHRvIHNlZSBpZiBzaGUgbWVhbnQNCit0byB0YWtlIHRoZSBoaW50OyBidXQgdGhlIGNvb2sgd2FzIGJ1c2lseSBzdGlycmluZyB0aGUgc291cCwgYW5kDQorc2VlbWVkIG5vdCB0byBiZSBsaXN0ZW5pbmcsIHNvIHNoZSB3ZW50IG9uIGFnYWluOiAgYFR3ZW50eS1mb3VyDQoraG91cnMsIEkgVEhJTks7IG9yIGlzIGl0IHR3ZWx2ZT8gIEktLScNCisNCisgIGBPaCwgZG9uJ3QgYm90aGVyIE1FLCcgc2FpZCB0aGUgRHVjaGVzczsgYEkgbmV2ZXIgY291bGQgYWJpZGUNCitmaWd1cmVzIScgIEFuZCB3aXRoIHRoYXQgc2hlIGJlZ2FuIG51cnNpbmcgaGVyIGNoaWxkIGFnYWluLA0KK3NpbmdpbmcgYSBzb3J0IG9mIGx1bGxhYnkgdG8gaXQgYXMgc2hlIGRpZCBzbywgYW5kIGdpdmluZyBpdCBhDQordmlvbGVudCBzaGFrZSBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGxpbmU6DQorDQorICAgICAgICBgU3BlYWsgcm91Z2hseSB0byB5b3VyIGxpdHRsZSBib3ksDQorICAgICAgICAgIEFuZCBiZWF0IGhpbSB3aGVuIGhlIHNuZWV6ZXM6DQorICAgICAgICBIZSBvbmx5IGRvZXMgaXQgdG8gYW5ub3ksDQorICAgICAgICAgIEJlY2F1c2UgaGUga25vd3MgaXQgdGVhc2VzLicNCisNCisgICAgICAgICAgICAgICAgICAgIENIT1JVUy4NCisNCisgICAgKEluIHdoaWNoIHRoZSBjb29rIGFuZCB0aGUgYmFieSBqb2luZWQpOi0tDQorDQorICAgICAgICAgICAgICAgIGBXb3chIHdvdyEgd293IScNCisNCisgIFdoaWxlIHRoZSBEdWNoZXNzIHNhbmcgdGhlIHNlY29uZCB2ZXJzZSBvZiB0aGUgc29uZywgc2hlIGtlcHQNCit0b3NzaW5nIHRoZSBiYWJ5IHZpb2xlbnRseSB1cCBhbmQgZG93biwgYW5kIHRoZSBwb29yIGxpdHRsZSB0aGluZw0KK2hvd2xlZCBzbywgdGhhdCBBbGljZSBjb3VsZCBoYXJkbHkgaGVhciB0aGUgd29yZHM6LS0NCisNCisgICAgICAgIGBJIHNwZWFrIHNldmVyZWx5IHRvIG15IGJveSwNCisgICAgICAgICAgSSBiZWF0IGhpbSB3aGVuIGhlIHNuZWV6ZXM7DQorICAgICAgICBGb3IgaGUgY2FuIHRob3JvdWdobHkgZW5qb3kNCisgICAgICAgICAgVGhlIHBlcHBlciB3aGVuIGhlIHBsZWFzZXMhJw0KKw0KKyAgICAgICAgICAgICAgICAgICAgQ0hPUlVTLg0KKw0KKyAgICAgICAgICAgICAgICBgV293ISB3b3chIHdvdyEnDQorDQorICBgSGVyZSEgeW91IG1heSBudXJzZSBpdCBhIGJpdCwgaWYgeW91IGxpa2UhJyB0aGUgRHVjaGVzcyBzYWlkDQordG8gQWxpY2UsIGZsaW5naW5nIHRoZSBiYWJ5IGF0IGhlciBhcyBzaGUgc3Bva2UuICBgSSBtdXN0IGdvIGFuZA0KK2dldCByZWFkeSB0byBwbGF5IGNyb3F1ZXQgd2l0aCB0aGUgUXVlZW4sJyBhbmQgc2hlIGh1cnJpZWQgb3V0IG9mDQordGhlIHJvb20uICBUaGUgY29vayB0aHJldyBhIGZyeWluZy1wYW4gYWZ0ZXIgaGVyIGFzIHNoZSB3ZW50IG91dCwNCitidXQgaXQganVzdCBtaXNzZWQgaGVyLg0KKw0KKyAgQWxpY2UgY2F1Z2h0IHRoZSBiYWJ5IHdpdGggc29tZSBkaWZmaWN1bHR5LCBhcyBpdCB3YXMgYSBxdWVlci0NCitzaGFwZWQgbGl0dGxlIGNyZWF0dXJlLCBhbmQgaGVsZCBvdXQgaXRzIGFybXMgYW5kIGxlZ3MgaW4gYWxsDQorZGlyZWN0aW9ucywgYGp1c3QgbGlrZSBhIHN0YXItZmlzaCwnIHRob3VnaHQgQWxpY2UuICBUaGUgcG9vcg0KK2xpdHRsZSB0aGluZyB3YXMgc25vcnRpbmcgbGlrZSBhIHN0ZWFtLWVuZ2luZSB3aGVuIHNoZSBjYXVnaHQgaXQsDQorYW5kIGtlcHQgZG91YmxpbmcgaXRzZWxmIHVwIGFuZCBzdHJhaWdodGVuaW5nIGl0c2VsZiBvdXQgYWdhaW4sDQorc28gdGhhdCBhbHRvZ2V0aGVyLCBmb3IgdGhlIGZpcnN0IG1pbnV0ZSBvciB0d28sIGl0IHdhcyBhcyBtdWNoDQorYXMgc2hlIGNvdWxkIGRvIHRvIGhvbGQgaXQuDQorDQorICBBcyBzb29uIGFzIHNoZSBoYWQgbWFkZSBvdXQgdGhlIHByb3BlciB3YXkgb2YgbnVyc2luZyBpdCwNCisod2hpY2ggd2FzIHRvIHR3aXN0IGl0IHVwIGludG8gYSBzb3J0IG9mIGtub3QsIGFuZCB0aGVuIGtlZXANCit0aWdodCBob2xkIG9mIGl0cyByaWdodCBlYXIgYW5kIGxlZnQgZm9vdCwgc28gYXMgdG8gcHJldmVudCBpdHMNCit1bmRvaW5nIGl0c2VsZiwpIHNoZSBjYXJyaWVkIGl0IG91dCBpbnRvIHRoZSBvcGVuIGFpci4gIGBJRiBJDQorZG9uJ3QgdGFrZSB0aGlzIGNoaWxkIGF3YXkgd2l0aCBtZSwnIHRob3VnaHQgQWxpY2UsIGB0aGV5J3JlIHN1cmUNCit0byBraWxsIGl0IGluIGEgZGF5IG9yIHR3bzogIHdvdWxkbid0IGl0IGJlIG11cmRlciB0byBsZWF2ZSBpdA0KK2JlaGluZD8nICBTaGUgc2FpZCB0aGUgbGFzdCB3b3JkcyBvdXQgbG91ZCwgYW5kIHRoZSBsaXR0bGUgdGhpbmcNCitncnVudGVkIGluIHJlcGx5IChpdCBoYWQgbGVmdCBvZmYgc25lZXppbmcgYnkgdGhpcyB0aW1lKS4gIGBEb24ndA0KK2dydW50LCcgc2FpZCBBbGljZTsgYHRoYXQncyBub3QgYXQgYWxsIGEgcHJvcGVyIHdheSBvZiBleHByZXNzaW5nDQoreW91cnNlbGYuJw0KKw0KKyAgVGhlIGJhYnkgZ3J1bnRlZCBhZ2FpbiwgYW5kIEFsaWNlIGxvb2tlZCB2ZXJ5IGFueGlvdXNseSBpbnRvDQoraXRzIGZhY2UgdG8gc2VlIHdoYXQgd2FzIHRoZSBtYXR0ZXIgd2l0aCBpdC4gIFRoZXJlIGNvdWxkIGJlIG5vDQorZG91YnQgdGhhdCBpdCBoYWQgYSBWRVJZIHR1cm4tdXAgbm9zZSwgbXVjaCBtb3JlIGxpa2UgYSBzbm91dA0KK3RoYW4gYSByZWFsIG5vc2U7IGFsc28gaXRzIGV5ZXMgd2VyZSBnZXR0aW5nIGV4dHJlbWVseSBzbWFsbCBmb3INCithIGJhYnk6ICBhbHRvZ2V0aGVyIEFsaWNlIGRpZCBub3QgbGlrZSB0aGUgbG9vayBvZiB0aGUgdGhpbmcgYXQNCithbGwuICBgQnV0IHBlcmhhcHMgaXQgd2FzIG9ubHkgc29iYmluZywnIHNoZSB0aG91Z2h0LCBhbmQgbG9va2VkDQoraW50byBpdHMgZXllcyBhZ2FpbiwgdG8gc2VlIGlmIHRoZXJlIHdlcmUgYW55IHRlYXJzLg0KKw0KKyAgTm8sIHRoZXJlIHdlcmUgbm8gdGVhcnMuICBgSWYgeW91J3JlIGdvaW5nIHRvIHR1cm4gaW50byBhIHBpZywNCitteSBkZWFyLCcgc2FpZCBBbGljZSwgc2VyaW91c2x5LCBgSSdsbCBoYXZlIG5vdGhpbmcgbW9yZSB0byBkbw0KK3dpdGggeW91LiAgTWluZCBub3chJyAgVGhlIHBvb3IgbGl0dGxlIHRoaW5nIHNvYmJlZCBhZ2FpbiAob3INCitncnVudGVkLCBpdCB3YXMgaW1wb3NzaWJsZSB0byBzYXkgd2hpY2gpLCBhbmQgdGhleSB3ZW50IG9uIGZvcg0KK3NvbWUgd2hpbGUgaW4gc2lsZW5jZS4NCisNCisgIEFsaWNlIHdhcyBqdXN0IGJlZ2lubmluZyB0byB0aGluayB0byBoZXJzZWxmLCBgTm93LCB3aGF0IGFtIEkNCit0byBkbyB3aXRoIHRoaXMgY3JlYXR1cmUgd2hlbiBJIGdldCBpdCBob21lPycgd2hlbiBpdCBncnVudGVkDQorYWdhaW4sIHNvIHZpb2xlbnRseSwgdGhhdCBzaGUgbG9va2VkIGRvd24gaW50byBpdHMgZmFjZSBpbiBzb21lDQorYWxhcm0uICBUaGlzIHRpbWUgdGhlcmUgY291bGQgYmUgTk8gbWlzdGFrZSBhYm91dCBpdDogIGl0IHdhcw0KK25laXRoZXIgbW9yZSBub3IgbGVzcyB0aGFuIGEgcGlnLCBhbmQgc2hlIGZlbHQgdGhhdCBpdCB3b3VsZCBiZQ0KK3F1aXRlIGFic3VyZCBmb3IgaGVyIHRvIGNhcnJ5IGl0IGZ1cnRoZXIuDQorDQorICBTbyBzaGUgc2V0IHRoZSBsaXR0bGUgY3JlYXR1cmUgZG93biwgYW5kIGZlbHQgcXVpdGUgcmVsaWV2ZWQgdG8NCitzZWUgaXQgdHJvdCBhd2F5IHF1aWV0bHkgaW50byB0aGUgd29vZC4gIGBJZiBpdCBoYWQgZ3Jvd24gdXAsJw0KK3NoZSBzYWlkIHRvIGhlcnNlbGYsIGBpdCB3b3VsZCBoYXZlIG1hZGUgYSBkcmVhZGZ1bGx5IHVnbHkgY2hpbGQ6DQorYnV0IGl0IG1ha2VzIHJhdGhlciBhIGhhbmRzb21lIHBpZywgSSB0aGluay4nICBBbmQgc2hlIGJlZ2FuDQordGhpbmtpbmcgb3ZlciBvdGhlciBjaGlsZHJlbiBzaGUga25ldywgd2hvIG1pZ2h0IGRvIHZlcnkgd2VsbCBhcw0KK3BpZ3MsIGFuZCB3YXMganVzdCBzYXlpbmcgdG8gaGVyc2VsZiwgYGlmIG9uZSBvbmx5IGtuZXcgdGhlIHJpZ2h0DQord2F5IHRvIGNoYW5nZSB0aGVtLS0nIHdoZW4gc2hlIHdhcyBhIGxpdHRsZSBzdGFydGxlZCBieSBzZWVpbmcNCit0aGUgQ2hlc2hpcmUgQ2F0IHNpdHRpbmcgb24gYSBib3VnaCBvZiBhIHRyZWUgYSBmZXcgeWFyZHMgb2ZmLg0KKw0KKyAgVGhlIENhdCBvbmx5IGdyaW5uZWQgd2hlbiBpdCBzYXcgQWxpY2UuICBJdCBsb29rZWQgZ29vZC0NCituYXR1cmVkLCBzaGUgdGhvdWdodDogIHN0aWxsIGl0IGhhZCBWRVJZIGxvbmcgY2xhd3MgYW5kIGEgZ3JlYXQNCittYW55IHRlZXRoLCBzbyBzaGUgZmVsdCB0aGF0IGl0IG91Z2h0IHRvIGJlIHRyZWF0ZWQgd2l0aCByZXNwZWN0Lg0KKw0KKyAgYENoZXNoaXJlIFB1c3MsJyBzaGUgYmVnYW4sIHJhdGhlciB0aW1pZGx5LCBhcyBzaGUgZGlkIG5vdCBhdA0KK2FsbCBrbm93IHdoZXRoZXIgaXQgd291bGQgbGlrZSB0aGUgbmFtZTogIGhvd2V2ZXIsIGl0IG9ubHkNCitncmlubmVkIGEgbGl0dGxlIHdpZGVyLiAgYENvbWUsIGl0J3MgcGxlYXNlZCBzbyBmYXIsJyB0aG91Z2h0DQorQWxpY2UsIGFuZCBzaGUgd2VudCBvbi4gIGBXb3VsZCB5b3UgdGVsbCBtZSwgcGxlYXNlLCB3aGljaCB3YXkgSQ0KK291Z2h0IHRvIGdvIGZyb20gaGVyZT8nDQorDQorICBgVGhhdCBkZXBlbmRzIGEgZ29vZCBkZWFsIG9uIHdoZXJlIHlvdSB3YW50IHRvIGdldCB0bywnIHNhaWQNCit0aGUgQ2F0Lg0KKw0KKyAgYEkgZG9uJ3QgbXVjaCBjYXJlIHdoZXJlLS0nIHNhaWQgQWxpY2UuDQorDQorICBgVGhlbiBpdCBkb2Vzbid0IG1hdHRlciB3aGljaCB3YXkgeW91IGdvLCcgc2FpZCB0aGUgQ2F0Lg0KKw0KKyAgYC0tc28gbG9uZyBhcyBJIGdldCBTT01FV0hFUkUsJyBBbGljZSBhZGRlZCBhcyBhbiBleHBsYW5hdGlvbi4NCisNCisgIGBPaCwgeW91J3JlIHN1cmUgdG8gZG8gdGhhdCwnIHNhaWQgdGhlIENhdCwgYGlmIHlvdSBvbmx5IHdhbGsNCitsb25nIGVub3VnaC4nDQorDQorICBBbGljZSBmZWx0IHRoYXQgdGhpcyBjb3VsZCBub3QgYmUgZGVuaWVkLCBzbyBzaGUgdHJpZWQgYW5vdGhlcg0KK3F1ZXN0aW9uLiAgYFdoYXQgc29ydCBvZiBwZW9wbGUgbGl2ZSBhYm91dCBoZXJlPycNCisNCisgIGBJbiBUSEFUIGRpcmVjdGlvbiwnIHRoZSBDYXQgc2FpZCwgd2F2aW5nIGl0cyByaWdodCBwYXcgcm91bmQsDQorYGxpdmVzIGEgSGF0dGVyOiAgYW5kIGluIFRIQVQgZGlyZWN0aW9uLCcgd2F2aW5nIHRoZSBvdGhlciBwYXcsDQorYGxpdmVzIGEgTWFyY2ggSGFyZS4gIFZpc2l0IGVpdGhlciB5b3UgbGlrZTogIHRoZXkncmUgYm90aCBtYWQuJw0KKw0KKyAgYEJ1dCBJIGRvbid0IHdhbnQgdG8gZ28gYW1vbmcgbWFkIHBlb3BsZSwnIEFsaWNlIHJlbWFya2VkLg0KKw0KKyAgYE9oLCB5b3UgY2FuJ3QgaGVscCB0aGF0LCcgc2FpZCB0aGUgQ2F0OiAgYHdlJ3JlIGFsbCBtYWQgaGVyZS4NCitJJ20gbWFkLiAgWW91J3JlIG1hZC4nDQorDQorICBgSG93IGRvIHlvdSBrbm93IEknbSBtYWQ/JyBzYWlkIEFsaWNlLg0KKw0KKyAgYFlvdSBtdXN0IGJlLCcgc2FpZCB0aGUgQ2F0LCBgb3IgeW91IHdvdWxkbid0IGhhdmUgY29tZSBoZXJlLicNCisNCisgIEFsaWNlIGRpZG4ndCB0aGluayB0aGF0IHByb3ZlZCBpdCBhdCBhbGw7IGhvd2V2ZXIsIHNoZSB3ZW50IG9uDQorYEFuZCBob3cgZG8geW91IGtub3cgdGhhdCB5b3UncmUgbWFkPycNCisNCisgIGBUbyBiZWdpbiB3aXRoLCcgc2FpZCB0aGUgQ2F0LCBgYSBkb2cncyBub3QgbWFkLiAgWW91IGdyYW50DQordGhhdD8nDQorDQorICBgSSBzdXBwb3NlIHNvLCcgc2FpZCBBbGljZS4NCisNCisgIGBXZWxsLCB0aGVuLCcgdGhlIENhdCB3ZW50IG9uLCBgeW91IHNlZSwgYSBkb2cgZ3Jvd2xzIHdoZW4gaXQncw0KK2FuZ3J5LCBhbmQgd2FncyBpdHMgdGFpbCB3aGVuIGl0J3MgcGxlYXNlZC4gIE5vdyBJIGdyb3dsIHdoZW4gSSdtDQorcGxlYXNlZCwgYW5kIHdhZyBteSB0YWlsIHdoZW4gSSdtIGFuZ3J5LiAgVGhlcmVmb3JlIEknbSBtYWQuJw0KKw0KKyAgYEkgY2FsbCBpdCBwdXJyaW5nLCBub3QgZ3Jvd2xpbmcsJyBzYWlkIEFsaWNlLg0KKw0KKyAgYENhbGwgaXQgd2hhdCB5b3UgbGlrZSwnIHNhaWQgdGhlIENhdC4gIGBEbyB5b3UgcGxheSBjcm9xdWV0DQord2l0aCB0aGUgUXVlZW4gdG8tZGF5PycNCisNCisgIGBJIHNob3VsZCBsaWtlIGl0IHZlcnkgbXVjaCwnIHNhaWQgQWxpY2UsIGBidXQgSSBoYXZlbid0IGJlZW4NCitpbnZpdGVkIHlldC4nDQorDQorICBgWW91J2xsIHNlZSBtZSB0aGVyZSwnIHNhaWQgdGhlIENhdCwgYW5kIHZhbmlzaGVkLg0KKw0KKyAgQWxpY2Ugd2FzIG5vdCBtdWNoIHN1cnByaXNlZCBhdCB0aGlzLCBzaGUgd2FzIGdldHRpbmcgc28gdXNlZA0KK3RvIHF1ZWVyIHRoaW5ncyBoYXBwZW5pbmcuICBXaGlsZSBzaGUgd2FzIGxvb2tpbmcgYXQgdGhlIHBsYWNlDQord2hlcmUgaXQgaGFkIGJlZW4sIGl0IHN1ZGRlbmx5IGFwcGVhcmVkIGFnYWluLg0KKw0KKyAgYEJ5LXRoZS1ieWUsIHdoYXQgYmVjYW1lIG9mIHRoZSBiYWJ5Pycgc2FpZCB0aGUgQ2F0LiAgYEknZA0KK25lYXJseSBmb3Jnb3R0ZW4gdG8gYXNrLicNCisNCisgIGBJdCB0dXJuZWQgaW50byBhIHBpZywnIEFsaWNlIHF1aWV0bHkgc2FpZCwganVzdCBhcyBpZiBpdCBoYWQNCitjb21lIGJhY2sgaW4gYSBuYXR1cmFsIHdheS4NCisNCisgIGBJIHRob3VnaHQgaXQgd291bGQsJyBzYWlkIHRoZSBDYXQsIGFuZCB2YW5pc2hlZCBhZ2Fpbi4NCisNCisgIEFsaWNlIHdhaXRlZCBhIGxpdHRsZSwgaGFsZiBleHBlY3RpbmcgdG8gc2VlIGl0IGFnYWluLCBidXQgaXQNCitkaWQgbm90IGFwcGVhciwgYW5kIGFmdGVyIGEgbWludXRlIG9yIHR3byBzaGUgd2Fsa2VkIG9uIGluIHRoZQ0KK2RpcmVjdGlvbiBpbiB3aGljaCB0aGUgTWFyY2ggSGFyZSB3YXMgc2FpZCB0byBsaXZlLiAgYEkndmUgc2Vlbg0KK2hhdHRlcnMgYmVmb3JlLCcgc2hlIHNhaWQgdG8gaGVyc2VsZjsgYHRoZSBNYXJjaCBIYXJlIHdpbGwgYmUNCittdWNoIHRoZSBtb3N0IGludGVyZXN0aW5nLCBhbmQgcGVyaGFwcyBhcyB0aGlzIGlzIE1heSBpdCB3b24ndCBiZQ0KK3JhdmluZyBtYWQtLWF0IGxlYXN0IG5vdCBzbyBtYWQgYXMgaXQgd2FzIGluIE1hcmNoLicgIEFzIHNoZSBzYWlkDQordGhpcywgc2hlIGxvb2tlZCB1cCwgYW5kIHRoZXJlIHdhcyB0aGUgQ2F0IGFnYWluLCBzaXR0aW5nIG9uIGENCiticmFuY2ggb2YgYSB0cmVlLg0KKw0KKyAgYERpZCB5b3Ugc2F5IHBpZywgb3IgZmlnPycgc2FpZCB0aGUgQ2F0Lg0KKw0KKyAgYEkgc2FpZCBwaWcsJyByZXBsaWVkIEFsaWNlOyBgYW5kIEkgd2lzaCB5b3Ugd291bGRuJ3Qga2VlcA0KK2FwcGVhcmluZyBhbmQgdmFuaXNoaW5nIHNvIHN1ZGRlbmx5OiAgeW91IG1ha2Ugb25lIHF1aXRlIGdpZGR5LicNCisNCisgIGBBbGwgcmlnaHQsJyBzYWlkIHRoZSBDYXQ7IGFuZCB0aGlzIHRpbWUgaXQgdmFuaXNoZWQgcXVpdGUNCitzbG93bHksIGJlZ2lubmluZyB3aXRoIHRoZSBlbmQgb2YgdGhlIHRhaWwsIGFuZCBlbmRpbmcgd2l0aCB0aGUNCitncmluLCB3aGljaCByZW1haW5lZCBzb21lIHRpbWUgYWZ0ZXIgdGhlIHJlc3Qgb2YgaXQgaGFkIGdvbmUuDQorDQorICBgV2VsbCEgIEkndmUgb2Z0ZW4gc2VlbiBhIGNhdCB3aXRob3V0IGEgZ3JpbiwnIHRob3VnaHQgQWxpY2U7DQorYGJ1dCBhIGdyaW4gd2l0aG91dCBhIGNhdCEgIEl0J3MgdGhlIG1vc3QgY3VyaW91cyB0aGluZyBJIGV2ZXINCitzYXkgaW4gbXkgbGlmZSEnDQorDQorICBTaGUgaGFkIG5vdCBnb25lIG11Y2ggZmFydGhlciBiZWZvcmUgc2hlIGNhbWUgaW4gc2lnaHQgb2YgdGhlDQoraG91c2Ugb2YgdGhlIE1hcmNoIEhhcmU6ICBzaGUgdGhvdWdodCBpdCBtdXN0IGJlIHRoZSByaWdodCBob3VzZSwNCitiZWNhdXNlIHRoZSBjaGltbmV5cyB3ZXJlIHNoYXBlZCBsaWtlIGVhcnMgYW5kIHRoZSByb29mIHdhcw0KK3RoYXRjaGVkIHdpdGggZnVyLiAgSXQgd2FzIHNvIGxhcmdlIGEgaG91c2UsIHRoYXQgc2hlIGRpZCBub3QNCitsaWtlIHRvIGdvIG5lYXJlciB0aWxsIHNoZSBoYWQgbmliYmxlZCBzb21lIG1vcmUgb2YgdGhlIGxlZnRoYW5kDQorYml0IG9mIG11c2hyb29tLCBhbmQgcmFpc2VkIGhlcnNlbGYgdG8gYWJvdXQgdHdvIGZlZXQgaGlnaDogIGV2ZW4NCit0aGVuIHNoZSB3YWxrZWQgdXAgdG93YXJkcyBpdCByYXRoZXIgdGltaWRseSwgc2F5aW5nIHRvIGhlcnNlbGYNCitgU3VwcG9zZSBpdCBzaG91bGQgYmUgcmF2aW5nIG1hZCBhZnRlciBhbGwhICBJIGFsbW9zdCB3aXNoIEknZA0KK2dvbmUgdG8gc2VlIHRoZSBIYXR0ZXIgaW5zdGVhZCEnDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBUFRFUiBWSUkNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgQSBNYWQgVGVhLVBhcnR5DQorDQorDQorICBUaGVyZSB3YXMgYSB0YWJsZSBzZXQgb3V0IHVuZGVyIGEgdHJlZSBpbiBmcm9udCBvZiB0aGUgaG91c2UsDQorYW5kIHRoZSBNYXJjaCBIYXJlIGFuZCB0aGUgSGF0dGVyIHdlcmUgaGF2aW5nIHRlYSBhdCBpdDogIGENCitEb3Jtb3VzZSB3YXMgc2l0dGluZyBiZXR3ZWVuIHRoZW0sIGZhc3QgYXNsZWVwLCBhbmQgdGhlIG90aGVyIHR3bw0KK3dlcmUgdXNpbmcgaXQgYXMgYSBjdXNoaW9uLCByZXN0aW5nIHRoZWlyIGVsYm93cyBvbiBpdCwgYW5kIHRoZQ0KK3RhbGtpbmcgb3ZlciBpdHMgaGVhZC4gIGBWZXJ5IHVuY29tZm9ydGFibGUgZm9yIHRoZSBEb3Jtb3VzZSwnDQordGhvdWdodCBBbGljZTsgYG9ubHksIGFzIGl0J3MgYXNsZWVwLCBJIHN1cHBvc2UgaXQgZG9lc24ndCBtaW5kLicNCisNCisgIFRoZSB0YWJsZSB3YXMgYSBsYXJnZSBvbmUsIGJ1dCB0aGUgdGhyZWUgd2VyZSBhbGwgY3Jvd2RlZA0KK3RvZ2V0aGVyIGF0IG9uZSBjb3JuZXIgb2YgaXQ6ICBgTm8gcm9vbSEgIE5vIHJvb20hJyB0aGV5IGNyaWVkDQorb3V0IHdoZW4gdGhleSBzYXcgQWxpY2UgY29taW5nLiAgYFRoZXJlJ3MgUExFTlRZIG9mIHJvb20hJyBzYWlkDQorQWxpY2UgaW5kaWduYW50bHksIGFuZCBzaGUgc2F0IGRvd24gaW4gYSBsYXJnZSBhcm0tY2hhaXIgYXQgb25lDQorZW5kIG9mIHRoZSB0YWJsZS4NCisNCisgIGBIYXZlIHNvbWUgd2luZSwnIHRoZSBNYXJjaCBIYXJlIHNhaWQgaW4gYW4gZW5jb3VyYWdpbmcgdG9uZS4NCisNCisgIEFsaWNlIGxvb2tlZCBhbGwgcm91bmQgdGhlIHRhYmxlLCBidXQgdGhlcmUgd2FzIG5vdGhpbmcgb24gaXQNCitidXQgdGVhLiAgYEkgZG9uJ3Qgc2VlIGFueSB3aW5lLCcgc2hlIHJlbWFya2VkLg0KKw0KKyAgYFRoZXJlIGlzbid0IGFueSwnIHNhaWQgdGhlIE1hcmNoIEhhcmUuDQorDQorICBgVGhlbiBpdCB3YXNuJ3QgdmVyeSBjaXZpbCBvZiB5b3UgdG8gb2ZmZXIgaXQsJyBzYWlkIEFsaWNlDQorYW5ncmlseS4NCisNCisgIGBJdCB3YXNuJ3QgdmVyeSBjaXZpbCBvZiB5b3UgdG8gc2l0IGRvd24gd2l0aG91dCBiZWluZw0KK2ludml0ZWQsJyBzYWlkIHRoZSBNYXJjaCBIYXJlLg0KKw0KKyAgYEkgZGlkbid0IGtub3cgaXQgd2FzIFlPVVIgdGFibGUsJyBzYWlkIEFsaWNlOyBgaXQncyBsYWlkIGZvciBhDQorZ3JlYXQgbWFueSBtb3JlIHRoYW4gdGhyZWUuJw0KKw0KKyAgYFlvdXIgaGFpciB3YW50cyBjdXR0aW5nLCcgc2FpZCB0aGUgSGF0dGVyLiAgSGUgaGFkIGJlZW4NCitsb29raW5nIGF0IEFsaWNlIGZvciBzb21lIHRpbWUgd2l0aCBncmVhdCBjdXJpb3NpdHksIGFuZCB0aGlzIHdhcw0KK2hpcyBmaXJzdCBzcGVlY2guDQorDQorICBgWW91IHNob3VsZCBsZWFybiBub3QgdG8gbWFrZSBwZXJzb25hbCByZW1hcmtzLCcgQWxpY2Ugc2FpZA0KK3dpdGggc29tZSBzZXZlcml0eTsgYGl0J3MgdmVyeSBydWRlLicNCisNCisgIFRoZSBIYXR0ZXIgb3BlbmVkIGhpcyBleWVzIHZlcnkgd2lkZSBvbiBoZWFyaW5nIHRoaXM7IGJ1dCBhbGwNCitoZSBTQUlEIHdhcywgYFdoeSBpcyBhIHJhdmVuIGxpa2UgYSB3cml0aW5nLWRlc2s/Jw0KKw0KKyAgYENvbWUsIHdlIHNoYWxsIGhhdmUgc29tZSBmdW4gbm93IScgdGhvdWdodCBBbGljZS4gIGBJJ20gZ2xhZA0KK3RoZXkndmUgYmVndW4gYXNraW5nIHJpZGRsZXMuLS1JIGJlbGlldmUgSSBjYW4gZ3Vlc3MgdGhhdCwnIHNoZQ0KK2FkZGVkIGFsb3VkLg0KKw0KKyAgYERvIHlvdSBtZWFuIHRoYXQgeW91IHRoaW5rIHlvdSBjYW4gZmluZCBvdXQgdGhlIGFuc3dlciB0byBpdD8nDQorc2FpZCB0aGUgTWFyY2ggSGFyZS4NCisNCisgIGBFeGFjdGx5IHNvLCcgc2FpZCBBbGljZS4NCisNCisgIGBUaGVuIHlvdSBzaG91bGQgc2F5IHdoYXQgeW91IG1lYW4sJyB0aGUgTWFyY2ggSGFyZSB3ZW50IG9uLg0KKw0KKyAgYEkgZG8sJyBBbGljZSBoYXN0aWx5IHJlcGxpZWQ7IGBhdCBsZWFzdC0tYXQgbGVhc3QgSSBtZWFuIHdoYXQNCitJIHNheS0tdGhhdCdzIHRoZSBzYW1lIHRoaW5nLCB5b3Uga25vdy4nDQorDQorICBgTm90IHRoZSBzYW1lIHRoaW5nIGEgYml0IScgc2FpZCB0aGUgSGF0dGVyLiAgYFlvdSBtaWdodCBqdXN0DQorYXMgd2VsbCBzYXkgdGhhdCAiSSBzZWUgd2hhdCBJIGVhdCIgaXMgdGhlIHNhbWUgdGhpbmcgYXMgIkkgZWF0DQord2hhdCBJIHNlZSIhJw0KKw0KKyAgYFlvdSBtaWdodCBqdXN0IGFzIHdlbGwgc2F5LCcgYWRkZWQgdGhlIE1hcmNoIEhhcmUsIGB0aGF0ICJJDQorbGlrZSB3aGF0IEkgZ2V0IiBpcyB0aGUgc2FtZSB0aGluZyBhcyAiSSBnZXQgd2hhdCBJIGxpa2UiIScNCisNCisgIGBZb3UgbWlnaHQganVzdCBhcyB3ZWxsIHNheSwnIGFkZGVkIHRoZSBEb3Jtb3VzZSwgd2hvIHNlZW1lZCB0bw0KK2JlIHRhbGtpbmcgaW4gaGlzIHNsZWVwLCBgdGhhdCAiSSBicmVhdGhlIHdoZW4gSSBzbGVlcCIgaXMgdGhlDQorc2FtZSB0aGluZyBhcyAiSSBzbGVlcCB3aGVuIEkgYnJlYXRoZSIhJw0KKw0KKyAgYEl0IElTIHRoZSBzYW1lIHRoaW5nIHdpdGggeW91LCcgc2FpZCB0aGUgSGF0dGVyLCBhbmQgaGVyZSB0aGUNCitjb252ZXJzYXRpb24gZHJvcHBlZCwgYW5kIHRoZSBwYXJ0eSBzYXQgc2lsZW50IGZvciBhIG1pbnV0ZSwNCit3aGlsZSBBbGljZSB0aG91Z2h0IG92ZXIgYWxsIHNoZSBjb3VsZCByZW1lbWJlciBhYm91dCByYXZlbnMgYW5kDQord3JpdGluZy1kZXNrcywgd2hpY2ggd2Fzbid0IG11Y2guDQorDQorICBUaGUgSGF0dGVyIHdhcyB0aGUgZmlyc3QgdG8gYnJlYWsgdGhlIHNpbGVuY2UuICBgV2hhdCBkYXkgb2YNCit0aGUgbW9udGggaXMgaXQ/JyBoZSBzYWlkLCB0dXJuaW5nIHRvIEFsaWNlOiAgaGUgaGFkIHRha2VuIGhpcw0KK3dhdGNoIG91dCBvZiBoaXMgcG9ja2V0LCBhbmQgd2FzIGxvb2tpbmcgYXQgaXQgdW5lYXNpbHksIHNoYWtpbmcNCitpdCBldmVyeSBub3cgYW5kIHRoZW4sIGFuZCBob2xkaW5nIGl0IHRvIGhpcyBlYXIuDQorDQorICBBbGljZSBjb25zaWRlcmVkIGEgbGl0dGxlLCBhbmQgdGhlbiBzYWlkIGBUaGUgZm91cnRoLicNCisNCisgIGBUd28gZGF5cyB3cm9uZyEnIHNpZ2hlZCB0aGUgSGF0dGVyLiAgYEkgdG9sZCB5b3UgYnV0dGVyDQord291bGRuJ3Qgc3VpdCB0aGUgd29ya3MhJyBoZSBhZGRlZCBsb29raW5nIGFuZ3JpbHkgYXQgdGhlIE1hcmNoDQorSGFyZS4NCisNCisgIGBJdCB3YXMgdGhlIEJFU1QgYnV0dGVyLCcgdGhlIE1hcmNoIEhhcmUgbWVla2x5IHJlcGxpZWQuDQorDQorICBgWWVzLCBidXQgc29tZSBjcnVtYnMgbXVzdCBoYXZlIGdvdCBpbiBhcyB3ZWxsLCcgdGhlIEhhdHRlcg0KK2dydW1ibGVkOiAgYHlvdSBzaG91bGRuJ3QgaGF2ZSBwdXQgaXQgaW4gd2l0aCB0aGUgYnJlYWQta25pZmUuJw0KKw0KKyAgVGhlIE1hcmNoIEhhcmUgdG9vayB0aGUgd2F0Y2ggYW5kIGxvb2tlZCBhdCBpdCBnbG9vbWlseTogIHRoZW4NCitoZSBkaXBwZWQgaXQgaW50byBoaXMgY3VwIG9mIHRlYSwgYW5kIGxvb2tlZCBhdCBpdCBhZ2FpbjogIGJ1dCBoZQ0KK2NvdWxkIHRoaW5rIG9mIG5vdGhpbmcgYmV0dGVyIHRvIHNheSB0aGFuIGhpcyBmaXJzdCByZW1hcmssIGBJdA0KK3dhcyB0aGUgQkVTVCBidXR0ZXIsIHlvdSBrbm93LicNCisNCisgIEFsaWNlIGhhZCBiZWVuIGxvb2tpbmcgb3ZlciBoaXMgc2hvdWxkZXIgd2l0aCBzb21lIGN1cmlvc2l0eS4NCitgV2hhdCBhIGZ1bm55IHdhdGNoIScgc2hlIHJlbWFya2VkLiAgYEl0IHRlbGxzIHRoZSBkYXkgb2YgdGhlDQorbW9udGgsIGFuZCBkb2Vzbid0IHRlbGwgd2hhdCBvJ2Nsb2NrIGl0IGlzIScNCisNCisgIGBXaHkgc2hvdWxkIGl0PycgbXV0dGVyZWQgdGhlIEhhdHRlci4gIGBEb2VzIFlPVVIgd2F0Y2ggdGVsbA0KK3lvdSB3aGF0IHllYXIgaXQgaXM/Jw0KKw0KKyAgYE9mIGNvdXJzZSBub3QsJyBBbGljZSByZXBsaWVkIHZlcnkgcmVhZGlseTogIGBidXQgdGhhdCdzDQorYmVjYXVzZSBpdCBzdGF5cyB0aGUgc2FtZSB5ZWFyIGZvciBzdWNoIGEgbG9uZyB0aW1lIHRvZ2V0aGVyLicNCisNCisgIGBXaGljaCBpcyBqdXN0IHRoZSBjYXNlIHdpdGggTUlORSwnIHNhaWQgdGhlIEhhdHRlci4NCisNCisgIEFsaWNlIGZlbHQgZHJlYWRmdWxseSBwdXp6bGVkLiAgVGhlIEhhdHRlcidzIHJlbWFyayBzZWVtZWQgdG8NCitoYXZlIG5vIHNvcnQgb2YgbWVhbmluZyBpbiBpdCwgYW5kIHlldCBpdCB3YXMgY2VydGFpbmx5IEVuZ2xpc2guDQorYEkgZG9uJ3QgcXVpdGUgdW5kZXJzdGFuZCB5b3UsJyBzaGUgc2FpZCwgYXMgcG9saXRlbHkgYXMgc2hlDQorY291bGQuDQorDQorICBgVGhlIERvcm1vdXNlIGlzIGFzbGVlcCBhZ2FpbiwnIHNhaWQgdGhlIEhhdHRlciwgYW5kIGhlIHBvdXJlZA0KK2EgbGl0dGxlIGhvdCB0ZWEgdXBvbiBpdHMgbm9zZS4NCisNCisgIFRoZSBEb3Jtb3VzZSBzaG9vayBpdHMgaGVhZCBpbXBhdGllbnRseSwgYW5kIHNhaWQsIHdpdGhvdXQNCitvcGVuaW5nIGl0cyBleWVzLCBgT2YgY291cnNlLCBvZiBjb3Vyc2U7IGp1c3Qgd2hhdCBJIHdhcyBnb2luZyB0bw0KK3JlbWFyayBteXNlbGYuJw0KKw0KKyAgYEhhdmUgeW91IGd1ZXNzZWQgdGhlIHJpZGRsZSB5ZXQ/JyB0aGUgSGF0dGVyIHNhaWQsIHR1cm5pbmcgdG8NCitBbGljZSBhZ2Fpbi4NCisNCisgIGBObywgSSBnaXZlIGl0IHVwLCcgQWxpY2UgcmVwbGllZDogIGB3aGF0J3MgdGhlIGFuc3dlcj8nDQorDQorICBgSSBoYXZlbid0IHRoZSBzbGlnaHRlc3QgaWRlYSwnIHNhaWQgdGhlIEhhdHRlci4NCisNCisgIGBOb3IgSSwnIHNhaWQgdGhlIE1hcmNoIEhhcmUuDQorDQorICBBbGljZSBzaWdoZWQgd2VhcmlseS4gIGBJIHRoaW5rIHlvdSBtaWdodCBkbyBzb21ldGhpbmcgYmV0dGVyDQord2l0aCB0aGUgdGltZSwnIHNoZSBzYWlkLCBgdGhhbiB3YXN0ZSBpdCBpbiBhc2tpbmcgcmlkZGxlcyB0aGF0DQoraGF2ZSBubyBhbnN3ZXJzLicNCisNCisgIGBJZiB5b3Uga25ldyBUaW1lIGFzIHdlbGwgYXMgSSBkbywnIHNhaWQgdGhlIEhhdHRlciwgYHlvdQ0KK3dvdWxkbid0IHRhbGsgYWJvdXQgd2FzdGluZyBJVC4gIEl0J3MgSElNLicNCisNCisgIGBJIGRvbid0IGtub3cgd2hhdCB5b3UgbWVhbiwnIHNhaWQgQWxpY2UuDQorDQorICBgT2YgY291cnNlIHlvdSBkb24ndCEnIHRoZSBIYXR0ZXIgc2FpZCwgdG9zc2luZyBoaXMgaGVhZA0KK2NvbnRlbXB0dW91c2x5LiAgYEkgZGFyZSBzYXkgeW91IG5ldmVyIGV2ZW4gc3Bva2UgdG8gVGltZSEnDQorDQorICBgUGVyaGFwcyBub3QsJyBBbGljZSBjYXV0aW91c2x5IHJlcGxpZWQ6ICBgYnV0IEkga25vdyBJIGhhdmUgdG8NCitiZWF0IHRpbWUgd2hlbiBJIGxlYXJuIG11c2ljLicNCisNCisgIGBBaCEgdGhhdCBhY2NvdW50cyBmb3IgaXQsJyBzYWlkIHRoZSBIYXR0ZXIuICBgSGUgd29uJ3Qgc3RhbmQNCitiZWF0aW5nLiAgTm93LCBpZiB5b3Ugb25seSBrZXB0IG9uIGdvb2QgdGVybXMgd2l0aCBoaW0sIGhlJ2QgZG8NCithbG1vc3QgYW55dGhpbmcgeW91IGxpa2VkIHdpdGggdGhlIGNsb2NrLiAgRm9yIGluc3RhbmNlLCBzdXBwb3NlDQoraXQgd2VyZSBuaW5lIG8nY2xvY2sgaW4gdGhlIG1vcm5pbmcsIGp1c3QgdGltZSB0byBiZWdpbiBsZXNzb25zOg0KK3lvdSdkIG9ubHkgaGF2ZSB0byB3aGlzcGVyIGEgaGludCB0byBUaW1lLCBhbmQgcm91bmQgZ29lcyB0aGUNCitjbG9jayBpbiBhIHR3aW5rbGluZyEgIEhhbGYtcGFzdCBvbmUsIHRpbWUgZm9yIGRpbm5lciEnDQorDQorICAoYEkgb25seSB3aXNoIGl0IHdhcywnIHRoZSBNYXJjaCBIYXJlIHNhaWQgdG8gaXRzZWxmIGluIGENCit3aGlzcGVyLikNCisNCisgIGBUaGF0IHdvdWxkIGJlIGdyYW5kLCBjZXJ0YWlubHksJyBzYWlkIEFsaWNlIHRob3VnaHRmdWxseToNCitgYnV0IHRoZW4tLUkgc2hvdWxkbid0IGJlIGh1bmdyeSBmb3IgaXQsIHlvdSBrbm93LicNCisNCisgIGBOb3QgYXQgZmlyc3QsIHBlcmhhcHMsJyBzYWlkIHRoZSBIYXR0ZXI6ICBgYnV0IHlvdSBjb3VsZCBrZWVwDQoraXQgdG8gaGFsZi1wYXN0IG9uZSBhcyBsb25nIGFzIHlvdSBsaWtlZC4nDQorDQorICBgSXMgdGhhdCB0aGUgd2F5IFlPVSBtYW5hZ2U/JyBBbGljZSBhc2tlZC4NCisNCisgIFRoZSBIYXR0ZXIgc2hvb2sgaGlzIGhlYWQgbW91cm5mdWxseS4gIGBOb3QgSSEnIGhlIHJlcGxpZWQuDQorYFdlIHF1YXJyZWxsZWQgbGFzdCBNYXJjaC0tanVzdCBiZWZvcmUgSEUgd2VudCBtYWQsIHlvdSBrbm93LS0nDQorKHBvaW50aW5nIHdpdGggaGlzIHRlYSBzcG9vbiBhdCB0aGUgTWFyY2ggSGFyZSwpIGAtLWl0IHdhcyBhdCB0aGUNCitncmVhdCBjb25jZXJ0IGdpdmVuIGJ5IHRoZSBRdWVlbiBvZiBIZWFydHMsIGFuZCBJIGhhZCB0byBzaW5nDQorDQorICAgICAgICAgICAgIlR3aW5rbGUsIHR3aW5rbGUsIGxpdHRsZSBiYXQhDQorICAgICAgICAgICAgSG93IEkgd29uZGVyIHdoYXQgeW91J3JlIGF0ISINCisNCitZb3Uga25vdyB0aGUgc29uZywgcGVyaGFwcz8nDQorDQorICBgSSd2ZSBoZWFyZCBzb21ldGhpbmcgbGlrZSBpdCwnIHNhaWQgQWxpY2UuDQorDQorICBgSXQgZ29lcyBvbiwgeW91IGtub3csJyB0aGUgSGF0dGVyIGNvbnRpbnVlZCwgYGluIHRoaXMgd2F5Oi0tDQorDQorICAgICAgICAgICAgIlVwIGFib3ZlIHRoZSB3b3JsZCB5b3UgZmx5LA0KKyAgICAgICAgICAgIExpa2UgYSB0ZWEtdHJheSBpbiB0aGUgc2t5Lg0KKyAgICAgICAgICAgICAgICAgICAgVHdpbmtsZSwgdHdpbmtsZS0tIicNCisNCitIZXJlIHRoZSBEb3Jtb3VzZSBzaG9vayBpdHNlbGYsIGFuZCBiZWdhbiBzaW5naW5nIGluIGl0cyBzbGVlcA0KK2BUd2lua2xlLCB0d2lua2xlLCB0d2lua2xlLCB0d2lua2xlLS0nIGFuZCB3ZW50IG9uIHNvIGxvbmcgdGhhdA0KK3RoZXkgaGFkIHRvIHBpbmNoIGl0IHRvIG1ha2UgaXQgc3RvcC4NCisNCisgIGBXZWxsLCBJJ2QgaGFyZGx5IGZpbmlzaGVkIHRoZSBmaXJzdCB2ZXJzZSwnIHNhaWQgdGhlIEhhdHRlciwNCitgd2hlbiB0aGUgUXVlZW4ganVtcGVkIHVwIGFuZCBiYXdsZWQgb3V0LCAiSGUncyBtdXJkZXJpbmcgdGhlDQordGltZSEgIE9mZiB3aXRoIGhpcyBoZWFkISInDQorDQorICBgSG93IGRyZWFkZnVsbHkgc2F2YWdlIScgZXhjbGFpbWVkIEFsaWNlLg0KKw0KKyAgYEFuZCBldmVyIHNpbmNlIHRoYXQsJyB0aGUgSGF0dGVyIHdlbnQgb24gaW4gYSBtb3VybmZ1bCB0b25lLA0KK2BoZSB3b24ndCBkbyBhIHRoaW5nIEkgYXNrISAgSXQncyBhbHdheXMgc2l4IG8nY2xvY2sgbm93LicNCisNCisgIEEgYnJpZ2h0IGlkZWEgY2FtZSBpbnRvIEFsaWNlJ3MgaGVhZC4gIGBJcyB0aGF0IHRoZSByZWFzb24gc28NCittYW55IHRlYS10aGluZ3MgYXJlIHB1dCBvdXQgaGVyZT8nIHNoZSBhc2tlZC4NCisNCisgIGBZZXMsIHRoYXQncyBpdCwnIHNhaWQgdGhlIEhhdHRlciB3aXRoIGEgc2lnaDogIGBpdCdzIGFsd2F5cw0KK3RlYS10aW1lLCBhbmQgd2UndmUgbm8gdGltZSB0byB3YXNoIHRoZSB0aGluZ3MgYmV0d2VlbiB3aGlsZXMuJw0KKw0KKyAgYFRoZW4geW91IGtlZXAgbW92aW5nIHJvdW5kLCBJIHN1cHBvc2U/JyBzYWlkIEFsaWNlLg0KKw0KKyAgYEV4YWN0bHkgc28sJyBzYWlkIHRoZSBIYXR0ZXI6ICBgYXMgdGhlIHRoaW5ncyBnZXQgdXNlZCB1cC4nDQorDQorICBgQnV0IHdoYXQgaGFwcGVucyB3aGVuIHlvdSBjb21lIHRvIHRoZSBiZWdpbm5pbmcgYWdhaW4/JyBBbGljZQ0KK3ZlbnR1cmVkIHRvIGFzay4NCisNCisgIGBTdXBwb3NlIHdlIGNoYW5nZSB0aGUgc3ViamVjdCwnIHRoZSBNYXJjaCBIYXJlIGludGVycnVwdGVkLA0KK3lhd25pbmcuICBgSSdtIGdldHRpbmcgdGlyZWQgb2YgdGhpcy4gIEkgdm90ZSB0aGUgeW91bmcgbGFkeQ0KK3RlbGxzIHVzIGEgc3RvcnkuJw0KKw0KKyAgYEknbSBhZnJhaWQgSSBkb24ndCBrbm93IG9uZSwnIHNhaWQgQWxpY2UsIHJhdGhlciBhbGFybWVkIGF0DQordGhlIHByb3Bvc2FsLg0KKw0KKyAgYFRoZW4gdGhlIERvcm1vdXNlIHNoYWxsIScgdGhleSBib3RoIGNyaWVkLiAgYFdha2UgdXAsDQorRG9ybW91c2UhJyAgQW5kIHRoZXkgcGluY2hlZCBpdCBvbiBib3RoIHNpZGVzIGF0IG9uY2UuDQorDQorICBUaGUgRG9ybW91c2Ugc2xvd2x5IG9wZW5lZCBoaXMgZXllcy4gIGBJIHdhc24ndCBhc2xlZXAsJyBoZQ0KK3NhaWQgaW4gYSBob2Fyc2UsIGZlZWJsZSB2b2ljZTogIGBJIGhlYXJkIGV2ZXJ5IHdvcmQgeW91IGZlbGxvd3MNCit3ZXJlIHNheWluZy4nDQorDQorICBgVGVsbCB1cyBhIHN0b3J5IScgc2FpZCB0aGUgTWFyY2ggSGFyZS4NCisNCisgIGBZZXMsIHBsZWFzZSBkbyEnIHBsZWFkZWQgQWxpY2UuDQorDQorICBgQW5kIGJlIHF1aWNrIGFib3V0IGl0LCcgYWRkZWQgdGhlIEhhdHRlciwgYG9yIHlvdSdsbCBiZSBhc2xlZXANCithZ2FpbiBiZWZvcmUgaXQncyBkb25lLicNCisNCisgIGBPbmNlIHVwb24gYSB0aW1lIHRoZXJlIHdlcmUgdGhyZWUgbGl0dGxlIHNpc3RlcnMsJyB0aGUNCitEb3Jtb3VzZSBiZWdhbiBpbiBhIGdyZWF0IGh1cnJ5OyBgYW5kIHRoZWlyIG5hbWVzIHdlcmUgRWxzaWUsDQorTGFjaWUsIGFuZCBUaWxsaWU7IGFuZCB0aGV5IGxpdmVkIGF0IHRoZSBib3R0b20gb2YgYSB3ZWxsLS0nDQorDQorICBgV2hhdCBkaWQgdGhleSBsaXZlIG9uPycgc2FpZCBBbGljZSwgd2hvIGFsd2F5cyB0b29rIGEgZ3JlYXQNCitpbnRlcmVzdCBpbiBxdWVzdGlvbnMgb2YgZWF0aW5nIGFuZCBkcmlua2luZy4NCisNCisgIGBUaGV5IGxpdmVkIG9uIHRyZWFjbGUsJyBzYWlkIHRoZSBEb3Jtb3VzZSwgYWZ0ZXIgdGhpbmtpbmcgYQ0KK21pbnV0ZSBvciB0d28uDQorDQorICBgVGhleSBjb3VsZG4ndCBoYXZlIGRvbmUgdGhhdCwgeW91IGtub3csJyBBbGljZSBnZW50bHkNCityZW1hcmtlZDsgYHRoZXknZCBoYXZlIGJlZW4gaWxsLicNCisNCisgIGBTbyB0aGV5IHdlcmUsJyBzYWlkIHRoZSBEb3Jtb3VzZTsgYFZFUlkgaWxsLicNCisNCisgIEFsaWNlIHRyaWVkIHRvIGZhbmN5IHRvIGhlcnNlbGYgd2hhdCBzdWNoIGFuIGV4dHJhb3JkaW5hcnkgd2F5cw0KK29mIGxpdmluZyB3b3VsZCBiZSBsaWtlLCBidXQgaXQgcHV6emxlZCBoZXIgdG9vIG11Y2gsIHNvIHNoZSB3ZW50DQorb246ICBgQnV0IHdoeSBkaWQgdGhleSBsaXZlIGF0IHRoZSBib3R0b20gb2YgYSB3ZWxsPycNCisNCisgIGBUYWtlIHNvbWUgbW9yZSB0ZWEsJyB0aGUgTWFyY2ggSGFyZSBzYWlkIHRvIEFsaWNlLCB2ZXJ5DQorZWFybmVzdGx5Lg0KKw0KKyAgYEkndmUgaGFkIG5vdGhpbmcgeWV0LCcgQWxpY2UgcmVwbGllZCBpbiBhbiBvZmZlbmRlZCB0b25lLCBgc28NCitJIGNhbid0IHRha2UgbW9yZS4nDQorDQorICBgWW91IG1lYW4geW91IGNhbid0IHRha2UgTEVTUywnIHNhaWQgdGhlIEhhdHRlcjogIGBpdCdzIHZlcnkNCitlYXN5IHRvIHRha2UgTU9SRSB0aGFuIG5vdGhpbmcuJw0KKw0KKyAgYE5vYm9keSBhc2tlZCBZT1VSIG9waW5pb24sJyBzYWlkIEFsaWNlLg0KKw0KKyAgYFdobydzIG1ha2luZyBwZXJzb25hbCByZW1hcmtzIG5vdz8nIHRoZSBIYXR0ZXIgYXNrZWQNCit0cml1bXBoYW50bHkuDQorDQorICBBbGljZSBkaWQgbm90IHF1aXRlIGtub3cgd2hhdCB0byBzYXkgdG8gdGhpczogIHNvIHNoZSBoZWxwZWQNCitoZXJzZWxmIHRvIHNvbWUgdGVhIGFuZCBicmVhZC1hbmQtYnV0dGVyLCBhbmQgdGhlbiB0dXJuZWQgdG8gdGhlDQorRG9ybW91c2UsIGFuZCByZXBlYXRlZCBoZXIgcXVlc3Rpb24uICBgV2h5IGRpZCB0aGV5IGxpdmUgYXQgdGhlDQorYm90dG9tIG9mIGEgd2VsbD8nDQorDQorICBUaGUgRG9ybW91c2UgYWdhaW4gdG9vayBhIG1pbnV0ZSBvciB0d28gdG8gdGhpbmsgYWJvdXQgaXQsIGFuZA0KK3RoZW4gc2FpZCwgYEl0IHdhcyBhIHRyZWFjbGUtd2VsbC4nDQorDQorICBgVGhlcmUncyBubyBzdWNoIHRoaW5nIScgIEFsaWNlIHdhcyBiZWdpbm5pbmcgdmVyeSBhbmdyaWx5LCBidXQNCit0aGUgSGF0dGVyIGFuZCB0aGUgTWFyY2ggSGFyZSB3ZW50IGBTaCEgc2ghJyBhbmQgdGhlIERvcm1vdXNlDQorc3Vsa2lseSByZW1hcmtlZCwgYElmIHlvdSBjYW4ndCBiZSBjaXZpbCwgeW91J2QgYmV0dGVyIGZpbmlzaCB0aGUNCitzdG9yeSBmb3IgeW91cnNlbGYuJw0KKw0KKyAgYE5vLCBwbGVhc2UgZ28gb24hJyBBbGljZSBzYWlkIHZlcnkgaHVtYmx5OyBgSSB3b24ndCBpbnRlcnJ1cHQNCithZ2Fpbi4gIEkgZGFyZSBzYXkgdGhlcmUgbWF5IGJlIE9ORS4nDQorDQorICBgT25lLCBpbmRlZWQhJyBzYWlkIHRoZSBEb3Jtb3VzZSBpbmRpZ25hbnRseS4gIEhvd2V2ZXIsIGhlDQorY29uc2VudGVkIHRvIGdvIG9uLiAgYEFuZCBzbyB0aGVzZSB0aHJlZSBsaXR0bGUgc2lzdGVycy0tdGhleQ0KK3dlcmUgbGVhcm5pbmcgdG8gZHJhdywgeW91IGtub3ctLScNCisNCisgIGBXaGF0IGRpZCB0aGV5IGRyYXc/JyBzYWlkIEFsaWNlLCBxdWl0ZSBmb3JnZXR0aW5nIGhlciBwcm9taXNlLg0KKw0KKyAgYFRyZWFjbGUsJyBzYWlkIHRoZSBEb3Jtb3VzZSwgd2l0aG91dCBjb25zaWRlcmluZyBhdCBhbGwgdGhpcw0KK3RpbWUuDQorDQorICBgSSB3YW50IGEgY2xlYW4gY3VwLCcgaW50ZXJydXB0ZWQgdGhlIEhhdHRlcjogIGBsZXQncyBhbGwgbW92ZQ0KK29uZSBwbGFjZSBvbi4nDQorDQorICBIZSBtb3ZlZCBvbiBhcyBoZSBzcG9rZSwgYW5kIHRoZSBEb3Jtb3VzZSBmb2xsb3dlZCBoaW06ICB0aGUNCitNYXJjaCBIYXJlIG1vdmVkIGludG8gdGhlIERvcm1vdXNlJ3MgcGxhY2UsIGFuZCBBbGljZSByYXRoZXINCit1bndpbGxpbmdseSB0b29rIHRoZSBwbGFjZSBvZiB0aGUgTWFyY2ggSGFyZS4gIFRoZSBIYXR0ZXIgd2FzIHRoZQ0KK29ubHkgb25lIHdobyBnb3QgYW55IGFkdmFudGFnZSBmcm9tIHRoZSBjaGFuZ2U6ICBhbmQgQWxpY2Ugd2FzIGENCitnb29kIGRlYWwgd29yc2Ugb2ZmIHRoYW4gYmVmb3JlLCBhcyB0aGUgTWFyY2ggSGFyZSBoYWQganVzdCB1cHNldA0KK3RoZSBtaWxrLWp1ZyBpbnRvIGhpcyBwbGF0ZS4NCisNCisgIEFsaWNlIGRpZCBub3Qgd2lzaCB0byBvZmZlbmQgdGhlIERvcm1vdXNlIGFnYWluLCBzbyBzaGUgYmVnYW4NCit2ZXJ5IGNhdXRpb3VzbHk6ICBgQnV0IEkgZG9uJ3QgdW5kZXJzdGFuZC4gIFdoZXJlIGRpZCB0aGV5IGRyYXcNCit0aGUgdHJlYWNsZSBmcm9tPycNCisNCisgIGBZb3UgY2FuIGRyYXcgd2F0ZXIgb3V0IG9mIGEgd2F0ZXItd2VsbCwnIHNhaWQgdGhlIEhhdHRlcjsgYHNvDQorSSBzaG91bGQgdGhpbmsgeW91IGNvdWxkIGRyYXcgdHJlYWNsZSBvdXQgb2YgYSB0cmVhY2xlLXdlbGwtLWVoLA0KK3N0dXBpZD8nDQorDQorICBgQnV0IHRoZXkgd2VyZSBJTiB0aGUgd2VsbCwnIEFsaWNlIHNhaWQgdG8gdGhlIERvcm1vdXNlLCBub3QNCitjaG9vc2luZyB0byBub3RpY2UgdGhpcyBsYXN0IHJlbWFyay4NCisNCisgIGBPZiBjb3Vyc2UgdGhleSB3ZXJlJywgc2FpZCB0aGUgRG9ybW91c2U7IGAtLXdlbGwgaW4uJw0KKw0KKyAgVGhpcyBhbnN3ZXIgc28gY29uZnVzZWQgcG9vciBBbGljZSwgdGhhdCBzaGUgbGV0IHRoZSBEb3Jtb3VzZQ0KK2dvIG9uIGZvciBzb21lIHRpbWUgd2l0aG91dCBpbnRlcnJ1cHRpbmcgaXQuDQorDQorICBgVGhleSB3ZXJlIGxlYXJuaW5nIHRvIGRyYXcsJyB0aGUgRG9ybW91c2Ugd2VudCBvbiwgeWF3bmluZyBhbmQNCitydWJiaW5nIGl0cyBleWVzLCBmb3IgaXQgd2FzIGdldHRpbmcgdmVyeSBzbGVlcHk7IGBhbmQgdGhleSBkcmV3DQorYWxsIG1hbm5lciBvZiB0aGluZ3MtLWV2ZXJ5dGhpbmcgdGhhdCBiZWdpbnMgd2l0aCBhbiBNLS0nDQorDQorICBgV2h5IHdpdGggYW4gTT8nIHNhaWQgQWxpY2UuDQorDQorICBgV2h5IG5vdD8nIHNhaWQgdGhlIE1hcmNoIEhhcmUuDQorDQorICBBbGljZSB3YXMgc2lsZW50Lg0KKw0KKyAgVGhlIERvcm1vdXNlIGhhZCBjbG9zZWQgaXRzIGV5ZXMgYnkgdGhpcyB0aW1lLCBhbmQgd2FzIGdvaW5nDQorb2ZmIGludG8gYSBkb3plOyBidXQsIG9uIGJlaW5nIHBpbmNoZWQgYnkgdGhlIEhhdHRlciwgaXQgd29rZSB1cA0KK2FnYWluIHdpdGggYSBsaXR0bGUgc2hyaWVrLCBhbmQgd2VudCBvbjogIGAtLXRoYXQgYmVnaW5zIHdpdGggYW4NCitNLCBzdWNoIGFzIG1vdXNlLXRyYXBzLCBhbmQgdGhlIG1vb24sIGFuZCBtZW1vcnksIGFuZCBtdWNobmVzcy0tDQoreW91IGtub3cgeW91IHNheSB0aGluZ3MgYXJlICJtdWNoIG9mIGEgbXVjaG5lc3MiLS1kaWQgeW91IGV2ZXINCitzZWUgc3VjaCBhIHRoaW5nIGFzIGEgZHJhd2luZyBvZiBhIG11Y2huZXNzPycNCisNCisgIGBSZWFsbHksIG5vdyB5b3UgYXNrIG1lLCcgc2FpZCBBbGljZSwgdmVyeSBtdWNoIGNvbmZ1c2VkLCBgSQ0KK2Rvbid0IHRoaW5rLS0nDQorDQorICBgVGhlbiB5b3Ugc2hvdWxkbid0IHRhbGssJyBzYWlkIHRoZSBIYXR0ZXIuDQorDQorICBUaGlzIHBpZWNlIG9mIHJ1ZGVuZXNzIHdhcyBtb3JlIHRoYW4gQWxpY2UgY291bGQgYmVhcjogIHNoZSBnb3QNCit1cCBpbiBncmVhdCBkaXNndXN0LCBhbmQgd2Fsa2VkIG9mZjsgdGhlIERvcm1vdXNlIGZlbGwgYXNsZWVwDQoraW5zdGFudGx5LCBhbmQgbmVpdGhlciBvZiB0aGUgb3RoZXJzIHRvb2sgdGhlIGxlYXN0IG5vdGljZSBvZiBoZXINCitnb2luZywgdGhvdWdoIHNoZSBsb29rZWQgYmFjayBvbmNlIG9yIHR3aWNlLCBoYWxmIGhvcGluZyB0aGF0DQordGhleSB3b3VsZCBjYWxsIGFmdGVyIGhlcjogIHRoZSBsYXN0IHRpbWUgc2hlIHNhdyB0aGVtLCB0aGV5IHdlcmUNCit0cnlpbmcgdG8gcHV0IHRoZSBEb3Jtb3VzZSBpbnRvIHRoZSB0ZWFwb3QuDQorDQorICBgQXQgYW55IHJhdGUgSSdsbCBuZXZlciBnbyBUSEVSRSBhZ2FpbiEnIHNhaWQgQWxpY2UgYXMgc2hlDQorcGlja2VkIGhlciB3YXkgdGhyb3VnaCB0aGUgd29vZC4gIGBJdCdzIHRoZSBzdHVwaWRlc3QgdGVhLXBhcnR5IEkNCitldmVyIHdhcyBhdCBpbiBhbGwgbXkgbGlmZSEnDQorDQorICBKdXN0IGFzIHNoZSBzYWlkIHRoaXMsIHNoZSBub3RpY2VkIHRoYXQgb25lIG9mIHRoZSB0cmVlcyBoYWQgYQ0KK2Rvb3IgbGVhZGluZyByaWdodCBpbnRvIGl0LiAgYFRoYXQncyB2ZXJ5IGN1cmlvdXMhJyBzaGUgdGhvdWdodC4NCitgQnV0IGV2ZXJ5dGhpbmcncyBjdXJpb3VzIHRvZGF5LiAgSSB0aGluayBJIG1heSBhcyB3ZWxsIGdvIGluIGF0DQorb25jZS4nICBBbmQgaW4gc2hlIHdlbnQuDQorDQorICBPbmNlIG1vcmUgc2hlIGZvdW5kIGhlcnNlbGYgaW4gdGhlIGxvbmcgaGFsbCwgYW5kIGNsb3NlIHRvIHRoZQ0KK2xpdHRsZSBnbGFzcyB0YWJsZS4gIGBOb3csIEknbGwgbWFuYWdlIGJldHRlciB0aGlzIHRpbWUsJyBzaGUNCitzYWlkIHRvIGhlcnNlbGYsIGFuZCBiZWdhbiBieSB0YWtpbmcgdGhlIGxpdHRsZSBnb2xkZW4ga2V5LCBhbmQNCit1bmxvY2tpbmcgdGhlIGRvb3IgdGhhdCBsZWQgaW50byB0aGUgZ2FyZGVuLiAgVGhlbiBzaGUgd2VudCB0bw0KK3dvcmsgbmliYmxpbmcgYXQgdGhlIG11c2hyb29tIChzaGUgaGFkIGtlcHQgYSBwaWVjZSBvZiBpdCBpbiBoZXINCitwb2NrZWQpIHRpbGwgc2hlIHdhcyBhYm91dCBhIGZvb3QgaGlnaDogIHRoZW4gc2hlIHdhbGtlZCBkb3duIHRoZQ0KK2xpdHRsZSBwYXNzYWdlOiAgYW5kIFRIRU4tLXNoZSBmb3VuZCBoZXJzZWxmIGF0IGxhc3QgaW4gdGhlDQorYmVhdXRpZnVsIGdhcmRlbiwgYW1vbmcgdGhlIGJyaWdodCBmbG93ZXItYmVkcyBhbmQgdGhlIGNvb2wNCitmb3VudGFpbnMuDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICBDSEFQVEVSIFZJSUkNCisNCisgICAgICAgICAgICAgICAgICAgVGhlIFF1ZWVuJ3MgQ3JvcXVldC1Hcm91bmQNCisNCisNCisgIEEgbGFyZ2Ugcm9zZS10cmVlIHN0b29kIG5lYXIgdGhlIGVudHJhbmNlIG9mIHRoZSBnYXJkZW46ICB0aGUNCityb3NlcyBncm93aW5nIG9uIGl0IHdlcmUgd2hpdGUsIGJ1dCB0aGVyZSB3ZXJlIHRocmVlIGdhcmRlbmVycyBhdA0KK2l0LCBidXNpbHkgcGFpbnRpbmcgdGhlbSByZWQuICBBbGljZSB0aG91Z2h0IHRoaXMgYSB2ZXJ5IGN1cmlvdXMNCit0aGluZywgYW5kIHNoZSB3ZW50IG5lYXJlciB0byB3YXRjaCB0aGVtLCBhbmQganVzdCBhcyBzaGUgY2FtZSB1cA0KK3RvIHRoZW0gc2hlIGhlYXJkIG9uZSBvZiB0aGVtIHNheSwgYExvb2sgb3V0IG5vdywgRml2ZSEgIERvbid0IGdvDQorc3BsYXNoaW5nIHBhaW50IG92ZXIgbWUgbGlrZSB0aGF0IScNCisNCisgIGBJIGNvdWxkbid0IGhlbHAgaXQsJyBzYWlkIEZpdmUsIGluIGEgc3Vsa3kgdG9uZTsgYFNldmVuIGpvZ2dlZA0KK215IGVsYm93LicNCisNCisgIE9uIHdoaWNoIFNldmVuIGxvb2tlZCB1cCBhbmQgc2FpZCwgYFRoYXQncyByaWdodCwgRml2ZSEgIEFsd2F5cw0KK2xheSB0aGUgYmxhbWUgb24gb3RoZXJzIScNCisNCisgIGBZT1UnRCBiZXR0ZXIgbm90IHRhbGshJyBzYWlkIEZpdmUuICBgSSBoZWFyZCB0aGUgUXVlZW4gc2F5IG9ubHkNCit5ZXN0ZXJkYXkgeW91IGRlc2VydmVkIHRvIGJlIGJlaGVhZGVkIScNCisNCisgIGBXaGF0IGZvcj8nIHNhaWQgdGhlIG9uZSB3aG8gaGFkIHNwb2tlbiBmaXJzdC4NCisNCisgIGBUaGF0J3Mgbm9uZSBvZiBZT1VSIGJ1c2luZXNzLCBUd28hJyBzYWlkIFNldmVuLg0KKw0KKyAgYFllcywgaXQgSVMgaGlzIGJ1c2luZXNzIScgc2FpZCBGaXZlLCBgYW5kIEknbGwgdGVsbCBoaW0tLWl0DQord2FzIGZvciBicmluZ2luZyB0aGUgY29vayB0dWxpcC1yb290cyBpbnN0ZWFkIG9mIG9uaW9ucy4nDQorDQorICBTZXZlbiBmbHVuZyBkb3duIGhpcyBicnVzaCwgYW5kIGhhZCBqdXN0IGJlZ3VuIGBXZWxsLCBvZiBhbGwNCit0aGUgdW5qdXN0IHRoaW5ncy0tJyB3aGVuIGhpcyBleWUgY2hhbmNlZCB0byBmYWxsIHVwb24gQWxpY2UsIGFzDQorc2hlIHN0b29kIHdhdGNoaW5nIHRoZW0sIGFuZCBoZSBjaGVja2VkIGhpbXNlbGYgc3VkZGVubHk6ICB0aGUNCitvdGhlcnMgbG9va2VkIHJvdW5kIGFsc28sIGFuZCBhbGwgb2YgdGhlbSBib3dlZCBsb3cuDQorDQorICBgV291bGQgeW91IHRlbGwgbWUsJyBzYWlkIEFsaWNlLCBhIGxpdHRsZSB0aW1pZGx5LCBgd2h5IHlvdSBhcmUNCitwYWludGluZyB0aG9zZSByb3Nlcz8nDQorDQorICBGaXZlIGFuZCBTZXZlbiBzYWlkIG5vdGhpbmcsIGJ1dCBsb29rZWQgYXQgVHdvLiAgVHdvIGJlZ2FuIGluIGENCitsb3cgdm9pY2UsIGBXaHkgdGhlIGZhY3QgaXMsIHlvdSBzZWUsIE1pc3MsIHRoaXMgaGVyZSBvdWdodCB0bw0KK2hhdmUgYmVlbiBhIFJFRCByb3NlLXRyZWUsIGFuZCB3ZSBwdXQgYSB3aGl0ZSBvbmUgaW4gYnkgbWlzdGFrZTsNCithbmQgaWYgdGhlIFF1ZWVuIHdhcyB0byBmaW5kIGl0IG91dCwgd2Ugc2hvdWxkIGFsbCBoYXZlIG91ciBoZWFkcw0KK2N1dCBvZmYsIHlvdSBrbm93LiAgU28geW91IHNlZSwgTWlzcywgd2UncmUgZG9pbmcgb3VyIGJlc3QsIGFmb3JlDQorc2hlIGNvbWVzLCB0by0tJyAgQXQgdGhpcyBtb21lbnQgRml2ZSwgd2hvIGhhZCBiZWVuIGFueGlvdXNseQ0KK2xvb2tpbmcgYWNyb3NzIHRoZSBnYXJkZW4sIGNhbGxlZCBvdXQgYFRoZSBRdWVlbiEgIFRoZSBRdWVlbiEnDQorYW5kIHRoZSB0aHJlZSBnYXJkZW5lcnMgaW5zdGFudGx5IHRocmV3IHRoZW1zZWx2ZXMgZmxhdCB1cG9uDQordGhlaXIgZmFjZXMuICBUaGVyZSB3YXMgYSBzb3VuZCBvZiBtYW55IGZvb3RzdGVwcywgYW5kIEFsaWNlDQorbG9va2VkIHJvdW5kLCBlYWdlciB0byBzZWUgdGhlIFF1ZWVuLg0KKw0KKyAgRmlyc3QgY2FtZSB0ZW4gc29sZGllcnMgY2FycnlpbmcgY2x1YnM7IHRoZXNlIHdlcmUgYWxsIHNoYXBlZA0KK2xpa2UgdGhlIHRocmVlIGdhcmRlbmVycywgb2Jsb25nIGFuZCBmbGF0LCB3aXRoIHRoZWlyIGhhbmRzIGFuZA0KK2ZlZXQgYXQgdGhlIGNvcm5lcnM6ICBuZXh0IHRoZSB0ZW4gY291cnRpZXJzOyB0aGVzZSB3ZXJlDQorb3JuYW1lbnRlZCBhbGwgb3ZlciB3aXRoIGRpYW1vbmRzLCBhbmQgd2Fsa2VkIHR3byBhbmQgdHdvLCBhcyB0aGUNCitzb2xkaWVycyBkaWQuICBBZnRlciB0aGVzZSBjYW1lIHRoZSByb3lhbCBjaGlsZHJlbjsgdGhlcmUgd2VyZQ0KK3RlbiBvZiB0aGVtLCBhbmQgdGhlIGxpdHRsZSBkZWFycyBjYW1lIGp1bXBpbmcgbWVycmlseSBhbG9uZyBoYW5kDQoraW4gaGFuZCwgaW4gY291cGxlczogIHRoZXkgd2VyZSBhbGwgb3JuYW1lbnRlZCB3aXRoIGhlYXJ0cy4gIE5leHQNCitjYW1lIHRoZSBndWVzdHMsIG1vc3RseSBLaW5ncyBhbmQgUXVlZW5zLCBhbmQgYW1vbmcgdGhlbSBBbGljZQ0KK3JlY29nbmlzZWQgdGhlIFdoaXRlIFJhYmJpdDogIGl0IHdhcyB0YWxraW5nIGluIGEgaHVycmllZCBuZXJ2b3VzDQorbWFubmVyLCBzbWlsaW5nIGF0IGV2ZXJ5dGhpbmcgdGhhdCB3YXMgc2FpZCwgYW5kIHdlbnQgYnkgd2l0aG91dA0KK25vdGljaW5nIGhlci4gIFRoZW4gZm9sbG93ZWQgdGhlIEtuYXZlIG9mIEhlYXJ0cywgY2FycnlpbmcgdGhlDQorS2luZydzIGNyb3duIG9uIGEgY3JpbXNvbiB2ZWx2ZXQgY3VzaGlvbjsgYW5kLCBsYXN0IG9mIGFsbCB0aGlzDQorZ3JhbmQgcHJvY2Vzc2lvbiwgY2FtZSBUSEUgS0lORyBBTkQgUVVFRU4gT0YgSEVBUlRTLg0KKw0KKyAgQWxpY2Ugd2FzIHJhdGhlciBkb3VidGZ1bCB3aGV0aGVyIHNoZSBvdWdodCBub3QgdG8gbGllIGRvd24gb24NCitoZXIgZmFjZSBsaWtlIHRoZSB0aHJlZSBnYXJkZW5lcnMsIGJ1dCBzaGUgY291bGQgbm90IHJlbWVtYmVyDQorZXZlcnkgaGF2aW5nIGhlYXJkIG9mIHN1Y2ggYSBydWxlIGF0IHByb2Nlc3Npb25zOyBgYW5kIGJlc2lkZXMsDQord2hhdCB3b3VsZCBiZSB0aGUgdXNlIG9mIGEgcHJvY2Vzc2lvbiwnIHRob3VnaHQgc2hlLCBgaWYgcGVvcGxlDQoraGFkIGFsbCB0byBsaWUgZG93biB1cG9uIHRoZWlyIGZhY2VzLCBzbyB0aGF0IHRoZXkgY291bGRuJ3Qgc2VlDQoraXQ/JyAgU28gc2hlIHN0b29kIHN0aWxsIHdoZXJlIHNoZSB3YXMsIGFuZCB3YWl0ZWQuDQorDQorICBXaGVuIHRoZSBwcm9jZXNzaW9uIGNhbWUgb3Bwb3NpdGUgdG8gQWxpY2UsIHRoZXkgYWxsIHN0b3BwZWQNCithbmQgbG9va2VkIGF0IGhlciwgYW5kIHRoZSBRdWVlbiBzYWlkIHNldmVyZWx5IGBXaG8gaXMgdGhpcz8nDQorU2hlIHNhaWQgaXQgdG8gdGhlIEtuYXZlIG9mIEhlYXJ0cywgd2hvIG9ubHkgYm93ZWQgYW5kIHNtaWxlZCBpbg0KK3JlcGx5Lg0KKw0KKyAgYElkaW90IScgc2FpZCB0aGUgUXVlZW4sIHRvc3NpbmcgaGVyIGhlYWQgaW1wYXRpZW50bHk7IGFuZCwNCit0dXJuaW5nIHRvIEFsaWNlLCBzaGUgd2VudCBvbiwgYFdoYXQncyB5b3VyIG5hbWUsIGNoaWxkPycNCisNCisgIGBNeSBuYW1lIGlzIEFsaWNlLCBzbyBwbGVhc2UgeW91ciBNYWplc3R5LCcgc2FpZCBBbGljZSB2ZXJ5DQorcG9saXRlbHk7IGJ1dCBzaGUgYWRkZWQsIHRvIGhlcnNlbGYsIGBXaHksIHRoZXkncmUgb25seSBhIHBhY2sgb2YNCitjYXJkcywgYWZ0ZXIgYWxsLiAgSSBuZWVkbid0IGJlIGFmcmFpZCBvZiB0aGVtIScNCisNCisgIGBBbmQgd2hvIGFyZSBUSEVTRT8nIHNhaWQgdGhlIFF1ZWVuLCBwb2ludGluZyB0byB0aGUgdGhyZWUNCitnYXJkZW5lcnMgd2hvIHdlcmUgbHlpbmcgcm91bmQgdGhlIHJvc2V0cmVlOyBmb3IsIHlvdSBzZWUsIGFzDQordGhleSB3ZXJlIGx5aW5nIG9uIHRoZWlyIGZhY2VzLCBhbmQgdGhlIHBhdHRlcm4gb24gdGhlaXIgYmFja3MNCit3YXMgdGhlIHNhbWUgYXMgdGhlIHJlc3Qgb2YgdGhlIHBhY2ssIHNoZSBjb3VsZCBub3QgdGVsbCB3aGV0aGVyDQordGhleSB3ZXJlIGdhcmRlbmVycywgb3Igc29sZGllcnMsIG9yIGNvdXJ0aWVycywgb3IgdGhyZWUgb2YgaGVyDQorb3duIGNoaWxkcmVuLg0KKw0KKyAgYEhvdyBzaG91bGQgSSBrbm93Pycgc2FpZCBBbGljZSwgc3VycHJpc2VkIGF0IGhlciBvd24gY291cmFnZS4NCitgSXQncyBubyBidXNpbmVzcyBvZiBNSU5FLicNCisNCisgIFRoZSBRdWVlbiB0dXJuZWQgY3JpbXNvbiB3aXRoIGZ1cnksIGFuZCwgYWZ0ZXIgZ2xhcmluZyBhdCBoZXINCitmb3IgYSBtb21lbnQgbGlrZSBhIHdpbGQgYmVhc3QsIHNjcmVhbWVkIGBPZmYgd2l0aCBoZXIgaGVhZCENCitPZmYtLScNCisNCisgIGBOb25zZW5zZSEnIHNhaWQgQWxpY2UsIHZlcnkgbG91ZGx5IGFuZCBkZWNpZGVkbHksIGFuZCB0aGUNCitRdWVlbiB3YXMgc2lsZW50Lg0KKw0KKyAgVGhlIEtpbmcgbGFpZCBoaXMgaGFuZCB1cG9uIGhlciBhcm0sIGFuZCB0aW1pZGx5IHNhaWQNCitgQ29uc2lkZXIsIG15IGRlYXI6ICBzaGUgaXMgb25seSBhIGNoaWxkIScNCisNCisgIFRoZSBRdWVlbiB0dXJuZWQgYW5ncmlseSBhd2F5IGZyb20gaGltLCBhbmQgc2FpZCB0byB0aGUgS25hdmUNCitgVHVybiB0aGVtIG92ZXIhJw0KKw0KKyAgVGhlIEtuYXZlIGRpZCBzbywgdmVyeSBjYXJlZnVsbHksIHdpdGggb25lIGZvb3QuDQorDQorICBgR2V0IHVwIScgc2FpZCB0aGUgUXVlZW4sIGluIGEgc2hyaWxsLCBsb3VkIHZvaWNlLCBhbmQgdGhlDQordGhyZWUgZ2FyZGVuZXJzIGluc3RhbnRseSBqdW1wZWQgdXAsIGFuZCBiZWdhbiBib3dpbmcgdG8gdGhlDQorS2luZywgdGhlIFF1ZWVuLCB0aGUgcm95YWwgY2hpbGRyZW4sIGFuZCBldmVyeWJvZHkgZWxzZS4NCisNCisgIGBMZWF2ZSBvZmYgdGhhdCEnIHNjcmVhbWVkIHRoZSBRdWVlbi4gIGBZb3UgbWFrZSBtZSBnaWRkeS4nDQorQW5kIHRoZW4sIHR1cm5pbmcgdG8gdGhlIHJvc2UtdHJlZSwgc2hlIHdlbnQgb24sIGBXaGF0IEhBVkUgeW91DQorYmVlbiBkb2luZyBoZXJlPycNCisNCisgIGBNYXkgaXQgcGxlYXNlIHlvdXIgTWFqZXN0eSwnIHNhaWQgVHdvLCBpbiBhIHZlcnkgaHVtYmxlIHRvbmUsDQorZ29pbmcgZG93biBvbiBvbmUga25lZSBhcyBoZSBzcG9rZSwgYHdlIHdlcmUgdHJ5aW5nLS0nDQorDQorICBgSSBzZWUhJyBzYWlkIHRoZSBRdWVlbiwgd2hvIGhhZCBtZWFud2hpbGUgYmVlbiBleGFtaW5pbmcgdGhlDQorcm9zZXMuICBgT2ZmIHdpdGggdGhlaXIgaGVhZHMhJyBhbmQgdGhlIHByb2Nlc3Npb24gbW92ZWQgb24sDQordGhyZWUgb2YgdGhlIHNvbGRpZXJzIHJlbWFpbmluZyBiZWhpbmQgdG8gZXhlY3V0ZSB0aGUgdW5mb3J0dW5hdGUNCitnYXJkZW5lcnMsIHdobyByYW4gdG8gQWxpY2UgZm9yIHByb3RlY3Rpb24uDQorDQorICBgWW91IHNoYW4ndCBiZSBiZWhlYWRlZCEnIHNhaWQgQWxpY2UsIGFuZCBzaGUgcHV0IHRoZW0gaW50byBhDQorbGFyZ2UgZmxvd2VyLXBvdCB0aGF0IHN0b29kIG5lYXIuICBUaGUgdGhyZWUgc29sZGllcnMgd2FuZGVyZWQNCithYm91dCBmb3IgYSBtaW51dGUgb3IgdHdvLCBsb29raW5nIGZvciB0aGVtLCBhbmQgdGhlbiBxdWlldGx5DQorbWFyY2hlZCBvZmYgYWZ0ZXIgdGhlIG90aGVycy4NCisNCisgIGBBcmUgdGhlaXIgaGVhZHMgb2ZmPycgc2hvdXRlZCB0aGUgUXVlZW4uDQorDQorICBgVGhlaXIgaGVhZHMgYXJlIGdvbmUsIGlmIGl0IHBsZWFzZSB5b3VyIE1hamVzdHkhJyB0aGUgc29sZGllcnMNCitzaG91dGVkIGluIHJlcGx5Lg0KKw0KKyAgYFRoYXQncyByaWdodCEnIHNob3V0ZWQgdGhlIFF1ZWVuLiAgYENhbiB5b3UgcGxheSBjcm9xdWV0PycNCisNCisgIFRoZSBzb2xkaWVycyB3ZXJlIHNpbGVudCwgYW5kIGxvb2tlZCBhdCBBbGljZSwgYXMgdGhlIHF1ZXN0aW9uDQord2FzIGV2aWRlbnRseSBtZWFudCBmb3IgaGVyLg0KKw0KKyAgYFllcyEnIHNob3V0ZWQgQWxpY2UuDQorDQorICBgQ29tZSBvbiwgdGhlbiEnIHJvYXJlZCB0aGUgUXVlZW4sIGFuZCBBbGljZSBqb2luZWQgdGhlDQorcHJvY2Vzc2lvbiwgd29uZGVyaW5nIHZlcnkgbXVjaCB3aGF0IHdvdWxkIGhhcHBlbiBuZXh0Lg0KKw0KKyAgYEl0J3MtLWl0J3MgYSB2ZXJ5IGZpbmUgZGF5IScgc2FpZCBhIHRpbWlkIHZvaWNlIGF0IGhlciBzaWRlLg0KK1NoZSB3YXMgd2Fsa2luZyBieSB0aGUgV2hpdGUgUmFiYml0LCB3aG8gd2FzIHBlZXBpbmcgYW54aW91c2x5DQoraW50byBoZXIgZmFjZS4NCisNCisgIGBWZXJ5LCcgc2FpZCBBbGljZTogIGAtLXdoZXJlJ3MgdGhlIER1Y2hlc3M/Jw0KKw0KKyAgYEh1c2ghICBIdXNoIScgc2FpZCB0aGUgUmFiYml0IGluIGEgbG93LCBodXJyaWVkIHRvbmUuICBIZQ0KK2xvb2tlZCBhbnhpb3VzbHkgb3ZlciBoaXMgc2hvdWxkZXIgYXMgaGUgc3Bva2UsIGFuZCB0aGVuIHJhaXNlZA0KK2hpbXNlbGYgdXBvbiB0aXB0b2UsIHB1dCBoaXMgbW91dGggY2xvc2UgdG8gaGVyIGVhciwgYW5kDQord2hpc3BlcmVkIGBTaGUncyB1bmRlciBzZW50ZW5jZSBvZiBleGVjdXRpb24uJw0KKw0KKyAgYFdoYXQgZm9yPycgc2FpZCBBbGljZS4NCisNCisgIGBEaWQgeW91IHNheSAiV2hhdCBhIHBpdHkhIj8nIHRoZSBSYWJiaXQgYXNrZWQuDQorDQorICBgTm8sIEkgZGlkbid0LCcgc2FpZCBBbGljZTogIGBJIGRvbid0IHRoaW5rIGl0J3MgYXQgYWxsIGEgcGl0eS4NCitJIHNhaWQgIldoYXQgZm9yPyInDQorDQorICBgU2hlIGJveGVkIHRoZSBRdWVlbidzIGVhcnMtLScgdGhlIFJhYmJpdCBiZWdhbi4gIEFsaWNlIGdhdmUgYQ0KK2xpdHRsZSBzY3JlYW0gb2YgbGF1Z2h0ZXIuICBgT2gsIGh1c2ghJyB0aGUgUmFiYml0IHdoaXNwZXJlZCBpbiBhDQorZnJpZ2h0ZW5lZCB0b25lLiAgYFRoZSBRdWVlbiB3aWxsIGhlYXIgeW91ISAgWW91IHNlZSwgc2hlIGNhbWUNCityYXRoZXIgbGF0ZSwgYW5kIHRoZSBRdWVlbiBzYWlkLS0nDQorDQorICBgR2V0IHRvIHlvdXIgcGxhY2VzIScgc2hvdXRlZCB0aGUgUXVlZW4gaW4gYSB2b2ljZSBvZiB0aHVuZGVyLA0KK2FuZCBwZW9wbGUgYmVnYW4gcnVubmluZyBhYm91dCBpbiBhbGwgZGlyZWN0aW9ucywgdHVtYmxpbmcgdXANCithZ2FpbnN0IGVhY2ggb3RoZXI7IGhvd2V2ZXIsIHRoZXkgZ290IHNldHRsZWQgZG93biBpbiBhIG1pbnV0ZSBvcg0KK3R3bywgYW5kIHRoZSBnYW1lIGJlZ2FuLiAgQWxpY2UgdGhvdWdodCBzaGUgaGFkIG5ldmVyIHNlZW4gc3VjaCBhDQorY3VyaW91cyBjcm9xdWV0LWdyb3VuZCBpbiBoZXIgbGlmZTsgaXQgd2FzIGFsbCByaWRnZXMgYW5kDQorZnVycm93czsgdGhlIGJhbGxzIHdlcmUgbGl2ZSBoZWRnZWhvZ3MsIHRoZSBtYWxsZXRzIGxpdmUNCitmbGFtaW5nb2VzLCBhbmQgdGhlIHNvbGRpZXJzIGhhZCB0byBkb3VibGUgdGhlbXNlbHZlcyB1cCBhbmQgdG8NCitzdGFuZCBvbiB0aGVpciBoYW5kcyBhbmQgZmVldCwgdG8gbWFrZSB0aGUgYXJjaGVzLg0KKw0KKyAgVGhlIGNoaWVmIGRpZmZpY3VsdHkgQWxpY2UgZm91bmQgYXQgZmlyc3Qgd2FzIGluIG1hbmFnaW5nIGhlcg0KK2ZsYW1pbmdvOiAgc2hlIHN1Y2NlZWRlZCBpbiBnZXR0aW5nIGl0cyBib2R5IHR1Y2tlZCBhd2F5LA0KK2NvbWZvcnRhYmx5IGVub3VnaCwgdW5kZXIgaGVyIGFybSwgd2l0aCBpdHMgbGVncyBoYW5naW5nIGRvd24sDQorYnV0IGdlbmVyYWxseSwganVzdCBhcyBzaGUgaGFkIGdvdCBpdHMgbmVjayBuaWNlbHkgc3RyYWlnaHRlbmVkDQorb3V0LCBhbmQgd2FzIGdvaW5nIHRvIGdpdmUgdGhlIGhlZGdlaG9nIGEgYmxvdyB3aXRoIGl0cyBoZWFkLCBpdA0KK1dPVUxEIHR3aXN0IGl0c2VsZiByb3VuZCBhbmQgbG9vayB1cCBpbiBoZXIgZmFjZSwgd2l0aCBzdWNoIGENCitwdXp6bGVkIGV4cHJlc3Npb24gdGhhdCBzaGUgY291bGQgbm90IGhlbHAgYnVyc3Rpbmcgb3V0IGxhdWdoaW5nOg0KK2FuZCB3aGVuIHNoZSBoYWQgZ290IGl0cyBoZWFkIGRvd24sIGFuZCB3YXMgZ29pbmcgdG8gYmVnaW4gYWdhaW4sDQoraXQgd2FzIHZlcnkgcHJvdm9raW5nIHRvIGZpbmQgdGhhdCB0aGUgaGVkZ2Vob2cgaGFkIHVucm9sbGVkDQoraXRzZWxmLCBhbmQgd2FzIGluIHRoZSBhY3Qgb2YgY3Jhd2xpbmcgYXdheTogIGJlc2lkZXMgYWxsIHRoaXMsDQordGhlcmUgd2FzIGdlbmVyYWxseSBhIHJpZGdlIG9yIGZ1cnJvdyBpbiB0aGUgd2F5IHdoZXJldmVyIHNoZQ0KK3dhbnRlZCB0byBzZW5kIHRoZSBoZWRnZWhvZyB0bywgYW5kLCBhcyB0aGUgZG91YmxlZC11cCBzb2xkaWVycw0KK3dlcmUgYWx3YXlzIGdldHRpbmcgdXAgYW5kIHdhbGtpbmcgb2ZmIHRvIG90aGVyIHBhcnRzIG9mIHRoZQ0KK2dyb3VuZCwgQWxpY2Ugc29vbiBjYW1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgaXQgd2FzIGEgdmVyeQ0KK2RpZmZpY3VsdCBnYW1lIGluZGVlZC4NCisNCisgIFRoZSBwbGF5ZXJzIGFsbCBwbGF5ZWQgYXQgb25jZSB3aXRob3V0IHdhaXRpbmcgZm9yIHR1cm5zLA0KK3F1YXJyZWxsaW5nIGFsbCB0aGUgd2hpbGUsIGFuZCBmaWdodGluZyBmb3IgdGhlIGhlZGdlaG9nczsgYW5kIGluDQorYSB2ZXJ5IHNob3J0IHRpbWUgdGhlIFF1ZWVuIHdhcyBpbiBhIGZ1cmlvdXMgcGFzc2lvbiwgYW5kIHdlbnQNCitzdGFtcGluZyBhYm91dCwgYW5kIHNob3V0aW5nIGBPZmYgd2l0aCBoaXMgaGVhZCEnIG9yIGBPZmYgd2l0aA0KK2hlciBoZWFkIScgYWJvdXQgb25jZSBpbiBhIG1pbnV0ZS4NCisNCisgIEFsaWNlIGJlZ2FuIHRvIGZlZWwgdmVyeSB1bmVhc3k6ICB0byBiZSBzdXJlLCBzaGUgaGFkIG5vdCBhcw0KK3lldCBoYWQgYW55IGRpc3B1dGUgd2l0aCB0aGUgUXVlZW4sIGJ1dCBzaGUga25ldyB0aGF0IGl0IG1pZ2h0DQoraGFwcGVuIGFueSBtaW51dGUsIGBhbmQgdGhlbiwnIHRob3VnaHQgc2hlLCBgd2hhdCB3b3VsZCBiZWNvbWUgb2YNCittZT8gIFRoZXkncmUgZHJlYWRmdWxseSBmb25kIG9mIGJlaGVhZGluZyBwZW9wbGUgaGVyZTsgdGhlIGdyZWF0DQord29uZGVyIGlzLCB0aGF0IHRoZXJlJ3MgYW55IG9uZSBsZWZ0IGFsaXZlIScNCisNCisgIFNoZSB3YXMgbG9va2luZyBhYm91dCBmb3Igc29tZSB3YXkgb2YgZXNjYXBlLCBhbmQgd29uZGVyaW5nDQord2hldGhlciBzaGUgY291bGQgZ2V0IGF3YXkgd2l0aG91dCBiZWluZyBzZWVuLCB3aGVuIHNoZSBub3RpY2VkIGENCitjdXJpb3VzIGFwcGVhcmFuY2UgaW4gdGhlIGFpcjogIGl0IHB1enpsZWQgaGVyIHZlcnkgbXVjaCBhdA0KK2ZpcnN0LCBidXQsIGFmdGVyIHdhdGNoaW5nIGl0IGEgbWludXRlIG9yIHR3bywgc2hlIG1hZGUgaXQgb3V0IHRvDQorYmUgYSBncmluLCBhbmQgc2hlIHNhaWQgdG8gaGVyc2VsZiBgSXQncyB0aGUgQ2hlc2hpcmUgQ2F0OiAgbm93IEkNCitzaGFsbCBoYXZlIHNvbWVib2R5IHRvIHRhbGsgdG8uJw0KKw0KKyAgYEhvdyBhcmUgeW91IGdldHRpbmcgb24/JyBzYWlkIHRoZSBDYXQsIGFzIHNvb24gYXMgdGhlcmUgd2FzDQorbW91dGggZW5vdWdoIGZvciBpdCB0byBzcGVhayB3aXRoLg0KKw0KKyAgQWxpY2Ugd2FpdGVkIHRpbGwgdGhlIGV5ZXMgYXBwZWFyZWQsIGFuZCB0aGVuIG5vZGRlZC4gIGBJdCdzIG5vDQordXNlIHNwZWFraW5nIHRvIGl0LCcgc2hlIHRob3VnaHQsIGB0aWxsIGl0cyBlYXJzIGhhdmUgY29tZSwgb3IgYXQNCitsZWFzdCBvbmUgb2YgdGhlbS4nICBJbiBhbm90aGVyIG1pbnV0ZSB0aGUgd2hvbGUgaGVhZCBhcHBlYXJlZCwNCithbmQgdGhlbiBBbGljZSBwdXQgZG93biBoZXIgZmxhbWluZ28sIGFuZCBiZWdhbiBhbiBhY2NvdW50IG9mIHRoZQ0KK2dhbWUsIGZlZWxpbmcgdmVyeSBnbGFkIHNoZSBoYWQgc29tZW9uZSB0byBsaXN0ZW4gdG8gaGVyLiAgVGhlDQorQ2F0IHNlZW1lZCB0byB0aGluayB0aGF0IHRoZXJlIHdhcyBlbm91Z2ggb2YgaXQgbm93IGluIHNpZ2h0LCBhbmQNCitubyBtb3JlIG9mIGl0IGFwcGVhcmVkLg0KKw0KKyAgYEkgZG9uJ3QgdGhpbmsgdGhleSBwbGF5IGF0IGFsbCBmYWlybHksJyBBbGljZSBiZWdhbiwgaW4gcmF0aGVyDQorYSBjb21wbGFpbmluZyB0b25lLCBgYW5kIHRoZXkgYWxsIHF1YXJyZWwgc28gZHJlYWRmdWxseSBvbmUgY2FuJ3QNCitoZWFyIG9uZXNlbGYgc3BlYWstLWFuZCB0aGV5IGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgcnVsZXMgaW4NCitwYXJ0aWN1bGFyOyBhdCBsZWFzdCwgaWYgdGhlcmUgYXJlLCBub2JvZHkgYXR0ZW5kcyB0byB0aGVtLS1hbmQNCit5b3UndmUgbm8gaWRlYSBob3cgY29uZnVzaW5nIGl0IGlzIGFsbCB0aGUgdGhpbmdzIGJlaW5nIGFsaXZlOw0KK2ZvciBpbnN0YW5jZSwgdGhlcmUncyB0aGUgYXJjaCBJJ3ZlIGdvdCB0byBnbyB0aHJvdWdoIG5leHQNCit3YWxraW5nIGFib3V0IGF0IHRoZSBvdGhlciBlbmQgb2YgdGhlIGdyb3VuZC0tYW5kIEkgc2hvdWxkIGhhdmUNCitjcm9xdWV0ZWQgdGhlIFF1ZWVuJ3MgaGVkZ2Vob2cganVzdCBub3csIG9ubHkgaXQgcmFuIGF3YXkgd2hlbiBpdA0KK3NhdyBtaW5lIGNvbWluZyEnDQorDQorICBgSG93IGRvIHlvdSBsaWtlIHRoZSBRdWVlbj8nIHNhaWQgdGhlIENhdCBpbiBhIGxvdyB2b2ljZS4NCisNCisgIGBOb3QgYXQgYWxsLCcgc2FpZCBBbGljZTogIGBzaGUncyBzbyBleHRyZW1lbHktLScgIEp1c3QgdGhlbg0KK3NoZSBub3RpY2VkIHRoYXQgdGhlIFF1ZWVuIHdhcyBjbG9zZSBiZWhpbmQgaGVyLCBsaXN0ZW5pbmc6ICBzbw0KK3NoZSB3ZW50IG9uLCBgLS1saWtlbHkgdG8gd2luLCB0aGF0IGl0J3MgaGFyZGx5IHdvcnRoIHdoaWxlDQorZmluaXNoaW5nIHRoZSBnYW1lLicNCisNCisgIFRoZSBRdWVlbiBzbWlsZWQgYW5kIHBhc3NlZCBvbi4NCisNCisgIGBXaG8gQVJFIHlvdSB0YWxraW5nIHRvPycgc2FpZCB0aGUgS2luZywgZ29pbmcgdXAgdG8gQWxpY2UsIGFuZA0KK2xvb2tpbmcgYXQgdGhlIENhdCdzIGhlYWQgd2l0aCBncmVhdCBjdXJpb3NpdHkuDQorDQorICBgSXQncyBhIGZyaWVuZCBvZiBtaW5lLS1hIENoZXNoaXJlIENhdCwnIHNhaWQgQWxpY2U6ICBgYWxsb3cgbWUNCit0byBpbnRyb2R1Y2UgaXQuJw0KKw0KKyAgYEkgZG9uJ3QgbGlrZSB0aGUgbG9vayBvZiBpdCBhdCBhbGwsJyBzYWlkIHRoZSBLaW5nOiAgYGhvd2V2ZXIsDQoraXQgbWF5IGtpc3MgbXkgaGFuZCBpZiBpdCBsaWtlcy4nDQorDQorICBgSSdkIHJhdGhlciBub3QsJyB0aGUgQ2F0IHJlbWFya2VkLg0KKw0KKyAgYERvbid0IGJlIGltcGVydGluZW50LCcgc2FpZCB0aGUgS2luZywgYGFuZCBkb24ndCBsb29rIGF0IG1lDQorbGlrZSB0aGF0IScgIEhlIGdvdCBiZWhpbmQgQWxpY2UgYXMgaGUgc3Bva2UuDQorDQorICBgQSBjYXQgbWF5IGxvb2sgYXQgYSBraW5nLCcgc2FpZCBBbGljZS4gIGBJJ3ZlIHJlYWQgdGhhdCBpbg0KK3NvbWUgYm9vaywgYnV0IEkgZG9uJ3QgcmVtZW1iZXIgd2hlcmUuJw0KKw0KKyAgYFdlbGwsIGl0IG11c3QgYmUgcmVtb3ZlZCwnIHNhaWQgdGhlIEtpbmcgdmVyeSBkZWNpZGVkbHksIGFuZA0KK2hlIGNhbGxlZCB0aGUgUXVlZW4sIHdobyB3YXMgcGFzc2luZyBhdCB0aGUgbW9tZW50LCBgTXkgZGVhciEgIEkNCit3aXNoIHlvdSB3b3VsZCBoYXZlIHRoaXMgY2F0IHJlbW92ZWQhJw0KKw0KKyAgVGhlIFF1ZWVuIGhhZCBvbmx5IG9uZSB3YXkgb2Ygc2V0dGxpbmcgYWxsIGRpZmZpY3VsdGllcywgZ3JlYXQNCitvciBzbWFsbC4gIGBPZmYgd2l0aCBoaXMgaGVhZCEnIHNoZSBzYWlkLCB3aXRob3V0IGV2ZW4gbG9va2luZw0KK3JvdW5kLg0KKw0KKyAgYEknbGwgZmV0Y2ggdGhlIGV4ZWN1dGlvbmVyIG15c2VsZiwnIHNhaWQgdGhlIEtpbmcgZWFnZXJseSwgYW5kDQoraGUgaHVycmllZCBvZmYuDQorDQorICBBbGljZSB0aG91Z2h0IHNoZSBtaWdodCBhcyB3ZWxsIGdvIGJhY2ssIGFuZCBzZWUgaG93IHRoZSBnYW1lDQord2FzIGdvaW5nIG9uLCBhcyBzaGUgaGVhcmQgdGhlIFF1ZWVuJ3Mgdm9pY2UgaW4gdGhlIGRpc3RhbmNlLA0KK3NjcmVhbWluZyB3aXRoIHBhc3Npb24uICBTaGUgaGFkIGFscmVhZHkgaGVhcmQgaGVyIHNlbnRlbmNlIHRocmVlDQorb2YgdGhlIHBsYXllcnMgdG8gYmUgZXhlY3V0ZWQgZm9yIGhhdmluZyBtaXNzZWQgdGhlaXIgdHVybnMsIGFuZA0KK3NoZSBkaWQgbm90IGxpa2UgdGhlIGxvb2sgb2YgdGhpbmdzIGF0IGFsbCwgYXMgdGhlIGdhbWUgd2FzIGluDQorc3VjaCBjb25mdXNpb24gdGhhdCBzaGUgbmV2ZXIga25ldyB3aGV0aGVyIGl0IHdhcyBoZXIgdHVybiBvcg0KK25vdC4gIFNvIHNoZSB3ZW50IGluIHNlYXJjaCBvZiBoZXIgaGVkZ2Vob2cuDQorDQorICBUaGUgaGVkZ2Vob2cgd2FzIGVuZ2FnZWQgaW4gYSBmaWdodCB3aXRoIGFub3RoZXIgaGVkZ2Vob2csDQord2hpY2ggc2VlbWVkIHRvIEFsaWNlIGFuIGV4Y2VsbGVudCBvcHBvcnR1bml0eSBmb3IgY3JvcXVldGluZyBvbmUNCitvZiB0aGVtIHdpdGggdGhlIG90aGVyOiAgdGhlIG9ubHkgZGlmZmljdWx0eSB3YXMsIHRoYXQgaGVyDQorZmxhbWluZ28gd2FzIGdvbmUgYWNyb3NzIHRvIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBnYXJkZW4sIHdoZXJlDQorQWxpY2UgY291bGQgc2VlIGl0IHRyeWluZyBpbiBhIGhlbHBsZXNzIHNvcnQgb2Ygd2F5IHRvIGZseSB1cA0KK2ludG8gYSB0cmVlLg0KKw0KKyAgQnkgdGhlIHRpbWUgc2hlIGhhZCBjYXVnaHQgdGhlIGZsYW1pbmdvIGFuZCBicm91Z2h0IGl0IGJhY2ssDQordGhlIGZpZ2h0IHdhcyBvdmVyLCBhbmQgYm90aCB0aGUgaGVkZ2Vob2dzIHdlcmUgb3V0IG9mIHNpZ2h0Og0KK2BidXQgaXQgZG9lc24ndCBtYXR0ZXIgbXVjaCwnIHRob3VnaHQgQWxpY2UsIGBhcyBhbGwgdGhlIGFyY2hlcw0KK2FyZSBnb25lIGZyb20gdGhpcyBzaWRlIG9mIHRoZSBncm91bmQuJyAgU28gc2hlIHR1Y2tlZCBpdCBhd2F5DQordW5kZXIgaGVyIGFybSwgdGhhdCBpdCBtaWdodCBub3QgZXNjYXBlIGFnYWluLCBhbmQgd2VudCBiYWNrIGZvcg0KK2EgbGl0dGxlIG1vcmUgY29udmVyc2F0aW9uIHdpdGggaGVyIGZyaWVuZC4NCisNCisgIFdoZW4gc2hlIGdvdCBiYWNrIHRvIHRoZSBDaGVzaGlyZSBDYXQsIHNoZSB3YXMgc3VycHJpc2VkIHRvDQorZmluZCBxdWl0ZSBhIGxhcmdlIGNyb3dkIGNvbGxlY3RlZCByb3VuZCBpdDogIHRoZXJlIHdhcyBhIGRpc3B1dGUNCitnb2luZyBvbiBiZXR3ZWVuIHRoZSBleGVjdXRpb25lciwgdGhlIEtpbmcsIGFuZCB0aGUgUXVlZW4sIHdobw0KK3dlcmUgYWxsIHRhbGtpbmcgYXQgb25jZSwgd2hpbGUgYWxsIHRoZSByZXN0IHdlcmUgcXVpdGUgc2lsZW50LA0KK2FuZCBsb29rZWQgdmVyeSB1bmNvbWZvcnRhYmxlLg0KKw0KKyAgVGhlIG1vbWVudCBBbGljZSBhcHBlYXJlZCwgc2hlIHdhcyBhcHBlYWxlZCB0byBieSBhbGwgdGhyZWUgdG8NCitzZXR0bGUgdGhlIHF1ZXN0aW9uLCBhbmQgdGhleSByZXBlYXRlZCB0aGVpciBhcmd1bWVudHMgdG8gaGVyLA0KK3Rob3VnaCwgYXMgdGhleSBhbGwgc3Bva2UgYXQgb25jZSwgc2hlIGZvdW5kIGl0IHZlcnkgaGFyZCBpbmRlZWQNCit0byBtYWtlIG91dCBleGFjdGx5IHdoYXQgdGhleSBzYWlkLg0KKw0KKyAgVGhlIGV4ZWN1dGlvbmVyJ3MgYXJndW1lbnQgd2FzLCB0aGF0IHlvdSBjb3VsZG4ndCBjdXQgb2ZmIGENCitoZWFkIHVubGVzcyB0aGVyZSB3YXMgYSBib2R5IHRvIGN1dCBpdCBvZmYgZnJvbTogIHRoYXQgaGUgaGFkDQorbmV2ZXIgaGFkIHRvIGRvIHN1Y2ggYSB0aGluZyBiZWZvcmUsIGFuZCBoZSB3YXNuJ3QgZ29pbmcgdG8gYmVnaW4NCithdCBISVMgdGltZSBvZiBsaWZlLg0KKw0KKyAgVGhlIEtpbmcncyBhcmd1bWVudCB3YXMsIHRoYXQgYW55dGhpbmcgdGhhdCBoYWQgYSBoZWFkIGNvdWxkIGJlDQorYmVoZWFkZWQsIGFuZCB0aGF0IHlvdSB3ZXJlbid0IHRvIHRhbGsgbm9uc2Vuc2UuDQorDQorICBUaGUgUXVlZW4ncyBhcmd1bWVudCB3YXMsIHRoYXQgaWYgc29tZXRoaW5nIHdhc24ndCBkb25lIGFib3V0DQoraXQgaW4gbGVzcyB0aGFuIG5vIHRpbWUgc2hlJ2QgaGF2ZSBldmVyeWJvZHkgZXhlY3V0ZWQsIGFsbCByb3VuZC4NCisoSXQgd2FzIHRoaXMgbGFzdCByZW1hcmsgdGhhdCBoYWQgbWFkZSB0aGUgd2hvbGUgcGFydHkgbG9vayBzbw0KK2dyYXZlIGFuZCBhbnhpb3VzLikNCisNCisgIEFsaWNlIGNvdWxkIHRoaW5rIG9mIG5vdGhpbmcgZWxzZSB0byBzYXkgYnV0IGBJdCBiZWxvbmdzIHRvIHRoZQ0KK0R1Y2hlc3M6ICB5b3UnZCBiZXR0ZXIgYXNrIEhFUiBhYm91dCBpdC4nDQorDQorICBgU2hlJ3MgaW4gcHJpc29uLCcgdGhlIFF1ZWVuIHNhaWQgdG8gdGhlIGV4ZWN1dGlvbmVyOiAgYGZldGNoDQoraGVyIGhlcmUuJyAgQW5kIHRoZSBleGVjdXRpb25lciB3ZW50IG9mZiBsaWtlIGFuIGFycm93Lg0KKw0KKyAgIFRoZSBDYXQncyBoZWFkIGJlZ2FuIGZhZGluZyBhd2F5IHRoZSBtb21lbnQgaGUgd2FzIGdvbmUsIGFuZCwNCitieSB0aGUgdGltZSBoZSBoYWQgY29tZSBiYWNrIHdpdGggdGhlIER1dGNoZXNzLCBpdCBoYWQgZW50aXJlbHkNCitkaXNhcHBlYXJlZDsgc28gdGhlIEtpbmcgYW5kIHRoZSBleGVjdXRpb25lciByYW4gd2lsZGx5IHVwIGFuZA0KK2Rvd24gbG9va2luZyBmb3IgaXQsIHdoaWxlIHRoZSByZXN0IG9mIHRoZSBwYXJ0eSB3ZW50IGJhY2sgdG8gdGhlIGdhbWUuDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBUFRFUiBJWA0KKw0KKyAgICAgICAgICAgICAgICAgICAgIFRoZSBNb2NrIFR1cnRsZSdzIFN0b3J5DQorDQorDQorICBgWW91IGNhbid0IHRoaW5rIGhvdyBnbGFkIEkgYW0gdG8gc2VlIHlvdSBhZ2FpbiwgeW91IGRlYXIgb2xkDQordGhpbmchJyBzYWlkIHRoZSBEdWNoZXNzLCBhcyBzaGUgdHVja2VkIGhlciBhcm0gYWZmZWN0aW9uYXRlbHkNCitpbnRvIEFsaWNlJ3MsIGFuZCB0aGV5IHdhbGtlZCBvZmYgdG9nZXRoZXIuDQorDQorICBBbGljZSB3YXMgdmVyeSBnbGFkIHRvIGZpbmQgaGVyIGluIHN1Y2ggYSBwbGVhc2FudCB0ZW1wZXIsIGFuZA0KK3Rob3VnaHQgdG8gaGVyc2VsZiB0aGF0IHBlcmhhcHMgaXQgd2FzIG9ubHkgdGhlIHBlcHBlciB0aGF0IGhhZA0KK21hZGUgaGVyIHNvIHNhdmFnZSB3aGVuIHRoZXkgbWV0IGluIHRoZSBraXRjaGVuLg0KKw0KKyAgYFdoZW4gSSdNIGEgRHVjaGVzcywnIHNoZSBzYWlkIHRvIGhlcnNlbGYsIChub3QgaW4gYSB2ZXJ5DQoraG9wZWZ1bCB0b25lIHRob3VnaCksIGBJIHdvbid0IGhhdmUgYW55IHBlcHBlciBpbiBteSBraXRjaGVuIEFUDQorQUxMLiAgU291cCBkb2VzIHZlcnkgd2VsbCB3aXRob3V0LS1NYXliZSBpdCdzIGFsd2F5cyBwZXBwZXIgdGhhdA0KK21ha2VzIHBlb3BsZSBob3QtdGVtcGVyZWQsJyBzaGUgd2VudCBvbiwgdmVyeSBtdWNoIHBsZWFzZWQgYXQNCitoYXZpbmcgZm91bmQgb3V0IGEgbmV3IGtpbmQgb2YgcnVsZSwgYGFuZCB2aW5lZ2FyIHRoYXQgbWFrZXMgdGhlbQ0KK3NvdXItLWFuZCBjYW1vbWlsZSB0aGF0IG1ha2VzIHRoZW0gYml0dGVyLS1hbmQtLWFuZCBiYXJsZXktc3VnYXINCithbmQgc3VjaCB0aGluZ3MgdGhhdCBtYWtlIGNoaWxkcmVuIHN3ZWV0LXRlbXBlcmVkLiAgSSBvbmx5IHdpc2gNCitwZW9wbGUga25ldyB0aGF0OiAgdGhlbiB0aGV5IHdvdWxkbid0IGJlIHNvIHN0aW5neSBhYm91dCBpdCwgeW91DQora25vdy0tJw0KKw0KKyAgU2hlIGhhZCBxdWl0ZSBmb3Jnb3R0ZW4gdGhlIER1Y2hlc3MgYnkgdGhpcyB0aW1lLCBhbmQgd2FzIGENCitsaXR0bGUgc3RhcnRsZWQgd2hlbiBzaGUgaGVhcmQgaGVyIHZvaWNlIGNsb3NlIHRvIGhlciBlYXIuDQorYFlvdSdyZSB0aGlua2luZyBhYm91dCBzb21ldGhpbmcsIG15IGRlYXIsIGFuZCB0aGF0IG1ha2VzIHlvdQ0KK2ZvcmdldCB0byB0YWxrLiAgSSBjYW4ndCB0ZWxsIHlvdSBqdXN0IG5vdyB3aGF0IHRoZSBtb3JhbCBvZiB0aGF0DQoraXMsIGJ1dCBJIHNoYWxsIHJlbWVtYmVyIGl0IGluIGEgYml0LicNCisNCisgIGBQZXJoYXBzIGl0IGhhc24ndCBvbmUsJyBBbGljZSB2ZW50dXJlZCB0byByZW1hcmsuDQorDQorICBgVHV0LCB0dXQsIGNoaWxkIScgc2FpZCB0aGUgRHVjaGVzcy4gIGBFdmVyeXRoaW5nJ3MgZ290IGENCittb3JhbCwgaWYgb25seSB5b3UgY2FuIGZpbmQgaXQuJyAgQW5kIHNoZSBzcXVlZXplZCBoZXJzZWxmIHVwDQorY2xvc2VyIHRvIEFsaWNlJ3Mgc2lkZSBhcyBzaGUgc3Bva2UuDQorDQorICBBbGljZSBkaWQgbm90IG11Y2ggbGlrZSBrZWVwaW5nIHNvIGNsb3NlIHRvIGhlcjogIGZpcnN0LA0KK2JlY2F1c2UgdGhlIER1Y2hlc3Mgd2FzIFZFUlkgdWdseTsgYW5kIHNlY29uZGx5LCBiZWNhdXNlIHNoZSB3YXMNCitleGFjdGx5IHRoZSByaWdodCBoZWlnaHQgdG8gcmVzdCBoZXIgY2hpbiB1cG9uIEFsaWNlJ3Mgc2hvdWxkZXIsDQorYW5kIGl0IHdhcyBhbiB1bmNvbWZvcnRhYmx5IHNoYXJwIGNoaW4uICBIb3dldmVyLCBzaGUgZGlkIG5vdA0KK2xpa2UgdG8gYmUgcnVkZSwgc28gc2hlIGJvcmUgaXQgYXMgd2VsbCBhcyBzaGUgY291bGQuDQorDQorICBgVGhlIGdhbWUncyBnb2luZyBvbiByYXRoZXIgYmV0dGVyIG5vdywnIHNoZSBzYWlkLCBieSB3YXkgb2YNCitrZWVwaW5nIHVwIHRoZSBjb252ZXJzYXRpb24gYSBsaXR0bGUuDQorDQorICBgJ1RpcyBzbywnIHNhaWQgdGhlIER1Y2hlc3M6ICBgYW5kIHRoZSBtb3JhbCBvZiB0aGF0IGlzLS0iT2gsDQorJ3RpcyBsb3ZlLCAndGlzIGxvdmUsIHRoYXQgbWFrZXMgdGhlIHdvcmxkIGdvIHJvdW5kISInDQorDQorICBgU29tZWJvZHkgc2FpZCwnIEFsaWNlIHdoaXNwZXJlZCwgYHRoYXQgaXQncyBkb25lIGJ5IGV2ZXJ5Ym9keQ0KK21pbmRpbmcgdGhlaXIgb3duIGJ1c2luZXNzIScNCisNCisgIGBBaCwgd2VsbCEgIEl0IG1lYW5zIG11Y2ggdGhlIHNhbWUgdGhpbmcsJyBzYWlkIHRoZSBEdWNoZXNzLA0KK2RpZ2dpbmcgaGVyIHNoYXJwIGxpdHRsZSBjaGluIGludG8gQWxpY2UncyBzaG91bGRlciBhcyBzaGUgYWRkZWQsDQorYGFuZCB0aGUgbW9yYWwgb2YgVEhBVCBpcy0tIlRha2UgY2FyZSBvZiB0aGUgc2Vuc2UsIGFuZCB0aGUNCitzb3VuZHMgd2lsbCB0YWtlIGNhcmUgb2YgdGhlbXNlbHZlcy4iJw0KKw0KKyAgYEhvdyBmb25kIHNoZSBpcyBvZiBmaW5kaW5nIG1vcmFscyBpbiB0aGluZ3MhJyBBbGljZSB0aG91Z2h0IHRvDQoraGVyc2VsZi4NCisNCisgIGBJIGRhcmUgc2F5IHlvdSdyZSB3b25kZXJpbmcgd2h5IEkgZG9uJ3QgcHV0IG15IGFybSByb3VuZCB5b3VyDQord2Fpc3QsJyB0aGUgRHVjaGVzcyBzYWlkIGFmdGVyIGEgcGF1c2U6ICBgdGhlIHJlYXNvbiBpcywgdGhhdCBJJ20NCitkb3VidGZ1bCBhYm91dCB0aGUgdGVtcGVyIG9mIHlvdXIgZmxhbWluZ28uICBTaGFsbCBJIHRyeSB0aGUNCitleHBlcmltZW50PycNCisNCisgIGBIRSBtaWdodCBiaXRlLCcgQWxpY2UgY2F1dGlvdXNseSByZXBsaWVkLCBub3QgZmVlbGluZyBhdCBhbGwNCithbnhpb3VzIHRvIGhhdmUgdGhlIGV4cGVyaW1lbnQgdHJpZWQuDQorDQorICBgVmVyeSB0cnVlLCcgc2FpZCB0aGUgRHVjaGVzczogIGBmbGFtaW5nb2VzIGFuZCBtdXN0YXJkIGJvdGgNCitiaXRlLiAgQW5kIHRoZSBtb3JhbCBvZiB0aGF0IGlzLS0iQmlyZHMgb2YgYSBmZWF0aGVyIGZsb2NrDQordG9nZXRoZXIuIicNCisNCisgIGBPbmx5IG11c3RhcmQgaXNuJ3QgYSBiaXJkLCcgQWxpY2UgcmVtYXJrZWQuDQorDQorICBgUmlnaHQsIGFzIHVzdWFsLCcgc2FpZCB0aGUgRHVjaGVzczogIGB3aGF0IGEgY2xlYXIgd2F5IHlvdQ0KK2hhdmUgb2YgcHV0dGluZyB0aGluZ3MhJw0KKw0KKyAgYEl0J3MgYSBtaW5lcmFsLCBJIFRISU5LLCcgc2FpZCBBbGljZS4NCisNCisgIGBPZiBjb3Vyc2UgaXQgaXMsJyBzYWlkIHRoZSBEdWNoZXNzLCB3aG8gc2VlbWVkIHJlYWR5IHRvIGFncmVlDQordG8gZXZlcnl0aGluZyB0aGF0IEFsaWNlIHNhaWQ7IGB0aGVyZSdzIGEgbGFyZ2UgbXVzdGFyZC1taW5lIG5lYXINCitoZXJlLiAgQW5kIHRoZSBtb3JhbCBvZiB0aGF0IGlzLS0iVGhlIG1vcmUgdGhlcmUgaXMgb2YgbWluZSwgdGhlDQorbGVzcyB0aGVyZSBpcyBvZiB5b3Vycy4iJw0KKw0KKyAgYE9oLCBJIGtub3chJyBleGNsYWltZWQgQWxpY2UsIHdobyBoYWQgbm90IGF0dGVuZGVkIHRvIHRoaXMNCitsYXN0IHJlbWFyaywgYGl0J3MgYSB2ZWdldGFibGUuICBJdCBkb2Vzbid0IGxvb2sgbGlrZSBvbmUsIGJ1dCBpdA0KK2lzLicNCisNCisgIGBJIHF1aXRlIGFncmVlIHdpdGggeW91LCcgc2FpZCB0aGUgRHVjaGVzczsgYGFuZCB0aGUgbW9yYWwgb2YNCit0aGF0IGlzLS0iQmUgd2hhdCB5b3Ugd291bGQgc2VlbSB0byBiZSItLW9yIGlmIHlvdSdkIGxpa2UgaXQgcHV0DQorbW9yZSBzaW1wbHktLSJOZXZlciBpbWFnaW5lIHlvdXJzZWxmIG5vdCB0byBiZSBvdGhlcndpc2UgdGhhbg0KK3doYXQgaXQgbWlnaHQgYXBwZWFyIHRvIG90aGVycyB0aGF0IHdoYXQgeW91IHdlcmUgb3IgbWlnaHQgaGF2ZQ0KK2JlZW4gd2FzIG5vdCBvdGhlcndpc2UgdGhhbiB3aGF0IHlvdSBoYWQgYmVlbiB3b3VsZCBoYXZlIGFwcGVhcmVkDQordG8gdGhlbSB0byBiZSBvdGhlcndpc2UuIicNCisNCisgIGBJIHRoaW5rIEkgc2hvdWxkIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIsJyBBbGljZSBzYWlkIHZlcnkNCitwb2xpdGVseSwgYGlmIEkgaGFkIGl0IHdyaXR0ZW4gZG93bjogIGJ1dCBJIGNhbid0IHF1aXRlIGZvbGxvdyBpdA0KK2FzIHlvdSBzYXkgaXQuJw0KKw0KKyAgYFRoYXQncyBub3RoaW5nIHRvIHdoYXQgSSBjb3VsZCBzYXkgaWYgSSBjaG9zZSwnIHRoZSBEdWNoZXNzDQorcmVwbGllZCwgaW4gYSBwbGVhc2VkIHRvbmUuDQorDQorICBgUHJheSBkb24ndCB0cm91YmxlIHlvdXJzZWxmIHRvIHNheSBpdCBhbnkgbG9uZ2VyIHRoYW4gdGhhdCwnDQorc2FpZCBBbGljZS4NCisNCisgIGBPaCwgZG9uJ3QgdGFsayBhYm91dCB0cm91YmxlIScgc2FpZCB0aGUgRHVjaGVzcy4gIGBJIG1ha2UgeW91DQorYSBwcmVzZW50IG9mIGV2ZXJ5dGhpbmcgSSd2ZSBzYWlkIGFzIHlldC4nDQorDQorICBgQSBjaGVhcCBzb3J0IG9mIHByZXNlbnQhJyB0aG91Z2h0IEFsaWNlLiAgYEknbSBnbGFkIHRoZXkgZG9uJ3QNCitnaXZlIGJpcnRoZGF5IHByZXNlbnRzIGxpa2UgdGhhdCEnICBCdXQgc2hlIGRpZCBub3QgdmVudHVyZSB0bw0KK3NheSBpdCBvdXQgbG91ZC4NCisNCisgIGBUaGlua2luZyBhZ2Fpbj8nIHRoZSBEdWNoZXNzIGFza2VkLCB3aXRoIGFub3RoZXIgZGlnIG9mIGhlcg0KK3NoYXJwIGxpdHRsZSBjaGluLg0KKw0KKyAgYEkndmUgYSByaWdodCB0byB0aGluaywnIHNhaWQgQWxpY2Ugc2hhcnBseSwgZm9yIHNoZSB3YXMNCitiZWdpbm5pbmcgdG8gZmVlbCBhIGxpdHRsZSB3b3JyaWVkLg0KKw0KKyAgYEp1c3QgYWJvdXQgYXMgbXVjaCByaWdodCwnIHNhaWQgdGhlIER1Y2hlc3MsIGBhcyBwaWdzIGhhdmUgdG8NCitmbHk7IGFuZCB0aGUgbS0tJw0KKw0KKyAgQnV0IGhlcmUsIHRvIEFsaWNlJ3MgZ3JlYXQgc3VycHJpc2UsIHRoZSBEdWNoZXNzJ3Mgdm9pY2UgZGllZA0KK2F3YXksIGV2ZW4gaW4gdGhlIG1pZGRsZSBvZiBoZXIgZmF2b3VyaXRlIHdvcmQgYG1vcmFsLCcgYW5kIHRoZQ0KK2FybSB0aGF0IHdhcyBsaW5rZWQgaW50byBoZXJzIGJlZ2FuIHRvIHRyZW1ibGUuICBBbGljZSBsb29rZWQgdXAsDQorYW5kIHRoZXJlIHN0b29kIHRoZSBRdWVlbiBpbiBmcm9udCBvZiB0aGVtLCB3aXRoIGhlciBhcm1zIGZvbGRlZCwNCitmcm93bmluZyBsaWtlIGEgdGh1bmRlcnN0b3JtLg0KKw0KKyAgYEEgZmluZSBkYXksIHlvdXIgTWFqZXN0eSEnIHRoZSBEdWNoZXNzIGJlZ2FuIGluIGEgbG93LCB3ZWFrDQordm9pY2UuDQorDQorICBgTm93LCBJIGdpdmUgeW91IGZhaXIgd2FybmluZywnIHNob3V0ZWQgdGhlIFF1ZWVuLCBzdGFtcGluZyBvbg0KK3RoZSBncm91bmQgYXMgc2hlIHNwb2tlOyBgZWl0aGVyIHlvdSBvciB5b3VyIGhlYWQgbXVzdCBiZSBvZmYsDQorYW5kIHRoYXQgaW4gYWJvdXQgaGFsZiBubyB0aW1lISAgVGFrZSB5b3VyIGNob2ljZSEnDQorDQorICBUaGUgRHVjaGVzcyB0b29rIGhlciBjaG9pY2UsIGFuZCB3YXMgZ29uZSBpbiBhIG1vbWVudC4NCisNCisgIGBMZXQncyBnbyBvbiB3aXRoIHRoZSBnYW1lLCcgdGhlIFF1ZWVuIHNhaWQgdG8gQWxpY2U7IGFuZCBBbGljZQ0KK3dhcyB0b28gbXVjaCBmcmlnaHRlbmVkIHRvIHNheSBhIHdvcmQsIGJ1dCBzbG93bHkgZm9sbG93ZWQgaGVyDQorYmFjayB0byB0aGUgY3JvcXVldC1ncm91bmQuDQorDQorICBUaGUgb3RoZXIgZ3Vlc3RzIGhhZCB0YWtlbiBhZHZhbnRhZ2Ugb2YgdGhlIFF1ZWVuJ3MgYWJzZW5jZSwNCithbmQgd2VyZSByZXN0aW5nIGluIHRoZSBzaGFkZTogIGhvd2V2ZXIsIHRoZSBtb21lbnQgdGhleSBzYXcgaGVyLA0KK3RoZXkgaHVycmllZCBiYWNrIHRvIHRoZSBnYW1lLCB0aGUgUXVlZW4gbWVyZWx5IHJlbWFya2luZyB0aGF0IGENCittb21lbnQncyBkZWxheSB3b3VsZCBjb3N0IHRoZW0gdGhlaXIgbGl2ZXMuDQorDQorICBBbGwgdGhlIHRpbWUgdGhleSB3ZXJlIHBsYXlpbmcgdGhlIFF1ZWVuIG5ldmVyIGxlZnQgb2ZmDQorcXVhcnJlbGxpbmcgd2l0aCB0aGUgb3RoZXIgcGxheWVycywgYW5kIHNob3V0aW5nIGBPZmYgd2l0aCBoaXMNCitoZWFkIScgb3IgYE9mZiB3aXRoIGhlciBoZWFkIScgIFRob3NlIHdob20gc2hlIHNlbnRlbmNlZCB3ZXJlDQordGFrZW4gaW50byBjdXN0b2R5IGJ5IHRoZSBzb2xkaWVycywgd2hvIG9mIGNvdXJzZSBoYWQgdG8gbGVhdmUNCitvZmYgYmVpbmcgYXJjaGVzIHRvIGRvIHRoaXMsIHNvIHRoYXQgYnkgdGhlIGVuZCBvZiBoYWxmIGFuIGhvdXINCitvciBzbyB0aGVyZSB3ZXJlIG5vIGFyY2hlcyBsZWZ0LCBhbmQgYWxsIHRoZSBwbGF5ZXJzLCBleGNlcHQgdGhlDQorS2luZywgdGhlIFF1ZWVuLCBhbmQgQWxpY2UsIHdlcmUgaW4gY3VzdG9keSBhbmQgdW5kZXIgc2VudGVuY2Ugb2YNCitleGVjdXRpb24uDQorDQorICBUaGVuIHRoZSBRdWVlbiBsZWZ0IG9mZiwgcXVpdGUgb3V0IG9mIGJyZWF0aCwgYW5kIHNhaWQgdG8NCitBbGljZSwgYEhhdmUgeW91IHNlZW4gdGhlIE1vY2sgVHVydGxlIHlldD8nDQorDQorICBgTm8sJyBzYWlkIEFsaWNlLiAgYEkgZG9uJ3QgZXZlbiBrbm93IHdoYXQgYSBNb2NrIFR1cnRsZSBpcy4nDQorDQorICBgSXQncyB0aGUgdGhpbmcgTW9jayBUdXJ0bGUgU291cCBpcyBtYWRlIGZyb20sJyBzYWlkIHRoZSBRdWVlbi4NCisNCisgIGBJIG5ldmVyIHNhdyBvbmUsIG9yIGhlYXJkIG9mIG9uZSwnIHNhaWQgQWxpY2UuDQorDQorICBgQ29tZSBvbiwgdGhlbiwnIHNhaWQgdGhlIFF1ZWVuLCBgYW5kIGhlIHNoYWxsIHRlbGwgeW91IGhpcw0KK2hpc3RvcnksJw0KKw0KKyAgQXMgdGhleSB3YWxrZWQgb2ZmIHRvZ2V0aGVyLCBBbGljZSBoZWFyZCB0aGUgS2luZyBzYXkgaW4gYSBsb3cNCit2b2ljZSwgdG8gdGhlIGNvbXBhbnkgZ2VuZXJhbGx5LCBgWW91IGFyZSBhbGwgcGFyZG9uZWQuJyAgYENvbWUsDQorVEhBVCdTIGEgZ29vZCB0aGluZyEnIHNoZSBzYWlkIHRvIGhlcnNlbGYsIGZvciBzaGUgaGFkIGZlbHQgcXVpdGUNCit1bmhhcHB5IGF0IHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGUgUXVlZW4gaGFkIG9yZGVyZWQuDQorDQorICBUaGV5IHZlcnkgc29vbiBjYW1lIHVwb24gYSBHcnlwaG9uLCBseWluZyBmYXN0IGFzbGVlcCBpbiB0aGUNCitzdW4uICAoSUYgeW91IGRvbid0IGtub3cgd2hhdCBhIEdyeXBob24gaXMsIGxvb2sgYXQgdGhlIHBpY3R1cmUuKQ0KK2BVcCwgbGF6eSB0aGluZyEnIHNhaWQgdGhlIFF1ZWVuLCBgYW5kIHRha2UgdGhpcyB5b3VuZyBsYWR5IHRvDQorc2VlIHRoZSBNb2NrIFR1cnRsZSwgYW5kIHRvIGhlYXIgaGlzIGhpc3RvcnkuICBJIG11c3QgZ28gYmFjayBhbmQNCitzZWUgYWZ0ZXIgc29tZSBleGVjdXRpb25zIEkgaGF2ZSBvcmRlcmVkJzsgYW5kIHNoZSB3YWxrZWQgb2ZmLA0KK2xlYXZpbmcgQWxpY2UgYWxvbmUgd2l0aCB0aGUgR3J5cGhvbi4gIEFsaWNlIGRpZCBub3QgcXVpdGUgbGlrZQ0KK3RoZSBsb29rIG9mIHRoZSBjcmVhdHVyZSwgYnV0IG9uIHRoZSB3aG9sZSBzaGUgdGhvdWdodCBpdCB3b3VsZA0KK2JlIHF1aXRlIGFzIHNhZmUgdG8gc3RheSB3aXRoIGl0IGFzIHRvIGdvIGFmdGVyIHRoYXQgc2F2YWdlDQorUXVlZW46ICBzbyBzaGUgd2FpdGVkLg0KKw0KKyAgVGhlIEdyeXBob24gc2F0IHVwIGFuZCBydWJiZWQgaXRzIGV5ZXM6ICB0aGVuIGl0IHdhdGNoZWQgdGhlDQorUXVlZW4gdGlsbCBzaGUgd2FzIG91dCBvZiBzaWdodDogIHRoZW4gaXQgY2h1Y2tsZWQuICBgV2hhdCBmdW4hJw0KK3NhaWQgdGhlIEdyeXBob24sIGhhbGYgdG8gaXRzZWxmLCBoYWxmIHRvIEFsaWNlLg0KKw0KKyAgYFdoYXQgSVMgdGhlIGZ1bj8nIHNhaWQgQWxpY2UuDQorDQorICBgV2h5LCBTSEUsJyBzYWlkIHRoZSBHcnlwaG9uLiAgYEl0J3MgYWxsIGhlciBmYW5jeSwgdGhhdDogIHRoZXkNCituZXZlciBleGVjdXRlcyBub2JvZHksIHlvdSBrbm93LiAgQ29tZSBvbiEnDQorDQorICBgRXZlcnlib2R5IHNheXMgImNvbWUgb24hIiBoZXJlLCcgdGhvdWdodCBBbGljZSwgYXMgc2hlIHdlbnQNCitzbG93bHkgYWZ0ZXIgaXQ6ICBgSSBuZXZlciB3YXMgc28gb3JkZXJlZCBhYm91dCBpbiBhbGwgbXkgbGlmZSwNCituZXZlciEnDQorDQorICBUaGV5IGhhZCBub3QgZ29uZSBmYXIgYmVmb3JlIHRoZXkgc2F3IHRoZSBNb2NrIFR1cnRsZSBpbiB0aGUNCitkaXN0YW5jZSwgc2l0dGluZyBzYWQgYW5kIGxvbmVseSBvbiBhIGxpdHRsZSBsZWRnZSBvZiByb2NrLCBhbmQsDQorYXMgdGhleSBjYW1lIG5lYXJlciwgQWxpY2UgY291bGQgaGVhciBoaW0gc2lnaGluZyBhcyBpZiBoaXMgaGVhcnQNCit3b3VsZCBicmVhay4gIFNoZSBwaXRpZWQgaGltIGRlZXBseS4gIGBXaGF0IGlzIGhpcyBzb3Jyb3c/JyBzaGUNCithc2tlZCB0aGUgR3J5cGhvbiwgYW5kIHRoZSBHcnlwaG9uIGFuc3dlcmVkLCB2ZXJ5IG5lYXJseSBpbiB0aGUNCitzYW1lIHdvcmRzIGFzIGJlZm9yZSwgYEl0J3MgYWxsIGhpcyBmYW5jeSwgdGhhdDogIGhlIGhhc24ndCBnb3QNCitubyBzb3Jyb3csIHlvdSBrbm93LiAgQ29tZSBvbiEnDQorDQorICBTbyB0aGV5IHdlbnQgdXAgdG8gdGhlIE1vY2sgVHVydGxlLCB3aG8gbG9va2VkIGF0IHRoZW0gd2l0aA0KK2xhcmdlIGV5ZXMgZnVsbCBvZiB0ZWFycywgYnV0IHNhaWQgbm90aGluZy4NCisNCisgIGBUaGlzIGhlcmUgeW91bmcgbGFkeSwnIHNhaWQgdGhlIEdyeXBob24sIGBzaGUgd2FudHMgZm9yIHRvDQora25vdyB5b3VyIGhpc3RvcnksIHNoZSBkby4nDQorDQorICBgSSdsbCB0ZWxsIGl0IGhlciwnIHNhaWQgdGhlIE1vY2sgVHVydGxlIGluIGEgZGVlcCwgaG9sbG93DQordG9uZTogIGBzaXQgZG93biwgYm90aCBvZiB5b3UsIGFuZCBkb24ndCBzcGVhayBhIHdvcmQgdGlsbCBJJ3ZlDQorZmluaXNoZWQuJw0KKw0KKyAgU28gdGhleSBzYXQgZG93biwgYW5kIG5vYm9keSBzcG9rZSBmb3Igc29tZSBtaW51dGVzLiAgQWxpY2UNCit0aG91Z2h0IHRvIGhlcnNlbGYsIGBJIGRvbid0IHNlZSBob3cgaGUgY2FuIEVWRU4gZmluaXNoLCBpZiBoZQ0KK2RvZXNuJ3QgYmVnaW4uJyAgQnV0IHNoZSB3YWl0ZWQgcGF0aWVudGx5Lg0KKw0KKyAgYE9uY2UsJyBzYWlkIHRoZSBNb2NrIFR1cnRsZSBhdCBsYXN0LCB3aXRoIGEgZGVlcCBzaWdoLCBgSSB3YXMNCithIHJlYWwgVHVydGxlLicNCisNCisgIFRoZXNlIHdvcmRzIHdlcmUgZm9sbG93ZWQgYnkgYSB2ZXJ5IGxvbmcgc2lsZW5jZSwgYnJva2VuIG9ubHkNCitieSBhbiBvY2Nhc2lvbmFsIGV4Y2xhbWF0aW9uIG9mIGBIamNrcnJoIScgZnJvbSB0aGUgR3J5cGhvbiwgYW5kDQordGhlIGNvbnN0YW50IGhlYXZ5IHNvYmJpbmcgb2YgdGhlIE1vY2sgVHVydGxlLiAgQWxpY2Ugd2FzIHZlcnkNCituZWFybHkgZ2V0dGluZyB1cCBhbmQgc2F5aW5nLCBgVGhhbmsgeW91LCBzaXIsIGZvciB5b3VyDQoraW50ZXJlc3Rpbmcgc3RvcnksJyBidXQgc2hlIGNvdWxkIG5vdCBoZWxwIHRoaW5raW5nIHRoZXJlIE1VU1QgYmUNCittb3JlIHRvIGNvbWUsIHNvIHNoZSBzYXQgc3RpbGwgYW5kIHNhaWQgbm90aGluZy4NCisNCisgIGBXaGVuIHdlIHdlcmUgbGl0dGxlLCcgdGhlIE1vY2sgVHVydGxlIHdlbnQgb24gYXQgbGFzdCwgbW9yZQ0KK2NhbG1seSwgdGhvdWdoIHN0aWxsIHNvYmJpbmcgYSBsaXR0bGUgbm93IGFuZCB0aGVuLCBgd2Ugd2VudCB0bw0KK3NjaG9vbCBpbiB0aGUgc2VhLiAgVGhlIG1hc3RlciB3YXMgYW4gb2xkIFR1cnRsZS0td2UgdXNlZCB0byBjYWxsDQoraGltIFRvcnRvaXNlLS0nDQorDQorICBgV2h5IGRpZCB5b3UgY2FsbCBoaW0gVG9ydG9pc2UsIGlmIGhlIHdhc24ndCBvbmU/JyBBbGljZSBhc2tlZC4NCisNCisgIGBXZSBjYWxsZWQgaGltIFRvcnRvaXNlIGJlY2F1c2UgaGUgdGF1Z2h0IHVzLCcgc2FpZCB0aGUgTW9jaw0KK1R1cnRsZSBhbmdyaWx5OiAgYHJlYWxseSB5b3UgYXJlIHZlcnkgZHVsbCEnDQorDQorICBgWW91IG91Z2h0IHRvIGJlIGFzaGFtZWQgb2YgeW91cnNlbGYgZm9yIGFza2luZyBzdWNoIGEgc2ltcGxlDQorcXVlc3Rpb24sJyBhZGRlZCB0aGUgR3J5cGhvbjsgYW5kIHRoZW4gdGhleSBib3RoIHNhdCBzaWxlbnQgYW5kDQorbG9va2VkIGF0IHBvb3IgQWxpY2UsIHdobyBmZWx0IHJlYWR5IHRvIHNpbmsgaW50byB0aGUgZWFydGguICBBdA0KK2xhc3QgdGhlIEdyeXBob24gc2FpZCB0byB0aGUgTW9jayBUdXJ0bGUsIGBEcml2ZSBvbiwgb2xkIGZlbGxvdyENCitEb24ndCBiZSBhbGwgZGF5IGFib3V0IGl0IScgYW5kIGhlIHdlbnQgb24gaW4gdGhlc2Ugd29yZHM6DQorDQorICBgWWVzLCB3ZSB3ZW50IHRvIHNjaG9vbCBpbiB0aGUgc2VhLCB0aG91Z2ggeW91IG1heW4ndCBiZWxpZXZlDQoraXQtLScNCisNCisgIGBJIG5ldmVyIHNhaWQgSSBkaWRuJ3QhJyBpbnRlcnJ1cHRlZCBBbGljZS4NCisNCisgIGBZb3UgZGlkLCcgc2FpZCB0aGUgTW9jayBUdXJ0bGUuDQorDQorICBgSG9sZCB5b3VyIHRvbmd1ZSEnIGFkZGVkIHRoZSBHcnlwaG9uLCBiZWZvcmUgQWxpY2UgY291bGQgc3BlYWsNCithZ2Fpbi4gIFRoZSBNb2NrIFR1cnRsZSB3ZW50IG9uLg0KKw0KKyAgYFdlIGhhZCB0aGUgYmVzdCBvZiBlZHVjYXRpb25zLS1pbiBmYWN0LCB3ZSB3ZW50IHRvIHNjaG9vbA0KK2V2ZXJ5IGRheS0tJw0KKw0KKyAgYEknVkUgYmVlbiB0byBhIGRheS1zY2hvb2wsIHRvbywnIHNhaWQgQWxpY2U7IGB5b3UgbmVlZG4ndCBiZQ0KK3NvIHByb3VkIGFzIGFsbCB0aGF0LicNCisNCisgIGBXaXRoIGV4dHJhcz8nIGFza2VkIHRoZSBNb2NrIFR1cnRsZSBhIGxpdHRsZSBhbnhpb3VzbHkuDQorDQorICBgWWVzLCcgc2FpZCBBbGljZSwgYHdlIGxlYXJuZWQgRnJlbmNoIGFuZCBtdXNpYy4nDQorDQorICBgQW5kIHdhc2hpbmc/JyBzYWlkIHRoZSBNb2NrIFR1cnRsZS4NCisNCisgIGBDZXJ0YWlubHkgbm90IScgc2FpZCBBbGljZSBpbmRpZ25hbnRseS4NCisNCisgIGBBaCEgdGhlbiB5b3VycyB3YXNuJ3QgYSByZWFsbHkgZ29vZCBzY2hvb2wsJyBzYWlkIHRoZSBNb2NrDQorVHVydGxlIGluIGEgdG9uZSBvZiBncmVhdCByZWxpZWYuICBgTm93IGF0IE9VUlMgdGhleSBoYWQgYXQgdGhlDQorZW5kIG9mIHRoZSBiaWxsLCAiRnJlbmNoLCBtdXNpYywgQU5EIFdBU0hJTkctLWV4dHJhLiInDQorDQorICBgWW91IGNvdWxkbid0IGhhdmUgd2FudGVkIGl0IG11Y2gsJyBzYWlkIEFsaWNlOyBgbGl2aW5nIGF0IHRoZQ0KK2JvdHRvbSBvZiB0aGUgc2VhLicNCisNCisgIGBJIGNvdWxkbid0IGFmZm9yZCB0byBsZWFybiBpdC4nIHNhaWQgdGhlIE1vY2sgVHVydGxlIHdpdGggYQ0KK3NpZ2guICBgSSBvbmx5IHRvb2sgdGhlIHJlZ3VsYXIgY291cnNlLicNCisNCisgIGBXaGF0IHdhcyB0aGF0PycgaW5xdWlyZWQgQWxpY2UuDQorDQorICBgUmVlbGluZyBhbmQgV3JpdGhpbmcsIG9mIGNvdXJzZSwgdG8gYmVnaW4gd2l0aCwnIHRoZSBNb2NrDQorVHVydGxlIHJlcGxpZWQ7IGBhbmQgdGhlbiB0aGUgZGlmZmVyZW50IGJyYW5jaGVzIG9mIEFyaXRobWV0aWMtLQ0KK0FtYml0aW9uLCBEaXN0cmFjdGlvbiwgVWdsaWZpY2F0aW9uLCBhbmQgRGVyaXNpb24uJw0KKw0KKyAgYEkgbmV2ZXIgaGVhcmQgb2YgIlVnbGlmaWNhdGlvbiwiJyBBbGljZSB2ZW50dXJlZCB0byBzYXkuICBgV2hhdA0KK2lzIGl0PycNCisNCisgIFRoZSBHcnlwaG9uIGxpZnRlZCB1cCBib3RoIGl0cyBwYXdzIGluIHN1cnByaXNlLiAgYFdoYXQhICBOZXZlcg0KK2hlYXJkIG9mIHVnbGlmeWluZyEnIGl0IGV4Y2xhaW1lZC4gIGBZb3Uga25vdyB3aGF0IHRvIGJlYXV0aWZ5DQoraXMsIEkgc3VwcG9zZT8nDQorDQorICBgWWVzLCcgc2FpZCBBbGljZSBkb3VidGZ1bGx5OiAgYGl0IG1lYW5zLS10by0tbWFrZS0tYW55dGhpbmctLQ0KK3ByZXR0aWVyLicNCisNCisgIGBXZWxsLCB0aGVuLCcgdGhlIEdyeXBob24gd2VudCBvbiwgYGlmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8NCit1Z2xpZnkgaXMsIHlvdSBBUkUgYSBzaW1wbGV0b24uJw0KKw0KKyAgQWxpY2UgZGlkIG5vdCBmZWVsIGVuY291cmFnZWQgdG8gYXNrIGFueSBtb3JlIHF1ZXN0aW9ucyBhYm91dA0KK2l0LCBzbyBzaGUgdHVybmVkIHRvIHRoZSBNb2NrIFR1cnRsZSwgYW5kIHNhaWQgYFdoYXQgZWxzZSBoYWQgeW91DQordG8gbGVhcm4/Jw0KKw0KKyAgYFdlbGwsIHRoZXJlIHdhcyBNeXN0ZXJ5LCcgdGhlIE1vY2sgVHVydGxlIHJlcGxpZWQsIGNvdW50aW5nDQorb2ZmIHRoZSBzdWJqZWN0cyBvbiBoaXMgZmxhcHBlcnMsIGAtLU15c3RlcnksIGFuY2llbnQgYW5kIG1vZGVybiwNCit3aXRoIFNlYW9ncmFwaHk6ICB0aGVuIERyYXdsaW5nLS10aGUgRHJhd2xpbmctbWFzdGVyIHdhcyBhbiBvbGQNCitjb25nZXItZWVsLCB0aGF0IHVzZWQgdG8gY29tZSBvbmNlIGEgd2VlazogIEhFIHRhdWdodCB1cw0KK0RyYXdsaW5nLCBTdHJldGNoaW5nLCBhbmQgRmFpbnRpbmcgaW4gQ29pbHMuJw0KKw0KKyAgYFdoYXQgd2FzIFRIQVQgbGlrZT8nIHNhaWQgQWxpY2UuDQorDQorICBgV2VsbCwgSSBjYW4ndCBzaG93IGl0IHlvdSBteXNlbGYsJyB0aGUgTW9jayBUdXJ0bGUgc2FpZDogIGBJJ20NCit0b28gc3RpZmYuICBBbmQgdGhlIEdyeXBob24gbmV2ZXIgbGVhcm50IGl0LicNCisNCisgIGBIYWRuJ3QgdGltZSwnIHNhaWQgdGhlIEdyeXBob246ICBgSSB3ZW50IHRvIHRoZSBDbGFzc2ljcw0KK21hc3RlciwgdGhvdWdoLiAgSGUgd2FzIGFuIG9sZCBjcmFiLCBIRSB3YXMuJw0KKw0KKyAgYEkgbmV2ZXIgd2VudCB0byBoaW0sJyB0aGUgTW9jayBUdXJ0bGUgc2FpZCB3aXRoIGEgc2lnaDogIGBoZQ0KK3RhdWdodCBMYXVnaGluZyBhbmQgR3JpZWYsIHRoZXkgdXNlZCB0byBzYXkuJw0KKw0KKyAgYFNvIGhlIGRpZCwgc28gaGUgZGlkLCcgc2FpZCB0aGUgR3J5cGhvbiwgc2lnaGluZyBpbiBoaXMgdHVybjsNCithbmQgYm90aCBjcmVhdHVyZXMgaGlkIHRoZWlyIGZhY2VzIGluIHRoZWlyIHBhd3MuDQorDQorICBgQW5kIGhvdyBtYW55IGhvdXJzIGEgZGF5IGRpZCB5b3UgZG8gbGVzc29ucz8nIHNhaWQgQWxpY2UsIGluIGENCitodXJyeSB0byBjaGFuZ2UgdGhlIHN1YmplY3QuDQorDQorICBgVGVuIGhvdXJzIHRoZSBmaXJzdCBkYXksJyBzYWlkIHRoZSBNb2NrIFR1cnRsZTogYG5pbmUgdGhlDQorbmV4dCwgYW5kIHNvIG9uLicNCisNCisgIGBXaGF0IGEgY3VyaW91cyBwbGFuIScgZXhjbGFpbWVkIEFsaWNlLg0KKw0KKyAgYFRoYXQncyB0aGUgcmVhc29uIHRoZXkncmUgY2FsbGVkIGxlc3NvbnMsJyB0aGUgR3J5cGhvbg0KK3JlbWFya2VkOiAgYGJlY2F1c2UgdGhleSBsZXNzZW4gZnJvbSBkYXkgdG8gZGF5LicNCisNCisgIFRoaXMgd2FzIHF1aXRlIGEgbmV3IGlkZWEgdG8gQWxpY2UsIGFuZCBzaGUgdGhvdWdodCBpdCBvdmVyIGENCitsaXR0bGUgYmVmb3JlIHNoZSBtYWRlIGhlciBuZXh0IHJlbWFyay4gIGBUaGVuIHRoZSBlbGV2ZW50aCBkYXkNCittdXN0IGhhdmUgYmVlbiBhIGhvbGlkYXk/Jw0KKw0KKyAgYE9mIGNvdXJzZSBpdCB3YXMsJyBzYWlkIHRoZSBNb2NrIFR1cnRsZS4NCisNCisgIGBBbmQgaG93IGRpZCB5b3UgbWFuYWdlIG9uIHRoZSB0d2VsZnRoPycgQWxpY2Ugd2VudCBvbiBlYWdlcmx5Lg0KKw0KKyAgYFRoYXQncyBlbm91Z2ggYWJvdXQgbGVzc29ucywnIHRoZSBHcnlwaG9uIGludGVycnVwdGVkIGluIGENCit2ZXJ5IGRlY2lkZWQgdG9uZTogIGB0ZWxsIGhlciBzb21ldGhpbmcgYWJvdXQgdGhlIGdhbWVzIG5vdy4nDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQVBURVIgWA0KKw0KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgTG9ic3RlciBRdWFkcmlsbGUNCisNCisNCisgIFRoZSBNb2NrIFR1cnRsZSBzaWdoZWQgZGVlcGx5LCBhbmQgZHJldyB0aGUgYmFjayBvZiBvbmUgZmxhcHBlcg0KK2Fjcm9zcyBoaXMgZXllcy4gIEhlIGxvb2tlZCBhdCBBbGljZSwgYW5kIHRyaWVkIHRvIHNwZWFrLCBidXQgZm9yDQorYSBtaW51dGUgb3IgdHdvIHNvYnMgY2hva2VkIGhpcyB2b2ljZS4gIGBTYW1lIGFzIGlmIGhlIGhhZCBhIGJvbmUNCitpbiBoaXMgdGhyb2F0LCcgc2FpZCB0aGUgR3J5cGhvbjogIGFuZCBpdCBzZXQgdG8gd29yayBzaGFraW5nIGhpbQ0KK2FuZCBwdW5jaGluZyBoaW0gaW4gdGhlIGJhY2suICBBdCBsYXN0IHRoZSBNb2NrIFR1cnRsZSByZWNvdmVyZWQNCitoaXMgdm9pY2UsIGFuZCwgd2l0aCB0ZWFycyBydW5uaW5nIGRvd24gaGlzIGNoZWVrcywgaGUgd2VudCBvbg0KK2FnYWluOi0tDQorDQorICBgWW91IG1heSBub3QgaGF2ZSBsaXZlZCBtdWNoIHVuZGVyIHRoZSBzZWEtLScgKGBJIGhhdmVuJ3QsJw0KK3NhaWQgQWxpY2UpLS1gYW5kIHBlcmhhcHMgeW91IHdlcmUgbmV2ZXIgZXZlbiBpbnRyb2R1Y2VkIHRvIGEgbG9ic3Rlci0tJw0KKyhBbGljZSBiZWdhbiB0byBzYXkgYEkgb25jZSB0YXN0ZWQtLScgYnV0IGNoZWNrZWQgaGVyc2VsZiBoYXN0aWx5LA0KK2FuZCBzYWlkIGBObywgbmV2ZXInKSBgLS1zbyB5b3UgY2FuIGhhdmUgbm8gaWRlYSB3aGF0IGEgZGVsaWdodGZ1bA0KK3RoaW5nIGEgTG9ic3RlciBRdWFkcmlsbGUgaXMhJw0KKw0KKyAgYE5vLCBpbmRlZWQsJyBzYWlkIEFsaWNlLiAgYFdoYXQgc29ydCBvZiBhIGRhbmNlIGlzIGl0PycNCisNCisgIGBXaHksJyBzYWlkIHRoZSBHcnlwaG9uLCBgeW91IGZpcnN0IGZvcm0gaW50byBhIGxpbmUgYWxvbmcgdGhlDQorc2VhLXNob3JlLS0nDQorDQorICBgVHdvIGxpbmVzIScgY3JpZWQgdGhlIE1vY2sgVHVydGxlLiAgYFNlYWxzLCB0dXJ0bGVzLCBzYWxtb24sDQorYW5kIHNvIG9uOyB0aGVuLCB3aGVuIHlvdSd2ZSBjbGVhcmVkIGFsbCB0aGUgamVsbHktZmlzaCBvdXQgb2YNCit0aGUgd2F5LS0nDQorDQorICBgVEhBVCBnZW5lcmFsbHkgdGFrZXMgc29tZSB0aW1lLCcgaW50ZXJydXB0ZWQgdGhlIEdyeXBob24uDQorDQorICBgLS15b3UgYWR2YW5jZSB0d2ljZS0tJw0KKw0KKyAgYEVhY2ggd2l0aCBhIGxvYnN0ZXIgYXMgYSBwYXJ0bmVyIScgY3JpZWQgdGhlIEdyeXBob24uDQorDQorICBgT2YgY291cnNlLCcgdGhlIE1vY2sgVHVydGxlIHNhaWQ6ICBgYWR2YW5jZSB0d2ljZSwgc2V0IHRvDQorcGFydG5lcnMtLScNCisNCisgIGAtLWNoYW5nZSBsb2JzdGVycywgYW5kIHJldGlyZSBpbiBzYW1lIG9yZGVyLCcgY29udGludWVkIHRoZQ0KK0dyeXBob24uDQorDQorICBgVGhlbiwgeW91IGtub3csJyB0aGUgTW9jayBUdXJ0bGUgd2VudCBvbiwgYHlvdSB0aHJvdyB0aGUtLScNCisNCisgIGBUaGUgbG9ic3RlcnMhJyBzaG91dGVkIHRoZSBHcnlwaG9uLCB3aXRoIGEgYm91bmQgaW50byB0aGUgYWlyLg0KKw0KKyAgYC0tYXMgZmFyIG91dCB0byBzZWEgYXMgeW91IGNhbi0tJw0KKw0KKyAgYFN3aW0gYWZ0ZXIgdGhlbSEnIHNjcmVhbWVkIHRoZSBHcnlwaG9uLg0KKw0KKyAgYFR1cm4gYSBzb21lcnNhdWx0IGluIHRoZSBzZWEhJyBjcmllZCB0aGUgTW9jayBUdXJ0bGUsDQorY2FwZXJpbmcgd2lsZGx5IGFib3V0Lg0KKw0KKyAgYEJhY2sgdG8gbGFuZCBhZ2FpbiwgYW5kIHRoYXQncyBhbGwgdGhlIGZpcnN0IGZpZ3VyZSwnIHNhaWQgdGhlDQorTW9jayBUdXJ0bGUsIHN1ZGRlbmx5IGRyb3BwaW5nIGhpcyB2b2ljZTsgYW5kIHRoZSB0d28gY3JlYXR1cmVzLA0KK3dobyBoYWQgYmVlbiBqdW1waW5nIGFib3V0IGxpa2UgbWFkIHRoaW5ncyBhbGwgdGhpcyB0aW1lLCBzYXQNCitkb3duIGFnYWluIHZlcnkgc2FkbHkgYW5kIHF1aWV0bHksIGFuZCBsb29rZWQgYXQgQWxpY2UuDQorDQorICBgSXQgbXVzdCBiZSBhIHZlcnkgcHJldHR5IGRhbmNlLCcgc2FpZCBBbGljZSB0aW1pZGx5Lg0KKw0KKyAgYFdvdWxkIHlvdSBsaWtlIHRvIHNlZSBhIGxpdHRsZSBvZiBpdD8nIHNhaWQgdGhlIE1vY2sgVHVydGxlLg0KKw0KKyAgYFZlcnkgbXVjaCBpbmRlZWQsJyBzYWlkIEFsaWNlLg0KKw0KKyAgYENvbWUsIGxldCdzIHRyeSB0aGUgZmlyc3QgZmlndXJlIScgc2FpZCB0aGUgTW9jayBUdXJ0bGUgdG8gdGhlDQorR3J5cGhvbi4gIGBXZSBjYW4gZG8gd2l0aG91dCBsb2JzdGVycywgeW91IGtub3cuICBXaGljaCBzaGFsbA0KK3Npbmc/Jw0KKw0KKyAgYE9oLCBZT1Ugc2luZywnIHNhaWQgdGhlIEdyeXBob24uICBgSSd2ZSBmb3Jnb3R0ZW4gdGhlIHdvcmRzLicNCisNCisgIFNvIHRoZXkgYmVnYW4gc29sZW1ubHkgZGFuY2luZyByb3VuZCBhbmQgcm91bmQgQWxpY2UsIGV2ZXJ5IG5vdw0KK2FuZCB0aGVuIHRyZWFkaW5nIG9uIGhlciB0b2VzIHdoZW4gdGhleSBwYXNzZWQgdG9vIGNsb3NlLCBhbmQNCit3YXZpbmcgdGhlaXIgZm9yZXBhd3MgdG8gbWFyayB0aGUgdGltZSwgd2hpbGUgdGhlIE1vY2sgVHVydGxlDQorc2FuZyB0aGlzLCB2ZXJ5IHNsb3dseSBhbmQgc2FkbHk6LS0NCisNCisNCitgIldpbGwgeW91IHdhbGsgYSBsaXR0bGUgZmFzdGVyPyIgc2FpZCBhIHdoaXRpbmcgdG8gYSBzbmFpbC4NCisiVGhlcmUncyBhIHBvcnBvaXNlIGNsb3NlIGJlaGluZCB1cywgYW5kIGhlJ3MgdHJlYWRpbmcgb24gbXkNCisgdGFpbC4NCitTZWUgaG93IGVhZ2VybHkgdGhlIGxvYnN0ZXJzIGFuZCB0aGUgdHVydGxlcyBhbGwgYWR2YW5jZSENCitUaGV5IGFyZSB3YWl0aW5nIG9uIHRoZSBzaGluZ2xlLS13aWxsIHlvdSBjb21lIGFuZCBqb2luIHRoZQ0KK2RhbmNlPw0KKw0KK1dpbGwgeW91LCB3b24ndCB5b3UsIHdpbGwgeW91LCB3b24ndCB5b3UsIHdpbGwgeW91IGpvaW4gdGhlDQorZGFuY2U/DQorV2lsbCB5b3UsIHdvbid0IHlvdSwgd2lsbCB5b3UsIHdvbid0IHlvdSwgd29uJ3QgeW91IGpvaW4gdGhlDQorZGFuY2U/DQorDQorDQorIllvdSBjYW4gcmVhbGx5IGhhdmUgbm8gbm90aW9uIGhvdyBkZWxpZ2h0ZnVsIGl0IHdpbGwgYmUNCitXaGVuIHRoZXkgdGFrZSB1cyB1cCBhbmQgdGhyb3cgdXMsIHdpdGggdGhlIGxvYnN0ZXJzLCBvdXQgdG8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWEhIg0KK0J1dCB0aGUgc25haWwgcmVwbGllZCAiVG9vIGZhciwgdG9vIGZhciEiIGFuZCBnYXZlIGEgbG9vaw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2thbmNlLS0NCitTYWlkIGhlIHRoYW5rZWQgdGhlIHdoaXRpbmcga2luZGx5LCBidXQgaGUgd291bGQgbm90IGpvaW4gdGhlDQorICAgZGFuY2UuDQorICAgIFdvdWxkIG5vdCwgY291bGQgbm90LCB3b3VsZCBub3QsIGNvdWxkIG5vdCwgd291bGQgbm90IGpvaW4NCisgICAgICAgIHRoZSBkYW5jZS4NCisgICAgV291bGQgbm90LCBjb3VsZCBub3QsIHdvdWxkIG5vdCwgY291bGQgbm90LCBjb3VsZCBub3Qgam9pbg0KKyAgICAgICAgdGhlIGRhbmNlLg0KKw0KK2AiV2hhdCBtYXR0ZXJzIGl0IGhvdyBmYXIgd2UgZ28/IiBoaXMgc2NhbHkgZnJpZW5kIHJlcGxpZWQuDQorIlRoZXJlIGlzIGFub3RoZXIgc2hvcmUsIHlvdSBrbm93LCB1cG9uIHRoZSBvdGhlciBzaWRlLg0KK1RoZSBmdXJ0aGVyIG9mZiBmcm9tIEVuZ2xhbmQgdGhlIG5lYXJlciBpcyB0byBGcmFuY2UtLQ0KK1RoZW4gdHVybiBub3QgcGFsZSwgYmVsb3ZlZCBzbmFpbCwgYnV0IGNvbWUgYW5kIGpvaW4gdGhlIGRhbmNlLg0KKw0KKyAgICBXaWxsIHlvdSwgd29uJ3QgeW91LCB3aWxsIHlvdSwgd29uJ3QgeW91LCB3aWxsIHlvdSBqb2luIHRoZQ0KKyAgICAgICAgIGRhbmNlPw0KKyAgICBXaWxsIHlvdSwgd29uJ3QgeW91LCB3aWxsIHlvdSwgd29uJ3QgeW91LCB3b24ndCB5b3Ugam9pbiB0aGUNCisgICAgICAgICBkYW5jZT8iJw0KKw0KKw0KKw0KKyAgYFRoYW5rIHlvdSwgaXQncyBhIHZlcnkgaW50ZXJlc3RpbmcgZGFuY2UgdG8gd2F0Y2gsJyBzYWlkDQorQWxpY2UsIGZlZWxpbmcgdmVyeSBnbGFkIHRoYXQgaXQgd2FzIG92ZXIgYXQgbGFzdDogIGBhbmQgSSBkbyBzbw0KK2xpa2UgdGhhdCBjdXJpb3VzIHNvbmcgYWJvdXQgdGhlIHdoaXRpbmchJw0KKw0KKyAgYE9oLCBhcyB0byB0aGUgd2hpdGluZywnIHNhaWQgdGhlIE1vY2sgVHVydGxlLCBgdGhleS0teW91J3ZlDQorc2VlbiB0aGVtLCBvZiBjb3Vyc2U/Jw0KKw0KKyAgYFllcywnIHNhaWQgQWxpY2UsIGBJJ3ZlIG9mdGVuIHNlZW4gdGhlbSBhdCBkaW5uLS0nIHNoZQ0KK2NoZWNrZWQgaGVyc2VsZiBoYXN0aWx5Lg0KKw0KKyAgYEkgZG9uJ3Qga25vdyB3aGVyZSBEaW5uIG1heSBiZSwnIHNhaWQgdGhlIE1vY2sgVHVydGxlLCBgYnV0DQoraWYgeW91J3ZlIHNlZW4gdGhlbSBzbyBvZnRlbiwgb2YgY291cnNlIHlvdSBrbm93IHdoYXQgdGhleSdyZQ0KK2xpa2UuJw0KKw0KKyAgYEkgYmVsaWV2ZSBzbywnIEFsaWNlIHJlcGxpZWQgdGhvdWdodGZ1bGx5LiAgYFRoZXkgaGF2ZSB0aGVpcg0KK3RhaWxzIGluIHRoZWlyIG1vdXRocy0tYW5kIHRoZXkncmUgYWxsIG92ZXIgY3J1bWJzLicNCisNCisgIGBZb3UncmUgd3JvbmcgYWJvdXQgdGhlIGNydW1icywnIHNhaWQgdGhlIE1vY2sgVHVydGxlOg0KK2BjcnVtYnMgd291bGQgYWxsIHdhc2ggb2ZmIGluIHRoZSBzZWEuICBCdXQgdGhleSBIQVZFIHRoZWlyIHRhaWxzDQoraW4gdGhlaXIgbW91dGhzOyBhbmQgdGhlIHJlYXNvbiBpcy0tJyBoZXJlIHRoZSBNb2NrIFR1cnRsZQ0KK3lhd25lZCBhbmQgc2h1dCBoaXMgZXllcy4tLWBUZWxsIGhlciBhYm91dCB0aGUgcmVhc29uIGFuZCBhbGwNCit0aGF0LCcgaGUgc2FpZCB0byB0aGUgR3J5cGhvbi4NCisNCisgIGBUaGUgcmVhc29uIGlzLCcgc2FpZCB0aGUgR3J5cGhvbiwgYHRoYXQgdGhleSBXT1VMRCBnbyB3aXRoDQordGhlIGxvYnN0ZXJzIHRvIHRoZSBkYW5jZS4gIFNvIHRoZXkgZ290IHRocm93biBvdXQgdG8gc2VhLiAgU28NCit0aGV5IGhhZCB0byBmYWxsIGEgbG9uZyB3YXkuICBTbyB0aGV5IGdvdCB0aGVpciB0YWlscyBmYXN0IGluDQordGhlaXIgbW91dGhzLiAgU28gdGhleSBjb3VsZG4ndCBnZXQgdGhlbSBvdXQgYWdhaW4uICBUaGF0J3MgYWxsLicNCisNCisgIGBUaGFuayB5b3UsJyBzYWlkIEFsaWNlLCBgaXQncyB2ZXJ5IGludGVyZXN0aW5nLiAgSSBuZXZlciBrbmV3DQorc28gbXVjaCBhYm91dCBhIHdoaXRpbmcgYmVmb3JlLicNCisNCisgIGBJIGNhbiB0ZWxsIHlvdSBtb3JlIHRoYW4gdGhhdCwgaWYgeW91IGxpa2UsJyBzYWlkIHRoZQ0KK0dyeXBob24uICBgRG8geW91IGtub3cgd2h5IGl0J3MgY2FsbGVkIGEgd2hpdGluZz8nDQorDQorICBgSSBuZXZlciB0aG91Z2h0IGFib3V0IGl0LCcgc2FpZCBBbGljZS4gIGBXaHk/Jw0KKw0KKyAgYElUIERPRVMgVEhFIEJPT1RTIEFORCBTSE9FUy4nIHRoZSBHcnlwaG9uIHJlcGxpZWQgdmVyeQ0KK3NvbGVtbmx5Lg0KKw0KKyAgQWxpY2Ugd2FzIHRob3JvdWdobHkgcHV6emxlZC4gIGBEb2VzIHRoZSBib290cyBhbmQgc2hvZXMhJyBzaGUNCityZXBlYXRlZCBpbiBhIHdvbmRlcmluZyB0b25lLg0KKw0KKyAgYFdoeSwgd2hhdCBhcmUgWU9VUiBzaG9lcyBkb25lIHdpdGg/JyBzYWlkIHRoZSBHcnlwaG9uLiAgYEkNCittZWFuLCB3aGF0IG1ha2VzIHRoZW0gc28gc2hpbnk/Jw0KKw0KKyAgQWxpY2UgbG9va2VkIGRvd24gYXQgdGhlbSwgYW5kIGNvbnNpZGVyZWQgYSBsaXR0bGUgYmVmb3JlIHNoZQ0KK2dhdmUgaGVyIGFuc3dlci4gIGBUaGV5J3JlIGRvbmUgd2l0aCBibGFja2luZywgSSBiZWxpZXZlLicNCisNCisgIGBCb290cyBhbmQgc2hvZXMgdW5kZXIgdGhlIHNlYSwnIHRoZSBHcnlwaG9uIHdlbnQgb24gaW4gYSBkZWVwDQordm9pY2UsIGBhcmUgZG9uZSB3aXRoIGEgd2hpdGluZy4gIE5vdyB5b3Uga25vdy4nDQorDQorICBgQW5kIHdoYXQgYXJlIHRoZXkgbWFkZSBvZj8nIEFsaWNlIGFza2VkIGluIGEgdG9uZSBvZiBncmVhdA0KK2N1cmlvc2l0eS4NCisNCisgIGBTb2xlcyBhbmQgZWVscywgb2YgY291cnNlLCcgdGhlIEdyeXBob24gcmVwbGllZCByYXRoZXINCitpbXBhdGllbnRseTogIGBhbnkgc2hyaW1wIGNvdWxkIGhhdmUgdG9sZCB5b3UgdGhhdC4nDQorDQorICBgSWYgSSdkIGJlZW4gdGhlIHdoaXRpbmcsJyBzYWlkIEFsaWNlLCB3aG9zZSB0aG91Z2h0cyB3ZXJlDQorc3RpbGwgcnVubmluZyBvbiB0aGUgc29uZywgYEknZCBoYXZlIHNhaWQgdG8gdGhlIHBvcnBvaXNlLCAiS2VlcA0KK2JhY2ssIHBsZWFzZTogIHdlIGRvbid0IHdhbnQgWU9VIHdpdGggdXMhIicNCisNCisgIGBUaGV5IHdlcmUgb2JsaWdlZCB0byBoYXZlIGhpbSB3aXRoIHRoZW0sJyB0aGUgTW9jayBUdXJ0bGUNCitzYWlkOiAgYG5vIHdpc2UgZmlzaCB3b3VsZCBnbyBhbnl3aGVyZSB3aXRob3V0IGEgcG9ycG9pc2UuJw0KKw0KKyAgYFdvdWxkbid0IGl0IHJlYWxseT8nIHNhaWQgQWxpY2UgaW4gYSB0b25lIG9mIGdyZWF0IHN1cnByaXNlLg0KKw0KKyAgYE9mIGNvdXJzZSBub3QsJyBzYWlkIHRoZSBNb2NrIFR1cnRsZTogIGB3aHksIGlmIGEgZmlzaCBjYW1lDQordG8gTUUsIGFuZCB0b2xkIG1lIGhlIHdhcyBnb2luZyBhIGpvdXJuZXksIEkgc2hvdWxkIHNheSAiV2l0aA0KK3doYXQgcG9ycG9pc2U/IicNCisNCisgIGBEb24ndCB5b3UgbWVhbiAicHVycG9zZSI/JyBzYWlkIEFsaWNlLg0KKw0KKyAgYEkgbWVhbiB3aGF0IEkgc2F5LCcgdGhlIE1vY2sgVHVydGxlIHJlcGxpZWQgaW4gYW4gb2ZmZW5kZWQNCit0b25lLiAgQW5kIHRoZSBHcnlwaG9uIGFkZGVkIGBDb21lLCBsZXQncyBoZWFyIHNvbWUgb2YgWU9VUg0KK2FkdmVudHVyZXMuJw0KKw0KKyAgYEkgY291bGQgdGVsbCB5b3UgbXkgYWR2ZW50dXJlcy0tYmVnaW5uaW5nIGZyb20gdGhpcyBtb3JuaW5nLCcNCitzYWlkIEFsaWNlIGEgbGl0dGxlIHRpbWlkbHk6ICBgYnV0IGl0J3Mgbm8gdXNlIGdvaW5nIGJhY2sgdG8NCit5ZXN0ZXJkYXksIGJlY2F1c2UgSSB3YXMgYSBkaWZmZXJlbnQgcGVyc29uIHRoZW4uJw0KKw0KKyAgYEV4cGxhaW4gYWxsIHRoYXQsJyBzYWlkIHRoZSBNb2NrIFR1cnRsZS4NCisNCisgIGBObywgbm8hICBUaGUgYWR2ZW50dXJlcyBmaXJzdCwnIHNhaWQgdGhlIEdyeXBob24gaW4gYW4NCitpbXBhdGllbnQgdG9uZTogIGBleHBsYW5hdGlvbnMgdGFrZSBzdWNoIGEgZHJlYWRmdWwgdGltZS4nDQorDQorICBTbyBBbGljZSBiZWdhbiB0ZWxsaW5nIHRoZW0gaGVyIGFkdmVudHVyZXMgZnJvbSB0aGUgdGltZSB3aGVuDQorc2hlIGZpcnN0IHNhdyB0aGUgV2hpdGUgUmFiYml0LiAgU2hlIHdhcyBhIGxpdHRsZSBuZXJ2b3VzIGFib3V0DQoraXQganVzdCBhdCBmaXJzdCwgdGhlIHR3byBjcmVhdHVyZXMgZ290IHNvIGNsb3NlIHRvIGhlciwgb25lIG9uDQorZWFjaCBzaWRlLCBhbmQgb3BlbmVkIHRoZWlyIGV5ZXMgYW5kIG1vdXRocyBzbyBWRVJZIHdpZGUsIGJ1dCBzaGUNCitnYWluZWQgY291cmFnZSBhcyBzaGUgd2VudCBvbi4gIEhlciBsaXN0ZW5lcnMgd2VyZSBwZXJmZWN0bHkNCitxdWlldCB0aWxsIHNoZSBnb3QgdG8gdGhlIHBhcnQgYWJvdXQgaGVyIHJlcGVhdGluZyBgWU9VIEFSRSBPTEQsDQorRkFUSEVSIFdJTExJQU0sJyB0byB0aGUgQ2F0ZXJwaWxsYXIsIGFuZCB0aGUgd29yZHMgYWxsIGNvbWluZw0KK2RpZmZlcmVudCwgYW5kIHRoZW4gdGhlIE1vY2sgVHVydGxlIGRyZXcgYSBsb25nIGJyZWF0aCwgYW5kIHNhaWQNCitgVGhhdCdzIHZlcnkgY3VyaW91cy4nDQorDQorICBgSXQncyBhbGwgYWJvdXQgYXMgY3VyaW91cyBhcyBpdCBjYW4gYmUsJyBzYWlkIHRoZSBHcnlwaG9uLg0KKw0KKyAgYEl0IGFsbCBjYW1lIGRpZmZlcmVudCEnIHRoZSBNb2NrIFR1cnRsZSByZXBlYXRlZA0KK3Rob3VnaHRmdWxseS4gIGBJIHNob3VsZCBsaWtlIHRvIGhlYXIgaGVyIHRyeSBhbmQgcmVwZWF0DQorc29tZXRoaW5nIG5vdy4gIFRlbGwgaGVyIHRvIGJlZ2luLicgIEhlIGxvb2tlZCBhdCB0aGUgR3J5cGhvbiBhcw0KK2lmIGhlIHRob3VnaHQgaXQgaGFkIHNvbWUga2luZCBvZiBhdXRob3JpdHkgb3ZlciBBbGljZS4NCisNCisgIGBTdGFuZCB1cCBhbmQgcmVwZWF0ICInVElTIFRIRSBWT0lDRSBPRiBUSEUgU0xVR0dBUkQsIicgc2FpZA0KK3RoZSBHcnlwaG9uLg0KKw0KKyAgYEhvdyB0aGUgY3JlYXR1cmVzIG9yZGVyIG9uZSBhYm91dCwgYW5kIG1ha2Ugb25lIHJlcGVhdA0KK2xlc3NvbnMhJyB0aG91Z2h0IEFsaWNlOyBgSSBtaWdodCBhcyB3ZWxsIGJlIGF0IHNjaG9vbCBhdCBvbmNlLicNCitIb3dldmVyLCBzaGUgZ290IHVwLCBhbmQgYmVnYW4gdG8gcmVwZWF0IGl0LCBidXQgaGVyIGhlYWQgd2FzIHNvDQorZnVsbCBvZiB0aGUgTG9ic3RlciBRdWFkcmlsbGUsIHRoYXQgc2hlIGhhcmRseSBrbmV3IHdoYXQgc2hlIHdhcw0KK3NheWluZywgYW5kIHRoZSB3b3JkcyBjYW1lIHZlcnkgcXVlZXIgaW5kZWVkOi0tDQorDQorICAgIGAnVGlzIHRoZSB2b2ljZSBvZiB0aGUgTG9ic3RlcjsgSSBoZWFyZCBoaW0gZGVjbGFyZSwNCisgICAgIllvdSBoYXZlIGJha2VkIG1lIHRvbyBicm93biwgSSBtdXN0IHN1Z2FyIG15IGhhaXIuIg0KKyAgICBBcyBhIGR1Y2sgd2l0aCBpdHMgZXllbGlkcywgc28gaGUgd2l0aCBoaXMgbm9zZQ0KKyAgICBUcmltcyBoaXMgYmVsdCBhbmQgaGlzIGJ1dHRvbnMsIGFuZCB0dXJucyBvdXQgaGlzIHRvZXMuJw0KKw0KKyAgICAgICAgICAgICAgW2xhdGVyIGVkaXRpb25zIGNvbnRpbnVlZCBhcyBmb2xsb3dzDQorICAgIFdoZW4gdGhlIHNhbmRzIGFyZSBhbGwgZHJ5LCBoZSBpcyBnYXkgYXMgYSBsYXJrLA0KKyAgICBBbmQgd2lsbCB0YWxrIGluIGNvbnRlbXB0dW91cyB0b25lcyBvZiB0aGUgU2hhcmssDQorICAgIEJ1dCwgd2hlbiB0aGUgdGlkZSByaXNlcyBhbmQgc2hhcmtzIGFyZSBhcm91bmQsDQorICAgIEhpcyB2b2ljZSBoYXMgYSB0aW1pZCBhbmQgdHJlbXVsb3VzIHNvdW5kLl0NCisNCisgIGBUaGF0J3MgZGlmZmVyZW50IGZyb20gd2hhdCBJIHVzZWQgdG8gc2F5IHdoZW4gSSB3YXMgYSBjaGlsZCwnDQorc2FpZCB0aGUgR3J5cGhvbi4NCisNCisgIGBXZWxsLCBJIG5ldmVyIGhlYXJkIGl0IGJlZm9yZSwnIHNhaWQgdGhlIE1vY2sgVHVydGxlOyBgYnV0IGl0DQorc291bmRzIHVuY29tbW9uIG5vbnNlbnNlLicNCisNCisgIEFsaWNlIHNhaWQgbm90aGluZzsgc2hlIGhhZCBzYXQgZG93biB3aXRoIGhlciBmYWNlIGluIGhlcg0KK2hhbmRzLCB3b25kZXJpbmcgaWYgYW55dGhpbmcgd291bGQgRVZFUiBoYXBwZW4gaW4gYSBuYXR1cmFsIHdheQ0KK2FnYWluLg0KKw0KKyAgYEkgc2hvdWxkIGxpa2UgdG8gaGF2ZSBpdCBleHBsYWluZWQsJyBzYWlkIHRoZSBNb2NrIFR1cnRsZS4NCisNCisgIGBTaGUgY2FuJ3QgZXhwbGFpbiBpdCwnIHNhaWQgdGhlIEdyeXBob24gaGFzdGlseS4gIGBHbyBvbiB3aXRoDQordGhlIG5leHQgdmVyc2UuJw0KKw0KKyAgYEJ1dCBhYm91dCBoaXMgdG9lcz8nIHRoZSBNb2NrIFR1cnRsZSBwZXJzaXN0ZWQuICBgSG93IENPVUxEDQoraGUgdHVybiB0aGVtIG91dCB3aXRoIGhpcyBub3NlLCB5b3Uga25vdz8nDQorDQorICBgSXQncyB0aGUgZmlyc3QgcG9zaXRpb24gaW4gZGFuY2luZy4nIEFsaWNlIHNhaWQ7IGJ1dCB3YXMNCitkcmVhZGZ1bGx5IHB1enpsZWQgYnkgdGhlIHdob2xlIHRoaW5nLCBhbmQgbG9uZ2VkIHRvIGNoYW5nZSB0aGUNCitzdWJqZWN0Lg0KKw0KKyAgYEdvIG9uIHdpdGggdGhlIG5leHQgdmVyc2UsJyB0aGUgR3J5cGhvbiByZXBlYXRlZCBpbXBhdGllbnRseToNCitgaXQgYmVnaW5zICJJIHBhc3NlZCBieSBoaXMgZ2FyZGVuLiInDQorDQorICBBbGljZSBkaWQgbm90IGRhcmUgdG8gZGlzb2JleSwgdGhvdWdoIHNoZSBmZWx0IHN1cmUgaXQgd291bGQNCithbGwgY29tZSB3cm9uZywgYW5kIHNoZSB3ZW50IG9uIGluIGEgdHJlbWJsaW5nIHZvaWNlOi0tDQorDQorICAgIGBJIHBhc3NlZCBieSBoaXMgZ2FyZGVuLCBhbmQgbWFya2VkLCB3aXRoIG9uZSBleWUsDQorICAgIEhvdyB0aGUgT3dsIGFuZCB0aGUgUGFudGhlciB3ZXJlIHNoYXJpbmcgYSBwaWUtLScNCisNCisgICAgICAgIFtsYXRlciBlZGl0aW9ucyBjb250aW51ZWQgYXMgZm9sbG93cw0KKyAgICBUaGUgUGFudGhlciB0b29rIHBpZS1jcnVzdCwgYW5kIGdyYXZ5LCBhbmQgbWVhdCwNCisgICAgV2hpbGUgdGhlIE93bCBoYWQgdGhlIGRpc2ggYXMgaXRzIHNoYXJlIG9mIHRoZSB0cmVhdC4NCisgICAgV2hlbiB0aGUgcGllIHdhcyBhbGwgZmluaXNoZWQsIHRoZSBPd2wsIGFzIGEgYm9vbiwNCisgICAgV2FzIGtpbmRseSBwZXJtaXR0ZWQgdG8gcG9ja2V0IHRoZSBzcG9vbjoNCisgICAgV2hpbGUgdGhlIFBhbnRoZXIgcmVjZWl2ZWQga25pZmUgYW5kIGZvcmsgd2l0aCBhIGdyb3dsLA0KKyAgICBBbmQgY29uY2x1ZGVkIHRoZSBiYW5xdWV0LS1dDQorDQorICBgV2hhdCBJUyB0aGUgdXNlIG9mIHJlcGVhdGluZyBhbGwgdGhhdCBzdHVmZiwnIHRoZSBNb2NrIFR1cnRsZQ0KK2ludGVycnVwdGVkLCBgaWYgeW91IGRvbid0IGV4cGxhaW4gaXQgYXMgeW91IGdvIG9uPyAgSXQncyBieSBmYXINCit0aGUgbW9zdCBjb25mdXNpbmcgdGhpbmcgSSBldmVyIGhlYXJkIScNCisNCisgIGBZZXMsIEkgdGhpbmsgeW91J2QgYmV0dGVyIGxlYXZlIG9mZiwnIHNhaWQgdGhlIEdyeXBob246ICBhbmQNCitBbGljZSB3YXMgb25seSB0b28gZ2xhZCB0byBkbyBzby4NCisNCisgIGBTaGFsbCB3ZSB0cnkgYW5vdGhlciBmaWd1cmUgb2YgdGhlIExvYnN0ZXIgUXVhZHJpbGxlPycgdGhlDQorR3J5cGhvbiB3ZW50IG9uLiAgYE9yIHdvdWxkIHlvdSBsaWtlIHRoZSBNb2NrIFR1cnRsZSB0byBzaW5nIHlvdQ0KK2Egc29uZz8nDQorDQorICBgT2gsIGEgc29uZywgcGxlYXNlLCBpZiB0aGUgTW9jayBUdXJ0bGUgd291bGQgYmUgc28ga2luZCwnDQorQWxpY2UgcmVwbGllZCwgc28gZWFnZXJseSB0aGF0IHRoZSBHcnlwaG9uIHNhaWQsIGluIGEgcmF0aGVyDQorb2ZmZW5kZWQgdG9uZSwgYEhtISBObyBhY2NvdW50aW5nIGZvciB0YXN0ZXMhICBTaW5nIGhlciAiVHVydGxlDQorU291cCwiIHdpbGwgeW91LCBvbGQgZmVsbG93PycNCisNCisgIFRoZSBNb2NrIFR1cnRsZSBzaWdoZWQgZGVlcGx5LCBhbmQgYmVnYW4sIGluIGEgdm9pY2Ugc29tZXRpbWVzDQorY2hva2VkIHdpdGggc29icywgdG8gc2luZyB0aGlzOi0tDQorDQorDQorICAgIGBCZWF1dGlmdWwgU291cCwgc28gcmljaCBhbmQgZ3JlZW4sDQorICAgIFdhaXRpbmcgaW4gYSBob3QgdHVyZWVuIQ0KKyAgICBXaG8gZm9yIHN1Y2ggZGFpbnRpZXMgd291bGQgbm90IHN0b29wPw0KKyAgICBTb3VwIG9mIHRoZSBldmVuaW5nLCBiZWF1dGlmdWwgU291cCENCisgICAgU291cCBvZiB0aGUgZXZlbmluZywgYmVhdXRpZnVsIFNvdXAhDQorICAgICAgICBCZWF1LS1vb3RpZnVsIFNvby0tb29wIQ0KKyAgICAgICAgQmVhdS0tb290aWZ1bCBTb28tLW9vcCENCisgICAgU29vLS1vb3Agb2YgdGhlIGUtLWUtLWV2ZW5pbmcsDQorICAgICAgICBCZWF1dGlmdWwsIGJlYXV0aWZ1bCBTb3VwIQ0KKw0KKyAgICBgQmVhdXRpZnVsIFNvdXAhICBXaG8gY2FyZXMgZm9yIGZpc2gsDQorICAgIEdhbWUsIG9yIGFueSBvdGhlciBkaXNoPw0KKyAgICBXaG8gd291bGQgbm90IGdpdmUgYWxsIGVsc2UgZm9yIHR3byBwDQorICAgIGVubnl3b3J0aCBvbmx5IG9mIGJlYXV0aWZ1bCBTb3VwPw0KKyAgICBQZW5ueXdvcnRoIG9ubHkgb2YgYmVhdXRpZnVsIFNvdXA/DQorICAgICAgICBCZWF1LS1vb3RpZnVsIFNvby0tb29wIQ0KKyAgICAgICAgQmVhdS0tb290aWZ1bCBTb28tLW9vcCENCisgICAgU29vLS1vb3Agb2YgdGhlIGUtLWUtLWV2ZW5pbmcsDQorICAgICAgICBCZWF1dGlmdWwsIGJlYXV0aS0tRlVMIFNPVVAhJw0KKw0KKyAgYENob3J1cyBhZ2FpbiEnIGNyaWVkIHRoZSBHcnlwaG9uLCBhbmQgdGhlIE1vY2sgVHVydGxlIGhhZA0KK2p1c3QgYmVndW4gdG8gcmVwZWF0IGl0LCB3aGVuIGEgY3J5IG9mIGBUaGUgdHJpYWwncyBiZWdpbm5pbmchJw0KK3dhcyBoZWFyZCBpbiB0aGUgZGlzdGFuY2UuDQorDQorICBgQ29tZSBvbiEnIGNyaWVkIHRoZSBHcnlwaG9uLCBhbmQsIHRha2luZyBBbGljZSBieSB0aGUgaGFuZCwNCitpdCBodXJyaWVkIG9mZiwgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzb25nLg0KKw0KKyAgYFdoYXQgdHJpYWwgaXMgaXQ/JyBBbGljZSBwYW50ZWQgYXMgc2hlIHJhbjsgYnV0IHRoZSBHcnlwaG9uDQorb25seSBhbnN3ZXJlZCBgQ29tZSBvbiEnIGFuZCByYW4gdGhlIGZhc3Rlciwgd2hpbGUgbW9yZSBhbmQgbW9yZQ0KK2ZhaW50bHkgY2FtZSwgY2FycmllZCBvbiB0aGUgYnJlZXplIHRoYXQgZm9sbG93ZWQgdGhlbSwgdGhlDQorbWVsYW5jaG9seSB3b3JkczotLQ0KKw0KKyAgICBgU29vLS1vb3Agb2YgdGhlIGUtLWUtLWV2ZW5pbmcsDQorICAgICAgICBCZWF1dGlmdWwsIGJlYXV0aWZ1bCBTb3VwIScNCisNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDSEFQVEVSIFhJDQorDQorICAgICAgICAgICAgICAgICAgICAgIFdobyBTdG9sZSB0aGUgVGFydHM/DQorDQorDQorICBUaGUgS2luZyBhbmQgUXVlZW4gb2YgSGVhcnRzIHdlcmUgc2VhdGVkIG9uIHRoZWlyIHRocm9uZSB3aGVuDQordGhleSBhcnJpdmVkLCB3aXRoIGEgZ3JlYXQgY3Jvd2QgYXNzZW1ibGVkIGFib3V0IHRoZW0tLWFsbCBzb3J0cw0KK29mIGxpdHRsZSBiaXJkcyBhbmQgYmVhc3RzLCBhcyB3ZWxsIGFzIHRoZSB3aG9sZSBwYWNrIG9mIGNhcmRzOg0KK3RoZSBLbmF2ZSB3YXMgc3RhbmRpbmcgYmVmb3JlIHRoZW0sIGluIGNoYWlucywgd2l0aCBhIHNvbGRpZXIgb24NCitlYWNoIHNpZGUgdG8gZ3VhcmQgaGltOyBhbmQgbmVhciB0aGUgS2luZyB3YXMgdGhlIFdoaXRlIFJhYmJpdCwNCit3aXRoIGEgdHJ1bXBldCBpbiBvbmUgaGFuZCwgYW5kIGEgc2Nyb2xsIG9mIHBhcmNobWVudCBpbiB0aGUNCitvdGhlci4gIEluIHRoZSB2ZXJ5IG1pZGRsZSBvZiB0aGUgY291cnQgd2FzIGEgdGFibGUsIHdpdGggYSBsYXJnZQ0KK2Rpc2ggb2YgdGFydHMgdXBvbiBpdDogIHRoZXkgbG9va2VkIHNvIGdvb2QsIHRoYXQgaXQgbWFkZSBBbGljZQ0KK3F1aXRlIGh1bmdyeSB0byBsb29rIGF0IHRoZW0tLWBJIHdpc2ggdGhleSdkIGdldCB0aGUgdHJpYWwgZG9uZSwnDQorc2hlIHRob3VnaHQsIGBhbmQgaGFuZCByb3VuZCB0aGUgcmVmcmVzaG1lbnRzIScgIEJ1dCB0aGVyZSBzZWVtZWQNCit0byBiZSBubyBjaGFuY2Ugb2YgdGhpcywgc28gc2hlIGJlZ2FuIGxvb2tpbmcgYXQgZXZlcnl0aGluZyBhYm91dA0KK2hlciwgdG8gcGFzcyBhd2F5IHRoZSB0aW1lLg0KKw0KKyAgQWxpY2UgaGFkIG5ldmVyIGJlZW4gaW4gYSBjb3VydCBvZiBqdXN0aWNlIGJlZm9yZSwgYnV0IHNoZSBoYWQNCityZWFkIGFib3V0IHRoZW0gaW4gYm9va3MsIGFuZCBzaGUgd2FzIHF1aXRlIHBsZWFzZWQgdG8gZmluZCB0aGF0DQorc2hlIGtuZXcgdGhlIG5hbWUgb2YgbmVhcmx5IGV2ZXJ5dGhpbmcgdGhlcmUuICBgVGhhdCdzIHRoZQ0KK2p1ZGdlLCcgc2hlIHNhaWQgdG8gaGVyc2VsZiwgYGJlY2F1c2Ugb2YgaGlzIGdyZWF0IHdpZy4nDQorDQorICBUaGUganVkZ2UsIGJ5IHRoZSB3YXksIHdhcyB0aGUgS2luZzsgYW5kIGFzIGhlIHdvcmUgaGlzIGNyb3duDQorb3ZlciB0aGUgd2lnLCAobG9vayBhdCB0aGUgZnJvbnRpc3BpZWNlIGlmIHlvdSB3YW50IHRvIHNlZSBob3cgaGUNCitkaWQgaXQsKSBoZSBkaWQgbm90IGxvb2sgYXQgYWxsIGNvbWZvcnRhYmxlLCBhbmQgaXQgd2FzIGNlcnRhaW5seQ0KK25vdCBiZWNvbWluZy4NCisNCisgIGBBbmQgdGhhdCdzIHRoZSBqdXJ5LWJveCwnIHRob3VnaHQgQWxpY2UsIGBhbmQgdGhvc2UgdHdlbHZlDQorY3JlYXR1cmVzLCcgKHNoZSB3YXMgb2JsaWdlZCB0byBzYXkgYGNyZWF0dXJlcywnIHlvdSBzZWUsIGJlY2F1c2UNCitzb21lIG9mIHRoZW0gd2VyZSBhbmltYWxzLCBhbmQgc29tZSB3ZXJlIGJpcmRzLCkgYEkgc3VwcG9zZSB0aGV5DQorYXJlIHRoZSBqdXJvcnMuJyAgU2hlIHNhaWQgdGhpcyBsYXN0IHdvcmQgdHdvIG9yIHRocmVlIHRpbWVzIG92ZXINCit0byBoZXJzZWxmLCBiZWluZyByYXRoZXIgcHJvdWQgb2YgaXQ6ICBmb3Igc2hlIHRob3VnaHQsIGFuZA0KK3JpZ2h0bHkgdG9vLCB0aGF0IHZlcnkgZmV3IGxpdHRsZSBnaXJscyBvZiBoZXIgYWdlIGtuZXcgdGhlDQorbWVhbmluZyBvZiBpdCBhdCBhbGwuICBIb3dldmVyLCBganVyeS1tZW4nIHdvdWxkIGhhdmUgZG9uZSBqdXN0DQorYXMgd2VsbC4NCisNCisgIFRoZSB0d2VsdmUganVyb3JzIHdlcmUgYWxsIHdyaXRpbmcgdmVyeSBidXNpbHkgb24gc2xhdGVzLg0KK2BXaGF0IGFyZSB0aGV5IGRvaW5nPycgIEFsaWNlIHdoaXNwZXJlZCB0byB0aGUgR3J5cGhvbi4gIGBUaGV5DQorY2FuJ3QgaGF2ZSBhbnl0aGluZyB0byBwdXQgZG93biB5ZXQsIGJlZm9yZSB0aGUgdHJpYWwncyBiZWd1bi4nDQorDQorICBgVGhleSdyZSBwdXR0aW5nIGRvd24gdGhlaXIgbmFtZXMsJyB0aGUgR3J5cGhvbiB3aGlzcGVyZWQgaW4NCityZXBseSwgYGZvciBmZWFyIHRoZXkgc2hvdWxkIGZvcmdldCB0aGVtIGJlZm9yZSB0aGUgZW5kIG9mIHRoZQ0KK3RyaWFsLicNCisNCisgIGBTdHVwaWQgdGhpbmdzIScgQWxpY2UgYmVnYW4gaW4gYSBsb3VkLCBpbmRpZ25hbnQgdm9pY2UsIGJ1dA0KK3NoZSBzdG9wcGVkIGhhc3RpbHksIGZvciB0aGUgV2hpdGUgUmFiYml0IGNyaWVkIG91dCwgYFNpbGVuY2UgaW4NCit0aGUgY291cnQhJyBhbmQgdGhlIEtpbmcgcHV0IG9uIGhpcyBzcGVjdGFjbGVzIGFuZCBsb29rZWQNCithbnhpb3VzbHkgcm91bmQsIHRvIG1ha2Ugb3V0IHdobyB3YXMgdGFsa2luZy4NCisNCisgIEFsaWNlIGNvdWxkIHNlZSwgYXMgd2VsbCBhcyBpZiBzaGUgd2VyZSBsb29raW5nIG92ZXIgdGhlaXINCitzaG91bGRlcnMsIHRoYXQgYWxsIHRoZSBqdXJvcnMgd2VyZSB3cml0aW5nIGRvd24gYHN0dXBpZCB0aGluZ3MhJw0KK29uIHRoZWlyIHNsYXRlcywgYW5kIHNoZSBjb3VsZCBldmVuIG1ha2Ugb3V0IHRoYXQgb25lIG9mIHRoZW0NCitkaWRuJ3Qga25vdyBob3cgdG8gc3BlbGwgYHN0dXBpZCwnIGFuZCB0aGF0IGhlIGhhZCB0byBhc2sgaGlzDQorbmVpZ2hib3VyIHRvIHRlbGwgaGltLiAgYEEgbmljZSBtdWRkbGUgdGhlaXIgc2xhdGVzJ2xsIGJlIGluDQorYmVmb3JlIHRoZSB0cmlhbCdzIG92ZXIhJyB0aG91Z2h0IEFsaWNlLg0KKw0KKyAgT25lIG9mIHRoZSBqdXJvcnMgaGFkIGEgcGVuY2lsIHRoYXQgc3F1ZWFrZWQuICBUaGlzIG9mIGNvdXJzZSwNCitBbGljZSBjb3VsZCBub3Qgc3RhbmQsIGFuZCBzaGUgd2VudCByb3VuZCB0aGUgY291cnQgYW5kIGdvdA0KK2JlaGluZCBoaW0sIGFuZCB2ZXJ5IHNvb24gZm91bmQgYW4gb3Bwb3J0dW5pdHkgb2YgdGFraW5nIGl0DQorYXdheS4gIFNoZSBkaWQgaXQgc28gcXVpY2tseSB0aGF0IHRoZSBwb29yIGxpdHRsZSBqdXJvciAoaXQgd2FzDQorQmlsbCwgdGhlIExpemFyZCkgY291bGQgbm90IG1ha2Ugb3V0IGF0IGFsbCB3aGF0IGhhZCBiZWNvbWUgb2YNCitpdDsgc28sIGFmdGVyIGh1bnRpbmcgYWxsIGFib3V0IGZvciBpdCwgaGUgd2FzIG9ibGlnZWQgdG8gd3JpdGUNCit3aXRoIG9uZSBmaW5nZXIgZm9yIHRoZSByZXN0IG9mIHRoZSBkYXk7IGFuZCB0aGlzIHdhcyBvZiB2ZXJ5DQorbGl0dGxlIHVzZSwgYXMgaXQgbGVmdCBubyBtYXJrIG9uIHRoZSBzbGF0ZS4NCisNCisgIGBIZXJhbGQsIHJlYWQgdGhlIGFjY3VzYXRpb24hJyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgT24gdGhpcyB0aGUgV2hpdGUgUmFiYml0IGJsZXcgdGhyZWUgYmxhc3RzIG9uIHRoZSB0cnVtcGV0LCBhbmQNCit0aGVuIHVucm9sbGVkIHRoZSBwYXJjaG1lbnQgc2Nyb2xsLCBhbmQgcmVhZCBhcyBmb2xsb3dzOi0tDQorDQorICAgIGBUaGUgUXVlZW4gb2YgSGVhcnRzLCBzaGUgbWFkZSBzb21lIHRhcnRzLA0KKyAgICAgICAgICBBbGwgb24gYSBzdW1tZXIgZGF5Og0KKyAgICAgIFRoZSBLbmF2ZSBvZiBIZWFydHMsIGhlIHN0b2xlIHRob3NlIHRhcnRzLA0KKyAgICAgICAgICBBbmQgdG9vayB0aGVtIHF1aXRlIGF3YXkhJw0KKw0KKyAgYENvbnNpZGVyIHlvdXIgdmVyZGljdCwnIHRoZSBLaW5nIHNhaWQgdG8gdGhlIGp1cnkuDQorDQorICBgTm90IHlldCwgbm90IHlldCEnIHRoZSBSYWJiaXQgaGFzdGlseSBpbnRlcnJ1cHRlZC4gIGBUaGVyZSdzDQorYSBncmVhdCBkZWFsIHRvIGNvbWUgYmVmb3JlIHRoYXQhJw0KKw0KKyAgYENhbGwgdGhlIGZpcnN0IHdpdG5lc3MsJyBzYWlkIHRoZSBLaW5nOyBhbmQgdGhlIFdoaXRlIFJhYmJpdA0KK2JsZXcgdGhyZWUgYmxhc3RzIG9uIHRoZSB0cnVtcGV0LCBhbmQgY2FsbGVkIG91dCwgYEZpcnN0DQord2l0bmVzcyEnDQorDQorICBUaGUgZmlyc3Qgd2l0bmVzcyB3YXMgdGhlIEhhdHRlci4gIEhlIGNhbWUgaW4gd2l0aCBhIHRlYWN1cCBpbg0KK29uZSBoYW5kIGFuZCBhIHBpZWNlIG9mIGJyZWFkLWFuZC1idXR0ZXIgaW4gdGhlIG90aGVyLiAgYEkgYmVnDQorcGFyZG9uLCB5b3VyIE1hamVzdHksJyBoZSBiZWdhbiwgYGZvciBicmluZ2luZyB0aGVzZSBpbjogIGJ1dCBJDQoraGFkbid0IHF1aXRlIGZpbmlzaGVkIG15IHRlYSB3aGVuIEkgd2FzIHNlbnQgZm9yLicNCisNCisgIGBZb3Ugb3VnaHQgdG8gaGF2ZSBmaW5pc2hlZCwnIHNhaWQgdGhlIEtpbmcuICBgV2hlbiBkaWQgeW91DQorYmVnaW4/Jw0KKw0KKyAgVGhlIEhhdHRlciBsb29rZWQgYXQgdGhlIE1hcmNoIEhhcmUsIHdobyBoYWQgZm9sbG93ZWQgaGltIGludG8NCit0aGUgY291cnQsIGFybS1pbi1hcm0gd2l0aCB0aGUgRG9ybW91c2UuICBgRm91cnRlZW50aCBvZiBNYXJjaCwgSQ0KK3RoaW5rIGl0IHdhcywnIGhlIHNhaWQuDQorDQorICBgRmlmdGVlbnRoLCcgc2FpZCB0aGUgTWFyY2ggSGFyZS4NCisNCisgIGBTaXh0ZWVudGgsJyBhZGRlZCB0aGUgRG9ybW91c2UuDQorDQorICBgV3JpdGUgdGhhdCBkb3duLCcgdGhlIEtpbmcgc2FpZCB0byB0aGUganVyeSwgYW5kIHRoZSBqdXJ5DQorZWFnZXJseSB3cm90ZSBkb3duIGFsbCB0aHJlZSBkYXRlcyBvbiB0aGVpciBzbGF0ZXMsIGFuZCB0aGVuDQorYWRkZWQgdGhlbSB1cCwgYW5kIHJlZHVjZWQgdGhlIGFuc3dlciB0byBzaGlsbGluZ3MgYW5kIHBlbmNlLg0KKw0KKyAgYFRha2Ugb2ZmIHlvdXIgaGF0LCcgdGhlIEtpbmcgc2FpZCB0byB0aGUgSGF0dGVyLg0KKw0KKyAgYEl0IGlzbid0IG1pbmUsJyBzYWlkIHRoZSBIYXR0ZXIuDQorDQorICBgU3RvbGVuIScgdGhlIEtpbmcgZXhjbGFpbWVkLCB0dXJuaW5nIHRvIHRoZSBqdXJ5LCB3aG8NCitpbnN0YW50bHkgbWFkZSBhIG1lbW9yYW5kdW0gb2YgdGhlIGZhY3QuDQorDQorICBgSSBrZWVwIHRoZW0gdG8gc2VsbCwnIHRoZSBIYXR0ZXIgYWRkZWQgYXMgYW4gZXhwbGFuYXRpb247DQorYEkndmUgbm9uZSBvZiBteSBvd24uICBJJ20gYSBoYXR0ZXIuJw0KKw0KKyAgSGVyZSB0aGUgUXVlZW4gcHV0IG9uIGhlciBzcGVjdGFjbGVzLCBhbmQgYmVnYW4gc3RhcmluZyBhdCB0aGUNCitIYXR0ZXIsIHdobyB0dXJuZWQgcGFsZSBhbmQgZmlkZ2V0ZWQuDQorDQorICBgR2l2ZSB5b3VyIGV2aWRlbmNlLCcgc2FpZCB0aGUgS2luZzsgYGFuZCBkb24ndCBiZSBuZXJ2b3VzLCBvcg0KK0knbGwgaGF2ZSB5b3UgZXhlY3V0ZWQgb24gdGhlIHNwb3QuJw0KKw0KKyAgVGhpcyBkaWQgbm90IHNlZW0gdG8gZW5jb3VyYWdlIHRoZSB3aXRuZXNzIGF0IGFsbDogIGhlIGtlcHQNCitzaGlmdGluZyBmcm9tIG9uZSBmb290IHRvIHRoZSBvdGhlciwgbG9va2luZyB1bmVhc2lseSBhdCB0aGUNCitRdWVlbiwgYW5kIGluIGhpcyBjb25mdXNpb24gaGUgYml0IGEgbGFyZ2UgcGllY2Ugb3V0IG9mIGhpcw0KK3RlYWN1cCBpbnN0ZWFkIG9mIHRoZSBicmVhZC1hbmQtYnV0dGVyLg0KKw0KKyAgSnVzdCBhdCB0aGlzIG1vbWVudCBBbGljZSBmZWx0IGEgdmVyeSBjdXJpb3VzIHNlbnNhdGlvbiwgd2hpY2gNCitwdXp6bGVkIGhlciBhIGdvb2QgZGVhbCB1bnRpbCBzaGUgbWFkZSBvdXQgd2hhdCBpdCB3YXM6ICBzaGUgd2FzDQorYmVnaW5uaW5nIHRvIGdyb3cgbGFyZ2VyIGFnYWluLCBhbmQgc2hlIHRob3VnaHQgYXQgZmlyc3Qgc2hlDQord291bGQgZ2V0IHVwIGFuZCBsZWF2ZSB0aGUgY291cnQ7IGJ1dCBvbiBzZWNvbmQgdGhvdWdodHMgc2hlDQorZGVjaWRlZCB0byByZW1haW4gd2hlcmUgc2hlIHdhcyBhcyBsb25nIGFzIHRoZXJlIHdhcyByb29tIGZvcg0KK2hlci4NCisNCisgIGBJIHdpc2ggeW91IHdvdWxkbid0IHNxdWVlemUgc28uJyBzYWlkIHRoZSBEb3Jtb3VzZSwgd2hvIHdhcw0KK3NpdHRpbmcgbmV4dCB0byBoZXIuICBgSSBjYW4gaGFyZGx5IGJyZWF0aGUuJw0KKw0KKyAgYEkgY2FuJ3QgaGVscCBpdCwnIHNhaWQgQWxpY2UgdmVyeSBtZWVrbHk6ICBgSSdtIGdyb3dpbmcuJw0KKw0KKyAgYFlvdSd2ZSBubyByaWdodCB0byBncm93IGhlcmUsJyBzYWlkIHRoZSBEb3Jtb3VzZS4NCisNCisgIGBEb24ndCB0YWxrIG5vbnNlbnNlLCcgc2FpZCBBbGljZSBtb3JlIGJvbGRseTogIGB5b3Uga25vdw0KK3lvdSdyZSBncm93aW5nIHRvby4nDQorDQorICBgWWVzLCBidXQgSSBncm93IGF0IGEgcmVhc29uYWJsZSBwYWNlLCcgc2FpZCB0aGUgRG9ybW91c2U6DQorYG5vdCBpbiB0aGF0IHJpZGljdWxvdXMgZmFzaGlvbi4nICBBbmQgaGUgZ290IHVwIHZlcnkgc3Vsa2lseQ0KK2FuZCBjcm9zc2VkIG92ZXIgdG8gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGNvdXJ0Lg0KKw0KKyAgQWxsIHRoaXMgdGltZSB0aGUgUXVlZW4gaGFkIG5ldmVyIGxlZnQgb2ZmIHN0YXJpbmcgYXQgdGhlDQorSGF0dGVyLCBhbmQsIGp1c3QgYXMgdGhlIERvcm1vdXNlIGNyb3NzZWQgdGhlIGNvdXJ0LCBzaGUgc2FpZCB0bw0KK29uZSBvZiB0aGUgb2ZmaWNlcnMgb2YgdGhlIGNvdXJ0LCBgQnJpbmcgbWUgdGhlIGxpc3Qgb2YgdGhlDQorc2luZ2VycyBpbiB0aGUgbGFzdCBjb25jZXJ0IScgb24gd2hpY2ggdGhlIHdyZXRjaGVkIEhhdHRlcg0KK3RyZW1ibGVkIHNvLCB0aGF0IGhlIHNob29rIGJvdGggaGlzIHNob2VzIG9mZi4NCisNCisgIGBHaXZlIHlvdXIgZXZpZGVuY2UsJyB0aGUgS2luZyByZXBlYXRlZCBhbmdyaWx5LCBgb3IgSSdsbCBoYXZlDQoreW91IGV4ZWN1dGVkLCB3aGV0aGVyIHlvdSdyZSBuZXJ2b3VzIG9yIG5vdC4nDQorDQorICBgSSdtIGEgcG9vciBtYW4sIHlvdXIgTWFqZXN0eSwnIHRoZSBIYXR0ZXIgYmVnYW4sIGluIGENCit0cmVtYmxpbmcgdm9pY2UsIGAtLWFuZCBJIGhhZG4ndCBiZWd1biBteSB0ZWEtLW5vdCBhYm92ZSBhIHdlZWsNCitvciBzby0tYW5kIHdoYXQgd2l0aCB0aGUgYnJlYWQtYW5kLWJ1dHRlciBnZXR0aW5nIHNvIHRoaW4tLWFuZA0KK3RoZSB0d2lua2xpbmcgb2YgdGhlIHRlYS0tJw0KKw0KKyAgYFRoZSB0d2lua2xpbmcgb2YgdGhlIHdoYXQ/JyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgYEl0IGJlZ2FuIHdpdGggdGhlIHRlYSwnIHRoZSBIYXR0ZXIgcmVwbGllZC4NCisNCisgIGBPZiBjb3Vyc2UgdHdpbmtsaW5nIGJlZ2lucyB3aXRoIGEgVCEnIHNhaWQgdGhlIEtpbmcgc2hhcnBseS4NCitgRG8geW91IHRha2UgbWUgZm9yIGEgZHVuY2U/ICBHbyBvbiEnDQorDQorICBgSSdtIGEgcG9vciBtYW4sJyB0aGUgSGF0dGVyIHdlbnQgb24sIGBhbmQgbW9zdCB0aGluZ3MNCit0d2lua2xlZCBhZnRlciB0aGF0LS1vbmx5IHRoZSBNYXJjaCBIYXJlIHNhaWQtLScNCisNCisgIGBJIGRpZG4ndCEnIHRoZSBNYXJjaCBIYXJlIGludGVycnVwdGVkIGluIGEgZ3JlYXQgaHVycnkuDQorDQorICBgWW91IGRpZCEnIHNhaWQgdGhlIEhhdHRlci4NCisNCisgIGBJIGRlbnkgaXQhJyBzYWlkIHRoZSBNYXJjaCBIYXJlLg0KKw0KKyAgYEhlIGRlbmllcyBpdCwnIHNhaWQgdGhlIEtpbmc6ICBgbGVhdmUgb3V0IHRoYXQgcGFydC4nDQorDQorICBgV2VsbCwgYXQgYW55IHJhdGUsIHRoZSBEb3Jtb3VzZSBzYWlkLS0nIHRoZSBIYXR0ZXIgd2VudCBvbiwNCitsb29raW5nIGFueGlvdXNseSByb3VuZCB0byBzZWUgaWYgaGUgd291bGQgZGVueSBpdCB0b286ICBidXQgdGhlDQorRG9ybW91c2UgZGVuaWVkIG5vdGhpbmcsIGJlaW5nIGZhc3QgYXNsZWVwLg0KKw0KKyAgYEFmdGVyIHRoYXQsJyBjb250aW51ZWQgdGhlIEhhdHRlciwgYEkgY3V0IHNvbWUgbW9yZSBicmVhZC0NCithbmQtYnV0dGVyLS0nDQorDQorICBgQnV0IHdoYXQgZGlkIHRoZSBEb3Jtb3VzZSBzYXk/JyBvbmUgb2YgdGhlIGp1cnkgYXNrZWQuDQorDQorICBgVGhhdCBJIGNhbid0IHJlbWVtYmVyLCcgc2FpZCB0aGUgSGF0dGVyLg0KKw0KKyAgYFlvdSBNVVNUIHJlbWVtYmVyLCcgcmVtYXJrZWQgdGhlIEtpbmcsIGBvciBJJ2xsIGhhdmUgeW91DQorZXhlY3V0ZWQuJw0KKw0KKyAgVGhlIG1pc2VyYWJsZSBIYXR0ZXIgZHJvcHBlZCBoaXMgdGVhY3VwIGFuZCBicmVhZC1hbmQtYnV0dGVyLA0KK2FuZCB3ZW50IGRvd24gb24gb25lIGtuZWUuICBgSSdtIGEgcG9vciBtYW4sIHlvdXIgTWFqZXN0eSwnIGhlDQorYmVnYW4uDQorDQorICBgWW91J3JlIGEgdmVyeSBwb29yIHNwZWFrZXIsJyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgSGVyZSBvbmUgb2YgdGhlIGd1aW5lYS1waWdzIGNoZWVyZWQsIGFuZCB3YXMgaW1tZWRpYXRlbHkNCitzdXBwcmVzc2VkIGJ5IHRoZSBvZmZpY2VycyBvZiB0aGUgY291cnQuICAoQXMgdGhhdCBpcyByYXRoZXIgYQ0KK2hhcmQgd29yZCwgSSB3aWxsIGp1c3QgZXhwbGFpbiB0byB5b3UgaG93IGl0IHdhcyBkb25lLiAgVGhleSBoYWQNCithIGxhcmdlIGNhbnZhcyBiYWcsIHdoaWNoIHRpZWQgdXAgYXQgdGhlIG1vdXRoIHdpdGggc3RyaW5nczoNCitpbnRvIHRoaXMgdGhleSBzbGlwcGVkIHRoZSBndWluZWEtcGlnLCBoZWFkIGZpcnN0LCBhbmQgdGhlbiBzYXQNCit1cG9uIGl0LikNCisNCisgIGBJJ20gZ2xhZCBJJ3ZlIHNlZW4gdGhhdCBkb25lLCcgdGhvdWdodCBBbGljZS4gIGBJJ3ZlIHNvIG9mdGVuDQorcmVhZCBpbiB0aGUgbmV3c3BhcGVycywgYXQgdGhlIGVuZCBvZiB0cmlhbHMsICJUaGVyZSB3YXMgc29tZQ0KK2F0dGVtcHRzIGF0IGFwcGxhdXNlLCB3aGljaCB3YXMgaW1tZWRpYXRlbHkgc3VwcHJlc3NlZCBieSB0aGUNCitvZmZpY2VycyBvZiB0aGUgY291cnQsIiBhbmQgSSBuZXZlciB1bmRlcnN0b29kIHdoYXQgaXQgbWVhbnQNCit0aWxsIG5vdy4nDQorDQorICBgSWYgdGhhdCdzIGFsbCB5b3Uga25vdyBhYm91dCBpdCwgeW91IG1heSBzdGFuZCBkb3duLCcNCitjb250aW51ZWQgdGhlIEtpbmcuDQorDQorICBgSSBjYW4ndCBnbyBubyBsb3dlciwnIHNhaWQgdGhlIEhhdHRlcjogIGBJJ20gb24gdGhlIGZsb29yLCBhcw0KK2l0IGlzLicNCisNCisgIGBUaGVuIHlvdSBtYXkgU0lUIGRvd24sJyB0aGUgS2luZyByZXBsaWVkLg0KKw0KKyAgSGVyZSB0aGUgb3RoZXIgZ3VpbmVhLXBpZyBjaGVlcmVkLCBhbmQgd2FzIHN1cHByZXNzZWQuDQorDQorICBgQ29tZSwgdGhhdCBmaW5pc2hlZCB0aGUgZ3VpbmVhLXBpZ3MhJyB0aG91Z2h0IEFsaWNlLiAgYE5vdyB3ZQ0KK3NoYWxsIGdldCBvbiBiZXR0ZXIuJw0KKw0KKyAgYEknZCByYXRoZXIgZmluaXNoIG15IHRlYSwnIHNhaWQgdGhlIEhhdHRlciwgd2l0aCBhbiBhbnhpb3VzDQorbG9vayBhdCB0aGUgUXVlZW4sIHdobyB3YXMgcmVhZGluZyB0aGUgbGlzdCBvZiBzaW5nZXJzLg0KKw0KKyAgYFlvdSBtYXkgZ28sJyBzYWlkIHRoZSBLaW5nLCBhbmQgdGhlIEhhdHRlciBodXJyaWVkbHkgbGVmdCB0aGUNCitjb3VydCwgd2l0aG91dCBldmVuIHdhaXRpbmcgdG8gcHV0IGhpcyBzaG9lcyBvbi4NCisNCisgIGAtLWFuZCBqdXN0IHRha2UgaGlzIGhlYWQgb2ZmIG91dHNpZGUsJyB0aGUgUXVlZW4gYWRkZWQgdG8gb25lDQorb2YgdGhlIG9mZmljZXJzOiAgYnV0IHRoZSBIYXR0ZXIgd2FzIG91dCBvZiBzaWdodCBiZWZvcmUgdGhlDQorb2ZmaWNlciBjb3VsZCBnZXQgdG8gdGhlIGRvb3IuDQorDQorICBgQ2FsbCB0aGUgbmV4dCB3aXRuZXNzIScgc2FpZCB0aGUgS2luZy4NCisNCisgIFRoZSBuZXh0IHdpdG5lc3Mgd2FzIHRoZSBEdWNoZXNzJ3MgY29vay4gIFNoZSBjYXJyaWVkIHRoZQ0KK3BlcHBlci1ib3ggaW4gaGVyIGhhbmQsIGFuZCBBbGljZSBndWVzc2VkIHdobyBpdCB3YXMsIGV2ZW4gYmVmb3JlDQorc2hlIGdvdCBpbnRvIHRoZSBjb3VydCwgYnkgdGhlIHdheSB0aGUgcGVvcGxlIG5lYXIgdGhlIGRvb3IgYmVnYW4NCitzbmVlemluZyBhbGwgYXQgb25jZS4NCisNCisgIGBHaXZlIHlvdXIgZXZpZGVuY2UsJyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgYFNoYW4ndCwnIHNhaWQgdGhlIGNvb2suDQorDQorICBUaGUgS2luZyBsb29rZWQgYW54aW91c2x5IGF0IHRoZSBXaGl0ZSBSYWJiaXQsIHdobyBzYWlkIGluIGENCitsb3cgdm9pY2UsIGBZb3VyIE1hamVzdHkgbXVzdCBjcm9zcy1leGFtaW5lIFRISVMgd2l0bmVzcy4nDQorDQorICBgV2VsbCwgaWYgSSBtdXN0LCBJIG11c3QsJyB0aGUgS2luZyBzYWlkLCB3aXRoIGEgbWVsYW5jaG9seQ0KK2FpciwgYW5kLCBhZnRlciBmb2xkaW5nIGhpcyBhcm1zIGFuZCBmcm93bmluZyBhdCB0aGUgY29vayB0aWxsDQoraGlzIGV5ZXMgd2VyZSBuZWFybHkgb3V0IG9mIHNpZ2h0LCBoZSBzYWlkIGluIGEgZGVlcCB2b2ljZSwgYFdoYXQNCithcmUgdGFydHMgbWFkZSBvZj8nDQorDQorICBgUGVwcGVyLCBtb3N0bHksJyBzYWlkIHRoZSBjb29rLg0KKw0KKyAgYFRyZWFjbGUsJyBzYWlkIGEgc2xlZXB5IHZvaWNlIGJlaGluZCBoZXIuDQorDQorICBgQ29sbGFyIHRoYXQgRG9ybW91c2UsJyB0aGUgUXVlZW4gc2hyaWVrZWQgb3V0LiAgYEJlaGVhZCB0aGF0DQorRG9ybW91c2UhICBUdXJuIHRoYXQgRG9ybW91c2Ugb3V0IG9mIGNvdXJ0ISAgU3VwcHJlc3MgaGltISAgUGluY2gNCitoaW0hICBPZmYgd2l0aCBoaXMgd2hpc2tlcnMhJw0KKw0KKyAgRm9yIHNvbWUgbWludXRlcyB0aGUgd2hvbGUgY291cnQgd2FzIGluIGNvbmZ1c2lvbiwgZ2V0dGluZyB0aGUNCitEb3Jtb3VzZSB0dXJuZWQgb3V0LCBhbmQsIGJ5IHRoZSB0aW1lIHRoZXkgaGFkIHNldHRsZWQgZG93bg0KK2FnYWluLCB0aGUgY29vayBoYWQgZGlzYXBwZWFyZWQuDQorDQorICBgTmV2ZXIgbWluZCEnIHNhaWQgdGhlIEtpbmcsIHdpdGggYW4gYWlyIG9mIGdyZWF0IHJlbGllZi4NCitgQ2FsbCB0aGUgbmV4dCB3aXRuZXNzLicgIEFuZCBoZSBhZGRlZCBpbiBhbiB1bmRlcnRvbmUgdG8gdGhlDQorUXVlZW4sIGBSZWFsbHksIG15IGRlYXIsIFlPVSBtdXN0IGNyb3NzLWV4YW1pbmUgdGhlIG5leHQgd2l0bmVzcy4NCitJdCBxdWl0ZSBtYWtlcyBteSBmb3JlaGVhZCBhY2hlIScNCisNCisgIEFsaWNlIHdhdGNoZWQgdGhlIFdoaXRlIFJhYmJpdCBhcyBoZSBmdW1ibGVkIG92ZXIgdGhlIGxpc3QsDQorZmVlbGluZyB2ZXJ5IGN1cmlvdXMgdG8gc2VlIHdoYXQgdGhlIG5leHQgd2l0bmVzcyB3b3VsZCBiZSBsaWtlLA0KK2AtLWZvciB0aGV5IGhhdmVuJ3QgZ290IG11Y2ggZXZpZGVuY2UgWUVULCcgc2hlIHNhaWQgdG8gaGVyc2VsZi4NCitJbWFnaW5lIGhlciBzdXJwcmlzZSwgd2hlbiB0aGUgV2hpdGUgUmFiYml0IHJlYWQgb3V0LCBhdCB0aGUgdG9wDQorb2YgaGlzIHNocmlsbCBsaXR0bGUgdm9pY2UsIHRoZSBuYW1lIGBBbGljZSEnDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBUFRFUiBYSUkNCisNCisgICAgICAgICAgICAgICAgICAgICAgICBBbGljZSdzIEV2aWRlbmNlDQorDQorDQorICBgSGVyZSEnIGNyaWVkIEFsaWNlLCBxdWl0ZSBmb3JnZXR0aW5nIGluIHRoZSBmbHVycnkgb2YgdGhlDQorbW9tZW50IGhvdyBsYXJnZSBzaGUgaGFkIGdyb3duIGluIHRoZSBsYXN0IGZldyBtaW51dGVzLCBhbmQgc2hlDQoranVtcGVkIHVwIGluIHN1Y2ggYSBodXJyeSB0aGF0IHNoZSB0aXBwZWQgb3ZlciB0aGUganVyeS1ib3ggd2l0aA0KK3RoZSBlZGdlIG9mIGhlciBza2lydCwgdXBzZXR0aW5nIGFsbCB0aGUganVyeW1lbiBvbiB0byB0aGUgaGVhZHMNCitvZiB0aGUgY3Jvd2QgYmVsb3csIGFuZCB0aGVyZSB0aGV5IGxheSBzcHJhd2xpbmcgYWJvdXQsIHJlbWluZGluZw0KK2hlciB2ZXJ5IG11Y2ggb2YgYSBnbG9iZSBvZiBnb2xkZmlzaCBzaGUgaGFkIGFjY2lkZW50YWxseSB1cHNldA0KK3RoZSB3ZWVrIGJlZm9yZS4NCisNCisgIGBPaCwgSSBCRUcgeW91ciBwYXJkb24hJyBzaGUgZXhjbGFpbWVkIGluIGEgdG9uZSBvZiBncmVhdA0KK2Rpc21heSwgYW5kIGJlZ2FuIHBpY2tpbmcgdGhlbSB1cCBhZ2FpbiBhcyBxdWlja2x5IGFzIHNoZSBjb3VsZCwNCitmb3IgdGhlIGFjY2lkZW50IG9mIHRoZSBnb2xkZmlzaCBrZXB0IHJ1bm5pbmcgaW4gaGVyIGhlYWQsIGFuZA0KK3NoZSBoYWQgYSB2YWd1ZSBzb3J0IG9mIGlkZWEgdGhhdCB0aGV5IG11c3QgYmUgY29sbGVjdGVkIGF0IG9uY2UNCithbmQgcHV0IGJhY2sgaW50byB0aGUganVyeS1ib3gsIG9yIHRoZXkgd291bGQgZGllLg0KKw0KKyAgYFRoZSB0cmlhbCBjYW5ub3QgcHJvY2VlZCwnIHNhaWQgdGhlIEtpbmcgaW4gYSB2ZXJ5IGdyYXZlDQordm9pY2UsIGB1bnRpbCBhbGwgdGhlIGp1cnltZW4gYXJlIGJhY2sgaW4gdGhlaXIgcHJvcGVyIHBsYWNlcy0tDQorQUxMLCcgaGUgcmVwZWF0ZWQgd2l0aCBncmVhdCBlbXBoYXNpcywgbG9va2luZyBoYXJkIGF0IEFsaWNlIGFzDQoraGUgc2FpZCBkby4NCisNCisgIEFsaWNlIGxvb2tlZCBhdCB0aGUganVyeS1ib3gsIGFuZCBzYXcgdGhhdCwgaW4gaGVyIGhhc3RlLCBzaGUNCitoYWQgcHV0IHRoZSBMaXphcmQgaW4gaGVhZCBkb3dud2FyZHMsIGFuZCB0aGUgcG9vciBsaXR0bGUgdGhpbmcNCit3YXMgd2F2aW5nIGl0cyB0YWlsIGFib3V0IGluIGEgbWVsYW5jaG9seSB3YXksIGJlaW5nIHF1aXRlIHVuYWJsZQ0KK3RvIG1vdmUuICBTaGUgc29vbiBnb3QgaXQgb3V0IGFnYWluLCBhbmQgcHV0IGl0IHJpZ2h0OyBgbm90IHRoYXQNCitpdCBzaWduaWZpZXMgbXVjaCwnIHNoZSBzYWlkIHRvIGhlcnNlbGY7IGBJIHNob3VsZCB0aGluayBpdA0KK3dvdWxkIGJlIFFVSVRFIGFzIG11Y2ggdXNlIGluIHRoZSB0cmlhbCBvbmUgd2F5IHVwIGFzIHRoZSBvdGhlci4nDQorDQorICBBcyBzb29uIGFzIHRoZSBqdXJ5IGhhZCBhIGxpdHRsZSByZWNvdmVyZWQgZnJvbSB0aGUgc2hvY2sgb2YNCitiZWluZyB1cHNldCwgYW5kIHRoZWlyIHNsYXRlcyBhbmQgcGVuY2lscyBoYWQgYmVlbiBmb3VuZCBhbmQNCitoYW5kZWQgYmFjayB0byB0aGVtLCB0aGV5IHNldCB0byB3b3JrIHZlcnkgZGlsaWdlbnRseSB0byB3cml0ZQ0KK291dCBhIGhpc3Rvcnkgb2YgdGhlIGFjY2lkZW50LCBhbGwgZXhjZXB0IHRoZSBMaXphcmQsIHdobyBzZWVtZWQNCit0b28gbXVjaCBvdmVyY29tZSB0byBkbyBhbnl0aGluZyBidXQgc2l0IHdpdGggaXRzIG1vdXRoIG9wZW4sDQorZ2F6aW5nIHVwIGludG8gdGhlIHJvb2Ygb2YgdGhlIGNvdXJ0Lg0KKw0KKyAgYFdoYXQgZG8geW91IGtub3cgYWJvdXQgdGhpcyBidXNpbmVzcz8nIHRoZSBLaW5nIHNhaWQgdG8NCitBbGljZS4NCisNCisgIGBOb3RoaW5nLCcgc2FpZCBBbGljZS4NCisNCisgIGBOb3RoaW5nIFdIQVRFVkVSPycgcGVyc2lzdGVkIHRoZSBLaW5nLg0KKw0KKyAgYE5vdGhpbmcgd2hhdGV2ZXIsJyBzYWlkIEFsaWNlLg0KKw0KKyAgYFRoYXQncyB2ZXJ5IGltcG9ydGFudCwnIHRoZSBLaW5nIHNhaWQsIHR1cm5pbmcgdG8gdGhlIGp1cnkuDQorVGhleSB3ZXJlIGp1c3QgYmVnaW5uaW5nIHRvIHdyaXRlIHRoaXMgZG93biBvbiB0aGVpciBzbGF0ZXMsIHdoZW4NCit0aGUgV2hpdGUgUmFiYml0IGludGVycnVwdGVkOiAgYFVOaW1wb3J0YW50LCB5b3VyIE1hamVzdHkgbWVhbnMsDQorb2YgY291cnNlLCcgaGUgc2FpZCBpbiBhIHZlcnkgcmVzcGVjdGZ1bCB0b25lLCBidXQgZnJvd25pbmcgYW5kDQorbWFraW5nIGZhY2VzIGF0IGhpbSBhcyBoZSBzcG9rZS4NCisNCisgIGBVTmltcG9ydGFudCwgb2YgY291cnNlLCBJIG1lYW50LCcgdGhlIEtpbmcgaGFzdGlseSBzYWlkLCBhbmQNCit3ZW50IG9uIHRvIGhpbXNlbGYgaW4gYW4gdW5kZXJ0b25lLCBgaW1wb3J0YW50LS11bmltcG9ydGFudC0tDQordW5pbXBvcnRhbnQtLWltcG9ydGFudC0tJyBhcyBpZiBoZSB3ZXJlIHRyeWluZyB3aGljaCB3b3JkDQorc291bmRlZCBiZXN0Lg0KKw0KKyAgU29tZSBvZiB0aGUganVyeSB3cm90ZSBpdCBkb3duIGBpbXBvcnRhbnQsJyBhbmQgc29tZQ0KK2B1bmltcG9ydGFudC4nICBBbGljZSBjb3VsZCBzZWUgdGhpcywgYXMgc2hlIHdhcyBuZWFyIGVub3VnaCB0bw0KK2xvb2sgb3ZlciB0aGVpciBzbGF0ZXM7IGBidXQgaXQgZG9lc24ndCBtYXR0ZXIgYSBiaXQsJyBzaGUNCit0aG91Z2h0IHRvIGhlcnNlbGYuDQorDQorICBBdCB0aGlzIG1vbWVudCB0aGUgS2luZywgd2hvIGhhZCBiZWVuIGZvciBzb21lIHRpbWUgYnVzaWx5DQord3JpdGluZyBpbiBoaXMgbm90ZS1ib29rLCBjYWNrbGVkIG91dCBgU2lsZW5jZSEnIGFuZCByZWFkIG91dA0KK2Zyb20gaGlzIGJvb2ssIGBSdWxlIEZvcnR5LXR3by4gIEFMTCBQRVJTT05TIE1PUkUgVEhBTiBBIE1JTEUNCitISUdIIFRPIExFQVZFIFRIRSBDT1VSVC4nDQorDQorICBFdmVyeWJvZHkgbG9va2VkIGF0IEFsaWNlLg0KKw0KKyAgYEknTSBub3QgYSBtaWxlIGhpZ2gsJyBzYWlkIEFsaWNlLg0KKw0KKyAgYFlvdSBhcmUsJyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgYE5lYXJseSB0d28gbWlsZXMgaGlnaCwnIGFkZGVkIHRoZSBRdWVlbi4NCisNCisgIGBXZWxsLCBJIHNoYW4ndCBnbywgYXQgYW55IHJhdGUsJyBzYWlkIEFsaWNlOiAgYGJlc2lkZXMsDQordGhhdCdzIG5vdCBhIHJlZ3VsYXIgcnVsZTogIHlvdSBpbnZlbnRlZCBpdCBqdXN0IG5vdy4nDQorDQorICBgSXQncyB0aGUgb2xkZXN0IHJ1bGUgaW4gdGhlIGJvb2ssJyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgYFRoZW4gaXQgb3VnaHQgdG8gYmUgTnVtYmVyIE9uZSwnIHNhaWQgQWxpY2UuDQorDQorICBUaGUgS2luZyB0dXJuZWQgcGFsZSwgYW5kIHNodXQgaGlzIG5vdGUtYm9vayBoYXN0aWx5Lg0KK2BDb25zaWRlciB5b3VyIHZlcmRpY3QsJyBoZSBzYWlkIHRvIHRoZSBqdXJ5LCBpbiBhIGxvdywgdHJlbWJsaW5nDQordm9pY2UuDQorDQorICBgVGhlcmUncyBtb3JlIGV2aWRlbmNlIHRvIGNvbWUgeWV0LCBwbGVhc2UgeW91ciBNYWplc3R5LCcgc2FpZA0KK3RoZSBXaGl0ZSBSYWJiaXQsIGp1bXBpbmcgdXAgaW4gYSBncmVhdCBodXJyeTsgYHRoaXMgcGFwZXIgaGFzDQoranVzdCBiZWVuIHBpY2tlZCB1cC4nDQorDQorICBgV2hhdCdzIGluIGl0Pycgc2FpZCB0aGUgUXVlZW4uDQorDQorICBgSSBoYXZlbid0IG9wZW5lZCBpdCB5ZXQsJyBzYWlkIHRoZSBXaGl0ZSBSYWJiaXQsIGBidXQgaXQgc2VlbXMNCit0byBiZSBhIGxldHRlciwgd3JpdHRlbiBieSB0aGUgcHJpc29uZXIgdG8tLXRvIHNvbWVib2R5LicNCisNCisgIGBJdCBtdXN0IGhhdmUgYmVlbiB0aGF0LCcgc2FpZCB0aGUgS2luZywgYHVubGVzcyBpdCB3YXMNCit3cml0dGVuIHRvIG5vYm9keSwgd2hpY2ggaXNuJ3QgdXN1YWwsIHlvdSBrbm93LicNCisNCisgIGBXaG8gaXMgaXQgZGlyZWN0ZWQgdG8/JyBzYWlkIG9uZSBvZiB0aGUganVyeW1lbi4NCisNCisgIGBJdCBpc24ndCBkaXJlY3RlZCBhdCBhbGwsJyBzYWlkIHRoZSBXaGl0ZSBSYWJiaXQ7IGBpbiBmYWN0LA0KK3RoZXJlJ3Mgbm90aGluZyB3cml0dGVuIG9uIHRoZSBPVVRTSURFLicgIEhlIHVuZm9sZGVkIHRoZSBwYXBlcg0KK2FzIGhlIHNwb2tlLCBhbmQgYWRkZWQgYEl0IGlzbid0IGEgbGV0dGVyLCBhZnRlciBhbGw6ICBpdCdzIGEgc2V0DQorb2YgdmVyc2VzLicNCisNCisgIGBBcmUgdGhleSBpbiB0aGUgcHJpc29uZXIncyBoYW5kd3JpdGluZz8nIGFza2VkIGFub3RoZXIgb2YNCit0aGV5IGp1cnltZW4uDQorDQorICBgTm8sIHRoZXkncmUgbm90LCcgc2FpZCB0aGUgV2hpdGUgUmFiYml0LCBgYW5kIHRoYXQncyB0aGUNCitxdWVlcmVzdCB0aGluZyBhYm91dCBpdC4nICAoVGhlIGp1cnkgYWxsIGxvb2tlZCBwdXp6bGVkLikNCisNCisgIGBIZSBtdXN0IGhhdmUgaW1pdGF0ZWQgc29tZWJvZHkgZWxzZSdzIGhhbmQsJyBzYWlkIHRoZSBLaW5nLg0KKyhUaGUganVyeSBhbGwgYnJpZ2h0ZW5lZCB1cCBhZ2Fpbi4pDQorDQorICBgUGxlYXNlIHlvdXIgTWFqZXN0eSwnIHNhaWQgdGhlIEtuYXZlLCBgSSBkaWRuJ3Qgd3JpdGUgaXQsIGFuZA0KK3RoZXkgY2FuJ3QgcHJvdmUgSSBkaWQ6ICB0aGVyZSdzIG5vIG5hbWUgc2lnbmVkIGF0IHRoZSBlbmQuJw0KKw0KKyAgYElmIHlvdSBkaWRuJ3Qgc2lnbiBpdCwnIHNhaWQgdGhlIEtpbmcsIGB0aGF0IG9ubHkgbWFrZXMgdGhlDQorbWF0dGVyIHdvcnNlLiAgWW91IE1VU1QgaGF2ZSBtZWFudCBzb21lIG1pc2NoaWVmLCBvciBlbHNlIHlvdSdkDQoraGF2ZSBzaWduZWQgeW91ciBuYW1lIGxpa2UgYW4gaG9uZXN0IG1hbi4nDQorDQorICBUaGVyZSB3YXMgYSBnZW5lcmFsIGNsYXBwaW5nIG9mIGhhbmRzIGF0IHRoaXM6ICBpdCB3YXMgdGhlDQorZmlyc3QgcmVhbGx5IGNsZXZlciB0aGluZyB0aGUgS2luZyBoYWQgc2FpZCB0aGF0IGRheS4NCisNCisgIGBUaGF0IFBST1ZFUyBoaXMgZ3VpbHQsJyBzYWlkIHRoZSBRdWVlbi4NCisNCisgIGBJdCBwcm92ZXMgbm90aGluZyBvZiB0aGUgc29ydCEnIHNhaWQgQWxpY2UuICBgV2h5LCB5b3UgZG9uJ3QNCitldmVuIGtub3cgd2hhdCB0aGV5J3JlIGFib3V0IScNCisNCisgIGBSZWFkIHRoZW0sJyBzYWlkIHRoZSBLaW5nLg0KKw0KKyAgVGhlIFdoaXRlIFJhYmJpdCBwdXQgb24gaGlzIHNwZWN0YWNsZXMuICBgV2hlcmUgc2hhbGwgSSBiZWdpbiwNCitwbGVhc2UgeW91ciBNYWplc3R5PycgaGUgYXNrZWQuDQorDQorICBgQmVnaW4gYXQgdGhlIGJlZ2lubmluZywnIHRoZSBLaW5nIHNhaWQgZ3JhdmVseSwgYGFuZCBnbyBvbg0KK3RpbGwgeW91IGNvbWUgdG8gdGhlIGVuZDogIHRoZW4gc3RvcC4nDQorDQorICBUaGVzZSB3ZXJlIHRoZSB2ZXJzZXMgdGhlIFdoaXRlIFJhYmJpdCByZWFkOi0tDQorDQorICAgICAgICBgVGhleSB0b2xkIG1lIHlvdSBoYWQgYmVlbiB0byBoZXIsDQorICAgICAgICAgIEFuZCBtZW50aW9uZWQgbWUgdG8gaGltOg0KKyAgICAgICAgU2hlIGdhdmUgbWUgYSBnb29kIGNoYXJhY3RlciwNCisgICAgICAgICAgQnV0IHNhaWQgSSBjb3VsZCBub3Qgc3dpbS4NCisNCisgICAgICAgIEhlIHNlbnQgdGhlbSB3b3JkIEkgaGFkIG5vdCBnb25lDQorICAgICAgICAgIChXZSBrbm93IGl0IHRvIGJlIHRydWUpOg0KKyAgICAgICAgSWYgc2hlIHNob3VsZCBwdXNoIHRoZSBtYXR0ZXIgb24sDQorICAgICAgICAgIFdoYXQgd291bGQgYmVjb21lIG9mIHlvdT8NCisNCisgICAgICAgIEkgZ2F2ZSBoZXIgb25lLCB0aGV5IGdhdmUgaGltIHR3bywNCisgICAgICAgICAgWW91IGdhdmUgdXMgdGhyZWUgb3IgbW9yZTsNCisgICAgICAgIFRoZXkgYWxsIHJldHVybmVkIGZyb20gaGltIHRvIHlvdSwNCisgICAgICAgICAgVGhvdWdoIHRoZXkgd2VyZSBtaW5lIGJlZm9yZS4NCisNCisgICAgICAgIElmIEkgb3Igc2hlIHNob3VsZCBjaGFuY2UgdG8gYmUNCisgICAgICAgICAgSW52b2x2ZWQgaW4gdGhpcyBhZmZhaXIsDQorICAgICAgICBIZSB0cnVzdHMgdG8geW91IHRvIHNldCB0aGVtIGZyZWUsDQorICAgICAgICAgIEV4YWN0bHkgYXMgd2Ugd2VyZS4NCisNCisgICAgICAgIE15IG5vdGlvbiB3YXMgdGhhdCB5b3UgaGFkIGJlZW4NCisgICAgICAgICAgKEJlZm9yZSBzaGUgaGFkIHRoaXMgZml0KQ0KKyAgICAgICAgQW4gb2JzdGFjbGUgdGhhdCBjYW1lIGJldHdlZW4NCisgICAgICAgICAgSGltLCBhbmQgb3Vyc2VsdmVzLCBhbmQgaXQuDQorDQorICAgICAgICBEb24ndCBsZXQgaGltIGtub3cgc2hlIGxpa2VkIHRoZW0gYmVzdCwNCisgICAgICAgICAgRm9yIHRoaXMgbXVzdCBldmVyIGJlDQorICAgICAgICBBIHNlY3JldCwga2VwdCBmcm9tIGFsbCB0aGUgcmVzdCwNCisgICAgICAgICAgQmV0d2VlbiB5b3Vyc2VsZiBhbmQgbWUuJw0KKw0KKyAgYFRoYXQncyB0aGUgbW9zdCBpbXBvcnRhbnQgcGllY2Ugb2YgZXZpZGVuY2Ugd2UndmUgaGVhcmQgeWV0LCcNCitzYWlkIHRoZSBLaW5nLCBydWJiaW5nIGhpcyBoYW5kczsgYHNvIG5vdyBsZXQgdGhlIGp1cnktLScNCisNCisgIGBJZiBhbnkgb25lIG9mIHRoZW0gY2FuIGV4cGxhaW4gaXQsJyBzYWlkIEFsaWNlLCAoc2hlIGhhZA0KK2dyb3duIHNvIGxhcmdlIGluIHRoZSBsYXN0IGZldyBtaW51dGVzIHRoYXQgc2hlIHdhc24ndCBhIGJpdA0KK2FmcmFpZCBvZiBpbnRlcnJ1cHRpbmcgaGltLCkgYEknbGwgZ2l2ZSBoaW0gc2l4cGVuY2UuICBfSV8gZG9uJ3QNCitiZWxpZXZlIHRoZXJlJ3MgYW4gYXRvbSBvZiBtZWFuaW5nIGluIGl0LicNCisNCisgIFRoZSBqdXJ5IGFsbCB3cm90ZSBkb3duIG9uIHRoZWlyIHNsYXRlcywgYFNIRSBkb2Vzbid0IGJlbGlldmUNCit0aGVyZSdzIGFuIGF0b20gb2YgbWVhbmluZyBpbiBpdCwnIGJ1dCBub25lIG9mIHRoZW0gYXR0ZW1wdGVkIHRvDQorZXhwbGFpbiB0aGUgcGFwZXIuDQorDQorICBgSWYgdGhlcmUncyBubyBtZWFuaW5nIGluIGl0LCcgc2FpZCB0aGUgS2luZywgYHRoYXQgc2F2ZXMgYQ0KK3dvcmxkIG9mIHRyb3VibGUsIHlvdSBrbm93LCBhcyB3ZSBuZWVkbid0IHRyeSB0byBmaW5kIGFueS4gIEFuZA0KK3lldCBJIGRvbid0IGtub3csJyBoZSB3ZW50IG9uLCBzcHJlYWRpbmcgb3V0IHRoZSB2ZXJzZXMgb24gaGlzDQora25lZSwgYW5kIGxvb2tpbmcgYXQgdGhlbSB3aXRoIG9uZSBleWU7IGBJIHNlZW0gdG8gc2VlIHNvbWUNCittZWFuaW5nIGluIHRoZW0sIGFmdGVyIGFsbC4gICItLVNBSUQgSSBDT1VMRCBOT1QgU1dJTS0tIiB5b3UNCitjYW4ndCBzd2ltLCBjYW4geW91PycgaGUgYWRkZWQsIHR1cm5pbmcgdG8gdGhlIEtuYXZlLg0KKw0KKyAgVGhlIEtuYXZlIHNob29rIGhpcyBoZWFkIHNhZGx5LiAgYERvIEkgbG9vayBsaWtlIGl0PycgaGUgc2FpZC4NCisoV2hpY2ggaGUgY2VydGFpbmx5IGRpZCBOT1QsIGJlaW5nIG1hZGUgZW50aXJlbHkgb2YgY2FyZGJvYXJkLikNCisNCisgIGBBbGwgcmlnaHQsIHNvIGZhciwnIHNhaWQgdGhlIEtpbmcsIGFuZCBoZSB3ZW50IG9uIG11dHRlcmluZw0KK292ZXIgdGhlIHZlcnNlcyB0byBoaW1zZWxmOiAgYCJXRSBLTk9XIElUIFRPIEJFIFRSVUUtLSIgdGhhdCdzDQordGhlIGp1cnksIG9mIGNvdXJzZS0tICJJIEdBVkUgSEVSIE9ORSwgVEhFWSBHQVZFIEhJTSBUV08tLSIgd2h5LA0KK3RoYXQgbXVzdCBiZSB3aGF0IGhlIGRpZCB3aXRoIHRoZSB0YXJ0cywgeW91IGtub3ctLScNCisNCisgIGBCdXQsIGl0IGdvZXMgb24gIlRIRVkgQUxMIFJFVFVSTkVEIEZST00gSElNIFRPIFlPVSwiJyBzYWlkDQorQWxpY2UuDQorDQorICBgV2h5LCB0aGVyZSB0aGV5IGFyZSEnIHNhaWQgdGhlIEtpbmcgdHJpdW1waGFudGx5LCBwb2ludGluZyB0bw0KK3RoZSB0YXJ0cyBvbiB0aGUgdGFibGUuICBgTm90aGluZyBjYW4gYmUgY2xlYXJlciB0aGFuIFRIQVQuDQorVGhlbiBhZ2Fpbi0tIkJFRk9SRSBTSEUgSEFEIFRISVMgRklULS0iICB5b3UgbmV2ZXIgaGFkIGZpdHMsIG15DQorZGVhciwgSSB0aGluaz8nIGhlIHNhaWQgdG8gdGhlIFF1ZWVuLg0KKw0KKyAgYE5ldmVyIScgc2FpZCB0aGUgUXVlZW4gZnVyaW91c2x5LCB0aHJvd2luZyBhbiBpbmtzdGFuZCBhdCB0aGUNCitMaXphcmQgYXMgc2hlIHNwb2tlLiAgKFRoZSB1bmZvcnR1bmF0ZSBsaXR0bGUgQmlsbCBoYWQgbGVmdCBvZmYNCit3cml0aW5nIG9uIGhpcyBzbGF0ZSB3aXRoIG9uZSBmaW5nZXIsIGFzIGhlIGZvdW5kIGl0IG1hZGUgbm8NCittYXJrOyBidXQgaGUgbm93IGhhc3RpbHkgYmVnYW4gYWdhaW4sIHVzaW5nIHRoZSBpbmssIHRoYXQgd2FzDQordHJpY2tsaW5nIGRvd24gaGlzIGZhY2UsIGFzIGxvbmcgYXMgaXQgbGFzdGVkLikNCisNCisgIGBUaGVuIHRoZSB3b3JkcyBkb24ndCBGSVQgeW91LCcgc2FpZCB0aGUgS2luZywgbG9va2luZyByb3VuZA0KK3RoZSBjb3VydCB3aXRoIGEgc21pbGUuICBUaGVyZSB3YXMgYSBkZWFkIHNpbGVuY2UuDQorDQorICBgSXQncyBhIHB1biEnIHRoZSBLaW5nIGFkZGVkIGluIGFuIG9mZmVuZGVkIHRvbmUsIGFuZA0KK2V2ZXJ5Ym9keSBsYXVnaGVkLCBgTGV0IHRoZSBqdXJ5IGNvbnNpZGVyIHRoZWlyIHZlcmRpY3QsJyB0aGUNCitLaW5nIHNhaWQsIGZvciBhYm91dCB0aGUgdHdlbnRpZXRoIHRpbWUgdGhhdCBkYXkuDQorDQorICBgTm8sIG5vIScgc2FpZCB0aGUgUXVlZW4uICBgU2VudGVuY2UgZmlyc3QtLXZlcmRpY3QgYWZ0ZXJ3YXJkcy4nDQorDQorICBgU3R1ZmYgYW5kIG5vbnNlbnNlIScgc2FpZCBBbGljZSBsb3VkbHkuICBgVGhlIGlkZWEgb2YgaGF2aW5nDQordGhlIHNlbnRlbmNlIGZpcnN0IScNCisNCisgIGBIb2xkIHlvdXIgdG9uZ3VlIScgc2FpZCB0aGUgUXVlZW4sIHR1cm5pbmcgcHVycGxlLg0KKw0KKyAgYEkgd29uJ3QhJyBzYWlkIEFsaWNlLg0KKw0KKyAgYE9mZiB3aXRoIGhlciBoZWFkIScgdGhlIFF1ZWVuIHNob3V0ZWQgYXQgdGhlIHRvcCBvZiBoZXIgdm9pY2UuDQorTm9ib2R5IG1vdmVkLg0KKw0KKyAgYFdobyBjYXJlcyBmb3IgeW91Pycgc2FpZCBBbGljZSwgKHNoZSBoYWQgZ3Jvd24gdG8gaGVyIGZ1bGwNCitzaXplIGJ5IHRoaXMgdGltZS4pICBgWW91J3JlIG5vdGhpbmcgYnV0IGEgcGFjayBvZiBjYXJkcyEnDQorDQorICBBdCB0aGlzIHRoZSB3aG9sZSBwYWNrIHJvc2UgdXAgaW50byB0aGUgYWlyLCBhbmQgY2FtZSBmbHlpbmcNCitkb3duIHVwb24gaGVyOiAgc2hlIGdhdmUgYSBsaXR0bGUgc2NyZWFtLCBoYWxmIG9mIGZyaWdodCBhbmQgaGFsZg0KK29mIGFuZ2VyLCBhbmQgdHJpZWQgdG8gYmVhdCB0aGVtIG9mZiwgYW5kIGZvdW5kIGhlcnNlbGYgbHlpbmcgb24NCit0aGUgYmFuaywgd2l0aCBoZXIgaGVhZCBpbiB0aGUgbGFwIG9mIGhlciBzaXN0ZXIsIHdobyB3YXMgZ2VudGx5DQorYnJ1c2hpbmcgYXdheSBzb21lIGRlYWQgbGVhdmVzIHRoYXQgaGFkIGZsdXR0ZXJlZCBkb3duIGZyb20gdGhlDQordHJlZXMgdXBvbiBoZXIgZmFjZS4NCisNCisgIGBXYWtlIHVwLCBBbGljZSBkZWFyIScgc2FpZCBoZXIgc2lzdGVyOyBgV2h5LCB3aGF0IGEgbG9uZw0KK3NsZWVwIHlvdSd2ZSBoYWQhJw0KKw0KKyAgYE9oLCBJJ3ZlIGhhZCBzdWNoIGEgY3VyaW91cyBkcmVhbSEnIHNhaWQgQWxpY2UsIGFuZCBzaGUgdG9sZA0KK2hlciBzaXN0ZXIsIGFzIHdlbGwgYXMgc2hlIGNvdWxkIHJlbWVtYmVyIHRoZW0sIGFsbCB0aGVzZSBzdHJhbmdlDQorQWR2ZW50dXJlcyBvZiBoZXJzIHRoYXQgeW91IGhhdmUganVzdCBiZWVuIHJlYWRpbmcgYWJvdXQ7IGFuZA0KK3doZW4gc2hlIGhhZCBmaW5pc2hlZCwgaGVyIHNpc3RlciBraXNzZWQgaGVyLCBhbmQgc2FpZCwgYEl0IFdBUyBhDQorY3VyaW91cyBkcmVhbSwgZGVhciwgY2VydGFpbmx5OiAgYnV0IG5vdyBydW4gaW4gdG8geW91ciB0ZWE7IGl0J3MNCitnZXR0aW5nIGxhdGUuJyAgU28gQWxpY2UgZ290IHVwIGFuZCByYW4gb2ZmLCB0aGlua2luZyB3aGlsZSBzaGUNCityYW4sIGFzIHdlbGwgc2hlIG1pZ2h0LCB3aGF0IGEgd29uZGVyZnVsIGRyZWFtIGl0IGhhZCBiZWVuLg0KKw0KKyAgQnV0IGhlciBzaXN0ZXIgc2F0IHN0aWxsIGp1c3QgYXMgc2hlIGxlZnQgaGVyLCBsZWFuaW5nIGhlcg0KK2hlYWQgb24gaGVyIGhhbmQsIHdhdGNoaW5nIHRoZSBzZXR0aW5nIHN1biwgYW5kIHRoaW5raW5nIG9mDQorbGl0dGxlIEFsaWNlIGFuZCBhbGwgaGVyIHdvbmRlcmZ1bCBBZHZlbnR1cmVzLCB0aWxsIHNoZSB0b28gYmVnYW4NCitkcmVhbWluZyBhZnRlciBhIGZhc2hpb24sIGFuZCB0aGlzIHdhcyBoZXIgZHJlYW06LS0NCisNCisgIEZpcnN0LCBzaGUgZHJlYW1lZCBvZiBsaXR0bGUgQWxpY2UgaGVyc2VsZiwgYW5kIG9uY2UgYWdhaW4gdGhlDQordGlueSBoYW5kcyB3ZXJlIGNsYXNwZWQgdXBvbiBoZXIga25lZSwgYW5kIHRoZSBicmlnaHQgZWFnZXIgZXllcw0KK3dlcmUgbG9va2luZyB1cCBpbnRvIGhlcnMtLXNoZSBjb3VsZCBoZWFyIHRoZSB2ZXJ5IHRvbmVzIG9mIGhlcg0KK3ZvaWNlLCBhbmQgc2VlIHRoYXQgcXVlZXIgbGl0dGxlIHRvc3Mgb2YgaGVyIGhlYWQgdG8ga2VlcCBiYWNrDQordGhlIHdhbmRlcmluZyBoYWlyIHRoYXQgV09VTEQgYWx3YXlzIGdldCBpbnRvIGhlciBleWVzLS1hbmQNCitzdGlsbCBhcyBzaGUgbGlzdGVuZWQsIG9yIHNlZW1lZCB0byBsaXN0ZW4sIHRoZSB3aG9sZSBwbGFjZQ0KK2Fyb3VuZCBoZXIgYmVjYW1lIGFsaXZlIHRoZSBzdHJhbmdlIGNyZWF0dXJlcyBvZiBoZXIgbGl0dGxlDQorc2lzdGVyJ3MgZHJlYW0uDQorDQorICBUaGUgbG9uZyBncmFzcyBydXN0bGVkIGF0IGhlciBmZWV0IGFzIHRoZSBXaGl0ZSBSYWJiaXQgaHVycmllZA0KK2J5LS10aGUgZnJpZ2h0ZW5lZCBNb3VzZSBzcGxhc2hlZCBoaXMgd2F5IHRocm91Z2ggdGhlDQorbmVpZ2hib3VyaW5nIHBvb2wtLXNoZSBjb3VsZCBoZWFyIHRoZSByYXR0bGUgb2YgdGhlIHRlYWN1cHMgYXMNCit0aGUgTWFyY2ggSGFyZSBhbmQgaGlzIGZyaWVuZHMgc2hhcmVkIHRoZWlyIG5ldmVyLWVuZGluZyBtZWFsLA0KK2FuZCB0aGUgc2hyaWxsIHZvaWNlIG9mIHRoZSBRdWVlbiBvcmRlcmluZyBvZmYgaGVyIHVuZm9ydHVuYXRlDQorZ3Vlc3RzIHRvIGV4ZWN1dGlvbi0tb25jZSBtb3JlIHRoZSBwaWctYmFieSB3YXMgc25lZXppbmcgb24gdGhlDQorRHVjaGVzcydzIGtuZWUsIHdoaWxlIHBsYXRlcyBhbmQgZGlzaGVzIGNyYXNoZWQgYXJvdW5kIGl0LS1vbmNlDQorbW9yZSB0aGUgc2hyaWVrIG9mIHRoZSBHcnlwaG9uLCB0aGUgc3F1ZWFraW5nIG9mIHRoZSBMaXphcmQncw0KK3NsYXRlLXBlbmNpbCwgYW5kIHRoZSBjaG9raW5nIG9mIHRoZSBzdXBwcmVzc2VkIGd1aW5lYS1waWdzLA0KK2ZpbGxlZCB0aGUgYWlyLCBtaXhlZCB1cCB3aXRoIHRoZSBkaXN0YW50IHNvYnMgb2YgdGhlIG1pc2VyYWJsZQ0KK01vY2sgVHVydGxlLg0KKw0KKyAgU28gc2hlIHNhdCBvbiwgd2l0aCBjbG9zZWQgZXllcywgYW5kIGhhbGYgYmVsaWV2ZWQgaGVyc2VsZiBpbg0KK1dvbmRlcmxhbmQsIHRob3VnaCBzaGUga25ldyBzaGUgaGFkIGJ1dCB0byBvcGVuIHRoZW0gYWdhaW4sIGFuZA0KK2FsbCB3b3VsZCBjaGFuZ2UgdG8gZHVsbCByZWFsaXR5LS10aGUgZ3Jhc3Mgd291bGQgYmUgb25seQ0KK3J1c3RsaW5nIGluIHRoZSB3aW5kLCBhbmQgdGhlIHBvb2wgcmlwcGxpbmcgdG8gdGhlIHdhdmluZyBvZiB0aGUNCityZWVkcy0tdGhlIHJhdHRsaW5nIHRlYWN1cHMgd291bGQgY2hhbmdlIHRvIHRpbmtsaW5nIHNoZWVwLQ0KK2JlbGxzLCBhbmQgdGhlIFF1ZWVuJ3Mgc2hyaWxsIGNyaWVzIHRvIHRoZSB2b2ljZSBvZiB0aGUgc2hlcGhlcmQNCitib3ktLWFuZCB0aGUgc25lZXplIG9mIHRoZSBiYWJ5LCB0aGUgc2hyaWVrIG9mIHRoZSBHcnlwaG9uLCBhbmQNCithbGwgdGh5IG90aGVyIHF1ZWVyIG5vaXNlcywgd291bGQgY2hhbmdlIChzaGUga25ldykgdG8gdGhlDQorY29uZnVzZWQgY2xhbW91ciBvZiB0aGUgYnVzeSBmYXJtLXlhcmQtLXdoaWxlIHRoZSBsb3dpbmcgb2YgdGhlDQorY2F0dGxlIGluIHRoZSBkaXN0YW5jZSB3b3VsZCB0YWtlIHRoZSBwbGFjZSBvZiB0aGUgTW9jayBUdXJ0bGUncw0KK2hlYXZ5IHNvYnMuDQorDQorICBMYXN0bHksIHNoZSBwaWN0dXJlZCB0byBoZXJzZWxmIGhvdyB0aGlzIHNhbWUgbGl0dGxlIHNpc3RlciBvZg0KK2hlcnMgd291bGQsIGluIHRoZSBhZnRlci10aW1lLCBiZSBoZXJzZWxmIGEgZ3Jvd24gd29tYW47IGFuZCBob3cNCitzaGUgd291bGQga2VlcCwgdGhyb3VnaCBhbGwgaGVyIHJpcGVyIHllYXJzLCB0aGUgc2ltcGxlIGFuZA0KK2xvdmluZyBoZWFydCBvZiBoZXIgY2hpbGRob29kOiAgYW5kIGhvdyBzaGUgd291bGQgZ2F0aGVyIGFib3V0DQoraGVyIG90aGVyIGxpdHRsZSBjaGlsZHJlbiwgYW5kIG1ha2UgVEhFSVIgZXllcyBicmlnaHQgYW5kIGVhZ2VyDQord2l0aCBtYW55IGEgc3RyYW5nZSB0YWxlLCBwZXJoYXBzIGV2ZW4gd2l0aCB0aGUgZHJlYW0gb2YNCitXb25kZXJsYW5kIG9mIGxvbmcgYWdvOiAgYW5kIGhvdyBzaGUgd291bGQgZmVlbCB3aXRoIGFsbCB0aGVpcg0KK3NpbXBsZSBzb3Jyb3dzLCBhbmQgZmluZCBhIHBsZWFzdXJlIGluIGFsbCB0aGVpciBzaW1wbGUgam95cywNCityZW1lbWJlcmluZyBoZXIgb3duIGNoaWxkLWxpZmUsIGFuZCB0aGUgaGFwcHkgc3VtbWVyIGRheXMuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSEUgRU5EDQorGgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9hbGljZTI5LnR4dC5jb21wcmVzc2VkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2FsaWNlMjkudHh0LmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdkODZlMgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9hbGljZTI5LnR4dC5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9hc3lvdWxpay50eHQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYXN5b3VsaWsudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZGM3YjYKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYXN5b3VsaWsudHh0CkBAIC0wLDAgKzEsNDEyMiBAQAorCUFTIFlPVSBMSUtFIElUCisKKworCURSQU1BVElTIFBFUlNPTkFFCisKKworRFVLRSBTRU5JT1IJbGl2aW5nIGluIGJhbmlzaG1lbnQuCisKK0RVS0UgRlJFREVSSUNLCWhpcyBicm90aGVyLCBhbiB1c3VycGVyIG9mIGhpcyBkb21pbmlvbnMuCisKKworQU1JRU5TCXwKKwl8ICBsb3JkcyBhdHRlbmRpbmcgb24gdGhlIGJhbmlzaGVkIGR1a2UuCitKQVFVRVMJfAorCisKK0xFIEJFQVUJYSBjb3VydGllciBhdHRlbmRpbmcgdXBvbiBGcmVkZXJpY2suCisKK0NIQVJMRVMJd3Jlc3RsZXIgdG8gRnJlZGVyaWNrLgorCisKK09MSVZFUgkJfAorCQl8CitKQVFVRVMgKEpBUVVFUyBERSBCT1lTOikgIAl8ICBzb25zIG9mIFNpciBSb3dsYW5kIGRlIEJveXMuCisJCXwKK09STEFORE8JCXwKKworCitBREFNCXwKKwl8ICBzZXJ2YW50cyB0byBPbGl2ZXIuCitERU5OSVMJfAorCisKK1RPVUNIU1RPTkUJYSBjbG93bi4KKworU0lSIE9MSVZFUiBNQVJURVhUCWEgdmljYXIuCisKKworQ09SSU4JfAorCXwgIHNoZXBoZXJkcy4KK1NJTFZJVVMJfAorCisKK1dJTExJQU0JYSBjb3VudHJ5IGZlbGxvdyBpbiBsb3ZlIHdpdGggQXVkcmV5LgorCisJQSBwZXJzb24gcmVwcmVzZW50aW5nIEhZTUVOLiAoSFlNRU46KQorCitST1NBTElORAlkYXVnaHRlciB0byB0aGUgYmFuaXNoZWQgZHVrZS4KKworQ0VMSUEJZGF1Z2h0ZXIgdG8gRnJlZGVyaWNrLgorCitQSEVCRQlhIHNoZXBoZXJkZXNzLgorCitBVURSRVkJYSBjb3VudHJ5IHdlbmNoLgorCisJTG9yZHMsIHBhZ2VzLCBhbmQgYXR0ZW5kYW50cywgJmMuCisJKEZvcmVzdGVyOikKKwkoQSBMb3JkOikKKwkoRmlyc3QgTG9yZDopCisJKFNlY29uZCBMb3JkOikKKwkoRmlyc3QgUGFnZTopCisJKFNlY29uZCBQYWdlOikKKworCitTQ0VORQlPbGl2ZXIncyBob3VzZTsgRHVrZSBGcmVkZXJpY2sncyBjb3VydDsgYW5kIHRoZQorCUZvcmVzdCBvZiBBcmRlbi4KKworCisKKworCUFTIFlPVSBMSUtFIElUCisKKworQUNUIEkKKworCisKK1NDRU5FIEkJT3JjaGFyZCBvZiBPbGl2ZXIncyBob3VzZS4KKworCisJW0VudGVyIE9STEFORE8gYW5kIEFEQU1dCisKK09STEFORE8JQXMgSSByZW1lbWJlciwgQWRhbSwgaXQgd2FzIHVwb24gdGhpcyBmYXNoaW9uCisJYmVxdWVhdGhlZCBtZSBieSB3aWxsIGJ1dCBwb29yIGEgdGhvdXNhbmQgY3Jvd25zLAorCWFuZCwgYXMgdGhvdSBzYXllc3QsIGNoYXJnZWQgbXkgYnJvdGhlciwgb24gaGlzCisJYmxlc3NpbmcsIHRvIGJyZWVkIG1lIHdlbGw6IGFuZCB0aGVyZSBiZWdpbnMgbXkKKwlzYWRuZXNzLiBNeSBicm90aGVyIEphcXVlcyBoZSBrZWVwcyBhdCBzY2hvb2wsIGFuZAorCXJlcG9ydCBzcGVha3MgZ29sZGVubHkgb2YgaGlzIHByb2ZpdDogZm9yIG15IHBhcnQsCisJaGUga2VlcHMgbWUgcnVzdGljYWxseSBhdCBob21lLCBvciwgdG8gc3BlYWsgbW9yZQorCXByb3Blcmx5LCBzdGF5cyBtZSBoZXJlIGF0IGhvbWUgdW5rZXB0OyBmb3IgY2FsbCB5b3UKKwl0aGF0IGtlZXBpbmcgZm9yIGEgZ2VudGxlbWFuIG9mIG15IGJpcnRoLCB0aGF0CisJZGlmZmVycyBub3QgZnJvbSB0aGUgc3RhbGxpbmcgb2YgYW4gb3g/IEhpcyBob3JzZXMKKwlhcmUgYnJlZCBiZXR0ZXI7IGZvciwgYmVzaWRlcyB0aGF0IHRoZXkgYXJlIGZhaXIKKwl3aXRoIHRoZWlyIGZlZWRpbmcsIHRoZXkgYXJlIHRhdWdodCB0aGVpciBtYW5hZ2UsCisJYW5kIHRvIHRoYXQgZW5kIHJpZGVycyBkZWFybHkgaGlyZWQ6IGJ1dCBJLCBoaXMKKwlicm90aGVyLCBnYWluIG5vdGhpbmcgdW5kZXIgaGltIGJ1dCBncm93dGg7IGZvciB0aGUKKwl3aGljaCBoaXMgYW5pbWFscyBvbiBoaXMgZHVuZ2hpbGxzIGFyZSBhcyBtdWNoCisJYm91bmQgdG8gaGltIGFzIEkuIEJlc2lkZXMgdGhpcyBub3RoaW5nIHRoYXQgaGUgc28KKwlwbGVudGlmdWxseSBnaXZlcyBtZSwgdGhlIHNvbWV0aGluZyB0aGF0IG5hdHVyZSBnYXZlCisJbWUgaGlzIGNvdW50ZW5hbmNlIHNlZW1zIHRvIHRha2UgZnJvbSBtZTogaGUgbGV0cworCW1lIGZlZWQgd2l0aCBoaXMgaGluZHMsIGJhcnMgbWUgdGhlIHBsYWNlIG9mIGEKKwlicm90aGVyLCBhbmQsIGFzIG11Y2ggYXMgaW4gaGltIGxpZXMsIG1pbmVzIG15CisJZ2VudGlsaXR5IHdpdGggbXkgZWR1Y2F0aW9uLiBUaGlzIGlzIGl0LCBBZGFtLCB0aGF0CisJZ3JpZXZlcyBtZTsgYW5kIHRoZSBzcGlyaXQgb2YgbXkgZmF0aGVyLCB3aGljaCBJCisJdGhpbmsgaXMgd2l0aGluIG1lLCBiZWdpbnMgdG8gbXV0aW55IGFnYWluc3QgdGhpcworCXNlcnZpdHVkZTogSSB3aWxsIG5vIGxvbmdlciBlbmR1cmUgaXQsIHRob3VnaCB5ZXQgSQorCWtub3cgbm8gd2lzZSByZW1lZHkgaG93IHRvIGF2b2lkIGl0LgorCitBREFNCVlvbmRlciBjb21lcyBteSBtYXN0ZXIsIHlvdXIgYnJvdGhlci4KKworT1JMQU5ETwlHbyBhcGFydCwgQWRhbSwgYW5kIHRob3Ugc2hhbHQgaGVhciBob3cgaGUgd2lsbAorCXNoYWtlIG1lIHVwLgorCisJW0VudGVyIE9MSVZFUl0KKworT0xJVkVSCU5vdywgc2lyISB3aGF0IG1ha2UgeW91IGhlcmU/CisKK09STEFORE8JTm90aGluZzogSSBhbSBub3QgdGF1Z2h0IHRvIG1ha2UgYW55IHRoaW5nLgorCitPTElWRVIJV2hhdCBtYXIgeW91IHRoZW4sIHNpcj8KKworT1JMQU5ETwlNYXJyeSwgc2lyLCBJIGFtIGhlbHBpbmcgeW91IHRvIG1hciB0aGF0IHdoaWNoIEdvZAorCW1hZGUsIGEgcG9vciB1bndvcnRoeSBicm90aGVyIG9mIHlvdXJzLCB3aXRoIGlkbGVuZXNzLgorCitPTElWRVIJTWFycnksIHNpciwgYmUgYmV0dGVyIGVtcGxveWVkLCBhbmQgYmUgbmF1Z2h0IGF3aGlsZS4KKworT1JMQU5ETwlTaGFsbCBJIGtlZXAgeW91ciBob2dzIGFuZCBlYXQgaHVza3Mgd2l0aCB0aGVtPworCVdoYXQgcHJvZGlnYWwgcG9ydGlvbiBoYXZlIEkgc3BlbnQsIHRoYXQgSSBzaG91bGQKKwljb21lIHRvIHN1Y2ggcGVudXJ5PworCitPTElWRVIJS25vdyB5b3Ugd2hlcmUgeW91ciBhcmUsIHNpcj8KKworT1JMQU5ETwlPLCBzaXIsIHZlcnkgd2VsbDsgaGVyZSBpbiB5b3VyIG9yY2hhcmQuCisKK09MSVZFUglLbm93IHlvdSBiZWZvcmUgd2hvbSwgc2lyPworCitPUkxBTkRPCUF5LCBiZXR0ZXIgdGhhbiBoaW0gSSBhbSBiZWZvcmUga25vd3MgbWUuIEkga25vdworCXlvdSBhcmUgbXkgZWxkZXN0IGJyb3RoZXI7IGFuZCwgaW4gdGhlIGdlbnRsZQorCWNvbmRpdGlvbiBvZiBibG9vZCwgeW91IHNob3VsZCBzbyBrbm93IG1lLiBUaGUKKwljb3VydGVzeSBvZiBuYXRpb25zIGFsbG93cyB5b3UgbXkgYmV0dGVyLCBpbiB0aGF0CisJeW91IGFyZSB0aGUgZmlyc3QtYm9ybjsgYnV0IHRoZSBzYW1lIHRyYWRpdGlvbgorCXRha2VzIG5vdCBhd2F5IG15IGJsb29kLCB3ZXJlIHRoZXJlIHR3ZW50eSBicm90aGVycworCWJldHdpeHQgdXM6IEkgaGF2ZSBhcyBtdWNoIG9mIG15IGZhdGhlciBpbiBtZSBhcworCXlvdTsgYWxiZWl0LCBJIGNvbmZlc3MsIHlvdXIgY29taW5nIGJlZm9yZSBtZSBpcworCW5lYXJlciB0byBoaXMgcmV2ZXJlbmNlLgorCitPTElWRVIJV2hhdCwgYm95IQorCitPUkxBTkRPCUNvbWUsIGNvbWUsIGVsZGVyIGJyb3RoZXIsIHlvdSBhcmUgdG9vIHlvdW5nIGluIHRoaXMuCisKK09MSVZFUglXaWx0IHRob3UgbGF5IGhhbmRzIG9uIG1lLCB2aWxsYWluPworCitPUkxBTkRPCUkgYW0gbm8gdmlsbGFpbjsgSSBhbSB0aGUgeW91bmdlc3Qgc29uIG9mIFNpcgorCVJvd2xhbmQgZGUgQm95czsgaGUgd2FzIG15IGZhdGhlciwgYW5kIGhlIGlzIHRocmljZQorCWEgdmlsbGFpbiB0aGF0IHNheXMgc3VjaCBhIGZhdGhlciBiZWdvdCB2aWxsYWlucy4KKwlXZXJ0IHRob3Ugbm90IG15IGJyb3RoZXIsIEkgd291bGQgbm90IHRha2UgdGhpcyBoYW5kCisJZnJvbSB0aHkgdGhyb2F0IHRpbGwgdGhpcyBvdGhlciBoYWQgcHVsbGVkIG91dCB0aHkKKwl0b25ndWUgZm9yIHNheWluZyBzbzogdGhvdSBoYXN0IHJhaWxlZCBvbiB0aHlzZWxmLgorCitBREFNCVN3ZWV0IG1hc3RlcnMsIGJlIHBhdGllbnQ6IGZvciB5b3VyIGZhdGhlcidzCisJcmVtZW1icmFuY2UsIGJlIGF0IGFjY29yZC4KKworT0xJVkVSCUxldCBtZSBnbywgSSBzYXkuCisKK09STEFORE8JSSB3aWxsIG5vdCwgdGlsbCBJIHBsZWFzZTogeW91IHNoYWxsIGhlYXIgbWUuIE15CisJZmF0aGVyIGNoYXJnZWQgeW91IGluIGhpcyB3aWxsIHRvIGdpdmUgbWUgZ29vZAorCWVkdWNhdGlvbjogeW91IGhhdmUgdHJhaW5lZCBtZSBsaWtlIGEgcGVhc2FudCwKKwlvYnNjdXJpbmcgYW5kIGhpZGluZyBmcm9tIG1lIGFsbCBnZW50bGVtYW4tbGlrZQorCXF1YWxpdGllcy4gVGhlIHNwaXJpdCBvZiBteSBmYXRoZXIgZ3Jvd3Mgc3Ryb25nIGluCisJbWUsIGFuZCBJIHdpbGwgbm8gbG9uZ2VyIGVuZHVyZSBpdDogdGhlcmVmb3JlIGFsbG93CisJbWUgc3VjaCBleGVyY2lzZXMgYXMgbWF5IGJlY29tZSBhIGdlbnRsZW1hbiwgb3IKKwlnaXZlIG1lIHRoZSBwb29yIGFsbG90dGVyeSBteSBmYXRoZXIgbGVmdCBtZSBieQorCXRlc3RhbWVudDsgd2l0aCB0aGF0IEkgd2lsbCBnbyBidXkgbXkgZm9ydHVuZXMuCisKK09MSVZFUglBbmQgd2hhdCB3aWx0IHRob3UgZG8/IGJlZywgd2hlbiB0aGF0IGlzIHNwZW50PworCVdlbGwsIHNpciwgZ2V0IHlvdSBpbjogSSB3aWxsIG5vdCBsb25nIGJlIHRyb3VibGVkCisJd2l0aCB5b3U7IHlvdSBzaGFsbCBoYXZlIHNvbWUgcGFydCBvZiB5b3VyIHdpbGw6IEkKKwlwcmF5IHlvdSwgbGVhdmUgbWUuCisKK09STEFORE8JSSB3aWxsIG5vIGZ1cnRoZXIgb2ZmZW5kIHlvdSB0aGFuIGJlY29tZXMgbWUgZm9yIG15IGdvb2QuCisKK09MSVZFUglHZXQgeW91IHdpdGggaGltLCB5b3Ugb2xkIGRvZy4KKworQURBTQlJcyAnb2xkIGRvZycgbXkgcmV3YXJkPyBNb3N0IHRydWUsIEkgaGF2ZSBsb3N0IG15CisJdGVldGggaW4geW91ciBzZXJ2aWNlLiBHb2QgYmUgd2l0aCBteSBvbGQgbWFzdGVyIQorCWhlIHdvdWxkIG5vdCBoYXZlIHNwb2tlIHN1Y2ggYSB3b3JkLgorCisJW0V4ZXVudCBPUkxBTkRPIGFuZCBBREFNXQorCitPTElWRVIJSXMgaXQgZXZlbiBzbz8gYmVnaW4geW91IHRvIGdyb3cgdXBvbiBtZT8gSSB3aWxsCisJcGh5c2ljIHlvdXIgcmFua25lc3MsIGFuZCB5ZXQgZ2l2ZSBubyB0aG91c2FuZAorCWNyb3ducyBuZWl0aGVyLiBIb2xsYSwgRGVubmlzIQorCisJW0VudGVyIERFTk5JU10KKworREVOTklTCUNhbGxzIHlvdXIgd29yc2hpcD8KKworT0xJVkVSCVdhcyBub3QgQ2hhcmxlcywgdGhlIGR1a2UncyB3cmVzdGxlciwgaGVyZSB0byBzcGVhayB3aXRoIG1lPworCitERU5OSVMJU28gcGxlYXNlIHlvdSwgaGUgaXMgaGVyZSBhdCB0aGUgZG9vciBhbmQgaW1wb3J0dW5lcworCWFjY2VzcyB0byB5b3UuCisKK09MSVZFUglDYWxsIGhpbSBpbi4KKworCVtFeGl0IERFTk5JU10KKworCSdUd2lsbCBiZSBhIGdvb2Qgd2F5OyBhbmQgdG8tbW9ycm93IHRoZSB3cmVzdGxpbmcgaXMuCisKKwlbRW50ZXIgQ0hBUkxFU10KKworQ0hBUkxFUwlHb29kIG1vcnJvdyB0byB5b3VyIHdvcnNoaXAuCisKK09MSVZFUglHb29kIE1vbnNpZXVyIENoYXJsZXMsIHdoYXQncyB0aGUgbmV3IG5ld3MgYXQgdGhlCisJbmV3IGNvdXJ0PworCitDSEFSTEVTCVRoZXJlJ3Mgbm8gbmV3cyBhdCB0aGUgY291cnQsIHNpciwgYnV0IHRoZSBvbGQgbmV3czoKKwl0aGF0IGlzLCB0aGUgb2xkIGR1a2UgaXMgYmFuaXNoZWQgYnkgaGlzIHlvdW5nZXIKKwlicm90aGVyIHRoZSBuZXcgZHVrZTsgYW5kIHRocmVlIG9yIGZvdXIgbG92aW5nIGxvcmRzCisJaGF2ZSBwdXQgdGhlbXNlbHZlcyBpbnRvIHZvbHVudGFyeSBleGlsZSB3aXRoIGhpbSwKKwl3aG9zZSBsYW5kcyBhbmQgcmV2ZW51ZXMgZW5yaWNoIHRoZSBuZXcgZHVrZTsKKwl0aGVyZWZvcmUgaGUgZ2l2ZXMgdGhlbSBnb29kIGxlYXZlIHRvIHdhbmRlci4KKworT0xJVkVSCUNhbiB5b3UgdGVsbCBpZiBSb3NhbGluZCwgdGhlIGR1a2UncyBkYXVnaHRlciwgYmUKKwliYW5pc2hlZCB3aXRoIGhlciBmYXRoZXI/CisKK0NIQVJMRVMJTywgbm87IGZvciB0aGUgZHVrZSdzIGRhdWdodGVyLCBoZXIgY291c2luLCBzbyBsb3ZlcworCWhlciwgYmVpbmcgZXZlciBmcm9tIHRoZWlyIGNyYWRsZXMgYnJlZCB0b2dldGhlciwKKwl0aGF0IHNoZSB3b3VsZCBoYXZlIGZvbGxvd2VkIGhlciBleGlsZSwgb3IgaGF2ZSBkaWVkCisJdG8gc3RheSBiZWhpbmQgaGVyLiBTaGUgaXMgYXQgdGhlIGNvdXJ0LCBhbmQgbm8KKwlsZXNzIGJlbG92ZWQgb2YgaGVyIHVuY2xlIHRoYW4gaGlzIG93biBkYXVnaHRlcjsgYW5kCisJbmV2ZXIgdHdvIGxhZGllcyBsb3ZlZCBhcyB0aGV5IGRvLgorCitPTElWRVIJV2hlcmUgd2lsbCB0aGUgb2xkIGR1a2UgbGl2ZT8KKworQ0hBUkxFUwlUaGV5IHNheSBoZSBpcyBhbHJlYWR5IGluIHRoZSBmb3Jlc3Qgb2YgQXJkZW4sIGFuZAorCWEgbWFueSBtZXJyeSBtZW4gd2l0aCBoaW07IGFuZCB0aGVyZSB0aGV5IGxpdmUgbGlrZQorCXRoZSBvbGQgUm9iaW4gSG9vZCBvZiBFbmdsYW5kOiB0aGV5IHNheSBtYW55IHlvdW5nCisJZ2VudGxlbWVuIGZsb2NrIHRvIGhpbSBldmVyeSBkYXksIGFuZCBmbGVldCB0aGUgdGltZQorCWNhcmVsZXNzbHksIGFzIHRoZXkgZGlkIGluIHRoZSBnb2xkZW4gd29ybGQuCisKK09MSVZFUglXaGF0LCB5b3Ugd3Jlc3RsZSB0by1tb3Jyb3cgYmVmb3JlIHRoZSBuZXcgZHVrZT8KKworQ0hBUkxFUwlNYXJyeSwgZG8gSSwgc2lyOyBhbmQgSSBjYW1lIHRvIGFjcXVhaW50IHlvdSB3aXRoIGEKKwltYXR0ZXIuIEkgYW0gZ2l2ZW4sIHNpciwgc2VjcmV0bHkgdG8gdW5kZXJzdGFuZAorCXRoYXQgeW91ciB5b3VuZ2VyIGJyb3RoZXIgT3JsYW5kbyBoYXRoIGEgZGlzcG9zaXRpb24KKwl0byBjb21lIGluIGRpc2d1aXNlZCBhZ2FpbnN0IG1lIHRvIHRyeSBhIGZhbGwuCisJVG8tbW9ycm93LCBzaXIsIEkgd3Jlc3RsZSBmb3IgbXkgY3JlZGl0OyBhbmQgaGUgdGhhdAorCWVzY2FwZXMgbWUgd2l0aG91dCBzb21lIGJyb2tlbiBsaW1iIHNoYWxsIGFjcXVpdCBoaW0KKwl3ZWxsLiBZb3VyIGJyb3RoZXIgaXMgYnV0IHlvdW5nIGFuZCB0ZW5kZXI7IGFuZCwKKwlmb3IgeW91ciBsb3ZlLCBJIHdvdWxkIGJlIGxvYXRoIHRvIGZvaWwgaGltLCBhcyBJCisJbXVzdCwgZm9yIG15IG93biBob25vdXIsIGlmIGhlIGNvbWUgaW46IHRoZXJlZm9yZSwKKwlvdXQgb2YgbXkgbG92ZSB0byB5b3UsIEkgY2FtZSBoaXRoZXIgdG8gYWNxdWFpbnQgeW91CisJd2l0aGFsLCB0aGF0IGVpdGhlciB5b3UgbWlnaHQgc3RheSBoaW0gZnJvbSBoaXMKKwlpbnRlbmRtZW50IG9yIGJyb29rIHN1Y2ggZGlzZ3JhY2Ugd2VsbCBhcyBoZSBzaGFsbAorCXJ1biBpbnRvLCBpbiB0aGF0IGl0IGlzIGEgdGhpbmcgb2YgaGlzIG93biBzZWFyY2gKKwlhbmQgYWx0b2dldGhlciBhZ2FpbnN0IG15IHdpbGwuCisKK09MSVZFUglDaGFybGVzLCBJIHRoYW5rIHRoZWUgZm9yIHRoeSBsb3ZlIHRvIG1lLCB3aGljaAorCXRob3Ugc2hhbHQgZmluZCBJIHdpbGwgbW9zdCBraW5kbHkgcmVxdWl0ZS4gSSBoYWQKKwlteXNlbGYgbm90aWNlIG9mIG15IGJyb3RoZXIncyBwdXJwb3NlIGhlcmVpbiBhbmQKKwloYXZlIGJ5IHVuZGVyaGFuZCBtZWFucyBsYWJvdXJlZCB0byBkaXNzdWFkZSBoaW0gZnJvbQorCWl0LCBidXQgaGUgaXMgcmVzb2x1dGUuIEknbGwgdGVsbCB0aGVlLCBDaGFybGVzOgorCWl0IGlzIHRoZSBzdHViYm9ybmVzdCB5b3VuZyBmZWxsb3cgb2YgRnJhbmNlLCBmdWxsCisJb2YgYW1iaXRpb24sIGFuIGVudmlvdXMgZW11bGF0b3Igb2YgZXZlcnkgbWFuJ3MKKwlnb29kIHBhcnRzLCBhIHNlY3JldCBhbmQgdmlsbGFub3VzIGNvbnRyaXZlciBhZ2FpbnN0CisJbWUgaGlzIG5hdHVyYWwgYnJvdGhlcjogdGhlcmVmb3JlIHVzZSB0aHkKKwlkaXNjcmV0aW9uOyBJIGhhZCBhcyBsaWVmIHRob3UgZGlkc3QgYnJlYWsgaGlzIG5lY2sKKwlhcyBoaXMgZmluZ2VyLiBBbmQgdGhvdSB3ZXJ0IGJlc3QgbG9vayB0byd0OyBmb3IgaWYKKwl0aG91IGRvc3QgaGltIGFueSBzbGlnaHQgZGlzZ3JhY2Ugb3IgaWYgaGUgZG8gbm90CisJbWlnaHRpbHkgZ3JhY2UgaGltc2VsZiBvbiB0aGVlLCBoZSB3aWxsIHByYWN0aXNlCisJYWdhaW5zdCB0aGVlIGJ5IHBvaXNvbiwgZW50cmFwIHRoZWUgYnkgc29tZQorCXRyZWFjaGVyb3VzIGRldmljZSBhbmQgbmV2ZXIgbGVhdmUgdGhlZSB0aWxsIGhlCisJaGF0aCB0YSdlbiB0aHkgbGlmZSBieSBzb21lIGluZGlyZWN0IG1lYW5zIG9yIG90aGVyOworCWZvciwgSSBhc3N1cmUgdGhlZSwgYW5kIGFsbW9zdCB3aXRoIHRlYXJzIEkgc3BlYWsKKwlpdCwgdGhlcmUgaXMgbm90IG9uZSBzbyB5b3VuZyBhbmQgc28gdmlsbGFub3VzIHRoaXMKKwlkYXkgbGl2aW5nLiBJIHNwZWFrIGJ1dCBicm90aGVybHkgb2YgaGltOyBidXQKKwlzaG91bGQgSSBhbmF0b21pemUgaGltIHRvIHRoZWUgYXMgaGUgaXMsIEkgbXVzdAorCWJsdXNoIGFuZCB3ZWVwIGFuZCB0aG91IG11c3QgbG9vayBwYWxlIGFuZCB3b25kZXIuCisKK0NIQVJMRVMJSSBhbSBoZWFydGlseSBnbGFkIEkgY2FtZSBoaXRoZXIgdG8geW91LiBJZiBoZSBjb21lCisJdG8tbW9ycm93LCBJJ2xsIGdpdmUgaGltIGhpcyBwYXltZW50OiBpZiBldmVyIGhlIGdvCisJYWxvbmUgYWdhaW4sIEknbGwgbmV2ZXIgd3Jlc3RsZSBmb3IgcHJpemUgbW9yZTogYW5kCisJc28gR29kIGtlZXAgeW91ciB3b3JzaGlwIQorCitPTElWRVIJRmFyZXdlbGwsIGdvb2QgQ2hhcmxlcy4KKworCVtFeGl0IENIQVJMRVNdCisKKwlOb3cgd2lsbCBJIHN0aXIgdGhpcyBnYW1lc3RlcjogSSBob3BlIEkgc2hhbGwgc2VlCisJYW4gZW5kIG9mIGhpbTsgZm9yIG15IHNvdWwsIHlldCBJIGtub3cgbm90IHdoeSwKKwloYXRlcyBub3RoaW5nIG1vcmUgdGhhbiBoZS4gWWV0IGhlJ3MgZ2VudGxlLCBuZXZlcgorCXNjaG9vbGVkIGFuZCB5ZXQgbGVhcm5lZCwgZnVsbCBvZiBub2JsZSBkZXZpY2UsIG9mCisJYWxsIHNvcnRzIGVuY2hhbnRpbmdseSBiZWxvdmVkLCBhbmQgaW5kZWVkIHNvIG11Y2gKKwlpbiB0aGUgaGVhcnQgb2YgdGhlIHdvcmxkLCBhbmQgZXNwZWNpYWxseSBvZiBteSBvd24KKwlwZW9wbGUsIHdobyBiZXN0IGtub3cgaGltLCB0aGF0IEkgYW0gYWx0b2dldGhlcgorCW1pc3ByaXNlZDogYnV0IGl0IHNoYWxsIG5vdCBiZSBzbyBsb25nOyB0aGlzCisJd3Jlc3RsZXIgc2hhbGwgY2xlYXIgYWxsOiBub3RoaW5nIHJlbWFpbnMgYnV0IHRoYXQKKwlJIGtpbmRsZSB0aGUgYm95IHRoaXRoZXI7IHdoaWNoIG5vdyBJJ2xsIGdvIGFib3V0LgorCisJW0V4aXRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBJCisKKworCitTQ0VORSBJSQlMYXduIGJlZm9yZSB0aGUgRHVrZSdzIHBhbGFjZS4KKworCisJW0VudGVyIENFTElBIGFuZCBST1NBTElORF0KKworQ0VMSUEJSSBwcmF5IHRoZWUsIFJvc2FsaW5kLCBzd2VldCBteSBjb3osIGJlIG1lcnJ5LgorCitST1NBTElORAlEZWFyIENlbGlhLCBJIHNob3cgbW9yZSBtaXJ0aCB0aGFuIEkgYW0gbWlzdHJlc3Mgb2Y7CisJYW5kIHdvdWxkIHlvdSB5ZXQgSSB3ZXJlIG1lcnJpZXI/IFVubGVzcyB5b3UgY291bGQKKwl0ZWFjaCBtZSB0byBmb3JnZXQgYSBiYW5pc2hlZCBmYXRoZXIsIHlvdSBtdXN0IG5vdAorCWxlYXJuIG1lIGhvdyB0byByZW1lbWJlciBhbnkgZXh0cmFvcmRpbmFyeSBwbGVhc3VyZS4KKworQ0VMSUEJSGVyZWluIEkgc2VlIHRob3UgbG92ZXN0IG1lIG5vdCB3aXRoIHRoZSBmdWxsIHdlaWdodAorCXRoYXQgSSBsb3ZlIHRoZWUuIElmIG15IHVuY2xlLCB0aHkgYmFuaXNoZWQgZmF0aGVyLAorCWhhZCBiYW5pc2hlZCB0aHkgdW5jbGUsIHRoZSBkdWtlIG15IGZhdGhlciwgc28gdGhvdQorCWhhZHN0IGJlZW4gc3RpbGwgd2l0aCBtZSwgSSBjb3VsZCBoYXZlIHRhdWdodCBteQorCWxvdmUgdG8gdGFrZSB0aHkgZmF0aGVyIGZvciBtaW5lOiBzbyB3b3VsZHN0IHRob3UsCisJaWYgdGhlIHRydXRoIG9mIHRoeSBsb3ZlIHRvIG1lIHdlcmUgc28gcmlnaHRlb3VzbHkKKwl0ZW1wZXJlZCBhcyBtaW5lIGlzIHRvIHRoZWUuCisKK1JPU0FMSU5ECVdlbGwsIEkgd2lsbCBmb3JnZXQgdGhlIGNvbmRpdGlvbiBvZiBteSBlc3RhdGUsIHRvCisJcmVqb2ljZSBpbiB5b3Vycy4KKworQ0VMSUEJWW91IGtub3cgbXkgZmF0aGVyIGhhdGggbm8gY2hpbGQgYnV0IEksIG5vciBub25lIGlzCisJbGlrZSB0byBoYXZlOiBhbmQsIHRydWx5LCB3aGVuIGhlIGRpZXMsIHRob3Ugc2hhbHQKKwliZSBoaXMgaGVpciwgZm9yIHdoYXQgaGUgaGF0aCB0YWtlbiBhd2F5IGZyb20gdGh5CisJZmF0aGVyIHBlcmZvcmNlLCBJIHdpbGwgcmVuZGVyIHRoZWUgYWdhaW4gaW4KKwlhZmZlY3Rpb247IGJ5IG1pbmUgaG9ub3VyLCBJIHdpbGw7IGFuZCB3aGVuIEkgYnJlYWsKKwl0aGF0IG9hdGgsIGxldCBtZSB0dXJuIG1vbnN0ZXI6IHRoZXJlZm9yZSwgbXkKKwlzd2VldCBSb3NlLCBteSBkZWFyIFJvc2UsIGJlIG1lcnJ5LgorCitST1NBTElORAlGcm9tIGhlbmNlZm9ydGggSSB3aWxsLCBjb3osIGFuZCBkZXZpc2Ugc3BvcnRzLiBMZXQKKwltZSBzZWU7IHdoYXQgdGhpbmsgeW91IG9mIGZhbGxpbmcgaW4gbG92ZT8KKworQ0VMSUEJTWFycnksIEkgcHJpdGhlZSwgZG8sIHRvIG1ha2Ugc3BvcnQgd2l0aGFsOiBidXQKKwlsb3ZlIG5vIG1hbiBpbiBnb29kIGVhcm5lc3Q7IG5vciBubyBmdXJ0aGVyIGluIHNwb3J0CisJbmVpdGhlciB0aGFuIHdpdGggc2FmZXR5IG9mIGEgcHVyZSBibHVzaCB0aG91IG1heXN0CisJaW4gaG9ub3VyIGNvbWUgb2ZmIGFnYWluLgorCitST1NBTElORAlXaGF0IHNoYWxsIGJlIG91ciBzcG9ydCwgdGhlbj8KKworQ0VMSUEJTGV0IHVzIHNpdCBhbmQgbW9jayB0aGUgZ29vZCBob3VzZXdpZmUgRm9ydHVuZSBmcm9tCisJaGVyIHdoZWVsLCB0aGF0IGhlciBnaWZ0cyBtYXkgaGVuY2Vmb3J0aCBiZSBiZXN0b3dlZCBlcXVhbGx5LgorCitST1NBTElORAlJIHdvdWxkIHdlIGNvdWxkIGRvIHNvLCBmb3IgaGVyIGJlbmVmaXRzIGFyZQorCW1pZ2h0aWx5IG1pc3BsYWNlZCwgYW5kIHRoZSBib3VudGlmdWwgYmxpbmQgd29tYW4KKwlkb3RoIG1vc3QgbWlzdGFrZSBpbiBoZXIgZ2lmdHMgdG8gd29tZW4uCisKK0NFTElBCSdUaXMgdHJ1ZTsgZm9yIHRob3NlIHRoYXQgc2hlIG1ha2VzIGZhaXIgc2hlIHNjYXJjZQorCW1ha2VzIGhvbmVzdCwgYW5kIHRob3NlIHRoYXQgc2hlIG1ha2VzIGhvbmVzdCBzaGUKKwltYWtlcyB2ZXJ5IGlsbC1mYXZvdXJlZGx5LgorCitST1NBTElORAlOYXksIG5vdyB0aG91IGdvZXN0IGZyb20gRm9ydHVuZSdzIG9mZmljZSB0bworCU5hdHVyZSdzOiBGb3J0dW5lIHJlaWducyBpbiBnaWZ0cyBvZiB0aGUgd29ybGQsCisJbm90IGluIHRoZSBsaW5lYW1lbnRzIG9mIE5hdHVyZS4KKworCVtFbnRlciBUT1VDSFNUT05FXQorCitDRUxJQQlObz8gd2hlbiBOYXR1cmUgaGF0aCBtYWRlIGEgZmFpciBjcmVhdHVyZSwgbWF5IHNoZQorCW5vdCBieSBGb3J0dW5lIGZhbGwgaW50byB0aGUgZmlyZT8gVGhvdWdoIE5hdHVyZQorCWhhdGggZ2l2ZW4gdXMgd2l0IHRvIGZsb3V0IGF0IEZvcnR1bmUsIGhhdGggbm90CisJRm9ydHVuZSBzZW50IGluIHRoaXMgZm9vbCB0byBjdXQgb2ZmIHRoZSBhcmd1bWVudD8KKworUk9TQUxJTkQJSW5kZWVkLCB0aGVyZSBpcyBGb3J0dW5lIHRvbyBoYXJkIGZvciBOYXR1cmUsIHdoZW4KKwlGb3J0dW5lIG1ha2VzIE5hdHVyZSdzIG5hdHVyYWwgdGhlIGN1dHRlci1vZmYgb2YKKwlOYXR1cmUncyB3aXQuCisKK0NFTElBCVBlcmFkdmVudHVyZSB0aGlzIGlzIG5vdCBGb3J0dW5lJ3Mgd29yayBuZWl0aGVyLCBidXQKKwlOYXR1cmUnczsgd2hvIHBlcmNlaXZldGggb3VyIG5hdHVyYWwgd2l0cyB0b28gZHVsbAorCXRvIHJlYXNvbiBvZiBzdWNoIGdvZGRlc3NlcyBhbmQgaGF0aCBzZW50IHRoaXMKKwluYXR1cmFsIGZvciBvdXIgd2hldHN0b25lOyBmb3IgYWx3YXlzIHRoZSBkdWxuZXNzIG9mCisJdGhlIGZvb2wgaXMgdGhlIHdoZXRzdG9uZSBvZiB0aGUgd2l0cy4gSG93IG5vdywKKwl3aXQhIHdoaXRoZXIgd2FuZGVyIHlvdT8KKworVE9VQ0hTVE9ORQlNaXN0cmVzcywgeW91IG11c3QgY29tZSBhd2F5IHRvIHlvdXIgZmF0aGVyLgorCitDRUxJQQlXZXJlIHlvdSBtYWRlIHRoZSBtZXNzZW5nZXI/CisKK1RPVUNIU1RPTkUJTm8sIGJ5IG1pbmUgaG9ub3VyLCBidXQgSSB3YXMgYmlkIHRvIGNvbWUgZm9yIHlvdS4KKworUk9TQUxJTkQJV2hlcmUgbGVhcm5lZCB5b3UgdGhhdCBvYXRoLCBmb29sPworCitUT1VDSFNUT05FCU9mIGEgY2VydGFpbiBrbmlnaHQgdGhhdCBzd29yZSBieSBoaXMgaG9ub3VyIHRoZXkKKwl3ZXJlIGdvb2QgcGFuY2FrZXMgYW5kIHN3b3JlIGJ5IGhpcyBob25vdXIgdGhlCisJbXVzdGFyZCB3YXMgbmF1Z2h0OiBub3cgSSdsbCBzdGFuZCB0byBpdCwgdGhlCisJcGFuY2FrZXMgd2VyZSBuYXVnaHQgYW5kIHRoZSBtdXN0YXJkIHdhcyBnb29kLCBhbmQKKwl5ZXQgd2FzIG5vdCB0aGUga25pZ2h0IGZvcnN3b3JuLgorCitDRUxJQQlIb3cgcHJvdmUgeW91IHRoYXQsIGluIHRoZSBncmVhdCBoZWFwIG9mIHlvdXIKKwlrbm93bGVkZ2U/CisKK1JPU0FMSU5ECUF5LCBtYXJyeSwgbm93IHVubXV6emxlIHlvdXIgd2lzZG9tLgorCitUT1VDSFNUT05FCVN0YW5kIHlvdSBib3RoIGZvcnRoIG5vdzogc3Ryb2tlIHlvdXIgY2hpbnMsIGFuZAorCXN3ZWFyIGJ5IHlvdXIgYmVhcmRzIHRoYXQgSSBhbSBhIGtuYXZlLgorCitDRUxJQQlCeSBvdXIgYmVhcmRzLCBpZiB3ZSBoYWQgdGhlbSwgdGhvdSBhcnQuCisKK1RPVUNIU1RPTkUJQnkgbXkga25hdmVyeSwgaWYgSSBoYWQgaXQsIHRoZW4gSSB3ZXJlOyBidXQgaWYgeW91CisJc3dlYXIgYnkgdGhhdCB0aGF0IGlzIG5vdCwgeW91IGFyZSBub3QgZm9yc3dvcm46IG5vCisJbW9yZSB3YXMgdGhpcyBrbmlnaHQgc3dlYXJpbmcgYnkgaGlzIGhvbm91ciwgZm9yIGhlCisJbmV2ZXIgaGFkIGFueTsgb3IgaWYgaGUgaGFkLCBoZSBoYWQgc3dvcm4gaXQgYXdheQorCWJlZm9yZSBldmVyIGhlIHNhdyB0aG9zZSBwYW5jYWtlcyBvciB0aGF0IG11c3RhcmQuCisKK0NFTElBCVByaXRoZWUsIHdobyBpcyd0IHRoYXQgdGhvdSBtZWFuZXN0PworCitUT1VDSFNUT05FCU9uZSB0aGF0IG9sZCBGcmVkZXJpY2ssIHlvdXIgZmF0aGVyLCBsb3Zlcy4KKworQ0VMSUEJTXkgZmF0aGVyJ3MgbG92ZSBpcyBlbm91Z2ggdG8gaG9ub3VyIGhpbTogZW5vdWdoIQorCXNwZWFrIG5vIG1vcmUgb2YgaGltOyB5b3UnbGwgYmUgd2hpcHBlZCBmb3IgdGF4YXRpb24KKwlvbmUgb2YgdGhlc2UgZGF5cy4KKworVE9VQ0hTVE9ORQlUaGUgbW9yZSBwaXR5LCB0aGF0IGZvb2xzIG1heSBub3Qgc3BlYWsgd2lzZWx5IHdoYXQKKwl3aXNlIG1lbiBkbyBmb29saXNobHkuCisKK0NFTElBCUJ5IG15IHRyb3RoLCB0aG91IHNheWVzdCB0cnVlOyBmb3Igc2luY2UgdGhlIGxpdHRsZQorCXdpdCB0aGF0IGZvb2xzIGhhdmUgd2FzIHNpbGVuY2VkLCB0aGUgbGl0dGxlIGZvb2xlcnkKKwl0aGF0IHdpc2UgbWVuIGhhdmUgbWFrZXMgYSBncmVhdCBzaG93LiBIZXJlIGNvbWVzCisJTW9uc2lldXIgTGUgQmVhdS4KKworUk9TQUxJTkQJV2l0aCBoaXMgbW91dGggZnVsbCBvZiBuZXdzLgorCitDRUxJQQlXaGljaCBoZSB3aWxsIHB1dCBvbiB1cywgYXMgcGlnZW9ucyBmZWVkIHRoZWlyIHlvdW5nLgorCitST1NBTElORAlUaGVuIHNoYWxsIHdlIGJlIG5ld3MtY3JhbW1lZC4KKworQ0VMSUEJQWxsIHRoZSBiZXR0ZXI7IHdlIHNoYWxsIGJlIHRoZSBtb3JlIG1hcmtldGFibGUuCisKKwlbRW50ZXIgTEUgQkVBVV0KKworCUJvbiBqb3VyLCBNb25zaWV1ciBMZSBCZWF1OiB3aGF0J3MgdGhlIG5ld3M/CisKK0xFIEJFQVUJRmFpciBwcmluY2VzcywgeW91IGhhdmUgbG9zdCBtdWNoIGdvb2Qgc3BvcnQuCisKK0NFTElBCVNwb3J0ISBvZiB3aGF0IGNvbG91cj8KKworTEUgQkVBVQlXaGF0IGNvbG91ciwgbWFkYW0hIGhvdyBzaGFsbCBJIGFuc3dlciB5b3U/CisKK1JPU0FMSU5ECUFzIHdpdCBhbmQgZm9ydHVuZSB3aWxsLgorCitUT1VDSFNUT05FCU9yIGFzIHRoZSBEZXN0aW5pZXMgZGVjcmVlLgorCitDRUxJQQlXZWxsIHNhaWQ6IHRoYXQgd2FzIGxhaWQgb24gd2l0aCBhIHRyb3dlbC4KKworVE9VQ0hTVE9ORQlOYXksIGlmIEkga2VlcCBub3QgbXkgcmFuaywtLQorCitST1NBTElORAlUaG91IGxvc2VzdCB0aHkgb2xkIHNtZWxsLgorCitMRSBCRUFVCVlvdSBhbWF6ZSBtZSwgbGFkaWVzOiBJIHdvdWxkIGhhdmUgdG9sZCB5b3Ugb2YgZ29vZAorCXdyZXN0bGluZywgd2hpY2ggeW91IGhhdmUgbG9zdCB0aGUgc2lnaHQgb2YuCisKK1JPU0FMSU5ECVlvdSB0ZWxsIHVzIHRoZSBtYW5uZXIgb2YgdGhlIHdyZXN0bGluZy4KKworTEUgQkVBVQlJIHdpbGwgdGVsbCB5b3UgdGhlIGJlZ2lubmluZzsgYW5kLCBpZiBpdCBwbGVhc2UKKwl5b3VyIGxhZHlzaGlwcywgeW91IG1heSBzZWUgdGhlIGVuZDsgZm9yIHRoZSBiZXN0IGlzCisJeWV0IHRvIGRvOyBhbmQgaGVyZSwgd2hlcmUgeW91IGFyZSwgdGhleSBhcmUgY29taW5nCisJdG8gcGVyZm9ybSBpdC4KKworQ0VMSUEJV2VsbCwgdGhlIGJlZ2lubmluZywgdGhhdCBpcyBkZWFkIGFuZCBidXJpZWQuCisKK0xFIEJFQVUJVGhlcmUgY29tZXMgYW4gb2xkIG1hbiBhbmQgaGlzIHRocmVlIHNvbnMsLS0KKworQ0VMSUEJSSBjb3VsZCBtYXRjaCB0aGlzIGJlZ2lubmluZyB3aXRoIGFuIG9sZCB0YWxlLgorCitMRSBCRUFVCVRocmVlIHByb3BlciB5b3VuZyBtZW4sIG9mIGV4Y2VsbGVudCBncm93dGggYW5kIHByZXNlbmNlLgorCitST1NBTElORAlXaXRoIGJpbGxzIG9uIHRoZWlyIG5lY2tzLCAnQmUgaXQga25vd24gdW50byBhbGwgbWVuCisJYnkgdGhlc2UgcHJlc2VudHMuJworCitMRSBCRUFVCVRoZSBlbGRlc3Qgb2YgdGhlIHRocmVlIHdyZXN0bGVkIHdpdGggQ2hhcmxlcywgdGhlCisJZHVrZSdzIHdyZXN0bGVyOyB3aGljaCBDaGFybGVzIGluIGEgbW9tZW50IHRocmV3IGhpbQorCWFuZCBicm9rZSB0aHJlZSBvZiBoaXMgcmlicywgdGhhdCB0aGVyZSBpcyBsaXR0bGUKKwlob3BlIG9mIGxpZmUgaW4gaGltOiBzbyBoZSBzZXJ2ZWQgdGhlIHNlY29uZCwgYW5kCisJc28gdGhlIHRoaXJkLiBZb25kZXIgdGhleSBsaWU7IHRoZSBwb29yIG9sZCBtYW4sCisJdGhlaXIgZmF0aGVyLCBtYWtpbmcgc3VjaCBwaXRpZnVsIGRvbGUgb3ZlciB0aGVtCisJdGhhdCBhbGwgdGhlIGJlaG9sZGVycyB0YWtlIGhpcyBwYXJ0IHdpdGggd2VlcGluZy4KKworUk9TQUxJTkQJQWxhcyEKKworVE9VQ0hTVE9ORQlCdXQgd2hhdCBpcyB0aGUgc3BvcnQsIG1vbnNpZXVyLCB0aGF0IHRoZSBsYWRpZXMKKwloYXZlIGxvc3Q/CisKK0xFIEJFQVUJV2h5LCB0aGlzIHRoYXQgSSBzcGVhayBvZi4KKworVE9VQ0hTVE9ORQlUaHVzIG1lbiBtYXkgZ3JvdyB3aXNlciBldmVyeSBkYXk6IGl0IGlzIHRoZSBmaXJzdAorCXRpbWUgdGhhdCBldmVyIEkgaGVhcmQgYnJlYWtpbmcgb2YgcmlicyB3YXMgc3BvcnQKKwlmb3IgbGFkaWVzLgorCitDRUxJQQlPciBJLCBJIHByb21pc2UgdGhlZS4KKworUk9TQUxJTkQJQnV0IGlzIHRoZXJlIGFueSBlbHNlIGxvbmdzIHRvIHNlZSB0aGlzIGJyb2tlbiBtdXNpYworCWluIGhpcyBzaWRlcz8gaXMgdGhlcmUgeWV0IGFub3RoZXIgZG90ZXMgdXBvbgorCXJpYi1icmVha2luZz8gU2hhbGwgd2Ugc2VlIHRoaXMgd3Jlc3RsaW5nLCBjb3VzaW4/CisKK0xFIEJFQVUJWW91IG11c3QsIGlmIHlvdSBzdGF5IGhlcmU7IGZvciBoZXJlIGlzIHRoZSBwbGFjZQorCWFwcG9pbnRlZCBmb3IgdGhlIHdyZXN0bGluZywgYW5kIHRoZXkgYXJlIHJlYWR5IHRvCisJcGVyZm9ybSBpdC4KKworQ0VMSUEJWW9uZGVyLCBzdXJlLCB0aGV5IGFyZSBjb21pbmc6IGxldCB1cyBub3cgc3RheSBhbmQgc2VlIGl0LgorCisJW0Zsb3VyaXNoLiBFbnRlciBEVUtFIEZSRURFUklDSywgTG9yZHMsIE9STEFORE8sCisJQ0hBUkxFUywgYW5kIEF0dGVuZGFudHNdCisKK0RVS0UgRlJFREVSSUNLCUNvbWUgb246IHNpbmNlIHRoZSB5b3V0aCB3aWxsIG5vdCBiZSBlbnRyZWF0ZWQsIGhpcworCW93biBwZXJpbCBvbiBoaXMgZm9yd2FyZG5lc3MuCisKK1JPU0FMSU5ECUlzIHlvbmRlciB0aGUgbWFuPworCitMRSBCRUFVCUV2ZW4gaGUsIG1hZGFtLgorCitDRUxJQQlBbGFzLCBoZSBpcyB0b28geW91bmchIHlldCBoZSBsb29rcyBzdWNjZXNzZnVsbHkuCisKK0RVS0UgRlJFREVSSUNLCUhvdyBub3csIGRhdWdodGVyIGFuZCBjb3VzaW4hIGFyZSB5b3UgY3JlcHQgaGl0aGVyCisJdG8gc2VlIHRoZSB3cmVzdGxpbmc/CisKK1JPU0FMSU5ECUF5LCBteSBsaWVnZSwgc28gcGxlYXNlIHlvdSBnaXZlIHVzIGxlYXZlLgorCitEVUtFIEZSRURFUklDSwlZb3Ugd2lsbCB0YWtlIGxpdHRsZSBkZWxpZ2h0IGluIGl0LCBJIGNhbiB0ZWxsIHlvdTsKKwl0aGVyZSBpcyBzdWNoIG9kZHMgaW4gdGhlIG1hbi4gSW4gcGl0eSBvZiB0aGUKKwljaGFsbGVuZ2VyJ3MgeW91dGggSSB3b3VsZCBmYWluIGRpc3N1YWRlIGhpbSwgYnV0IGhlCisJd2lsbCBub3QgYmUgZW50cmVhdGVkLiBTcGVhayB0byBoaW0sIGxhZGllczsgc2VlIGlmCisJeW91IGNhbiBtb3ZlIGhpbS4KKworQ0VMSUEJQ2FsbCBoaW0gaGl0aGVyLCBnb29kIE1vbnNpZXVyIExlIEJlYXUuCisKK0RVS0UgRlJFREVSSUNLCURvIHNvOiBJJ2xsIG5vdCBiZSBieS4KKworTEUgQkVBVQlNb25zaWV1ciB0aGUgY2hhbGxlbmdlciwgdGhlIHByaW5jZXNzZXMgY2FsbCBmb3IgeW91LgorCitPUkxBTkRPCUkgYXR0ZW5kIHRoZW0gd2l0aCBhbGwgcmVzcGVjdCBhbmQgZHV0eS4KKworUk9TQUxJTkQJWW91bmcgbWFuLCBoYXZlIHlvdSBjaGFsbGVuZ2VkIENoYXJsZXMgdGhlIHdyZXN0bGVyPworCitPUkxBTkRPCU5vLCBmYWlyIHByaW5jZXNzOyBoZSBpcyB0aGUgZ2VuZXJhbCBjaGFsbGVuZ2VyOiBJCisJY29tZSBidXQgaW4sIGFzIG90aGVycyBkbywgdG8gdHJ5IHdpdGggaGltIHRoZQorCXN0cmVuZ3RoIG9mIG15IHlvdXRoLgorCitDRUxJQQlZb3VuZyBnZW50bGVtYW4sIHlvdXIgc3Bpcml0cyBhcmUgdG9vIGJvbGQgZm9yIHlvdXIKKwl5ZWFycy4gWW91IGhhdmUgc2VlbiBjcnVlbCBwcm9vZiBvZiB0aGlzIG1hbidzCisJc3RyZW5ndGg6IGlmIHlvdSBzYXcgeW91cnNlbGYgd2l0aCB5b3VyIGV5ZXMgb3IKKwlrbmV3IHlvdXJzZWxmIHdpdGggeW91ciBqdWRnbWVudCwgdGhlIGZlYXIgb2YgeW91cgorCWFkdmVudHVyZSB3b3VsZCBjb3Vuc2VsIHlvdSB0byBhIG1vcmUgZXF1YWwKKwllbnRlcnByaXNlLiBXZSBwcmF5IHlvdSwgZm9yIHlvdXIgb3duIHNha2UsIHRvCisJZW1icmFjZSB5b3VyIG93biBzYWZldHkgYW5kIGdpdmUgb3ZlciB0aGlzIGF0dGVtcHQuCisKK1JPU0FMSU5ECURvLCB5b3VuZyBzaXI7IHlvdXIgcmVwdXRhdGlvbiBzaGFsbCBub3QgdGhlcmVmb3JlCisJYmUgbWlzcHJpc2VkOiB3ZSB3aWxsIG1ha2UgaXQgb3VyIHN1aXQgdG8gdGhlIGR1a2UKKwl0aGF0IHRoZSB3cmVzdGxpbmcgbWlnaHQgbm90IGdvIGZvcndhcmQuCisKK09STEFORE8JSSBiZXNlZWNoIHlvdSwgcHVuaXNoIG1lIG5vdCB3aXRoIHlvdXIgaGFyZAorCXRob3VnaHRzOyB3aGVyZWluIEkgY29uZmVzcyBtZSBtdWNoIGd1aWx0eSwgdG8gZGVueQorCXNvIGZhaXIgYW5kIGV4Y2VsbGVudCBsYWRpZXMgYW55IHRoaW5nLiBCdXQgbGV0CisJeW91ciBmYWlyIGV5ZXMgYW5kIGdlbnRsZSB3aXNoZXMgZ28gd2l0aCBtZSB0byBteQorCXRyaWFsOiB3aGVyZWluIGlmIEkgYmUgZm9pbGVkLCB0aGVyZSBpcyBidXQgb25lCisJc2hhbWVkIHRoYXQgd2FzIG5ldmVyIGdyYWNpb3VzOyBpZiBraWxsZWQsIGJ1dCBvbmUKKwlkZWFkIHRoYXQgd2FzIHdpbGxpbmcgdG8gYmUgc286IEkgc2hhbGwgZG8gbXkKKwlmcmllbmRzIG5vIHdyb25nLCBmb3IgSSBoYXZlIG5vbmUgdG8gbGFtZW50IG1lLCB0aGUKKwl3b3JsZCBubyBpbmp1cnksIGZvciBpbiBpdCBJIGhhdmUgbm90aGluZzsgb25seSBpbgorCXRoZSB3b3JsZCBJIGZpbGwgdXAgYSBwbGFjZSwgd2hpY2ggbWF5IGJlIGJldHRlcgorCXN1cHBsaWVkIHdoZW4gSSBoYXZlIG1hZGUgaXQgZW1wdHkuCisKK1JPU0FMSU5ECVRoZSBsaXR0bGUgc3RyZW5ndGggdGhhdCBJIGhhdmUsIEkgd291bGQgaXQgd2VyZSB3aXRoIHlvdS4KKworQ0VMSUEJQW5kIG1pbmUsIHRvIGVrZSBvdXQgaGVycy4KKworUk9TQUxJTkQJRmFyZSB5b3Ugd2VsbDogcHJheSBoZWF2ZW4gSSBiZSBkZWNlaXZlZCBpbiB5b3UhCisKK0NFTElBCVlvdXIgaGVhcnQncyBkZXNpcmVzIGJlIHdpdGggeW91IQorCitDSEFSTEVTCUNvbWUsIHdoZXJlIGlzIHRoaXMgeW91bmcgZ2FsbGFudCB0aGF0IGlzIHNvCisJZGVzaXJvdXMgdG8gbGllIHdpdGggaGlzIG1vdGhlciBlYXJ0aD8KKworT1JMQU5ETwlSZWFkeSwgc2lyOyBidXQgaGlzIHdpbGwgaGF0aCBpbiBpdCBhIG1vcmUgbW9kZXN0IHdvcmtpbmcuCisKK0RVS0UgRlJFREVSSUNLCVlvdSBzaGFsbCB0cnkgYnV0IG9uZSBmYWxsLgorCitDSEFSTEVTCU5vLCBJIHdhcnJhbnQgeW91ciBncmFjZSwgeW91IHNoYWxsIG5vdCBlbnRyZWF0IGhpbQorCXRvIGEgc2Vjb25kLCB0aGF0IGhhdmUgc28gbWlnaHRpbHkgcGVyc3VhZGVkIGhpbQorCWZyb20gYSBmaXJzdC4KKworT1JMQU5ETwlBbiB5b3UgbWVhbiB0byBtb2NrIG1lIGFmdGVyLCB5b3Ugc2hvdWxkIG5vdCBoYXZlCisJbW9ja2VkIG1lIGJlZm9yZTogYnV0IGNvbWUgeW91ciB3YXlzLgorCitST1NBTElORAlOb3cgSGVyY3VsZXMgYmUgdGh5IHNwZWVkLCB5b3VuZyBtYW4hCisKK0NFTElBCUkgd291bGQgSSB3ZXJlIGludmlzaWJsZSwgdG8gY2F0Y2ggdGhlIHN0cm9uZworCWZlbGxvdyBieSB0aGUgbGVnLgorCisJW1RoZXkgd3Jlc3RsZV0KKworUk9TQUxJTkQJTyBleGNlbGxlbnQgeW91bmcgbWFuIQorCitDRUxJQQlJZiBJIGhhZCBhIHRodW5kZXJib2x0IGluIG1pbmUgZXllLCBJIGNhbiB0ZWxsIHdobworCXNob3VsZCBkb3duLgorCisJW1Nob3V0LiBDSEFSTEVTIGlzIHRocm93bl0KKworRFVLRSBGUkVERVJJQ0sJTm8gbW9yZSwgbm8gbW9yZS4KKworT1JMQU5ETwlZZXMsIEkgYmVzZWVjaCB5b3VyIGdyYWNlOiBJIGFtIG5vdCB5ZXQgd2VsbCBicmVhdGhlZC4KKworRFVLRSBGUkVERVJJQ0sJSG93IGRvc3QgdGhvdSwgQ2hhcmxlcz8KKworTEUgQkVBVQlIZSBjYW5ub3Qgc3BlYWssIG15IGxvcmQuCisKK0RVS0UgRlJFREVSSUNLCUJlYXIgaGltIGF3YXkuIFdoYXQgaXMgdGh5IG5hbWUsIHlvdW5nIG1hbj8KKworT1JMQU5ETwlPcmxhbmRvLCBteSBsaWVnZTsgdGhlIHlvdW5nZXN0IHNvbiBvZiBTaXIgUm93bGFuZCBkZSBCb3lzLgorCitEVUtFIEZSRURFUklDSwlJIHdvdWxkIHRob3UgaGFkc3QgYmVlbiBzb24gdG8gc29tZSBtYW4gZWxzZToKKwlUaGUgd29ybGQgZXN0ZWVtJ2QgdGh5IGZhdGhlciBob25vdXJhYmxlLAorCUJ1dCBJIGRpZCBmaW5kIGhpbSBzdGlsbCBtaW5lIGVuZW15OgorCVRob3Ugc2hvdWxkc3QgaGF2ZSBiZXR0ZXIgcGxlYXNlZCBtZSB3aXRoIHRoaXMgZGVlZCwKKwlIYWRzdCB0aG91IGRlc2NlbmRlZCBmcm9tIGFub3RoZXIgaG91c2UuCisJQnV0IGZhcmUgdGhlZSB3ZWxsOyB0aG91IGFydCBhIGdhbGxhbnQgeW91dGg6CisJSSB3b3VsZCB0aG91IGhhZHN0IHRvbGQgbWUgb2YgYW5vdGhlciBmYXRoZXIuCisKKwlbRXhldW50IERVS0UgRlJFREVSSUNLLCB0cmFpbiwgYW5kIExFIEJFQVVdCisKK0NFTElBCVdlcmUgSSBteSBmYXRoZXIsIGNveiwgd291bGQgSSBkbyB0aGlzPworCitPUkxBTkRPCUkgYW0gbW9yZSBwcm91ZCB0byBiZSBTaXIgUm93bGFuZCdzIHNvbiwKKwlIaXMgeW91bmdlc3Qgc29uOyBhbmQgd291bGQgbm90IGNoYW5nZSB0aGF0IGNhbGxpbmcsCisJVG8gYmUgYWRvcHRlZCBoZWlyIHRvIEZyZWRlcmljay4KKworUk9TQUxJTkQJTXkgZmF0aGVyIGxvdmVkIFNpciBSb3dsYW5kIGFzIGhpcyBzb3VsLAorCUFuZCBhbGwgdGhlIHdvcmxkIHdhcyBvZiBteSBmYXRoZXIncyBtaW5kOgorCUhhZCBJIGJlZm9yZSBrbm93biB0aGlzIHlvdW5nIG1hbiBoaXMgc29uLAorCUkgc2hvdWxkIGhhdmUgZ2l2ZW4gaGltIHRlYXJzIHVudG8gZW50cmVhdGllcywKKwlFcmUgaGUgc2hvdWxkIHRodXMgaGF2ZSB2ZW50dXJlZC4KKworQ0VMSUEJR2VudGxlIGNvdXNpbiwKKwlMZXQgdXMgZ28gdGhhbmsgaGltIGFuZCBlbmNvdXJhZ2UgaGltOgorCU15IGZhdGhlcidzIHJvdWdoIGFuZCBlbnZpb3VzIGRpc3Bvc2l0aW9uCisJU3RpY2tzIG1lIGF0IGhlYXJ0LiBTaXIsIHlvdSBoYXZlIHdlbGwgZGVzZXJ2ZWQ6CisJSWYgeW91IGRvIGtlZXAgeW91ciBwcm9taXNlcyBpbiBsb3ZlCisJQnV0IGp1c3RseSwgYXMgeW91IGhhdmUgZXhjZWVkZWQgYWxsIHByb21pc2UsCisJWW91ciBtaXN0cmVzcyBzaGFsbCBiZSBoYXBweS4KKworUk9TQUxJTkQJR2VudGxlbWFuLAorCisJW0dpdmluZyBoaW0gYSBjaGFpbiBmcm9tIGhlciBuZWNrXQorCisJV2VhciB0aGlzIGZvciBtZSwgb25lIG91dCBvZiBzdWl0cyB3aXRoIGZvcnR1bmUsCisJVGhhdCBjb3VsZCBnaXZlIG1vcmUsIGJ1dCB0aGF0IGhlciBoYW5kIGxhY2tzIG1lYW5zLgorCVNoYWxsIHdlIGdvLCBjb3o/CisKK0NFTElBCSAgICAgICAgICAgICAgICAgIEF5LiBGYXJlIHlvdSB3ZWxsLCBmYWlyIGdlbnRsZW1hbi4KKworT1JMQU5ETwlDYW4gSSBub3Qgc2F5LCBJIHRoYW5rIHlvdT8gTXkgYmV0dGVyIHBhcnRzCisJQXJlIGFsbCB0aHJvd24gZG93biwgYW5kIHRoYXQgd2hpY2ggaGVyZSBzdGFuZHMgdXAKKwlJcyBidXQgYSBxdWludGFpbiwgYSBtZXJlIGxpZmVsZXNzIGJsb2NrLgorCitST1NBTElORAlIZSBjYWxscyB1cyBiYWNrOiBteSBwcmlkZSBmZWxsIHdpdGggbXkgZm9ydHVuZXM7CisJSSdsbCBhc2sgaGltIHdoYXQgaGUgd291bGQuIERpZCB5b3UgY2FsbCwgc2lyPworCVNpciwgeW91IGhhdmUgd3Jlc3RsZWQgd2VsbCBhbmQgb3ZlcnRocm93bgorCU1vcmUgdGhhbiB5b3VyIGVuZW1pZXMuCisKK0NFTElBCVdpbGwgeW91IGdvLCBjb3o/CisKK1JPU0FMSU5ECUhhdmUgd2l0aCB5b3UuIEZhcmUgeW91IHdlbGwuCisKKwlbRXhldW50IFJPU0FMSU5EIGFuZCBDRUxJQV0KKworT1JMQU5ETwlXaGF0IHBhc3Npb24gaGFuZ3MgdGhlc2Ugd2VpZ2h0cyB1cG9uIG15IHRvbmd1ZT8KKwlJIGNhbm5vdCBzcGVhayB0byBoZXIsIHlldCBzaGUgdXJnZWQgY29uZmVyZW5jZS4KKwlPIHBvb3IgT3JsYW5kbywgdGhvdSBhcnQgb3ZlcnRocm93biEKKwlPciBDaGFybGVzIG9yIHNvbWV0aGluZyB3ZWFrZXIgbWFzdGVycyB0aGVlLgorCisJW1JlLWVudGVyIExFIEJFQVVdCisKK0xFIEJFQVUJR29vZCBzaXIsIEkgZG8gaW4gZnJpZW5kc2hpcCBjb3Vuc2VsIHlvdQorCVRvIGxlYXZlIHRoaXMgcGxhY2UuIEFsYmVpdCB5b3UgaGF2ZSBkZXNlcnZlZAorCUhpZ2ggY29tbWVuZGF0aW9uLCB0cnVlIGFwcGxhdXNlIGFuZCBsb3ZlLAorCVlldCBzdWNoIGlzIG5vdyB0aGUgZHVrZSdzIGNvbmRpdGlvbgorCVRoYXQgaGUgbWlzY29uc3RydWVzIGFsbCB0aGF0IHlvdSBoYXZlIGRvbmUuCisJVGhlIGR1a2UgaXMgaHVtb3JvdXM7IHdoYXQgaGUgaXMgaW5kZWVkLAorCU1vcmUgc3VpdHMgeW91IHRvIGNvbmNlaXZlIHRoYW4gSSB0byBzcGVhayBvZi4KKworT1JMQU5ETwlJIHRoYW5rIHlvdSwgc2lyOiBhbmQsIHByYXkgeW91LCB0ZWxsIG1lIHRoaXM6CisJV2hpY2ggb2YgdGhlIHR3byB3YXMgZGF1Z2h0ZXIgb2YgdGhlIGR1a2UKKwlUaGF0IGhlcmUgd2FzIGF0IHRoZSB3cmVzdGxpbmc/CisKK0xFIEJFQVUJTmVpdGhlciBoaXMgZGF1Z2h0ZXIsIGlmIHdlIGp1ZGdlIGJ5IG1hbm5lcnM7CisJQnV0IHlldCBpbmRlZWQgdGhlIGxlc3NlciBpcyBoaXMgZGF1Z2h0ZXIKKwlUaGUgb3RoZXIgaXMgZGF1Z2h0ZXIgdG8gdGhlIGJhbmlzaCdkIGR1a2UsCisJQW5kIGhlcmUgZGV0YWluJ2QgYnkgaGVyIHVzdXJwaW5nIHVuY2xlLAorCVRvIGtlZXAgaGlzIGRhdWdodGVyIGNvbXBhbnk7IHdob3NlIGxvdmVzCisJQXJlIGRlYXJlciB0aGFuIHRoZSBuYXR1cmFsIGJvbmQgb2Ygc2lzdGVycy4KKwlCdXQgSSBjYW4gdGVsbCB5b3UgdGhhdCBvZiBsYXRlIHRoaXMgZHVrZQorCUhhdGggdGEnZW4gZGlzcGxlYXN1cmUgJ2dhaW5zdCBoaXMgZ2VudGxlIG5pZWNlLAorCUdyb3VuZGVkIHVwb24gbm8gb3RoZXIgYXJndW1lbnQKKwlCdXQgdGhhdCB0aGUgcGVvcGxlIHByYWlzZSBoZXIgZm9yIGhlciB2aXJ0dWVzCisJQW5kIHBpdHkgaGVyIGZvciBoZXIgZ29vZCBmYXRoZXIncyBzYWtlOworCUFuZCwgb24gbXkgbGlmZSwgaGlzIG1hbGljZSAnZ2FpbnN0IHRoZSBsYWR5CisJV2lsbCBzdWRkZW5seSBicmVhayBmb3J0aC4gU2lyLCBmYXJlIHlvdSB3ZWxsOgorCUhlcmVhZnRlciwgaW4gYSBiZXR0ZXIgd29ybGQgdGhhbiB0aGlzLAorCUkgc2hhbGwgZGVzaXJlIG1vcmUgbG92ZSBhbmQga25vd2xlZGdlIG9mIHlvdS4KKworT1JMQU5ETwlJIHJlc3QgbXVjaCBib3VuZGVuIHRvIHlvdTogZmFyZSB5b3Ugd2VsbC4KKworCVtFeGl0IExFIEJFQVVdCisKKwlUaHVzIG11c3QgSSBmcm9tIHRoZSBzbW9rZSBpbnRvIHRoZSBzbW90aGVyOworCUZyb20gdHlyYW50IGR1a2UgdW50byBhIHR5cmFudCBicm90aGVyOgorCUJ1dCBoZWF2ZW5seSBSb3NhbGluZCEKKworCVtFeGl0XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSQorCisKKworU0NFTkUgSUlJCUEgcm9vbSBpbiB0aGUgcGFsYWNlLgorCisKKwlbRW50ZXIgQ0VMSUEgYW5kIFJPU0FMSU5EXQorCitDRUxJQQlXaHksIGNvdXNpbiEgd2h5LCBSb3NhbGluZCEgQ3VwaWQgaGF2ZSBtZXJjeSEgbm90IGEgd29yZD8KKworUk9TQUxJTkQJTm90IG9uZSB0byB0aHJvdyBhdCBhIGRvZy4KKworQ0VMSUEJTm8sIHRoeSB3b3JkcyBhcmUgdG9vIHByZWNpb3VzIHRvIGJlIGNhc3QgYXdheSB1cG9uCisJY3VyczsgdGhyb3cgc29tZSBvZiB0aGVtIGF0IG1lOyBjb21lLCBsYW1lIG1lIHdpdGggcmVhc29ucy4KKworUk9TQUxJTkQJVGhlbiB0aGVyZSB3ZXJlIHR3byBjb3VzaW5zIGxhaWQgdXA7IHdoZW4gdGhlIG9uZQorCXNob3VsZCBiZSBsYW1lZCB3aXRoIHJlYXNvbnMgYW5kIHRoZSBvdGhlciBtYWQKKwl3aXRob3V0IGFueS4KKworQ0VMSUEJQnV0IGlzIGFsbCB0aGlzIGZvciB5b3VyIGZhdGhlcj8KKworUk9TQUxJTkQJTm8sIHNvbWUgb2YgaXQgaXMgZm9yIG15IGNoaWxkJ3MgZmF0aGVyLiBPLCBob3cKKwlmdWxsIG9mIGJyaWVycyBpcyB0aGlzIHdvcmtpbmctZGF5IHdvcmxkIQorCitDRUxJQQlUaGV5IGFyZSBidXQgYnVycywgY291c2luLCB0aHJvd24gdXBvbiB0aGVlIGluCisJaG9saWRheSBmb29sZXJ5OiBpZiB3ZSB3YWxrIG5vdCBpbiB0aGUgdHJvZGRlbgorCXBhdGhzIG91ciB2ZXJ5IHBldHRpY29hdHMgd2lsbCBjYXRjaCB0aGVtLgorCitST1NBTElORAlJIGNvdWxkIHNoYWtlIHRoZW0gb2ZmIG15IGNvYXQ6IHRoZXNlIGJ1cnMgYXJlIGluIG15IGhlYXJ0LgorCitDRUxJQQlIZW0gdGhlbSBhd2F5LgorCitST1NBTElORAlJIHdvdWxkIHRyeSwgaWYgSSBjb3VsZCBjcnkgJ2hlbScgYW5kIGhhdmUgaGltLgorCitDRUxJQQlDb21lLCBjb21lLCB3cmVzdGxlIHdpdGggdGh5IGFmZmVjdGlvbnMuCisKK1JPU0FMSU5ECU8sIHRoZXkgdGFrZSB0aGUgcGFydCBvZiBhIGJldHRlciB3cmVzdGxlciB0aGFuIG15c2VsZiEKKworQ0VMSUEJTywgYSBnb29kIHdpc2ggdXBvbiB5b3UhIHlvdSB3aWxsIHRyeSBpbiB0aW1lLCBpbgorCWRlc3BpdGUgb2YgYSBmYWxsLiBCdXQsIHR1cm5pbmcgdGhlc2UgamVzdHMgb3V0IG9mCisJc2VydmljZSwgbGV0IHVzIHRhbGsgaW4gZ29vZCBlYXJuZXN0OiBpcyBpdAorCXBvc3NpYmxlLCBvbiBzdWNoIGEgc3VkZGVuLCB5b3Ugc2hvdWxkIGZhbGwgaW50byBzbworCXN0cm9uZyBhIGxpa2luZyB3aXRoIG9sZCBTaXIgUm93bGFuZCdzIHlvdW5nZXN0IHNvbj8KKworUk9TQUxJTkQJVGhlIGR1a2UgbXkgZmF0aGVyIGxvdmVkIGhpcyBmYXRoZXIgZGVhcmx5LgorCitDRUxJQQlEb3RoIGl0IHRoZXJlZm9yZSBlbnN1ZSB0aGF0IHlvdSBzaG91bGQgbG92ZSBoaXMgc29uCisJZGVhcmx5PyBCeSB0aGlzIGtpbmQgb2YgY2hhc2UsIEkgc2hvdWxkIGhhdGUgaGltLAorCWZvciBteSBmYXRoZXIgaGF0ZWQgaGlzIGZhdGhlciBkZWFybHk7IHlldCBJIGhhdGUKKwlub3QgT3JsYW5kby4KKworUk9TQUxJTkQJTm8sIGZhaXRoLCBoYXRlIGhpbSBub3QsIGZvciBteSBzYWtlLgorCitDRUxJQQlXaHkgc2hvdWxkIEkgbm90PyBkb3RoIGhlIG5vdCBkZXNlcnZlIHdlbGw/CisKK1JPU0FMSU5ECUxldCBtZSBsb3ZlIGhpbSBmb3IgdGhhdCwgYW5kIGRvIHlvdSBsb3ZlIGhpbQorCWJlY2F1c2UgSSBkby4gTG9vaywgaGVyZSBjb21lcyB0aGUgZHVrZS4KKworQ0VMSUEJV2l0aCBoaXMgZXllcyBmdWxsIG9mIGFuZ2VyLgorCisJW0VudGVyIERVS0UgRlJFREVSSUNLLCB3aXRoIExvcmRzXQorCitEVUtFIEZSRURFUklDSwlNaXN0cmVzcywgZGlzcGF0Y2ggeW91IHdpdGggeW91ciBzYWZlc3QgaGFzdGUKKwlBbmQgZ2V0IHlvdSBmcm9tIG91ciBjb3VydC4KKworUk9TQUxJTkQJTWUsIHVuY2xlPworCitEVUtFIEZSRURFUklDSwlZb3UsIGNvdXNpbgorCVdpdGhpbiB0aGVzZSB0ZW4gZGF5cyBpZiB0aGF0IHRob3UgYmUnc3QgZm91bmQKKwlTbyBuZWFyIG91ciBwdWJsaWMgY291cnQgYXMgdHdlbnR5IG1pbGVzLAorCVRob3UgZGllc3QgZm9yIGl0LgorCitST1NBTElORAkgICAgICAgICAgICAgICAgICBJIGRvIGJlc2VlY2ggeW91ciBncmFjZSwKKwlMZXQgbWUgdGhlIGtub3dsZWRnZSBvZiBteSBmYXVsdCBiZWFyIHdpdGggbWU6CisJSWYgd2l0aCBteXNlbGYgSSBob2xkIGludGVsbGlnZW5jZQorCU9yIGhhdmUgYWNxdWFpbnRhbmNlIHdpdGggbWluZSBvd24gZGVzaXJlcywKKwlJZiB0aGF0IEkgZG8gbm90IGRyZWFtIG9yIGJlIG5vdCBmcmFudGljLC0tCisJQXMgSSBkbyB0cnVzdCBJIGFtIG5vdC0tdGhlbiwgZGVhciB1bmNsZSwKKwlOZXZlciBzbyBtdWNoIGFzIGluIGEgdGhvdWdodCB1bmJvcm4KKwlEaWQgSSBvZmZlbmQgeW91ciBoaWdobmVzcy4KKworRFVLRSBGUkVERVJJQ0sJVGh1cyBkbyBhbGwgdHJhaXRvcnM6CisJSWYgdGhlaXIgcHVyZ2F0aW9uIGRpZCBjb25zaXN0IGluIHdvcmRzLAorCVRoZXkgYXJlIGFzIGlubm9jZW50IGFzIGdyYWNlIGl0c2VsZjoKKwlMZXQgaXQgc3VmZmljZSB0aGVlIHRoYXQgSSB0cnVzdCB0aGVlIG5vdC4KKworUk9TQUxJTkQJWWV0IHlvdXIgbWlzdHJ1c3QgY2Fubm90IG1ha2UgbWUgYSB0cmFpdG9yOgorCVRlbGwgbWUgd2hlcmVvbiB0aGUgbGlrZWxpaG9vZCBkZXBlbmRzLgorCitEVUtFIEZSRURFUklDSwlUaG91IGFydCB0aHkgZmF0aGVyJ3MgZGF1Z2h0ZXI7IHRoZXJlJ3MgZW5vdWdoLgorCitST1NBTElORAlTbyB3YXMgSSB3aGVuIHlvdXIgaGlnaG5lc3MgdG9vayBoaXMgZHVrZWRvbTsKKwlTbyB3YXMgSSB3aGVuIHlvdXIgaGlnaG5lc3MgYmFuaXNoJ2QgaGltOgorCVRyZWFzb24gaXMgbm90IGluaGVyaXRlZCwgbXkgbG9yZDsKKwlPciwgaWYgd2UgZGlkIGRlcml2ZSBpdCBmcm9tIG91ciBmcmllbmRzLAorCVdoYXQncyB0aGF0IHRvIG1lPyBteSBmYXRoZXIgd2FzIG5vIHRyYWl0b3I6CisJVGhlbiwgZ29vZCBteSBsaWVnZSwgbWlzdGFrZSBtZSBub3Qgc28gbXVjaAorCVRvIHRoaW5rIG15IHBvdmVydHkgaXMgdHJlYWNoZXJvdXMuCisKK0NFTElBCURlYXIgc292ZXJlaWduLCBoZWFyIG1lIHNwZWFrLgorCitEVUtFIEZSRURFUklDSwlBeSwgQ2VsaWE7IHdlIHN0YXknZCBoZXIgZm9yIHlvdXIgc2FrZSwKKwlFbHNlIGhhZCBzaGUgd2l0aCBoZXIgZmF0aGVyIHJhbmdlZCBhbG9uZy4KKworQ0VMSUEJSSBkaWQgbm90IHRoZW4gZW50cmVhdCB0byBoYXZlIGhlciBzdGF5OworCUl0IHdhcyB5b3VyIHBsZWFzdXJlIGFuZCB5b3VyIG93biByZW1vcnNlOgorCUkgd2FzIHRvbyB5b3VuZyB0aGF0IHRpbWUgdG8gdmFsdWUgaGVyOworCUJ1dCBub3cgSSBrbm93IGhlcjogaWYgc2hlIGJlIGEgdHJhaXRvciwKKwlXaHkgc28gYW0gSTsgd2Ugc3RpbGwgaGF2ZSBzbGVwdCB0b2dldGhlciwKKwlSb3NlIGF0IGFuIGluc3RhbnQsIGxlYXJuJ2QsIHBsYXknZCwgZWF0IHRvZ2V0aGVyLAorCUFuZCB3aGVyZXNvZXZlciB3ZSB3ZW50LCBsaWtlIEp1bm8ncyBzd2FucywKKwlTdGlsbCB3ZSB3ZW50IGNvdXBsZWQgYW5kIGluc2VwYXJhYmxlLgorCitEVUtFIEZSRURFUklDSwlTaGUgaXMgdG9vIHN1YnRsZSBmb3IgdGhlZTsgYW5kIGhlciBzbW9vdGhuZXNzLAorCUhlciB2ZXJ5IHNpbGVuY2UgYW5kIGhlciBwYXRpZW5jZQorCVNwZWFrIHRvIHRoZSBwZW9wbGUsIGFuZCB0aGV5IHBpdHkgaGVyLgorCVRob3UgYXJ0IGEgZm9vbDogc2hlIHJvYnMgdGhlZSBvZiB0aHkgbmFtZTsKKwlBbmQgdGhvdSB3aWx0IHNob3cgbW9yZSBicmlnaHQgYW5kIHNlZW0gbW9yZSB2aXJ0dW91cworCVdoZW4gc2hlIGlzIGdvbmUuIFRoZW4gb3BlbiBub3QgdGh5IGxpcHM6CisJRmlybSBhbmQgaXJyZXZvY2FibGUgaXMgbXkgZG9vbQorCVdoaWNoIEkgaGF2ZSBwYXNzJ2QgdXBvbiBoZXI7IHNoZSBpcyBiYW5pc2gnZC4KKworQ0VMSUEJUHJvbm91bmNlIHRoYXQgc2VudGVuY2UgdGhlbiBvbiBtZSwgbXkgbGllZ2U6CisJSSBjYW5ub3QgbGl2ZSBvdXQgb2YgaGVyIGNvbXBhbnkuCisKK0RVS0UgRlJFREVSSUNLCVlvdSBhcmUgYSBmb29sLiBZb3UsIG5pZWNlLCBwcm92aWRlIHlvdXJzZWxmOgorCUlmIHlvdSBvdXRzdGF5IHRoZSB0aW1lLCB1cG9uIG1pbmUgaG9ub3VyLAorCUFuZCBpbiB0aGUgZ3JlYXRuZXNzIG9mIG15IHdvcmQsIHlvdSBkaWUuCisKKwlbRXhldW50IERVS0UgRlJFREVSSUNLIGFuZCBMb3Jkc10KKworQ0VMSUEJTyBteSBwb29yIFJvc2FsaW5kLCB3aGl0aGVyIHdpbHQgdGhvdSBnbz8KKwlXaWx0IHRob3UgY2hhbmdlIGZhdGhlcnM/IEkgd2lsbCBnaXZlIHRoZWUgbWluZS4KKwlJIGNoYXJnZSB0aGVlLCBiZSBub3QgdGhvdSBtb3JlIGdyaWV2ZWQgdGhhbiBJIGFtLgorCitST1NBTElORAlJIGhhdmUgbW9yZSBjYXVzZS4KKworQ0VMSUEJICAgICAgICAgICAgICAgICAgVGhvdSBoYXN0IG5vdCwgY291c2luOworCVByaXRoZWUgYmUgY2hlZXJmdWw6IGtub3cnc3QgdGhvdSBub3QsIHRoZSBkdWtlCisJSGF0aCBiYW5pc2gnZCBtZSwgaGlzIGRhdWdodGVyPworCitST1NBTElORAlUaGF0IGhlIGhhdGggbm90LgorCitDRUxJQQlObywgaGF0aCBub3Q/IFJvc2FsaW5kIGxhY2tzIHRoZW4gdGhlIGxvdmUKKwlXaGljaCB0ZWFjaGV0aCB0aGVlIHRoYXQgdGhvdSBhbmQgSSBhbSBvbmU6CisJU2hhbGwgd2UgYmUgc3VuZGVyJ2Q/IHNoYWxsIHdlIHBhcnQsIHN3ZWV0IGdpcmw/CisJTm86IGxldCBteSBmYXRoZXIgc2VlayBhbm90aGVyIGhlaXIuCisJVGhlcmVmb3JlIGRldmlzZSB3aXRoIG1lIGhvdyB3ZSBtYXkgZmx5LAorCVdoaXRoZXIgdG8gZ28gYW5kIHdoYXQgdG8gYmVhciB3aXRoIHVzOworCUFuZCBkbyBub3Qgc2VlayB0byB0YWtlIHlvdXIgY2hhbmdlIHVwb24geW91LAorCVRvIGJlYXIgeW91ciBncmllZnMgeW91cnNlbGYgYW5kIGxlYXZlIG1lIG91dDsKKwlGb3IsIGJ5IHRoaXMgaGVhdmVuLCBub3cgYXQgb3VyIHNvcnJvd3MgcGFsZSwKKwlTYXkgd2hhdCB0aG91IGNhbnN0LCBJJ2xsIGdvIGFsb25nIHdpdGggdGhlZS4KKworUk9TQUxJTkQJV2h5LCB3aGl0aGVyIHNoYWxsIHdlIGdvPworCitDRUxJQQlUbyBzZWVrIG15IHVuY2xlIGluIHRoZSBmb3Jlc3Qgb2YgQXJkZW4uCisKK1JPU0FMSU5ECUFsYXMsIHdoYXQgZGFuZ2VyIHdpbGwgaXQgYmUgdG8gdXMsCisJTWFpZHMgYXMgd2UgYXJlLCB0byB0cmF2ZWwgZm9ydGggc28gZmFyIQorCUJlYXV0eSBwcm92b2tldGggdGhpZXZlcyBzb29uZXIgdGhhbiBnb2xkLgorCitDRUxJQQlJJ2xsIHB1dCBteXNlbGYgaW4gcG9vciBhbmQgbWVhbiBhdHRpcmUKKwlBbmQgd2l0aCBhIGtpbmQgb2YgdW1iZXIgc21pcmNoIG15IGZhY2U7CisJVGhlIGxpa2UgZG8geW91OiBzbyBzaGFsbCB3ZSBwYXNzIGFsb25nCisJQW5kIG5ldmVyIHN0aXIgYXNzYWlsYW50cy4KKworUk9TQUxJTkQJV2VyZSBpdCBub3QgYmV0dGVyLAorCUJlY2F1c2UgdGhhdCBJIGFtIG1vcmUgdGhhbiBjb21tb24gdGFsbCwKKwlUaGF0IEkgZGlkIHN1aXQgbWUgYWxsIHBvaW50cyBsaWtlIGEgbWFuPworCUEgZ2FsbGFudCBjdXJ0bGUtYXhlIHVwb24gbXkgdGhpZ2gsCisJQSBib2FyLXNwZWFyIGluIG15IGhhbmQ7IGFuZC0taW4gbXkgaGVhcnQKKwlMaWUgdGhlcmUgd2hhdCBoaWRkZW4gd29tYW4ncyBmZWFyIHRoZXJlIHdpbGwtLQorCVdlJ2xsIGhhdmUgYSBzd2FzaGluZyBhbmQgYSBtYXJ0aWFsIG91dHNpZGUsCisJQXMgbWFueSBvdGhlciBtYW5uaXNoIGNvd2FyZHMgaGF2ZQorCVRoYXQgZG8gb3V0ZmFjZSBpdCB3aXRoIHRoZWlyIHNlbWJsYW5jZXMuCisKK0NFTElBCVdoYXQgc2hhbGwgSSBjYWxsIHRoZWUgd2hlbiB0aG91IGFydCBhIG1hbj8KKworUk9TQUxJTkQJSSdsbCBoYXZlIG5vIHdvcnNlIGEgbmFtZSB0aGFuIEpvdmUncyBvd24gcGFnZTsKKwlBbmQgdGhlcmVmb3JlIGxvb2sgeW91IGNhbGwgbWUgR2FueW1lZGUuCisJQnV0IHdoYXQgd2lsbCB5b3UgYmUgY2FsbCdkPworCitDRUxJQQlTb21ldGhpbmcgdGhhdCBoYXRoIGEgcmVmZXJlbmNlIHRvIG15IHN0YXRlCisJTm8gbG9uZ2VyIENlbGlhLCBidXQgQWxpZW5hLgorCitST1NBTElORAlCdXQsIGNvdXNpbiwgd2hhdCBpZiB3ZSBhc3NheSdkIHRvIHN0ZWFsCisJVGhlIGNsb3duaXNoIGZvb2wgb3V0IG9mIHlvdXIgZmF0aGVyJ3MgY291cnQ/CisJV291bGQgaGUgbm90IGJlIGEgY29tZm9ydCB0byBvdXIgdHJhdmVsPworCitDRUxJQQlIZSdsbCBnbyBhbG9uZyBvJ2VyIHRoZSB3aWRlIHdvcmxkIHdpdGggbWU7CisJTGVhdmUgbWUgYWxvbmUgdG8gd29vIGhpbS4gTGV0J3MgYXdheSwKKwlBbmQgZ2V0IG91ciBqZXdlbHMgYW5kIG91ciB3ZWFsdGggdG9nZXRoZXIsCisJRGV2aXNlIHRoZSBmaXR0ZXN0IHRpbWUgYW5kIHNhZmVzdCB3YXkKKwlUbyBoaWRlIHVzIGZyb20gcHVyc3VpdCB0aGF0IHdpbGwgYmUgbWFkZQorCUFmdGVyIG15IGZsaWdodC4gTm93IGdvIHdlIGluIGNvbnRlbnQKKwlUbyBsaWJlcnR5IGFuZCBub3QgdG8gYmFuaXNobWVudC4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBJSQorCisKKworU0NFTkUgSQlUaGUgRm9yZXN0IG9mIEFyZGVuLgorCisKKwlbRW50ZXIgRFVLRSBTRU5JT1IsIEFNSUVOUywgYW5kIHR3byBvciB0aHJlZSBMb3JkcywKKwlsaWtlIGZvcmVzdGVyc10KKworRFVLRSBTRU5JT1IJTm93LCBteSBjby1tYXRlcyBhbmQgYnJvdGhlcnMgaW4gZXhpbGUsCisJSGF0aCBub3Qgb2xkIGN1c3RvbSBtYWRlIHRoaXMgbGlmZSBtb3JlIHN3ZWV0CisJVGhhbiB0aGF0IG9mIHBhaW50ZWQgcG9tcD8gQXJlIG5vdCB0aGVzZSB3b29kcworCU1vcmUgZnJlZSBmcm9tIHBlcmlsIHRoYW4gdGhlIGVudmlvdXMgY291cnQ/CisJSGVyZSBmZWVsIHdlIGJ1dCB0aGUgcGVuYWx0eSBvZiBBZGFtLAorCVRoZSBzZWFzb25zJyBkaWZmZXJlbmNlLCBhcyB0aGUgaWN5IGZhbmcKKwlBbmQgY2h1cmxpc2ggY2hpZGluZyBvZiB0aGUgd2ludGVyJ3Mgd2luZCwKKwlXaGljaCwgd2hlbiBpdCBiaXRlcyBhbmQgYmxvd3MgdXBvbiBteSBib2R5LAorCUV2ZW4gdGlsbCBJIHNocmluayB3aXRoIGNvbGQsIEkgc21pbGUgYW5kIHNheQorCSdUaGlzIGlzIG5vIGZsYXR0ZXJ5OiB0aGVzZSBhcmUgY291bnNlbGxvcnMKKwlUaGF0IGZlZWxpbmdseSBwZXJzdWFkZSBtZSB3aGF0IEkgYW0uJworCVN3ZWV0IGFyZSB0aGUgdXNlcyBvZiBhZHZlcnNpdHksCisJV2hpY2gsIGxpa2UgdGhlIHRvYWQsIHVnbHkgYW5kIHZlbm9tb3VzLAorCVdlYXJzIHlldCBhIHByZWNpb3VzIGpld2VsIGluIGhpcyBoZWFkOworCUFuZCB0aGlzIG91ciBsaWZlIGV4ZW1wdCBmcm9tIHB1YmxpYyBoYXVudAorCUZpbmRzIHRvbmd1ZXMgaW4gdHJlZXMsIGJvb2tzIGluIHRoZSBydW5uaW5nIGJyb29rcywKKwlTZXJtb25zIGluIHN0b25lcyBhbmQgZ29vZCBpbiBldmVyeSB0aGluZy4KKwlJIHdvdWxkIG5vdCBjaGFuZ2UgaXQuCisKK0FNSUVOUwlIYXBweSBpcyB5b3VyIGdyYWNlLAorCVRoYXQgY2FuIHRyYW5zbGF0ZSB0aGUgc3R1YmJvcm5uZXNzIG9mIGZvcnR1bmUKKwlJbnRvIHNvIHF1aWV0IGFuZCBzbyBzd2VldCBhIHN0eWxlLgorCitEVUtFIFNFTklPUglDb21lLCBzaGFsbCB3ZSBnbyBhbmQga2lsbCB1cyB2ZW5pc29uPworCUFuZCB5ZXQgaXQgaXJrcyBtZSB0aGUgcG9vciBkYXBwbGVkIGZvb2xzLAorCUJlaW5nIG5hdGl2ZSBidXJnaGVycyBvZiB0aGlzIGRlc2VydCBjaXR5LAorCVNob3VsZCBpbiB0aGVpciBvd24gY29uZmluZXMgd2l0aCBmb3JrZWQgaGVhZHMKKwlIYXZlIHRoZWlyIHJvdW5kIGhhdW5jaGVzIGdvcmVkLgorCitGaXJzdCBMb3JkCUluZGVlZCwgbXkgbG9yZCwKKwlUaGUgbWVsYW5jaG9seSBKYXF1ZXMgZ3JpZXZlcyBhdCB0aGF0LAorCUFuZCwgaW4gdGhhdCBraW5kLCBzd2VhcnMgeW91IGRvIG1vcmUgdXN1cnAKKwlUaGFuIGRvdGggeW91ciBicm90aGVyIHRoYXQgaGF0aCBiYW5pc2gnZCB5b3UuCisJVG8tZGF5IG15IExvcmQgb2YgQW1pZW5zIGFuZCBteXNlbGYKKwlEaWQgc3RlYWwgYmVoaW5kIGhpbSBhcyBoZSBsYXkgYWxvbmcKKwlVbmRlciBhbiBvYWsgd2hvc2UgYW50aXF1ZSByb290IHBlZXBzIG91dAorCVVwb24gdGhlIGJyb29rIHRoYXQgYnJhd2xzIGFsb25nIHRoaXMgd29vZDoKKwlUbyB0aGUgd2hpY2ggcGxhY2UgYSBwb29yIHNlcXVlc3RlcidkIHN0YWcsCisJVGhhdCBmcm9tIHRoZSBodW50ZXIncyBhaW0gaGFkIHRhJ2VuIGEgaHVydCwKKwlEaWQgY29tZSB0byBsYW5ndWlzaCwgYW5kIGluZGVlZCwgbXkgbG9yZCwKKwlUaGUgd3JldGNoZWQgYW5pbWFsIGhlYXZlZCBmb3J0aCBzdWNoIGdyb2FucworCVRoYXQgdGhlaXIgZGlzY2hhcmdlIGRpZCBzdHJldGNoIGhpcyBsZWF0aGVybiBjb2F0CisJQWxtb3N0IHRvIGJ1cnN0aW5nLCBhbmQgdGhlIGJpZyByb3VuZCB0ZWFycworCUNvdXJzZWQgb25lIGFub3RoZXIgZG93biBoaXMgaW5ub2NlbnQgbm9zZQorCUluIHBpdGVvdXMgY2hhc2U7IGFuZCB0aHVzIHRoZSBoYWlyeSBmb29sCisJTXVjaCBtYXJrZWQgb2YgdGhlIG1lbGFuY2hvbHkgSmFxdWVzLAorCVN0b29kIG9uIHRoZSBleHRyZW1lc3QgdmVyZ2Ugb2YgdGhlIHN3aWZ0IGJyb29rLAorCUF1Z21lbnRpbmcgaXQgd2l0aCB0ZWFycy4KKworRFVLRSBTRU5JT1IJQnV0IHdoYXQgc2FpZCBKYXF1ZXM/CisJRGlkIGhlIG5vdCBtb3JhbGl6ZSB0aGlzIHNwZWN0YWNsZT8KKworRmlyc3QgTG9yZAlPLCB5ZXMsIGludG8gYSB0aG91c2FuZCBzaW1pbGVzLgorCUZpcnN0LCBmb3IgaGlzIHdlZXBpbmcgaW50byB0aGUgbmVlZGxlc3Mgc3RyZWFtOworCSdQb29yIGRlZXIsJyBxdW90aCBoZSwgJ3Rob3UgbWFrZXN0IGEgdGVzdGFtZW50CisJQXMgd29ybGRsaW5ncyBkbywgZ2l2aW5nIHRoeSBzdW0gb2YgbW9yZQorCVRvIHRoYXQgd2hpY2ggaGFkIHRvbyBtdWNoOicgdGhlbiwgYmVpbmcgdGhlcmUgYWxvbmUsCisJTGVmdCBhbmQgYWJhbmRvbidkIG9mIGhpcyB2ZWx2ZXQgZnJpZW5kcywKKwknJ1RpcyByaWdodDonIHF1b3RoIGhlOyAndGh1cyBtaXNlcnkgZG90aCBwYXJ0CisJVGhlIGZsdXggb2YgY29tcGFueTonIGFub24gYSBjYXJlbGVzcyBoZXJkLAorCUZ1bGwgb2YgdGhlIHBhc3R1cmUsIGp1bXBzIGFsb25nIGJ5IGhpbQorCUFuZCBuZXZlciBzdGF5cyB0byBncmVldCBoaW07ICdBeScgcXVvdGggSmFxdWVzLAorCSdTd2VlcCBvbiwgeW91IGZhdCBhbmQgZ3JlYXN5IGNpdGl6ZW5zOworCSdUaXMganVzdCB0aGUgZmFzaGlvbjogd2hlcmVmb3JlIGRvIHlvdSBsb29rCisJVXBvbiB0aGF0IHBvb3IgYW5kIGJyb2tlbiBiYW5rcnVwdCB0aGVyZT8nCisJVGh1cyBtb3N0IGludmVjdGl2ZWx5IGhlIHBpZXJjZXRoIHRocm91Z2gKKwlUaGUgYm9keSBvZiB0aGUgY291bnRyeSwgY2l0eSwgY291cnQsCisJWWVhLCBhbmQgb2YgdGhpcyBvdXIgbGlmZSwgc3dlYXJpbmcgdGhhdCB3ZQorCUFyZSBtZXJlIHVzdXJwZXJzLCB0eXJhbnRzIGFuZCB3aGF0J3Mgd29yc2UsCisJVG8gZnJpZ2h0IHRoZSBhbmltYWxzIGFuZCB0byBraWxsIHRoZW0gdXAKKwlJbiB0aGVpciBhc3NpZ24nZCBhbmQgbmF0aXZlIGR3ZWxsaW5nLXBsYWNlLgorCitEVUtFIFNFTklPUglBbmQgZGlkIHlvdSBsZWF2ZSBoaW0gaW4gdGhpcyBjb250ZW1wbGF0aW9uPworCitTZWNvbmQgTG9yZAlXZSBkaWQsIG15IGxvcmQsIHdlZXBpbmcgYW5kIGNvbW1lbnRpbmcKKwlVcG9uIHRoZSBzb2JiaW5nIGRlZXIuCisKK0RVS0UgU0VOSU9SCVNob3cgbWUgdGhlIHBsYWNlOgorCUkgbG92ZSB0byBjb3BlIGhpbSBpbiB0aGVzZSBzdWxsZW4gZml0cywKKwlGb3IgdGhlbiBoZSdzIGZ1bGwgb2YgbWF0dGVyLgorCitGaXJzdCBMb3JkCUknbGwgYnJpbmcgeW91IHRvIGhpbSBzdHJhaWdodC4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBJSQorCisKKworU0NFTkUgSUkJQSByb29tIGluIHRoZSBwYWxhY2UuCisKKworCVtFbnRlciBEVUtFIEZSRURFUklDSywgd2l0aCBMb3Jkc10KKworRFVLRSBGUkVERVJJQ0sJQ2FuIGl0IGJlIHBvc3NpYmxlIHRoYXQgbm8gbWFuIHNhdyB0aGVtPworCUl0IGNhbm5vdCBiZTogc29tZSB2aWxsYWlucyBvZiBteSBjb3VydAorCUFyZSBvZiBjb25zZW50IGFuZCBzdWZmZXJhbmNlIGluIHRoaXMuCisKK0ZpcnN0IExvcmQJSSBjYW5ub3QgaGVhciBvZiBhbnkgdGhhdCBkaWQgc2VlIGhlci4KKwlUaGUgbGFkaWVzLCBoZXIgYXR0ZW5kYW50cyBvZiBoZXIgY2hhbWJlciwKKwlTYXcgaGVyIGFiZWQsIGFuZCBpbiB0aGUgbW9ybmluZyBlYXJseQorCVRoZXkgZm91bmQgdGhlIGJlZCB1bnRyZWFzdXJlZCBvZiB0aGVpciBtaXN0cmVzcy4KKworU2Vjb25kIExvcmQJTXkgbG9yZCwgdGhlIHJveW5pc2ggY2xvd24sIGF0IHdob20gc28gb2Z0CisJWW91ciBncmFjZSB3YXMgd29udCB0byBsYXVnaCwgaXMgYWxzbyBtaXNzaW5nLgorCUhpc3BlcmlhLCB0aGUgcHJpbmNlc3MnIGdlbnRsZXdvbWFuLAorCUNvbmZlc3NlcyB0aGF0IHNoZSBzZWNyZXRseSBvJ2VyaGVhcmQKKwlZb3VyIGRhdWdodGVyIGFuZCBoZXIgY291c2luIG11Y2ggY29tbWVuZAorCVRoZSBwYXJ0cyBhbmQgZ3JhY2VzIG9mIHRoZSB3cmVzdGxlcgorCVRoYXQgZGlkIGJ1dCBsYXRlbHkgZm9pbCB0aGUgc2luZXd5IENoYXJsZXM7CisJQW5kIHNoZSBiZWxpZXZlcywgd2hlcmV2ZXIgdGhleSBhcmUgZ29uZSwKKwlUaGF0IHlvdXRoIGlzIHN1cmVseSBpbiB0aGVpciBjb21wYW55LgorCitEVUtFIEZSRURFUklDSwlTZW5kIHRvIGhpcyBicm90aGVyOyBmZXRjaCB0aGF0IGdhbGxhbnQgaGl0aGVyOworCUlmIGhlIGJlIGFic2VudCwgYnJpbmcgaGlzIGJyb3RoZXIgdG8gbWU7CisJSSdsbCBtYWtlIGhpbSBmaW5kIGhpbTogZG8gdGhpcyBzdWRkZW5seSwKKwlBbmQgbGV0IG5vdCBzZWFyY2ggYW5kIGlucXVpc2l0aW9uIHF1YWlsCisJVG8gYnJpbmcgYWdhaW4gdGhlc2UgZm9vbGlzaCBydW5hd2F5cy4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBJSQorCisKKworU0NFTkUgSUlJCUJlZm9yZSBPTElWRVInUyBob3VzZS4KKworCisJW0VudGVyIE9STEFORE8gYW5kIEFEQU0sIG1lZXRpbmddCisKK09STEFORE8JV2hvJ3MgdGhlcmU/CisKK0FEQU0JV2hhdCwgbXkgeW91bmcgbWFzdGVyPyBPLCBteSBnZW50bGUgbWFzdGVyIQorCU8gbXkgc3dlZXQgbWFzdGVyISBPIHlvdSBtZW1vcnkKKwlPZiBvbGQgU2lyIFJvd2xhbmQhIHdoeSwgd2hhdCBtYWtlIHlvdSBoZXJlPworCVdoeSBhcmUgeW91IHZpcnR1b3VzPyB3aHkgZG8gcGVvcGxlIGxvdmUgeW91PworCUFuZCB3aGVyZWZvcmUgYXJlIHlvdSBnZW50bGUsIHN0cm9uZyBhbmQgdmFsaWFudD8KKwlXaHkgd291bGQgeW91IGJlIHNvIGZvbmQgdG8gb3ZlcmNvbWUKKwlUaGUgYm9ubnkgcHJpc2VyIG9mIHRoZSBodW1vcm91cyBkdWtlPworCVlvdXIgcHJhaXNlIGlzIGNvbWUgdG9vIHN3aWZ0bHkgaG9tZSBiZWZvcmUgeW91LgorCUtub3cgeW91IG5vdCwgbWFzdGVyLCB0byBzb21lIGtpbmQgb2YgbWVuCisJVGhlaXIgZ3JhY2VzIHNlcnZlIHRoZW0gYnV0IGFzIGVuZW1pZXM/CisJTm8gbW9yZSBkbyB5b3VyczogeW91ciB2aXJ0dWVzLCBnZW50bGUgbWFzdGVyLAorCUFyZSBzYW5jdGlmaWVkIGFuZCBob2x5IHRyYWl0b3JzIHRvIHlvdS4KKwlPLCB3aGF0IGEgd29ybGQgaXMgdGhpcywgd2hlbiB3aGF0IGlzIGNvbWVseQorCUVudmVub21zIGhpbSB0aGF0IGJlYXJzIGl0IQorCitPUkxBTkRPCVdoeSwgd2hhdCdzIHRoZSBtYXR0ZXI/CisKK0FEQU0JTyB1bmhhcHB5IHlvdXRoIQorCUNvbWUgbm90IHdpdGhpbiB0aGVzZSBkb29yczsgd2l0aGluIHRoaXMgcm9vZgorCVRoZSBlbmVteSBvZiBhbGwgeW91ciBncmFjZXMgbGl2ZXM6CisJWW91ciBicm90aGVyLS1ubywgbm8gYnJvdGhlcjsgeWV0IHRoZSBzb24tLQorCVlldCBub3QgdGhlIHNvbiwgSSB3aWxsIG5vdCBjYWxsIGhpbSBzb24KKwlPZiBoaW0gSSB3YXMgYWJvdXQgdG8gY2FsbCBoaXMgZmF0aGVyLS0KKwlIYXRoIGhlYXJkIHlvdXIgcHJhaXNlcywgYW5kIHRoaXMgbmlnaHQgaGUgbWVhbnMKKwlUbyBidXJuIHRoZSBsb2RnaW5nIHdoZXJlIHlvdSB1c2UgdG8gbGllCisJQW5kIHlvdSB3aXRoaW4gaXQ6IGlmIGhlIGZhaWwgb2YgdGhhdCwKKwlIZSB3aWxsIGhhdmUgb3RoZXIgbWVhbnMgdG8gY3V0IHlvdSBvZmYuCisJSSBvdmVyaGVhcmQgaGltIGFuZCBoaXMgcHJhY3Rpc2VzLgorCVRoaXMgaXMgbm8gcGxhY2U7IHRoaXMgaG91c2UgaXMgYnV0IGEgYnV0Y2hlcnk6CisJQWJob3IgaXQsIGZlYXIgaXQsIGRvIG5vdCBlbnRlciBpdC4KKworT1JMQU5ETwlXaHksIHdoaXRoZXIsIEFkYW0sIHdvdWxkc3QgdGhvdSBoYXZlIG1lIGdvPworCitBREFNCU5vIG1hdHRlciB3aGl0aGVyLCBzbyB5b3UgY29tZSBub3QgaGVyZS4KKworT1JMQU5ETwlXaGF0LCB3b3VsZHN0IHRob3UgaGF2ZSBtZSBnbyBhbmQgYmVnIG15IGZvb2Q/CisJT3Igd2l0aCBhIGJhc2UgYW5kIGJvaXN0ZXJvdXMgc3dvcmQgZW5mb3JjZQorCUEgdGhpZXZpc2ggbGl2aW5nIG9uIHRoZSBjb21tb24gcm9hZD8KKwlUaGlzIEkgbXVzdCBkbywgb3Iga25vdyBub3Qgd2hhdCB0byBkbzoKKwlZZXQgdGhpcyBJIHdpbGwgbm90IGRvLCBkbyBob3cgSSBjYW47CisJSSByYXRoZXIgd2lsbCBzdWJqZWN0IG1lIHRvIHRoZSBtYWxpY2UKKwlPZiBhIGRpdmVydGVkIGJsb29kIGFuZCBibG9vZHkgYnJvdGhlci4KKworQURBTQlCdXQgZG8gbm90IHNvLiBJIGhhdmUgZml2ZSBodW5kcmVkIGNyb3ducywKKwlUaGUgdGhyaWZ0eSBoaXJlIEkgc2F2ZWQgdW5kZXIgeW91ciBmYXRoZXIsCisJV2hpY2ggSSBkaWQgc3RvcmUgdG8gYmUgbXkgZm9zdGVyLW51cnNlCisJV2hlbiBzZXJ2aWNlIHNob3VsZCBpbiBteSBvbGQgbGltYnMgbGllIGxhbWUKKwlBbmQgdW5yZWdhcmRlZCBhZ2UgaW4gY29ybmVycyB0aHJvd246CisJVGFrZSB0aGF0LCBhbmQgSGUgdGhhdCBkb3RoIHRoZSByYXZlbnMgZmVlZCwKKwlZZWEsIHByb3ZpZGVudGx5IGNhdGVycyBmb3IgdGhlIHNwYXJyb3csCisJQmUgY29tZm9ydCB0byBteSBhZ2UhIEhlcmUgaXMgdGhlIGdvbGQ7CisJQW5kIGFsbCB0aGlzIEkgZ2l2ZSB5b3UuIExldCBtZSBiZSB5b3VyIHNlcnZhbnQ6CisJVGhvdWdoIEkgbG9vayBvbGQsIHlldCBJIGFtIHN0cm9uZyBhbmQgbHVzdHk7CisJRm9yIGluIG15IHlvdXRoIEkgbmV2ZXIgZGlkIGFwcGx5CisJSG90IGFuZCByZWJlbGxpb3VzIGxpcXVvcnMgaW4gbXkgYmxvb2QsCisJTm9yIGRpZCBub3Qgd2l0aCB1bmJhc2hmdWwgZm9yZWhlYWQgd29vCisJVGhlIG1lYW5zIG9mIHdlYWtuZXNzIGFuZCBkZWJpbGl0eTsKKwlUaGVyZWZvcmUgbXkgYWdlIGlzIGFzIGEgbHVzdHkgd2ludGVyLAorCUZyb3N0eSwgYnV0IGtpbmRseTogbGV0IG1lIGdvIHdpdGggeW91OworCUknbGwgZG8gdGhlIHNlcnZpY2Ugb2YgYSB5b3VuZ2VyIG1hbgorCUluIGFsbCB5b3VyIGJ1c2luZXNzIGFuZCBuZWNlc3NpdGllcy4KKworT1JMQU5ETwlPIGdvb2Qgb2xkIG1hbiwgaG93IHdlbGwgaW4gdGhlZSBhcHBlYXJzCisJVGhlIGNvbnN0YW50IHNlcnZpY2Ugb2YgdGhlIGFudGlxdWUgd29ybGQsCisJV2hlbiBzZXJ2aWNlIHN3ZWF0IGZvciBkdXR5LCBub3QgZm9yIG1lZWQhCisJVGhvdSBhcnQgbm90IGZvciB0aGUgZmFzaGlvbiBvZiB0aGVzZSB0aW1lcywKKwlXaGVyZSBub25lIHdpbGwgc3dlYXQgYnV0IGZvciBwcm9tb3Rpb24sCisJQW5kIGhhdmluZyB0aGF0LCBkbyBjaG9rZSB0aGVpciBzZXJ2aWNlIHVwCisJRXZlbiB3aXRoIHRoZSBoYXZpbmc6IGl0IGlzIG5vdCBzbyB3aXRoIHRoZWUuCisJQnV0LCBwb29yIG9sZCBtYW4sIHRob3UgcHJ1bmVzdCBhIHJvdHRlbiB0cmVlLAorCVRoYXQgY2Fubm90IHNvIG11Y2ggYXMgYSBibG9zc29tIHlpZWxkCisJSW4gbGlldSBvZiBhbGwgdGh5IHBhaW5zIGFuZCBodXNiYW5kcnkKKwlCdXQgY29tZSB0aHkgd2F5czsgd2VsbCBnbyBhbG9uZyB0b2dldGhlciwKKwlBbmQgZXJlIHdlIGhhdmUgdGh5IHlvdXRoZnVsIHdhZ2VzIHNwZW50LAorCVdlJ2xsIGxpZ2h0IHVwb24gc29tZSBzZXR0bGVkIGxvdyBjb250ZW50LgorCitBREFNCU1hc3RlciwgZ28gb24sIGFuZCBJIHdpbGwgZm9sbG93IHRoZWUsCisJVG8gdGhlIGxhc3QgZ2FzcCwgd2l0aCB0cnV0aCBhbmQgbG95YWx0eS4KKwlGcm9tIHNldmVudGVlbiB5ZWFycyB0aWxsIG5vdyBhbG1vc3QgZm91cnNjb3JlCisJSGVyZSBsaXZlZCBJLCBidXQgbm93IGxpdmUgaGVyZSBubyBtb3JlLgorCUF0IHNldmVudGVlbiB5ZWFycyBtYW55IHRoZWlyIGZvcnR1bmVzIHNlZWs7CisJQnV0IGF0IGZvdXJzY29yZSBpdCBpcyB0b28gbGF0ZSBhIHdlZWs6CisJWWV0IGZvcnR1bmUgY2Fubm90IHJlY29tcGVuc2UgbWUgYmV0dGVyCisJVGhhbiB0byBkaWUgd2VsbCBhbmQgbm90IG15IG1hc3RlcidzIGRlYnRvci4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBJSQorCisKKworU0NFTkUgSVYJVGhlIEZvcmVzdCBvZiBBcmRlbi4KKworCisJW0VudGVyIFJPU0FMSU5EIGZvciBHYW55bWVkZSwgQ0VMSUEgZm9yIEFsaWVuYSwKKwlhbmQgVE9VQ0hTVE9ORV0KKworUk9TQUxJTkQJTyBKdXBpdGVyLCBob3cgd2VhcnkgYXJlIG15IHNwaXJpdHMhCisKK1RPVUNIU1RPTkUJSSBjYXJlIG5vdCBmb3IgbXkgc3Bpcml0cywgaWYgbXkgbGVncyB3ZXJlIG5vdCB3ZWFyeS4KKworUk9TQUxJTkQJSSBjb3VsZCBmaW5kIGluIG15IGhlYXJ0IHRvIGRpc2dyYWNlIG15IG1hbidzCisJYXBwYXJlbCBhbmQgdG8gY3J5IGxpa2UgYSB3b21hbjsgYnV0IEkgbXVzdCBjb21mb3J0CisJdGhlIHdlYWtlciB2ZXNzZWwsIGFzIGRvdWJsZXQgYW5kIGhvc2Ugb3VnaHQgdG8gc2hvdworCWl0c2VsZiBjb3VyYWdlb3VzIHRvIHBldHRpY29hdDogdGhlcmVmb3JlIGNvdXJhZ2UsCisJZ29vZCBBbGllbmEhCisKK0NFTElBCUkgcHJheSB5b3UsIGJlYXIgd2l0aCBtZTsgSSBjYW5ub3QgZ28gbm8gZnVydGhlci4KKworVE9VQ0hTVE9ORQlGb3IgbXkgcGFydCwgSSBoYWQgcmF0aGVyIGJlYXIgd2l0aCB5b3UgdGhhbiBiZWFyCisJeW91OyB5ZXQgSSBzaG91bGQgYmVhciBubyBjcm9zcyBpZiBJIGRpZCBiZWFyIHlvdSwKKwlmb3IgSSB0aGluayB5b3UgaGF2ZSBubyBtb25leSBpbiB5b3VyIHB1cnNlLgorCitST1NBTElORAlXZWxsLCB0aGlzIGlzIHRoZSBmb3Jlc3Qgb2YgQXJkZW4uCisKK1RPVUNIU1RPTkUJQXksIG5vdyBhbSBJIGluIEFyZGVuOyB0aGUgbW9yZSBmb29sIEk7IHdoZW4gSSB3YXMKKwlhdCBob21lLCBJIHdhcyBpbiBhIGJldHRlciBwbGFjZTogYnV0IHRyYXZlbGxlcnMKKwltdXN0IGJlIGNvbnRlbnQuCisKK1JPU0FMSU5ECUF5LCBiZSBzbywgZ29vZCBUb3VjaHN0b25lLgorCisJW0VudGVyIENPUklOIGFuZCBTSUxWSVVTXQorCisJTG9vayB5b3UsIHdobyBjb21lcyBoZXJlOyBhIHlvdW5nIG1hbiBhbmQgYW4gb2xkIGluCisJc29sZW1uIHRhbGsuCisKK0NPUklOCVRoYXQgaXMgdGhlIHdheSB0byBtYWtlIGhlciBzY29ybiB5b3Ugc3RpbGwuCisKK1NJTFZJVVMJTyBDb3JpbiwgdGhhdCB0aG91IGtuZXcnc3QgaG93IEkgZG8gbG92ZSBoZXIhCisKK0NPUklOCUkgcGFydGx5IGd1ZXNzOyBmb3IgSSBoYXZlIGxvdmVkIGVyZSBub3cuCisKK1NJTFZJVVMJTm8sIENvcmluLCBiZWluZyBvbGQsIHRob3UgY2Fuc3Qgbm90IGd1ZXNzLAorCVRob3VnaCBpbiB0aHkgeW91dGggdGhvdSB3YXN0IGFzIHRydWUgYSBsb3ZlcgorCUFzIGV2ZXIgc2lnaCdkIHVwb24gYSBtaWRuaWdodCBwaWxsb3c6CisJQnV0IGlmIHRoeSBsb3ZlIHdlcmUgZXZlciBsaWtlIHRvIG1pbmUtLQorCUFzIHN1cmUgSSB0aGluayBkaWQgbmV2ZXIgbWFuIGxvdmUgc28tLQorCUhvdyBtYW55IGFjdGlvbnMgbW9zdCByaWRpY3Vsb3VzCisJSGFzdCB0aG91IGJlZW4gZHJhd24gdG8gYnkgdGh5IGZhbnRhc3k/CisKK0NPUklOCUludG8gYSB0aG91c2FuZCB0aGF0IEkgaGF2ZSBmb3Jnb3R0ZW4uCisKK1NJTFZJVVMJTywgdGhvdSBkaWRzdCB0aGVuIG5lJ2VyIGxvdmUgc28gaGVhcnRpbHkhCisJSWYgdGhvdSByZW1lbWJlcidzdCBub3QgdGhlIHNsaWdodGVzdCBmb2xseQorCVRoYXQgZXZlciBsb3ZlIGRpZCBtYWtlIHRoZWUgcnVuIGludG8sCisJVGhvdSBoYXN0IG5vdCBsb3ZlZDoKKwlPciBpZiB0aG91IGhhc3Qgbm90IHNhdCBhcyBJIGRvIG5vdywKKwlXZWFyeWluZyB0aHkgaGVhcmVyIGluIHRoeSBtaXN0cmVzcycgcHJhaXNlLAorCVRob3UgaGFzdCBub3QgbG92ZWQ6CisJT3IgaWYgdGhvdSBoYXN0IG5vdCBicm9rZSBmcm9tIGNvbXBhbnkKKwlBYnJ1cHRseSwgYXMgbXkgcGFzc2lvbiBub3cgbWFrZXMgbWUsCisJVGhvdSBoYXN0IG5vdCBsb3ZlZC4KKwlPIFBoZWJlLCBQaGViZSwgUGhlYmUhCisKKwlbRXhpdF0KKworUk9TQUxJTkQJQWxhcywgcG9vciBzaGVwaGVyZCEgc2VhcmNoaW5nIG9mIHRoeSB3b3VuZCwKKwlJIGhhdmUgYnkgaGFyZCBhZHZlbnR1cmUgZm91bmQgbWluZSBvd24uCisKK1RPVUNIU1RPTkUJQW5kIEkgbWluZS4gSSByZW1lbWJlciwgd2hlbiBJIHdhcyBpbiBsb3ZlIEkgYnJva2UKKwlteSBzd29yZCB1cG9uIGEgc3RvbmUgYW5kIGJpZCBoaW0gdGFrZSB0aGF0IGZvcgorCWNvbWluZyBhLW5pZ2h0IHRvIEphbmUgU21pbGU7IGFuZCBJIHJlbWVtYmVyIHRoZQorCWtpc3Npbmcgb2YgaGVyIGJhdGxldCBhbmQgdGhlIGNvdydzIGR1Z3MgdGhhdCBoZXIKKwlwcmV0dHkgY2hvcHQgaGFuZHMgaGFkIG1pbGtlZDsgYW5kIEkgcmVtZW1iZXIgdGhlCisJd29vaW5nIG9mIGEgcGVhc2NvZCBpbnN0ZWFkIG9mIGhlciwgZnJvbSB3aG9tIEkgdG9vaworCXR3byBjb2RzIGFuZCwgZ2l2aW5nIGhlciB0aGVtIGFnYWluLCBzYWlkIHdpdGgKKwl3ZWVwaW5nIHRlYXJzICdXZWFyIHRoZXNlIGZvciBteSBzYWtlLicgV2UgdGhhdCBhcmUKKwl0cnVlIGxvdmVycyBydW4gaW50byBzdHJhbmdlIGNhcGVyczsgYnV0IGFzIGFsbCBpcworCW1vcnRhbCBpbiBuYXR1cmUsIHNvIGlzIGFsbCBuYXR1cmUgaW4gbG92ZSBtb3J0YWwgaW4gZm9sbHkuCisKK1JPU0FMSU5ECVRob3Ugc3BlYWtlc3Qgd2lzZXIgdGhhbiB0aG91IGFydCB3YXJlIG9mLgorCitUT1VDSFNUT05FCU5heSwgSSBzaGFsbCBuZSdlciBiZSB3YXJlIG9mIG1pbmUgb3duIHdpdCB0aWxsIEkKKwlicmVhayBteSBzaGlucyBhZ2FpbnN0IGl0LgorCitST1NBTElORAlKb3ZlLCBKb3ZlISB0aGlzIHNoZXBoZXJkJ3MgcGFzc2lvbgorCUlzIG11Y2ggdXBvbiBteSBmYXNoaW9uLgorCitUT1VDSFNUT05FCUFuZCBtaW5lOyBidXQgaXQgZ3Jvd3Mgc29tZXRoaW5nIHN0YWxlIHdpdGggbWUuCisKK0NFTElBCUkgcHJheSB5b3UsIG9uZSBvZiB5b3UgcXVlc3Rpb24geW9uZCBtYW4KKwlJZiBoZSBmb3IgZ29sZCB3aWxsIGdpdmUgdXMgYW55IGZvb2Q6CisJSSBmYWludCBhbG1vc3QgdG8gZGVhdGguCisKK1RPVUNIU1RPTkUJSG9sbGEsIHlvdSBjbG93biEKKworUk9TQUxJTkQJUGVhY2UsIGZvb2w6IGhlJ3Mgbm90IHRoeSBraW5zbWFuLgorCitDT1JJTglXaG8gY2FsbHM/CisKK1RPVUNIU1RPTkUJWW91ciBiZXR0ZXJzLCBzaXIuCisKK0NPUklOCSAgICAgICAgICAgICAgICAgIEVsc2UgYXJlIHRoZXkgdmVyeSB3cmV0Y2hlZC4KKworUk9TQUxJTkQJUGVhY2UsIEkgc2F5LiBHb29kIGV2ZW4gdG8geW91LCBmcmllbmQuCisKK0NPUklOCUFuZCB0byB5b3UsIGdlbnRsZSBzaXIsIGFuZCB0byB5b3UgYWxsLgorCitST1NBTElORAlJIHByaXRoZWUsIHNoZXBoZXJkLCBpZiB0aGF0IGxvdmUgb3IgZ29sZAorCUNhbiBpbiB0aGlzIGRlc2VydCBwbGFjZSBidXkgZW50ZXJ0YWlubWVudCwKKwlCcmluZyB1cyB3aGVyZSB3ZSBtYXkgcmVzdCBvdXJzZWx2ZXMgYW5kIGZlZWQ6CisJSGVyZSdzIGEgeW91bmcgbWFpZCB3aXRoIHRyYXZlbCBtdWNoIG9wcHJlc3MnZAorCUFuZCBmYWludHMgZm9yIHN1Y2Nvci4KKworQ09SSU4JRmFpciBzaXIsIEkgcGl0eSBoZXIKKwlBbmQgd2lzaCwgZm9yIGhlciBzYWtlIG1vcmUgdGhhbiBmb3IgbWluZSBvd24sCisJTXkgZm9ydHVuZXMgd2VyZSBtb3JlIGFibGUgdG8gcmVsaWV2ZSBoZXI7CisJQnV0IEkgYW0gc2hlcGhlcmQgdG8gYW5vdGhlciBtYW4KKwlBbmQgZG8gbm90IHNoZWFyIHRoZSBmbGVlY2VzIHRoYXQgSSBncmF6ZToKKwlNeSBtYXN0ZXIgaXMgb2YgY2h1cmxpc2ggZGlzcG9zaXRpb24KKwlBbmQgbGl0dGxlIHJlY2tzIHRvIGZpbmQgdGhlIHdheSB0byBoZWF2ZW4KKwlCeSBkb2luZyBkZWVkcyBvZiBob3NwaXRhbGl0eToKKwlCZXNpZGVzLCBoaXMgY290ZSwgaGlzIGZsb2NrcyBhbmQgYm91bmRzIG9mIGZlZWQKKwlBcmUgbm93IG9uIHNhbGUsIGFuZCBhdCBvdXIgc2hlZXBjb3RlIG5vdywKKwlCeSByZWFzb24gb2YgaGlzIGFic2VuY2UsIHRoZXJlIGlzIG5vdGhpbmcKKwlUaGF0IHlvdSB3aWxsIGZlZWQgb247IGJ1dCB3aGF0IGlzLCBjb21lIHNlZS4KKwlBbmQgaW4gbXkgdm9pY2UgbW9zdCB3ZWxjb21lIHNoYWxsIHlvdSBiZS4KKworUk9TQUxJTkQJV2hhdCBpcyBoZSB0aGF0IHNoYWxsIGJ1eSBoaXMgZmxvY2sgYW5kIHBhc3R1cmU/CisKK0NPUklOCVRoYXQgeW91bmcgc3dhaW4gdGhhdCB5b3Ugc2F3IGhlcmUgYnV0IGVyZXdoaWxlLAorCVRoYXQgbGl0dGxlIGNhcmVzIGZvciBidXlpbmcgYW55IHRoaW5nLgorCitST1NBTElORAlJIHByYXkgdGhlZSwgaWYgaXQgc3RhbmQgd2l0aCBob25lc3R5LAorCUJ1eSB0aG91IHRoZSBjb3R0YWdlLCBwYXN0dXJlIGFuZCB0aGUgZmxvY2ssCisJQW5kIHRob3Ugc2hhbHQgaGF2ZSB0byBwYXkgZm9yIGl0IG9mIHVzLgorCitDRUxJQQlBbmQgd2Ugd2lsbCBtZW5kIHRoeSB3YWdlcy4gSSBsaWtlIHRoaXMgcGxhY2UuCisJQW5kIHdpbGxpbmdseSBjb3VsZCB3YXN0ZSBteSB0aW1lIGluIGl0LgorCitDT1JJTglBc3N1cmVkbHkgdGhlIHRoaW5nIGlzIHRvIGJlIHNvbGQ6CisJR28gd2l0aCBtZTogaWYgeW91IGxpa2UgdXBvbiByZXBvcnQKKwlUaGUgc29pbCwgdGhlIHByb2ZpdCBhbmQgdGhpcyBraW5kIG9mIGxpZmUsCisJSSB3aWxsIHlvdXIgdmVyeSBmYWl0aGZ1bCBmZWVkZXIgYmUKKwlBbmQgYnV5IGl0IHdpdGggeW91ciBnb2xkIHJpZ2h0IHN1ZGRlbmx5LgorCisJW0V4ZXVudF0KKworCisKKworCUFTIFlPVSBMSUtFIElUCisKKworQUNUIElJCisKKworCitTQ0VORSBWCVRoZSBGb3Jlc3QuCisKKworCVtFbnRlciBBTUlFTlMsIEpBUVVFUywgYW5kIG90aGVyc10KKwkKKwlTT05HLgorQU1JRU5TCVVuZGVyIHRoZSBncmVlbndvb2QgdHJlZQorCVdobyBsb3ZlcyB0byBsaWUgd2l0aCBtZSwKKwlBbmQgdHVybiBoaXMgbWVycnkgbm90ZQorCVVudG8gdGhlIHN3ZWV0IGJpcmQncyB0aHJvYXQsCisJQ29tZSBoaXRoZXIsIGNvbWUgaGl0aGVyLCBjb21lIGhpdGhlcjoKKwlIZXJlIHNoYWxsIGhlIHNlZSBObyBlbmVteQorCUJ1dCB3aW50ZXIgYW5kIHJvdWdoIHdlYXRoZXIuCisKK0pBUVVFUwlNb3JlLCBtb3JlLCBJIHByaXRoZWUsIG1vcmUuCisKK0FNSUVOUwlJdCB3aWxsIG1ha2UgeW91IG1lbGFuY2hvbHksIE1vbnNpZXVyIEphcXVlcy4KKworSkFRVUVTCUkgdGhhbmsgaXQuIE1vcmUsIEkgcHJpdGhlZSwgbW9yZS4gSSBjYW4gc3VjaworCW1lbGFuY2hvbHkgb3V0IG9mIGEgc29uZywgYXMgYSB3ZWFzZWwgc3Vja3MgZWdncy4KKwlNb3JlLCBJIHByaXRoZWUsIG1vcmUuCisKK0FNSUVOUwlNeSB2b2ljZSBpcyByYWdnZWQ6IEkga25vdyBJIGNhbm5vdCBwbGVhc2UgeW91LgorCitKQVFVRVMJSSBkbyBub3QgZGVzaXJlIHlvdSB0byBwbGVhc2UgbWU7IEkgZG8gZGVzaXJlIHlvdSB0bworCXNpbmcuIENvbWUsIG1vcmU7IGFub3RoZXIgc3RhbnpvOiBjYWxsIHlvdSAnZW0gc3Rhbnpvcz8KKworQU1JRU5TCVdoYXQgeW91IHdpbGwsIE1vbnNpZXVyIEphcXVlcy4KKworSkFRVUVTCU5heSwgSSBjYXJlIG5vdCBmb3IgdGhlaXIgbmFtZXM7IHRoZXkgb3dlIG1lCisJbm90aGluZy4gV2lsbCB5b3Ugc2luZz8KKworQU1JRU5TCU1vcmUgYXQgeW91ciByZXF1ZXN0IHRoYW4gdG8gcGxlYXNlIG15c2VsZi4KKworSkFRVUVTCVdlbGwgdGhlbiwgaWYgZXZlciBJIHRoYW5rIGFueSBtYW4sIEknbGwgdGhhbmsgeW91OworCWJ1dCB0aGF0IHRoZXkgY2FsbCBjb21wbGltZW50IGlzIGxpa2UgdGhlIGVuY291bnRlcgorCW9mIHR3byBkb2ctYXBlcywgYW5kIHdoZW4gYSBtYW4gdGhhbmtzIG1lIGhlYXJ0aWx5LAorCW1ldGhpbmtzIEkgaGF2ZSBnaXZlbiBoaW0gYSBwZW5ueSBhbmQgaGUgcmVuZGVycyBtZQorCXRoZSBiZWdnYXJseSB0aGFua3MuIENvbWUsIHNpbmc7IGFuZCB5b3UgdGhhdCB3aWxsCisJbm90LCBob2xkIHlvdXIgdG9uZ3Vlcy4KKworQU1JRU5TCVdlbGwsIEknbGwgZW5kIHRoZSBzb25nLiBTaXJzLCBjb3ZlciB0aGUgd2hpbGU7IHRoZQorCWR1a2Ugd2lsbCBkcmluayB1bmRlciB0aGlzIHRyZWUuIEhlIGhhdGggYmVlbiBhbGwKKwl0aGlzIGRheSB0byBsb29rIHlvdS4KKworSkFRVUVTCUFuZCBJIGhhdmUgYmVlbiBhbGwgdGhpcyBkYXkgdG8gYXZvaWQgaGltLiBIZSBpcworCXRvbyBkaXNwdXRhYmxlIGZvciBteSBjb21wYW55OiBJIHRoaW5rIG9mIGFzIG1hbnkKKwltYXR0ZXJzIGFzIGhlLCBidXQgSSBnaXZlIGhlYXZlbiB0aGFua3MgYW5kIG1ha2Ugbm8KKwlib2FzdCBvZiB0aGVtLiBDb21lLCB3YXJibGUsIGNvbWUuCisJCisJU09ORy4KKwlXaG8gZG90aCBhbWJpdGlvbiBzaHVuCisKKwlbQWxsIHRvZ2V0aGVyIGhlcmVdCisKKwlBbmQgbG92ZXMgdG8gbGl2ZSBpJyB0aGUgc3VuLAorCVNlZWtpbmcgdGhlIGZvb2QgaGUgZWF0cworCUFuZCBwbGVhc2VkIHdpdGggd2hhdCBoZSBnZXRzLAorCUNvbWUgaGl0aGVyLCBjb21lIGhpdGhlciwgY29tZSBoaXRoZXI6CisJSGVyZSBzaGFsbCBoZSBzZWUgTm8gZW5lbXkKKwlCdXQgd2ludGVyIGFuZCByb3VnaCB3ZWF0aGVyLgorCitKQVFVRVMJSSdsbCBnaXZlIHlvdSBhIHZlcnNlIHRvIHRoaXMgbm90ZSB0aGF0IEkgbWFkZQorCXllc3RlcmRheSBpbiBkZXNwaXRlIG9mIG15IGludmVudGlvbi4KKworQU1JRU5TCUFuZCBJJ2xsIHNpbmcgaXQuCisKK0pBUVVFUwlUaHVzIGl0IGdvZXM6LS0KKworCUlmIGl0IGRvIGNvbWUgdG8gcGFzcworCVRoYXQgYW55IG1hbiB0dXJuIGFzcywKKwlMZWF2aW5nIGhpcyB3ZWFsdGggYW5kIGVhc2UsCisJQSBzdHViYm9ybiB3aWxsIHRvIHBsZWFzZSwKKwlEdWNkYW1lLCBkdWNkYW1lLCBkdWNkYW1lOgorCUhlcmUgc2hhbGwgaGUgc2VlCisJR3Jvc3MgZm9vbHMgYXMgaGUsCisJQW4gaWYgaGUgd2lsbCBjb21lIHRvIG1lLgorCitBTUlFTlMJV2hhdCdzIHRoYXQgJ2R1Y2RhbWUnPworCitKQVFVRVMJJ1RpcyBhIEdyZWVrIGludm9jYXRpb24sIHRvIGNhbGwgZm9vbHMgaW50byBhCisJY2lyY2xlLiBJJ2xsIGdvIHNsZWVwLCBpZiBJIGNhbjsgaWYgSSBjYW5ub3QsIEknbGwKKwlyYWlsIGFnYWluc3QgYWxsIHRoZSBmaXJzdC1ib3JuIG9mIEVneXB0LgorCitBTUlFTlMJQW5kIEknbGwgZ28gc2VlayB0aGUgZHVrZTogaGlzIGJhbnF1ZXQgaXMgcHJlcGFyZWQuCisKKwlbRXhldW50IHNldmVyYWxseV0KKworCisKKworCUFTIFlPVSBMSUtFIElUCisKKworQUNUIElJCisKKworCitTQ0VORSBWSQlUaGUgZm9yZXN0LgorCisKKwlbRW50ZXIgT1JMQU5ETyBhbmQgQURBTV0KKworQURBTQlEZWFyIG1hc3RlciwgSSBjYW4gZ28gbm8gZnVydGhlci4gTywgSSBkaWUgZm9yIGZvb2QhCisJSGVyZSBsaWUgSSBkb3duLCBhbmQgbWVhc3VyZSBvdXQgbXkgZ3JhdmUuIEZhcmV3ZWxsLAorCWtpbmQgbWFzdGVyLgorCitPUkxBTkRPCVdoeSwgaG93IG5vdywgQWRhbSEgbm8gZ3JlYXRlciBoZWFydCBpbiB0aGVlPyBMaXZlCisJYSBsaXR0bGU7IGNvbWZvcnQgYSBsaXR0bGU7IGNoZWVyIHRoeXNlbGYgYSBsaXR0bGUuCisJSWYgdGhpcyB1bmNvdXRoIGZvcmVzdCB5aWVsZCBhbnkgdGhpbmcgc2F2YWdlLCBJCisJd2lsbCBlaXRoZXIgYmUgZm9vZCBmb3IgaXQgb3IgYnJpbmcgaXQgZm9yIGZvb2QgdG8KKwl0aGVlLiBUaHkgY29uY2VpdCBpcyBuZWFyZXIgZGVhdGggdGhhbiB0aHkgcG93ZXJzLgorCUZvciBteSBzYWtlIGJlIGNvbWZvcnRhYmxlOyBob2xkIGRlYXRoIGF3aGlsZSBhdAorCXRoZSBhcm0ncyBlbmQ6IEkgd2lsbCBoZXJlIGJlIHdpdGggdGhlZSBwcmVzZW50bHk7CisJYW5kIGlmIEkgYnJpbmcgdGhlZSBub3Qgc29tZXRoaW5nIHRvIGVhdCwgSSB3aWxsCisJZ2l2ZSB0aGVlIGxlYXZlIHRvIGRpZTogYnV0IGlmIHRob3UgZGllc3QgYmVmb3JlIEkKKwljb21lLCB0aG91IGFydCBhIG1vY2tlciBvZiBteSBsYWJvdXIuIFdlbGwgc2FpZCEKKwl0aG91IGxvb2tlc3QgY2hlZXJseSwgYW5kIEknbGwgYmUgd2l0aCB0aGVlIHF1aWNrbHkuCisJWWV0IHRob3UgbGllc3QgaW4gdGhlIGJsZWFrIGFpcjogY29tZSwgSSB3aWxsIGJlYXIKKwl0aGVlIHRvIHNvbWUgc2hlbHRlcjsgYW5kIHRob3Ugc2hhbHQgbm90IGRpZSBmb3IKKwlsYWNrIG9mIGEgZGlubmVyLCBpZiB0aGVyZSBsaXZlIGFueSB0aGluZyBpbiB0aGlzCisJZGVzZXJ0LiBDaGVlcmx5LCBnb29kIEFkYW0hCisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSUkKKworCisKK1NDRU5FIFZJSQlUaGUgZm9yZXN0LgorCisKKwlbQSB0YWJsZSBzZXQgb3V0LiBFbnRlciBEVUtFIFNFTklPUiwgQU1JRU5TLCBhbmQKKwlMb3JkcyBsaWtlIG91dGxhd3NdCisKK0RVS0UgU0VOSU9SCUkgdGhpbmsgaGUgYmUgdHJhbnNmb3JtJ2QgaW50byBhIGJlYXN0OworCUZvciBJIGNhbiBubyB3aGVyZSBmaW5kIGhpbSBsaWtlIGEgbWFuLgorCitGaXJzdCBMb3JkCU15IGxvcmQsIGhlIGlzIGJ1dCBldmVuIG5vdyBnb25lIGhlbmNlOgorCUhlcmUgd2FzIGhlIG1lcnJ5LCBoZWFyaW5nIG9mIGEgc29uZy4KKworRFVLRSBTRU5JT1IJSWYgaGUsIGNvbXBhY3Qgb2YgamFycywgZ3JvdyBtdXNpY2FsLAorCVdlIHNoYWxsIGhhdmUgc2hvcnRseSBkaXNjb3JkIGluIHRoZSBzcGhlcmVzLgorCUdvLCBzZWVrIGhpbTogdGVsbCBoaW0gSSB3b3VsZCBzcGVhayB3aXRoIGhpbS4KKworCVtFbnRlciBKQVFVRVNdCisKK0ZpcnN0IExvcmQJSGUgc2F2ZXMgbXkgbGFib3VyIGJ5IGhpcyBvd24gYXBwcm9hY2guCisKK0RVS0UgU0VOSU9SCVdoeSwgaG93IG5vdywgbW9uc2lldXIhIHdoYXQgYSBsaWZlIGlzIHRoaXMsCisJVGhhdCB5b3VyIHBvb3IgZnJpZW5kcyBtdXN0IHdvbyB5b3VyIGNvbXBhbnk/CisJV2hhdCwgeW91IGxvb2sgbWVycmlseSEKKworSkFRVUVTCUEgZm9vbCwgYSBmb29sISBJIG1ldCBhIGZvb2wgaScgdGhlIGZvcmVzdCwKKwlBIG1vdGxleSBmb29sOyBhIG1pc2VyYWJsZSB3b3JsZCEKKwlBcyBJIGRvIGxpdmUgYnkgZm9vZCwgSSBtZXQgYSBmb29sCisJV2hvIGxhaWQgaGltIGRvd24gYW5kIGJhc2snZCBoaW0gaW4gdGhlIHN1biwKKwlBbmQgcmFpbCdkIG9uIExhZHkgRm9ydHVuZSBpbiBnb29kIHRlcm1zLAorCUluIGdvb2Qgc2V0IHRlcm1zIGFuZCB5ZXQgYSBtb3RsZXkgZm9vbC4KKwknR29vZCBtb3Jyb3csIGZvb2wsJyBxdW90aCBJLiAnTm8sIHNpciwnIHF1b3RoIGhlLAorCSdDYWxsIG1lIG5vdCBmb29sIHRpbGwgaGVhdmVuIGhhdGggc2VudCBtZSBmb3J0dW5lOicKKwlBbmQgdGhlbiBoZSBkcmV3IGEgZGlhbCBmcm9tIGhpcyBwb2tlLAorCUFuZCwgbG9va2luZyBvbiBpdCB3aXRoIGxhY2stbHVzdHJlIGV5ZSwKKwlTYXlzIHZlcnkgd2lzZWx5LCAnSXQgaXMgdGVuIG8nY2xvY2s6CisJVGh1cyB3ZSBtYXkgc2VlLCcgcXVvdGggaGUsICdob3cgdGhlIHdvcmxkIHdhZ3M6CisJJ1RpcyBidXQgYW4gaG91ciBhZ28gc2luY2UgaXQgd2FzIG5pbmUsCisJQW5kIGFmdGVyIG9uZSBob3VyIG1vcmUgJ3R3aWxsIGJlIGVsZXZlbjsKKwlBbmQgc28sIGZyb20gaG91ciB0byBob3VyLCB3ZSByaXBlIGFuZCByaXBlLAorCUFuZCB0aGVuLCBmcm9tIGhvdXIgdG8gaG91ciwgd2Ugcm90IGFuZCByb3Q7CisJQW5kIHRoZXJlYnkgaGFuZ3MgYSB0YWxlLicgV2hlbiBJIGRpZCBoZWFyCisJVGhlIG1vdGxleSBmb29sIHRodXMgbW9yYWwgb24gdGhlIHRpbWUsCisJTXkgbHVuZ3MgYmVnYW4gdG8gY3JvdyBsaWtlIGNoYW50aWNsZWVyLAorCVRoYXQgZm9vbHMgc2hvdWxkIGJlIHNvIGRlZXAtY29udGVtcGxhdGl2ZSwKKwlBbmQgSSBkaWQgbGF1Z2ggc2FucyBpbnRlcm1pc3Npb24KKwlBbiBob3VyIGJ5IGhpcyBkaWFsLiBPIG5vYmxlIGZvb2whCisJQSB3b3J0aHkgZm9vbCEgTW90bGV5J3MgdGhlIG9ubHkgd2Vhci4KKworRFVLRSBTRU5JT1IJV2hhdCBmb29sIGlzIHRoaXM/CisKK0pBUVVFUwlPIHdvcnRoeSBmb29sISBPbmUgdGhhdCBoYXRoIGJlZW4gYSBjb3VydGllciwKKwlBbmQgc2F5cywgaWYgbGFkaWVzIGJlIGJ1dCB5b3VuZyBhbmQgZmFpciwKKwlUaGV5IGhhdmUgdGhlIGdpZnQgdG8ga25vdyBpdDogYW5kIGluIGhpcyBicmFpbiwKKwlXaGljaCBpcyBhcyBkcnkgYXMgdGhlIHJlbWFpbmRlciBiaXNjdWl0CisJQWZ0ZXIgYSB2b3lhZ2UsIGhlIGhhdGggc3RyYW5nZSBwbGFjZXMgY3JhbW0nZAorCVdpdGggb2JzZXJ2YXRpb24sIHRoZSB3aGljaCBoZSB2ZW50cworCUluIG1hbmdsZWQgZm9ybXMuIE8gdGhhdCBJIHdlcmUgYSBmb29sIQorCUkgYW0gYW1iaXRpb3VzIGZvciBhIG1vdGxleSBjb2F0LgorCitEVUtFIFNFTklPUglUaG91IHNoYWx0IGhhdmUgb25lLgorCitKQVFVRVMJSXQgaXMgbXkgb25seSBzdWl0OworCVByb3ZpZGVkIHRoYXQgeW91IHdlZWQgeW91ciBiZXR0ZXIganVkZ21lbnRzCisJT2YgYWxsIG9waW5pb24gdGhhdCBncm93cyByYW5rIGluIHRoZW0KKwlUaGF0IEkgYW0gd2lzZS4gSSBtdXN0IGhhdmUgbGliZXJ0eQorCVdpdGhhbCwgYXMgbGFyZ2UgYSBjaGFydGVyIGFzIHRoZSB3aW5kLAorCVRvIGJsb3cgb24gd2hvbSBJIHBsZWFzZTsgZm9yIHNvIGZvb2xzIGhhdmU7CisJQW5kIHRoZXkgdGhhdCBhcmUgbW9zdCBnYWxsZWQgd2l0aCBteSBmb2xseSwKKwlUaGV5IG1vc3QgbXVzdCBsYXVnaC4gQW5kIHdoeSwgc2lyLCBtdXN0IHRoZXkgc28/CisJVGhlICd3aHknIGlzIHBsYWluIGFzIHdheSB0byBwYXJpc2ggY2h1cmNoOgorCUhlIHRoYXQgYSBmb29sIGRvdGggdmVyeSB3aXNlbHkgaGl0CisJRG90aCB2ZXJ5IGZvb2xpc2hseSwgYWx0aG91Z2ggaGUgc21hcnQsCisJTm90IHRvIHNlZW0gc2Vuc2VsZXNzIG9mIHRoZSBib2I6IGlmIG5vdCwKKwlUaGUgd2lzZSBtYW4ncyBmb2xseSBpcyBhbmF0b21pemVkCisJRXZlbiBieSB0aGUgc3F1YW5kZXJpbmcgZ2xhbmNlcyBvZiB0aGUgZm9vbC4KKwlJbnZlc3QgbWUgaW4gbXkgbW90bGV5OyBnaXZlIG1lIGxlYXZlCisJVG8gc3BlYWsgbXkgbWluZCwgYW5kIEkgd2lsbCB0aHJvdWdoIGFuZCB0aHJvdWdoCisJQ2xlYW5zZSB0aGUgZm91bCBib2R5IG9mIHRoZSBpbmZlY3RlZCB3b3JsZCwKKwlJZiB0aGV5IHdpbGwgcGF0aWVudGx5IHJlY2VpdmUgbXkgbWVkaWNpbmUuCisKK0RVS0UgU0VOSU9SCUZpZSBvbiB0aGVlISBJIGNhbiB0ZWxsIHdoYXQgdGhvdSB3b3VsZHN0IGRvLgorCitKQVFVRVMJV2hhdCwgZm9yIGEgY291bnRlciwgd291bGQgSSBkbyBidXQgZ29vZD8KKworRFVLRSBTRU5JT1IJTW9zdCBtaXNjaGlldm91cyBmb3VsIHNpbiwgaW4gY2hpZGluZyBzaW46CisJRm9yIHRob3UgdGh5c2VsZiBoYXN0IGJlZW4gYSBsaWJlcnRpbmUsCisJQXMgc2Vuc3VhbCBhcyB0aGUgYnJ1dGlzaCBzdGluZyBpdHNlbGY7CisJQW5kIGFsbCB0aGUgZW1ib3NzZWQgc29yZXMgYW5kIGhlYWRlZCBldmlscywKKwlUaGF0IHRob3Ugd2l0aCBsaWNlbmNlIG9mIGZyZWUgZm9vdCBoYXN0IGNhdWdodCwKKwlXb3VsZHN0IHRob3UgZGlzZ29yZ2UgaW50byB0aGUgZ2VuZXJhbCB3b3JsZC4KKworSkFRVUVTCVdoeSwgd2hvIGNyaWVzIG91dCBvbiBwcmlkZSwKKwlUaGF0IGNhbiB0aGVyZWluIHRheCBhbnkgcHJpdmF0ZSBwYXJ0eT8KKwlEb3RoIGl0IG5vdCBmbG93IGFzIGh1Z2VseSBhcyB0aGUgc2VhLAorCVRpbGwgdGhhdCB0aGUgd2VhcnkgdmVyeSBtZWFucyBkbyBlYmI/CisJV2hhdCB3b21hbiBpbiB0aGUgY2l0eSBkbyBJIG5hbWUsCisJV2hlbiB0aGF0IEkgc2F5IHRoZSBjaXR5LXdvbWFuIGJlYXJzCisJVGhlIGNvc3Qgb2YgcHJpbmNlcyBvbiB1bndvcnRoeSBzaG91bGRlcnM/CisJV2hvIGNhbiBjb21lIGluIGFuZCBzYXkgdGhhdCBJIG1lYW4gaGVyLAorCVdoZW4gc3VjaCBhIG9uZSBhcyBzaGUgc3VjaCBpcyBoZXIgbmVpZ2hib3VyPworCU9yIHdoYXQgaXMgaGUgb2YgYmFzZXN0IGZ1bmN0aW9uCisJVGhhdCBzYXlzIGhpcyBicmF2ZXJ5IGlzIG5vdCBvZiBteSBjb3N0LAorCVRoaW5raW5nIHRoYXQgSSBtZWFuIGhpbSwgYnV0IHRoZXJlaW4gc3VpdHMKKwlIaXMgZm9sbHkgdG8gdGhlIG1ldHRsZSBvZiBteSBzcGVlY2g/CisJVGhlcmUgdGhlbjsgaG93IHRoZW4/IHdoYXQgdGhlbj8gTGV0IG1lIHNlZSB3aGVyZWluCisJTXkgdG9uZ3VlIGhhdGggd3JvbmcnZCBoaW06IGlmIGl0IGRvIGhpbSByaWdodCwKKwlUaGVuIGhlIGhhdGggd3JvbmcnZCBoaW1zZWxmOyBpZiBoZSBiZSBmcmVlLAorCVdoeSB0aGVuIG15IHRheGluZyBsaWtlIGEgd2lsZC1nb29zZSBmbGllcywKKwlVbmNsYWltJ2Qgb2YgYW55IG1hbi4gQnV0IHdobyBjb21lcyBoZXJlPworCisJW0VudGVyIE9STEFORE8sIHdpdGggaGlzIHN3b3JkIGRyYXduXQorCitPUkxBTkRPCUZvcmJlYXIsIGFuZCBlYXQgbm8gbW9yZS4KKworSkFRVUVTCVdoeSwgSSBoYXZlIGVhdCBub25lIHlldC4KKworT1JMQU5ETwlOb3Igc2hhbHQgbm90LCB0aWxsIG5lY2Vzc2l0eSBiZSBzZXJ2ZWQuCisKK0pBUVVFUwlPZiB3aGF0IGtpbmQgc2hvdWxkIHRoaXMgY29jayBjb21lIG9mPworCitEVUtFIFNFTklPUglBcnQgdGhvdSB0aHVzIGJvbGRlbidkLCBtYW4sIGJ5IHRoeSBkaXN0cmVzcywKKwlPciBlbHNlIGEgcnVkZSBkZXNwaXNlciBvZiBnb29kIG1hbm5lcnMsCisJVGhhdCBpbiBjaXZpbGl0eSB0aG91IHNlZW0nc3Qgc28gZW1wdHk/CisKK09STEFORE8JWW91IHRvdWNoJ2QgbXkgdmVpbiBhdCBmaXJzdDogdGhlIHRob3JueSBwb2ludAorCU9mIGJhcmUgZGlzdHJlc3MgaGF0aCB0YSdlbiBmcm9tIG1lIHRoZSBzaG93CisJT2Ygc21vb3RoIGNpdmlsaXR5OiB5ZXQgYW0gSSBpbmxhbmQgYnJlZAorCUFuZCBrbm93IHNvbWUgbnVydHVyZS4gQnV0IGZvcmJlYXIsIEkgc2F5OgorCUhlIGRpZXMgdGhhdCB0b3VjaGVzIGFueSBvZiB0aGlzIGZydWl0CisJVGlsbCBJIGFuZCBteSBhZmZhaXJzIGFyZSBhbnN3ZXJlZC4KKworSkFRVUVTCUFuIHlvdSB3aWxsIG5vdCBiZSBhbnN3ZXJlZCB3aXRoIHJlYXNvbiwgSSBtdXN0IGRpZS4KKworRFVLRSBTRU5JT1IJV2hhdCB3b3VsZCB5b3UgaGF2ZT8gWW91ciBnZW50bGVuZXNzIHNoYWxsIGZvcmNlCisJTW9yZSB0aGFuIHlvdXIgZm9yY2UgbW92ZSB1cyB0byBnZW50bGVuZXNzLgorCitPUkxBTkRPCUkgYWxtb3N0IGRpZSBmb3IgZm9vZDsgYW5kIGxldCBtZSBoYXZlIGl0LgorCitEVUtFIFNFTklPUglTaXQgZG93biBhbmQgZmVlZCwgYW5kIHdlbGNvbWUgdG8gb3VyIHRhYmxlLgorCitPUkxBTkRPCVNwZWFrIHlvdSBzbyBnZW50bHk/IFBhcmRvbiBtZSwgSSBwcmF5IHlvdToKKwlJIHRob3VnaHQgdGhhdCBhbGwgdGhpbmdzIGhhZCBiZWVuIHNhdmFnZSBoZXJlOworCUFuZCB0aGVyZWZvcmUgcHV0IEkgb24gdGhlIGNvdW50ZW5hbmNlCisJT2Ygc3Rlcm4gY29tbWFuZG1lbnQuIEJ1dCB3aGF0ZSdlciB5b3UgYXJlCisJVGhhdCBpbiB0aGlzIGRlc2VydCBpbmFjY2Vzc2libGUsCisJVW5kZXIgdGhlIHNoYWRlIG9mIG1lbGFuY2hvbHkgYm91Z2hzLAorCUxvc2UgYW5kIG5lZ2xlY3QgdGhlIGNyZWVwaW5nIGhvdXJzIG9mIHRpbWUKKwlJZiBldmVyIHlvdSBoYXZlIGxvb2snZCBvbiBiZXR0ZXIgZGF5cywKKwlJZiBldmVyIGJlZW4gd2hlcmUgYmVsbHMgaGF2ZSBrbm9sbCdkIHRvIGNodXJjaCwKKwlJZiBldmVyIHNhdCBhdCBhbnkgZ29vZCBtYW4ncyBmZWFzdCwKKwlJZiBldmVyIGZyb20geW91ciBleWVsaWRzIHdpcGVkIGEgdGVhcgorCUFuZCBrbm93IHdoYXQgJ3RpcyB0byBwaXR5IGFuZCBiZSBwaXRpZWQsCisJTGV0IGdlbnRsZW5lc3MgbXkgc3Ryb25nIGVuZm9yY2VtZW50IGJlOgorCUluIHRoZSB3aGljaCBob3BlIEkgYmx1c2gsIGFuZCBoaWRlIG15IHN3b3JkLgorCitEVUtFIFNFTklPUglUcnVlIGlzIGl0IHRoYXQgd2UgaGF2ZSBzZWVuIGJldHRlciBkYXlzLAorCUFuZCBoYXZlIHdpdGggaG9seSBiZWxsIGJlZW4ga25vbGwnZCB0byBjaHVyY2gKKwlBbmQgc2F0IGF0IGdvb2QgbWVuJ3MgZmVhc3RzIGFuZCB3aXBlZCBvdXIgZXllcworCU9mIGRyb3BzIHRoYXQgc2FjcmVkIHBpdHkgaGF0aCBlbmdlbmRlcidkOgorCUFuZCB0aGVyZWZvcmUgc2l0IHlvdSBkb3duIGluIGdlbnRsZW5lc3MKKwlBbmQgdGFrZSB1cG9uIGNvbW1hbmQgd2hhdCBoZWxwIHdlIGhhdmUKKwlUaGF0IHRvIHlvdXIgd2FudGluZyBtYXkgYmUgbWluaXN0ZXInZC4KKworT1JMQU5ETwlUaGVuIGJ1dCBmb3JiZWFyIHlvdXIgZm9vZCBhIGxpdHRsZSB3aGlsZSwKKwlXaGlsZXMsIGxpa2UgYSBkb2UsIEkgZ28gdG8gZmluZCBteSBmYXduCisJQW5kIGdpdmUgaXQgZm9vZC4gVGhlcmUgaXMgYW4gb2xkIHBvb3IgbWFuLAorCVdobyBhZnRlciBtZSBoYXRoIG1hbnkgYSB3ZWFyeSBzdGVwCisJTGltcCdkIGluIHB1cmUgbG92ZTogdGlsbCBoZSBiZSBmaXJzdCBzdWZmaWNlZCwKKwlPcHByZXNzJ2Qgd2l0aCB0d28gd2VhayBldmlscywgYWdlIGFuZCBodW5nZXIsCisJSSB3aWxsIG5vdCB0b3VjaCBhIGJpdC4KKworRFVLRSBTRU5JT1IJR28gZmluZCBoaW0gb3V0LAorCUFuZCB3ZSB3aWxsIG5vdGhpbmcgd2FzdGUgdGlsbCB5b3UgcmV0dXJuLgorCitPUkxBTkRPCUkgdGhhbmsgeWU7IGFuZCBiZSBibGVzdCBmb3IgeW91ciBnb29kIGNvbWZvcnQhCisKKwlbRXhpdF0KKworRFVLRSBTRU5JT1IJVGhvdSBzZWVzdCB3ZSBhcmUgbm90IGFsbCBhbG9uZSB1bmhhcHB5OgorCVRoaXMgd2lkZSBhbmQgdW5pdmVyc2FsIHRoZWF0cmUKKwlQcmVzZW50cyBtb3JlIHdvZWZ1bCBwYWdlYW50cyB0aGFuIHRoZSBzY2VuZQorCVdoZXJlaW4gd2UgcGxheSBpbi4KKworSkFRVUVTCUFsbCB0aGUgd29ybGQncyBhIHN0YWdlLAorCUFuZCBhbGwgdGhlIG1lbiBhbmQgd29tZW4gbWVyZWx5IHBsYXllcnM6CisJVGhleSBoYXZlIHRoZWlyIGV4aXRzIGFuZCB0aGVpciBlbnRyYW5jZXM7CisJQW5kIG9uZSBtYW4gaW4gaGlzIHRpbWUgcGxheXMgbWFueSBwYXJ0cywKKwlIaXMgYWN0cyBiZWluZyBzZXZlbiBhZ2VzLiBBdCBmaXJzdCB0aGUgaW5mYW50LAorCU1ld2xpbmcgYW5kIHB1a2luZyBpbiB0aGUgbnVyc2UncyBhcm1zLgorCUFuZCB0aGVuIHRoZSB3aGluaW5nIHNjaG9vbC1ib3ksIHdpdGggaGlzIHNhdGNoZWwKKwlBbmQgc2hpbmluZyBtb3JuaW5nIGZhY2UsIGNyZWVwaW5nIGxpa2Ugc25haWwKKwlVbndpbGxpbmdseSB0byBzY2hvb2wuIEFuZCB0aGVuIHRoZSBsb3ZlciwKKwlTaWdoaW5nIGxpa2UgZnVybmFjZSwgd2l0aCBhIHdvZWZ1bCBiYWxsYWQKKwlNYWRlIHRvIGhpcyBtaXN0cmVzcycgZXllYnJvdy4gVGhlbiBhIHNvbGRpZXIsCisJRnVsbCBvZiBzdHJhbmdlIG9hdGhzIGFuZCBiZWFyZGVkIGxpa2UgdGhlIHBhcmQsCisJSmVhbG91cyBpbiBob25vdXIsIHN1ZGRlbiBhbmQgcXVpY2sgaW4gcXVhcnJlbCwKKwlTZWVraW5nIHRoZSBidWJibGUgcmVwdXRhdGlvbgorCUV2ZW4gaW4gdGhlIGNhbm5vbidzIG1vdXRoLiBBbmQgdGhlbiB0aGUganVzdGljZSwKKwlJbiBmYWlyIHJvdW5kIGJlbGx5IHdpdGggZ29vZCBjYXBvbiBsaW5lZCwKKwlXaXRoIGV5ZXMgc2V2ZXJlIGFuZCBiZWFyZCBvZiBmb3JtYWwgY3V0LAorCUZ1bGwgb2Ygd2lzZSBzYXdzIGFuZCBtb2Rlcm4gaW5zdGFuY2VzOworCUFuZCBzbyBoZSBwbGF5cyBoaXMgcGFydC4gVGhlIHNpeHRoIGFnZSBzaGlmdHMKKwlJbnRvIHRoZSBsZWFuIGFuZCBzbGlwcGVyJ2QgcGFudGFsb29uLAorCVdpdGggc3BlY3RhY2xlcyBvbiBub3NlIGFuZCBwb3VjaCBvbiBzaWRlLAorCUhpcyB5b3V0aGZ1bCBob3NlLCB3ZWxsIHNhdmVkLCBhIHdvcmxkIHRvbyB3aWRlCisJRm9yIGhpcyBzaHJ1bmsgc2hhbms7IGFuZCBoaXMgYmlnIG1hbmx5IHZvaWNlLAorCVR1cm5pbmcgYWdhaW4gdG93YXJkIGNoaWxkaXNoIHRyZWJsZSwgcGlwZXMKKwlBbmQgd2hpc3RsZXMgaW4gaGlzIHNvdW5kLiBMYXN0IHNjZW5lIG9mIGFsbCwKKwlUaGF0IGVuZHMgdGhpcyBzdHJhbmdlIGV2ZW50ZnVsIGhpc3RvcnksCisJSXMgc2Vjb25kIGNoaWxkaXNobmVzcyBhbmQgbWVyZSBvYmxpdmlvbiwKKwlTYW5zIHRlZXRoLCBzYW5zIGV5ZXMsIHNhbnMgdGFzdGUsIHNhbnMgZXZlcnl0aGluZy4KKworCVtSZS1lbnRlciBPUkxBTkRPLCB3aXRoIEFEQU1dCisKK0RVS0UgU0VOSU9SCVdlbGNvbWUuIFNldCBkb3duIHlvdXIgdmVuZXJhYmxlIGJ1cnRoZW4sCisJQW5kIGxldCBoaW0gZmVlZC4KKworT1JMQU5ETwlJIHRoYW5rIHlvdSBtb3N0IGZvciBoaW0uCisKK0FEQU0JU28gaGFkIHlvdSBuZWVkOgorCUkgc2NhcmNlIGNhbiBzcGVhayB0byB0aGFuayB5b3UgZm9yIG15c2VsZi4KKworRFVLRSBTRU5JT1IJV2VsY29tZTsgZmFsbCB0bzogSSB3aWxsIG5vdCB0cm91YmxlIHlvdQorCUFzIHlldCwgdG8gcXVlc3Rpb24geW91IGFib3V0IHlvdXIgZm9ydHVuZXMuCisJR2l2ZSB1cyBzb21lIG11c2ljOyBhbmQsIGdvb2QgY291c2luLCBzaW5nLgorCQorCVNPTkcuCitBTUlFTlMJQmxvdywgYmxvdywgdGhvdSB3aW50ZXIgd2luZC4KKwlUaG91IGFydCBub3Qgc28gdW5raW5kCisJQXMgbWFuJ3MgaW5ncmF0aXR1ZGU7CisJVGh5IHRvb3RoIGlzIG5vdCBzbyBrZWVuLAorCUJlY2F1c2UgdGhvdSBhcnQgbm90IHNlZW4sCisJQWx0aG91Z2ggdGh5IGJyZWF0aCBiZSBydWRlLgorCUhlaWdoLWhvISBzaW5nLCBoZWlnaC1obyEgdW50byB0aGUgZ3JlZW4gaG9sbHk6CisJTW9zdCBmcmllbmRzaGlwIGlzIGZlaWduaW5nLCBtb3N0IGxvdmluZyBtZXJlIGZvbGx5OgorCVRoZW4sIGhlaWdoLWhvLCB0aGUgaG9sbHkhCisJVGhpcyBsaWZlIGlzIG1vc3Qgam9sbHkuCisJRnJlZXplLCBmcmVlemUsIHRob3UgYml0dGVyIHNreSwKKwlUaGF0IGRvc3Qgbm90IGJpdGUgc28gbmlnaAorCUFzIGJlbmVmaXRzIGZvcmdvdDoKKwlUaG91Z2ggdGhvdSB0aGUgd2F0ZXJzIHdhcnAsCisJVGh5IHN0aW5nIGlzIG5vdCBzbyBzaGFycAorCUFzIGZyaWVuZCByZW1lbWJlcidkIG5vdC4KKwlIZWlnaC1obyEgc2luZywgJmMuCisKK0RVS0UgU0VOSU9SCUlmIHRoYXQgeW91IHdlcmUgdGhlIGdvb2QgU2lyIFJvd2xhbmQncyBzb24sCisJQXMgeW91IGhhdmUgd2hpc3BlcidkIGZhaXRoZnVsbHkgeW91IHdlcmUsCisJQW5kIGFzIG1pbmUgZXllIGRvdGggaGlzIGVmZmlnaWVzIHdpdG5lc3MKKwlNb3N0IHRydWx5IGxpbW4nZCBhbmQgbGl2aW5nIGluIHlvdXIgZmFjZSwKKwlCZSB0cnVseSB3ZWxjb21lIGhpdGhlcjogSSBhbSB0aGUgZHVrZQorCVRoYXQgbG92ZWQgeW91ciBmYXRoZXI6IHRoZSByZXNpZHVlIG9mIHlvdXIgZm9ydHVuZSwKKwlHbyB0byBteSBjYXZlIGFuZCB0ZWxsIG1lLiBHb29kIG9sZCBtYW4sCisJVGhvdSBhcnQgcmlnaHQgd2VsY29tZSBhcyB0aHkgbWFzdGVyIGlzLgorCVN1cHBvcnQgaGltIGJ5IHRoZSBhcm0uIEdpdmUgbWUgeW91ciBoYW5kLAorCUFuZCBsZXQgbWUgYWxsIHlvdXIgZm9ydHVuZXMgdW5kZXJzdGFuZC4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBJSUkKKworCisKK1NDRU5FIEkJQSByb29tIGluIHRoZSBwYWxhY2UuCisKKworCVtFbnRlciBEVUtFIEZSRURFUklDSywgTG9yZHMsIGFuZCBPTElWRVJdCisKK0RVS0UgRlJFREVSSUNLCU5vdCBzZWUgaGltIHNpbmNlPyBTaXIsIHNpciwgdGhhdCBjYW5ub3QgYmU6CisJQnV0IHdlcmUgSSBub3QgdGhlIGJldHRlciBwYXJ0IG1hZGUgbWVyY3ksCisJSSBzaG91bGQgbm90IHNlZWsgYW4gYWJzZW50IGFyZ3VtZW50CisJT2YgbXkgcmV2ZW5nZSwgdGhvdSBwcmVzZW50LiBCdXQgbG9vayB0byBpdDoKKwlGaW5kIG91dCB0aHkgYnJvdGhlciwgd2hlcmVzb2UnZXIgaGUgaXM7CisJU2VlayBoaW0gd2l0aCBjYW5kbGU7IGJyaW5nIGhpbSBkZWFkIG9yIGxpdmluZworCVdpdGhpbiB0aGlzIHR3ZWx2ZW1vbnRoLCBvciB0dXJuIHRob3Ugbm8gbW9yZQorCVRvIHNlZWsgYSBsaXZpbmcgaW4gb3VyIHRlcnJpdG9yeS4KKwlUaHkgbGFuZHMgYW5kIGFsbCB0aGluZ3MgdGhhdCB0aG91IGRvc3QgY2FsbCB0aGluZQorCVdvcnRoIHNlaXp1cmUgZG8gd2Ugc2VpemUgaW50byBvdXIgaGFuZHMsCisJVGlsbCB0aG91IGNhbnN0IHF1aXQgdGhlZSBieSB0aHkgYnJvdGhlcnMgbW91dGgKKwlPZiB3aGF0IHdlIHRoaW5rIGFnYWluc3QgdGhlZS4KKworT0xJVkVSCU8gdGhhdCB5b3VyIGhpZ2huZXNzIGtuZXcgbXkgaGVhcnQgaW4gdGhpcyEKKwlJIG5ldmVyIGxvdmVkIG15IGJyb3RoZXIgaW4gbXkgbGlmZS4KKworRFVLRSBGUkVERVJJQ0sJTW9yZSB2aWxsYWluIHRob3UuIFdlbGwsIHB1c2ggaGltIG91dCBvZiBkb29yczsKKwlBbmQgbGV0IG15IG9mZmljZXJzIG9mIHN1Y2ggYSBuYXR1cmUKKwlNYWtlIGFuIGV4dGVudCB1cG9uIGhpcyBob3VzZSBhbmQgbGFuZHM6CisJRG8gdGhpcyBleHBlZGllbnRseSBhbmQgdHVybiBoaW0gZ29pbmcuCisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSUlJCisKKworCitTQ0VORSBJSQlUaGUgZm9yZXN0LgorCisKKwlbRW50ZXIgT1JMQU5ETywgd2l0aCBhIHBhcGVyXQorCitPUkxBTkRPCUhhbmcgdGhlcmUsIG15IHZlcnNlLCBpbiB3aXRuZXNzIG9mIG15IGxvdmU6CisJQW5kIHRob3UsIHRocmljZS1jcm93bmVkIHF1ZWVuIG9mIG5pZ2h0LCBzdXJ2ZXkKKwlXaXRoIHRoeSBjaGFzdGUgZXllLCBmcm9tIHRoeSBwYWxlIHNwaGVyZSBhYm92ZSwKKwlUaHkgaHVudHJlc3MnIG5hbWUgdGhhdCBteSBmdWxsIGxpZmUgZG90aCBzd2F5LgorCU8gUm9zYWxpbmQhIHRoZXNlIHRyZWVzIHNoYWxsIGJlIG15IGJvb2tzCisJQW5kIGluIHRoZWlyIGJhcmtzIG15IHRob3VnaHRzIEknbGwgY2hhcmFjdGVyOworCVRoYXQgZXZlcnkgZXllIHdoaWNoIGluIHRoaXMgZm9yZXN0IGxvb2tzCisJU2hhbGwgc2VlIHRoeSB2aXJ0dWUgd2l0bmVzcydkIGV2ZXJ5IHdoZXJlLgorCVJ1biwgcnVuLCBPcmxhbmRvOyBjYXJ2ZSBvbiBldmVyeSB0cmVlCisJVGhlIGZhaXIsIHRoZSBjaGFzdGUgYW5kIHVuZXhwcmVzc2l2ZSBzaGUuCisKKwlbRXhpdF0KKworCVtFbnRlciBDT1JJTiBhbmQgVE9VQ0hTVE9ORV0KKworQ09SSU4JQW5kIGhvdyBsaWtlIHlvdSB0aGlzIHNoZXBoZXJkJ3MgbGlmZSwgTWFzdGVyIFRvdWNoc3RvbmU/CisKK1RPVUNIU1RPTkUJVHJ1bHksIHNoZXBoZXJkLCBpbiByZXNwZWN0IG9mIGl0c2VsZiwgaXQgaXMgYSBnb29kCisJbGlmZSwgYnV0IGluIHJlc3BlY3QgdGhhdCBpdCBpcyBhIHNoZXBoZXJkJ3MgbGlmZSwKKwlpdCBpcyBuYXVnaHQuIEluIHJlc3BlY3QgdGhhdCBpdCBpcyBzb2xpdGFyeSwgSQorCWxpa2UgaXQgdmVyeSB3ZWxsOyBidXQgaW4gcmVzcGVjdCB0aGF0IGl0IGlzCisJcHJpdmF0ZSwgaXQgaXMgYSB2ZXJ5IHZpbGUgbGlmZS4gTm93LCBpbiByZXNwZWN0IGl0CisJaXMgaW4gdGhlIGZpZWxkcywgaXQgcGxlYXNldGggbWUgd2VsbDsgYnV0IGluCisJcmVzcGVjdCBpdCBpcyBub3QgaW4gdGhlIGNvdXJ0LCBpdCBpcyB0ZWRpb3VzLiBBcworCWlzIGl0IGEgc3BhcmUgbGlmZSwgbG9vayB5b3UsIGl0IGZpdHMgbXkgaHVtb3VyIHdlbGw7CisJYnV0IGFzIHRoZXJlIGlzIG5vIG1vcmUgcGxlbnR5IGluIGl0LCBpdCBnb2VzIG11Y2gKKwlhZ2FpbnN0IG15IHN0b21hY2guIEhhc3QgYW55IHBoaWxvc29waHkgaW4gdGhlZSwgc2hlcGhlcmQ/CisKK0NPUklOCU5vIG1vcmUgYnV0IHRoYXQgSSBrbm93IHRoZSBtb3JlIG9uZSBzaWNrZW5zIHRoZQorCXdvcnNlIGF0IGVhc2UgaGUgaXM7IGFuZCB0aGF0IGhlIHRoYXQgd2FudHMgbW9uZXksCisJbWVhbnMgYW5kIGNvbnRlbnQgaXMgd2l0aG91dCB0aHJlZSBnb29kIGZyaWVuZHM7CisJdGhhdCB0aGUgcHJvcGVydHkgb2YgcmFpbiBpcyB0byB3ZXQgYW5kIGZpcmUgdG8KKwlidXJuOyB0aGF0IGdvb2QgcGFzdHVyZSBtYWtlcyBmYXQgc2hlZXAsIGFuZCB0aGF0IGEKKwlncmVhdCBjYXVzZSBvZiB0aGUgbmlnaHQgaXMgbGFjayBvZiB0aGUgc3VuOyB0aGF0CisJaGUgdGhhdCBoYXRoIGxlYXJuZWQgbm8gd2l0IGJ5IG5hdHVyZSBub3IgYXJ0IG1heQorCWNvbXBsYWluIG9mIGdvb2QgYnJlZWRpbmcgb3IgY29tZXMgb2YgYSB2ZXJ5IGR1bGwga2luZHJlZC4KKworVE9VQ0hTVE9ORQlTdWNoIGEgb25lIGlzIGEgbmF0dXJhbCBwaGlsb3NvcGhlci4gV2FzdCBldmVyIGluCisJY291cnQsIHNoZXBoZXJkPworCitDT1JJTglObywgdHJ1bHkuCisKK1RPVUNIU1RPTkUJVGhlbiB0aG91IGFydCBkYW1uZWQuCisKK0NPUklOCU5heSwgSSBob3BlLgorCitUT1VDSFNUT05FCVRydWx5LCB0aG91IGFydCBkYW1uZWQgbGlrZSBhbiBpbGwtcm9hc3RlZCBlZ2csIGFsbAorCW9uIG9uZSBzaWRlLgorCitDT1JJTglGb3Igbm90IGJlaW5nIGF0IGNvdXJ0PyBZb3VyIHJlYXNvbi4KKworVE9VQ0hTVE9ORQlXaHksIGlmIHRob3UgbmV2ZXIgd2FzdCBhdCBjb3VydCwgdGhvdSBuZXZlciBzYXdlc3QKKwlnb29kIG1hbm5lcnM7IGlmIHRob3UgbmV2ZXIgc2F3ZXN0IGdvb2QgbWFubmVycywKKwl0aGVuIHRoeSBtYW5uZXJzIG11c3QgYmUgd2lja2VkOyBhbmQgd2lja2VkbmVzcyBpcworCXNpbiwgYW5kIHNpbiBpcyBkYW1uYXRpb24uIFRob3UgYXJ0IGluIGEgcGFybG91cworCXN0YXRlLCBzaGVwaGVyZC4KKworQ09SSU4JTm90IGEgd2hpdCwgVG91Y2hzdG9uZTogdGhvc2UgdGhhdCBhcmUgZ29vZCBtYW5uZXJzCisJYXQgdGhlIGNvdXJ0IGFyZSBhcyByaWRpY3Vsb3VzIGluIHRoZSBjb3VudHJ5IGFzIHRoZQorCWJlaGF2aW9yIG9mIHRoZSBjb3VudHJ5IGlzIG1vc3QgbW9ja2FibGUgYXQgdGhlCisJY291cnQuIFlvdSB0b2xkIG1lIHlvdSBzYWx1dGUgbm90IGF0IHRoZSBjb3VydCwgYnV0CisJeW91IGtpc3MgeW91ciBoYW5kczogdGhhdCBjb3VydGVzeSB3b3VsZCBiZQorCXVuY2xlYW5seSwgaWYgY291cnRpZXJzIHdlcmUgc2hlcGhlcmRzLgorCitUT1VDSFNUT05FCUluc3RhbmNlLCBicmllZmx5OyBjb21lLCBpbnN0YW5jZS4KKworQ09SSU4JV2h5LCB3ZSBhcmUgc3RpbGwgaGFuZGxpbmcgb3VyIGV3ZXMsIGFuZCB0aGVpcgorCWZlbGxzLCB5b3Uga25vdywgYXJlIGdyZWFzeS4KKworVE9VQ0hTVE9ORQlXaHksIGRvIG5vdCB5b3VyIGNvdXJ0aWVyJ3MgaGFuZHMgc3dlYXQ/IGFuZCBpcyBub3QKKwl0aGUgZ3JlYXNlIG9mIGEgbXV0dG9uIGFzIHdob2xlc29tZSBhcyB0aGUgc3dlYXQgb2YKKwlhIG1hbj8gU2hhbGxvdywgc2hhbGxvdy4gQSBiZXR0ZXIgaW5zdGFuY2UsIEkgc2F5OyBjb21lLgorCitDT1JJTglCZXNpZGVzLCBvdXIgaGFuZHMgYXJlIGhhcmQuCisKK1RPVUNIU1RPTkUJWW91ciBsaXBzIHdpbGwgZmVlbCB0aGVtIHRoZSBzb29uZXIuIFNoYWxsb3cgYWdhaW4uCisJQSBtb3JlIHNvdW5kZXIgaW5zdGFuY2UsIGNvbWUuCisKK0NPUklOCUFuZCB0aGV5IGFyZSBvZnRlbiB0YXJyZWQgb3ZlciB3aXRoIHRoZSBzdXJnZXJ5IG9mCisJb3VyIHNoZWVwOiBhbmQgd291bGQgeW91IGhhdmUgdXMga2lzcyB0YXI/IFRoZQorCWNvdXJ0aWVyJ3MgaGFuZHMgYXJlIHBlcmZ1bWVkIHdpdGggY2l2ZXQuCisKK1RPVUNIU1RPTkUJTW9zdCBzaGFsbG93IG1hbiEgdGhvdSB3b3Jtcy1tZWF0LCBpbiByZXNwZWN0IG9mIGEKKwlnb29kIHBpZWNlIG9mIGZsZXNoIGluZGVlZCEgTGVhcm4gb2YgdGhlIHdpc2UsIGFuZAorCXBlcnBlbmQ6IGNpdmV0IGlzIG9mIGEgYmFzZXIgYmlydGggdGhhbiB0YXIsIHRoZQorCXZlcnkgdW5jbGVhbmx5IGZsdXggb2YgYSBjYXQuIE1lbmQgdGhlIGluc3RhbmNlLCBzaGVwaGVyZC4KKworQ09SSU4JWW91IGhhdmUgdG9vIGNvdXJ0bHkgYSB3aXQgZm9yIG1lOiBJJ2xsIHJlc3QuCisKK1RPVUNIU1RPTkUJV2lsdCB0aG91IHJlc3QgZGFtbmVkPyBHb2QgaGVscCB0aGVlLCBzaGFsbG93IG1hbiEKKwlHb2QgbWFrZSBpbmNpc2lvbiBpbiB0aGVlISB0aG91IGFydCByYXcuCisKK0NPUklOCVNpciwgSSBhbSBhIHRydWUgbGFib3VyZXI6IEkgZWFybiB0aGF0IEkgZWF0LCBnZXQKKwl0aGF0IEkgd2Vhciwgb3dlIG5vIG1hbiBoYXRlLCBlbnZ5IG5vIG1hbidzCisJaGFwcGluZXNzLCBnbGFkIG9mIG90aGVyIG1lbidzIGdvb2QsIGNvbnRlbnQgd2l0aCBteQorCWhhcm0sIGFuZCB0aGUgZ3JlYXRlc3Qgb2YgbXkgcHJpZGUgaXMgdG8gc2VlIG15IGV3ZXMKKwlncmF6ZSBhbmQgbXkgbGFtYnMgc3Vjay4KKworVE9VQ0hTVE9ORQlUaGF0IGlzIGFub3RoZXIgc2ltcGxlIHNpbiBpbiB5b3UsIHRvIGJyaW5nIHRoZSBld2VzCisJYW5kIHRoZSByYW1zIHRvZ2V0aGVyIGFuZCB0byBvZmZlciB0byBnZXQgeW91cgorCWxpdmluZyBieSB0aGUgY29wdWxhdGlvbiBvZiBjYXR0bGU7IHRvIGJlIGJhd2QgdG8gYQorCWJlbGwtd2V0aGVyLCBhbmQgdG8gYmV0cmF5IGEgc2hlLWxhbWIgb2YgYQorCXR3ZWx2ZW1vbnRoIHRvIGEgY3Jvb2tlZC1wYXRlZCwgb2xkLCBjdWNrb2xkbHkgcmFtLAorCW91dCBvZiBhbGwgcmVhc29uYWJsZSBtYXRjaC4gSWYgdGhvdSBiZWVzdCBub3QKKwlkYW1uZWQgZm9yIHRoaXMsIHRoZSBkZXZpbCBoaW1zZWxmIHdpbGwgaGF2ZSBubworCXNoZXBoZXJkczsgSSBjYW5ub3Qgc2VlIGVsc2UgaG93IHRob3Ugc2hvdWxkc3QKKwknc2NhcGUuCisKK0NPUklOCUhlcmUgY29tZXMgeW91bmcgTWFzdGVyIEdhbnltZWRlLCBteSBuZXcgbWlzdHJlc3MncyBicm90aGVyLgorCisJW0VudGVyIFJPU0FMSU5ELCB3aXRoIGEgcGFwZXIsIHJlYWRpbmddCisKK1JPU0FMSU5ECSAgICAgRnJvbSB0aGUgZWFzdCB0byB3ZXN0ZXJuIEluZCwKKwlObyBqZXdlbCBpcyBsaWtlIFJvc2FsaW5kLgorCUhlciB3b3J0aCwgYmVpbmcgbW91bnRlZCBvbiB0aGUgd2luZCwKKwlUaHJvdWdoIGFsbCB0aGUgd29ybGQgYmVhcnMgUm9zYWxpbmQuCisJQWxsIHRoZSBwaWN0dXJlcyBmYWlyZXN0IGxpbmVkCisJQXJlIGJ1dCBibGFjayB0byBSb3NhbGluZC4KKwlMZXQgbm8gZmFpciBiZSBrZXB0IGluIG1pbmQKKwlCdXQgdGhlIGZhaXIgb2YgUm9zYWxpbmQuCisKK1RPVUNIU1RPTkUJSSdsbCByaHltZSB5b3Ugc28gZWlnaHQgeWVhcnMgdG9nZXRoZXIsIGRpbm5lcnMgYW5kCisJc3VwcGVycyBhbmQgc2xlZXBpbmctaG91cnMgZXhjZXB0ZWQ6IGl0IGlzIHRoZQorCXJpZ2h0IGJ1dHRlci13b21lbidzIHJhbmsgdG8gbWFya2V0LgorCitST1NBTElORAlPdXQsIGZvb2whCisKK1RPVUNIU1RPTkUJRm9yIGEgdGFzdGU6CisJSWYgYSBoYXJ0IGRvIGxhY2sgYSBoaW5kLAorCUxldCBoaW0gc2VlayBvdXQgUm9zYWxpbmQuCisJSWYgdGhlIGNhdCB3aWxsIGFmdGVyIGtpbmQsCisJU28gYmUgc3VyZSB3aWxsIFJvc2FsaW5kLgorCVdpbnRlciBnYXJtZW50cyBtdXN0IGJlIGxpbmVkLAorCVNvIG11c3Qgc2xlbmRlciBSb3NhbGluZC4KKwlUaGV5IHRoYXQgcmVhcCBtdXN0IHNoZWFmIGFuZCBiaW5kOworCVRoZW4gdG8gY2FydCB3aXRoIFJvc2FsaW5kLgorCVN3ZWV0ZXN0IG51dCBoYXRoIHNvdXJlc3QgcmluZCwKKwlTdWNoIGEgbnV0IGlzIFJvc2FsaW5kLgorCUhlIHRoYXQgc3dlZXRlc3Qgcm9zZSB3aWxsIGZpbmQKKwlNdXN0IGZpbmQgbG92ZSdzIHByaWNrIGFuZCBSb3NhbGluZC4KKwlUaGlzIGlzIHRoZSB2ZXJ5IGZhbHNlIGdhbGxvcCBvZiB2ZXJzZXM6IHdoeSBkbyB5b3UKKwlpbmZlY3QgeW91cnNlbGYgd2l0aCB0aGVtPworCitST1NBTElORAlQZWFjZSwgeW91IGR1bGwgZm9vbCEgSSBmb3VuZCB0aGVtIG9uIGEgdHJlZS4KKworVE9VQ0hTVE9ORQlUcnVseSwgdGhlIHRyZWUgeWllbGRzIGJhZCBmcnVpdC4KKworUk9TQUxJTkQJSSdsbCBncmFmZiBpdCB3aXRoIHlvdSwgYW5kIHRoZW4gSSBzaGFsbCBncmFmZiBpdAorCXdpdGggYSBtZWRsYXI6IHRoZW4gaXQgd2lsbCBiZSB0aGUgZWFybGllc3QgZnJ1aXQKKwlpJyB0aGUgY291bnRyeTsgZm9yIHlvdSdsbCBiZSByb3R0ZW4gZXJlIHlvdSBiZSBoYWxmCisJcmlwZSwgYW5kIHRoYXQncyB0aGUgcmlnaHQgdmlydHVlIG9mIHRoZSBtZWRsYXIuCisKK1RPVUNIU1RPTkUJWW91IGhhdmUgc2FpZDsgYnV0IHdoZXRoZXIgd2lzZWx5IG9yIG5vLCBsZXQgdGhlCisJZm9yZXN0IGp1ZGdlLgorCisJW0VudGVyIENFTElBLCB3aXRoIGEgd3JpdGluZ10KKworUk9TQUxJTkQJUGVhY2UhIEhlcmUgY29tZXMgbXkgc2lzdGVyLCByZWFkaW5nOiBzdGFuZCBhc2lkZS4KKworQ0VMSUEJW1JlYWRzXQorCisJV2h5IHNob3VsZCB0aGlzIGEgZGVzZXJ0IGJlPworCUZvciBpdCBpcyB1bnBlb3BsZWQ/IE5vOgorCVRvbmd1ZXMgSSdsbCBoYW5nIG9uIGV2ZXJ5IHRyZWUsCisJVGhhdCBzaGFsbCBjaXZpbCBzYXlpbmdzIHNob3c6CisJU29tZSwgaG93IGJyaWVmIHRoZSBsaWZlIG9mIG1hbgorCVJ1bnMgaGlzIGVycmluZyBwaWxncmltYWdlLAorCVRoYXQgdGhlIHN0cmV0Y2hpbmcgb2YgYSBzcGFuCisJQnVja2xlcyBpbiBoaXMgc3VtIG9mIGFnZTsKKwlTb21lLCBvZiB2aW9sYXRlZCB2b3dzCisJJ1R3aXh0IHRoZSBzb3VscyBvZiBmcmllbmQgYW5kIGZyaWVuZDoKKwlCdXQgdXBvbiB0aGUgZmFpcmVzdCBib3VnaHMsCisJT3IgYXQgZXZlcnkgc2VudGVuY2UgZW5kLAorCVdpbGwgSSBSb3NhbGluZGEgd3JpdGUsCisJVGVhY2hpbmcgYWxsIHRoYXQgcmVhZCB0byBrbm93CisJVGhlIHF1aW50ZXNzZW5jZSBvZiBldmVyeSBzcHJpdGUKKwlIZWF2ZW4gd291bGQgaW4gbGl0dGxlIHNob3cuCisJVGhlcmVmb3JlIEhlYXZlbiBOYXR1cmUgY2hhcmdlZAorCVRoYXQgb25lIGJvZHkgc2hvdWxkIGJlIGZpbGwnZAorCVdpdGggYWxsIGdyYWNlcyB3aWRlLWVubGFyZ2VkOgorCU5hdHVyZSBwcmVzZW50bHkgZGlzdGlsbCdkCisJSGVsZW4ncyBjaGVlaywgYnV0IG5vdCBoZXIgaGVhcnQsCisJQ2xlb3BhdHJhJ3MgbWFqZXN0eSwKKwlBdGFsYW50YSdzIGJldHRlciBwYXJ0LAorCVNhZCBMdWNyZXRpYSdzIG1vZGVzdHkuCisJVGh1cyBSb3NhbGluZCBvZiBtYW55IHBhcnRzCisJQnkgaGVhdmVubHkgc3lub2Qgd2FzIGRldmlzZWQsCisJT2YgbWFueSBmYWNlcywgZXllcyBhbmQgaGVhcnRzLAorCVRvIGhhdmUgdGhlIHRvdWNoZXMgZGVhcmVzdCBwcml6ZWQuCisJSGVhdmVuIHdvdWxkIHRoYXQgc2hlIHRoZXNlIGdpZnRzIHNob3VsZCBoYXZlLAorCUFuZCBJIHRvIGxpdmUgYW5kIGRpZSBoZXIgc2xhdmUuCisKK1JPU0FMSU5ECU8gbW9zdCBnZW50bGUgcHVscGl0ZXIhIHdoYXQgdGVkaW91cyBob21pbHkgb2YgbG92ZQorCWhhdmUgeW91IHdlYXJpZWQgeW91ciBwYXJpc2hpb25lcnMgd2l0aGFsLCBhbmQgbmV2ZXIKKwljcmllZCAnSGF2ZSBwYXRpZW5jZSwgZ29vZCBwZW9wbGUhJworCitDRUxJQQlIb3cgbm93ISBiYWNrLCBmcmllbmRzISBTaGVwaGVyZCwgZ28gb2ZmIGEgbGl0dGxlLgorCUdvIHdpdGggaGltLCBzaXJyYWguCisKK1RPVUNIU1RPTkUJQ29tZSwgc2hlcGhlcmQsIGxldCB1cyBtYWtlIGFuIGhvbm91cmFibGUgcmV0cmVhdDsKKwl0aG91Z2ggbm90IHdpdGggYmFnIGFuZCBiYWdnYWdlLCB5ZXQgd2l0aCBzY3JpcCBhbmQgc2NyaXBwYWdlLgorCisJW0V4ZXVudCBDT1JJTiBhbmQgVE9VQ0hTVE9ORV0KKworQ0VMSUEJRGlkc3QgdGhvdSBoZWFyIHRoZXNlIHZlcnNlcz8KKworUk9TQUxJTkQJTywgeWVzLCBJIGhlYXJkIHRoZW0gYWxsLCBhbmQgbW9yZSB0b287IGZvciBzb21lIG9mCisJdGhlbSBoYWQgaW4gdGhlbSBtb3JlIGZlZXQgdGhhbiB0aGUgdmVyc2VzIHdvdWxkIGJlYXIuCisKK0NFTElBCVRoYXQncyBubyBtYXR0ZXI6IHRoZSBmZWV0IG1pZ2h0IGJlYXIgdGhlIHZlcnNlcy4KKworUk9TQUxJTkQJQXksIGJ1dCB0aGUgZmVldCB3ZXJlIGxhbWUgYW5kIGNvdWxkIG5vdCBiZWFyCisJdGhlbXNlbHZlcyB3aXRob3V0IHRoZSB2ZXJzZSBhbmQgdGhlcmVmb3JlIHN0b29kCisJbGFtZWx5IGluIHRoZSB2ZXJzZS4KKworQ0VMSUEJQnV0IGRpZHN0IHRob3UgaGVhciB3aXRob3V0IHdvbmRlcmluZyBob3cgdGh5IG5hbWUKKwlzaG91bGQgYmUgaGFuZ2VkIGFuZCBjYXJ2ZWQgdXBvbiB0aGVzZSB0cmVlcz8KKworUk9TQUxJTkQJSSB3YXMgc2V2ZW4gb2YgdGhlIG5pbmUgZGF5cyBvdXQgb2YgdGhlIHdvbmRlcgorCWJlZm9yZSB5b3UgY2FtZTsgZm9yIGxvb2sgaGVyZSB3aGF0IEkgZm91bmQgb24gYQorCXBhbG0tdHJlZS4gSSB3YXMgbmV2ZXIgc28gYmUtcmh5bWVkIHNpbmNlCisJUHl0aGFnb3JhcycgdGltZSwgdGhhdCBJIHdhcyBhbiBJcmlzaCByYXQsIHdoaWNoIEkKKwljYW4gaGFyZGx5IHJlbWVtYmVyLgorCitDRUxJQQlUcm93IHlvdSB3aG8gaGF0aCBkb25lIHRoaXM/CisKK1JPU0FMSU5ECUlzIGl0IGEgbWFuPworCitDRUxJQQlBbmQgYSBjaGFpbiwgdGhhdCB5b3Ugb25jZSB3b3JlLCBhYm91dCBoaXMgbmVjay4KKwlDaGFuZ2UgeW91IGNvbG91cj8KKworUk9TQUxJTkQJSSBwcml0aGVlLCB3aG8/CisKK0NFTElBCU8gTG9yZCwgTG9yZCEgaXQgaXMgYSBoYXJkIG1hdHRlciBmb3IgZnJpZW5kcyB0bworCW1lZXQ7IGJ1dCBtb3VudGFpbnMgbWF5IGJlIHJlbW92ZWQgd2l0aCBlYXJ0aHF1YWtlcworCWFuZCBzbyBlbmNvdW50ZXIuCisKK1JPU0FMSU5ECU5heSwgYnV0IHdobyBpcyBpdD8KKworQ0VMSUEJSXMgaXQgcG9zc2libGU/CisKK1JPU0FMSU5ECU5heSwgSSBwcml0aGVlIG5vdyB3aXRoIG1vc3QgcGV0aXRpb25hcnkgdmVoZW1lbmNlLAorCXRlbGwgbWUgd2hvIGl0IGlzLgorCitDRUxJQQlPIHdvbmRlcmZ1bCwgd29uZGVyZnVsLCBhbmQgbW9zdCB3b25kZXJmdWwKKwl3b25kZXJmdWwhIGFuZCB5ZXQgYWdhaW4gd29uZGVyZnVsLCBhbmQgYWZ0ZXIgdGhhdCwKKwlvdXQgb2YgYWxsIGhvb3BpbmchCisKK1JPU0FMSU5ECUdvb2QgbXkgY29tcGxleGlvbiEgZG9zdCB0aG91IHRoaW5rLCB0aG91Z2ggSSBhbQorCWNhcGFyaXNvbmVkIGxpa2UgYSBtYW4sIEkgaGF2ZSBhIGRvdWJsZXQgYW5kIGhvc2UgaW4KKwlteSBkaXNwb3NpdGlvbj8gT25lIGluY2ggb2YgZGVsYXkgbW9yZSBpcyBhCisJU291dGgtc2VhIG9mIGRpc2NvdmVyeTsgSSBwcml0aGVlLCB0ZWxsIG1lIHdobyBpcyBpdAorCXF1aWNrbHksIGFuZCBzcGVhayBhcGFjZS4gSSB3b3VsZCB0aG91IGNvdWxkc3QKKwlzdGFtbWVyLCB0aGF0IHRob3UgbWlnaHRzdCBwb3VyIHRoaXMgY29uY2VhbGVkIG1hbgorCW91dCBvZiB0aHkgbW91dGgsIGFzIHdpbmUgY29tZXMgb3V0IG9mIGEgbmFycm93LQorCW1vdXRoZWQgYm90dGxlLCBlaXRoZXIgdG9vIG11Y2ggYXQgb25jZSwgb3Igbm9uZSBhdAorCWFsbC4gSSBwcml0aGVlLCB0YWtlIHRoZSBjb3JrIG91dCBvZiB0aHkgbW91dGggdGhhdAorCW1heSBkcmluayB0aHkgdGlkaW5ncy4KKworQ0VMSUEJU28geW91IG1heSBwdXQgYSBtYW4gaW4geW91ciBiZWxseS4KKworUk9TQUxJTkQJSXMgaGUgb2YgR29kJ3MgbWFraW5nPyBXaGF0IG1hbm5lciBvZiBtYW4/IElzIGhpcworCWhlYWQgd29ydGggYSBoYXQsIG9yIGhpcyBjaGluIHdvcnRoIGEgYmVhcmQ/CisKK0NFTElBCU5heSwgaGUgaGF0aCBidXQgYSBsaXR0bGUgYmVhcmQuCisKK1JPU0FMSU5ECVdoeSwgR29kIHdpbGwgc2VuZCBtb3JlLCBpZiB0aGUgbWFuIHdpbGwgYmUKKwl0aGFua2Z1bDogbGV0IG1lIHN0YXkgdGhlIGdyb3d0aCBvZiBoaXMgYmVhcmQsIGlmCisJdGhvdSBkZWxheSBtZSBub3QgdGhlIGtub3dsZWRnZSBvZiBoaXMgY2hpbi4KKworQ0VMSUEJSXQgaXMgeW91bmcgT3JsYW5kbywgdGhhdCB0cmlwcGVkIHVwIHRoZSB3cmVzdGxlcidzCisJaGVlbHMgYW5kIHlvdXIgaGVhcnQgYm90aCBpbiBhbiBpbnN0YW50LgorCitST1NBTElORAlOYXksIGJ1dCB0aGUgZGV2aWwgdGFrZSBtb2NraW5nOiBzcGVhaywgc2FkIGJyb3cgYW5kCisJdHJ1ZSBtYWlkLgorCitDRUxJQQlJJyBmYWl0aCwgY296LCAndGlzIGhlLgorCitST1NBTElORAlPcmxhbmRvPworCitDRUxJQQlPcmxhbmRvLgorCitST1NBTElORAlBbGFzIHRoZSBkYXkhIHdoYXQgc2hhbGwgSSBkbyB3aXRoIG15IGRvdWJsZXQgYW5kCisJaG9zZT8gV2hhdCBkaWQgaGUgd2hlbiB0aG91IHNhd2VzdCBoaW0/IFdoYXQgc2FpZAorCWhlPyBIb3cgbG9va2VkIGhlPyBXaGVyZWluIHdlbnQgaGU/IFdoYXQgbWFrZXMKKwloaW0gaGVyZT8gRGlkIGhlIGFzayBmb3IgbWU/IFdoZXJlIHJlbWFpbnMgaGU/CisJSG93IHBhcnRlZCBoZSB3aXRoIHRoZWU/IGFuZCB3aGVuIHNoYWx0IHRob3Ugc2VlCisJaGltIGFnYWluPyBBbnN3ZXIgbWUgaW4gb25lIHdvcmQuCisKK0NFTElBCVlvdSBtdXN0IGJvcnJvdyBtZSBHYXJnYW50dWEncyBtb3V0aCBmaXJzdDogJ3RpcyBhCisJd29yZCB0b28gZ3JlYXQgZm9yIGFueSBtb3V0aCBvZiB0aGlzIGFnZSdzIHNpemUuIFRvCisJc2F5IGF5IGFuZCBubyB0byB0aGVzZSBwYXJ0aWN1bGFycyBpcyBtb3JlIHRoYW4gdG8KKwlhbnN3ZXIgaW4gYSBjYXRlY2hpc20uCisKK1JPU0FMSU5ECUJ1dCBkb3RoIGhlIGtub3cgdGhhdCBJIGFtIGluIHRoaXMgZm9yZXN0IGFuZCBpbgorCW1hbidzIGFwcGFyZWw/IExvb2tzIGhlIGFzIGZyZXNobHkgYXMgaGUgZGlkIHRoZQorCWRheSBoZSB3cmVzdGxlZD8KKworQ0VMSUEJSXQgaXMgYXMgZWFzeSB0byBjb3VudCBhdG9taWVzIGFzIHRvIHJlc29sdmUgdGhlCisJcHJvcG9zaXRpb25zIG9mIGEgbG92ZXI7IGJ1dCB0YWtlIGEgdGFzdGUgb2YgbXkKKwlmaW5kaW5nIGhpbSwgYW5kIHJlbGlzaCBpdCB3aXRoIGdvb2Qgb2JzZXJ2YW5jZS4KKwlJIGZvdW5kIGhpbSB1bmRlciBhIHRyZWUsIGxpa2UgYSBkcm9wcGVkIGFjb3JuLgorCitST1NBTElORAlJdCBtYXkgd2VsbCBiZSBjYWxsZWQgSm92ZSdzIHRyZWUsIHdoZW4gaXQgZHJvcHMKKwlmb3J0aCBzdWNoIGZydWl0LgorCitDRUxJQQlHaXZlIG1lIGF1ZGllbmNlLCBnb29kIG1hZGFtLgorCitST1NBTElORAlQcm9jZWVkLgorCitDRUxJQQlUaGVyZSBsYXkgaGUsIHN0cmV0Y2hlZCBhbG9uZywgbGlrZSBhIHdvdW5kZWQga25pZ2h0LgorCitST1NBTElORAlUaG91Z2ggaXQgYmUgcGl0eSB0byBzZWUgc3VjaCBhIHNpZ2h0LCBpdCB3ZWxsCisJYmVjb21lcyB0aGUgZ3JvdW5kLgorCitDRUxJQQlDcnkgJ2hvbGxhJyB0byB0aHkgdG9uZ3VlLCBJIHByaXRoZWU7IGl0IGN1cnZldHMKKwl1bnNlYXNvbmFibHkuIEhlIHdhcyBmdXJuaXNoZWQgbGlrZSBhIGh1bnRlci4KKworUk9TQUxJTkQJTywgb21pbm91cyEgaGUgY29tZXMgdG8ga2lsbCBteSBoZWFydC4KKworQ0VMSUEJSSB3b3VsZCBzaW5nIG15IHNvbmcgd2l0aG91dCBhIGJ1cmRlbjogdGhvdSBicmluZ2VzdAorCW1lIG91dCBvZiB0dW5lLgorCitST1NBTElORAlEbyB5b3Ugbm90IGtub3cgSSBhbSBhIHdvbWFuPyB3aGVuIEkgdGhpbmssIEkgbXVzdAorCXNwZWFrLiBTd2VldCwgc2F5IG9uLgorCitDRUxJQQlZb3UgYnJpbmcgbWUgb3V0LiBTb2Z0ISBjb21lcyBoZSBub3QgaGVyZT8KKworCVtFbnRlciBPUkxBTkRPIGFuZCBKQVFVRVNdCisKK1JPU0FMSU5ECSdUaXMgaGU6IHNsaW5rIGJ5LCBhbmQgbm90ZSBoaW0uCisKK0pBUVVFUwlJIHRoYW5rIHlvdSBmb3IgeW91ciBjb21wYW55OyBidXQsIGdvb2QgZmFpdGgsIEkgaGFkCisJYXMgbGllZiBoYXZlIGJlZW4gbXlzZWxmIGFsb25lLgorCitPUkxBTkRPCUFuZCBzbyBoYWQgSTsgYnV0IHlldCwgZm9yIGZhc2hpb24gc2FrZSwgSSB0aGFuayB5b3UKKwl0b28gZm9yIHlvdXIgc29jaWV0eS4KKworSkFRVUVTCUdvZCBiZSB3aScgeW91OiBsZXQncyBtZWV0IGFzIGxpdHRsZSBhcyB3ZSBjYW4uCisKK09STEFORE8JSSBkbyBkZXNpcmUgd2UgbWF5IGJlIGJldHRlciBzdHJhbmdlcnMuCisKK0pBUVVFUwlJIHByYXkgeW91LCBtYXIgbm8gbW9yZSB0cmVlcyB3aXRoIHdyaXRpbmcKKwlsb3ZlLXNvbmdzIGluIHRoZWlyIGJhcmtzLgorCitPUkxBTkRPCUkgcHJheSB5b3UsIG1hciBubyBtb3JlIG9mIG15IHZlcnNlcyB3aXRoIHJlYWRpbmcKKwl0aGVtIGlsbC1mYXZvdXJlZGx5LgorCitKQVFVRVMJUm9zYWxpbmQgaXMgeW91ciBsb3ZlJ3MgbmFtZT8KKworT1JMQU5ETwlZZXMsIGp1c3QuCisKK0pBUVVFUwlJIGRvIG5vdCBsaWtlIGhlciBuYW1lLgorCitPUkxBTkRPCVRoZXJlIHdhcyBubyB0aG91Z2h0IG9mIHBsZWFzaW5nIHlvdSB3aGVuIHNoZSB3YXMKKwljaHJpc3RlbmVkLgorCitKQVFVRVMJV2hhdCBzdGF0dXJlIGlzIHNoZSBvZj8KKworT1JMQU5ETwlKdXN0IGFzIGhpZ2ggYXMgbXkgaGVhcnQuCisKK0pBUVVFUwlZb3UgYXJlIGZ1bGwgb2YgcHJldHR5IGFuc3dlcnMuIEhhdmUgeW91IG5vdCBiZWVuCisJYWNxdWFpbnRlZCB3aXRoIGdvbGRzbWl0aHMnIHdpdmVzLCBhbmQgY29ubmVkIHRoZW0KKwlvdXQgb2YgcmluZ3M/CisKK09STEFORE8JTm90IHNvOyBidXQgSSBhbnN3ZXIgeW91IHJpZ2h0IHBhaW50ZWQgY2xvdGgsIGZyb20KKwl3aGVuY2UgeW91IGhhdmUgc3R1ZGllZCB5b3VyIHF1ZXN0aW9ucy4KKworSkFRVUVTCVlvdSBoYXZlIGEgbmltYmxlIHdpdDogSSB0aGluayAndHdhcyBtYWRlIG9mCisJQXRhbGFudGEncyBoZWVscy4gV2lsbCB5b3Ugc2l0IGRvd24gd2l0aCBtZT8gYW5kCisJd2UgdHdvIHdpbGwgcmFpbCBhZ2FpbnN0IG91ciBtaXN0cmVzcyB0aGUgd29ybGQgYW5kCisJYWxsIG91ciBtaXNlcnkuCisKK09STEFORE8JSSB3aWxsIGNoaWRlIG5vIGJyZWF0aGVyIGluIHRoZSB3b3JsZCBidXQgbXlzZWxmLAorCWFnYWluc3Qgd2hvbSBJIGtub3cgbW9zdCBmYXVsdHMuCisKK0pBUVVFUwlUaGUgd29yc3QgZmF1bHQgeW91IGhhdmUgaXMgdG8gYmUgaW4gbG92ZS4KKworT1JMQU5ETwknVGlzIGEgZmF1bHQgSSB3aWxsIG5vdCBjaGFuZ2UgZm9yIHlvdXIgYmVzdCB2aXJ0dWUuCisJSSBhbSB3ZWFyeSBvZiB5b3UuCisKK0pBUVVFUwlCeSBteSB0cm90aCwgSSB3YXMgc2Vla2luZyBmb3IgYSBmb29sIHdoZW4gSSBmb3VuZAorCXlvdS4KKworT1JMQU5ETwlIZSBpcyBkcm93bmVkIGluIHRoZSBicm9vazogbG9vayBidXQgaW4sIGFuZCB5b3UKKwlzaGFsbCBzZWUgaGltLgorCitKQVFVRVMJVGhlcmUgSSBzaGFsbCBzZWUgbWluZSBvd24gZmlndXJlLgorCitPUkxBTkRPCVdoaWNoIEkgdGFrZSB0byBiZSBlaXRoZXIgYSBmb29sIG9yIGEgY2lwaGVyLgorCitKQVFVRVMJSSdsbCB0YXJyeSBubyBsb25nZXIgd2l0aCB5b3U6IGZhcmV3ZWxsLCBnb29kCisJU2lnbmlvciBMb3ZlLgorCitPUkxBTkRPCUkgYW0gZ2xhZCBvZiB5b3VyIGRlcGFydHVyZTogYWRpZXUsIGdvb2QgTW9uc2lldXIKKwlNZWxhbmNob2x5LgorCisJW0V4aXQgSkFRVUVTXQorCitST1NBTElORAlbQXNpZGUgdG8gQ0VMSUFdICBJIHdpbGwgc3BlYWsgdG8gaGltLCBsaWtlIGEgc2F1Y3kKKwlsYWNrZXkgYW5kIHVuZGVyIHRoYXQgaGFiaXQgcGxheSB0aGUga25hdmUgd2l0aCBoaW0uCisJRG8geW91IGhlYXIsIGZvcmVzdGVyPworCitPUkxBTkRPCVZlcnkgd2VsbDogd2hhdCB3b3VsZCB5b3U/CisKK1JPU0FMSU5ECUkgcHJheSB5b3UsIHdoYXQgaXMndCBvJ2Nsb2NrPworCitPUkxBTkRPCVlvdSBzaG91bGQgYXNrIG1lIHdoYXQgdGltZSBvJyBkYXk6IHRoZXJlJ3Mgbm8gY2xvY2sKKwlpbiB0aGUgZm9yZXN0LgorCitST1NBTElORAlUaGVuIHRoZXJlIGlzIG5vIHRydWUgbG92ZXIgaW4gdGhlIGZvcmVzdDsgZWxzZQorCXNpZ2hpbmcgZXZlcnkgbWludXRlIGFuZCBncm9hbmluZyBldmVyeSBob3VyIHdvdWxkCisJZGV0ZWN0IHRoZSBsYXp5IGZvb3Qgb2YgVGltZSBhcyB3ZWxsIGFzIGEgY2xvY2suCisKK09STEFORE8JQW5kIHdoeSBub3QgdGhlIHN3aWZ0IGZvb3Qgb2YgVGltZT8gaGFkIG5vdCB0aGF0CisJYmVlbiBhcyBwcm9wZXI/CisKK1JPU0FMSU5ECUJ5IG5vIG1lYW5zLCBzaXI6IFRpbWUgdHJhdmVscyBpbiBkaXZlcnMgcGFjZXMgd2l0aAorCWRpdmVycyBwZXJzb25zLiBJJ2xsIHRlbGwgeW91IHdobyBUaW1lIGFtYmxlcworCXdpdGhhbCwgd2hvIFRpbWUgdHJvdHMgd2l0aGFsLCB3aG8gVGltZSBnYWxsb3BzCisJd2l0aGFsIGFuZCB3aG8gaGUgc3RhbmRzIHN0aWxsIHdpdGhhbC4KKworT1JMQU5ETwlJIHByaXRoZWUsIHdobyBkb3RoIGhlIHRyb3Qgd2l0aGFsPworCitST1NBTElORAlNYXJyeSwgaGUgdHJvdHMgaGFyZCB3aXRoIGEgeW91bmcgbWFpZCBiZXR3ZWVuIHRoZQorCWNvbnRyYWN0IG9mIGhlciBtYXJyaWFnZSBhbmQgdGhlIGRheSBpdCBpcworCXNvbGVtbml6ZWQ6IGlmIHRoZSBpbnRlcmltIGJlIGJ1dCBhIHNlJ25uaWdodCwKKwlUaW1lJ3MgcGFjZSBpcyBzbyBoYXJkIHRoYXQgaXQgc2VlbXMgdGhlIGxlbmd0aCBvZgorCXNldmVuIHllYXIuCisKK09STEFORE8JV2hvIGFtYmxlcyBUaW1lIHdpdGhhbD8KKworUk9TQUxJTkQJV2l0aCBhIHByaWVzdCB0aGF0IGxhY2tzIExhdGluIGFuZCBhIHJpY2ggbWFuIHRoYXQKKwloYXRoIG5vdCB0aGUgZ291dCwgZm9yIHRoZSBvbmUgc2xlZXBzIGVhc2lseSBiZWNhdXNlCisJaGUgY2Fubm90IHN0dWR5LCBhbmQgdGhlIG90aGVyIGxpdmVzIG1lcnJpbHkgYmVjYXVzZQorCWhlIGZlZWxzIG5vIHBhaW4sIHRoZSBvbmUgbGFja2luZyB0aGUgYnVyZGVuIG9mIGxlYW4KKwlhbmQgd2FzdGVmdWwgbGVhcm5pbmcsIHRoZSBvdGhlciBrbm93aW5nIG5vIGJ1cmRlbgorCW9mIGhlYXZ5IHRlZGlvdXMgcGVudXJ5OyB0aGVzZSBUaW1lIGFtYmxlcyB3aXRoYWwuCisKK09STEFORE8JV2hvIGRvdGggaGUgZ2FsbG9wIHdpdGhhbD8KKworUk9TQUxJTkQJV2l0aCBhIHRoaWVmIHRvIHRoZSBnYWxsb3dzLCBmb3IgdGhvdWdoIGhlIGdvIGFzCisJc29mdGx5IGFzIGZvb3QgY2FuIGZhbGwsIGhlIHRoaW5rcyBoaW1zZWxmIHRvbyBzb29uIHRoZXJlLgorCitPUkxBTkRPCVdobyBzdGF5cyBpdCBzdGlsbCB3aXRoYWw/CisKK1JPU0FMSU5ECVdpdGggbGF3eWVycyBpbiB0aGUgdmFjYXRpb24sIGZvciB0aGV5IHNsZWVwIGJldHdlZW4KKwl0ZXJtIGFuZCB0ZXJtIGFuZCB0aGVuIHRoZXkgcGVyY2VpdmUgbm90IGhvdyBUaW1lIG1vdmVzLgorCitPUkxBTkRPCVdoZXJlIGR3ZWxsIHlvdSwgcHJldHR5IHlvdXRoPworCitST1NBTElORAlXaXRoIHRoaXMgc2hlcGhlcmRlc3MsIG15IHNpc3RlcjsgaGVyZSBpbiB0aGUKKwlza2lydHMgb2YgdGhlIGZvcmVzdCwgbGlrZSBmcmluZ2UgdXBvbiBhIHBldHRpY29hdC4KKworT1JMQU5ETwlBcmUgeW91IG5hdGl2ZSBvZiB0aGlzIHBsYWNlPworCitST1NBTElORAlBcyB0aGUgY29ueSB0aGF0IHlvdSBzZWUgZHdlbGwgd2hlcmUgc2hlIGlzIGtpbmRsZWQuCisKK09STEFORE8JWW91ciBhY2NlbnQgaXMgc29tZXRoaW5nIGZpbmVyIHRoYW4geW91IGNvdWxkCisJcHVyY2hhc2UgaW4gc28gcmVtb3ZlZCBhIGR3ZWxsaW5nLgorCitST1NBTElORAlJIGhhdmUgYmVlbiB0b2xkIHNvIG9mIG1hbnk6IGJ1dCBpbmRlZWQgYW4gb2xkCisJcmVsaWdpb3VzIHVuY2xlIG9mIG1pbmUgdGF1Z2h0IG1lIHRvIHNwZWFrLCB3aG8gd2FzCisJaW4gaGlzIHlvdXRoIGFuIGlubGFuZCBtYW47IG9uZSB0aGF0IGtuZXcgY291cnRzaGlwCisJdG9vIHdlbGwsIGZvciB0aGVyZSBoZSBmZWxsIGluIGxvdmUuIEkgaGF2ZSBoZWFyZAorCWhpbSByZWFkIG1hbnkgbGVjdHVyZXMgYWdhaW5zdCBpdCwgYW5kIEkgdGhhbmsgR29kCisJSSBhbSBub3QgYSB3b21hbiwgdG8gYmUgdG91Y2hlZCB3aXRoIHNvIG1hbnkKKwlnaWRkeSBvZmZlbmNlcyBhcyBoZSBoYXRoIGdlbmVyYWxseSB0YXhlZCB0aGVpcgorCXdob2xlIHNleCB3aXRoYWwuCisKK09STEFORE8JQ2FuIHlvdSByZW1lbWJlciBhbnkgb2YgdGhlIHByaW5jaXBhbCBldmlscyB0aGF0IGhlCisJbGFpZCB0byB0aGUgY2hhcmdlIG9mIHdvbWVuPworCitST1NBTElORAlUaGVyZSB3ZXJlIG5vbmUgcHJpbmNpcGFsOyB0aGV5IHdlcmUgYWxsIGxpa2Ugb25lCisJYW5vdGhlciBhcyBoYWxmLXBlbmNlIGFyZSwgZXZlcnkgb25lIGZhdWx0IHNlZW1pbmcKKwltb25zdHJvdXMgdGlsbCBoaXMgZmVsbG93IGZhdWx0IGNhbWUgdG8gbWF0Y2ggaXQuCisKK09STEFORE8JSSBwcml0aGVlLCByZWNvdW50IHNvbWUgb2YgdGhlbS4KKworUk9TQUxJTkQJTm8sIEkgd2lsbCBub3QgY2FzdCBhd2F5IG15IHBoeXNpYyBidXQgb24gdGhvc2UgdGhhdAorCWFyZSBzaWNrLiBUaGVyZSBpcyBhIG1hbiBoYXVudHMgdGhlIGZvcmVzdCwgdGhhdAorCWFidXNlcyBvdXIgeW91bmcgcGxhbnRzIHdpdGggY2FydmluZyAnUm9zYWxpbmQnIG9uCisJdGhlaXIgYmFya3M7IGhhbmdzIG9kZXMgdXBvbiBoYXd0aG9ybnMgYW5kIGVsZWdpZXMKKwlvbiBicmFtYmxlcywgYWxsLCBmb3Jzb290aCwgZGVpZnlpbmcgdGhlIG5hbWUgb2YKKwlSb3NhbGluZDogaWYgSSBjb3VsZCBtZWV0IHRoYXQgZmFuY3ktbW9uZ2VyIEkgd291bGQKKwlnaXZlIGhpbSBzb21lIGdvb2QgY291bnNlbCwgZm9yIGhlIHNlZW1zIHRvIGhhdmUgdGhlCisJcXVvdGlkaWFuIG9mIGxvdmUgdXBvbiBoaW0uCisKK09STEFORE8JSSBhbSBoZSB0aGF0IGlzIHNvIGxvdmUtc2hha2VkOiBJIHByYXkgeW91IHRlbGwgbWUKKwl5b3VyIHJlbWVkeS4KKworUk9TQUxJTkQJVGhlcmUgaXMgbm9uZSBvZiBteSB1bmNsZSdzIG1hcmtzIHVwb24geW91OiBoZQorCXRhdWdodCBtZSBob3cgdG8ga25vdyBhIG1hbiBpbiBsb3ZlOyBpbiB3aGljaCBjYWdlCisJb2YgcnVzaGVzIEkgYW0gc3VyZSB5b3UgYXJlIG5vdCBwcmlzb25lci4KKworT1JMQU5ETwlXaGF0IHdlcmUgaGlzIG1hcmtzPworCitST1NBTElORAlBIGxlYW4gY2hlZWssIHdoaWNoIHlvdSBoYXZlIG5vdCwgYSBibHVlIGV5ZSBhbmQKKwlzdW5rZW4sIHdoaWNoIHlvdSBoYXZlIG5vdCwgYW4gdW5xdWVzdGlvbmFibGUKKwlzcGlyaXQsIHdoaWNoIHlvdSBoYXZlIG5vdCwgYSBiZWFyZCBuZWdsZWN0ZWQsCisJd2hpY2ggeW91IGhhdmUgbm90OyBidXQgSSBwYXJkb24geW91IGZvciB0aGF0LCBmb3IKKwlzaW1wbHkgeW91ciBoYXZpbmcgaW4gYmVhcmQgaXMgYSB5b3VuZ2VyIGJyb3RoZXIncworCXJldmVudWU6IHRoZW4geW91ciBob3NlIHNob3VsZCBiZSB1bmdhcnRlcmVkLCB5b3VyCisJYm9ubmV0IHVuYmFuZGVkLCB5b3VyIHNsZWV2ZSB1bmJ1dHRvbmVkLCB5b3VyIHNob2UKKwl1bnRpZWQgYW5kIGV2ZXJ5IHRoaW5nIGFib3V0IHlvdSBkZW1vbnN0cmF0aW5nIGEKKwljYXJlbGVzcyBkZXNvbGF0aW9uOyBidXQgeW91IGFyZSBubyBzdWNoIG1hbjsgeW91CisJYXJlIHJhdGhlciBwb2ludC1kZXZpY2UgaW4geW91ciBhY2NvdXRyZW1lbnRzIGFzCisJbG92aW5nIHlvdXJzZWxmIHRoYW4gc2VlbWluZyB0aGUgbG92ZXIgb2YgYW55IG90aGVyLgorCitPUkxBTkRPCUZhaXIgeW91dGgsIEkgd291bGQgSSBjb3VsZCBtYWtlIHRoZWUgYmVsaWV2ZSBJIGxvdmUuCisKK1JPU0FMSU5ECU1lIGJlbGlldmUgaXQhIHlvdSBtYXkgYXMgc29vbiBtYWtlIGhlciB0aGF0IHlvdQorCWxvdmUgYmVsaWV2ZSBpdDsgd2hpY2gsIEkgd2FycmFudCwgc2hlIGlzIGFwdGVyIHRvCisJZG8gdGhhbiB0byBjb25mZXNzIHNoZSBkb2VzOiB0aGF0IGlzIG9uZSBvZiB0aGUKKwlwb2ludHMgaW4gdGhlIHdoaWNoIHdvbWVuIHN0aWxsIGdpdmUgdGhlIGxpZSB0bworCXRoZWlyIGNvbnNjaWVuY2VzLiBCdXQsIGluIGdvb2Qgc29vdGgsIGFyZSB5b3UgaGUKKwl0aGF0IGhhbmdzIHRoZSB2ZXJzZXMgb24gdGhlIHRyZWVzLCB3aGVyZWluIFJvc2FsaW5kCisJaXMgc28gYWRtaXJlZD8KKworT1JMQU5ETwlJIHN3ZWFyIHRvIHRoZWUsIHlvdXRoLCBieSB0aGUgd2hpdGUgaGFuZCBvZgorCVJvc2FsaW5kLCBJIGFtIHRoYXQgaGUsIHRoYXQgdW5mb3J0dW5hdGUgaGUuCisKK1JPU0FMSU5ECUJ1dCBhcmUgeW91IHNvIG11Y2ggaW4gbG92ZSBhcyB5b3VyIHJoeW1lcyBzcGVhaz8KKworT1JMQU5ETwlOZWl0aGVyIHJoeW1lIG5vciByZWFzb24gY2FuIGV4cHJlc3MgaG93IG11Y2guCisKK1JPU0FMSU5ECUxvdmUgaXMgbWVyZWx5IGEgbWFkbmVzcywgYW5kLCBJIHRlbGwgeW91LCBkZXNlcnZlcworCWFzIHdlbGwgYSBkYXJrIGhvdXNlIGFuZCBhIHdoaXAgYXMgbWFkbWVuIGRvOiBhbmQKKwl0aGUgcmVhc29uIHdoeSB0aGV5IGFyZSBub3Qgc28gcHVuaXNoZWQgYW5kIGN1cmVkCisJaXMsIHRoYXQgdGhlIGx1bmFjeSBpcyBzbyBvcmRpbmFyeSB0aGF0IHRoZSB3aGlwcGVycworCWFyZSBpbiBsb3ZlIHRvby4gWWV0IEkgcHJvZmVzcyBjdXJpbmcgaXQgYnkgY291bnNlbC4KKworT1JMQU5ETwlEaWQgeW91IGV2ZXIgY3VyZSBhbnkgc28/CisKK1JPU0FMSU5ECVllcywgb25lLCBhbmQgaW4gdGhpcyBtYW5uZXIuIEhlIHdhcyB0byBpbWFnaW5lIG1lCisJaGlzIGxvdmUsIGhpcyBtaXN0cmVzczsgYW5kIEkgc2V0IGhpbSBldmVyeSBkYXkgdG8KKwl3b28gbWU6IGF0IHdoaWNoIHRpbWUgd291bGQgSSwgYmVpbmcgYnV0IGEgbW9vbmlzaAorCXlvdXRoLCBncmlldmUsIGJlIGVmZmVtaW5hdGUsIGNoYW5nZWFibGUsIGxvbmdpbmcKKwlhbmQgbGlraW5nLCBwcm91ZCwgZmFudGFzdGljYWwsIGFwaXNoLCBzaGFsbG93LAorCWluY29uc3RhbnQsIGZ1bGwgb2YgdGVhcnMsIGZ1bGwgb2Ygc21pbGVzLCBmb3IgZXZlcnkKKwlwYXNzaW9uIHNvbWV0aGluZyBhbmQgZm9yIG5vIHBhc3Npb24gdHJ1bHkgYW55CisJdGhpbmcsIGFzIGJveXMgYW5kIHdvbWVuIGFyZSBmb3IgdGhlIG1vc3QgcGFydAorCWNhdHRsZSBvZiB0aGlzIGNvbG91cjsgd291bGQgbm93IGxpa2UgaGltLCBub3cgbG9hdGhlCisJaGltOyB0aGVuIGVudGVydGFpbiBoaW0sIHRoZW4gZm9yc3dlYXIgaGltOyBub3cgd2VlcAorCWZvciBoaW0sIHRoZW4gc3BpdCBhdCBoaW07IHRoYXQgSSBkcmF2ZSBteSBzdWl0b3IKKwlmcm9tIGhpcyBtYWQgaHVtb3VyIG9mIGxvdmUgdG8gYSBsaXZpbmcgaHVtb3VyIG9mCisJbWFkbmVzczsgd2hpY2ggd2FzLCB0byBmb3Jzd2VhciB0aGUgZnVsbCBzdHJlYW0gb2YKKwl0aGUgd29ybGQsIGFuZCB0byBsaXZlIGluIGEgbm9vayBtZXJlbHkgbW9uYXN0aWMuCisJQW5kIHRodXMgSSBjdXJlZCBoaW07IGFuZCB0aGlzIHdheSB3aWxsIEkgdGFrZSB1cG9uCisJbWUgdG8gd2FzaCB5b3VyIGxpdmVyIGFzIGNsZWFuIGFzIGEgc291bmQgc2hlZXAncworCWhlYXJ0LCB0aGF0IHRoZXJlIHNoYWxsIG5vdCBiZSBvbmUgc3BvdCBvZiBsb3ZlIGluJ3QuCisKK09STEFORE8JSSB3b3VsZCBub3QgYmUgY3VyZWQsIHlvdXRoLgorCitST1NBTElORAlJIHdvdWxkIGN1cmUgeW91LCBpZiB5b3Ugd291bGQgYnV0IGNhbGwgbWUgUm9zYWxpbmQKKwlhbmQgY29tZSBldmVyeSBkYXkgdG8gbXkgY290ZSBhbmQgd29vIG1lLgorCitPUkxBTkRPCU5vdywgYnkgdGhlIGZhaXRoIG9mIG15IGxvdmUsIEkgd2lsbDogdGVsbCBtZQorCXdoZXJlIGl0IGlzLgorCitST1NBTElORAlHbyB3aXRoIG1lIHRvIGl0IGFuZCBJJ2xsIHNob3cgaXQgeW91IGFuZCBieSB0aGUgd2F5CisJeW91IHNoYWxsIHRlbGwgbWUgd2hlcmUgaW4gdGhlIGZvcmVzdCB5b3UgbGl2ZS4KKwlXaWxsIHlvdSBnbz8KKworT1JMQU5ETwlXaXRoIGFsbCBteSBoZWFydCwgZ29vZCB5b3V0aC4KKworUk9TQUxJTkQJTmF5IHlvdSBtdXN0IGNhbGwgbWUgUm9zYWxpbmQuIENvbWUsIHNpc3Rlciwgd2lsbCB5b3UgZ28/CisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSUlJCisKKworCitTQ0VORSBJSUkJVGhlIGZvcmVzdC4KKworCisJW0VudGVyIFRPVUNIU1RPTkUgYW5kIEFVRFJFWTsgSkFRVUVTIGJlaGluZF0KKworVE9VQ0hTVE9ORQlDb21lIGFwYWNlLCBnb29kIEF1ZHJleTogSSB3aWxsIGZldGNoIHVwIHlvdXIKKwlnb2F0cywgQXVkcmV5LiBBbmQgaG93LCBBdWRyZXk/IGFtIEkgdGhlIG1hbiB5ZXQ/CisJZG90aCBteSBzaW1wbGUgZmVhdHVyZSBjb250ZW50IHlvdT8KKworQVVEUkVZCVlvdXIgZmVhdHVyZXMhIExvcmQgd2FycmFudCB1cyEgd2hhdCBmZWF0dXJlcyEKKworVE9VQ0hTVE9ORQlJIGFtIGhlcmUgd2l0aCB0aGVlIGFuZCB0aHkgZ29hdHMsIGFzIHRoZSBtb3N0CisJY2FwcmljaW91cyBwb2V0LCBob25lc3QgT3ZpZCwgd2FzIGFtb25nIHRoZSBHb3Rocy4KKworSkFRVUVTCVtBc2lkZV0gIE8ga25vd2xlZGdlIGlsbC1pbmhhYml0ZWQsIHdvcnNlIHRoYW4gSm92ZQorCWluIGEgdGhhdGNoZWQgaG91c2UhCisKK1RPVUNIU1RPTkUJV2hlbiBhIG1hbidzIHZlcnNlcyBjYW5ub3QgYmUgdW5kZXJzdG9vZCwgbm9yIGEKKwltYW4ncyBnb29kIHdpdCBzZWNvbmRlZCB3aXRoIHRoZSBmb3J3YXJkIGNoaWxkCisJVW5kZXJzdGFuZGluZywgaXQgc3RyaWtlcyBhIG1hbiBtb3JlIGRlYWQgdGhhbiBhCisJZ3JlYXQgcmVja29uaW5nIGluIGEgbGl0dGxlIHJvb20uIFRydWx5LCBJIHdvdWxkCisJdGhlIGdvZHMgaGFkIG1hZGUgdGhlZSBwb2V0aWNhbC4KKworQVVEUkVZCUkgZG8gbm90IGtub3cgd2hhdCAncG9ldGljYWwnIGlzOiBpcyBpdCBob25lc3QgaW4KKwlkZWVkIGFuZCB3b3JkPyBpcyBpdCBhIHRydWUgdGhpbmc/CisKK1RPVUNIU1RPTkUJTm8sIHRydWx5OyBmb3IgdGhlIHRydWVzdCBwb2V0cnkgaXMgdGhlIG1vc3QKKwlmZWlnbmluZzsgYW5kIGxvdmVycyBhcmUgZ2l2ZW4gdG8gcG9ldHJ5LCBhbmQgd2hhdAorCXRoZXkgc3dlYXIgaW4gcG9ldHJ5IG1heSBiZSBzYWlkIGFzIGxvdmVycyB0aGV5IGRvIGZlaWduLgorCitBVURSRVkJRG8geW91IHdpc2ggdGhlbiB0aGF0IHRoZSBnb2RzIGhhZCBtYWRlIG1lIHBvZXRpY2FsPworCitUT1VDSFNUT05FCUkgZG8sIHRydWx5OyBmb3IgdGhvdSBzd2VhcmVzdCB0byBtZSB0aG91IGFydAorCWhvbmVzdDogbm93LCBpZiB0aG91IHdlcnQgYSBwb2V0LCBJIG1pZ2h0IGhhdmUgc29tZQorCWhvcGUgdGhvdSBkaWRzdCBmZWlnbi4KKworQVVEUkVZCVdvdWxkIHlvdSBub3QgaGF2ZSBtZSBob25lc3Q/CisKK1RPVUNIU1RPTkUJTm8sIHRydWx5LCB1bmxlc3MgdGhvdSB3ZXJ0IGhhcmQtZmF2b3VyZWQ7IGZvcgorCWhvbmVzdHkgY291cGxlZCB0byBiZWF1dHkgaXMgdG8gaGF2ZSBob25leSBhIHNhdWNlIHRvIHN1Z2FyLgorCitKQVFVRVMJW0FzaWRlXSAgQSBtYXRlcmlhbCBmb29sIQorCitBVURSRVkJIFdlbGwsIEkgYW0gbm90IGZhaXI7IGFuZCB0aGVyZWZvcmUgSSBwcmF5IHRoZSBnb2RzCisJbWFrZSBtZSBob25lc3QuCisKK1RPVUNIU1RPTkUJVHJ1bHksIGFuZCB0byBjYXN0IGF3YXkgaG9uZXN0eSB1cG9uIGEgZm91bCBzbHV0CisJd2VyZSB0byBwdXQgZ29vZCBtZWF0IGludG8gYW4gdW5jbGVhbiBkaXNoLgorCitBVURSRVkJSSBhbSBub3QgYSBzbHV0LCB0aG91Z2ggSSB0aGFuayB0aGUgZ29kcyBJIGFtIGZvdWwuCisKK1RPVUNIU1RPTkUJV2VsbCwgcHJhaXNlZCBiZSB0aGUgZ29kcyBmb3IgdGh5IGZvdWxuZXNzIQorCXNsdXR0aXNobmVzcyBtYXkgY29tZSBoZXJlYWZ0ZXIuIEJ1dCBiZSBpdCBhcyBpdCBtYXkKKwliZSwgSSB3aWxsIG1hcnJ5IHRoZWUsIGFuZCB0byB0aGF0IGVuZCBJIGhhdmUgYmVlbgorCXdpdGggU2lyIE9saXZlciBNYXJ0ZXh0LCB0aGUgdmljYXIgb2YgdGhlIG5leHQKKwl2aWxsYWdlLCB3aG8gaGF0aCBwcm9taXNlZCB0byBtZWV0IG1lIGluIHRoaXMgcGxhY2UKKwlvZiB0aGUgZm9yZXN0IGFuZCB0byBjb3VwbGUgdXMuCisKK0pBUVVFUwlbQXNpZGVdICBJIHdvdWxkIGZhaW4gc2VlIHRoaXMgbWVldGluZy4KKworQVVEUkVZCVdlbGwsIHRoZSBnb2RzIGdpdmUgdXMgam95IQorCitUT1VDSFNUT05FCUFtZW4uIEEgbWFuIG1heSwgaWYgaGUgd2VyZSBvZiBhIGZlYXJmdWwgaGVhcnQsCisJc3RhZ2dlciBpbiB0aGlzIGF0dGVtcHQ7IGZvciBoZXJlIHdlIGhhdmUgbm8gdGVtcGxlCisJYnV0IHRoZSB3b29kLCBubyBhc3NlbWJseSBidXQgaG9ybi1iZWFzdHMuIEJ1dCB3aGF0CisJdGhvdWdoPyBDb3VyYWdlISBBcyBob3JucyBhcmUgb2Rpb3VzLCB0aGV5IGFyZQorCW5lY2Vzc2FyeS4gSXQgaXMgc2FpZCwgJ21hbnkgYSBtYW4ga25vd3Mgbm8gZW5kIG9mCisJaGlzIGdvb2RzOicgcmlnaHQ7IG1hbnkgYSBtYW4gaGFzIGdvb2QgaG9ybnMsIGFuZAorCWtub3dzIG5vIGVuZCBvZiB0aGVtLiBXZWxsLCB0aGF0IGlzIHRoZSBkb3dyeSBvZgorCWhpcyB3aWZlOyAndGlzIG5vbmUgb2YgaGlzIG93biBnZXR0aW5nLiBIb3Jucz8KKwlFdmVuIHNvLiBQb29yIG1lbiBhbG9uZT8gTm8sIG5vOyB0aGUgbm9ibGVzdCBkZWVyCisJaGF0aCB0aGVtIGFzIGh1Z2UgYXMgdGhlIHJhc2NhbC4gSXMgdGhlIHNpbmdsZSBtYW4KKwl0aGVyZWZvcmUgYmxlc3NlZD8gTm86IGFzIGEgd2FsbGVkIHRvd24gaXMgbW9yZQorCXdvcnRoaWVyIHRoYW4gYSB2aWxsYWdlLCBzbyBpcyB0aGUgZm9yZWhlYWQgb2YgYQorCW1hcnJpZWQgbWFuIG1vcmUgaG9ub3VyYWJsZSB0aGFuIHRoZSBiYXJlIGJyb3cgb2YgYQorCWJhY2hlbG9yOyBhbmQgYnkgaG93IG11Y2ggZGVmZW5jZSBpcyBiZXR0ZXIgdGhhbiBubworCXNraWxsLCBieSBzbyBtdWNoIGlzIGEgaG9ybiBtb3JlIHByZWNpb3VzIHRoYW4gdG8KKwl3YW50LiBIZXJlIGNvbWVzIFNpciBPbGl2ZXIuCisKKwlbRW50ZXIgU0lSIE9MSVZFUiBNQVJURVhUXQorCisJU2lyIE9saXZlciBNYXJ0ZXh0LCB5b3UgYXJlIHdlbGwgbWV0OiB3aWxsIHlvdQorCWRpc3BhdGNoIHVzIGhlcmUgdW5kZXIgdGhpcyB0cmVlLCBvciBzaGFsbCB3ZSBnbworCXdpdGggeW91IHRvIHlvdXIgY2hhcGVsPworCitTSVIgT0xJVkVSIE1BUlRFWFQJSXMgdGhlcmUgbm9uZSBoZXJlIHRvIGdpdmUgdGhlIHdvbWFuPworCitUT1VDSFNUT05FCUkgd2lsbCBub3QgdGFrZSBoZXIgb24gZ2lmdCBvZiBhbnkgbWFuLgorCitTSVIgT0xJVkVSIE1BUlRFWFQJVHJ1bHksIHNoZSBtdXN0IGJlIGdpdmVuLCBvciB0aGUgbWFycmlhZ2UgaXMgbm90IGxhd2Z1bC4KKworSkFRVUVTCVtBZHZhbmNpbmddCisKKwlQcm9jZWVkLCBwcm9jZWVkCUknbGwgZ2l2ZSBoZXIuCisKK1RPVUNIU1RPTkUJR29vZCBldmVuLCBnb29kIE1hc3RlciBXaGF0LXllLWNhbGwndDogaG93IGRvIHlvdSwKKwlzaXI/IFlvdSBhcmUgdmVyeSB3ZWxsIG1ldDogR29kICdpbGQgeW91IGZvciB5b3VyCisJbGFzdCBjb21wYW55OiBJIGFtIHZlcnkgZ2xhZCB0byBzZWUgeW91OiBldmVuIGEKKwl0b3kgaW4gaGFuZCBoZXJlLCBzaXI6IG5heSwgcHJheSBiZSBjb3ZlcmVkLgorCitKQVFVRVMJV2lsbCB5b3UgYmUgbWFycmllZCwgbW90bGV5PworCitUT1VDSFNUT05FCUFzIHRoZSBveCBoYXRoIGhpcyBib3csIHNpciwgdGhlIGhvcnNlIGhpcyBjdXJiIGFuZAorCXRoZSBmYWxjb24gaGVyIGJlbGxzLCBzbyBtYW4gaGF0aCBoaXMgZGVzaXJlczsgYW5kCisJYXMgcGlnZW9ucyBiaWxsLCBzbyB3ZWRsb2NrIHdvdWxkIGJlIG5pYmJsaW5nLgorCitKQVFVRVMJQW5kIHdpbGwgeW91LCBiZWluZyBhIG1hbiBvZiB5b3VyIGJyZWVkaW5nLCBiZQorCW1hcnJpZWQgdW5kZXIgYSBidXNoIGxpa2UgYSBiZWdnYXI/IEdldCB5b3UgdG8KKwljaHVyY2gsIGFuZCBoYXZlIGEgZ29vZCBwcmllc3QgdGhhdCBjYW4gdGVsbCB5b3UKKwl3aGF0IG1hcnJpYWdlIGlzOiB0aGlzIGZlbGxvdyB3aWxsIGJ1dCBqb2luIHlvdQorCXRvZ2V0aGVyIGFzIHRoZXkgam9pbiB3YWluc2NvdDsgdGhlbiBvbmUgb2YgeW91IHdpbGwKKwlwcm92ZSBhIHNocnVuayBwYW5lbCBhbmQsIGxpa2UgZ3JlZW4gdGltYmVyLCB3YXJwLCB3YXJwLgorCitUT1VDSFNUT05FCVtBc2lkZV0gIEkgYW0gbm90IGluIHRoZSBtaW5kIGJ1dCBJIHdlcmUgYmV0dGVyIHRvIGJlCisJbWFycmllZCBvZiBoaW0gdGhhbiBvZiBhbm90aGVyOiBmb3IgaGUgaXMgbm90IGxpa2UKKwl0byBtYXJyeSBtZSB3ZWxsOyBhbmQgbm90IGJlaW5nIHdlbGwgbWFycmllZCwgaXQKKwl3aWxsIGJlIGEgZ29vZCBleGN1c2UgZm9yIG1lIGhlcmVhZnRlciB0byBsZWF2ZSBteSB3aWZlLgorCitKQVFVRVMJR28gdGhvdSB3aXRoIG1lLCBhbmQgbGV0IG1lIGNvdW5zZWwgdGhlZS4KKworVE9VQ0hTVE9ORQknQ29tZSwgc3dlZXQgQXVkcmV5OgorCVdlIG11c3QgYmUgbWFycmllZCwgb3Igd2UgbXVzdCBsaXZlIGluIGJhd2RyeS4KKwlGYXJld2VsbCwgZ29vZCBNYXN0ZXIgT2xpdmVyOiBub3QsLS0KKwlPIHN3ZWV0IE9saXZlciwKKwlPIGJyYXZlIE9saXZlciwKKwlMZWF2ZSBtZSBub3QgYmVoaW5kIHRoZWU6IGJ1dCwtLQorCVdpbmQgYXdheSwKKwlCZWdvbmUsIEkgc2F5LAorCUkgd2lsbCBub3QgdG8gd2VkZGluZyB3aXRoIHRoZWUuCisKKwlbRXhldW50IEpBUVVFUywgVE9VQ0hTVE9ORSBhbmQgQVVEUkVZXQorCitTSVIgT0xJVkVSIE1BUlRFWFQJJ1RpcyBubyBtYXR0ZXI6IG5lJ2VyIGEgZmFudGFzdGljYWwga25hdmUgb2YgdGhlbQorCWFsbCBzaGFsbCBmbG91dCBtZSBvdXQgb2YgbXkgY2FsbGluZy4KKworCVtFeGl0XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSUlJCisKKworCitTQ0VORSBJVglUaGUgZm9yZXN0LgorCisKKwlbRW50ZXIgUk9TQUxJTkQgYW5kIENFTElBXQorCitST1NBTElORAlOZXZlciB0YWxrIHRvIG1lOyBJIHdpbGwgd2VlcC4KKworQ0VMSUEJRG8sIEkgcHJpdGhlZTsgYnV0IHlldCBoYXZlIHRoZSBncmFjZSB0byBjb25zaWRlcgorCXRoYXQgdGVhcnMgZG8gbm90IGJlY29tZSBhIG1hbi4KKworUk9TQUxJTkQJQnV0IGhhdmUgSSBub3QgY2F1c2UgdG8gd2VlcD8KKworQ0VMSUEJQXMgZ29vZCBjYXVzZSBhcyBvbmUgd291bGQgZGVzaXJlOyB0aGVyZWZvcmUgd2VlcC4KKworUk9TQUxJTkQJSGlzIHZlcnkgaGFpciBpcyBvZiB0aGUgZGlzc2VtYmxpbmcgY29sb3VyLgorCitDRUxJQQlTb21ldGhpbmcgYnJvd25lciB0aGFuIEp1ZGFzJ3MgbWFycnksIGhpcyBraXNzZXMgYXJlCisJSnVkYXMncyBvd24gY2hpbGRyZW4uCisKK1JPU0FMSU5ECUknIGZhaXRoLCBoaXMgaGFpciBpcyBvZiBhIGdvb2QgY29sb3VyLgorCitDRUxJQQlBbiBleGNlbGxlbnQgY29sb3VyOiB5b3VyIGNoZXN0bnV0IHdhcyBldmVyIHRoZSBvbmx5IGNvbG91ci4KKworUk9TQUxJTkQJQW5kIGhpcyBraXNzaW5nIGlzIGFzIGZ1bGwgb2Ygc2FuY3RpdHkgYXMgdGhlIHRvdWNoCisJb2YgaG9seSBicmVhZC4KKworQ0VMSUEJSGUgaGF0aCBib3VnaHQgYSBwYWlyIG9mIGNhc3QgbGlwcyBvZiBEaWFuYTogYSBudW4KKwlvZiB3aW50ZXIncyBzaXN0ZXJob29kIGtpc3NlcyBub3QgbW9yZSByZWxpZ2lvdXNseTsKKwl0aGUgdmVyeSBpY2Ugb2YgY2hhc3RpdHkgaXMgaW4gdGhlbS4KKworUk9TQUxJTkQJQnV0IHdoeSBkaWQgaGUgc3dlYXIgaGUgd291bGQgY29tZSB0aGlzIG1vcm5pbmcsIGFuZAorCWNvbWVzIG5vdD8KKworQ0VMSUEJTmF5LCBjZXJ0YWlubHksIHRoZXJlIGlzIG5vIHRydXRoIGluIGhpbS4KKworUk9TQUxJTkQJRG8geW91IHRoaW5rIHNvPworCitDRUxJQQlZZXM7IEkgdGhpbmsgaGUgaXMgbm90IGEgcGljay1wdXJzZSBub3IgYQorCWhvcnNlLXN0ZWFsZXIsIGJ1dCBmb3IgaGlzIHZlcml0eSBpbiBsb3ZlLCBJIGRvCisJdGhpbmsgaGltIGFzIGNvbmNhdmUgYXMgYSBjb3ZlcmVkIGdvYmxldCBvciBhCisJd29ybS1lYXRlbiBudXQuCisKK1JPU0FMSU5ECU5vdCB0cnVlIGluIGxvdmU/CisKK0NFTElBCVllcywgd2hlbiBoZSBpcyBpbjsgYnV0IEkgdGhpbmsgaGUgaXMgbm90IGluLgorCitST1NBTElORAlZb3UgaGF2ZSBoZWFyZCBoaW0gc3dlYXIgZG93bnJpZ2h0IGhlIHdhcy4KKworQ0VMSUEJJ1dhcycgaXMgbm90ICdpczonIGJlc2lkZXMsIHRoZSBvYXRoIG9mIGEgbG92ZXIgaXMKKwlubyBzdHJvbmdlciB0aGFuIHRoZSB3b3JkIG9mIGEgdGFwc3RlcjsgdGhleSBhcmUKKwlib3RoIHRoZSBjb25maXJtZXIgb2YgZmFsc2UgcmVja29uaW5ncy4gSGUgYXR0ZW5kcworCWhlcmUgaW4gdGhlIGZvcmVzdCBvbiB0aGUgZHVrZSB5b3VyIGZhdGhlci4KKworUk9TQUxJTkQJSSBtZXQgdGhlIGR1a2UgeWVzdGVyZGF5IGFuZCBoYWQgbXVjaCBxdWVzdGlvbiB3aXRoCisJaGltOiBoZSBhc2tlZCBtZSBvZiB3aGF0IHBhcmVudGFnZSBJIHdhczsgSSB0b2xkCisJaGltLCBvZiBhcyBnb29kIGFzIGhlOyBzbyBoZSBsYXVnaGVkIGFuZCBsZXQgbWUgZ28uCisJQnV0IHdoYXQgdGFsayB3ZSBvZiBmYXRoZXJzLCB3aGVuIHRoZXJlIGlzIHN1Y2ggYQorCW1hbiBhcyBPcmxhbmRvPworCitDRUxJQQlPLCB0aGF0J3MgYSBicmF2ZSBtYW4hIGhlIHdyaXRlcyBicmF2ZSB2ZXJzZXMsCisJc3BlYWtzIGJyYXZlIHdvcmRzLCBzd2VhcnMgYnJhdmUgb2F0aHMgYW5kIGJyZWFrcworCXRoZW0gYnJhdmVseSwgcXVpdGUgdHJhdmVyc2UsIGF0aHdhcnQgdGhlIGhlYXJ0IG9mCisJaGlzIGxvdmVyOyBhcyBhIHB1aXNueSB0aWx0ZXIsIHRoYXQgc3B1cnMgaGlzIGhvcnNlCisJYnV0IG9uIG9uZSBzaWRlLCBicmVha3MgaGlzIHN0YWZmIGxpa2UgYSBub2JsZQorCWdvb3NlOiBidXQgYWxsJ3MgYnJhdmUgdGhhdCB5b3V0aCBtb3VudHMgYW5kIGZvbGx5CisJZ3VpZGVzLiBXaG8gY29tZXMgaGVyZT8KKworCVtFbnRlciBDT1JJTl0KKworQ09SSU4JTWlzdHJlc3MgYW5kIG1hc3RlciwgeW91IGhhdmUgb2Z0IGlucXVpcmVkCisJQWZ0ZXIgdGhlIHNoZXBoZXJkIHRoYXQgY29tcGxhaW4nZCBvZiBsb3ZlLAorCVdobyB5b3Ugc2F3IHNpdHRpbmcgYnkgbWUgb24gdGhlIHR1cmYsCisJUHJhaXNpbmcgdGhlIHByb3VkIGRpc2RhaW5mdWwgc2hlcGhlcmRlc3MKKwlUaGF0IHdhcyBoaXMgbWlzdHJlc3MuCisKK0NFTElBCVdlbGwsIGFuZCB3aGF0IG9mIGhpbT8KKworQ09SSU4JSWYgeW91IHdpbGwgc2VlIGEgcGFnZWFudCB0cnVseSBwbGF5J2QsCisJQmV0d2VlbiB0aGUgcGFsZSBjb21wbGV4aW9uIG9mIHRydWUgbG92ZQorCUFuZCB0aGUgcmVkIGdsb3cgb2Ygc2Nvcm4gYW5kIHByb3VkIGRpc2RhaW4sCisJR28gaGVuY2UgYSBsaXR0bGUgYW5kIEkgc2hhbGwgY29uZHVjdCB5b3UsCisJSWYgeW91IHdpbGwgbWFyayBpdC4KKworUk9TQUxJTkQJTywgY29tZSwgbGV0IHVzIHJlbW92ZToKKwlUaGUgc2lnaHQgb2YgbG92ZXJzIGZlZWRldGggdGhvc2UgaW4gbG92ZS4KKwlCcmluZyB1cyB0byB0aGlzIHNpZ2h0LCBhbmQgeW91IHNoYWxsIHNheQorCUknbGwgcHJvdmUgYSBidXN5IGFjdG9yIGluIHRoZWlyIHBsYXkuCisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSUlJCisKKworCitTQ0VORSBWCUFub3RoZXIgcGFydCBvZiB0aGUgZm9yZXN0LgorCisKKwlbRW50ZXIgU0lMVklVUyBhbmQgUEhFQkVdCisKK1NJTFZJVVMJU3dlZXQgUGhlYmUsIGRvIG5vdCBzY29ybiBtZTsgZG8gbm90LCBQaGViZTsKKwlTYXkgdGhhdCB5b3UgbG92ZSBtZSBub3QsIGJ1dCBzYXkgbm90IHNvCisJSW4gYml0dGVybmVzcy4gVGhlIGNvbW1vbiBleGVjdXRpb25lciwKKwlXaG9zZSBoZWFydCB0aGUgYWNjdXN0b20nZCBzaWdodCBvZiBkZWF0aCBtYWtlcyBoYXJkLAorCUZhbGxzIG5vdCB0aGUgYXhlIHVwb24gdGhlIGh1bWJsZWQgbmVjaworCUJ1dCBmaXJzdCBiZWdzIHBhcmRvbjogd2lsbCB5b3Ugc3Rlcm5lciBiZQorCVRoYW4gaGUgdGhhdCBkaWVzIGFuZCBsaXZlcyBieSBibG9vZHkgZHJvcHM/CisKKwlbRW50ZXIgUk9TQUxJTkQsIENFTElBLCBhbmQgQ09SSU4sIGJlaGluZF0KKworUEhFQkUJSSB3b3VsZCBub3QgYmUgdGh5IGV4ZWN1dGlvbmVyOgorCUkgZmx5IHRoZWUsIGZvciBJIHdvdWxkIG5vdCBpbmp1cmUgdGhlZS4KKwlUaG91IHRlbGwnc3QgbWUgdGhlcmUgaXMgbXVyZGVyIGluIG1pbmUgZXllOgorCSdUaXMgcHJldHR5LCBzdXJlLCBhbmQgdmVyeSBwcm9iYWJsZSwKKwlUaGF0IGV5ZXMsIHRoYXQgYXJlIHRoZSBmcmFpbCdzdCBhbmQgc29mdGVzdCB0aGluZ3MsCisJV2hvIHNodXQgdGhlaXIgY293YXJkIGdhdGVzIG9uIGF0b21pZXMsCisJU2hvdWxkIGJlIGNhbGwnZCB0eXJhbnRzLCBidXRjaGVycywgbXVyZGVyZXJzIQorCU5vdyBJIGRvIGZyb3duIG9uIHRoZWUgd2l0aCBhbGwgbXkgaGVhcnQ7CisJQW5kIGlmIG1pbmUgZXllcyBjYW4gd291bmQsIG5vdyBsZXQgdGhlbSBraWxsIHRoZWU6CisJTm93IGNvdW50ZXJmZWl0IHRvIHN3b29uOyB3aHkgbm93IGZhbGwgZG93bjsKKwlPciBpZiB0aG91IGNhbnN0IG5vdCwgTywgZm9yIHNoYW1lLCBmb3Igc2hhbWUsCisJTGllIG5vdCwgdG8gc2F5IG1pbmUgZXllcyBhcmUgbXVyZGVyZXJzIQorCU5vdyBzaG93IHRoZSB3b3VuZCBtaW5lIGV5ZSBoYXRoIG1hZGUgaW4gdGhlZToKKwlTY3JhdGNoIHRoZWUgYnV0IHdpdGggYSBwaW4sIGFuZCB0aGVyZSByZW1haW5zCisJU29tZSBzY2FyIG9mIGl0OyBsZWFuIGJ1dCB1cG9uIGEgcnVzaCwKKwlUaGUgY2ljYXRyaWNlIGFuZCBjYXBhYmxlIGltcHJlc3N1cmUKKwlUaHkgcGFsbSBzb21lIG1vbWVudCBrZWVwczsgYnV0IG5vdyBtaW5lIGV5ZXMsCisJV2hpY2ggSSBoYXZlIGRhcnRlZCBhdCB0aGVlLCBodXJ0IHRoZWUgbm90LAorCU5vciwgSSBhbSBzdXJlLCB0aGVyZSBpcyBubyBmb3JjZSBpbiBleWVzCisJVGhhdCBjYW4gZG8gaHVydC4KKworU0lMVklVUwkgICAgICAgICAgICAgICAgICBPIGRlYXIgUGhlYmUsCisJSWYgZXZlciwtLWFzIHRoYXQgZXZlciBtYXkgYmUgbmVhciwtLQorCVlvdSBtZWV0IGluIHNvbWUgZnJlc2ggY2hlZWsgdGhlIHBvd2VyIG9mIGZhbmN5LAorCVRoZW4gc2hhbGwgeW91IGtub3cgdGhlIHdvdW5kcyBpbnZpc2libGUKKwlUaGF0IGxvdmUncyBrZWVuIGFycm93cyBtYWtlLgorCitQSEVCRQlCdXQgdGlsbCB0aGF0IHRpbWUKKwlDb21lIG5vdCB0aG91IG5lYXIgbWU6IGFuZCB3aGVuIHRoYXQgdGltZSBjb21lcywKKwlBZmZsaWN0IG1lIHdpdGggdGh5IG1vY2tzLCBwaXR5IG1lIG5vdDsKKwlBcyB0aWxsIHRoYXQgdGltZSBJIHNoYWxsIG5vdCBwaXR5IHRoZWUuCisKK1JPU0FMSU5ECUFuZCB3aHksIEkgcHJheSB5b3U/IFdobyBtaWdodCBiZSB5b3VyIG1vdGhlciwKKwlUaGF0IHlvdSBpbnN1bHQsIGV4dWx0LCBhbmQgYWxsIGF0IG9uY2UsCisJT3ZlciB0aGUgd3JldGNoZWQ/IFdoYXQgdGhvdWdoIHlvdSBoYXZlIG5vIGJlYXV0eSwtLQorCUFzLCBieSBteSBmYWl0aCwgSSBzZWUgbm8gbW9yZSBpbiB5b3UKKwlUaGFuIHdpdGhvdXQgY2FuZGxlIG1heSBnbyBkYXJrIHRvIGJlZC0tCisJTXVzdCB5b3UgYmUgdGhlcmVmb3JlIHByb3VkIGFuZCBwaXRpbGVzcz8KKwlXaHksIHdoYXQgbWVhbnMgdGhpcz8gV2h5IGRvIHlvdSBsb29rIG9uIG1lPworCUkgc2VlIG5vIG1vcmUgaW4geW91IHRoYW4gaW4gdGhlIG9yZGluYXJ5CisJT2YgbmF0dXJlJ3Mgc2FsZS13b3JrLiAnT2QncyBteSBsaXR0bGUgbGlmZSwKKwlJIHRoaW5rIHNoZSBtZWFucyB0byB0YW5nbGUgbXkgZXllcyB0b28hCisJTm8sIGZhaXRoLCBwcm91ZCBtaXN0cmVzcywgaG9wZSBub3QgYWZ0ZXIgaXQ6CisJJ1RpcyBub3QgeW91ciBpbmt5IGJyb3dzLCB5b3VyIGJsYWNrIHNpbGsgaGFpciwKKwlZb3VyIGJ1Z2xlIGV5ZWJhbGxzLCBub3IgeW91ciBjaGVlayBvZiBjcmVhbSwKKwlUaGF0IGNhbiBlbnRhbWUgbXkgc3Bpcml0cyB0byB5b3VyIHdvcnNoaXAuCisJWW91IGZvb2xpc2ggc2hlcGhlcmQsIHdoZXJlZm9yZSBkbyB5b3UgZm9sbG93IGhlciwKKwlMaWtlIGZvZ2d5IHNvdXRoIHB1ZmZpbmcgd2l0aCB3aW5kIGFuZCByYWluPworCVlvdSBhcmUgYSB0aG91c2FuZCB0aW1lcyBhIHByb3BlcmVyIG1hbgorCVRoYW4gc2hlIGEgd29tYW46ICd0aXMgc3VjaCBmb29scyBhcyB5b3UKKwlUaGF0IG1ha2VzIHRoZSB3b3JsZCBmdWxsIG9mIGlsbC1mYXZvdXInZCBjaGlsZHJlbjoKKwknVGlzIG5vdCBoZXIgZ2xhc3MsIGJ1dCB5b3UsIHRoYXQgZmxhdHRlcnMgaGVyOworCUFuZCBvdXQgb2YgeW91IHNoZSBzZWVzIGhlcnNlbGYgbW9yZSBwcm9wZXIKKwlUaGFuIGFueSBvZiBoZXIgbGluZWFtZW50cyBjYW4gc2hvdyBoZXIuCisJQnV0LCBtaXN0cmVzcywga25vdyB5b3Vyc2VsZjogZG93biBvbiB5b3VyIGtuZWVzLAorCUFuZCB0aGFuayBoZWF2ZW4sIGZhc3RpbmcsIGZvciBhIGdvb2QgbWFuJ3MgbG92ZToKKwlGb3IgSSBtdXN0IHRlbGwgeW91IGZyaWVuZGx5IGluIHlvdXIgZWFyLAorCVNlbGwgd2hlbiB5b3UgY2FuOiB5b3UgYXJlIG5vdCBmb3IgYWxsIG1hcmtldHM6CisJQ3J5IHRoZSBtYW4gbWVyY3k7IGxvdmUgaGltOyB0YWtlIGhpcyBvZmZlcjoKKwlGb3VsIGlzIG1vc3QgZm91bCwgYmVpbmcgZm91bCB0byBiZSBhIHNjb2ZmZXIuCisJU28gdGFrZSBoZXIgdG8gdGhlZSwgc2hlcGhlcmQ6IGZhcmUgeW91IHdlbGwuCisKK1BIRUJFCVN3ZWV0IHlvdXRoLCBJIHByYXkgeW91LCBjaGlkZSBhIHllYXIgdG9nZXRoZXI6CisJSSBoYWQgcmF0aGVyIGhlYXIgeW91IGNoaWRlIHRoYW4gdGhpcyBtYW4gd29vLgorCitST1NBTElORAlIZSdzIGZhbGxlbiBpbiBsb3ZlIHdpdGggeW91ciBmb3VsbmVzcyBhbmQgc2hlJ2xsCisJZmFsbCBpbiBsb3ZlIHdpdGggbXkgYW5nZXIuIElmIGl0IGJlIHNvLCBhcyBmYXN0IGFzCisJc2hlIGFuc3dlcnMgdGhlZSB3aXRoIGZyb3duaW5nIGxvb2tzLCBJJ2xsIHNhdWNlIGhlcgorCXdpdGggYml0dGVyIHdvcmRzLiBXaHkgbG9vayB5b3Ugc28gdXBvbiBtZT8KKworUEhFQkUJRm9yIG5vIGlsbCB3aWxsIEkgYmVhciB5b3UuCisKK1JPU0FMSU5ECUkgcHJheSB5b3UsIGRvIG5vdCBmYWxsIGluIGxvdmUgd2l0aCBtZSwKKwlGb3IgSSBhbSBmYWxzZXIgdGhhbiB2b3dzIG1hZGUgaW4gd2luZToKKwlCZXNpZGVzLCBJIGxpa2UgeW91IG5vdC4gSWYgeW91IHdpbGwga25vdyBteSBob3VzZSwKKwknVGlzIGF0IHRoZSB0dWZ0IG9mIG9saXZlcyBoZXJlIGhhcmQgYnkuCisJV2lsbCB5b3UgZ28sIHNpc3Rlcj8gU2hlcGhlcmQsIHBseSBoZXIgaGFyZC4KKwlDb21lLCBzaXN0ZXIuIFNoZXBoZXJkZXNzLCBsb29rIG9uIGhpbSBiZXR0ZXIsCisJQW5kIGJlIG5vdCBwcm91ZDogdGhvdWdoIGFsbCB0aGUgd29ybGQgY291bGQgc2VlLAorCU5vbmUgY291bGQgYmUgc28gYWJ1c2VkIGluIHNpZ2h0IGFzIGhlLgorCUNvbWUsIHRvIG91ciBmbG9jay4KKworCVtFeGV1bnQgUk9TQUxJTkQsIENFTElBIGFuZCBDT1JJTl0KKworUEhFQkUJRGVhZCBTaGVwaGVyZCwgbm93IEkgZmluZCB0aHkgc2F3IG9mIG1pZ2h0LAorCSdXaG8gZXZlciBsb3ZlZCB0aGF0IGxvdmVkIG5vdCBhdCBmaXJzdCBzaWdodD8nCisKK1NJTFZJVVMJU3dlZXQgUGhlYmUsLS0KKworUEhFQkUJICAgICAgICAgICAgICAgICAgSGEsIHdoYXQgc2F5J3N0IHRob3UsIFNpbHZpdXM/CisKK1NJTFZJVVMJU3dlZXQgUGhlYmUsIHBpdHkgbWUuCisKK1BIRUJFCVdoeSwgSSBhbSBzb3JyeSBmb3IgdGhlZSwgZ2VudGxlIFNpbHZpdXMuCisKK1NJTFZJVVMJV2hlcmV2ZXIgc29ycm93IGlzLCByZWxpZWYgd291bGQgYmU6CisJSWYgeW91IGRvIHNvcnJvdyBhdCBteSBncmllZiBpbiBsb3ZlLAorCUJ5IGdpdmluZyBsb3ZlIHlvdXIgc29ycm93IGFuZCBteSBncmllZgorCVdlcmUgYm90aCBleHRlcm1pbmVkLgorCitQSEVCRQlUaG91IGhhc3QgbXkgbG92ZTogaXMgbm90IHRoYXQgbmVpZ2hib3VybHk/CisKK1NJTFZJVVMJSSB3b3VsZCBoYXZlIHlvdS4KKworUEhFQkUJICAgICAgICAgICAgICAgICAgV2h5LCB0aGF0IHdlcmUgY292ZXRvdXNuZXNzLgorCVNpbHZpdXMsIHRoZSB0aW1lIHdhcyB0aGF0IEkgaGF0ZWQgdGhlZSwKKwlBbmQgeWV0IGl0IGlzIG5vdCB0aGF0IEkgYmVhciB0aGVlIGxvdmU7CisJQnV0IHNpbmNlIHRoYXQgdGhvdSBjYW5zdCB0YWxrIG9mIGxvdmUgc28gd2VsbCwKKwlUaHkgY29tcGFueSwgd2hpY2ggZXJzdCB3YXMgaXJrc29tZSB0byBtZSwKKwlJIHdpbGwgZW5kdXJlLCBhbmQgSSdsbCBlbXBsb3kgdGhlZSB0b286CisJQnV0IGRvIG5vdCBsb29rIGZvciBmdXJ0aGVyIHJlY29tcGVuc2UKKwlUaGFuIHRoaW5lIG93biBnbGFkbmVzcyB0aGF0IHRob3UgYXJ0IGVtcGxveSdkLgorCitTSUxWSVVTCVNvIGhvbHkgYW5kIHNvIHBlcmZlY3QgaXMgbXkgbG92ZSwKKwlBbmQgSSBpbiBzdWNoIGEgcG92ZXJ0eSBvZiBncmFjZSwKKwlUaGF0IEkgc2hhbGwgdGhpbmsgaXQgYSBtb3N0IHBsZW50ZW91cyBjcm9wCisJVG8gZ2xlYW4gdGhlIGJyb2tlbiBlYXJzIGFmdGVyIHRoZSBtYW4KKwlUaGF0IHRoZSBtYWluIGhhcnZlc3QgcmVhcHM6IGxvb3NlIG5vdyBhbmQgdGhlbgorCUEgc2NhdHRlcidkIHNtaWxlLCBhbmQgdGhhdCBJJ2xsIGxpdmUgdXBvbi4KKworUEhFQkUJS25vdydzdCBub3cgdGhlIHlvdXRoIHRoYXQgc3Bva2UgdG8gbWUgZXJld2hpbGU/CisKK1NJTFZJVVMJTm90IHZlcnkgd2VsbCwgYnV0IEkgaGF2ZSBtZXQgaGltIG9mdDsKKwlBbmQgaGUgaGF0aCBib3VnaHQgdGhlIGNvdHRhZ2UgYW5kIHRoZSBib3VuZHMKKwlUaGF0IHRoZSBvbGQgY2FybG90IG9uY2Ugd2FzIG1hc3RlciBvZi4KKworUEhFQkUJVGhpbmsgbm90IEkgbG92ZSBoaW0sIHRob3VnaCBJIGFzayBmb3IgaGltOgorCSdUaXMgYnV0IGEgcGVldmlzaCBib3k7IHlldCBoZSB0YWxrcyB3ZWxsOworCUJ1dCB3aGF0IGNhcmUgSSBmb3Igd29yZHM/IHlldCB3b3JkcyBkbyB3ZWxsCisJV2hlbiBoZSB0aGF0IHNwZWFrcyB0aGVtIHBsZWFzZXMgdGhvc2UgdGhhdCBoZWFyLgorCUl0IGlzIGEgcHJldHR5IHlvdXRoOiBub3QgdmVyeSBwcmV0dHk6CisJQnV0LCBzdXJlLCBoZSdzIHByb3VkLCBhbmQgeWV0IGhpcyBwcmlkZSBiZWNvbWVzIGhpbToKKwlIZSdsbCBtYWtlIGEgcHJvcGVyIG1hbjogdGhlIGJlc3QgdGhpbmcgaW4gaGltCisJSXMgaGlzIGNvbXBsZXhpb247IGFuZCBmYXN0ZXIgdGhhbiBoaXMgdG9uZ3VlCisJRGlkIG1ha2Ugb2ZmZW5jZSBoaXMgZXllIGRpZCBoZWFsIGl0IHVwLgorCUhlIGlzIG5vdCB2ZXJ5IHRhbGw7IHlldCBmb3IgaGlzIHllYXJzIGhlJ3MgdGFsbDoKKwlIaXMgbGVnIGlzIGJ1dCBzbyBzbzsgYW5kIHlldCAndGlzIHdlbGw6CisJVGhlcmUgd2FzIGEgcHJldHR5IHJlZG5lc3MgaW4gaGlzIGxpcCwKKwlBIGxpdHRsZSByaXBlciBhbmQgbW9yZSBsdXN0eSByZWQKKwlUaGFuIHRoYXQgbWl4J2QgaW4gaGlzIGNoZWVrOyAndHdhcyBqdXN0IHRoZSBkaWZmZXJlbmNlCisJQmV0d2VlbiB0aGUgY29uc3RhbnQgcmVkIGFuZCBtaW5nbGVkIGRhbWFzay4KKwlUaGVyZSBiZSBzb21lIHdvbWVuLCBTaWx2aXVzLCBoYWQgdGhleSBtYXJrJ2QgaGltCisJSW4gcGFyY2VscyBhcyBJIGRpZCwgd291bGQgaGF2ZSBnb25lIG5lYXIKKwlUbyBmYWxsIGluIGxvdmUgd2l0aCBoaW07IGJ1dCwgZm9yIG15IHBhcnQsCisJSSBsb3ZlIGhpbSBub3Qgbm9yIGhhdGUgaGltIG5vdDsgYW5kIHlldAorCUkgaGF2ZSBtb3JlIGNhdXNlIHRvIGhhdGUgaGltIHRoYW4gdG8gbG92ZSBoaW06CisJRm9yIHdoYXQgaGFkIGhlIHRvIGRvIHRvIGNoaWRlIGF0IG1lPworCUhlIHNhaWQgbWluZSBleWVzIHdlcmUgYmxhY2sgYW5kIG15IGhhaXIgYmxhY2s6CisJQW5kLCBub3cgSSBhbSByZW1lbWJlcidkLCBzY29ybidkIGF0IG1lOgorCUkgbWFydmVsIHdoeSBJIGFuc3dlcidkIG5vdCBhZ2FpbjoKKwlCdXQgdGhhdCdzIGFsbCBvbmU7IG9taXR0YW5jZSBpcyBubyBxdWl0dGFuY2UuCisJSSdsbCB3cml0ZSB0byBoaW0gYSB2ZXJ5IHRhdW50aW5nIGxldHRlciwKKwlBbmQgdGhvdSBzaGFsdCBiZWFyIGl0OiB3aWx0IHRob3UsIFNpbHZpdXM/CisKK1NJTFZJVVMJUGhlYmUsIHdpdGggYWxsIG15IGhlYXJ0LgorCitQSEVCRQlJJ2xsIHdyaXRlIGl0IHN0cmFpZ2h0OworCVRoZSBtYXR0ZXIncyBpbiBteSBoZWFkIGFuZCBpbiBteSBoZWFydDoKKwlJIHdpbGwgYmUgYml0dGVyIHdpdGggaGltIGFuZCBwYXNzaW5nIHNob3J0LgorCUdvIHdpdGggbWUsIFNpbHZpdXMuCisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSVYKKworCisKK1NDRU5FIEkJVGhlIGZvcmVzdC4KKworCisJW0VudGVyIFJPU0FMSU5ELCBDRUxJQSwgYW5kIEpBUVVFU10KKworSkFRVUVTCUkgcHJpdGhlZSwgcHJldHR5IHlvdXRoLCBsZXQgbWUgYmUgYmV0dGVyIGFjcXVhaW50ZWQKKwl3aXRoIHRoZWUuCisKK1JPU0FMSU5ECVRoZXkgc2F5IHlvdSBhcmUgYSBtZWxhbmNob2x5IGZlbGxvdy4KKworSkFRVUVTCUkgYW0gc287IEkgZG8gbG92ZSBpdCBiZXR0ZXIgdGhhbiBsYXVnaGluZy4KKworUk9TQUxJTkQJVGhvc2UgdGhhdCBhcmUgaW4gZXh0cmVtaXR5IG9mIGVpdGhlciBhcmUgYWJvbWluYWJsZQorCWZlbGxvd3MgYW5kIGJldHJheSB0aGVtc2VsdmVzIHRvIGV2ZXJ5IG1vZGVybgorCWNlbnN1cmUgd29yc2UgdGhhbiBkcnVua2FyZHMuCisKK0pBUVVFUwlXaHksICd0aXMgZ29vZCB0byBiZSBzYWQgYW5kIHNheSBub3RoaW5nLgorCitST1NBTElORAlXaHkgdGhlbiwgJ3RpcyBnb29kIHRvIGJlIGEgcG9zdC4KKworSkFRVUVTCUkgaGF2ZSBuZWl0aGVyIHRoZSBzY2hvbGFyJ3MgbWVsYW5jaG9seSwgd2hpY2ggaXMKKwllbXVsYXRpb24sIG5vciB0aGUgbXVzaWNpYW4ncywgd2hpY2ggaXMgZmFudGFzdGljYWwsCisJbm9yIHRoZSBjb3VydGllcidzLCB3aGljaCBpcyBwcm91ZCwgbm9yIHRoZQorCXNvbGRpZXIncywgd2hpY2ggaXMgYW1iaXRpb3VzLCBub3IgdGhlIGxhd3llcidzLAorCXdoaWNoIGlzIHBvbGl0aWMsIG5vciB0aGUgbGFkeSdzLCB3aGljaCBpcyBuaWNlLCBub3IKKwl0aGUgbG92ZXIncywgd2hpY2ggaXMgYWxsIHRoZXNlOiBidXQgaXQgaXMgYQorCW1lbGFuY2hvbHkgb2YgbWluZSBvd24sIGNvbXBvdW5kZWQgb2YgbWFueSBzaW1wbGVzLAorCWV4dHJhY3RlZCBmcm9tIG1hbnkgb2JqZWN0cywgYW5kIGluZGVlZCB0aGUgc3VuZHJ5J3MKKwljb250ZW1wbGF0aW9uIG9mIG15IHRyYXZlbHMsIGluIHdoaWNoIG15IG9mdGVuCisJcnVtaW5hdGlvbiB3cmFwcyBtZSBtIGEgbW9zdCBodW1vcm91cyBzYWRuZXNzLgorCitST1NBTElORAlBIHRyYXZlbGxlciEgQnkgbXkgZmFpdGgsIHlvdSBoYXZlIGdyZWF0IHJlYXNvbiB0bworCWJlIHNhZDogSSBmZWFyIHlvdSBoYXZlIHNvbGQgeW91ciBvd24gbGFuZHMgdG8gc2VlCisJb3RoZXIgbWVuJ3M7IHRoZW4sIHRvIGhhdmUgc2VlbiBtdWNoIGFuZCB0byBoYXZlCisJbm90aGluZywgaXMgdG8gaGF2ZSByaWNoIGV5ZXMgYW5kIHBvb3IgaGFuZHMuCisKK0pBUVVFUwlZZXMsIEkgaGF2ZSBnYWluZWQgbXkgZXhwZXJpZW5jZS4KKworUk9TQUxJTkQJQW5kIHlvdXIgZXhwZXJpZW5jZSBtYWtlcyB5b3Ugc2FkOiBJIGhhZCByYXRoZXIgaGF2ZQorCWEgZm9vbCB0byBtYWtlIG1lIG1lcnJ5IHRoYW4gZXhwZXJpZW5jZSB0byBtYWtlIG1lCisJc2FkOyBhbmQgdG8gdHJhdmVsIGZvciBpdCB0b28hCisKKwlbRW50ZXIgT1JMQU5ET10KKworT1JMQU5ETwlHb29kIGRheSBhbmQgaGFwcGluZXNzLCBkZWFyIFJvc2FsaW5kIQorCitKQVFVRVMJTmF5LCB0aGVuLCBHb2QgYmUgd2knIHlvdSwgYW4geW91IHRhbGsgaW4gYmxhbmsgdmVyc2UuCisKKwlbRXhpdF0KKworUk9TQUxJTkQJRmFyZXdlbGwsIE1vbnNpZXVyIFRyYXZlbGxlcjogbG9vayB5b3UgbGlzcCBhbmQKKwl3ZWFyIHN0cmFuZ2Ugc3VpdHMsIGRpc2FibGUgYWxsIHRoZSBiZW5lZml0cyBvZiB5b3VyCisJb3duIGNvdW50cnksIGJlIG91dCBvZiBsb3ZlIHdpdGggeW91ciBuYXRpdml0eSBhbmQKKwlhbG1vc3QgY2hpZGUgR29kIGZvciBtYWtpbmcgeW91IHRoYXQgY291bnRlbmFuY2UgeW91CisJYXJlLCBvciBJIHdpbGwgc2NhcmNlIHRoaW5rIHlvdSBoYXZlIHN3YW0gaW4gYQorCWdvbmRvbGEuIFdoeSwgaG93IG5vdywgT3JsYW5kbyEgd2hlcmUgaGF2ZSB5b3UgYmVlbgorCWFsbCB0aGlzIHdoaWxlPyBZb3UgYSBsb3ZlciEgQW4geW91IHNlcnZlIG1lIHN1Y2gKKwlhbm90aGVyIHRyaWNrLCBuZXZlciBjb21lIGluIG15IHNpZ2h0IG1vcmUuCisKK09STEFORE8JTXkgZmFpciBSb3NhbGluZCwgSSBjb21lIHdpdGhpbiBhbiBob3VyIG9mIG15IHByb21pc2UuCisKK1JPU0FMSU5ECUJyZWFrIGFuIGhvdXIncyBwcm9taXNlIGluIGxvdmUhIEhlIHRoYXQgd2lsbAorCWRpdmlkZSBhIG1pbnV0ZSBpbnRvIGEgdGhvdXNhbmQgcGFydHMgYW5kIGJyZWFrIGJ1dAorCWEgcGFydCBvZiB0aGUgdGhvdXNhbmR0aCBwYXJ0IG9mIGEgbWludXRlIGluIHRoZQorCWFmZmFpcnMgb2YgbG92ZSwgaXQgbWF5IGJlIHNhaWQgb2YgaGltIHRoYXQgQ3VwaWQKKwloYXRoIGNsYXBwZWQgaGltIG8nIHRoZSBzaG91bGRlciwgYnV0IEknbGwgd2FycmFudAorCWhpbSBoZWFydC13aG9sZS4KKworT1JMQU5ETwlQYXJkb24gbWUsIGRlYXIgUm9zYWxpbmQuCisKK1JPU0FMSU5ECU5heSwgYW4geW91IGJlIHNvIHRhcmR5LCBjb21lIG5vIG1vcmUgaW4gbXkgc2lnaHQ6IEkKKwloYWQgYXMgbGllZiBiZSB3b29lZCBvZiBhIHNuYWlsLgorCitPUkxBTkRPCU9mIGEgc25haWw/CisKK1JPU0FMSU5ECUF5LCBvZiBhIHNuYWlsOyBmb3IgdGhvdWdoIGhlIGNvbWVzIHNsb3dseSwgaGUKKwljYXJyaWVzIGhpcyBob3VzZSBvbiBoaXMgaGVhZDsgYSBiZXR0ZXIgam9pbnR1cmUsCisJSSB0aGluaywgdGhhbiB5b3UgbWFrZSBhIHdvbWFuOiBiZXNpZGVzIGhlIGJyaW5ncworCWhpcyBkZXN0aW55IHdpdGggaGltLgorCitPUkxBTkRPCVdoYXQncyB0aGF0PworCitST1NBTElORAlXaHksIGhvcm5zLCB3aGljaCBzdWNoIGFzIHlvdSBhcmUgZmFpbiB0byBiZQorCWJlaG9sZGluZyB0byB5b3VyIHdpdmVzIGZvcjogYnV0IGhlIGNvbWVzIGFybWVkIGluCisJaGlzIGZvcnR1bmUgYW5kIHByZXZlbnRzIHRoZSBzbGFuZGVyIG9mIGhpcyB3aWZlLgorCitPUkxBTkRPCVZpcnR1ZSBpcyBubyBob3JuLW1ha2VyOyBhbmQgbXkgUm9zYWxpbmQgaXMgdmlydHVvdXMuCisKK1JPU0FMSU5ECUFuZCBJIGFtIHlvdXIgUm9zYWxpbmQuCisKK0NFTElBCUl0IHBsZWFzZXMgaGltIHRvIGNhbGwgeW91IHNvOyBidXQgaGUgaGF0aCBhCisJUm9zYWxpbmQgb2YgYSBiZXR0ZXIgbGVlciB0aGFuIHlvdS4KKworUk9TQUxJTkQJQ29tZSwgd29vIG1lLCB3b28gbWUsIGZvciBub3cgSSBhbSBpbiBhIGhvbGlkYXkKKwlodW1vdXIgYW5kIGxpa2UgZW5vdWdoIHRvIGNvbnNlbnQuIFdoYXQgd291bGQgeW91CisJc2F5IHRvIG1lIG5vdywgYW4gSSB3ZXJlIHlvdXIgdmVyeSB2ZXJ5IFJvc2FsaW5kPworCitPUkxBTkRPCUkgd291bGQga2lzcyBiZWZvcmUgSSBzcG9rZS4KKworUk9TQUxJTkQJTmF5LCB5b3Ugd2VyZSBiZXR0ZXIgc3BlYWsgZmlyc3QsIGFuZCB3aGVuIHlvdSB3ZXJlCisJZ3JhdmVsbGVkIGZvciBsYWNrIG9mIG1hdHRlciwgeW91IG1pZ2h0IHRha2UKKwlvY2Nhc2lvbiB0byBraXNzLiBWZXJ5IGdvb2Qgb3JhdG9ycywgd2hlbiB0aGV5IGFyZQorCW91dCwgdGhleSB3aWxsIHNwaXQ7IGFuZCBmb3IgbG92ZXJzIGxhY2tpbmctLUdvZAorCXdhcm4gdXMhLS1tYXR0ZXIsIHRoZSBjbGVhbmxpZXN0IHNoaWZ0IGlzIHRvIGtpc3MuCisKK09STEFORE8JSG93IGlmIHRoZSBraXNzIGJlIGRlbmllZD8KKworUk9TQUxJTkQJVGhlbiBzaGUgcHV0cyB5b3UgdG8gZW50cmVhdHksIGFuZCB0aGVyZSBiZWdpbnMgbmV3IG1hdHRlci4KKworT1JMQU5ETwlXaG8gY291bGQgYmUgb3V0LCBiZWluZyBiZWZvcmUgaGlzIGJlbG92ZWQgbWlzdHJlc3M/CisKK1JPU0FMSU5ECU1hcnJ5LCB0aGF0IHNob3VsZCB5b3UsIGlmIEkgd2VyZSB5b3VyIG1pc3RyZXNzLCBvcgorCUkgc2hvdWxkIHRoaW5rIG15IGhvbmVzdHkgcmFua2VyIHRoYW4gbXkgd2l0LgorCitPUkxBTkRPCVdoYXQsIG9mIG15IHN1aXQ/CisKK1JPU0FMSU5ECU5vdCBvdXQgb2YgeW91ciBhcHBhcmVsLCBhbmQgeWV0IG91dCBvZiB5b3VyIHN1aXQuCisJQW0gbm90IEkgeW91ciBSb3NhbGluZD8KKworT1JMQU5ETwlJIHRha2Ugc29tZSBqb3kgdG8gc2F5IHlvdSBhcmUsIGJlY2F1c2UgSSB3b3VsZCBiZQorCXRhbGtpbmcgb2YgaGVyLgorCitST1NBTElORAlXZWxsIGluIGhlciBwZXJzb24gSSBzYXkgSSB3aWxsIG5vdCBoYXZlIHlvdS4KKworT1JMQU5ETwlUaGVuIGluIG1pbmUgb3duIHBlcnNvbiBJIGRpZS4KKworUk9TQUxJTkQJTm8sIGZhaXRoLCBkaWUgYnkgYXR0b3JuZXkuIFRoZSBwb29yIHdvcmxkIGlzCisJYWxtb3N0IHNpeCB0aG91c2FuZCB5ZWFycyBvbGQsIGFuZCBpbiBhbGwgdGhpcyB0aW1lCisJdGhlcmUgd2FzIG5vdCBhbnkgbWFuIGRpZWQgaW4gaGlzIG93biBwZXJzb24sCisJdmlkZWxpY2l0LCBpbiBhIGxvdmUtY2F1c2UuIFRyb2lsdXMgaGFkIGhpcyBicmFpbnMKKwlkYXNoZWQgb3V0IHdpdGggYSBHcmVjaWFuIGNsdWI7IHlldCBoZSBkaWQgd2hhdCBoZQorCWNvdWxkIHRvIGRpZSBiZWZvcmUsIGFuZCBoZSBpcyBvbmUgb2YgdGhlIHBhdHRlcm5zCisJb2YgbG92ZS4gTGVhbmRlciwgaGUgd291bGQgaGF2ZSBsaXZlZCBtYW55IGEgZmFpcgorCXllYXIsIHRob3VnaCBIZXJvIGhhZCB0dXJuZWQgbnVuLCBpZiBpdCBoYWQgbm90IGJlZW4KKwlmb3IgYSBob3QgbWlkc3VtbWVyIG5pZ2h0OyBmb3IsIGdvb2QgeW91dGgsIGhlIHdlbnQKKwlidXQgZm9ydGggdG8gd2FzaCBoaW0gaW4gdGhlIEhlbGxlc3BvbnQgYW5kIGJlaW5nCisJdGFrZW4gd2l0aCB0aGUgY3JhbXAgd2FzIGRyb3duZWQgYW5kIHRoZSBmb29saXNoCisJY29yb25lcnMgb2YgdGhhdCBhZ2UgZm91bmQgaXQgd2FzICdIZXJvIG9mIFNlc3Rvcy4nCisJQnV0IHRoZXNlIGFyZSBhbGwgbGllczogbWVuIGhhdmUgZGllZCBmcm9tIHRpbWUgdG8KKwl0aW1lIGFuZCB3b3JtcyBoYXZlIGVhdGVuIHRoZW0sIGJ1dCBub3QgZm9yIGxvdmUuCisKK09STEFORE8JSSB3b3VsZCBub3QgaGF2ZSBteSByaWdodCBSb3NhbGluZCBvZiB0aGlzIG1pbmQsCisJZm9yLCBJIHByb3Rlc3QsIGhlciBmcm93biBtaWdodCBraWxsIG1lLgorCitST1NBTElORAlCeSB0aGlzIGhhbmQsIGl0IHdpbGwgbm90IGtpbGwgYSBmbHkuIEJ1dCBjb21lLCBub3cKKwlJIHdpbGwgYmUgeW91ciBSb3NhbGluZCBpbiBhIG1vcmUgY29taW5nLW9uCisJZGlzcG9zaXRpb24sIGFuZCBhc2sgbWUgd2hhdCB5b3Ugd2lsbC4gSSB3aWxsIGdyYW50CisJaXQuCisKK09STEFORE8JVGhlbiBsb3ZlIG1lLCBSb3NhbGluZC4KKworUk9TQUxJTkQJWWVzLCBmYWl0aCwgd2lsbCBJLCBGcmlkYXlzIGFuZCBTYXR1cmRheXMgYW5kIGFsbC4KKworT1JMQU5ETwlBbmQgd2lsdCB0aG91IGhhdmUgbWU/CisKK1JPU0FMSU5ECUF5LCBhbmQgdHdlbnR5IHN1Y2guCisKK09STEFORE8JV2hhdCBzYXllc3QgdGhvdT8KKworUk9TQUxJTkQJQXJlIHlvdSBub3QgZ29vZD8KKworT1JMQU5ETwlJIGhvcGUgc28uCisKK1JPU0FMSU5ECVdoeSB0aGVuLCBjYW4gb25lIGRlc2lyZSB0b28gbXVjaCBvZiBhIGdvb2QgdGhpbmc/CisJQ29tZSwgc2lzdGVyLCB5b3Ugc2hhbGwgYmUgdGhlIHByaWVzdCBhbmQgbWFycnkgdXMuCisJR2l2ZSBtZSB5b3VyIGhhbmQsIE9ybGFuZG8uIFdoYXQgZG8geW91IHNheSwgc2lzdGVyPworCitPUkxBTkRPCVByYXkgdGhlZSwgbWFycnkgdXMuCisKK0NFTElBCUkgY2Fubm90IHNheSB0aGUgd29yZHMuCisKK1JPU0FMSU5ECVlvdSBtdXN0IGJlZ2luLCAnV2lsbCB5b3UsIE9ybGFuZG8tLScKKworQ0VMSUEJR28gdG8uIFdpbGwgeW91LCBPcmxhbmRvLCBoYXZlIHRvIHdpZmUgdGhpcyBSb3NhbGluZD8KKworT1JMQU5ETwlJIHdpbGwuCisKK1JPU0FMSU5ECUF5LCBidXQgd2hlbj8KKworT1JMQU5ETwlXaHkgbm93OyBhcyBmYXN0IGFzIHNoZSBjYW4gbWFycnkgdXMuCisKK1JPU0FMSU5ECVRoZW4geW91IG11c3Qgc2F5ICdJIHRha2UgdGhlZSwgUm9zYWxpbmQsIGZvciB3aWZlLicKKworT1JMQU5ETwlJIHRha2UgdGhlZSwgUm9zYWxpbmQsIGZvciB3aWZlLgorCitST1NBTElORAlJIG1pZ2h0IGFzayB5b3UgZm9yIHlvdXIgY29tbWlzc2lvbjsgYnV0IEkgZG8gdGFrZQorCXRoZWUsIE9ybGFuZG8sIGZvciBteSBodXNiYW5kOiB0aGVyZSdzIGEgZ2lybCBnb2VzCisJYmVmb3JlIHRoZSBwcmllc3Q7IGFuZCBjZXJ0YWlubHkgYSB3b21hbidzIHRob3VnaHQKKwlydW5zIGJlZm9yZSBoZXIgYWN0aW9ucy4KKworT1JMQU5ETwlTbyBkbyBhbGwgdGhvdWdodHM7IHRoZXkgYXJlIHdpbmdlZC4KKworUk9TQUxJTkQJTm93IHRlbGwgbWUgaG93IGxvbmcgeW91IHdvdWxkIGhhdmUgaGVyIGFmdGVyIHlvdQorCWhhdmUgcG9zc2Vzc2VkIGhlci4KKworT1JMQU5ETwlGb3IgZXZlciBhbmQgYSBkYXkuCisKK1JPU0FMSU5ECVNheSAnYSBkYXksJyB3aXRob3V0IHRoZSAnZXZlci4nIE5vLCBubywgT3JsYW5kbzsKKwltZW4gYXJlIEFwcmlsIHdoZW4gdGhleSB3b28sIERlY2VtYmVyIHdoZW4gdGhleSB3ZWQ6CisJbWFpZHMgYXJlIE1heSB3aGVuIHRoZXkgYXJlIG1haWRzLCBidXQgdGhlIHNreQorCWNoYW5nZXMgd2hlbiB0aGV5IGFyZSB3aXZlcy4gSSB3aWxsIGJlIG1vcmUgamVhbG91cworCW9mIHRoZWUgdGhhbiBhIEJhcmJhcnkgY29jay1waWdlb24gb3ZlciBoaXMgaGVuLAorCW1vcmUgY2xhbW9yb3VzIHRoYW4gYSBwYXJyb3QgYWdhaW5zdCByYWluLCBtb3JlCisJbmV3LWZhbmdsZWQgdGhhbiBhbiBhcGUsIG1vcmUgZ2lkZHkgaW4gbXkgZGVzaXJlcworCXRoYW4gYSBtb25rZXk6IEkgd2lsbCB3ZWVwIGZvciBub3RoaW5nLCBsaWtlIERpYW5hCisJaW4gdGhlIGZvdW50YWluLCBhbmQgSSB3aWxsIGRvIHRoYXQgd2hlbiB5b3UgYXJlCisJZGlzcG9zZWQgdG8gYmUgbWVycnk7IEkgd2lsbCBsYXVnaCBsaWtlIGEgaHllbiwgYW5kCisJdGhhdCB3aGVuIHRob3UgYXJ0IGluY2xpbmVkIHRvIHNsZWVwLgorCitPUkxBTkRPCUJ1dCB3aWxsIG15IFJvc2FsaW5kIGRvIHNvPworCitST1NBTElORAlCeSBteSBsaWZlLCBzaGUgd2lsbCBkbyBhcyBJIGRvLgorCitPUkxBTkRPCU8sIGJ1dCBzaGUgaXMgd2lzZS4KKworUk9TQUxJTkQJT3IgZWxzZSBzaGUgY291bGQgbm90IGhhdmUgdGhlIHdpdCB0byBkbyB0aGlzOiB0aGUKKwl3aXNlciwgdGhlIHdheXdhcmRlcjogbWFrZSB0aGUgZG9vcnMgdXBvbiBhIHdvbWFuJ3MKKwl3aXQgYW5kIGl0IHdpbGwgb3V0IGF0IHRoZSBjYXNlbWVudDsgc2h1dCB0aGF0IGFuZAorCSd0d2lsbCBvdXQgYXQgdGhlIGtleS1ob2xlOyBzdG9wIHRoYXQsICd0d2lsbCBmbHkKKwl3aXRoIHRoZSBzbW9rZSBvdXQgYXQgdGhlIGNoaW1uZXkuCisKK09STEFORE8JQSBtYW4gdGhhdCBoYWQgYSB3aWZlIHdpdGggc3VjaCBhIHdpdCwgaGUgbWlnaHQgc2F5CisJJ1dpdCwgd2hpdGhlciB3aWx0PycKKworUk9TQUxJTkQJTmF5LCB5b3UgbWlnaHQga2VlcCB0aGF0IGNoZXF1ZSBmb3IgaXQgdGlsbCB5b3UgbWV0CisJeW91ciB3aWZlJ3Mgd2l0IGdvaW5nIHRvIHlvdXIgbmVpZ2hib3VyJ3MgYmVkLgorCitPUkxBTkRPCUFuZCB3aGF0IHdpdCBjb3VsZCB3aXQgaGF2ZSB0byBleGN1c2UgdGhhdD8KKworUk9TQUxJTkQJTWFycnksIHRvIHNheSBzaGUgY2FtZSB0byBzZWVrIHlvdSB0aGVyZS4gWW91IHNoYWxsCisJbmV2ZXIgdGFrZSBoZXIgd2l0aG91dCBoZXIgYW5zd2VyLCB1bmxlc3MgeW91IHRha2UKKwloZXIgd2l0aG91dCBoZXIgdG9uZ3VlLiBPLCB0aGF0IHdvbWFuIHRoYXQgY2Fubm90CisJbWFrZSBoZXIgZmF1bHQgaGVyIGh1c2JhbmQncyBvY2Nhc2lvbiwgbGV0IGhlcgorCW5ldmVyIG51cnNlIGhlciBjaGlsZCBoZXJzZWxmLCBmb3Igc2hlIHdpbGwgYnJlZWQKKwlpdCBsaWtlIGEgZm9vbCEKKworT1JMQU5ETwlGb3IgdGhlc2UgdHdvIGhvdXJzLCBSb3NhbGluZCwgSSB3aWxsIGxlYXZlIHRoZWUuCisKK1JPU0FMSU5ECUFsYXMhIGRlYXIgbG92ZSwgSSBjYW5ub3QgbGFjayB0aGVlIHR3byBob3Vycy4KKworT1JMQU5ETwlJIG11c3QgYXR0ZW5kIHRoZSBkdWtlIGF0IGRpbm5lcjogYnkgdHdvIG8nY2xvY2sgSQorCXdpbGwgYmUgd2l0aCB0aGVlIGFnYWluLgorCitST1NBTElORAlBeSwgZ28geW91ciB3YXlzLCBnbyB5b3VyIHdheXM7IEkga25ldyB3aGF0IHlvdQorCXdvdWxkIHByb3ZlOiBteSBmcmllbmRzIHRvbGQgbWUgYXMgbXVjaCwgYW5kIEkKKwl0aG91Z2h0IG5vIGxlc3M6IHRoYXQgZmxhdHRlcmluZyB0b25ndWUgb2YgeW91cnMKKwl3b24gbWU6ICd0aXMgYnV0IG9uZSBjYXN0IGF3YXksIGFuZCBzbywgY29tZSwKKwlkZWF0aCEgVHdvIG8nY2xvY2sgaXMgeW91ciBob3VyPworCitPUkxBTkRPCUF5LCBzd2VldCBSb3NhbGluZC4KKworUk9TQUxJTkQJQnkgbXkgdHJvdGgsIGFuZCBpbiBnb29kIGVhcm5lc3QsIGFuZCBzbyBHb2QgbWVuZAorCW1lLCBhbmQgYnkgYWxsIHByZXR0eSBvYXRocyB0aGF0IGFyZSBub3QgZGFuZ2Vyb3VzLAorCWlmIHlvdSBicmVhayBvbmUgam90IG9mIHlvdXIgcHJvbWlzZSBvciBjb21lIG9uZQorCW1pbnV0ZSBiZWhpbmQgeW91ciBob3VyLCBJIHdpbGwgdGhpbmsgeW91IHRoZSBtb3N0CisJcGF0aGV0aWNhbCBicmVhay1wcm9taXNlIGFuZCB0aGUgbW9zdCBob2xsb3cgbG92ZXIKKwlhbmQgdGhlIG1vc3QgdW53b3J0aHkgb2YgaGVyIHlvdSBjYWxsIFJvc2FsaW5kIHRoYXQKKwltYXkgYmUgY2hvc2VuIG91dCBvZiB0aGUgZ3Jvc3MgYmFuZCBvZiB0aGUKKwl1bmZhaXRoZnVsOiB0aGVyZWZvcmUgYmV3YXJlIG15IGNlbnN1cmUgYW5kIGtlZXAKKwl5b3VyIHByb21pc2UuCisKK09STEFORE8JV2l0aCBubyBsZXNzIHJlbGlnaW9uIHRoYW4gaWYgdGhvdSB3ZXJ0IGluZGVlZCBteQorCVJvc2FsaW5kOiBzbyBhZGlldS4KKworUk9TQUxJTkQJV2VsbCwgVGltZSBpcyB0aGUgb2xkIGp1c3RpY2UgdGhhdCBleGFtaW5lcyBhbGwgc3VjaAorCW9mZmVuZGVycywgYW5kIGxldCBUaW1lIHRyeTogYWRpZXUuCisKKwlbRXhpdCBPUkxBTkRPXQorCitDRUxJQQlZb3UgaGF2ZSBzaW1wbHkgbWlzdXNlZCBvdXIgc2V4IGluIHlvdXIgbG92ZS1wcmF0ZToKKwl3ZSBtdXN0IGhhdmUgeW91ciBkb3VibGV0IGFuZCBob3NlIHBsdWNrZWQgb3ZlciB5b3VyCisJaGVhZCwgYW5kIHNob3cgdGhlIHdvcmxkIHdoYXQgdGhlIGJpcmQgaGF0aCBkb25lIHRvCisJaGVyIG93biBuZXN0LgorCitST1NBTElORAlPIGNveiwgY296LCBjb3osIG15IHByZXR0eSBsaXR0bGUgY296LCB0aGF0IHRob3UKKwlkaWRzdCBrbm93IGhvdyBtYW55IGZhdGhvbSBkZWVwIEkgYW0gaW4gbG92ZSEgQnV0CisJaXQgY2Fubm90IGJlIHNvdW5kZWQ6IG15IGFmZmVjdGlvbiBoYXRoIGFuIHVua25vd24KKwlib3R0b20sIGxpa2UgdGhlIGJheSBvZiBQb3J0dWdhbC4KKworQ0VMSUEJT3IgcmF0aGVyLCBib3R0b21sZXNzLCB0aGF0IGFzIGZhc3QgYXMgeW91IHBvdXIKKwlhZmZlY3Rpb24gaW4sIGl0IHJ1bnMgb3V0LgorCitST1NBTElORAlObywgdGhhdCBzYW1lIHdpY2tlZCBiYXN0YXJkIG9mIFZlbnVzIHRoYXQgd2FzIGJlZ290CisJb2YgdGhvdWdodCwgY29uY2VpdmVkIG9mIHNwbGVlbiBhbmQgYm9ybiBvZiBtYWRuZXNzLAorCXRoYXQgYmxpbmQgcmFzY2FsbHkgYm95IHRoYXQgYWJ1c2VzIGV2ZXJ5IG9uZSdzIGV5ZXMKKwliZWNhdXNlIGhpcyBvd24gYXJlIG91dCwgbGV0IGhpbSBiZSBqdWRnZSBob3cgZGVlcCBJCisJYW0gaW4gbG92ZS4gSSdsbCB0ZWxsIHRoZWUsIEFsaWVuYSwgSSBjYW5ub3QgYmUgb3V0CisJb2YgdGhlIHNpZ2h0IG9mIE9ybGFuZG86IEknbGwgZ28gZmluZCBhIHNoYWRvdyBhbmQKKwlzaWdoIHRpbGwgaGUgY29tZS4KKworQ0VMSUEJQW5kIEknbGwgc2xlZXAuCisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgSVYKKworCisKK1NDRU5FIElJCVRoZSBmb3Jlc3QuCisKKworCVtFbnRlciBKQVFVRVMsIExvcmRzLCBhbmQgRm9yZXN0ZXJzXQorCitKQVFVRVMJV2hpY2ggaXMgaGUgdGhhdCBraWxsZWQgdGhlIGRlZXI/CisKK0EgTG9yZAlTaXIsIGl0IHdhcyBJLgorCitKQVFVRVMJTGV0J3MgcHJlc2VudCBoaW0gdG8gdGhlIGR1a2UsIGxpa2UgYSBSb21hbgorCWNvbnF1ZXJvcjsgYW5kIGl0IHdvdWxkIGRvIHdlbGwgdG8gc2V0IHRoZSBkZWVyJ3MKKwlob3JucyB1cG9uIGhpcyBoZWFkLCBmb3IgYSBicmFuY2ggb2YgdmljdG9yeS4gSGF2ZQorCXlvdSBubyBzb25nLCBmb3Jlc3RlciwgZm9yIHRoaXMgcHVycG9zZT8KKworRm9yZXN0ZXIJWWVzLCBzaXIuCisKK0pBUVVFUwlTaW5nIGl0OiAndGlzIG5vIG1hdHRlciBob3cgaXQgYmUgaW4gdHVuZSwgc28gaXQKKwltYWtlIG5vaXNlIGVub3VnaC4KKwkKKwlTT05HLgorRm9yZXN0ZXIJV2hhdCBzaGFsbCBoZSBoYXZlIHRoYXQga2lsbCdkIHRoZSBkZWVyPworCUhpcyBsZWF0aGVyIHNraW4gYW5kIGhvcm5zIHRvIHdlYXIuCisJVGhlbiBzaW5nIGhpbSBob21lOworCisJW1RoZSByZXN0IHNoYWxsIGJlYXIgdGhpcyBidXJkZW5dCisKKwlUYWtlIHRob3Ugbm8gc2Nvcm4gdG8gd2VhciB0aGUgaG9ybjsKKwlJdCB3YXMgYSBjcmVzdCBlcmUgdGhvdSB3YXN0IGJvcm46CisJVGh5IGZhdGhlcidzIGZhdGhlciB3b3JlIGl0LAorCUFuZCB0aHkgZmF0aGVyIGJvcmUgaXQ6CisJVGhlIGhvcm4sIHRoZSBob3JuLCB0aGUgbHVzdHkgaG9ybgorCUlzIG5vdCBhIHRoaW5nIHRvIGxhdWdoIHRvIHNjb3JuLgorCisJW0V4ZXVudF0KKworCisKKworCUFTIFlPVSBMSUtFIElUCisKKworQUNUIElWCisKKworCitTQ0VORSBJSUkJVGhlIGZvcmVzdC4KKworCisJW0VudGVyIFJPU0FMSU5EIGFuZCBDRUxJQV0KKworUk9TQUxJTkQJSG93IHNheSB5b3Ugbm93PyBJcyBpdCBub3QgcGFzdCB0d28gbydjbG9jaz8gYW5kCisJaGVyZSBtdWNoIE9ybGFuZG8hCisKK0NFTElBCUkgd2FycmFudCB5b3UsIHdpdGggcHVyZSBsb3ZlIGFuZCB0cm91YmxlZCBicmFpbiwgaGUKKwloYXRoIHRhJ2VuIGhpcyBib3cgYW5kIGFycm93cyBhbmQgaXMgZ29uZSBmb3J0aCB0bworCXNsZWVwLiBMb29rLCB3aG8gY29tZXMgaGVyZS4KKworCVtFbnRlciBTSUxWSVVTXQorCitTSUxWSVVTCU15IGVycmFuZCBpcyB0byB5b3UsIGZhaXIgeW91dGg7CisJTXkgZ2VudGxlIFBoZWJlIGJpZCBtZSBnaXZlIHlvdSB0aGlzOgorCUkga25vdyBub3QgdGhlIGNvbnRlbnRzOyBidXQsIGFzIEkgZ3Vlc3MKKwlCeSB0aGUgc3Rlcm4gYnJvdyBhbmQgd2FzcGlzaCBhY3Rpb24KKwlXaGljaCBzaGUgZGlkIHVzZSBhcyBzaGUgd2FzIHdyaXRpbmcgb2YgaXQsCisJSXQgYmVhcnMgYW4gYW5ncnkgdGVub3I6IHBhcmRvbiBtZToKKwlJIGFtIGJ1dCBhcyBhIGd1aWx0bGVzcyBtZXNzZW5nZXIuCisKK1JPU0FMSU5ECVBhdGllbmNlIGhlcnNlbGYgd291bGQgc3RhcnRsZSBhdCB0aGlzIGxldHRlcgorCUFuZCBwbGF5IHRoZSBzd2FnZ2VyZXI7IGJlYXIgdGhpcywgYmVhciBhbGw6CisJU2hlIHNheXMgSSBhbSBub3QgZmFpciwgdGhhdCBJIGxhY2sgbWFubmVyczsKKwlTaGUgY2FsbHMgbWUgcHJvdWQsIGFuZCB0aGF0IHNoZSBjb3VsZCBub3QgbG92ZSBtZSwKKwlXZXJlIG1hbiBhcyByYXJlIGFzIHBob2VuaXguICdPZCdzIG15IHdpbGwhCisJSGVyIGxvdmUgaXMgbm90IHRoZSBoYXJlIHRoYXQgSSBkbyBodW50OgorCVdoeSB3cml0ZXMgc2hlIHNvIHRvIG1lPyBXZWxsLCBzaGVwaGVyZCwgd2VsbCwKKwlUaGlzIGlzIGEgbGV0dGVyIG9mIHlvdXIgb3duIGRldmljZS4KKworU0lMVklVUwlObywgSSBwcm90ZXN0LCBJIGtub3cgbm90IHRoZSBjb250ZW50czoKKwlQaGViZSBkaWQgd3JpdGUgaXQuCisKK1JPU0FMSU5ECUNvbWUsIGNvbWUsIHlvdSBhcmUgYSBmb29sCisJQW5kIHR1cm4nZCBpbnRvIHRoZSBleHRyZW1pdHkgb2YgbG92ZS4KKwlJIHNhdyBoZXIgaGFuZDogc2hlIGhhcyBhIGxlYXRoZXJuIGhhbmQuCisJQSBmcmVlc3RvbmUtY29sb3VyJ2QgaGFuZDsgSSB2ZXJpbHkgZGlkIHRoaW5rCisJVGhhdCBoZXIgb2xkIGdsb3ZlcyB3ZXJlIG9uLCBidXQgJ3R3YXMgaGVyIGhhbmRzOgorCVNoZSBoYXMgYSBodXN3aWZlJ3MgaGFuZDsgYnV0IHRoYXQncyBubyBtYXR0ZXI6CisJSSBzYXkgc2hlIG5ldmVyIGRpZCBpbnZlbnQgdGhpcyBsZXR0ZXI7CisJVGhpcyBpcyBhIG1hbidzIGludmVudGlvbiBhbmQgaGlzIGhhbmQuCisKK1NJTFZJVVMJU3VyZSwgaXQgaXMgaGVycy4KKworUk9TQUxJTkQJV2h5LCAndGlzIGEgYm9pc3Rlcm91cyBhbmQgYSBjcnVlbCBzdHlsZS4KKwlBIHN0eWxlIGZvci1jaGFsbGVuZ2Vyczsgd2h5LCBzaGUgZGVmaWVzIG1lLAorCUxpa2UgVHVyayB0byBDaHJpc3RpYW46IHdvbWVuJ3MgZ2VudGxlIGJyYWluCisJQ291bGQgbm90IGRyb3AgZm9ydGggc3VjaCBnaWFudC1ydWRlIGludmVudGlvbgorCVN1Y2ggRXRoaW9wZSB3b3JkcywgYmxhY2tlciBpbiB0aGVpciBlZmZlY3QKKwlUaGFuIGluIHRoZWlyIGNvdW50ZW5hbmNlLiBXaWxsIHlvdSBoZWFyIHRoZSBsZXR0ZXI/CisKK1NJTFZJVVMJU28gcGxlYXNlIHlvdSwgZm9yIEkgbmV2ZXIgaGVhcmQgaXQgeWV0OworCVlldCBoZWFyZCB0b28gbXVjaCBvZiBQaGViZSdzIGNydWVsdHkuCisKK1JPU0FMSU5ECVNoZSBQaGViZXMgbWU6IG1hcmsgaG93IHRoZSB0eXJhbnQgd3JpdGVzLgorCisJW1JlYWRzXQorCisJQXJ0IHRob3UgZ29kIHRvIHNoZXBoZXJkIHR1cm4nZCwKKwlUaGF0IGEgbWFpZGVuJ3MgaGVhcnQgaGF0aCBidXJuJ2Q/CisJQ2FuIGEgd29tYW4gcmFpbCB0aHVzPworCitTSUxWSVVTCUNhbGwgeW91IHRoaXMgcmFpbGluZz8KKworUk9TQUxJTkQJW1JlYWRzXQorCisJV2h5LCB0aHkgZ29kaGVhZCBsYWlkIGFwYXJ0LAorCVdhcnInc3QgdGhvdSB3aXRoIGEgd29tYW4ncyBoZWFydD8KKwlEaWQgeW91IGV2ZXIgaGVhciBzdWNoIHJhaWxpbmc/CisJV2hpbGVzIHRoZSBleWUgb2YgbWFuIGRpZCB3b28gbWUsCisJVGhhdCBjb3VsZCBkbyBubyB2ZW5nZWFuY2UgdG8gbWUuCisJTWVhbmluZyBtZSBhIGJlYXN0LgorCUlmIHRoZSBzY29ybiBvZiB5b3VyIGJyaWdodCBleW5lCisJSGF2ZSBwb3dlciB0byByYWlzZSBzdWNoIGxvdmUgaW4gbWluZSwKKwlBbGFjaywgaW4gbWUgd2hhdCBzdHJhbmdlIGVmZmVjdAorCVdvdWxkIHRoZXkgd29yayBpbiBtaWxkIGFzcGVjdCEKKwlXaGlsZXMgeW91IGNoaWQgbWUsIEkgZGlkIGxvdmU7CisJSG93IHRoZW4gbWlnaHQgeW91ciBwcmF5ZXJzIG1vdmUhCisJSGUgdGhhdCBicmluZ3MgdGhpcyBsb3ZlIHRvIHRoZWUKKwlMaXR0bGUga25vd3MgdGhpcyBsb3ZlIGluIG1lOgorCUFuZCBieSBoaW0gc2VhbCB1cCB0aHkgbWluZDsKKwlXaGV0aGVyIHRoYXQgdGh5IHlvdXRoIGFuZCBraW5kCisJV2lsbCB0aGUgZmFpdGhmdWwgb2ZmZXIgdGFrZQorCU9mIG1lIGFuZCBhbGwgdGhhdCBJIGNhbiBtYWtlOworCU9yIGVsc2UgYnkgaGltIG15IGxvdmUgZGVueSwKKwlBbmQgdGhlbiBJJ2xsIHN0dWR5IGhvdyB0byBkaWUuCisKK1NJTFZJVVMJQ2FsbCB5b3UgdGhpcyBjaGlkaW5nPworCitDRUxJQQlBbGFzLCBwb29yIHNoZXBoZXJkIQorCitST1NBTElORAlEbyB5b3UgcGl0eSBoaW0/IG5vLCBoZSBkZXNlcnZlcyBubyBwaXR5LiBXaWx0CisJdGhvdSBsb3ZlIHN1Y2ggYSB3b21hbj8gV2hhdCwgdG8gbWFrZSB0aGVlIGFuCisJaW5zdHJ1bWVudCBhbmQgcGxheSBmYWxzZSBzdHJhaW5zIHVwb24gdGhlZSEgbm90IHRvCisJYmUgZW5kdXJlZCEgV2VsbCwgZ28geW91ciB3YXkgdG8gaGVyLCBmb3IgSSBzZWUKKwlsb3ZlIGhhdGggbWFkZSB0aGVlIGEgdGFtZSBzbmFrZSwgYW5kIHNheSB0aGlzIHRvCisJaGVyOiB0aGF0IGlmIHNoZSBsb3ZlIG1lLCBJIGNoYXJnZSBoZXIgdG8gbG92ZQorCXRoZWU7IGlmIHNoZSB3aWxsIG5vdCwgSSB3aWxsIG5ldmVyIGhhdmUgaGVyIHVubGVzcworCXRob3UgZW50cmVhdCBmb3IgaGVyLiBJZiB5b3UgYmUgYSB0cnVlIGxvdmVyLAorCWhlbmNlLCBhbmQgbm90IGEgd29yZDsgZm9yIGhlcmUgY29tZXMgbW9yZSBjb21wYW55LgorCisJW0V4aXQgU0lMVklVU10KKworCVtFbnRlciBPTElWRVJdCisKK09MSVZFUglHb29kIG1vcnJvdywgZmFpciBvbmVzOiBwcmF5IHlvdSwgaWYgeW91IGtub3csCisJV2hlcmUgaW4gdGhlIHB1cmxpZXVzIG9mIHRoaXMgZm9yZXN0IHN0YW5kcworCUEgc2hlZXAtY290ZSBmZW5jZWQgYWJvdXQgd2l0aCBvbGl2ZSB0cmVlcz8KKworQ0VMSUEJV2VzdCBvZiB0aGlzIHBsYWNlLCBkb3duIGluIHRoZSBuZWlnaGJvdXIgYm90dG9tOgorCVRoZSByYW5rIG9mIG9zaWVycyBieSB0aGUgbXVybXVyaW5nIHN0cmVhbQorCUxlZnQgb24geW91ciByaWdodCBoYW5kIGJyaW5ncyB5b3UgdG8gdGhlIHBsYWNlLgorCUJ1dCBhdCB0aGlzIGhvdXIgdGhlIGhvdXNlIGRvdGgga2VlcCBpdHNlbGY7CisJVGhlcmUncyBub25lIHdpdGhpbi4KKworT0xJVkVSCUlmIHRoYXQgYW4gZXllIG1heSBwcm9maXQgYnkgYSB0b25ndWUsCisJVGhlbiBzaG91bGQgSSBrbm93IHlvdSBieSBkZXNjcmlwdGlvbjsKKwlTdWNoIGdhcm1lbnRzIGFuZCBzdWNoIHllYXJzOiAnVGhlIGJveSBpcyBmYWlyLAorCU9mIGZlbWFsZSBmYXZvdXIsIGFuZCBiZXN0b3dzIGhpbXNlbGYKKwlMaWtlIGEgcmlwZSBzaXN0ZXI6IHRoZSB3b21hbiBsb3cKKwlBbmQgYnJvd25lciB0aGFuIGhlciBicm90aGVyLicgQXJlIG5vdCB5b3UKKwlUaGUgb3duZXIgb2YgdGhlIGhvdXNlIEkgZGlkIGlucXVpcmUgZm9yPworCitDRUxJQQlJdCBpcyBubyBib2FzdCwgYmVpbmcgYXNrJ2QsIHRvIHNheSB3ZSBhcmUuCisKK09MSVZFUglPcmxhbmRvIGRvdGggY29tbWVuZCBoaW0gdG8geW91IGJvdGgsCisJQW5kIHRvIHRoYXQgeW91dGggaGUgY2FsbHMgaGlzIFJvc2FsaW5kCisJSGUgc2VuZHMgdGhpcyBibG9vZHkgbmFwa2luLiBBcmUgeW91IGhlPworCitST1NBTElORAlJIGFtOiB3aGF0IG11c3Qgd2UgdW5kZXJzdGFuZCBieSB0aGlzPworCitPTElWRVIJU29tZSBvZiBteSBzaGFtZTsgaWYgeW91IHdpbGwga25vdyBvZiBtZQorCVdoYXQgbWFuIEkgYW0sIGFuZCBob3csIGFuZCB3aHksIGFuZCB3aGVyZQorCVRoaXMgaGFuZGtlcmNoZXIgd2FzIHN0YWluJ2QuCisKK0NFTElBCUkgcHJheSB5b3UsIHRlbGwgaXQuCisKK09MSVZFUglXaGVuIGxhc3QgdGhlIHlvdW5nIE9ybGFuZG8gcGFydGVkIGZyb20geW91CisJSGUgbGVmdCBhIHByb21pc2UgdG8gcmV0dXJuIGFnYWluCisJV2l0aGluIGFuIGhvdXIsIGFuZCBwYWNpbmcgdGhyb3VnaCB0aGUgZm9yZXN0LAorCUNoZXdpbmcgdGhlIGZvb2Qgb2Ygc3dlZXQgYW5kIGJpdHRlciBmYW5jeSwKKwlMbywgd2hhdCBiZWZlbGwhIGhlIHRocmV3IGhpcyBleWUgYXNpZGUsCisJQW5kIG1hcmsgd2hhdCBvYmplY3QgZGlkIHByZXNlbnQgaXRzZWxmOgorCVVuZGVyIGFuIG9haywgd2hvc2UgYm91Z2hzIHdlcmUgbW9zcydkIHdpdGggYWdlCisJQW5kIGhpZ2ggdG9wIGJhbGQgd2l0aCBkcnkgYW50aXF1aXR5LAorCUEgd3JldGNoZWQgcmFnZ2VkIG1hbiwgbydlcmdyb3duIHdpdGggaGFpciwKKwlMYXkgc2xlZXBpbmcgb24gaGlzIGJhY2s6IGFib3V0IGhpcyBuZWNrCisJQSBncmVlbiBhbmQgZ2lsZGVkIHNuYWtlIGhhZCB3cmVhdGhlZCBpdHNlbGYsCisJV2hvIHdpdGggaGVyIGhlYWQgbmltYmxlIGluIHRocmVhdHMgYXBwcm9hY2gnZAorCVRoZSBvcGVuaW5nIG9mIGhpcyBtb3V0aDsgYnV0IHN1ZGRlbmx5LAorCVNlZWluZyBPcmxhbmRvLCBpdCB1bmxpbmsnZCBpdHNlbGYsCisJQW5kIHdpdGggaW5kZW50ZWQgZ2xpZGVzIGRpZCBzbGlwIGF3YXkKKwlJbnRvIGEgYnVzaDogdW5kZXIgd2hpY2ggYnVzaCdzIHNoYWRlCisJQSBsaW9uZXNzLCB3aXRoIHVkZGVycyBhbGwgZHJhd24gZHJ5LAorCUxheSBjb3VjaGluZywgaGVhZCBvbiBncm91bmQsIHdpdGggY2F0bGlrZSB3YXRjaCwKKwlXaGVuIHRoYXQgdGhlIHNsZWVwaW5nIG1hbiBzaG91bGQgc3RpcjsgZm9yICd0aXMKKwlUaGUgcm95YWwgZGlzcG9zaXRpb24gb2YgdGhhdCBiZWFzdAorCVRvIHByZXkgb24gbm90aGluZyB0aGF0IGRvdGggc2VlbSBhcyBkZWFkOgorCVRoaXMgc2VlbiwgT3JsYW5kbyBkaWQgYXBwcm9hY2ggdGhlIG1hbgorCUFuZCBmb3VuZCBpdCB3YXMgaGlzIGJyb3RoZXIsIGhpcyBlbGRlciBicm90aGVyLgorCitDRUxJQQlPLCBJIGhhdmUgaGVhcmQgaGltIHNwZWFrIG9mIHRoYXQgc2FtZSBicm90aGVyOworCUFuZCBoZSBkaWQgcmVuZGVyIGhpbSB0aGUgbW9zdCB1bm5hdHVyYWwKKwlUaGF0IGxpdmVkIGFtb25nc3QgbWVuLgorCitPTElWRVIJQW5kIHdlbGwgaGUgbWlnaHQgc28gZG8sCisJRm9yIHdlbGwgSSBrbm93IGhlIHdhcyB1bm5hdHVyYWwuCisKK1JPU0FMSU5ECUJ1dCwgdG8gT3JsYW5kbzogZGlkIGhlIGxlYXZlIGhpbSB0aGVyZSwKKwlGb29kIHRvIHRoZSBzdWNrJ2QgYW5kIGh1bmdyeSBsaW9uZXNzPworCitPTElWRVIJVHdpY2UgZGlkIGhlIHR1cm4gaGlzIGJhY2sgYW5kIHB1cnBvc2VkIHNvOworCUJ1dCBraW5kbmVzcywgbm9ibGVyIGV2ZXIgdGhhbiByZXZlbmdlLAorCUFuZCBuYXR1cmUsIHN0cm9uZ2VyIHRoYW4gaGlzIGp1c3Qgb2NjYXNpb24sCisJTWFkZSBoaW0gZ2l2ZSBiYXR0bGUgdG8gdGhlIGxpb25lc3MsCisJV2hvIHF1aWNrbHkgZmVsbCBiZWZvcmUgaGltOiBpbiB3aGljaCBodXJ0bGluZworCUZyb20gbWlzZXJhYmxlIHNsdW1iZXIgSSBhd2FrZWQuCisKK0NFTElBCUFyZSB5b3UgaGlzIGJyb3RoZXI/CisKK1JPU0FMSU5ECVdhc3QgeW91IGhlIHJlc2N1ZWQ/CisKK0NFTElBCVdhcyd0IHlvdSB0aGF0IGRpZCBzbyBvZnQgY29udHJpdmUgdG8ga2lsbCBoaW0/CisKK09MSVZFUgknVHdhcyBJOyBidXQgJ3RpcyBub3QgSQlJIGRvIG5vdCBzaGFtZQorCVRvIHRlbGwgeW91IHdoYXQgSSB3YXMsIHNpbmNlIG15IGNvbnZlcnNpb24KKwlTbyBzd2VldGx5IHRhc3RlcywgYmVpbmcgdGhlIHRoaW5nIEkgYW0uCisKK1JPU0FMSU5ECUJ1dCwgZm9yIHRoZSBibG9vZHkgbmFwa2luPworCitPTElWRVIJQnkgYW5kIGJ5LgorCVdoZW4gZnJvbSB0aGUgZmlyc3QgdG8gbGFzdCBiZXR3aXh0IHVzIHR3bworCVRlYXJzIG91ciByZWNvdW50bWVudHMgaGFkIG1vc3Qga2luZGx5IGJhdGhlZCwKKwlBcyBob3cgSSBjYW1lIGludG8gdGhhdCBkZXNlcnQgcGxhY2U6LS0KKwlJbiBicmllZiwgaGUgbGVkIG1lIHRvIHRoZSBnZW50bGUgZHVrZSwKKwlXaG8gZ2F2ZSBtZSBmcmVzaCBhcnJheSBhbmQgZW50ZXJ0YWlubWVudCwKKwlDb21taXR0aW5nIG1lIHVudG8gbXkgYnJvdGhlcidzIGxvdmU7CisJV2hvIGxlZCBtZSBpbnN0YW50bHkgdW50byBoaXMgY2F2ZSwKKwlUaGVyZSBzdHJpcHAnZCBoaW1zZWxmLCBhbmQgaGVyZSB1cG9uIGhpcyBhcm0KKwlUaGUgbGlvbmVzcyBoYWQgdG9ybiBzb21lIGZsZXNoIGF3YXksCisJV2hpY2ggYWxsIHRoaXMgd2hpbGUgaGFkIGJsZWQ7IGFuZCBub3cgaGUgZmFpbnRlZAorCUFuZCBjcmllZCwgaW4gZmFpbnRpbmcsIHVwb24gUm9zYWxpbmQuCisJQnJpZWYsIEkgcmVjb3ZlcidkIGhpbSwgYm91bmQgdXAgaGlzIHdvdW5kOworCUFuZCwgYWZ0ZXIgc29tZSBzbWFsbCBzcGFjZSwgYmVpbmcgc3Ryb25nIGF0IGhlYXJ0LAorCUhlIHNlbnQgbWUgaGl0aGVyLCBzdHJhbmdlciBhcyBJIGFtLAorCVRvIHRlbGwgdGhpcyBzdG9yeSwgdGhhdCB5b3UgbWlnaHQgZXhjdXNlCisJSGlzIGJyb2tlbiBwcm9taXNlLCBhbmQgdG8gZ2l2ZSB0aGlzIG5hcGtpbgorCUR5ZWQgaW4gaGlzIGJsb29kIHVudG8gdGhlIHNoZXBoZXJkIHlvdXRoCisJVGhhdCBoZSBpbiBzcG9ydCBkb3RoIGNhbGwgaGlzIFJvc2FsaW5kLgorCisJW1JPU0FMSU5EIHN3b29uc10KKworQ0VMSUEJV2h5LCBob3cgbm93LCBHYW55bWVkZSEgc3dlZXQgR2FueW1lZGUhCisKK09MSVZFUglNYW55IHdpbGwgc3dvb24gd2hlbiB0aGV5IGRvIGxvb2sgb24gYmxvb2QuCisKK0NFTElBCVRoZXJlIGlzIG1vcmUgaW4gaXQuIENvdXNpbiBHYW55bWVkZSEKKworT0xJVkVSCUxvb2ssIGhlIHJlY292ZXJzLgorCitST1NBTElORAlJIHdvdWxkIEkgd2VyZSBhdCBob21lLgorCitDRUxJQQlXZSdsbCBsZWFkIHlvdSB0aGl0aGVyLgorCUkgcHJheSB5b3UsIHdpbGwgeW91IHRha2UgaGltIGJ5IHRoZSBhcm0/CisKK09MSVZFUglCZSBvZiBnb29kIGNoZWVyLCB5b3V0aDogeW91IGEgbWFuISB5b3UgbGFjayBhCisJbWFuJ3MgaGVhcnQuCisKK1JPU0FMSU5ECUkgZG8gc28sIEkgY29uZmVzcyBpdC4gQWgsIHNpcnJhaCwgYSBib2R5IHdvdWxkCisJdGhpbmsgdGhpcyB3YXMgd2VsbCBjb3VudGVyZmVpdGVkISBJIHByYXkgeW91LCB0ZWxsCisJeW91ciBicm90aGVyIGhvdyB3ZWxsIEkgY291bnRlcmZlaXRlZC4gSGVpZ2gtaG8hCisKK09MSVZFUglUaGlzIHdhcyBub3QgY291bnRlcmZlaXQ6IHRoZXJlIGlzIHRvbyBncmVhdAorCXRlc3RpbW9ueSBpbiB5b3VyIGNvbXBsZXhpb24gdGhhdCBpdCB3YXMgYSBwYXNzaW9uCisJb2YgZWFybmVzdC4KKworUk9TQUxJTkQJQ291bnRlcmZlaXQsIEkgYXNzdXJlIHlvdS4KKworT0xJVkVSCVdlbGwgdGhlbiwgdGFrZSBhIGdvb2QgaGVhcnQgYW5kIGNvdW50ZXJmZWl0IHRvIGJlIGEgbWFuLgorCitST1NBTElORAlTbyBJIGRvOiBidXQsIGknIGZhaXRoLCBJIHNob3VsZCBoYXZlIGJlZW4gYSB3b21hbiBieSByaWdodC4KKworQ0VMSUEJQ29tZSwgeW91IGxvb2sgcGFsZXIgYW5kIHBhbGVyOiBwcmF5IHlvdSwgZHJhdworCWhvbWV3YXJkcy4gR29vZCBzaXIsIGdvIHdpdGggdXMuCisKK09MSVZFUglUaGF0IHdpbGwgSSwgZm9yIEkgbXVzdCBiZWFyIGFuc3dlciBiYWNrCisJSG93IHlvdSBleGN1c2UgbXkgYnJvdGhlciwgUm9zYWxpbmQuCisKK1JPU0FMSU5ECUkgc2hhbGwgZGV2aXNlIHNvbWV0aGluZzogYnV0LCBJIHByYXkgeW91LCBjb21tZW5kCisJbXkgY291bnRlcmZlaXRpbmcgdG8gaGltLiBXaWxsIHlvdSBnbz8KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBWCisKKworCitTQ0VORSBJCVRoZSBmb3Jlc3QuCisKKworCVtFbnRlciBUT1VDSFNUT05FIGFuZCBBVURSRVldCisKK1RPVUNIU1RPTkUJV2Ugc2hhbGwgZmluZCBhIHRpbWUsIEF1ZHJleTsgcGF0aWVuY2UsIGdlbnRsZSBBdWRyZXkuCisKK0FVRFJFWQlGYWl0aCwgdGhlIHByaWVzdCB3YXMgZ29vZCBlbm91Z2gsIGZvciBhbGwgdGhlIG9sZAorCWdlbnRsZW1hbidzIHNheWluZy4KKworVE9VQ0hTVE9ORQlBIG1vc3Qgd2lja2VkIFNpciBPbGl2ZXIsIEF1ZHJleSwgYSBtb3N0IHZpbGUKKwlNYXJ0ZXh0LiBCdXQsIEF1ZHJleSwgdGhlcmUgaXMgYSB5b3V0aCBoZXJlIGluIHRoZQorCWZvcmVzdCBsYXlzIGNsYWltIHRvIHlvdS4KKworQVVEUkVZCUF5LCBJIGtub3cgd2hvICd0aXM7IGhlIGhhdGggbm8gaW50ZXJlc3QgaW4gbWUgaW4KKwl0aGUgd29ybGQ6IGhlcmUgY29tZXMgdGhlIG1hbiB5b3UgbWVhbi4KKworVE9VQ0hTVE9ORQlJdCBpcyBtZWF0IGFuZCBkcmluayB0byBtZSB0byBzZWUgYSBjbG93bjogYnkgbXkKKwl0cm90aCwgd2UgdGhhdCBoYXZlIGdvb2Qgd2l0cyBoYXZlIG11Y2ggdG8gYW5zd2VyCisJZm9yOyB3ZSBzaGFsbCBiZSBmbG91dGluZzsgd2UgY2Fubm90IGhvbGQuCisKKwlbRW50ZXIgV0lMTElBTV0KKworV0lMTElBTQlHb29kIGV2ZW4sIEF1ZHJleS4KKworQVVEUkVZCUdvZCB5ZSBnb29kIGV2ZW4sIFdpbGxpYW0uCisKK1dJTExJQU0JQW5kIGdvb2QgZXZlbiB0byB5b3UsIHNpci4KKworVE9VQ0hTVE9ORQlHb29kIGV2ZW4sIGdlbnRsZSBmcmllbmQuIENvdmVyIHRoeSBoZWFkLCBjb3ZlciB0aHkKKwloZWFkOyBuYXksIHByaXRoZWUsIGJlIGNvdmVyZWQuIEhvdyBvbGQgYXJlIHlvdSwgZnJpZW5kPworCitXSUxMSUFNCUZpdmUgYW5kIHR3ZW50eSwgc2lyLgorCitUT1VDSFNUT05FCUEgcmlwZSBhZ2UuIElzIHRoeSBuYW1lIFdpbGxpYW0/CisKK1dJTExJQU0JV2lsbGlhbSwgc2lyLgorCitUT1VDSFNUT05FCUEgZmFpciBuYW1lLiBXYXN0IGJvcm4gaScgdGhlIGZvcmVzdCBoZXJlPworCitXSUxMSUFNCUF5LCBzaXIsIEkgdGhhbmsgR29kLgorCitUT1VDSFNUT05FCSdUaGFuayBHb2Q7JyBhIGdvb2QgYW5zd2VyLiBBcnQgcmljaD8KKworV0lMTElBTQlGYWl0aCwgc2lyLCBzbyBzby4KKworVE9VQ0hTVE9ORQknU28gc28nIGlzIGdvb2QsIHZlcnkgZ29vZCwgdmVyeSBleGNlbGxlbnQgZ29vZDsgYW5kCisJeWV0IGl0IGlzIG5vdDsgaXQgaXMgYnV0IHNvIHNvLiBBcnQgdGhvdSB3aXNlPworCitXSUxMSUFNCUF5LCBzaXIsIEkgaGF2ZSBhIHByZXR0eSB3aXQuCisKK1RPVUNIU1RPTkUJV2h5LCB0aG91IHNheWVzdCB3ZWxsLiBJIGRvIG5vdyByZW1lbWJlciBhIHNheWluZywKKwknVGhlIGZvb2wgZG90aCB0aGluayBoZSBpcyB3aXNlLCBidXQgdGhlIHdpc2UgbWFuCisJa25vd3MgaGltc2VsZiB0byBiZSBhIGZvb2wuJyBUaGUgaGVhdGhlbgorCXBoaWxvc29waGVyLCB3aGVuIGhlIGhhZCBhIGRlc2lyZSB0byBlYXQgYSBncmFwZSwKKwl3b3VsZCBvcGVuIGhpcyBsaXBzIHdoZW4gaGUgcHV0IGl0IGludG8gaGlzIG1vdXRoOworCW1lYW5pbmcgdGhlcmVieSB0aGF0IGdyYXBlcyB3ZXJlIG1hZGUgdG8gZWF0IGFuZAorCWxpcHMgdG8gb3Blbi4gWW91IGRvIGxvdmUgdGhpcyBtYWlkPworCitXSUxMSUFNCUkgZG8sIHNpci4KKworVE9VQ0hTVE9ORQlHaXZlIG1lIHlvdXIgaGFuZC4gQXJ0IHRob3UgbGVhcm5lZD8KKworV0lMTElBTQlObywgc2lyLgorCitUT1VDSFNUT05FCVRoZW4gbGVhcm4gdGhpcyBvZiBtZTogdG8gaGF2ZSwgaXMgdG8gaGF2ZTsgZm9yIGl0CisJaXMgYSBmaWd1cmUgaW4gcmhldG9yaWMgdGhhdCBkcmluaywgYmVpbmcgcG91cmVkIG91dAorCW9mIGEgY3VwIGludG8gYSBnbGFzcywgYnkgZmlsbGluZyB0aGUgb25lIGRvdGggZW1wdHkKKwl0aGUgb3RoZXI7IGZvciBhbGwgeW91ciB3cml0ZXJzIGRvIGNvbnNlbnQgdGhhdCBpcHNlCisJaXMgaGU6IG5vdywgeW91IGFyZSBub3QgaXBzZSwgZm9yIEkgYW0gaGUuCisKK1dJTExJQU0JV2hpY2ggaGUsIHNpcj8KKworVE9VQ0hTVE9ORQlIZSwgc2lyLCB0aGF0IG11c3QgbWFycnkgdGhpcyB3b21hbi4gVGhlcmVmb3JlLCB5b3UKKwljbG93biwgYWJhbmRvbiwtLXdoaWNoIGlzIGluIHRoZSB2dWxnYXIgbGVhdmUsLS10aGUKKwlzb2NpZXR5LC0td2hpY2ggaW4gdGhlIGJvb3Jpc2ggaXMgY29tcGFueSwtLW9mIHRoaXMKKwlmZW1hbGUsLS13aGljaCBpbiB0aGUgY29tbW9uIGlzIHdvbWFuOyB3aGljaAorCXRvZ2V0aGVyIGlzLCBhYmFuZG9uIHRoZSBzb2NpZXR5IG9mIHRoaXMgZmVtYWxlLCBvciwKKwljbG93biwgdGhvdSBwZXJpc2hlc3Q7IG9yLCB0byB0aHkgYmV0dGVyCisJdW5kZXJzdGFuZGluZywgZGllc3Q7IG9yLCB0byB3aXQgSSBraWxsIHRoZWUsIG1ha2UKKwl0aGVlIGF3YXksIHRyYW5zbGF0ZSB0aHkgbGlmZSBpbnRvIGRlYXRoLCB0aHkKKwlsaWJlcnR5IGludG8gYm9uZGFnZTogSSB3aWxsIGRlYWwgaW4gcG9pc29uIHdpdGgKKwl0aGVlLCBvciBpbiBiYXN0aW5hZG8sIG9yIGluIHN0ZWVsOyBJIHdpbGwgYmFuZHkKKwl3aXRoIHRoZWUgaW4gZmFjdGlvbjsgSSB3aWxsIG8nZXJydW4gdGhlZSB3aXRoCisJcG9saWN5OyBJIHdpbGwga2lsbCB0aGVlIGEgaHVuZHJlZCBhbmQgZmlmdHkgd2F5czoKKwl0aGVyZWZvcmUgdHJlbWJsZSBhbmQgZGVwYXJ0LgorCitBVURSRVkJRG8sIGdvb2QgV2lsbGlhbS4KKworV0lMTElBTQlHb2QgcmVzdCB5b3UgbWVycnksIHNpci4KKworCVtFeGl0XQorCisJW0VudGVyIENPUklOXQorCitDT1JJTglPdXIgbWFzdGVyIGFuZCBtaXN0cmVzcyBzZWVrcyB5b3U7IGNvbWUsIGF3YXksIGF3YXkhCisKK1RPVUNIU1RPTkUJVHJpcCwgQXVkcmV5ISB0cmlwLCBBdWRyZXkhIEkgYXR0ZW5kLCBJIGF0dGVuZC4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBWCisKKworCitTQ0VORSBJSQlUaGUgZm9yZXN0LgorCisKKwlbRW50ZXIgT1JMQU5ETyBhbmQgT0xJVkVSXQorCitPUkxBTkRPCUlzJ3QgcG9zc2libGUgdGhhdCBvbiBzbyBsaXR0bGUgYWNxdWFpbnRhbmNlIHlvdQorCXNob3VsZCBsaWtlIGhlcj8gdGhhdCBidXQgc2VlaW5nIHlvdSBzaG91bGQgbG92ZQorCWhlcj8gYW5kIGxvdmluZyB3b28/IGFuZCwgd29vaW5nLCBzaGUgc2hvdWxkCisJZ3JhbnQ/IGFuZCB3aWxsIHlvdSBwZXJzZXZlciB0byBlbmpveSBoZXI/CisKK09MSVZFUglOZWl0aGVyIGNhbGwgdGhlIGdpZGRpbmVzcyBvZiBpdCBpbiBxdWVzdGlvbiwgdGhlCisJcG92ZXJ0eSBvZiBoZXIsIHRoZSBzbWFsbCBhY3F1YWludGFuY2UsIG15IHN1ZGRlbgorCXdvb2luZywgbm9yIGhlciBzdWRkZW4gY29uc2VudGluZzsgYnV0IHNheSB3aXRoIG1lLAorCUkgbG92ZSBBbGllbmE7IHNheSB3aXRoIGhlciB0aGF0IHNoZSBsb3ZlcyBtZTsKKwljb25zZW50IHdpdGggYm90aCB0aGF0IHdlIG1heSBlbmpveSBlYWNoIG90aGVyOiBpdAorCXNoYWxsIGJlIHRvIHlvdXIgZ29vZDsgZm9yIG15IGZhdGhlcidzIGhvdXNlIGFuZCBhbGwKKwl0aGUgcmV2ZW51ZSB0aGF0IHdhcyBvbGQgU2lyIFJvd2xhbmQncyB3aWxsIEkKKwllc3RhdGUgdXBvbiB5b3UsIGFuZCBoZXJlIGxpdmUgYW5kIGRpZSBhIHNoZXBoZXJkLgorCitPUkxBTkRPCVlvdSBoYXZlIG15IGNvbnNlbnQuIExldCB5b3VyIHdlZGRpbmcgYmUgdG8tbW9ycm93OgorCXRoaXRoZXIgd2lsbCBJIGludml0ZSB0aGUgZHVrZSBhbmQgYWxsJ3MgY29udGVudGVkCisJZm9sbG93ZXJzLiBHbyB5b3UgYW5kIHByZXBhcmUgQWxpZW5hOyBmb3IgbG9vaworCXlvdSwgaGVyZSBjb21lcyBteSBSb3NhbGluZC4KKworCVtFbnRlciBST1NBTElORF0KKworUk9TQUxJTkQJR29kIHNhdmUgeW91LCBicm90aGVyLgorCitPTElWRVIJQW5kIHlvdSwgZmFpciBzaXN0ZXIuCisKKwlbRXhpdF0KKworUk9TQUxJTkQJTywgbXkgZGVhciBPcmxhbmRvLCBob3cgaXQgZ3JpZXZlcyBtZSB0byBzZWUgdGhlZQorCXdlYXIgdGh5IGhlYXJ0IGluIGEgc2NhcmYhCisKK09STEFORE8JSXQgaXMgbXkgYXJtLgorCitST1NBTElORAlJIHRob3VnaHQgdGh5IGhlYXJ0IGhhZCBiZWVuIHdvdW5kZWQgd2l0aCB0aGUgY2xhd3MKKwlvZiBhIGxpb24uCisKK09STEFORE8JV291bmRlZCBpdCBpcywgYnV0IHdpdGggdGhlIGV5ZXMgb2YgYSBsYWR5LgorCitST1NBTElORAlEaWQgeW91ciBicm90aGVyIHRlbGwgeW91IGhvdyBJIGNvdW50ZXJmZWl0ZWQgdG8KKwlzd29vbiB3aGVuIGhlIHNob3dlZCBtZSB5b3VyIGhhbmRrZXJjaGllZj8KKworT1JMQU5ETwlBeSwgYW5kIGdyZWF0ZXIgd29uZGVycyB0aGFuIHRoYXQuCisKK1JPU0FMSU5ECU8sIEkga25vdyB3aGVyZSB5b3UgYXJlOiBuYXksICd0aXMgdHJ1ZTogdGhlcmUgd2FzCisJbmV2ZXIgYW55IHRoaW5nIHNvIHN1ZGRlbiBidXQgdGhlIGZpZ2h0IG9mIHR3byByYW1zCisJYW5kIENhZXNhcidzIHRocmFzb25pY2FsIGJyYWcgb2YgJ0kgY2FtZSwgc2F3LCBhbmQKKwlvdmVyY2FtZTonIGZvciB5b3VyIGJyb3RoZXIgYW5kIG15IHNpc3RlciBubyBzb29uZXIKKwltZXQgYnV0IHRoZXkgbG9va2VkLCBubyBzb29uZXIgbG9va2VkIGJ1dCB0aGV5CisJbG92ZWQsIG5vIHNvb25lciBsb3ZlZCBidXQgdGhleSBzaWdoZWQsIG5vIHNvb25lcgorCXNpZ2hlZCBidXQgdGhleSBhc2tlZCBvbmUgYW5vdGhlciB0aGUgcmVhc29uLCBubworCXNvb25lciBrbmV3IHRoZSByZWFzb24gYnV0IHRoZXkgc291Z2h0IHRoZSByZW1lZHk7CisJYW5kIGluIHRoZXNlIGRlZ3JlZXMgaGF2ZSB0aGV5IG1hZGUgYSBwYWlyIG9mIHN0YWlycworCXRvIG1hcnJpYWdlIHdoaWNoIHRoZXkgd2lsbCBjbGltYiBpbmNvbnRpbmVudCwgb3IKKwllbHNlIGJlIGluY29udGluZW50IGJlZm9yZSBtYXJyaWFnZTogdGhleSBhcmUgaW4KKwl0aGUgdmVyeSB3cmF0aCBvZiBsb3ZlIGFuZCB0aGV5IHdpbGwgdG9nZXRoZXI7IGNsdWJzCisJY2Fubm90IHBhcnQgdGhlbS4KKworT1JMQU5ETwlUaGV5IHNoYWxsIGJlIG1hcnJpZWQgdG8tbW9ycm93LCBhbmQgSSB3aWxsIGJpZCB0aGUKKwlkdWtlIHRvIHRoZSBudXB0aWFsLiBCdXQsIE8sIGhvdyBiaXR0ZXIgYSB0aGluZyBpdAorCWlzIHRvIGxvb2sgaW50byBoYXBwaW5lc3MgdGhyb3VnaCBhbm90aGVyIG1hbidzCisJZXllcyEgQnkgc28gbXVjaCB0aGUgbW9yZSBzaGFsbCBJIHRvLW1vcnJvdyBiZSBhdAorCXRoZSBoZWlnaHQgb2YgaGVhcnQtaGVhdmluZXNzLCBieSBob3cgbXVjaCBJIHNoYWxsCisJdGhpbmsgbXkgYnJvdGhlciBoYXBweSBpbiBoYXZpbmcgd2hhdCBoZSB3aXNoZXMgZm9yLgorCitST1NBTElORAlXaHkgdGhlbiwgdG8tbW9ycm93IEkgY2Fubm90IHNlcnZlIHlvdXIgdHVybiBmb3IgUm9zYWxpbmQ/CisKK09STEFORE8JSSBjYW4gbGl2ZSBubyBsb25nZXIgYnkgdGhpbmtpbmcuCisKK1JPU0FMSU5ECUkgd2lsbCB3ZWFyeSB5b3UgdGhlbiBubyBsb25nZXIgd2l0aCBpZGxlIHRhbGtpbmcuCisJS25vdyBvZiBtZSB0aGVuLCBmb3Igbm93IEkgc3BlYWsgdG8gc29tZSBwdXJwb3NlLAorCXRoYXQgSSBrbm93IHlvdSBhcmUgYSBnZW50bGVtYW4gb2YgZ29vZCBjb25jZWl0OiBJCisJc3BlYWsgbm90IHRoaXMgdGhhdCB5b3Ugc2hvdWxkIGJlYXIgYSBnb29kIG9waW5pb24KKwlvZiBteSBrbm93bGVkZ2UsIGluc29tdWNoIEkgc2F5IEkga25vdyB5b3UgYXJlOworCW5laXRoZXIgZG8gSSBsYWJvdXIgZm9yIGEgZ3JlYXRlciBlc3RlZW0gdGhhbiBtYXkgaW4KKwlzb21lIGxpdHRsZSBtZWFzdXJlIGRyYXcgYSBiZWxpZWYgZnJvbSB5b3UsIHRvIGRvCisJeW91cnNlbGYgZ29vZCBhbmQgbm90IHRvIGdyYWNlIG1lLiBCZWxpZXZlIHRoZW4sIGlmCisJeW91IHBsZWFzZSwgdGhhdCBJIGNhbiBkbyBzdHJhbmdlIHRoaW5nczogSSBoYXZlLAorCXNpbmNlIEkgd2FzIHRocmVlIHllYXIgb2xkLCBjb252ZXJzZWQgd2l0aCBhCisJbWFnaWNpYW4sIG1vc3QgcHJvZm91bmQgaW4gaGlzIGFydCBhbmQgeWV0IG5vdAorCWRhbW5hYmxlLiBJZiB5b3UgZG8gbG92ZSBSb3NhbGluZCBzbyBuZWFyIHRoZSBoZWFydAorCWFzIHlvdXIgZ2VzdHVyZSBjcmllcyBpdCBvdXQsIHdoZW4geW91ciBicm90aGVyCisJbWFycmllcyBBbGllbmEsIHNoYWxsIHlvdSBtYXJyeSBoZXI6IEkga25vdyBpbnRvCisJd2hhdCBzdHJhaXRzIG9mIGZvcnR1bmUgc2hlIGlzIGRyaXZlbjsgYW5kIGl0IGlzCisJbm90IGltcG9zc2libGUgdG8gbWUsIGlmIGl0IGFwcGVhciBub3QgaW5jb252ZW5pZW50CisJdG8geW91LCB0byBzZXQgaGVyIGJlZm9yZSB5b3VyIGV5ZXMgdG9tb3Jyb3cgaHVtYW4KKwlhcyBzaGUgaXMgYW5kIHdpdGhvdXQgYW55IGRhbmdlci4KKworT1JMQU5ETwlTcGVha2VzdCB0aG91IGluIHNvYmVyIG1lYW5pbmdzPworCitST1NBTElORAlCeSBteSBsaWZlLCBJIGRvOyB3aGljaCBJIHRlbmRlciBkZWFybHksIHRob3VnaCBJCisJc2F5IEkgYW0gYSBtYWdpY2lhbi4gVGhlcmVmb3JlLCBwdXQgeW91IGluIHlvdXIKKwliZXN0IGFycmF5OiBiaWQgeW91ciBmcmllbmRzOyBmb3IgaWYgeW91IHdpbGwgYmUKKwltYXJyaWVkIHRvLW1vcnJvdywgeW91IHNoYWxsLCBhbmQgdG8gUm9zYWxpbmQsIGlmIHlvdSB3aWxsLgorCisJW0VudGVyIFNJTFZJVVMgYW5kIFBIRUJFXQorCisJTG9vaywgaGVyZSBjb21lcyBhIGxvdmVyIG9mIG1pbmUgYW5kIGEgbG92ZXIgb2YgaGVycy4KKworUEhFQkUJWW91dGgsIHlvdSBoYXZlIGRvbmUgbWUgbXVjaCB1bmdlbnRsZW5lc3MsCisJVG8gc2hvdyB0aGUgbGV0dGVyIHRoYXQgSSB3cml0IHRvIHlvdS4KKworUk9TQUxJTkQJSSBjYXJlIG5vdCBpZiBJIGhhdmU6IGl0IGlzIG15IHN0dWR5CisJVG8gc2VlbSBkZXNwaXRlZnVsIGFuZCB1bmdlbnRsZSB0byB5b3U6CisJWW91IGFyZSB0aGVyZSBmb2xsb3dlZCBieSBhIGZhaXRoZnVsIHNoZXBoZXJkOworCUxvb2sgdXBvbiBoaW0sIGxvdmUgaGltOyBoZSB3b3JzaGlwcyB5b3UuCisKK1BIRUJFCUdvb2Qgc2hlcGhlcmQsIHRlbGwgdGhpcyB5b3V0aCB3aGF0ICd0aXMgdG8gbG92ZS4KKworU0lMVklVUwlJdCBpcyB0byBiZSBhbGwgbWFkZSBvZiBzaWdocyBhbmQgdGVhcnM7CisJQW5kIHNvIGFtIEkgZm9yIFBoZWJlLgorCitQSEVCRQlBbmQgSSBmb3IgR2FueW1lZGUuCisKK09STEFORE8JQW5kIEkgZm9yIFJvc2FsaW5kLgorCitST1NBTElORAlBbmQgSSBmb3Igbm8gd29tYW4uCisKK1NJTFZJVVMJSXQgaXMgdG8gYmUgYWxsIG1hZGUgb2YgZmFpdGggYW5kIHNlcnZpY2U7CisJQW5kIHNvIGFtIEkgZm9yIFBoZWJlLgorCitQSEVCRQlBbmQgSSBmb3IgR2FueW1lZGUuCisKK09STEFORE8JQW5kIEkgZm9yIFJvc2FsaW5kLgorCitST1NBTElORAlBbmQgSSBmb3Igbm8gd29tYW4uCisKK1NJTFZJVVMJSXQgaXMgdG8gYmUgYWxsIG1hZGUgb2YgZmFudGFzeSwKKwlBbGwgbWFkZSBvZiBwYXNzaW9uIGFuZCBhbGwgbWFkZSBvZiB3aXNoZXMsCisJQWxsIGFkb3JhdGlvbiwgZHV0eSwgYW5kIG9ic2VydmFuY2UsCisJQWxsIGh1bWJsZW5lc3MsIGFsbCBwYXRpZW5jZSBhbmQgaW1wYXRpZW5jZSwKKwlBbGwgcHVyaXR5LCBhbGwgdHJpYWwsIGFsbCBvYnNlcnZhbmNlOworCUFuZCBzbyBhbSBJIGZvciBQaGViZS4KKworUEhFQkUJQW5kIHNvIGFtIEkgZm9yIEdhbnltZWRlLgorCitPUkxBTkRPCUFuZCBzbyBhbSBJIGZvciBSb3NhbGluZC4KKworUk9TQUxJTkQJQW5kIHNvIGFtIEkgZm9yIG5vIHdvbWFuLgorCitQSEVCRQlJZiB0aGlzIGJlIHNvLCB3aHkgYmxhbWUgeW91IG1lIHRvIGxvdmUgeW91PworCitTSUxWSVVTCUlmIHRoaXMgYmUgc28sIHdoeSBibGFtZSB5b3UgbWUgdG8gbG92ZSB5b3U/CisKK09STEFORE8JSWYgdGhpcyBiZSBzbywgd2h5IGJsYW1lIHlvdSBtZSB0byBsb3ZlIHlvdT8KKworUk9TQUxJTkQJV2hvIGRvIHlvdSBzcGVhayB0bywgJ1doeSBibGFtZSB5b3UgbWUgdG8gbG92ZSB5b3U/JworCitPUkxBTkRPCVRvIGhlciB0aGF0IGlzIG5vdCBoZXJlLCBub3IgZG90aCBub3QgaGVhci4KKworUk9TQUxJTkQJUHJheSB5b3UsIG5vIG1vcmUgb2YgdGhpczsgJ3RpcyBsaWtlIHRoZSBob3dsaW5nCisJb2YgSXJpc2ggd29sdmVzIGFnYWluc3QgdGhlIG1vb24uCisKKwlbVG8gU0lMVklVU10KKworCUkgd2lsbCBoZWxwIHlvdSwgaWYgSSBjYW46CisKKwlbVG8gUEhFQkVdCisKKwlJIHdvdWxkIGxvdmUgeW91LCBpZiBJIGNvdWxkLiBUby1tb3Jyb3cgbWVldCBtZSBhbGwgdG9nZXRoZXIuCisKKwlbVG8gUEhFQkVdCisKKwlJIHdpbGwgbWFycnkgeW91LCBpZiBldmVyIEkgbWFycnkgd29tYW4sIGFuZCBJJ2xsIGJlCisJbWFycmllZCB0by1tb3Jyb3c6CisKKwlbVG8gT1JMQU5ET10KKworCUkgd2lsbCBzYXRpc2Z5IHlvdSwgaWYgZXZlciBJIHNhdGlzZmllZCBtYW4sIGFuZCB5b3UKKwlzaGFsbCBiZSBtYXJyaWVkIHRvLW1vcnJvdzoKKworCVtUbyBTSUxWSVVTXQorCisJSSB3aWxsIGNvbnRlbnQgeW91LCBpZiB3aGF0IHBsZWFzZXMgeW91IGNvbnRlbnRzCisJeW91LCBhbmQgeW91IHNoYWxsIGJlIG1hcnJpZWQgdG8tbW9ycm93LgorCisJW1RvIE9STEFORE9dCisKKwlBcyB5b3UgbG92ZSBSb3NhbGluZCwgbWVldDoKKworCVtUbyBTSUxWSVVTXQorCisJYXMgeW91IGxvdmUgUGhlYmUsIG1lZXQ6IGFuZCBhcyBJIGxvdmUgbm8gd29tYW4sCisJSSdsbCBtZWV0LiBTbyBmYXJlIHlvdSB3ZWxsOiBJIGhhdmUgbGVmdCB5b3UgY29tbWFuZHMuCisKK1NJTFZJVVMJSSdsbCBub3QgZmFpbCwgaWYgSSBsaXZlLgorCitQSEVCRQlOb3IgSS4KKworT1JMQU5ETwlOb3IgSS4KKworCVtFeGV1bnRdCisKKworCisKKwlBUyBZT1UgTElLRSBJVAorCisKK0FDVCBWCisKKworCitTQ0VORSBJSUkJVGhlIGZvcmVzdC4KKworCisJW0VudGVyIFRPVUNIU1RPTkUgYW5kIEFVRFJFWV0KKworVE9VQ0hTVE9ORQlUby1tb3Jyb3cgaXMgdGhlIGpveWZ1bCBkYXksIEF1ZHJleTsgdG8tbW9ycm93IHdpbGwKKwl3ZSBiZSBtYXJyaWVkLgorCitBVURSRVkJSSBkbyBkZXNpcmUgaXQgd2l0aCBhbGwgbXkgaGVhcnQ7IGFuZCBJIGhvcGUgaXQgaXMKKwlubyBkaXNob25lc3QgZGVzaXJlIHRvIGRlc2lyZSB0byBiZSBhIHdvbWFuIG9mIHRoZQorCXdvcmxkLiBIZXJlIGNvbWVzIHR3byBvZiB0aGUgYmFuaXNoZWQgZHVrZSdzIHBhZ2VzLgorCisJW0VudGVyIHR3byBQYWdlc10KKworRmlyc3QgUGFnZQlXZWxsIG1ldCwgaG9uZXN0IGdlbnRsZW1hbi4KKworVE9VQ0hTVE9ORQlCeSBteSB0cm90aCwgd2VsbCBtZXQuIENvbWUsIHNpdCwgc2l0LCBhbmQgYSBzb25nLgorCitTZWNvbmQgUGFnZQlXZSBhcmUgZm9yIHlvdTogc2l0IGknIHRoZSBtaWRkbGUuCisKK0ZpcnN0IFBhZ2UJU2hhbGwgd2UgY2xhcCBpbnRvJ3Qgcm91bmRseSwgd2l0aG91dCBoYXdraW5nIG9yCisJc3BpdHRpbmcgb3Igc2F5aW5nIHdlIGFyZSBob2Fyc2UsIHdoaWNoIGFyZSB0aGUgb25seQorCXByb2xvZ3VlcyB0byBhIGJhZCB2b2ljZT8KKworU2Vjb25kIFBhZ2UJSSdmYWl0aCwgaSdmYWl0aDsgYW5kIGJvdGggaW4gYSB0dW5lLCBsaWtlIHR3bworCWdpcHNpZXMgb24gYSBob3JzZS4KKwkKKwlTT05HLgorCUl0IHdhcyBhIGxvdmVyIGFuZCBoaXMgbGFzcywKKwlXaXRoIGEgaGV5LCBhbmQgYSBobywgYW5kIGEgaGV5IG5vbmlubywKKwlUaGF0IG8nZXIgdGhlIGdyZWVuIGNvcm4tZmllbGQgZGlkIHBhc3MKKwlJbiB0aGUgc3ByaW5nIHRpbWUsIHRoZSBvbmx5IHByZXR0eSByaW5nIHRpbWUsCisJV2hlbiBiaXJkcyBkbyBzaW5nLCBoZXkgZGluZyBhIGRpbmcsIGRpbmc6CisJU3dlZXQgbG92ZXJzIGxvdmUgdGhlIHNwcmluZy4KKworCUJldHdlZW4gdGhlIGFjcmVzIG9mIHRoZSByeWUsCisJV2l0aCBhIGhleSwgYW5kIGEgaG8sIGFuZCBhIGhleSBub25pbm8KKwlUaGVzZSBwcmV0dHkgY291bnRyeSBmb2xrcyB3b3VsZCBsaWUsCisJSW4gc3ByaW5nIHRpbWUsICZjLgorCisJVGhpcyBjYXJvbCB0aGV5IGJlZ2FuIHRoYXQgaG91ciwKKwlXaXRoIGEgaGV5LCBhbmQgYSBobywgYW5kIGEgaGV5IG5vbmlubywKKwlIb3cgdGhhdCBhIGxpZmUgd2FzIGJ1dCBhIGZsb3dlcgorCUluIHNwcmluZyB0aW1lLCAmYy4KKworCUFuZCB0aGVyZWZvcmUgdGFrZSB0aGUgcHJlc2VudCB0aW1lLAorCVdpdGggYSBoZXksIGFuZCBhIGhvLCBhbmQgYSBoZXkgbm9uaW5vOworCUZvciBsb3ZlIGlzIGNyb3duZWQgd2l0aCB0aGUgcHJpbWUKKwlJbiBzcHJpbmcgdGltZSwgJmMuCisKK1RPVUNIU1RPTkUJVHJ1bHksIHlvdW5nIGdlbnRsZW1lbiwgdGhvdWdoIHRoZXJlIHdhcyBubyBncmVhdAorCW1hdHRlciBpbiB0aGUgZGl0dHksIHlldCB0aGUgbm90ZSB3YXMgdmVyeQorCXVudHVuZWFibGUuCisKK0ZpcnN0IFBhZ2UJWW91IGFyZSBkZWNlaXZlZCwgc2lyOiB3ZSBrZXB0IHRpbWUsIHdlIGxvc3Qgbm90IG91ciB0aW1lLgorCitUT1VDSFNUT05FCUJ5IG15IHRyb3RoLCB5ZXM7IEkgY291bnQgaXQgYnV0IHRpbWUgbG9zdCB0byBoZWFyCisJc3VjaCBhIGZvb2xpc2ggc29uZy4gR29kIGJlIHdpJyB5b3U7IGFuZCBHb2QgbWVuZAorCXlvdXIgdm9pY2VzISBDb21lLCBBdWRyZXkuCisKKwlbRXhldW50XQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCitBQ1QgVgorCisKKworU0NFTkUgSVYJVGhlIGZvcmVzdC4KKworCisJW0VudGVyIERVS0UgU0VOSU9SLCBBTUlFTlMsIEpBUVVFUywgT1JMQU5ETywgT0xJVkVSLAorCWFuZCBDRUxJQV0KKworRFVLRSBTRU5JT1IJRG9zdCB0aG91IGJlbGlldmUsIE9ybGFuZG8sIHRoYXQgdGhlIGJveQorCUNhbiBkbyBhbGwgdGhpcyB0aGF0IGhlIGhhdGggcHJvbWlzZWQ/CisKK09STEFORE8JSSBzb21ldGltZXMgZG8gYmVsaWV2ZSwgYW5kIHNvbWV0aW1lcyBkbyBub3Q7CisJQXMgdGhvc2UgdGhhdCBmZWFyIHRoZXkgaG9wZSwgYW5kIGtub3cgdGhleSBmZWFyLgorCisJW0VudGVyIFJPU0FMSU5ELCBTSUxWSVVTLCBhbmQgUEhFQkVdCisKK1JPU0FMSU5ECVBhdGllbmNlIG9uY2UgbW9yZSwgd2hpbGVzIG91ciBjb21wYWN0IGlzIHVyZ2VkOgorCVlvdSBzYXksIGlmIEkgYnJpbmcgaW4geW91ciBSb3NhbGluZCwKKwlZb3Ugd2lsbCBiZXN0b3cgaGVyIG9uIE9ybGFuZG8gaGVyZT8KKworRFVLRSBTRU5JT1IJVGhhdCB3b3VsZCBJLCBoYWQgSSBraW5nZG9tcyB0byBnaXZlIHdpdGggaGVyLgorCitST1NBTElORAlBbmQgeW91IHNheSwgeW91IHdpbGwgaGF2ZSBoZXIsIHdoZW4gSSBicmluZyBoZXI/CisKK09STEFORE8JVGhhdCB3b3VsZCBJLCB3ZXJlIEkgb2YgYWxsIGtpbmdkb21zIGtpbmcuCisKK1JPU0FMSU5ECVlvdSBzYXksIHlvdSdsbCBtYXJyeSBtZSwgaWYgSSBiZSB3aWxsaW5nPworCitQSEVCRQlUaGF0IHdpbGwgSSwgc2hvdWxkIEkgZGllIHRoZSBob3VyIGFmdGVyLgorCitST1NBTElORAlCdXQgaWYgeW91IGRvIHJlZnVzZSB0byBtYXJyeSBtZSwKKwlZb3UnbGwgZ2l2ZSB5b3Vyc2VsZiB0byB0aGlzIG1vc3QgZmFpdGhmdWwgc2hlcGhlcmQ/CisKK1BIRUJFCVNvIGlzIHRoZSBiYXJnYWluLgorCitST1NBTElORAlZb3Ugc2F5LCB0aGF0IHlvdSdsbCBoYXZlIFBoZWJlLCBpZiBzaGUgd2lsbD8KKworU0lMVklVUwlUaG91Z2ggdG8gaGF2ZSBoZXIgYW5kIGRlYXRoIHdlcmUgYm90aCBvbmUgdGhpbmcuCisKK1JPU0FMSU5ECUkgaGF2ZSBwcm9taXNlZCB0byBtYWtlIGFsbCB0aGlzIG1hdHRlciBldmVuLgorCUtlZXAgeW91IHlvdXIgd29yZCwgTyBkdWtlLCB0byBnaXZlIHlvdXIgZGF1Z2h0ZXI7CisJWW91IHlvdXJzLCBPcmxhbmRvLCB0byByZWNlaXZlIGhpcyBkYXVnaHRlcjoKKwlLZWVwIHlvdXIgd29yZCwgUGhlYmUsIHRoYXQgeW91J2xsIG1hcnJ5IG1lLAorCU9yIGVsc2UgcmVmdXNpbmcgbWUsIHRvIHdlZCB0aGlzIHNoZXBoZXJkOgorCUtlZXAgeW91ciB3b3JkLCBTaWx2aXVzLCB0aGF0IHlvdSdsbCBtYXJyeSBoZXIuCisJSWYgc2hlIHJlZnVzZSBtZTogYW5kIGZyb20gaGVuY2UgSSBnbywKKwlUbyBtYWtlIHRoZXNlIGRvdWJ0cyBhbGwgZXZlbi4KKworCVtFeGV1bnQgUk9TQUxJTkQgYW5kIENFTElBXQorCitEVUtFIFNFTklPUglJIGRvIHJlbWVtYmVyIGluIHRoaXMgc2hlcGhlcmQgYm95CisJU29tZSBsaXZlbHkgdG91Y2hlcyBvZiBteSBkYXVnaHRlcidzIGZhdm91ci4KKworT1JMQU5ETwlNeSBsb3JkLCB0aGUgZmlyc3QgdGltZSB0aGF0IEkgZXZlciBzYXcgaGltCisJTWV0aG91Z2h0IGhlIHdhcyBhIGJyb3RoZXIgdG8geW91ciBkYXVnaHRlcjoKKwlCdXQsIG15IGdvb2QgbG9yZCwgdGhpcyBib3kgaXMgZm9yZXN0LWJvcm4sCisJQW5kIGhhdGggYmVlbiB0dXRvcidkIGluIHRoZSBydWRpbWVudHMKKwlPZiBtYW55IGRlc3BlcmF0ZSBzdHVkaWVzIGJ5IGhpcyB1bmNsZSwKKwlXaG9tIGhlIHJlcG9ydHMgdG8gYmUgYSBncmVhdCBtYWdpY2lhbiwKKwlPYnNjdXJlZCBpbiB0aGUgY2lyY2xlIG9mIHRoaXMgZm9yZXN0LgorCisJW0VudGVyIFRPVUNIU1RPTkUgYW5kIEFVRFJFWV0KKworSkFRVUVTCVRoZXJlIGlzLCBzdXJlLCBhbm90aGVyIGZsb29kIHRvd2FyZCwgYW5kIHRoZXNlCisJY291cGxlcyBhcmUgY29taW5nIHRvIHRoZSBhcmsuIEhlcmUgY29tZXMgYSBwYWlyIG9mCisJdmVyeSBzdHJhbmdlIGJlYXN0cywgd2hpY2ggaW4gYWxsIHRvbmd1ZXMgYXJlIGNhbGxlZCBmb29scy4KKworVE9VQ0hTVE9ORQlTYWx1dGF0aW9uIGFuZCBncmVldGluZyB0byB5b3UgYWxsIQorCitKQVFVRVMJR29vZCBteSBsb3JkLCBiaWQgaGltIHdlbGNvbWU6IHRoaXMgaXMgdGhlCisJbW90bGV5LW1pbmRlZCBnZW50bGVtYW4gdGhhdCBJIGhhdmUgc28gb2Z0ZW4gbWV0IGluCisJdGhlIGZvcmVzdDogaGUgaGF0aCBiZWVuIGEgY291cnRpZXIsIGhlIHN3ZWFycy4KKworVE9VQ0hTVE9ORQlJZiBhbnkgbWFuIGRvdWJ0IHRoYXQsIGxldCBoaW0gcHV0IG1lIHRvIG15CisJcHVyZ2F0aW9uLiBJIGhhdmUgdHJvZCBhIG1lYXN1cmU7IEkgaGF2ZSBmbGF0dGVyZWQKKwlhIGxhZHk7IEkgaGF2ZSBiZWVuIHBvbGl0aWMgd2l0aCBteSBmcmllbmQsIHNtb290aAorCXdpdGggbWluZSBlbmVteTsgSSBoYXZlIHVuZG9uZSB0aHJlZSB0YWlsb3JzOyBJIGhhdmUKKwloYWQgZm91ciBxdWFycmVscywgYW5kIGxpa2UgdG8gaGF2ZSBmb3VnaHQgb25lLgorCitKQVFVRVMJQW5kIGhvdyB3YXMgdGhhdCB0YSdlbiB1cD8KKworVE9VQ0hTVE9ORQlGYWl0aCwgd2UgbWV0LCBhbmQgZm91bmQgdGhlIHF1YXJyZWwgd2FzIHVwb24gdGhlCisJc2V2ZW50aCBjYXVzZS4KKworSkFRVUVTCUhvdyBzZXZlbnRoIGNhdXNlPyBHb29kIG15IGxvcmQsIGxpa2UgdGhpcyBmZWxsb3cuCisKK0RVS0UgU0VOSU9SCUkgbGlrZSBoaW0gdmVyeSB3ZWxsLgorCitUT1VDSFNUT05FCUdvZCAnaWxkIHlvdSwgc2lyOyBJIGRlc2lyZSB5b3Ugb2YgdGhlIGxpa2UuIEkKKwlwcmVzcyBpbiBoZXJlLCBzaXIsIGFtb25nc3QgdGhlIHJlc3Qgb2YgdGhlIGNvdW50cnkKKwljb3B1bGF0aXZlcywgdG8gc3dlYXIgYW5kIHRvIGZvcnN3ZWFyOiBhY2NvcmRpbmcgYXMKKwltYXJyaWFnZSBiaW5kcyBhbmQgYmxvb2QgYnJlYWtzOiBhIHBvb3IgdmlyZ2luLAorCXNpciwgYW4gaWxsLWZhdm91cmVkIHRoaW5nLCBzaXIsIGJ1dCBtaW5lIG93bjsgYSBwb29yCisJaHVtb3VyIG9mIG1pbmUsIHNpciwgdG8gdGFrZSB0aGF0IHRoYXQgbm8gbWFuIGVsc2UKKwl3aWxsOiByaWNoIGhvbmVzdHkgZHdlbGxzIGxpa2UgYSBtaXNlciwgc2lyLCBpbiBhCisJcG9vciBob3VzZTsgYXMgeW91ciBwZWFybCBpbiB5b3VyIGZvdWwgb3lzdGVyLgorCitEVUtFIFNFTklPUglCeSBteSBmYWl0aCwgaGUgaXMgdmVyeSBzd2lmdCBhbmQgc2VudGVudGlvdXMuCisKK1RPVUNIU1RPTkUJQWNjb3JkaW5nIHRvIHRoZSBmb29sJ3MgYm9sdCwgc2lyLCBhbmQgc3VjaCBkdWxjZXQgZGlzZWFzZXMuCisKK0pBUVVFUwlCdXQsIGZvciB0aGUgc2V2ZW50aCBjYXVzZTsgaG93IGRpZCB5b3UgZmluZCB0aGUKKwlxdWFycmVsIG9uIHRoZSBzZXZlbnRoIGNhdXNlPworCitUT1VDSFNUT05FCVVwb24gYSBsaWUgc2V2ZW4gdGltZXMgcmVtb3ZlZDotLWJlYXIgeW91ciBib2R5IG1vcmUKKwlzZWVtaW5nLCBBdWRyZXk6LS1hcyB0aHVzLCBzaXIuIEkgZGlkIGRpc2xpa2UgdGhlCisJY3V0IG9mIGEgY2VydGFpbiBjb3VydGllcidzIGJlYXJkOiBoZSBzZW50IG1lIHdvcmQsCisJaWYgSSBzYWlkIGhpcyBiZWFyZCB3YXMgbm90IGN1dCB3ZWxsLCBoZSB3YXMgaW4gdGhlCisJbWluZCBpdCB3YXM6IHRoaXMgaXMgY2FsbGVkIHRoZSBSZXRvcnQgQ291cnRlb3VzLgorCUlmIEkgc2VudCBoaW0gd29yZCBhZ2FpbiAnaXQgd2FzIG5vdCB3ZWxsIGN1dCwnIGhlCisJd291bGQgc2VuZCBtZSB3b3JkLCBoZSBjdXQgaXQgdG8gcGxlYXNlIGhpbXNlbGY6CisJdGhpcyBpcyBjYWxsZWQgdGhlIFF1aXAgTW9kZXN0LiBJZiBhZ2FpbiAnaXQgd2FzCisJbm90IHdlbGwgY3V0LCcgaGUgZGlzYWJsZWQgbXkganVkZ21lbnQ6IHRoaXMgaXMKKwljYWxsZWQgdGhlIFJlcGx5IENodXJsaXNoLiBJZiBhZ2FpbiAnaXQgd2FzIG5vdAorCXdlbGwgY3V0LCcgaGUgd291bGQgYW5zd2VyLCBJIHNwYWtlIG5vdCB0cnVlOiB0aGlzCisJaXMgY2FsbGVkIHRoZSBSZXByb29mIFZhbGlhbnQuIElmIGFnYWluICdpdCB3YXMgbm90CisJd2VsbCBjdXQsJyBoZSB3b3VsZCBzYXkgSSBsaWVkOiB0aGlzIGlzIGNhbGxlZCB0aGUKKwlDb3VudGVyLWNoZXF1ZSBRdWFycmVsc29tZTogYW5kIHNvIHRvIHRoZSBMaWUKKwlDaXJjdW1zdGFudGlhbCBhbmQgdGhlIExpZSBEaXJlY3QuCisKK0pBUVVFUwlBbmQgaG93IG9mdCBkaWQgeW91IHNheSBoaXMgYmVhcmQgd2FzIG5vdCB3ZWxsIGN1dD8KKworVE9VQ0hTVE9ORQlJIGR1cnN0IGdvIG5vIGZ1cnRoZXIgdGhhbiB0aGUgTGllIENpcmN1bXN0YW50aWFsLAorCW5vciBoZSBkdXJzdCBub3QgZ2l2ZSBtZSB0aGUgTGllIERpcmVjdDsgYW5kIHNvIHdlCisJbWVhc3VyZWQgc3dvcmRzIGFuZCBwYXJ0ZWQuCisKK0pBUVVFUwlDYW4geW91IG5vbWluYXRlIGluIG9yZGVyIG5vdyB0aGUgZGVncmVlcyBvZiB0aGUgbGllPworCitUT1VDSFNUT05FCU8gc2lyLCB3ZSBxdWFycmVsIGluIHByaW50LCBieSB0aGUgYm9vazsgYXMgeW91IGhhdmUKKwlib29rcyBmb3IgZ29vZCBtYW5uZXJzOiBJIHdpbGwgbmFtZSB5b3UgdGhlIGRlZ3JlZXMuCisJVGhlIGZpcnN0LCB0aGUgUmV0b3J0IENvdXJ0ZW91czsgdGhlIHNlY29uZCwgdGhlCisJUXVpcCBNb2Rlc3Q7IHRoZSB0aGlyZCwgdGhlIFJlcGx5IENodXJsaXNoOyB0aGUKKwlmb3VydGgsIHRoZSBSZXByb29mIFZhbGlhbnQ7IHRoZSBmaWZ0aCwgdGhlCisJQ291bnRlcmNoZXF1ZSBRdWFycmVsc29tZTsgdGhlIHNpeHRoLCB0aGUgTGllIHdpdGgKKwlDaXJjdW1zdGFuY2U7IHRoZSBzZXZlbnRoLCB0aGUgTGllIERpcmVjdC4gQWxsCisJdGhlc2UgeW91IG1heSBhdm9pZCBidXQgdGhlIExpZSBEaXJlY3Q7IGFuZCB5b3UgbWF5CisJYXZvaWQgdGhhdCB0b28sIHdpdGggYW4gSWYuIEkga25ldyB3aGVuIHNldmVuCisJanVzdGljZXMgY291bGQgbm90IHRha2UgdXAgYSBxdWFycmVsLCBidXQgd2hlbiB0aGUKKwlwYXJ0aWVzIHdlcmUgbWV0IHRoZW1zZWx2ZXMsIG9uZSBvZiB0aGVtIHRob3VnaHQgYnV0CisJb2YgYW4gSWYsIGFzLCAnSWYgeW91IHNhaWQgc28sIHRoZW4gSSBzYWlkIHNvOycgYW5kCisJdGhleSBzaG9vayBoYW5kcyBhbmQgc3dvcmUgYnJvdGhlcnMuIFlvdXIgSWYgaXMgdGhlCisJb25seSBwZWFjZW1ha2VyOyBtdWNoIHZpcnR1ZSBpbiBJZi4KKworSkFRVUVTCUlzIG5vdCB0aGlzIGEgcmFyZSBmZWxsb3csIG15IGxvcmQ/IGhlJ3MgYXMgZ29vZCBhdAorCWFueSB0aGluZyBhbmQgeWV0IGEgZm9vbC4KKworRFVLRSBTRU5JT1IJSGUgdXNlcyBoaXMgZm9sbHkgbGlrZSBhIHN0YWxraW5nLWhvcnNlIGFuZCB1bmRlcgorCXRoZSBwcmVzZW50YXRpb24gb2YgdGhhdCBoZSBzaG9vdHMgaGlzIHdpdC4KKworCVtFbnRlciBIWU1FTiwgUk9TQUxJTkQsIGFuZCBDRUxJQV0KKworCVtTdGlsbCBNdXNpY10KKworSFlNRU4JICAgICAgICBUaGVuIGlzIHRoZXJlIG1pcnRoIGluIGhlYXZlbiwKKwlXaGVuIGVhcnRobHkgdGhpbmdzIG1hZGUgZXZlbgorCUF0b25lIHRvZ2V0aGVyLgorCUdvb2QgZHVrZSwgcmVjZWl2ZSB0aHkgZGF1Z2h0ZXIKKwlIeW1lbiBmcm9tIGhlYXZlbiBicm91Z2h0IGhlciwKKwlZZWEsIGJyb3VnaHQgaGVyIGhpdGhlciwKKwlUaGF0IHRob3UgbWlnaHRzdCBqb2luIGhlciBoYW5kIHdpdGggaGlzCisJV2hvc2UgaGVhcnQgd2l0aGluIGhpcyBib3NvbSBpcy4KKworUk9TQUxJTkQJW1RvIERVS0UgU0VOSU9SXSAgVG8geW91IEkgZ2l2ZSBteXNlbGYsIGZvciBJIGFtIHlvdXJzLgorCisJW1RvIE9STEFORE9dCisKKwlUbyB5b3UgSSBnaXZlIG15c2VsZiwgZm9yIEkgYW0geW91cnMuCisKK0RVS0UgU0VOSU9SCUlmIHRoZXJlIGJlIHRydXRoIGluIHNpZ2h0LCB5b3UgYXJlIG15IGRhdWdodGVyLgorCitPUkxBTkRPCUlmIHRoZXJlIGJlIHRydXRoIGluIHNpZ2h0LCB5b3UgYXJlIG15IFJvc2FsaW5kLgorCitQSEVCRQlJZiBzaWdodCBhbmQgc2hhcGUgYmUgdHJ1ZSwKKwlXaHkgdGhlbiwgbXkgbG92ZSBhZGlldSEKKworUk9TQUxJTkQJSSdsbCBoYXZlIG5vIGZhdGhlciwgaWYgeW91IGJlIG5vdCBoZToKKwlJJ2xsIGhhdmUgbm8gaHVzYmFuZCwgaWYgeW91IGJlIG5vdCBoZToKKwlOb3IgbmUnZXIgd2VkIHdvbWFuLCBpZiB5b3UgYmUgbm90IHNoZS4KKworSFlNRU4JICAgICAgICBQZWFjZSwgaG8hIEkgYmFyIGNvbmZ1c2lvbjoKKwknVGlzIEkgbXVzdCBtYWtlIGNvbmNsdXNpb24KKwlPZiB0aGVzZSBtb3N0IHN0cmFuZ2UgZXZlbnRzOgorCUhlcmUncyBlaWdodCB0aGF0IG11c3QgdGFrZSBoYW5kcworCVRvIGpvaW4gaW4gSHltZW4ncyBiYW5kcywKKwlJZiB0cnV0aCBob2xkcyB0cnVlIGNvbnRlbnRzLgorCVlvdSBhbmQgeW91IG5vIGNyb3NzIHNoYWxsIHBhcnQ6CisJWW91IGFuZCB5b3UgYXJlIGhlYXJ0IGluIGhlYXJ0CisJWW91IHRvIGhpcyBsb3ZlIG11c3QgYWNjb3JkLAorCU9yIGhhdmUgYSB3b21hbiB0byB5b3VyIGxvcmQ6CisJWW91IGFuZCB5b3UgYXJlIHN1cmUgdG9nZXRoZXIsCisJQXMgdGhlIHdpbnRlciB0byBmb3VsIHdlYXRoZXIuCisJV2hpbGVzIGEgd2VkbG9jay1oeW1uIHdlIHNpbmcsCisJRmVlZCB5b3Vyc2VsdmVzIHdpdGggcXVlc3Rpb25pbmc7CisJVGhhdCByZWFzb24gd29uZGVyIG1heSBkaW1pbmlzaCwKKwlIb3cgdGh1cyB3ZSBtZXQsIGFuZCB0aGVzZSB0aGluZ3MgZmluaXNoLgorCQorCVNPTkcuCisJV2VkZGluZyBpcyBncmVhdCBKdW5vJ3MgY3Jvd246CisJTyBibGVzc2VkIGJvbmQgb2YgYm9hcmQgYW5kIGJlZCEKKwknVGlzIEh5bWVuIHBlb3BsZXMgZXZlcnkgdG93bjsKKwlIaWdoIHdlZGxvY2sgdGhlbiBiZSBob25vdXJlZDoKKwlIb25vdXIsIGhpZ2ggaG9ub3VyIGFuZCByZW5vd24sCisJVG8gSHltZW4sIGdvZCBvZiBldmVyeSB0b3duIQorCitEVUtFIFNFTklPUglPIG15IGRlYXIgbmllY2UsIHdlbGNvbWUgdGhvdSBhcnQgdG8gbWUhCisJRXZlbiBkYXVnaHRlciwgd2VsY29tZSwgaW4gbm8gbGVzcyBkZWdyZWUuCisKK1BIRUJFCUkgd2lsbCBub3QgZWF0IG15IHdvcmQsIG5vdyB0aG91IGFydCBtaW5lOworCVRoeSBmYWl0aCBteSBmYW5jeSB0byB0aGVlIGRvdGggY29tYmluZS4KKworCVtFbnRlciBKQVFVRVMgREUgQk9ZU10KKworSkFRVUVTIERFIEJPWVMJTGV0IG1lIGhhdmUgYXVkaWVuY2UgZm9yIGEgd29yZCBvciB0d286CisJSSBhbSB0aGUgc2Vjb25kIHNvbiBvZiBvbGQgU2lyIFJvd2xhbmQsCisJVGhhdCBicmluZyB0aGVzZSB0aWRpbmdzIHRvIHRoaXMgZmFpciBhc3NlbWJseS4KKwlEdWtlIEZyZWRlcmljaywgaGVhcmluZyBob3cgdGhhdCBldmVyeSBkYXkKKwlNZW4gb2YgZ3JlYXQgd29ydGggcmVzb3J0ZWQgdG8gdGhpcyBmb3Jlc3QsCisJQWRkcmVzcydkIGEgbWlnaHR5IHBvd2VyOyB3aGljaCB3ZXJlIG9uIGZvb3QsCisJSW4gaGlzIG93biBjb25kdWN0LCBwdXJwb3NlbHkgdG8gdGFrZQorCUhpcyBicm90aGVyIGhlcmUgYW5kIHB1dCBoaW0gdG8gdGhlIHN3b3JkOgorCUFuZCB0byB0aGUgc2tpcnRzIG9mIHRoaXMgd2lsZCB3b29kIGhlIGNhbWU7CisJV2hlcmUgbWVldGluZyB3aXRoIGFuIG9sZCByZWxpZ2lvdXMgbWFuLAorCUFmdGVyIHNvbWUgcXVlc3Rpb24gd2l0aCBoaW0sIHdhcyBjb252ZXJ0ZWQKKwlCb3RoIGZyb20gaGlzIGVudGVycHJpc2UgYW5kIGZyb20gdGhlIHdvcmxkLAorCUhpcyBjcm93biBiZXF1ZWF0aGluZyB0byBoaXMgYmFuaXNoJ2QgYnJvdGhlciwKKwlBbmQgYWxsIHRoZWlyIGxhbmRzIHJlc3RvcmVkIHRvIHRoZW0gYWdhaW4KKwlUaGF0IHdlcmUgd2l0aCBoaW0gZXhpbGVkLiBUaGlzIHRvIGJlIHRydWUsCisJSSBkbyBlbmdhZ2UgbXkgbGlmZS4KKworRFVLRSBTRU5JT1IJV2VsY29tZSwgeW91bmcgbWFuOworCVRob3Ugb2ZmZXInc3QgZmFpcmx5IHRvIHRoeSBicm90aGVycycgd2VkZGluZzoKKwlUbyBvbmUgaGlzIGxhbmRzIHdpdGhoZWxkLCBhbmQgdG8gdGhlIG90aGVyCisJQSBsYW5kIGl0c2VsZiBhdCBsYXJnZSwgYSBwb3RlbnQgZHVrZWRvbS4KKwlGaXJzdCwgaW4gdGhpcyBmb3Jlc3QsIGxldCB1cyBkbyB0aG9zZSBlbmRzCisJVGhhdCBoZXJlIHdlcmUgd2VsbCBiZWd1biBhbmQgd2VsbCBiZWdvdDoKKwlBbmQgYWZ0ZXIsIGV2ZXJ5IG9mIHRoaXMgaGFwcHkgbnVtYmVyCisJVGhhdCBoYXZlIGVuZHVyZWQgc2hyZXdkIGRheXMgYW5kIG5pZ2h0cyB3aXRoIHVzCisJU2hhbGwgc2hhcmUgdGhlIGdvb2Qgb2Ygb3VyIHJldHVybmVkIGZvcnR1bmUsCisJQWNjb3JkaW5nIHRvIHRoZSBtZWFzdXJlIG9mIHRoZWlyIHN0YXRlcy4KKwlNZWFudGltZSwgZm9yZ2V0IHRoaXMgbmV3LWZhbGwnbiBkaWduaXR5CisJQW5kIGZhbGwgaW50byBvdXIgcnVzdGljIHJldmVscnkuCisJUGxheSwgbXVzaWMhIEFuZCB5b3UsIGJyaWRlcyBhbmQgYnJpZGVncm9vbXMgYWxsLAorCVdpdGggbWVhc3VyZSBoZWFwJ2QgaW4gam95LCB0byB0aGUgbWVhc3VyZXMgZmFsbC4KKworSkFRVUVTCVNpciwgYnkgeW91ciBwYXRpZW5jZS4gSWYgSSBoZWFyZCB5b3UgcmlnaHRseSwKKwlUaGUgZHVrZSBoYXRoIHB1dCBvbiBhIHJlbGlnaW91cyBsaWZlCisJQW5kIHRocm93biBpbnRvIG5lZ2xlY3QgdGhlIHBvbXBvdXMgY291cnQ/CisKK0pBUVVFUyBERSBCT1lTCUhlIGhhdGguCisKK0pBUVVFUwlUbyBoaW0gd2lsbCBJIDogb3V0IG9mIHRoZXNlIGNvbnZlcnRpdGVzCisJVGhlcmUgaXMgbXVjaCBtYXR0ZXIgdG8gYmUgaGVhcmQgYW5kIGxlYXJuJ2QuCisKKwlbVG8gRFVLRSBTRU5JT1JdCisKKwlZb3UgdG8geW91ciBmb3JtZXIgaG9ub3VyIEkgYmVxdWVhdGg7CisJWW91ciBwYXRpZW5jZSBhbmQgeW91ciB2aXJ0dWUgd2VsbCBkZXNlcnZlcyBpdDoKKworCVtUbyBPUkxBTkRPXQorCisJWW91IHRvIGEgbG92ZSB0aGF0IHlvdXIgdHJ1ZSBmYWl0aCBkb3RoIG1lcml0OgorCisJW1RvIE9MSVZFUl0KKworCVlvdSB0byB5b3VyIGxhbmQgYW5kIGxvdmUgYW5kIGdyZWF0IGFsbGllczoKKworCVtUbyBTSUxWSVVTXQorCisJWW91IHRvIGEgbG9uZyBhbmQgd2VsbC1kZXNlcnZlZCBiZWQ6CisKKwlbVG8gVE9VQ0hTVE9ORV0KKworCUFuZCB5b3UgdG8gd3JhbmdsaW5nOyBmb3IgdGh5IGxvdmluZyB2b3lhZ2UKKwlJcyBidXQgZm9yIHR3byBtb250aHMgdmljdHVhbGwnZC4gU28sIHRvIHlvdXIgcGxlYXN1cmVzOgorCUkgYW0gZm9yIG90aGVyIHRoYW4gZm9yIGRhbmNpbmcgbWVhc3VyZXMuCisKK0RVS0UgU0VOSU9SCVN0YXksIEphcXVlcywgc3RheS4KKworSkFRVUVTCVRvIHNlZSBubyBwYXN0aW1lIEkJd2hhdCB5b3Ugd291bGQgaGF2ZQorCUknbGwgc3RheSB0byBrbm93IGF0IHlvdXIgYWJhbmRvbidkIGNhdmUuCisKKwlbRXhpdF0KKworRFVLRSBTRU5JT1IJUHJvY2VlZCwgcHJvY2VlZDogd2Ugd2lsbCBiZWdpbiB0aGVzZSByaXRlcywKKwlBcyB3ZSBkbyB0cnVzdCB0aGV5J2xsIGVuZCwgaW4gdHJ1ZSBkZWxpZ2h0cy4KKworCVtBIGRhbmNlXQorCisKKworCisJQVMgWU9VIExJS0UgSVQKKworCUVQSUxPR1VFCisKKworUk9TQUxJTkQJSXQgaXMgbm90IHRoZSBmYXNoaW9uIHRvIHNlZSB0aGUgbGFkeSB0aGUgZXBpbG9ndWU7CisJYnV0IGl0IGlzIG5vIG1vcmUgdW5oYW5kc29tZSB0aGFuIHRvIHNlZSB0aGUgbG9yZAorCXRoZSBwcm9sb2d1ZS4gSWYgaXQgYmUgdHJ1ZSB0aGF0IGdvb2Qgd2luZSBuZWVkcworCW5vIGJ1c2gsICd0aXMgdHJ1ZSB0aGF0IGEgZ29vZCBwbGF5IG5lZWRzIG5vCisJZXBpbG9ndWU7IHlldCB0byBnb29kIHdpbmUgdGhleSBkbyB1c2UgZ29vZCBidXNoZXMsCisJYW5kIGdvb2QgcGxheXMgcHJvdmUgdGhlIGJldHRlciBieSB0aGUgaGVscCBvZiBnb29kCisJZXBpbG9ndWVzLiBXaGF0IGEgY2FzZSBhbSBJIGluIHRoZW4sIHRoYXQgYW0KKwluZWl0aGVyIGEgZ29vZCBlcGlsb2d1ZSBub3IgY2Fubm90IGluc2ludWF0ZSB3aXRoCisJeW91IGluIHRoZSBiZWhhbGYgb2YgYSBnb29kIHBsYXkhIEkgYW0gbm90CisJZnVybmlzaGVkIGxpa2UgYSBiZWdnYXIsIHRoZXJlZm9yZSB0byBiZWcgd2lsbCBub3QKKwliZWNvbWUgbWU6IG15IHdheSBpcyB0byBjb25qdXJlIHlvdTsgYW5kIEknbGwgYmVnaW4KKwl3aXRoIHRoZSB3b21lbi4gSSBjaGFyZ2UgeW91LCBPIHdvbWVuLCBmb3IgdGhlIGxvdmUKKwl5b3UgYmVhciB0byBtZW4sIHRvIGxpa2UgYXMgbXVjaCBvZiB0aGlzIHBsYXkgYXMKKwlwbGVhc2UgeW91OiBhbmQgSSBjaGFyZ2UgeW91LCBPIG1lbiwgZm9yIHRoZSBsb3ZlCisJeW91IGJlYXIgdG8gd29tZW4tLWFzIEkgcGVyY2VpdmUgYnkgeW91ciBzaW1wZXJpbmcsCisJbm9uZSBvZiB5b3UgaGF0ZXMgdGhlbS0tdGhhdCBiZXR3ZWVuIHlvdSBhbmQgdGhlCisJd29tZW4gdGhlIHBsYXkgbWF5IHBsZWFzZS4gSWYgSSB3ZXJlIGEgd29tYW4gSQorCXdvdWxkIGtpc3MgYXMgbWFueSBvZiB5b3UgYXMgaGFkIGJlYXJkcyB0aGF0IHBsZWFzZWQKKwltZSwgY29tcGxleGlvbnMgdGhhdCBsaWtlZCBtZSBhbmQgYnJlYXRocyB0aGF0IEkKKwlkZWZpZWQgbm90OiBhbmQsIEkgYW0gc3VyZSwgYXMgbWFueSBhcyBoYXZlIGdvb2QKKwliZWFyZHMgb3IgZ29vZCBmYWNlcyBvciBzd2VldCBicmVhdGhzIHdpbGwsIGZvciBteQorCWtpbmQgb2ZmZXIsIHdoZW4gSSBtYWtlIGN1cnRzeSwgYmlkIG1lIGZhcmV3ZWxsLgorCisJW0V4ZXVudF0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9hc3lvdWxpay50eHQuY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9hc3lvdWxpay50eHQuY29tcHJlc3NlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTc2MjExCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2FzeW91bGlrLnR4dC5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9iYWNrd2FyZDY1NTM2IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2JhY2t3YXJkNjU1MzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBlZmIzYwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9iYWNrd2FyZDY1NTM2CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9iYWNrd2FyZDY1NTM2LmNvbXByZXNzZWQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYmFja3dhcmQ2NTUzNi5jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTUyMTkKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYmFja3dhcmQ2NTUzNi5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9iYi5iaW5hc3QgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYmIuYmluYXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliN2YwNzMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvYmIuYmluYXN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9jb21wcmVzc2VkX2ZpbGUgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvY29tcHJlc3NlZF9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZDg2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvY29tcHJlc3NlZF9maWxlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9jb21wcmVzc2VkX2ZpbGUuY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9jb21wcmVzc2VkX2ZpbGUuY29tcHJlc3NlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODM0ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2NvbXByZXNzZWRfZmlsZS5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9jb21wcmVzc2VkX3JlcGVhdGVkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2NvbXByZXNzZWRfcmVwZWF0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3MGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9jb21wcmVzc2VkX3JlcGVhdGVkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9jb21wcmVzc2VkX3JlcGVhdGVkLmNvbXByZXNzZWQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvY29tcHJlc3NlZF9yZXBlYXRlZC5jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5Mjc1NDUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvY29tcHJlc3NlZF9yZXBlYXRlZC5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjAwIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhmYTVhMgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjAwCkBAIC0wLDAgKzEgQEAKKwYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wMSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjAxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YmIzNDcKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wMQpAQCAtMCwwICsxIEBACiuBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjAyIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE4M2RmNgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjAyCkBAIC0wLDAgKzEgQEAKK6EBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDMgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTYwZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDMKQEAgLTAsMCArMSBAQAorsQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wNCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYWMwMzQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wNApAQCAtMCwwICsxIEBACivBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA1IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThjOWRjYwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA1CkBAIC0wLDAgKzEgQEAKK9EBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDYgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGY2MDZmCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDYKQEAgLTAsMCArMSBAQAor4QEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wNyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDFkNTMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wNwpAQCAtMCwwICsxIEBACivxAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA4IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0MGU1YwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA4CkBAIC0wLDAgKzEgQEAKKzMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wOSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjA5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTM2ODEKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4wOQpAQCAtMCwwICsxIEBACis1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTAgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzkzMDI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTAKQEAgLTAsMCArMSBAQAorNwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjExIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjExYzgyYQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjExCkBAIC0wLDAgKzEgQEAKKzkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xMiBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjEyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOGEwZTcKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xMgpAQCAtMCwwICsxIEBACis7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTMgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTFjNzVjCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTMKQEAgLTAsMCArMSBAQAorPQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjE0IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3NThjOQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjE0CkBAIC0wLDAgKzEgQEAKKz8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xNSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9lbXB0eS5jb21wcmVzc2VkLjE1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MmY5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xNQpAQCAtMCwwICsxIEBACisaClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTYgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTM2YTc5Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTcgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWYwMzg4Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTcKQEAgLTAsMCArMSBAQAorAQMGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTggYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvZW1wdHkuY29tcHJlc3NlZC4xOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjRlMzQxCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2VtcHR5LmNvbXByZXNzZWQuMTgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2xjZXQxMC50eHQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvbGNldDEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWRkYTZiCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL2xjZXQxMC50eHQKQEAgLTAsMCArMSw3NTE5IEBACisNCisNCitUaGUgUHJvamVjdCBHdXRlbmJlcmcgRXRleHQgb2YgTE9DIFdPUktTSE9QIE9OIEVMRUNUUk9OSUMgVEVYVFMNCisNCisNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgV09SS1NIT1AgT04gRUxFQ1RST05JQyBURVhUUw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9DRUVESU5HUw0KKw0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdGVkIGJ5IEphbWVzIERhbHkNCisNCisNCisNCisNCisNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDktMTAgSnVuZSAxOTkyDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBvZiBDb25ncmVzcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYXNoaW5ndG9uLCBELkMuDQorDQorDQorDQorICAgIFN1cHBvcnRlZCBieSBhIEdyYW50IGZyb20gdGhlIERhdmlkIGFuZCBMdWNpbGUgUGFja2FyZCBGb3VuZGF0aW9uDQorDQorDQorICAgICAgICAgICAgICAgKioqICAgKioqICAgKioqICAgKioqKioqICAgKioqICAgKioqICAgKioqDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFIE9GIENPTlRFTlRTDQorDQorDQorQWNrbm93bGVkZ2VtZW50cw0KKw0KK0ludHJvZHVjdGlvbg0KKw0KK1Byb2NlZWRpbmdzDQorICAgV2VsY29tZQ0KKyAgICAgIFByb3NzZXIgR2lmZm9yZCBhbmQgQ2FybCBGbGVpc2NoaGF1ZXINCisNCisgICBTZXNzaW9uIEkuICBDb250ZW50IGluIGEgTmV3IEZvcm06ICBXaG8gV2lsbCBVc2UgSXQgYW5kIFdoYXQgV2lsbCBUaGV5IERvPw0KKyAgICAgIEphbWVzIERhbHkgKE1vZGVyYXRvcikNCisgICAgICBBdnJhIE1pY2hlbHNvbiwgT3ZlcnZpZXcNCisgICAgICBTdXNhbiBILiBWZWNjaWEsIFVzZXIgRXZhbHVhdGlvbg0KKyAgICAgIEpvYW5uZSBGcmVlbWFuLCBCZXlvbmQgdGhlIFNjaG9sYXINCisgICAgICAgICBEaXNjdXNzaW9uDQorDQorICAgU2Vzc2lvbiBJSS4gIFNob3cgYW5kIFRlbGwNCisgICAgICBKYWNxdWVsaW5lIEhlc3MgKE1vZGVyYXRvcikNCisgICAgICBFbGxpIE15bG9uYXMsIFBlcnNldXMgUHJvamVjdA0KKyAgICAgICAgIERpc2N1c3Npb24NCisgICAgICBFcmljIE0uIENhbGFsdWNhLCBQYXRyb2xvZ2lhIExhdGluYSBEYXRhYmFzZQ0KKyAgICAgIENhcmwgRmxlaXNjaGhhdWVyIGFuZCBSaWNreSBFcndheSwgQW1lcmljYW4gTWVtb3J5DQorICAgICAgICAgRGlzY3Vzc2lvbg0KKyAgICAgIERvcm90aHkgVHdvaGlnLCBUaGUgUGFwZXJzIG9mIEdlb3JnZSBXYXNoaW5ndG9uDQorICAgICAgICAgRGlzY3Vzc2lvbg0KKyAgICAgIE1hcmlhIEwuIExlYnJvbiwgVGhlIE9ubGluZSBKb3VybmFsIG9mIEN1cnJlbnQgQ2xpbmljYWwgVHJpYWxzDQorICAgICAgICAgRGlzY3Vzc2lvbg0KKyAgICAgIEx5bm5lIEsuIFBlcnNvbml1cywgQ29ybmVsbCBtYXRoZW1hdGljcyBib29rcw0KKyAgICAgICAgIERpc2N1c3Npb24NCisNCisgICBTZXNzaW9uIElJSS4gIERpc3RyaWJ1dGlvbiwgTmV0d29ya3MsIGFuZCBOZXR3b3JraW5nOiAgDQorICAgICAgICAgICAgICAgICBPcHRpb25zIGZvciBEaXNzZW1pbmF0aW9uDQorICAgICAgUm9iZXJ0IEcuIFppY2ggKE1vZGVyYXRvcikNCisgICAgICBDbGlmZm9yZCBBLiBMeW5jaA0KKyAgICAgICAgIERpc2N1c3Npb24NCisgICAgICBIb3dhcmQgQmVzc2VyDQorICAgICAgICAgRGlzY3Vzc2lvbg0KKyAgICAgIFJvbmFsZCBMLiBMYXJzZW4NCisgICAgICBFZHdpbiBCLiBCcm93bnJpZ2cNCisgICAgICAgICBEaXNjdXNzaW9uDQorDQorICAgU2Vzc2lvbiBJVi4gIEltYWdlIENhcHR1cmUsIFRleHQgQ2FwdHVyZSwgT3ZlcnZpZXcgb2YgVGV4dCBhbmQNCisgICAgICAgICAgICAgICAgSW1hZ2UgU3RvcmFnZSBGb3JtYXRzDQorICAgICAgICAgV2lsbGlhbSBMLiBIb290b24gKE1vZGVyYXRvcikNCisgICAgICBBKSBQcmluY2lwYWwgTWV0aG9kcyBmb3IgSW1hZ2UgQ2FwdHVyZSBvZiBUZXh0OiAgDQorICAgICAgICAgICAgZGlyZWN0IHNjYW5uaW5nLCB1c2Ugb2YgbWljcm9mb3JtDQorICAgICAgICAgQW5uZSBSLiBLZW5uZXkNCisgICAgICAgICBQYW1lbGEgUS5KLiBBbmRyZQ0KKyAgICAgICAgIEp1ZGl0aCBBLiBaaWRhcg0KKyAgICAgICAgIERvbmFsZCBKLiBXYXRlcnMNCisgICAgICAgICAgICBEaXNjdXNzaW9uDQorICAgICAgQikgU3BlY2lhbCBQcm9ibGVtczogIGJvdW5kIHZvbHVtZXMsIGNvbnNlcnZhdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcm9kdWNpbmcgcHJpbnRlZCBoYWxmdG9uZXMNCisgICAgICAgICBHZW9yZ2UgVGhvbWENCisgICAgICAgICBDYXJsIEZsZWlzY2hoYXVlcg0KKyAgICAgICAgICAgIERpc2N1c3Npb24NCisgICAgICBDKSBJbWFnZSBTdGFuZGFyZHMgYW5kIEltcGxpY2F0aW9ucyBmb3IgUHJlc2VydmF0aW9uDQorICAgICAgICAgSmVhbiBCYXJvbmFzDQorICAgICAgICAgUGF0cmljaWEgQmF0dGluDQorICAgICAgICAgICAgRGlzY3Vzc2lvbg0KKyAgICAgIEQpIFRleHQgQ29udmVyc2lvbjogIE9DUiB2cy4gcmVrZXlpbmcsIHN0YW5kYXJkcyBvZiBhY2N1cmFjeQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2Ugb2YgaW1wZXJmZWN0IHRleHRzLCBzZXJ2aWNlIGJ1cmVhdXMNCisgICAgICAgICBNaWNoYWVsIExlc2sNCisgICAgICAgICBSaWNreSBFcndheQ0KKyAgICAgICAgIEp1ZGl0aCBBLiBaaWRhcg0KKyAgICAgICAgICAgIERpc2N1c3Npb24NCisNCisgICBTZXNzaW9uIFYuICBBcHByb2FjaGVzIHRvIFByZXBhcmluZyBFbGVjdHJvbmljIFRleHRzDQorICAgICAgU3VzYW4gSG9ja2V5IChNb2RlcmF0b3IpDQorICAgICAgU3R1YXJ0IFdlaWJlbA0KKyAgICAgICAgIERpc2N1c3Npb24NCisgICAgICBDLk0uIFNwZXJiZXJnLU1jUXVlZW4NCisgICAgICAgICBEaXNjdXNzaW9uDQorICAgICAgRXJpYyBNLiBDYWxhbHVjYQ0KKyAgICAgICAgIERpc2N1c3Npb24NCisNCisgICBTZXNzaW9uIFZJLiAgQ29weXJpZ2h0IElzc3Vlcw0KKyAgICAgIE1hcnliZXRoIFBldGVycw0KKw0KKyAgIFNlc3Npb24gVklJLiAgQ29uY2x1c2lvbg0KKyAgICAgIFByb3NzZXIgR2lmZm9yZCAoTW9kZXJhdG9yKQ0KKyAgICAgIEdlbmVyYWwgZGlzY3Vzc2lvbg0KKw0KK0FwcGVuZGl4IEk6ICBQcm9ncmFtDQorDQorQXBwZW5kaXggSUk6ICBBYnN0cmFjdHMNCisNCitBcHBlbmRpeCBJSUk6ICBEaXJlY3Rvcnkgb2YgUGFydGljaXBhbnRzDQorDQorDQorICAgICAgICAgICAgICAgKioqICAgKioqICAgKioqICAgKioqKioqICAgKioqICAgKioqICAgKioqDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFja25vd2xlZGdlbWVudHMNCisNCitJIHdvdWxkIGxpa2UgdG8gdGhhbmsgQ2FybCBGbGVpc2NoaGF1ZXIgYW5kIFByb3NzZXIgR2lmZm9yZCBmb3IgdGhlDQorb3Bwb3J0dW5pdHkgdG8gbGVhcm4gYWJvdXQgYXJlYXMgb2YgaHVtYW4gYWN0aXZpdHkgdW5rbm93biB0byBtZSBhIHNjYW50DQordGVuIG1vbnRocyBhZ28sIGFuZCB0aGUgRGF2aWQgYW5kIEx1Y2lsZSBQYWNrYXJkIEZvdW5kYXRpb24gZm9yDQorc3VwcG9ydGluZyB0aGF0IG9wcG9ydHVuaXR5LiAgVGhlIGhlbHAgZ2l2ZW4gYnkgb3RoZXJzIGlzIGFja25vd2xlZGdlZCBvbg0KK2Egc2VwYXJhdGUgcGFnZS4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTkgT2N0b2JlciAxOTkyDQorDQorDQorICAgICAgICAgICAgICAgKioqICAgKioqICAgKioqICAgKioqKioqICAgKioqICAgKioqICAgKioqDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UUk9EVUNUSU9ODQorDQorVGhlIFdvcmtzaG9wIG9uIEVsZWN0cm9uaWMgVGV4dHMgKDEpIGRyZXcgdG9nZXRoZXIgcmVwcmVzZW50YXRpdmVzIG9mDQordmFyaW91cyBwcm9qZWN0cyBhbmQgaW50ZXJlc3QgZ3JvdXBzIHRvIGNvbXBhcmUgaWRlYXMsIGJlbGllZnMsDQorZXhwZXJpZW5jZXMsIGFuZCwgaW4gcGFydGljdWxhciwgbWV0aG9kcyBvZiBwbGFjaW5nIGFuZCBwcmVzZW50aW5nDQoraGlzdG9yaWNhbCB0ZXh0dWFsIG1hdGVyaWFscyBpbiBjb21wdXRlcml6ZWQgZm9ybS4gIE1vc3QgYXR0ZW5kZWVzIGdhaW5lZA0KK211Y2ggaW4gaW5zaWdodCBhbmQgb3V0bG9vayBmcm9tIHRoZSBldmVudC4gIEJ1dCB0aGUgYXNzZW1ibHkgZGlkIG5vdA0KK2Zvcm0gYSBuZXcgbmF0aW9uLCBvciwgdG8gcHV0IGl0IGFub3RoZXIgd2F5LCB0aGUgZGl2ZXJzaXR5IG9mIHByb2plY3RzDQorYW5kIGludGVyZXN0cyB3YXMgdG9vIGdyZWF0IHRvIGRyYXcgdGhlIHJlcHJlc2VudGF0aXZlcyBpbnRvIGEgY29oZXNpdmUsDQorYWN0aW9uLW9yaWVudGVkIGJvZHkuKDIpDQorDQorRXZlcnlvbmUgYXR0ZW5kaW5nIHRoZSBXb3Jrc2hvcCBzaGFyZWQgYW4gaW50ZXJlc3QgaW4gcHJlc2VydmluZyBhbmQNCitwcm92aWRpbmcgYWNjZXNzIHRvIGhpc3RvcmljYWwgdGV4dHMuICBCdXQgd2l0aGluIHRoaXMgYnJvYWQgZmllbGQgdGhlDQorYXR0ZW5kZWVzIHJlcHJlc2VudGVkIGEgdmFyaWV0eSBvZiBmb3JtYWwsIGluZm9ybWFsLCBmaWd1cmF0aXZlLCBhbmQNCitsaXRlcmFsIGdyb3Vwcywgd2l0aCBtYW55IGluZGl2aWR1YWxzIGJlbG9uZ2luZyB0byBtb3JlIHRoYW4gb25lLiAgVGhlc2UNCitncm91cHMgbWF5IGJlIGRlZmluZWQgcm91Z2hseSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyB0b3BpY3Mgb3INCithY3Rpdml0aWVzOg0KKw0KKyogSW1hZ2luZw0KKyogU2VhcmNoYWJsZSBjb2RlZCB0ZXh0cw0KKyogTmF0aW9uYWwgYW5kIGludGVybmF0aW9uYWwgY29tcHV0ZXIgbmV0d29ya3MNCisqIENELVJPTSBwcm9kdWN0aW9uIGFuZCBkaXNzZW1pbmF0aW9uDQorKiBNZXRob2RzIGFuZCB0ZWNobm9sb2d5IGZvciBjb252ZXJ0aW5nIG9sZGVyIHBhcGVyIG1hdGVyaWFscyBpbnRvDQorZWxlY3Ryb25pYyBmb3JtDQorKiBTdHVkeSBvZiB0aGUgdXNlIG9mIGRpZ2l0YWwgbWF0ZXJpYWxzIGJ5IHNjaG9sYXJzIGFuZCBvdGhlcnMNCisNCitUaGlzIHN1bW1hcnkgaXMgYXJyYW5nZWQgdGhlbWF0aWNhbGx5IGFuZCBkb2VzIG5vdCBmb2xsb3cgdGhlIGFjdHVhbA0KK3NlcXVlbmNlIG9mIHByZXNlbnRhdGlvbnMuDQorDQorTk9URVM6DQorICAgICAoMSkgIEluIHRoaXMgZG9jdW1lbnQsIHRoZSBwaHJhc2UgZWxlY3Ryb25pYyB0ZXh0IGlzIHVzZWQgdG8gbWVhbg0KKyAgICAgYW55IGNvbXB1dGVyaXplZCByZXByb2R1Y3Rpb24gb3IgdmVyc2lvbiBvZiBhIGRvY3VtZW50LCBib29rLA0KKyAgICAgYXJ0aWNsZSwgb3IgbWFudXNjcmlwdCAoaW5jbHVkaW5nIGltYWdlcyksIGFuZCBub3QgbWVyZWx5IGEgbWFjaGluZS0NCisgICAgIHJlYWRhYmxlIG9yIG1hY2hpbmUtc2VhcmNoYWJsZSB0ZXh0Lg0KKw0KKyAgICAgKDIpICBUaGUgV29ya3Nob3Agd2FzIGhlbGQgYXQgdGhlIExpYnJhcnkgb2YgQ29uZ3Jlc3Mgb24gOS0xMCBKdW5lDQorICAgICAxOTkyLCB3aXRoIGZ1bmRpbmcgZnJvbSB0aGUgRGF2aWQgYW5kIEx1Y2lsZSBQYWNrYXJkIEZvdW5kYXRpb24uIA0KKyAgICAgVGhlIGRvY3VtZW50IHRoYXQgZm9sbG93cyByZXByZXNlbnRzIGEgc3VtbWFyeSBvZiB0aGUgcHJlc2VudGF0aW9ucw0KKyAgICAgbWFkZSBhdCB0aGUgV29ya3Nob3AgYW5kIHdhcyBjb21waWxlZCBieSBKYW1lcyBEQUxZLiAgVGhpcw0KKyAgICAgaW50cm9kdWN0aW9uIHdhcyB3cml0dGVuIGJ5IERBTFkgYW5kIENhcmwgRkxFSVNDSEhBVUVSLg0KKw0KKw0KK1BSRVNFUlZBVElPTiBBTkQgSU1BR0lORw0KKw0KK1ByZXNlcnZhdGlvbiwgYXMgdGhhdCB0ZXJtIGlzIHVzZWQgYnkgYXJjaGl2aXN0cywoMykgd2FzIG1vc3QgZXhwbGljaXRseQ0KK2Rpc2N1c3NlZCBpbiB0aGUgY29udGV4dCBvZiBpbWFnaW5nLiAgQW5uZSBLRU5ORVkgYW5kIEx5bm5lIFBFUlNPTklVUw0KK2V4cGxhaW5lZCBob3cgdGhlIGNvbmNlcHQgb2YgYSBmYWl0aGZ1bCBjb3B5IGFuZCB0aGUgdXNlci1mcmllbmRsaW5lc3Mgb2YNCit0aGUgdHJhZGl0aW9uYWwgYm9vayBoYXZlIGd1aWRlZCB0aGVpciBwcm9qZWN0IGF0IENvcm5lbGwgVW5pdmVyc2l0eS4oNCkgDQorQWx0aG91Z2ggaW50ZXJlc3RlZCBpbiBjb21wdXRlcml6ZWQgZGlzc2VtaW5hdGlvbiwgcGFydGljaXBhbnRzIGluIHRoZQ0KK0Nvcm5lbGwgcHJvamVjdCBhcmUgY3JlYXRpbmcgZGlnaXRhbCBpbWFnZSBzZXRzIG9mIG9sZGVyIGJvb2tzIGluIHRoZQ0KK3B1YmxpYyBkb21haW4gYXMgYSBzb3VyY2UgZm9yIGEgZnJlc2ggcGFwZXIgZmFjc2ltaWxlIG9yLCBpbiBhIGZ1dHVyZQ0KK3BoYXNlLCBtaWNyb2ZpbG0uICBUaGUgYm9va3MgcmV0dXJuZWQgdG8gdGhlIGxpYnJhcnkgc2hlbHZlcyBhcmUNCitoaWdoLXF1YWxpdHkgYW5kIHVzZWZ1bCByZXBsYWNlbWVudHMgb24gYWNpZC1mcmVlIHBhcGVyIHRoYXQgc2hvdWxkIGxhc3QNCithIGxvbmcgdGltZS4gIFRvIGRhdGUsIHRoZSBDb3JuZWxsIHByb2plY3QgaGFzIHBsYWNlZCBsaXR0bGUgb3Igbm8NCitlbXBoYXNpcyBvbiBjcmVhdGluZyBzZWFyY2hhYmxlIHRleHRzOyBvbmUgd291bGQgbm90IGJlIHN1cnByaXNlZCB0byBmaW5kDQordGhhdCB0aGUgcHJvamVjdCBwYXJ0aWNpcGFudHMgdmlldyBzdWNoIHRleHRzIGFzIG5ldyBlZGl0aW9ucywgYW5kIHRodXMNCitub3QgYXMgZmFpdGhmdWwgcmVwcm9kdWN0aW9ucy4gDQorDQorSW4gaGVyIHRhbGsgb24gcHJlc2VydmF0aW9uLCBQYXRyaWNpYSBCQVRUSU4gc3RydWNrIGFuIGVjdW1lbmljYWwgYW5kDQorZmxleGlibGUgbm90ZSBhcyBzaGUgZW5kb3JzZWQgdGhlIGNyZWF0aW9uIGFuZCBkaXNzZW1pbmF0aW9uIG9mIGEgdmFyaWV0eQ0KK29mIHR5cGVzIG9mIGRpZ2l0YWwgY29waWVzLiAgRG8gbm90IGJlIHRvbyBuYXJyb3cgaW4gZGVmaW5pbmcgd2hhdCBjb3VudHMNCithcyBhIHByZXNlcnZhdGlvbiBlbGVtZW50LCBCQVRUSU4gY291bnNlbGVkOyBmb3IgdGhlIHByZXNlbnQsIGF0IGxlYXN0LA0KK2RpZ2l0YWwgY29waWVzIG1hZGUgd2l0aCBwcmVzZXJ2YXRpb24gaW4gbWluZCBjYW5ub3QgYmUgYXMgbmFycm93bHkNCitzdGFuZGFyZGl6ZWQgYXMsIHNheSwgbWljcm9maWxtIGNvcGllcyB3aXRoIHRoZSBzYW1lIG9iamVjdGl2ZS4gIFNldHRpbmcNCitzdGFuZGFyZHMgcHJlY2lwaXRvdXNseSBjYW4gaW5oaWJpdCBjcmVhdGl2aXR5LCBidXQgZGVsYXkgY2FuIHJlc3VsdCBpbg0KK2NoYW9zLCBzaGUgYWR2aXNlZC4NCisNCitJbiBwYXJ0LCBCQVRUSU4ncyBwb3NpdGlvbiByZWZsZWN0ZWQgdGhlIHVuc2V0dGxlZCBuYXR1cmUgb2YgaW1hZ2UtZm9ybWF0DQorc3RhbmRhcmRzLCBhbmQgYXR0ZW5kZWVzIGNvdWxkIGhlYXIgZWNob2VzIG9mIHRoaXMgdW5zZXR0bGVkbmVzcyBpbiB0aGUNCitjb21tZW50cyBvZiB2YXJpb3VzIHNwZWFrZXJzLiAgRm9yIGV4YW1wbGUsIEplYW4gQkFST05BUyByZXZpZXdlZCB0aGUNCitzdGF0dXMgb2Ygc2V2ZXJhbCBmb3JtYWwgc3RhbmRhcmRzIG1vdmluZyB0aHJvdWdoIGNvbW1pdHRlZXMgb2YgZXhwZXJ0czsNCithbmQgQ2xpZmZvcmQgTFlOQ0ggZW5jb3VyYWdlZCB0aGUgdXNlIG9mIGEgbmV3IGd1aWRlbGluZSBmb3IgdHJhbnNtaXR0aW5nDQorZG9jdW1lbnQgaW1hZ2VzIG9uIEludGVybmV0LiAgVGVzdGltb255IGZyb20gcGFydGljaXBhbnRzIGluIHRoZSBOYXRpb25hbA0KK0FncmljdWx0dXJhbCBMaWJyYXJ5J3MgKE5BTCkgVGV4dCBEaWdpdGl6YXRpb24gUHJvZ3JhbSBhbmQgTEMncyBBbWVyaWNhbg0KK01lbW9yeSBwcm9qZWN0IGhpZ2hsaWdodGVkIHNvbWUgb2YgdGhlIGNoYWxsZW5nZXMgdG8gdGhlIGFjdHVhbCBjcmVhdGlvbg0KK29yIGludGVyY2hhbmdlIG9mIGltYWdlcywgaW5jbHVkaW5nIGRpZmZpY3VsdGllcyBpbiBjb252ZXJ0aW5nDQorcHJlc2VydmF0aW9uIG1pY3JvZmlsbSB0byBkaWdpdGFsIGZvcm0uICBEb25hbGQgV0FURVJTIHJlcG9ydGVkIG9uIHRoZQ0KK3Byb2dyZXNzIG9mIGEgbWFzdGVyIHBsYW4gZm9yIGEgcHJvamVjdCBhdCBZYWxlIFVuaXZlcnNpdHkgdG8gY29udmVydA0KK2Jvb2tzIG9uIG1pY3JvZmlsbSB0byBkaWdpdGFsIGltYWdlIHNldHMsIFByb2plY3QgT3BlbiBCb29rIChQT0IpLg0KKw0KK1RoZSBXb3Jrc2hvcCBvZmZlcmVkIHJhdGhlciBsZXNzIG9mIGFuIGltYWdpbmcgcHJhY3RpY3VtIHRoYW4gcGxhbm5lZCwNCitidXQgImhvdy10byIgaGludHMgZW1lcmdlIGF0IHZhcmlvdXMgcG9pbnRzLCBmb3IgZXhhbXBsZSwgdGhyb3VnaG91dA0KK0tFTk5FWSdzIHByZXNlbnRhdGlvbiBhbmQgaW4gdGhlIGRpc2N1c3Npb24gb2YgYXJjYW5hIHN1Y2ggYXMNCit0aHJlc2hvbGRpbmcgYW5kIGRpdGhlcmluZyBvZmZlcmVkIGJ5IEdlb3JnZSBUSE9NQSBhbmQgRkxFSVNDSEhBVUVSLg0KKw0KK05PVEVTOg0KKyAgICAgKDMpICBBbHRob3VnaCB0aGVyZSBpcyBhIHNlbnNlIGluIHdoaWNoIGFueSByZXByb2R1Y3Rpb25zIG9mDQorICAgICBoaXN0b3JpY2FsIG1hdGVyaWFscyBwcmVzZXJ2ZSB0aGUgaHVtYW4gcmVjb3JkLCBzcGVjaWFsaXN0cyBpbiB0aGUNCisgICAgIGZpZWxkIGhhdmUgZGV2ZWxvcGVkIHBhcnRpY3VsYXIgZ3VpZGVsaW5lcyBmb3IgdGhlIGNyZWF0aW9uIG9mDQorICAgICBhY2NlcHRhYmxlIHByZXNlcnZhdGlvbiBjb3BpZXMuDQorDQorICAgICAoNCkgIFRpdGxlcyBhbmQgYWZmaWxpYXRpb25zIG9mIHByZXNlbnRlcnMgYXJlIGdpdmVuIGF0IHRoZQ0KKyAgICAgYmVnaW5uaW5nIG9mIHRoZWlyIHJlc3BlY3RpdmUgdGFsa3MgYW5kIGluIHRoZSBEaXJlY3Rvcnkgb2YNCisgICAgIFBhcnRpY2lwYW50cyAoQXBwZW5kaXggSUlJKS4NCisNCisNCitUSEUgTUFDSElORS1SRUFEQUJMRSBURVhUOiAgTUFSS1VQIEFORCBVU0UNCisNCitUaGUgc2VjdGlvbnMgb2YgdGhlIFdvcmtzaG9wIHRoYXQgZGVhbHQgd2l0aCBtYWNoaW5lLXJlYWRhYmxlIHRleHQgdGVuZGVkDQordG8gYmUgbW9yZSBjb25jZXJuZWQgd2l0aCBhY2Nlc3MgYW5kIHVzZSB0aGFuIHdpdGggcHJlc2VydmF0aW9uLCBhdCBsZWFzdA0KK2luIHRoZSBuYXJyb3cgdGVjaG5pY2FsIHNlbnNlLiAgTWljaGFlbCBTUEVSQkVSRy1NY1FVRUVOIG1hZGUgYSBmb3JjZWZ1bA0KK3ByZXNlbnRhdGlvbiBvbiB0aGUgVGV4dCBFbmNvZGluZyBJbml0aWF0aXZlJ3MgKFRFSSkgaW1wbGVtZW50YXRpb24gb2YNCit0aGUgU3RhbmRhcmQgR2VuZXJhbGl6ZWQgTWFya3VwIExhbmd1YWdlIChTR01MKS4gIEhpcyBpZGVhcyB3ZXJlIGVjaG9lZA0KK2J5IFN1c2FuIEhPQ0tFWSwgRWxsaSBNWUxPTkFTLCBhbmQgU3R1YXJ0IFdFSUJFTC4gIFdoaWxlIHRoZQ0KK3ByZXNlbnRhdGlvbnMgbWFkZSBieSB0aGUgVEVJIGFkdm9jYXRlcyBjb250YWluZWQgbm8gcHJhY3RpY3VtLCB0aGVpcg0KK2Rpc2N1c3Npb24gZm9jdXNlZCBvbiB0aGUgdmFsdWUgb2YgdGhlIGZpbmlzaGVkIHByb2R1Y3QsIHdoYXQgdGhlDQorRXVyb3BlYW4gQ29tbXVuaXR5IGNhbGxzIHJldXNhYmlsaXR5LCBidXQgd2hhdCBtYXkgYWxzbyBiZSB0ZXJtZWQNCitkdXJhYmlsaXR5LiAgVGhleSBhcmd1ZWQgdGhhdCBtYXJraW5nIHVwLS10aGF0IGlzLCBjb2RpbmctLWEgdGV4dCBpbiBhDQord2VsbC1jb25jZWl2ZWQgd2F5IHdpbGwgcGVybWl0IGl0IHRvIGJlIG1vdmVkIGZyb20gb25lIGNvbXB1dGVyDQorZW52aXJvbm1lbnQgdG8gYW5vdGhlciwgYXMgd2VsbCBhcyB0byBiZSB1c2VkIGJ5IHZhcmlvdXMgdXNlcnMuICBUd28NCitraW5kcyBvZiBtYXJrdXAgd2VyZSBkaXN0aW5ndWlzaGVkOiAgMSkgcHJvY2VkdXJhbCBtYXJrdXAsIHdoaWNoDQorZGVzY3JpYmVzIHRoZSBmZWF0dXJlcyBvZiBhIHRleHQgKGUuZy4sIGRvdHMgb24gYSBwYWdlKSwgYW5kIDIpDQorZGVzY3JpcHRpdmUgbWFya3VwLCB3aGljaCBkZXNjcmliZXMgdGhlIHN0cnVjdHVyZSBvciBlbGVtZW50cyBvZiBhDQorZG9jdW1lbnQgKGUuZy4sIGNoYXB0ZXJzLCBwYXJhZ3JhcGhzLCBhbmQgZnJvbnQgbWF0dGVyKS4NCisNCitUaGUgVEVJIHByb3BvbmVudHMgZW1waGFzaXplZCB0aGUgaW1wb3J0YW5jZSBvZiB0ZXh0cyB0byBzY2hvbGFyc2hpcC4gDQorVGhleSBleHBsYWluZWQgaG93IGhlYXZpbHkgY29kZWQgKGFuZCB0aHVzIGFuYWx5emVkIGFuZCBhbm5vdGF0ZWQpIHRleHRzDQorY2FuIHVuZGVybGllIHJlc2VhcmNoLCBwbGF5IGEgcm9sZSBpbiBzY2hvbGFybHkgY29tbXVuaWNhdGlvbiwgYW5kDQorZmFjaWxpdGF0ZSBjbGFzc3Jvb20gdGVhY2hpbmcuICBTUEVSQkVSRy1NY1FVRUVOIHJlbWluZGVkIGxpc3RlbmVycyB0aGF0DQorYSB3cml0dGVuIG9yIHByaW50ZWQgaXRlbSAoZS5nLiwgYSBwYXJ0aWN1bGFyIGVkaXRpb24gb2YgYSBib29rKSBpcw0KK21lcmVseSBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhYnN0cmFjdGlvbiB3ZSBjYWxsIGEgdGV4dC4gIFRvIGNvbmNlcm4NCitvdXJzZWx2ZXMgd2l0aCBmYWl0aGZ1bGx5IHJlcHJvZHVjaW5nIGEgcHJpbnRlZCBpbnN0YW5jZSBvZiB0aGUgdGV4dCwNCitTUEVSQkVSRy1NY1FVRUVOIGFyZ3VlZCwgaXMgdG8gY29uY2VybiBvdXJzZWx2ZXMgd2l0aCB0aGUgcmVwcmVzZW50YXRpb24NCitvZiBhIHJlcHJlc2VudGF0aW9uICgiaW1hZ2VzIGFzIHNpbXVsYWNyYSBmb3IgdGhlIHRleHQiKS4gIFRoZSBURUkgcHJvcG9uZW50cycNCitpbnRlcmVzdCBpbiBpbWFnZXMgdGVuZHMgdG8gZm9jdXMgb24gY29yb2xsYXJ5IG1hdGVyaWFscyBmb3IgdXNlIGluIHRlYWNoaW5nLA0KK2ZvciBleGFtcGxlLCBwaG90b2dyYXBocyBvZiB0aGUgQWNyb3BvbGlzIHRvIGFjY29tcGFueSBhIEdyZWVrIHRleHQuDQorDQorQnkgdGhlIGVuZCBvZiB0aGUgV29ya3Nob3AsIFNQRVJCRVJHLU1jUVVFRU4gY29uZmVzc2VkIHRvIGhhdmluZyBiZWVuDQorY29udmVydGVkIHRvIGEgbGltaXRlZCBleHRlbnQgdG8gdGhlIHZpZXcgdGhhdCBlbGVjdHJvbmljIGltYWdlcw0KK2NvbnN0aXR1dGUgYSBwcm9taXNpbmcgYWx0ZXJuYXRpdmUgdG8gbWljcm9maWxtaW5nOyBpbmRlZWQsIGFuDQorYWx0ZXJuYXRpdmUgcHJvYmFibHkgc3VwZXJpb3IgdG8gbWljcm9maWxtaW5nLiAgQnV0IGhlIHdhcyBub3QgY29udmluY2VkDQordGhhdCBlbGVjdHJvbmljIGltYWdlcyBjb25zdGl0dXRlIGEgc2VyaW91cyBhdHRlbXB0IHRvIHJlcHJlc2VudCB0ZXh0IGluDQorZWxlY3Ryb25pYyBmb3JtLiAgSE9DS0VZIGFuZCBNWUxPTkFTIGFsc28gY29uY2VkZWQgdGhhdCB0aGVpciBleHBlcmllbmNlDQorYXQgdGhlIFBpZXJjZSBTeW1wb3NpdW0gdGhlIHByZXZpb3VzIHdlZWsgYXQgR2VvcmdldG93biBVbml2ZXJzaXR5IGFuZA0KK3RoZSBwcmVzZW50IGNvbmZlcmVuY2UgYXQgdGhlIExpYnJhcnkgb2YgQ29uZ3Jlc3MgaGFkIGNvbXBlbGxlZCB0aGVtIHRvDQorcmVldmFsdWF0ZSB0aGVpciBwZXJzcGVjdGl2ZSBvbiB0aGUgdXNlZnVsbmVzcyBvZiB0ZXh0IGFzIGltYWdlcy4gDQorQXR0ZW5kZWVzIGNvdWxkIHNlZSB0aGF0IHRoZSB0ZXh0IGFuZCBpbWFnZSBhZHZvY2F0ZXMgd2VyZSBpbg0KK2NvbnN0cnVjdGl2ZSB0ZW5zaW9uLCBzbyB0byBzYXkuDQorDQorVGhyZWUgbm9uVEVJIHByZXNlbnRhdGlvbnMgZGVzY3JpYmVkIGFwcHJvYWNoZXMgdG8gcHJlcGFyaW5nDQorbWFjaGluZS1yZWFkYWJsZSB0ZXh0IHRoYXQgYXJlIGxlc3Mgcmlnb3JvdXMgYW5kIHRodXMgbGVzcyBleHBlbnNpdmUuICBJbg0KK3RoZSBjYXNlIG9mIHRoZSBQYXBlcnMgb2YgR2VvcmdlIFdhc2hpbmd0b24sIERvcm90aHkgVFdPSElHIGV4cGxhaW5lZA0KK3RoYXQgdGhlIGRpZ2l0YWwgdmVyc2lvbiB3aWxsIHByb3ZpZGUgYSBub3QtcXVpdGUtcGVyZmVjdCByZW5kZXJpbmcgb2YNCit0aGUgdHJhbnNjcmliZWQgdGV4dC0tc29tZSAxMzUsMDAwIGRvY3VtZW50cywgYXZhaWxhYmxlIGZvciByZXNlYXJjaA0KK2R1cmluZyB0aGUgZGVjYWRlcyB3aGlsZSB0aGUgcGVyZmVjdCBvciBwcmludCB2ZXJzaW9uIGlzIGNvbXBsZXRlZC4gDQorTWVtYmVycyBvZiB0aGUgQW1lcmljYW4gTWVtb3J5IHRlYW0gYW5kIHRoZSBzdGFmZiBvZiBOQUwncyBUZXh0DQorRGlnaXRpemF0aW9uIFByb2dyYW0gKHNlZSBiZWxvdykgYWxzbyBvdXRsaW5lZCBhIG1pZGRsZSBncm91bmQgY29uY2VybmluZw0KK3NlYXJjaGFibGUgdGV4dHMuICBJbiB0aGUgY2FzZSBvZiBBbWVyaWNhbiBNZW1vcnksIGNvbnRyYWN0b3JzIHByb2R1Y2UNCit0ZXh0cyB3aXRoIGFib3V0IDk5LXBlcmNlbnQgYWNjdXJhY3kgdGhhdCBzZXJ2ZSBhcyAiYnJvd3NlIiBvcg0KKyJyZWZlcmVuY2UiIHZlcnNpb25zIG9mIHdyaXR0ZW4gb3IgcHJpbnRlZCBvcmlnaW5hbHMuICBFbmQgdXNlcnMgd2hvIG5lZWQNCitmYWl0aGZ1bCBjb3BpZXMgb3IgcGVyZmVjdCByZW5kaXRpb25zIG11c3QgcmVmZXIgdG8gYWNjb21wYW55aW5nIHNldHMgb2YNCitkaWdpdGFsIGZhY3NpbWlsZSBpbWFnZXMgb3IgY29uc3VsdCBjb3BpZXMgb2YgdGhlIG9yaWdpbmFscyBpbiBhIG5lYXJieQ0KK2xpYnJhcnkgb3IgYXJjaGl2ZS4gIEFtZXJpY2FuIE1lbW9yeSBzdGFmZiBhcmd1ZWQgdGhhdCB0aGUgaGlnaCBjb3N0IG9mDQorcHJvZHVjaW5nIDEwMC1wZXJjZW50IGFjY3VyYXRlIGNvcGllcyB3b3VsZCBwcmV2ZW50IExDIGZyb20gb2ZmZXJpbmcNCithY2Nlc3MgdG8gbGFyZ2UgcGFydHMgb2YgaXRzIGNvbGxlY3Rpb25zLg0KKw0KKw0KK1RIRSBNQUNISU5FLVJFQURBQkxFIFRFWFQ6ICBNRVRIT0RTIE9GIENPTlZFUlNJT04NCisNCitBbHRob3VnaCB0aGUgV29ya3Nob3AgZGlkIG5vdCBpbmNsdWRlIGEgc3lzdGVtYXRpYyBleGFtaW5hdGlvbiBvZiB0aGUNCittZXRob2RzIGZvciBjb252ZXJ0aW5nIHRleHRzIGZyb20gcGFwZXIgKG9yIGZyb20gZmFjc2ltaWxlIGltYWdlcykgaW50bw0KK21hY2hpbmUtcmVhZGFibGUgZm9ybSwgbmV2ZXJ0aGVsZXNzLCB2YXJpb3VzIHNwZWFrZXJzIHRvdWNoZWQgdXBvbiB0aGlzDQorbWF0dGVyLiAgRm9yIGV4YW1wbGUsIFdFSUJFTCByZXBvcnRlZCB0aGF0IE9DTEMgaGFzIGV4cGVyaW1lbnRlZCB3aXRoIGENCittZXJnaW5nIG9mIG11bHRpcGxlIG9wdGljYWwgY2hhcmFjdGVyIHJlY29nbml0aW9uIHN5c3RlbXMgdGhhdCB3aWxsDQorcmVkdWNlIGVycm9ycyBmcm9tIGFuIHVuYWNjZXB0YWJsZSByYXRlIG9mIDUgY2hhcmFjdGVycyBvdXQgb2YgZXZlcnkNCitsLDAwMCB0byBhbiB1bmFjY2VwdGFibGUgcmF0ZSBvZiAyIGNoYXJhY3RlcnMgb3V0IG9mIGV2ZXJ5IGwsMDAwLg0KKw0KK1BhbWVsYSBBTkRSRSBwcmVzZW50ZWQgYW4gb3ZlcnZpZXcgb2YgTkFMJ3MgVGV4dCBEaWdpdGl6YXRpb24gUHJvZ3JhbSBhbmQNCitKdWRpdGggWklEQVIgZGlzY3Vzc2VkIHRoZSB0ZWNobmljYWwgZGV0YWlscy4gIFpJREFSIGV4cGxhaW5lZCBob3cgTkFMDQorcHVyY2hhc2VkIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBjYXBhYmxlIG9mIHBlcmZvcm1pbmcgb3B0aWNhbCBjaGFyYWN0ZXINCityZWNvZ25pdGlvbiAoT0NSKSBhbmQgdGV4dCBjb252ZXJzaW9uIGFuZCB1c2VkIGl0cyBvd24gc3RhZmYgdG8gY29udmVydA0KK3RleHRzLiAgVGhlIHByb2Nlc3MsIFpJREFSIHNhaWQsIHJlcXVpcmVkIGV4dGVuc2l2ZSBlZGl0aW5nIGFuZCBwcm9qZWN0DQorc3RhZmYgZm91bmQgdGhlbXNlbHZlcyBjb25zaWRlcmluZyBhbHRlcm5hdGl2ZXMsIGluY2x1ZGluZyByZWtleWluZw0KK2FuZC9vciBjcmVhdGluZyBhYnN0cmFjdHMgb3Igc3VtbWFyaWVzIG9mIHRleHRzLiAgTkFMIHJlY2tvbmVkIGNvc3RzIGF0DQorJDcgcGVyIHBhZ2UuICBCeSB3YXkgb2YgY29udHJhc3QsIFJpY2t5IEVSV0FZIGV4cGxhaW5lZCB0aGF0IEFtZXJpY2FuDQorTWVtb3J5IGhhZCBkZWNpZGVkIGZyb20gdGhlIHN0YXJ0IHRvIGNvbnRyYWN0IG91dCBjb252ZXJzaW9uIHRvIGV4dGVybmFsDQorc2VydmljZSBidXJlYXVzLiAgVGhlIGNyaXRlcmlhIHVzZWQgdG8gc2VsZWN0IHRoZXNlIGNvbnRyYWN0b3JzIHdlcmUgY29zdA0KK2FuZCBxdWFsaXR5IG9mIHJlc3VsdHMsIGFzIG9wcG9zZWQgdG8gbWV0aG9kcyBvZiBjb252ZXJzaW9uLiAgRVJXQVkgbm90ZWQNCit0aGF0IGhpc3RvcmljYWwgZG9jdW1lbnRzIG9yIGJvb2tzIG9mdGVuIGRvIG5vdCBsZW5kIHRoZW1zZWx2ZXMgdG8gT0NSLiANCitCb3VuZCBtYXRlcmlhbHMgcmVwcmVzZW50IGEgc3BlY2lhbCBwcm9ibGVtLiAgSW4gaGVyIGV4cGVyaWVuY2UsIHF1YWxpdHkNCitjb250cm9sLS1pbnNwZWN0aW5nIGluY29taW5nIG1hdGVyaWFscywgY291bnRpbmcgZXJyb3JzIGluIHNhbXBsZXMtLXBvc2VkDQordGhlIG1vc3QgdGltZS1jb25zdW1pbmcgYXNwZWN0IG9mIGNvbnRyYWN0aW5nIG91dCBjb252ZXJzaW9uLiAgRVJXQVkNCityZWNrb25lZCBBbWVyaWNhbiBNZW1vcnkncyBjb3N0cyBhdCAkNCBwZXIgcGFnZSwgYnV0IGNhdXRpb25lZCB0aGF0IGZld2VyDQorY29zdC1lbGVtZW50cyBoYWQgYmVlbiBpbmNsdWRlZCB0aGFuIGluIE5BTCdzIGZpZ3VyZS4NCisNCisNCitPUFRJT05TIEZPUiBESVNTRU1JTkFUSU9ODQorDQorVGhlIHRvcGljIG9mIGRpc3NlbWluYXRpb24gcHJvcGVyIGVtZXJnZWQgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIHRoZQ0KK1dvcmtzaG9wLiAgQXQgdGhlIHNlc3Npb24gZGV2b3RlZCB0byBuYXRpb25hbCBhbmQgaW50ZXJuYXRpb25hbCBjb21wdXRlcg0KK25ldHdvcmtzLCBMWU5DSCwgSG93YXJkIEJFU1NFUiwgUm9uYWxkIExBUlNFTiwgYW5kIEVkd2luIEJST1dOUklHRw0KK2hpZ2hsaWdodGVkIHRoZSB2aXJ0dWVzIG9mIEludGVybmV0IHRvZGF5IGFuZCBvZiB0aGUgbmV0d29yayB0aGF0IHdpbGwNCitldm9sdmUgZnJvbSBJbnRlcm5ldC4gIExpc3RlbmVycyBjb3VsZCBkaXNjZXJuIGluIHRoZXNlIG5hcnJhdGl2ZXMgYQ0KK3Zpc2lvbiBvZiBhbiBpbmZvcm1hdGlvbiBkZW1vY3JhY3kgaW4gd2hpY2ggbWlsbGlvbnMgb2YgY2l0aXplbnMgZnJlZWx5DQorZmluZCBhbmQgdXNlIHdoYXQgdGhleSBuZWVkLiAgTFlOQ0ggbm90ZWQgdGhhdCBhIGxhY2sgb2Ygc3RhbmRhcmRzDQoraW5oaWJpdHMgZGlzc2VtaW5hdGluZyBtdWx0aW1lZGlhIG9uIHRoZSBuZXR3b3JrLCBhIHRvcGljIGFsc28gZGlzY3Vzc2VkDQorYnkgQkVTU0VSLiAgTEFSU0VOIGFkZHJlc3NlZCB0aGUgaXNzdWVzIG9mIG5ldHdvcmsgc2NhbGFiaWxpdHkgYW5kDQorbW9kdWxhcml0eSBhbmQgY29tbWVudGVkIHVwb24gdGhlIGRpZmZpY3VsdHkgb2YgYW50aWNpcGF0aW5nIHRoZSBlZmZlY3RzDQorb2YgZ3Jvd3RoIGluIG9yZGVycyBvZiBtYWduaXR1ZGUuICBCUk9XTlJJR0cgdGFsa2VkIGFib3V0IHRoZSBhYmlsaXR5IG9mDQorcGFja2V0IHJhZGlvIHRvIHByb3ZpZGUgY2VydGFpbiBsaW5rcyBpbiBhIG5ldHdvcmsgd2l0aG91dCB0aGUgbmVlZCBmb3INCit3aXJpbmcuICBIb3dldmVyLCB0aGUgcHJlc2VudGVycyBhbHNvIGNhbGxlZCBhdHRlbnRpb24gdG8gdGhlDQorc2hvcnRjb21pbmdzIGFuZCBpbmNvbmdydWl0aWVzIG9mIHByZXNlbnQtZGF5IGNvbXB1dGVyIG5ldHdvcmtzLiAgRm9yDQorZXhhbXBsZTogIDEpIE5ldHdvcmsgdXNlIGlzIGdyb3dpbmcgZHJhbWF0aWNhbGx5LCBidXQgbXVjaCBuZXR3b3JrDQordHJhZmZpYyBjb25zaXN0cyBvZiBwZXJzb25hbCBjb21tdW5pY2F0aW9uIChFLW1haWwpLiAgMikgTGFyZ2UgYm9kaWVzIG9mDQoraW5mb3JtYXRpb24gYXJlIGF2YWlsYWJsZSwgYnV0IGEgdXNlcidzIGFiaWxpdHkgdG8gc2VhcmNoIGFjcm9zcyB0aGVpcg0KK2VudGlyZXR5IGlzIGxpbWl0ZWQuICAzKSBUaGVyZSBhcmUgc2lnbmlmaWNhbnQgcmVzb3VyY2VzIGZvciBzY2llbmNlIGFuZA0KK3RlY2hub2xvZ3ksIGJ1dCBmZXcgbmV0d29yayBzb3VyY2VzIHByb3ZpZGUgY29udGVudCBpbiB0aGUgaHVtYW5pdGllcy4gDQorNCkgTWFjaGluZS1yZWFkYWJsZSB0ZXh0cyBhcmUgY29tbW9ucGxhY2UsIGJ1dCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUNCitzeXN0ZW0gdG8gZGVhbCB3aXRoIGltYWdlcyAobGV0IGFsb25lIG90aGVyIG1lZGlhIGZvcm1hdHMpIGxhZ3MgYmVoaW5kLiANCitBIGdsaW1wc2Ugb2YgYSBtdWx0aW1lZGlhIGZ1dHVyZSBmb3IgbmV0d29ya3MsIGhvd2V2ZXIsIHdhcyBwcm92aWRlZCBieQ0KK01hcmlhIExFQlJPTiBpbiBoZXIgb3ZlcnZpZXcgb2YgdGhlIE9ubGluZSBKb3VybmFsIG9mIEN1cnJlbnQgQ2xpbmljYWwNCitUcmlhbHMgKE9KQ0NUKSwgYW5kIHRoZSBwcm9jZXNzIG9mIHNjaG9sYXJseSBwdWJsaXNoaW5nIG9uLWxpbmUuICAgDQorDQorVGhlIGNvbnRyYXN0aW5nIGZvcm0gb2YgdGhlIENELVJPTSBkaXNrIHdhcyBuZXZlciBzeXN0ZW1hdGljYWxseQ0KK2FuYWx5emVkLCBidXQgYXR0ZW5kZWVzIGNvdWxkIGdsZWFuIGFuIGltcHJlc3Npb24gZnJvbSBzZXZlcmFsIG9mIHRoZQ0KK3Nob3ctYW5kLXRlbGwgcHJlc2VudGF0aW9ucy4gIFRoZSBQZXJzZXVzIGFuZCBBbWVyaWNhbiBNZW1vcnkgZXhhbXBsZXMNCitkZW1vbnN0cmF0ZWQgcmVjZW50bHkgcHVibGlzaGVkIGRpc2tzLCB3aGlsZSB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZQ0KK0lCWUNVUyB2ZXJzaW9uIG9mIHRoZSBQYXBlcnMgb2YgR2VvcmdlIFdhc2hpbmd0b24gYW5kIENoYWR3eWNrLUhlYWxleSdzDQorUGF0cm9sb2dpYSBMYXRpbmEgRGF0YWJhc2UgKFBMRCkgdG9sZCBvZiBkaXNrcyB0byBjb21lLiAgQWNjb3JkaW5nIHRvDQorRXJpYyBDQUxBTFVDQSwgUExEJ3MgcHJpbmNpcGFsIGZvY3VzIGhhcyBiZWVuIG9uIGNvbnZlcnRpbmcgSmFjcXVlcy1QYXVsDQorTWlnbmUncyBkZWZpbml0aXZlIGNvbGxlY3Rpb24gb2YgTGF0aW4gdGV4dHMgdG8gbWFjaGluZS1yZWFkYWJsZSBmb3JtLiANCitBbHRob3VnaCBldmVyeW9uZSBjb3VsZCBzaGFyZSB0aGUgbmV0d29yayBhZHZvY2F0ZXMnIGVudGh1c2lhc20gZm9yIGFuDQorb24tbGluZSBmdXR1cmUsIHRoZSBwb3NzaWJpbGl0eSBvZiByb2xsaW5nIHVwIG9uZSdzIHNsZWV2ZXMgZm9yIGEgc2Vzc2lvbg0KK3dpdGggYSBDRC1ST00gY29udGFpbmluZyBib3RoIHRleHR1YWwgbWF0ZXJpYWxzIGFuZCBhIHBvd2VyZnVsIHJldHJpZXZhbA0KK2VuZ2luZSBtYWRlIHRoZSBkaXNrIHNlZW0gYW4gYXBwZWFsaW5nIHZlc3NlbCBpbmRlZWQuICBUaGUgb3ZlcmFsbA0KK2Rpc2N1c3Npb24gc3VnZ2VzdGVkIHRoYXQgdGhlIHRyYW5zaXRpb24gZnJvbSBDRC1ST00gdG8gb24tbGluZSBuZXR3b3JrZWQNCithY2Nlc3MgbWF5IHByb3ZlIGZhciBzbG93ZXIgYW5kIG1vcmUgZGlmZmljdWx0IHRoYW4gaGFzIGJlZW4gYW50aWNpcGF0ZWQuDQorDQorDQorV0hPIEFSRSBUSEUgVVNFUlMgQU5EIFdIQVQgRE8gVEhFWSBETz8NCisNCitBbHRob3VnaCBjb25jZXJuZWQgd2l0aCB0aGUgdGVjaG5pY2FsaXRpZXMgb2YgcHJvZHVjdGlvbiwgdGhlIFdvcmtzaG9wDQorbmV2ZXIgbG9zdCBzaWdodCBvZiB0aGUgcHVycG9zZXMgYW5kIHVzZXMgb2YgZWxlY3Ryb25pYyB2ZXJzaW9ucyBvZg0KK3RleHR1YWwgbWF0ZXJpYWxzLiAgQXMgbm90ZWQgYWJvdmUsIHRob3NlIGludGVyZXN0ZWQgaW4gaW1hZ2luZyBkaXNjdXNzZWQNCit0aGUgcHJvYmxlbWF0aWNhbCBtYXR0ZXIgb2YgZGlnaXRhbCBwcmVzZXJ2YXRpb24sIHdoaWxlIHRoZSBURUkgcHJvcG9uZW50cw0KK2Rlc2NyaWJlZCBob3cgbWFjaGluZS1yZWFkYWJsZSB0ZXh0cyBjYW4gYmUgdXNlZCBpbiByZXNlYXJjaC4gIFRoaXMgbGF0dGVyDQordG9waWMgcmVjZWl2ZWQgdGhvcm91Z2ggdHJlYXRtZW50IGluIHRoZSBwYXBlciByZWFkIGJ5IEF2cmEgTUlDSEVMU09OLg0KK1NoZSBwbGFjZWQgdGhlIHBoZW5vbWVub24gb2YgZWxlY3Ryb25pYyB0ZXh0cyB3aXRoaW4gdGhlIGNvbnRleHQgb2YNCiticm9hZGVyIHRyZW5kcyBpbiBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IGFuZCBzY2hvbGFybHkgY29tbXVuaWNhdGlvbi4NCisNCitBbW9uZyBvdGhlciB0aGluZ3MsIE1JQ0hFTFNPTiBkZXNjcmliZWQgb24tbGluZSBjb25mZXJlbmNlcyB0aGF0DQorcmVwcmVzZW50IGEgdmlnb3JvdXMgYW5kIGltcG9ydGFudCBpbnRlbGxlY3R1YWwgZm9ydW0gZm9yIGNlcnRhaW4NCitkaXNjaXBsaW5lcy4gIEludGVybmV0IG5vdyBjYXJyaWVzIG1vcmUgdGhhbiA3MDAgY29uZmVyZW5jZXMsIHdpdGggYWJvdXQNCis4MCBwZXJjZW50IG9mIHRoZXNlIGRldm90ZWQgdG8gdG9waWNzIGluIHRoZSBzb2NpYWwgc2NpZW5jZXMgYW5kIHRoZQ0KK2h1bWFuaXRpZXMuICBPdGhlciBzY2hvbGFycyB1c2Ugb24tbGluZSBuZXR3b3JrcyBmb3IgImRpc3RhbmNlIGxlYXJuaW5nLiIgDQorTWVhbndoaWxlLCB0aGVyZSBoYXMgYmVlbiBhIHRyZW1lbmRvdXMgZ3Jvd3RoIGluIGVuZC11c2VyIGNvbXB1dGluZzsNCitwcm9mZXNzb3JzIHRvZGF5IGFyZSBsZXNzIGxpa2VseSB0aGFuIHRoZWlyIHByZWRlY2Vzc29ycyB0byBhc2sgdGhlDQorY2FtcHVzIGNvbXB1dGVyIGNlbnRlciB0byBwcm9jZXNzIHRoZWlyIGRhdGEuICBFbGVjdHJvbmljIHRleHRzIGFyZSBvbmUNCitrZXkgdG8gdGhlc2Ugc29waGlzdGljYXRlZCBhcHBsaWNhdGlvbnMsIE1JQ0hFTFNPTiByZXBvcnRlZCwgYW5kIG1vcmUgYW5kDQorbW9yZSBzY2hvbGFycyBpbiB0aGUgaHVtYW5pdGllcyBub3cgd29yayBpbiBhbiBvbi1saW5lIGVudmlyb25tZW50LiANCitUb3dhcmQgdGhlIGVuZCBvZiB0aGUgV29ya3Nob3AsIE1pY2hhZWwgTEVTSyBwcmVzZW50ZWQgYSBjb3JvbGxhcnkgdG8NCitNSUNIRUxTT04ncyB0YWxrLCByZXBvcnRpbmcgdGhlIHJlc3VsdHMgb2YgYW4gZXhwZXJpbWVudCB0aGF0IGNvbXBhcmVkDQordGhlIHdvcmsgb2Ygb25lIGdyb3VwIG9mIGNoZW1pc3RyeSBzdHVkZW50cyB1c2luZyB0cmFkaXRpb25hbCBwcmludGVkDQordGV4dHMgYW5kIHR3byBncm91cHMgdXNpbmcgZWxlY3Ryb25pYyBzb3VyY2VzLiAgVGhlIGV4cGVyaW1lbnQNCitkZW1vbnN0cmF0ZWQgdGhhdCBpbiB0aGUgZXZlbnQgb25lIGRvZXMgbm90IGtub3cgd2hhdCB0byByZWFkLCBvbmUgbmVlZHMNCit0aGUgZWxlY3Ryb25pYyBzeXN0ZW1zOyB0aGUgZWxlY3Ryb25pYyBzeXN0ZW1zIGhvbGQgbm8gYWR2YW50YWdlIGF0IHRoZQ0KK21vbWVudCBpZiBvbmUga25vd3Mgd2hhdCB0byByZWFkLCBidXQgbmVpdGhlciBkbyB0aGV5IGltcG9zZSBhIHBlbmFsdHkuDQorDQorREFMWSBwcm92aWRlZCBhbiBhbmVjZG90YWwgYWNjb3VudCBvZiB0aGUgcmV2b2x1dGlvbml6aW5nIGltcGFjdCBvZiB0aGUNCituZXcgdGVjaG5vbG9neSBvbiBoaXMgcHJldmlvdXMgbWV0aG9kcyBvZiByZXNlYXJjaCBpbiB0aGUgZmllbGQgb2YgY2xhc3NpY3MuDQorSGlzIGFjY291bnQsIGJ5IGV4dHJhcG9sYXRpb24sIHNlcnZlZCB0byBpbGx1c3RyYXRlIGluIHBhcnQgdGhlIGFyZ3VtZW50cw0KK21hZGUgYnkgTUlDSEVMU09OIGNvbmNlcm5pbmcgdGhlIHBvc2l0aXZlIGVmZmVjdHMgb2YgdGhlIHN1ZGRlbiBhbmQgcmFkaWNhbA0KK3RyYW5zZm9ybWF0aW9uIGJlaW5nIHdyb3VnaHQgaW4gdGhlIHdheXMgc2Nob2xhcnMgd29yay4NCisNCitTdXNhbiBWRUNDSUEgYW5kIEpvYW5uZSBGUkVFTUFOIGRlbGluZWF0ZWQgdGhlIHVzZSBvZiBlbGVjdHJvbmljDQorbWF0ZXJpYWxzIG91dHNpZGUgdGhlIHVuaXZlcnNpdHkuICBUaGUgbW9zdCBpbnRlcmVzdGluZyBhc3BlY3Qgb2YgdGhlaXINCit1c2UsIEZSRUVNQU4gc2FpZCwgY291bGQgYmUgc2VlbiBhcyBhIHBhcmFkb3g6ICB0ZWFjaGVycyBpbiBlbGVtZW50YXJ5DQorYW5kIHNlY29uZGFyeSBzY2hvb2xzIHJlcXVlc3RlZCBhY2Nlc3MgdG8gcHJpbWFyeSBzb3VyY2UgbWF0ZXJpYWxzIGJ1dCwNCithdCB0aGUgc2FtZSB0aW1lLCBmb3VuZCB0aGF0ICJwcmltYXJpbmVzcyIgaXRzZWxmIG1hZGUgdGhlc2UgbWF0ZXJpYWxzDQorZGlmZmljdWx0IGZvciB0aGVpciBzdHVkZW50cyB0byB1c2UuDQorDQorDQorT1RIRVIgVE9QSUNTDQorDQorTWFyeWJldGggUEVURVJTIHJldmlld2VkIGNvcHlyaWdodCBsYXcgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kIG9mZmVyZWQNCithZHZpY2UgZHVyaW5nIGEgbGl2ZWx5IGRpc2N1c3Npb24gb2YgdGhpcyBzdWJqZWN0LiAgQnV0IHVuY2VydGFpbnR5DQorcmVtYWlucyBjb25jZXJuaW5nIHRoZSBwcmljZSBvZiBjb3B5cmlnaHQgaW4gYSBkaWdpdGFsIG1lZGl1bSwgYmVjYXVzZSBhDQorc29sdXRpb24gcmVtYWlucyB0byBiZSB3b3JrZWQgb3V0IGNvbmNlcm5pbmcgbWFuYWdlbWVudCBhbmQgc3ludGhlc2lzIG9mDQorY29weXJpZ2h0ZWQgYW5kIG91dC1vZi1jb3B5cmlnaHQgcGllY2VzIG9mIGEgZGF0YWJhc2UuDQorDQorQXMgbW9kZXJhdG9yIG9mIHRoZSBmaW5hbCBzZXNzaW9uIG9mIHRoZSBXb3Jrc2hvcCwgUHJvc3NlciBHSUZGT1JEIGRpcmVjdGVkDQorZGlzY3Vzc2lvbiB0byBmdXR1cmUgY291cnNlcyBvZiBhY3Rpb24gYW5kIHRoZSBwb3RlbnRpYWwgcm9sZSBvZiBMQyBpbg0KK2FkdmFuY2luZyB0aGVtLiAgQW1vbmcgdGhlIHJlY29tbWVuZGF0aW9ucyB0aGF0IGVtZXJnZWQgd2VyZSB0aGUgZm9sbG93aW5nOg0KKw0KKyAgICAgKiBXb3Jrc2hvcCBwYXJ0aWNpcGFudHMgc2hvdWxkIDEpIGJlZ2luIHRvIHRoaW5rIGFib3V0IHdvcmtpbmcNCisgICAgIHdpdGggaW1hZ2UgbWF0ZXJpYWwsIGJ1dCBzdHJ1Y3R1cmUgYW5kIGRpZ2l0aXplIGl0IGluIHN1Y2ggYQ0KKyAgICAgd2F5IHRoYXQgYXQgYSBsYXRlciBzdGFnZSBpdCBjYW4gYmUgaW50ZXJwcmV0ZWQgaW50byB0ZXh0LCBhbmQNCisgICAgIDIpIGZpbmQgYSBjb21tb24gd2F5IHRvIGJ1aWxkIHRleHQgYW5kIGltYWdlcyB0b2dldGhlciBzbyB0aGF0DQorICAgICB0aGV5IGNhbiBiZSB1c2VkIGpvaW50bHkgYXQgc29tZSBzdGFnZSBpbiB0aGUgZnV0dXJlLCB3aXRoDQorICAgICBhcHByb3ByaWF0ZSBuZXR3b3JrIHN1cHBvcnQsIGJlY2F1c2UgdGhhdCBpcyBob3cgdXNlcnMgd2lsbCB3YW50DQorICAgICB0byBhY2Nlc3MgdGhlc2UgbWF0ZXJpYWxzLiAgVGhlIExpYnJhcnkgbWlnaHQgZW5jb3VyYWdlIGF0dGVtcHRzDQorICAgICB0byBicmluZyB0b2dldGhlciBwZW9wbGUgd2hvIGFyZSB3b3JraW5nIG9uIHRleHRzIGFuZCBpbWFnZXMuDQorDQorICAgICAqIEEgbmV0d29yayB2ZXJzaW9uIG9mIEFtZXJpY2FuIE1lbW9yeSBzaG91bGQgYmUgZGV2ZWxvcGVkIG9yDQorICAgICBjb25zaWRlcmF0aW9uIHNob3VsZCBiZSBnaXZlbiB0byBtYWtpbmcgdGhlIGRhdGEgaW4gaXQNCisgICAgIGF2YWlsYWJsZSB0byBwZW9wbGUgaW50ZXJlc3RlZCBpbiBkb2luZyBuZXR3b3JrIG11bHRpbWVkaWEuIA0KKyAgICAgR2l2ZW4gdGhlIGN1cnJlbnQgZGVhcnRoIG9mIGRpZ2l0YWwgZGF0YSB0aGF0IGlzIGFwcGVhbGluZyBhbmQNCisgICAgIHVuZW5jdW1iZXJlZCBieSBleHRyZW1lbHkgY29tcGxleCByaWdodHMgcHJvYmxlbXMsIGRldmVsb3BpbmcgYQ0KKyAgICAgbmV0d29yayB2ZXJzaW9uIG9mIEFtZXJpY2FuIE1lbW9yeSBjb3VsZCBkbyBtdWNoIHRvIGhlbHAgbWFrZQ0KKyAgICAgbmV0d29yayBtdWx0aW1lZGlhIGEgcmVhbGl0eS4NCisNCisgICAgICogQ29uY2VybmluZyB0aGUgdGhvcm55IGlzc3VlIG9mIGVsZWN0cm9uaWMgZGVwb3NpdCwgTEMgc2hvdWxkDQorICAgICBpbml0aWF0ZSBhIGNhdGFseXRpYyBwcm9jZXNzIGluIHRlcm1zIG9mIGRpc3RyaWJ1dGVkDQorICAgICByZXNwb25zaWJpbGl0eSwgdGhhdCBpcywgYnJpbmcgdG9nZXRoZXIgdGhlIGRpc3RyaWJ1dGVkDQorICAgICBvcmdhbml6YXRpb25zIGFuZCBzZXQgdXAgYSBzdHVkeSBncm91cCB0byBsb29rIGF0IGFsbCB0aGUNCisgICAgIGlzc3VlcyByZWxhdGVkIHRvIGVsZWN0cm9uaWMgZGVwb3NpdCBhbmQgc2VlIHdoZXJlIHdlIGFzIGENCisgICAgIG5hdGlvbiBzaG91bGQgbW92ZS4gIEZvciBleGFtcGxlLCBMQyBtaWdodCBhdHRlbXB0IHRvIHBlcnN1YWRlDQorICAgICBvbmUgbWFqb3IgbGlicmFyeSBpbiBlYWNoIHN0YXRlIHRvIGRlYWwgd2l0aCBpdHMgc3RhdGUNCisgICAgIGVxdWl2YWxlbnQgcHVibGlzaGVyLCB3aGljaCBtaWdodCBwcm9kdWNlIGEgY29vcGVyYXRpdmUgcHJvamVjdA0KKyAgICAgdGhhdCB3b3VsZCBiZSBlcXVpdGFibHkgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSBjb3VudHJ5LCBhbmQgb25lDQorICAgICBpbiB3aGljaCBMQyB3b3VsZCBiZSBkZWFsaW5nIHdpdGggYSBtaW5pbWFsIG51bWJlciBvZiBwdWJsaXNoZXJzDQorICAgICBhbmQgbWluaW1hbCBjb3B5cmlnaHQgcHJvYmxlbXMuICBMQyBtdXN0IGFsc28gZGVhbCB3aXRoIHRoZQ0KKyAgICAgY29uY2VwdCBvZiBvbi1saW5lIHB1Ymxpc2hpbmcsIGRldGVybWluaW5nLCBhbW9uZyBvdGhlciB0aGluZ3MsDQorICAgICBob3cgc2VyaWFscyBzdWNoIGFzIE9KQ0NUIG1pZ2h0IGJlIGRlcG9zaXRlZCBmb3IgY29weXJpZ2h0Lg0KKw0KKyAgICAgKiBTaW5jZSBhIG51bWJlciBvZiBwcm9qZWN0cyBhcmUgcGxhbm5pbmcgdG8gY2Fycnkgb3V0DQorICAgICBwcmVzZXJ2YXRpb24gYnkgY3JlYXRpbmcgZGlnaXRhbCBpbWFnZXMgdGhhdCB3aWxsIGVuZCB1cCBpbg0KKyAgICAgb24tbGluZSBvciBuZWFyLWxpbmUgc3RvcmFnZSBhdCBzb21lIGluc3RpdHV0aW9uLCBMQyBtaWdodCBwbGF5DQorICAgICBhIGhlbHBmdWwgcm9sZSwgYXQgbGVhc3QgaW4gdGhlIG5lYXIgdGVybSwgYnkgYWNjZWxlcmF0aW5nIGhvdw0KKyAgICAgdG8gY2F0YWxvZyB0aGF0IGluZm9ybWF0aW9uIGludG8gdGhlIFJlc2VhcmNoIExpYnJhcnkgSW5mb3JtYXRpb24NCisgICAgIE5ldHdvcmsgKFJMSU4pIGFuZCB0aGVuIGludG8gT0NMQywgc28gdGhhdCBpdCB3b3VsZCBiZSBhY2Nlc3NpYmxlLg0KKyAgICAgVGhpcyB3b3VsZCByZWR1Y2UgdGhlIHBvc3NpYmlsaXR5IG9mIG11bHRpcGxlIGluc3RpdHV0aW9ucyBkaWdpdGl6aW5nDQorICAgICB0aGUgc2FtZSB3b3JrLiANCisNCisNCitDT05DTFVTSU9ODQorDQorVGhlIFdvcmtzaG9wIHdhcyB2YWx1YWJsZSBiZWNhdXNlIGl0IGJyb3VnaHQgdG9nZXRoZXIgcGFydGlzYW5zIGZyb20NCit2YXJpb3VzIGdyb3VwcyBhbmQgcHJvdmlkZWQgYW4gb2NjYXNpb24gdG8gY29tcGFyZSBnb2FscyBhbmQgbWV0aG9kcy4gDQorVGhlIG1vcmUgY29tbWl0dGVkIHBhcnRpc2FucyBmcmVxdWVudGx5IGNvbW11bmljYXRlIHdpdGggb3RoZXJzIGluIHRoZWlyDQorZ3JvdXBzLCBidXQgbGVzcyBvZnRlbiBhY3Jvc3MgZ3JvdXAgYm91bmRhcmllcy4gIFRoZSBXb3Jrc2hvcCB3YXMgYWxzbw0KK3ZhbHVhYmxlIHRvIGF0dGVuZGVlcy0taW5jbHVkaW5nIHRob3NlIGludm9sdmVkIHdpdGggQW1lcmljYW4gTWVtb3J5LS13aG8NCitjYW1lIGxlc3MgY29tbWl0dGVkIHRvIHBhcnRpY3VsYXIgYXBwcm9hY2hlcyBvciBjb25jZXB0cy4gIFRoZXNlDQorYXR0ZW5kZWVzIGxlYXJuZWQgYSBncmVhdCBkZWFsLCBhbmQgcGxhbiB0byBzZWxlY3QgYW5kIGVtcGxveSBlbGVtZW50cyBvZg0KK2ltYWdpbmcsIHRleHQtY29kaW5nLCBhbmQgbmV0d29ya2VkIGRpc3RyaWJ1dGlvbiB0aGF0IHN1aXQgdGhlaXINCityZXNwZWN0aXZlIHByb2plY3RzIGFuZCBwdXJwb3Nlcy4NCisNCitTdGlsbCwgcmVhbGl0eSByZWFycyBpdHMgdWdseSBoZWFkOiAgbm8gYnJlYWt0aHJvdWdoIGhhcyBiZWVuIGFjaGlldmVkLiANCitPbiB0aGUgaW1hZ2luZyBzaWRlLCBvbmUgY29uZnJvbnRzIGEgcHJvbGlmZXJhdGlvbiBvZiBjb21wZXRpbmcNCitkYXRhLWludGVyY2hhbmdlIHN0YW5kYXJkcyBhbmQgYSBsYWNrIG9mIGNvbnNlbnN1cyBvbiB0aGUgcm9sZSBvZiBkaWdpdGFsDQorZmFjc2ltaWxlcyBpbiBwcmVzZXJ2YXRpb24uICBJbiB0aGUgcmVhbG0gb2YgbWFjaGluZS1yZWFkYWJsZSB0ZXh0cywgb25lDQorZW5jb3VudGVycyBhIHJlYXNvbmFibHkgbWF0dXJlIHN0YW5kYXJkIGJ1dCBtZXRob2RvbG9naWNhbCBkaWZmaWN1bHRpZXMNCithbmQgaGlnaCBjb3N0cy4gIFRoZXNlIGxhdHRlciBwcm9ibGVtcywgb2YgY291cnNlLCByZXByZXNlbnQgYSBzcGVjaWFsDQoraW1wZWRpbWVudCB0byB0aGUgZGVzaXJlLCBhcyBpdCBpcyBzb21ldGltZXMgZXhwcmVzc2VkIGluIHRoZSBwb3B1bGFyDQorcHJlc3MsICJ0byBwdXQgdGhlIFtjb250ZW50cyBvZiB0aGVdIExpYnJhcnkgb2YgQ29uZ3Jlc3Mgb24gbGluZS4iICBJbg0KK3RoZSB3b3JkcyBvZiBvbmUgcGFydGljaXBhbnQsIHRoZXJlIHdhcyAibm8gc29sdXRpb24gdG8gdGhlIGVjb25vbWljDQorcHJvYmxlbXMtLXRoZSBwcm9qZWN0cyB0aGF0IGFyZSBvdXQgdGhlcmUgYXJlIHN1cnZpdmluZywgYnV0IGl0IGlzIGdvaW5nDQordG8gYmUgYSBsb3Qgb2Ygd29yayB0byB0cmFuc2Zvcm0gdGhlIGluZm9ybWF0aW9uIGluZHVzdHJ5LCBhbmQgc28gZmFyIHRoZQ0KK2ludmVzdG1lbnQgdG8gZG8gdGhhdCBpcyBub3QgZm9ydGhjb21pbmciIChMRVNLLCBwZXIgbGl0dGVyYXMpLg0KKw0KKw0KKyAgICAgICAgICAgICAgICoqKiAgICoqKiAgICoqKiAgICoqKioqKiAgICoqKiAgICoqKiAgICoqKg0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9DRUVESU5HUw0KKw0KKw0KK1dFTENPTUUNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorR0lGRk9SRCAqIE9yaWdpbiBvZiBXb3Jrc2hvcCBpbiBjdXJyZW50IExpYnJhcmlhbidzIGRlc2lyZSB0byBtYWtlIExDJ3MNCitjb2xsZWN0aW9ucyBtb3JlIHdpZGVseSBhdmFpbGFibGUgKiBEZXNpZGVyYXRhIGFyaXNpbmcgZnJvbSB0aGUgcHJvc3BlY3QNCitvZiBncmVhdGVyIGludGVyY29ubmVjdGVkbmVzcyAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0FmdGVyIHdlbGNvbWluZyBwYXJ0aWNpcGFudHMgb24gYmVoYWxmIG9mIHRoZSBMaWJyYXJ5IG9mIENvbmdyZXNzLA0KK0FtZXJpY2FuIE1lbW9yeSAoQU0pLCBhbmQgdGhlIE5hdGlvbmFsIERlbW9uc3RyYXRpb24gTGFiLCBQcm9zc2VyDQorR0lGRk9SRCwgZGlyZWN0b3IgZm9yIHNjaG9sYXJseSBwcm9ncmFtcywgTGlicmFyeSBvZiBDb25ncmVzcywgbG9jYXRlZA0KK3RoZSBvcmlnaW4gb2YgdGhlIFdvcmtzaG9wIG9uIEVsZWN0cm9uaWMgVGV4dHMgaW4gYSBjb252ZXJzYXRpb24gaGUgaGFkDQoraGFkIGNvbnNpZGVyYWJseSBtb3JlIHRoYW4gYSB5ZWFyIGFnbyB3aXRoIENhcmwgRkxFSVNDSEhBVUVSIGNvbmNlcm5pbmcNCitzb21lIG9mIHRoZSBpc3N1ZXMgZmFjZWQgYnkgQU0uICBPbiB0aGUgYXNzdW1wdGlvbiB0aGF0IG51bWVyb3VzIG90aGVyDQorcGVvcGxlIHdlcmUgYXNraW5nIHRoZSBzYW1lIHF1ZXN0aW9ucywgdGhlIGRlY2lzaW9uIHdhcyBtYWRlIHRvIGJyaW5nDQordG9nZXRoZXIgYXMgbWFueSBvZiB0aGVzZSBwZW9wbGUgYXMgcG9zc2libGUgdG8gYXNrIHRoZSBzYW1lIHF1ZXN0aW9ucw0KK3RvZ2V0aGVyLiAgSW4gYSBkZWVwZXIgc2Vuc2UsIEdJRkZPUkQgc2FpZCwgdGhlIG9yaWdpbiBvZiB0aGUgV29ya3Nob3ANCitsYXkgaW4gdGhlIGRlc2lyZSBvZiB0aGUgY3VycmVudCBMaWJyYXJpYW4gb2YgQ29uZ3Jlc3MsIEphbWVzIEguIA0KK0JpbGxpbmd0b24sIHRvIG1ha2UgdGhlIGNvbGxlY3Rpb25zIG9mIHRoZSBMaWJyYXJ5LCBlc3BlY2lhbGx5IHRob3NlDQorb2ZmZXJpbmcgdW5pcXVlIG9yIHVudXN1YWwgdGVzdGltb255IG9uIGFzcGVjdHMgb2YgdGhlIEFtZXJpY2FuDQorZXhwZXJpZW5jZSwgYXZhaWxhYmxlIHRvIGEgbXVjaCB3aWRlciBjaXJjbGUgb2YgdXNlcnMgdGhhbiB0aG9zZSBmZXcNCitwZW9wbGUgd2hvIGNhbiBjb21lIHRvIFdhc2hpbmd0b24gdG8gdXNlIHRoZW0uICBUaGlzIG1lYW50IHRoYXQgdGhlDQorZW1waGFzaXMgb2YgQU0sIGZyb20gdGhlIG91dHNldCwgaGFzIGJlZW4gb24gYXJjaGl2YWwgY29sbGVjdGlvbnMgb2YgdGhlDQorYmFzaWMgbWF0ZXJpYWwsIGFuZCBvbiBtYWtpbmcgdGhlc2UgY29sbGVjdGlvbnMgdGhlbXNlbHZlcyBhdmFpbGFibGUsDQorcmF0aGVyIHRoYW4gc2VsZWN0ZWQgb3IgaGVhdmlseSBlZGl0ZWQgcHJvZHVjdHMuDQorDQorRnJvbSBBTSdzIGVtcGhhc2lzIGZvbGxvd2VkIHRoZSBxdWVzdGlvbnMgd2l0aCB3aGljaCB0aGUgV29ya3Nob3AgYmVnYW46IA0KK3dobyB3aWxsIHVzZSB0aGVzZSBtYXRlcmlhbHMsIGFuZCBpbiB3aGF0IGZvcm0gd2lsbCB0aGV5IHdpc2ggdG8gdXNlDQordGhlbS4gIEJ1dCBhbiBldmVuIGxhcmdlciBpc3N1ZSBkZXNlcnZpbmcgbWVudGlvbiwgaW4gR0lGRk9SRCdzIHZpZXcsIHdhcw0KK3RoZSBwaGVub21lbmFsIGdyb3d0aCBpbiBJbnRlcm5ldCBjb25uZWN0aXZpdHkuICBIZSBleHByZXNzZWQgdGhlIGhvcGUNCit0aGF0IHRoZSBwcm9zcGVjdCBvZiBncmVhdGVyIGludGVyY29ubmVjdGVkbmVzcyB0aGFuIGV2ZXIgYmVmb3JlIHdvdWxkDQorbGVhZCB0bzogIDEpIG11Y2ggbW9yZSBjb29wZXJhdGl2ZSBhbmQgbXV0dWFsbHkgc3VwcG9ydGl2ZSBlbmRlYXZvcnM7IDIpDQorZGV2ZWxvcG1lbnQgb2Ygc3lzdGVtcyBvZiBzaGFyZWQgYW5kIGRpc3RyaWJ1dGVkIHJlc3BvbnNpYmlsaXRpZXMgdG8NCithdm9pZCBkdXBsaWNhdGlvbiBhbmQgdG8gZW5zdXJlIGFjY3VyYWN5IGFuZCBwcmVzZXJ2YXRpb24gb2YgdW5pcXVlDQorbWF0ZXJpYWxzOyBhbmQgMykgYWdyZWVtZW50IG9uIHRoZSBuZWNlc3Nhcnkgc3RhbmRhcmRzIGFuZCBkZXZlbG9wbWVudCBvZg0KK3RoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBhbmQgaW5kaWNlcyB0byBtYWtlIG5hdmlnYXRpb24NCitzdHJhaWdodGZvcndhcmQgYW1vbmcgdGhlIHZhcmllZCByZXNvdXJjZXMgdGhhdCBhcmUsIGFuZCBpbmNyZWFzaW5nbHkNCit3aWxsIGJlLCBhdmFpbGFibGUuICBJbiB0aGlzIGNvbm5lY3Rpb24sIEdJRkZPUkQgcmVxdWVzdGVkIHRoYXQNCitwYXJ0aWNpcGFudHMgcmVmbGVjdCBmcm9tIHRoZSBvdXRzZXQgdXBvbiB0aGUgc29ydHMgb2Ygb3V0Y29tZXMgdGhleQ0KK3Rob3VnaHQgdGhlIFdvcmtzaG9wIG1pZ2h0IGhhdmUuICBEaWQgdGhvc2UgcHJlc2VudCBjb25zdGl0dXRlIGEgZ3JvdXANCit3aXRoIHN1ZmZpY2llbnQgY29tbW9uIGludGVyZXN0cyB0byBwcm9wb3NlIGEgbmV4dCBzdGVwIG9yIG5leHQgc3RlcHMsDQorYW5kIGlmIHNvLCB3aGF0IG1pZ2h0IHRob3NlIGJlPyAgVGhleSB3b3VsZCByZXR1cm4gdG8gdGhlc2UgcXVlc3Rpb25zIHRoZQ0KK2ZvbGxvd2luZyBhZnRlcm5vb24uDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0ZMRUlTQ0hIQVVFUiAqIENvcmUgb2YgV29ya3Nob3AgY29uY2VybnMgcHJlcGFyYXRpb24gYW5kIHByb2R1Y3Rpb24gb2YNCittYXRlcmlhbHMgKiBTcGVjaWFsIGNoYWxsZW5nZSBpbiBjb252ZXJzaW9uIG9mIHRleHR1YWwgbWF0ZXJpYWxzICoNCitRdWFsaXR5IHZlcnN1cyBxdWFudGl0eSAqIERvIHRoZSBzZXZlcmFsIGdyb3VwcyByZXByZXNlbnRlZCBzaGFyZSBjb21tb24NCitpbnRlcmVzdHM/ICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorQ2FybCBGTEVJU0NISEFVRVIsIGNvb3JkaW5hdG9yLCBBbWVyaWNhbiBNZW1vcnksIExpYnJhcnkgb2YgQ29uZ3Jlc3MsDQorZW1waGFzaXplZCB0aGF0IGhlIHdvdWxkIGF0dGVtcHQgdG8gcmVwcmVzZW50IHRoZSBwZW9wbGUgd2hvIHBlcmZvcm0gc29tZQ0KK29mIHRoZSB3b3JrIG9mIGNvbnZlcnRpbmcgb3IgcHJlcGFyaW5nICBtYXRlcmlhbHMgYW5kIHRoYXQgdGhlIGNvcmUgb2YNCit0aGUgV29ya3Nob3AgaGFkIHRvIGRvIHdpdGggcHJlcGFyYXRpb24gYW5kIHByb2R1Y3Rpb24uICBGTEVJU0NISEFVRVINCit0aGVuIGRyZXcgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBsb25nIHRlcm0sIHdoZW4gbWFueSB0aGluZ3Mgd291bGQgYmUNCithdmFpbGFibGUgYW5kIGNvbm5lY3RlZCBpbiB0aGUgd2F5cyB0aGF0IEdJRkZPUkQgZGVzY3JpYmVkLCBhbmQgdGhlIHNob3J0DQordGVybSwgaW4gd2hpY2ggQU0gbm90IG9ubHkgaGFzIHdyZXN0bGVkIHdpdGggdGhlIGlzc3VlIG9mIHdoYXQgaXMgdGhlDQorYmVzdCBjb3Vyc2UgdG8gcHVyc3VlIGJ1dCBhbHNvIGhhcyBmYWNlZCBhIHZhcmlldHkgb2YgdGVjaG5pY2FsDQorY2hhbGxlbmdlcy4NCisNCitGTEVJU0NISEFVRVIgcmVtYXJrZWQgQU0ncyBlbmRlYXZvcnMgdG8gZGVhbCB3aXRoIGEgd2lkZSByYW5nZSBvZiBsaWJyYXJ5DQorZm9ybWF0cywgc3VjaCBhcyBtb3Rpb24gcGljdHVyZSBjb2xsZWN0aW9ucywgc291bmQtcmVjb3JkaW5nIGNvbGxlY3Rpb25zLA0KK2FuZCBwaWN0b3JpYWwgY29sbGVjdGlvbnMgb2YgdmFyaW91cyBzb3J0cywgZXNwZWNpYWxseSBjb2xsZWN0aW9ucyBvZg0KK3Bob3RvZ3JhcGhzLiAgSW4gdGhlIGNvdXJzZSBvZiB0aGVzZSBlZmZvcnRzLCBBTSBrZXB0IGNvbWluZyBiYWNrIHRvDQordGV4dHVhbCBtYXRlcmlhbHMtLW1hbnVzY3JpcHRzIG9yIHJhcmUgcHJpbnRlZCBtYXR0ZXIsIGJvdW5kIG1hdGVyaWFscywNCitldGMuICBUZXh0IHBvc2VkIHRoZSBncmVhdGVzdCBjb252ZXJzaW9uIGNoYWxsZW5nZSBvZiBhbGwuICBUaHVzLCB0aGUNCitnZW5lc2lzIG9mIHRoZSBXb3Jrc2hvcCwgd2hpY2ggcmVmbGVjdHMgdGhlIHByb2JsZW1zIGZhY2VkIGJ5IEFNLiAgVGhlc2UNCitwcm9ibGVtcyBpbmNsdWRlIHBoeXNpY2FsIHByb2JsZW1zLiAgRm9yIGV4YW1wbGUsIHRob3NlIGluIHRoZSBsaWJyYXJ5DQorYW5kIGFyY2hpdmUgYnVzaW5lc3MgZGVhbCB3aXRoIGNvbGxlY3Rpb25zIG1hZGUgdXAgb2YgZnJhZ2lsZSBhbmQgcmFyZQ0KK21hbnVzY3JpcHQgaXRlbXMsIGJvdW5kIG1hdGVyaWFscywgZXNwZWNpYWxseSB0aGUgbm90b3Jpb3VzbHkgYnJpdHRsZQ0KK2JvdW5kIG1hdGVyaWFscyBvZiB0aGUgbGF0ZSBuaW5ldGVlbnRoIGNlbnR1cnkuICBUaGVzZSBhcmUgcHJlY2lvdXMNCitjdWx0dXJhbCBhcnRpZmFjdHMsIGhvd2V2ZXIsIGFzIHdlbGwgYXMgaW50ZXJlc3Rpbmcgc291cmNlcyBvZg0KK2luZm9ybWF0aW9uLCBhbmQgTEMgZGVzaXJlcyB0byByZXRhaW4gYW5kIGNvbnNlcnZlIHRoZW0uICBBTSBuZWVkcyB0bw0KK2hhbmRsZSB0aGluZ3Mgd2l0aG91dCBkYW1hZ2luZyB0aGVtLiAgR3VpbGxvdGluaW5nIGEgYm9vayB0byBydW4gaXQNCit0aHJvdWdoIGEgc2hlZXQgZmVlZGVyIG11c3QgYmUgYXZvaWRlZCBhdCBhbGwgY29zdHMuDQorDQorQmV5b25kIHBoeXNpY2FsIHByb2JsZW1zLCBpc3N1ZXMgcGVydGFpbmluZyB0byBxdWFsaXR5IGFyb3NlLiAgRm9yDQorZXhhbXBsZSwgdGhlIGRlc2lyZSB0byBwcm92aWRlIHVzZXJzIHdpdGggYSBzZWFyY2hhYmxlIHRleHQgaXMgYWZmZWN0ZWQNCitieSB0aGUgcXVlc3Rpb24gb2YgYWNjZXB0YWJsZSBsZXZlbCBvZiBhY2N1cmFjeS4gIE9uZSBodW5kcmVkIHBlcmNlbnQNCithY2N1cmFjeSBpcyB0cmVtZW5kb3VzbHkgZXhwZW5zaXZlLiAgT24gdGhlIG90aGVyIGhhbmQsIHRoZSBvdXRwdXQgb2YNCitvcHRpY2FsIGNoYXJhY3RlciByZWNvZ25pdGlvbiAoT0NSKSBjYW4gYmUgdHJlbWVuZG91c2x5IGluYWNjdXJhdGUuIA0KK0FsdGhvdWdoIEFNIGhhcyBhdHRlbXB0ZWQgdG8gZmluZCBhIG1pZGRsZSBncm91bmQsIHVuY2VydGFpbnR5IHBlcnNpc3RzDQorYXMgdG8gd2hldGhlciBvciBub3QgaXQgaGFzIGRpc2NvdmVyZWQgdGhlIHJpZ2h0IHNvbHV0aW9uLg0KKw0KK1F1ZXN0aW9ucyBvZiBxdWFsaXR5IGFyb3NlIGNvbmNlcm5pbmcgaW1hZ2VzIGFzIHdlbGwuICBGTEVJU0NISEFVRVINCitjb250cmFzdGVkIHRoZSBleHRyZW1lbHkgaGlnaCBsZXZlbCBvZiBxdWFsaXR5IG9mIHRoZSBkaWdpdGFsIGltYWdlcyBpbg0KK3RoZSBDb3JuZWxsIFhlcm94IFByb2plY3Qgd2l0aCBBTSdzIGVmZm9ydHMgdG8gcHJvdmlkZSBhIGJyb3dzZS1xdWFsaXR5DQorb3IgYWNjZXNzLXF1YWxpdHkgaW1hZ2UsIGFzIG9wcG9zZWQgdG8gYW4gYXJjaGl2YWwgb3IgcHJlc2VydmF0aW9uIGltYWdlLiANCitGTEVJU0NISEFVRVIgdGhlcmVmb3JlIHdlbGNvbWVkIHRoZSBvcHBvcnR1bml0eSB0byBjb21wYXJlIG5vdGVzLg0KKw0KK0ZMRUlTQ0hIQVVFUiBvYnNlcnZlZCBpbiBwYXNzaW5nIHRoYXQgY29udmVyc2F0aW9ucyBoZSBoYWQgaGFkIGFib3V0DQorbmV0d29ya3MgaGF2ZSBiZWd1biB0byBzaWduYWwgdGhhdCBmb3IgdmFyaW91cyBmb3JtcyBvZiBtZWRpYSBhDQorZGV0ZXJtaW5hdGlvbiBtYXkgYmUgbWFkZSB0aGF0IHRoZXJlIGlzIGEgYnJvd3NlLXF1YWxpdHkgaXRlbSwgb3IgYQ0KK2Rpc3RyaWJ1dGlvbi1hbmQtYWNjZXNzLXF1YWxpdHkgaXRlbSB0aGF0IG1heSBjb2V4aXN0IGluIHNvbWUgc3lzdGVtcw0KK3dpdGggYSBoaWdoZXIgcXVhbGl0eSBhcmNoaXZhbCBpdGVtIHRoYXQgd291bGQgYmUgaW5jb252ZW5pZW50IHRvIHNlbmQNCit0aHJvdWdoIHRoZSBuZXR3b3JrIGJlY2F1c2Ugb2YgaXRzIHNpemUuICBGTEVJU0NISEFVRVIgcmVmZXJyZWQsIG9mDQorY291cnNlLCB0byBpbWFnZXMgbW9yZSB0aGFuIHRvIHNlYXJjaGFibGUgdGV4dC4NCisNCitBcyBBTSBjb25zaWRlcmVkIHRob3NlIHF1ZXN0aW9ucywgc2V2ZXJhbCBjb25jZXB0dWFsIGlzc3VlcyBhcm9zZTogIG91Z2h0DQorQU0gb2NjYXNpb25hbGx5IHRvIHJlcHJvZHVjZSBtYXRlcmlhbHMgZW50aXJlbHkgdGhyb3VnaCBhbiBpbWFnZSBzZXQsIGF0DQorb3RoZXIgdGltZXMsIGVudGlyZWx5IHRocm91Z2ggYSB0ZXh0IHNldCwgYW5kIGluIHNvbWUgY2FzZXMsIGEgbWl4PyANCitUaGVyZSBwcm9iYWJseSB3b3VsZCBiZSB0aW1lcyB3aGVuIHRoZSBoaXN0b3JpY2FsIGF1dGhlbnRpY2l0eSBvZiBhbg0KK2FydGlmYWN0IHdvdWxkIHJlcXVpcmUgdGhhdCBpdHMgaW1hZ2UgYmUgdXNlZC4gIEFuIGltYWdlIG1pZ2h0IGJlDQorZGVzaXJhYmxlIGFzIGEgcmVjb3Vyc2UgZm9yIHVzZXJzIGlmIG9uZSBjb3VsZCBub3QgcHJvdmlkZSAxMDAtcGVyY2VudA0KK2FjY3VyYXRlIHRleHQuICBBZ2FpbiwgQU0gd29uZGVyZWQsIGFzIGEgcHJhY3RpY2FsIG1hdHRlciwgaWYgYQ0KK2Rpc3RpbmN0aW9uIGNvdWxkIGJlIGRyYXduIGJldHdlZW4gcmFyZSBwcmludGVkIG1hdHRlciB0aGF0IG1pZ2h0IGV4aXN0DQoraW4gbXVsdGlwbGUgY29sbGVjdGlvbnMtLXRoYXQgaXMsIGluIHRlbiBvciBmaWZ0ZWVuIGxpYnJhcmllcy4gIEluIHN1Y2gNCitjYXNlcywgdGhlIG5lZWQgZm9yIHBlcmZlY3QgcmVwcm9kdWN0aW9uIHdvdWxkIGJlIGxlc3MgdGhhbiBmb3IgdW5pcXVlDQoraXRlbXMuICBJbXBsaWNpdCBpbiBoaXMgcmVtYXJrcywgRkxFSVNDSEhBVUVSIGNvbmNlZGVkLCB3YXMgdGhlIGFkbWlzc2lvbg0KK3RoYXQgQU0gaGFzIGJlZW4gdGlsdGluZyBzdHJvbmdseSB0b3dhcmRzIHF1YW50aXR5IGFuZCBkcmF3aW5nIGJhY2sgYQ0KK2xpdHRsZSBmcm9tIHBlcmZlY3QgcXVhbGl0eS4gIFRoYXQgaXMsIGl0IHNlZW1lZCB0byBBTSB0aGF0IHNvY2lldHkgd291bGQNCitiZSBiZXR0ZXIgc2VydmVkIGlmIG1vcmUgdGhpbmdzIHdlcmUgZGlzdHJpYnV0ZWQgYnkgTEMtLWV2ZW4gaWYgdGhleSB3ZXJlDQorbm90IHF1aXRlIHBlcmZlY3QtLXRoYW4gaWYgZmV3ZXIgdGhpbmdzLCBwZXJmZWN0bHkgcmVwcmVzZW50ZWQsIHdlcmUNCitkaXN0cmlidXRlZC4gIFRoaXMgd2FzIHN0YXRlZCBhcyBhIHByb3Bvc2l0aW9uIHRvIGJlIHRlc3RlZCwgd2l0aA0KK3Jlc3BvbnNlcyB0byBiZSBnYXRoZXJlZCBmcm9tIHVzZXJzLg0KKw0KK0luIHRoaW5raW5nIGFib3V0IGlzc3VlcyByZWxhdGVkIHRvIHJlcHJvZHVjdGlvbiBvZiBtYXRlcmlhbHMgYW5kIHNlZWluZw0KK290aGVyIHBlb3BsZSBlbmdhZ2VkIGluIHBhcmFsbGVsIGFjdGl2aXRpZXMsIEFNIGRlZW1lZCBpdCB1c2VmdWwgdG8NCitjb252ZW5lIGEgY29uZmVyZW5jZS4gIEhlbmNlLCB0aGUgV29ya3Nob3AuICBGTEVJU0NISEFVRVIgdGhlcmV1cG9uDQorc3VydmV5ZWQgdGhlIHNldmVyYWwgZ3JvdXBzIHJlcHJlc2VudGVkOiAgMSkgdGhlIHdvcmxkIG9mIGltYWdlcyAoaW1hZ2UNCit1c2VycyBhbmQgaW1hZ2UgbWFrZXJzKTsgMikgdGhlIHdvcmxkIG9mIHRleHQgYW5kIHNjaG9sYXJzaGlwIGFuZCwgd2l0aGluDQordGhpcyBncm91cCwgdGhvc2UgY29uY2VybmVkIHdpdGggbGFuZ3VhZ2UtLUZMRUlTQ0hIQVVFUiBjb25mZXNzZWQgdG8gZmluZGluZw0KK2RlbGlnaHRmdWwgaXJvbnkgaW4gdGhlIGZhY3QgdGhhdCBzb21lIG9mIHRoZSBtb3N0IGFkdmFuY2VkIHRoaW5rZXJzIG9uDQorY29tcHV0ZXJpemVkIHRleHRzIGFyZSB0aG9zZSBkZWFsaW5nIHdpdGggYW5jaWVudCBHcmVlayBhbmQgUm9tYW4gbWF0ZXJpYWxzOw0KKzMpIHRoZSBuZXR3b3JrIHdvcmxkOyBhbmQgNCkgdGhlIGdlbmVyYWwgd29ybGQgb2YgbGlicmFyeSBzY2llbmNlLCB3aGljaA0KK2luY2x1ZGVzIHBlb3BsZSBpbnRlcmVzdGVkIGluIHByZXNlcnZhdGlvbiBhbmQgY2F0YWxvZ2luZy4NCisNCitGTEVJU0NISEFVRVIgY29uY2x1ZGVkIGhpcyByZW1hcmtzIHdpdGggc3BlY2lhbCB0aGFua3MgdG8gdGhlIERhdmlkIGFuZA0KK0x1Y2lsZSBQYWNrYXJkIEZvdW5kYXRpb24gZm9yIGl0cyBzdXBwb3J0IG9mIHRoZSBtZWV0aW5nLCB0aGUgQW1lcmljYW4NCitNZW1vcnkgZ3JvdXAsIHRoZSBPZmZpY2UgZm9yIFNjaG9sYXJseSBQcm9ncmFtcywgdGhlIE5hdGlvbmFsDQorRGVtb25zdHJhdGlvbiBMYWIsIGFuZCB0aGUgT2ZmaWNlIG9mIFNwZWNpYWwgRXZlbnRzLiAgSGUgZXhwcmVzc2VkIHRoZQ0KK2hvcGUgdGhhdCBEYXZpZCBXb29kbGV5IFBhY2thcmQgbWlnaHQgYmUgYWJsZSB0byBhdHRlbmQsIG5vdGluZyB0aGF0DQorUGFja2FyZCdzIHdvcmsgYW5kIHRoZSB3b3JrIG9mIHRoZSBmb3VuZGF0aW9uIGhhZCBzcG9uc29yZWQgYSBudW1iZXIgb2YNCitwcm9qZWN0cyBpbiB0aGUgdGV4dCBhcmVhLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KK1NFU1NJT04gSS4gIENPTlRFTlQgSU4gQSBORVcgRk9STTogICBXSE8gV0lMTCBVU0UgSVQgQU5EIFdIQVQgV0lMTCBUSEVZIERPPw0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitEQUxZICogQWNrbm93bGVkZ2VtZW50cyAqIEEgbmV3IExhdGluIGF1dGhvcnMgZGlzayAqICBFZmZlY3RzIG9mIHRoZSBuZXcNCit0ZWNobm9sb2d5IG9uIHByZXZpb3VzIG1ldGhvZHMgb2YgcmVzZWFyY2ggKiAgICAgICANCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorU2VydmluZyBhcyBtb2RlcmF0b3IsIEphbWVzIERBTFkgYWNrbm93bGVkZ2VkIHRoZSBnZW5lcm9zaXR5IG9mIGFsbCB0aGUNCitwcmVzZW50ZXJzIGZvciBnaXZpbmcgb2YgdGhlaXIgdGltZSwgY291bnNlbCwgYW5kIHBhdGllbmNlIGluIHBsYW5uaW5nDQordGhlIFdvcmtzaG9wLCBhcyB3ZWxsIGFzIG9mIG1lbWJlcnMgb2YgdGhlIEFtZXJpY2FuIE1lbW9yeSBwcm9qZWN0IGFuZA0KK290aGVyIExpYnJhcnkgb2YgQ29uZ3Jlc3Mgc3RhZmYsIGFuZCB0aGUgRGF2aWQgYW5kIEx1Y2lsZSBQYWNrYXJkDQorRm91bmRhdGlvbiBhbmQgaXRzIGV4ZWN1dGl2ZSBkaXJlY3RvciwgQ29sYnVybiBTLiBXaWxidXIuDQorDQorREFMWSB0aGVuIHJlY291bnRlZCBoaXMgdmlzaXQgaW4gTWFyY2ggdG8gdGhlIENlbnRlciBmb3IgRWxlY3Ryb25pYyBUZXh0cw0KK2luIHRoZSBIdW1hbml0aWVzIChDRVRIKSBhbmQgdGhlIERlcGFydG1lbnQgb2YgQ2xhc3NpY3MgYXQgUnV0Z2Vycw0KK1VuaXZlcnNpdHksIHdoZXJlIGFuIG9sZCBmcmllbmQsIExvd2VsbCBFZG11bmRzLCBpbnRyb2R1Y2VkIGhpbSB0byB0aGUNCitkZXBhcnRtZW50J3MgSUJZQ1VTIHNjaG9sYXJseSBwZXJzb25hbCBjb21wdXRlciwgYW5kLCBpbiBwYXJ0aWN1bGFyLCB0aGUNCituZXcgTGF0aW4gQ0QtUk9NLCBjb250YWluaW5nLCBhbW9uZyBvdGhlciB0aGluZ3MsIGFsbW9zdCBhbGwgY2xhc3NpY2FsDQorTGF0aW4gbGl0ZXJhcnkgdGV4dHMgdGhyb3VnaCBBLkQuIDIwMC4gIFBhY2thcmQgSHVtYW5pdGllcyBJbnN0aXR1dGUNCisoUEhJKSwgTG9zIEFsdG9zLCBDYWxpZm9ybmlhLCByZWxlYXNlZCB0aGlzIGRpc2sgbGF0ZSBpbiAxOTkxLCB3aXRoIGENCitub21pbmFsIHRyaWVubmlhbCBsaWNlbnNpbmcgZmVlLg0KKw0KK1BsYXlpbmcgd2l0aCB0aGUgZGlzayBmb3IgYW4gaG91ciBvciBzbyBhdCBSdXRnZXJzIGJyb3VnaHQgaG9tZSB0byBEQUxZDQorYXQgb25jZSB0aGUgcmV2b2x1dGlvbml6aW5nIGltcGFjdCBvZiB0aGUgbmV3IHRlY2hub2xvZ3kgb24gaGlzIHByZXZpb3VzDQorbWV0aG9kcyBvZiByZXNlYXJjaC4gIEhhZCB0aGlzIGRpc2sgYmVlbiBhdmFpbGFibGUgdHdvIG9yIHRocmVlIHllYXJzDQorZWFybGllciwgREFMWSBjb250ZW5kZWQsIHdoZW4gaGUgd2FzIGVuZ2FnZWQgaW4gcHJlcGFyaW5nIGEgY29tbWVudGFyeSBvbg0KK0Jvb2sgMTAgb2YgVmlyZ2lsJ3MgQWVuZWlkIGZvciBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcywgaGUgd291bGQgbm90DQoraGF2ZSByZXF1aXJlZCBhIGZvcnR5LWVpZ2h0LXNxdWFyZS1mb290IHRhYmxlIG9uIHdoaWNoIHRvIHNwcmVhZCB0aGUNCitudW1lcm91cywgbW9zdCBmcmVxdWVudGx5IGNvbnN1bHRlZCBpdGVtcywgaW5jbHVkaW5nIHNvbWUgdGVuIG9yIHR3ZWx2ZQ0KK2NvbmNvcmRhbmNlcyB0byBrZXkgTGF0aW4gYXV0aG9ycywgYW4gYWxtb3N0IGVxdWFsIG51bWJlciBvZiBsZXhpY2EgdG8NCithdXRob3JzIHdobyBsYWNrZWQgY29uY29yZGFuY2VzLCBhbmQgd2hlcmUgZWl0aGVyIGxleGljYSBvciBjb25jb3JkYW5jZXMNCit3ZXJlIGxhY2tpbmcsIG51bWVyb3VzIGVkaXRpb25zIG9mIGF1dGhvcnMgYW50ZWRhdGluZyBhbmQgcG9zdGRhdGluZyBWaXJnaWwuDQorDQorTm9yLCB3aGVuIGNoZWNraW5nIGVhY2ggb2YgdGhlIGF2ZXJhZ2Ugc2l4IHRvIHNldmVuIHdvcmRzIGNvbnRhaW5lZCBpbg0KK3RoZSBWaXJnaWxpYW4gaGV4YW1ldGVyIGZvciBpdHMgdXNhZ2UgZWxzZXdoZXJlIGluIFZpcmdpbCdzIHdvcmtzIG9yDQorb3RoZXIgTGF0aW4gYXV0aG9ycywgd291bGQgREFMWSBoYXZlIGhhZCB0byBtYWludGFpbiB0aGUgbGFib3Jpb3VzDQorbWVjaGFuaWNhbCBwcm9jZXNzIG9mIGZsaXBwaW5nIHRocm91Z2ggdGhlc2UgY29uY29yZGFuY2VzLCBsZXhpY2EsIGFuZA0KK2VkaXRpb25zIGVhY2ggdGltZS4gIE5vciB3b3VsZCBoZSBoYXZlIGhhZCB0byBmcmVxdWVudCBhcyBvZnRlbiB0aGUNCitNaWx0b24gUy4gRWlzZW5ob3dlciBMaWJyYXJ5IGF0IHRoZSBKb2hucyBIb3BraW5zIFVuaXZlcnNpdHkgdG8gY29uc3VsdA0KK3RoZSBUaGVzYXVydXMgTGluZ3VhZSBMYXRpbmFlLiAgSW5zdGVhZCBvZiBkZXZvdGluZyBjb3VudGxlc3MgaG91cnMsIG9yDQordGhlIGJ1bGsgb2YgaGlzIHJlc2VhcmNoIHRpbWUsIHRvIGdhdGhlcmluZyBkYXRhIGNvbmNlcm5pbmcgVmlyZ2lsJ3MgdXNlDQorb2Ygd29yZHMsIERBTFktLW5vdyBmcmVlZCBieSBQSEkncyBMYXRpbiBhdXRob3JzIGRpc2sgZnJvbSB0aGUNCit0eXJhbm5pY2FsLCB5ZXQgaW4gc29tZSB3YXlzIHBhcmFkb3hpY2FsbHkgaGFwcHkgc2Nob2xhcmx5IGRydWRnZXJ5LS0NCit3b3VsZCBoYXZlIGJlZW4gYWJsZSB0byBkZXZvdGUgdGhhdCBzYW1lIGJ1bGsgb2YgdGltZSB0byBhbmFseXppbmcgYW5kDQoraW50ZXJwcmV0aW5nIFZpcmdpbGlhbiB2ZXJiYWwgdXNhZ2UuDQorDQorQ2l0aW5nIFRoZW9kb3JlIEJydW5uZXIsIEdyZWdvcnkgQ3JhbmUsIEVsbGkgTVlMT05BUywgYW5kIEF2cmEgTUlDSEVMU09OLA0KK0RBTFkgYXJndWVkIHRoYXQgdGhpcyByZXZlcnNhbCBpbiBoaXMgc3R5bGUgb2Ygd29yaywgbWFkZSBwb3NzaWJsZSBieSB0aGUNCituZXcgdGVjaG5vbG9neSwgd291bGQgcGVyaGFwcyBoYXZlIHJlc3VsdGVkIGluIGJldHRlciwgbW9yZSBwcm9kdWN0aXZlDQorcmVzZWFyY2guICBJbmRlZWQsIGV2ZW4gaW4gdGhlIGNvdXJzZSBvZiBoaXMgYnJvd3NpbmcgdGhlIExhdGluIGF1dGhvcnMNCitkaXNrIGF0IFJ1dGdlcnMsIGl0cyBwb3dlcmZ1bCBzZWFyY2gsIHJldHJpZXZhbCwgYW5kIGhpZ2hsaWdodGluZw0KK2NhcGFiaWxpdGllcyBzdWdnZXN0ZWQgdG8gaGltIHNldmVyYWwgbmV3IGF2ZW51ZXMgb2YgcmVzZWFyY2ggaW50bw0KK1ZpcmdpbCdzIHVzZSBvZiBzb3VuZCBlZmZlY3RzLiAgVGhpcyBhbmVjZG90YWwgYWNjb3VudCwgREFMWSBtYWludGFpbmVkLA0KK21heSBzZXJ2ZSB0byBpbGx1c3RyYXRlIGluIHBhcnQgdGhlIHN1ZGRlbiBhbmQgcmFkaWNhbCB0cmFuc2Zvcm1hdGlvbg0KK2JlaW5nIHdyb3VnaHQgaW4gdGhlIHdheXMgc2Nob2xhcnMgd29yay4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitNSUNIRUxTT04gKiBFbGVtZW50cyByZWxhdGVkIHRvIHNjaG9sYXJzaGlwIGFuZCB0ZWNobm9sb2d5ICogRWxlY3Ryb25pYw0KK3RleHRzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBicm9hZGVyIHRyZW5kcyB3aXRoaW4gaW5mb3JtYXRpb24gdGVjaG5vbG9neQ0KK2FuZCBzY2hvbGFybHkgY29tbXVuaWNhdGlvbiAqIEV2YWx1YXRpb24gb2YgdGhlIHByb3NwZWN0cyBmb3IgdGhlIHVzZSBvZg0KK2VsZWN0cm9uaWMgdGV4dHMgKiBSZWxhdGlvbnNoaXAgb2YgZWxlY3Ryb25pYyB0ZXh0cyB0byBwcm9jZXNzZXMgb2YNCitzY2hvbGFybHkgY29tbXVuaWNhdGlvbiBpbiBodW1hbml0aWVzIHJlc2VhcmNoICogTmV3IGV4Y2hhbmdlIGZvcm1hdHMNCitjcmVhdGVkIGJ5IHNjaG9sYXJzICogUHJvamVjdHMgaW5pdGlhdGVkIHRvIGluY3JlYXNlIHNjaG9sYXJseSBhY2Nlc3MgdG8NCitjb252ZXJ0ZWQgdGV4dCAqIFRyZW5kIHRvd2FyZCBtYWtpbmcgZWxlY3Ryb25pYyByZXNvdXJjZXMgYXZhaWxhYmxlDQordGhyb3VnaCByZXNlYXJjaCBhbmQgZWR1Y2F0aW9uIG5ldHdvcmtzICogQ2hhbmdlcyB0YWtpbmcgcGxhY2UgaW4NCitzY2hvbGFybHkgY29tbXVuaWNhdGlvbiBhbW9uZyBodW1hbml0aWVzIHNjaG9sYXJzICogTmV0d29yay1tZWRpYXRlZA0KK3NjaG9sYXJzaGlwIHRyYW5zZm9ybWluZyB0cmFkaXRpb25hbCBzY2hvbGFybHkgcHJhY3RpY2VzICogS2V5DQoraW5mb3JtYXRpb24gdGVjaG5vbG9neSB0cmVuZHMgYWZmZWN0aW5nIHRoZSBjb25kdWN0IG9mIHNjaG9sYXJseQ0KK2NvbW11bmljYXRpb24gb3ZlciB0aGUgbmV4dCBkZWNhZGUgKiBUaGUgdHJlbmQgdG93YXJkIGVuZC11c2VyIGNvbXB1dGluZw0KKyogVGhlIHRyZW5kIHRvd2FyZCBncmVhdGVyIGNvbm5lY3Rpdml0eSAqIEVmZmVjdHMgb2YgdGhlc2UgdHJlbmRzICogS2V5DQordHJhbnNmb3JtYXRpb25zIHRha2luZyBwbGFjZSAqIFN1bW1hcnkgb2YgcHJpbmNpcGFsIGFyZ3VtZW50cyAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorQXZyYSBNSUNIRUxTT04sIEFyY2hpdmFsIFJlc2VhcmNoIGFuZCBFdmFsdWF0aW9uIFN0YWZmLCBOYXRpb25hbCBBcmNoaXZlcw0KK2FuZCBSZWNvcmRzIEFkbWluaXN0cmF0aW9uIChOQVJBKSwgYXJndWVkIHRoYXQgZXN0YWJsaXNoaW5nIHdobyB3aWxsIHVzZQ0KK2VsZWN0cm9uaWMgdGV4dHMgYW5kIHdoYXQgdGhleSB3aWxsIHVzZSB0aGVtIGZvciBpbnZvbHZlcyBhIGNvbnNpZGVyYXRpb24NCitvZiBib3RoIGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgYW5kIHNjaG9sYXJzaGlwIHRyZW5kcy4gIFRoaXMNCitjb25zaWRlcmF0aW9uIGluY2x1ZGVzIHNldmVyYWwgZWxlbWVudHMgcmVsYXRlZCB0byBzY2hvbGFyc2hpcCBhbmQNCit0ZWNobm9sb2d5OiAgMSkgdGhlIGtleSB0cmVuZHMgaW4gaW5mb3JtYXRpb24gdGVjaG5vbG9neSB0aGF0IGFyZSBtb3N0DQorcmVsZXZhbnQgdG8gc2Nob2xhcnNoaXA7IDIpIHRoZSBrZXkgdHJlbmRzIGluIHRoZSB1c2Ugb2YgY3VycmVudGx5DQorYXZhaWxhYmxlIHRlY2hub2xvZ3kgYnkgc2Nob2xhcnMgaW4gdGhlIG5vbnNjaWVudGlmaWMgY29tbXVuaXR5OyBhbmQgMykNCit0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIHZlcnkgZGlzdGluY3QgYnV0IGludGVycmVsYXRlZCB0cmVuZHMuIA0KK1RoZSBpbnZlc3RtZW50IGluIHVuZGVyc3RhbmRpbmcgdGhpcyByZWxhdGlvbnNoaXAgYmVpbmcgbWFkZSBieQ0KK2luZm9ybWF0aW9uIHByb3ZpZGVycywgdGVjaG5vbG9naXN0cywgYW5kIHB1YmxpYyBwb2xpY3kgZGV2ZWxvcGVycywgYXMNCit3ZWxsIGFzIGJ5IHNjaG9sYXJzIHRoZW1zZWx2ZXMsIHNlZW1zIHRvIGJlIHBlcnZhc2l2ZSBhbmQgZ3Jvd2luZywNCitNSUNIRUxTT04gY29udGVuZGVkLiAgU2hlIGRyZXcgb24gY29sbGFib3JhdGl2ZSB3b3JrIHdpdGggSmVmZiBSb3RoZW5iZXJnDQorb24gdGhlIHNjaG9sYXJseSB1c2Ugb2YgdGVjaG5vbG9neS4NCisNCitNSUNIRUxTT04gc291Z2h0IHRvIHBsYWNlIHRoZSBwaGVub21lbm9uIG9mIGVsZWN0cm9uaWMgdGV4dHMgd2l0aGluIHRoZQ0KK2NvbnRleHQgb2YgYnJvYWRlciB0cmVuZHMgd2l0aGluIGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgYW5kIHNjaG9sYXJseQ0KK2NvbW11bmljYXRpb24uICBTaGUgYXJndWVkIHRoYXQgZWxlY3Ryb25pYyB0ZXh0cyBhcmUgb2YgbW9zdCB1c2UgdG8NCityZXNlYXJjaGVycyB0byB0aGUgZXh0ZW50IHRoYXQgdGhlIHJlc2VhcmNoZXJzJyB3b3JraW5nIGNvbnRleHQgKGkuZS4sDQordGhlaXIgcmVsZXZhbnQgYmlibGlvZ3JhcGhpYyBzb3VyY2VzLCBjb2xsZWdpYWwgZmVlZGJhY2ssIGFuYWx5dGljIHRvb2xzLA0KK25vdGVzLCBkcmFmdHMsIGV0Yy4pLCBhbG9uZyB3aXRoIHRoZWlyIGZpZWxkJ3MgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5DQorc291cmNlcywgYWxzbyBpcyBhY2Nlc3NpYmxlIGluIGVsZWN0cm9uaWMgZm9ybSBhbmQgY2FuIGJlIGludGVncmF0ZWQgaW4NCit3YXlzIHRoYXQgYXJlIHVuaXF1ZSB0byB0aGUgb24tbGluZSBlbnZpcm9ubWVudC4NCisNCitFdmFsdWF0aW9uIG9mIHRoZSBwcm9zcGVjdHMgZm9yIHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyB0ZXh0cyBpbmNsdWRlcyB0d28NCitlbGVtZW50czogIDEpIGFuIGV4YW1pbmF0aW9uIG9mIHRoZSB3YXlzIGluIHdoaWNoIHJlc2VhcmNoZXJzIGN1cnJlbnRseQ0KK2FyZSB1c2luZyBlbGVjdHJvbmljIHRleHRzIGFsb25nIHdpdGggb3RoZXIgZWxlY3Ryb25pYyByZXNvdXJjZXMsIGFuZCAyKQ0KK2FuIGFuYWx5c2lzIG9mIGtleSBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IHRyZW5kcyB0aGF0IGFyZSBhZmZlY3RpbmcgdGhlDQorbG9uZy10ZXJtIGNvbmR1Y3Qgb2Ygc2Nob2xhcmx5IGNvbW11bmljYXRpb24uICBNSUNIRUxTT04gbGltaXRlZCBoZXINCitkaXNjdXNzaW9uIG9mIHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyB0ZXh0cyB0byB0aGUgcHJhY3RpY2VzIG9mIGh1bWFuaXN0cw0KK2FuZCBub3RlZCB0aGF0IHRoZSBzY2llbnRpZmljIGNvbW11bml0eSB3YXMgb3V0c2lkZSB0aGUgcGFuZWwncyBvdmVydmlldy4NCisNCitNSUNIRUxTT04gZXhhbWluZWQgdGhlIG5hdHVyZSBvZiB0aGUgY3VycmVudCByZWxhdGlvbnNoaXAgb2YgZWxlY3Ryb25pYw0KK3RleHRzIGluIHBhcnRpY3VsYXIsIGFuZCBlbGVjdHJvbmljIHJlc291cmNlcyBpbiBnZW5lcmFsLCB0byB3aGF0IHNoZQ0KK21haW50YWluZWQgd2VyZSwgZXNzZW50aWFsbHksIGZpdmUgcHJvY2Vzc2VzIG9mIHNjaG9sYXJseSBjb21tdW5pY2F0aW9uDQoraW4gaHVtYW5pdGllcyByZXNlYXJjaC4gIFJlc2VhcmNoZXJzIDEpIGlkZW50aWZ5IHNvdXJjZXMsIDIpIGNvbW11bmljYXRlDQord2l0aCB0aGVpciBjb2xsZWFndWVzLCAzKSBpbnRlcnByZXQgYW5kIGFuYWx5emUgZGF0YSwgNCkgZGlzc2VtaW5hdGUNCit0aGVpciByZXNlYXJjaCBmaW5kaW5ncywgYW5kIDUpIHByZXBhcmUgY3VycmljdWxhIHRvIGluc3RydWN0IHRoZSBuZXh0DQorZ2VuZXJhdGlvbiBvZiBzY2hvbGFycyBhbmQgc3R1ZGVudHMuICBUaGlzIGV4YW1pbmF0aW9uIHdvdWxkIHByb2R1Y2UgYQ0KK2NsZWFyZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3luZXJneSBhbW9uZyB0aGVzZSBmaXZlIHByb2Nlc3NlcyB0aGF0DQorZnVlbHMgdGhlIHRlbmRlbmN5IG9mIHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyByZXNvdXJjZXMgZm9yIG9uZSBwcm9jZXNzIHRvDQorc3RpbXVsYXRlIGl0cyB1c2UgZm9yIG90aGVyIHByb2Nlc3NlcyBvZiBzY2hvbGFybHkgY29tbXVuaWNhdGlvbi4NCisNCitGb3IgdGhlIGZpcnN0IHByb2Nlc3Mgb2Ygc2Nob2xhcmx5IGNvbW11bmljYXRpb24sIHRoZSBpZGVudGlmaWNhdGlvbiBvZg0KK3NvdXJjZXMsIE1JQ0hFTFNPTiByZW1hcmtlZCB0aGUgb3Bwb3J0dW5pdHkgc2Nob2xhcnMgbm93IGVuam95IHRvDQorc3VwcGxlbWVudCB0cmFkaXRpb25hbCB3b3JkLW9mLW1vdXRoIHNlYXJjaGVzIGZvciBzb3VyY2VzIGFtb25nIHRoZWlyDQorY29sbGVhZ3VlcyB3aXRoIG5ldyBmb3JtcyBvZiBlbGVjdHJvbmljIHNlYXJjaGluZy4gIFNvLCBmb3IgZXhhbXBsZSwNCitpbnN0ZWFkIG9mIGhhdmluZyB0byB2aXNpdCB0aGUgbGlicmFyeSwgcmVzZWFyY2hlcnMgYXJlIGFibGUgdG8gZXhwbG9yZQ0KK2Rlc2NyaXB0aW9ucyBvZiBob2xkaW5ncyBpbiB0aGVpciBvZmZpY2VzLiAgRnVydGhlcm1vcmUsIGlmIHRoZWlyIG93bg0KK2luc3RpdHV0aW9ucycgaG9sZGluZ3MgcHJvdmUgaW5zdWZmaWNpZW50LCBzY2hvbGFycyBjYW4gYWNjZXNzIG1vcmUgdGhhbg0KKzIwMCBtYWpvciBBbWVyaWNhbiBsaWJyYXJ5IGNhdGFsb2d1ZXMgb3ZlciBJbnRlcm5ldCwgaW5jbHVkaW5nIHRoZQ0KK3VuaXZlcnNpdGllcyBvZiBDYWxpZm9ybmlhLCBNaWNoaWdhbiwgUGVubnN5bHZhbmlhLCBhbmQgV2lzY29uc2luLiANCitEaXJlY3QgYWNjZXNzIHRvIHRoZSBiaWJsaW9ncmFwaGljIGRhdGFiYXNlcyBvZmZlcnMgaW50ZWxsZWN0dWFsDQorZW1wb3dlcm1lbnQgdG8gc2Nob2xhcnMgYnkgcHJlc2VudGluZyBhIGNvbXByZWhlbnNpdmUgbWVhbnMgb2YgYnJvd3NpbmcNCit0aHJvdWdoIGxpYnJhcmllcyBmcm9tIHRoZWlyIGhvbWVzIGFuZCBvZmZpY2VzIGF0IHRoZWlyIGNvbnZlbmllbmNlLg0KKw0KK1RoZSBzZWNvbmQgcHJvY2VzcyBvZiBjb21tdW5pY2F0aW9uIGludm9sdmVzIGNvbW11bmljYXRpb24gYW1vbmcNCitzY2hvbGFycy4gIEJleW9uZCB0aGUgbW9zdCBjb21tb24gbWV0aG9kcyBvZiBjb21tdW5pY2F0aW9uLCBzY2hvbGFycyBhcmUNCit1c2luZyBFLW1haWwgYW5kIGEgdmFyaWV0eSBvZiBuZXcgZWxlY3Ryb25pYyBjb21tdW5pY2F0aW9ucyBmb3JtYXRzDQorZGVyaXZlZCBmcm9tIGl0IGZvciBmdXJ0aGVyIGFjYWRlbWljIGludGVyY2hhbmdlLiAgRS1tYWlsIGV4Y2hhbmdlcyBhcmUNCitncm93aW5nIGF0IGFuIGFzdG9uaXNoaW5nIHJhdGUsIHJlcG9ydGVkbHkgMTUgcGVyY2VudCBhIG1vbnRoLiAgVGhleQ0KK2N1cnJlbnRseSBjb25zdGl0dXRlIGFwcHJveGltYXRlbHkgaGFsZiB0aGUgdHJhZmZpYyBvbiByZXNlYXJjaCBhbmQNCitlZHVjYXRpb24gbmV0d29ya3MuICBNb3Jlb3ZlciwgdGhlIGdsb2JhbCBzcHJlYWQgb2YgRS1tYWlsIGhhcyBiZWVuIHNvDQorcmFwaWQgdGhhdCBpdCBpcyBub3cgcG9zc2libGUgZm9yIEFtZXJpY2FuIHNjaG9sYXJzIHRvIHVzZSBpdCB0bw0KK2NvbW11bmljYXRlIHdpdGggY29sbGVhZ3VlcyBpbiBjbG9zZSB0byAxNDAgb3RoZXIgY291bnRyaWVzLg0KKw0KK090aGVyIG5ldyBleGNoYW5nZSBmb3JtYXRzIGNyZWF0ZWQgYnkgc2Nob2xhcnMgYW5kIG9wZXJhdGluZyBvbiBJbnRlcm5ldA0KK2luY2x1ZGUgbW9yZSB0aGFuIDcwMCBjb25mZXJlbmNlcywgd2l0aCBhYm91dCA4MCBwZXJjZW50IG9mIHRoZXNlIGRldm90ZWQNCit0byB0b3BpY3MgaW4gdGhlIHNvY2lhbCBzY2llbmNlcyBhbmQgaHVtYW5pdGllcy4gIFRoZSByYXRlIG9mIGdyb3d0aCBvZg0KK3RoZXNlIHNjaG9sYXJseSBlbGVjdHJvbmljIGNvbmZlcmVuY2VzIGFsc28gaXMgYXN0b25pc2hpbmcuICBGcm9tIGw5OTAgdG8NCitsOTkxLCAyMDAgbmV3IGNvbmZlcmVuY2VzIHdlcmUgaWRlbnRpZmllZCBvbiBJbnRlcm5ldC4gIEZyb20gT2N0b2JlciAxOTkxDQordG8gSnVuZSAxOTkyLCBhbiBhZGRpdGlvbmFsIDE1MCBjb25mZXJlbmNlcyBpbiB0aGUgc29jaWFsIHNjaWVuY2VzIGFuZA0KK2h1bWFuaXRpZXMgd2VyZSBhZGRlZCB0byB0aGlzIGRpcmVjdG9yeSBvZiBsaXN0aW5ncy4gIFNjaG9sYXJzIGhhdmUNCitlc3RhYmxpc2hlZCBjb25mZXJlbmNlcyBpbiB2aXJ0dWFsbHkgZXZlcnkgZmllbGQsIHdpdGhpbiBldmVyeSBkaWZmZXJlbnQNCitkaXNjaXBsaW5lLiAgRm9yIGV4YW1wbGUsIHRoZXJlIGFyZSBjdXJyZW50bHkgY2xvc2UgdG8gNjAwIGFjdGl2ZSBzb2NpYWwNCitzY2llbmNlIGFuZCBodW1hbml0aWVzICBjb25mZXJlbmNlcyBvbiB0b3BpY3Mgc3VjaCBhcyBhcnQgYW5kDQorYXJjaGl0ZWN0dXJlLCBldGhub211c2ljb2xvZ3ksIGZvbGtsb3JlLCBKYXBhbmVzZSBjdWx0dXJlLCBtZWRpY2FsDQorZWR1Y2F0aW9uLCBhbmQgZ2lmdGVkIGFuZCB0YWxlbnRlZCBlZHVjYXRpb24uICBUaGUgYXBwZWFsIHRvIHNjaG9sYXJzIG9mDQorY29tbXVuaWNhdGluZyB0aHJvdWdoIHRoZXNlIGNvbmZlcmVuY2VzIGlzIHRoYXQsIHVubGlrZSBhbnkgb3RoZXIgbWVkaXVtLA0KK2VsZWN0cm9uaWMgY29uZmVyZW5jZXMgdG9kYXkgcHJvdmlkZSBhIGZvcnVtIGZvciBnbG9iYWwgY29tbXVuaWNhdGlvbg0KK3dpdGggcGVlcnMgYXQgdGhlIGZyb250IGVuZCBvZiB0aGUgcmVzZWFyY2ggcHJvY2Vzcy4NCisNCitJbnRlcnByZXRhdGlvbiBhbmQgYW5hbHlzaXMgb2Ygc291cmNlcyBjb25zdGl0dXRlcyB0aGUgdGhpcmQgcHJvY2VzcyBvZg0KK3NjaG9sYXJseSBjb21tdW5pY2F0aW9uIHRoYXQgTUlDSEVMU09OIGRpc2N1c3NlZCBpbiB0ZXJtcyBvZiB0ZXh0cyBhbmQNCit0ZXh0dWFsIHJlc291cmNlcy4gIFRoZSBtZXRob2RzIHVzZWQgdG8gYW5hbHl6ZSBzb3VyY2VzIGZhbGwgc29tZXdoZXJlIG9uDQorYSBjb250aW51dW0gZnJvbSBxdWFudGl0YXRpdmUgYW5hbHlzaXMgdG8gcXVhbGl0YXRpdmUgYW5hbHlzaXMuIA0KK1R5cGljYWxseSwgZXZpZGVuY2UgaXMgY3VsbGVkIGFuZCBldmFsdWF0ZWQgdXNpbmcgbWV0aG9kcyBkcmF3biBmcm9tIGJvdGgNCitlbmRzIG9mIHRoaXMgY29udGludXVtLiAgQXQgb25lIGVuZCwgcXVhbnRpdGF0aXZlIGFuYWx5c2lzIGludm9sdmVzIHRoZQ0KK3VzZSBvZiBtYXRoZW1hdGljYWwgcHJvY2Vzc2VzIHN1Y2ggYXMgYSBjb3VudCBvZiBmcmVxdWVuY2llcyBhbmQNCitkaXN0cmlidXRpb25zIG9mIG9jY3VycmVuY2VzIG9yLCBvbiBhIGhpZ2hlciBsZXZlbCwgcmVncmVzc2lvbiBhbmFseXNpcy4gDQorQXQgdGhlIG90aGVyIGVuZCBvZiB0aGUgY29udGludXVtLCBxdWFsaXRhdGl2ZSBhbmFseXNpcyB0eXBpY2FsbHkNCitpbnZvbHZlcyBub25tYXRoZW1hdGljYWwgcHJvY2Vzc2VzIG9yaWVudGVkIHRvd2FyZCBsYW5ndWFnZQ0KK2ludGVycHJldGF0aW9uIG9yIHRoZSBidWlsZGluZyBvZiB0aGVvcnkuICBBc3BlY3RzIG9mIHRoaXMgd29yayBpbnZvbHZlDQordGhlIHByb2Nlc3NpbmctLWVpdGhlciBtYW51YWwgb3IgY29tcHV0YXRpb25hbC0tb2YgbGFyZ2UgYW5kIHNvbWV0aW1lcw0KK21hc3NpdmUgYW1vdW50cyBvZiB0ZXh0dWFsIHNvdXJjZXMsIGFsdGhvdWdoIHRoZSB1c2Ugb2Ygbm9udGV4dHVhbA0KK3NvdXJjZXMgYXMgZXZpZGVuY2UsIHN1Y2ggYXMgcGhvdG9ncmFwaHMsIHNvdW5kIHJlY29yZGluZ3MsIGZpbG0gZm9vdGFnZSwNCithbmQgYXJ0aWZhY3RzLCBpcyBzaWduaWZpY2FudCBhcyB3ZWxsLg0KKw0KK1NjaG9sYXJzIGhhdmUgZGlzY292ZXJlZCB0aGF0IG1hbnkgb2YgdGhlIG1ldGhvZHMgb2YgaW50ZXJwcmV0YXRpb24gYW5kDQorYW5hbHlzaXMgdGhhdCBhcmUgcmVsYXRlZCB0byBib3RoIHF1YW50aXRhdGl2ZSBhbmQgcXVhbGl0YXRpdmUgbWV0aG9kcw0KK2FyZSBwcm9jZXNzZXMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIGJ5IGNvbXB1dGVycy4gIEZvciBleGFtcGxlLCBjb21wdXRlcnMNCitjYW4gY291bnQuICBUaGV5IGNhbiBjb3VudCBicnVzaCBzdHJva2VzIHVzZWQgaW4gYSBSZW1icmFuZHQgcGFpbnRpbmcgb3INCitwZXJmb3JtIHJlZ3Jlc3Npb24gYW5hbHlzaXMgZm9yIHVuZGVyc3RhbmRpbmcgY2F1c2UgYW5kIGVmZmVjdC4gIEJ5IG1lYW5zDQorb2YgYWR2YW5jZWQgdGVjaG5vbG9naWVzLCBjb21wdXRlcnMgY2FuIHJlY29nbml6ZSBwYXR0ZXJucywgYW5hbHl6ZSB0ZXh0LA0KK2FuZCBtb2RlbCBjb25jZXB0cy4gIEZ1cnRoZXJtb3JlLCBjb21wdXRlcnMgY2FuIGNvbXBsZXRlIHRoZXNlIHByb2Nlc3Nlcw0KK2Zhc3RlciB3aXRoIG1vcmUgc291cmNlcyBhbmQgd2l0aCBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHNjaG9sYXJzIHdobw0KK211c3QgcmVseSBvbiBtYW51YWwgaW50ZXJwcmV0YXRpb24gb2YgZGF0YS4gIEJ1dCBpZiBzY2hvbGFycyBhcmUgdG8gdXNlDQorY29tcHV0ZXJzIGZvciB0aGVzZSBwcm9jZXNzZXMsIHNvdXJjZSBtYXRlcmlhbHMgbXVzdCBiZSBpbiBhIGZvcm0NCithbWVuYWJsZSB0byBjb21wdXRlci1hc3Npc3RlZCBhbmFseXNpcy4gIEZvciB0aGlzIHJlYXNvbiBtYW55IHNjaG9sYXJzLA0KK29uY2UgdGhleSBoYXZlIGlkZW50aWZpZWQgdGhlIHNvdXJjZXMgdGhhdCBhcmUga2V5IHRvIHRoZWlyIHJlc2VhcmNoLCBhcmUNCitjb252ZXJ0aW5nIHRoZW0gdG8gbWFjaGluZS1yZWFkYWJsZSBmb3JtLiAgVGh1cywgYSByZXByZXNlbnRhdGl2ZSBleGFtcGxlDQorb2YgdGhlIG51bWVyb3VzIHRleHR1YWwgY29udmVyc2lvbiBwcm9qZWN0cyBvcmdhbml6ZWQgYnkgc2Nob2xhcnMgYXJvdW5kDQordGhlIHdvcmxkIGluIHJlY2VudCB5ZWFycyB0byBzdXBwb3J0IGNvbXB1dGF0aW9uYWwgdGV4dCBhbmFseXNpcyBpcyB0aGUNCitUTEcsIHRoZSBUaGVzYXVydXMgTGluZ3VhZSBHcmFlY2FlLiAgVGhpcyBwcm9qZWN0IGlzIGRldm90ZWQgdG8NCitjb252ZXJ0aW5nIHRoZSBleHRhbnQgYW5jaWVudCB0ZXh0cyBvZiBjbGFzc2ljYWwgR3JlZWNlLiAgKEVkaXRvcidzIG5vdGU6IA0KK2FjY29yZGluZyB0byB0aGUgVExHIE5ld3NsZXR0ZXIgb2YgTWF5IGw5OTIsIFRMRyB3YXMgaW4gdXNlIGluIHRoaXJ0eS10d28NCitkaWZmZXJlbnQgY291bnRyaWVzLiAgVGhpcyBmaWd1cmUgdXBkYXRlcyBNSUNIRUxTT04ncyBwcmV2aW91cyBjb3VudCBieSBvbmUuKQ0KKw0KK1RoZSBzY2hvbGFycyBwZXJmb3JtaW5nIHRoZXNlIGNvbnZlcnNpb25zIGhhdmUgYmVlbiBhc2tlZCB0byByZWNvZ25pemUNCit0aGF0IHRoZSBlbGVjdHJvbmljIHNvdXJjZXMgdGhleSBhcmUgY29udmVydGluZyBmb3Igb25lIHVzZSBwb3NzZXNzIHZhbHVlDQorZm9yIG90aGVyIHJlc2VhcmNoIHB1cnBvc2VzIGFzIHdlbGwuICBBcyBhIHJlc3VsdCwgZHVyaW5nIHRoZSBwYXN0IGZldw0KK3llYXJzLCBodW1hbml0aWVzIHNjaG9sYXJzIGhhdmUgaW5pdGlhdGVkIGEgbnVtYmVyIG9mIHByb2plY3RzIHRvDQoraW5jcmVhc2Ugc2Nob2xhcmx5IGFjY2VzcyB0byBjb252ZXJ0ZWQgdGV4dC4gIFNvLCBmb3IgZXhhbXBsZSwgdGhlIFRleHQNCitFbmNvZGluZyBJbml0aWF0aXZlIChURUkpLCBhYm91dCB3aGljaCBtb3JlIGlzIHNhaWQgbGF0ZXIgaW4gdGhlIHByb2dyYW0sDQord2FzIGVzdGFibGlzaGVkIGFzIGFuIGVmZm9ydCBieSBzY2hvbGFycyB0byBkZXRlcm1pbmUgc3RhbmRhcmQgZWxlbWVudHMNCithbmQgbWV0aG9kcyBmb3IgZW5jb2RpbmcgbWFjaGluZS1yZWFkYWJsZSB0ZXh0IGZvciBlbGVjdHJvbmljIGV4Y2hhbmdlLiANCitJbiBhIHNlY29uZCBlZmZvcnQgdG8gZmFjaWxpdGF0ZSB0aGUgc2hhcmluZyBvZiBjb252ZXJ0ZWQgdGV4dCwgc2Nob2xhcnMNCitoYXZlIGNyZWF0ZWQgYSBuZXcgaW5zdGl0dXRpb24sIHRoZSBDZW50ZXIgZm9yIEVsZWN0cm9uaWMgVGV4dHMgaW4gdGhlDQorSHVtYW5pdGllcyAoQ0VUSCkuICBUaGUgY2VudGVyIGVzdGltYXRlcyB0aGF0IHRoZXJlIGFyZSA4LDAwMCBzZXJpZXMgb2YNCitzb3VyY2UgdGV4dHMgaW4gdGhlIGh1bWFuaXRpZXMgdGhhdCBoYXZlIGJlZW4gY29udmVydGVkIHRvDQorbWFjaGluZS1yZWFkYWJsZSBmb3JtIHdvcmxkd2lkZS4gIENFVEggaXMgdW5kZXJ0YWtpbmcgYW4gaW50ZXJuYXRpb25hbA0KK3NlYXJjaCBmb3IgY29udmVydGVkIHRleHQgaW4gdGhlIGh1bWFuaXRpZXMsIGNvbXBpbGluZyBpdCBpbnRvIGFuDQorZWxlY3Ryb25pYyBsaWJyYXJ5LCBhbmQgcHJlcGFyaW5nIGJpYmxpb2dyYXBoaWMgZGVzY3JpcHRpb25zIG9mIHRoZQ0KK3NvdXJjZXMgZm9yIHRoZSBSZXNlYXJjaCBMaWJyYXJpZXMgSW5mb3JtYXRpb24gTmV0d29yaydzIChSTElOKQ0KK21hY2hpbmUtcmVhZGFibGUgZGF0YSBmaWxlLiAgVGhlIGxpYnJhcnkgcHJvZmVzc2lvbiBoYXMgYmVndW4gdG8gaW5pdGlhdGUNCitsYXJnZSBjb252ZXJzaW9uIHByb2plY3RzIGFzIHdlbGwsIHN1Y2ggYXMgQW1lcmljYW4gTWVtb3J5Lg0KKw0KK1doaWxlIHNjaG9sYXJzIGhhdmUgYmVlbiBtYWtpbmcgY29udmVydGVkIHRleHQgYXZhaWxhYmxlIHRvIG9uZSBhbm90aGVyLA0KK3R5cGljYWxseSBvbiBkaXNrIG9yIG9uIENELVJPTSwgdGhlIGNsZWFyIHRyZW5kIGlzIHRvd2FyZCBtYWtpbmcgdGhlc2UNCityZXNvdXJjZXMgYXZhaWxhYmxlIHRocm91Z2ggcmVzZWFyY2ggYW5kIGVkdWNhdGlvbiBuZXR3b3Jrcy4gIFRodXMsIHRoZQ0KK0FtZXJpY2FuIGFuZCBGcmVuY2ggUmVzZWFyY2ggb24gdGhlIFRyZWFzdXJ5IG9mIHRoZSBGcmVuY2ggTGFuZ3VhZ2UNCisoQVJURkwpIGFuZCB0aGUgRGFudGUgUHJvamVjdCBhcmUgYWxyZWFkeSBhdmFpbGFibGUgb24gSW50ZXJuZXQuIA0KK01JQ0hFTFNPTiBzdW1tYXJpemVkIHRoaXMgc2VjdGlvbiBvbiBpbnRlcnByZXRhdGlvbiBhbmQgYW5hbHlzaXMgYnkNCitub3RpbmcgdGhhdDogIDEpIGluY3JlYXNpbmcgbnVtYmVycyBvZiBodW1hbml0aWVzIHNjaG9sYXJzIGluIHRoZSBsaWJyYXJ5DQorY29tbXVuaXR5IGFyZSByZWNvZ25pemluZyB0aGUgaW1wb3J0YW5jZSB0byB0aGUgYWR2YW5jZW1lbnQgb2YNCitzY2hvbGFyc2hpcCBvZiByZXRyb3NwZWN0aXZlIGNvbnZlcnNpb24gb2Ygc291cmNlIG1hdGVyaWFscyBpbiB0aGUgYXJ0cw0KK2FuZCBodW1hbml0aWVzOyBhbmQgMikgdGhlcmUgaXMgYSBncm93aW5nIHJlYWxpemF0aW9uIHRoYXQgbWFraW5nIHRoZQ0KK3NvdXJjZXMgYXZhaWxhYmxlIG9uIHJlc2VhcmNoIGFuZCBlZHVjYXRpb24gbmV0d29ya3MgbWF4aW1pemVzIHRoZWlyDQordXNlZnVsbmVzcyBmb3IgdGhlIGFuYWx5c2lzIHBlcmZvcm1lZCBieSBodW1hbml0aWVzIHNjaG9sYXJzLg0KKw0KK1RoZSBmb3VydGggcHJvY2VzcyBvZiBzY2hvbGFybHkgY29tbXVuaWNhdGlvbiBpcyBkaXNzZW1pbmF0aW9uIG9mDQorcmVzZWFyY2ggZmluZGluZ3MsIHRoYXQgaXMsIHB1YmxpY2F0aW9uLiAgU2Nob2xhcnMgYXJlIHVzaW5nIGV4aXN0aW5nDQorcmVzZWFyY2ggYW5kIGVkdWNhdGlvbiBuZXR3b3JrcyB0byBlbmdpbmVlciBhIG5ldyB0eXBlIG9mIHB1YmxpY2F0aW9uOiANCitzY2hvbGFybHktY29udHJvbGxlZCBqb3VybmFscyB0aGF0IGFyZSBlbGVjdHJvbmljYWxseSBwcm9kdWNlZCBhbmQNCitkaXNzZW1pbmF0ZWQuICBBbHRob3VnaCBzdWNoIGpvdXJuYWxzIGFyZSBzdGlsbCBlbWVyZ2luZyBhcyBhDQorY29tbXVuaWNhdGlvbiBmb3JtYXQsIHRoZWlyIG51bWJlciBoYXMgZ3Jvd24sIGZyb20gYXBwcm94aW1hdGVseSB0d2VsdmUNCit0byB0aGlydHktc2l4IGR1cmluZyB0aGUgcGFzdCB5ZWFyIChKdWx5IDE5OTEgdG8gSnVuZSAxOTkyKS4gIE1vc3Qgb2YNCit0aGVzZSBlbGVjdHJvbmljIHNjaG9sYXJseSBqb3VybmFscyBhcmUgZGV2b3RlZCB0byB0b3BpY3MgaW4gdGhlDQoraHVtYW5pdGllcy4gIEFzIHdpdGggbmV0d29yayBjb25mZXJlbmNlcywgc2Nob2xhcmx5IGVudGh1c2lhc20gZm9yIHRoZXNlDQorZWxlY3Ryb25pYyBqb3VybmFscyBzdGVtcyBmcm9tIHRoZSBtZWRpdW0ncyB1bmlxdWUgYWJpbGl0eSB0byBhZHZhbmNlDQorc2Nob2xhcnNoaXAgaW4gYSB3YXkgdGhhdCBubyBvdGhlciBtZWRpdW0gY2FuIGRvIGJ5IHN1cHBvcnRpbmcgZ2xvYmFsDQorZmVlZGJhY2sgYW5kIGludGVyY2hhbmdlLCBwcmFjdGljYWxseSBpbiByZWFsIHRpbWUsIGVhcmx5IGluIHRoZSByZXNlYXJjaA0KK3Byb2Nlc3MuICBCZXlvbmQgc2Nob2xhcmx5IGpvdXJuYWxzLCBNSUNIRUxTT04gcmVtYXJrZWQgdGhlIGRlbGl2ZXJ5IG9mDQorY29tbWVyY2lhbCBmdWxsLXRleHQgcHJvZHVjdHMsIHN1Y2ggYXMgYXJ0aWNsZXMgaW4gcHJvZmVzc2lvbmFsIGpvdXJuYWxzLA0KK25ld3NsZXR0ZXJzLCBtYWdhemluZXMsIHdpcmUgc2VydmljZXMsIGFuZCByZWZlcmVuY2Ugc291cmNlcy4gIFRoZXNlIGFyZQ0KK2JlaW5nIGRlbGl2ZXJlZCB2aWEgb24tbGluZSBsb2NhbCBsaWJyYXJ5IGNhdGFsb2d1ZXMsIGVzcGVjaWFsbHkgdGhyb3VnaA0KK0NELVJPTXMuICBGdXJ0aGVybW9yZSwgYWNjb3JkaW5nIHRvIE1JQ0hFTFNPTiwgdGhlcmUgaXMgZ2VuZXJhbCBvcHRpbWlzbQ0KK3RoYXQgdGhlIGNvcHlyaWdodCBhbmQgZmVlcyBpc3N1ZXMgaW1wZWRpbmcgdGhlIGRlbGl2ZXJ5IG9mIGZ1bGwgdGV4dCBvbg0KK2V4aXN0aW5nIHJlc2VhcmNoIGFuZCBlZHVjYXRpb24gbmV0d29ya3Mgc29vbiB3aWxsIGJlIHJlc29sdmVkLg0KKw0KK1RoZSBmaW5hbCBwcm9jZXNzIG9mIHNjaG9sYXJseSBjb21tdW5pY2F0aW9uIGlzIGN1cnJpY3VsdW0gZGV2ZWxvcG1lbnQNCithbmQgaW5zdHJ1Y3Rpb24sIGFuZCB0aGlzIGludm9sdmVzIHRoZSB1c2Ugb2YgY29tcHV0ZXIgaW5mb3JtYXRpb24NCit0ZWNobm9sb2dpZXMgaW4gdHdvIGFyZWFzLiAgVGhlIGZpcnN0IGlzIHRoZSBkZXZlbG9wbWVudCBvZg0KK2NvbXB1dGVyLW9yaWVudGVkIGluc3RydWN0aW9uYWwgdG9vbHMsIHdoaWNoIGluY2x1ZGVzIHNpbXVsYXRpb25zLA0KK211bHRpbWVkaWEgYXBwbGljYXRpb25zLCBhbmQgY29tcHV0ZXIgdG9vbHMgdGhhdCBhcmUgdXNlZCB0byBhc3Npc3QgaW4NCit0aGUgYW5hbHlzaXMgb2Ygc291cmNlcyBpbiB0aGUgY2xhc3Nyb29tLCBldGMuICBUaGUgUGVyc2V1cyBQcm9qZWN0LCBhDQorZGF0YWJhc2UgdGhhdCBwcm92aWRlcyBhIG11bHRpbWVkaWEgY3VycmljdWx1bSBvbiBjbGFzc2ljYWwgR3JlZWsNCitjaXZpbGl6YXRpb24sIGlzIGEgZ29vZCBleGFtcGxlIG9mIHRoZSB3YXkgaW4gd2hpY2ggZW50aXJlIGN1cnJpY3VsYSBhcmUNCitiZWluZyByZWNhc3QgdXNpbmcgaW5mb3JtYXRpb24gdGVjaG5vbG9naWVzLiAgSXQgaXMgYW50aWNpcGF0ZWQgdGhhdCB0aGUNCitjdXJyZW50IGRpZmZpY3VsdHkgaW4gZXhjaGFuZ2luZyBlbGVjdHJvbmljYWxseSBjb21wdXRlci1iYXNlZA0KK2luc3RydWN0aW9uYWwgc29mdHdhcmUsIHdoaWNoIGluIHR1cm4gbWFrZXMgaXQgZGlmZmljdWx0IGZvciBvbmUgc2Nob2xhcg0KK3RvIGJ1aWxkIHVwb24gdGhlIHdvcmsgb2Ygb3RoZXJzLCB3aWxsIGJlIHJlc29sdmVkIGJlZm9yZSB0b28gbG9uZy4gDQorU3RhbmQtYWxvbmUgY3VycmljdWxhciBhcHBsaWNhdGlvbnMgdGhhdCBpbnZvbHZlIGVsZWN0cm9uaWMgdGV4dCB3aWxsIGJlDQorc2hhcmFibGUgdGhyb3VnaCBuZXR3b3JrcywgcmVpbmZvcmNpbmcgdGhlaXIgc2lnbmlmaWNhbmNlIGFzIGludGVsbGVjdHVhbA0KK3Byb2R1Y3RzIGFzIHdlbGwgYXMgaW5zdHJ1Y3Rpb25hbCB0b29scy4NCisNCitUaGUgc2Vjb25kIGFzcGVjdCBvZiBlbGVjdHJvbmljIGxlYXJuaW5nIGludm9sdmVzIHRoZSB1c2Ugb2YgcmVzZWFyY2ggYW5kDQorZWR1Y2F0aW9uIG5ldHdvcmtzIGZvciBkaXN0YW5jZSBlZHVjYXRpb24gcHJvZ3JhbXMuICBTdWNoIHByb2dyYW1zDQoraW50ZXJhY3RpdmVseSBsaW5rIHRlYWNoZXJzIHdpdGggc3R1ZGVudHMgaW4gZ2VvZ3JhcGhpY2FsbHkgc2NhdHRlcmVkDQorbG9jYXRpb25zIGFuZCByZWx5IG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgZWxlY3Ryb25pYyBpbnN0cnVjdGlvbmFsDQorcmVzb3VyY2VzLiAgRGlzdGFuY2UgZWR1Y2F0aW9uIHByb2dyYW1zIGFyZSBnYWluaW5nIHdpZGUgYXBwZWFsIGFtb25nDQorc3RhdGUgZGVwYXJ0bWVudHMgb2YgZWR1Y2F0aW9uIGJlY2F1c2Ugb2YgdGhlaXIgZGVtb25zdHJhdGVkIGNhcGFjaXR5IHRvDQorYnJpbmcgYWR2YW5jZWQgc3BlY2lhbGl6ZWQgY291cnNlIHdvcmsgYW5kIGFuIGFycmF5IG9mIGV4cGVydHMgdG8gbWFueQ0KK2NsYXNzcm9vbXMuICBBIHJlY2VudCByZXBvcnQgZm91bmQgdGhhdCBhdCBsZWFzdCAzMiBzdGF0ZXMgb3BlcmF0ZWQgYXQNCitsZWFzdCBvbmUgc3RhdGV3aWRlIG5ldHdvcmsgZm9yIGVkdWNhdGlvbiBpbiAxOTkxLCB3aXRoIG5ldHdvcmtzIHVuZGVyDQorZGV2ZWxvcG1lbnQgaW4gbWFueSBvZiB0aGUgcmVtYWluaW5nIHN0YXRlcy4NCisNCitNSUNIRUxTT04gc3VtbWFyaXplZCB0aGlzIHNlY3Rpb24gYnkgbm90aW5nIHR3byBzdHJpa2luZyBjaGFuZ2VzIHRha2luZw0KK3BsYWNlIGluIHNjaG9sYXJseSBjb21tdW5pY2F0aW9uIGFtb25nIGh1bWFuaXRpZXMgc2Nob2xhcnMuICBGaXJzdCBpcyB0aGUNCitleHRlbnQgdG8gd2hpY2ggZWxlY3Ryb25pYyB0ZXh0IGluIHBhcnRpY3VsYXIsIGFuZCBlbGVjdHJvbmljIHJlc291cmNlcw0KK2luIGdlbmVyYWwsIGFyZSBiZWluZyBpbmZ1c2VkIGludG8gZWFjaCBvZiB0aGUgZml2ZSBwcm9jZXNzZXMgZGVzY3JpYmVkDQorYWJvdmUuICBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlcmUgaXMgYSBjZXJ0YWluIHN5bmVyZ3kgYXQgd29yayBoZXJlLiANCitUaGUgdXNlIG9mIGVsZWN0cm9uaWMgcmVzb3VyY2VzIGZvciBvbmUgcHJvY2VzcyB0ZW5kcyB0byBzdGltdWxhdGUgaXRzDQordXNlIGZvciBvdGhlciBwcm9jZXNzZXMsIGJlY2F1c2UgdGhlIGNoaWVmIGNvdXJzZSBvZiBtb3ZlbWVudCBpcyB0b3dhcmQgYQ0KK2NvbXByZWhlbnNpdmUgb24tbGluZSB3b3JraW5nIGNvbnRleHQgZm9yIGh1bWFuaXRpZXMgc2Nob2xhcnMgdGhhdA0KK2luY2x1ZGVzIG9uLWxpbmUgYXZhaWxhYmlsaXR5IG9mIGtleSBiaWJsaW9ncmFwaGllcywgc2Nob2xhcmx5IGZlZWRiYWNrLA0KK3NvdXJjZXMsIGFuYWx5dGljYWwgdG9vbHMsIGFuZCBwdWJsaWNhdGlvbnMuICBNSUNIRUxTT04gbm90ZWQgZnVydGhlcg0KK3RoYXQgdGhlIG1vdmVtZW50IHRvd2FyZCBhIGNvbXByZWhlbnNpdmUgb24tbGluZSB3b3JraW5nIGNvbnRleHQgZm9yDQoraHVtYW5pdGllcyBzY2hvbGFycyBpcyBub3QgbmV3LiAgSW4gZmFjdCwgaXQgaGFzIGJlZW4gdW5kZXJ3YXkgZm9yIG1vcmUNCit0aGFuIGZvcnR5IHllYXJzIGluIHRoZSBodW1hbml0aWVzLCBzaW5jZSBGYXRoZXIgUm9iZXJ0byBCdXNhIGJlZ2FuDQorZGV2ZWxvcGluZyBhbiBlbGVjdHJvbmljIGNvbmNvcmRhbmNlIG9mIHRoZSB3b3JrcyBvZiBTYWludCBUaG9tYXMgQXF1aW5hcw0KK2luIDE5NDkuICBXaGF0IHdlIGFyZSB3aXRuZXNzaW5nIHRvZGF5LCBNSUNIRUxTT04gY29udGVuZGVkLCBpcyBub3QgdGhlDQorYmVnaW5uaW5nIG9mIHRoaXMgb24tbGluZSB0cmFuc2l0aW9uIGJ1dCwgZm9yIGF0IGxlYXN0IHNvbWUgaHVtYW5pdGllcw0KK3NjaG9sYXJzLCB0aGUgdHVybmluZyBwb2ludCBpbiB0aGUgdHJhbnNpdGlvbiBmcm9tIGEgcHJpbnQgdG8gYW4NCitlbGVjdHJvbmljIHdvcmtpbmcgY29udGV4dC4gIENvaW5jaWRpbmcgd2l0aCB0aGUgb24tbGluZSB0cmFuc2l0aW9uLCB0aGUNCitzZWNvbmQgc3RyaWtpbmcgY2hhbmdlIGlzIHRoZSBleHRlbnQgdG8gd2hpY2ggcmVzZWFyY2ggYW5kIGVkdWNhdGlvbg0KK25ldHdvcmtzIGFyZSBiZWNvbWluZyB0aGUgbmV3IG1lZGl1bSBvZiBzY2hvbGFybHkgY29tbXVuaWNhdGlvbi4gIFRoZQ0KK2V4aXN0aW5nIEludGVybmV0IGFuZCB0aGUgcGVuZGluZyBOYXRpb25hbCBFZHVjYXRpb24gYW5kIFJlc2VhcmNoIE5ldHdvcmsNCisoTlJFTikgcmVwcmVzZW50IHRoZSBuZXcgbWVldGluZyBncm91bmQgd2hlcmUgc2Nob2xhcnMgYXJlIGdvaW5nIGZvcg0KK2JpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24sIHNjaG9sYXJseSBkaWFsb2d1ZSBhbmQgZmVlZGJhY2ssIHRoZSBtb3N0DQorY3VycmVudCBwdWJsaWNhdGlvbnMgaW4gdGhlaXIgZmllbGQsIGFuZCBoaWdoLWxldmVsIGVkdWNhdGlvbmFsDQorb2ZmZXJpbmdzLiAgVHJhZGl0aW9uYWwgc2Nob2xhcmx5IHByYWN0aWNlcyBhcmUgdW5kZXJnb2luZyB0cmVtZW5kb3VzDQordHJhbnNmb3JtYXRpb25zIGFzIGEgcmVzdWx0IG9mIHRoZSBlbWVyZ2VuY2UgYW5kIGdyb3dpbmcgcHJvbWluZW5jZSBvZg0KK3doYXQgaXMgY2FsbGVkIG5ldHdvcmstbWVkaWF0ZWQgc2Nob2xhcnNoaXAuDQorDQorTUlDSEVMU09OIG5leHQgdHVybmVkIHRvIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgZnJhbWV3b3JrIHNoZSBwcm9wb3NlZA0KK2F0IHRoZSBvdXRzZXQgb2YgaGVyIHRhbGsgZm9yIGV2YWx1YXRpbmcgdGhlIHByb3NwZWN0cyBmb3IgZWxlY3Ryb25pYw0KK3RleHQsIG5hbWVseSB0aGUga2V5IGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgdHJlbmRzIGFmZmVjdGluZyB0aGUgY29uZHVjdA0KK29mIHNjaG9sYXJseSBjb21tdW5pY2F0aW9uIG92ZXIgdGhlIG5leHQgZGVjYWRlOiAgMSkgZW5kLXVzZXIgY29tcHV0aW5nDQorYW5kIDIpIGNvbm5lY3Rpdml0eS4NCisNCitFbmQtdXNlciBjb21wdXRpbmcgbWVhbnMgdGhhdCB0aGUgcGVyc29uIHRvdWNoaW5nIHRoZSBrZXlib2FyZCwgb3INCitwZXJmb3JtaW5nIGNvbXB1dGF0aW9ucywgaXMgdGhlIHNhbWUgYXMgdGhlIHBlcnNvbiB3aG8gaW5pdGlhdGVzIG9yDQorY29uc3VtZXMgdGhlIGNvbXB1dGF0aW9uLiAgVGhlIGVtZXJnZW5jZSBvZiBwZXJzb25hbCBjb21wdXRlcnMsIGFsb25nDQord2l0aCBhIGhvc3Qgb2Ygb3RoZXIgZm9yY2VzLCBzdWNoIGFzIHViaXF1aXRvdXMgY29tcHV0aW5nLCBhZHZhbmNlcyBpbg0KK2ludGVyZmFjZSBkZXNpZ24sIGFuZCB0aGUgb24tbGluZSB0cmFuc2l0aW9uLCBpcyBwcm9tcHRpbmcgdGhlIGNvbnN1bWVycw0KK29mIGNvbXB1dGF0aW9uIHRvIGRvIHRoZWlyIG93biBjb21wdXRpbmcsIGFuZCBpcyB0aHVzIHJlbmRlcmluZyBvYnNvbGV0ZQ0KK3RoZSB0cmFkaXRpb25hbCBkaXN0aW5jdGlvbiBiZXR3ZWVuIGVuZCB1c2VycyBhbmQgdWx0aW1hdGUgdXNlcnMuDQorDQorVGhlIHRyZW5kIHRvd2FyZCBlbmQtdXNlciBjb21wdXRpbmcgaXMgc2lnbmlmaWNhbnQgdG8gY29uc2lkZXJhdGlvbiBvZg0KK3RoZSBwcm9zcGVjdHMgZm9yIGVsZWN0cm9uaWMgdGV4dHMgYmVjYXVzZSBpdCBtZWFucyB0aGF0IHJlc2VhcmNoZXJzIGFyZQ0KK2JlY29taW5nIG1vcmUgYWRlcHQgYXQgZG9pbmcgdGhlaXIgb3duIGNvbXB1dGF0aW9ucyBhbmQsIHRodXMsIG1vcmUNCitjb21wZXRlbnQgaW4gdGhlIHVzZSBvZiBlbGVjdHJvbmljIG1lZGlhLiAgQnkgYXZvaWRpbmcgcHJvZ3JhbW1lcg0KK2ludGVybWVkaWFyaWVzLCBjb21wdXRhdGlvbiBpcyBiZWNvbWluZyBjZW50cmFsIHRvIHRoZSByZXNlYXJjaGVyJ3MNCit0aG91Z2h0IHByb2Nlc3MuICBUaGlzIGRpcmVjdCBpbnZvbHZlbWVudCBpbiBjb21wdXRpbmcgaXMgY2hhbmdpbmcgdGhlDQorcmVzZWFyY2hlcidzIHBlcnNwZWN0aXZlIG9uIHRoZSBuYXR1cmUgb2YgcmVzZWFyY2ggaXRzZWxmLCB0aGF0IGlzLCB0aGUNCitraW5kcyBvZiBxdWVzdGlvbnMgdGhhdCBjYW4gYmUgcG9zZWQsIHRoZSBhbmFseXRpY2FsIG1ldGhvZG9sb2dpZXMgdGhhdA0KK2NhbiBiZSB1c2VkLCB0aGUgdHlwZXMgYW5kIGFtb3VudCBvZiBzb3VyY2VzIHRoYXQgYXJlIGFwcHJvcHJpYXRlIGZvcg0KK2FuYWx5c2VzLCBhbmQgdGhlIGZvcm0gaW4gd2hpY2ggZmluZGluZ3MgYXJlIHByZXNlbnRlZC4gIFRoZSB0cmVuZCB0b3dhcmQNCitlbmQtdXNlciBjb21wdXRpbmcgbWVhbnMgdGhhdCwgaW5jcmVhc2luZ2x5LCBlbGVjdHJvbmljIG1lZGlhIGFuZA0KK2NvbXB1dGF0aW9uIGFyZSBiZWluZyBpbmZ1c2VkIGludG8gYWxsIHByb2Nlc3NlcyBvZiBodW1hbml0aWVzDQorc2Nob2xhcnNoaXAsIGluc3BpcmluZyByZW1hcmthYmxlIHRyYW5zZm9ybWF0aW9ucyBpbiBzY2hvbGFybHkNCitjb21tdW5pY2F0aW9uLg0KKw0KK1RoZSB0cmVuZCB0b3dhcmQgZ3JlYXRlciBjb25uZWN0aXZpdHkgc3VnZ2VzdHMgdGhhdCByZXNlYXJjaGVycyBhcmUgdXNpbmcNCitjb21wdXRhdGlvbiBpbmNyZWFzaW5nbHkgaW4gbmV0d29yayBlbnZpcm9ubWVudHMuICBDb25uZWN0aXZpdHkgaXMNCitpbXBvcnRhbnQgdG8gc2Nob2xhcnNoaXAgYmVjYXVzZSBpdCBlcmFzZXMgdGhlIGRpc3RhbmNlIHRoYXQgc2VwYXJhdGVzDQorc3R1ZGVudHMgZnJvbSB0ZWFjaGVycyBhbmQgc2Nob2xhcnMgZnJvbSB0aGVpciBjb2xsZWFndWVzLCB3aGlsZSBhbGxvd2luZw0KK3VzZXJzIHRvIGFjY2VzcyByZW1vdGUgZGF0YWJhc2VzLCBzaGFyZSBpbmZvcm1hdGlvbiBpbiBtYW55IGRpZmZlcmVudA0KK21lZGlhLCBjb25uZWN0IHRvIHRoZWlyIHdvcmtpbmcgY29udGV4dCB3aGVyZXZlciB0aGV5IGFyZSwgYW5kDQorY29sbGFib3JhdGUgaW4gYWxsIHBoYXNlcyBvZiByZXNlYXJjaC4NCisNCitUaGUgY29tYmluYXRpb24gb2YgdGhlIHRyZW5kIHRvd2FyZCBlbmQtdXNlciBjb21wdXRpbmcgYW5kIHRoZSB0cmVuZA0KK3Rvd2FyZCBjb25uZWN0aXZpdHkgc3VnZ2VzdHMgdGhhdCB0aGUgc2Nob2xhcmx5IHVzZSBvZiBlbGVjdHJvbmljDQorcmVzb3VyY2VzLCBhbHJlYWR5IGV2aWRlbnQgYW1vbmcgc29tZSByZXNlYXJjaGVycywgd2lsbCBzb29uIGJlY29tZSBhbg0KK2VzdGFibGlzaGVkIGZlYXR1cmUgb2Ygc2Nob2xhcnNoaXAuICBUaGUgZWZmZWN0cyBvZiB0aGVzZSB0cmVuZHMsIGFsb25nDQord2l0aCBvbmdvaW5nIGNoYW5nZXMgaW4gc2Nob2xhcmx5IHByYWN0aWNlcywgcG9pbnQgdG8gYSBmdXR1cmUgaW4gd2hpY2gNCitodW1hbml0aWVzIHJlc2VhcmNoZXJzIHdpbGwgdXNlIGNvbXB1dGF0aW9uIGFuZCBlbGVjdHJvbmljIGNvbW11bmljYXRpb24NCit0byBoZWxwIHRoZW0gZm9ybXVsYXRlIGlkZWFzLCBhY2Nlc3Mgc291cmNlcywgcGVyZm9ybSByZXNlYXJjaCwNCitjb2xsYWJvcmF0ZSB3aXRoIGNvbGxlYWd1ZXMsIHNlZWsgcGVlciByZXZpZXcsIHB1Ymxpc2ggYW5kIGRpc3NlbWluYXRlDQorcmVzdWx0cywgYW5kIGVuZ2FnZSBpbiBtYW55IG90aGVyIHByb2Zlc3Npb25hbCBhbmQgZWR1Y2F0aW9uYWwgYWN0aXZpdGllcy4NCisNCitJbiBzdW1tYXJ5LCBNSUNIRUxTT04gZW1waGFzaXplZCBmb3VyIHBvaW50czogIDEpIEEgcG9ydGlvbiBvZiBodW1hbml0aWVzDQorc2Nob2xhcnMgYWxyZWFkeSBjb25zaWRlciBlbGVjdHJvbmljIHRleHRzIHRoZSBwcmVmZXJyZWQgZm9ybWF0IGZvcg0KK2FuYWx5c2lzIGFuZCBkaXNzZW1pbmF0aW9uLiAgMikgU2Nob2xhcnMgYXJlIHVzaW5nIHRoZXNlIGVsZWN0cm9uaWMNCit0ZXh0cywgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBlbGVjdHJvbmljIHJlc291cmNlcywgaW4gYWxsIHRoZQ0KK3Byb2Nlc3NlcyBvZiBzY2hvbGFybHkgY29tbXVuaWNhdGlvbi4gIDMpIFRoZSBodW1hbml0aWVzIHNjaG9sYXJzJw0KK3dvcmtpbmcgY29udGV4dCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBjaGFuZ2luZyBmcm9tIHByaW50IHRlY2hub2xvZ3kgdG8NCitlbGVjdHJvbmljIHRlY2hub2xvZ3ksIGluIG1hbnkgd2F5cyBtaXJyb3JpbmcgdHJhbnNmb3JtYXRpb25zIHRoYXQgaGF2ZQ0KK29jY3VycmVkIG9yIGFyZSBvY2N1cnJpbmcgd2l0aGluIHRoZSBzY2llbnRpZmljIGNvbW11bml0eS4gIDQpIFRoZXNlDQorY2hhbmdlcyBhcmUgb2NjdXJyaW5nIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGRldmVsb3BtZW50IG9mIGEgbmV3DQorY29tbXVuaWNhdGlvbiBtZWRpdW06ICByZXNlYXJjaCBhbmQgZWR1Y2F0aW9uIG5ldHdvcmtzIHRoYXQgYXJlDQorY2hhcmFjdGVyaXplZCBieSB0aGVpciBjYXBhY2l0eSB0byBhZHZhbmNlIHNjaG9sYXJzaGlwIGluIGEgd2hvbGx5IHVuaXF1ZQ0KK3dheS4NCisNCitNSUNIRUxTT04gYWxzbyByZWl0ZXJhdGVkIGhlciB0aHJlZSBwcmluY2lwYWwgYXJndW1lbnRzOiAgbCkgRWxlY3Ryb25pYw0KK3RleHRzIGFyZSBiZXN0IHVuZGVyc3Rvb2QgaW4gdGVybXMgb2YgdGhlIHJlbGF0aW9uc2hpcCB0byBvdGhlcg0KK2VsZWN0cm9uaWMgcmVzb3VyY2VzIGFuZCB0aGUgZ3Jvd2luZyBwcm9taW5lbmNlIG9mIG5ldHdvcmstbWVkaWF0ZWQNCitzY2hvbGFyc2hpcC4gIDIpIFRoZSBwcm9zcGVjdHMgZm9yIGVsZWN0cm9uaWMgdGV4dHMgbGllIGluIHRoZWlyIGNhcGFjaXR5DQordG8gYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBvbi1saW5lIG5ldHdvcmsgb2YgZWxlY3Ryb25pYyByZXNvdXJjZXMgdGhhdA0KK2NvbXByaXNlIHRoZSBuZXcgd29ya2luZyBjb250ZXh0IGZvciBzY2hvbGFycy4gIDMpIFJldHJvc3BlY3RpdmUgY29udmVyc2lvbg0KK29mIHBvcnRpb25zIG9mIHRoZSBzY2hvbGFybHkgcmVjb3JkIHNob3VsZCBiZSBhIGtleSBzdHJhdGVneSBhcyBpbmZvcm1hdGlvbg0KK3Byb3ZpZGVycyByZXNwb25kIHRvIGNoYW5nZXMgaW4gc2Nob2xhcmx5IGNvbW11bmljYXRpb24gcHJhY3RpY2VzLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitWRUNDSUEgKiBBTSdzIGV2YWx1YXRpb24gcHJvamVjdCBhbmQgcHVibGljIHVzZXJzIG9mIGVsZWN0cm9uaWMgcmVzb3VyY2VzDQorKiBBTSBhbmQgaXRzIGRlc2lnbiAqIFNpdGUgc2VsZWN0aW9uIGFuZCBldmFsdWF0aW5nIHRoZSBNYWNpbnRvc2gNCitpbXBsZW1lbnRhdGlvbiBvZiBBTSAqIENoYXJhY3RlcmlzdGljcyBvZiB0aGUgc2l4IHB1YmxpYyBsaWJyYXJpZXMNCitzZWxlY3RlZCAqIENoYXJhY3RlcmlzdGljcyBvZiBBTSdzIHVzZXJzIGluIHRoZXNlIGxpYnJhcmllcyAqIFByaW5jaXBhbA0KK3dheXMgQU0gaXMgYmVpbmcgdXNlZCAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK1N1c2FuIFZFQ0NJQSwgdGVhbSBsZWFkZXIsIGFuZCBKb2FubmUgRlJFRU1BTiwgYXNzb2NpYXRlIGNvb3JkaW5hdG9yLA0KK0FtZXJpY2FuIE1lbW9yeSwgTGlicmFyeSBvZiBDb25ncmVzcywgZ2F2ZSBhIGpvaW50IHByZXNlbnRhdGlvbi4gIEZpcnN0LA0KK2J5IHdheSBvZiBpbnRyb2R1Y3Rpb24sIFZFQ0NJQSBleHBsYWluZWQgaGVyIGFuZCBGUkVFTUFOJ3Mgcm9sZXMgaW4NCitBbWVyaWNhbiBNZW1vcnkgKEFNKS4gIFNlcnZpbmcgcHJpbmNpcGFsbHkgYXMgYW4gb2JzZXJ2ZXIsIFZFQ0NJQSBoYXMNCithc3Npc3RlZCB3aXRoIHRoZSBldmFsdWF0aW9uIHByb2plY3Qgb2YgQU0sIHBsYWNpbmcgQU0gY29sbGVjdGlvbnMgaW4gYQ0KK3ZhcmlldHkgb2YgZGlmZmVyZW50IHNpdGVzIGFyb3VuZCB0aGUgY291bnRyeSBhbmQgaGVscGluZyB0byBvcmdhbml6ZSBhbmQNCitpbXBsZW1lbnQgdGhhdCBwcm9qZWN0LiAgRlJFRU1BTiBoYXMgYmVlbiBhbiBhc3NvY2lhdGUgY29vcmRpbmF0b3Igb2YgQU0NCithbmQgaGFzIGJlZW4gaW52b2x2ZWQgcHJpbmNpcGFsbHkgd2l0aCB0aGUgaW50ZXJwcmV0YXRpdmUgbWF0ZXJpYWxzLA0KK3ByZXBhcmluZyBzb21lIG9mIHRoZSBlbGVjdHJvbmljIGV4aGliaXRzIGFuZCBwcmludGVkIGhpc3RvcmljYWwNCitpbmZvcm1hdGlvbiB0aGF0IGFjY29tcGFuaWVzIEFNIGFuZCB0aGF0IGlzIHJlcXVlc3RlZCBieSB1c2Vycy4gIFZFQ0NJQQ0KK2FuZCBGUkVFTUFOIHNoYXJlZCBhbmVjZG90YWwgb2JzZXJ2YXRpb25zIGNvbmNlcm5pbmcgQU0gd2l0aCBwdWJsaWMgdXNlcnMNCitvZiBlbGVjdHJvbmljIHJlc291cmNlcy4gIE5vdHdpdGhzdGFuZGluZyBhIGZhaXJseSBzdHJ1Y3R1cmVkIGV2YWx1YXRpb24NCitpbiBwcm9ncmVzcywgYm90aCBWRUNDSUEgYW5kIEZSRUVNQU4gY2hvc2Ugbm90IHRvIHJlcG9ydCBvbiBzcGVjaWZpY3MgaW4NCit0ZXJtcyBvZiBudW1iZXJzLCBldGMuLCBiZWNhdXNlIHRoZXkgZmVsdCBpdCB3YXMgdG9vIGVhcmx5IGluIHRoZQ0KK2V2YWx1YXRpb24gcHJvamVjdCB0byBkbyBzby4NCisNCitBTSBpcyBhbiBlbGVjdHJvbmljIGFyY2hpdmUgb2YgcHJpbWFyeSBzb3VyY2UgbWF0ZXJpYWxzIGZyb20gdGhlIExpYnJhcnkNCitvZiBDb25ncmVzcywgc2VsZWN0ZWQgY29sbGVjdGlvbnMgcmVwcmVzZW50aW5nIGEgdmFyaWV0eSBvZiBmb3JtYXRzLS0NCitwaG90b2dyYXBocywgZ3JhcGhpYyBhcnRzLCByZWNvcmRlZCBzb3VuZCwgbW90aW9uIHBpY3R1cmVzLCBicm9hZHNpZGVzLA0KK2FuZCBzb29uLCBwYW1waGxldHMgYW5kIGJvb2tzLiAgSW4gdGVybXMgb2YgdGhlIGRlc2lnbiBvZiB0aGlzIHN5c3RlbSwNCit0aGUgaW50ZXJwcmV0YXRpdmUgZXhoaWJpdHMgaGF2ZSBiZWVuIGtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgcHJpbWFyeQ0KK3Jlc291cmNlcywgd2l0aCBnb29kIHJlYXNvbi4gIEFjY29tcGFueWluZyB0aGlzIGNvbGxlY3Rpb24gYXJlIHByaW50ZWQNCitkb2N1bWVudGF0aW9uIGFuZCB1c2VyIGd1aWRlcywgYXMgd2VsbCBhcyBndWlkZXMgdGhhdCBGUkVFTUFOIHByZXBhcmVkIGZvcg0KK3RlYWNoZXJzIHNvIHRoYXQgdGhleSBtYXkgYmVnaW4gdXNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIHN5c3RlbSBhdCBvbmNlLg0KKw0KK1ZFQ0NJQSBkZXNjcmliZWQgdGhlIGV2YWx1YXRpb24gcHJvamVjdCBiZWZvcmUgdGFsa2luZyBhYm91dCB0aGUgcHVibGljDQordXNlcnMgb2YgQU0sIGxpbWl0aW5nIGhlciByZW1hcmtzIHRvIHB1YmxpYyBsaWJyYXJpZXMsIGJlY2F1c2UgRlJFRU1BTg0KK3dvdWxkIHRhbGsgbW9yZSBzcGVjaWZpY2FsbHkgYWJvdXQgc2Nob29scyBmcm9tIGtpbmRlcmdhcnRlbiB0byB0d2VsZnRoDQorZ3JhZGUgKEstMTIpLiAgIEhhdmluZyBzdGFydGVkIGluIHNwcmluZyAxOTkxLCB0aGUgZXZhbHVhdGlvbiBjdXJyZW50bHkNCitpbnZvbHZlcyB0ZXN0aW5nIG9mIHRoZSBNYWNpbnRvc2ggaW1wbGVtZW50YXRpb24gb2YgQU0uICBTaW5jZSB0aGUNCitwcmltYXJ5IGdvYWwgb2YgdGhpcyBldmFsdWF0aW9uIGlzIHRvIGRldGVybWluZSB0aGUgbW9zdCBhcHByb3ByaWF0ZQ0KK2F1ZGllbmNlIG9yIGF1ZGllbmNlcyBmb3IgQU0sIHZlcnkgZGlmZmVyZW50IHNpdGVzIHdlcmUgc2VsZWN0ZWQuICBUaGlzDQorbWFrZXMgZXZhbHVhdGlvbiBkaWZmaWN1bHQgYmVjYXVzZSBvZiB0aGUgdmFyeWluZyBkZWdyZWVzIG9mIHRlY2hub2xvZ3kNCitsaXRlcmFjeSBhbW9uZyB0aGUgc2l0ZXMuICBBTSBpcyBzaXR1YXRlZCBpbiBmb3J0eS1mb3VyIGxvY2F0aW9ucywgb2YNCit3aGljaCBzaXggYXJlIHB1YmxpYyBsaWJyYXJpZXMgYW5kIHNpeHRlZW4gYXJlIHNjaG9vbHMuICBSZXByZXNlbnRlZA0KK2Ftb25nIHRoZSBzY2hvb2xzIGFyZSBlbGVtZW50YXJ5LCBqdW5pb3IgaGlnaCwgYW5kIGhpZ2ggc2Nob29scy4NCitEaXN0cmljdCBvZmZpY2VzIGFsc28gYXJlIGludm9sdmVkIGluIHRoZSBldmFsdWF0aW9uLCB3aGljaCB3aWxsDQorY29uY2x1ZGUgaW4gc3VtbWVyIDE5OTMuDQorDQorVkVDQ0lBIGZvY3VzZWQgdGhlIHJlbWFpbmRlciBvZiBoZXIgdGFsayBvbiB0aGUgc2l4IHB1YmxpYyBsaWJyYXJpZXMsIG9uZQ0KK29mIHdoaWNoIGRvdWJsZXMgYXMgYSBzdGF0ZSBsaWJyYXJ5LiAgVGhleSByZXByZXNlbnQgYSByYW5nZSBvZg0KK2dlb2dyYXBoaWMgYXJlYXMgYW5kIGEgcmFuZ2Ugb2YgZGVtb2dyYXBoaWMgY2hhcmFjdGVyaXN0aWNzLiAgRm9yDQorZXhhbXBsZSwgdGhyZWUgYXJlIGxvY2F0ZWQgaW4gdXJiYW4gc2V0dGluZ3MsIHR3byBpbiBydXJhbCBzZXR0aW5ncywgYW5kDQorb25lIGluIGEgc3VidXJiYW4gc2V0dGluZy4gIEEgcmFuZ2Ugb2YgdGVjaG5pY2FsIGV4cGVydGlzZSBpcyB0byBiZSBmb3VuZA0KK2Ftb25nIHRoZXNlIGZhY2lsaXRpZXMgYXMgd2VsbC4gIEZvciBleGFtcGxlLCBvbmUgaXMgYW4gIkFwcGxlIGxpYnJhcnkgb2YNCit0aGUgZnV0dXJlLCIgd2hpbGUgdHdvIG90aGVycyBhcmUgcnVyYWwgb25lLXJvb20gbGlicmFyaWVzLS1pbiBvbmUsIEFNDQorc2l0cyBhdCB0aGUgZnJvbnQgZGVzayBuZXh0IHRvIGEgdHJhY3RvciBtYW51YWwuDQorDQorQWxsIHB1YmxpYyBsaWJyYXJpZXMgaGF2ZSBiZWVuIGV4dHJlbWVseSBlbnRodXNpYXN0aWMsIHN1cHBvcnRpdmUsIGFuZA0KK2FwcHJlY2lhdGl2ZSBvZiB0aGUgd29yayB0aGF0IEFNIGhhcyBiZWVuIGRvaW5nLiAgVkVDQ0lBIGNoYXJhY3Rlcml6ZWQNCit2YXJpb3VzIHVzZXJzOiAgTW9zdCB1c2VycyBpbiBwdWJsaWMgbGlicmFyaWVzIGRlc2NyaWJlIHRoZW1zZWx2ZXMgYXMNCitnZW5lcmFsIHJlYWRlcnM7IG9mIHRoZSBzdHVkZW50cyB3aG8gdXNlIEFNIGluIHRoZSBwdWJsaWMgbGlicmFyaWVzLA0KK3Rob3NlIGluIGZvdXJ0aCBncmFkZSBhbmQgYWJvdmUgc2VlbSBtb3N0IGludGVyZXN0ZWQuICBQdWJsaWMgbGlicmFyaWVzDQoraW4gcnVyYWwgc2l0ZXMgdGVuZCB0byBhdHRyYWN0IHJldGlyZWQgcGVvcGxlLCB3aG8gaGF2ZSBiZWVuIGhpZ2hseQ0KK3JlY2VwdGl2ZSB0byBBTS4gIFVzZXJzIHRlbmQgdG8gZmFsbCBpbnRvIHR3byBhZGRpdGlvbmFsIGNhdGVnb3JpZXM6IA0KK3Blb3BsZSBpbnRlcmVzdGVkIGluIHRoZSBjb250ZW50IGFuZCBoaXN0b3JpY2FsIGNvbm5vdGF0aW9ucyBvZiB0aGVzZQ0KK3ByaW1hcnkgcmVzb3VyY2VzLCBhbmQgdGhvc2UgZmFzY2luYXRlZCBieSB0aGUgdGVjaG5vbG9neS4gIFRoZSBmb3JtYXQNCityZWNlaXZpbmcgdGhlIG1vc3QgY29tbWVudHMgaGFzIGJlZW4gbW90aW9uIHBpY3R1cmVzLiAgVGhlIGFkdWx0IHVzZXJzIGluDQorcHVibGljIGxpYnJhcmllcyBhcmUgbW9yZSBjb21mb3J0YWJsZSB3aXRoIElCTSBjb21wdXRlcnMsIHdoZXJlYXMgeW91bmcNCitwZW9wbGUgc2VlbSBjb21mb3J0YWJsZSB3aXRoIGVpdGhlciBJQk0gb3IgTWFjaW50b3NoLCBhbHRob3VnaCBtb3N0IG9mDQordGhlbSBzZWVtIHRvIGNvbWUgZnJvbSBhIE1hY2ludG9zaCBiYWNrZ3JvdW5kLiAgVGhpcyBzYW1lIHRlbmRlbmN5IGlzDQorZm91bmQgaW4gdGhlIHNjaG9vbHMuDQorDQorV2hhdCBraW5kcyBvZiB0aGluZ3MgZG8gdXNlcnMgZG8gd2l0aCBBTT8gIEluIGEgcHVibGljIGxpYnJhcnkgdGhlcmUgYXJlDQordHdvIG1haW4gZ29hbHMgb3Igd2F5cyB0aGF0IEFNIGlzIGJlaW5nIHVzZWQ6ICBhcyBhbiBpbmRpdmlkdWFsIGxlYXJuaW5nDQordG9vbCwgYW5kIGFzIGEgbGVpc3VyZSBhY3Rpdml0eS4gIEFkdWx0IGxlYXJuaW5nIHdhcyBvbmUgYXJlYSB0aGF0IFZFQ0NJQQ0KK3dvdWxkIGhpZ2hsaWdodCBhcyBhIHBvc3NpYmxlIGFwcGxpY2F0aW9uIGZvciBhIHRvb2wgc3VjaCBhcyBBTS4gIFNoZQ0KK2Rlc2NyaWJlZCBhIHBhdHJvbiBvZiBhIHJ1cmFsIHB1YmxpYyBsaWJyYXJ5IHdobyBjb21lcyBpbiBldmVyeSBkYXkgb24NCitoaXMgbHVuY2ggaG91ciBhbmQgbGl0ZXJhbGx5IHJlYWRzIEFNLCBtZXRob2RpY2FsbHkgZ29pbmcgdGhyb3VnaCB0aGUNCitjb2xsZWN0aW9uIGltYWdlIGJ5IGltYWdlLiAgQXQgdGhlIGVuZCBvZiBoaXMgaG91ciBoZSBtYWtlcyBhbiBlbGVjdHJvbmljDQorYm9va21hcmssIHB1dHMgaXQgaW4gaGlzIHBvY2tldCwgYW5kIHJldHVybnMgdG8gd29yay4gIFRoZSBuZXh0IGRheSBoZQ0KK2NvbWVzIGluIGFuZCByZXN1bWVzIHdoZXJlIGhlIGxlZnQgb2ZmLiAgSW50ZXJlc3RpbmdseSwgdGhpcyBtYW4gaGFkDQorbmV2ZXIgYmVlbiBpbiB0aGUgbGlicmFyeSBiZWZvcmUgaGUgdXNlZCBBTS4gIEluIGFub3RoZXIgc21hbGwsIHJ1cmFsDQorbGlicmFyeSwgdGhlIGNvb3JkaW5hdG9yIHJlcG9ydHMgdGhhdCBBTSBpcyBhIHBvcHVsYXIgYWN0aXZpdHkgZm9yIHNvbWUNCitvZiB0aGUgb2xkZXIsIHJldGlyZWQgcGVvcGxlIGluIHRoZSBjb21tdW5pdHksIHdobyBvcmRpbmFyaWx5IHdvdWxkIG5vdA0KK3VzZSAidGhvc2UgdGhpbmdzLCItLWNvbXB1dGVycy4gIEFub3RoZXIgZXhhbXBsZSBvZiBhZHVsdCBsZWFybmluZyBpbg0KK3B1YmxpYyBsaWJyYXJpZXMgaXMgYm9vayBncm91cHMsIG9uZSBvZiB3aGljaCwgaW4gcGFydGljdWxhciwgaXMgdXNpbmcgQU0NCithcyBwYXJ0IG9mIGl0cyByZWFkaW5nIG9uIGluZHVzdHJpYWxpemF0aW9uLCBpbnRlZ3JhdGlvbiwgYW5kIHVyYmFuaXphdGlvbg0KK2luIHRoZSBlYXJseSAxOTAwcy4NCisNCitPbmUgbGlicmFyeSByZXBvcnRzIHRoYXQgYSBmYW1pbHkgaXMgdXNpbmcgQU0gdG8gaGVscCBlZHVjYXRlIHRoZWlyDQorY2hpbGRyZW4uICBJbiBhbm90aGVyIGluc3RhbmNlLCBpbmRpdmlkdWFscyBmcm9tIGEgbG9jYWwgbXVzZXVtIGNhbWUgaW4NCit0byB1c2UgQU0gdG8gcHJlcGFyZSBhbiBleGhpYml0IG9uIHRveXMgb2YgdGhlIHBhc3QuICBUaGVzZSB0d28gZXhhbXBsZXMNCitlbXBoYXNpemUgdGhlIG1pc3Npb24gb2YgdGhlIHB1YmxpYyBsaWJyYXJ5IGFzIGEgY3VsdHVyYWwgaW5zdGl0dXRpb24sDQorcmVhY2hpbmcgb3V0IHRvIHBlb3BsZSB3aG8gZG8gbm90IGhhdmUgdGhlIHNhbWUgcmVzb3VyY2VzIGF2YWlsYWJsZSB0bw0KK3Rob3NlIHdobyBsaXZlIGluIGEgbWV0cm9wb2xpdGFuIGFyZWEgb3IgaGF2ZSBhY2Nlc3MgdG8gYSBtYWpvciBsaWJyYXJ5LiANCitPbmUgcnVyYWwgbGlicmFyeSByZXBvcnRzIHRoYXQganVuaW9yIGhpZ2ggc2Nob29sIHN0dWRlbnRzIGluIGxhcmdlDQorbnVtYmVycyBjYW1lIGluIG9uZSBhZnRlcm5vb24gdG8gdXNlIEFNIGZvciBlbnRlcnRhaW5tZW50LiAgQSBudW1iZXIgb2YNCitwdWJsaWMgbGlicmFyaWVzIHJlcG9ydGVkIGdyZWF0IGludGVyZXN0IGFtb25nIHBvc3RjYXJkIGNvbGxlY3RvcnMgaW4gdGhlDQorRGV0cm9pdCBjb2xsZWN0aW9uLCB3aGljaCB3YXMgZXNzZW50aWFsbHkgYSBjb2xsZWN0aW9uIG9mIGltYWdlcyB1c2VkIG9uDQorcG9zdGNhcmRzIGFyb3VuZCB0aGUgdHVybiBvZiB0aGUgY2VudHVyeS4gIFRyYWluIGJ1ZmZzIGFyZSBzaW1pbGFybHkNCitpbnRlcmVzdGVkIGJlY2F1c2UgdGhhdCB3YXMgYSB0aW1lIG9mIGdyZWF0IGludGVyZXN0IGluIHJhaWxyb2FkaW5nLiANCitQZW9wbGUsIGl0IHdhcyBmb3VuZCwgcmVsYXRlIHRvIHRoaW5ncyB0aGF0IHRoZXkga25vdyBvZiBmaXJzdGhhbmQuICBGb3INCitleGFtcGxlLCBpbiBib3RoIHJ1cmFsIHB1YmxpYyBsaWJyYXJpZXMgd2hlcmUgQU0gd2FzIG1hZGUgYXZhaWxhYmxlLA0KK29ic2VydmVycyByZXBvcnRlZCB0aGF0IHRoZSBvbGRlciBwZW9wbGUgd2l0aCBwZXJzb25hbCByZW1lbWJyYW5jZXMgb2YNCit0aGUgdHVybiBvZiB0aGUgY2VudHVyeSB3ZXJlIGdyYXZpdGF0aW5nIHRvIHRoZSBEZXRyb2l0IGNvbGxlY3Rpb24uIA0KK1RoZXNlIGV4YW1wbGVzIHNlcnZlZCB0byB1bmRlcnNjb3JlIE1JQ0hFTFNPTidzIG9ic2VydmF0aW9uIHJlIHRoZQ0KK2ludGVncmF0aW9uIG9mIGVsZWN0cm9uaWMgdG9vbHMgYW5kIGlkZWFzLS10aGF0IHBlb3BsZSBsZWFybiBiZXN0IHdoZW4NCit0aGUgbWF0ZXJpYWwgcmVsYXRlcyB0byBzb21ldGhpbmcgdGhleSBrbm93Lg0KKw0KK1ZFQ0NJQSBtYWRlIHRoZSBmaW5hbCBwb2ludCB0aGF0IGluIG1hbnkgY2FzZXMgQU0gc2VydmVzIGFzIGENCitwdWJsaWMtcmVsYXRpb25zIHRvb2wgZm9yIHRoZSBwdWJsaWMgbGlicmFyaWVzIHRoYXQgYXJlIHRlc3RpbmcgaXQuICBJbg0KK29uZSBjYXNlLCBBTSBpcyBiZWluZyB1c2VkIGFzIGEgdmVoaWNsZSB0byBzZWN1cmUgYWRkaXRpb25hbCBmdW5kaW5nIGZvcg0KK3RoZSBsaWJyYXJ5LiAgSW4gYW5vdGhlciBjYXNlLCBBTSBoYXMgc2VydmVkIGFzIGFuIGluc3BpcmF0aW9uIHRvIHRoZQ0KK3N0YWZmIG9mIGEgbWFqb3IgbG9jYWwgcHVibGljIGxpYnJhcnkgaW4gdGhlIFNvdXRoIHRvIHRoaW5rIGFib3V0IHdheXMgdG8NCittYWtlIGl0cyBvd24gY29sbGVjdGlvbiBvZiBwaG90b2dyYXBocyBtb3JlIGFjY2Vzc2libGUgdG8gdGhlIHB1YmxpYy4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0ZSRUVNQU4gKiBBTSBhbmQgYXJjaGl2YWwgZWxlY3Ryb25pYyByZXNvdXJjZXMgaW4gYSBzY2hvb2wgZW52aXJvbm1lbnQgKg0KK1F1ZXN0aW9ucyBjb25jZXJuaW5nIGNvbnRleHQgKiBRdWVzdGlvbnMgY29uY2VybmluZyB0aGUgZWxlY3Ryb25pYyBmb3JtYXQNCitpdHNlbGYgKiBDb21wdXRlciBhbnhpZXR5ICogQWNjZXNzIGFuZCBhdmFpbGFiaWxpdHkgb2YgdGhlIHN5c3RlbSAqDQorSGFyZHdhcmUgKiBTdHJlbmd0aHMgZ2FpbmVkIHRocm91Z2ggdGhlIHVzZSBvZiBhcmNoaXZhbCByZXNvdXJjZXMgaW4NCitzY2hvb2xzICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorUmVpdGVyYXRpbmcgYW4gb2JzZXJ2YXRpb24gbWFkZSBieSBWRUNDSUEsIHRoYXQgQU0gaXMgYW4gYXJjaGl2YWwNCityZXNvdXJjZSBtYWRlIHVwIG9mIHByaW1hcnkgbWF0ZXJpYWxzIHdpdGggdmVyeSBsaXR0bGUgaW50ZXJwcmV0YXRpb24sDQorRlJFRU1BTiBzdGF0ZWQgdGhhdCB0aGUgcHJvamVjdCBoYXMgYXR0ZW1wdGVkIHRvIGJyaWRnZSB0aGUgZ2FwIGJldHdlZW4NCit0aGVzZSBiYXJlIHByaW1hcnkgbWF0ZXJpYWxzIGFuZCBhIHNjaG9vbCBlbnZpcm9ubWVudCwgYW5kIGluIHRoYXQgY2F1c2UNCitoYXMgY3JlYXRlZCBndWlkZWQgaW50cm9kdWN0aW9ucyB0byBBTSBjb2xsZWN0aW9ucy4gIExvdWQgZGVtYW5kIGZyb20gdGhlDQorZWR1Y2F0aW9uYWwgY29tbXVuaXR5LCAgY2hpZWZseSBmcm9tIHRlYWNoZXJzIHdvcmtpbmcgd2l0aCB0aGUgdXBwZXINCitncmFkZXMgb2YgZWxlbWVudGFyeSBzY2hvb2wgdGhyb3VnaCBoaWdoIHNjaG9vbCwgZ3JlZXRlZCB0aGUgYW5ub3VuY2VtZW50DQordGhhdCBBTSB3b3VsZCBiZSB0ZXN0ZWQgYXJvdW5kIHRoZSBjb3VudHJ5Lg0KKw0KK0ZSRUVNQU4gcmVwb3J0ZWQgbm90IG9ubHkgb24gd2hhdCB3YXMgbGVhcm5lZCBhYm91dCBBTSBpbiBhIHNjaG9vbA0KK2Vudmlyb25tZW50LCBidXQgYWxzbyBvbiBzZXZlcmFsIHVuaXZlcnNhbCBxdWVzdGlvbnMgdGhhdCB3ZXJlIHJhaXNlZA0KK2NvbmNlcm5pbmcgYXJjaGl2YWwgZWxlY3Ryb25pYyByZXNvdXJjZXMgaW4gc2Nob29scy4gIFNoZSBkaXNjdXNzZWQNCitzZXZlcmFsIHN0cmVuZ3RocyBvZiB0aGlzIHR5cGUgb2YgbWF0ZXJpYWwgaW4gYSBzY2hvb2wgZW52aXJvbm1lbnQgYXMNCitvcHBvc2VkIHRvIGEgaGlnaGx5IHN0cnVjdHVyZWQgcmVzb3VyY2UgdGhhdCBvZmZlcnMgYSBsaW1pdGVkIG51bWJlciBvZg0KK3BhdGhzIHRvIGZvbGxvdy4NCisNCitGUkVFTUFOIGZpcnN0IHJhaXNlZCBzZXZlcmFsIHF1ZXN0aW9ucyBhYm91dCB1c2luZyBBTSBpbiBhIHNjaG9vbA0KK2Vudmlyb25tZW50LiAgVGhlcmUgaXMgb2Z0ZW4gc29tZSBkaWZmaWN1bHR5IGluIGRldmVsb3BpbmcgYSBzZW5zZSBvZg0KK3doYXQgdGhlIHN5c3RlbSBjb250YWlucy4gIE1hbnkgc3R1ZGVudHMgc2l0IGRvd24gYXQgYSBjb21wdXRlciByZXNvdXJjZQ0KK2FuZCBhc3N1bWUgdGhhdCwgYmVjYXVzZSBBTSBjb21lcyBmcm9tIHRoZSBMaWJyYXJ5IG9mIENvbmdyZXNzLCBhbGwgb2YNCitBbWVyaWNhbiBoaXN0b3J5IGlzIG5vdyBhdCB0aGVpciBmaW5nZXJ0aXBzLiAgQXMgYSByZXN1bHQgb2YgdGhhdCBzb3J0IG9mDQorbWlzdGFrZW4ganVkZ21lbnQsIHNvbWUgc3R1ZGVudHMgYXJlIGtub3duIHRvIGNvbmNsdWRlIHRoYXQgQU0gY29udGFpbnMNCitub3RoaW5nIG9mIHVzZSB0byB0aGVtIHdoZW4gdGhleSBsb29rIGZvciBvbmUgb3IgdHdvIHRoaW5ncyBhbmQgZG8gbm90DQorZmluZCB0aGVtLiAgSXQgaXMgZGlmZmljdWx0IHRvIGRpc2NvdmVyIHRoYXQgbWlkZGxlIGdyb3VuZCB3aGVyZSBvbmUgaGFzDQorYSBzZW5zZSBvZiB3aGF0IHRoZSBzeXN0ZW0gY29udGFpbnMuICBTb21lIHN0dWRlbnRzIGdyb3BlIHRvd2FyZCB0aGUgaWRlYQ0KK29mIGFuIGFyY2hpdmUsIGEgbmV3IGlkZWEgdG8gdGhlbSwgc2luY2UgdGhleSBoYXZlIG5vdCBwcmV2aW91c2x5DQorZXhwZXJpZW5jZWQgd2hhdCBpdCBtZWFucyB0byBoYXZlIGFjY2VzcyB0byBhIHZhc3QgYm9keSBvZiBzb21ld2hhdA0KK3JhbmRvbSBpbmZvcm1hdGlvbi4NCisNCitPdGhlciBxdWVzdGlvbnMgcmFpc2VkIGJ5IEZSRUVNQU4gY29uY2VybmVkIHRoZSBlbGVjdHJvbmljIGZvcm1hdCBpdHNlbGYuIA0KK0ZvciBpbnN0YW5jZSwgaW4gYSBzY2hvb2wgZW52aXJvbm1lbnQgaXQgaXMgb2Z0ZW4gZGlmZmljdWx0IGJvdGggZm9yDQordGVhY2hlcnMgYW5kIHN0dWRlbnRzIHRvIGdhaW4gYSBzZW5zZSBvZiB3aGF0IGl0IGlzIHRoZXkgYXJlIHZpZXdpbmcuIA0KK1RoZXkgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGEgdmlzdWFsIGltYWdlLCBidXQgdGhleSBkbyBub3QgbmVjZXNzYXJpbHkNCitrbm93IHRoYXQgaXQgaXMgYSBwb3N0Y2FyZCBmcm9tIHRoZSB0dXJuIG9mIHRoZSBjZW50dXJ5LCBhIHBhbm9yYW1pYw0KK3Bob3RvZ3JhcGgsIG9yIGV2ZW4gbWFjaGluZS1yZWFkYWJsZSB0ZXh0IG9mIGFuIGVpZ2h0ZWVudGgtY2VudHVyeQ0KK2Jyb2Fkc2lkZSwgYSB0d2VudGlldGgtY2VudHVyeSBwcmludGVkIGJvb2ssIG9yIGEgbmluZXRlZW50aC1jZW50dXJ5DQorZGlhcnkuICBUaGF0IGRpc3RpbmN0aW9uIGlzIG9mdGVuIGRpZmZpY3VsdCBmb3IgcGVvcGxlIGluIGEgc2Nob29sDQorZW52aXJvbm1lbnQgdG8gZ3Jhc3AuICBCZWNhdXNlIG9mIHRoYXQsIGl0IG9jY2FzaW9uYWxseSBiZWNvbWVzIGRpZmZpY3VsdA0KK3RvIGRyYXcgY29uY2x1c2lvbnMgZnJvbSB3aGF0IG9uZSBpcyB2aWV3aW5nLg0KKw0KK0ZSRUVNQU4gYWxzbyBub3RlZCB0aGUgb2J2aW91cyBmZWFyIG9mIHRoZSBjb21wdXRlciwgd2hpY2ggY29uc3RpdHV0ZXMgYQ0KK2RpZmZpY3VsdHkgaW4gdXNpbmcgYW4gZWxlY3Ryb25pYyByZXNvdXJjZS4gIFRob3VnaCBzdHVkZW50cyBpbiBnZW5lcmFsDQorZGlkIG5vdCBzdWZmZXIgZnJvbSB0aGlzIGFueGlldHksIHNldmVyYWwgb2xkZXIgc3R1ZGVudHMgZmVhcmVkIHRoYXQgdGhleQ0KK3dlcmUgY29tcHV0ZXItaWxsaXRlcmF0ZSwgYW4gYXNzdW1wdGlvbiB0aGF0IGJlY2FtZSBzZWxmLWZ1bGZpbGxpbmcgd2hlbg0KK3RoZXkgc2VhcmNoZWQgZm9yIHNvbWV0aGluZyBidXQgZmFpbGVkIHRvIGZpbmQgaXQuICBGUkVFTUFOIHNhaWQgc2hlDQorYmVsaWV2ZWQgdGhhdCBzb21lIHRlYWNoZXJzIGFsc28gZmVhciBjb21wdXRlciByZXNvdXJjZXMsIGJlY2F1c2UgdGhleQ0KK2JlbGlldmUgdGhleSBsYWNrIGNvbXBsZXRlIGNvbnRyb2wuICBGUkVFTUFOIHJlbGF0ZWQgdGhlIGV4YW1wbGUgb2YNCit0ZWFjaGVycyBzaG9vaW5nIGF3YXkgc3R1ZGVudHMgYmVjYXVzZSBpdCB3YXMgbm90IHRoZWlyIHRpbWUgdG8gdXNlIHRoZQ0KK3N5c3RlbS4gIFRoaXMgd2FzIGEgY2FzZSBpbiB3aGljaCB0aGUgc2l0dWF0aW9uIGhhZCB0byBiZSBleHRyZW1lbHkNCitzdHJ1Y3R1cmVkIHNvIHRoYXQgdGhlIHRlYWNoZXJzIHdvdWxkIG5vdCBmZWVsIHRoYXQgdGhleSBoYWQgbG9zdCB0aGVpcg0KK2dyYXNwIG9uIHdoYXQgdGhlIHN5c3RlbSBjb250YWluZWQuDQorDQorQSBmaW5hbCBxdWVzdGlvbiByYWlzZWQgYnkgRlJFRU1BTiBjb25jZXJuZWQgYWNjZXNzIGFuZCBhdmFpbGFiaWxpdHkgb2YNCit0aGUgc3lzdGVtLiAgU2hlIG5vdGVkIHRoZSBvY2Nhc2lvbmFsIGV4aXN0ZW5jZSBvZiBhIGdhcCBpbiBjb21tdW5pY2F0aW9uDQorYmV0d2VlbiBzY2hvb2wgbGlicmFyaWFucyBhbmQgdGVhY2hlcnMuICBPZnRlbiBBTSBzaXRzIGluIGEgc2Nob29sDQorbGlicmFyeSBhbmQgdGhlIGxpYnJhcmlhbiBpcyB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBtb25pdG9yaW5nIHRoZQ0KK3N5c3RlbS4gIFRlYWNoZXJzIGRvIG5vdCBhbHdheXMgdGFrZSBpbnRvIHRoZWlyIHdvcmxkIG5ldyBsaWJyYXJ5DQorcmVzb3VyY2VzIGFib3V0IHdoaWNoIHRoZSBsaWJyYXJpYW4gaXMgZXhjaXRlZC4gIEluZGVlZCwgYXQgdGhlIHNpdGVzDQord2hlcmUgQU0gaGFkIGJlZW4gdXNlZCBtb3N0IGVmZmVjdGl2ZWx5IHdpdGhpbiBhIGxpYnJhcnksIHRoZSBsaWJyYXJpYW4NCit3YXMgcmVxdWlyZWQgdG8gZ28gdG8gc3BlY2lmaWMgdGVhY2hlcnMgYW5kIGluc3RydWN0IHRoZW0gaW4gaXRzIHVzZS4gIEFzDQorYSByZXN1bHQsIHNldmVyYWwgQU0gc2l0ZXMgd2lsbCBoYXZlIGluLXNlcnZpY2Ugc2Vzc2lvbnMgb3ZlciBhIHN1bW1lciwNCitpbiB0aGUgaG9wZSB0aGF0IHBlcmhhcHMsIHdpdGggYSBtb3JlIGluZGl2aWR1YWxpemVkIGxpbmssIHRlYWNoZXJzIHdpbGwNCitiZSBtb3JlIGxpa2VseSB0byB1c2UgdGhlIHJlc291cmNlLg0KKw0KK0EgcmVsYXRlZCBpc3N1ZSBpbiB0aGUgc2Nob29sIGNvbnRleHQgY29uY2VybmVkIHRoZSBudW1iZXIgb2YNCit3b3Jrc3RhdGlvbnMgYXZhaWxhYmxlIGF0IGFueSBvbmUgbG9jYXRpb24uICBDZW50cmFsaXphdGlvbiBvZiBlcXVpcG1lbnQNCithdCB0aGUgZGlzdHJpY3QgbGV2ZWwsIHdpdGggdGVhY2hlcnMgaW52aXRlZCB0byBkb3dubG9hZCB0aGluZ3MgYW5kIHdhbGsNCithd2F5IHdpdGggdGhlbSwgcHJvdmVkIHVuc3VjY2Vzc2Z1bCBiZWNhdXNlIHRoZSBob3VycyB0aGVzZSBvZmZpY2VzIHdlcmUNCitvcGVuIHdlcmUgYWxzbyBzY2hvb2wgaG91cnMuDQorDQorQW5vdGhlciBpc3N1ZSB3YXMgaGFyZHdhcmUuICBBcyBWRUNDSUEgb2JzZXJ2ZWQsIGEgcmFuZ2Ugb2Ygc2l0ZXMgZXhpc3RzLA0KK3NvbWUgdGVjaG5vbG9naWNhbGx5IGFkdmFuY2VkIGFuZCBvdGhlcnMgZXNzZW50aWFsbHkgYWNxdWlyaW5nIHRoZWlyDQorZmlyc3QgY29tcHV0ZXIgZm9yIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgdXNpbmcgaXQgaW4gY29uanVuY3Rpb24gd2l0aA0KK0FNJ3MgdGVzdGluZy4gIFVzZXJzIGF0IHRlY2hub2xvZ2ljYWxseSBzb3BoaXN0aWNhdGVkIHNpdGVzIHdhbnQgZXZlbg0KK21vcmUgc29waGlzdGljYXRlZCBoYXJkd2FyZSwgc28gdGhhdCB0aGV5IGNhbiBwZXJmb3JtIGV2ZW4gbW9yZQ0KK3NvcGhpc3RpY2F0ZWQgdGFza3Mgd2l0aCB0aGUgbWF0ZXJpYWxzIGluIEFNLiAgQnV0IG9uY2UgdGhleSBhY3F1aXJlIGENCituZXdlciBwaWVjZSBvZiBoYXJkd2FyZSwgdGhleSBtdXN0IGxlYXJuIGhvdyB0byB1c2UgdGhhdCBhbHNvOyBhdCBhbg0KK3Vuc29waGlzdGljYXRlZCBzaXRlIGl0IHRha2VzIGFuIGV4dHJlbWVseSBsb25nIHRpbWUgc2ltcGx5IHRvIGJlY29tZQ0KK2FjY3VzdG9tZWQgdG8gdGhlIGNvbXB1dGVyLCBub3QgdG8gbWVudGlvbiB0aGUgcHJvZ3JhbSBvZmZlcmVkIHdpdGggdGhlDQorY29tcHV0ZXIuICBBbGwgb2YgdGhlc2Ugc21hbGwgaXNzdWVzIHJhaXNlIG9uZSBsYXJnZSBxdWVzdGlvbiwgbmFtZWx5LA0KK2FyZSBzeXN0ZW1zIGxpa2UgQU0gdHJ1bHkgcmV3YXJkaW5nIGluIGEgc2Nob29sIGVudmlyb25tZW50LCBvciBkbyB0aGV5DQorc2ltcGx5IGFjdCBhcyBpbm5vdmF0aXZlIHRveXMgdGhhdCBkbyBsaXR0bGUgbW9yZSB0aGFuIHNwYXJrIGludGVyZXN0Pw0KKw0KK0ZSRUVNQU4gY29udGVuZGVkIHRoYXQgdGhlIGV2YWx1YXRpb24gcHJvamVjdCBoYXMgcmV2ZWFsZWQgc2V2ZXJhbCBzdHJlbmd0aHMNCit0aGF0IHdlcmUgZ2FpbmVkIHRocm91Z2ggdGhlIHVzZSBvZiBhcmNoaXZhbCByZXNvdXJjZXMgaW4gc2Nob29scywgaW5jbHVkaW5nOg0KKw0KKyAgICAgKiBQc3ljaGljIHJld2FyZHMgZnJvbSB1c2luZyBBTSBhcyBhIHZhc3QsIHJpY2ggZGF0YWJhc2UsIHdpdGgNCisgICAgIHRlYWNoZXJzIGFzc2lnbmluZyB2YXJpb3VzIHByb2plY3RzIHRvIHN0dWRlbnRzLS1vcmFsIHByZXNlbnRhdGlvbnMsDQorICAgICB3cml0dGVuIHJlcG9ydHMsIGEgZG9jdW1lbnRhcnksIGEgdHVybi1vZi10aGUtY2VudHVyeSBuZXdzcGFwZXItLQ0KKyAgICAgcHJvamVjdHMgdGhhdCBzdGFydCB3aXRoIHRoZSBtYXRlcmlhbHMgaW4gQU0gYnV0IGFyZSBjb21wbGV0ZWQgdXNpbmcNCisgICAgIG90aGVyIHJlc291cmNlczsgQU0gdGh1cyBpcyB1c2VkIGFzIGEgcmVzZWFyY2ggdG9vbCBpbiBjb25qdW5jdGlvbg0KKyAgICAgd2l0aCBvdGhlciBlbGVjdHJvbmljIHJlc291cmNlcywgYXMgd2VsbCBhcyB3aXRoIGJvb2tzIGFuZCBpdGVtcyBpbg0KKyAgICAgdGhlIGxpYnJhcnkgd2hlcmUgdGhlIHN5c3RlbSBpcyBzZXQgdXAuDQorDQorICAgICAqIFN0dWRlbnRzIGFyZSBhY3F1aXJpbmcgY29tcHV0ZXIgbGl0ZXJhY3kgaW4gYSBodW1hbml0aWVzIGNvbnRleHQuDQorDQorICAgICAqIFRoaXMgc29ydCBvZiBzeXN0ZW0gaXMgb3ZlcmNvbWluZyB0aGUgaXNvbGF0aW9uIGJldHdlZW4gZGlzY2lwbGluZXMNCisgICAgIHRoYXQgb2Z0ZW4gZXhpc3RzIGluIHNjaG9vbHMuICBGb3IgZXhhbXBsZSwgbWFueSBFbmdsaXNoIHRlYWNoZXJzIGFyZQ0KKyAgICAgcmVxdWlyaW5nIHRoZWlyIHN0dWRlbnRzIHRvIHdyaXRlIHBhcGVycyBvbiBoaXN0b3JpY2FsIHRvcGljcw0KKyAgICAgcmVwcmVzZW50ZWQgaW4gQU0uICBOdW1lcm91cyB0ZWFjaGVycyBoYXZlIHJlcG9ydGVkIHRoYXQgdGhlaXINCisgICAgIHN0dWRlbnRzIGFyZSBsZWFybmluZyBjcml0aWNhbCB0aGlua2luZyBza2lsbHMgdXNpbmcgdGhlIHN5c3RlbS4NCisNCisgICAgICogT24gYSBicm9hZGVyIGxldmVsLCBBTSBpcyBpbnRyb2R1Y2luZyBwcmltYXJ5IG1hdGVyaWFscywgbm90IG9ubHkNCisgICAgIHRvIHN0dWRlbnRzIGJ1dCBhbHNvIHRvIHRlYWNoZXJzLCBpbiBhbiBlbnZpcm9ubWVudCB3aGVyZSBvZnRlbg0KKyAgICAgc2ltcGx5IG5vbmUgZXhpc3QtLWFuIGV4Y2l0aW5nIHRoaW5nIGZvciB0aGUgc3R1ZGVudHMgYmVjYXVzZSBpdA0KKyAgICAgaGVscHMgdGhlbSBsZWFybiB0byBjb25kdWN0IHJlc2VhcmNoLCB0byBpbnRlcnByZXQsIGFuZCB0byBkcmF3DQorICAgICB0aGVpciBvd24gY29uY2x1c2lvbnMuICBJbiBsZWFybmluZyB0byBjb25kdWN0IHJlc2VhcmNoIGFuZCB3aGF0IGl0DQorICAgICBtZWFucywgc3R1ZGVudHMgYXJlIG1vdGl2YXRlZCB0byBzZWVrIGtub3dsZWRnZS4gIFRoYXQgcmVsYXRlcyB0bw0KKyAgICAgYW5vdGhlciBwb3NpdGl2ZSBvdXRjb21lLS1hIGhpZ2ggbGV2ZWwgb2YgcGVyc29uYWwgaW52b2x2ZW1lbnQgb2YNCisgICAgIHN0dWRlbnRzIHdpdGggdGhlIG1hdGVyaWFscyBpbiB0aGlzIHN5c3RlbSBhbmQgZ3JlYXRlciBtb3RpdmF0aW9uIHRvDQorICAgICBjb25kdWN0IHRoZWlyIG93biByZXNlYXJjaCBhbmQgZHJhdyB0aGVpciBvd24gY29uY2x1c2lvbnMuDQorDQorICAgICAqIFBlcmhhcHMgdGhlIG1vc3QgaXJvbmljIHN0cmVuZ3RoIG9mIHRoZXNlIGtpbmRzIG9mIGFyY2hpdmFsDQorICAgICBlbGVjdHJvbmljIHJlc291cmNlcyBpcyB0aGF0IG1hbnkgb2YgdGhlIHRlYWNoZXJzIEFNIGludGVydmlld2VkDQorICAgICB3ZXJlIGRlc3BlcmF0ZSwgaXQgaXMgbm8gZXhhZ2dlcmF0aW9uIHRvIHNheSwgbm90IG9ubHkgZm9yIHByaW1hcnkNCisgICAgIG1hdGVyaWFscyBidXQgZm9yIHVuc3RydWN0dXJlZCBwcmltYXJ5IG1hdGVyaWFscy4gIFRoZXNlIHdvdWxkLCB0aGV5DQorICAgICB0aG91Z2h0LCBmb3N0ZXIgcGVyc29uYWxseSBtb3RpdmF0ZWQgcmVzZWFyY2gsIGV4cGxvcmF0aW9uLCBhbmQNCisgICAgIGV4Y2l0ZW1lbnQgaW4gdGhlaXIgc3R1ZGVudHMuICBJbmRlZWQsIHRoZXNlIG1hdGVyaWFscyBoYXZlIGRvbmUNCisgICAgIGp1c3QgdGhhdC4gIElyb25pY2FsbHksIGhvd2V2ZXIsIHRoaXMgbGFjayBvZiBzdHJ1Y3R1cmUgcHJvZHVjZXMNCisgICAgIHNvbWUgb2YgdGhlIGNvbmZ1c2lvbiB0byB3aGljaCB0aGUgbmV3bmVzcyBvZiB0aGVzZSBraW5kcyBvZg0KKyAgICAgcmVzb3VyY2VzIG1heSBhbHNvIGNvbnRyaWJ1dGUuICBUaGUga2V5IHRvIGVmZmVjdGl2ZSB1c2Ugb2YgYXJjaGl2YWwNCisgICAgIHByb2R1Y3RzIGluIGEgc2Nob29sIGVudmlyb25tZW50IGlzIGEgY2xlYXIsIGVmZmVjdGl2ZSBpbnRyb2R1Y3Rpb24NCisgICAgIHRvIHRoZSBzeXN0ZW0gYW5kIHRvIHdoYXQgaXQgY29udGFpbnMuIA0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogTm90aGluZyBrbm93biwgcXVhbnRpdGF0aXZlbHksIGFib3V0IHRoZSBudW1iZXIgb2YNCitodW1hbml0aWVzIHNjaG9sYXJzIHdobyBtdXN0IHNlZSB0aGUgb3JpZ2luYWwgdmVyc3VzIHRob3NlIHdobyB3b3VsZA0KK3NldHRsZSBmb3IgYW4gZWRpdGVkIHRyYW5zY3JpcHQsIG9yIGFib3V0IHRoZSB3YXlzIGluIHdoaWNoIGh1bWFuaXRpZXMNCitzY2hvbGFycyBhcmUgdXNpbmcgaW5mb3JtYXRpb24gdGVjaG5vbG9neSAqIEZpcm0gY29uY2x1c2lvbnMgY29uY2VybmluZw0KK3RoZSBtYW5uZXIgYW5kIGV4dGVudCBvZiB0aGUgdXNlIG9mIHN1cHBvcnRpbmcgbWF0ZXJpYWxzIGluIHByaW50DQorcHJvdmlkZWQgYnkgQU0gdG8gYXdhaXQgY29tcGxldGlvbiBvZiBldmFsdWF0aXZlIHN0dWR5ICogQSBsaXN0ZW5lcidzDQorcmVmbGVjdGlvbnMgb24gYWRkaXRpb25hbCBhcHBsaWNhdGlvbnMgb2YgZWxlY3Ryb25pYyB0ZXh0cyAqIFJvbGUgb2YNCitlbGVjdHJvbmljIHJlc291cmNlcyBpbiB0ZWFjaGluZyBlbGVtZW50YXJ5IHJlc2VhcmNoIHNraWxscyB0byBzdHVkZW50cyAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0R1cmluZyB0aGUgZGlzY3Vzc2lvbiB0aGF0IGZvbGxvd2VkIHRoZSBwcmVzZW50YXRpb25zIGJ5IE1JQ0hFTFNPTiwNCitWRUNDSUEsIGFuZCBGUkVFTUFOLCBhZGRpdGlvbmFsIHBvaW50cyBlbWVyZ2VkLg0KKw0KK0xFU0sgYXNrZWQgaWYgTUlDSEVMU09OIGNvdWxkIGdpdmUgYW55IHF1YW50aXRhdGl2ZSBlc3RpbWF0ZSBvZiB0aGUNCitudW1iZXIgb2YgaHVtYW5pdGllcyBzY2hvbGFycyB3aG8gbXVzdCBzZWUgb3Igd2FudCB0byBzZWUgdGhlIG9yaWdpbmFsLA0KK29yIHRoZSBiZXN0IHBvc3NpYmxlIHZlcnNpb24gb2YgdGhlIG1hdGVyaWFsLCB2ZXJzdXMgdGhvc2Ugd2hvIHR5cGljYWxseQ0KK3dvdWxkIHNldHRsZSBmb3IgYW4gZWRpdGVkIHRyYW5zY3JpcHQuICBXaGlsZSB1bmFibGUgdG8gcHJvdmlkZSBhIGZpZ3VyZSwNCitzaGUgb2ZmZXJlZCBoZXIgaW1wcmVzc2lvbnMgYXMgYW4gYXJjaGl2aXN0IHdobyBoYXMgZG9uZSBzb21lIHJlZmVyZW5jZQ0KK3dvcmsgYW5kIGhhcyBkaXNjdXNzZWQgdGhpcyBpc3N1ZSB3aXRoIG90aGVyIGFyY2hpdmlzdHMgd2hvIHBlcmZvcm0NCityZWZlcmVuY2UsIHRoYXQgdGhvc2Ugd2hvIHVzZSBhcmNoaXZlcyBhbmQgdGhvc2Ugd2hvIHVzZSBwcmltYXJ5IHNvdXJjZXMNCitmb3Igd2hhdCB3b3VsZCBiZSBjb25zaWRlcmVkIHZlcnkgaGlnaC1sZXZlbCBzY2hvbGFybHkgcmVzZWFyY2gsIGFzDQorb3Bwb3NlZCB0bywgc2F5LCB1bmRlcmdyYWR1YXRlIHBhcGVycywgd2VyZSBmZXcgaW4gbnVtYmVyLCBlc3BlY2lhbGx5DQorZ2l2ZW4gdGhlIHB1YmxpYyBpbnRlcmVzdCBpbiB1c2luZyBwcmltYXJ5IHNvdXJjZXMgdG8gY29uZHVjdA0KK2dlbmVhbG9naWNhbCBvciBhdm9jYXRpb25hbCByZXNlYXJjaCBhbmQgdGhlIGtpbmQgb2YgcHJvZmVzc2lvbmFsDQorcmVzZWFyY2ggZG9uZSBieSBwZW9wbGUgaW4gcHJpdmF0ZSBpbmR1c3RyeSBvciB0aGUgZmVkZXJhbCBnb3Zlcm5tZW50LiANCitNb3JlIGltcG9ydGFudCBpbiBNSUNIRUxTT04ncyB2aWV3IHdhcyB0aGF0LCBxdWFudGl0YXRpdmVseSwgbm90aGluZyBpcw0KK2tub3duIGFib3V0IHRoZSB3YXlzIGluIHdoaWNoLCBmb3IgZXhhbXBsZSwgaHVtYW5pdGllcyBzY2hvbGFycyBhcmUgdXNpbmcNCitpbmZvcm1hdGlvbiB0ZWNobm9sb2d5LiAgTm8gc3R1ZGllcyBleGlzdCB0byBvZmZlciBndWlkYW5jZSBpbiBjcmVhdGluZw0KK3N0cmF0ZWdpZXMuICBUaGUgbW9zdCByZWNlbnQgc3R1ZHkgd2FzIGNvbmR1Y3RlZCBpbiAxOTg1IGJ5IHRoZSBBbWVyaWNhbg0KK0NvdW5jaWwgb2YgTGVhcm5lZCBTb2NpZXRpZXMgKEFDTFMpLCBhbmQgd2hhdCBpdCBzaG93ZWQgd2FzIHRoYXQgNTANCitwZXJjZW50IG9mIGh1bWFuaXRpZXMgc2Nob2xhcnMgYXQgdGhhdCB0aW1lIHdlcmUgdXNpbmcgY29tcHV0ZXJzLiAgVGhhdA0KK2NvbnN0aXR1dGVzIHRoZSBleHRlbnQgb2Ygb3VyIGtub3dsZWRnZS4NCisNCitDb25jZXJuaW5nIEFNJ3Mgc3RyYXRlZ3kgZm9yIG9yaWVudGluZyBwZW9wbGUgdG93YXJkIHRoZSBzY29wZSBvZg0KK2VsZWN0cm9uaWMgcmVzb3VyY2VzLCBGUkVFTUFOIGNvdWxkIG9mZmVyIG5vIGhhcmQgY29uY2x1c2lvbnMgYXQgdGhpcw0KK3BvaW50LCBiZWNhdXNlIHNoZSBhbmQgaGVyIGNvbGxlYWd1ZXMgd2VyZSBzdGlsbCB3YWl0aW5nIHRvIHNlZSwNCitwYXJ0aWN1bGFybHkgaW4gdGhlIHNjaG9vbHMsIHdoYXQgaGFzIGJlZW4gbWFkZSBvZiB0aGVpciBlZmZvcnRzLiAgV2l0aGluDQordGhlIHN5c3RlbSwgaG93ZXZlciwgQU0gaGFzIHByb3ZpZGVkIHdoYXQgYXJlIGNhbGxlZCBlbGVjdHJvbmljIGV4aGliaXRzLQ0KKy1zdWNoIGFzIGludHJvZHVjdGlvbnMgdG8gdGltZSBwZXJpb2RzIGFuZCBtYXRlcmlhbHMtLWFuZCB0aGVzZSBhcmUNCitpbnRlbmRlZCB0byBvZmZlciBhIHN0dWRlbnQgdXNlciBhIHNlbnNlIG9mIHdoYXQgYSBicm9hZHNpZGUgaXMgIGFuZCB3aGF0DQoraXQgbWlnaHQgdGVsbCBoZXIgb3IgaGltLiAgQnV0IEZSRUVNQU4gY29uY2VkZWQgdGhhdCB0aGUgcHJvamVjdCBzdGFmZg0KK3dvdWxkIGhhdmUgdG8gdGFsayB3aXRoIHN0dWRlbnRzIG5leHQgeWVhciwgYWZ0ZXIgdGVhY2hlcnMgaGF2ZSBoYWQgYQ0KK3N1bW1lciB0byB1c2UgdGhlIG1hdGVyaWFscywgYW5kIGF0dGVtcHQgdG8gZGlzY292ZXIgd2hhdCB0aGUgc3R1ZGVudHMNCit3ZXJlIGxlYXJuaW5nIGZyb20gdGhlIG1hdGVyaWFscy4gIEluIGFkZGl0aW9uLCBGUkVFTUFOIGRlc2NyaWJlZA0KK3N1cHBvcnRpbmcgbWF0ZXJpYWxzIGluIHByaW50IHByb3ZpZGVkIGJ5IEFNIGF0IHRoZSByZXF1ZXN0IG9mIGxvY2FsDQordGVhY2hlcnMgZHVyaW5nIGEgbWVldGluZyBoZWxkIGF0IExDLiAgVGhlc2UgaW5jbHVkZWQgdGltZSBsaW5lcywNCitiaWJsaW9ncmFwaGllcywgYW5kIG90aGVyIG1hdGVyaWFscyB0aGF0IGNvdWxkIGJlIHJlcHJvZHVjZWQgb24gYQ0KK3Bob3RvY29waWVyIGluIGEgY2xhc3Nyb29tLiAgVGVhY2hlcnMgY291bGQgd2FsayBhd2F5IHdpdGggYW5kIHVzZSB0aGVzZSwNCithbmQgaW4gdGhpcyB3YXkgZ2FpbiBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb250ZW50cy4gIEJ1dCBhZ2FpbiwNCityZWFjaGluZyBmaXJtIGNvbmNsdXNpb25zIGNvbmNlcm5pbmcgdGhlIG1hbm5lciBhbmQgZXh0ZW50IG9mIHRoZWlyIHVzZQ0KK3dvdWxkIGhhdmUgdG8gd2FpdCB1bnRpbCBuZXh0IHllYXIuDQorDQorQXMgdG8gdGhlIGNoYW5nZXMgc2hlIHNhdyBvY2N1cnJpbmcgYXQgdGhlIE5hdGlvbmFsIEFyY2hpdmVzIGFuZCBSZWNvcmRzDQorQWRtaW5pc3RyYXRpb24gKE5BUkEpIGFzIGEgcmVzdWx0IG9mIHRoZSBpbmNyZWFzaW5nIGVtcGhhc2lzIG9uDQordGVjaG5vbG9neSBpbiBzY2hvbGFybHkgcmVzZWFyY2gsIE1JQ0hFTFNPTiBzdGF0ZWQgdGhhdCBOQVJBIGF0IHRoaXMNCitwb2ludCB3YXMgYWJzb3JiaW5nIHRoZSByZXBvcnQgYnkgaGVyIGFuZCBKZWZmIFJvdGhlbmJlcmcgYWRkcmVzc2luZw0KK3N0cmF0ZWdpZXMgZm9yIHRoZSBhcmNoaXZhbCBwcm9mZXNzaW9uIGluIGdlbmVyYWwsIGFsdGhvdWdoIG5vdCBmb3IgdGhlDQorTmF0aW9uYWwgQXJjaGl2ZXMgc3BlY2lmaWNhbGx5LiAgTkFSQSBpcyBqdXN0IGJlZ2lubmluZyB0byBlc3RhYmxpc2ggaXRzDQorcm9sZSBhbmQgd2hhdCBpdCBjYW4gZG8uICBJbiB0ZXJtcyBvZiBjaGFuZ2VzIGFuZCBpbml0aWF0aXZlcyB0aGF0IE5BUkENCitjYW4gdGFrZSwgbm8gY2xlYXIgcmVzcG9uc2UgY291bGQgYmUgZ2l2ZW4gYXQgdGhpcyB0aW1lLg0KKw0KK0dSRUVORklFTEQgcmVtYXJrZWQgdHdvIHRyZW5kcyBtZW50aW9uZWQgaW4gdGhlIHNlc3Npb24uICBSZWZsZWN0aW5nIG9uDQorREFMWSdzIG9wZW5pbmcgY29tbWVudHMgb24gaG93IGhlIGNvdWxkIGhhdmUgdXNlZCBhIExhdGluIGNvbGxlY3Rpb24gb2YNCit0ZXh0IGluIGFuIGVsZWN0cm9uaWMgZm9ybSwgaGUgc2FpZCB0aGF0IGF0IGZpcnN0IGhlIHRob3VnaHQgbW9zdCBzY2hvbGFycw0KK3dvdWxkIGJlIHVud2lsbGluZyB0byBkbyB0aGF0LiAgQnV0IGFzIGhlIHRob3VnaHQgb2YgdGhhdCBpbiB0ZXJtcyBvZiB0aGUNCitvcmlnaW5hbCBtZWFuaW5nIG9mIHJlc2VhcmNoLS10aGF0IGlzLCBoYXZpbmcgYWxyZWFkeSBtYXN0ZXJlZCB0aGVzZSB0ZXh0cywNCityZXNlYXJjaGluZyB0aGVtIGZvciBjcml0aWNhbCBhbmQgY29tcGFyYXRpdmUgcHVycG9zZXMtLWZvciB0aGUgZmlyc3QgdGltZSwNCit0aGUgZWxlY3Ryb25pYyBmb3JtYXQgbWFkZSBhIGxvdCBvZiBzZW5zZS4gIEdSRUVORklFTEQgY291bGQgZW52aXNpb24NCitncm93aW5nIG51bWJlcnMgb2Ygc2Nob2xhcnMgbGVhcm5pbmcgdGhlIG5ldyB0ZWNobm9sb2dpZXMgZm9yIHRoYXQgdmVyeQ0KK2FzcGVjdCBvZiB0aGVpciBzY2hvbGFyc2hpcCBhbmQgZm9yIGNvbnZlbmllbmNlJ3Mgc2FrZS4NCisNCitMaXN0ZW5pbmcgdG8gVkVDQ0lBIGFuZCBGUkVFTUFOLCBHUkVFTkZJRUxEIHRob3VnaHQgb2YgYW4gYWRkaXRpb25hbA0KK2FwcGxpY2F0aW9uIG9mIGVsZWN0cm9uaWMgdGV4dHMuICBIZSByZWFsaXplZCB0aGF0IEFNIGNvdWxkIGJlIHVzZWQgYXMgYQ0KK2d1aWRlIHRvIGxlYWQgc29tZW9uZSB0byBvcmlnaW5hbCBzb3VyY2VzLiAgU3R1ZGVudHMgY2Fubm90IGJlIGV4cGVjdGVkDQordG8gaGF2ZSBtYXN0ZXJlZCB0aGVzZSBzb3VyY2VzLCB0aGluZ3MgdGhleSBoYXZlIG5ldmVyIGtub3duIGFib3V0DQorYmVmb3JlLiAgVGh1cywgQU0gaXMgbGVhZGluZyB0aGVtLCBpbiB0aGVvcnksIHRvIGEgdmFzdCBib2R5IG9mDQoraW5mb3JtYXRpb24gYW5kIGdpdmluZyB0aGVtIGEgc3VwZXJmaWNpYWwgb3ZlcnZpZXcgb2YgaXQsIGVuYWJsaW5nIHRoZW0NCit0byBzZWxlY3QgcGFydHMgb2YgaXQuICBHUkVFTkZJRUxEIGFza2VkIGlmIGFueSBldmlkZW5jZSBleGlzdHMgdGhhdCB0aGlzDQorcmVzb3VyY2Ugd2lsbCBpbmRlZWQgdGVhY2ggdGhlIG5ldyB1c2VyLCB0aGUgSy0xMiBzdHVkZW50cywgaG93IHRvIGRvDQorcmVzZWFyY2guICBTY2hvbGFycyBhbHJlYWR5IGtub3cgaG93IHRvIGRvIHJlc2VhcmNoIGFuZCBhcmUgYXBwbHlpbmcNCit0aGVzZSBuZXcgdG9vbHMuICBCdXQgaGUgd29uZGVyZWQgd2h5IHN0dWRlbnRzIHdvdWxkIGdvIGJleW9uZCBwaWNraW5nDQorb3V0IHRoaW5ncyB0aGF0IHdlcmUgbW9zdCBleGNpdGluZyB0byB0aGVtLg0KKw0KK0ZSRUVNQU4gY29uY2VkZWQgdGhlIGNvcnJlY3RuZXNzIG9mIEdSRUVORklFTEQncyBvYnNlcnZhdGlvbiBhcyBhcHBsaWVkDQordG8gYSBzY2hvb2wgZW52aXJvbm1lbnQuICBUaGUgcmlzayBpcyB0aGF0IGEgc3R1ZGVudCB3b3VsZCBzaXQgZG93biBhdCBhDQorc3lzdGVtLCBwbGF5IHdpdGggaXQsIGZpbmQgc29tZSB0aGluZ3Mgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHdhbGsgYXdheS4gDQorQnV0IGluIHRoZSByZWxhdGl2ZWx5IGNvbnRyb2xsZWQgc2l0dWF0aW9uIG9mIGEgc2Nob29sIGxpYnJhcnksIG11Y2ggd2lsbA0KK2RlcGVuZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zIGEgdGVhY2hlciBvciBhIGxpYnJhcmlhbiBnaXZlcyBhIHN0dWRlbnQuICBTaGUNCit2aWV3ZWQgdGhlIHNpdHVhdGlvbiBub3QgYXMgb25lIG9mIGZpbmUtdHVuaW5nIHJlc2VhcmNoIHNraWxscyBidXQgb2YNCitpbnZvbHZpbmcgc3R1ZGVudHMgYXQgYSBwZXJzb25hbCBsZXZlbCBpbiB1bmRlcnN0YW5kaW5nIGFuZCByZXNlYXJjaGluZw0KK3RoaW5ncy4gIEdpdmVuIHRoZSBndWlkYW5jZSBvbmUgY2FuIHJlY2VpdmUgYXQgc2Nob29sLCBpdCB0aGVuIGJlY29tZXMNCitwb3NzaWJsZSB0byB0ZWFjaCBlbGVtZW50YXJ5IHJlc2VhcmNoIHNraWxscyB0byBzdHVkZW50cywgd2hpY2ggaW4gZmFjdA0KK29uZSBwYXJ0aWN1bGFyIGxpYnJhcmlhbiBzYWlkIHNoZSB3YXMgdGVhY2hpbmcgaGVyIGZpZnRoIGdyYWRlcnMuIA0KK0ZSRUVNQU4gY29uY2x1ZGVkIHRoYXQgaW50cm9kdWNpbmcgdGhlIGlkZWEgb2YgZm9sbG93aW5nIG9uZSdzIG93biBwYXRoDQorb2YgaW5xdWlyeSwgd2hpY2ggaXMgZXNzZW50aWFsbHkgd2hhdCByZXNlYXJjaCBlbnRhaWxzLCBpbnZvbHZlcyBtb3JlDQordGhhbiB0ZWFjaGluZyBzcGVjaWZpYyBza2lsbHMuICBUbyB0aGVzZSBjb21tZW50cyBWRUNDSUEgYWRkZWQgdGhlDQorb2JzZXJ2YXRpb24gdGhhdCB0aGUgaW5kaXZpZHVhbCB0ZWFjaGVyIGFuZCB0aGUgdXNlIG9mIGEgY3JlYXRpdmUNCityZXNvdXJjZSwgcmF0aGVyIHRoYW4gQU0gaXRzZWxmLCBzZWVtZWQgdG8gbWFrZSB0aGUga2V5IGRpZmZlcmVuY2UuDQorU29tZSBzY2hvb2xzIGFuZCBzb21lIHRlYWNoZXJzIGFyZSBtYWtpbmcgZXhjZWxsZW50IHVzZSBvZiB0aGUgbmF0dXJlDQorb2YgY3JpdGljYWwgdGhpbmtpbmcgYW5kIHRlYWNoaW5nIHNraWxscywgc2hlIHNhaWQuDQorDQorQ29uY3VycmluZyB3aXRoIHRoZXNlIHJlbWFya3MsIERBTFkgY2xvc2VkIHRoZSBzZXNzaW9uIHdpdGggdGhlIHRob3VnaHQgdGhhdA0KK3RoZSBtb3JlIHRoYXQgcHJvZHVjZXJzIHByb2R1Y2VkIGZvciB0ZWFjaGVycyBhbmQgZm9yIHNjaG9sYXJzIHRvIHVzZSB3aXRoDQordGhlaXIgc3R1ZGVudHMsIHRoZSBtb3JlIHN1Y2Nlc3NmdWwgdGhlaXIgZWxlY3Ryb25pYyBwcm9kdWN0cyB3b3VsZCBwcm92ZS4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCitTRVNTSU9OIElJLiAgU0hPVyBBTkQgVEVMTA0KKw0KK0phY3F1ZWxpbmUgSEVTUywgZGlyZWN0b3IsIE5hdGlvbmFsIERlbW9uc3RyYXRpb24gTGFib3JhdG9yeSwgc2VydmVkIGFzDQorbW9kZXJhdG9yIG9mIHRoZSAic2hvdy1hbmQtdGVsbCIgc2Vzc2lvbi4gIFNoZSBub3RlZCB0aGF0IGENCitxdWVzdGlvbi1hbmQtYW5zd2VyIHBlcmlvZCB3b3VsZCBmb2xsb3cgZWFjaCBwcmVzZW50YXRpb24uDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK01ZTE9OQVMgKiBPdmVydmlldyBhbmQgY29udGVudCBvZiBQZXJzZXVzICogUGVyc2V1cycgcHJpbWFyeSBtYXRlcmlhbHMNCitleGlzdCBpbiBhIHN5c3RlbS1pbmRlcGVuZGVudCwgYXJjaGl2YWwgZm9ybSAqIEEgY29uY2Vzc2lvbiAqIFRleHR1YWwNCithc3BlY3RzIG9mIFBlcnNldXMgKiBUb29scyB0byB1c2Ugd2l0aCB0aGUgR3JlZWsgdGV4dCAqIFByZXBhcmVkIGluZGljZXMNCithbmQgZnVsbC10ZXh0IHNlYXJjaGVzIGluIFBlcnNldXMgKiBFbmdsaXNoLUdyZWVrIHdvcmQgc2VhcmNoIGxlYWRzIHRvDQorY2xvc2Ugc3R1ZHkgb2Ygd29yZHMgYW5kIGNvbmNlcHRzICogTmF2aWdhdGluZyBQZXJzZXVzIGJ5IHRyYWNpbmcgZG93bg0KK2luZGljZXMgKiBVc2luZyB0aGUgaWNvbm9ncmFwaHkgdG8gcGVyZm9ybSByZXNlYXJjaCAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0VsbGkgTVlMT05BUywgbWFuYWdpbmcgZWRpdG9yLCBQZXJzZXVzIFByb2plY3QsIEhhcnZhcmQgVW5pdmVyc2l0eSwgZmlyc3QNCitnYXZlIGFuIG92ZXJ2aWV3IG9mIFBlcnNldXMsIGEgbGFyZ2UsIGNvbGxhYm9yYXRpdmUgZWZmb3J0IGJhc2VkIGF0DQorSGFydmFyZCBVbml2ZXJzaXR5IGJ1dCB3aXRoIGNvbnRyaWJ1dG9ycyBhbmQgY29sbGFib3JhdG9ycyBsb2NhdGVkIGF0DQorbnVtZXJvdXMgdW5pdmVyc2l0aWVzIGFuZCBjb2xsZWdlcyBpbiB0aGUgVW5pdGVkIFN0YXRlcyAoZS5nLiwgQm93ZG9pbiwNCitNYXJ5bGFuZCwgUG9tb25hLCBDaGljYWdvLCBWaXJnaW5pYSkuICBGdW5kZWQgcHJpbWFyaWx5IGJ5IHRoZQ0KK0FubmVuYmVyZy9DUEIgUHJvamVjdCwgd2l0aCBhZGRpdGlvbmFsIGZ1bmRpbmcgZnJvbSBBcHBsZSwgSGFydmFyZCwgYW5kDQordGhlIFBhY2thcmQgSHVtYW5pdGllcyBJbnN0aXR1dGUsIGFtb25nIG90aGVycywgUGVyc2V1cyBpcyBhIG11bHRpbWVkaWEsDQoraHlwZXJ0ZXh0dWFsIGRhdGFiYXNlIGZvciB0ZWFjaGluZyBhbmQgcmVzZWFyY2ggb24gY2xhc3NpY2FsIEdyZWVrDQorY2l2aWxpemF0aW9uLCB3aGljaCB3YXMgcmVsZWFzZWQgaW4gRmVicnVhcnkgMTk5MiBpbiB2ZXJzaW9uIDEuMCBhbmQNCitkaXN0cmlidXRlZCBieSBZYWxlIFVuaXZlcnNpdHkgUHJlc3MuDQorDQorQ29uc2lzdGluZyBlbnRpcmVseSBvZiBwcmltYXJ5IG1hdGVyaWFscywgUGVyc2V1cyBpbmNsdWRlcyBhbmNpZW50IEdyZWVrDQordGV4dHMgYW5kIHRyYW5zbGF0aW9ucyBvZiB0aG9zZSB0ZXh0czsgY2F0YWxvZyBlbnRyaWVzLS10aGF0IGlzLCBtdXNldW0NCitjYXRhbG9nIGVudHJpZXMsIG5vdCBsaWJyYXJ5IGNhdGFsb2cgZW50cmllcy0tb24gdmFzZXMsIHNpdGVzLCBjb2lucywNCitzY3VscHR1cmUsIGFuZCBhcmNoYWVvbG9naWNhbCBvYmplY3RzOyBtYXBzOyBhbmQgYSBkaWN0aW9uYXJ5LCBhbW9uZw0KK290aGVyIHNvdXJjZXMuICBUaGUgbnVtYmVyIG9mIG9iamVjdHMgYW5kIHRoZSBvYmplY3RzIGZvciB3aGljaCBjYXRhbG9nDQorZW50cmllcyBleGlzdCBhcmUgYWNjb21wYW5pZWQgYnkgdGhvdXNhbmRzIG9mIGNvbG9yIGltYWdlcywgd2hpY2gNCitjb25zdGl0dXRlIGEgbWFqb3IgZmVhdHVyZSBvZiB0aGUgZGF0YWJhc2UuICBQZXJzZXVzIGNvbnRhaW5zDQorYXBwcm94aW1hdGVseSAzMCBtZWdhYnl0ZXMgb2YgdGV4dCwgYW4gYW1vdW50IHRoYXQgd2lsbCBkb3VibGUgaW4NCitzdWJzZXF1ZW50IHZlcnNpb25zLiAgSW4gYWRkaXRpb24gdG8gdGhlc2UgcHJpbWFyeSBtYXRlcmlhbHMsIHRoZSBQZXJzZXVzDQorUHJvamVjdCBoYXMgYmVlbiBidWlsZGluZyB0b29scyBmb3IgdXNpbmcgdGhlbSwgbWFraW5nIGFjY2VzcyBhbmQNCituYXZpZ2F0aW9uIGVhc2llciwgdGhlIGdvYWwgYmVpbmcgdG8gYnVpbGQgcGFydCBvZiB0aGUgZWxlY3Ryb25pYw0KK2Vudmlyb25tZW50IGRpc2N1c3NlZCBlYXJsaWVyIGluIHRoZSBtb3JuaW5nIGluIHdoaWNoIHN0dWRlbnRzIG9yDQorc2Nob2xhcnMgY2FuIHdvcmsgd2l0aCB0aGVpciBzb3VyY2VzLg0KKw0KK1RoZSBkZW1vbnN0cmF0aW9uIG9mIFBlcnNldXMgd2lsbCBzaG93IG9ubHkgYSBmcmFjdGlvbiBvZiB0aGUgcmVhbCB3b3JrDQordGhhdCBoYXMgZ29uZSBpbnRvIGl0LCBiZWNhdXNlIHRoZSBwcm9qZWN0IGhhZCB0byBmYWNlIHRoZSBkaWxlbW1hIG9mDQord2hhdCB0byBlbnRlciB3aGVuIHB1dHRpbmcgc29tZXRoaW5nIGludG8gbWFjaGluZS1yZWFkYWJsZSBmb3JtOiAgc2hvdWxkDQorb25lIGFpbSBmb3IgdmVyeSBoaWdoIHF1YWxpdHkgb3IgbWFrZSBjb25jZXNzaW9ucyBpbiBvcmRlciB0byBnZXQgdGhlDQorbWF0ZXJpYWwgaW4/ICBTaW5jZSBQZXJzZXVzIGRlY2lkZWQgdG8gb3B0IGZvciB2ZXJ5IGhpZ2ggcXVhbGl0eSwgYWxsIG9mDQoraXRzIHByaW1hcnkgbWF0ZXJpYWxzIGV4aXN0IGluIGEgc3lzdGVtLWluZGVwZW5kZW50LS1pbnNvZmFyIGFzIGl0IGlzDQorcG9zc2libGUgdG8gYmUgc3lzdGVtLWluZGVwZW5kZW50LS1hcmNoaXZhbCBmb3JtLiAgRGVjaWRpbmcgd2hhdCB0aGF0DQorYXJjaGl2YWwgZm9ybSB3b3VsZCBiZSBhbmQgYXR0YWluaW5nIGl0IHJlcXVpcmVkIG11Y2ggd29yayBhbmQgdGhvdWdodC4gDQorRm9yIGV4YW1wbGUsIGFsbCB0aGUgdGV4dHMgYXJlIG1hcmtlZCB1cCBpbiBTR01MLCB3aGljaCB3aWxsIGJlIG1hZGUNCitjb21wYXRpYmxlIHdpdGggdGhlIGd1aWRlbGluZXMgb2YgdGhlIFRleHQgRW5jb2RpbmcgSW5pdGlhdGl2ZSAoVEVJKSB3aGVuDQordGhleSBhcmUgaXNzdWVkLg0KKw0KK0RyYXdpbmdzIGFyZSBwb3N0c2NyaXB0IGZpbGVzLCBub3QgbWVldGluZyBpbnRlcm5hdGlvbmFsIHN0YW5kYXJkcywgYnV0DQorYXQgbGVhc3QgZGVzaWduZWQgdG8gZ28gYWNyb3NzIHBsYXRmb3Jtcy4gIEltYWdlcywgb3IgcmF0aGVyIHRoZSByZWFsDQorYXJjaGl2YWwgZm9ybXMsIGNvbnNpc3Qgb2YgdGhlIGJlc3QgYXZhaWxhYmxlIHNsaWRlcywgd2hpY2ggYXJlIGJlaW5nDQorZGlnaXRpemVkLiAgTXVjaCBvZiB0aGUgY2F0YWxvZyBtYXRlcmlhbCBleGlzdHMgaW4gZGF0YWJhc2UgZm9ybS0tYSBmb3JtDQordGhhdCB0aGUgYXZlcmFnZSB1c2VyIGNvdWxkIHVzZSwgbWFuaXB1bGF0ZSwgYW5kIGRpc3BsYXkgb24gYSBwZXJzb25hbA0KK2NvbXB1dGVyLCBidXQgb25seSBhdCBncmVhdCBjb3N0LiAgVGh1cywgdGhpcyBpcyB3aGVyZSB0aGUgY29uY2Vzc2lvbg0KK2NvbWVzIGluOiAgQWxsIG9mIHRoaXMgcmljaCwgd2VsbC1tYXJrZWQtdXAgaW5mb3JtYXRpb24gaXMgc3RyaXBwZWQgb2YNCittdWNoIG9mIGl0cyBjb250ZW50OyB0aGUgaW1hZ2VzIGFyZSBjb252ZXJ0ZWQgaW50byBiaXQtbWFwcyBhbmQgdGhlIHRleHQNCitpbnRvIHNtYWxsIGZvcm1hdHRlZCBjaHVua3MuICBBbGwgdGhpcyBpbmZvcm1hdGlvbiBjYW4gdGhlbiBiZSBpbXBvcnRlZA0KK2ludG8gSHlwZXJDYXJkIGFuZCBydW4gb24gYSBtaWQtcmFuZ2UgTWFjaW50b3NoLCB3aGljaCBpcyB3aGF0IFBlcnNldXMNCit1c2VycyBoYXZlLiAgVGhpcyBmYWN0IGhhcyBtYWRlIGl0IHBvc3NpYmxlIGZvciBQZXJzZXVzIHRvIGF0dGFpbiB3aWRlDQordXNlIGZhaXJseSByYXBpZGx5LiAgV2l0aG91dCB0aG9zZSBhcmNoaXZhbCBmb3JtcyB0aGUgSHlwZXJDYXJkIHZlcnNpb24NCitiZWluZyBkZW1vbnN0cmF0ZWQgY291bGQgbm90IGJlIG1hZGUgZWFzaWx5LCBhbmQgdGhlIHByb2plY3QgY291bGQgbm90DQoraGF2ZSB0aGUgcG90ZW50aWFsIHRvIG1vdmUgdG8gb3RoZXIgZm9ybXMgYW5kIG1hY2hpbmVzIGFuZCBzb2Z0d2FyZSBhcw0KK3RoZXkgYXBwZWFyLCBub25lIG9mIHdoaWNoIGluZm9ybWF0aW9uIGlzIGluIFBlcnNldXMgb24gdGhlIENELg0KKw0KK09mIHRoZSBudW1lcm91cyBtdWx0aW1lZGlhIGFzcGVjdHMgb2YgUGVyc2V1cywgTVlMT05BUyBmb2N1c2VkIG9uIHRoZQ0KK3RleHR1YWwuICBQYXJ0IG9mIHdoYXQgbWFrZXMgUGVyc2V1cyBzdWNoIGEgcGxlYXN1cmUgdG8gdXNlLCBNWUxPTkFTDQorc2FpZCwgaXMgdGhpcyBlZmZvcnQgYXQgc2VhbWxlc3MgaW50ZWdyYXRpb24gYW5kIHRoZSBhYmlsaXR5IHRvIG1vdmUNCithcm91bmQgYm90aCB2aXN1YWwgYW5kIHRleHR1YWwgbWF0ZXJpYWwuICBQZXJzZXVzIGFsc28gbWFkZSB0aGUgZGVjaXNpb24NCitub3QgdG8gYXR0ZW1wdCB0byBpbnRlcnByZXQgaXRzIG1hdGVyaWFsIGFueSBtb3JlIHRoYW4gb25lIGludGVycHJldHMgYnkNCitzZWxlY3RpbmcuICBCdXQsIE1ZTE9OQVMgZW1waGFzaXplZCwgUGVyc2V1cyBpcyBub3QgY291cnNld2FyZTogIE5vDQorc3lsbGFidXMgZXhpc3RzLiAgVGhlcmUgaXMgbm8gZWZmb3J0IHRvIGRlZmluZSBob3cgb25lIHRlYWNoZXMgYSB0b3BpYw0KK3VzaW5nIFBlcnNldXMsIGFsdGhvdWdoIHRoZSBwcm9qZWN0IG1heSBldmVudHVhbGx5IGNvbGxlY3QgcGFwZXJzIGJ5DQorcGVvcGxlIHdobyBoYXZlIHVzZWQgaXQgdG8gdGVhY2guICBSYXRoZXIsIFBlcnNldXMgYWltcyB0byBwcm92aWRlDQorcHJpbWFyeSBtYXRlcmlhbCBpbiBhIGtpbmQgb2YgZWxlY3Ryb25pYyBsaWJyYXJ5LCBhbiBlbGVjdHJvbmljIHNhbmRib3gsDQorc28gdG8gc2F5LCBpbiB3aGljaCBzdHVkZW50cyBhbmQgc2Nob2xhcnMgd2hvIGFyZSB3b3JraW5nIG9uIHRoaXMNCittYXRlcmlhbCBjYW4gZXhwbG9yZSBieSB0aGVtc2VsdmVzLiAgV2l0aCB0aGF0LCBNWUxPTkFTIGRlbW9uc3RyYXRlZA0KK1BlcnNldXMsIGJlZ2lubmluZyB3aXRoIHRoZSBQZXJzZXVzIGdhdGV3YXksIHRoZSBmaXJzdCB0aGluZyBvbmUgc2Vlcw0KK3Vwb24gb3BlbmluZyBQZXJzZXVzLS1hbiBlZmZvcnQgaW4gcGFydCB0byBzb2x2ZSB0aGUgY29udGV4dHVhbGl6aW5nDQorcHJvYmxlbS0td2hpY2ggdGVsbHMgdGhlIHVzZXIgd2hhdCB0aGUgc3lzdGVtIGNvbnRhaW5zLg0KKw0KK01ZTE9OQVMgZGVtb25zdHJhdGVkIG9ubHkgYSB2ZXJ5IHNtYWxsIHBvcnRpb24sIGJlZ2lubmluZyB3aXRoIHByaW1hcnkNCit0ZXh0cyBhbmQgcnVubmluZyBvZmYgdGhlIENELVJPTS4gIEhhdmluZyBzZWxlY3RlZCBBZXNjaHlsdXMnIFByb21ldGhldXMNCitCb3VuZCwgd2hpY2ggd2FzIHZpZXdhYmxlIGluIEdyZWVrIGFuZCBFbmdsaXNoIHByZXR0eSBtdWNoIGluIHRoZSBzYW1lDQorc2VnbWVudHMgdG9nZXRoZXIsIE1ZTE9OQVMgZGVtb25zdHJhdGVkIHRvb2xzIHRvIHVzZSB3aXRoIHRoZSBHcmVlayB0ZXh0LA0KK3NvbWV0aGluZyBub3QgcG9zc2libGUgd2l0aCBhIGJvb2s6ICBsb29raW5nIHVwIHRoZSBkaWN0aW9uYXJ5IGVudHJ5IGZvcm0NCitvZiBhbiB1bmZhbWlsaWFyIHdvcmQgaW4gR3JlZWsgYWZ0ZXIgc3ViamVjdGluZyBpdCB0byBQZXJzZXVzJw0KK21vcnBob2xvZ2ljYWwgYW5hbHlzaXMgZm9yIGFsbCB0aGUgdGV4dHMuICBBZnRlciBmaW5kaW5nIG91dCBhYm91dCBhDQord29yZCwgYSB1c2VyIG1heSB0aGVuIGRlY2lkZSB0byBzZWUgaWYgaXQgaXMgdXNlZCBhbnl3aGVyZSBlbHNlIGluIEdyZWVrLiANCitCZWNhdXNlIHZhc3QgYW1vdW50cyBvZiBpbmRleGluZyBzdXBwb3J0IGFsbCBvZiB0aGUgcHJpbWFyeSBtYXRlcmlhbCwgb25lDQorY2FuIGZpbmQgb3V0IHdoZXJlIGVsc2UgYWxsIGZvcm1zIG9mIGEgcGFydGljdWxhciBHcmVlayB3b3JkIGFwcGVhci0tDQorb2Z0ZW4gbm90IGEgdHJpdmlhbCBtYXR0ZXIgYmVjYXVzZSBHcmVlayBpcyBoaWdobHkgaW5mbGVjdGVkLiAgRnVydGhlciwNCitzaW5jZSB0aGUgc3Rvcnkgb2YgUHJvbWV0aGV1cyBoYXMgdG8gZG8gd2l0aCB0aGUgb3JpZ2lucyBvZiBzYWNyaWZpY2UsIGENCit1c2VyIG1heSB3aXNoIHRvIHN0dWR5IGFuZCBleHBsb3JlIHNhY3JpZmljZSBpbiBHcmVlayBsaXRlcmF0dXJlOyBieQ0KK3R5cGluZyBzYWNyaWZpY2UgaW50byBhIHNtYWxsIHdpbmRvdywgYSB1c2VyIGdvZXMgdG8gdGhlIEVuZ2xpc2gtR3JlZWsNCit3b3JkIGxpc3QtLXNvbWV0aGluZyBvbmUgY2Fubm90IGRvIHdpdGhvdXQgdGhlIGNvbXB1dGVyIChQZXJzZXVzIGhhcw0KK2luZGV4ZWQgdGhlIGRlZmluaXRpb25zIG9mIGl0cyBkaWN0aW9uYXJ5KS0tdGhlIHN0cmluZyBzYWNyaWZpY2UgYXBwZWFycw0KK2luIHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBzaXh0eS1maXZlIHdvcmRzLiAgT25lIG1heSB0aGVuIGZpbmQgb3V0DQord2hlcmUgYW55IG9mIHRob3NlIHdvcmRzIGlzIHVzZWQgaW4gdGhlIHdvcmsocykgb2YgYSBwYXJ0aWN1bGFyIGF1dGhvci4gDQorVGhlIEVuZ2xpc2ggZGVmaW5pdGlvbnMgYXJlIG5vdCBsZW1tYXRpemVkLg0KKw0KK0FsbCBvZiB0aGUgaW5kaWNlcyBkcml2aW5nIHRoaXMga2luZCBvZiB1c2FnZSB3ZXJlIG9yaWdpbmFsbHkgZGV2aXNlZCBmb3INCitzcGVlZCwgTVlMT05BUyBvYnNlcnZlZDsgaW4gb3RoZXIgd29yZHMsIGFsbCB0aGF0IGtpbmQgb2YgaW5mb3JtYXRpb24tLQ0KK2FsbCBmb3JtcyBvZiBhbGwgd29yZHMsIHdoZXJlIHRoZXkgZXhpc3QsIHRoZSBkaWN0aW9uYXJ5IGZvcm0gdGhleSBiZWxvbmcNCit0by0td2VyZSBjb2xsZWN0ZWQgaW50byBkYXRhYmFzZXMsIHdoaWNoIHdpbGwgZXhwZWRpdGUgc2VhcmNoaW5nLiAgVGhlbg0KK2l0IHdhcyBkaXNjb3ZlcmVkIHRoYXQgb25lIGNhbiBkbyB0aGluZ3Mgc2VhcmNoaW5nIGluIHRoZXNlIGRhdGFiYXNlcw0KK3RoYXQgY291bGQgbm90IGJlIGRvbmUgc2VhcmNoaW5nIGluIHRoZSBmdWxsIHRleHRzLiAgVGh1cywgYWx0aG91Z2ggdGhlcmUNCithcmUgZnVsbC10ZXh0IHNlYXJjaGVzIGluIFBlcnNldXMsIG11Y2ggb2YgdGhlIHdvcmsgaXMgZG9uZSBiZWhpbmQgdGhlDQorc2NlbmVzLCB1c2luZyBwcmVwYXJlZCBpbmRpY2VzLiAgUmUgdGhlIGluZGV4aW5nIHRoYXQgaXMgZG9uZSBiZWhpbmQgdGhlDQorc2NlbmVzLCBNWUxPTkFTIHBvaW50ZWQgb3V0IHRoYXQgd2l0aG91dCB0aGUgU0dNTCBmb3JtcyBvZiB0aGUgdGV4dCwgaXQNCitjb3VsZCBub3QgYmUgZG9uZSBlZmZlY3RpdmVseS4gIE11Y2ggb2YgdGhpcyBpbmRleGluZyBpcyBiYXNlZCBvbiB0aGUNCitzdHJ1Y3R1cmVzIHRoYXQgYXJlIG1hZGUgZXhwbGljaXQgYnkgdGhlIFNHTUwgdGFnZ2luZy4NCisNCitJdCB3YXMgZm91bmQgdGhhdCBvbmUgb2YgdGhlIHRoaW5ncyBtYW55IG9mIFBlcnNldXMnIG5vbi1HcmVlay1yZWFkaW5nDQordXNlcnMgZG8gaXMgc3RhcnQgZnJvbSB0aGUgZGljdGlvbmFyeSBhbmQgdGhlbiBtb3ZlIGludG8gdGhlIGNsb3NlIHN0dWR5DQorb2Ygd29yZHMgYW5kIGNvbmNlcHRzIHZpYSB0aGlzIGtpbmQgb2YgRW5nbGlzaC1HcmVlayB3b3JkIHNlYXJjaCwgYnkgd2hpY2gNCittZWFucyB0aGV5IG1pZ2h0IHNlbGVjdCBhIGNvbmNlcHQuICBUaGlzIGV4ZXJjaXNlIGhhcyBiZWVuIGFzc2lnbmVkIHRvDQorc3R1ZGVudHMgaW4gY29yZSBjb3Vyc2VzIGF0IEhhcnZhcmQtLXRvIHN0dWR5IGEgY29uY2VwdCBieSBsb29raW5nIGZvciB0aGUNCitFbmdsaXNoIHdvcmQgaW4gdGhlIGRpY3Rpb25hcnksIGZpbmRpbmcgdGhlIEdyZWVrIHdvcmRzLCBhbmQgdGhlbiBmaW5kaW5nDQordGhlIHdvcmRzIGluIHRoZSBHcmVlayBidXQsIG9mIGNvdXJzZSwgcmVhZGluZyBhY3Jvc3MgaW4gdGhlIEVuZ2xpc2guDQorVGhhdCB0ZWxscyB0aGVtIGEgZ3JlYXQgZGVhbCBhYm91dCB3aGF0IGEgdHJhbnNsYXRpb24gbWVhbnMgYXMgd2VsbC4NCisNCitTaG91bGQgb25lIGFsc28gd2lzaCB0byBzZWUgaW1hZ2VzIHRoYXQgaGF2ZSB0byBkbyB3aXRoIHNhY3JpZmljZSwgdGhhdA0KK3BlcnNvbiB3b3VsZCBnbyB0byB0aGUgb2JqZWN0IGtleSB3b3JkIHNlYXJjaCwgd2hpY2ggYWxsb3dzIG9uZSB0bw0KK3BlcmZvcm0gYSBzaW1pbGFyIGtpbmQgb2YgaW5kZXggcmV0cmlldmFsIG9uIHRoZSBkYXRhYmFzZSBvZg0KK2FyY2hhZW9sb2dpY2FsIG9iamVjdHMuICBXaXRob3V0IHdvcmRzLCBwaWN0dXJlcyBhcmUgdXNlbGVzczsgUGVyc2V1cyBoYXMNCitub3QgcmVhY2hlZCB0aGUgcG9pbnQgd2hlcmUgaXQgY2FuIGRvIG11Y2ggd2l0aCBpbWFnZXMgdGhhdCBhcmUgbm90DQorY2F0YWxvZ2VkLiAgVGh1cywgYWx0aG91Z2ggaXQgaXMgcG9zc2libGUgaW4gUGVyc2V1cyB3aXRoIHRleHQgYW5kIGltYWdlcw0KK3RvIG5hdmlnYXRlIGJ5IGtub3dpbmcgd2hlcmUgb25lIHdhbnRzIHRvIGVuZCB1cC0tZm9yIGV4YW1wbGUsIGENCityZWQtZmlndXJlIHZhc2UgZnJvbSB0aGUgQm9zdG9uIE11c2V1bSBvZiBGaW5lIEFydHMtLW9uZSBjYW4gcGVyZm9ybSB0aGlzDQora2luZCBvZiBuYXZpZ2F0aW9uIHZlcnkgZWFzaWx5IGJ5IHRyYWNpbmcgZG93biBpbmRpY2VzLiAgTVlMT05BUw0KK2lsbHVzdHJhdGVkIHNldmVyYWwgZ2VuZXJpYyBzY2VuZXMgb2Ygc2FjcmlmaWNlIG9uIHZhc2VzLiAgVGhlIGZlYXR1cmVzDQorZGVtb25zdHJhdGVkIGRlcml2ZWQgZnJvbSBQZXJzZXVzIDEuMDsgdmVyc2lvbiAyLjAgd2lsbCBpbXBsZW1lbnQgZXZlbg0KK2JldHRlciBtZWFucyBvZiByZXRyaWV2YWwuDQorDQorTVlMT05BUyBjbG9zZWQgYnkgbG9va2luZyBhdCBvbmUgb2YgdGhlIHBpY3R1cmVzIGFuZCBub3RpbmcgYWdhaW4gdGhhdA0KK29uZSBjYW4gZG8gYSBncmVhdCBkZWFsIG9mIHJlc2VhcmNoIHVzaW5nIHRoZSBpY29ub2dyYXBoeSBhcyB3ZWxsIGFzIHRoZQ0KK3RleHRzLiAgRm9yIGluc3RhbmNlLCBzdHVkZW50cyBpbiBhIGNvcmUgY291cnNlIGF0IEhhcnZhcmQgdGhpcyB5ZWFyIHdlcmUNCitoaWdobHkgaW50ZXJlc3RlZCBpbiBHcmVlayBjb25jZXB0cyBvZiBmb3JlaWduZXJzIGFuZCByZXByZXNlbnRhdGlvbnMgb2YNCitub24tR3JlZWtzLiAgU28gdGhleSBwZXJmb3JtZWQgYSBncmVhdCBkZWFsIG9mIHJlc2VhcmNoLCBib3RoIHdpdGggdGV4dHMNCisoZS5nLiwgSGVyb2RvdHVzKSBhbmQgd2l0aCBpY29ub2dyYXBoeSBvbiB2YXNlcyBhbmQgY29pbnMsIG9uIGhvdyB0aGUNCitHcmVla3MgcG9ydHJheWVkIG5vbi1HcmVla3MuICBBdCB0aGUgc2FtZSB0aW1lLCBhcnQgaGlzdG9yaWFucyB3aG8gc3R1ZHkNCitpY29ub2dyYXBoeSB3ZXJlIGFsc28gaW50ZXJlc3RlZCwgYW5kIHdlcmUgYWJsZSB0byB1c2UgdGhpcyBtYXRlcmlhbC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorRElTQ1VTU0lPTiAqIEluZGV4aW5nIGFuZCBzZWFyY2hhYmlsaXR5IG9mIGFsbCBFbmdsaXNoIHdvcmRzIGluIFBlcnNldXMgKg0KK1NldmVyYWwgZmVhdHVyZXMgb2YgUGVyc2V1cyAxLjAgKiBTZXZlcmFsIGxldmVscyBvZiBjdXN0b21pemF0aW9uDQorcG9zc2libGUgKiBQZXJzZXVzIHVzZWQgZm9yIGdlbmVyYWwgZWR1Y2F0aW9uICogUGVyc2V1cycgZWZmZWN0cyBvbg0KK2VkdWNhdGlvbiAqIENvbnRleHR1YWwgaW5mb3JtYXRpb24gaW4gUGVyc2V1cyAqIE1haW4gY2hhbGxlbmdlIGFuZA0KK2VtcGhhc2lzIG9mIFBlcnNldXMgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitTZXZlcmFsIHBvaW50cyBlbWVyZ2VkIGluIHRoZSBkaXNjdXNzaW9uIHRoYXQgZm9sbG93ZWQgTVlMT05BUydzIHByZXNlbnRhdGlvbi4NCisNCitBbHRob3VnaCBNWUxPTkFTIGhhZCBub3QgZGVtb25zdHJhdGVkIFBlcnNldXMnIGFiaWxpdHkgdG8gY3Jvc3Mtc2VhcmNoDQorZG9jdW1lbnRzLCBzaGUgY29uZmlybWVkIHRoYXQgYWxsIEVuZ2xpc2ggd29yZHMgaW4gUGVyc2V1cyBhcmUgaW5kZXhlZA0KK2FuZCBjYW4gYmUgc2VhcmNoZWQuICBTbywgZm9yIGV4YW1wbGUsIHNhY3JpZmljZSBjb3VsZCBoYXZlIGJlZW4gc2VhcmNoZWQNCitpbiBhbGwgdGV4dHMsIHRoZSBoaXN0b3JpY2FsIGVzc2F5LCBhbmQgYWxsIHRoZSBjYXRhbG9ndWUgZW50cmllcyB3aXRoDQordGhlaXIgZGVzY3JpcHRpb25zLS1pbiBzaG9ydCwgaW4gYWxsIG9mIFBlcnNldXMuDQorDQorQm9vbGVhbiBsb2dpYyBpcyBub3QgaW4gUGVyc2V1cyAxLjAgYnV0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG5leHQNCit2ZXJzaW9uLCBhbHRob3VnaCBhbiBlZmZvcnQgaXMgYmVpbmcgbWFkZSBub3QgdG8gcmVzdHJpY3QgUGVyc2V1cyB0byBhDQorZGF0YWJhc2UgaW4gd2hpY2ggb25lIGp1c3QgcGVyZm9ybXMgc2VhcmNoaW5nLCBCb29sZWFuIG9yIG90aGVyd2lzZS4gIEl0DQoraXMgcG9zc2libGUgdG8gbW92ZSBsYXRlcmFsbHkgdGhyb3VnaCB0aGUgZG9jdW1lbnRzIGJ5IHNlbGVjdGluZyBhIHdvcmQNCitvbmUgaXMgaW50ZXJlc3RlZCBpbiBhbmQgc2VsZWN0aW5nIGFuIGFyZWEgb2YgaW5mb3JtYXRpb24gb25lIGlzDQoraW50ZXJlc3RlZCBpbiBhbmQgdHJ5aW5nIHRvIGxvb2sgdGhhdCB3b3JkIHVwIGluIHRoYXQgYXJlYS4NCisNCitTaW5jZSBQZXJzZXVzIHdhcyBkZXZlbG9wZWQgaW4gSHlwZXJDYXJkLCBzZXZlcmFsIGxldmVscyBvZiBjdXN0b21pemF0aW9uDQorYXJlIHBvc3NpYmxlLiAgU2ltcGxlIGF1dGhvcmluZyB0b29scyBleGlzdCB0aGF0IGFsbG93IG9uZSB0byBjcmVhdGUNCithbm5vdGF0ZWQgcGF0aHMgdGhyb3VnaCB0aGUgaW5mb3JtYXRpb24sIHdoaWNoIGFyZSB1c2VmdWwgZm9yIG5vdGUtdGFraW5nDQorYW5kIGZvciBndWlkZWQgdG91cnMgZm9yIHRlYWNoaW5nIHB1cnBvc2VzIGFuZCBmb3IgZXhwb3NpdG9yeSB3cml0aW5nLiANCitXaXRoIGEgbGl0dGxlIG1vcmUgaW5nZW51aXR5IGl0IGlzIHBvc3NpYmxlIHRvIGJlZ2luIHRvIGFkZCBvciBzdWJzdGl0dXRlDQorbWF0ZXJpYWwgaW4gUGVyc2V1cy4NCisNCitQZXJzZXVzIGhhcyBub3QgYmVlbiB1c2VkIHNvIG11Y2ggZm9yIGNsYXNzaWNzIGVkdWNhdGlvbiBhcyBmb3IgZ2VuZXJhbA0KK2VkdWNhdGlvbiwgd2hlcmUgaXQgc2VlbWVkIHRvIGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBzdHVkZW50cyBpbiB0aGUgY29yZQ0KK2NvdXJzZSBhdCBIYXJ2YXJkIChhIGdlbmVyYWwgcmVxdWlyZWQgY291cnNlIHRoYXQgc3R1ZGVudHMgbXVzdCB0YWtlIGluDQorY2VydGFpbiBhcmVhcykuICBTdHVkZW50cyB3ZXJlIGFibGUgdG8gdXNlIHByaW1hcnkgbWF0ZXJpYWwgbXVjaCBtb3JlLg0KKw0KK1RoZSBQZXJzZXVzIFByb2plY3QgaGFzIGFuIGV2YWx1YXRpb24gdGVhbSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBNYXJ5bGFuZA0KK3RoYXQgaGFzIGJlZW4gZG9jdW1lbnRpbmcgUGVyc2V1cycgZWZmZWN0cyBvbiBlZHVjYXRpb24uICBQZXJzZXVzIGlzIHZlcnkNCitwb3B1bGFyLCBhbmQgYW5lY2RvdGFsIGV2aWRlbmNlIGluZGljYXRlcyB0aGF0IGl0IGlzIGhhdmluZyBhbiBlZmZlY3QgYXQNCitwbGFjZXMgb3RoZXIgdGhhbiBIYXJ2YXJkLCBmb3IgZXhhbXBsZSwgdGVzdCBzaXRlcyBhdCBCYWxsIFN0YXRlDQorVW5pdmVyc2l0eSwgRHJ1cnkgQ29sbGVnZSwgYW5kIG51bWVyb3VzIHNtYWxsIHBsYWNlcyB3aGVyZSBvcHBvcnR1bml0aWVzDQordG8gdXNlIHZhc3QgYW1vdW50cyBvZiBwcmltYXJ5IGRhdGEgbWF5IG5vdCBleGlzdC4gIE9uZSBkb2N1bWVudGVkIGVmZmVjdA0KK2lzIHRoYXQgYXJjaGFlb2xvZ2ljYWwsIGFudGhyb3BvbG9naWNhbCwgYW5kIHBoaWxvbG9naWNhbCByZXNlYXJjaCBpcw0KK2JlaW5nIGRvbmUgYnkgdGhlIHNhbWUgcGVyc29uIGluc3RlYWQgb2YgYnkgdGhyZWUgZGlmZmVyZW50IHBlb3BsZS4NCisNCitUaGUgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBpbiBQZXJzZXVzIGluY2x1ZGVzIGFuIG92ZXJ2aWV3IGVzc2F5LCBhDQorZmFpcmx5IGxpbmVhciBoaXN0b3JpY2FsIGVzc2F5IG9uIHRoZSBmaWZ0aCBjZW50dXJ5IEIuQy4gdGhhdCBwcm92aWRlcw0KK2xpbmtzIGludG8gdGhlIHByaW1hcnkgbWF0ZXJpYWwgKGUuZy4sIEhlcm9kb3R1cywgVGh1Y3lkaWRlcywgYW5kDQorUGx1dGFyY2gpLCB2aWEgc21hbGwgZ3JheSB1bmRlcnNjb3JpbmcgKG9uIHRoZSBzY3JlZW4pIG9mIGxpbmtlZA0KK3Bhc3NhZ2VzLiAgVGhlc2UgYXJlIGhhbmRtYWRlIGxpbmtzIGludG8gb3RoZXIgbWF0ZXJpYWwuDQorDQorVG8gZGlmZmVyZW50IGV4dGVudHMsIG1vc3Qgb2YgdGhlIHByb2R1Y3Rpb24gd29yayB3YXMgZG9uZSBhdCBIYXJ2YXJkLA0KK3doZXJlIHRoZSBwZW9wbGUgYW5kIHRoZSBlcXVpcG1lbnQgYXJlIGxvY2F0ZWQuICBNdWNoIG9mIHRoZQ0KK2NvbGxhYm9yYXRpdmUgYWN0aXZpdHkgaW52b2x2ZWQgZGF0YSBjb2xsZWN0aW9uIGFuZCBzdHJ1Y3R1cmluZywgYmVjYXVzZQ0KK3RoZSBtYWluIGNoYWxsZW5nZSBhbmQgdGhlIGVtcGhhc2lzIG9mIFBlcnNldXMgaXMgdGhlIGdhdGhlcmluZyBvZg0KK3ByaW1hcnkgbWF0ZXJpYWwsIHRoYXQgaXMsIGJ1aWxkaW5nIGEgdXNlZnVsIGVudmlyb25tZW50IGZvciBzdHVkeWluZw0KK2NsYXNzaWNhbCBHcmVlY2UsIGNvbGxlY3RpbmcgZGF0YSwgYW5kIG1ha2luZyBpdCB1c2VmdWwuIA0KK1N5c3RlbXMtYnVpbGRpbmcgaXMgZGVmaW5pdGVseSBub3QgdGhlIG1haW4gY29uY2Vybi4gIFRodXMsIG11Y2ggb2YgdGhlDQord29yayBoYXMgaW52b2x2ZWQgd3JpdGluZyBlc3NheXMsIGNvbGxlY3RpbmcgaW5mb3JtYXRpb24sIHJld3JpdGluZyBpdCwNCithbmQgdGFnZ2luZyBpdC4gIFRoYXQgY2FuIGJlIGRvbmUgb2ZmIHNpdGUuICBUaGUgY3JlYXRpdmUgbGluayBmb3IgdGhlDQorb3ZlcnZpZXcgZXNzYXkgYXMgd2VsbCBhcyBmb3IgYm90aCBzeXN0ZW1zIGFuZCBkYXRhIHdhcyBjb2xsYWJvcmF0aXZlLA0KK2FuZCB3YXMgZm9yZ2VkIHZpYSBFLW1haWwgYW5kIHBhcGVyIG1haWwgd2l0aCBwcm9mZXNzb3JzIGF0IFBvbW9uYSBhbmQNCitCb3dkb2luLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitDQUxBTFVDQSAqIFBMRCdzIHByaW5jaXBhbCBmb2N1cyBhbmQgY29udHJpYnV0aW9uIHRvIHNjaG9sYXJzaGlwICoNCitWYXJpb3VzIHF1ZXN0aW9ucyBwcmVwYXJhdG9yeSB0byBiZWdpbm5pbmcgdGhlIHByb2plY3QgKiBCYXNpcyBmb3INCitwcm9qZWN0ICogQmFzaWMgcnVsZSBpbiBjb252ZXJ0aW5nIFBMRCAqIENvbmNlcm5pbmcgdGhlIGltYWdlcyBpbiBQTEQgKg0KK1J1bm5pbmcgUExEIHVuZGVyIGEgdmFyaWV0eSBvZiByZXRyaWV2YWwgc29mdHdhcmVzICogRW5jb2RpbmcgdGhlDQorZGF0YWJhc2UgYSBoYXJkLWZvdWdodCBpc3N1ZSAqIFZhcmlvdXMgZmVhdHVyZXMgZGVtb25zdHJhdGVkICogSW1wb3J0YW5jZQ0KK29mIHVzZXIgZG9jdW1lbnRhdGlvbiAqIExpbWl0YXRpb25zIG9mIHRoZSBDRC1ST00gdmVyc2lvbiAqICAgDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0VyaWMgQ0FMQUxVQ0EsIHZpY2UgcHJlc2lkZW50LCBDaGFkd3ljay1IZWFsZXksIEluYy4sIGRlbW9uc3RyYXRlZCBhDQorc29mdHdhcmUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIFBhdHJvbG9naWEgTGF0aW5hIERhdGFiYXNlIChQTEQpLiAgUExEJ3MNCitwcmluY2lwYWwgZm9jdXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcm9qZWN0IGFib3V0IHRocmVlLWFuZC1hLWhhbGYNCit5ZWFycyBhZ28gd2FzIG9uIGNvbnZlcnRpbmcgTWlnbmUncyBMYXRpbiBzZXJpZXMsIGFuZCBpbiB0aGUgZW5kLA0KK0NBTEFMVUNBIHN1Z2dlc3RlZCwgY29udmVyc2lvbiBvZiB0aGUgdGV4dCB3aWxsIGJlIHRoZSBtYWpvciBjb250cmlidXRpb24NCit0byBzY2hvbGFyc2hpcC4gIENBTEFMVUNBIHN0cmVzc2VkIHRoYXQsIGFzIHBvc3NpYmx5IHRoZSBvbmx5IHByaXZhdGUNCitwdWJsaXNoaW5nIG9yZ2FuaXphdGlvbiBhdCB0aGUgV29ya3Nob3AsIENoYWR3eWNrLUhlYWxleSBoYWQgc291Z2h0IG5vDQorZmVkZXJhbCBmdW5kcyBvciBuYXRpb25hbCBmb3VuZGF0aW9uIHN1cHBvcnQgYmVmb3JlIGVtYmFya2luZyB1cG9uIHRoZQ0KK3Byb2plY3QsIGJ1dCBpbnN0ZWFkIGhhZCByZWxpZWQgdXBvbiBhIGdyZWF0IGRlYWwgb2YgaG9tZXdvcmsgYW5kDQorbWFya2V0aW5nIHRvIGFjY29tcGxpc2ggdGhlIHRhc2sgb2YgY29udmVyc2lvbi4NCisNCitFdmVyIHNpbmNlIHRoZSBwb3NzaWJpbGl0aWVzIG9mIGNvbXB1dGVyLXNlYXJjaGluZyBoYXZlIGVtZXJnZWQsIHNjaG9sYXJzDQoraW4gdGhlIGZpZWxkIG9mIGxhdGUgYW5jaWVudCBhbmQgZWFybHkgbWVkaWV2YWwgc3R1ZGllcyAocGhpbG9zb3BoZXJzLA0KK3RoZW9sb2dpYW5zLCBjbGFzc2ljaXN0cywgYW5kIHRob3NlIHN0dWR5aW5nIHRoZSBoaXN0b3J5IG9mIG5hdHVyYWwgbGF3DQorYW5kIHRoZSBoaXN0b3J5IG9mIHRoZSBsZWdhbCBkZXZlbG9wbWVudCBvZiBXZXN0ZXJuIGNpdmlsaXphdGlvbikgaGF2ZQ0KK2JlZW4gbG9uZ2luZyBmb3IgYSBmdWxseSBzZWFyY2hhYmxlIHZlcnNpb24gb2YgV2VzdGVybiBsaXRlcmF0dXJlLCBmb3INCitleGFtcGxlLCBhbGwgdGhlIHRleHRzIG9mIEF1Z3VzdGluZSBhbmQgQmVybmFyZCBvZiBDbGFpcnZhdXggYW5kDQorQm9ldGhpdXMsIG5vdCB0byBtZW50aW9uIGFsbCB0aGUgc2Vjb25kYXJ5IGFuZCB0ZXJ0aWFyeSBhdXRob3JzLg0KKw0KK1ZhcmlvdXMgcXVlc3Rpb25zIGFyb3NlLCBDQUxBTFVDQSBzYWlkLiAgU2hvdWxkIG9uZSBjb252ZXJ0IE1pZ25lPyANCitTaG91bGQgdGhlIGRhdGFiYXNlIGJlIGVuY29kZWQ/ICBJcyBpdCBuZWNlc3NhcnkgdG8gZG8gdGhhdD8gIEhvdyBzaG91bGQNCitpdCBiZSBkZWxpdmVyZWQ/ICBXaGF0IGFib3V0IENELVJPTT8gIFNpbmNlIHRoaXMgaXMgYSB0cmFuc2l0aW9uYWwNCittZWRpdW0sIHdoeSBldmVuIGJvdGhlciB0byBjcmVhdGUgc29mdHdhcmUgdG8gcnVuIG9uIGEgQ0QtUk9NPyAgU2luY2UNCitldmVyeWJvZHkga25vd3MgcGVvcGxlIHdpbGwgYmUgbmV0d29ya2luZyBpbmZvcm1hdGlvbiwgd2h5IGdvIHRvIHRoZQ0KK3Ryb3VibGUtLXdoaWNoIGlzIGZhciBncmVhdGVyIHdpdGggQ0QtUk9NIHRoYW4gd2l0aCB0aGUgcHJvZHVjdGlvbiBvZg0KK21hZ25ldGljIGRhdGE/ICBGaW5hbGx5LCBob3cgZG9lcyBvbmUgbWFrZSB0aGUgZGF0YSBhdmFpbGFibGU/ICBDYW4gbWFueQ0KK29mIHRoZSBodXJkbGVzIHRvIHVzaW5nIGVsZWN0cm9uaWMgaW5mb3JtYXRpb24gdGhhdCBzb21lIHB1Ymxpc2hlcnMgaGF2ZQ0KK2ltcG9zZWQgdXBvbiBkYXRhYmFzZXMgYmUgZWxpbWluYXRlZD8NCisNCitUaGUgUExEIHByb2plY3Qgd2FzIGJhc2VkIG9uIHRoZSBwcmluY2lwbGUgdGhhdCBjb21wdXRlci1zZWFyY2hpbmcgb2YNCit0ZXh0cyBpcyBtb3N0IGVmZmVjdGl2ZSB3aGVuIGl0IGlzIGRvbmUgd2l0aCBhIGxhcmdlIGRhdGFiYXNlLiAgQmVjYXVzZQ0KK1BMRCByZXByZXNlbnRlZCBhIGNvbGxlY3Rpb24gdGhhdCBzZXJ2ZXMgc28gbWFueSBkaXNjaXBsaW5lcyBhY3Jvc3Mgc28NCittYW55IHBlcmlvZHMsIGl0IHdhcyBpcnJlc2lzdGlibGUuDQorDQorVGhlIGJhc2ljIHJ1bGUgaW4gY29udmVydGluZyBQTEQgd2FzIHRvIGRvIG5vIGhhcm0sIHRvIGF2b2lkIHRoZSBzaW5zIG9mDQoraW50cnVzaW9uIGluIHN1Y2ggYSBkYXRhYmFzZTogIG5vIGludHJvZHVjdGlvbiBvZiBuZXdlciBlZGl0aW9ucywgbm8NCitvbi10aGUtc3BvdCBjaGFuZ2VzLCBubyBlcmFkaWNhdGluZyBvZiBhbGwgcG9zc2libGUgZmFsc2Vob29kcyBmcm9tIGFuDQorZWRpdGlvbi4gIFRodXMsIFBMRCBpcyBub3QgdGhlIGZpbmFsIGFjdCBpbiBlbGVjdHJvbmljIHB1Ymxpc2hpbmcgZm9yDQordGhpcyBkaXNjaXBsaW5lLCBidXQgc2ltcGx5IHRoZSBiZWdpbm5pbmcuICBUaGUgY29udmVyc2lvbiBvZiBQTEQgaGFzDQorZXZva2VkIG51bWVyb3VzIHVuYW50aWNpcGF0ZWQgcXVlc3Rpb25zOiAgSG93IHdpbGwgaW5mb3JtYXRpb24gYmUgdXNlZD8gDQorV2hhdCBhYm91dCBuZXR3b3JraW5nPyAgQ2FuIHRoZSByaWdodHMgb2YgYSBkYXRhYmFzZSBiZSBwcm90ZWN0ZWQ/IA0KK1Nob3VsZCBvbmUgcHJvdGVjdCB0aGUgcmlnaHRzIG9mIGEgZGF0YWJhc2U/ICBIb3cgY2FuIGl0IGJlIG1hZGUNCithdmFpbGFibGU/DQorDQorVGhvc2UgY29udmVydGluZyBQTEQgYWxzbyB0cmllZCB0byBhdm9pZCB0aGUgc2lucyBvZiBvbWlzc2lvbiwgdGhhdCBpcywNCitleGNsdWRpbmcgcG9ydGlvbnMgb2YgdGhlIGNvbGxlY3Rpb25zIG9yIHdob2xlIHNlY3Rpb25zLiAgV2hhdCBhYm91dCB0aGUNCitpbWFnZXM/ICBQTEQgaXMgZnVsbCBvZiBpbWFnZXMsIHNvbWUgYXJlIGV4dHJlbWVseSBwaW91cw0KK25pbmV0ZWVudGgtY2VudHVyeSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIEZhdGhlcnMsIHdoaWxlIG90aGVycyBjb250YWluDQoraGlnaGx5IGludGVyZXN0aW5nIGVsZW1lbnRzLiAgVGhlIGdvYWwgd2FzIHRvIGNvdmVyIGFsbCB0aGUgdGV4dCBvZiBNaWduZQ0KKyhpbmNsdWRpbmcgbm90ZXMsIGluIEdyZWVrIGFuZCBpbiBIZWJyZXcsIHRoZSBsYXR0ZXIgb2Ygd2hpY2gsIGluDQorcGFydGljdWxhciwgY2F1c2VzIHByb2JsZW1zIGluIGNyZWF0aW5nIGEgc2VhcmNoIHN0cnVjdHVyZSksIGFsbCB0aGUNCitpbmRpY2VzLCBhbmQgZXZlbiB0aGUgaW1hZ2VzLCB3aGljaCBhcmUgYmVpbmcgc2Nhbm5lZCBpbiBzZXBhcmF0ZWx5DQorc2VhcmNoYWJsZSBmaWxlcy4NCisNCitTZXZlcmFsIE5vcnRoIEFtZXJpY2FuIGluc3RpdHV0aW9ucyB0aGF0IGhhdmUgcGxhY2VkIGFjcXVpc2l0aW9uIHJlcXVlc3RzDQorZm9yIHRoZSBQTEQgZGF0YWJhc2UgaGF2ZSByZXF1ZXN0ZWQgaXQgaW4gbWFnbmV0aWMgZm9ybSB3aXRob3V0IHNvZnR3YXJlLA0KK3doaWNoIG1lYW5zIHRoZXkgYXJlIGFscmVhZHkgcnVubmluZyBpdCB3aXRob3V0IHNvZnR3YXJlLCB3aXRob3V0DQorYW55dGhpbmcgZGVtb25zdHJhdGVkIGF0IHRoZSBXb3Jrc2hvcC4NCisNCitXaGF0IGNhbm5vdCBwcmFjdGljYWxseSBiZSBkb25lIGlzIGdvIGJhY2sgYW5kIHJlY29udmVydCBhbmQgcmUtZW5jb2RlDQorZGF0YSwgYSB0aW1lLWNvbnN1bWluZyBhbmQgZXh0cmVtZWx5IGNvc3RseSBlbnRlcnByaXNlLiAgQ0FMQUxVQ0Egc2Vlcw0KK1BMRCBhcyBhIGRhdGFiYXNlIHRoYXQgY2FuLCBhbmQgc2hvdWxkLCBiZSBydW4gdW5kZXIgYSB2YXJpZXR5IG9mDQorcmV0cmlldmFsIHNvZnR3YXJlcy4gIFRoaXMgd2lsbCBwZXJtaXQgdGhlIHdpZGVzdCBwb3NzaWJsZSBzZWFyY2hlcy4gDQorQ29uc2VxdWVudGx5LCB0aGUgbmVlZCB0byBwcm9kdWNlIGEgQ0QtUk9NIG9mIFBMRCwgYXMgd2VsbCBhcyB0byBkZXZlbG9wDQorc29mdHdhcmUgdGhhdCBjb3VsZCBoYW5kbGUgc29tZSAxLjMgZ2lnYWJ5dGUgb2YgaGVhdmlseSBlbmNvZGVkIHRleHQsDQorZGV2ZWxvcGVkIG91dCBvZiBjb252ZXJzYXRpb25zIHdpdGggY29sbGVjdGlvbiBkZXZlbG9wbWVudCBhbmQgcmVmZXJlbmNlDQorbGlicmFyaWFucyB3aG8gd2FudGVkIHNvZnR3YXJlIGJvdGggY29tcGFzc2lvbmF0ZSBlbm91Z2ggZm9yIHRoZQ0KK3BlZGVzdHJpYW4gYnV0IGFsc28gY2FwYWJsZSBvZiBpbmNvcnBvcmF0aW5nIHRoZSBtb3N0IGRldGFpbGVkDQorbGV4aWNvZ3JhcGhpY2FsIHN0dWRpZXMgdGhhdCBhIHVzZXIgZGVzaXJlcyB0byBjb25kdWN0LiAgSW4gdGhlIGVuZCwgdGhlDQorZW5jb2RpbmcgYW5kIGNvbnZlcnNpb24gb2YgdGhlIGRhdGEgd2lsbCBwcm92ZSB0aGUgbW9zdCBlbmR1cmluZw0KK3Rlc3RhbWVudCB0byB0aGUgdmFsdWUgb2YgdGhlIHByb2plY3QuDQorDQorVGhlIGVuY29kaW5nIG9mIHRoZSBkYXRhYmFzZSB3YXMgYWxzbyBhIGhhcmQtZm91Z2h0IGlzc3VlOiAgRGlkIHRoZQ0KK2RhdGFiYXNlIG5lZWQgdG8gYmUgZW5jb2RlZD8gV2VyZSB0aGVyZSBub3JtYXRpdmUgc3RydWN0dXJlcyBmb3IgZW5jb2RpbmcNCitodW1hbmlzdCB0ZXh0cz8gIFNob3VsZCBpdCBiZSBTR01MPyAgV2hhdCBhYm91dCB0aGUgVEVJLS13aWxsIGl0IGxhc3QsDQord2lsbCBpdCBwcm92ZSB1c2VmdWw/ICBDQUxBTFVDQSBleHByZXNzZWQgc29tZSBtaW5vciBkb3VidHMgYXMgdG8gd2hldGhlcg0KK2EgZGF0YSBiYW5rIGNhbiBiZSBmdWxseSBURUktY29uZm9ybWFudC4gIEV2ZXJ5IGVmZm9ydCBjYW4gYmUgbWFkZSwgYnV0DQoraW4gdGhlIGVuZCB0byBiZSBURUktY29uZm9ybWFudCBtZWFucyB0byBhY2NlcHQgdGhlIG5lZWQgdG8gbWFrZSBzb21lDQorZmlybSBlbmNvZGluZyBkZWNpc2lvbnMgdGhhdCBjYW4sIGluZGVlZCwgYmUgZGlzcHV0ZWQuICBUaGUgVEVJIHBvaW50cw0KK3RoZSBwdWJsaXNoZXIgaW4gYSBwcm9wZXIgZGlyZWN0aW9uIGJ1dCBkb2VzIG5vdCBwcmVzdW1lIHRvIG1ha2UgYWxsIHRoZQ0KK2RlY2lzaW9ucyBmb3IgaGltIG9yIGhlci4gIEVzc2VudGlhbGx5LCB0aGUgZ29hbCBvZiBlbmNvZGluZyB3YXMgdG8NCitlbGltaW5hdGUsIGFzIG11Y2ggYXMgcG9zc2libGUsIHRoZSBoaW5kcmFuY2VzIHRvIGluZm9ybWF0aW9uLW5ldHdvcmtpbmcsDQorc28gdGhhdCBpZiBhbiBpbnN0aXR1dGlvbiBhY3F1aXJlcyBhIGRhdGFiYXNlLCBldmVyeWJvZHkgYXNzb2NpYXRlZCB3aXRoDQordGhlIGluc3RpdHV0aW9uIGNhbiBoYXZlIGFjY2VzcyB0byBpdC4NCisNCitDQUxBTFVDQSBkZW1vbnN0cmF0ZWQgYSBwb3J0aW9uIG9mIFZvbHVtZSAxNjAsIGJlY2F1c2UgaXQgaGFkIHRoZSBtb3N0DQorYW5vbWFsaWVzIGluIGl0LiAgVGhlIHNvZnR3YXJlIHdhcyBjcmVhdGVkIGJ5IEVsZWN0cm9uaWMgQm9vaw0KK1RlY2hub2xvZ2llcyBvZiBQcm92aWRlbmNlLCBSSSwgYW5kIGlzIGNhbGxlZCBEeW5hdGV4dC4gIFRoZSBzb2Z0d2FyZQ0KK3dvcmtzIG9ubHkgd2l0aCBTR01MLWNvZGVkIGRhdGEuDQorDQorVmlld2luZyBhIHRhYmxlIG9mIGNvbnRlbnRzIG9uIHRoZSBzY3JlZW4sIHRoZSBhdWRpZW5jZSBzYXcgaG93IER5bmF0ZXh0DQordHJlYXRzIGVhY2ggZWxlbWVudCBhcyBhIGJvb2sgYW5kIGF0dGVtcHRzIHRvIHNpbXBsaWZ5IG1vdmVtZW50IHRocm91Z2ggYQ0KK3ZvbHVtZS4gIEZhbWlsaWFyaXR5IHdpdGggdGhlIFBhdHJvbG9naWEgaW4gcHJpbnQgKGkuZS4sIHRoZSB0ZXh0LCBpdHMNCitzb3VyY2UsIGFuZCB0aGUgZWRpdGlvbnMpIHdpbGwgbWFrZSB0aGUgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9ucyBoaWdobHkNCit1c2VmdWwuICAoU29mdHdhcmUgd2l0aCBhIFdpbmRvd3MgYXBwbGljYXRpb24gd2FzIHNvdWdodCBmb3IgUExELA0KK0NBTEFMVUNBIHNhaWQsIGJlY2F1c2UgdGhpcyB3YXMgdGhlIG1haW4gdHJlbmQgZm9yIHNjaG9sYXJseSB1c2UuKQ0KKw0KK0NBTEFMVUNBIGFsc28gZGVtb25zdHJhdGVkIGhvdyBhIHVzZXIgY2FuIHBlcmZvcm0gYSB2YXJpZXR5IG9mIHNlYXJjaGVzDQorYW5kIHF1aWNrbHkgbW92ZSB0byBhbnkgcGFydCBvZiBhIHZvbHVtZTsgdGhlIGxvb2stdXAgc2NyZWVuIHByb3ZpZGVzDQorc29tZSBiYXNpYywgc2ltcGxlIHdvcmQtc2VhcmNoaW5nLiANCisNCitDQUxBTFVDQSBhcmd1ZWQgdGhhdCBvbmUgb2YgdGhlIG1ham9yIGRpZmZpY3VsdGllcyBpcyBub3QgdGhlIHNvZnR3YXJlLiANCitSYXRoZXIsIGluIGNyZWF0aW5nIGEgcHJvZHVjdCB0aGF0IHdpbGwgYmUgdXNlZCBieSBzY2hvbGFycyByZXByZXNlbnRpbmcNCithIGJyb2FkIHNwZWN0cnVtIG9mIGNvbXB1dGVyIHNvcGhpc3RpY2F0aW9uLCAgdXNlciBkb2N1bWVudGF0aW9uIHByb3Zlcw0KK3RvIGJlIHRoZSBtb3N0IGltcG9ydGFudCBzZXJ2aWNlIG9uZSBjYW4gcHJvdmlkZS4NCisNCitDQUxBTFVDQSBuZXh0IGlsbHVzdHJhdGVkIGEgdHJ1bmNhdGVkIHNlYXJjaCB1bmRlciBteXN0ZXJpdW0gd2l0aGluIHRlbg0KK3dvcmRzIG9mIHZpcnR1cyBhbmQgaG93IG9uZSB3b3VsZCBiZSBhYmxlIHRvIGZpbmQgaXRzIGNvbnRlbnRzIHRocm91Z2hvdXQNCit0aGUgZW50aXJlIGRhdGFiYXNlLiAgSGUgc2FpZCB0aGF0IHRoZSBleGNpdGluZyB0aGluZyBhYm91dCBQTEQgaXMgdGhhdA0KK21hbnkgb2YgdGhlIGFwcGxpY2F0aW9ucyBpbiB0aGUgcmV0cmlldmFsIHNvZnR3YXJlIGJlaW5nIHdyaXR0ZW4gZm9yIGl0DQord2lsbCBleGNlZWQgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgc29mdHdhcmUgZW1wbG95ZWQgbm93IGZvciB0aGUgQ0QtUk9NDQordmVyc2lvbi4gIFRoZSBDRC1ST00gZmFjZXMgZ2VudWluZSBsaW1pdGF0aW9ucywgaW4gdGVybXMgb2Ygc3BlZWQgYW5kDQorY29tcHJlaGVuc2l2ZW5lc3MsIGluIHRoZSBjcmVhdGlvbiBvZiBhIHJldHJpZXZhbCBzb2Z0d2FyZSB0byBydW4gaXQuIA0KK0NBTEFMVUNBIHNhaWQgaGUgaG9wZWQgdGhhdCBpbmRpdmlkdWFsIHNjaG9sYXJzIHdpbGwgZG93bmxvYWQgdGhlIGRhdGEsDQoraWYgdGhleSB3aXNoLCB0byB0aGVpciBwZXJzb25hbCBjb21wdXRlcnMsIGFuZCBoYXZlIHJlYWR5IGFjY2VzcyB0bw0KK2ltcG9ydGFudCB0ZXh0cyBvbiBhIGNvbnN0YW50IGJhc2lzLCB3aGljaCB0aGV5IHdpbGwgYmUgYWJsZSB0byB1c2UgaW4NCit0aGVpciByZXNlYXJjaCBhbmQgZnJvbSB3aGljaCB0aGV5IG1pZ2h0IGV2ZW4gYmUgYWJsZSB0byBwdWJsaXNoLg0KKw0KKyhDQUxBTFVDQSBleHBsYWluZWQgdGhhdCB0aGUgYmx1ZSBudW1iZXJzIHJlcHJlc2VudGVkIE1pZ25lJ3MgY29sdW1uIG51bWJlcnMsDQord2hpY2ggYXJlIHRoZSBzdGFuZGFyZCBzY2hvbGFybHkgcmVmZXJlbmNlcy4gIFB1bGxpbmcgdXAgYSBub3RlLCBoZSBzdGF0ZWQNCit0aGF0IHRoZXNlIHRleHRzIHdlcmUgaGVhdmlseSBlZGl0ZWQgYW5kIHRoZSBpbWFnZSBmaWxlcyB3b3VsZCBhcHBlYXIgc2ltcGx5DQorYXMgYSBub3RlIGFzIHdlbGwsIHNvIHRoYXQgb25lIGNvdWxkIHF1aWNrbHkgYWNjZXNzIGFuIGltYWdlLikNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorRkxFSVNDSEhBVUVSL0VSV0FZICogU2V2ZXJhbCBwcm9ibGVtcyB3aXRoIHdoaWNoIEFNIGlzIHN0aWxsIHdyZXN0bGluZyAqDQorVmFyaW91cyBzZWFyY2ggYW5kIHJldHJpZXZhbCBjYXBhYmlsaXRpZXMgKiBJbGx1c3RyYXRpb24gb2YgYXV0b21hdGljDQorc3RlbW1pbmcgYW5kIGEgdHJ1bmNhdGVkIHNlYXJjaCAqIEFNJ3MgYXR0ZW1wdCB0byBmaW5kIHdheXMgdG8gY29ubmVjdA0KK2NhdGFsb2dpbmcgdG8gdGhlIHRleHRzICogQU0ncyBncmF2aXRhdGlvbiB0b3dhcmRzIFNHTUwgKiBTdHJpa2luZyBhDQorYmFsYW5jZSBiZXR3ZWVuIHF1YW50aXR5IGFuZCBxdWFsaXR5ICogSG93IEFNIGZ1cm5pc2hlcyB1c2VycyByZWNvdXJzZSB0bw0KK2ltYWdlcyAqIENvbmR1Y3RpbmcgYSBzZWFyY2ggaW4gYSBmdWxsLXRleHQgZW52aXJvbm1lbnQgKiBNYWNpbnRvc2ggYW5kDQorSUJNIHByb3RvdHlwZXMgb2YgQU0gKiBNdWx0aW1lZGlhIGFzcGVjdHMgb2YgQU0gKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitBIGRlbW9uc3RyYXRpb24gb2YgQW1lcmljYW4gTWVtb3J5IGJ5IGl0cyBjb29yZGluYXRvciwgQ2FybCBGTEVJU0NISEFVRVIsDQorYW5kIFJpY2t5IEVSV0FZLCBhc3NvY2lhdGUgY29vcmRpbmF0b3IsIExpYnJhcnkgb2YgQ29uZ3Jlc3MsIGNvbmNsdWRlZA0KK3RoZSBtb3JuaW5nIHNlc3Npb24uICBCZWdpbm5pbmcgd2l0aCBhIGNvbGxlY3Rpb24gb2YgYnJvYWRzaWRlcyBmcm9tIHRoZQ0KK0NvbnRpbmVudGFsIENvbmdyZXNzIGFuZCB0aGUgQ29uc3RpdHV0aW9uYWwgQ29udmVudGlvbiwgdGhlIG9ubHkgdGV4dA0KK2NvbGxlY3Rpb24gaW4gYSBwcmVzZW50YWJsZSBmb3JtIGF0IHRoZSB0aW1lIG9mIHRoZSBXb3Jrc2hvcCwgRkxFSVNDSEhBVUVSDQoraGlnaGxpZ2h0ZWQgc2V2ZXJhbCBvZiB0aGUgcHJvYmxlbXMgd2l0aCB3aGljaCBBTSBpcyBzdGlsbCB3cmVzdGxpbmcuDQorKEluIGl0cyBmaW5hbCBmb3JtLCB0aGUgZGlzayB3aWxsIGNvbnRhaW4gdHdvIGNvbGxlY3Rpb25zLCBub3Qgb25seSB0aGUNCiticm9hZHNpZGVzIGJ1dCBhbHNvIHRoZSBmdWxsIHRleHQgd2l0aCBpbGx1c3RyYXRpb25zIG9mIGEgc2V0IG9mDQorYXBwcm94aW1hdGVseSAzMDAgQWZyaWNhbi1BbWVyaWNhbiBwYW1waGxldHMgZnJvbSB0aGUgcGVyaW9kIDE4NzAgdG8gMTkxMC4pDQorDQorQXMgRlJFRU1BTiBoYWQgZXhwbGFpbmVkIGVhcmxpZXIsIEFNIGhhcyBhdHRlbXB0ZWQgdG8gdXNlIGEgc21hbGwgYW1vdW50DQorb2YgaW50ZXJwcmV0YXRpb24gdG8gaW50cm9kdWNlIGNvbGxlY3Rpb25zLiAgSW4gdGhlIHByZXNlbnQgY2FzZSwgdGhlDQorY29udHJhY3RvciwgYSBjb21wYW55IG5hbWVkIFF1aWNrIFNvdXJjZSwgaW4gU2lsdmVyIFNwcmluZywgTUQuLCB1c2VkDQorc29mdHdhcmUgY2FsbGVkIFRvb2xib29rIGFuZCBwdXQgdG9nZXRoZXIgYSBtb2Rlc3RseSBpbnRlcmFjdGl2ZQ0KK2ludHJvZHVjdGlvbiB0byB0aGUgY29sbGVjdGlvbi4gIExpa2UgdGhlIHR3byBwcmVjZWRpbmcgc3BlYWtlcnMsDQorRkxFSVNDSEhBVUVSIGFyZ3VlZCB0aGF0IHRoZSByZWFsIGFzc2V0IHdhcyB0aGUgdW5kZXJseWluZyBjb2xsZWN0aW9uLg0KKw0KK0ZMRUlTQ0hIQVVFUiBwcm9jZWVkZWQgdG8gZGVzY3JpYmUgdmFyaW91cyBzZWFyY2ggYW5kIHJldHJpZXZhbA0KK2NhcGFiaWxpdGllcyB3aGlsZSBFUldBWSB3b3JrZWQgdGhlIGNvbXB1dGVyLiAgSW4gdGhpcyBwYXJ0aWN1bGFyIHBhY2thZ2UNCit0aGUgImdvIHRvIiBwdWxsLWRvd24gYWxsb3dlZCB0aGUgdXNlciBpbiBlZmZlY3QgdG8ganVtcCBvdXQgb2YgVG9vbGJvb2ssDQord2hlcmUgdGhlIGludGVyYWN0aXZlIHByb2dyYW0gd2FzIGxvY2F0ZWQsIGFuZCBlbnRlciB0aGUgdGhpcmQtcGFydHkNCitzb2Z0d2FyZSB1c2VkIGJ5IEFNIGZvciB0aGlzIHRleHQgY29sbGVjdGlvbiwgd2hpY2ggaXMgY2FsbGVkIFBlcnNvbmFsDQorTGlicmFyaWFuLiAgVGhpcyB3YXMgdGhlIFdpbmRvd3MgdmVyc2lvbiBvZiBQZXJzb25hbCBMaWJyYXJpYW4sIGENCitzb2Z0d2FyZSBhcHBsaWNhdGlvbiBwdXQgdG9nZXRoZXIgYnkgYSBjb21wYW55IGluIFJvY2t2aWxsZSwgTWQuDQorDQorU2luY2UgdGhlIGJyb2Fkc2lkZXMgY2FtZSBmcm9tIHRoZSBSZXZvbHV0aW9uYXJ5IFdhciBwZXJpb2QsIGEgc2VhcmNoIHdhcw0KK2NvbmR1Y3RlZCB1c2luZyB0aGUgd29yZHMgQnJpdGlzaCBvciB3YXIsIHdpdGggdGhlIGRlZmF1bHQgb3BlcmF0b3IgcmVzZXQNCithcyBvci4gIEZMRUlTQ0hIQVVFUiBkZW1vbnN0cmF0ZWQgYm90aCBhdXRvbWF0aWMgc3RlbW1pbmcgKHdoaWNoIGZpbmRzDQorb3RoZXIgZm9ybXMgb2YgdGhlIHNhbWUgcm9vdCkgYW5kIGEgdHJ1bmNhdGVkIHNlYXJjaC4gIE9uZSBvZiBQZXJzb25hbA0KK0xpYnJhcmlhbidzIHN0cm9uZ2VzdCBmZWF0dXJlcywgdGhlIHJlbGV2YW5jZSByYW5raW5nLCB3YXMgcmVwcmVzZW50ZWQgYnkNCithIGNoYXJ0IHRoYXQgaW5kaWNhdGVkIGhvdyBvZnRlbiB3b3JkcyBiZWluZyBzb3VnaHQgYXBwZWFyZWQgaW4NCitkb2N1bWVudHMsIHdpdGggdGhlIG9uZSByZWNlaXZpbmcgdGhlIG1vc3QgImhpdHMiIG9idGFpbmluZyB0aGUgaGlnaGVzdA0KK3Njb3JlLiAgVGhlICJoaXQgbGlzdCIgdGhhdCBpcyBzdXBwbGllZCB0YWtlcyB0aGUgcmVsZXZhbmNlIHJhbmtpbmcgaW50bw0KK2FjY291bnQsIG1ha2luZyB0aGUgZmlyc3QgaGl0LCBpbiBlZmZlY3QsIHRoZSBvbmUgdGhlIHNvZnR3YXJlIGhhcw0KK3NlbGVjdGVkIGFzIHRoZSBtb3N0IHJlbGV2YW50IGV4YW1wbGUuDQorDQorV2hpbGUgaW4gdGhlIHRleHQgb2Ygb25lIG9mIHRoZSBicm9hZHNpZGUgZG9jdW1lbnRzLCBGTEVJU0NISEFVRVINCityZW1hcmtlZCBBTSdzIGF0dGVtcHQgdG8gZmluZCB3YXlzIHRvIGNvbm5lY3QgY2F0YWxvZ2luZyB0byB0aGUgdGV4dHMsDQord2hpY2ggaXQgZG9lcyBpbiBkaWZmZXJlbnQgd2F5cyBpbiBkaWZmZXJlbnQgbWFuaWZlc3RhdGlvbnMuICBJbiB0aGUgY2FzZQ0KK3Nob3duLCB0aGUgY2F0YWxvZ2luZyB3YXMgcGFzdGVkIG9uOiAgQU0gdG9vayBNQVJDIHJlY29yZHMgdGhhdCB3ZXJlDQord3JpdHRlbiBhcyBvbi1saW5lIHJlY29yZHMgcmlnaHQgaW50byBvbmUgb2YgdGhlIExpYnJhcnkncyBtYWluZnJhbWUNCityZXRyaWV2YWwgcHJvZ3JhbXMsIHB1bGxlZCB0aGVtIG91dCwgYW5kIGhhbmRlZCB0aGVtIG9mZiB0byB0aGUgY29udHJhY3RvciwNCit3aG8gbWFzc2FnZWQgdGhlbSBzb21ld2hhdCB0byBkaXNwbGF5IHRoZW0gaW4gdGhlIG1hbm5lciBzaG93bi4gIE9uZSBvZg0KK0FNJ3MgcXVlc3Rpb25zIGlzLCBEb2VzIHRoZSBjYXRhbG9ndWluZyBub3JtYWxseSBwZXJmb3JtZWQgaW4gdGhlIG1haW5mcmFtZQ0KK3dvcmsgaW4gdGhpcyBjb250ZXh0LCBvciBoYWQgQU0gb3VnaHQgdG8gdGhpbmsgdGhyb3VnaCBhZGp1c3RtZW50cz8NCisNCitGTEVJU0NISEFVRVIgbWFkZSB0aGUgYWRkaXRpb25hbCBwb2ludCB0aGF0LCBhcyBmYXIgYXMgdGhlIHRleHQgZ29lcywgQU0NCitoYXMgZ3Jhdml0YXRlZCB0b3dhcmRzIFNHTUwgKGhlIHBvaW50ZWQgdG8gdGhlIGJvbGRmYWNlIGluIHRoZSB1cHBlciBwYXJ0DQorb2YgdGhlIHNjcmVlbikuICBBbHRob3VnaCBleHRyZW1lbHkgbGltaXRlZCBpbiBpdHMgYWJpbGl0eSB0byB0cmFuc2xhdGUNCitvciBpbnRlcnByZXQgU0dNTCwgUGVyc29uYWwgTGlicmFyaWFuIHdpbGwgZnVybmlzaCBib3RoIGJvbGQgYW5kIGl0YWxpY3MNCitvbiBzY3JlZW47IGEgZmFpcmx5IGVhc3kgdGhpbmcgdG8gZG8sIGJ1dCBpdCBpcyBvbmUgb2YgdGhlIHdheXMgaW4gd2hpY2gNCitTR01MIGlzIHVzZWZ1bC4NCisNCitTdHJpa2luZyBhIGJhbGFuY2UgYmV0d2VlbiBxdWFudGl0eSBhbmQgcXVhbGl0eSBoYXMgYmVlbiBhIG1ham9yIGNvbmNlcm4NCitvZiBBTSwgd2l0aCBhY2N1cmFjeSBiZWluZyBvbmUgb2YgdGhlIHBsYWNlcyB3aGVyZSBwcm9qZWN0IHN0YWZmIGhhdmUNCitmZWx0IHRoYXQgbGVzcyB0aGFuIDEwMC1wZXJjZW50IGFjY3VyYWN5IHdhcyBub3QgdW5hY2NlcHRhYmxlLiANCitGTEVJU0NISEFVRVIgY2l0ZWQgdGhlIGV4YW1wbGUgb2YgdGhlIHN0YW5kYXJkIG9mIHRoZSByZWtleWluZyBpbmR1c3RyeSwNCituYW1lbHkgOTkuOTUgcGVyY2VudDsgYXMgb25lIHNlcnZpY2UgYnVyZWF1IGluZm9ybWVkIGhpbSwgdG8gZ28gZnJvbQ0KKzk5Ljk1IHRvIDEwMCBwZXJjZW50IHdvdWxkIGRvdWJsZSB0aGUgY29zdC4NCisNCitGTEVJU0NISEFVRVIgbmV4dCBkZW1vbnN0cmF0ZWQgaG93IEFNIGZ1cm5pc2hlcyB1c2VycyByZWNvdXJzZSB0byBpbWFnZXMsDQorYW5kIGF0IHRoZSBzYW1lIHRpbWUgcmVjYWxsZWQgTEVTSydzIHBvaW50ZWQgcXVlc3Rpb24gY29uY2VybmluZyB0aGUNCitudW1iZXIgb2YgcGVvcGxlIHdobyB3b3VsZCBsb29rIGF0IHRob3NlIGltYWdlcyBhbmQgdGhlIG51bWJlciB3aG8gd291bGQNCit3b3JrIG9ubHkgd2l0aCB0aGUgdGV4dC4gIElmIHRoZSBpbXBsaWNhdGlvbiBvZiBMRVNLJ3MgcXVlc3Rpb24gd2FzDQorc291bmQsIEZMRUlTQ0hIQVVFUiBzYWlkLCBpdCByYWlzZWQgdGhlIHN0YWtlcyBmb3IgdGV4dCBhY2N1cmFjeSBhbmQNCityZWR1Y2VkIHRoZSB2YWx1ZSBvZiB0aGUgc3RyYXRlZ3kgZm9yIGltYWdlcy4NCisNCitDb250ZW5kaW5nIHRoYXQgcHJlc2VydmF0aW9uIGlzIGFsd2F5cyBhIGJ1Z2Fib28sIEZMRUlTQ0hIQVVFUg0KK2RlbW9uc3RyYXRlZCBzZXZlcmFsIGltYWdlcyBkZXJpdmVkIGZyb20gYSBzY2FuIG9mIGEgcHJlc2VydmF0aW9uDQorbWljcm9maWxtIHRoYXQgQU0gaGFkIG1hZGUuICBIZSBhd2FyZGVkIGEgZ3JhZGUgb2YgQyBhdCBiZXN0LCBwZXJoYXBzIGENCitDIG1pbnVzIG9yIGEgQyBwbHVzLCBmb3IgaG93IHdlbGwgaXQgd29ya2VkIG91dC4gIEluZGVlZCwgdGhlIG1hdHRlciBvZg0KK2xlYXJuaW5nIGlmIG90aGVyIHBlb3BsZSBoYWQgYmV0dGVyIGlkZWFzIGFib3V0IHNjYW5uaW5nIGluIGdlbmVyYWwsIGFuZCwNCitpbiBwYXJ0aWN1bGFyLCBzY2FubmluZyBmcm9tIG1pY3JvZmlsbSwgd2FzIG9uZSBvZiB0aGUgZmFjdG9ycyB0aGF0IGRyb3ZlDQorQU0gdG8gYXR0ZW1wdCB0byB0aGluayB0aHJvdWdoIHRoZSBhZ2VuZGEgZm9yIHRoZSBXb3Jrc2hvcC4gIFNrZXcsIGZvcg0KK2V4YW1wbGUsIHdhcyBvbmUgb2YgdGhlIGlzc3VlcyB0aGF0IEFNIGluIGl0cyBpZ25vcmFuY2UgaGFkIG5vdCByZWNrb25lZA0KK3dvdWxkIHByb3ZlIHNvIGRpZmZpY3VsdC4NCisNCitGdXJ0aGVyLCB0aGUgaGFuZGxpbmcgb2YgaW1hZ2VzIG9mIHRoZSBzb3J0IHNob3duLCBpbiBhIGRlc2t0b3AgY29tcHV0ZXINCitlbnZpcm9ubWVudCwgaW52b2x2ZWQgYSBjb25zaWRlcmFibGUgYW1vdW50IG9mIHpvb21pbmcgYW5kIHNjcm9sbGluZy4gDQorVWx0aW1hdGVseSwgQU0gc3RhZmYgZmVlbCB0aGF0IHBlcmhhcHMgdGhlIHBhcGVyIGNvcHkgdGhhdCBpcyBwcmludGVkIG91dA0KK21pZ2h0IGJlIHRoZSBtb3N0IHVzZWZ1bCBvbmUsIGJ1dCB0aGV5IHJlbWFpbiB1bmNlcnRhaW4gYXMgdG8gaG93IG11Y2gNCitvbi1zY3JlZW4gcmVhZGluZyB1c2VycyB3aWxsIGRvLg0KKw0KK1JldHVybmluZyB0byB0aGUgdGV4dCwgRkxFSVNDSEhBVUVSIGFza2VkIHZpZXdlcnMgdG8gaW1hZ2luZSBhIHBlcnNvbiB3aG8NCittaWdodCBiZSBjb25kdWN0aW5nIGEgc2VhcmNoIGluIGEgZnVsbC10ZXh0IGVudmlyb25tZW50LiAgV2l0aCB0aGlzDQorc2NlbmFyaW8sIGhlIHByb2NlZWRlZCB0byBpbGx1c3RyYXRlIG90aGVyIGZlYXR1cmVzIG9mIFBlcnNvbmFsIExpYnJhcmlhbg0KK3RoYXQgaGUgY29uc2lkZXJlZCBoZWxwZnVsOyBmb3IgZXhhbXBsZSwgaXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8NCitub3RpY2Ugd29yZHMgYXMgb25lIHJlYWRzLiAgQ2xpY2tpbmcgdGhlICJpbmNsdWRlIiBidXR0b24gb24gdGhlIGJvdHRvbQ0KK29mIHRoZSBzZWFyY2ggd2luZG93IHBvcHMgdGhlIHdvcmRzIHRoYXQgaGF2ZSBiZWVuIGhpZ2hsaWdodGVkIGludG8gdGhlDQorc2VhcmNoLiAgVGh1cywgYSB1c2VyIGNhbiByZWZpbmUgdGhlIHNlYXJjaCBhcyBoZSBvciBzaGUgcmVhZHMsDQorcmUtZXhlY3V0aW5nIHRoZSBzZWFyY2ggYW5kIGNvbnRpbnVpbmcgdG8gZmluZCB0aGluZ3MgaW4gdGhlIHF1ZXN0IGZvcg0KK21hdGVyaWFscy4gIFRoaXMgc29mdHdhcmUgbm90IG9ubHkgY29udGFpbnMgcmVsZXZhbmNlIHJhbmtpbmcsIEJvb2xlYW4NCitvcGVyYXRvcnMsIGFuZCB0cnVuY2F0aW9uLCBpdCBhbHNvIHBlcm1pdHMgb25lIHRvIHBlcmZvcm0gd29yZCBhbGdlYnJhLA0KK3NvIHRvIHNheSwgd2hlcmUgb25lIHB1dHMgdHdvIG9yIHRocmVlIHdvcmRzIGluIHBhcmVudGhlc2VzIGFuZCBsaW5rcw0KK3RoZW0gd2l0aCBvbmUgQm9vbGVhbiBvcGVyYXRvciBhbmQgdGhlbiBhIGNvdXBsZSBvZiB3b3JkcyBpbiBhbm90aGVyIHNldA0KK29mIHBhcmVudGhlc2VzIGFuZCBhc2tzIGZvciB0aGluZ3Mgd2l0aGluIHNvIG1hbnkgd29yZHMgb2Ygb3RoZXJzLg0KKw0KK1VudGlsIHRoZXkgYmVjYW1lIGFjcXVhaW50ZWQgcmVjZW50bHkgd2l0aCBzb21lIG9mIHRoZSB3b3JrIGJlaW5nIGRvbmUgaW4NCitjbGFzc2ljcywgdGhlIEFNIHN0YWZmIGhhZCBub3QgcmVhbGl6ZWQgdGhhdCBhIGxhcmdlIG51bWJlciBvZiB0aGUNCitwcm9qZWN0cyB0aGF0IGludm9sdmUgZWxlY3Ryb25pYyB0ZXh0cyB3ZXJlIGJlaW5nIGRvbmUgYnkgcGVvcGxlIHdpdGggYQ0KK3Byb2ZvdW5kIGludGVyZXN0IGluIGxhbmd1YWdlIGFuZCBsaW5ndWlzdGljcy4gIFRoZWlyIHNlYXJjaCBzdHJhdGVnaWVzDQorYW5kIHRoaW5raW5nIGFyZSBvcmllbnRlZCB0byB0aG9zZSBmaWVsZHMsIGFzIGlzIHNob3duIGluIHBhcnRpY3VsYXIgYnkNCit0aGUgUGVyc2V1cyBleGFtcGxlLiAgQXMgYW1hdGV1ciBoaXN0b3JpYW5zLCB0aGUgQU0gc3RhZmYgd2VyZSB0aGlua2luZw0KK21vcmUgb2Ygc2VhcmNoaW5nIGZvciBjb25jZXB0cyBhbmQgaWRlYXMgdGhhbiBmb3IgcGFydGljdWxhciB3b3Jkcy4gDQorT2J2aW91c2x5LCBGTEVJU0NISEFVRVIgY29uY2VkZWQsIHNlYXJjaGluZyBmb3IgY29uY2VwdHMgYW5kIGlkZWFzIGFuZA0KK3NlYXJjaGluZyBmb3Igd29yZHMgbWF5IGJlIHR3byByYXRoZXIgY2xvc2VseSByZWxhdGVkIHRoaW5ncy4NCisNCitXaGlsZSBkaXNwbGF5aW5nIHNldmVyYWwgaW1hZ2VzLCBGTEVJU0NISEFVRVIgb2JzZXJ2ZWQgdGhhdCB0aGUgTWFjaW50b3NoDQorcHJvdG90eXBlIGJ1aWx0IGJ5IEFNIGNvbnRhaW5zIGEgZ3JlYXRlciBkaXZlcnNpdHkgb2YgZm9ybWF0cy4gIEVjaG9pbmcgYQ0KK3ByZXZpb3VzIHNwZWFrZXIsIGhlIHNhaWQgdGhhdCBpdCB3YXMgZWFzaWVyIHRvIHN0aXRjaCB0aGluZ3MgdG9nZXRoZXIgaW4NCit0aGUgTWFjaW50b3NoLCB0aG91Z2ggaXQgdGVuZGVkIHRvIGJlIGEgbGl0dGxlIG1vcmUgYW5lbWljIGluIHNlYXJjaCBhbmQNCityZXRyaWV2YWwuICBBTSwgdGhlcmVmb3JlLCBpbmNyZWFzaW5nbHkgaGFzIGJlZW4gaW52ZXN0aWdhdGluZw0KK3NvcGhpc3RpY2F0ZWQgcmV0cmlldmFsIGVuZ2luZXMgaW4gdGhlIElCTSBmb3JtYXQuDQorDQorRkxFSVNDSEhBVUVSIGRlbW9uc3RyYXRlZCBzZXZlcmFsIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgdGhlIHByb3RvdHlwZQ0KK2ludGVyZmFjZXM6ICBPbmUgd2FzIEFNJ3MgbWV0YXBob3IgZm9yIHRoZSBuZXR3b3JrIGZ1dHVyZSwgaW4gd2hpY2ggYQ0KK2tpbmQgb2YgcmVhZGluZy1yb29tIGdyYXBoaWMgc3VnZ2VzdHMgaG93IG9uZSB3b3VsZCBiZSBhYmxlIHRvIGdvIGFyb3VuZA0KK3RvIGRpZmZlcmVudCBtYXRlcmlhbHMuICBBTSBjb250YWlucyBhIGxhcmdlIG51bWJlciBvZiBwaG90b2dyYXBocyBpbg0KK2FuYWxvZyB2aWRlbyBmb3JtIHdvcmtlZCB1cCBmcm9tIGEgdmlkZW9kaXNjLCB3aGljaCBlbmFibGUgdXNlcnMgdG8gbWFrZQ0KK2NvcGllcyB0byBwcmludCBvciBpbmNvcnBvcmF0ZSBpbiBkaWdpdGFsIGRvY3VtZW50cy4gIEEgZnJhbWUtZ3JhYmJlciBpcw0KK2J1aWx0IGludG8gdGhlIHN5c3RlbSwgbWFraW5nIGl0IHBvc3NpYmxlIHRvIGJyaW5nIGFuIGltYWdlIGludG8gYSB3aW5kb3cNCithbmQgZGlnaXRpemUgb3IgcHJpbnQgaXQgb3V0Lg0KKw0KK0ZMRUlTQ0hIQVVFUiBuZXh0IGRlbW9uc3RyYXRlZCBzb3VuZCByZWNvcmRpbmcsIHdoaWNoIGluY2x1ZGVkIHRleHRzLiANCitSZWN5Y2xlZCBmcm9tIGEgcHJldmlvdXMgcHJvamVjdCwgdGhlIGNvbGxlY3Rpb24gaW5jbHVkZWQgc2l4dHkgNzgtcnBtDQorcGhvbm9ncmFwaCByZWNvcmRzIG9mIHBvbGl0aWNhbCBzcGVlY2hlcyB0aGF0IHdlcmUgbWFkZSBkdXJpbmcgYW5kDQoraW1tZWRpYXRlbHkgYWZ0ZXIgV29ybGQgV2FyIEkuICBUaGVzZSBjb25zdGl0dXRlZCBhcHByb3hpbWF0ZWx5IHRocmVlDQoraG91cnMgb2YgYXVkaW8sIGFzIEFNIGhhcyBkaWdpdGl6ZWQgaXQsIHdoaWNoIG9jY3VweSAxNTAgbWVnYWJ5dGVzIG9uIGENCitDRC4gIFRodXMsIHRoZXkgYXJlIGNvbnNpZGVyYWJseSBjb21wcmVzc2VkLiAgRnJvbSB0aGUgY2F0YWxvZ3VlIGNhcmQsDQorRkxFSVNDSEhBVUVSIHByb2NlZWRlZCB0byBhIHRyYW5zY3JpcHQgb2YgYSBzcGVlY2ggd2l0aCB0aGUgYXVkaW8NCithdmFpbGFibGUgYW5kIHdpdGggaGlnaGxpZ2h0ZWQgdGV4dCBmb2xsb3dpbmcgaXQgYXMgaXQgcGxheWVkLg0KK0EgcGhvdG9ncmFwaCBoYXMgYmVlbiBhZGRlZCBhbmQgYSB0cmFuc2NyaXB0aW9uIG1hZGUuDQorDQorQ29uc2lkZXJhYmxlIHZhbHVlIGhhcyBiZWVuIGFkZGVkIGJleW9uZCB3aGF0IHRoZSBMaWJyYXJ5IG9mIENvbmdyZXNzDQorbm9ybWFsbHkgd291bGQgZG8gaW4gY2F0YWxvZ3VpbmcgYSBzb3VuZCByZWNvcmRpbmcsIHdoaWNoIHJhaXNlcyBzZXZlcmFsDQorcXVlc3Rpb25zIGZvciBBTSBjb25jZXJuaW5nIHdoZXJlIHRvIGRyYXcgbGluZXMgYWJvdXQgaG93IG11Y2ggdmFsdWUgaXQgY2FuDQorYWZmb3JkIHRvIGFkZCBhbmQgYXQgd2hhdCBwb2ludCwgcGVyaGFwcywgdGhpcyBiZWNvbWVzIG1vcmUgdGhhbiBBTSBjb3VsZA0KK3JlYXNvbmFibHkgZG8gb3IgcmVhc29uYWJseSB3aXNoIHRvIGRvLiAgRkxFSVNDSEhBVUVSIGFsc28gZGVtb25zdHJhdGVkDQorYSBtb3Rpb24gcGljdHVyZS4gIEFzIEZSRUVNQU4gaGFkIHJlcG9ydGVkIGVhcmxpZXIsIHRoZSBtb3Rpb24gcGljdHVyZQ0KK21hdGVyaWFscyBoYXZlIHByb3ZlZCB0aGUgbW9zdCBwb3B1bGFyLCBub3Qgc3VycHJpc2luZ2x5LiAgVGhpcyBzYXlzIG1vcmUNCithYm91dCB0aGUgbWVkaXVtLCBoZSB0aG91Z2h0LCB0aGFuIGFib3V0IEFNJ3MgcHJlc2VudGF0aW9uIG9mIGl0Lg0KKw0KK0JlY2F1c2UgQU0ncyBnb2FsIHdhcyB0byBicmluZyB0b2dldGhlciB0aGluZ3MgdGhhdCBjb3VsZCBiZSB1c2VkIGJ5DQoraGlzdG9yaWFucyBvciBieSBwZW9wbGUgd2hvIHdlcmUgY3VyaW91cyBhYm91dCBoaXN0b3J5LA0KK3R1cm4tb2YtdGhlLWNlbnR1cnkgZm9vdGFnZSBzZWVtZWQgdG8gcmVwcmVzZW50IHRoZSBtb3N0IGFwcHJvcHJpYXRlDQorY29sbGVjdGlvbnMgZnJvbSB0aGUgTGlicmFyeSBvZiBDb25ncmVzcyBpbiBtb3Rpb24gcGljdHVyZXMuIFRoZXNlIHdlcmUNCit0aGUgdmVyeSBmaXJzdCBmaWxtcyBtYWRlIGJ5IFRob21hcyBFZGlzb24ncyBjb21wYW55IGFuZCBzb21lIG90aGVycyBhdA0KK3RoYXQgdGltZS4gIFRoZSBwYXJ0aWN1bGFyIGV4YW1wbGUgaWxsdXN0cmF0ZWQgd2FzIGEgQmlvZ3JhcGggZmlsbSwNCiticm91Z2h0IGluIHdpdGggYSBmcmFtZS1ncmFiYmVyIGludG8gYSB3aW5kb3cuICBBIHNpbmdsZSB2aWRlb2Rpc2MNCitjb250YWlucyBhYm91dCBmaWZ0eSB0aXRsZXMgYW5kIHBpZWNlcyBvZiBmaWxtIGZyb20gdGhhdCBwZXJpb2QsIGFsbCBvZg0KK05ldyBZb3JrIENpdHkuICBUYWtlbiB0b2dldGhlciwgQU0gYmVsaWV2ZXMsIHRoZXkgcHJvdmlkZSBhbiBpbnRlcmVzdGluZw0KK2RvY3VtZW50YXJ5IHJlc291cmNlLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogVXNpbmcgdGhlIGZyYW1lLWdyYWJiZXIgaW4gQU0gKiBWb2x1bWUgb2YgbWF0ZXJpYWwgcHJvY2Vzc2VkDQorYW5kIHRvIGJlIHByb2Nlc3NlZCAqIFB1cnBvc2Ugb2YgQU0gd2l0aGluIExDICogQ2F0YWxvZ3VpbmcgYW5kIHRoZQ0KK25hdHVyZSBvZiBBTSdzIG1hdGVyaWFsICogU0dNTCBjb2RpbmcgYW5kIHRoZSBxdWVzdGlvbiBvZiBxdWFsaXR5IHZlcnN1cw0KK3F1YW50aXR5ICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRHVyaW5nIHRoZSBxdWVzdGlvbi1hbmQtYW5zd2VyIHBlcmlvZCB0aGF0IGZvbGxvd2VkIEZMRUlTQ0hIQVVFUidzDQorcHJlc2VudGF0aW9uLCBzZXZlcmFsIGNsYXJpZmljYXRpb25zIHdlcmUgbWFkZS4NCisNCitBTSBpcyBicmluZ2luZyBpbiBtb3Rpb24gcGljdHVyZXMgZnJvbSBhIHZpZGVvZGlzYy4gIFRoZSBmcmFtZS1ncmFiYmVyDQorZGV2aWNlcyBjcmVhdGUgYSB3aW5kb3cgb24gYSBjb21wdXRlciBzY3JlZW4sIHdoaWNoIHBlcm1pdHMgdXNlcnMgdG8NCitkaWdpdGl6ZSBhIHNpbmdsZSBmcmFtZSBvZiB0aGUgbW92aWUgb3Igb25lIG9mIHRoZSBwaG90b2dyYXBocy4gIEl0DQorcHJvZHVjZXMgYSBjcnVkZSwgcm91Z2gtYW5kLXJlYWR5IGltYWdlIHRoYXQgaGlnaCBzY2hvb2wgc3R1ZGVudHMgY2FuDQoraW5jb3Jwb3JhdGUgaW50byBwYXBlcnMsIGFuZCB0aGF0IGhhcyB3b3JrZWQgdmVyeSBuaWNlbHkgaW4gdGhpcyB3YXkuDQorDQorQ29tbWVudGluZyBvbiBGTEVJU0NISEFVRVIncyBhc3NlcnRpb24gdGhhdCBBTSB3YXMgbG9va2luZyBtb3JlIGF0DQorc2VhcmNoaW5nIGlkZWFzIHRoYW4gd29yZHMsIE1ZTE9OQVMgYXJndWVkIHRoYXQgd2l0aG91dCB3b3JkcyBhbiBpZGVhDQorZG9lcyBub3QgZXhpc3QuICBGTEVJU0NISEFVRVIgY29uY2VkZWQgdGhhdCBoZSBvdWdodCB0byBoYXZlIGFydGljdWxhdGVkDQoraGlzIHBvaW50IG1vcmUgY2xlYXJseS4gIE1ZTE9OQVMgc3RhdGVkIHRoYXQgdGhleSB3ZXJlIGluIGZhY3QgYm90aA0KK3RhbGtpbmcgYWJvdXQgdGhlIHNhbWUgdGhpbmcuICBCeSBzZWFyY2hpbmcgZm9yIHdvcmRzIGFuZCBieSBmb3JjaW5nDQorcGVvcGxlIHRvIGZvY3VzIG9uIHRoZSB3b3JkLCB0aGUgUGVyc2V1cyBQcm9qZWN0IGZlbHQgdGhhdCB0aGV5IHdvdWxkIGdldA0KK3RoZW0gdG8gdGhlIGlkZWEuICBUaGUgd2F5IG9uZSByZXZpZXdzIHJlc3VsdHMgaXMgdGFpbG9yZWQgbW9yZSB0byBvbmUNCitraW5kIG9mIHVzZXIgdGhhbiBhbm90aGVyLg0KKw0KK0NvbmNlcm5pbmcgdGhlIHRvdGFsIHZvbHVtZSBvZiBtYXRlcmlhbCB0aGF0IGhhcyBiZWVuIHByb2Nlc3NlZCBpbiB0aGlzDQord2F5LCBBTSBhdCB0aGlzIHBvaW50IGhhcyBpbiByZXRyaWV2YWJsZSBmb3JtIHNldmVuIG9yIGVpZ2h0IGNvbGxlY3Rpb25zLA0KK2FsbCBvZiB0aGVtIHBob3RvZ3JhcGhpYy4gIEluIHRoZSBNYWNpbnRvc2ggZW52aXJvbm1lbnQsIGZvciBleGFtcGxlLA0KK3RoZXJlIHByb2JhYmx5IGFyZSAzNSwwMDAtNDAsMDAwIHBob3RvZ3JhcGhzLiAgVGhlIHNvdW5kIHJlY29yZGluZ3MNCitudW1iZXIgc2l4dHkgaXRlbXMuICBUaGUgYnJvYWRzaWRlcyBudW1iZXIgYWJvdXQgMzAwIGl0ZW1zLiAgVGhlcmUgYXJlDQorNTAwIHBvbGl0aWNhbCBjYXJ0b29ucyBpbiB0aGUgZm9ybSBvZiBkcmF3aW5ncy4gIFRoZSBtb3Rpb24gcGljdHVyZXMsIGFzDQoraW5kaXZpZHVhbCBpdGVtcywgbnVtYmVyIHNpeHR5IHRvIHNldmVudHkuDQorDQorQU0gYWxzbyBoYXMgYSBtYW51c2NyaXB0IGNvbGxlY3Rpb24sIHRoZSBsaWZlIGhpc3RvcnkgcG9ydGlvbiBvZiBvbmUgb2YNCit0aGUgZmVkZXJhbCBwcm9qZWN0IHNlcmllcywgd2hpY2ggd2lsbCBjb250YWluIDIsOTAwIGluZGl2aWR1YWwNCitkb2N1bWVudHMsIGFsbCBmaXJzdC1wZXJzb24gbmFycmF0aXZlcy4gIEFNIGhhcyBpbiBwcm9jZXNzIGFib3V0IDM1MA0KK0FmcmljYW4tQW1lcmljYW4gcGFtcGhsZXRzLCBvciBhYm91dCAxMiwwMDAgcHJpbnRlZCBwYWdlcyBmb3IgdGhlIHBlcmlvZA0KKzE4NzAtMTkxMC4gIEFsc28gaW4gdGhlIHdvcmtzIGFyZSBzb21lIDQsMDAwIHBhbm9yYW1pYyBwaG90b2dyYXBocy4gIEFNDQoraGFzIHJlY3ljbGVkIGEgZmFpciBhbW91bnQgb2YgdGhlIHdvcmsgZG9uZSBieSBMQydzIFByaW50cyBhbmQNCitQaG90b2dyYXBocyBEaXZpc2lvbiBkdXJpbmcgdGhlIExpYnJhcnkncyBvcHRpY2FsIGRpc2sgcGlsb3QgcHJvamVjdCBpbg0KK3RoZSAxOTgwcy4gIEZvciBleGFtcGxlLCBhIHNwZWNpYWwgZGl2aXNpb24gb2YgTEMgaGFzIHRvb2xlZCB1cCBhbmQNCit0aG91Z2h0IHRocm91Z2ggYWxsIHRoZSByYW1pZmljYXRpb25zIG9mIGVsZWN0cm9uaWMgcHJlc2VudGF0aW9uIG9mDQorcGhvdG9ncmFwaHMuICBJbmRlZWQsIHRoZXkgYXJlIHdoZWVsaW5nIHRoZW0gb3V0IGluIGdyZWF0IGJhcnJlbCBsb2Fkcy4gDQorVGhlIHB1cnBvc2Ugb2YgQU0gd2l0aGluIHRoZSBMaWJyYXJ5LCBpdCBpcyBob3BlZCwgaXMgdG8gY2F0YWx5emUgc2V2ZXJhbA0KK29mIHRoZSBvdGhlciBzcGVjaWFsIGNvbGxlY3Rpb24gZGl2aXNpb25zIHdoaWNoIGhhdmUgbm8gcGFydGljdWxhcg0KK2V4cGVyaWVuY2Ugd2l0aCwgaW4gc29tZSBjYXNlcywgbWl4ZWQgZmVlbGluZ3MgYWJvdXQsIGFuIGFjdGl2aXR5IHN1Y2ggYXMNCitBTS4gIE1vcmVvdmVyLCBpbiBtYW55IGNhc2VzIHRoZSBkaXZpc2lvbnMgbWF5IGJlIGNoYXJhY3Rlcml6ZWQgYXMgbm90DQorb25seSBsYWNraW5nIGV4cGVyaWVuY2UgaW4gImVsZWN0cm9uaWZ5aW5nIiB0aGluZ3MgYnV0IGFsc28gaW4gYXV0b21hdGVkDQorY2F0YWxvZ3VpbmcuICBNQVJDIGNhdGFsb2d1aW5nIGFzIHByYWN0aWNlZCBpbiB0aGUgVW5pdGVkIFN0YXRlcyBpcw0KK2hlYXZpbHkgd2VpZ2h0ZWQgdG93YXJkIHRoZSBkZXNjcmlwdGlvbiBvZiBtb25vZ3JhcGggYW5kIHNlcmlhbA0KK21hdGVyaWFscywgYnV0IGlzIG11Y2ggdGhpbm5lciB3aGVuIG9uZSBlbnRlcnMgdGhlIHdvcmxkIG9mIG1hbnVzY3JpcHRzDQorYW5kIHRoaW5ncyB0aGF0IGFyZSBoZWxkIGluIHRoZSBMaWJyYXJ5J3MgbXVzaWMgY29sbGVjdGlvbiBhbmQgb3RoZXINCit1bml0cy4gIEluIHJlc3BvbnNlIHRvIGEgY29tbWVudCBieSBMRVNLLCB0aGF0IEFNJ3MgbWF0ZXJpYWwgaXMgdmVyeQ0KK2hlYXZpbHkgcGhvdG9ncmFwaGljLCBhbmQgaXMgc28gcHJpbWFyaWx5IGJlY2F1c2UgaW5kaXZpZHVhbCByZWNvcmRzIGhhdmUNCitiZWVuIG1hZGUgZm9yIGVhY2ggcGhvdG9ncmFwaCwgRkxFSVNDSEhBVUVSIG9ic2VydmVkIHRoYXQgYW4gaXRlbS1sZXZlbA0KK2NhdGFsb2cgcmVjb3JkIGV4aXN0cywgZm9yIGV4YW1wbGUsIGZvciBlYWNoIHBob3RvZ3JhcGggaW4gdGhlIERldHJvaXQNCitQdWJsaXNoaW5nIGNvbGxlY3Rpb24gb2YgMjUsMDAwIHBpY3R1cmVzLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIEZlZGVyYWwNCitXcml0ZXJzIFByb2plY3QsIGZvciB3aGljaCBuZWFybHkgMywwMDAgZG9jdW1lbnRzIGV4aXN0LCByZXByZXNlbnRpbmcNCitpbmZvcm1hdGlvbiBmcm9tIHR3ZW50eS1zaXggZGlmZmVyZW50IHN0YXRlcywgQU0gd2l0aCB0aGUgYXNzaXN0YW5jZSBvZg0KK0thcmVuIFNUVUFSVCBvZiB0aGUgTWFudXNjcmlwdCBEaXZpc2lvbiB3aWxsIGF0dGVtcHQgdG8gZmluZCBzb21lIHdheSBub3QNCitvbmx5IHRvIGhhdmUgYSBjb2xsZWN0aW9uLWxldmVsIHJlY29yZCBidXQgcGVyaGFwcyBhIE1BUkMgcmVjb3JkIGZvciBlYWNoDQorc3RhdGUsIHdoaWNoIHdpbGwgdGhlbiBzZXJ2ZSBhcyBhbiB1bWJyZWxsYSBmb3IgdGhlIDEwMC0yMDAgZG9jdW1lbnRzDQordGhhdCBjb21lIHVuZGVyIGl0LiAgQnV0IHRoYXQgZHJhbWEgcmVtYWlucyB0byBiZSBlbmFjdGVkLiAgVGhlIEFNIHN0YWZmDQoraXMgY29uc2VydmF0aXZlIGFuZCBjbGluZ3MgdG8gY2F0YWxvZ3VpbmcsIHRob3VnaCBvZiBjb3Vyc2UgdmlzaXRvcnMgdG91dA0KK2FydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBuZXVyYWwgbmV0d29ya3MgaW4gYSBtYW5uZXIgdGhhdCBzdWdnZXN0cyB0aGF0DQorcGVyaGFwcyBvbmUgbmVlZCBub3QgaGF2ZSBjYXRhbG9ndWluZyBvciB0aGF0IG11Y2ggb2YgaXQgY291bGQgYmUgcHV0IGFzaWRlLg0KKw0KK1RoZSBtYXR0ZXIgb2YgU0dNTCBjb2RpbmcsIEZMRUlTQ0hIQVVFUiBjb25jZWRlZCwgcmV0dXJuZWQgdGhlIGRpc2N1c3Npb24NCit0byB0aGUgZWFybGllciB0cmVhdGVkIHF1ZXN0aW9uIG9mIHF1YWxpdHkgdmVyc3VzIHF1YW50aXR5IGluIHRoZSBMaWJyYXJ5DQorb2YgQ29uZ3Jlc3MuICBPZiBjb3Vyc2UsIHRleHQgY29udmVyc2lvbiBjYW4gYmUgZG9uZSB3aXRoIDEwMC1wZXJjZW50DQorYWNjdXJhY3ksIGJ1dCBpdCBtZWFucyB0aGF0IHdoZW4gb25lJ3MgaG9sZGluZ3MgYXJlIGFzIHZhc3QgYXMgTEMncyBvbmx5DQorYSB0aW55IGFtb3VudCB3aWxsIGJlIGV4cG9zZWQsIHdoZXJlYXMgcGVybWl0dGluZyBsb3dlciBsZXZlbHMgb2YNCithY2N1cmFjeSBjYW4gbGVhZCB0byBleHBvc2luZyBvciBzaGFyaW5nIGxhcmdlciBhbW91bnRzLCBidXQgd2l0aCB0aGUNCitxdWFsaXR5IGNvcnJlc3BvbmRpbmdseSBpbXBhaXJlZC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorVFdPSElHICogQSBjb250cmFyeSBleHBlcmllbmNlIGNvbmNlcm5pbmcgZWxlY3Ryb25pYyBvcHRpb25zICogVm9sdW1lIG9mDQorbWF0ZXJpYWwgaW4gdGhlIFdhc2hpbmd0b24gcGFwZXJzIGFuZCBhIHN1Z2dlc3Rpb24gb2YgRGF2aWQgUGFja2FyZCAqDQorSW1wbGljYXRpb25zIG9mIFBhY2thcmQncyBzdWdnZXN0aW9uICogVHJhbnNjcmliaW5nIHRoZSBkb2N1bWVudHMgZm9yIHRoZQ0KK0NELVJPTSAqIEFjY3VyYWN5IG9mIHRyYW5zY3JpcHRpb25zICogVGhlIENELVJPTSBlZGl0aW9uIG9mIHRoZSBGb3VuZGluZw0KK0ZhdGhlcnMgZG9jdW1lbnRzICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRmluZGluZyBlbmNvdXJhZ2VtZW50IGluIGEgY29tbWVudCBvZiBNSUNIRUxTT04ncyBmcm9tIHRoZSBtb3JuaW5nDQorc2Vzc2lvbi0tdGhhdCBudW1lcm91cyBwZW9wbGUgaW4gdGhlIGh1bWFuaXRpZXMgd2VyZSBjaG9vc2luZyBlbGVjdHJvbmljDQorb3B0aW9ucyB0byBkbyB0aGVpciB3b3JrLS1Eb3JvdGh5IFRXT0hJRywgZWRpdG9yLCBUaGUgUGFwZXJzIG9mIEdlb3JnZQ0KK1dhc2hpbmd0b24sIG9wZW5lZCBoZXIgaWxsdXN0cmF0ZWQgdGFsayBieSBub3RpbmcgdGhhdCBoZXIgZXhwZXJpZW5jZQ0KK3dpdGggbGl0ZXJhcnkgc2Nob2xhcnMgYW5kIG51bWVyb3VzIHBlb3BsZSBpbiBlZGl0aW5nIHdhcyBjb250cmFyeSB0bw0KK01JQ0hFTFNPTidzLiAgVFdPSElHIGVtcGhhc2l6ZWQgbGl0ZXJhcnkgc2Nob2xhcnMnIGNvbXBsZXRlIGlnbm9yYW5jZSBvZg0KK3RoZSB0ZWNobm9sb2dpY2FsIG9wdGlvbnMgYXZhaWxhYmxlIHRvIHRoZW0gb3IgdGhlaXIgcmVsdWN0YW5jZSBvciwgaW4NCitzb21lIGNhc2VzLCB0aGVpciBkb3ducmlnaHQgaG9zdGlsaXR5IHRvd2FyZCB0aGVzZSBvcHRpb25zLg0KKw0KK0FmdGVyIHByb3ZpZGluZyBhbiBvdmVydmlldyBvZiB0aGUgZml2ZSBGb3VuZGluZyBGYXRoZXJzIHByb2plY3RzDQorKEplZmZlcnNvbiBhdCBQcmluY2V0b24sIEZyYW5rbGluIGF0IFlhbGUsIEpvaG4gQWRhbXMgYXQgdGhlDQorTWFzc2FjaHVzZXR0cyBIaXN0b3JpY2FsIFNvY2lldHksIGFuZCBNYWRpc29uIGRvd24gdGhlIGhhbGwgZnJvbSBoZXIgYXQNCit0aGUgVW5pdmVyc2l0eSBvZiBWaXJnaW5pYSksIFRXT0hJRyBvYnNlcnZlZCB0aGF0IHRoZSBXYXNoaW5ndG9uIHBhcGVycywNCitsaWtlIGFsbCBvZiB0aGUgcHJvamVjdHMsIGluY2x1ZGUgYm90aCBzaWRlcyBvZiB0aGUgV2FzaGluZ3Rvbg0KK2NvcnJlc3BvbmRlbmNlIGFuZCBkZWFsIHdpdGggc29tZSAxMzUsMDAwIGRvY3VtZW50cyB0byBiZSBwdWJsaXNoZWQgd2l0aA0KK2V4dGVuc2l2ZSBhbm5vdGF0aW9uIGluIGVpZ2h0eSB0byBlaWdodHktZml2ZSB2b2x1bWVzLCBhIHByb2plY3QgdGhhdA0KK3dpbGwgbm90IGJlIGNvbXBsZXRlZCB1bnRpbCB3ZWxsIGludG8gdGhlIG5leHQgY2VudHVyeS4gIFRodXMsIGl0IHdhcw0KK3dpdGggY29uc2lkZXJhYmxlIGVudGh1c2lhc20gc2V2ZXJhbCB5ZWFycyBhZ28gdGhhdCB0aGUgV2FzaGluZ3RvbiBQYXBlcnMNCitQcm9qZWN0IChXUFApIGdyZWV0ZWQgRGF2aWQgUGFja2FyZCdzIHN1Z2dlc3Rpb24gdGhhdCB0aGUgcGFwZXJzIG9mIHRoZQ0KK0ZvdW5kaW5nIEZhdGhlcnMgY291bGQgYmUgcHVibGlzaGVkIGVhc2lseSBhbmQgaW5leHBlbnNpdmVseSwgYW5kIHRvIHRoZQ0KK2dyZWF0IGJlbmVmaXQgb2YgQW1lcmljYW4gc2Nob2xhcnNoaXAsIHZpYSBDRC1ST00uDQorDQorSW4gcHJhZ21hdGljIHRlcm1zLCBmdW5kaW5nIGZyb20gdGhlIFBhY2thcmQgRm91bmRhdGlvbiB3b3VsZCBleHBlZGl0ZQ0KK3RoZSB0cmFuc2NyaXB0aW9uIG9mIHRob3VzYW5kcyBvZiBkb2N1bWVudHMgd2FpdGluZyB0byBiZSBwdXQgb24gZGlzayBpbg0KK3RoZSBXUFAgb2ZmaWNlcy4gIEZ1cnRoZXIsIHNpbmNlIHRoZSBjb3N0cyBvZiBjb2xsZWN0aW5nLCBlZGl0aW5nLCBhbmQNCitjb252ZXJ0aW5nIHRoZSBGb3VuZGluZyBGYXRoZXJzIGRvY3VtZW50cyBpbnRvIGxldHRlcnByZXNzIGVkaXRpb25zIHdlcmUNCitydW5uaW5nIGludG8gdGhlIG1pbGxpb25zIG9mIGRvbGxhcnMsIGFuZCB0aGUgY29uc2lkZXJhYmxlIHN0YWZmcw0KK2ludm9sdmVkIGluIGFsbCBvZiB0aGVzZSBwcm9qZWN0cyB3ZXJlIGRldm90aW5nIHRoZWlyIGNhcmVlcnMgdG8NCitwcm9kdWNpbmcgdGhlIHdvcmssIHRoZSBQYWNrYXJkIEZvdW5kYXRpb24ncyBzdWdnZXN0aW9uIGhhZCBhDQorcmV2b2x1dGlvbmFyeSBhc3BlY3Q6ICBUcmFuc2NyaXB0aW9ucyBvZiB0aGUgZW50aXJlIGNvcnB1cyBvZiB0aGUNCitGb3VuZGluZyBGYXRoZXJzIHBhcGVycyB3b3VsZCBiZSBhdmFpbGFibGUgb24gQ0QtUk9NIHRvIHB1YmxpYyBhbmQNCitjb2xsZWdlIGxpYnJhcmllcywgZXZlbiBoaWdoIHNjaG9vbHMsIGF0IGEgZnJhY3Rpb24gb2YgdGhlIGNvc3QtLQ0KKyQxMDAtJDE1MCBmb3IgdGhlIGFubnVhbCBsaWNlbnNlIGZlZS0tdG8gcHJvZHVjZSBhIGxpbWl0ZWQgdW5pdmVyc2l0eQ0KK3ByZXNzIHJ1biBvZiAxLDAwMCBvZiBlYWNoIHZvbHVtZSBvZiB0aGUgcHVibGlzaGVkIHBhcGVycyBhdCAkNDUtJDE1MCBwZXINCitwcmludGVkIHZvbHVtZS4gIEdpdmVuIHRoZSBjdXJyZW50IGJ1ZGdldCBjcnVuY2ggaW4gZWR1Y2F0aW9uYWwgc3lzdGVtcw0KK2FuZCB0aGUgY29ycmVzcG9uZGluZyBjb25zdHJhaW50cyBvbiBsaWJyYXJpYW5zIGluIHNtYWxsZXIgaW5zdGl0dXRpb25zDQord2hvIHdpc2ggdG8gYWRkIHRoZXNlIHZvbHVtZXMgdG8gdGhlaXIgY29sbGVjdGlvbnMsIHByb2R1Y2luZyB0aGUNCitkb2N1bWVudHMgb24gQ0QtUk9NIHdvdWxkIGxpa2VseSBvcGVuIGEgZ3JlYXRseSBleHBhbmRlZCBhdWRpZW5jZSBmb3IgdGhlDQorcGFwZXJzLiAgVFdPSElHIHN0cmVzc2VkLCBob3dldmVyLCB0aGF0IGRldmVsb3BtZW50IG9mIHRoZSBGb3VuZGluZw0KK0ZhdGhlcnMgQ0QtUk9NIGlzIHN0aWxsIGluIGl0cyBpbmZhbmN5LiAgU2VyaW91cyBzb2Z0d2FyZSBwcm9ibGVtcyByZW1haW4NCit0byBiZSByZXNvbHZlZCBiZWZvcmUgdGhlIG1hdGVyaWFsIGNhbiBiZSBwdXQgaW50byByZWFkYWJsZSBmb3JtLiAgDQorDQorRnVuZGluZyBmcm9tIHRoZSBQYWNrYXJkIEZvdW5kYXRpb24gcmVzdWx0ZWQgaW4gYSBtYWpvciBwdXNoIHRvDQordHJhbnNjcmliZSB0aGUgNzUsMDAwIG9yIHNvIGRvY3VtZW50cyBvZiB0aGUgV2FzaGluZ3RvbiBwYXBlcnMgcmVtYWluaW5nDQordG8gYmUgdHJhbnNjcmliZWQgb250byBjb21wdXRlciBkaXNrcy4gIFNsaWRlcyBpbGx1c3RyYXRlZCBzZXZlcmFsIG9mIHRoZQ0KK3Byb2JsZW1zIGVuY291bnRlcmVkLCBmb3IgZXhhbXBsZSwgdGhlIHByZXNlbnQgaW5hYmlsaXR5IG9mIENELVJPTSB0bw0KK2luZGljYXRlIHRoZSBjcm9zcy1vdXRzIChkZWxldGVkIG1hdGVyaWFsKSBpbiBlaWdodGVlbnRoIGNlbnR1cnkNCitkb2N1bWVudHMuICBUV09ISUcgbmV4dCBkZXNjcmliZWQgZG9jdW1lbnRzIGZyb20gdmFyaW91cyBwZXJpb2RzIGluIHRoZQ0KK2VpZ2h0ZWVudGggY2VudHVyeSB0aGF0IGhhdmUgYmVlbiB0cmFuc2NyaWJlZCBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIGFuZA0KK2RlbGl2ZXJlZCB0byB0aGUgUGFja2FyZCBvZmZpY2VzIGluIENhbGlmb3JuaWEsIHdoZXJlIHRoZXkgYXJlIGNvbnZlcnRlZA0KK3RvIHRoZSBDRC1ST00sIGEgcHJvY2VzcyB0aGF0IGlzIGV4cGVjdGVkIHRvIGNvbnN1bWUgZml2ZSB5ZWFycyB0bw0KK2NvbXBsZXRlICh0aGF0IGlzLCByZWNrb25pbmcgZnJvbSBEYXZpZCBQYWNrYXJkJ3Mgc3VnZ2VzdGlvbiBtYWRlIHNldmVyYWwNCit5ZWFycyBhZ28sIHVudGlsIGFib3V0IEp1bHkgMTk5NCkuICBUV09ISUcgZm91bmQgYW4gZW5jb3VyYWdpbmcNCitpbmRpY2F0aW9uIG9mIHRoZSBwcm9qZWN0J3MgYmVuZWZpdHMgaW4gdGhlIG9uZ29pbmcgdXNlIG1hZGUgYnkgc2Nob2xhcnMNCitvZiB0aGUgc2VhcmNoIGZ1bmN0aW9ucyBvZiB0aGUgQ0QtUk9NLCBwYXJ0aWN1bGFybHkgaW4gcmVkdWNpbmcgdGhlIHRpbWUNCitzcGVudCBpbiBtYW51YWxseSB0dXJuaW5nIHRoZSBwYWdlcyBvZiB0aGUgV2FzaGluZ3RvbiBwYXBlcnMuDQorDQorVFdPSElHIG5leHQgZnVybmlzaGVkIGRldGFpbHMgY29uY2VybmluZyB0aGUgYWNjdXJhY3kgb2YgdHJhbnNjcmlwdGlvbnMuIA0KK0ZvciBpbnN0YW5jZSwgdGhlIGluc2VydGlvbiBvZiB0aG91c2FuZHMgb2YgZG9jdW1lbnRzIG9uIHRoZSBDRC1ST00NCitjdXJyZW50bHkgZG9lcyBub3QgcGVybWl0IGVhY2ggZG9jdW1lbnQgdG8gYmUgdmVyaWZpZWQgYWdhaW5zdCB0aGUNCitvcmlnaW5hbCBtYW51c2NyaXB0IHNldmVyYWwgdGltZXMgYXMgaW4gdGhlIGNhc2Ugb2YgZG9jdW1lbnRzIHRoYXQgYXBwZWFyDQoraW4gdGhlIHB1Ymxpc2hlZCBlZGl0aW9uLiAgSG93ZXZlciwgdGhlIHRyYW5zY3JpcHRpb25zIHJlY2VpdmUgYSBjdXJzb3J5DQorY2hlY2sgZm9yIG9idmlvdXMgdHlwb3MsIHRoZSBtaXNzcGVsbGluZ3Mgb2YgcHJvcGVyIG5hbWVzLCBhbmQgb3RoZXINCitlcnJvcnMgZnJvbSB0aGUgV1BQIENELVJPTSBlZGl0b3IuICBFdmVudHVhbGx5LCBhbGwgZG9jdW1lbnRzIHRoYXQgYXBwZWFyDQoraW4gdGhlIGVsZWN0cm9uaWMgdmVyc2lvbiB3aWxsIGJlIGNoZWNrZWQgYnkgcHJvamVjdCBlZGl0b3JzLiAgQWx0aG91Z2gNCit0aGlzIHByb2Nlc3MgaGFzIG1ldCB3aXRoIG9wcG9zaXRpb24gZnJvbSBzb21lIG9mIHRoZSBlZGl0b3JzIG9uIHRoZQ0KK2dyb3VuZHMgdGhhdCBpbXBlcmZlY3Qgd29yayBtYXkgbGVhdmUgdGhlaXIgb2ZmaWNlcywgdGhlIGFkdmFudGFnZXMgaW4NCittYWtpbmcgdGhpcyBtYXRlcmlhbCBhdmFpbGFibGUgYXMgYSByZXNlYXJjaCB0b29sIG91dHdlaWdoICBmZWFycyBhYm91dCB0aGUNCittaXNzcGVsbGluZyBvZiBwcm9wZXIgbmFtZXMgYW5kIG90aGVyIHJlbGF0aXZlbHkgbWlub3IgZWRpdG9yaWFsIG1hdHRlcnMuDQorDQorQ29tcGxldGlvbiBvZiBhbGwgZml2ZSBGb3VuZGluZyBGYXRoZXJzIHByb2plY3RzIChpLmUuLCByZXRyaWV2YWJpbGl0eQ0KK2FuZCBzZWFyY2hhYmlsaXR5IG9mIGFsbCBvZiB0aGUgZG9jdW1lbnRzIGJ5IHByb3BlciBuYW1lcywgYWx0ZXJuYXRlDQorc3BlbGxpbmdzLCBvciB2YXJpZXRpZXMgb2Ygc3ViamVjdHMpIHdpbGwgcHJvdmlkZSBvbmUgb2YgdGhlIHJpY2hlc3QNCitzb3VyY2VzIG9mIHRoaXMgc2l6ZSBmb3IgdGhlIGhpc3Rvcnkgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgaW4gdGhlIGxhdHRlcg0KK3BhcnQgb2YgdGhlIGVpZ2h0ZWVudGggY2VudHVyeS4gIEZ1cnRoZXIsIHB1YmxpY2F0aW9uIG9uIENELVJPTSB3aWxsDQorYWxsb3cgZWRpdG9ycyB0byBpbmNsdWRlIGV2ZW4gbWludXRpYWUsIHN1Y2ggYXMgbGF1bmRyeSBsaXN0cywgbm90DQoraW5jbHVkZWQgaW4gdGhlIHByaW50ZWQgdm9sdW1lcy4NCisNCitJdCBzZWVtcyBwb3NzaWJsZSB0aGF0IHRoZSBleHRlbnNpdmUgYW5ub3RhdGlvbiBwcm92aWRlZCBpbiB0aGUgcHJpbnRlZA0KK3ZvbHVtZXMgZXZlbnR1YWxseSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBDRC1ST00gZWRpdGlvbiwgcGVuZGluZw0KK25lZ290aWF0aW9ucyB3aXRoIHRoZSBwdWJsaXNoZXJzIG9mIHRoZSBwYXBlcnMuICBBdCB0aGUgbW9tZW50LCB0aGUNCitGb3VuZGluZyBGYXRoZXJzIENELVJPTSBpcyBhY2Nlc3NpYmxlIG9ubHkgb24gdGhlIElCWUNVUywgYSBjb21wdXRlcg0KK2RldmVsb3BlZCBvdXQgb2YgdGhlIFRoZXNhdXJ1cyBMaW5ndWFlIEdyYWVjYWUgcHJvamVjdCBhbmQgZGVzaWduZWQgZm9yDQordGhlIHVzZSBvZiBjbGFzc2ljYWwgc2Nob2xhcnMuICBUaGVyZSBhcmUgcGVyaGFwcyA0MDAgSUJZQ1VTIGNvbXB1dGVycyBpbg0KK3RoZSBjb3VudHJ5LCBtb3N0IG9mIHdoaWNoIGFyZSBpbiB1bml2ZXJzaXR5IGNsYXNzaWNzIGRlcGFydG1lbnRzLiANCitVbHRpbWF0ZWx5LCBpdCBpcyBhbnRpY2lwYXRlZCB0aGF0IHRoZSBDRC1ST00gZWRpdGlvbiBvZiB0aGUgRm91bmRpbmcNCitGYXRoZXJzIGRvY3VtZW50cyB3aWxsIHJ1biBvbiBhbnkgSUJNLWNvbXBhdGlibGUgb3IgTWFjaW50b3NoIGNvbXB1dGVyDQord2l0aCBhIENELVJPTSBkcml2ZS4gIE51bWVyb3VzIGNoYW5nZXMgaW4gdGhlIHNvZnR3YXJlIHdpbGwgYWxzbyBvY2N1cg0KK2JlZm9yZSB0aGUgcHJvamVjdCBpcyBjb21wbGV0ZWQuICAoRWRpdG9yJ3Mgbm90ZTogYW4gSUJZQ1VTIHdhcw0KK3VuYXZhaWxhYmxlIHRvIGRlbW9uc3RyYXRlIHRoZSBDRC1ST00uKQ0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogU2V2ZXJhbCBhZGRpdGlvbmFsIGZlYXR1cmVzIG9mIFdQUCBjbGFyaWZpZWQgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitEaXNjdXNzaW9uIGZvbGxvd2luZyBUV09ISUcncyBwcmVzZW50YXRpb24gc2VydmVkIHRvIGNsYXJpZnkgc2V2ZXJhbA0KK2FkZGl0aW9uYWwgZmVhdHVyZXMsIGluY2x1ZGluZyAoMSkgdGhhdCB0aGUgcHJvamVjdCdzIHByaW1hcnkNCitpbnRlbGxlY3R1YWwgcHJvZHVjdCBjb25zaXN0cyBpbiB0aGUgZWxlY3Ryb25pYyB0cmFuc2NyaXB0aW9uIG9mIHRoZQ0KK21hdGVyaWFsOyAoMikgdGhhdCB0aGUgdGV4dCB0cmFuc21pdHRlZCB0byB0aGUgQ0QtUk9NIHBlb3BsZSBpcyBub3QNCittYXJrZWQgdXA7ICgzKSB0aGF0IGNhdGFsb2dpbmcgYW5kIHN1YmplY3QtaW5kZXhpbmcgb2YgdGhlIG1hdGVyaWFsDQorcmVtYWluIHRvIGJlIHdvcmtlZCBvdXQgKHRob3VnaCBhdCB0aGlzIHBvaW50IG1hdGVyaWFsIGNhbiBiZSByZXRyaWV2ZWQNCitieSBuYW1lKTsgYW5kICg0KSB0aGF0IGJlY2F1c2UgYWxsIHRoZSBzZWFyY2hpbmcgaXMgZG9uZSBpbiB0aGUgaGFyZHdhcmUsDQordGhlIElCWUNVUyBpcyBkZXNpZ25lZCB0byByZWFkIGEgQ0QtUk9NIHdoaWNoIGNvbnRhaW5zIG9ubHkgc2VxdWVudGlhbA0KK3RleHQgZmlsZXMuICBUZWNobmljYWxseSwgaXQgdGhlbiBiZWNvbWVzIHZlcnkgZWFzeSB0byByZWFkIHRoZSBtYXRlcmlhbA0KK29mZiBhbmQgcHV0IGl0IG9uIGFub3RoZXIgZGV2aWNlLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitMRUJST04gKiBPdmVydmlldyBvZiB0aGUgaGlzdG9yeSBvZiB0aGUgam9pbnQgcHJvamVjdCBiZXR3ZWVuIEFBQVMgYW5kDQorT0NMQyAqIFNldmVyYWwgcHJhY3RpY2VzIHRoZSBvbi1saW5lIGVudmlyb25tZW50IHNoYXJlcyB3aXRoIHRyYWRpdGlvbmFsDQorcHVibGlzaGluZyBvbiBoYXJkIGNvcHkgKiBTZXZlcmFsIHRlY2huaWNhbCBhbmQgYmVoYXZpb3JhbCBiYXJyaWVycyB0bw0KK2VsZWN0cm9uaWMgcHVibGlzaGluZyAqIEhvdyBBQUFTIGFuZCBPQ0xDIGFycml2ZWQgYXQgdGhlIHN1YmplY3Qgb2YNCitjbGluaWNhbCB0cmlhbHMgKiBBZHZhbnRhZ2VzIG9mIHRoZSBlbGVjdHJvbmljIGZvcm1hdCBhbmQgb3RoZXIgZmVhdHVyZXMNCitvZiBPSkNDVCAqIEFuIGlsbHVzdHJhdGVkIHRvdXIgb2YgdGhlIGpvdXJuYWwgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitNYXJpYSBMRUJST04sIG1hbmFnaW5nIGVkaXRvciwgVGhlIE9ubGluZSBKb3VybmFsIG9mIEN1cnJlbnQgQ2xpbmljYWwNCitUcmlhbHMgKE9KQ0NUKSwgcHJlc2VudGVkIGFuIGlsbHVzdHJhdGVkIG92ZXJ2aWV3IG9mIHRoZSBoaXN0b3J5IG9mIHRoZQ0KK2pvaW50IHByb2plY3QgYmV0d2VlbiB0aGUgQW1lcmljYW4gQXNzb2NpYXRpb24gZm9yIHRoZSBBZHZhbmNlbWVudCBvZg0KK1NjaWVuY2UgKEFBQVMpIGFuZCB0aGUgT25saW5lIENvbXB1dGVyIExpYnJhcnkgQ2VudGVyLCBJbmMuIChPQ0xDKS4gIFRoZQ0KK2pvaW50IHZlbnR1cmUgYmV0d2VlbiBBQUFTIGFuZCBPQ0xDIG93ZXMgaXRzIGJlZ2lubmluZyB0byBhDQorcmVvcmdhbml6YXRpb24gbGF1bmNoZWQgYnkgdGhlIG5ldyBjaGllZiBleGVjdXRpdmUgb2ZmaWNlciBhdCBPQ0xDIGFib3V0DQordGhyZWUgeWVhcnMgYWdvIGFuZCBjb21iaW5lcyB0aGUgc3RyZW5ndGhzIG9mIHRoZXNlIHR3byBkaXNwYXJhdGUNCitvcmdhbml6YXRpb25zLiAgSW4gc2hvcnQsIE9KQ0NUIHJlcHJlc2VudHMgdGhlIHByb2Nlc3Mgb2Ygc2Nob2xhcmx5DQorcHVibGlzaGluZyBvbiBsaW5lLg0KKw0KK0xFQlJPTiBuZXh0IGRpc2N1c3NlZCBzZXZlcmFsIHByYWN0aWNlcyB0aGUgb24tbGluZSBlbnZpcm9ubWVudCBzaGFyZXMNCit3aXRoIHRyYWRpdGlvbmFsIHB1Ymxpc2hpbmcgb24gaGFyZCBjb3B5LS1mb3IgZXhhbXBsZSwgcGVlciByZXZpZXcgb2YNCittYW51c2NyaXB0cy0tdGhhdCBhcmUgaGlnaGx5IGltcG9ydGFudCBpbiB0aGUgYWNhZGVtaWMgd29ybGQuICBMRUJST04NCitub3RlZCBpbiBwYXJ0aWN1bGFyIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2l0YXRpb24gY291bnRzIGZvciB0ZW51cmUNCitjb21taXR0ZWVzIGFuZCBncmFudHMgY29tbWl0dGVlcy4gIEluIHRoZSB0cmFkaXRpb25hbCBoYXJkLWNvcHkNCitlbnZpcm9ubWVudCwgY2l0YXRpb24gY291bnRzIGFyZSByZWFkaWx5IGRlbW9uc3RyYWJsZSwgd2hlcmVhcyB0aGUNCitvbi1saW5lIGVudmlyb25tZW50IHJlcHJlc2VudHMgYW4gZXRoZXJlYWwgbWVkaXVtIHRvIG1vc3QgYWNhZGVtaWNzLg0KKw0KK0xFQlJPTiByZW1hcmtlZCBzZXZlcmFsIHRlY2huaWNhbCBhbmQgYmVoYXZpb3JhbCBiYXJyaWVycyB0byBlbGVjdHJvbmljDQorcHVibGlzaGluZywgZm9yIGluc3RhbmNlLCB0aGUgcHJvYmxlbXMgaW4gdHJhbnNtaXNzaW9uIGNyZWF0ZWQgYnkgc3BlY2lhbA0KK2NoYXJhY3RlcnMgb3IgYnkgY29tcGxleCBncmFwaGljcyBhbmQgaGFsZnRvbmVzLiAgSW4gYWRkaXRpb24sIHNoZSBub3RlZA0KK2Vjb25vbWljIGxpbWl0YXRpb25zIHN1Y2ggYXMgdGhlIHN0b3JhZ2UgY29zdHMgb2YgbWFpbnRhaW5pbmcgYmFjayBpc3N1ZXMNCithbmQgbWFya2V0IG9yIGF1ZGllbmNlIGVkdWNhdGlvbi4NCisNCitNYW51c2NyaXB0cyBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gT0pDQ1QsIExFQlJPTiBleHBsYWluZWQsIGJlY2F1c2UgaXQgaXMNCitub3QgYSBidWxsZXRpbiBib2FyZCBvciBFLW1haWwsIGZvcm1zIG9mIGVsZWN0cm9uaWMgdHJhbnNtaXNzaW9uIG9mDQoraW5mb3JtYXRpb24gdGhhdCBoYXZlIGNyZWF0ZWQgYW4gYW1iaWVuY2UgY2xvdWRpbmcgcGVvcGxlJ3MgdW5kZXJzdGFuZGluZw0KK29mIHdoYXQgdGhlIGpvdXJuYWwgaXMgYXR0ZW1wdGluZyB0byBkby4gIE9KQ0NULCB3aGljaCBwdWJsaXNoZXMNCitwZWVyLXJldmlld2VkIG1lZGljYWwgYXJ0aWNsZXMgZGVhbGluZyB3aXRoIHRoZSBzdWJqZWN0IG9mIGNsaW5pY2FsDQordHJpYWxzLCBpbmNsdWRlcyB0ZXh0LCB0YWJ1bGFyIG1hdGVyaWFsLCBhbmQgZ3JhcGhpY3MsIGFsdGhvdWdoIGF0IHRoaXMNCit0aW1lIGl0IGNhbiB0cmFuc21pdCBvbmx5IGxpbmUgaWxsdXN0cmF0aW9ucy4NCisNCitOZXh0LCBMRUJST04gZGVzY3JpYmVkIGhvdyBBQUFTIGFuZCBPQ0xDIGFycml2ZWQgYXQgdGhlIHN1YmplY3Qgb2YNCitjbGluaWNhbCB0cmlhbHM6ICBJdCBpcyAxKSBhIGhpZ2hseSBzdGF0aXN0aWNhbCBkaXNjaXBsaW5lIHRoYXQgMikgZG9lcw0KK25vdCByZXF1aXJlIGhhbGZ0b25lcyBidXQgY2FuIHNhdGlzZnkgdGhlIG5lZWRzIG9mIGl0cyBhdWRpZW5jZSB3aXRoIGxpbmUNCitpbGx1c3RyYXRpb25zIGFuZCBncmFwaGljIG1hdGVyaWFsLCBhbmQgMykgdGhlcmUgaXMgYSBuZWVkIGZvciB0aGUgc3BlZWR5DQorZGlzc2VtaW5hdGlvbiBvZiBoaWdoLXF1YWxpdHkgcmVzZWFyY2ggcmVzdWx0cy4gIENsaW5pY2FsIHRyaWFscyBhcmUNCityZXNlYXJjaCBhY3Rpdml0aWVzIHRoYXQgaW52b2x2ZSB0aGUgYWRtaW5pc3RyYXRpb24gb2YgYSB0ZXN0IHRyZWF0bWVudA0KK3RvIHNvbWUgZXhwZXJpbWVudGFsIHVuaXQgaW4gb3JkZXIgdG8gdGVzdCBpdHMgdXNlZnVsbmVzcyBiZWZvcmUgaXQgaXMNCittYWRlIGF2YWlsYWJsZSB0byB0aGUgZ2VuZXJhbCBwb3B1bGF0aW9uLiAgTEVCUk9OIHByb2NlZWRlZCB0byBnaXZlDQorYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBPSkNDVCBjb25jZXJuaW5nIGl0cyBlZGl0b3ItaW4tY2hpZWYsIGVkaXRvcmlhbA0KK2JvYXJkLCBlZGl0b3JpYWwgY29udGVudCwgYW5kIHRoZSB0eXBlcyBvZiBhcnRpY2xlcyBpdCBwdWJsaXNoZXMNCisoaW5jbHVkaW5nIHBlZXItcmV2aWV3ZWQgcmVzZWFyY2ggcmVwb3J0cyBhbmQgcmV2aWV3cyksIGFzIHdlbGwgYXMNCitmZWF0dXJlcyBzaGFyZWQgYnkgb3RoZXIgdHJhZGl0aW9uYWwgaGFyZC1jb3B5IGpvdXJuYWxzLg0KKw0KK0Ftb25nIHRoZSBhZHZhbnRhZ2VzIG9mIHRoZSBlbGVjdHJvbmljIGZvcm1hdCBhcmUgZmFzdGVyIGRpc3NlbWluYXRpb24gb2YNCitpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIHJhdyBkYXRhLCBhbmQgdGhlIGFic2VuY2Ugb2Ygc3BhY2UgY29uc3RyYWludHMNCitiZWNhdXNlIHBhZ2VzIGRvIG5vdCBleGlzdC4gIChUaGlzIGxhdHRlciBmYWN0IGNyZWF0ZXMgYW4gaW50ZXJlc3RpbmcNCitzaXR1YXRpb24gd2hlbiBpdCBjb21lcyB0byBjaXRhdGlvbnMuKSAgTm9yIGFyZSB0aGVyZSBhbnkgaXNzdWVzLiAgQUFBUydzDQorY2FwYWNpdHkgdG8gZG93bmxvYWQgbWF0ZXJpYWxzIGRpcmVjdGx5IGZyb20gdGhlIGpvdXJuYWwgdG8gYQ0KK3N1YnNjcmliZXIncyBwcmludGVyLCBoYXJkIGRyaXZlLCBvciBmbG9wcHkgZGlzayBoZWxwcyBlbnN1cmUgaGlnaGx5DQorYWNjdXJhdGUgdHJhbnNjcmlwdGlvbi4gIE90aGVyIGZlYXR1cmVzIG9mIE9KQ0NUIGluY2x1ZGUgb24tc2NyZWVuIGFsZXJ0cw0KK3RoYXQgYWxsb3cgbGlua2FnZSBvZiBzdWJzZXF1ZW50bHkgcHVibGlzaGVkIGRvY3VtZW50cyB0byB0aGUgb3JpZ2luYWwNCitkb2N1bWVudHM7IG9uLWxpbmUgc2VhcmNoaW5nIGJ5IHN1YmplY3QsIGF1dGhvciwgdGl0bGUsIGV0Yy47IGluZGV4aW5nIG9mDQorZXZlcnkgc2luZ2xlIHdvcmQgdGhhdCBhcHBlYXJzIGluIGFuIGFydGljbGU7IHZpZXdpbmcgYWNjZXNzIHRvIGFuDQorYXJ0aWNsZSBieSBjb21wb25lbnQgKGFic3RyYWN0LCBmdWxsIHRleHQsIG9yIGdyYXBocyk7IG51bWJlcmVkDQorcGFyYWdyYXBocyB0byByZXBsYWNlIHBhZ2UgY291bnRzOyBwdWJsaWNhdGlvbiBpbiBTY2llbmNlIGV2ZXJ5IHRoaXJ0eQ0KK2RheXMgb2YgaW5kZXhpbmcgb2YgYWxsIGFydGljbGVzIHB1Ymxpc2hlZCBpbiB0aGUgam91cm5hbDsNCit0eXBlc2V0LXF1YWxpdHkgc2NyZWVuczsgYW5kIEh5cGVydGV4dCBsaW5rcyB0aGF0IGVuYWJsZSBzdWJzY3JpYmVycyB0bw0KK2JyaW5nIHVwIE1lZGxpbmUgYWJzdHJhY3RzIGRpcmVjdGx5IHdpdGhvdXQgbGVhdmluZyB0aGUgam91cm5hbC4NCisNCitBZnRlciBkZXRhaWxpbmcgdGhlIHR3byBwcmltYXJ5IHdheXMgdG8gZ2FpbiBhY2Nlc3MgdG8gdGhlIGpvdXJuYWwsDQordGhyb3VnaCB0aGUgT0NMQyBuZXR3b3JrIGFuZCBDb21wdXNlcnYgaWYgb25lIGRlc2lyZXMgZ3JhcGhpY3Mgb3IgdGhyb3VnaA0KK3RoZSBJbnRlcm5ldCBpZiBqdXN0IGFuIEFTQ0lJIGZpbGUgaXMgZGVzaXJlZCwgTEVCUk9OIGlsbHVzdHJhdGVkIHRoZQ0KK3NwZWVkeSBlZGl0b3JpYWwgcHJvY2VzcyBhbmQgdGhlIGNvZGluZyBvZiB0aGUgZG9jdW1lbnQgdXNpbmcgU0dNTCB0YWdzDQorYWZ0ZXIgaXQgaGFzIGJlZW4gYWNjZXB0ZWQgZm9yIHB1YmxpY2F0aW9uLiAgU2hlIGFsc28gZ2F2ZSBhbiBpbGx1c3RyYXRlZA0KK3RvdXIgb2YgdGhlIGpvdXJuYWwsIGl0cyBzZWFyY2gtYW5kLXJldHJpZXZhbCBjYXBhYmlsaXRpZXMgaW4gcGFydGljdWxhciwNCitidXQgYWxzbyBpbmNsdWRpbmcgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHNjYW5uaW5nIGluIGlsbHVzdHJhdGlvbnMsDQorYW5kIHRoZSBpbXBvcnRhbmNlIG9mIG9uLXNjcmVlbiBhbGVydHMgdG8gdGhlIG1lZGljYWwgcHJvZmVzc2lvbiByZQ0KK3JldHJhY3Rpb25zIG9yIGNvcnJlY3Rpb25zLCBvciBtb3JlIGZyZXF1ZW50bHksIGVkaXRvcmlhbHMsIGxldHRlcnMgdG8NCit0aGUgZWRpdG9ycywgb3IgZm9sbG93LXVwIHJlcG9ydHMuICBTaGUgY2xvc2VkIGJ5IGludml0aW5nIHRoZSBhdWRpZW5jZQ0KK3RvIGpvaW4gQUFBUyBvbiAxIEp1bHksIHdoZW4gT0pDQ1Qgd2FzIHNjaGVkdWxlZCB0byBnbyBvbi1saW5lLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogQWRkaXRpb25hbCBmZWF0dXJlcyBvZiBPSkNDVCAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0luIHRoZSBsZW5ndGh5IGRpc2N1c3Npb24gdGhhdCBmb2xsb3dlZCBMRUJST04ncyBwcmVzZW50YXRpb24sIHRoZXNlDQorcG9pbnRzIGVtZXJnZWQ6DQorDQorICAgICAqIFRoZSBTR01MIHRleHQgY2FuIGJlIHRhaWxvcmVkIGFzIHVzZXJzIHdpc2guDQorDQorICAgICAqIEFsbCB0aGVzZSBhcnRpY2xlcyBoYXZlIGEgZmFpcmx5IHNpbXBsZSBkb2N1bWVudCBkZWZpbml0aW9uLg0KKw0KKyAgICAgKiBEb2N1bWVudC10eXBlIGRlZmluaXRpb25zIChEVERzKSB3ZXJlIGRldmVsb3BlZCBhbmQgZ2l2ZW4gdG8gT0pDQ1QNCisgICAgIGZvciBjb2RpbmcuDQorDQorICAgICAqIE5vIGFydGljbGVzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBqb3VybmFsLiAgKEJlY2F1c2UgdGhlcmUgYXJlDQorICAgICBubyBiYWNrIGlzc3VlcywgdGhlcmUgYXJlIG5vIGxvc3QgaXNzdWVzIGVpdGhlci4gIE9uY2UgYSBzdWJzY3JpYmVyDQorICAgICBsb2dzIG9udG8gdGhlIGpvdXJuYWwgaGUgb3Igc2hlIGhhcyBhY2Nlc3Mgbm90IG9ubHkgdG8gdGhlIGN1cnJlbnRseQ0KKyAgICAgcHVibGlzaGVkIG1hdGVyaWFscywgYnV0IHJldHJvc3BlY3RpdmVseSB0byBldmVyeXRoaW5nIHRoYXQgaGFzIGJlZW4NCisgICAgIHB1Ymxpc2hlZCBpbiBpdC4gIFRodXMgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIGdyb3dzIGJpZ2dlci4gIFRoZSBkYXRlDQorICAgICBvZiBwdWJsaWNhdGlvbiBzZXJ2ZXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBjdXJyZW50bHkgcHVibGlzaGVkDQorICAgICBtYXRlcmlhbHMgYW5kIG9sZGVyIG1hdGVyaWFscy4pDQorDQorICAgICAqIFRoZSBwcmljaW5nIHN5c3RlbSBmb3IgdGhlIGpvdXJuYWwgcmVzZW1ibGVzIHRoYXQgZm9yIG1vc3QgbWVkaWNhbA0KKyAgICAgam91cm5hbHM6ICBmb3IgMTk5MiwgJDk1IGZvciBhIHllYXIsIHBsdXMgdGVsZWNvbW11bmljYXRpb25zIGNoYXJnZXMNCisgICAgICh0aGVyZSBhcmUgbm8gY29ubmVjdCB0aW1lIGNoYXJnZXMpOyAgICBmb3IgMTk5MywgJDExMCBmb3IgdGhlDQorICAgICBlbnRpcmUgeWVhciBmb3Igc2luZ2xlIHVzZXJzLCB0aG91Z2ggdGhlIGpvdXJuYWwgY2FuIGJlIHB1dCBvbiBhDQorICAgICBsb2NhbCBhcmVhIG5ldHdvcmsgKExBTikuICBIb3dldmVyLCBvbmx5IG9uZSBwZXJzb24gY2FuIGFjY2VzcyB0aGUNCisgICAgIGpvdXJuYWwgYXQgYSB0aW1lLiAgU2l0ZSBsaWNlbnNlcyBtYXkgY29tZSBpbiB0aGUgZnV0dXJlLg0KKw0KKyAgICAgKiBBQUFTIGlzIHdvcmtpbmcgY2xvc2VseSB3aXRoIGNvbGxlYWd1ZXMgYXQgT0NMQyB0byBkaXNwbGF5DQorICAgICBtYXRoZW1hdGljYWwgZXF1YXRpb25zIG9uIHNjcmVlbi4NCisNCisgICAgICogV2l0aG91dCBjb21wcm9taXNpbmcgYW55IHN0ZXBzIGluIHRoZSBlZGl0b3JpYWwgcHJvY2VzcywgdGhlDQorICAgICB0ZWNobm9sb2d5IGhhcyByZWR1Y2VkIHRoZSB0aW1lIGxhZyBiZXR3ZWVuIHdoZW4gYSBtYW51c2NyaXB0IGlzDQorICAgICBvcmlnaW5hbGx5IHN1Ym1pdHRlZCBhbmQgdGhlIHRpbWUgaXQgaXMgYWNjZXB0ZWQ7IHRoZSByZXZpZXcgcHJvY2Vzcw0KKyAgICAgZG9lcyBub3QgZGlmZmVyIGdyZWF0bHkgZnJvbSB0aGUgc3RhbmRhcmQgc2l4LXRvLWVpZ2h0IHdlZWtzDQorICAgICBlbXBsb3llZCBieSBtYW55IG9mIHRoZSBoYXJkLWNvcHkgam91cm5hbHMuICBUaGUgcHJvY2VzcyBzdGlsbA0KKyAgICAgZGVwZW5kcyBvbiBwZW9wbGUuDQorDQorICAgICAqIEFzIGZhciBhcyBhIHByZXNlcnZhdGlvbiBjb3B5IGlzIGNvbmNlcm5lZCwgYXJ0aWNsZXMgd2lsbCBiZQ0KKyAgICAgbWFpbnRhaW5lZCBvbiB0aGUgY29tcHV0ZXIgcGVybWFuZW50bHkgYW5kIHN1YnNjcmliZXJzLCBhcyBwYXJ0IG9mDQorICAgICB0aGVpciBzdWJzY3JpcHRpb24sIHdpbGwgcmVjZWl2ZSBhIG1pY3JvZmljaGUtcXVhbGl0eSBhcmNoaXZhbCBjb3B5DQorICAgICBvZiBldmVyeXRoaW5nIHB1Ymxpc2hlZCBkdXJpbmcgdGhhdCB5ZWFyOyBpbiBhZGRpdGlvbiwgcmVwcmludHMgY2FuDQorICAgICBiZSBwdXJjaGFzZWQgaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgaW4gYSBoYXJkLWNvcHkgZW52aXJvbm1lbnQuIA0KKyAgICAgSGFyZCBjb3BpZXMgYXJlIHByZXBhcmVkIGJ1dCBhcmUgbm90IHRoZSBwcmltYXJ5IG1lZGl1bSBmb3IgdGhlDQorICAgICBkaXNzZW1pbmF0aW9uIG9mIHRoZSBpbmZvcm1hdGlvbi4NCisNCisgICAgICogQmVjYXVzZSBPSkNDVCBpcyBub3QgeWV0IG9uIGxpbmUsIGl0IGlzIGRpZmZpY3VsdCB0byBrbm93IGhvdyBtYW55DQorICAgICBwZW9wbGUgd291bGQgc2ltcGx5IGJyb3dzZSB0aHJvdWdoIHRoZSBqb3VybmFsIG9uIHRoZSBzY3JlZW4gYXMNCisgICAgIG9wcG9zZWQgdG8gZG93bmxvYWRpbmcgdGhlIHdob2xlIHRoaW5nIGFuZCBwcmludGluZyBpdCBvdXQ7IGEgbWl4IG9mDQorICAgICBib3RoIHR5cGVzIG9mIHVzZXJzIGxpa2VseSB3aWxsIHJlc3VsdC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorUEVSU09OSVVTICogRGV2ZWxvcG1lbnRzIGluIHRlY2hub2xvZ3kgb3ZlciB0aGUgcGFzdCBkZWNhZGUgKiBUaGUgQ0xBU1MNCitQcm9qZWN0ICogQWR2YW50YWdlcyBmb3IgdGVjaG5vbG9neSBhbmQgZm9yIHRoZSBDTEFTUyBQcm9qZWN0ICoNCitEZXZlbG9waW5nIGEgbmV0d29yayBhcHBsaWNhdGlvbiBhbiB1bmRlcmx5aW5nIGFzc3VtcHRpb24gb2YgdGhlIHByb2plY3QNCisqIERldGFpbHMgb2YgdGhlIHNjYW5uaW5nIHByb2Nlc3MgKiBQcmludC1vbi1kZW1hbmQgY29waWVzIG9mIGJvb2tzICoNCitGdXR1cmUgcGxhbnMgaW5jbHVkZSBkZXZlbG9wbWVudCBvZiBhIGJyb3dzaW5nIHRvb2wgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitMeW5uZSBQRVJTT05JVVMsIGFzc2lzdGFudCBkaXJlY3RvciwgQ29ybmVsbCBJbmZvcm1hdGlvbiBUZWNobm9sb2dpZXMgZm9yDQorU2Nob2xhcmx5IEluZm9ybWF0aW9uIFNlcnZpY2VzLCBDb3JuZWxsIFVuaXZlcnNpdHksIGZpcnN0IGNvbW1lbnRlZCBvbg0KK3RoZSB0cmVtZW5kb3VzIGltcGFjdCB0aGF0IGRldmVsb3BtZW50cyBpbiB0ZWNobm9sb2d5IG92ZXIgdGhlIHBhc3QgdGVuDQoreWVhcnMtLW5ldHdvcmtpbmcsIGluIHBhcnRpY3VsYXItLWhhdmUgaGFkIG9uIHRoZSB3YXkgaW5mb3JtYXRpb24gaXMNCitoYW5kbGVkLCBhbmQgaG93LCBpbiBoZXIgb3duIGNhc2UsIHRoZXNlIGRldmVsb3BtZW50cyBoYXZlIGNvdW50ZXJiYWxhbmNlZA0KK0Nvcm5lbGwncyByZWxhdGl2ZSBnZW9ncmFwaGljYWwgaXNvbGF0aW9uLiAgT3RoZXIgc2lnbmlmaWNhbnQgdGVjaG5vbG9naWVzDQoraW5jbHVkZSBzY2FubmVycywgd2hpY2ggYXJlIG11Y2ggbW9yZSBzb3BoaXN0aWNhdGVkIHRoYW4gdGhleSB3ZXJlIHRlbiB5ZWFycw0KK2FnbzsgbWFzcyBzdG9yYWdlIGFuZCB0aGUgZHJhbWF0aWMgc2F2aW5ncyB0aGF0IHJlc3VsdCBmcm9tIGl0IGluIHRlcm1zIG9mDQorYm90aCBzcGFjZSBhbmQgbW9uZXkgcmVsYXRpdmUgdG8gdHdlbnR5IG9yIHRoaXJ0eSB5ZWFycyBhZ287IG5ldyBhbmQNCitpbXByb3ZlZCBwcmludGluZyB0ZWNobm9sb2dpZXMsIHdoaWNoIGhhdmUgZ3JlYXRseSBhZmZlY3RlZCB0aGUgZGlzdHJpYnV0aW9uDQorb2YgaW5mb3JtYXRpb247IGFuZCwgb2YgY291cnNlLCBkaWdpdGFsIHRlY2hub2xvZ2llcywgd2hvc2UgYXBwbGljYWJpbGl0eSB0bw0KK2xpYnJhcnkgcHJlc2VydmF0aW9uIHJlbWFpbnMgYXQgaXNzdWUuDQorDQorR2l2ZW4gdGhhdCBjb250ZXh0LCBQRVJTT05JVVMgZGVzY3JpYmVkIHRoZSBDb2xsZWdlIExpYnJhcnkgQWNjZXNzIGFuZA0KK1N0b3JhZ2UgU3lzdGVtIChDTEFTUykgUHJvamVjdCwgYSBsaWJyYXJ5IHByZXNlcnZhdGlvbiBwcm9qZWN0LA0KK3ByaW1hcmlseSwgYW5kIHdoYXQgaGFzIGJlZW4gYWNjb21wbGlzaGVkLiAgRGlyZWN0bHkgZnVuZGVkIGJ5IHRoZQ0KK0NvbW1pc3Npb24gb24gUHJlc2VydmF0aW9uIGFuZCBBY2Nlc3MgYW5kIGJ5IHRoZSBYZXJveCBDb3Jwb3JhdGlvbiwgd2hpY2gNCitoYXMgcHJvdmlkZWQgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgaGFyZHdhcmUsIHRoZSBDTEFTUyBQcm9qZWN0IGhhcyBiZWVuDQord29ya2luZyB3aXRoIGEgZGV2ZWxvcG1lbnQgdGVhbSBhdCBYZXJveCB0byBkZXZlbG9wIGEgc29mdHdhcmUNCithcHBsaWNhdGlvbiB0YWlsb3JlZCB0byBsaWJyYXJ5IHByZXNlcnZhdGlvbiByZXF1aXJlbWVudHMuICBXaXRoaW4NCitDb3JuZWxsLCBwYXJ0aWNpcGFudHMgaW4gdGhlIHByb2plY3QgaGF2ZSBiZWVuIHdvcmtpbmcgam9pbnRseSB3aXRoIGJvdGgNCitsaWJyYXJ5IGFuZCBpbmZvcm1hdGlvbiB0ZWNobm9sb2dpZXMuICBUaGUgZm9jdXMgb2YgdGhlIHByb2plY3QgaGFzIGJlZW4NCitvbiByZWZvcm1hdHRpbmcgYW5kIHNhdmluZyBib29rcyB0aGF0IGFyZSBpbiBicml0dGxlIGNvbmRpdGlvbi4gDQorUEVSU09OSVVTIHNob3dlZCBXb3Jrc2hvcCBwYXJ0aWNpcGFudHMgYSBicml0dGxlIGJvb2ssIGFuZCBkZXNjcmliZWQgaG93DQorc3VjaCBib29rcyB3ZXJlIHRoZSByZXN1bHQgb2YgZGV2ZWxvcG1lbnRzIGluIHBhcGVybWFraW5nIGFyb3VuZCB0aGUNCitiZWdpbm5pbmcgb2YgdGhlIEluZHVzdHJpYWwgUmV2b2x1dGlvbi4gIFRoZSBwYXBlcm1ha2luZyBwcm9jZXNzIHdhcw0KK2NoYW5nZWQgc28gdGhhdCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBhY2lkIHdhcyBpbnRyb2R1Y2VkIGludG8gdGhlDQorYWN0dWFsIHBhcGVyIGl0c2VsZiwgd2hpY2ggZGV0ZXJpb3JhdGVzIGFzIGl0IHNpdHMgb24gbGlicmFyeSBzaGVsdmVzLg0KKw0KK09uZSBvZiB0aGUgYWR2YW50YWdlcyBmb3IgdGVjaG5vbG9neSBhbmQgZm9yIHRoZSBDTEFTUyBQcm9qZWN0IGlzIHRoYXQNCit0aGUgaW5mb3JtYXRpb24gaW4gYnJpdHRsZSBib29rcyBpcyBtb3N0bHkgb3V0IG9mIGNvcHlyaWdodCBhbmQgdGh1cw0KK29mZmVycyBhbiBvcHBvcnR1bml0eSB0byB3b3JrIHdpdGggbWF0ZXJpYWwgdGhhdCByZXF1aXJlcyBsaWJyYXJ5DQorcHJlc2VydmF0aW9uLCBhbmQgdG8gY3JlYXRlIGFuZCB3b3JrIG9uIGFuIGluZnJhc3RydWN0dXJlIHRvIHNhdmUgdGhlDQorbWF0ZXJpYWwuICBBY2tub3dsZWRnaW5nIHRoZSBmYW1pbGlhcml0eSBvZiB0aG9zZSB3b3JraW5nIGluIHByZXNlcnZhdGlvbg0KK3dpdGggdGhpcyBpbmZvcm1hdGlvbiwgUEVSU09OSVVTIG5vdGVkIHRoYXQgc2V2ZXJhbCB0aGluZ3MgYXJlIGJlaW5nDQorZG9uZTogIHRoZSBwcmltYXJ5IHByZXNlcnZhdGlvbiB0ZWNobm9sb2d5IHVzZWQgdG9kYXkgaXMgcGhvdG9jb3B5aW5nIG9mDQorYnJpdHRsZSBtYXRlcmlhbC4gIFNhdmluZyB0aGUgaW50ZWxsZWN0dWFsIGNvbnRlbnQgb2YgdGhlIG1hdGVyaWFsIGlzIHRoZQ0KK21haW4gZ29hbC4gIFdpdGggbWljcm9maWxtIGNvcHksIHRoZSBpbnRlbGxlY3R1YWwgY29udGVudCBpcyBwcmVzZXJ2ZWQgb24NCit0aGUgYXNzdW1wdGlvbiB0aGF0IGluIHRoZSBmdXR1cmUgdGhlIGltYWdlIGNhbiBiZSByZWZvcm1hdHRlZCBpbiBhbnkNCitvdGhlciB3YXkgdGhhdCB0aGVuIGV4aXN0cy4NCisNCitBbiB1bmRlcmx5aW5nIGFzc3VtcHRpb24gb2YgdGhlIENMQVNTIFByb2plY3QgZnJvbSB0aGUgYmVnaW5uaW5nIHdhcw0KK3RoYXQgaXQgd291bGQgZGV2ZWxvcCBhIG5ldHdvcmsgYXBwbGljYXRpb24uICBQcm9qZWN0IHN0YWZmIHNjYW4gYm9va3MNCithdCBhIHdvcmtzdGF0aW9uIGxvY2F0ZWQgaW4gdGhlIGxpYnJhcnksIG5lYXIgdGhlIGJyaXR0bGUgbWF0ZXJpYWwuDQorQW4gaW1hZ2Utc2VydmVyIGZpbGluZyBzeXN0ZW0gaXMgbG9jYXRlZCBhdCBhIGRpc3RhbmNlIGZyb20gdGhhdA0KK3dvcmtzdGF0aW9uLCBhbmQgYSBwcmludGVyIGlzIGxvY2F0ZWQgaW4gYW5vdGhlciBidWlsZGluZy4gIEFsbCBvZiB0aGUNCittYXRlcmlhbHMgZGlnaXRpemVkIGFuZCBzdG9yZWQgb24gdGhlIGltYWdlLWZpbGluZyBzeXN0ZW0gYXJlIGNhdGFsb2dlZA0KK2luIHRoZSBvbi1saW5lIGNhdGFsb2d1ZS4gIEluIGZhY3QsIGEgcmVjb3JkIGZvciBlYWNoIG9mIHRoZXNlIGVsZWN0cm9uaWMNCitib29rcyBpcyBzdG9yZWQgaW4gdGhlIFJMSU4gZGF0YWJhc2Ugc28gdGhhdCBhIHJlY29yZCBleGlzdHMgb2Ygd2hhdCBpcw0KK2luIHRoZSBkaWdpdGFsIGxpYnJhcnkgdGhyb3VnaG91dCBzdGFuZGFyZCBjYXRhbG9ndWUgcHJvY2VkdXJlcy4gIEluIHRoZQ0KK2Z1dHVyZSwgcmVzZWFyY2hlcnMgd29ya2luZyBmcm9tIHRoZWlyIG93biB3b3Jrc3RhdGlvbnMgaW4gdGhlaXIgb2ZmaWNlcywNCitvciB0aGVpciBuZXR3b3Jrcywgd2lsbCBoYXZlIGFjY2Vzcy0td2hlcmV2ZXIgdGhleSBtaWdodCBiZS0tdGhyb3VnaCBhDQorcmVxdWVzdCBzZXJ2ZXIgYmVpbmcgYnVpbHQgaW50byB0aGUgbmV3IGRpZ2l0YWwgbGlicmFyeS4gIEEgc2Vjb25kDQorYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBwcmVmZXJyZWQgbWVhbnMgb2YgZmluZGluZyB0aGUgbWF0ZXJpYWwgd2lsbCBiZSBieQ0KK2xvb2tpbmcgdGhyb3VnaCBhIGNhdGFsb2d1ZS4gIFBFUlNPTklVUyBkZXNjcmliZWQgdGhlIHNjYW5uaW5nIHByb2Nlc3MsDQord2hpY2ggdXNlcyBhIHByb3RvdHlwZSBzY2FubmVyIGJlaW5nIGRldmVsb3BlZCBieSBYZXJveCBhbmQgd2hpY2ggc2NhbnMgYQ0KK3ZlcnkgaGlnaCByZXNvbHV0aW9uIGltYWdlIGF0IGdyZWF0IHNwZWVkLiAgQW5vdGhlciBzaWduaWZpY2FudCBmZWF0dXJlLA0KK2JlY2F1c2UgdGhpcyBpcyBhIHByZXNlcnZhdGlvbiBhcHBsaWNhdGlvbiwgaXMgdGhlIHBsYWNpbmcgb2YgdGhlIHBhZ2VzDQordGhhdCBmYWxsIGFwYXJ0IG9uZSBmb3Igb25lIG9uIHRoZSBwbGF0ZW4uICBPcmRpbmFyaWx5LCBhIHNjYW5uZXIgY291bGQNCitiZSB1c2VkIHdpdGggc29tZSBzb3J0IG9mIGEgZG9jdW1lbnQgZmVlZGVyLCBidXQgYmVjYXVzZSBvZiB0aGlzDQorYXBwbGljYXRpb24gdGhhdCBpcyBub3QgZmVhc2libGUuICBGdXJ0aGVyLCBiZWNhdXNlIENMQVNTIGlzIGENCitwcmVzZXJ2YXRpb24gYXBwbGljYXRpb24sIGFmdGVyIHRoZSBwYXBlciByZXBsYWNlbWVudCBpcyBtYWRlIHRoZXJlLCBhDQordmVyeSBjYXJlZnVsIHF1YWxpdHkgY29udHJvbCBjaGVjayBpcyBwZXJmb3JtZWQuICBBbiBvcmlnaW5hbCBib29rIGlzDQorY29tcGFyZWQgdG8gdGhlIHByaW50ZWQgY29weSBhbmQgdmVyaWZpY2F0aW9uIGlzIG1hZGUsIGJlZm9yZSBwcm9jZWVkaW5nLA0KK3RoYXQgYWxsIG9mIHRoZSBpbWFnZSwgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiwgaGFzIGJlZW4gY2FwdHVyZWQuICBUaGVuLA0KK2EgbmV3IGxpYnJhcnkgYm9vayBpcyBwcm9kdWNlZDogIFRoZSBwcmludGVkIGltYWdlcyBhcmUgcmVib3VuZCBieSBhDQorY29tbWVyY2lhbCBiaW5kZXIgYW5kIGEgbmV3IGJvb2sgaXMgcmV0dXJuZWQgdG8gdGhlIHNoZWxmLiANCitTaWduaWZpY2FudGx5LCB0aGUgYm9va3MgcmV0dXJuZWQgdG8gdGhlIGxpYnJhcnkgc2hlbHZlcyBhcmUgYmVhdXRpZnVsDQorYW5kIHVzZWZ1bCByZXBsYWNlbWVudHMgb24gYWNpZC1mcmVlIHBhcGVyIHRoYXQgc2hvdWxkIGxhc3QgYSBsb25nIHRpbWUsDQoraW4gZWZmZWN0LCB0aGUgZXF1aXZhbGVudCBvZiBwcmVzZXJ2YXRpb24gcGhvdG9jb3BpZXMuICBUaHVzLCB0aGUgcHJvamVjdA0KK2hhcyBhIGxpYnJhcnkgb2YgZGlnaXRhbCBib29rcy4gIEluIGVzc2VuY2UsIENMQVNTIGlzIHNjYW5uaW5nIGFuZA0KK3N0b3JpbmcgYm9va3MgYXMgNjAwIGRvdC1wZXItaW5jaCBiaXQtbWFwcGVkIGltYWdlcywgY29tcHJlc3NlZCB1c2luZw0KK0dyb3VwIDQgQ0NJVFQgKGkuZS4sIHRoZSBGcmVuY2ggYWNyb255bSBmb3IgSW50ZXJuYXRpb25hbCBDb25zdWx0YXRpdmUNCitDb21taXR0ZWUgZm9yIFRlbGVncmFwaCBhbmQgVGVsZXBob25lKSBjb21wcmVzc2lvbi4gIFRoZXkgYXJlIHN0b3JlZCBhcw0KK1RJRkYgZmlsZXMgb24gYW4gb3B0aWNhbCBmaWxpbmcgc3lzdGVtIHRoYXQgaXMgY29tcG9zZWQgb2YgYSBkYXRhYmFzZQ0KK3VzZWQgZm9yIHNlYXJjaGluZyBhbmQgbG9jYXRpbmcgdGhlIGJvb2tzIGFuZCBhbiBvcHRpY2FsIGp1a2Vib3ggdGhhdA0KK3N0b3JlcyA2NCB0d2VsdmUtaW5jaCBwbGF0dGVycy4gIEEgdmVyeS1oaWdoLXJlc29sdXRpb24gcHJpbnRlZCBjb3B5IG9mDQordGhlc2UgYm9va3MgYXQgNjAwIGRvdHMgcGVyIGluY2ggaXMgY3JlYXRlZCwgdXNpbmcgYSBYZXJveCBEb2N1VGVjaA0KK3ByaW50ZXIgdG8gbWFrZSB0aGUgcGFwZXIgcmVwbGFjZW1lbnRzIG9uIGFjaWQtZnJlZSBwYXBlci4NCisNCitQRVJTT05JVVMgbWFpbnRhaW5lZCB0aGF0IHRoZSBDTEFTUyBQcm9qZWN0IHByZXNlbnRzIGFuIG9wcG9ydHVuaXR5IHRvDQoraW50cm9kdWNlIHBlb3BsZSB0byBib29rcyBhcyBkaWdpdGFsIGltYWdlcyBieSB1c2luZyBhIHBhcGVyIG1lZGl1bS4gDQorQm9va3MgYXJlIHJldHVybmVkIHRvIHRoZSBzaGVsdmVzIHdoaWxlIHBlb3BsZSBhcmUgYWxzbyBnaXZlbiB0aGUgYWJpbGl0eQ0KK3RvIHByaW50IG9uIGRlbWFuZC0tdG8gbWFrZSB0aGVpciBvd24gY29waWVzIG9mIGJvb2tzLiAgKFBFUlNPTklVUw0KK2Rpc3RyaWJ1dGVkIGNvcGllcyBvZiBhbiBlbmdpbmVlcmluZyBqb3VybmFsIHB1Ymxpc2hlZCBieSBlbmdpbmVlcmluZw0KK3N0dWRlbnRzIGF0IENvcm5lbGwgYXJvdW5kIDE5MDAgYXMgYW4gZXhhbXBsZSBvZiB3aGF0IGEgcHJpbnQtb24tZGVtYW5kDQorY29weSBvZiBtYXRlcmlhbCBtaWdodCBiZSBsaWtlLiAgVGhpcyB2ZXJ5IGNoZWFwIGNvcHkgd291bGQgYmUgYXZhaWxhYmxlDQordG8gcGVvcGxlIHRvIHVzZSBmb3IgdGhlaXIgb3duIHJlc2VhcmNoIHB1cnBvc2VzIGFuZCB3b3VsZCBicmlkZ2UgdGhlIGdhcA0KK2JldHdlZW4gYW4gZWxlY3Ryb25pYyB3b3JrIGFuZCB0aGUgcGFwZXIgdGhhdCByZWFkZXJzIGxpa2UgdG8gaGF2ZS4pIA0KK1BFUlNPTklVUyB0aGVuIGF0dGVtcHRlZCB0byBpbGx1c3RyYXRlIGEgdmVyeSBlYXJseSBwcm90b3R5cGUgb2YNCituZXR3b3JrZWQgYWNjZXNzIHRvIHRoaXMgZGlnaXRhbCBsaWJyYXJ5LiAgWGVyb3ggQ29ycG9yYXRpb24gaGFzDQorZGV2ZWxvcGVkIGEgcHJvdG90eXBlIG9mIGEgdmlldyBzdGF0aW9uIHRoYXQgY2FuIHNlbmQgaW1hZ2VzIGFjcm9zcyB0aGUNCituZXR3b3JrIHRvIGJlIHZpZXdlZC4NCisNCitUaGUgcGFydGljdWxhciBsaWJyYXJ5IGJyb3VnaHQgZG93biBmb3IgZGVtb25zdHJhdGlvbiBjb250YWluZWQgdHdvDQorbWF0aGVtYXRpY3MgYm9va3MuICBDTEFTUyBpcyBkZXZlbG9waW5nIGFuZCB3aWxsIHNwZW5kIHRoZSBuZXh0IHllYXINCitkZXZlbG9waW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQgYWxsb3dzIHBlb3BsZSBhdCB3b3Jrc3RhdGlvbnMgdG8gYnJvd3NlDQordGhlIGJvb2tzLiAgVGh1cywgQ0xBU1MgaXMgZGV2ZWxvcGluZyBhIGJyb3dzaW5nIHRvb2wsIG9uIHRoZSBhc3N1bXB0aW9uDQordGhhdCB1c2VycyBkbyBub3Qgd2FudCB0byByZWFkIGFuIGVudGlyZSBib29rIGZyb20gYSB3b3Jrc3RhdGlvbiwgYnV0DQord291bGQgcHJlZmVyIHRvIGJlIGFibGUgdG8gbG9vayB0aHJvdWdoIGFuZCBkZWNpZGUgaWYgdGhleSB3b3VsZCBsaWtlIHRvDQoraGF2ZSBhIHByaW50ZWQgY29weSBvZiBpdC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorRElTQ1VTU0lPTiAqIFJlIHJldHJpZXZhbCBzb2Z0d2FyZSAqICJEaWdpdGFsIGZpbGUgY29weXJpZ2h0IiAqIFNjYW5uaW5nDQorcmF0ZSBkdXJpbmcgcHJvZHVjdGlvbiAqIEF1dG9zZWdtZW50YXRpb24gKiBDcml0ZXJpYSBlbXBsb3llZCBpbg0KK3NlbGVjdGluZyBib29rcyBmb3Igc2Nhbm5pbmcgKiBDb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBvZiBpbWFnZXMgKg0KK09DUiBub3QgcHJlY2x1ZGVkICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRHVyaW5nIHRoZSBxdWVzdGlvbi1hbmQtYW5zd2VyIHBlcmlvZCB0aGF0IGZvbGxvd2VkIGhlciBwcmVzZW50YXRpb24sDQorUEVSU09OSVVTIG1hZGUgdGhlc2UgYWRkaXRpb25hbCBwb2ludHM6DQorDQorICAgICAqIFJlIHJldHJpZXZhbCBzb2Z0d2FyZSwgQ29ybmVsbCBpcyBkZXZlbG9waW5nIGEgVW5peC1iYXNlZCBzZXJ2ZXINCisgICAgIGFzIHdlbGwgYXMgY2xpZW50cyBmb3IgdGhlIHNlcnZlciB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgcGxhdGZvcm1zDQorICAgICAoTWFjaW50b3NoLCBJQk0gYW5kIFN1biB3b3Jrc3RhdGlvbnMpLCBpbiB0aGUgaG9wZSB0aGF0IHBlb3BsZSBmcm9tDQorICAgICBhbnkgb2YgdGhvc2UgcGxhdGZvcm1zIHdpbGwgcmV0cmlldmUgYm9va3M7IGEgZnVydGhlciBvcGVyYXRpbmcNCisgICAgIGFzc3VtcHRpb24gaXMgdGhhdCBzdGFuZGFyZCBpbnRlcmZhY2VzIHdpbGwgYmUgdXNlZCBhcyBtdWNoIGFzDQorICAgICBwb3NzaWJsZSwgd2hlcmUgc3RhbmRhcmRzIGNhbiBiZSBwdXQgaW4gcGxhY2UsIGJlY2F1c2UgQ0xBU1MNCisgICAgIGNvbnNpZGVycyB0aGlzIHJldHJpZXZhbCBzb2Z0d2FyZSBhIGxpYnJhcnkgYXBwbGljYXRpb24gYW5kIHdvdWxkDQorICAgICBsaWtlIHRvIGJlIGFibGUgdG8gbG9vayBhdCBtYXRlcmlhbCBub3Qgb25seSBhdCBDb3JuZWxsIGJ1dCBhdCBvdGhlcg0KKyAgICAgaW5zdGl0dXRpb25zLg0KKw0KKyAgICAgKiBUaGUgcGhyYXNlICJkaWdpdGFsIGZpbGUgY29weXJpZ2h0IGJ5IENvcm5lbGwgVW5pdmVyc2l0eSIgd2FzDQorICAgICBhZGRlZCBhdCB0aGUgYWR2aWNlIG9mIENvcm5lbGwncyBsZWdhbCBzdGFmZiB3aXRoIHRoZSBjYXZlYXQgdGhhdCBpdA0KKyAgICAgcHJvYmFibHkgd291bGQgbm90IGhvbGQgdXAgaW4gY291cnQuICBDb3JuZWxsIGRvZXMgbm90IHdhbnQgcGVvcGxlDQorICAgICB0byBjb3B5IGl0cyBib29rcyBhbmQgc2VsbCB0aGVtIGJ1dCB3b3VsZCBsaWtlIHRvIGtlZXAgdGhlbQ0KKyAgICAgYXZhaWxhYmxlIGZvciB1c2UgaW4gYSBsaWJyYXJ5IGVudmlyb25tZW50IGZvciBsaWJyYXJ5IHB1cnBvc2VzLg0KKw0KKyAgICAgKiBJbiBwcm9kdWN0aW9uIHRoZSBzY2FubmVyIGNhbiBzY2FuIGFib3V0IDMwMCBwYWdlcyBwZXIgaG91ciwNCisgICAgIGNhcHR1cmluZyA2MDAgZG90cyBwZXIgaW5jaC4NCisNCisgICAgICogVGhlIFhlcm94IHNvZnR3YXJlIGhhcyBmaWx0ZXJzIHRvIHNjYW4gaGFsZnRvbmUgbWF0ZXJpYWwgYW5kIGF2b2lkDQorICAgICB0aGUgbW9pcmUgcGF0dGVybnMgdGhhdCBvY2N1ciB3aGVuIGhhbGZ0b25lIG1hdGVyaWFsIGlzIHNjYW5uZWQuIA0KKyAgICAgWGVyb3ggaGFzIGJlZW4gd29ya2luZyBvbiBoYXJkd2FyZSBhbmQgc29mdHdhcmUgdGhhdCB3b3VsZCBlbmFibGUNCisgICAgIHRoZSBzY2FubmVyIGl0c2VsZiB0byByZWNvZ25pemUgdGhpcyBzaXR1YXRpb24gYW5kIGRlYWwgd2l0aCBpdA0KKyAgICAgYXBwcm9wcmlhdGVseS0tYSBraW5kIG9mIGF1dG9zZWdtZW50YXRpb24gdGhhdCB3b3VsZCBlbmFibGUgdGhlDQorICAgICBzY2FubmVyIHRvIGhhbmRsZSBoYWxmdG9uZSBtYXRlcmlhbCBhcyB3ZWxsIGFzIHRleHQgb24gYSBzaW5nbGUgcGFnZS4NCisNCisgICAgICogVGhlIGJvb2tzIHN1YmplY3RlZCB0byB0aGUgZWxhYm9yYXRlIHByb2Nlc3MgZGVzY3JpYmVkIGFib3ZlIHdlcmUNCisgICAgIHNlbGVjdGVkIGJlY2F1c2UgQ0xBU1MgaXMgYSBwcmVzZXJ2YXRpb24gcHJvamVjdCwgd2l0aCB0aGUgZmlyc3QgNTAwDQorICAgICBib29rcyBzZWxlY3RlZCBjb21pbmcgZnJvbSBDb3JuZWxsJ3MgbWF0aGVtYXRpY3MgY29sbGVjdGlvbiwgYmVjYXVzZQ0KKyAgICAgdGhleSB3ZXJlIHN0aWxsIGJlaW5nIGhlYXZpbHkgdXNlZCBhbmQgYmVjYXVzZSwgYWx0aG91Z2ggdGhleSB3ZXJlDQorICAgICBpbiBuZWVkIG9mIHByZXNlcnZhdGlvbiwgdGhlIG1hdGhlbWF0aWNzIGxpYnJhcnkgYW5kIHRoZSBtYXRoZW1hdGljcw0KKyAgICAgZmFjdWx0eSB3ZXJlIHVuY29tZm9ydGFibGUgaGF2aW5nIHRoZW0gbWljcm9maWxtZWQuICAoVGhleSB3YW50ZWQgYQ0KKyAgICAgcHJpbnRlZCBjb3B5LikgIFRodXMsIHRoZXNlIGJvb2tzIGJlY2FtZSBhIGxvZ2ljYWwgY2hvaWNlIGZvciB0aGlzDQorICAgICBwcm9qZWN0LiAgT3RoZXIgYm9va3Mgd2VyZSBjaG9zZW4gYnkgdGhlIHByb2plY3QncyBzZWxlY3Rpb24gY29tbWl0dGVlcw0KKyAgICAgZm9yIGV4cGVyaW1lbnRzIHdpdGggdGhlIHRlY2hub2xvZ3ksIGFzIHdlbGwgYXMgdG8gbWVldCBhIGRlbWFuZCBvciBuZWVkLg0KKw0KKyAgICAgKiBJbWFnZXMgd2lsbCBiZSBkZWNvbXByZXNzZWQgYmVmb3JlIHRoZXkgYXJlIHNlbnQgb3ZlciB0aGUgbGluZTsgYXQNCisgICAgIHRoaXMgdGltZSB0aGV5IGFyZSBjb21wcmVzc2VkIGFuZCBzZW50IHRvIHRoZSBpbWFnZSBmaWxpbmcgc3lzdGVtDQorICAgICBhbmQgdGhlbiBzZW50IHRvIHRoZSBwcmludGVyIGFzIGNvbXByZXNzZWQgaW1hZ2VzOyB0aGV5IGFyZSByZXR1cm5lZA0KKyAgICAgdG8gdGhlIHdvcmtzdGF0aW9uIGFzIGNvbXByZXNzZWQgNjAwLWRwaSBpbWFnZXMgYW5kIHRoZSB3b3Jrc3RhdGlvbg0KKyAgICAgZGVjb21wcmVzc2VzIGFuZCBzY2FsZXMgdGhlbSBmb3IgZGlzcGxheS0tYW4gaW5lZmZpY2llbnQgd2F5IHRvDQorICAgICBhY2Nlc3MgdGhlIG1hdGVyaWFsIHRob3VnaCBpdCB3b3JrcyBxdWl0ZSB3ZWxsIGZvciBwcmludGluZyBhbmQNCisgICAgIG90aGVyIHB1cnBvc2VzLg0KKw0KKyAgICAgKiBDTEFTUyBpcyBhbHNvIGRlY29tcHJlc3Npbmcgb24gTWFjaW50b3NoIGFuZCBJQk0sIGEgc2xvdyBwcm9jZXNzDQorICAgICByaWdodCBub3cuICBFdmVudHVhbGx5LCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiB3aWxsIHRha2UNCisgICAgIHBsYWNlIG9uIGFuIGltYWdlIGNvbnZlcnNpb24gc2VydmVyLiAgVHJhZGUtb2ZmcyB3aWxsIGJlIG1hZGUsIGJhc2VkDQorICAgICBvbiBmdXR1cmUgcGVyZm9ybWFuY2UgdGVzdGluZywgY29uY2VybmluZyB3aGVyZSB0aGUgZmlsZSBpcw0KKyAgICAgY29tcHJlc3NlZCBhbmQgd2hhdCByZXNvbHV0aW9uIGltYWdlIGlzIHNlbnQuDQorDQorICAgICAqIE9DUiBoYXMgbm90IGJlZW4gcHJlY2x1ZGVkOyBpbWFnZXMgYXJlIGJlaW5nIHN0b3JlZCB0aGF0IGhhdmUgYmVlbg0KKyAgICAgc2Nhbm5lZCBhdCBhIGhpZ2ggcmVzb2x1dGlvbiwgd2hpY2ggcHJlc3VtYWJseSB3b3VsZCBzdWl0IHRoZW0gd2VsbA0KKyAgICAgdG8gYW4gT0NSIHByb2Nlc3MuICBCZWNhdXNlIHRoZSBtYXRlcmlhbCBiZWluZyBzY2FubmVkIGlzIGFib3V0IDEwMA0KKyAgICAgeWVhcnMgb2xkIGFuZCB3YXMgcHJpbnRlZCB3aXRoIGxlc3MtdGhhbi1pZGVhbCB0ZWNobm9sb2dpZXMsIHZlcnkNCisgICAgIGVhcmx5IGFuZCBwcmVsaW1pbmFyeSB0ZXN0cyBoYXZlIG5vdCBwcm9kdWNlZCBnb29kIHJlc3VsdHMuICBCdXQgdGhlDQorICAgICBwcm9qZWN0IGlzIGNhcHR1cmluZyBhbiBpbWFnZSB0aGF0IGlzIG9mIHN1ZmZpY2llbnQgcmVzb2x1dGlvbiB0byBiZQ0KKyAgICAgc3ViamVjdGVkIHRvIE9DUiBpbiB0aGUgZnV0dXJlLiAgTW9yZW92ZXIsIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlDQorICAgICBhbmQgdGhlIHN5c3RlbSBwbGFuIGhhdmUgYSBsb2dpY2FsIHBsYWNlIHRvIHN0b3JlIGFuIE9DUiBpbWFnZSBpZiBpdA0KKyAgICAgaGFzIGJlZW4gY2FwdHVyZWQuICBCdXQgdGhhdCBpcyBub3QgYmVpbmcgZG9uZSBub3cuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorU0VTU0lPTiBJSUkuICBESVNUUklCVVRJT04sIE5FVFdPUktTLCBBTkQgTkVUV09SS0lORzogIE9QVElPTlMgRk9SDQorRElTU0VNSU5BVElPTg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitaSUNIICogSXNzdWVzIHBlcnRhaW5pbmcgdG8gQ0QtUk9NcyAqIE9wdGlvbnMgZm9yIHB1Ymxpc2hpbmcgaW4gQ0QtUk9NICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorUm9iZXJ0IFpJQ0gsIHNwZWNpYWwgYXNzaXN0YW50IHRvIHRoZSBhc3NvY2lhdGUgbGlicmFyaWFuIGZvciBzcGVjaWFsDQorcHJvamVjdHMsIExpYnJhcnkgb2YgQ29uZ3Jlc3MsIGFuZCBtb2RlcmF0b3Igb2YgdGhpcyBzZXNzaW9uLCBmaXJzdCBub3RlZA0KK3RoZSBibGVzc2VkIGJ1dCBzb21ld2hhdCBhd2t3YXJkIGNpcmN1bXN0YW5jZSBvZiBoYXZpbmcgZm91ciB2ZXJ5DQorZGlzdGluZ3Vpc2hlZCBwZW9wbGUgcmVwcmVzZW50aW5nIG5ldHdvcmtzIGFuZCBuZXR3b3JraW5nIG9yIGF0IGxlYXN0DQorbGVhbmluZyBpbiB0aGF0IGRpcmVjdGlvbiwgd2hpbGUgbGFja2luZyBhbnlvbmUgdG8gc3BlYWsgZnJvbSB0aGUNCitzdHJvbmdlc3QgcG9zc2libGUgYmFja2dyb3VuZCBpbiBDRC1ST01zLiAgWklDSCBleHByZXNzZWQgdGhlIGhvcGUgdGhhdA0KK21lbWJlcnMgb2YgdGhlIGF1ZGllbmNlIHdvdWxkIGpvaW4gdGhlIGRpc2N1c3Npb24uICBIZSBzdHJlc3NlZCB0aGUNCitzdWJ0aXRsZSBvZiB0aGlzIHBhcnRpY3VsYXIgc2Vzc2lvbiwgIk9wdGlvbnMgZm9yIERpc3NlbWluYXRpb24sIiBhbmQsDQorY29uY2VybmluZyBDRC1ST01zLCB0aGUgaW1wb3J0YW5jZSBvZiBkZXRlcm1pbmluZyB3aGVuIGl0IHdvdWxkIGJlIHdpc2UNCit0byBjb25zaWRlciBkaXNzZW1pbmF0aW9uIGluIENELVJPTSB2ZXJzdXMgbmV0d29ya3MuICBBIHNob3BwaW5nIGxpc3Qgb2YNCitpc3N1ZXMgcGVydGFpbmluZyB0byBDRC1ST01zIGluY2x1ZGVkOiAgdGhlIGdyb3VuZHMgZm9yIHNlbGVjdGluZw0KK2NvbW1lcmNpYWwgcHVibGlzaGVycywgYW5kIGluLWhvdXNlIHB1YmxpY2F0aW9uIHdoZXJlIHBvc3NpYmxlIHZlcnN1cw0KK25vbnByb2ZpdCBvciBnb3Zlcm5tZW50IHB1YmxpY2F0aW9uLiAgQSBzaW1pbGFyIGxpc3QgZm9yIG5ldHdvcmtzDQoraW5jbHVkZWQ6ICBkZXRlcm1pbmluZyB3aGVuIG9uZSBzaG91bGQgY29uc2lkZXIgZGlzc2VtaW5hdGlvbiB0aHJvdWdoIGENCituZXR3b3JrLCBpZGVudGlmeWluZyB0aGUgbWVjaGFuaXNtcyBvciBlbnRpdGllcyB0aGF0IGV4aXN0IHRvIHBsYWNlIGl0ZW1zDQorb24gbmV0d29ya3MsIGlkZW50aWZ5aW5nIHRoZSBwb29sIG9mIGV4aXN0aW5nIG5ldHdvcmtzLCBkZXRlcm1pbmluZyBob3cgYQ0KK3Byb2R1Y2VyICB3b3VsZCBjaG9vc2UgYmV0d2VlbiBuZXR3b3JrcywgYW5kIGlkZW50aWZ5aW5nIHRoZSBlbGVtZW50cyBvZg0KK2EgYnVzaW5lc3MgYXJyYW5nZW1lbnQgaW4gYSBuZXR3b3JrLg0KKw0KK09wdGlvbnMgZm9yIHB1Ymxpc2hpbmcgaW4gQ0QtUk9NOiAgYW4gb3V0c2lkZSBwdWJsaXNoZXIgdmVyc3VzDQorc2VsZi1wdWJsaWNhdGlvbi4gIElmIGFuIG91dHNpZGUgcHVibGlzaGVyIGlzIHVzZWQsIGl0IGNhbiBiZSBub25wcm9maXQsDQorc3VjaCBhcyB0aGUgR292ZXJubWVudCBQcmludGluZyBPZmZpY2UgKEdQTykgb3IgdGhlIE5hdGlvbmFsIFRlY2huaWNhbA0KK0luZm9ybWF0aW9uIFNlcnZpY2UgKE5USVMpLCBpbiB0aGUgY2FzZSBvZiBnb3Zlcm5tZW50LiAgVGhlIHByb3MgYW5kIGNvbnMNCithc3NvY2lhdGVkIHdpdGggZW1wbG95aW5nIGFuIG91dHNpZGUgcHVibGlzaGVyIGFyZSBvYnZpb3VzLiAgQW1vbmcgdGhlDQorcHJvcywgdGhlcmUgaXMgbm8gdHJvdWJsZSBnZXR0aW5nIGFjY2VwdGVkLiAgT25lIHBheXMgdGhlIGJpbGwgYW5kLCBpbg0KK2VmZmVjdCwgZ29lcyBvbmUncyB3YXkuICBBbW9uZyB0aGUgY29ucywgd2hlbiBvbmUgcGF5cyBhbiBvdXRzaWRlDQorcHVibGlzaGVyIHRvIHBlcmZvcm0gdGhlIHdvcmssIHRoYXQgcHVibGlzaGVyIHdpbGwgcGVyZm9ybSB0aGUgd29yayBpdCBpcw0KK29ibGlnZWQgdG8gZG8sIGJ1dCBwZXJoYXBzIHdpdGhvdXQgdGhlIHByb2R1Y3Rpb24gZXhwZXJ0aXNlIGFuZCBza2lsbCBpbg0KK21hcmtldGluZyBhbmQgZGlzc2VtaW5hdGlvbiB0aGF0IHNvbWUgd291bGQgc2Vlay4gIFRoZXJlIGlzIHRoZSBib2R5IG9mDQorY29tbWVyY2lhbCBwdWJsaXNoZXJzIHRoYXQgZG8gcG9zc2VzcyB0aGF0IGtpbmQgb2YgZXhwZXJ0aXNlIGluDQorZGlzdHJpYnV0aW9uIGFuZCBtYXJrZXRpbmcgYnV0IHRoYXQgb2J2aW91c2x5IGFyZSBzZWxlY3RpdmUuICBJbg0KK3NlbGYtcHVibGljYXRpb24sIG9uZSBleGVyY2lzZXMgZnVsbCBjb250cm9sLCBidXQgdGhlbiBvbmUgbXVzdCBoYW5kbGUNCittYXR0ZXJzIHN1Y2ggYXMgZGlzdHJpYnV0aW9uIGFuZCBtYXJrZXRpbmcuICBTdWNoIGFyZSBzb21lIG9mIHRoZSBvcHRpb25zDQorZm9yIHB1Ymxpc2hpbmcgaW4gdGhlIGNhc2Ugb2YgQ0QtUk9NLg0KKw0KK0luIHRoZSBjYXNlIG9mIHRlY2huaWNhbCBhbmQgZGVzaWduIGlzc3Vlcywgd2hpY2ggYXJlIGFsc28gaW1wb3J0YW50LA0KK3RoZXJlIGFyZSBtYW55IG1hdHRlcnMgd2hpY2ggbWFueSBhdCB0aGUgV29ya3Nob3AgYWxyZWFkeSBrbmV3IGEgZ29vZA0KK2RlYWwgYWJvdXQ6ICByZXRyaWV2YWwgc3lzdGVtIHJlcXVpcmVtZW50cyBhbmQgY29zdHMsIHdoYXQgdG8gZG8gYWJvdXQNCitpbWFnZXMsIHRoZSB2YXJpb3VzIGNhcGFiaWxpdGllcyBhbmQgcGxhdGZvcm1zLCB0aGUgdHJhZGUtb2ZmcyBiZXR3ZWVuDQorY29zdCBhbmQgcGVyZm9ybWFuY2UsIGNvbmNlcm5zIGFib3V0IGxvY2FsLWFyZWEgbmV0d29ya2FiaWxpdHksDQoraW50ZXJvcGVyYWJpbGl0eSwgZXRjLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitMWU5DSCAqIENyZWF0aW5nIG5ldHdvcmtlZCBpbmZvcm1hdGlvbiBpcyBkaWZmZXJlbnQgZnJvbSB1c2luZyBuZXR3b3Jrcw0KK2FzIGFuIGFjY2VzcyBvciBkaXNzZW1pbmF0aW9uIHZlaGljbGUgKiBOZXR3b3JrZWQgbXVsdGltZWRpYSBvbiBhIGxhcmdlDQorc2NhbGUgZG9lcyBub3QgeWV0IHdvcmsgKiBUeXBpY2FsIENELVJPTSBwdWJsaWNhdGlvbiBtb2RlbCBhIHR3by1lZGdlZA0KK3N3b3JkICogUHVibGlzaGluZyBpbmZvcm1hdGlvbiBvbiBhIENELVJPTSBpbiB0aGUgcHJlc2VudCB3b3JsZCBvZg0KK2ltbWF0dXJlIHN0YW5kYXJkcyAqIENvbnRyYXN0IGJldHdlZW4gQ0QtUk9NIGFuZCBuZXR3b3JrIHByaWNpbmcgKg0KK0V4YW1wbGVzIGRlbW9uc3RyYXRlZCBlYXJsaWVyIGluIHRoZSBkYXkgYXMgYSBzZXQgb2YgaW5zdWxhciBpbmZvcm1hdGlvbg0KK2dlbXMgKiBQYXJhbW91bnQgbmVlZCB0byBsaW5rIGRhdGFiYXNlcyAqIExheWVyaW5nIHRvIGJlY29tZSBpbmNyZWFzaW5nbHkNCituZWNlc3NhcnkgKiBQcm9qZWN0IE5FRURTIGFuZCB0aGUgaXNzdWVzIG9mIGluZm9ybWF0aW9uIHJldXNlIGFuZCBhY3RpdmUNCit2ZXJzdXMgcGFzc2l2ZSB1c2UgKiBYLVdpbmRvd3MgYXMgYSB3YXkgb2YgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4NCituZXR3b3JrIGFjY2VzcyBhbmQgbmV0d29ya2VkIGluZm9ybWF0aW9uICogQmFycmllcnMgdG8gdGhlIGRpc3RyaWJ1dGlvbg0KK29mIG5ldHdvcmtlZCBtdWx0aW1lZGlhIGluZm9ybWF0aW9uICogTmVlZCBmb3IgZ29vZCwgcmVhbC10aW1lIGRlbGl2ZXJ5DQorcHJvdG9jb2xzICogVGhlIHF1ZXN0aW9uIG9mIHByZXNlbnRhdGlvbiBpbnRlZ3JpdHkgaW4gY2xpZW50LXNlcnZlcg0KK2NvbXB1dGluZyBpbiB0aGUgYWNhZGVtaWMgd29ybGQgKiBSZWNvbW1lbmRhdGlvbnMgZm9yIHByb2R1Y2luZyBtdWx0aW1lZGlhDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0NsaWZmb3JkIExZTkNILCBkaXJlY3RvciwgTGlicmFyeSBBdXRvbWF0aW9uLCBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsDQorb3BlbmVkIGhpcyB0YWxrIHdpdGggdGhlIGdlbmVyYWwgb2JzZXJ2YXRpb24gdGhhdCBuZXR3b3JrZWQgaW5mb3JtYXRpb24NCitjb25zdGl0dXRlZCBhIGRpZmZpY3VsdCBhbmQgZWx1c2l2ZSB0b3BpYyBiZWNhdXNlIGl0IGlzIHNvbWV0aGluZyBqdXN0DQorc3RhcnRpbmcgdG8gZGV2ZWxvcCBhbmQgbm90IHlldCBmdWxseSB1bmRlcnN0b29kLiAgTFlOQ0ggY29udGVuZGVkIHRoYXQNCitjcmVhdGluZyBnZW51aW5lbHkgbmV0d29ya2VkIGluZm9ybWF0aW9uIHdhcyBkaWZmZXJlbnQgZnJvbSB1c2luZw0KK25ldHdvcmtzIGFzIGFuIGFjY2VzcyBvciBkaXNzZW1pbmF0aW9uIHZlaGljbGUgYW5kIHdhcyBtb3JlIHNvcGhpc3RpY2F0ZWQNCithbmQgbW9yZSBzdWJ0bGUuICBIZSBpbnZpdGVkIHRoZSBtZW1iZXJzIG9mIHRoZSBhdWRpZW5jZSB0byBleHRyYXBvbGF0ZSwNCitmcm9tIHdoYXQgdGhleSBoZWFyZCBhYm91dCB0aGUgcHJlY2VkaW5nIGRlbW9uc3RyYXRpb24gcHJvamVjdHMsIHRvIHdoYXQNCitzb3J0IG9mIGEgd29ybGQgb2YgZWxlY3Ryb25pY3MgaW5mb3JtYXRpb24tLXNjaG9sYXJseSwgYXJjaGl2YWwsDQorY3VsdHVyYWwsIGV0Yy4tLXRoZXkgd2lzaGVkIHRvIGVuZCB1cCB3aXRoIHRlbiBvciBmaWZ0ZWVuIHllYXJzIGZyb20gbm93LiANCitMWU5DSCBzdWdnZXN0ZWQgdGhhdCB0byBleHRyYXBvbGF0ZSBkaXJlY3RseSBmcm9tIHRoZXNlIHByb2plY3RzIHdvdWxkDQorcHJvZHVjZSB1bnBsZWFzYW50IHJlc3VsdHMuDQorDQorUHV0dGluZyB0aGUgaXNzdWUgb2YgQ0QtUk9NIGluIHBlcnNwZWN0aXZlIGJlZm9yZSBnZXR0aW5nIGludG8NCitnZW5lcmFsaXRpZXMgb24gbmV0d29ya2VkIGluZm9ybWF0aW9uLCBMWU5DSCBvYnNlcnZlZCB0aGF0IHRob3NlIGVuZ2FnZWQNCitpbiBtdWx0aW1lZGlhIHRvZGF5IHdobyB3aXNoIHRvIHNoaXAgYSBwcm9kdWN0LCBzbyB0byBzYXksIHByb2JhYmx5IGRvDQorbm90IGhhdmUgbXVjaCBjaG9pY2UgZXhjZXB0IHRvIHVzZSBDRC1ST006ICBuZXR3b3JrZWQgbXVsdGltZWRpYSBvbiBhDQorbGFyZ2Ugc2NhbGUgYmFzaWNhbGx5IGRvZXMgbm90IHlldCB3b3JrIGJlY2F1c2UgdGhlIHRlY2hub2xvZ3kgZG9lcyBub3QNCitleGlzdC4gIEZvciBleGFtcGxlLCBhbnlib2R5IHdobyBoYXMgdHJpZWQgbW92aW5nIGltYWdlcyBhcm91bmQgb3ZlciB0aGUNCitJbnRlcm5ldCBrbm93cyB0aGF0IHRoaXMgaXMgYW4gZXhjaXRpbmcgdG91Y2gtYW5kLWdvIHByb2Nlc3MsIGENCitmYXNjaW5hdGluZyBhbmQgZmVydGlsZSBhcmVhIGZvciBleHBlcmltZW50YXRpb24sIHJlc2VhcmNoLCBhbmQNCitkZXZlbG9wbWVudCwgYnV0IG5vdCBzb21ldGhpbmcgdGhhdCBvbmUgY2FuIGJlY29tZSBkZWVwbHkgZW50aHVzaWFzdGljDQorYWJvdXQgY29tbWl0dGluZyB0byBwcm9kdWN0aW9uIHN5c3RlbXMgYXQgdGhpcyB0aW1lLg0KKw0KK1RoaXMgc2l0dWF0aW9uIHdpbGwgY2hhbmdlLCBMWU5DSCBzYWlkLiAgSGUgZGlmZmVyZW50aWF0ZWQgQ0QtUk9NIGZyb20NCit0aGUgcHJhY3RpY2VzIHRoYXQgaGF2ZSBiZWVuIGZvbGxvd2VkIHVwIHRvIG5vdyBpbiBkaXN0cmlidXRpbmcgZGF0YSBvbg0KK0NELVJPTS4gIEZvciBMWU5DSCB0aGUgcHJvYmxlbSB3aXRoIENELVJPTSBpcyBub3QgaXRzIHBvcnRhYmlsaXR5IG9yIGl0cw0KK3Nsb3duZXNzIGJ1dCB0aGUgdHdvLWVkZ2VkIHN3b3JkIG9mIGhhdmluZyB0aGUgcmV0cmlldmFsIGFwcGxpY2F0aW9uIGFuZA0KK3RoZSB1c2VyIGludGVyZmFjZSBpbmV4dHJpY2FibHkgYm91bmQgdXAgd2l0aCB0aGUgZGF0YSwgd2hpY2ggaXMgdGhlDQordHlwaWNhbCBDRC1ST00gcHVibGljYXRpb24gbW9kZWwuICBJdCBpcyBub3QgYSBjYXNlIG9mIHB1Ymxpc2hpbmcgZGF0YQ0KK2J1dCBvZiBkaXN0cmlidXRpbmcgYSB0eXBpY2FsbHkgc3RhbmQtYWxvbmUsIHR5cGljYWxseSBjbG9zZWQgc3lzdGVtLA0KK2FsbC0tc29mdHdhcmUsIHVzZXIgaW50ZXJmYWNlLCBhbmQgZGF0YS0tb24gYSBsaXR0bGUgZGlzay4gIEhlbmNlLCBhbGwNCit0aGUgYmV0d2Vlbi1kaXNrIG5hdmlnYXRpb25hbCBpc3N1ZXMgYXMgd2VsbCBhcyB0aGUgaW1wb3NzaWJpbGl0eSBpbiBtb3N0DQorY2FzZXMgb2YgaW50ZWdyYXRpbmcgZGF0YSBvbiBvbmUgZGlzayB3aXRoIHRoYXQgb24gYW5vdGhlci4gIE1vc3QgQ0QtUk9NDQorcmV0cmlldmFsIHNvZnR3YXJlIGRvZXMgbm90IG5ldHdvcmsgdmVyeSBncmFjZWZ1bGx5IGF0IHByZXNlbnQuICBIb3dldmVyLA0KK2luIHRoZSBwcmVzZW50IHdvcmxkIG9mIGltbWF0dXJlIHN0YW5kYXJkcyBhbmQgbGFjayBvZiB1bmRlcnN0YW5kaW5nIG9mDQord2hhdCBuZXR3b3JrIGluZm9ybWF0aW9uIGlzIG9yIHdoYXQgdGhlIGdyb3VuZCBydWxlcyBhcmUgZm9yIGNyZWF0aW5nIG9yDQordXNpbmcgaXQsIHB1Ymxpc2hpbmcgaW5mb3JtYXRpb24gb24gYSBDRC1ST00gZG9lcyBhZGQgdmFsdWUgaW4gYSB2ZXJ5DQorcmVhbCBzZW5zZS4NCisNCitMWU5DSCBkcmV3IGEgY29udHJhc3QgYmV0d2VlbiBDRC1ST00gYW5kIG5ldHdvcmsgcHJpY2luZyBhbmQgaW4gZG9pbmcgc28NCitoaWdobGlnaHRlZCBzb21ldGhpbmcgYml6YXJyZSBpbiBpbmZvcm1hdGlvbiBwcmljaW5nLiAgQSBsYXJnZQ0KK2luc3RpdHV0aW9uIHN1Y2ggYXMgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSBoYXMgdmVuZG9ycyB3aG8gd2lsbA0KK29mZmVyIHRvIHNlbGwgaW5mb3JtYXRpb24gb24gQ0QtUk9NIGZvciBhIHByaWNlIHBlciB5ZWFyIGluIGZvdXIgZGlnaXRzLA0KK2J1dCBmb3IgdGhlIHNhbWUgZGF0YSAoZS5nLiwgYW4gYWJzdHJhY3RpbmcgYW5kIGluZGV4aW5nIGRhdGFiYXNlKSBvbg0KK21hZ25ldGljIHRhcGUsIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgcGVvcGxlIG1heSB1c2UgaXQgY29uY3VycmVudGx5LA0KK3dpbGwgcXVvdGUgYSBwcmljZSBpbiBzaXggZGlnaXRzLg0KKw0KK1doYXQgaXMgcGFja2FnZWQgd2l0aCB0aGUgQ0QtUk9NIGluIG9uZSBzZW5zZSBhZGRzIHZhbHVlLS1hIGNvbXBsZXRlDQorYWNjZXNzIHN5c3RlbSwgbm90IGp1c3QgcmF3LCB1bnJlZmluZWQgaW5mb3JtYXRpb24tLWFsdGhvdWdoIGl0IGlzIG5vdA0KK2dlbmVyYWxseSBwZXJjZWl2ZWQgdGhhdCB3YXkuICBUaGlzIGlzIGJlY2F1c2UgdGhlIGFjY2VzcyBzb2Z0d2FyZSwNCithbHRob3VnaCBpdCBhZGRzIHZhbHVlLCBpcyB2aWV3ZWQgYnkgc29tZSBwZW9wbGUsIHBhcnRpY3VsYXJseSBpbiB0aGUNCit1bml2ZXJzaXR5IGVudmlyb25tZW50IHdoZXJlIHRoZXJlIGlzIGEgdmVyeSBoZWF2eSBjb21taXRtZW50IHRvDQorbmV0d29ya2luZywgYXMgYmVpbmcgZGV2ZWxvcGVkIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24uDQorDQorR2l2ZW4gdGhhdCBjb250ZXh0LCBMWU5DSCBkZXNjcmliZWQgdGhlIGV4YW1wbGVzIGRlbW9uc3RyYXRlZCBhcyBhIHNldCBvZg0KK2luc3VsYXIgaW5mb3JtYXRpb24gZ2Vtcy0tUGVyc2V1cywgZm9yIGV4YW1wbGUsIG9mZmVycyBuaWNlbHkgbGlua2VkDQoraW5mb3JtYXRpb24sIGJ1dCB3b3VsZCBiZSB2ZXJ5IGRpZmZpY3VsdCB0byBpbnRlZ3JhdGUgd2l0aCBvdGhlcg0KK2RhdGFiYXNlcywgdGhhdCBpcywgdG8gbGluayB0b2dldGhlciBzZWFtbGVzc2x5IHdpdGggb3RoZXIgc291cmNlIGZpbGVzDQorZnJvbSBvdGhlciBzb3VyY2VzLiAgSXQgcmVzZW1ibGVzIGFuIGlzbGFuZCwgYW5kIGluIHRoaXMgcmVzcGVjdCBpcw0KK3NpbWlsYXIgdG8gbnVtZXJvdXMgc3RhbmQtYWxvbmUgcHJvamVjdHMgdGhhdCBhcmUgYmFzZWQgb24gdmlkZW9kaXNjcywNCit0aGF0IGlzLCBvbiB0aGUgc2luZ2xlLXdvcmtzdGF0aW9uIGNvbmNlcHQuDQorDQorQXMgc2Nob2xhcnNoaXAgZXZvbHZlcyBpbiBhIG5ldHdvcmsgZW52aXJvbm1lbnQsIHRoZSBwYXJhbW91bnQgbmVlZCB3aWxsDQorYmUgdG8gbGluayBkYXRhYmFzZXMuICBXZSBtdXN0IGxpbmsgcGVyc29uYWwgZGF0YWJhc2VzIHRvIHB1YmxpYw0KK2RhdGFiYXNlcywgdG8gZ3JvdXAgZGF0YWJhc2VzLCBpbiBmYWlybHkgc2VhbWxlc3Mgd2F5cy0td2hpY2ggaXMNCitleHRyZW1lbHkgZGlmZmljdWx0IGluIHRoZSBlbnZpcm9ubWVudHMgdW5kZXIgZGlzY3Vzc2lvbiB3aXRoIGNvcGllcyBvZg0KK2RhdGFiYXNlcyBwcm9saWZlcmF0aW5nIGFsbCBvdmVyIHRoZSBwbGFjZS4NCisNCitUaGUgbm90aW9uIG9mIGxheWVyaW5nIGFsc28gc3RydWNrIExZTkNIIGFzIGx1cmtpbmcgaW4gc2V2ZXJhbCBvZiB0aGUNCitwcm9qZWN0cyBkZW1vbnN0cmF0ZWQuICBTZXZlcmFsIGRhdGFiYXNlcyBpbiBhIHNlbnNlIGNvbnN0aXR1dGUNCitpbmZvcm1hdGlvbiBhcmNoaXZlcyB3aXRob3V0IGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIG5hdmlnYXRpb24gYnVpbHQgaW4uIA0KK0VkdWNhdG9ycywgY3JpdGljcywgYW5kIG90aGVycyB3aWxsIHdhbnQgYSBsYXllcmVkIHN0cnVjdHVyZS0tb25lIHRoYXQNCitkZWZpbmVzIG9yIGxpbmtzIHBhdGhzIHRocm91Z2ggdGhlIGxheWVycyB0byBhbGxvdyB1c2VycyB0byByZWFjaA0KK3NwZWNpZmljIHBvaW50cy4gIEluIExZTkNIJ3MgdmlldywgbGF5ZXJpbmcgd2lsbCBiZWNvbWUgaW5jcmVhc2luZ2x5DQorbmVjZXNzYXJ5LCBhbmQgbm90IGp1c3Qgd2l0aGluIGEgc2luZ2xlIHJlc291cmNlIGJ1dCBhY3Jvc3MgcmVzb3VyY2VzDQorKGUuZy4sIHRyYWNpbmcgbXl0aG9sb2d5IGFuZCBjdWx0dXJhbCB0aGVtZXMgYWNyb3NzIHNldmVyYWwgY2xhc3NpY3MNCitkYXRhYmFzZXMgYXMgd2VsbCBhcyBhIGRhdGFiYXNlIG9mIFJlbmFpc3NhbmNlIGN1bHR1cmUpLiAgVGhpcyBhYmlsaXR5IHRvDQorb3JnYW5pemUgcmVzb3VyY2VzLCB0byBidWlsZCB0aGluZ3Mgb3V0IG9mIG11bHRpcGxlIG90aGVyIHRoaW5ncyBvbiB0aGUNCituZXR3b3JrIG9yIHNlbGVjdCBwaWVjZXMgb2YgaXQsIHJlcHJlc2VudGVkIGZvciBMWU5DSCBvbmUgb2YgdGhlIGtleQ0KK2FzcGVjdHMgb2YgbmV0d29yayBpbmZvcm1hdGlvbi4NCisNCitDb250ZW5kaW5nIHRoYXQgaW5mb3JtYXRpb24gcmV1c2UgY29uc3RpdHV0ZWQgYW5vdGhlciBzaWduaWZpY2FudCBpc3N1ZSwNCitMWU5DSCBjb21tZW5kZWQgdG8gdGhlIGF1ZGllbmNlJ3MgYXR0ZW50aW9uIFByb2plY3QgTkVFRFMgKGkuZS4sIE5hdGlvbmFsDQorRW5naW5lZXJpbmcgRWR1Y2F0aW9uIERlbGl2ZXJ5IFN5c3RlbSkuICBUaGlzIHByb2plY3QncyBvYmplY3RpdmUgaXMgdG8NCitwcm9kdWNlIGEgZGF0YWJhc2Ugb2YgZW5naW5lZXJpbmcgY291cnNld2FyZSBhcyB3ZWxsIGFzIHRoZSBjb21wb25lbnRzDQordGhhdCBjYW4gYmUgdXNlZCB0byBkZXZlbG9wIG5ldyBjb3Vyc2V3YXJlLiAgSW4gYSBudW1iZXIgb2YgdGhlIGV4aXN0aW5nDQorYXBwbGljYXRpb25zLCBMWU5DSCBzYWlkLCB0aGUgaXNzdWUgb2YgcmV1c2UgKGhvdyBtdWNoIG9uZSBjYW4gdGFrZSBhcGFydA0KK2FuZCByZXVzZSBpbiBvdGhlciBhcHBsaWNhdGlvbnMpIHdhcyBub3QgYmVpbmcgd2VsbCBjb25zaWRlcmVkLiAgSGUgYWxzbw0KK3JhaXNlZCB0aGUgaXNzdWUgb2YgYWN0aXZlIHZlcnN1cyBwYXNzaXZlIHVzZSwgb25lIGFzcGVjdCBvZiB3aGljaCAgaXMNCitob3cgbXVjaCBpbmZvcm1hdGlvbiB3aWxsIGJlIG1hbmlwdWxhdGVkIGxvY2FsbHkgYnkgdXNlcnMuICBNb3N0IHBlb3BsZSwNCitoZSBhcmd1ZWQsIG1heSBkbyBhIGxpdHRsZSBicm93c2luZyBhbmQgdGhlbiB3aWxsIHdpc2ggdG8gcHJpbnQuICBMWU5DSA0KK3dhcyB1bmNlcnRhaW4gaG93IHRoZXNlIHJlc291cmNlcyB3b3VsZCBiZSB1c2VkIGJ5IHRoZSB2YXN0IG1ham9yaXR5IG9mDQordXNlcnMgaW4gdGhlIG5ldHdvcmsgZW52aXJvbm1lbnQuDQorDQorTFlOQ0ggbmV4dCBzYWlkIGEgZmV3IHdvcmRzIGFib3V0IFgtV2luZG93cyBhcyBhIHdheSBvZiBkaWZmZXJlbnRpYXRpbmcNCitiZXR3ZWVuIG5ldHdvcmsgYWNjZXNzIGFuZCBuZXR3b3JrZWQgaW5mb3JtYXRpb24uICBBIG51bWJlciBvZiB0aGUNCithcHBsaWNhdGlvbnMgZGVtb25zdHJhdGVkIGF0IHRoZSBXb3Jrc2hvcCBjb3VsZCBiZSByZXdyaXR0ZW4gdG8gdXNlIFgNCithY3Jvc3MgdGhlIG5ldHdvcmssIHNvIHRoYXQgb25lIGNvdWxkIHJ1biB0aGVtIGZyb20gYW55IFgtY2FwYWJsZSBkZXZpY2UtDQorLWEgd29ya3N0YXRpb24sIGFuIFggdGVybWluYWwtLWFuZCB0cmFuc2FjdCB3aXRoIGEgZGF0YWJhc2UgYWNyb3NzIHRoZQ0KK25ldHdvcmsuICBBbHRob3VnaCB0aGlzIG9wZW5zIHVwIGFjY2VzcyBhIGxpdHRsZSwgYXNzdW1pbmcgb25lIGhhcyBlbm91Z2gNCituZXR3b3JrIHRvIGhhbmRsZSBpdCwgaXQgZG9lcyBub3QgcHJvdmlkZSBhbiBpbnRlcmZhY2UgdG8gZGV2ZWxvcCBhDQorcHJvZ3JhbSB0aGF0IGNvbnZlbmllbnRseSBpbnRlZ3JhdGVzIGluZm9ybWF0aW9uIGZyb20gbXVsdGlwbGUgZGF0YWJhc2VzLiANCitYIGlzIGEgdmlld2luZyB0ZWNobm9sb2d5IHRoYXQgaGFzIGxpbWl0cy4gIEluIGEgcmVhbCBzZW5zZSwgaXQgaXMganVzdCBhDQorZ3JhcGhpY2FsIHZlcnNpb24gb2YgcmVtb3RlIGxvZy1pbiBhY3Jvc3MgdGhlIG5ldHdvcmsuICBYLXR5cGUgYXBwbGljYXRpb25zDQorcmVwcmVzZW50IG9ubHkgb25lIHN0ZXAgaW4gdGhlIHByb2dyZXNzaW9uIHRvd2FyZHMgcmVhbCBhY2Nlc3MuDQorDQorTFlOQ0ggbmV4dCBkaXNjdXNzZWQgYmFycmllcnMgdG8gdGhlIGRpc3RyaWJ1dGlvbiBvZiBuZXR3b3JrZWQgbXVsdGltZWRpYQ0KK2luZm9ybWF0aW9uLiAgVGhlIGhlYXJ0IG9mIHRoZSBwcm9ibGVtIGlzIGEgbGFjayBvZiBzdGFuZGFyZHMgdG8gcHJvdmlkZQ0KK3RoZSBhYmlsaXR5IGZvciBjb21wdXRlcnMgdG8gdGFsayB0byBlYWNoIG90aGVyLCByZXRyaWV2ZSBpbmZvcm1hdGlvbiwNCithbmQgc2h1ZmZsZSBpdCBhcm91bmQgZmFpcmx5IGNhc3VhbGx5LiAgQXQgdGhlIG1vbWVudCwgbGl0dGxlIHByb2dyZXNzIGlzDQorYmVpbmcgbWFkZSBvbiBzdGFuZGFyZHMgZm9yIG5ldHdvcmtlZCBpbmZvcm1hdGlvbjsgZm9yIGV4YW1wbGUsIHByZXNlbnQNCitzdGFuZGFyZHMgZG8gbm90IGNvdmVyIGltYWdlcywgZGlnaXRhbCB2b2ljZSwgYW5kIGRpZ2l0YWwgdmlkZW8uICBBDQordXNlZnVsIHRvb2wga2l0IG9mIGV4Y2hhbmdlIGZvcm1hdHMgZm9yIGJhc2ljIHRleHRzIGlzIG9ubHkgbm93IGJlaW5nDQorYXNzZW1ibGVkLiAgVGhlIHN5bmNocm9uaXphdGlvbiBvZiBjb250ZW50IHN0cmVhbXMgKGkuZS4sIHN5bmNocm9uaXppbmcgYQ0KK3ZvaWNlIHRyYWNrIHRvIGEgdmlkZW8gdHJhY2ssIGVzdGFibGlzaGluZyB0ZW1wb3JhbCByZWxhdGlvbnMgYmV0d2Vlbg0KK2RpZmZlcmVudCBjb21wb25lbnRzIGluIGEgbXVsdGltZWRpYSBvYmplY3QpIGNvbnN0aXR1dGVzIGFub3RoZXIgaXNzdWUNCitmb3IgbmV0d29ya2VkIG11bHRpbWVkaWEgdGhhdCBpcyBqdXN0IGJlZ2lubmluZyB0byByZWNlaXZlIGF0dGVudGlvbi4NCisNCitVbmRlcmx5aW5nIG5ldHdvcmsgcHJvdG9jb2xzIGFsc28gbmVlZCBzb21lIHdvcms7IGdvb2QsIHJlYWwtdGltZQ0KK2RlbGl2ZXJ5IHByb3RvY29scyBvbiB0aGUgSW50ZXJuZXQgZG8gbm90IHlldCBleGlzdC4gIEluIExZTkNIJ3MgdmlldywNCitoaWdobHkgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dCBpcyB0aGUgbm90aW9uIG9mIG5ldHdvcmtlZCBkaWdpdGFsDQorb2JqZWN0IElEcywgdGhlIGFiaWxpdHkgb2Ygb25lIG9iamVjdCBvbiB0aGUgbmV0d29yayB0byBwb2ludCB0byBhbm90aGVyDQorb2JqZWN0IChvciBjb21wb25lbnQgdGhlcmVvZikgb24gdGhlIG5ldHdvcmsuICBTZXJpb3VzIGJhbmR3aWR0aCBpc3N1ZXMNCithbHNvIGV4aXN0LiAgTFlOQ0ggd2FzIHVuY2VydGFpbiBpZiBiaWxsaW9uLWJpdC1wZXItc2Vjb25kIG5ldHdvcmtzIHdvdWxkDQorcHJvdmUgc3VmZmljaWVudCBpZiBudW1lcm91cyBwZW9wbGUgcmFuIHZpZGVvIGluIHBhcmFsbGVsLg0KKw0KK0xZTkNIIGNvbmNsdWRlZCBieSBvZmZlcmluZyBhbiBpc3N1ZSBmb3IgZGF0YWJhc2UgY3JlYXRvcnMgdG8gY29uc2lkZXIsDQorYXMgd2VsbCBhcyBzZXZlcmFsIGNvbW1lbnRzIGFib3V0IHdoYXQgbWlnaHQgY29uc3RpdHV0ZSBnb29kIHRyaWFsDQorbXVsdGltZWRpYSBleHBlcmltZW50cy4gIEluIGEgbmV0d29ya2VkIGluZm9ybWF0aW9uIHdvcmxkIHRoZSBkYXRhYmFzZQ0KK2J1aWxkZXIgb3Igc2VydmljZSBidWlsZGVyIChwdWJsaXNoZXIpIGRvZXMgbm90IGV4ZXJjaXNlIHRoZSBzYW1lDQorZXh0ZW5zaXZlIGNvbnRyb2wgb3ZlciB0aGUgaW50ZWdyaXR5IG9mIHRoZSBwcmVzZW50YXRpb247IHN0cmFuZ2UNCitwcm9ncmFtcyAibXVuZ2UiIHdpdGggb25lJ3MgZGF0YSBiZWZvcmUgdGhlIHVzZXIgc2VlcyBpdC4gIFNlcmlvdXMNCit0aG91Z2h0IG11c3QgYmUgZ2l2ZW4gdG8gd2hhdCBndWFyYW50ZWVzIGludGVncml0eSBvZiBwcmVzZW50YXRpb24uICBQYXJ0DQorb2YgdGhhdCBpcyByZWxhdGVkIHRvIHdoZXJlIG9uZSBkcmF3cyB0aGUgYm91bmRhcmllcyBhcm91bmQgYSBuZXR3b3JrZWQNCitpbmZvcm1hdGlvbiBzZXJ2aWNlLiAgVGhpcyBxdWVzdGlvbiBvZiBwcmVzZW50YXRpb24gaW50ZWdyaXR5IGluDQorY2xpZW50LXNlcnZlciBjb21wdXRpbmcgaGFzIG5vdCBiZWVuIHN0cmVzc2VkIGVub3VnaCBpbiB0aGUgYWNhZGVtaWMNCit3b3JsZCwgTFlOQ0ggYXJndWVkLCB0aG91Z2ggY29tbWVyY2lhbCBzZXJ2aWNlIHByb3ZpZGVycyBkZWFsIHdpdGggaXQNCityZWd1bGFybHkuDQorDQorQ29uY2VybmluZyBtdWx0aW1lZGlhLCBMWU5DSCBvYnNlcnZlZCB0aGF0IGdvb2QgbXVsdGltZWRpYSBhdCB0aGUgbW9tZW50DQoraXMgaGlkZW91c2x5IGV4cGVuc2l2ZSB0byBwcm9kdWNlLiAgSGUgcmVjb21tZW5kZWQgcHJvZHVjaW5nIG11bHRpbWVkaWENCit3aXRoIGVpdGhlciB2ZXJ5IGhpZ2ggc2FsZSB2YWx1ZSwgb3IgbXVsdGltZWRpYSB3aXRoIGEgdmVyeSBsb25nIGxpZmUNCitzcGFuLCBvciBtdWx0aW1lZGlhIHRoYXQgd2lsbCBoYXZlIGEgdmVyeSBicm9hZCB1c2FnZSBiYXNlIGFuZCB3aG9zZQ0KK2Nvc3RzIHRoZXJlZm9yZSBjYW4gYmUgYW1vcnRpemVkIGFtb25nIGxhcmdlIG51bWJlcnMgb2YgdXNlcnMuICBJbiB0aGlzDQorY29ubmVjdGlvbiwgaGlzdG9yaWNhbCBhbmQgaHVtYW5pc3RpY2FsbHkgb3JpZW50ZWQgbWF0ZXJpYWwgbWF5IGJlIGEgZ29vZA0KK3BsYWNlIHRvIHN0YXJ0LCBiZWNhdXNlIGl0IHRlbmRzIHRvIGhhdmUgYSBsb25nZXIgbGlmZSBzcGFuIHRoYW4gbXVjaCBvZg0KK3RoZSBzY2llbnRpZmljIG1hdGVyaWFsLCBhcyB3ZWxsIGFzIGEgd2lkZXIgdXNlciBiYXNlLiAgTFlOQ0ggbm90ZWQsIGZvcg0KK2V4YW1wbGUsIHRoYXQgQW1lcmljYW4gTWVtb3J5IGZpdHMgbWFueSBvZiB0aGUgY3JpdGVyaWEgb3V0bGluZWQuICBIZQ0KK3JlbWFya2VkIHRoZSBleHRlbnNpdmUgZGlzY3Vzc2lvbiBhYm91dCBicmluZ2luZyB0aGUgSW50ZXJuZXQgb3IgdGhlDQorTmF0aW9uYWwgUmVzZWFyY2ggYW5kIEVkdWNhdGlvbiBOZXR3b3JrIChOUkVOKSBpbnRvIHRoZSBLLTEyIGVudmlyb25tZW50DQorYXMgYSB3YXkgb2YgaGVscGluZyB0aGUgQW1lcmljYW4gZWR1Y2F0aW9uYWwgc3lzdGVtLg0KKw0KK0xZTkNIIGNsb3NlZCBieSBub3RpbmcgdGhhdCB0aGUga2luZHMgb2YgYXBwbGljYXRpb25zIGRlbW9uc3RyYXRlZCBzdHJ1Y2sNCitoaW0gYXMgZXhjZWxsZW50IGp1c3RpZmljYXRpb25zIG9mIGJyb2FkLXNjYWxlIG5ldHdvcmtpbmcgZm9yIEstMTIsIGJ1dA0KK3RoYXQgYXQgdGhpcyB0aW1lIG5vICJraWxsZXIiIGFwcGxpY2F0aW9uIGV4aXN0cyB0byBtb2JpbGl6ZSB0aGUgSy0xMg0KK2NvbW11bml0eSB0byBvYnRhaW4gY29ubmVjdGl2aXR5Lg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogRGVhcnRoIG9mIGdlbnVpbmVseSBpbnRlcmVzdGluZyBhcHBsaWNhdGlvbnMgb24gdGhlIG5ldHdvcmsNCithIHNsb3ctY2hhbmdpbmcgc2l0dWF0aW9uICogVGhlIGlzc3VlIG9mIHRoZSBpbnRlZ3JpdHkgb2YgcHJlc2VudGF0aW9uIGluDQorYSBuZXR3b3JrZWQgZW52aXJvbm1lbnQgKiBTZXZlcmFsIHJlYXNvbnMgd2h5IENELVJPTSBzb2Z0d2FyZSBkb2VzIG5vdA0KK25ldHdvcmsgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitEdXJpbmcgdGhlIGRpc2N1c3Npb24gcGVyaW9kIHRoYXQgZm9sbG93ZWQgTFlOQ0gncyBwcmVzZW50YXRpb24sIHNldmVyYWwNCithZGRpdGlvbmFsIHBvaW50cyB3ZXJlIG1hZGUuDQorDQorTFlOQ0ggcmVpdGVyYXRlZCBldmVuIG1vcmUgc3Ryb25nbHkgaGlzIGNvbnRlbnRpb24gdGhhdCwgaGlzdG9yaWNhbGx5LA0KK29uY2Ugb25lIGdvZXMgb3V0c2lkZSBoaWdoLWVuZCBzY2llbmNlIGFuZCB0aGUgZ3JvdXAgb2YgdGhvc2Ugd2hvIG5lZWQNCithY2Nlc3MgdG8gc3VwZXJjb21wdXRlcnMsIHRoZXJlIGlzIGEgZ3JlYXQgZGVhcnRoIG9mIGdlbnVpbmVseQ0KK2ludGVyZXN0aW5nIGFwcGxpY2F0aW9ucyBvbiB0aGUgbmV0d29yay4gIEhlIHNhdyB0aGlzIHNpdHVhdGlvbiBjaGFuZ2luZw0KK3Nsb3dseSwgd2l0aCBzb21lIG9mIHRoZSBzY2llbnRpZmljIGRhdGFiYXNlcyBhbmQgc2Nob2xhcmx5IGRpc2N1c3Npb24NCitncm91cHMgYW5kIGVsZWN0cm9uaWMgam91cm5hbHMgY29taW5nIG9uIGFzIHdlbGwgYXMgd2l0aCB0aGUgYXZhaWxhYmlsaXR5DQorb2YgV2lkZSBBcmVhIEluZm9ybWF0aW9uIFNlcnZlcnMgKFdBSVMpIGFuZCBzb21lIG9mIHRoZSBkYXRhYmFzZXMgdGhhdA0KK2FyZSBiZWluZyBtb3VudGVkIHRoZXJlLiAgSG93ZXZlciwgbWFueSBvZiB0aG9zZSB0aGluZ3MgZG8gbm90IHNlZW0gdG8NCitoYXZlIHBpcXVlZCBncmVhdCBwb3B1bGFyIGludGVyZXN0LiAgRm9yIGluc3RhbmNlLCBtb3N0IGhpZ2ggc2Nob29sDQorc3R1ZGVudHMgb2YgTFlOQ0gncyBhY3F1YWludGFuY2Ugd291bGQgbm90IHF1YWxpZnkgYXMgZGV2b3RlZXMgb2Ygc2VyaW91cw0KK21vbGVjdWxhciBiaW9sb2d5Lg0KKw0KK0NvbmNlcm5pbmcgdGhlIGlzc3VlIG9mIHRoZSBpbnRlZ3JpdHkgb2YgcHJlc2VudGF0aW9uLCBMWU5DSCBiZWxpZXZlZA0KK3RoYXQgYSBjb3VwbGUgb2YgaW5mb3JtYXRpb24gcHJvdmlkZXJzIGhhdmUgbGFpZCBkb3duIHRoZSBsYXcgYXQgbGVhc3Qgb24NCitjZXJ0YWluIHRoaW5ncy4gIEZvciBleGFtcGxlLCBoaXMgcmVjb2xsZWN0aW9uIHdhcyB0aGF0IHRoZSBOYXRpb25hbA0KK0xpYnJhcnkgb2YgTWVkaWNpbmUgZmVlbHMgc3Ryb25nbHkgdGhhdCBvbmUgbmVlZHMgdG8gZW1wbG95IHRoZQ0KK2lkZW50aWZpZXIgZmllbGQgaWYgaGUgb3Igc2hlIGlzIHRvIG1vdW50IGEgZGF0YWJhc2UgY29tbWVyY2lhbGx5LiAgVGhlDQorcHJvYmxlbSB3aXRoIGEgcmVhbCBuZXR3b3JrZWQgZW52aXJvbm1lbnQgaXMgdGhhdCBvbmUgZG9lcyBub3Qga25vdyB3aG8NCitpcyByZWZvcm1hdHRpbmcgYW5kIHJlcHJvY2Vzc2luZyBvbmUncyBkYXRhIHdoZW4gb25lIGVudGVycyBhIGNsaWVudA0KK3NlcnZlciBtb2RlLiAgSXQgYmVjb21lcyBhbnlib2R5J3MgZ3Vlc3MsIGZvciBleGFtcGxlLCBpZiB0aGUgbmV0d29yaw0KK3VzZXMgYSBaMzkuNTAgc2VydmVyLCBvciB3aGF0IGNsaWVudHMgYXJlIGRvaW5nIHdpdGggb25lJ3MgZGF0YS4gIEEgZGF0YQ0KK3Byb3ZpZGVyIGNhbiBzYXkgdGhhdCBoaXMgY29udHJhY3Qgd2lsbCBvbmx5IHBlcm1pdCBjbGllbnRzIHRvIGhhdmUNCithY2Nlc3MgdG8gaGlzIGRhdGEgYWZ0ZXIgaGUgdmV0cyB0aGVtIGFuZCB0aGVpciBwcmVzZW50YXRpb24gYW5kIG1ha2VzDQorY2VydGFpbiBpdCBzdWl0cyBoaW0uICBCdXQgTFlOQ0ggaGVsZCBvdXQgbGl0dGxlIGV4cGVjdGF0aW9uIHRoYXQgdGhlDQorbmV0d29yayBtYXJrZXRwbGFjZSB3b3VsZCBldm9sdmUgaW4gdGhhdCB3YXksIGJlY2F1c2UgaXQgcmVxdWlyZWQgdG9vDQorbXVjaCBwcmlvciBuZWdvdGlhdGlvbi4NCisNCitDRC1ST00gc29mdHdhcmUgZG9lcyBub3QgbmV0d29yayBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnMsIExZTkNIIHNhaWQuIA0KK0hlIHNwZWN1bGF0ZWQgdGhhdCBDRC1ST00gcHVibGlzaGVycyBhcmUgbm90IGVhZ2VyIHRvIGhhdmUgdGhlaXIgcHJvZHVjdHMNCityZWFsbHkgaG9vayBpbnRvIHdpZGUgYXJlYSBuZXR3b3JrcywgYmVjYXVzZSB0aGV5IGZlYXIgaXQgd2lsbCBtYWtlIHRoZWlyDQorZGF0YSBzdXBwbGllcnMgbmVydm91cy4gIE1vcmVvdmVyLCB1bnRpbCByZWxhdGl2ZWx5IHJlY2VudGx5LCBvbmUgaGFkIHRvDQorYmUgcmF0aGVyIGFkcm9pdCB0byBydW4gYSBmdWxsIFRDUC9JUCBzdGFjayBwbHVzIGFwcGxpY2F0aW9ucyBvbiBhDQorUEMtc2l6ZSBtYWNoaW5lLCB3aGVyZWFzIG5vd2FkYXlzIGl0IGlzIGJlY29taW5nIGVhc2llciBhcyBQQ3MgZ3Jvdw0KK2JpZ2dlciBhbmQgZmFzdGVyLiAgTFlOQ0ggYWxzbyBzcGVjdWxhdGVkIHRoYXQgc29mdHdhcmUgcHJvdmlkZXJzIGhhZCBub3QNCitoZWFyZCBmcm9tIHRoZWlyIGN1c3RvbWVycyB1bnRpbCB0aGUgbGFzdCB5ZWFyIG9yIHNvLCBvciBoYWQgbm90IGhlYXJkDQorZnJvbSBlbm91Z2ggb2YgdGhlaXIgY3VzdG9tZXJzLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitCRVNTRVIgKiBJbXBsaWNhdGlvbnMgb2YgZGlzc2VtaW5hdGluZyBpbWFnZXMgb24gdGhlIG5ldHdvcms7IHBsYW5uaW5nDQordGhlIGRpc3RyaWJ1dGlvbiBvZiBtdWx0aW1lZGlhIGRvY3VtZW50cyBwb3NlcyB0d28gY3JpdGljYWwNCitpbXBsZW1lbnRhdGlvbiBwcm9ibGVtcyAqIExheWVyZWQgYXBwcm9hY2ggcmVwcmVzZW50cyB0aGUgd2F5IHRvIGRlYWwNCit3aXRoIHVzZXJzJyBjYXBhYmlsaXRpZXMgKiBQcm9ibGVtcyBpbiBwbGF0Zm9ybSBkZXNpZ247IGZpbGUgc2l6ZSBhbmQgaXRzDQoraW1wbGljYXRpb25zIGZvciBuZXR3b3JraW5nICogVHJhbnNtaXNzaW9uIG9mIG1lZ2FieXRlIHNpemUgaW1hZ2VzDQoraW1wcmFjdGljYWwgKiBDb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBhdCB0aGUgdXNlcidzIGVuZCAqIFByb21pc2luZw0KK3RyZW5kcyBmb3IgY29tcHJlc3Npb24gKiBBIGRpc2FkdmFudGFnZSBvZiB1c2luZyBYLVdpbmRvd3MgKiBBIHByb2plY3QgYXQNCit0aGUgU21pdGhzb25pYW4gdGhhdCBtb3VudHMgaW1hZ2VzIG9uIHNldmVyYWwgbmV0d29ya3MgKiAgDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0hvd2FyZCBCRVNTRVIsIFNjaG9vbCBvZiBMaWJyYXJ5IGFuZCBJbmZvcm1hdGlvbiBTY2llbmNlLCBVbml2ZXJzaXR5IG9mDQorUGl0dHNidXJnaCwgc3Bva2UgcHJpbWFyaWx5IGFib3V0IG11bHRpbWVkaWEsIGZvY3VzaW5nIG9uIGltYWdlcyBhbmQgdGhlDQorYnJvYWQgaW1wbGljYXRpb25zIG9mIGRpc3NlbWluYXRpbmcgdGhlbSBvbiB0aGUgbmV0d29yay4gIEhlIGFyZ3VlZCB0aGF0DQorcGxhbm5pbmcgdGhlIGRpc3RyaWJ1dGlvbiBvZiBtdWx0aW1lZGlhIGRvY3VtZW50cyBwb3NlZCB0d28gY3JpdGljYWwNCitpbXBsZW1lbnRhdGlvbiBwcm9ibGVtcywgd2hpY2ggaGUgZnJhbWVkIGluIHRoZSBmb3JtIG9mIHR3byBxdWVzdGlvbnM6IA0KKzEpIFdoYXQgcGxhdGZvcm0gd2lsbCBvbmUgdXNlIGFuZCB3aGF0IGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSB3aWxsIHVzZXJzDQoraGF2ZSBmb3Igdmlld2luZyBvZiB0aGUgbWF0ZXJpYWw/ICBhbmQgMikgSG93IGNhbiBvbmUgZGVsaXZlciBhDQorc3VmZmljaWVudGx5IHJvYnVzdCBzZXQgb2YgaW5mb3JtYXRpb24gaW4gYW4gYWNjZXNzaWJsZSBmb3JtYXQgaW4gYQ0KK3JlYXNvbmFibGUgYW1vdW50IG9mIHRpbWU/ICBEZXBlbmRpbmcgb24gd2hldGhlciBuZXR3b3JrIG9yIENELVJPTSBpcyB0aGUNCittZWRpdW0gdXNlZCwgdGhpcyBxdWVzdGlvbiByYWlzZXMgZGlmZmVyZW50IGlzc3VlcyBvZiBzdG9yYWdlLA0KK2NvbXByZXNzaW9uLCBhbmQgdHJhbnNtaXNzaW9uLg0KKw0KK0NvbmNlcm5pbmcgdGhlIGRlc2lnbiBvZiBwbGF0Zm9ybXMgKGUuZy4sIHNvdW5kLCBncmF5IHNjYWxlLCBzaW1wbGUNCitjb2xvciwgZXRjLikgYW5kIHRoZSB2YXJpb3VzIGNhcGFiaWxpdGllcyB1c2VycyBtYXkgaGF2ZSwgQkVTU0VSDQorbWFpbnRhaW5lZCB0aGF0IGEgbGF5ZXJlZCBhcHByb2FjaCB3YXMgdGhlIHdheSB0byBkZWFsIHdpdGggdXNlcnMnDQorY2FwYWJpbGl0aWVzLiAgQSByZXN1bHQgd291bGQgYmUgdGhhdCB1c2VycyB3aXRoIGxlc3MgcG93ZXJmdWwNCit3b3Jrc3RhdGlvbnMgd291bGQgc2ltcGx5IGhhdmUgbGVzcyBmdW5jdGlvbmFsaXR5LiAgSGUgdXJnZWQgbWVtYmVycyBvZg0KK3RoZSBhdWRpZW5jZSB0byBhZHZvY2F0ZSBzdGFuZGFyZHMgYW5kIGFjY29tcGFueWluZyBzb2Z0d2FyZSB0aGF0IGhhbmRsZQ0KK2xheWVyZWQgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgYSB3aWRlIHZhcmlldHkgb2YgcGxhdGZvcm1zLg0KKw0KK0JFU1NFUiBhbHNvIGFkZHJlc3NlZCBwcm9ibGVtcyBpbiBwbGF0Zm9ybSBkZXNpZ24sIG5hbWVseSwgZGVjaWRpbmcgaG93DQorbGFyZ2UgYSBtYWNoaW5lIHRvIGRlc2lnbiBmb3Igc2l0dWF0aW9ucyB3aGVuIHRoZSBsYXJnZXN0IG51bWJlciBvZiB1c2Vycw0KK2hhdmUgdGhlIGxvd2VzdCBsZXZlbCBvZiB0aGUgbWFjaGluZSwgYW5kIG9uZSBkZXNpcmVzIGhpZ2hlcg0KK2Z1bmN0aW9uYWxpdHkuICBCRVNTRVIgdGhlbiBwcm9jZWVkZWQgdG8gdGhlIHF1ZXN0aW9uIG9mIGZpbGUgc2l6ZSBhbmQNCitpdHMgaW1wbGljYXRpb25zIGZvciBuZXR3b3JraW5nLiAgSGUgZGlzY3Vzc2VkIHN0aWxsIGltYWdlcyBpbiB0aGUgbWFpbi4gDQorRm9yIGV4YW1wbGUsIGEgZGlnaXRhbCBjb2xvciBpbWFnZSB0aGF0IGZpbGxzIHRoZSBzY3JlZW4gb2YgYSBzdGFuZGFyZA0KK21lZ2EtcGVsIHdvcmtzdGF0aW9uIChTdW4gb3IgTmV4dCkgd2lsbCByZXF1aXJlIG9uZSBtZWdhYnl0ZSBvZiBzdG9yYWdlDQorZm9yIGFuIGVpZ2h0LWJpdCBpbWFnZSBvciB0aHJlZSBtZWdhYnl0ZXMgb2Ygc3RvcmFnZSBmb3IgYSB0cnVlIGNvbG9yIG9yDQordHdlbnR5LWZvdXItYml0IGltYWdlLiAgTG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtcyAodGhhdCBpcywNCitjb21wdXRhdGlvbmFsIHByb2NlZHVyZXMgaW4gd2hpY2ggbm8gZGF0YSBpcyBsb3N0IGluIHRoZSBwcm9jZXNzIG9mDQorY29tcHJlc3NpbmcgW2FuZCBkZWNvbXByZXNzaW5nXSBhbiBpbWFnZS0tdGhlIGV4YWN0IGJpdC1yZXByZXNlbnRhdGlvbiBpcw0KK21haW50YWluZWQpIG1pZ2h0IGJyaW5nIHN0b3JhZ2UgZG93biB0byBhIHRoaXJkIG9mIGEgbWVnYWJ5dGUgcGVyIGltYWdlLA0KK2J1dCBub3QgbXVjaCBmdXJ0aGVyIHRoYW4gdGhhdC4gIFRoZSBxdWVzdGlvbiBvZiBzaXplIG1ha2VzIGl0IGRpZmZpY3VsdA0KK3RvIGZpdCBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIHNldCBvZiB0aGVzZSBpbWFnZXMgb24gYSBzaW5nbGUgZGlzayBvciB0bw0KK3RyYW5zbWl0IHRoZW0gcXVpY2tseSBlbm91Z2ggb24gYSBuZXR3b3JrLg0KKw0KK1dpdGggdGhlc2UgZnVsbCBzY3JlZW4gbWVnYS1wZWwgaW1hZ2VzIHRoYXQgY29uc3RpdHV0ZSBhIHRoaXJkIG9mIGENCittZWdhYnl0ZSwgb25lIGdldHMgMSwwMDAtMywwMDAgZnVsbC1zY3JlZW4gaW1hZ2VzIG9uIGEgb25lLWdpZ2FieXRlIGRpc2s7DQorYSBzdGFuZGFyZCBDRC1ST00gcmVwcmVzZW50cyBhcHByb3hpbWF0ZWx5IDYwIHBlcmNlbnQgb2YgdGhhdC4gIFN0b3JpbmcNCitpbWFnZXMgdGhlIHNpemUgb2YgYSBQQyBzY3JlZW4gKGp1c3QgOCBiaXQgY29sb3IpIGluY3JlYXNlcyBzdG9yYWdlDQorY2FwYWNpdHkgdG8gNCwwMDAtMTIsMDAwIGltYWdlcyBwZXIgZ2lnYWJ5dGU7IDYwIHBlcmNlbnQgb2YgdGhhdCBnaXZlcw0KK29uZSB0aGUgc2l6ZSBvZiBhIENELVJPTSwgd2hpY2ggaW4gdHVybiBjcmVhdGVzIGEgbWFqb3IgcHJvYmxlbS4gIE9uZQ0KK2Nhbm5vdCBoYXZlIGZ1bGwtc2NyZWVuLCBmdWxsLWNvbG9yIGltYWdlcyB3aXRoIGxvc3NsZXNzIGNvbXByZXNzaW9uOyBvbmUNCittdXN0IGNvbXByZXNzIHRoZW0gb3IgdXNlIGEgbG93ZXIgcmVzb2x1dGlvbi4gIEZvciBtZWdhYnl0ZS1zaXplIGltYWdlcywNCithbnl0aGluZyBzbG93ZXIgdGhhbiBhIFQtMSBzcGVlZCBpcyBpbXByYWN0aWNhbC4gIEZvciBleGFtcGxlLCBvbiBhDQorZmlmdHktc2l4LWtpbG9iYXVkIGxpbmUsIGl0IHRha2VzIHRocmVlIG1pbnV0ZXMgdG8gdHJhbnNmZXIgYQ0KK29uZS1tZWdhYnl0ZSBmaWxlLCBpZiBpdCBpcyBub3QgY29tcHJlc3NlZDsgYW5kIHRoaXMgc3BlZWQgYXNzdW1lcyBpZGVhbA0KK2NpcmN1bXN0YW5jZXMgKG5vIG90aGVyIHVzZXIgY29udGVuZGluZyBmb3IgbmV0d29yayBiYW5kd2lkdGgpLiAgVGh1cywNCitxdWVzdGlvbnMgb2YgZGlzayBhY2Nlc3MsIHJlbW90ZSBkaXNwbGF5LCBhbmQgY3VycmVudCB0ZWxlcGhvbmUNCitjb25uZWN0aW9uIHNwZWVkIG1ha2UgdHJhbnNtaXNzaW9uIG9mIG1lZ2FieXRlLXNpemUgaW1hZ2VzIGltcHJhY3RpY2FsLg0KKw0KK0JFU1NFUiB0aGVuIGRpc2N1c3NlZCB3YXlzIHRvIGRlYWwgd2l0aCB0aGVzZSBsYXJnZSBpbWFnZXMsIGZvciBleGFtcGxlLA0KK2NvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIGF0IHRoZSB1c2VyJ3MgZW5kLiAgSW4gdGhpcyBjb25uZWN0aW9uLCB0aGUNCitpc3N1ZXMgb2YgaG93IG11Y2ggb25lIGlzIHdpbGxpbmcgdG8gbG9zZSBpbiB0aGUgY29tcHJlc3Npb24gcHJvY2VzcyBhbmQNCit3aGF0IGltYWdlIHF1YWxpdHkgb25lIG5lZWRzIGluIHRoZSBmaXJzdCBwbGFjZSBhcmUgdW5rbm93bi4gIEJ1dCB3aGF0IGlzDQora25vd24gaXMgdGhhdCBjb21wcmVzc2lvbiBlbnRhaWxzIHNvbWUgbG9zcyBvZiBkYXRhLiAgQkVTU0VSIHVyZ2VkIHRoYXQNCittb3JlIHN0dWRpZXMgYmUgY29uZHVjdGVkIG9uIGltYWdlIHF1YWxpdHkgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMsIGZvcg0KK2V4YW1wbGUsIHdoYXQga2luZCBvZiBpbWFnZXMgYXJlIG5lZWRlZCBmb3Igd2hhdCBraW5kIG9mIGRpc2NpcGxpbmVzLCBhbmQNCit3aGF0IGtpbmQgb2YgaW1hZ2UgcXVhbGl0eSBpcyBuZWVkZWQgZm9yIGEgYnJvd3NpbmcgdG9vbCwgYW4gaW50ZXJtZWRpYXRlDQordmlld2luZyB0b29sLCBhbmQgYXJjaGl2aW5nLg0KKw0KK0JFU1NFUiByZW1hcmtlZCB0d28gcHJvbWlzaW5nIHRyZW5kcyBmb3IgY29tcHJlc3Npb246ICBmcm9tIGEgdGVjaG5pY2FsDQorcGVyc3BlY3RpdmUsIGFsZ29yaXRobXMgdGhhdCB1c2Ugd2hhdCBpcyBjYWxsZWQgc3ViamVjdGl2ZSByZWR1bmRhbmN5DQorZW1wbG95IHByaW5jaXBsZXMgZnJvbSB2aXN1YWwgcHN5Y2hvLXBoeXNpY3MgdG8gaWRlbnRpZnkgYW5kIHJlbW92ZQ0KK2luZm9ybWF0aW9uIGZyb20gdGhlIGltYWdlIHRoYXQgdGhlIGh1bWFuIGV5ZSBjYW5ub3QgcGVyY2VpdmU7IGZyb20gYW4NCitpbnRlcmNoYW5nZSBhbmQgaW50ZXJvcGVyYWJpbGl0eSBwZXJzcGVjdGl2ZSwgdGhlIEpQRUcgKGkuZS4sIEpvaW50DQorUGhvdG9ncmFwaGljIEV4cGVydHMgR3JvdXAsIGFuIElTTyBzdGFuZGFyZCkgY29tcHJlc3Npb24gYWxnb3JpdGhtcyBhbHNvDQorb2ZmZXIgcHJvbWlzZS4gIFRoZXNlIGlzc3VlcyBvZiBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiwgQkVTU0VSDQorYXJndWVkLCByZXNlbWJsZWQgdGhvc2UgcmFpc2VkIGVhcmxpZXIgY29uY2VybmluZyB0aGUgZGVzaWduIG9mIGRpZmZlcmVudA0KK3BsYXRmb3Jtcy4gIEdhdWdpbmcgdGhlIGNhcGFiaWxpdGllcyBvZiBwb3RlbnRpYWwgdXNlcnMgY29uc3RpdHV0ZXMgYQ0KK3ByaW1hcnkgZ29hbC4gIEJFU1NFUiBhZHZvY2F0ZWQgbGF5ZXJpbmcgb3Igc2VwYXJhdGluZyB0aGUgaW1hZ2VzIGZyb20NCit0aGUgYXBwbGljYXRpb25zIHRoYXQgcmV0cmlldmUgYW5kIGRpc3BsYXkgdGhlbSwgdG8gYXZvaWQgdHlpbmcgdGhlbSB0bw0KK3BhcnRpY3VsYXIgc29mdHdhcmUuDQorDQorQkVTU0VSIGRldGFpbGVkIHNldmVyYWwgbGVzc29ucyBsZWFybmVkIGZyb20gaGlzIHdvcmsgYXQgQmVya2VsZXkgd2l0aA0KK0ltYWdlcXVlcnksIGVzcGVjaWFsbHkgdGhlIGFkdmFudGFnZXMgYW5kIGRpc2FkdmFudGFnZXMgb2YgdXNpbmcNCitYLVdpbmRvd3MuICBJbiB0aGUgbGF0dGVyIGNhdGVnb3J5LCBmb3IgZXhhbXBsZSwgcmV0cmlldmFsIGlzIHRpZWQNCitkaXJlY3RseSB0byBvbmUncyBkYXRhLCBhbiBpbnRvbGVyYWJsZSBzaXR1YXRpb24gaW4gdGhlIGxvbmcgcnVuIG9uIGENCituZXR3b3JrZWQgc3lzdGVtLiAgRmluYWxseSwgQkVTU0VSIGRlc2NyaWJlZCBhIHByb2plY3Qgb2YgSmltIFdhbGxhY2UgYXQNCit0aGUgU21pdGhzb25pYW4gSW5zdGl0dXRpb24sIHdobyBpcyBtb3VudGluZyBpbWFnZXMgaW4gYSBleHRyZW1lbHkNCitydWRpbWVudGFyeSB3YXkgb24gdGhlIENvbXB1c2VydiBhbmQgR2VuaWUgbmV0d29ya3MgYW5kIGlzIHByZXBhcmluZyB0bw0KK21vdW50IHRoZW0gb24gQW1lcmljYSBPbiBMaW5lLiAgQWx0aG91Z2ggdGhlIGF2ZXJhZ2UgdXNlciB0YWtlcyBvdmVyDQordGhpcnR5IG1pbnV0ZXMgdG8gZG93bmxvYWQgdGhlc2UgaW1hZ2VzIChhc3N1bWluZyBhIGZhaXJseSBmYXN0IG1vZGVtKSwNCituZXZlcnRoZWxlc3MsIGltYWdlcyBoYXZlIGJlZW4gZG93bmxvYWRlZCAyNSwwMDAgdGltZXMuDQorDQorQkVTU0VSIGNvbmNsdWRlZCBoaXMgdGFsayB3aXRoIHNldmVyYWwgY29tbWVudHMgb24gdGhlIGJ1c2luZXNzDQorYXJyYW5nZW1lbnQgYmV0d2VlbiB0aGUgU21pdGhzb25pYW4gYW5kIENvbXB1c2Vydi4gIEhlIGNvbnRlbmRlZCB0aGF0IG5vdA0KK2Vub3VnaCBpcyBrbm93biBjb25jZXJuaW5nIHRoZSB2YWx1ZSBvZiBpbWFnZXMuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0RJU0NVU1NJT04gKiBDcmVhdGluZyBkaWdpdGl6ZWQgcGhvdG9ncmFwaGljIGNvbGxlY3Rpb25zIG5lYXJseQ0KK2ltcG9zc2libGUgZXhjZXB0IHdpdGggbGFyZ2Ugb3JnYW5pemF0aW9ucyBsaWtlIG11c2V1bXMgKiBOZWVkIGZvciBzdHVkeQ0KK3RvIGRldGVybWluZSBxdWFsaXR5IG9mIGltYWdlcyB1c2VycyB3aWxsIHRvbGVyYXRlICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRHVyaW5nIHRoZSBicmllZiBleGNoYW5nZSBiZXR3ZWVuIExFU0sgYW5kIEJFU1NFUiB0aGF0IGZvbGxvd2VkLCBzZXZlcmFsDQorY2xhcmlmaWNhdGlvbnMgZW1lcmdlZC4NCisNCitMRVNLIGFyZ3VlZCB0aGF0IHRoZSBwaG90b2dyYXBoZXJzIHdlcmUgZmFyIGFoZWFkIG9mIEJFU1NFUjogIEl0IGlzDQorYWxtb3N0IGltcG9zc2libGUgdG8gY3JlYXRlIHN1Y2ggZGlnaXRpemVkIHBob3RvZ3JhcGhpYyBjb2xsZWN0aW9ucw0KK2V4Y2VwdCB3aXRoIGxhcmdlIG9yZ2FuaXphdGlvbnMgbGlrZSBtdXNldW1zLCBiZWNhdXNlIGFsbCB0aGUNCitwaG90b2dyYXBoaWMgYWdlbmNpZXMgaGF2ZSBiZWVuIGdvaW5nIGNyYXp5IGFib3V0IHRoaXMgYW5kIHdpbGwgbm90IHNpZ24NCitsaWNlbnNpbmcgYWdyZWVtZW50cyBvbiBhbnkgc29ydCBvZiByZWFzb25hYmxlIHRlcm1zLiAgTEVTSyBoYWQgaGVhcmQNCit0aGF0IE5hdGlvbmFsIEdlb2dyYXBoaWMsIGZvciBleGFtcGxlLCBoYWQgdHJpZWQgdG8gYnV5IHRoZSByaWdodCB0byB1c2UNCitzb21lIGltYWdlIGluIHNvbWUga2luZCBvZiBlZHVjYXRpb25hbCBwcm9kdWN0aW9uIGZvciAkMTAwIHBlciBpbWFnZSwgYnV0DQordGhlIHBob3RvZ3JhcGhlcnMgd2lsbCBub3QgdG91Y2ggaXQuICBUaGV5IHdhbnQgYWNjb3VudGluZyBhbmQgcGF5bWVudA0KK2ZvciBlYWNoIHVzZSwgd2hpY2ggY2Fubm90IGJlIGFjY29tcGxpc2hlZCB3aXRoaW4gdGhlIHN5c3RlbS4gIEJFU1NFUg0KK3Jlc3BvbmRlZCB0aGF0IGEgY29uc29ydGl1bSBvZiBwaG90b2dyYXBoZXJzLCBoZWFkZWQgYnkgYSBmb3JtZXIgTmF0aW9uYWwNCitHZW9ncmFwaGljIHBob3RvZ3JhcGhlciwgaGFkIHN0YXJ0ZWQgYXNzZW1ibGluZyBpdHMgb3duIGNvbGxlY3Rpb24gb2YNCitlbGVjdHJvbmljIHJlcHJvZHVjdGlvbnMgb2YgaW1hZ2VzLCB3aXRoIHRoZSBtb25leSBnb2luZyBiYWNrIHRvIHRoZQ0KK2Nvb3BlcmF0aXZlLg0KKw0KK0xFU0sgY29udGVuZGVkIHRoYXQgQkVTU0VSIHdhcyB1bm5lY2Vzc2FyaWx5IHBlc3NpbWlzdGljIGFib3V0IG11bHRpbWVkaWENCitpbWFnZXMsIGJlY2F1c2UgcGVvcGxlIGFyZSBhY2N1c3RvbWVkIHRvIGxvdy1xdWFsaXR5IGltYWdlcywgcGFydGljdWxhcmx5DQorZnJvbSB2aWRlby4gIEJFU1NFUiB1cmdlZCB0aGUgbGF1bmNoaW5nIG9mIGEgc3R1ZHkgdG8gZGV0ZXJtaW5lIHdoYXQNCit1c2VycyB3b3VsZCB0b2xlcmF0ZSwgd2hhdCB0aGV5IHdvdWxkIGZlZWwgY29tZm9ydGFibGUgd2l0aCwgYW5kIHdoYXQNCithYnNvbHV0ZWx5IGlzIHRoZSBoaWdoZXN0IHF1YWxpdHkgdGhleSB3b3VsZCBldmVyIG5lZWQuICBDb25jZWRpbmcgdGhhdA0KK2hlIGhhZCBhZG9wdGVkIGEgZGlyZSB0b25lIGluIG9yZGVyIHRvIGFyb3VzZSBwZW9wbGUgYWJvdXQgdGhlIGlzc3VlLA0KK0JFU1NFUiBjbG9zZWQgb24gYSBzYW5ndWluZSBub3RlIGJ5IHNheWluZyB0aGF0IGhlIHdvdWxkIG5vdCBiZSBpbiB0aGlzDQorYnVzaW5lc3MgaWYgaGUgZGlkIG5vdCB0aGluayB0aGF0IHRoaW5ncyBjb3VsZCBiZSBhY2NvbXBsaXNoZWQuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0xBUlNFTiAqIElzc3VlcyBvZiBzY2FsYWJpbGl0eSBhbmQgbW9kdWxhcml0eSAqIEdlb21ldHJpYyBncm93dGggb2YgdGhlDQorSW50ZXJuZXQgYW5kIHRoZSByb2xlIHBsYXllZCBieSBsYXllcmluZyAqIEJhc2ljIGZ1bmN0aW9ucyBzdXN0YWluaW5nDQordGhpcyBncm93dGggKiBBIGxpYnJhcnkncyByb2xlcyBhbmQgZnVuY3Rpb25zIGluIGEgbmV0d29yayBlbnZpcm9ubWVudCAqDQorRWZmZWN0cyBvZiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgWjM5LjUwIHByb3RvY29sIGZvciBpbmZvcm1hdGlvbg0KK3JldHJpZXZhbCBvbiB0aGUgbGlicmFyeSBzeXN0ZW0gKiBUaGUgdHJhZGUtb2ZmIGJldHdlZW4gdm9sdW1lcyBvZiBkYXRhDQorYW5kIGl0cyBwb3RlbnRpYWwgdXNhZ2UgKiBBIHNuYXBzaG90IG9mIGN1cnJlbnQgdHJlbmRzICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorUm9uYWxkIExBUlNFTiwgYXNzb2NpYXRlIGRpcmVjdG9yIGZvciBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5LCBVbml2ZXJzaXR5DQorb2YgTWFyeWxhbmQgYXQgQ29sbGVnZSBQYXJrLCBmaXJzdCBhZGRyZXNzZWQgdGhlIGlzc3VlcyBvZiBzY2FsYWJpbGl0eQ0KK2FuZCBtb2R1bGFyaXR5LiAgSGUgbm90ZWQgdGhlIGRpZmZpY3VsdHkgb2YgYW50aWNpcGF0aW5nIHRoZSBlZmZlY3RzIG9mDQorb3JkZXJzLW9mLW1hZ25pdHVkZSBncm93dGgsIHJlZmxlY3Rpbmcgb24gdGhlIHR3ZW50eSB5ZWFycyBvZiBleHBlcmllbmNlDQord2l0aCB0aGUgQXJwYW5ldCBhbmQgSW50ZXJuZXQuICBSZWNhbGxpbmcgdGhlIGRheSdzIGRlbW9uc3RyYXRpb25zIG9mDQorQ0QtUk9NIGFuZCBvcHRpY2FsIGRpc2sgbWF0ZXJpYWwsIGhlIHdlbnQgb24gdG8gYXNrIGlmIHRoZSBmaWVsZCBoYXMgeWV0DQorbGVhcm5lZCBob3cgdG8gc2NhbGUgbmV3IHN5c3RlbXMgdG8gZW5hYmxlIGRlbGl2ZXJ5IGFuZCBkaXNzZW1pbmF0aW9uDQorYWNyb3NzIGxhcmdlLXNjYWxlIG5ldHdvcmtzLg0KKw0KK0xBUlNFTiBmb2N1c2VkIG9uIHRoZSBnZW9tZXRyaWMgZ3Jvd3RoIG9mIHRoZSBJbnRlcm5ldCBmcm9tIGl0cyBpbmNlcHRpb24NCitjaXJjYSAxOTY5IHRvIHRoZSBwcmVzZW50LCBhbmQgdGhlIGFkanVzdG1lbnRzIHJlcXVpcmVkIHRvIHJlc3BvbmQgdG8NCit0aGF0IHJhcGlkIGdyb3d0aC4gIFRvIGlsbHVzdHJhdGUgdGhlIGlzc3VlIG9mIHNjYWxhYmlsaXR5LCBMQVJTRU4NCitjb25zaWRlcmVkIGNvbXB1dGVyIG5ldHdvcmtzIGFzIGluY2x1ZGluZyB0aHJlZSBnZW5lcmljIGNvbXBvbmVudHM6IA0KK2NvbXB1dGVycywgbmV0d29yayBjb21tdW5pY2F0aW9uIG5vZGVzLCBhbmQgY29tbXVuaWNhdGlvbiBtZWRpYS4gIEVhY2gNCitjb21wb25lbnQgc2NhbGVzIChlLmcuLCBjb21wdXRlcnMgcmFuZ2UgZnJvbSBQQ3MgdG8gc3VwZXJjb21wdXRlcnM7DQorbmV0d29yayBub2RlcyBzY2FsZSBmcm9tIGludGVyZmFjZSBjYXJkcyBpbiBhIFBDIHRocm91Z2ggc29waGlzdGljYXRlZA0KK3JvdXRlcnMgYW5kIGdhdGV3YXlzOyBhbmQgY29tbXVuaWNhdGlvbiBtZWRpYSByYW5nZSBmcm9tIDIsNDAwLWJhdWQNCitkaWFsLXVwIGZhY2lsaXRpZXMgdGhyb3VnaCA0LjUtTWJwcyBiYWNrYm9uZSBsaW5rcywgYW5kIGV2ZW50dWFsbHkgdG8NCittdWx0aWdpZ2FiaXQtcGVyLXNlY29uZCBjb21tdW5pY2F0aW9uIGxpbmVzKSwgYW5kIGFyY2hpdGVjdHVyYWxseSwgdGhlDQorY29tcG9uZW50cyBhcmUgb3JnYW5pemVkIHRvIHNjYWxlIGhpZXJhcmNoaWNhbGx5IGZyb20gbG9jYWwgYXJlYSBuZXR3b3Jrcw0KK3RvIGludGVybmF0aW9uYWwtc2NhbGUgbmV0d29ya3MuICBTdWNoIGdyb3d0aCBpcyBtYWRlIHBvc3NpYmxlIGJ5DQorYnVpbGRpbmcgbGF5ZXJzIG9mIGNvbW11bmljYXRpb24gcHJvdG9jb2xzLCBhcyBCRVNTRVIgcG9pbnRlZCBvdXQuDQorQnkgbGF5ZXJpbmcgYm90aCBwaHlzaWNhbGx5IGFuZCBsb2dpY2FsbHksIGEgc2Vuc2Ugb2Ygc2NhbGFiaWxpdHkgaXMNCittYWludGFpbmVkIGZyb20gbG9jYWwgYXJlYSBuZXR3b3JrcyBpbiBvZmZpY2VzLCBhY3Jvc3MgY2FtcHVzZXMsIHRocm91Z2gNCiticmlkZ2VzLCByb3V0ZXJzLCBjYW1wdXMgYmFja2JvbmVzLCBmaWJlci1vcHRpYyBsaW5rcywgZXRjLiwgdXAgaW50bw0KK3JlZ2lvbmFsIG5ldHdvcmtzIGFuZCB1bHRpbWF0ZWx5IGludG8gbmF0aW9uYWwgYW5kIGludGVybmF0aW9uYWwNCituZXR3b3Jrcy4NCisNCitMQVJTRU4gdGhlbiBpbGx1c3RyYXRlZCB0aGUgZ2VvbWV0cmljIGdyb3d0aCBvdmVyIGEgdHdvLXllYXIgcGVyaW9kLS0NCit0aHJvdWdoIFNlcHRlbWJlciAxOTkxLS1vZiB0aGUgbnVtYmVyIG9mIG5ldHdvcmtzIHRoYXQgY29tcHJpc2UgdGhlDQorSW50ZXJuZXQuICBUaGlzIGdyb3d0aCBoYXMgYmVlbiBzdXN0YWluZWQgbGFyZ2VseSBieSB0aGUgYXZhaWxhYmlsaXR5IG9mDQordGhyZWUgYmFzaWMgZnVuY3Rpb25zOiAgZWxlY3Ryb25pYyBtYWlsLCBmaWxlIHRyYW5zZmVyIChmdHApLCBhbmQgcmVtb3RlDQorbG9nLW9uICh0ZWxuZXQpLiAgTEFSU0VOIGFsc28gcmV2aWV3ZWQgdGhlIGdyb3d0aCBpbiB0aGUga2luZCBvZiB0cmFmZmljDQordGhhdCBvY2N1cnMgb24gdGhlIG5ldHdvcmsuICBOZXR3b3JrIHRyYWZmaWMgcmVmbGVjdHMgdGhlIGpvaW50IGNvbnRyaWJ1dGlvbnMNCitvZiBhIGxhcmdlciBwb3B1bGF0aW9uIG9mIHVzZXJzIGFuZCBpbmNyZWFzaW5nIHVzZSBwZXIgdXNlci4gIFRvZGF5IG9uZSBzZWVzDQorc2VyaW91cyBhcHBsaWNhdGlvbnMgaW52b2x2aW5nIG1vdmluZyBpbWFnZXMgYWNyb3NzIHRoZSBuZXR3b3JrLS1hIHJhcml0eQ0KK3RlbiB5ZWFycyBhZ28uICBMQVJTRU4gcmVjYWxsZWQgYW5kIGNvbmN1cnJlZCB3aXRoIEJFU1NFUidzIG1haW4gcG9pbnQNCit0aGF0IHRoZSBpbnRlcmVzdGluZyBwcm9ibGVtcyBvY2N1ciBhdCB0aGUgYXBwbGljYXRpb24gbGV2ZWwuDQorDQorTEFSU0VOIHRoZW4gaWxsdXN0cmF0ZWQgYSBtb2RlbCBvZiBhIGxpYnJhcnkncyByb2xlcyBhbmQgZnVuY3Rpb25zIGluIGENCituZXR3b3JrIGVudmlyb25tZW50LiAgSGUgbm90ZWQsIGluIHBhcnRpY3VsYXIsIHRoZSBwbGFjZW1lbnQgb2Ygb24tbGluZQ0KK2NhdGFsb2d1ZXMgb250byB0aGUgbmV0d29yayBhbmQgcGF0cm9ucyBvYnRhaW5pbmcgYWNjZXNzIHRvIHRoZSBsaWJyYXJ5DQoraW5jcmVhc2luZ2x5IHRocm91Z2ggbG9jYWwgbmV0d29ya3MsIGNhbXB1cyBuZXR3b3JrcywgYW5kIHRoZSBJbnRlcm5ldC4gDQorTEFSU0VOIHN1cHBvcnRlZCBMWU5DSCdzIGVhcmxpZXIgc3VnZ2VzdGlvbiB0aGF0IHdlIG5lZWQgdG8gYWRkcmVzcw0KK2Z1bmRhbWVudGFsIHF1ZXN0aW9ucyBvZiBuZXR3b3JrZWQgaW5mb3JtYXRpb24gaW4gb3JkZXIgdG8gYnVpbGQNCitlbnZpcm9ubWVudHMgdGhhdCBzY2FsZSBpbiB0aGUgaW5mb3JtYXRpb24gc2Vuc2UgYXMgd2VsbCBhcyBpbiB0aGUNCitwaHlzaWNhbCBzZW5zZS4NCisNCitMQVJTRU4gc3VwcG9ydGVkIHRoZSByb2xlIG9mIHRoZSBsaWJyYXJ5IHN5c3RlbSBhcyB0aGUgYWNjZXNzIHBvaW50IGludG8NCit0aGUgbmF0aW9uJ3MgZWxlY3Ryb25pYyBjb2xsZWN0aW9ucy4gIEltcGxlbWVudGF0aW9uIG9mIHRoZSBaMzkuNTANCitwcm90b2NvbCBmb3IgaW5mb3JtYXRpb24gcmV0cmlldmFsIHdvdWxkIG1ha2Ugc3VjaCBhY2Nlc3MgcHJhY3RpY2FsIGFuZA0KK2ZlYXNpYmxlLiAgRm9yIGV4YW1wbGUsIHRoaXMgd291bGQgZW5hYmxlIHBhdHJvbnMgaW4gTWFyeWxhbmQgdG8gc2VhcmNoDQorQ2FsaWZvcm5pYSBsaWJyYXJpZXMsIG9yIG90aGVyIGxpYnJhcmllcyBhcm91bmQgdGhlIHdvcmxkIHRoYXQgYXJlDQorY29uZm9ybWFudCB3aXRoIFozOS41MCBpbiBhIG1hbm5lciB0aGF0IGlzIGZhbWlsaWFyIHRvIFVuaXZlcnNpdHkgb2YNCitNYXJ5bGFuZCBwYXRyb25zLiAgVGhpcyBjbGllbnQtc2VydmVyIG1vZGVsIGFsc28gc3VwcG9ydHMgbW92aW5nIGJleW9uZA0KK3NlY29uZGFyeSBjb250ZW50IGludG8gcHJpbWFyeSBjb250ZW50LiAgKFRoZSBub3Rpb24gb2YgaG93IG9uZSBsaW5rcw0KK2Zyb20gc2Vjb25kYXJ5IGNvbnRlbnQgdG8gcHJpbWFyeSBjb250ZW50LCBMQVJTRU4gc2FpZCwgcmVwcmVzZW50cyBhDQorZnVuZGFtZW50YWwgcHJvYmxlbSB0aGF0IHJlcXVpcmVzIHJpZ29yb3VzIHRob3VnaHQuKSAgQWZ0ZXIgbm90aW5nDQorbnVtZXJvdXMgbmV0d29yayBleHBlcmltZW50cyBpbiBhY2Nlc3NpbmcgZnVsbC10ZXh0IG1hdGVyaWFscywgaW5jbHVkaW5nDQorcHJvamVjdHMgc3VwcG9ydGluZyB0aGUgb3JkZXJpbmcgb2YgbWF0ZXJpYWxzIGFjcm9zcyB0aGUgbmV0d29yaywgTEFSU0VODQorcmV2aXNpdGVkIHRoZSBpc3N1ZSBvZiB0cmFuc21pdHRpbmcgaGlnaC1kZW5zaXR5LCBoaWdoLXJlc29sdXRpb24gY29sb3INCitpbWFnZXMgYWNyb3NzIHRoZSBuZXR3b3JrIGFuZCB0aGUgbGFyZ2UgYW1vdW50cyBvZiBiYW5kd2lkdGggdGhleQ0KK3JlcXVpcmUuICBIZSB3ZW50IG9uIHRvIGFkZHJlc3MgdGhlIGJhbmR3aWR0aCBhbmQgc3luY2hyb25pemF0aW9uDQorcHJvYmxlbXMgaW5oZXJlbnQgaW4gc2VuZGluZyBmdWxsLW1vdGlvbiB2aWRlbyBhY3Jvc3MgdGhlIG5ldHdvcmsuDQorDQorTEFSU0VOIGlsbHVzdHJhdGVkIHRoZSB0cmFkZS1vZmYgYmV0d2VlbiB2b2x1bWVzIG9mIGRhdGEgaW4gYnl0ZXMgb3INCitvcmRlcnMgb2YgbWFnbml0dWRlIGFuZCB0aGUgcG90ZW50aWFsIHVzYWdlIG9mIHRoYXQgZGF0YS4gIEhlIGRpc2N1c3NlZA0KK3RyYW5zbWlzc2lvbiByYXRlcyAocGFydGljdWxhcmx5LCB0aGUgdGltZSBpdCB0YWtlcyB0byBtb3ZlIHZhcmlvdXMgZm9ybXMNCitvZiBpbmZvcm1hdGlvbiksIGFuZCB3aGF0IG9uZSBjb3VsZCBkbyB3aXRoIGEgbmV0d29yayBzdXBwb3J0aW5nDQorbXVsdGlnaWdhYml0LXBlci1zZWNvbmQgdHJhbnNtaXNzaW9uLiAgQXQgdGhlIG1vbWVudCwgdGhlIG5ldHdvcmsNCitlbnZpcm9ubWVudCBpbmNsdWRlcyBhIGNvbXBvc2l0ZSBvZiBkYXRhLXRyYW5zbWlzc2lvbiByZXF1aXJlbWVudHMsDQordm9sdW1lcyBhbmQgZm9ybXMsIGdvaW5nIGZyb20gc3RlYWR5IHRvIGJ1cnN0eSAoaGlnaC12b2x1bWUpIGFuZCBmcm9tDQordmVyeSBzbG93IHRvIHZlcnkgZmFzdC4gIFRoaXMgYWdncmVnYXRlIG11c3QgYmUgY29uc2lkZXJlZCBpbiB0aGUgZGVzaWduLA0KK2NvbnN0cnVjdGlvbiwgYW5kIG9wZXJhdGlvbiBvZiBtdWx0aWdpZ2FieXRlIG5ldHdvcmtzLg0KKw0KK0xBUlNFTidzIG9iamVjdGl2ZSBpcyB0byB1c2UgdGhlIG5ldHdvcmtzIGFuZCBsaWJyYXJ5IHN5c3RlbXMgbm93IGJlaW5nDQorY29uc3RydWN0ZWQgdG8gaW5jcmVhc2UgYWNjZXNzIHRvIHJlc291cmNlcyB3aGVyZXZlciB0aGV5IGV4aXN0LCBhbmQNCit0aHVzLCB0byBldm9sdmUgdG93YXJkIGFuIG9uLWxpbmUgZWxlY3Ryb25pYyB2aXJ0dWFsIGxpYnJhcnkuDQorDQorTEFSU0VOIGNvbmNsdWRlZCBieSBvZmZlcmluZyBhIHNuYXBzaG90IG9mIGN1cnJlbnQgdHJlbmRzOiAgY29udGludWluZw0KK2dlb21ldHJpYyBncm93dGggaW4gbmV0d29yayBjYXBhY2l0eSBhbmQgbnVtYmVyIG9mIHVzZXJzOyBzbG93ZXINCitkZXZlbG9wbWVudCBvZiBhcHBsaWNhdGlvbnM7IGFuZCBnbGFjaWFsIGRldmVsb3BtZW50IGFuZCBhZG9wdGlvbiBvZg0KK3N0YW5kYXJkcy4gIFRoZSBjaGFsbGVuZ2UgaXMgdG8gZGVzaWduIGFuZCBkZXZlbG9wIGVhY2ggbmV3IGFwcGxpY2F0aW9uDQorc3lzdGVtIHdpdGggbmV0d29yayBhY2Nlc3MgYW5kIHNjYWxhYmlsaXR5IGluIG1pbmQuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0JST1dOUklHRyAqIEFjY2VzcyB0byB0aGUgSW50ZXJuZXQgY2Fubm90IGJlIHRha2VuIGZvciBncmFudGVkICogUGFja2V0DQorcmFkaW8gYW5kIHRoZSBkZXZlbG9wbWVudCBvZiBNRUxWWUwgaW4gMTk4MC04MSBpbiB0aGUgRGl2aXNpb24gb2YgTGlicmFyeQ0KK0F1dG9tYXRpb24gYXQgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSAgKiAgRGVzaWduIGNyaXRlcmlhIGZvciBwYWNrZXQNCityYWRpbyAqIEEgZGVtb25zdHJhdGlvbiBwcm9qZWN0IGluIFNhbiBEaWVnbyBhbmQgZnV0dXJlIHBsYW5zICogU3ByZWFkDQorc3BlY3RydW0gKiBGcmVxdWVuY2llcyBhdCB3aGljaCB0aGUgcmFkaW9zIHdpbGwgcnVuIGFuZCBwbGFucyB0bw0KK3JlaW1wbGVtZW50IHRoZSBXQUlTIHNlcnZlciBzb2Z0d2FyZSBpbiB0aGUgcHVibGljIGRvbWFpbiAqIE5lZWQgZm9yIGFuDQoraW5mcmFzdHJ1Y3R1cmUgb2YgcmFkaW9zIHRoYXQgZG8gbm90IG1vdmUgYXJvdW5kICogDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0Vkd2luIEJST1dOUklHRywgZXhlY3V0aXZlIGRpcmVjdG9yLCBNZW1leCBSZXNlYXJjaCBJbnN0aXR1dGUsIGZpcnN0DQorcG9sbGVkIHRoZSBhdWRpZW5jZSBpbiBvcmRlciB0byBzZWVrIG91dCByZWd1bGFyIHVzZXJzIG9mIHRoZSBJbnRlcm5ldCBhcw0KK3dlbGwgYXMgdGhvc2UgcGxhbm5pbmcgdG8gdXNlIGl0IHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLiAgV2l0aCBuZWFybHkNCitldmVyeWJvZHkgaW4gdGhlIHJvb20gZmFsbGluZyBpbnRvIG9uZSBjYXRlZ29yeSBvciB0aGUgb3RoZXIsIEJST1dOUklHRw0KK21hZGUgYSBwb2ludCByZSBhY2Nlc3MsIG5hbWVseSB0aGF0IG51bWVyb3VzIGluZGl2aWR1YWxzLCBlc3BlY2lhbGx5IHRob3NlDQord2hvIHVzZSB0aGUgSW50ZXJuZXQgZXZlcnkgZGF5LCB0YWtlIGZvciBncmFudGVkIHRoZWlyIGFjY2VzcyB0byBpdCwgdGhlDQorc3BlZWRzIHdpdGggd2hpY2ggdGhleSBhcmUgY29ubmVjdGVkLCBhbmQgaG93IHdlbGwgaXQgYWxsIHdvcmtzLiANCitIb3dldmVyLCBhcyBCUk9XTlJJR0cgZGlzY292ZXJlZCBiZXR3ZWVuIDE5ODcgYW5kIDE5ODkgaW4gQXVzdHJhbGlhLA0KK2lmIG9uZSB3YW50cyBhY2Nlc3MgdG8gdGhlIEludGVybmV0IGJ1dCBjYW5ub3QgYWZmb3JkIGl0IG9yIGhhcyBzb21lDQorcGh5c2ljYWwgYm91bmRhcnkgdGhhdCBwcmV2ZW50cyBoZXIgb3IgaGltIGZyb20gZ2FpbmluZyBhY2Nlc3MsIGl0IGNhbg0KK2JlIGV4dHJlbWVseSBmcnVzdHJhdGluZy4gIEhlIHN1Z2dlc3RlZCB0aGF0IGJlY2F1c2Ugb2YgZWNvbm9taWNzIGFuZA0KK3BoeXNpY2FsIGJhcnJpZXJzIHdlIHdlcmUgYmVnaW5uaW5nIHRvIGNyZWF0ZSBhIHdvcmxkIG9mIGhhdmVzIGFuZCBoYXZlLW5vdHMNCitpbiB0aGUgcHJvY2VzcyBvZiBzY2hvbGFybHkgY29tbXVuaWNhdGlvbiwgZXZlbiBpbiB0aGUgVW5pdGVkIFN0YXRlcy4NCisNCitCUk9XTlJJR0cgZGV0YWlsZWQgdGhlIGRldmVsb3BtZW50IG9mIE1FTFZZTCBpbiBhY2FkZW1pYyB5ZWFyIDE5ODAtODEgaW4NCit0aGUgRGl2aXNpb24gb2YgTGlicmFyeSBBdXRvbWF0aW9uIGF0IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIGluDQorb3JkZXIgdG8gdW5kZXJzY29yZSB0aGUgaXNzdWUgb2YgYWNjZXNzIHRvIHRoZSBzeXN0ZW0sIHdoaWNoIGF0IHRoZQ0KK291dHNldCB3YXMgZXh0cmVtZWx5IGxpbWl0ZWQuICBJbiBzaG9ydCwgdGhlIHByb2plY3QgbmVlZGVkIHRvIGJ1aWxkIGENCituZXR3b3JrLCB3aGljaCBhdCB0aGF0IHRpbWUgZW50YWlsZWQgdXNlIG9mIHNhdGVsbGl0ZSB0ZWNobm9sb2d5LCB0aGF0IGlzLA0KK3B1dHRpbmcgZWFydGggc3RhdGlvbnMgb24gY2FtcHVzIGFuZCBhbHNvIGFjcXVpcmluZyBzb21lIHRlcnJlc3RyaWFsIGxpbmtzDQorZnJvbSB0aGUgU3RhdGUgb2YgQ2FsaWZvcm5pYSdzIG1pY3Jvd2F2ZSBzeXN0ZW0uICBUaGUgaW5zdGFsbGF0aW9uIG9mDQorc2F0ZWxsaXRlIGxpbmtzLCBob3dldmVyLCBkaWQgbm90IHNvbHZlIHRoZSBwcm9ibGVtICh3aGljaCBhY3R1YWxseQ0KK2Zvcm1lZCBwYXJ0IG9mIGEgbGFyZ2VyIHByb2JsZW0gaW52b2x2aW5nIHBvbGl0aWNzIGFuZCBmaW5hbmNpYWwgcmVzb3VyY2VzKS4NCitGb3Igd2hpbGUgdGhlIHByb2plY3QgdGVhbSBjb3VsZCBnZXQgYSBzaWduYWwgb250byBhIGNhbXB1cywgaXQgaGFkIG5vIG1lYW5zDQorb2YgZGlzdHJpYnV0aW5nIHRoZSBzaWduYWwgdGhyb3VnaG91dCB0aGUgY2FtcHVzLiAgVGhlIHNvbHV0aW9uIGludm9sdmVkDQorYWRvcHRpbmcgYSByZWNlbnQgZGV2ZWxvcG1lbnQgaW4gd2lyZWxlc3MgY29tbXVuaWNhdGlvbiBjYWxsZWQgcGFja2V0IHJhZGlvLA0KK3doaWNoIGNvbWJpbmVkIHRoZSBiYXNpYyBub3Rpb24gb2YgcGFja2V0LXN3aXRjaGluZyB3aXRoIHJhZGlvLiAgVGhlIHByb2plY3QNCit1c2VkIHRoaXMgdGVjaG5vbG9neSB0byBnZXQgdGhlIHNpZ25hbCBmcm9tIGEgcG9pbnQgb24gY2FtcHVzIHdoZXJlIGl0DQorY2FtZSBkb3duLCBhbiBlYXJ0aCBzdGF0aW9uIGZvciBleGFtcGxlLCBpbnRvIHRoZSBsaWJyYXJpZXMsIGJlY2F1c2UgaXQNCitmb3VuZCB0aGF0IHdpcmluZyB0aGUgbGlicmFyaWVzLCBlc3BlY2lhbGx5IHRoZSBvbGRlciBtYXJibGUgYnVpbGRpbmdzLA0KK3dvdWxkIGNvc3QgJDIsMDAwLSQ1LDAwMCBwZXIgdGVybWluYWwuDQorDQorQlJPV05SSUdHIG5vdGVkIHRoYXQsIHRlbiB5ZWFycyBhZ28sIHRoZSBwcm9qZWN0IGhhZCBuZWl0aGVyIHRoZSBwdWJsaWMNCitwb2xpY3kgbm9yIHRoZSB0ZWNobm9sb2d5IHRoYXQgd291bGQgaGF2ZSBhbGxvd2VkIGl0IHRvIHVzZSBwYWNrZXQgcmFkaW8NCitpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuICBTaW5jZSB0aGVuIG11Y2ggaGFkIGNoYW5nZWQuICBIZSBwcm9jZWVkZWQgdG8NCitkZXRhaWwgcmVzZWFyY2ggYW5kIGRldmVsb3BtZW50IG9mIHRoZSB0ZWNobm9sb2d5LCBob3cgaXQgaXMgYmVpbmcNCitkZXBsb3llZCBpbiBDYWxpZm9ybmlhLCBhbmQgd2hhdCBkaXJlY3Rpb24gaGUgdGhvdWdodCBpdCB3b3VsZCB0YWtlLg0KK1RoZSBkZXNpZ24gY3JpdGVyaWEgYXJlIHRvIHByb2R1Y2UgYSBoaWdoLXNwZWVkLCBvbmUtdGltZSwgbG93LWNvc3QsDQoraGlnaC1xdWFsaXR5LCBzZWN1cmUsIGxpY2Vuc2UtZnJlZSBkZXZpY2UgKHBhY2tldCByYWRpbykgdGhhdCBvbmUgY2FuDQorcGx1ZyBpbiBhbmQgcGxheSB0b2RheSwgZm9yZ2V0IGFib3V0IGl0LCBhbmQgaGF2ZSBhY2Nlc3MgdG8gdGhlIEludGVybmV0LiANCitCeSBoaWdoIHNwZWVkLCBCUk9XTlJJR0cgbWVhbnQgMSBtZWdhYnl0ZSBhbmQgMS41IG1lZ2FieXRlcy4gIFRob3NlIHVuaXRzDQoraGF2ZSBiZWVuIGJ1aWx0LCBoZSBjb250aW51ZWQsIGFuZCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcNCit0eXBlLWNlcnRpZmllZCBieSBhbiBpbmRlcGVuZGVudCB1bmRlcndyaXRpbmcgbGFib3JhdG9yeSBzbyB0aGF0IHRoZXkgY2FuDQorYmUgdHlwZS1saWNlbnNlZCBieSB0aGUgRmVkZXJhbCBDb21tdW5pY2F0aW9ucyBDb21taXNzaW9uLiAgQXMgaXMgdGhlDQorY2FzZSB3aXRoIGNpdGl6ZW5zIGJhbmQsIG9uZSB3aWxsIGJlIGFibGUgdG8gcHVyY2hhc2UgYSB1bml0IGFuZCBub3QgaGF2ZQ0KK3RvIHdvcnJ5IGFib3V0IGFwcGx5aW5nIGZvciBhIGxpY2Vuc2UuDQorDQorVGhlIGJhc2ljIGlkZWEsIEJST1dOUklHRyBlbGFib3JhdGVkLCBpcyB0byB0YWtlIGhpZ2gtc3BlZWQgcmFkaW8gZGF0YQ0KK3RyYW5zbWlzc2lvbiBhbmQgY3JlYXRlIGEgYmFja2JvbmUgbmV0d29yayB0aGF0IGF0IGNlcnRhaW4gc3RyYXRlZ2ljDQorcG9pbnRzIGluIHRoZSBuZXR3b3JrIHdpbGwgImdhdGV3YXkiIGludG8gYSBtZWRpdW0tc3BlZWQgcGFja2V0IHJhZGlvDQorKGkuZS4sIG9uZSB0aGF0IHJ1bnMgYXQgMzguNCBraWxvYnl0ZXMpLCBzbyB0aGF0IHBlcmhhcHMgYnkgMTk5NC0xOTk1DQorcGVvcGxlLCBsaWtlIHRob3NlIGluIHRoZSBhdWRpZW5jZSBmb3IgdGhlIHByaWNlIG9mIGEgVkNSIGNvdWxkIHB1cmNoYXNlDQorYSBtZWRpdW0tc3BlZWQgcmFkaW8gZm9yIHRoZSBvZmZpY2Ugb3IgaG9tZSwgaGF2ZSBmdWxsIG5ldHdvcmsgY29ubmVjdGl2aXR5DQordG8gdGhlIEludGVybmV0LCBhbmQgcGFydGFrZSBvZiBhbGwgaXRzIHNlcnZpY2VzLCB3aXRoIG5vIG5lZWQgZm9yIGFuIEZDQw0KK2xpY2Vuc2UgYW5kIG5vIHJlZ3VsYXIgYmlsbCBmcm9tIHRoZSBsb2NhbCBjb21tb24gY2Fycmllci4gIEJST1dOUklHRw0KK3ByZXNlbnRlZCBzZXZlcmFsIGRldGFpbHMgb2YgYSBkZW1vbnN0cmF0aW9uIHByb2plY3QgY3VycmVudGx5IHRha2luZw0KK3BsYWNlIGluIFNhbiBEaWVnbyBhbmQgZGVzY3JpYmVkIHBsYW5zLCBwZW5kaW5nIGZ1bmRpbmcsIHRvIGluc3RhbGwgYQ0KK2Z1bGwtYm9yZSBuZXR3b3JrIGluIHRoZSBTYW4gRnJhbmNpc2NvIGFyZWEuICBUaGlzIG5ldHdvcmsgd2lsbCBoYXZlIDYwMA0KK25vZGVzIHJ1bm5pbmcgYXQgYmFja2JvbmUgc3BlZWRzLCBhbmQgMTAwIG9mIHRoZXNlIG5vZGVzIHdpbGwgYmUgbGlicmFyaWVzLA0KK3doaWNoIGluIHR1cm4gd2lsbCBiZSB0aGUgZ2F0ZXdheSBwb3J0cyB0byB0aGUgMzguNCBraWxvYnl0ZSByYWRpb3MgdGhhdA0KK3dpbGwgZ2l2ZSBjb3ZlcmFnZSBmb3IgdGhlIG5laWdoYm9yaG9vZHMgc3Vycm91bmRpbmcgdGhlIGxpYnJhcmllcy4NCisNCitCUk9XTlJJR0cgbmV4dCBleHBsYWluZWQgUGFydCAxNS4yNDcsIGEgbmV3IHJ1bGUgd2l0aGluIFRpdGxlIDQ3IG9mIHRoZQ0KK0NvZGUgb2YgRmVkZXJhbCBSZWd1bGF0aW9ucyBlbmFjdGVkIGJ5IHRoZSBGQ0MgaW4gMTk4NS4gIFRoaXMgcnVsZQ0KK2NoYWxsZW5nZWQgdGhlIGluZHVzdHJ5LCB3aGljaCBoYXMgb25seSBub3cgcmlzZW4gdG8gdGhlIG9jY2FzaW9uLCB0bw0KK2J1aWxkIGEgcmFkaW8gdGhhdCB3b3VsZCBydW4gYXQgbm8gbW9yZSB0aGFuIG9uZSB3YXR0IG9mIG91dHB1dCBwb3dlciBhbmQNCit1c2UgYSBmYWlybHkgZXhvdGljIG1ldGhvZCBvZiBtb2R1bGF0aW5nIHRoZSByYWRpbyB3YXZlIGNhbGxlZCBzcHJlYWQNCitzcGVjdHJ1bS4gIFNwcmVhZCBzcGVjdHJ1bSBpbiBmYWN0IHBlcm1pdHMgdGhlIGJ1aWxkaW5nIG9mIG5ldHdvcmtzIHNvDQordGhhdCBudW1lcm91cyBkYXRhIGNvbW11bmljYXRpb25zIGNhbiBvY2N1ciBzaW11bHRhbmVvdXNseSwgd2l0aG91dA0KK2ludGVyZmVyaW5nIHdpdGggZWFjaCBvdGhlciwgd2l0aGluIHRoZSBzYW1lIHdpZGUgcmFkaW8gY2hhbm5lbC4NCisNCitCUk9XTlJJR0cgZXhwbGFpbmVkIHRoYXQgdGhlIGZyZXF1ZW5jaWVzIGF0IHdoaWNoIHRoZSByYWRpb3Mgd291bGQgcnVuDQorYXJlIHZlcnkgc2hvcnQgd2F2ZSBzaWduYWxzLiAgVGhleSBhcmUgd2VsbCBhYm92ZSBzdGFuZGFyZCBtaWNyb3dhdmUgYW5kDQorcmFkYXIuICBXaXRoIGEgcmFkaW8gd2F2ZSB0aGF0IHNtYWxsLCBvbmUgd2F0dCBiZWNvbWVzIGEgdHJlbWVuZG91cyBwdW5jaA0KK3BlciBiaXQgYW5kIHRodXMgbWFrZXMgdHJhbnNtaXNzaW9uIGF0IHJlYXNvbmFibGUgc3BlZWQgcG9zc2libGUuICBJbg0KK29yZGVyIHRvIG1pbmltaXplIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmdlc3Rpb24sIHRoZSBwcm9qZWN0IGlzDQordW5kZXJ0YWtpbmcgdG8gcmVpbXBsZW1lbnQgc29mdHdhcmUgd2hpY2ggaGFzIGJlZW4gYXZhaWxhYmxlIGluIHRoZQ0KK25ldHdvcmtpbmcgYnVzaW5lc3MgYW5kIGlzIHRha2VuIGZvciBncmFudGVkIG5vdywgZm9yIGV4YW1wbGUsIFRDUC9JUCwNCityb3V0aW5nIGFsZ29yaXRobXMsIGJyaWRnZXMsIGFuZCBnYXRld2F5cy4gIEluIGFkZGl0aW9uLCB0aGUgcHJvamVjdA0KK3BsYW5zIHRvIHRha2UgdGhlIFdBSVMgc2VydmVyIHNvZnR3YXJlIGluIHRoZSBwdWJsaWMgZG9tYWluIGFuZA0KK3JlaW1wbGVtZW50IGl0IHNvIHRoYXQgb25lIGNhbiBoYXZlIGEgV0FJUyBzZXJ2ZXIgb24gYSBNYWMgaW5zdGVhZCBvZiBhDQorVW5peCBtYWNoaW5lLiAgVGhlIE1lbWV4IFJlc2VhcmNoIEluc3RpdHV0ZSBiZWxpZXZlcyB0aGF0IGxpYnJhcmllcywgaW4NCitwYXJ0aWN1bGFyLCB3aWxsIHdhbnQgdG8gdXNlIHRoZSBXQUlTIHNlcnZlcnMgd2l0aCBwYWNrZXQgcmFkaW8uICBUaGlzDQorcHJvamVjdCwgd2hpY2ggaGFzIGEgdGVhbSBvZiBhYm91dCB0d2VsdmUgcGVvcGxlLCB3aWxsIHJ1biB0aHJvdWdoIDE5OTMNCithbmQgd2lsbCBpbmNsdWRlIHRoZSAxMDAgbGlicmFyaWVzIGFscmVhZHkgbWVudGlvbmVkIGFzIHdlbGwgYXMgb3RoZXINCitwcm9mZXNzaW9uYWxzIHN1Y2ggYXMgdGhvc2UgaW4gdGhlIG1lZGljYWwgcHJvZmVzc2lvbiwgZW5naW5lZXJpbmcsIGFuZA0KK2xhdy4gIFRodXMsIHRoZSBuZWVkIGlzIHRvIGNyZWF0ZSBhbiBpbmZyYXN0cnVjdHVyZSBvZiByYWRpb3MgdGhhdCBkbyBub3QNCittb3ZlIGFyb3VuZCwgd2hpY2gsIEJST1dOUklHRyBob3Blcywgd2lsbCBzb2x2ZSBhIHByb2JsZW0gbm90IG9ubHkgZm9yDQorbGlicmFyaWVzIGJ1dCBmb3IgaW5kaXZpZHVhbHMgd2hvLCBieSBhbmQgbGFyZ2UgdG9kYXksIGRvIG5vdCBoYXZlIGFjY2Vzcw0KK3RvIHRoZSBJbnRlcm5ldCBmcm9tIHRoZWlyIGhvbWVzIGFuZCBvZmZpY2VzLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogUHJvamVjdCBvcGVyYXRpbmcgZnJlcXVlbmNpZXMgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitEdXJpbmcgYSBicmllZiBkaXNjdXNzaW9uIHBlcmlvZCwgd2hpY2ggYWxzbyBjb25jbHVkZWQgdGhlIGRheSdzDQorcHJvY2VlZGluZ3MsIEJST1dOUklHRyBzdGF0ZWQgdGhhdCB0aGUgcHJvamVjdCB3YXMgb3BlcmF0aW5nIGluIGZvdXINCitmcmVxdWVuY2llcy4gIFRoZSBzbG93IHNwZWVkIGlzIG9wZXJhdGluZyBhdCA0MzUgbWVnYWhlcnR6LCBhbmQgaXQgd291bGQNCitsYXRlciBnbyB1cCB0byA5MjAgbWVnYWhlcnR6LiAgV2l0aCB0aGUgaGlnaC1zcGVlZCBmcmVxdWVuY3ksIHRoZQ0KK29uZS1tZWdhYnl0ZSByYWRpb3Mgd2lsbCBydW4gYXQgMi40IGdpZ2FiaXRzLCBhbmQgMS41IHdpbGwgcnVuIGF0IDUuNy4gDQorQXQgNS43LCByYWluIGNhbiBiZSBhIGZhY3RvciwgYnV0IGl0IHdvdWxkIGhhdmUgdG8gYmUgdHJvcGljYWwgcmFpbiwNCit1bmxpa2Ugd2hhdCBmYWxscyBpbiBtb3N0IHBhcnRzIG9mIHRoZSBVbml0ZWQgU3RhdGVzLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KK1NFU1NJT04gSVYuICBJTUFHRSBDQVBUVVJFLCBURVhUIENBUFRVUkUsIE9WRVJWSUVXIE9GIFRFWFQgQU5EDQorICAgICAgICAgICAgIElNQUdFIFNUT1JBR0UgRk9STUFUUw0KKw0KK1dpbGxpYW0gSE9PVE9OLCB2aWNlIHByZXNpZGVudCBvZiBvcGVyYXRpb25zLCBJLU5FVCwgbW9kZXJhdGVkIHRoaXMgc2Vzc2lvbi4NCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorS0VOTkVZICogRmFjdG9ycyBpbmZsdWVuY2luZyBkZXZlbG9wbWVudCBvZiBDWFAgKiBBZHZhbnRhZ2VzIG9mIHVzaW5nDQorZGlnaXRhbCB0ZWNobm9sb2d5IHZlcnN1cyBwaG90b2NvcHkgYW5kIG1pY3JvZmlsbSAqIEEgcHJpbWFyeSBnb2FsIG9mDQorQ1hQOyBwdWJsaXNoaW5nIGNoYWxsZW5nZXMgKiBDaGFyYWN0ZXJpc3RpY3Mgb2YgY29waWVzIHByaW50ZWQgKiBRdWFsaXR5DQorb2Ygc2FtcGxlcyBhY2hpZXZlZCBpbiBpbWFnZSBjYXB0dXJlICogU2V2ZXJhbCBmYWN0b3JzIHRvIGJlIGNvbnNpZGVyZWQNCitpbiBjaG9vc2luZyBzY2FubmluZyAqIEVtcGhhc2lzIG9mIENYUCBvbiB0aW1lbHkgYW5kIGNvc3QtZWZmZWN0aXZlDQorcHJvZHVjdGlvbiBvZiBibGFjay1hbmQtd2hpdGUgcHJpbnRlZCBmYWNzaW1pbGVzICogUmVzdWx0cyBvZiBwcm9kdWNpbmcNCittaWNyb2ZpbG0gZnJvbSBkaWdpdGFsIGZpbGVzICogQWR2YW50YWdlcyBvZiBjcmVhdGluZyBtaWNyb2ZpbG0gKiBEZXRhaWxzDQorY29uY2VybmluZyBwcm9kdWN0aW9uICogQ29zdHMgKiBSb2xlIG9mIGRpZ2l0YWwgdGVjaG5vbG9neSBpbiBsaWJyYXJ5DQorcHJlc2VydmF0aW9uICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorQW5uZSBLRU5ORVksIGFzc29jaWF0ZSBkaXJlY3RvciwgRGVwYXJ0bWVudCBvZiBQcmVzZXJ2YXRpb24gYW5kDQorQ29uc2VydmF0aW9uLCBDb3JuZWxsIFVuaXZlcnNpdHksIG9wZW5lZCBoZXIgdGFsayBieSBvYnNlcnZpbmcgdGhhdCB0aGUNCitDb3JuZWxsIFhlcm94IFByb2plY3QgKENYUCkgaGFzIGJlZW4gZ3VpZGVkIGJ5IHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlDQorYWJpbGl0eSB0byBwcm9kdWNlIHByaW50ZWQgZmFjc2ltaWxlcyBvciB0byByZXBsYWNlIHBhcGVyIHdpdGggcGFwZXINCit3b3VsZCBiZSBpbXBvcnRhbnQsIGF0IGxlYXN0IGZvciB0aGUgcHJlc2VudCBnZW5lcmF0aW9uIG9mIHVzZXJzIGFuZA0KK2VxdWlwbWVudC4gIFNoZSBkZXNjcmliZWQgdGhyZWUgZmFjdG9ycyB0aGF0IGluZmx1ZW5jZWQgZGV2ZWxvcG1lbnQgb2YNCit0aGUgcHJvamVjdDogIDEpIEJlY2F1c2UgdGhlIHByb2plY3QgaGFzIGVtcGhhc2l6ZWQgdGhlIHByZXNlcnZhdGlvbiBvZg0KK2RldGVyaW9yYXRpbmcgYnJpdHRsZSBib29rcywgdGhlIHF1YWxpdHkgb2Ygd2hhdCB3YXMgcHJvZHVjZWQgaGFkIHRvIGJlDQorc3VmZmljaWVudGx5IGhpZ2ggdG8gcmV0dXJuIGEgcGFwZXIgcmVwbGFjZW1lbnQgdG8gdGhlIHNoZWxmLiAgQ1hQIHdhcw0KK29ubHkgaW50ZXJlc3RlZCBpbiB1c2luZzogIDIpIGEgc3lzdGVtIHRoYXQgd2FzIGNvc3QtZWZmZWN0aXZlLCB3aGljaA0KK21lYW50IHRoYXQgaXQgaGFkIHRvIGJlIGNvc3QtY29tcGV0aXRpdmUgd2l0aCB0aGUgcHJvY2Vzc2VzIGN1cnJlbnRseQ0KK2F2YWlsYWJsZSwgcHJpbmNpcGFsbHkgcGhvdG9jb3B5IGFuZCBtaWNyb2ZpbG0sIGFuZCAzKSBuZXcgb3IgY3VycmVudGx5DQorYXZhaWxhYmxlIHByb2R1Y3QgaGFyZHdhcmUgYW5kIHNvZnR3YXJlLg0KKw0KK0tFTk5FWSBkZXNjcmliZWQgdGhlIGFkdmFudGFnZXMgdGhhdCB1c2luZyBkaWdpdGFsIHRlY2hub2xvZ3kgb2ZmZXJzIG92ZXINCitib3RoIHBob3RvY29weSBhbmQgbWljcm9maWxtOiAgMSkgVGhlIHBvdGVudGlhbCBleGlzdHMgdG8gY3JlYXRlIGEgaGlnaGVyDQorcXVhbGl0eSByZXByb2R1Y3Rpb24gb2YgYSBkZXRlcmlvcmF0aW5nIG9yaWdpbmFsIHRoYW4gY29udmVudGlvbmFsDQorbGlnaHQtbGVucyB0ZWNobm9sb2d5LiAgMikgQmVjYXVzZSBhIGRpZ2l0YWwgaW1hZ2UgaXMgYW4gZW5jb2RlZA0KK3JlcHJlc2VudGF0aW9uLCBpdCBjYW4gYmUgcmVwcm9kdWNlZCBhZ2FpbiBhbmQgYWdhaW4gd2l0aCBubyByZXN1bHRpbmcNCitsb3NzIG9mIHF1YWxpdHksIGFzIG9wcG9zZWQgdG8gdGhlIHNpdHVhdGlvbiB3aXRoIGxpZ2h0LWxlbnMgcHJvY2Vzc2VzLA0KK2luIHdoaWNoIHRoZXJlIGlzIGRpc2Nlcm5pYmxlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIHNlY29uZCBhbmQgYQ0KK3N1YnNlcXVlbnQgZ2VuZXJhdGlvbiBvZiBhbiBpbWFnZS4gIDMpIEEgZGlnaXRhbCBpbWFnZSBjYW4gYmUgbWFuaXB1bGF0ZWQNCitpbiBhIG51bWJlciBvZiB3YXlzIHRvIGltcHJvdmUgaW1hZ2UgY2FwdHVyZTsgZm9yIGV4YW1wbGUsIFhlcm94IGhhcw0KK2RldmVsb3BlZCBhIHdpbmRvd2luZyBhcHBsaWNhdGlvbiB0aGF0IGVuYWJsZXMgb25lIHRvIGNhcHR1cmUgYSBwYWdlDQorY29udGFpbmluZyBib3RoIHRleHQgYW5kIGlsbHVzdHJhdGlvbnMgaW4gYSBtYW5uZXIgdGhhdCBvcHRpbWl6ZXMgdGhlDQorcmVwcm9kdWN0aW9uIG9mIGJvdGguICAoV2l0aCBsaWdodC1sZW5zIHRlY2hub2xvZ3ksIG9uZSBtdXN0IGNob29zZSB3aGljaA0KK3RvIG9wdGltaXplLCB0ZXh0IG9yIHRoZSBpbGx1c3RyYXRpb247IGluIHByZXNlcnZhdGlvbiBtaWNyb2ZpbG1pbmcsIHRoZQ0KK2N1cnJlbnQgcHJhY3RpY2UgaXMgdG8gc2hvb3QgYW4gaWxsdXN0cmF0ZWQgcGFnZSB0d2ljZSwgb25jZSB0byBoaWdobGlnaHQNCit0aGUgdGV4dCBhbmQgdGhlIHNlY29uZCB0aW1lIHRvIHByb3ZpZGUgdGhlIGJlc3QgY2FwdHVyZSBmb3IgdGhlDQoraWxsdXN0cmF0aW9uLikgIDQpIEEgZGlnaXRhbCBpbWFnZSBjYW4gYWxzbyBiZSBlZGl0ZWQsIGRlbnNpdHkgbGV2ZWxzDQorYWRqdXN0ZWQgdG8gcmVtb3ZlIHVuZGVybGluaW5nIGFuZCBzdGFpbnMsIGFuZCB0byBpbmNyZWFzZSBsZWdpYmlsaXR5IGZvcg0KK2ZhaW50IGRvY3VtZW50cy4gIDUpIE9uLXNjcmVlbiBpbnNwZWN0aW9uIGNhbiB0YWtlIHBsYWNlIGF0IHRoZSB0aW1lIG9mDQoraW5pdGlhbCBzZXR1cCBhbmQgYWRqdXN0bWVudHMgbWFkZSBwcmlvciB0byBzY2FubmluZywgZmFjdG9ycyB0aGF0DQorc3Vic3RhbnRpYWxseSByZWR1Y2UgdGhlIG51bWJlciBvZiByZXRha2VzIHJlcXVpcmVkIGluIHF1YWxpdHkgY29udHJvbC4NCisNCitBIHByaW1hcnkgZ29hbCBvZiBDWFAgaGFzIGJlZW4gdG8gZXZhbHVhdGUgdGhlIHBhcGVyIG91dHB1dCBwcmludGVkIG9uDQordGhlIFhlcm94IERvY3VUZWNoLCBhIGhpZ2gtc3BlZWQgcHJpbnRlciB0aGF0IHByb2R1Y2VzIDYwMC1kcGkgcGFnZXMgZnJvbQ0KK3NjYW5uZWQgaW1hZ2VzIGF0IGEgcmF0ZSBvZiAxMzUgcGFnZXMgYSBtaW51dGUuICBLRU5ORVkgcmVjb3VudGVkIHNldmVyYWwNCitwdWJsaXNoaW5nIGNoYWxsZW5nZXMgdG8gcmVwcmVzZW50IGZhaXRoZnVsIGFuZCBsZWdpYmxlIHJlcHJvZHVjdGlvbnMgb2YNCit0aGUgb3JpZ2luYWxzIHRoYXQgdGhlIDYwMC1kcGkgY29weSBmb3IgdGhlIG1vc3QgcGFydCBzdWNjZXNzZnVsbHkNCitjYXB0dXJlZC4gIEZvciBleGFtcGxlLCBtYW55IG9mIHRoZSBkZXRlcmlvcmF0aW5nIHZvbHVtZXMgaW4gdGhlIHByb2plY3QNCit3ZXJlIGhlYXZpbHkgaWxsdXN0cmF0ZWQgd2l0aCBmaW5lIGxpbmUgZHJhd2luZ3Mgb3IgaGFsZnRvbmVzIG9yIGNhbWUgaW4NCitsYW5ndWFnZXMgc3VjaCBhcyBKYXBhbmVzZSwgaW4gd2hpY2ggdGhlIGJ1aWxkdXAgb2YgY2hhcmFjdGVycyBjb21wcmlzZWQNCitvZiB2YXJ5aW5nIHN0cm9rZXMgaXMgZGlmZmljdWx0IHRvIHJlcHJvZHVjZSBhdCBsb3dlciByZXNvbHV0aW9uczsgYQ0KK3N1cnByaXNpbmcgbnVtYmVyIG9mIHRoZW0gY2FtZSB3aXRoIGFubm90YXRpb25zIGFuZCBtYXRoZW1hdGljYWwNCitmb3JtdWxhcywgd2hpY2ggaXQgd2FzIGNyaXRpY2FsIHRvIGJlIGFibGUgdG8gZHVwbGljYXRlIGV4YWN0bHkuDQorDQorS0VOTkVZIG5vdGVkIHRoYXQgMSkgdGhlIGNvcGllcyBhcmUgYmVpbmcgcHJpbnRlZCBvbiBwYXBlciB0aGF0IG1lZXRzIHRoZQ0KK0FOU0kgc3RhbmRhcmRzIGZvciBwZXJmb3JtYW5jZSwgMikgdGhlIERvY3VUZWNoIHByaW50ZXIgbWVldHMgdGhlIG1hY2hpbmUNCithbmQgdG9uZXIgcmVxdWlyZW1lbnRzIGZvciBwcm9wZXIgYWRoZXNpb24gb2YgcHJpbnQgdG8gcGFnZSwgYXMgZGVzY3JpYmVkDQorYnkgdGhlIE5hdGlvbmFsIEFyY2hpdmVzLCBhbmQgdGh1cyAzKSBwYXBlciBwcm9kdWN0IGlzIGNvbnNpZGVyZWQgdG8gYmUNCit0aGUgYXJjaGl2YWwgZXF1aXZhbGVudCBvZiBwcmVzZXJ2YXRpb24gcGhvdG9jb3B5Lg0KKw0KK0tFTk5FWSB0aGVuIGRpc2N1c3NlZCBzZXZlcmFsIHNhbXBsZXMgb2YgdGhlIHF1YWxpdHkgYWNoaWV2ZWQgaW4gdGhlDQorcHJvamVjdCB0aGF0IGhhZCBiZWVuIGRpc3RyaWJ1dGVkIGluIGEgaGFuZG91dCwgZm9yIGV4YW1wbGUsIGEgY29weSBvZiBhDQorcHJpbnQtb24tZGVtYW5kIHZlcnNpb24gb2YgdGhlIDE5MTEgUmVlZCBsZWN0dXJlIG9uIHRoZSBzdGVhbSB0dXJiaW5lLA0KK3doaWNoIGNvbnRhaW5zIGhhbGZ0b25lcywgbGluZSBkcmF3aW5ncywgYW5kIGlsbHVzdHJhdGlvbnMgZW1iZWRkZWQgaW4NCit0ZXh0OyB0aGUgZmlyc3QgZm91ciBsb29zZSBwYWdlcyBpbiB0aGUgdm9sdW1lIGNvbXBhcmVkIHRoZSBjYXB0dXJlDQorY2FwYWJpbGl0aWVzIG9mIHNjYW5uaW5nIHRvIHBob3RvY29weSBmb3IgYSBzdGFuZGFyZCB0ZXN0IHRhcmdldCwgdGhlDQorSUVFRSBzdGFuZGFyZCAxNjdBIDE5ODcgdGVzdCBjaGFydC4gIEluIGFsbCBpbnN0YW5jZXMgc2Nhbm5pbmcgcHJvdmVkDQorc3VwZXJpb3IgdG8gcGhvdG9jb3B5LCB0aG91Z2ggb25seSBzbGlnaHRseSBtb3JlIHNvIGluIG9uZS4NCisNCitDb25jZWRpbmcgdGhlIHNpbXBsaXN0aWMgbmF0dXJlIG9mIGhlciByZXZpZXcgb2YgdGhlIHF1YWxpdHkgb2Ygc2Nhbm5pbmcNCit0byBwaG90b2NvcHksIEtFTk5FWSBkZXNjcmliZWQgaXQgYXMgb25lIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBraW5kcyBvZg0KK3NldHRpbmdzIHRoYXQgY291bGQgYmUgdXNlZCB3aXRoIHNjYW5uaW5nIGNhcGFiaWxpdGllcyBvbiB0aGUgZXF1aXBtZW50DQorQ1hQIHVzZXMuICBLRU5ORVkgYWxzbyBwb2ludGVkIG91dCB0aGF0IENYUCBpbnZlc3RpZ2F0ZWQgdGhlIHF1YWxpdHkNCithY2hpZXZlZCB3aXRoIGJpbmFyeSBzY2FubmluZyBvbmx5LCBhbmQgbm90ZWQgdGhlIGdyZWF0IHByb21pc2UgaW4gZ3JheQ0KK3NjYWxlIGFuZCBjb2xvciBzY2FubmluZywgd2hvc2UgYWR2YW50YWdlcyBhbmQgZGlzYWR2YW50YWdlcyBuZWVkIHRvIGJlDQorZXhhbWluZWQuICBTaGUgYXJndWVkIGZ1cnRoZXIgdGhhdCBzY2FubmluZyByZXNvbHV0aW9ucyBhbmQgZmlsZSBmb3JtYXRzDQorY2FuIHJlcHJlc2VudCBhIGNvbXBsZXggdHJhZGUtb2ZmIGJldHdlZW4gdGhlIHRpbWUgaXQgdGFrZXMgdG8gY2FwdHVyZQ0KK21hdGVyaWFsLCBmaWxlIHNpemUsIGZpZGVsaXR5IHRvIHRoZSBvcmlnaW5hbCwgYW5kIG9uLXNjcmVlbiBkaXNwbGF5OyBhbmQNCitwcmludGluZyBhbmQgZXF1aXBtZW50IGF2YWlsYWJpbGl0eS4gIEFsbCB0aGVzZSBmYWN0b3JzIG11c3QgYmUgdGFrZW4NCitpbnRvIGNvbnNpZGVyYXRpb24uDQorDQorQ1hQIHBsYWNlZCBwcmltYXJ5IGVtcGhhc2lzIG9uIHRoZSBwcm9kdWN0aW9uIGluIGEgdGltZWx5IGFuZA0KK2Nvc3QtZWZmZWN0aXZlIG1hbm5lciBvZiBwcmludGVkIGZhY3NpbWlsZXMgdGhhdCBjb25zaXN0ZWQgbGFyZ2VseSBvZg0KK2JsYWNrLWFuZC13aGl0ZSB0ZXh0LiAgV2l0aCBiaW5hcnkgc2Nhbm5pbmcsIGxhcmdlIGZpbGVzIG1heSBiZQ0KK2NvbXByZXNzZWQgZWZmaWNpZW50bHkgYW5kIGluIGEgbG9zc2xlc3MgbWFubmVyIChpLmUuLCBubyBkYXRhIGlzIGxvc3QgaW4NCit0aGUgcHJvY2VzcyBvZiBjb21wcmVzc2luZyBbYW5kIGRlY29tcHJlc3NpbmddIGFuIGltYWdlLS10aGUgZXhhY3QNCitiaXQtcmVwcmVzZW50YXRpb24gaXMgbWFpbnRhaW5lZCkgdXNpbmcgR3JvdXAgNCBDQ0lUVCAoaS5lLiwgdGhlIEZyZW5jaA0KK2Fjcm9ueW0gZm9yIEludGVybmF0aW9uYWwgQ29uc3VsdGF0aXZlIENvbW1pdHRlZSBmb3IgVGVsZWdyYXBoIGFuZA0KK1RlbGVwaG9uZSkgY29tcHJlc3Npb24uICBDWFAgd2FzIGdldHRpbmcgY29tcHJlc3Npb24gcmF0aW9zIG9mIGFib3V0DQorZm9ydHkgdG8gb25lLiAgR3JheS1zY2FsZSBjb21wcmVzc2lvbiwgd2hpY2ggcHJpbWFyaWx5IHVzZXMgSlBFRywgaXMgbXVjaA0KK2xlc3MgZWNvbm9taWNhbCBhbmQgY2FuIHJlcHJlc2VudCBhIGxvc3N5IGNvbXByZXNzaW9uIChpLmUuLCBub3QNCitsb3NzbGVzcyksIHNvIHRoYXQgYXMgb25lIGNvbXByZXNzZXMgYW5kIGRlY29tcHJlc3NlcywgdGhlIGlsbHVzdHJhdGlvbg0KK2lzIHN1YnRseSBjaGFuZ2VkLiAgV2hpbGUgYmluYXJ5IGZpbGVzIHByb2R1Y2UgYSBoaWdoLXF1YWxpdHkgcHJpbnRlZA0KK3ZlcnNpb24sIGl0IGFwcGVhcnMgMSkgdGhhdCBvdGhlciBjb21iaW5hdGlvbnMgb2Ygc3BhdGlhbCByZXNvbHV0aW9uIHdpdGgNCitncmF5IGFuZC9vciBjb2xvciBob2xkIGdyZWF0IHByb21pc2UgYXMgd2VsbCwgYW5kIDIpIHRoYXQgZ3JheSBzY2FsZSBjYW4NCityZXByZXNlbnQgYSB0cmVtZW5kb3VzIGFkdmFudGFnZSBmb3Igb24tc2NyZWVuIHZpZXdpbmcuICBUaGUgcXVhbGl0eQ0KK2Fzc29jaWF0ZWQgd2l0aCBiaW5hcnkgYW5kIGdyYXkgc2NhbGUgYWxzbyBkZXBlbmRzIG9uIHRoZSBlcXVpcG1lbnQgdXNlZC4gDQorRm9yIGluc3RhbmNlLCBiaW5hcnkgc2Nhbm5pbmcgcHJvZHVjZXMgYSBtdWNoIGJldHRlciBjb3B5IG9uIGEgYmluYXJ5DQorcHJpbnRlci4NCisNCitBbW9uZyBDWFAncyBmaW5kaW5ncyBjb25jZXJuaW5nIHRoZSBwcm9kdWN0aW9uIG9mIG1pY3JvZmlsbSBmcm9tIGRpZ2l0YWwNCitmaWxlcywgS0VOTkVZIHJlcG9ydGVkIHRoYXQgdGhlIGRpZ2l0YWwgZmlsZXMgZm9yIHRoZSBzYW1lIFJlZWQgbGVjdHVyZQ0KK3dlcmUgdXNlZCB0byBwcm9kdWNlIHNhbXBsZSBmaWxtIHVzaW5nIGFuIGVsZWN0cm9uIGJlYW0gcmVjb3JkZXIuICBUaGUNCityZXN1bHRpbmcgZmlsbSB3YXMgZmFpdGhmdWwgdG8gdGhlIGltYWdlIGNhcHR1cmUgb2YgdGhlIGRpZ2l0YWwgZmlsZXMsDQorYW5kIHdoaWxlIENYUCBmZWx0IHRoYXQgdGhlIHRleHQgYW5kIGltYWdlIHBhZ2VzIHJlcHJlc2VudGVkIGluIHRoZSBSZWVkDQorbGVjdHVyZSB3ZXJlIHN1cGVyaW9yIHRvIHRoYXQgb2YgdGhlIGxpZ2h0LWxlbnMgZmlsbSwgdGhlIHJlc29sdXRpb24NCityZWFkaW5ncyBmb3IgdGhlIDYwMCBkcGkgd2VyZSBub3QgYXMgaGlnaCBhcyBzdGFuZGFyZCBtaWNyb2ZpbG1pbmcuIA0KK0tFTk5FWSBhcmd1ZWQgdGhhdCB0aGUgc3RhbmRhcmRzIGRlZmluZWQgZm9yIGxpZ2h0LWxlbnMgdGVjaG5vbG9neSBhcmUNCitub3QgdG90YWxseSB0cmFuc2ZlcmFibGUgdG8gYSBkaWdpdGFsIGVudmlyb25tZW50LiAgTW9yZW92ZXIsIHRoZXkgYXJlDQorYmFzZWQgb24gZGVmaW5pdGlvbiBvZiBxdWFsaXR5IGZvciBhIHByZXNlcnZhdGlvbiBjb3B5LiAgQWx0aG91Z2ggbWFraW5nDQordGhpcyBjYXNlIHdpbGwgcHJvdmUgdG8gYmUgYSBsb25nLCB1cGhpbGwgc3RydWdnbGUsIENYUCBwbGFucyB0byBjb250aW51ZQ0KK3RvIGludmVzdGlnYXRlIHRoZSBpc3N1ZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIG5leHQgeWVhci4NCisNCitLRU5ORVkgY29uY2x1ZGVkIHRoaXMgcG9ydGlvbiBvZiBoZXIgdGFsayB3aXRoIGEgZGlzY3Vzc2lvbiBvZiB0aGUNCithZHZhbnRhZ2VzIG9mIGNyZWF0aW5nIGZpbG06ICBpdCBjYW4gc2VydmUgYXMgYSBwcmltYXJ5IGJhY2t1cCBhbmQgYXMgYQ0KK3ByZXNlcnZhdGlvbiBtYXN0ZXIgdG8gdGhlIGRpZ2l0YWwgZmlsZTsgaXQgY291bGQgdGhlbiBiZWNvbWUgdGhlIHByaW50DQorb3IgcHJvZHVjdGlvbiBtYXN0ZXIgYW5kIHNlcnZpY2UgY29waWVzIGNvdWxkIGJlIHBhcGVyLCBmaWxtLCBvcHRpY2FsDQorZGlza3MsIG1hZ25ldGljIG1lZGlhLCBvciBvbi1zY3JlZW4gZGlzcGxheS4NCisNCitGaW5hbGx5LCBLRU5ORVkgcHJlc2VudGVkIGRldGFpbHMgcmUgcHJvZHVjdGlvbjoNCisNCisgICAgICogRGV2ZWxvcG1lbnQgYW5kIHRlc3Rpbmcgb2YgYSBtb2RlcmF0ZWx5LWhpZ2ggcmVzb2x1dGlvbiBwcm9kdWN0aW9uDQorICAgICBzY2FubmluZyB3b3Jrc3RhdGlvbiByZXByZXNlbnRlZCBhIHRoaXJkIGdvYWwgb2YgQ1hQOyB0byBkYXRlLCAxLDAwMA0KKyAgICAgdm9sdW1lcyBoYXZlIGJlZW4gc2Nhbm5lZCwgb3IgYWJvdXQgMzAwLDAwMCBpbWFnZXMuDQorDQorICAgICAqIFRoZSByZXN1bHRpbmcgZGlnaXRhbCBmaWxlcyBhcmUgc3RvcmVkIGFuZCB1c2VkIHRvIHByb2R1Y2UNCisgICAgIGhhcmQtY29weSByZXBsYWNlbWVudHMgZm9yIHRoZSBvcmlnaW5hbHMgYW5kIGFkZGl0aW9uYWwgcHJpbnRzIG9uDQorICAgICBkZW1hbmQ7IGFsdGhvdWdoIHRoZSBpbml0aWFsIGNvc3RzIGFyZSBoaWdoLCBzY2FubmluZyB0ZWNobm9sb2d5DQorICAgICBvZmZlcnMgYW4gYWZmb3JkYWJsZSBtZWFucyBmb3IgcmVmb3JtYXR0aW5nIGJyaXR0bGUgbWF0ZXJpYWwuDQorDQorICAgICAqIEEgdGVjaG5pY2lhbiBpbiBwcm9kdWN0aW9uIG1vZGUgY2FuIHNjYW4gMzAwIHBhZ2VzIHBlciBob3VyIHdoZW4NCisgICAgIHBlcmZvcm1pbmcgc2luZ2xlLXNoZWV0IHNjYW5uaW5nLCB3aGljaCBpcyBhIG5lY2Vzc2l0eSB3aGVuIHdvcmtpbmcNCisgICAgIHdpdGggdHJ1bHkgYnJpdHRsZSBwYXBlcjsgdGhpcyBmaWd1cmUgaXMgZXhwZWN0ZWQgdG8gaW5jcmVhc2UNCisgICAgIHNpZ25pZmljYW50bHkgd2l0aCBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMgb2YgdGhlIHNvZnR3YXJlIGZyb20gWGVyb3g7DQorICAgICBhIHRocmVlLW1vbnRoIHRpbWUtYW5kLWNvc3Qgc3R1ZHkgb2Ygc2Nhbm5pbmcgZm91bmQgdGhhdCB0aGUgYXZlcmFnZQ0KKyAgICAgMzAwLXBhZ2UgYm9vayB3b3VsZCB0YWtlIGFib3V0IGFuIGhvdXIgYW5kIGZvcnR5IG1pbnV0ZXMgdG8gc2Nhbg0KKyAgICAgKHRoaXMgZmlndXJlIGluY2x1ZGVkIHRoZSB0aW1lIGZvciBzZXR1cCwgd2hpY2ggaW52b2x2ZXMga2V5aW5nIGluDQorICAgICBwcmltYXJ5IGJpYmxpb2dyYXBoaWMgZGF0YSwgZ29pbmcgaW50byBxdWFsaXR5IGNvbnRyb2wgbW9kZSB0bw0KKyAgICAgZGVmaW5lIHBhZ2Ugc2l6ZSwgZXN0YWJsaXNoaW5nIGZyb250LXRvLWJhY2sgcmVnaXN0cmF0aW9uLCBhbmQNCisgICAgIHNjYW5uaW5nIHNhbXBsZSBwYWdlcyB0byBpZGVudGlmeSBhIGRlZmF1bHQgcmFuZ2Ugb2Ygc2V0dGluZ3MgZm9yDQorICAgICB0aGUgZW50aXJlIGJvb2stLWZ1bmN0aW9ucyBub3QgZGlzc2ltaWxhciB0byB0aG9zZSBwZXJmb3JtZWQgYnkNCisgICAgIGZpbG1lcnMgb3IgdGhvc2UgcHJlcGFyaW5nIGEgYm9vayBmb3IgcGhvdG9jb3B5KS4NCisNCisgICAgICogVGhlIGZpbmFsIHN0ZXAgaW4gdGhlIHNjYW5uaW5nIHByb2Nlc3MgaW52b2x2ZWQgcmVzY2Fucywgd2hpY2gNCisgICAgIGhhcHBpbHkgd2VyZSBmZXcgYW5kIGZhciBiZXR3ZWVuLCByZXByZXNlbnRpbmcgd2VsbCB1bmRlciAxIHBlcmNlbnQNCisgICAgIG9mIHRoZSB0b3RhbCBwYWdlcyBzY2FubmVkLg0KKw0KK0luIGFkZGl0aW9uIHRvIHRlY2huaWNpYW4gdGltZSwgQ1hQIGNvc3RlZCBvdXQgZXF1aXBtZW50LCBhbW9ydGl6ZWQgb3Zlcg0KK2ZvdXIgeWVhcnMsIHRoZSBjb3N0IG9mIHN0b3JpbmcgYW5kIHJlZnJlc2hpbmcgdGhlIGRpZ2l0YWwgZmlsZXMgZXZlcnkNCitmb3VyIHllYXJzLCBhbmQgdGhlIGNvc3Qgb2YgcHJpbnRpbmcgYW5kIGJpbmRpbmcsIGJvb2stY2xvdGggYmluZGluZywgYQ0KK3BhcGVyIHJlcHJvZHVjdGlvbi4gIFRoZSB0b3RhbCBhbW91bnRlZCB0byBhIGxpdHRsZSB1bmRlciAkNjUgcGVyIHNpbmdsZQ0KKzMwMC1wYWdlIHZvbHVtZSwgd2l0aCAzMCBwZXJjZW50IG92ZXJoZWFkIGluY2x1ZGVkLS1hIGZpZ3VyZSBjb21wZXRpdGl2ZQ0KK3dpdGggdGhlIHByaWNlcyBjdXJyZW50bHkgY2hhcmdlZCBieSBwaG90b2NvcHkgdmVuZG9ycy4NCisNCitPZiBjb3Vyc2UsIHdpdGggc2Nhbm5pbmcsIGluIGFkZGl0aW9uIHRvIHRoZSBwYXBlciBmYWNzaW1pbGUsIG9uZSBpcyBsZWZ0DQord2l0aCBhIGRpZ2l0YWwgZmlsZSBmcm9tIHdoaWNoIHN1YnNlcXVlbnQgY29waWVzIG9mIHRoZSBib29rIGNhbiBiZQ0KK3Byb2R1Y2VkIGZvciBhIGZyYWN0aW9uIG9mIHRoZSBjb3N0IG9mIHBob3RvY29weSwgd2l0aCByZWFkZXJzIGFmZm9yZGVkDQorY2hvaWNlcyBpbiB0aGUgZm9ybSBvZiB0aGVzZSBjb3BpZXMuDQorDQorS0VOTkVZIGNvbmNsdWRlZCB0aGF0IGRpZ2l0YWwgdGVjaG5vbG9neSBvZmZlcnMgYW4gZWxlY3Ryb25pYyBtZWFucyBmb3IgYQ0KK2xpYnJhcnkgcHJlc2VydmF0aW9uIGVmZm9ydCB0byBwYXkgZm9yIGl0c2VsZi4gIElmIGEgYnJpdHRsZS1ib29rIHByb2dyYW0NCitpbmNsdWRlZCB0aGUgbWVhbnMgb2YgZGlzc2VtaW5hdGluZyByZXByaW50cyBvZiBib29rcyB0aGF0IGFyZSBpbiBkZW1hbmQNCitieSBsaWJyYXJpZXMgYW5kIHJlc2VhcmNoZXJzIGFsaWtlLCB0aGUgaW5pdGlhbCBpbnZlc3RtZW50IGluIGNhcHR1cmUNCitjb3VsZCBiZSByZWNvdmVyZWQgYW5kIHVzZWQgdG8gcHJlc2VydmUgYWRkaXRpb25hbCBidXQgbGVzcyBwb3B1bGFyDQorYm9va3MuICBTaGUgZGlzY2xvc2VkIHRoYXQgYW4gZWNvbm9taWMgbW9kZWwgZm9yIGEgc2VsZi1zdXN0YWluaW5nDQorcHJvZ3JhbSBjb3VsZCBiZSBkZXZlbG9wZWQgZm9yIENYUCdzIHJlcG9ydCB0byB0aGUgQ29tbWlzc2lvbiBvbg0KK1ByZXNlcnZhdGlvbiBhbmQgQWNjZXNzIChDUEEpLg0KKw0KK0tFTk5FWSBzdHJlc3NlZCB0aGF0IHRoZSBmb2N1cyBvZiBDWFAgaGFzIGJlZW4gb24gb2J0YWluaW5nIGhpZ2ggcXVhbGl0eQ0KK2luIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4gIFRoZSB1c2Ugb2YgZGlnaXRhbCB0ZWNobm9sb2d5IGlzIHZpZXdlZCBhcw0KK2FuIGFmZm9yZGFibGUgYWx0ZXJuYXRpdmUgdG8gb3RoZXIgcmVmb3JtYXR0aW5nIG9wdGlvbnMuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0FORFJFICogT3ZlcnZpZXcgYW5kIGhpc3Rvcnkgb2YgTkFURFAgKiBWYXJpb3VzIGFncmljdWx0dXJhbCBDRC1ST00NCitwcm9kdWN0cyBjcmVhdGVkIGluaG91c2UgYW5kIGJ5IHNlcnZpY2UgYnVyZWF1cyAqIFBpbG90IHByb2plY3Qgb24NCitJbnRlcm5ldCB0cmFuc21pc3Npb24gKiBBZGRpdGlvbmFsIHByb2R1Y3RzIGluIHByb2dyZXNzICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorUGFtZWxhIEFORFJFLCBhc3NvY2lhdGUgZGlyZWN0b3IgZm9yIGF1dG9tYXRpb24sIE5hdGlvbmFsIEFncmljdWx0dXJhbA0KK1RleHQgRGlnaXRpemluZyBQcm9ncmFtIChOQVREUCksIE5hdGlvbmFsIEFncmljdWx0dXJhbCBMaWJyYXJ5IChOQUwpLA0KK3ByZXNlbnRlZCBhbiBvdmVydmlldyBvZiBOQVREUCwgd2hpY2ggaGFzIGJlZW4gdW5kZXJ3YXkgYXQgTkFMIHRoZSBsYXN0DQorZm91ciB5ZWFycywgYmVmb3JlIEp1ZGl0aCBaSURBUiBkaXNjdXNzZWQgdGhlIHRlY2huaWNhbCBkZXRhaWxzLiAgQU5EUkUNCitkZWZpbmVkIGFncmljdWx0dXJhbCBpbmZvcm1hdGlvbiBhcyBhIGJyb2FkIHJhbmdlIG9mIG1hdGVyaWFsIGdvaW5nIGZyb20NCitiYXNpYyBhbmQgYXBwbGllZCByZXNlYXJjaCBpbiB0aGUgaGFyZCBzY2llbmNlcyB0byB0aGUgb25lLXBhZ2UgcGFtcGhsZXRzDQordGhhdCBhcmUgZGlzdHJpYnV0ZWQgYnkgdGhlIGNvb3BlcmF0aXZlIHN0YXRlIGV4dGVuc2lvbiBzZXJ2aWNlcyBvbiBzdWNoDQordGhpbmdzIGFzIGhvdyB0byBncm93IGJsdWViZXJyaWVzLg0KKw0KK05BVERQIGJlZ2FuIGluIGxhdGUgMTk4NiB3aXRoIGEgbWVldGluZyBvZiByZXByZXNlbnRhdGl2ZXMgZnJvbSB0aGUNCitsYW5kLWdyYW50IGxpYnJhcnkgY29tbXVuaXR5IHRvIGRlYWwgd2l0aCB0aGUgaXNzdWUgb2YgZWxlY3Ryb25pYw0KK2luZm9ybWF0aW9uLiAgTkFMIGFuZCBmb3J0eS1maXZlIG9mIHRoZXNlIGxpYnJhcmllcyBiYW5kZWQgdG9nZXRoZXIgdG8NCitlc3RhYmxpc2ggdGhpcyBwcm9qZWN0LS10byBldmFsdWF0ZSB0aGUgdGVjaG5vbG9neSBmb3IgY29udmVydGluZyB3aGF0DQord2VyZSB0aGVuIHNvdXJjZSBkb2N1bWVudHMgaW4gcGFwZXIgZm9ybSBpbnRvIGVsZWN0cm9uaWMgZm9ybSwgdG8gcHJvdmlkZQ0KK2FjY2VzcyB0byB0aGF0IGRpZ2l0YWwgaW5mb3JtYXRpb24sIGFuZCB0aGVuIHRvIGRpc3RyaWJ1dGUgaXQuIA0KK0Rpc3RyaWJ1dGluZyB0aGF0IG1hdGVyaWFsIHRvIHRoZSBjb21tdW5pdHktLXRoZSB1bml2ZXJzaXR5IGNvbW11bml0eSBhcw0KK3dlbGwgYXMgdGhlIGV4dGVuc2lvbiBzZXJ2aWNlIGNvbW11bml0eSwgcG90ZW50aWFsbHkgZG93biB0byB0aGUgY291bnR5DQorbGV2ZWwtLWNvbnN0aXR1dGVkIHRoZSBncm91cCdzIGNoaWVmIGNvbmNlcm4uDQorDQorU2luY2UgSmFudWFyeSAxOTg4ICh3aGVuIHRoZSBtaWNyb2NvbXB1dGVyLWJhc2VkIHNjYW5uaW5nIHN5c3RlbSB3YXMNCitpbnN0YWxsZWQgYXQgTkFMKSwgTkFURFAgaGFzIGRvbmUgYSB2YXJpZXR5IG9mIHRoaW5ncywgY29uY2VybmluZyB3aGljaA0KK1pJREFSIHdvdWxkIHByb3ZpZGUgZnVydGhlciBkZXRhaWxzLiAgRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCB0ZWNobm9sb2d5DQorY29uc2lkZXJlZCBpbiB0aGUgcHJvamVjdCdzIGRpc2N1c3Npb24gcGhhc2Ugd2FzIGRpZ2l0YWwgdmlkZW9kaXNjLCB3aGljaA0KK2luZGljYXRlcyBob3cgbG9uZyBhZ28gaXQgd2FzIGNvbmNlaXZlZC4NCisNCitPdmVyIHRoZSBmb3VyIHllYXJzIG9mIHRoaXMgcHJvamVjdCwgZm91ciBzZXBhcmF0ZSBDRC1ST00gcHJvZHVjdHMgb24NCitmb3VyIGRpZmZlcmVudCBhZ3JpY3VsdHVyYWwgdG9waWNzIHdlcmUgY3JlYXRlZCwgdHdvIGF0IGENCitzY2FubmluZy1hbmQtT0NSIHN0YXRpb24gaW5zdGFsbGVkIGF0IE5BTCwgYW5kIHR3byBieSBzZXJ2aWNlIGJ1cmVhdXMuIA0KK1RodXMsIE5BVERQIGhhcyBnYWluZWQgY29tcGFyYXRpdmUgaW5mb3JtYXRpb24gaW4gdGVybXMgb2YgdGhvc2UgcmVsYXRpdmUNCitjb3N0cy4gIEVhY2ggb2YgdGhlc2UgcHJvZHVjdHMgY29udGFpbmVkIHRoZSBmdWxsIEFTQ0lJIHRleHQgYXMgd2VsbCBhcw0KK3BhZ2UgaW1hZ2VzIG9mIHRoZSBtYXRlcmlhbCwgb3IgYmV0d2VlbiA0LDAwMCBhbmQgNiwwMDAgcGFnZXMgb2YgbWF0ZXJpYWwNCitvbiB0aGVzZSBkaXNrcy4gIFRvcGljcyBpbmNsdWRlZCBhcXVhY3VsdHVyZSwgZm9vZCwgYWdyaWN1bHR1cmUgYW5kDQorc2NpZW5jZSAoaS5lLiwgaW50ZXJuYXRpb25hbCBhZ3JpY3VsdHVyZSBhbmQgcmVzZWFyY2gpLCBhY2lkIHJhaW4sIGFuZA0KK0FnZW50IE9yYW5nZSwgd2hpY2ggd2FzIHRoZSBmaW5hbCBwcm9kdWN0IGRpc3RyaWJ1dGVkIChhcHByb3hpbWF0ZWx5DQorZWlnaHRlZW4gbW9udGhzIGJlZm9yZSB0aGUgV29ya3Nob3ApLg0KKw0KK1RoZSB0aGlyZCBwaGFzZSBvZiBOQVREUCBmb2N1c2VkIG9uIGRlbGl2ZXJ5IG1lY2hhbmlzbXMgb3RoZXIgdGhhbg0KK0NELVJPTS4gIEF0IHRoZSBzdWdnZXN0aW9uIG9mIENsaWZmb3JkIExZTkNILCB3aG8gd2FzIGEgdGVjaG5pY2FsDQorY29uc3VsdGFudCB0byB0aGUgcHJvamVjdCBhdCB0aGlzIHBvaW50LCBOQVREUCBiZWNhbWUgaW52b2x2ZWQgd2l0aCB0aGUNCitJbnRlcm5ldCBhbmQgaW5pdGlhdGVkIGEgcHJvamVjdCB3aXRoIHRoZSBoZWxwIG9mIE5vcnRoIENhcm9saW5hIFN0YXRlDQorVW5pdmVyc2l0eSwgaW4gd2hpY2ggZm91cnRlZW4gb2YgdGhlIGxhbmQtZ3JhbnQgdW5pdmVyc2l0eSBsaWJyYXJpZXMgYXJlDQordHJhbnNtaXR0aW5nIGRpZ2l0YWwgaW1hZ2VzIG92ZXIgdGhlIEludGVybmV0IGluIHJlc3BvbnNlIHRvIGludGVybGlicmFyeQ0KK2xvYW4gcmVxdWVzdHMtLWEgdG9waWMgZm9yIGFub3RoZXIgbWVldGluZy4gIEF0IHRoaXMgcG9pbnQsIHRoZSBwaWxvdA0KK3Byb2plY3QgaGFkIGJlZW4gY29tcGxldGVkIGZvciBhYm91dCBhIHllYXIgYW5kIHRoZSBmaW5hbCByZXBvcnQgd291bGQgYmUNCithdmFpbGFibGUgc2hvcnRseSBhZnRlciB0aGUgV29ya3Nob3AuICBJbiB0aGUgbWVhbnRpbWUsIHRoZSBwcm9qZWN0J3MNCitzdWNjZXNzIGhhZCBsZWQgdG8gaXRzIGV4dGVuc2lvbi4gIChBTkRSRSBub3RlZCB0aGF0IG9uZSBvZiB0aGUgZmlyc3QNCit0aGluZ3MgZG9uZSB1bmRlciB0aGUgcHJvZ3JhbSB0aXRsZSB3YXMgdG8gc2VsZWN0IGEgcmV0cmlldmFsIHBhY2thZ2UgdG8NCit1c2Ugd2l0aCBzdWJzZXF1ZW50IHByb2R1Y3RzOyBXaW5kb3dzIFBlcnNvbmFsIExpYnJhcmlhbiB3YXMgdGhlIHBhY2thZ2UNCitvZiBjaG9pY2UgYWZ0ZXIgYSBsZW5ndGh5IGV2YWx1YXRpb24uKQ0KKyAgDQorVGhyZWUgYWRkaXRpb25hbCBwcm9kdWN0cyBoYWQgYmVlbiBwbGFubmVkIGFuZCB3ZXJlIGluIHByb2dyZXNzOg0KKw0KKyAgICAgMSkgQW4gYXJyYW5nZW1lbnQgd2l0aCB0aGUgQW1lcmljYW4gU29jaWV0eSBvZiBBZ3Jvbm9teS0tYQ0KKyAgICAgcHJvZmVzc2lvbmFsIHNvY2lldHkgdGhhdCBoYXMgcHVibGlzaGVkIHRoZSBBZ3Jvbm9teSBKb3VybmFsIHNpbmNlDQorICAgICBhYm91dCAxOTA4LS10byBzY2FuIGFuZCBjcmVhdGUgYml0LW1hcHBlZCBpbWFnZXMgb2YgaXRzIGpvdXJuYWwuIA0KKyAgICAgQVNBIGdyYW50ZWQgcGVybWlzc2lvbiBmaXJzdCB0byBwdXQgYW5kIHRoZW4gdG8gZGlzdHJpYnV0ZSB0aGlzDQorICAgICBtYXRlcmlhbCBpbiBlbGVjdHJvbmljIGZvcm0sIHRvIGhvbGQgaXQgYXQgTkFMLCBhbmQgdG8gdXNlIHRoZXNlDQorICAgICBlbGVjdHJvbmljIGltYWdlcyBhcyBhIG1lY2hhbmlzbSB0byBkZWxpdmVyIGRvY3VtZW50cyBvciBwcmludCBvdXQNCisgICAgIG1hdGVyaWFsIGZvciBwYXRyb25zLCBhbW9uZyBvdGhlciB1c2VzLiAgRWZmZWN0aXZlbHksIE5BTCBoYXMgdGhlDQorICAgICByaWdodCB0byB1c2UgdGhpcyBtYXRlcmlhbCBpbiBzdXBwb3J0IG9mIGl0cyBwcm9ncmFtLiANCisgICAgIChTaWduaWZpY2FudGx5LCB0aGlzIGFycmFuZ2VtZW50IG9mZmVycyBhIHBvdGVudGlhbCBjb29wZXJhdGl2ZQ0KKyAgICAgbW9kZWwgZm9yIHdvcmtpbmcgd2l0aCBvdGhlciBwcm9mZXNzaW9uYWwgc29jaWV0aWVzIGluIGFncmljdWx0dXJlDQorICAgICB0byB0cnkgdG8gZG8gdGhlIHNhbWUgdGhpbmctLXB1dCB0aGUgam91cm5hbHMgb2YgcGFydGljdWxhciBpbnRlcmVzdA0KKyAgICAgdG8gYWdyaWN1bHR1cmUgcmVzZWFyY2ggaW50byBlbGVjdHJvbmljIGZvcm0uKQ0KKw0KKyAgICAgMikgQW4gZXh0ZW5zaW9uIG9mIHRoZSBlYXJsaWVyIHByb2R1Y3Qgb24gYXF1YWN1bHR1cmUuDQorDQorICAgICAzKSBUaGUgR2VvcmdlIFdhc2hpbmd0b24gQ2FydmVyIFBhcGVycy0tYSBqb2ludCBwcm9qZWN0IHdpdGgNCisgICAgIFR1c2tlZ2VlIFVuaXZlcnNpdHkgdG8gc2NhbiBhbmQgY29udmVydCBmcm9tIG1pY3JvZmlsbSBzb21lIDMsNTAwDQorICAgICBpbWFnZXMgb2YgQ2FydmVyJ3MgcGFwZXJzLCBsZXR0ZXJzLCBhbmQgZHJhd2luZ3MuDQorDQorSXQgd2FzIGFudGljaXBhdGVkIHRoYXQgYWxsIG9mIHRoZXNlIHByb2R1Y3RzIHdvdWxkIGFwcGVhciBubyBtb3JlIHRoYW4NCitzaXggbW9udGhzIGFmdGVyIHRoZSBXb3Jrc2hvcC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorWklEQVIgKiAoQSBzZXBhcmF0ZSBhcmVuYSBmb3Igc2Nhbm5pbmcpICogU3RlcHMgaW4gY3JlYXRpbmcgYSBkYXRhYmFzZSAqDQorSW1hZ2UgY2FwdHVyZSwgd2l0aCBhbmQgd2l0aG91dCBwZXJmb3JtaW5nIE9DUiAqIEtleWluZyBpbiB0cmFja2luZyBkYXRhDQorKiBTY2FubmluZywgd2l0aCBlbGVjdHJvbmljIGFuZCBtYW51YWwgdHJhY2tpbmcgKiBBZGp1c3RtZW50cyBkdXJpbmcNCitzY2FubmluZyBwcm9jZXNzICogU2Nhbm5pbmcgcmVzb2x1dGlvbnMgKiBDb21wcmVzc2lvbiAqIERlLXNrZXdpbmcgYW5kDQorZmlsdGVyaW5nICogSW1hZ2UgY2FwdHVyZSBmcm9tIG1pY3JvZm9ybTogIHRoZSBwYXBlcnMgYW5kIGxldHRlcnMgb2YNCitHZW9yZ2UgV2FzaGluZ3RvbiBDYXJ2ZXIgKiBFcXVpcG1lbnQgdXNlZCBmb3IgYSBzY2FubmluZyBzeXN0ZW0gKiANCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorSnVkaXRoIFpJREFSLCBjb29yZGluYXRvciwgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIFRleHQgRGlnaXRpemluZyBQcm9ncmFtDQorKE5BVERQKSwgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIExpYnJhcnkgKE5BTCksIGlsbHVzdHJhdGVkIHRoZSB0ZWNobmljYWwNCitkZXRhaWxzIG9mIE5BVERQLCBpbmNsdWRpbmcgaGVyIHByaW1hcnkgcmVzcG9uc2liaWxpdHksIHNjYW5uaW5nIGFuZA0KK2NyZWF0aW5nIGRhdGFiYXNlcyBvbiBhIHRvcGljIGFuZCBwdXR0aW5nIHRoZW0gb24gQ0QtUk9NLg0KKw0KKyhaSURBUiByZW1hcmtlZCBhIHNlcGFyYXRlIGFyZW5hIGZyb20gdGhlIENELVJPTSBwcm9qZWN0cywgYWx0aG91Z2ggdGhlDQorcHJvY2Vzc2luZyBvZiB0aGUgbWF0ZXJpYWwgaXMgbmVhcmx5IGlkZW50aWNhbCwgaW4gd2hpY2ggTkFURFAgaXMgYWxzbw0KK3NjYW5uaW5nIG1hdGVyaWFsIGFuZCBsb2FkaW5nIGl0IG9uIGEgTmV4dCBtaWNyb2NvbXB1dGVyLCB3aGljaCBpbiB0dXJuDQoraXMgbGlua2VkIHRvIE5BTCdzIGludGVncmF0ZWQgbGlicmFyeSBzeXN0ZW0uICBUaHVzLCBzZWFyY2hlcyBpbiBOQUwncw0KK2JpYmxpb2dyYXBoaWMgZGF0YWJhc2Ugd2lsbCBlbmFibGUgcGVvcGxlIHRvIHB1bGwgdXAgYWN0dWFsIHBhZ2UgaW1hZ2VzDQorYW5kIHRleHQgZm9yIGFueSBkb2N1bWVudHMgdGhhdCBoYXZlIGJlZW4gZW50ZXJlZC4pDQorDQorSW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzZXNzaW9uJ3MgdG9waWMsIFpJREFSIGZvY3VzZWQgaGVyIGlsbHVzdHJhdGVkDQordGFsayBvbiBpbWFnZSBjYXB0dXJlLCBvZmZlcmluZyBhIHByaW1lciBvbiB0aGUgdGhyZWUgbWFpbiBzdGVwcyBpbiB0aGUNCitwcm9jZXNzOiAgMSkgYXNzZW1ibGUgdGhlIHByaW50ZWQgcHVibGljYXRpb25zOyAyKSBkZXNpZ24gdGhlIGRhdGFiYXNlDQorKGRhdGFiYXNlIGRlc2lnbiBvY2N1cnMgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHRoZSBtYXRlcmlhbCBmb3INCitzY2FubmluZzsgdGhpcyBzdGVwIGVudGFpbHMgcmV2aWV3aW5nIGFuZCBvcmdhbml6aW5nIHRoZSBtYXRlcmlhbCwNCitkZWZpbmluZyB0aGUgY29udGVudHMtLXdoYXQgd2lsbCBjb25zdGl0dXRlIGEgcmVjb3JkLCB3aGF0IGtpbmRzIG9mDQorZmllbGRzIHdpbGwgYmUgY2FwdHVyZWQgaW4gdGVybXMgb2YgYXV0aG9yLCB0aXRsZSwgZXRjLik7IDMpIHBlcmZvcm0gYQ0KK2NlcnRhaW4gYW1vdW50IG9mIG1hcmt1cCBvbiB0aGUgcGFwZXIgcHVibGljYXRpb25zLiAgTkFMIHBlcmZvcm1zIHRoaXMNCit0YXNrIHJlY29yZCBieSByZWNvcmQsIHByZXBhcmluZyB3b3JrIHNoZWV0cyBvciBzb21lIG90aGVyIHNvcnQgb2YNCit0cmFja2luZyBtYXRlcmlhbCBhbmQgZGVzaWduaW5nIGRlc2NyaXB0b3JzIGFuZCBvdGhlciBlbmhhbmNlbWVudHMgdG8gYmUNCithZGRlZCB0byB0aGUgZGF0YSB0aGF0IHdpbGwgbm90IGJlIGNhcHR1cmVkIGZyb20gdGhlIHByaW50ZWQgcHVibGljYXRpb24uIA0KK1BhcnQgb2YgdGhpcyBwcm9jZXNzIGFsc28gaW52b2x2ZXMgZGV0ZXJtaW5pbmcgTkFURFAncyBmaWxlIGFuZCBkaXJlY3RvcnkNCitzdHJ1Y3R1cmU6ICBOQVREUCBhdHRlbXB0cyB0byBhdm9pZCBwdXR0aW5nIG1vcmUgdGhhbiBhcHByb3hpbWF0ZWx5IDEwMA0KK2ltYWdlcyBpbiBhIGRpcmVjdG9yeSwgYmVjYXVzZSBwbGFjaW5nIG1vcmUgdGhhbiB0aGF0IG9uIGEgQ0QtUk9NIHdvdWxkDQorcmVkdWNlIHRoZSBhY2Nlc3Mgc3BlZWQuDQorDQorVGhpcyB1cC1mcm9udCBwcm9jZXNzIHRha2VzIGFwcHJveGltYXRlbHkgdHdvIHdlZWtzIGZvciBhDQorNiwwMDAtNywwMDAtcGFnZSBkYXRhYmFzZS4gIFRoZSBuZXh0IHN0ZXAgaXMgdG8gY2FwdHVyZSB0aGUgcGFnZSBpbWFnZXMuIA0KK0hvdyBsb25nIHRoaXMgcHJvY2VzcyB0YWtlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBkZWNpc2lvbiB3aGV0aGVyIG9yIG5vdA0KK3RvIHBlcmZvcm0gT0NSLiAgTm90IHBlcmZvcm1pbmcgT0NSIHNwZWVkcyB0aGUgcHJvY2Vzcywgd2hlcmVhcyB0ZXh0DQorY2FwdHVyZSByZXF1aXJlcyBncmVhdGVyIGNhcmUgYmVjYXVzZSBvZiB0aGUgcXVhbGl0eSBvZiB0aGUgaW1hZ2U6ICBpdA0KK2hhcyB0byBiZSBzdHJhaWdodGVyIGFuZCBhbGxvd2FuY2UgbXVzdCBiZSBtYWRlIGZvciB0ZXh0IG9uIGEgcGFnZSwgbm90DQoranVzdCBmb3IgdGhlIGNhcHR1cmUgb2YgcGhvdG9ncmFwaHMuDQorDQorTkFURFAga2V5cyBpbiB0cmFja2luZyBkYXRhLCB0aGF0IGlzLCBhIHN0YW5kYXJkIGJpYmxpb2dyYXBoaWMgcmVjb3JkDQoraW5jbHVkaW5nIHRoZSB0aXRsZSBvZiB0aGUgYm9vayBhbmQgdGhlIHRpdGxlIG9mIHRoZSBjaGFwdGVyLCB3aGljaCB3aWxsDQorbGF0ZXIgZWl0aGVyIGJlY29tZSB0aGUgYWNjZXNzIGluZm9ybWF0aW9uIG9yIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlDQorZnJvbnQgb2YgYSBmdWxsLXRleHQgcmVjb3JkIHNvIHRoYXQgaXQgaXMgc2VhcmNoYWJsZS4NCisNCitJbWFnZXMgYXJlIHNjYW5uZWQgZnJvbSBhIGJvdW5kIG9yIHVuYm91bmQgcHVibGljYXRpb24sIGNoaWVmbHkgZnJvbQ0KK2JvdW5kIHB1YmxpY2F0aW9ucyBpbiB0aGUgY2FzZSBvZiBOQVREUCwgaG93ZXZlciwgYmVjYXVzZSBvZnRlbiB0aGV5IGFyZQ0KK3RoZSBvbmx5IGNvcGllcyBhbmQgdGhlIHB1YmxpY2F0aW9ucyBhcmUgcmV0dXJuZWQgdG8gdGhlIHNoZWx2ZXMuICBOQVREUA0KK3VzdWFsbHkgc2NhbnMgb25lIHJlY29yZCBhdCBhIHRpbWUsIGJlY2F1c2UgaXRzIGRhdGFiYXNlIHRyYWNraW5nIHN5c3RlbQ0KK3RyYWNrcyB0aGUgZG9jdW1lbnQgaW4gdGhhdCB3YXkgYW5kIGRvZXMgbm90IHJlcXVpcmUgZnVydGhlciBsb2dpY2FsDQorc2VwYXJhdGluZyBvZiB0aGUgaW1hZ2VzLiAgQWZ0ZXIgcGVyZm9ybWluZyBvcHRpY2FsIGNoYXJhY3Rlcg0KK3JlY29nbml0aW9uLCBOQVREUCBtb3ZlcyB0aGUgaW1hZ2VzIG9mZiB0aGUgaGFyZCBkaXNrIGFuZCBtYWludGFpbnMgYQ0KK3ZvbHVtZSBzaGVldC4gIFRob3VnaCB0aGUgc3lzdGVtIHRyYWNrcyBlbGVjdHJvbmljYWxseSwgYWxsIHRoZQ0KK3Byb2Nlc3Npbmcgc3RlcHMgYXJlIGFsc28gdHJhY2tlZCBtYW51YWxseSB3aXRoIGEgbG9nIHNoZWV0Lg0KKw0KK1pJREFSIG5leHQgaWxsdXN0cmF0ZWQgdGhlIGtpbmRzIG9mIGFkanVzdG1lbnRzIHRoYXQgb25lIGNhbiBtYWtlIHdoZW4NCitzY2FubmluZyBmcm9tIHBhcGVyIGFuZCBtaWNyb2ZpbG0sIGZvciBleGFtcGxlLCByZWRvaW5nIGltYWdlcyB0aGF0IG5lZWQNCitzcGVjaWFsIGhhbmRsaW5nLCBzZXR0aW5nIGZvciBkaXRoZXJpbmcgb3IgZ3JheSBzY2FsZSwgYW5kIGFkanVzdGluZyBmb3INCiticmlnaHRuZXNzIG9yIGZvciB0aGUgd2hvbGUgYm9vayBhdCBvbmUgdGltZS4NCisNCitOQVREUCBpcyBzY2FubmluZyBhdCAzMDAgZG90cyBwZXIgaW5jaCwgYSBzdGFuZGFyZCBzY2FubmluZyByZXNvbHV0aW9uLiANCitUaG91Z2ggYWRlcXVhdGUgZm9yIGNhcHR1cmluZyB0ZXh0IHRoYXQgaXMgYWxsIG9mIGEgc3RhbmRhcmQgc2l6ZSwgMzAwDQorZHBpIGlzIHVuc3VpdGFibGUgZm9yIGFueSBraW5kIG9mIHBob3RvZ3JhcGhpYyBtYXRlcmlhbCBvciBmb3IgdmVyeSBzbWFsbA0KK3RleHQuICBNYW55IHNjYW5uZXJzIGFsbG93IGZvciBkaWZmZXJlbnQgaW1hZ2UgZm9ybWF0cywgVElGRiwgb2YgY291cnNlLA0KK2JlaW5nIGEgZGUgZmFjdG8gc3RhbmRhcmQuICBCdXQgaWYgb25lIGludGVuZHMgdG8gZXhjaGFuZ2UgaW1hZ2VzIHdpdGgNCitvdGhlciBwZW9wbGUsIHRoZSBhYmlsaXR5IHRvIHNjYW4gb3RoZXIgaW1hZ2UgZm9ybWF0cywgZXZlbiBpZiB0aGV5IGFyZQ0KK2xlc3MgY29tbW9uLCBiZWNvbWVzIGhpZ2hseSBkZXNpcmFibGUuDQorDQorQ0NJVFQgR3JvdXAgNCBpcyB0aGUgc3RhbmRhcmQgY29tcHJlc3Npb24gZm9yIG5vcm1hbCBibGFjay1hbmQtd2hpdGUNCitpbWFnZXMsIEpQRUcgZm9yIGdyYXkgc2NhbGUgb3IgY29sb3IuICAgWklEQVIgcmVjb21tZW5kZWQgMSkgdXNpbmcgdGhlDQorc3RhbmRhcmQgY29tcHJlc3Npb25zLCBwYXJ0aWN1bGFybHkgaWYgb25lIGF0dGVtcHRzIHRvIG1ha2UgbWF0ZXJpYWwNCithdmFpbGFibGUgYW5kIHRvIGFsbG93IHVzZXJzIHRvIGRvd25sb2FkIGltYWdlcyBhbmQgcmV1c2UgdGhlbSBmcm9tDQorQ0QtUk9NczsgYW5kIDIpIG1haW50YWluaW5nIHRoZSBhYmlsaXR5IHRvIG91dHB1dCBhbiB1bmNvbXByZXNzZWQgaW1hZ2UsDQorYmVjYXVzZSBpbiBpbWFnZSBleGNoYW5nZSB1bmNvbXByZXNzZWQgaW1hZ2VzIGFyZSBtb3JlIGxpa2VseSB0byBiZSBhYmxlDQordG8gY3Jvc3MgcGxhdGZvcm1zLg0KKw0KK1pJREFSIGVtcGhhc2l6ZWQgdGhlIGltcG9ydGFuY2Ugb2YgZGUtc2tld2luZyBhbmQgZmlsdGVyaW5nIGFzDQorcmVxdWlyZW1lbnRzIG9uIE5BVERQJ3MgdXBncmFkZWQgc3lzdGVtLiAgRm9yIGluc3RhbmNlLCBzY2FubmluZyBib3VuZA0KK2Jvb2tzLCBwYXJ0aWN1bGFybHkgYm9va3MgcHVibGlzaGVkIGJ5IHRoZSBmZWRlcmFsIGdvdmVybm1lbnQgd2hvc2UgcGFnZXMNCithcmUgc2tld2VkLCBhbmQgdHJ5aW5nIHRvIHNjYW4gdGhlbSBzdHJhaWdodCBpZiBPQ1IgaXMgdG8gYmUgcGVyZm9ybWVkLA0KK2lzIGV4dHJlbWVseSB0aW1lLWNvbnN1bWluZy4gIFRoZSBzYW1lIGhvbGRzIGZvciBmaWx0ZXJpbmcgb2YNCitwb29yLXF1YWxpdHkgb3Igb2xkZXIgbWF0ZXJpYWxzLg0KKw0KK1pJREFSIGRlc2NyaWJlZCBpbWFnZSBjYXB0dXJlIGZyb20gbWljcm9mb3JtLCB1c2luZyBhcyBhbiBleGFtcGxlIHRocmVlDQorcmVlbHMgZnJvbSBhIHNpeHR5LXNldmVuLXJlZWwgc2V0IG9mIHRoZSBwYXBlcnMgYW5kIGxldHRlcnMgb2YgR2VvcmdlDQorV2FzaGluZ3RvbiBDYXJ2ZXIgdGhhdCBoYWQgYmVlbiBwcm9kdWNlZCBieSBUdXNrZWdlZSBVbml2ZXJzaXR5LiAgVGhlc2UNCityZXN1bHRlZCBpbiBhcHByb3hpbWF0ZWx5IDMsNTAwIGltYWdlcywgd2hpY2ggTkFURFAgaGFkIGhhZCBzY2FubmVkIGJ5DQoraXRzIHNlcnZpY2UgY29udHJhY3RvciwgU2NpZW5jZSBBcHBsaWNhdGlvbnMgSW50ZXJuYXRpb25hbCBDb3Jwb3JhdGlvbg0KKyhTQUlDKS4gIE5BVERQIGFsc28gY3JlYXRlZCBiaWJsaW9ncmFwaGljIHJlY29yZHMgZm9yIGFjY2Vzcy4gIChOQVREUCBkaWQNCitub3QgaGF2ZSBzdWNoIHNwZWNpYWxpemVkIGVxdWlwbWVudCBhcyBhIG1pY3JvZmlsbSBzY2FubmVyLg0KKw0KK1VuZm9ydHVuYXRlbHksIHRoZSBwcm9jZXNzIG9mIHNjYW5uaW5nIGZyb20gbWljcm9maWxtIHdhcyBub3QgYW4NCit1bnF1YWxpZmllZCBzdWNjZXNzLCBaSURBUiByZXBvcnRlZDogIGJlY2F1c2UgbWljcm9maWxtIGZyYW1lIHNpemVzIHZhcnksDQorb2NjYXNpb25hbGx5IHNvbWUgZnJhbWVzIHdlcmUgbWlzc2VkLCB3aGljaCB3aXRob3V0IHNwZW5kaW5nIG11Y2ggdGltZQ0KK2FuZCBtb25leSBjb3VsZCBub3QgYmUgcmVjYXB0dXJlZC4NCisNCitPQ1IgY291bGQgbm90IGJlIHBlcmZvcm1lZCBmcm9tIHRoZSBzY2FubmVkIGltYWdlcyBvZiB0aGUgZnJhbWVzLiAgVGhlDQorYmxlZWRpbmcgaW4gdGhlIHRleHQgc2ltcGx5IG91dHB1dCB0ZXh0LCB3aGVuIE9DUiB3YXMgcnVuLCB0aGF0IGNvdWxkIG5vdA0KK2V2ZW4gYmUgZWRpdGVkLiAgTkFURFAgdGVzdGVkIGZvciBuZWdhdGl2ZSB2ZXJzdXMgcG9zaXRpdmUgaW1hZ2VzLA0KK2xhbmRzY2FwZSB2ZXJzdXMgcG9ydHJhaXQgb3JpZW50YXRpb24sIGFuZCBzaW5nbGUtIHZlcnN1cyBkdWFsLXBhZ2UNCittaWNyb2ZpbG0sIG5vbmUgb2Ygd2hpY2ggc2VlbWVkIHRvIGFmZmVjdCB0aGUgcXVhbGl0eSBvZiB0aGUgaW1hZ2U7IGJ1dA0KK2Fsc28gb24gbm9uZSBvZiB0aGVtIGNvdWxkIE9DUiBiZSBwZXJmb3JtZWQuDQorDQorSW4gc2VsZWN0aW5nIHRoZSBtaWNyb2ZpbG0gdGhleSB3b3VsZCB1c2UsIHRoZXJlZm9yZSwgTkFURFAgaGFkIG90aGVyDQorZmFjdG9ycyBpbiBtaW5kLiAgWklEQVIgbm90ZWQgdHdvIGZhY3RvcnMgdGhhdCBpbmZsdWVuY2VkIHRoZSBxdWFsaXR5IG9mDQordGhlIGltYWdlczogIDEpIHRoZSBpbmhlcmVudCBxdWFsaXR5IG9mIHRoZSBvcmlnaW5hbCBhbmQgMikgdGhlIGFtb3VudCBvZg0KK3NpemUgcmVkdWN0aW9uIG9uIHRoZSBwYWdlcy4NCisNCitUaGUgQ2FydmVyIHBhcGVycyB3ZXJlIHNlbGVjdGVkIGJlY2F1c2UgdGhleSBhcmUgaW5mb3JtYXRpdmUgYW5kIHZpc3VhbGx5DQoraW50ZXJlc3RpbmcsIHRyZWF0IGEgc2luZ2xlIHN1YmplY3QsIGFuZCBhcmUgdmFsdWFibGUgaW4gdGhlaXIgb3duIHJpZ2h0LiANCitUaGUgaW1hZ2VzIHdlcmUgc2Nhbm5lZCBhbmQgZGl2aWRlZCBpbnRvIGxvZ2ljYWwgcmVjb3JkcyBieSBTQUlDLCB0aGVuDQorZGVsaXZlcmVkLCBhbmQgbG9hZGVkIG9udG8gTkFURFAncyBzeXN0ZW0sIHdoZXJlIGJpYmxpb2dyYXBoaWMNCitpbmZvcm1hdGlvbiB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBpbWFnZXMgd2FzIGFkZGVkLiAgU2Nhbm5pbmcgd2FzDQorY29tcGxldGVkIGluIHN1bW1lciAxOTkxIGFuZCBieSB0aGUgZW5kIG9mIHN1bW1lciAxOTkyIHRoZSBkaXNrIHdhcw0KK3NjaGVkdWxlZCB0byBiZSBwdWJsaXNoZWQuDQorDQorUHJvYmxlbXMgZW5jb3VudGVyZWQgZHVyaW5nIHByb2Nlc3NpbmcgaW5jbHVkZWQgdGhlIGZvbGxvd2luZzogIEJlY2F1c2UNCit0aGUgbWljcm9maWxtIHNjYW5uaW5nIGhhZCB0byBiZSBkb25lIGluIGEgYmF0Y2gsIGFkanVzdG1lbnQgZm9yDQoraW5kaXZpZHVhbCBwYWdlIHZhcmlhdGlvbnMgd2FzIG5vdCBwb3NzaWJsZS4gIFRoZSBmcmFtZSBzaXplIHZhcmllZCBvbg0KK2FjY291bnQgb2YgdGhlIG5hdHVyZSBvZiB0aGUgbWF0ZXJpYWwsIGFuZCB0aGVyZWZvcmUgc29tZSBvZiB0aGUgZnJhbWVzDQord2VyZSBtaXNzZWQgd2hpbGUgb3RoZXJzIHdlcmUganVzdCBwYXJ0aWFsIGZyYW1lcy4gIFRoZSBvbmx5IHdheSB0byBnbw0KK2JhY2sgYW5kIGNhcHR1cmUgdGhpcyBtYXRlcmlhbCB3YXMgdG8gcHJpbnQgb3V0IHRoZSBwYWdlIHdpdGggdGhlDQorbWljcm9maWxtIHJlYWRlciBmcm9tIHRoZSBtaXNzaW5nIGZyYW1lIGFuZCB0aGVuIHNjYW4gaXQgaW4gZnJvbSB0aGUNCitwYWdlLCB3aGljaCB3YXMgZXh0cmVtZWx5IHRpbWUtY29uc3VtaW5nLiAgVGhlIHF1YWxpdHkgb2YgdGhlIGltYWdlcw0KK3NjYW5uZWQgZnJvbSB0aGUgcHJpbnRvdXQgb2YgdGhlIG1pY3JvZmlsbSBjb21wYXJlZCB1bmZhdm9yYWJseSB3aXRoIHRoYXQNCitvZiB0aGUgb3JpZ2luYWwgaW1hZ2VzIGNhcHR1cmVkIGRpcmVjdGx5IGZyb20gdGhlIG1pY3JvZmlsbS4gIFRoZQ0KK2luYWJpbGl0eSB0byBwZXJmb3JtIE9DUiBhbHNvIHdhcyBhIG1ham9yIGRpc2FwcG9pbnRtZW50LiAgQXQgdGhlIHRpbWUsDQorY29tcHV0ZXIgb3V0cHV0IG1pY3JvZmlsbSB3YXMgdW5hdmFpbGFibGUgdG8gdGVzdC4NCisNCitUaGUgZXF1aXBtZW50IHVzZWQgZm9yIGEgc2Nhbm5pbmcgc3lzdGVtIHdhcyB0aGUgbGFzdCB0b3BpYyBhZGRyZXNzZWQgYnkNCitaSURBUi4gIFRoZSB0eXBlIG9mIGVxdWlwbWVudCB0aGF0IG9uZSB3b3VsZCBwdXJjaGFzZSBmb3IgYSBzY2FubmluZw0KK3N5c3RlbSBpbmNsdWRlZDogIGEgbWljcm9jb21wdXRlciwgYXQgbGVhc3QgYSAzODYsIGJ1dCBwcmVmZXJhYmx5IGEgNDg2Ow0KK2EgbGFyZ2UgaGFyZCBkaXNrLCAzODAgbWVnYWJ5dGUgYXQgbWluaW11bTsgYSBtdWx0aS10YXNraW5nIG9wZXJhdGluZw0KK3N5c3RlbSB0aGF0IGFsbG93cyBvbmUgdG8gcnVuIHNvbWUgdGhpbmdzIGluIGJhdGNoIGluIHRoZSBiYWNrZ3JvdW5kDQord2hpbGUgc2Nhbm5pbmcgb3IgZG9pbmcgdGV4dCBlZGl0aW5nLCBmb3IgZXhhbXBsZSwgVW5peCBvciBPUy8yIGFuZCwNCit0aGVvcmV0aWNhbGx5LCBXaW5kb3dzOyBhIGhpZ2gtc3BlZWQgc2Nhbm5lciBhbmQgc2Nhbm5pbmcgc29mdHdhcmUgdGhhdA0KK2FsbG93cyBvbmUgdG8gbWFrZSB0aGUgdmFyaW91cyBhZGp1c3RtZW50cyBtZW50aW9uZWQgZWFybGllcjsgYQ0KK2hpZ2gtcmVzb2x1dGlvbiBtb25pdG9yICgxNTAgZHBpICk7IE9DUiBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUgdG8gcGVyZm9ybQ0KK3RleHQgcmVjb2duaXRpb247IGFuIG9wdGljYWwgZGlzayBzdWJzeXN0ZW0gb24gd2hpY2ggdG8gYXJjaGl2ZSBhbGwgdGhlDQoraW1hZ2VzIGFzIHRoZSBwcm9jZXNzaW5nIGlzIGRvbmU7IGZpbGUgbWFuYWdlbWVudCBhbmQgdHJhY2tpbmcgc29mdHdhcmUuDQorDQorWklEQVIgb3BpbmVkIHRoYXQgdGhlIHNvZnR3YXJlIG9uZSBwdXJjaGFzZXMgd2FzIG1vcmUgaW1wb3J0YW50IHRoYW4gdGhlDQoraGFyZHdhcmUgYW5kIG1pZ2h0IGFsc28gY29zdCBtb3JlIHRoYW4gdGhlIGhhcmR3YXJlLCBidXQgaXQgd2FzIGxpa2VseSB0bw0KK3Byb3ZlIGNyaXRpY2FsIHRvIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2Ygb25lJ3Mgc3lzdGVtLiAgSW4gYWRkaXRpb24gdG8NCithIHN0YW5kLWFsb25lIHNjYW5uaW5nIHdvcmtzdGF0aW9uIGZvciBpbWFnZSBjYXB0dXJlLCB0aGVuLCB0ZXh0IGNhcHR1cmUNCityZXF1aXJlcyBvbmUgb3IgdHdvIGVkaXRpbmcgc3RhdGlvbnMgbmV0d29ya2VkIHRvIHRoaXMgc2Nhbm5pbmcgc3RhdGlvbg0KK3RvIHBlcmZvcm0gZWRpdGluZy4gIEVkaXRpbmcgdGhlIHRleHQgdGFrZXMgdHdvIG9yIHRocmVlIHRpbWVzIGFzIGxvbmcgYXMNCitjYXB0dXJpbmcgdGhlIGltYWdlcy4NCisNCitGaW5hbGx5LCBaSURBUiBzdHJlc3NlZCB0aGUgaW1wb3J0YW5jZSBvZiBidXlpbmcgYW4gb3BlbiBzeXN0ZW0gdGhhdCBhbGxvd3MNCitmb3IgbW9yZSB0aGFuIG9uZSB2ZW5kb3IsIGNvbXBsaWVzIHdpdGggc3RhbmRhcmRzLCBhbmQgY2FuIGJlIHVwZ3JhZGVkLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitXQVRFUlMgKllhbGUgVW5pdmVyc2l0eSBMaWJyYXJ5J3MgbWFzdGVyIHBsYW4gdG8gY29udmVydCBtaWNyb2ZpbG0gdG8NCitkaWdpdGFsIGltYWdlcnkgKFBPQikgKiBUaGUgcGxhY2Ugb2YgZWxlY3Ryb25pYyB0b29scyBpbiB0aGUgbGlicmFyeSBvZg0KK3RoZSBmdXR1cmUgKiBUaGUgdXNlcyBvZiBpbWFnZXMgYW5kIGFuIGltYWdlIGxpYnJhcnkgKiBQcmltYXJ5IGlucHV0IGZyb20NCitwcmVzZXJ2YXRpb24gbWljcm9maWxtICogRmVhdHVyZXMgZGlzdGluZ3Vpc2hpbmcgUE9CIGZyb20gQ1hQIGFuZCBrZXkNCitoeXBvdGhlc2VzIGd1aWRpbmcgUE9CICogVXNlIG9mIHZlbmRvciBzZWxlY3Rpb24gcHJvY2VzcyB0byBmYWNpbGl0YXRlDQorb3JnYW5pemF0aW9uYWwgd29yayAqIENyaXRlcmlhIGZvciBzZWxlY3RpbmcgdmVuZG9yICogRmluYWxpc3RzIGFuZA0KK3Jlc3VsdHMgb2YgcHJvY2VzcyBmb3IgWWFsZSAqIEtleSBmYWN0b3IgZGlzdGluZ3Vpc2hpbmcgdmVuZG9ycyAqDQorQ29tcG9uZW50cywgZGVzaWduIHByaW5jaXBsZXMsIGFuZCBzb21lIGVzdGltYXRlZCBjb3N0cyBvZiBQT0IgKiBSb2xlIG9mDQorcHJlc2VydmF0aW9uIG1hdGVyaWFscyBpbiBkZXZlbG9waW5nIGltYWdpbmcgbWFya2V0ICogRmFjdG9ycyBhZmZlY3RpbmcNCitxdWFsaXR5IGFuZCBjb3N0ICogRmFjdG9ycyBhZmZlY3RpbmcgdGhlIHVzYWJpbGl0eSBvZiBjb21wbGV4IGRvY3VtZW50cw0KK2luIGltYWdlIGZvcm0gKiANCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRG9uYWxkIFdBVEVSUywgaGVhZCBvZiB0aGUgU3lzdGVtcyBPZmZpY2UsIFlhbGUgVW5pdmVyc2l0eSBMaWJyYXJ5LA0KK3JlcG9ydGVkIG9uIHRoZSBwcm9ncmVzcyBvZiBhIG1hc3RlciBwbGFuIGZvciBhIHByb2plY3QgYXQgWWFsZSB0bw0KK2NvbnZlcnQgbWljcm9maWxtIHRvIGRpZ2l0YWwgaW1hZ2VyeSwgUHJvamVjdCBPcGVuIEJvb2sgKFBPQikuICBTdGF0aW5nDQordGhhdCBQT0Igd2FzIGluIGFuIGFkdmFuY2VkIHN0YWdlIG9mIHBsYW5uaW5nLCBXQVRFUlMgZGV0YWlsZWQsIGluDQorcGFydGljdWxhciwgdGhlIHByb2Nlc3Mgb2Ygc2VsZWN0aW5nIGEgdmVuZG9yIHBhcnRuZXIgYW5kIHNldmVyYWwga2V5DQoraXNzdWVzIHVuZGVyIGRpc2N1c3Npb24gYXMgWWFsZSBwcmVwYXJlcyB0byBtb3ZlIGludG8gdGhlIHByb2plY3QgaXRzZWxmLiANCitIZSBjb21tZW50ZWQgZmlyc3Qgb24gdGhlIHZpc2lvbiB0aGF0IHNlcnZlcyBhcyB0aGUgY29udGV4dCBvZiBQT0IgYW5kDQordGhlbiBkZXNjcmliZWQgaXRzIHB1cnBvc2UgYW5kIHNjb3BlLg0KKw0KK1dBVEVSUyBzZWVzIHRoZSBsaWJyYXJ5IG9mIHRoZSBmdXR1cmUgbm90IG5lY2Vzc2FyaWx5IGFzIGFuIGVsZWN0cm9uaWMNCitsaWJyYXJ5IGJ1dCBhcyBhIHBsYWNlIHRoYXQgZ2VuZXJhdGVzLCBwcmVzZXJ2ZXMsIGFuZCBpbXByb3ZlcyBmb3IgaXRzDQorY2xpZW50cyByZWFkeSBhY2Nlc3MgdG8gYm90aCBpbnRlbGxlY3R1YWwgYW5kIHBoeXNpY2FsIHJlY29yZGVkDQora25vd2xlZGdlLiAgRWxlY3Ryb25pYyB0b29scyBtdXN0IGZpbmQgYSBwbGFjZSBpbiB0aGUgbGlicmFyeSBpbiB0aGUNCitjb250ZXh0IG9mIHRoaXMgdmlzaW9uLiAgU2V2ZXJhbCByb2xlcyBmb3IgZWxlY3Ryb25pYyB0b29scyBpbmNsdWRlDQorc2VydmluZyBhczogIGluZGlyZWN0IHNvdXJjZXMgb2YgZWxlY3Ryb25pYyBrbm93bGVkZ2Ugb3IgYXMgImZpbmRpbmciDQorYWlkcyAodGhlIG9uLWxpbmUgY2F0YWxvZ3VlcywgdGhlIGFydGljbGUtbGV2ZWwgaW5kaWNlcywgcmVnaXN0ZXJzIGZvcg0KK2RvY3VtZW50cyBhbmQgYXJjaGl2ZXMpOyBkaXJlY3Qgc291cmNlcyBvZiByZWNvcmRlZCBrbm93bGVkZ2U7IGZ1bGwtdGV4dA0KK2ltYWdlczsgYW5kIHZhcmlvdXMga2luZHMgb2YgY29tcG91bmQgc291cmNlcyBvZiByZWNvcmRlZCBrbm93bGVkZ2UgKHRoZQ0KK3NvLWNhbGxlZCBjb21wb3VuZCBkb2N1bWVudHMgb2YgSHlwZXJ0ZXh0LCBtaXhlZCB0ZXh0IGFuZCBpbWFnZSwNCittaXhlZC10ZXh0IGltYWdlIGZvcm1hdCwgYW5kIG11bHRpbWVkaWEpLg0KKw0KK1BPQiBpcyBsb29raW5nIHBhcnRpY3VsYXJseSBhdCBpbWFnZXMgYW5kIGFuIGltYWdlIGxpYnJhcnksIHRoZSB1c2VzIHRvDQord2hpY2ggaW1hZ2VzIHdpbGwgYmUgcHV0IChlLmcuLCBzdG9yYWdlLCBwcmludGluZywgYnJvd3NpbmcsIGFuZCB0aGVuIHVzZQ0KK2FzIGlucHV0IGZvciBvdGhlciBwcm9jZXNzZXMpLCBPQ1IgYXMgYSBzdWJzZXF1ZW50IHByb2Nlc3MgdG8gaW1hZ2UNCitjYXB0dXJlLCBvciBjcmVhdGluZyBhbiBpbWFnZSBsaWJyYXJ5LCBhbmQgYWxzbyBwb3NzaWJseSBnZW5lcmF0aW5nDQorbWljcm9maWxtLg0KKw0KK1doaWxlIGlucHV0IHdpbGwgY29tZSBmcm9tIGEgdmFyaWV0eSBvZiBzb3VyY2VzLCBQT0IgaXMgY29uc2lkZXJpbmcNCitlc3BlY2lhbGx5IGlucHV0IGZyb20gcHJlc2VydmF0aW9uIG1pY3JvZmlsbS4gIEEgcG9zc2libGUgb3V0Y29tZSBpcyB0aGF0DQordGhlIGZpbG0gYW5kIHBhcGVyIHdoaWNoIHByb3ZpZGUgdGhlIGlucHV0IGZvciB0aGUgaW1hZ2UgbGlicmFyeQ0KK2V2ZW50dWFsbHkgbWF5IGdvIG9mZiBpbnRvIHJlbW90ZSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgaW1hZ2UgbGlicmFyeSBtYXkNCitiZSB0aGUgcHJpbWFyeSBhY2Nlc3MgdG9vbC4NCisNCitUaGUgcHVycG9zZSBhbmQgc2NvcGUgb2YgUE9CIGZvY3VzIG9uIGltYWdpbmcuICBUaG91Z2ggcmVsYXRlZCB0byBDWFAsDQorUE9CIGhhcyB0d28gZmVhdHVyZXMgd2hpY2ggZGlzdGluZ3Vpc2ggaXQ6ICAxKSBzY2FsZS0tY29udmVyc2lvbiBvZg0KKzEwLDAwMCB2b2x1bWVzIGludG8gZGlnaXRhbCBpbWFnZSBmb3JtOyBhbmQgMikgc291cmNlLS1jb252ZXJzaW9uIGZyb20NCittaWNyb2ZpbG0uICBHaXZlbiB0aGVzZSBmZWF0dXJlcywgc2V2ZXJhbCBrZXkgd29ya2luZyBoeXBvdGhlc2VzIGd1aWRlDQorUE9CLCBpbmNsdWRpbmc6ICAxKSBTaW5jZSBQT0IgaXMgdXNpbmcgbWljcm9maWxtLCBpdCBpcyBub3QgY29uY2VybmVkIHdpdGgNCit0aGUgaW1hZ2UgbGlicmFyeSBhcyBhIHByZXNlcnZhdGlvbiBtZWRpdW0uICAyKSBEaWdpdGFsIGltYWdlcnkgY2FuIGltcHJvdmUNCithY2Nlc3MgdG8gcmVjb3JkZWQga25vd2xlZGdlIHRocm91Z2ggcHJpbnRpbmcgYW5kIG5ldHdvcmsgZGlzdHJpYnV0aW9uIGF0DQorYSBtb2Rlc3QgaW5jcmVtZW50YWwgY29zdCBvZiBtaWNyb2ZpbG0uICAzKSBDYXB0dXJpbmcgYW5kIHN0b3JpbmcgZG9jdW1lbnRzDQoraW4gYSBkaWdpdGFsIGltYWdlIGZvcm0gaXMgbmVjZXNzYXJ5IHRvIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIGluIGFjY2Vzcy4NCisoUE9CIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgaW1hZ2luZywgZGlnaXRpemluZyBwcm9jZXNzIGFuZCBPQ1IsDQord2hpY2ggYXQgdGhpcyBzdGFnZSBpdCBkb2VzIG5vdCBwbGFuIHRvIHBlcmZvcm0uKQ0KKw0KK0N1cnJlbnRseSBpbiBpdHMgZmlyc3Qgb3Igb3JnYW5pemF0aW9uYWwgcGhhc2UsIFBPQiBmb3VuZCB0aGF0IGl0IGNvdWxkDQordXNlIGEgdmVuZG9yIHNlbGVjdGlvbiBwcm9jZXNzIHRvIGZhY2lsaXRhdGUgYSBnb29kIGRlYWwgb2YgdGhlDQorb3JnYW5pemF0aW9uYWwgd29yayAoZS5nLiwgY3JlYXRpbmcgYSBwcm9qZWN0IHRlYW0gYW5kIGFkdmlzb3J5IGJvYXJkLA0KK2NvbmZpcm1pbmcgdGhlIHZhbGlkaXR5IG9mIHRoZSBwbGFuLCBlc3RhYmxpc2hpbmcgdGhlIGNvc3Qgb2YgdGhlIHByb2plY3QNCithbmQgYSBidWRnZXQsIHNlbGVjdGluZyB0aGUgbWF0ZXJpYWxzIHRvIGNvbnZlcnQsIGFuZCB0aGVuIHJhaXNpbmcgdGhlDQorbmVjZXNzYXJ5IGZ1bmRzKS4NCisNCitQT0IgZGV2ZWxvcGVkIG51bWVyb3VzIHNlbGVjdGlvbiBjcml0ZXJpYSwgaW5jbHVkaW5nOiAgYSBmaXJtIGNvbW1pdHRlZA0KK3RvIGltYWdlLWRvY3VtZW50IG1hbmFnZW1lbnQsIHRoZSBhYmlsaXR5IHRvIHNlcnZlIGFzIHN5c3RlbXMgaW50ZWdyYXRvcg0KK2luIGEgbGFyZ2Utc2NhbGUgcHJvamVjdCBvdmVyIHNldmVyYWwgeWVhcnMsIGludGVyZXN0IGluIGRldmVsb3BpbmcgdGhlDQorcmVxdWlzaXRlIHNvZnR3YXJlIGFzIGEgc3RhbmRhcmQgcmF0aGVyIHRoYW4gYSBjdXN0b20gcHJvZHVjdCwgYW5kIGENCit3aWxsaW5nbmVzcyB0byBpbnZlc3Qgc3Vic3RhbnRpYWwgcmVzb3VyY2VzIGluIHRoZSBwcm9qZWN0IGl0c2VsZi4NCisNCitUd28gdmVuZG9ycywgREVDIGFuZCBYZXJveCwgd2VyZSBzZWxlY3RlZCBhcyBmaW5hbGlzdHMgaW4gT2N0b2JlciAxOTkxLA0KK2FuZCB3aXRoIHRoZSBzdXBwb3J0IG9mIHRoZSBDb21taXNzaW9uIG9uIFByZXNlcnZhdGlvbiBhbmQgQWNjZXNzLCBlYWNoDQord2FzIGNvbW1pc3Npb25lZCB0byBnZW5lcmF0ZSBhIGRldGFpbGVkIHJlcXVpcmVtZW50cyBhbmFseXNpcyBmb3IgdGhlDQorcHJvamVjdCBhbmQgdGhlbiB0byBzdWJtaXQgYSBmb3JtYWwgcHJvcG9zYWwgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZQ0KK3Byb2plY3QsIHdoaWNoIGluY2x1ZGVkIGEgYnVkZ2V0IGFuZCBjb3N0cy4gVGhlIHRlcm1zIHdlcmUgdGhhdCBQT0Igd291bGQNCitwYXkgdGhlIGxvc2VyLiAgVGhlIHJlc3VsdHMgZm9yIFlhbGUgb2YgaW52b2x2aW5nIGEgdmVuZG9yIGluY2x1ZGVkOiANCiticm9hZCBpbnZvbHZlbWVudCBvZiBZYWxlIHN0YWZmIGFjcm9zcyB0aGUgYm9hcmQgYXQgYSByZWxhdGl2ZWx5IGxvdw0KK2Nvc3QsIHdoaWNoIG1heSBoYXZlIGxvbmctdGVybSBzaWduaWZpY2FuY2UgaW4gY2Fycnlpbmcgb3V0IHRoZSBwcm9qZWN0DQorKHR3ZW50eS1maXZlIHRvIHRoaXJ0eSB1bml2ZXJzaXR5IHBlb3BsZSBhcmUgZW5nYWdlZCBpbiBQT0IpOyBiZXR0ZXINCit1bmRlcnN0YW5kaW5nIG9mIHRoZSBmYWN0b3JzIHRoYXQgYWZmZWN0IGNvcnBvcmF0ZSByZXNwb25zZSB0byBtYXJrZXRzDQorZm9yIGltYWdpbmcgcHJvZHVjdHM7IGEgY29tcGV0aXRpdmUgcHJvcG9zYWw7IGFuZCBhIG1vcmUgc29waGlzdGljYXRlZA0KK3ZpZXcgb2YgdGhlIGltYWdpbmcgbWFya2V0cy4NCisNCitUaGUgbW9zdCBpbXBvcnRhbnQgZmFjdG9yIHRoYXQgZGlzdGluZ3Vpc2hlZCB0aGUgdmVuZG9ycyB1bmRlcg0KK2NvbnNpZGVyYXRpb24gd2FzIHRoZWlyIGlkZW50aWZpY2F0aW9uIHdpdGggdGhlIGN1c3RvbWVyLiAgVGhlIHNpemUgYW5kDQoraW50ZXJuYWwgY29tcGxleGl0eSBvZiB0aGUgY29tcGFueSBhbHNvIHdhcyBhbiBpbXBvcnRhbnQgZmFjdG9yLiAgUE9CIHdhcw0KK2xvb2tpbmcgYXQgbGFyZ2UgY29tcGFuaWVzIHRoYXQgaGFkIHN1YnN0YW50aWFsIHJlc291cmNlcy4gIEluIHRoZSBlbmQsDQordGhlIHByb2Nlc3MgZ2VuZXJhdGVkIGZvciBZYWxlIHR3byBjb21wZXRpdGl2ZSBwcm9wb3NhbHMsIHdpdGggWGVyb3gncw0KK3RoZSBjbGVhciB3aW5uZXIuICBXQVRFUlMgdGhlbiBkZXNjcmliZWQgdGhlIGNvbXBvbmVudHMgb2YgdGhlIHByb3Bvc2FsLA0KK3RoZSBkZXNpZ24gcHJpbmNpcGxlcywgYW5kIHNvbWUgb2YgdGhlIGNvc3RzIGVzdGltYXRlZCBmb3IgdGhlIHByb2Nlc3MuDQorDQorQ29tcG9uZW50cyBhcmUgZXNzZW50aWFsbHkgZm91cjogIGEgY29udmVyc2lvbiBzdWJzeXN0ZW0sIGENCituZXR3b3JrLWFjY2Vzc2libGUgc3RvcmFnZSBzdWJzeXN0ZW0gZm9yIDEwLDAwMCBib29rcyAoYW5kIFBPQiBleHBlY3RzDQorMjAwIHRvIDYwMCBkcGkgc3RvcmFnZSksIGJyb3dzaW5nIHN0YXRpb25zIGRpc3RyaWJ1dGVkIG9uIHRoZSBjYW1wdXMNCituZXR3b3JrLCBhbmQgbmV0d29yayBhY2Nlc3MgdG8gdGhlIGltYWdlIHByaW50ZXJzLg0KKw0KK0Ftb25nIHRoZSBkZXNpZ24gcHJpbmNpcGxlcywgUE9CIHdhbnRlZCBjb252ZXJzaW9uIGF0IHRoZSBoaWdoZXN0DQorcG9zc2libGUgcmVzb2x1dGlvbi4gIEFzc3VtaW5nIFRJRkYgZmlsZXMsIFRJRkYgZmlsZXMgd2l0aCBHcm91cCA0DQorY29tcHJlc3Npb24sIFRDUC9JUCwgYW5kIGV0aGVybmV0IG5ldHdvcmsgb24gY2FtcHVzLCBQT0Igd2FudGVkIGENCitjbGllbnQtc2VydmVyIGFwcHJvYWNoIHdpdGggaW1hZ2UgZG9jdW1lbnRzIGRpc3RyaWJ1dGVkIHRvIHRoZQ0KK3dvcmtzdGF0aW9ucyBhbmQgbWFkZSBhY2Nlc3NpYmxlIHRocm91Z2ggbmF0aXZlIHdvcmtzdGF0aW9uIGludGVyZmFjZXMNCitzdWNoIGFzIFdpbmRvd3MuICBQT0IgYWxzbyBpbnNpc3RlZCBvbiBhIHBoYXNlZCBhcHByb2FjaCB0bw0KK2ltcGxlbWVudGF0aW9uOiAgMSkgYSBzdGFuZC1hbG9uZSwgc2luZ2xlLXVzZXIsIGxvdy1jb3N0IGVudHJ5IGludG8gdGhlDQorYnVzaW5lc3Mgd2l0aCBhIHdvcmtzdGF0aW9uIGZvY3VzZWQgb24gY29udmVyc2lvbiBhbmQgYWxsb3dpbmcgUE9CIHRvDQorZXhwbG9yZSB1c2VyIGFjY2VzczsgMikgbW92ZW1lbnQgaW50byBhIGhpZ2hlci12b2x1bWUgY29udmVyc2lvbiB3aXRoDQorbmV0d29yay1hY2Nlc3NpYmxlIHN0b3JhZ2UgYW5kIG11bHRpcGxlIGFjY2VzcyBzdGF0aW9uczsgYW5kIDMpIGENCitoaWdoLXZvbHVtZSBjb252ZXJzaW9uLCBmdWxsLWNhcGFjaXR5IHN0b3JhZ2UsIGFuZCBtdWx0aXBsZSBicm93c2luZw0KK3N0YXRpb25zIGRpc3RyaWJ1dGVkIHRocm91Z2hvdXQgdGhlIGNhbXB1cy4NCisNCitUaGUgY29zdHMgcHJvcG9zZWQgZm9yIHN0YXJ0LXVwIGFzc3VtZWQgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgWWFsZSBuZXR3b3JrDQorYW5kIGl0cyB0d28gRG9jdVRlY2ggaW1hZ2UgcHJpbnRlcnMuICBPdGhlciBzdGFydC11cCBjb3N0cyBhcmUgZXN0aW1hdGVkDQorYXQgJDEgbWlsbGlvbiBvdmVyIHRoZSB0aHJlZSBwaGFzZXMuICBBdCB0aGUgZW5kIG9mIHRoZSBwcm9qZWN0LCB0aGUgYW5udWFsDQorb3BlcmF0aW5nIGNvc3RzIGVzdGltYXRlZCBwcmltYXJpbHkgZm9yIHRoZSBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUgcHJvcG9zZWQNCitjb21lIHRvIGFib3V0ICQ2MCwwMDAsIGJ1dCB0aGVzZSBleGNsdWRlIGNvc3RzIGZvciBsYWJvciBuZWVkZWQgaW4gdGhlDQorY29udmVyc2lvbiBwcm9jZXNzLCBuZXR3b3JrIGFuZCBwcmludGVyIHVzYWdlLCBhbmQgZmFjaWxpdGllcyBtYW5hZ2VtZW50Lg0KKw0KK0ZpbmFsbHksIHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBwcm9kdWNlZCBmb3IgWWFsZSBhIG1vcmUgc29waGlzdGljYXRlZA0KK3ZpZXcgb2YgdGhlIGltYWdpbmcgbWFya2V0czogIHRoZSBtYW5hZ2VtZW50IG9mIGNvbXBsZXggZG9jdW1lbnRzIGluDQoraW1hZ2UgZm9ybSBpcyBub3QgYSBwcmVzZXJ2YXRpb24gcHJvYmxlbSwgbm90IGEgbGlicmFyeSBwcm9ibGVtLCBidXQgYQ0KK2dlbmVyYWwgcHJvYmxlbSBpbiBhIGJyb2FkLCBnZW5lcmFsIGluZHVzdHJ5LiAgUHJlc2VydmF0aW9uIG1hdGVyaWFscyBhcmUNCit1c2VmdWwgZm9yIGRldmVsb3BpbmcgdGhhdCBtYXJrZXQgYmVjYXVzZSBvZiB0aGUgcXVhbGl0aWVzIG9mIHRoZQ0KK21hdGVyaWFsLiAgRm9yIGV4YW1wbGUsIG11Y2ggb2YgaXQgaXMgb3V0IG9mIGNvcHlyaWdodC4gIFRoZSByZXNvbHV0aW9uDQorb2Yga2V5IGlzc3VlcyBzdWNoIGFzIHRoZSBxdWFsaXR5IG9mIHNjYW5uaW5nIGFuZCBpbWFnZSBicm93c2luZyBhbHNvDQord2lsbCBhZmZlY3QgZGV2ZWxvcG1lbnQgb2YgdGhhdCBtYXJrZXQuDQorDQorVGhlIHRlY2hub2xvZ3kgaXMgcmVhZGlseSBhdmFpbGFibGUgYnV0IGNoYW5naW5nIHJhcGlkbHkuICBJbiB0aGlzDQorY29udGV4dCBvZiByYXBpZCBjaGFuZ2UsIHNldmVyYWwgZmFjdG9ycyBhZmZlY3QgcXVhbGl0eSBhbmQgY29zdCwgdG8NCit3aGljaCBQT0IgaW50ZW5kcyB0byBwYXkgcGFydGljdWxhciBhdHRlbnRpb24sIGZvciBleGFtcGxlLCB0aGUgdmFyaW91cw0KK2xldmVscyBvZiByZXNvbHV0aW9uIHRoYXQgY2FuIGJlIGFjaGlldmVkLiAgUE9CIGJlbGlldmVzIGl0IGNhbiBicmluZw0KK3Jlc29sdXRpb24gdXAgdG8gNjAwIGRwaSwgYnV0IGFuIGludGVycG9sYXRpb24gcHJvY2VzcyBmcm9tIDQwMCB0byA2MDAgaXMNCittb3JlIGxpa2VseS4gIFRoZSB2YXJpYXRpb24gcXVhbGl0eSBpbiBtaWNyb2ZpbG0gd2lsbCBwcm92ZSB0byBiZSBhDQoraGlnaGx5IGltcG9ydGFudCBmYWN0b3IuICBQT0IgbWF5IHJlZXhhbWluZSB0aGUgc3RhbmRhcmRzIHVzZWQgdG8gZmlsbSBpbg0KK3RoZSBmaXJzdCBwbGFjZSBieSBsb29raW5nIGF0IHRoaXMgcHJvY2VzcyBhcyBhIGZvbGxvdy1vbiB0byBtaWNyb2ZpbG1pbmcuDQorDQorT3RoZXIgaW1wb3J0YW50IGZhY3RvcnMgaW5jbHVkZTogIHRoZSB0ZWNobmlxdWVzIGF2YWlsYWJsZSB0byB0aGUNCitvcGVyYXRvciBmb3IgaGFuZGxpbmcgbWF0ZXJpYWwsIHRoZSB3YXlzIG9mIGludGVncmF0aW5nIHF1YWxpdHkgY29udHJvbA0KK2ludG8gdGhlIGRpZ2l0aXppbmcgd29yayBmbG93LCBhbmQgYSB3b3JrIGZsb3cgdGhhdCBpbmNsdWRlcyBpbmRleGluZyBhbmQNCitzdG9yYWdlLiAgUE9CJ3MgcmVxdWlyZW1lbnQgd2FzIHRvIGJlIGFibGUgdG8gZGVhbCB3aXRoIHF1YWxpdHkgY29udHJvbA0KK2F0IHRoZSBwb2ludCBvZiBzY2FubmluZy4gIFRodXMsIHRoYW5rcyB0byBYZXJveCwgUE9CIGFudGljaXBhdGVzIGhhdmluZw0KK2EgbWVjaGFuaXNtIHdoaWNoIHdpbGwgYWxsb3cgaXQgbm90IG9ubHkgdG8gc2NhbiBpbiBiYXRjaCBmb3JtLCBidXQgdG8NCityZXZpZXcgdGhlIG1hdGVyaWFsIGFzIGl0IGdvZXMgdGhyb3VnaCB0aGUgc2Nhbm5lciBhbmQgY29udHJvbCBxdWFsaXR5DQorZnJvbSB0aGUgb3V0c2V0Lg0KKw0KK1RoZSBzdGFuZGFyZHMgZm9yIG1lYXN1cmluZyBxdWFsaXR5IGFuZCBjb3N0cyBkZXBlbmQgZ3JlYXRseSBvbiB0aGUgdXNlcw0KK29mIHRoZSBtYXRlcmlhbCwgaW5jbHVkaW5nIHN1YnNlcXVlbnQgT0NSLCBzdG9yYWdlLCBwcmludGluZywgYW5kDQorYnJvd3NpbmcuICBCdXQgZXNwZWNpYWxseSBhdCBpc3N1ZSBmb3IgUE9CIGlzIHRoZSBmYWNpbGl0eSBmb3IgYnJvd3NpbmcuIA0KK1RoaXMgZmFjaWxpdHksIFdBVEVSUyBzYWlkLCBpcyBwZXJoYXBzIHRoZSB3ZWFrZXN0IGFzcGVjdCBvZiBpbWFnaW5nDQordGVjaG5vbG9neSBhbmQgdGhlIG1vc3QgaW4gbmVlZCBvZiBkZXZlbG9wbWVudC4NCisNCitBIHZhcmlldHkgb2YgZmFjdG9ycyBhZmZlY3QgdGhlIHVzYWJpbGl0eSBvZiBjb21wbGV4IGRvY3VtZW50cyBpbiBpbWFnZQ0KK2Zvcm0sIGFtb25nIHRoZW06ICAxKSB0aGUgYWJpbGl0eSBvZiB0aGUgc3lzdGVtIHRvIGhhbmRsZSB0aGUgZnVsbCByYW5nZQ0KK29mIGRvY3VtZW50IHR5cGVzLCBub3QganVzdCBtb25vZ3JhcGhzIGJ1dCBzZXJpYWxzLCBtdWx0aS1wYXJ0DQorbW9ub2dyYXBocywgYW5kIG1hbnVzY3JpcHRzOyAyKSB0aGUgbG9jYXRpb24gb2YgdGhlIGRhdGFiYXNlIG9mIHJlY29yZA0KK2ZvciBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbWFnZSBkb2N1bWVudCwgd2hpY2ggUE9CIHdhbnRzDQordG8gZW50ZXIgb25jZSBhbmQgaW4gdGhlIG1vc3QgdXNlZnVsIHBsYWNlLCB0aGUgb24tbGluZSBjYXRhbG9nOyAzKSBhDQorZG9jdW1lbnQgaWRlbnRpZmllciBmb3IgcmVmZXJlbmNpbmcgdGhlIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24gaW4gb25lDQorcGxhY2UgYW5kIHRoZSBpbWFnZXMgaW4gYW5vdGhlcjsgNCkgdGhlIHRlY2huaXF1ZSBmb3IgbWFraW5nIHRoZSBiYXNpYw0KK2ludGVybmFsIHN0cnVjdHVyZSBvZiB0aGUgZG9jdW1lbnQgYWNjZXNzaWJsZSB0byB0aGUgcmVhZGVyOyBhbmQgZmluYWxseSwNCis1KSB0aGUgcGh5c2ljYWwgcHJlc2VudGF0aW9uIG9uIHRoZSBDUlQgb2YgdGhvc2UgZG9jdW1lbnRzLiAgUE9CIGlzIHJlYWR5DQordG8gY29tcGxldGUgdGhpcyBwaGFzZSBub3cuICBPbmUgbGFzdCBkZWNpc2lvbiBpbnZvbHZlcyBkZWNpZGluZyB3aGljaA0KK21hdGVyaWFsIHRvIHNjYW4uDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0RJU0NVU1NJT04gKiBUSUZGIGZpbGVzIGNvbnN0aXR1dGUgZGUgZmFjdG8gc3RhbmRhcmQgKiBOQVJBJ3MgZXhwZXJpZW5jZQ0KK3dpdGggaW1hZ2UgY29udmVyc2lvbiBzb2Z0d2FyZSBhbmQgdGV4dCBjb252ZXJzaW9uICogUkZDIDEzMTQgKg0KK0NvbnNpZGVyYWJsZSBmbHV4IGNvbmNlcm5pbmcgYXZhaWxhYmxlIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBzb2x1dGlvbnMgKg0KK05BTCB0aHJvdWdoLXB1dCByYXRlIGR1cmluZyBzY2FubmluZyAqIFdpbmRvdyBtYW5hZ2VtZW50IHF1ZXN0aW9ucyAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0luIHRoZSBxdWVzdGlvbi1hbmQtYW5zd2VyIHBlcmlvZCB0aGF0IGZvbGxvd2VkIFdBVEVSUydzIHByZXNlbnRhdGlvbiwNCit0aGUgZm9sbG93aW5nIHBvaW50cyBlbWVyZ2VkOg0KKw0KKyAgICAgKiBaSURBUidzIHN0YXRlbWVudCBhYm91dCB1c2luZyBUSUZGIGZpbGVzIGFzIGEgc3RhbmRhcmQgbWVhbnQgZGUNCisgICAgIGZhY3RvIHN0YW5kYXJkLiAgVGhpcyBpcyB3aGF0IG1vc3QgcGVvcGxlIHVzZSBhbmQgdHlwaWNhbGx5IGV4Y2hhbmdlDQorICAgICB3aXRoIG90aGVyIGdyb3VwcywgYWNyb3NzIHBsYXRmb3Jtcywgb3IgZXZlbiBvY2Nhc2lvbmFsbHkgYWNyb3NzDQorICAgICBkaXNwbGF5IHNvZnR3YXJlLg0KKw0KKyAgICAgKiBIT0xNRVMgY29tbWVudGVkIG9uIHRoZSB1bnN1Y2Nlc3NmdWwgZXhwZXJpZW5jZSBvZiBOQVJBIGluDQorICAgICBhdHRlbXB0aW5nIHRvIHJ1biBpbWFnZS1jb252ZXJzaW9uIHNvZnR3YXJlIG9yIHRvIGV4Y2hhbmdlIGJldHdlZW4NCisgICAgIGFwcGxpY2F0aW9uczogIFdoYXQgYXJlIHN1cHBvc2VkbHkgVElGRiBmaWxlcyBnbyBpbnRvIG90aGVyIHNvZnR3YXJlDQorICAgICB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIGFibGUgdG8gYWNjZXB0IFRJRkYgYnV0IGNhbm5vdCByZWNvZ25pemUgdGhlDQorICAgICBmb3JtYXQgYW5kIGNhbm5vdCBkZWFsIHdpdGggaXQsIGFuZCB0aHVzIHJlbmRlcnMgdGhlIGV4Y2hhbmdlDQorICAgICB1c2VsZXNzLiAgUmUgdGV4dCBjb252ZXJzaW9uLCBoZSBub3RlZCB0aGUgZGlmZmVyZW50IHJlY29nbml0aW9uDQorICAgICByYXRlcyBvYnRhaW5lZCBieSBzdWJzdGl0dXRpbmcgdGhlIG1ha2UgYW5kIG1vZGVsIG9mIHNjYW5uZXJzIGluDQorICAgICBOQVJBJ3MgcmVjZW50IHRlc3Qgb2YgYW4gImludGVsbGlnZW50IiBjaGFyYWN0ZXItcmVjb2duaXRpb24gcHJvZHVjdA0KKyAgICAgZm9yIGEgbmV3IGNvbXBhbnkuICBJbiB0aGUgc2VsZWN0aW9uIG9mIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSwNCisgICAgIEhPTE1FUyBhcmd1ZWQsIHNvZnR3YXJlIG5vIGxvbmdlciBjb25zdGl0dXRlcyB0aGUgb3ZlcnJpZGluZyBmYWN0b3INCisgICAgIGl0IGRpZCB1bnRpbCBhYm91dCBhIHllYXIgYWdvOyByYXRoZXIgaXQgaXMgcGVyaGFwcyBpbXBvcnRhbnQgdG8NCisgICAgIGxvb2sgYXQgYm90aCBub3cuDQorDQorICAgICAqIERhbm55IENvaGVuIGFuZCBBbGFuIEthdHogb2YgdGhlIFVuaXZlcnNpdHkgb2YgU291dGhlcm4gQ2FsaWZvcm5pYQ0KKyAgICAgSW5mb3JtYXRpb24gU2NpZW5jZXMgSW5zdGl0dXRlIGJlZ2FuIGNpcmN1bGF0aW5nIGFzIGFuIEludGVybmV0IFJGQw0KKyAgICAgKFJGQyAxMzE0KSBhYm91dCBhIG1vbnRoIGFnbyBhIHN0YW5kYXJkIGZvciBhIFRJRkYgaW50ZXJjaGFuZ2UNCisgICAgIGZvcm1hdCBmb3IgSW50ZXJuZXQgZGlzdHJpYnV0aW9uIG9mIG1vbm9jaHJvbWUgYml0LW1hcHBlZCBpbWFnZXMsDQorICAgICB3aGljaCBMWU5DSCBzYWlkIGhlIGJlbGlldmVkIHdvdWxkIGJlIHVzZWQgYXMgYSBkZSBmYWN0byBzdGFuZGFyZC4NCisNCisgICAgICogRkxFSVNDSEhBVUVSJ3MgaW1wcmVzc2lvbiBmcm9tIGhlYXJpbmcgdGhlc2UgcmVwb3J0cyBhbmQgdGhpbmtpbmcNCisgICAgIGFib3V0IEFNJ3MgZXhwZXJpZW5jZSB3YXMgdGhhdCB0aGVyZSBpcyBjb25zaWRlcmFibGUgZmx1eCBjb25jZXJuaW5nDQorICAgICBhdmFpbGFibGUgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIHNvbHV0aW9ucy4gIEhPT1RPTiBhZ3JlZWQgYW5kDQorICAgICBjb21tZW50ZWQgYXQgdGhlIHNhbWUgdGltZSBvbiBaSURBUidzIHN0YXRlbWVudCB0aGF0IHRoZSBlcXVpcG1lbnQNCisgICAgIGVtcGxveWVkIGFmZmVjdHMgdGhlIHJlc3VsdHMgcHJvZHVjZWQuICBPbmUgY2Fubm90IGRyYXcgYSBjb21wbGV0ZQ0KKyAgICAgY29uY2x1c2lvbiBieSBzYXlpbmcgaXQgaXMgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gcGVyZm9ybSBPQ1INCisgICAgIGZyb20gc2Nhbm5pbmcgbWljcm9maWxtLCBmb3IgZXhhbXBsZSwgd2l0aCB0aGF0IGRldmljZSwgIHRoYXQgc2V0IG9mDQorICAgICBwYXJhbWV0ZXJzLCBhbmQgc3lzdGVtIHJlcXVpcmVtZW50cywgYmVjYXVzZSBudW1lcm91cyBvdGhlciBwZW9wbGUNCisgICAgIGFyZSBhY2NvbXBsaXNoaW5nIGp1c3QgdGhhdCwgdXNpbmcgb3RoZXIgY29tcG9uZW50cywgcGVyaGFwcy4gDQorICAgICBIT09UT04gb3BpbmVkIHRoYXQgYm90aCB0aGUgaGFyZHdhcmUgYW5kIHRoZSBzb2Z0d2FyZSB3ZXJlIGhpZ2hseQ0KKyAgICAgaW1wb3J0YW50LiAgTW9zdCBvZiB0aGUgcHJvYmxlbXMgZGlzY3Vzc2VkIHRvZGF5IGhhdmUgYmVlbiBzb2x2ZWQgaW4NCisgICAgIG51bWVyb3VzIGRpZmZlcmVudCB3YXlzIGJ5IG90aGVyIHBlb3BsZS4gIFRob3VnaCBpdCBpcyBnb29kIHRvIGJlDQorICAgICBjb2duaXphbnQgb2YgdmFyaW91cyBleHBlcmllbmNlcywgdGhpcyBpcyBub3QgdG8gc2F5IHRoYXQgaXQgd2lsbA0KKyAgICAgYWx3YXlzIGJlIHRodXMuDQorDQorICAgICAqIEF0IE5BTCwgdGhlIHRocm91Z2gtcHV0IHJhdGUgb2YgdGhlIHNjYW5uaW5nIHByb2Nlc3MgZm9yIHBhcGVyLA0KKyAgICAgcGFnZSBieSBwYWdlLCBwZXJmb3JtaW5nIE9DUiwgcmFuZ2VzIGZyb20gMzAwIHRvIDYwMCBwYWdlcyBwZXIgZGF5Ow0KKyAgICAgbm90IHBlcmZvcm1pbmcgT0NSIGlzIGNvbnNpZGVyYWJseSBmYXN0ZXIsIGFsdGhvdWdoIGhvdyBtdWNoIGZhc3Rlcg0KKyAgICAgaXMgbm90IGtub3duLiAgVGhpcyBpcyBmb3Igc2Nhbm5pbmcgZnJvbSBib3VuZCBib29rcywgd2hpY2ggaXMgbXVjaA0KKyAgICAgc2xvd2VyLg0KKw0KKyAgICAgKiBXQVRFUlMgY29tbWVudGVkIG9uIHdpbmRvdyBtYW5hZ2VtZW50IHF1ZXN0aW9uczogIERFQyBwcm9wb3NlZCBhbg0KKyAgICAgWC1XaW5kb3dzIHNvbHV0aW9uIHdoaWNoIHdhcyBwcm9ibGVtYXRpY2FsIGZvciB0d28gcmVhc29ucy4gIE9uZSB3YXMNCisgICAgIFBPQidzIHJlcXVpcmVtZW50IHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBpbWFnZXMgb24gdGhlIHdvcmtzdGF0aW9uDQorICAgICBhbmQgYnJpbmcgdGhlbSBkb3duIHRvIHRoZSB3b3Jrc3RhdGlvbiBpdHNlbGYgYW5kIHRoZSBvdGhlciB3YXMNCisgICAgIG5ldHdvcmsgdXNhZ2UuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK1RIT01BICogSWxsdXN0cmF0aW9uIG9mIGRlZmljaWVuY2llcyBpbiBzY2FubmluZyBhbmQgc3RvcmFnZSBwcm9jZXNzICoNCitJbWFnZSBxdWFsaXR5IGluIHRoaXMgcHJvY2VzcyAqIERpZmZlcmVudCBjb3N0cyBlbnRhaWxlZCBieSBiZXR0ZXIgaW1hZ2UNCitxdWFsaXR5ICogVGVjaG5pcXVlcyBmb3Igb3ZlcmNvbWluZyB2YXJpb3VzIGRlLWZpY2llbmNpZXM6ICBmaXhlZA0KK3RocmVzaG9sZGluZywgZHluYW1pYyB0aHJlc2hvbGRpbmcsIGRpdGhlcmluZywgaW1hZ2UgbWVyZ2UgKiBQYWdlIGVkZ2UNCitlZmZlY3RzICogICANCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorR2VvcmdlIFRIT01BLCBjaGllZiwgQ29tbXVuaWNhdGlvbnMgRW5naW5lZXJpbmcgQnJhbmNoLCBOYXRpb25hbCBMaWJyYXJ5DQorb2YgTWVkaWNpbmUgKE5MTSksIGlsbHVzdHJhdGVkIHNldmVyYWwgb2YgdGhlIGRlZmljaWVuY2llcyBkaXNjdXNzZWQgYnkNCit0aGUgcHJldmlvdXMgc3BlYWtlcnMuICBIZSBpbnRyb2R1Y2VkIHRoZSB0b3BpYyBvZiBzcGVjaWFsIHByb2JsZW1zIGJ5DQorbm90aW5nIHRoZSBhZHZhbnRhZ2VzIG9mIGVsZWN0cm9uaWMgaW1hZ2luZy4gIEZvciBleGFtcGxlLCBpdCBpcyByZWdlbmVyYWJsZQ0KK2JlY2F1c2UgaXQgaXMgYSBjb2RlZCBmaWxlLCBhbmQgcmVhbC10aW1lIHF1YWxpdHkgY29udHJvbCBpcyBwb3NzaWJsZSB3aXRoDQorZWxlY3Ryb25pYyBjYXB0dXJlLCB3aGVyZWFzIGluIHBob3RvZ3JhcGhpYyBjYXB0dXJlIGl0IGlzIG5vdC4NCisNCitPbmUgb2YgdGhlIGRpZmZpY3VsdGllcyBkaXNjdXNzZWQgaW4gdGhlIHNjYW5uaW5nIGFuZCBzdG9yYWdlIHByb2Nlc3Mgd2FzDQoraW1hZ2UgcXVhbGl0eSB3aGljaCwgd2l0aG91dCBiZWxhYm9yaW5nIHRoZSBvYnZpb3VzLCBtZWFucyBkaWZmZXJlbnQNCit0aGluZ3MgZm9yIG1hcHMsIG1lZGljYWwgWC1yYXlzLCBvciBicm9hZGNhc3QgdGVsZXZpc2lvbi4gIEluIHRoZSBjYXNlIG9mDQorZG9jdW1lbnRzLCBUSE9NQSBzYWlkLCBpbWFnZSBxdWFsaXR5IGJvaWxzIGRvd24gdG8gbGVnaWJpbGl0eSBvZiB0aGUNCit0ZXh0dWFsIHBhcnRzLCBhbmQgZmlkZWxpdHkgaW4gdGhlIGNhc2Ugb2YgZ3JheSBvciBjb2xvciBwaG90byBwcmludC10eXBlDQorbWF0ZXJpYWwuICBMZWdpYmlsaXR5IGJvaWxzIGRvd24gdG8gc2NhbiBkZW5zaXR5LCB0aGUgc3RhbmRhcmQgaW4gbW9zdA0KK2Nhc2VzIGJlaW5nIDMwMCBkcGkuICBJbmNyZWFzaW5nIHRoZSByZXNvbHV0aW9uIHdpdGggc2Nhbm5lcnMgdGhhdA0KK3BlcmZvcm0gNjAwIG9yIDEyMDAgZHBpLCBob3dldmVyLCBjb21lcyBhdCBhIGNvc3QuDQorDQorQmV0dGVyIGltYWdlIHF1YWxpdHkgZW50YWlscyBhdCBsZWFzdCBmb3VyIGRpZmZlcmVudCBraW5kcyBvZiBjb3N0czogIDEpDQorZXF1aXBtZW50IGNvc3RzLCBiZWNhdXNlIHRoZSBDQ0QgKGkuZS4sIGNoYXJnZS1jb3VwbGUgZGV2aWNlKSB3aXRoDQorZ3JlYXRlciBudW1iZXIgb2YgZWxlbWVudHMgY29zdHMgbW9yZTsgIDIpIHRpbWUgY29zdHMgdGhhdCB0cmFuc2xhdGUgdG8NCit0aGUgYWN0dWFsIGNhcHR1cmUgY29zdHMsIGJlY2F1c2UgbWFudWFsIGxhYm9yIGlzIGludm9sdmVkICh0aGUgdGltZSBpcw0KK2Fsc28gZGVwZW5kZW50IG9uIHRoZSBmYWN0IHRoYXQgbW9yZSBkYXRhIGhhcyB0byBiZSBtb3ZlZCBhcm91bmQgaW4gdGhlDQorbWFjaGluZSBpbiB0aGUgc2Nhbm5pbmcgb3IgbmV0d29yayBkZXZpY2VzIHRoYXQgcGVyZm9ybSB0aGUgc2Nhbm5pbmcgYXMNCit3ZWxsIGFzIHRoZSBzdG9yYWdlKTsgIDMpIG1lZGlhIGNvc3RzLCBiZWNhdXNlIGF0IGhpZ2ggcmVzb2x1dGlvbnMgbGFyZ2VyDQorZmlsZXMgaGF2ZSB0byBiZSBzdG9yZWQ7IGFuZCA0KSB0cmFuc21pc3Npb24gY29zdHMsIGJlY2F1c2UgdGhlcmUgaXMganVzdA0KK21vcmUgZGF0YSB0byBiZSB0cmFuc21pdHRlZC4NCisNCitCdXQgd2hpbGUgcmVzb2x1dGlvbiB0YWtlcyBjYXJlIG9mIHRoZSBpc3N1ZSBvZiBsZWdpYmlsaXR5IGluIGltYWdlDQorcXVhbGl0eSwgb3RoZXIgZGVmaWNpZW5jaWVzIGhhdmUgdG8gZG8gd2l0aCBjb250cmFzdCBhbmQgZWxlbWVudHMgb24gdGhlDQorcGFnZSBzY2FubmVkIG9yIHRoZSBpbWFnZSB0aGF0IG5lZWRlZCB0byBiZSByZW1vdmVkIG9yIGNsYXJpZmllZC4gIFRodXMsDQorVEhPTUEgcHJvY2VlZGVkIHRvIGlsbHVzdHJhdGUgdmFyaW91cyBkZWZpY2llbmNpZXMsIGhvdyB0aGV5IGFyZQ0KK21hbmlmZXN0ZWQsIGFuZCBzZXZlcmFsIHRlY2huaXF1ZXMgdG8gb3ZlcmNvbWUgdGhlbS4NCisNCitGaXhlZCB0aHJlc2hvbGRpbmcgd2FzIHRoZSBmaXJzdCB0ZWNobmlxdWUgZGVzY3JpYmVkLCBzdWl0YWJsZSBmb3INCitibGFjay1hbmQtd2hpdGUgdGV4dCwgd2hlbiB0aGUgY29udHJhc3QgZG9lcyBub3QgdmFyeSBvdmVyIHRoZSBwYWdlLiAgT25lDQorY2FuIGhhdmUgbWFueSBkaWZmZXJlbnQgdGhyZXNob2xkIGxldmVscyBpbiBzY2FubmluZyBkZXZpY2VzLiAgVGh1cywNCitUSE9NQSBvZmZlcmVkIGFuIGV4YW1wbGUgb2YgZXh0cmVtZWx5IHBvb3IgY29udHJhc3QsIHdoaWNoIHJlc3VsdGVkIGZyb20NCit0aGUgZmFjdCB0aGF0IHRoZSBzdG9jayB3YXMgYSBoZWF2eSByZWQuICBUaGlzIGlzIHRoZSBzb3J0IG9mIGltYWdlIHRoYXQNCit3aGVuIG1pY3JvZmlsbWVkIGZhaWxzIHRvIHByb3ZpZGUgYW55IGxlZ2liaWxpdHkgd2hhdHNvZXZlci4gIEZpeGVkDQordGhyZXNob2xkaW5nIGlzIHRoZSB3YXkgdG8gY2hhbmdlIHRoZSBibGFjay10by1yZWQgY29udHJhc3QgdG8gdGhlDQorZGVzaXJlZCBibGFjay10by13aGl0ZSBjb250cmFzdC4NCisNCitPdGhlciBleGFtcGxlcyBpbmNsdWRlZCBtYXRlcmlhbCB0aGF0IGhhZCBiZWVuIGJyb3duZWQgb3IgeWVsbG93ZWQgYnkNCithZ2UuICBUaGlzIHdhcyBhbHNvIGEgY2FzZSBvZiBjb250cmFzdCBkZWZpY2llbmN5LCBhbmQgY29ycmVjdGlvbiB3YXMNCitkb25lIGJ5IGZpeGVkIHRocmVzaG9sZGluZy4gIEEgZmluYWwgZXhhbXBsZSBib2lscyBkb3duIHRvIHRoZSBzYW1lDQordGhpbmcsIHNsaWdodCB2YXJpYWJpbGl0eSwgYnV0IGl0IGlzIG5vdCBzaWduaWZpY2FudC4gIEZpeGVkIHRocmVzaG9sZGluZw0KK3NvbHZlcyB0aGlzIHByb2JsZW0gYXMgd2VsbC4gIFRoZSBtaWNyb2ZpbG0gZXF1aXZhbGVudCBpcyBjZXJ0YWlubHkgbGVnaWJsZSwNCitidXQgaXQgY29tZXMgd2l0aCBkYXJrIGFyZWFzLiAgVGhvdWdoIFRIT01BIGRpZCBub3QgaGF2ZSBhIHNsaWRlIG9mIHRoZQ0KK21pY3JvZmlsbSBpbiB0aGlzIGNhc2UsIGhlIGRpZCBzaG93IHRoZSByZXByb2R1Y2VkIGVsZWN0cm9uaWMgaW1hZ2UuDQorDQorV2hlbiBvbmUgaGFzIHZhcmlhYmxlIGNvbnRyYXN0IG92ZXIgYSBwYWdlIG9yIHRoZSBsaWdodGluZyBvdmVyIHRoZSBwYWdlDQorYXJlYSB2YXJpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2Ugd2hlcmUgYSBib3VuZCB2b2x1bWUgaGFzIGxpZ2h0DQorc2hpbmluZyBvbiBpdCwgdGhlIGltYWdlIG11c3QgYmUgcHJvY2Vzc2VkIGJ5IGEgZHluYW1pYyB0aHJlc2hvbGRpbmcNCitzY2hlbWUuICBPbmUgc2NoZW1lLCBkeW5hbWljIGF2ZXJhZ2luZywgYWxsb3dzIHRoZSB0aHJlc2hvbGQgbGV2ZWwgbm90IHRvDQorYmUgZml4ZWQgYnV0IHRvIGJlIHJlY29tcHV0ZWQgZm9yIGV2ZXJ5IHBpeGVsIGZyb20gdGhlIG5laWdoYm9yaW5nDQorY2hhcmFjdGVyaXN0aWNzLiAgVGhlIG5laWdoYm9ycyBvZiBhIHBpeGVsIGRldGVybWluZSB3aGVyZSB0aGUgdGhyZXNob2xkDQorc2hvdWxkIGJlIHNldCBmb3IgdGhhdCBwaXhlbC4NCisNCitUSE9NQSBzaG93ZWQgYW4gZXhhbXBsZSBvZiBhIHBhZ2UgdGhhdCBoYWQgYmVlbiBtYWRlIGRlZmljaWVudCBieSBhDQordmFyaWV0eSBvZiB0ZWNobmlxdWVzLCBpbmNsdWRpbmcgYSBidXJuIG1hcmssIGNvZmZlZSBzdGFpbnMsIGFuZCBhIHllbGxvdw0KK21hcmtlci4gIEFwcGxpY2F0aW9uIG9mIGEgZml4ZWQtdGhyZXNob2xkaW5nIHNjaGVtZSwgVEhPTUEgYXJndWVkLCBtaWdodA0KK3Rha2UgY2FyZSBvZiBzZXZlcmFsIGRlZmljaWVuY2llcyBvbiB0aGUgcGFnZSBidXQgbm90IGFsbCBvZiB0aGVtLiANCitQZXJmb3JtaW5nIHRoZSBjYWxjdWxhdGlvbiBmb3IgYSBkeW5hbWljIHRocmVzaG9sZCBzZXR0aW5nLCBob3dldmVyLA0KK3JlbW92ZXMgbW9zdCBvZiB0aGUgZGVmaWNpZW5jaWVzIHNvIHRoYXQgYXQgbGVhc3QgdGhlIHRleHQgaXMgbGVnaWJsZS4NCisNCitBbm90aGVyIHByb2JsZW0gaXMgcmVwcmVzZW50aW5nIGEgZ3JheSBsZXZlbCB3aXRoIGJsYWNrLWFuZC13aGl0ZSBwaXhlbHMNCitieSBhIHByb2Nlc3Mga25vd24gYXMgZGl0aGVyaW5nIG9yIGVsZWN0cm9uaWMgc2NyZWVuaW5nLiAgQnV0IGRpdGhlcmluZw0KK2RvZXMgbm90IHByb3ZpZGUgZ29vZCBpbWFnZSBxdWFsaXR5IGZvciBwdXJlIGJsYWNrLWFuZC13aGl0ZSB0ZXh0dWFsDQorbWF0ZXJpYWwuICBUSE9NQSBpbGx1c3RyYXRlZCB0aGlzIHBvaW50IHdpdGggZXhhbXBsZXMuIEFsdGhvdWdoIGl0cw0KK3N1aXRhYmlsaXR5IGZvciBwaG90b3ByaW50IGlzIHRoZSByZWFzb24gZm9yIGVsZWN0cm9uaWMgc2NyZWVuaW5nIG9yDQorZGl0aGVyaW5nLCBpdCBjYW5ub3QgYmUgdXNlZCBmb3IgZXZlcnkgY29tcG91bmQgaW1hZ2UuICBJbiB0aGUgZG9jdW1lbnQNCit0aGF0IHdhcyBkaXN0cmlidXRlZCBieSBDWFAsIFRIT01BIG5vdGljZWQgdGhhdCB0aGUgZGl0aGVyZWQgaW1hZ2Ugb2YgdGhlDQorSUVFRSB0ZXN0IGNoYXJ0IGV2aW5jZWQgc29tZSBkZXRlcmlvcmF0aW9uIGluIHRoZSB0ZXh0LiAgSGUgcHJlc2VudGVkIGFuDQorZXh0cmVtZSBleGFtcGxlIG9mIGRldGVyaW9yYXRpb24gaW4gdGhlIHRleHQgaW4gd2hpY2ggY29tcG91bmRlZA0KK2RvY3VtZW50cyBoYWQgdG8gYmUgc2V0IHJpZ2h0IGJ5IG90aGVyIHRlY2huaXF1ZXMuICBUaGUgdGVjaG5pcXVlDQoraWxsdXN0cmF0ZWQgYnkgdGhlIHByZXNlbnQgZXhhbXBsZSB3YXMgYW4gaW1hZ2UgbWVyZ2UgaW4gd2hpY2ggdGhlIHBhZ2UNCitpcyBzY2FubmVkIHR3aWNlIGFuZCB0aGUgc2V0dGluZ3MgZ28gZnJvbSBmaXhlZCB0aHJlc2hvbGQgdG8gdGhlDQorZGl0aGVyaW5nIG1hdHJpeDsgdGhlIHJlc3VsdGluZyBpbWFnZXMgYXJlIG1lcmdlZCB0byBnaXZlIHRoZSBiZXN0DQorcmVzdWx0cyB3aXRoIGVhY2ggdGVjaG5pcXVlLg0KKw0KK1RIT01BIGlsbHVzdHJhdGVkIGhvdyBkaXRoZXJpbmcgaXMgYWxzbyB1c2VkIGluIG5vbnBob3RvZ3JhcGhpYyBvcg0KK25vbnByaW50IG1hdGVyaWFscyB3aXRoIGFuIGV4YW1wbGUgb2YgYSBncmF5aXNoIHBhZ2UgZnJvbSBhIG1lZGljYWwgdGV4dCwNCit3aGljaCB3YXMgcmVwcm9kdWNlZCB0byBzaG93IGFsbCBvZiB0aGUgZ3JheSB0aGF0IGFwcGVhcmVkIGluIHRoZQ0KK29yaWdpbmFsLiAgRGl0aGVyaW5nIHByb3ZpZGVkIGEgcmVwcm9kdWN0aW9uIG9mIGFsbCB0aGUgZ3JheSBpbiB0aGUNCitvcmlnaW5hbCBvZiBhbm90aGVyIGV4YW1wbGUgZnJvbSB0aGUgc2FtZSB0ZXh0Lg0KKw0KK1RIT01BIGZpbmFsbHkgaWxsdXN0cmF0ZWQgdGhlIHByb2JsZW0gb2YgYm9yZGVyaW5nLCBvciBwYWdlLWVkZ2UsDQorZWZmZWN0cy4gIEJvb2tzIGFuZCBib3VuZCB2b2x1bWVzIHRoYXQgYXJlIHBsYWNlZCBvbiBhIHBob3RvY29weSBtYWNoaW5lDQorb3IgYSBzY2FubmVyIHByb2R1Y2UgcGFnZS1lZGdlIGVmZmVjdHMgdGhhdCBhcmUgdW5kZXNpcmFibGUgZm9yIHR3bw0KK3JlYXNvbnM6ICAxKSB0aGUgYWVzdGhldGljcyBvZiB0aGUgaW1hZ2U7IGFmdGVyIGFsbCwgaWYgdGhlIGltYWdlIGlzIHRvDQorYmUgcHJlc2VydmVkLCBvbmUgZG9lcyBub3QgbmVjZXNzYXJpbHkgd2FudCB0byBrZWVwIGFsbCBvZiBpdHMNCitkZWZpY2llbmNpZXM7IDIpIGNvbXByZXNzaW9uICh3aXRoIHRoZSBib3JkZXJpbmcgcHJvYmxlbSBUSE9NQQ0KK2lsbHVzdHJhdGVkLCB0aGUgY29tcHJlc3Npb24gcmF0aW8gZGV0ZXJpb3JhdGVkIHRyZW1lbmRvdXNseSkuICBPbmUgd2F5DQordG8gZWxpbWluYXRlIHRoaXMgbW9yZSBzZXJpb3VzIHByb2JsZW0gaXMgdG8gaGF2ZSB0aGUgb3BlcmF0b3IgYXQgdGhlDQorcG9pbnQgb2Ygc2Nhbm5pbmcgd2luZG93IHRoZSBwYXJ0IG9mIHRoZSBpbWFnZSB0aGF0IGlzIGRlc2lyYWJsZSBhbmQNCithdXRvbWF0aWNhbGx5IHR1cm4gYWxsIG9mIHRoZSBwaXhlbHMgb3V0IG9mIHRoYXQgcGljdHVyZSB0byB3aGl0ZS4gDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0ZMRUlTQ0hIQVVFUiAqIEFNJ3MgZXhwZXJpZW5jZSB3aXRoIHNjYW5uaW5nIGJvdW5kIG1hdGVyaWFscyAqIERpdGhlcmluZw0KKyoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorQ2FybCBGTEVJU0NISEFVRVIsIGNvb3JkaW5hdG9yLCBBbWVyaWNhbiBNZW1vcnksIExpYnJhcnkgb2YgQ29uZ3Jlc3MsDQorcmVwb3J0ZWQgQU0ncyBleHBlcmllbmNlIHdpdGggc2Nhbm5pbmcgYm91bmQgbWF0ZXJpYWxzLCB3aGljaCBoZSBsaWtlbmVkDQordG8gdGhlIHByb2JsZW1zIGludm9sdmVkIGluIHVzaW5nIHBob3RvY29weWluZyBtYWNoaW5lcy4gIFZlcnkgZmV3DQorZGV2aWNlcyBpbiB0aGUgaW5kdXN0cnkgb2ZmZXIgYm9vay1lZGdlIHNjYW5uaW5nLCBsZXQgYWxvbmUgYm9vayBjcmFkbGVzLiANCitUaGUgcHJvYmxlbSBtYXkgYmUgdW5zb2x2YWJsZSwgRkxFSVNDSEhBVUVSIHNhaWQsIGJlY2F1c2UgYSBsYXJnZSBlbm91Z2gNCittYXJrZXQgZG9lcyBub3QgZXhpc3QgZm9yIGEgcHJlc2VydmF0aW9uLXF1YWxpdHkgc2Nhbm5lci4gIEFNIGlzIHVzaW5nIGENCitLdXJ6d2VpbCBzY2FubmVyLCB3aGljaCBpcyBhIGJvb2stZWRnZSBzY2FubmVyIG5vdyBzb2xkIGJ5IFhlcm94Lg0KKw0KK0Rldm90aW5nIHRoZSByZW1haW5kZXIgb2YgaGlzIGJyaWVmIHByZXNlbnRhdGlvbiB0byBkaXRoZXJpbmcsDQorRkxFSVNDSEhBVUVSIHJlbGF0ZWQgQU0ncyBleHBlcmllbmNlIHdpdGggYSBjb250cmFjdG9yIHdobyB3YXMgdXNpbmcNCit1bnNvcGhpc3RpY2F0ZWQgZXF1aXBtZW50IGFuZCBzb2Z0d2FyZSB0byByZWR1Y2UgbW9pcmUgcGF0dGVybnMgZnJvbQ0KK3ByaW50ZWQgaGFsZnRvbmVzLiAgQU0gdG9vayB0aGUgc2FtZSBpbWFnZSBhbmQgdXNlZCB0aGUgZGl0aGVyaW5nDQorYWxnb3JpdGhtIHRoYXQgZm9ybXMgcGFydCBvZiB0aGUgc2FtZSBLdXJ6d2VpbCBYZXJveCBzY2FubmVyOyBpdA0KK2Rpc2d1aXNlZCBtb2lyZSBwYXR0ZXJucyBtdWNoIG1vcmUgZWZmZWN0aXZlbHkuDQorDQorRkxFSVNDSEhBVUVSIGFsc28gb2JzZXJ2ZWQgdGhhdCBkaXRoZXJpbmcgcHJvZHVjZXMgYSBiaW5hcnkgZmlsZSB3aGljaCBpcw0KK3VzZWZ1bCBmb3IgbnVtZXJvdXMgcHVycG9zZXMsIGZvciBleGFtcGxlLCBwcmludGluZyBpdCBvbiBhIGxhc2VyIHByaW50ZXINCit3aXRob3V0IGhhdmluZyB0byAicmUtaGFsZnRvbmUiIGl0LiAgQnV0IGl0IHRlbmRzIHRvIGRlZmVhdCBlZmZpY2llbnQNCitjb21wcmVzc2lvbiwgYmVjYXVzZSB0aGUgdmVyeSB0aGluZyB0aGF0IGRpdGhlcnMgdG8gcmVkdWNlIG1vaXJlIHBhdHRlcm5zDQorYWxzbyB0ZW5kcyB0byB3b3JrIGFnYWluc3QgY29tcHJlc3Npb24gc2NoZW1lcy4gIEFNIHRob3VnaHQgdGhlDQorZGlmZmVyZW5jZSBpbiBpbWFnZSBxdWFsaXR5IHdhcyB3b3J0aCBpdC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorRElTQ1VTU0lPTiAqIFJlbGF0aXZlIHVzZSBhcyBhIGNyaXRlcmlvbiBmb3IgUE9CJ3Mgc2VsZWN0aW9uIG9mIGJvb2tzIHRvDQorYmUgY29udmVydGVkIGludG8gZGlnaXRhbCBmb3JtICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRHVyaW5nIHRoZSBkaXNjdXNzaW9uIHBlcmlvZCwgV0FURVJTIG5vdGVkIHRoYXQgb25lIG9mIHRoZSBjcml0ZXJpYSBmb3INCitzZWxlY3RpbmcgYm9va3MgYW1vbmcgdGhlIDEwLDAwMCB0byBiZSBjb252ZXJ0ZWQgaW50byBkaWdpdGFsIGltYWdlIGZvcm0NCit3b3VsZCBiZSBob3cgbXVjaCByZWxhdGl2ZSB1c2UgdGhleSB3b3VsZCByZWNlaXZlLS1hIHN1YmplY3Qgc3RpbGwNCityZXF1aXJpbmcgZXZhbHVhdGlvbi4gIFRoZSBjaGFsbGVuZ2Ugd2lsbCBiZSB0byB1bmRlcnN0YW5kIHdoZXRoZXINCitjb2hlcmVudCBib2RpZXMgb2YgbWF0ZXJpYWwgd2lsbCBpbmNyZWFzZSB1c2FnZSBvciB3aGV0aGVyIFBPQiBzaG91bGQNCitzZWVrIG1hdGVyaWFsIHRoYXQgaXMgYmVpbmcgdXNlZCwgc2NhbiB0aGF0LCBhbmQgbWFrZSBpdCBtb3JlIGFjY2Vzc2libGUuIA0KK1BPQiBtaWdodCBkZWNpZGUgdG8gZGlnaXRpemUgbWF0ZXJpYWxzIHRoYXQgYXJlIGFscmVhZHkgaGVhdmlseSB1c2VkLCBpbg0KK29yZGVyIHRvIG1ha2UgdGhlbSBtb3JlIGFjY2Vzc2libGUgYW5kIGRlY3JlYXNlIHdlYXIgb24gdGhlbS4gIEFub3RoZXINCithcHByb2FjaCB3b3VsZCBiZSB0byBwcm92aWRlIGEgbGFyZ2UgYm9keSBvZiBpbnRlbGxlY3R1YWxseSBjb2hlcmVudA0KK21hdGVyaWFsIHRoYXQgbWF5IGJlIHVzZWQgbW9yZSBpbiBkaWdpdGFsIGZvcm0gdGhhbiBpdCBpcyBjdXJyZW50bHkgdXNlZA0KK2luIG1pY3JvZmlsbS4gIFBPQiB3b3VsZCBzZWVrIG1hdGVyaWFsIHRoYXQgd2FzIG91dCBvZiBjb3B5cmlnaHQuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0JBUk9OQVMgKiBPcmlnaW4gYW5kIHNjb3BlIG9mIEFJSU0gKiBUeXBlcyBvZiBkb2N1bWVudHMgcHJvZHVjZWQgaW4NCitBSUlNJ3Mgc3RhbmRhcmRzIHByb2dyYW0gKiBEb21haW4gb2YgQUlJTSdzIHN0YW5kYXJkaXphdGlvbiB3b3JrICogQUlJTSdzDQorc3RydWN0dXJlICogVEMgMTcxIGFuZCBNUzIzICogRWxlY3Ryb25pYyBpbWFnZSBtYW5hZ2VtZW50IHN0YW5kYXJkcyAqDQorQ2F0ZWdvcmllcyBvZiBFSU0gc3RhbmRhcmRpemF0aW9uIHdoZXJlIEFJSU0gc3RhbmRhcmRzIGFyZSBiZWluZw0KK2RldmVsb3BlZCAqICANCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorSmVhbiBCQVJPTkFTLCBzZW5pb3IgbWFuYWdlciwgRGVwYXJ0bWVudCBvZiBTdGFuZGFyZHMgYW5kIFRlY2hub2xvZ3ksDQorQXNzb2NpYXRpb24gZm9yIEluZm9ybWF0aW9uIGFuZCBJbWFnZSBNYW5hZ2VtZW50IChBSUlNKSwgZGVzY3JpYmVkIHRoZQ0KK25vdC1mb3ItcHJvZml0IGFzc29jaWF0aW9uIGFuZCB0aGUgbmF0aW9uYWwgYW5kIGludGVybmF0aW9uYWwgcHJvZ3JhbXMNCitmb3Igc3RhbmRhcmRpemF0aW9uIGluIHdoaWNoIEFJSU0gaXMgYWN0aXZlLg0KKw0KK0FjY3JlZGl0ZWQgZm9yIHR3ZW50eS1maXZlIHllYXJzIGFzIHRoZSBuYXRpb24ncyBzdGFuZGFyZHMgZGV2ZWxvcG1lbnQNCitvcmdhbml6YXRpb24gZm9yIGRvY3VtZW50IGltYWdlIG1hbmFnZW1lbnQsIEFJSU0gYmVnYW4gbGlmZSBpbiBhIGxpYnJhcnkNCitjb21tdW5pdHkgZGV2ZWxvcGluZyBtaWNyb2ZpbG0gc3RhbmRhcmRzLiAgVG9kYXkgdGhlIGFzc29jaWF0aW9uDQorbWFpbnRhaW5zIGJvdGggaXRzIGxpYnJhcnkgYW5kIGJ1c2luZXNzLWltYWdlIG1hbmFnZW1lbnQgc3RhbmRhcmRpemF0aW9uDQorYWN0aXZpdGllcy0tYW5kIGhhcyBtb3ZlZCBpbnRvIGVsZWN0cm9uaWMgaW1hZ2UtbWFuYWdlbWVudA0KK3N0YW5kYXJkaXphdGlvbiAoRUlNKS4NCisNCitCQVJPTkFTIGRlZmluZWQgdGhlIHByb2dyYW0ncyBzY29wZS4gIEFJSU0gZGVhbHMgd2l0aDogIDEpIHRoZQ0KK3Rlcm1pbm9sb2d5IG9mIHN0YW5kYXJkcyBhbmQgb2YgdGhlIHRlY2hub2xvZ3kgaXQgdXNlczsgMikgbWV0aG9kcyBvZg0KK21lYXN1cmVtZW50IGZvciB0aGUgc3lzdGVtcywgYXMgd2VsbCBhcyBxdWFsaXR5OyAzKSBtZXRob2RvbG9naWVzIGZvcg0KK3VzZXJzIHRvIGV2YWx1YXRlIGFuZCBtZWFzdXJlIHF1YWxpdHk7IDQpIHRoZSBmZWF0dXJlcyBvZiBhcHBhcmF0dXMgdXNlZA0KK3RvIG1hbmFnZSBhbmQgZWRpdCBpbWFnZXM7IGFuZCA1KSB0aGUgcHJvY2VkdXJlcyB1c2VkIHRvIG1hbmFnZSBpbWFnZXMuDQorDQorQkFST05BUyBub3RlZCB0aGF0IHRocmVlIHR5cGVzIG9mIGRvY3VtZW50cyBhcmUgcHJvZHVjZWQgaW4gdGhlIEFJSU0NCitzdGFuZGFyZHMgcHJvZ3JhbTogIHRoZSBmaXJzdCB0d28sIGFjY3JlZGl0ZWQgYnkgdGhlIEFtZXJpY2FuIE5hdGlvbmFsDQorU3RhbmRhcmRzIEluc3RpdHV0ZSAoQU5TSSksIGFyZSBzdGFuZGFyZHMgYW5kIHN0YW5kYXJkIHJlY29tbWVuZGVkDQorcHJhY3RpY2VzLiAgUmVjb21tZW5kZWQgcHJhY3RpY2VzIGRpZmZlciBmcm9tIHN0YW5kYXJkcyBpbiB0aGF0IHRoZXkNCitjb250YWluIG1vcmUgdHV0b3JpYWwgaW5mb3JtYXRpb24uICBBIHRlY2huaWNhbCByZXBvcnQgaXMgbm90IGFuIEFOU0kNCitzdGFuZGFyZC4gIEJlY2F1c2UgQUlJTSdzIHBvbGljaWVzIGFuZCBwcm9jZWR1cmVzIGZvciBkZXZlbG9waW5nDQorc3RhbmRhcmRzIGFyZSBhcHByb3ZlZCBieSBBTlNJLCBpdHMgc3RhbmRhcmRzIGFyZSBsYWJlbGVkIEFOU0kvQUlJTSwNCitmb2xsb3dlZCBieSB0aGUgbnVtYmVyIGFuZCB0aXRsZSBvZiB0aGUgc3RhbmRhcmQuDQorDQorQkFST05BUyB0aGVuIGlsbHVzdHJhdGVkIHRoZSBkb21haW4gb2YgQUlJTSdzIHN0YW5kYXJkaXphdGlvbiB3b3JrLiAgRm9yDQorZXhhbXBsZSwgQUlJTSBpcyB0aGUgYWRtaW5pc3RyYXRvciBvZiB0aGUgVS5TLiBUZWNobmljYWwgQWR2aXNvcnkgR3JvdXANCisoVEFHKSB0byB0aGUgSW50ZXJuYXRpb25hbCBTdGFuZGFyZHMgT3JnYW5pemF0aW9uJ3MgKElTTykgdGVjaG5pY2FsDQorY29tbWl0dGVlLCBUQyBsN2wgTWljcm9ncmFwaGljcyBhbmQgT3B0aWNhbCBNZW1vcmllcyBmb3IgRG9jdW1lbnQgYW5kDQorSW1hZ2UgUmVjb3JkaW5nLCBTdG9yYWdlLCBhbmQgVXNlLiAgQUlJTSBvZmZpY2lhbGx5IHdvcmtzIHRocm91Z2ggQU5TSSBpbg0KK3RoZSBpbnRlcm5hdGlvbmFsIHN0YW5kYXJkaXphdGlvbiBwcm9jZXNzLg0KKw0KK0JBUk9OQVMgZGVzY3JpYmVkIEFJSU0ncyBzdHJ1Y3R1cmUsIGluY2x1ZGluZyBpdHMgYm9hcmQgb2YgZGlyZWN0b3JzLCBpdHMNCitzdGFuZGFyZHMgYm9hcmQgb2YgdHdlbHZlIGluZGl2aWR1YWxzIGFjdGl2ZSBpbiB0aGUgaW1hZ2UtbWFuYWdlbWVudA0KK2luZHVzdHJ5LCBpdHMgc3RyYXRlZ2ljIHBsYW5uaW5nIGFuZCBsZWdhbCBhZG1pc3NpYmlsaXR5IHRhc2sgZm9yY2VzLCBhbmQNCitpdHMgTmF0aW9uYWwgU3RhbmRhcmRzIENvdW5jaWwsIHdoaWNoIGlzIGNvbXByaXNlZCBvZiB0aGUgbWVtYmVycyBvZiBhDQorbnVtYmVyIG9mIG9yZ2FuaXphdGlvbnMgd2hvIHZvdGUgb24gZXZlcnkgQUlJTSBzdGFuZGFyZCBiZWZvcmUgaXQgaXMNCitwdWJsaXNoZWQuICBCQVJPTkFTIHBvaW50ZWQgb3V0IHRoYXQgQUlJTSdzIGxpYWlzb25zIGRlYWwgd2l0aCBudW1lcm91cw0KK290aGVyIHN0YW5kYXJkcyBkZXZlbG9wZXJzLCBpbmNsdWRpbmcgdGhlIG9wdGljYWwgZGlzayBjb21tdW5pdHksIG9mZmljZQ0KK2FuZCBwdWJsaXNoaW5nIHN5c3RlbXMsIGltYWdlLWNvZGVzLWFuZC1jaGFyYWN0ZXIgc2V0IGNvbW1pdHRlZXMsIGFuZCB0aGUNCitOYXRpb25hbCBJbmZvcm1hdGlvbiBTdGFuZGFyZHMgT3JnYW5pemF0aW9uIChOSVNPKS4NCisNCitCQVJPTkFTIGlsbHVzdHJhdGVkIHRoZSBwcm9jZWR1cmVzIG9mIFRDIGw3bCwgd2hpY2ggY292ZXJzIGFsbCBhc3BlY3RzIG9mDQoraW1hZ2UgbWFuYWdlbWVudC4gIFdoZW4gQUlJTSdzIG5hdGlvbmFsIHByb2dyYW0gaGFzIGNvbmNlcHR1YWxpemVkIGEgbmV3DQorcHJvamVjdCwgaXQgaXMgdXN1YWxseSBzdWJtaXR0ZWQgdG8gdGhlIGludGVybmF0aW9uYWwgbGV2ZWwsIHNvIHRoYXQgdGhlDQorbWVtYmVyIGNvdW50cmllcyBvZiBUQyBsN2wgY2FuIHNpbXVsdGFuZW91c2x5IHdvcmsgb24gdGhlIGRldmVsb3BtZW50IG9mDQordGhlIHN0YW5kYXJkIG9yIHRoZSB0ZWNobmljYWwgcmVwb3J0LiAgQkFST05BUyBhbHNvIGlsbHVzdHJhdGVkIGEgY2xhc3NpYw0KK21pY3JvZmlsbSBzdGFuZGFyZCwgTVMyMywgd2hpY2ggZGVhbHMgd2l0aCBudW1lcm91cyBpbWFnaW5nIGNvbmNlcHRzIHRoYXQNCithcHBseSB0byBlbGVjdHJvbmljIGltYWdpbmcuICBPcmlnaW5hbGx5IGRldmVsb3BlZCBpbiB0aGUgbDk3MHMsIHJldmlzZWQNCitpbiB0aGUgbDk4MHMsIGFuZCByZXZpc2VkIGFnYWluIGluIGw5OTEsIHRoaXMgc3RhbmRhcmQgaXMgc2NoZWR1bGVkIGZvcg0KK2Fub3RoZXIgcmV2aXNpb24uICBNUzIzIGlzIGFuIGFjdGl2ZSBzdGFuZGFyZCB3aGVyZWJ5IHVzZXJzIG1heSBwcm9wb3NlDQorbmV3IGRlbnNpdHkgcmFuZ2VzIGFuZCBuZXcgbWV0aG9kcyBvZiBldmFsdWF0aW5nIGZpbG0gaW1hZ2VzIGluIHRoZQ0KK3N0YW5kYXJkJ3MgcmV2aXNpb24uDQorDQorQkFST05BUyBkZXRhaWxlZCBzZXZlcmFsIGVsZWN0cm9uaWMgaW1hZ2UtbWFuYWdlbWVudCBzdGFuZGFyZHMsIGZvcg0KK2luc3RhbmNlLCBBTlNJL0FJSU0gTVM0NCwgYSBxdWFsaXR5LWNvbnRyb2wgZ3VpZGVsaW5lIGZvciBzY2FubmluZyA4LjUiDQorYnkgMTEiIGJsYWNrLWFuZC13aGl0ZSBvZmZpY2UgZG9jdW1lbnRzLiAgVGhpcyBzdGFuZGFyZCBpcyB1c2VkIHdpdGggdGhlDQorSUVFRSBmYXggaW1hZ2UtLWEgY29udGludW91cyB0b25lIHBob3RvZ3JhcGhpYyBpbWFnZSB3aXRoIGdyYXkgc2NhbGVzLA0KK3RleHQsIGFuZCBzZXZlcmFsIGNvbnRpbnVvdXMgdG9uZSBwaWN0dXJlcy0tYW5kIEFJSU0gdGVzdCB0YXJnZXQgbnVtYmVyDQorMiwgYSByZXByZXNlbnRhdGl2ZSBkb2N1bWVudCB1c2VkIGluIG9mZmljZSBkb2N1bWVudCBtYW5hZ2VtZW50Lg0KKw0KK0JBUk9OQVMgbmV4dCBvdXRsaW5lZCB0aGUgZm91ciBjYXRlZ29yaWVzIG9mIEVJTSBzdGFuZGFyZGl6YXRpb24gaW4gd2hpY2gNCitBSUlNIHN0YW5kYXJkcyBhcmUgYmVpbmcgZGV2ZWxvcGVkOiAgdHJhbnNmZXIgYW5kIHJldHJpZXZhbCwgZXZhbHVhdGlvbiwNCitvcHRpY2FsIGRpc2MgYW5kIGRvY3VtZW50IHNjYW5uaW5nIGFwcGxpY2F0aW9ucywgYW5kIGRlc2lnbiBhbmQNCitjb252ZXJzaW9uIG9mIGRvY3VtZW50cy4gIFNoZSBkZXRhaWxlZCBzZXZlcmFsIG9mIHRoZSBtYWluIHByb2plY3RzIG9mDQorZWFjaDogIDEpIGluIHRoZSBjYXRlZ29yeSBvZiBpbWFnZSB0cmFuc2ZlciBhbmQgcmV0cmlldmFsLCBhIGJpLWxldmVsDQoraW1hZ2UgdHJhbnNmZXIgZm9ybWF0LCBBTlNJL0FJSU0gTVM1Mywgd2hpY2ggaXMgYSBwcm9wb3NlZCBzdGFuZGFyZCB0aGF0DQorZGVzY3JpYmVzIGEgZmlsZSBoZWFkZXIgZm9yIGltYWdlIHRyYW5zZmVyIGJldHdlZW4gdW5saWtlIHN5c3RlbXMgd2hlbg0KK3RoZSBpbWFnZXMgYXJlIGNvbXByZXNzZWQgdXNpbmcgRzMgYW5kIEc0IGNvbXByZXNzaW9uOyAyKSB0aGUgY2F0ZWdvcnkgb2YNCitpbWFnZSBldmFsdWF0aW9uLCB3aGljaCBpbmNsdWRlcyB0aGUgQUlJTS1wcm9wb3NlZCBUUjI2IHR1dG9yaWFsIG9uIGltYWdlDQorcmVzb2x1dGlvbiAodGhpcyB0ZWNobmljYWwgcmVwb3J0IHdpbGwgdHJlYXQgdGhlIGRpZmZlcmVuY2VzIGFuZA0KK3NpbWlsYXJpdGllcyBiZXR3ZWVuIGNsYXNzaWNhbCBvciBwaG90b2dyYXBoaWMgYW5kIGVsZWN0cm9uaWMgaW1hZ2luZyk7DQorMykgZGVzaWduIGFuZCBjb252ZXJzaW9uLCB3aGljaCBpbmNsdWRlcyBhIHByb3Bvc2VkIHRlY2huaWNhbCByZXBvcnQNCitjYWxsZWQgIkZvcm1zIERlc2lnbiBPcHRpbWl6YXRpb24gZm9yIEVJTSIgKHRoaXMgcmVwb3J0IGNvbnNpZGVycyBob3cNCitnZW5lcmFsLXB1cnBvc2UgYnVzaW5lc3MgZm9ybXMgY2FuIGJlIGJlc3QgZGVzaWduZWQgc28gdGhhdCBzY2FubmluZyBpcw0KK29wdGltaXplZDsgcmVwcm9ncmFwaGljIGNoYXJhY3RlcmlzdGljcyBzdWNoIGFzIHR5cGUsIHJ1bGVzLCBiYWNrZ3JvdW5kLA0KK3RpbnQsIGFuZCBjb2xvciB3aWxsIGxpa2V3aXNlIGJlIHRyZWF0ZWQgaW4gdGhlIHRlY2huaWNhbCByZXBvcnQpOyA0KQ0KK2Rpc2sgYW5kIGRvY3VtZW50IHNjYW5uaW5nIGFwcGxpY2F0aW9ucyBpbmNsdWRlcyBhIHByb2plY3QgYSkgb24gcGxhbm5pbmcNCitwbGF0dGVycyBhbmQgZGlzayBtYW5hZ2VtZW50LCBiKSBvbiBnZW5lcmF0aW5nIGFuIGFwcGxpY2F0aW9uIHByb2ZpbGUgZm9yDQorRUlNIHdoZW4gaW1hZ2VzIGFyZSBzdG9yZWQgYW5kIGRpc3RyaWJ1dGVkIG9uIENELVJPTSwgYW5kIGMpIG9uDQorZXZhbHVhdGluZyBTQ1NJMiwgYW5kIGhvdyBhIGNvbW1vbiBjb21tYW5kIHNldCBjYW4gYmUgZ2VuZXJhdGVkIGZvciBTQ1NJMg0KK3NvIHRoYXQgZG9jdW1lbnQgc2Nhbm5lcnMgYXJlIG1vcmUgZWFzaWx5IGludGVncmF0ZWQuICAoQU5TSS9BSUlNIE1TNTMNCit3aWxsIGFsc28gYXBwbHkgdG8gY29tcHJlc3NlZCBpbWFnZXMuKQ0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitCQVRUSU4gKiBUaGUgaW1wbGljYXRpb25zIG9mIHN0YW5kYXJkcyBmb3IgcHJlc2VydmF0aW9uICogQSBtYWpvcg0KK29ic3RhY2xlIHRvIHN1Y2Nlc3NmdWwgY29vcGVyYXRpb24gKiBBIGhpbmRyYW5jZSB0byBhY2Nlc3MgaW4gdGhlIGRpZ2l0YWwNCitlbnZpcm9ubWVudCAqIFN0YW5kYXJkcyBhIGRvdWJsZS1lZGdlZCBzd29yZCBmb3IgdGhvc2UgY29uY2VybmVkIHdpdGggdGhlDQorcHJlc2VydmF0aW9uIG9mIHRoZSBodW1hbiByZWNvcmQgKiBOZWFyLXRlcm0gcHJvZ25vc2lzIGZvciByZWxpYWJsZQ0KK2FyY2hpdmFsIHN0YW5kYXJkcyAqIFByZXNlcnZhdGlvbiBjb25jZXJucyBmb3IgZWxlY3Ryb25pYyBtZWRpYSAqIE5lZWQNCitmb3IgcmVjb25jZXB0dWFsaXppbmcgb3VyIHByZXNlcnZhdGlvbiBwcmluY2lwbGVzICogU3RhbmRhcmRzIGluIHRoZSByZWFsDQord29ybGQgYW5kIHRoZSBwb2xpdGljcyBvZiByZXByb2R1Y3Rpb24gKiBOZWVkIHRvIHJlZGVmaW5lIHRoZSBjb25jZXB0IG9mDQorYXJjaGl2YWwgYW5kIHRvIGJlZ2luIHRvIHRoaW5rIGluIHRlcm1zIG9mIGxpZmUgY3ljbGVzICogQ29vcGVyYXRpb24gYW5kDQordGhlIExhIEd1YXJkaWEgRWlnaHQgKiBDb25jZXJucyBnZW5lcmF0ZWQgYnkgZGlzY3Vzc2lvbnMgb24gdGhlIHByb2JsZW1zDQorb2YgcHJlc2VydmluZyB0ZXh0IGFuZCBpbWFnZSAqIEdlbmVyYWwgcHJpbmNpcGxlcyB0byBiZSBhZG9wdGVkIGluIGENCit3b3JsZCB3aXRob3V0IHN0YW5kYXJkcyAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK1BhdHJpY2lhIEJBVFRJTiwgcHJlc2lkZW50LCB0aGUgQ29tbWlzc2lvbiBvbiBQcmVzZXJ2YXRpb24gYW5kIEFjY2Vzcw0KKyhDUEEpLCBhZGRyZXNzZWQgdGhlIGltcGxpY2F0aW9ucyBvZiBzdGFuZGFyZHMgZm9yIHByZXNlcnZhdGlvbi4gIFNoZQ0KK2xpc3RlZCBzZXZlcmFsIGFyZWFzIHdoZXJlIHRoZSBsaWJyYXJ5IHByb2Zlc3Npb24gYW5kIHRoZSBhbmFsb2cgd29ybGQgb2YNCit0aGUgcHJpbnRlZCBib29rIGhhZCBtYWRlIGVub3Jtb3VzIGNvbnRyaWJ1dGlvbnMgb3ZlciB0aGUgcGFzdCBodW5kcmVkDQoreWVhcnMtLWZvciBleGFtcGxlLCBpbiBiaWJsaW9ncmFwaGljIGZvcm1hdHMsIGJpbmRpbmcgc3RhbmRhcmRzLCBhbmQsIG1vc3QNCitpbXBvcnRhbnQsIGluIGRldGVybWluaW5nIHdoYXQgY29uc3RpdHV0ZXMgbG9uZ2V2aXR5IG9yIGFyY2hpdmFsIHF1YWxpdHkuDQorDQorQWx0aG91Z2ggc3RhbmRhcmRzIGhhdmUgbGlnaHRlbmVkIHRoZSBwcmVzZXJ2YXRpb24gYnVyZGVuIHRocm91Z2ggdGhlDQorZGV2ZWxvcG1lbnQgb2YgbmF0aW9uYWwgYW5kIGludGVybmF0aW9uYWwgY29sbGFib3JhdGl2ZSBwcm9ncmFtcywNCituZXZlcnRoZWxlc3MsIGEgcGVydmFzaXZlIG1pc3RydXN0IG9mIG90aGVyIHBlb3BsZSdzIHN0YW5kYXJkcyByZW1haW5zIGENCittYWpvciBvYnN0YWNsZSB0byBzdWNjZXNzZnVsIGNvb3BlcmF0aW9uLCBCQVRUSU4gc2FpZC4NCisNCitUaGUgemVhbCB0byBhY2hpZXZlIHBlcmZlY3Rpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvc3QsIGhhcyBoaW5kZXJlZA0KK3JhdGhlciB0aGFuIGZhY2lsaXRhdGVkIGFjY2VzcyBpbiBzb21lIGluc3RhbmNlcywgYW5kIGluIHRoZSBkaWdpdGFsDQorZW52aXJvbm1lbnQsIHdoZXJlIG5vIHJlYWwgc3RhbmRhcmRzIGV4aXN0LCBoYXMgYnJvdWdodCBhbiBpcm9uaWNhbGx5DQoranVzdCByZXdhcmQuDQorDQorQkFUVElOIGFyZ3VlZCB0aGF0IHN0YW5kYXJkcyBhcmUgYSBkb3VibGUtZWRnZWQgc3dvcmQgZm9yIHRob3NlIGNvbmNlcm5lZA0KK3dpdGggdGhlIHByZXNlcnZhdGlvbiBvZiB0aGUgaHVtYW4gcmVjb3JkLCB0aGF0IGlzLCB0aGUgcHJvdmlzaW9uIG9mDQorYWNjZXNzIHRvIHJlY29yZGVkIGtub3dsZWRnZSBpbiBhIG11bHRpdHVkZSBvZiBtZWRpYSBhcyBmYXIgaW50byB0aGUNCitmdXR1cmUgYXMgcG9zc2libGUuICBTdGFuZGFyZHMgYXJlIGVzc2VudGlhbCB0byBmYWNpbGl0YXRlDQoraW50ZXJjb25uZWN0aXZpdHkgYW5kIGFjY2VzcywgYnV0LCBCQVRUSU4gc2FpZCwgYXMgTFlOQ0ggcG9pbnRlZCBvdXQNCit5ZXN0ZXJkYXksIGlmIHNldCB0b28gc29vbiB0aGV5IGNhbiBoaW5kZXIgY3JlYXRpdml0eSwgZXhwYW5zaW9uIG9mDQorY2FwYWJpbGl0eSwgYW5kIHRoZSBicm9hZGVuaW5nIG9mIGFjY2Vzcy4gIFRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YNCitzdGFuZGFyZHMgZm9yIGRpZ2l0YWwgaW1hZ2VyeSBkaWZmZXIgcmFkaWNhbGx5IGZyb20gdGhvc2UgZm9yIGFuYWxvZw0KK2ltYWdlcnkuICBBbmQgdGhlIG5hdHVyZSBvZiBkaWdpdGFsIHRlY2hub2xvZ3kgaW1wbGllcyBjb250aW51aW5nDQordm9sYXRpbGl0eSBhbmQgY2hhbmdlLiAgVG8gcmVpdGVyYXRlLCBwcmVjaXBpdG91cyBzdGFuZGFyZC1zZXR0aW5nIGNhbg0KK2luaGliaXQgY3JlYXRpdml0eSwgYnV0IGRlbGF5ZWQgc3RhbmRhcmQtc2V0dGluZyByZXN1bHRzIGluIGNoYW9zLg0KKw0KK1NpbmNlIGluIEJBVFRJTidTIG9waW5pb24gdGhlIG5lYXItdGVybSBwcm9nbm9zaXMgZm9yIHJlbGlhYmxlIGFyY2hpdmFsDQorc3RhbmRhcmRzLCBhcyBkZWZpbmVkIGJ5IGxpYnJhcmlhbnMgaW4gdGhlIGFuYWxvZyB3b3JsZCwgaXMgcG9vciwgdHdvDQorYWx0ZXJuYXRpdmVzIHJlbWFpbjogIHN0YW5kaW5nIHBhdCB3aXRoIHRoZSBvbGQgdGVjaG5vbG9neSwgb3INCityZWNvbmNlcHR1YWxpemluZy4NCisNCitQcmVzZXJ2YXRpb24gY29uY2VybnMgZm9yIGVsZWN0cm9uaWMgbWVkaWEgZmFsbCBpbnRvIHR3byBnZW5lcmFsIGRvbWFpbnMuIA0KK09uZSBpcyB0aGUgY29udGludWluZyBhc3N1cmFuY2Ugb2YgYWNjZXNzIHRvIGtub3dsZWRnZSBvcmlnaW5hbGx5DQorZ2VuZXJhdGVkLCBzdG9yZWQsIGRpc3NlbWluYXRlZCwgYW5kIHVzZWQgaW4gZWxlY3Ryb25pYyBmb3JtLiAgVGhpcw0KK2RvbWFpbiBjb250YWlucyBzZXZlcmFsIHN1YmRpdmlzaW9ucywgaW5jbHVkaW5nIDEpIHRoZSBjbG9zZWQsDQorcHJvcHJpZXRhcnkgc3lzdGVtcyBkaXNjdXNzZWQgdGhlIHByZXZpb3VzIGRheSwgYnVuZGxlZCBpbmZvcm1hdGlvbiBzdWNoDQorYXMgZWxlY3Ryb25pYyBqb3VybmFscyBhbmQgZ292ZXJubWVudCBhZ2VuY3kgcmVjb3JkcywgYW5kIGVsZWN0cm9uaWNhbGx5DQorcHJvZHVjZWQgb3IgY2FwdHVyZWQgcmF3IGRhdGE7IGFuZCAyKSB0aGUgYXBwbGljYXRpb24gb2YgZGlnaXRhbA0KK3RlY2hub2xvZ2llcyB0byB0aGUgcmVmb3JtYXR0aW5nIG9mIG1hdGVyaWFscyBvcmlnaW5hbGx5IHB1Ymxpc2hlZCBvbiBhDQorZGV0ZXJpb3JhdGluZyBhbmFsb2cgbWVkaXVtIHN1Y2ggYXMgYWNpZCBwYXBlciBvciB2aWRlb3RhcGUuDQorDQorVGhlIHByZXNlcnZhdGlvbiBvZiBlbGVjdHJvbmljIG1lZGlhIHJlcXVpcmVzIGEgcmVjb25jZXB0dWFsaXppbmcgb2Ygb3VyDQorcHJlc2VydmF0aW9uIHByaW5jaXBsZXMgZHVyaW5nIGEgdm9sYXRpbGUsIHN0YW5kYXJkbGVzcyB0cmFuc2l0aW9uIHdoaWNoDQorbWF5IGxhc3QgZmFyIGxvbmdlciB0aGFuIGFueSBvZiB1cyBlbnZpc2lvbiB0b2RheS4gIEJBVFRJTiB1cmdlZCB0aGUNCituZWNlc3NpdHkgb2Ygc2hpZnRpbmcgZm9jdXMgZnJvbSBhc3Nlc3NpbmcsIG1lYXN1cmluZywgYW5kIHNldHRpbmcNCitzdGFuZGFyZHMgZm9yIHRoZSBwZXJtYW5lbmNlIG9mIHRoZSBtZWRpdW0gdG8gdGhlIGNvbmNlcHQgb2YgbWFuYWdpbmcNCitjb250aW51aW5nIGFjY2VzcyB0byBpbmZvcm1hdGlvbiBzdG9yZWQgb24gYSB2YXJpZXR5IG9mIG1lZGlhIGFuZA0KK3JlcXVpcmluZyBhIHZhcmlldHkgb2YgZXZlci1jaGFuZ2luZyBoYXJkd2FyZSBhbmQgc29mdHdhcmUgZm9yIGFjY2Vzcy0tYQ0KK2Z1bmRhbWVudGFsIHNoaWZ0IGZvciB0aGUgbGlicmFyeSBwcm9mZXNzaW9uLg0KKw0KK0JBVFRJTiBvZmZlcmVkIGEgcHJpbWVyIG9uIGhvdyB0byBtb3ZlIGZvcndhcmQgd2l0aCByZWFzb25hYmxlIGNvbmZpZGVuY2UNCitpbiBhIHdvcmxkIHdpdGhvdXQgc3RhbmRhcmRzLiAgSGVyIGNvbW1lbnRzIGZlbGwgcm91Z2hseSBpbnRvIHR3byBzZWN0aW9uczoNCisxKSBzdGFuZGFyZHMgaW4gdGhlIHJlYWwgd29ybGQgYW5kIDIpIHRoZSBwb2xpdGljcyBvZiByZXByb2R1Y3Rpb24uDQorDQorSW4gcmVnYXJkIHRvIHJlYWwtd29ybGQgc3RhbmRhcmRzLCBCQVRUSU4gYXJndWVkIHRoZSBuZWVkIHRvIHJlZGVmaW5lIHRoZQ0KK2NvbmNlcHQgb2YgYXJjaGl2ZSBhbmQgdG8gYmVnaW4gdG8gdGhpbmsgaW4gdGVybXMgb2YgbGlmZSBjeWNsZXMuICBJbg0KK3RoZSBwYXN0LCB0aGUgbmFpdmUgYXNzdW1wdGlvbiB0aGF0IHBhcGVyIHdvdWxkIGxhc3QgZm9yZXZlciBwcm9kdWNlZCBhDQorY2F2YWxpZXIgYXR0aXR1ZGUgdG93YXJkIGxpZmUgY3ljbGVzLiAgVGhlIHRyYW5zaWVudCBuYXR1cmUgb2YgdGhlDQorZWxlY3Ryb25pYyBtZWRpYSBoYXMgY29tcGVsbGVkIHBlb3BsZSB0byByZWNvZ25pemUgYW5kIGFjY2VwdCB1cGZyb250IHRoZQ0KK2NvbmNlcHQgb2YgbGlmZSBjeWNsZXMgaW4gcGxhY2Ugb2YgcGVybWFuZW5jeS4NCisNCitEaWdpdGFsIHN0YW5kYXJkcyBoYXZlIHRvIGJlIGRldmVsb3BlZCBhbmQgc2V0IGluIGEgY29vcGVyYXRpdmUgY29udGV4dA0KK3RvIGVuc3VyZSBlZmZpY2llbnQgZXhjaGFuZ2Ugb2YgaW5mb3JtYXRpb24uICBNb3Jlb3ZlciwgZHVyaW5nIHRoaXMNCit0cmFuc2l0aW9uIHBlcmlvZCwgZ3JlYXRlciBmbGV4aWJpbGl0eSBjb25jZXJuaW5nIGhvdyBjb25jZXB0cyBzdWNoIGFzDQorYmFja3VwIGNvcGllcyBhbmQgYXJjaGl2YWwgY29waWVzIGluIHRoZSBDWFAgYXJlIGRlZmluZWQgaXMgbmVjZXNzYXJ5LA0KK29yIHRoZSBvcHBvcnR1bml0eSB0byBtb3ZlIGZvcndhcmQgd2lsbCBiZSBsb3N0Lg0KKw0KK0luIHRlcm1zIG9mIGNvb3BlcmF0aW9uLCBwYXJ0aWN1bGFybHkgaW4gdGhlIHVuaXZlcnNpdHkgc2V0dGluZywgQkFUVElODQorYWxzbyBhcmd1ZWQgdGhlIG5lZWQgdG8gYXZvaWQgZ29pbmcgb2ZmIGluIGEgaHVuZHJlZCBkaWZmZXJlbnQNCitkaXJlY3Rpb25zLiAgVGhlIENQQSBoYXMgY2F0YWx5emVkIGEgc21hbGwgZ3JvdXAgb2YgdW5pdmVyc2l0aWVzIGNhbGxlZA0KK3RoZSBMYSBHdWFyZGlhIEVpZ2h0LS1iZWNhdXNlIExhIEd1YXJkaWEgQWlycG9ydCBpcyB3aGVyZSBtZWV0aW5ncyB0YWtlDQorcGxhY2UtLUhhcnZhcmQsIFlhbGUsIENvcm5lbGwsIFByaW5jZXRvbiwgUGVubiBTdGF0ZSwgVGVubmVzc2VlLA0KK1N0YW5mb3JkLCBhbmQgVVNDLCB0byBkZXZlbG9wIGEgZGlnaXRhbCBwcmVzZXJ2YXRpb24gY29uc29ydGl1bSB0byBsb29rDQorYXQgYWxsIHRoZXNlIGlzc3VlcyBhbmQgZGV2ZWxvcCBkZSBmYWN0byBzdGFuZGFyZHMgYXMgd2UgbW92ZSBhbG9uZywNCitpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHNvbWV0aGluZyB0aGF0IGlzIG9mZmljaWFsbHkgYmxlc3NlZC4gIENvbnRpbnVpbmcNCit0byBhcHBseSBhbmFsb2cgdmFsdWVzIGFuZCBkZWZpbml0aW9ucyBvZiBzdGFuZGFyZHMgdG8gdGhlIGRpZ2l0YWwNCitlbnZpcm9ubWVudCwgQkFUVElOIHNhaWQsIHdpbGwgZWZmZWN0aXZlbHkgbGVhZCB0byBmb3JmZWl0dXJlIG9mIHRoZQ0KK2JlbmVmaXRzIG9mIGRpZ2l0YWwgdGVjaG5vbG9neSB0byByZXNlYXJjaCBhbmQgc2Nob2xhcnNoaXAuDQorDQorVW5kZXIgdGhlIHNlY29uZCBydWJyaWMsIHRoZSBwb2xpdGljcyBvZiByZXByb2R1Y3Rpb24sIEJBVFRJTiByZWl0ZXJhdGVkDQorYW4gb2Z0LW1hZGUgYXJndW1lbnQgY29uY2VybmluZyB0aGUgZWxlY3Ryb25pYyBsaWJyYXJ5LCBuYW1lbHksIHRoYXQgaXQNCitpcyBtb3JlIGRpZmZpY3VsdCB0byB0cmFuc2Zvcm0gdGhhbiB0byBjcmVhdGUsIGFuZCBub3doZXJlIGlzIHRoYXQgYmVsaWVmDQorZXhwcmVzc2VkIG1vcmUgZHJhbWF0aWNhbGx5IHRoYW4gaW4gdGhlIGNvbnZlcnNpb24gb2YgYnJpdHRsZSBib29rcyB0bw0KK25ldyBtZWRpYS4gIFByZXNlcnZpbmcgaW5mb3JtYXRpb24gcHVibGlzaGVkIGluIGVsZWN0cm9uaWMgbWVkaWEgaW52b2x2ZXMNCittYWtpbmcgc3VyZSB0aGUgaW5mb3JtYXRpb24gcmVtYWlucyBhY2Nlc3NpYmxlIGFuZCB0aGF0IGRpZ2l0YWwNCitpbmZvcm1hdGlvbiBpcyBub3QgbG9zdCB0aHJvdWdoIHJlcHJvZHVjdGlvbi4gIEluIHRoZSBhbmFsb2cgd29ybGQgb2YNCitwaG90b2NvcGllcyBhbmQgbWljcm9maWxtLCB0aGUgaXNzdWUgb2YgZmlkZWxpdHkgdG8gdGhlIG9yaWdpbmFsIGJlY29tZXMNCitwYXJhbW91bnQsIGFzIGRvIGlzc3VlcyBvZiAiV2hvc2UgZmlkZWxpdHk/IiBhbmQgIldob3NlIG9yaWdpbmFsPyINCisNCitCQVRUSU4gZWxhYm9yYXRlZCB0aGVzZSBhcmd1bWVudHMgd2l0aCBhIGZldyBleGFtcGxlcyBmcm9tIGEgcmVjZW50IHN0dWR5DQorY29uZHVjdGVkIGJ5IHRoZSBDUEEgb24gdGhlIHByb2JsZW1zIG9mIHByZXNlcnZpbmcgdGV4dCBhbmQgaW1hZ2UuIA0KK0Rpc2N1c3Npb25zIHdpdGggc2Nob2xhcnMsIGxpYnJhcmlhbnMsIGFuZCBjdXJhdG9ycyBpbiBhIHZhcmlldHkgb2YNCitkaXNjaXBsaW5lcyBkZXBlbmRlbnQgb24gdGV4dCBhbmQgaW1hZ2UgZ2VuZXJhdGVkIGEgdmFyaWV0eSBvZiBjb25jZXJucywNCitmb3IgZXhhbXBsZTogIDEpIENvcHkgd2hhdCBpcywgbm90IHdoYXQgdGhlIHRlY2hub2xvZ3kgaXMgY2FwYWJsZSBvZi4gDQorVGhpcyBpcyB2ZXJ5IGltcG9ydGFudCBmb3IgdGhlIGhpc3Rvcnkgb2YgaWRlYXMuICBTY2hvbGFycyB3aXNoIHRvIGtub3cNCit3aGF0IHRoZSBhdXRob3Igc2F3IGFuZCB3b3JrZWQgZnJvbS4gIEFuZCBtYWtlIGF2YWlsYWJsZSBhdCB0aGUNCit3b3Jrc3RhdGlvbiB0aGUgb3Bwb3J0dW5pdHkgdG8gZXJhc2UgYWxsIHRoZSBkZWZlY3RzIGFuZCBlbmhhbmNlIHRoZQ0KK3ByZXNlbnRhdGlvbi4gIDIpIFRoZSBmaWRlbGl0eSBvZiByZXByb2R1Y3Rpb24tLXdoYXQgaXMgZ29vZCBlbm91Z2gsIHdoYXQNCitjYW4gd2UgYWZmb3JkLCBhbmQgdGhlIGRpZmZlcmVuY2UgaXQgbWFrZXMtLWlzc3VlcyBvZiBzdWJqZWN0aXZlIHZlcnN1cw0KK29iamVjdGl2ZSByZXNvbHV0aW9uLiAgMykgVGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5DQordXNlcnMuICBSZXN0cmljdGluZyB0aGUgZGVmaW5pdGlvbiBvZiBwcmltYXJ5IHVzZXIgdG8gdGhlIG9uZSBpbiB3aG9zZQ0KK2Rpc2NpcGxpbmUgdGhlIG1hdGVyaWFsIGhhcyBiZWVuIHB1Ymxpc2hlZCBydW5zIG9uZSBoZWFkbG9uZyBpbnRvIHRoZQ0KK3JlYWxpdHkgdGhhdCB0aGVzZSBwcmludGVkIGJvb2tzIGhhdmUgaGFkIGEgaG9zdCBvZiBvdGhlciB1c2VycyBmcm9tIGENCitob3N0IG9mIG90aGVyIGRpc2NpcGxpbmVzLCB3aG8gbm90IG9ubHkgd2VyZSBsb29raW5nIGZvciB2ZXJ5IGRpZmZlcmVudA0KK3RoaW5ncywgYnV0IHdobyBhbHNvIHNoYXJlZCB2YWx1ZXMgdmVyeSBkaWZmZXJlbnQgZnJvbSB0aG9zZSBvZiB0aGUNCitwcmltYXJ5IHVzZXIuICA0KSBUaGUgcmVsYXRpb25zaGlwIG9mIHRoZSBzdGFuZGFyZCBvZiByZXByb2R1Y3Rpb24gdG8gbmV3DQorY2FwYWJpbGl0aWVzIG9mIHNjaG9sYXJzaGlwLS10aGUgYnJvd3Npbmcgc3RhbmRhcmQgdmVyc3VzIGFuIGFyY2hpdmFsDQorc3RhbmRhcmQuICBIb3cgZ29vZCBtdXN0IHRoZSBhcmNoaXZhbCBzdGFuZGFyZCBiZT8gIENhbiBhIGRpc3RpbmN0aW9uIGJlDQorZHJhd24gYmV0d2VlbiBwb3RlbnRpYWwgdXNlcnMgaW4gc2V0dGluZyBzdGFuZGFyZHMgZm9yIHJlcHJvZHVjdGlvbj8gDQorQXJjaGl2YWwgc3RvcmFnZSwgdXNlIGNvcGllcywgYnJvd3NpbmcgY29waWVzLS1vdWdodCBhbiBhdHRlbXB0IHRvIHNldA0KK3N0YW5kYXJkcyBldmVuIGJlIG1hZGU/ICA1KSBGaW5hbGx5LCBjb3N0cy4gIEhvdyBtdWNoIGFyZSB3ZSBwcmVwYXJlZCB0bw0KK3BheSB0byBjYXB0dXJlIGFic29sdXRlIGZpZGVsaXR5PyAgV2hhdCBhcmUgdGhlIHRyYWRlLW9mZnMgYmV0d2VlbiB2YXN0bHkNCitlbmhhbmNlZCBhY2Nlc3MsIGRlZ3JlZXMgb2YgZmlkZWxpdHksIGFuZCBjb3N0cz8NCisNCitUaGVzZSBzdGFuZGFyZHMsIEJBVFRJTiBjb25jbHVkZWQsIHNlcnZlIHRvIGNvbXBsaWNhdGUgZnVydGhlciB0aGUNCityZXByb2R1Y3Rpb24gcHJvY2VzcywgYW5kIGFkZCB0byB0aGUgbG9uZyBsaXN0IG9mIHRlY2huaWNhbCBzdGFuZGFyZHMNCit0aGF0IGFyZSBuZWNlc3NhcnkgdG8gZW5zdXJlIHdpZGVzcHJlYWQgYWNjZXNzLiAgV2F5cyB0byBhcnRpY3VsYXRlIGFuZA0KK2FuYWx5emUgdGhlIGNvc3RzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIHRoZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIHN0YW5kYXJkcw0KK211c3QgYmUgZm91bmQuDQorDQorR2l2ZW4gdGhlIGNoYW9zIGNvbmNlcm5pbmcgc3RhbmRhcmRzLCB3aGljaCBwcm9taXNlcyB0byBsaW5nZXIgZm9yIHRoZQ0KK2ZvcmVzZWVhYmxlIGZ1dHVyZSwgQkFUVElOIHVyZ2VkIGFkb3B0aW9uIG9mIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbA0KK3ByaW5jaXBsZXM6DQorDQorICAgICAqIFN0cml2ZSB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2luZyBpbmZvcm1hdGlvbiByZXF1aXJlbWVudHMgb2YNCisgICAgIHNjaG9sYXJseSBkaXNjaXBsaW5lcyBhcyBtb3JlIGFuZCBtb3JlIHRlY2hub2xvZ3kgaXMgaW50ZWdyYXRlZCBpbnRvDQorICAgICB0aGUgcHJvY2VzcyBvZiByZXNlYXJjaCBhbmQgc2Nob2xhcmx5IGNvbW11bmljYXRpb24gaW4gb3JkZXIgdG8gbWVldA0KKyAgICAgZnV0dXJlIHNjaG9sYXJseSBuZWVkcywgbm90IHRvIGJ1aWxkIGZvciB0aGUgcGFzdC4gIENhcHR1cmUNCisgICAgIGRldGVyaW9yYXRpbmcgaW5mb3JtYXRpb24gYXQgdGhlIGhpZ2hlc3QgYWZmb3JkYWJsZSByZXNvbHV0aW9uLCBldmVuDQorICAgICB0aG91Z2ggdGhlIGRpc3NlbWluYXRpb24gYW5kIGRpc3BsYXkgdGVjaG5vbG9naWVzIHdpbGwgbGFnLg0KKw0KKyAgICAgKiBEZXZlbG9wIGNvb3BlcmF0aXZlIG1lY2hhbmlzbXMgdG8gZm9zdGVyIGFncmVlbWVudCBvbiBwcm90b2NvbHMNCisgICAgIGZvciBkb2N1bWVudCBzdHJ1Y3R1cmUgYW5kIG90aGVyIGludGVyY2hhbmdlIG1lY2hhbmlzbXMgbmVjZXNzYXJ5DQorICAgICBmb3Igd2lkZXNwcmVhZCBkaXNzZW1pbmF0aW9uIGFuZCB1c2UgYmVmb3JlIG9mZmljaWFsIHN0YW5kYXJkcyBhcmUNCisgICAgIHNldC4NCisNCisgICAgICogQWNjZXB0IHRoYXQsIGluIGEgdHJhbnNpdGlvbiBwZXJpb2QsIGRlIGZhY3RvIHN0YW5kYXJkcyB3aWxsIGhhdmUNCisgICAgIHRvIGJlIGRldmVsb3BlZC4NCisNCisgICAgICogQ2FwdHVyZSBpbmZvcm1hdGlvbiBpbiBhIHdheSB0aGF0IGtlZXBzIGFsbCBvcHRpb25zIG9wZW4gYW5kDQorICAgICBwcm92aWRlcyBmb3IgdG90YWwgY29udmVydGliaWxpdHk6ICBPQ1IsIHNjYW5uaW5nIG9mIG1pY3JvZmlsbSwNCisgICAgIHByb2R1Y2luZyBtaWNyb2ZpbG0gZnJvbSBzY2FubmVkIGRvY3VtZW50cywgZXRjLg0KKw0KKyAgICAgKiBXb3JrIGNsb3NlbHkgd2l0aCB0aGUgZ2VuZXJhdG9ycyBvZiBpbmZvcm1hdGlvbiBhbmQgdGhlIGJ1aWxkZXJzDQorICAgICBvZiBuZXR3b3JrcyBhbmQgZGF0YWJhc2VzIHRvIGVuc3VyZSB0aGF0IGNvbnRpbnVpbmcgYWNjZXNzaWJpbGl0eSBpcw0KKyAgICAgYSBwcmltYXJ5IGNvbmNlcm4gZnJvbSB0aGUgYmVnaW5uaW5nLg0KKw0KKyAgICAgKiBQaWdneWJhY2sgb24gc3RhbmRhcmRzIHVuZGVyIGRldmVsb3BtZW50IGZvciB0aGUgYnJvYWQgbWFya2V0LCBhbmQNCisgICAgIGF2b2lkIGxpYnJhcnktc3BlY2lmaWMgc3RhbmRhcmRzOyB3b3JrIHdpdGggdGhlIHZlbmRvcnMsIGluIG9yZGVyIHRvDQorICAgICB0YWtlIGFkdmFudGFnZSBvZiB0aGF0IHdoaWNoIGlzIGJlaW5nIHN0YW5kYXJkaXplZCBmb3IgdGhlIHJlc3Qgb2YNCisgICAgIHRoZSB3b3JsZC4NCisNCisgICAgICogQ29uY2VudHJhdGUgZWZmb3J0cyBvbiBtYW5hZ2luZyBwZXJtYW5lbmNlIGluIHRoZSBkaWdpdGFsIHdvcmxkLA0KKyAgICAgcmF0aGVyIHRoYW4gcGVyZmVjdGluZyB0aGUgbG9uZ2V2aXR5IG9mIGEgcGFydGljdWxhciBtZWRpdW0uDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0RJU0NVU1NJT04gKiBBZGRpdGlvbmFsIGNvbW1lbnRzIG9uIFRJRkYgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitEdXJpbmcgdGhlIGJyaWVmIGRpc2N1c3Npb24gcGVyaW9kIHRoYXQgZm9sbG93ZWQgQkFUVElOJ3MgcHJlc2VudGF0aW9uLA0KK0JBUk9OQVMgZXhwbGFpbmVkIHRoYXQgVElGRiB3YXMgbm90IGRldmVsb3BlZCBpbiBjb2xsYWJvcmF0aW9uIHdpdGggb3INCit1bmRlciB0aGUgYXVzcGljZXMgb2YgQUlJTS4gIFRJRkYgaXMgYSBjb21wYW55IHByb2R1Y3QsIG5vdCBhIHN0YW5kYXJkLA0KK2lzIG93bmVkIGJ5IHR3byBjb3Jwb3JhdGlvbnMsIGFuZCBpcyBhbHdheXMgY2hhbmdpbmcuICBCQVJPTkFTIGFsc28NCitvYnNlcnZlZCB0aGF0IEFOU0kvQUlJTSBNUzUzLCBhIGJpLWxldmVsIGltYWdlIGZpbGUgdHJhbnNmZXIgZm9ybWF0IHRoYXQNCithbGxvd3MgdW5saWtlIHN5c3RlbXMgdG8gZXhjaGFuZ2UgaW1hZ2VzLCBpcyBjb21wYXRpYmxlIHdpdGggVElGRiBhcyB3ZWxsDQorYXMgd2l0aCBERUMncyBhcmNoaXRlY3R1cmUgYW5kIElCTSdzIE1PRENBL0lPQ0EuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0hPT1RPTiAqIFNldmVyYWwgcXVlc3Rpb25zIHRvIGJlIGNvbnNpZGVyZWQgaW4gZGlzY3Vzc2luZyB0ZXh0IGNvbnZlcnNpb24NCisqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0hPT1RPTiBpbnRyb2R1Y2VkIHRoZSBmaW5hbCB0b3BpYywgdGV4dCBjb252ZXJzaW9uLCBieSBub3RpbmcgdGhhdCBpdCBpcw0KK2JlY29taW5nIGFuIGluY3JlYXNpbmdseSBpbXBvcnRhbnQgcGFydCBvZiB0aGUgaW1hZ2luZyBidXNpbmVzcy4gIE1hbnkNCitwZW9wbGUgbm93IHJlYWxpemUgdGhhdCBpdCBlbmhhbmNlcyB0aGVpciBzeXN0ZW0gdG8gYmUgYWJsZSB0byBoYXZlIG1vcmUNCithbmQgbW9yZSBjaGFyYWN0ZXIgZGF0YSBhcyBwYXJ0IG9mIHRoZWlyIGltYWdpbmcgc3lzdGVtLiAgUmUgdGhlIGlzc3VlIG9mDQorT0NSIHZlcnN1cyByZWtleWluZywgSE9PVE9OIHBvc2VkIHNldmVyYWwgcXVlc3Rpb25zOiAgSG93IGRvZXMgb25lIGdldA0KK3RleHQgaW50byBjb21wdXRlci1yZWFkYWJsZSBmb3JtPyAgRG9lcyBvbmUgdXNlIGF1dG9tYXRlZCBwcm9jZXNzZXM/IA0KK0RvZXMgb25lIGF0dGVtcHQgdG8gZWxpbWluYXRlIHRoZSB1c2Ugb2Ygb3BlcmF0b3JzIHdoZXJlIHBvc3NpYmxlPyANCitTdGFuZGFyZHMgZm9yIGFjY3VyYWN5LCBoZSBzYWlkLCBhcmUgZXh0cmVtZWx5IGltcG9ydGFudDogIGl0IG1ha2VzIGENCittYWpvciBkaWZmZXJlbmNlIGluIGNvc3QgYW5kIHRpbWUgd2hldGhlciBvbmUgc2V0cyBhcyBhIHN0YW5kYXJkIDk4LjUNCitwZXJjZW50IGFjY2VwdGFuY2Ugb3IgOTkuNSBwZXJjZW50LiAgSGUgbWVudGlvbmVkIG91dHNvdXJjaW5nIGFzIGENCitwb3NzaWJpbGl0eSBmb3IgY29udmVydGluZyB0ZXh0LiAgRmluYWxseSwgd2hhdCBvbmUgZG9lcyB3aXRoIHRoZSBpbWFnZQ0KK3RvIHByZXBhcmUgaXQgZm9yIHRoZSByZWNvZ25pdGlvbiBwcm9jZXNzIGlzIGFsc28gaW1wb3J0YW50LCBoZSBzYWlkLA0KK2JlY2F1c2Ugc3VjaCBwcmVwYXJhdGlvbiBjaGFuZ2VzIGhvdyByZWNvZ25pdGlvbiBpcyB2aWV3ZWQsIGFzIHdlbGwgYXMNCitmYWNpbGl0YXRlcyByZWNvZ25pdGlvbiBpdHNlbGYuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0xFU0sgKiBSb2xlcyBvZiBwYXJ0aWNpcGFudHMgaW4gQ09SRSAqIERhdGEgZmxvdyAqIFRoZSBzY2FubmluZyBwcm9jZXNzICoNCitUaGUgaW1hZ2UgaW50ZXJmYWNlICogUmVzdWx0cyBvZiBleHBlcmltZW50cyBpbnZvbHZpbmcgdGhlIHVzZSBvZg0KK2VsZWN0cm9uaWMgcmVzb3VyY2VzIGFuZCB0cmFkaXRpb25hbCBwYXBlciBjb3BpZXMgKiBUZXN0aW5nIHRoZSBpc3N1ZSBvZg0KK3NlcmVuZGlwaXR5ICogQ29uY2x1c2lvbnMgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitNaWNoYWVsIExFU0ssIGV4ZWN1dGl2ZSBkaXJlY3RvciwgQ29tcHV0ZXIgU2NpZW5jZSBSZXNlYXJjaCwgQmVsbA0KK0NvbW11bmljYXRpb25zIFJlc2VhcmNoLCBJbmMuIChCZWxsY29yZSksIGRpc2N1c3NlZCB0aGUgQ2hlbWljYWwgT25saW5lDQorUmV0cmlldmFsIEV4cGVyaW1lbnQgKENPUkUpLCBhIGNvb3BlcmF0aXZlIHByb2plY3QgaW52b2x2aW5nIENvcm5lbGwNCitVbml2ZXJzaXR5LCBPQ0xDLCBCZWxsY29yZSwgYW5kIHRoZSBBbWVyaWNhbiBDaGVtaWNhbCBTb2NpZXR5IChBQ1MpLg0KKw0KK0xFU0sgc3Bva2Ugb24gMSkgaG93IHRoZSBzY2FubmluZyB3YXMgcGVyZm9ybWVkLCBpbmNsdWRpbmcgdGhlIHVudXN1YWwNCitmZWF0dXJlIG9mIHBhZ2Ugc2VnbWVudGF0aW9uLCBhbmQgMikgdGhlIHVzZSBtYWRlIG9mIHRoZSB0ZXh0IGFuZCB0aGUNCitpbWFnZSBpbiBleHBlcmltZW50cy4NCisNCitXb3JraW5nIHdpdGggdGhlIGNoZW1pc3RyeSBqb3VybmFscyAoYmVjYXVzZSBBQ1MgaGFzIGJlZW4gc2F2aW5nIGl0cw0KK3R5cGVzZXR0aW5nIHRhcGVzIHNpbmNlIHRoZSBtaWQtMTk3MHMgYW5kIHRodXMgaGFzIGEgc2lnbmlmaWNhbnQgYmFjay1ydW4NCitvZiB0aGUgbW9zdCBpbXBvcnRhbnQgY2hlbWlzdHJ5IGpvdXJuYWxzIGluIHRoZSBVbml0ZWQgU3RhdGVzKSwgQ09SRSBpcw0KK2F0dGVtcHRpbmcgdG8gY3JlYXRlIGFuIGF1dG9tYXRlZCBjaGVtaWNhbCBsaWJyYXJ5LiAgQXBwcm94aW1hdGVseSBhDQorcXVhcnRlciBvZiB0aGUgcGFnZXMgYnkgc3F1YXJlIGluY2ggYXJlIG1hZGUgdXAgb2YgaW1hZ2VzIG9mDQorcXVhc2ktcGljdG9yaWFsIG1hdGVyaWFsOyBkZWFsaW5nIHdpdGggdGhlIGdyYXBoaWMgY29tcG9uZW50cyBvZiB0aGUNCitwYWdlcyBpcyBleHRyZW1lbHkgaW1wb3J0YW50LiAgTEVTSyBkZXNjcmliZWQgdGhlIHJvbGVzIG9mIHBhcnRpY2lwYW50cw0KK2luIENPUkU6ICAxKSBBQ1MgcHJvdmlkZXMgY29weXJpZ2h0IHBlcm1pc3Npb24sIGpvdXJuYWxzIG9uIHBhcGVyLA0KK2pvdXJuYWxzIG9uIG1pY3JvZmlsbSwgYW5kIHNvbWUgb2YgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBmaWxlczsgMikgYXQNCitCZWxsY29yZSwgTEVTSyBjaGllZmx5IHBlcmZvcm1zIHRoZSBkYXRhIHByZXBhcmF0aW9uLCB3aGlsZSBEZW5uaXMgRWdhbg0KK3BlcmZvcm1zIGV4cGVyaW1lbnRzIG9uIHRoZSB1c2VycyBvZiBjaGVtaWNhbCBhYnN0cmFjdHMsIGFuZCBzdXBwbGllcyB0aGUNCitpbmRleGluZyBhbmQgbnVtZXJvdXMgbWFnbmV0aWMgdGFwZXM7ICAzKSBDb3JuZWxsIHByb3ZpZGVzIHRoZSBzaXRlIG9mIHRoZQ0KK2V4cGVyaW1lbnQ7IDQpIE9DTEMgZGV2ZWxvcHMgcmV0cmlldmFsIHNvZnR3YXJlIGFuZCBvdGhlciB1c2VyIGludGVyZmFjZXMuDQorVmFyaW91cyBtYW51ZmFjdHVyZXJzIGFuZCBwdWJsaXNoZXJzIGhhdmUgZnVybmlzaGVkIG90aGVyIGhlbHAuDQorDQorQ29uY2VybmluZyBkYXRhIGZsb3csIEJlbGxjb3JlIHJlY2VpdmVzIG1pY3JvZmlsbSBhbmQgcGFwZXIgZnJvbSBBQ1M7IHRoZQ0KK21pY3JvZmlsbSBpcyBzY2FubmVkIGJ5IG91dHNpZGUgdmVuZG9ycywgd2hpbGUgdGhlIHBhcGVyIGlzIHNjYW5uZWQNCitpbmhvdXNlIG9uIGFuIEltcHJvdmlzaW9uIHNjYW5uZXIsIHR3ZW50eSBwYWdlcyBwZXIgbWludXRlIGF0IDMwMCBkcGksDQord2hpY2ggcHJvdmlkZXMgc3VmZmljaWVudCBxdWFsaXR5IGZvciBhbGwgcHJhY3RpY2FsIHVzZXMuICBMRVNLIHdvdWxkDQorcHJlZmVyIHRvIGhhdmUgbW9yZSBncmF5IGxldmVsLCBiZWNhdXNlIG9uZSBvZiB0aGUgQUNTIGpvdXJuYWxzIHByaW50cyBvbg0KK3NvbWUgY29sb3JlZCBwYWdlcywgd2hpY2ggY3JlYXRlcyBhIHByb2JsZW0uDQorDQorQmVsbGNvcmUgcGVyZm9ybXMgYWxsIHRoaXMgc2Nhbm5pbmcsIGNyZWF0ZXMgYSBwYWdlLWltYWdlIGZpbGUsIGFuZCBhbHNvDQorc2VsZWN0cyBmcm9tIHRoZSBwYWdlcyB0aGUgZ3JhcGhpY3MsIHRvIG1peCB3aXRoIHRoZSB0ZXh0IGZpbGUgKHdoaWNoIGlzDQorZGlzY3Vzc2VkIGxhdGVyIGluIHRoZSBXb3Jrc2hvcCkuICBUaGUgdXNlciBpcyBhbHdheXMgc2VhcmNoaW5nIHRoZSBBU0NJSQ0KK2ZpbGUsIGJ1dCBzaGUgb3IgaGUgbWF5IHNlZSBhIGRpc3BsYXkgYmFzZWQgb24gdGhlIEFTQ0lJIG9yIGEgZGlzcGxheQ0KK2Jhc2VkIG9uIHRoZSBpbWFnZXMuDQorDQorTEVTSyBpbGx1c3RyYXRlZCBob3cgdGhlIHByb2dyYW0gcGVyZm9ybXMgcGFnZSBhbmFseXNpcywgYW5kIHRoZSBpbWFnZQ0KK2ludGVyZmFjZS4gIChUaGUgdXNlciB0eXBlcyBzZXZlcmFsIHdvcmRzLCBpcyBwcmVzZW50ZWQgd2l0aCBhIGxpc3QtLQ0KK3VzdWFsbHkgb2YgdGhlIHRpdGxlcyBvZiBhcnRpY2xlcyBjb250YWluZWQgaW4gYW4gaXNzdWUtLXRoYXQgZGVyaXZlcw0KK2Zyb20gdGhlIEFTQ0lJLCBjbGlja3Mgb24gYW4gaWNvbiBhbmQgcmVjZWl2ZXMgYW4gaW1hZ2UgdGhhdCBtaXJyb3JzIGFuDQorQUNTIHBhZ2UuKSAgTEVTSyBhbHNvIGlsbHVzdHJhdGVkIGFuIGFsdGVybmF0aXZlIGludGVyZmFjZSwgYmFzZWQgb24gdGV4dA0KK29uIHRoZSBBU0NJSSwgdGhlIHNvLWNhbGxlZCBTdXBlckJvb2sgaW50ZXJmYWNlIGZyb20gQmVsbGNvcmUuDQorDQorTEVTSyBuZXh0IHByZXNlbnRlZCB0aGUgcmVzdWx0cyBvZiBhbiBleHBlcmltZW50IGNvbmR1Y3RlZCBieSBEZW5uaXMgRWdhbg0KK2FuZCBpbnZvbHZpbmcgdGhpcnR5LXNpeCBzdHVkZW50cyBhdCBDb3JuZWxsLCBvbmUgdGhpcmQgb2YgdGhlbQ0KK3VuZGVyZ3JhZHVhdGUgY2hlbWlzdHJ5IG1ham9ycywgb25lIHRoaXJkIHNlbmlvciB1bmRlcmdyYWR1YXRlIGNoZW1pc3RyeQ0KK21ham9ycywgYW5kIG9uZSB0aGlyZCBncmFkdWF0ZSBjaGVtaXN0cnkgc3R1ZGVudHMuICBBIHRoaXJkIG9mIHRoZW0NCityZWNlaXZlZCB0aGUgcGFwZXIgam91cm5hbHMsIHRoZSB0cmFkaXRpb25hbCBwYXBlciBjb3BpZXMgYW5kIGNoZW1pY2FsDQorYWJzdHJhY3RzIG9uIHBhcGVyLiAgQSB0aGlyZCByZWNlaXZlZCBpbWFnZSBkaXNwbGF5cyBvZiB0aGUgcGljdHVyZXMgb2YNCit0aGUgcGFnZXMsIGFuZCBhIHRoaXJkIHJlY2VpdmVkIHRoZSB0ZXh0IGRpc3BsYXkgd2l0aCBwb3AtdXAgZ3JhcGhpY3MuDQorDQorVGhlIHN0dWRlbnRzIHdlcmUgZ2l2ZW4gc2V2ZXJhbCBxdWVzdGlvbnMgbWFkZSB1cCBieSBzb21lIGNoZW1pc3RyeQ0KK3Byb2Zlc3NvcnMuICBUaGUgcXVlc3Rpb25zIGZlbGwgaW50byBmaXZlIGNsYXNzZXMsIHJhbmdpbmcgZnJvbSB2ZXJ5IGVhc3kNCit0byB2ZXJ5IGRpZmZpY3VsdCwgYW5kIGluY2x1ZGVkIHF1ZXN0aW9ucyBkZXNpZ25lZCB0byBzaW11bGF0ZSBicm93c2luZw0KK2FzIHdlbGwgYXMgYSB0cmFkaXRpb25hbCBpbmZvcm1hdGlvbiByZXRyaWV2YWwtdHlwZSB0YXNrLg0KKw0KK0xFU0sgZnVybmlzaGVkIHRoZSBmb2xsb3dpbmcgcmVzdWx0cy4gIEluIHRoZSBzdHJhaWdodGZvcndhcmQgcXVlc3Rpb24NCitzZWFyY2gtLXRoZSBxdWVzdGlvbiBiZWluZywgd2hhdCBpcyB0aGUgcGhvc3Bob3J1cyBveHlnZW4gYm9uZCBkaXN0YW5jZQ0KK2FuZCBoeWRyb3h5IHBob3NwaGF0ZT8tLXRoZSBzdHVkZW50cyB3ZXJlIHRvbGQgdGhhdCB0aGV5IGNvdWxkIHRha2UNCitmaWZ0ZWVuIG1pbnV0ZXMgYW5kLCB0aGVuLCBpZiB0aGV5IHdpc2hlZCwgZ2l2ZSB1cC4gIFRoZSBzdHVkZW50cyB3aXRoDQorcGFwZXIgdG9vayBtb3JlIHRoYW4gZmlmdGVlbiBtaW51dGVzIG9uIGF2ZXJhZ2UsIGFuZCB5ZXQgbW9zdCBvZiB0aGVtDQorZ2F2ZSB1cC4gIFRoZSBzdHVkZW50cyB3aXRoIGVpdGhlciBlbGVjdHJvbmljIGZvcm1hdCwgdGV4dCBvciBpbWFnZSwNCityZWNlaXZlZCBnb29kIHNjb3JlcyBpbiByZWFzb25hYmxlIHRpbWUsIGhhcmRseSBldmVyIGhhZCB0byBnaXZlIHVwLCBhbmQNCit1c3VhbGx5IGZvdW5kIHRoZSByaWdodCBhbnN3ZXIuDQorDQorSW4gdGhlIGJyb3dzaW5nIHN0dWR5LCB0aGUgc3R1ZGVudHMgd2VyZSBnaXZlbiBhIGxpc3Qgb2YgZWlnaHQgdG9waWNzLA0KK3RvbGQgdG8gaW1hZ2luZSB0aGF0IGFuIGlzc3VlIG9mIHRoZSBKb3VybmFsIG9mIHRoZSBBbWVyaWNhbiBDaGVtaWNhbA0KK1NvY2lldHkgaGFkIGp1c3QgYXBwZWFyZWQgb24gdGhlaXIgZGVza3MsIGFuZCB3ZXJlIGFsc28gdG9sZCB0byBmbGlwDQordGhyb3VnaCBpdCBhbmQgdG8gZmluZCB0b3BpY3MgbWVudGlvbmVkIGluIHRoZSBpc3N1ZS4gIFRoZSBhdmVyYWdlIHNjb3Jlcw0KK3dlcmUgYWJvdXQgdGhlIHNhbWUuICAoVGhlIHN0dWRlbnRzIHdlcmUgdG9sZCB0byBhbnN3ZXIgeWVzIG9yIG5vIGFib3V0DQord2hldGhlciBvciBub3QgcGFydGljdWxhciB0b3BpY3MgYXBwZWFyZWQuKSAgVGhlIGVycm9ycywgaG93ZXZlciwgd2VyZQ0KK3F1aXRlIGRpZmZlcmVudC4gIFRoZSBzdHVkZW50cyB3aXRoIHBhcGVyIHJhcmVseSBzYWlkIHRoYXQgc29tZXRoaW5nDQorYXBwZWFyZWQgd2hlbiBpdCBoYWQgbm90LiAgQnV0IHRoZXkgb2Z0ZW4gZmFpbGVkIHRvIGZpbmQgc29tZXRoaW5nDQorYWN0dWFsbHkgbWVudGlvbmVkIGluIHRoZSBpc3N1ZS4gIFRoZSBjb21wdXRlciBwZW9wbGUgZm91bmQgbnVtZXJvdXMNCit0aGluZ3MsIGJ1dCB0aGV5IGFsc28gZnJlcXVlbnRseSBzYWlkIHRoYXQgYSB0b3BpYyB3YXMgbWVudGlvbmVkIHdoZW4gaXQNCit3YXMgbm90LiAgKFRoZSByZWFzb24sIG9mIGNvdXJzZSwgd2FzIHRoYXQgdGhleSB3ZXJlIHBlcmZvcm1pbmcgd29yZA0KK3NlYXJjaGVzLiAgVGhleSB3ZXJlIGZpbmRpbmcgdGhhdCB3b3JkcyB3ZXJlIG1lbnRpb25lZCBhbmQgdGhleSB3ZXJlDQorY29uY2x1ZGluZyB0aGF0IHRoZXkgaGFkIGFjY29tcGxpc2hlZCB0aGVpciB0YXNrLikNCisNCitUaGlzIHF1ZXN0aW9uIGFsc28gY29udGFpbmVkIGEgdHJpY2sgdG8gdGVzdCB0aGUgaXNzdWUgb2Ygc2VyZW5kaXBpdHkuIA0KK1RoZSBzdHVkZW50cyB3ZXJlIGdpdmVuIGFub3RoZXIgbGlzdCBvZiBlaWdodCB0b3BpY3MgYW5kIGluc3RydWN0ZWQsDQord2l0aG91dCB0YWtpbmcgYSBzZWNvbmQgbG9vayBhdCB0aGUgam91cm5hbCwgdG8gcmVjYWxsIGhvdyBtYW55IG9mIHRoaXMNCituZXcgbGlzdCBvZiBlaWdodCB0b3BpY3Mgd2VyZSBpbiB0aGlzIHBhcnRpY3VsYXIgaXNzdWUuICBUaGlzIHdhcyBhbg0KK2F0dGVtcHQgdG8gc2VlIGlmIHRoZXkgcGVyZm9ybWVkIGJldHRlciBhdCByZW1lbWJlcmluZyB3aGF0IHRoZXkgd2VyZSBub3QNCitsb29raW5nIGZvci4gIFRoZXkgYWxsIHBlcmZvcm1lZCBhYm91dCB0aGUgc2FtZSwgcGFwZXIgb3IgZWxlY3Ryb25pY3MsDQorYWJvdXQgNjIgcGVyY2VudCBhY2N1cmF0ZS4gIEluIHNob3J0LCBMRVNLIHNhaWQsIHBlb3BsZSB3ZXJlIG5vdCB2ZXJ5DQorZ29vZCB3aGVuIGl0IGNhbWUgdG8gc2VyZW5kaXBpdHksIGJ1dCB0aGV5IHdlcmUgbm8gd29yc2UgYXQgaXQgd2l0aA0KK2NvbXB1dGVycyB0aGFuIHRoZXkgd2VyZSB3aXRoIHBhcGVyLg0KKw0KKyhMRVNLIGdhdmUgYSBwYXJlbnRoZXRpY2FsIGlsbHVzdHJhdGlvbiBvZiB0aGUgbGVhcm5pbmcgY3VydmUgb2Ygc3R1ZGVudHMNCit3aG8gdXNlZCBTdXBlckJvb2suKQ0KKw0KK1RoZSBzdHVkZW50cyB1c2luZyB0aGUgZWxlY3Ryb25pYyBzeXN0ZW1zIHN0YXJ0ZWQgb2ZmIHdvcnNlIHRoYW4gdGhlIG9uZXMNCit1c2luZyBwcmludCwgYnV0IGJ5IHRoZSB0aGlyZCBvZiB0aGUgdGhyZWUgc2Vzc2lvbnMgaW4gdGhlIHNlcmllcyBoYWQNCitjYXVnaHQgdXAgdG8gcHJpbnQuICBBcyBvbmUgbWlnaHQgZXhwZWN0LCBlbGVjdHJvbmljcyBwcm92aWRlIGEgbXVjaA0KK2JldHRlciBtZWFucyBvZiBmaW5kaW5nIHdoYXQgb25lIHdhbnRzIHRvIHJlYWQ7IHJlYWRpbmcgc3BlZWRzLCBvbmNlIHRoZQ0KK29iamVjdCBvZiB0aGUgc2VhcmNoIGhhcyBiZWVuIGZvdW5kLCBhcmUgYWJvdXQgdGhlIHNhbWUuDQorDQorQWxtb3N0IG5vbmUgb2YgdGhlIHN0dWRlbnRzIGNvdWxkIHBlcmZvcm0gdGhlIGhhcmQgdGFzay0tdGhlIGFuYWxvZ291cw0KK3RyYW5zZm9ybWF0aW9uLiAgKEl0IHdvdWxkIHJlcXVpcmUgdGhlIGV4cGVydGlzZSBvZiBvcmdhbmljIGNoZW1pc3RzIHRvDQorY29tcGxldGUuKSAgQnV0IGFuIGludGVyZXN0aW5nIHJlc3VsdCB3YXMgdGhhdCB0aGUgc3R1ZGVudHMgdXNpbmcgdGhlIHRleHQNCitzZWFyY2ggcGVyZm9ybWVkIHRlcnJpYmx5LCB3aGlsZSB0aG9zZSB1c2luZyB0aGUgaW1hZ2Ugc3lzdGVtIGRpZCBiZXN0Lg0KK1RoYXQgdGhlIHRleHQgc2VhcmNoIHN5c3RlbSBpcyBkcml2ZW4gYnkgdGV4dCBvZmZlcnMgdGhlIGV4cGxhbmF0aW9uLg0KK0V2ZXJ5dGhpbmcgaXMgZm9jdXNlZCBvbiB0aGUgdGV4dDsgdG8gc2VlIHRoZSBwaWN0dXJlcywgb25lIG11c3QgcHJlc3MNCitvbiBhbiBpY29uLiAgTWFueSBzdHVkZW50cyBmb3VuZCB0aGUgcmlnaHQgYXJ0aWNsZSBjb250YWluaW5nIHRoZSBhbnN3ZXINCit0byB0aGUgcXVlc3Rpb24sIGJ1dCB0aGV5IGRpZCBub3QgY2xpY2sgb24gdGhlIGljb24gdG8gYnJpbmcgdXAgdGhlIHJpZ2h0DQorZmlndXJlIGFuZCBzZWUgaXQuICBUaGV5IGRpZCBub3Qga25vdyB0aGF0IHRoZXkgaGFkIGZvdW5kIHRoZSByaWdodCBwbGFjZSwNCithbmQgdGh1cyBnb3QgaXQgd3JvbmcuDQorDQorVGhlIHNob3J0IGFuc3dlciBkZW1vbnN0cmF0ZWQgYnkgdGhpcyBleHBlcmltZW50IHdhcyB0aGF0IGluIHRoZSBldmVudA0KK29uZSBkb2VzIG5vdCBrbm93IHdoYXQgdG8gcmVhZCwgb25lIG5lZWRzIHRoZSBlbGVjdHJvbmljIHN5c3RlbXM7IHRoZQ0KK2VsZWN0cm9uaWMgc3lzdGVtcyBob2xkIG5vIGFkdmFudGFnZSBhdCB0aGUgbW9tZW50IGlmIG9uZSBrbm93cyB3aGF0IHRvDQorcmVhZCwgYnV0IG5laXRoZXIgZG8gdGhleSBpbXBvc2UgYSBwZW5hbHR5Lg0KKw0KK0xFU0sgY29uY2x1ZGVkIGJ5IGNvbW1lbnRpbmcgdGhhdCwgb24gb25lIGhhbmQsIHRoZSBpbWFnZSBzeXN0ZW0gd2FzIGVhc3kNCit0byB1c2UuICBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHRleHQgZGlzcGxheSBzeXN0ZW0sIHdoaWNoIHJlcHJlc2VudGVkDQordHdlbnR5IG1hbi15ZWFycyBvZiB3b3JrIGluIHByb2dyYW1taW5nIGFuZCBwb2xpc2hpbmcsIHdhcyBub3Qgd2lubmluZywNCitiZWNhdXNlIHRoZSB0ZXh0IHdhcyBub3QgYmVpbmcgcmVhZCwganVzdCBzZWFyY2hlZC4gIFRoZSBtdWNoIGVhc2llcg0KK3N5c3RlbSBpcyBoaWdobHkgY29tcGV0aXRpdmUgYXMgd2VsbCBhcyByZW1hcmthYmx5IGVmZmVjdGl2ZSBmb3IgdGhlDQorYWN0dWFsIGNoZW1pc3RzLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitFUldBWSAqIE1vc3QgY2hhbGxlbmdpbmcgYXNwZWN0IG9mIHdvcmtpbmcgb24gQU0gKiBBc3N1bXB0aW9ucyBndWlkaW5nDQorQU0ncyBhcHByb2FjaCAqIFRlc3RpbmcgZGlmZmVyZW50IHR5cGVzIG9mIHNlcnZpY2UgYnVyZWF1cyAqIEFNJ3MNCityZXF1aXJlbWVudCBmb3IgOTkuOTUgcGVyY2VudCBhY2N1cmFjeSAqIFJlcXVpcmVtZW50cyBmb3IgdGV4dC1jb2RpbmcgKg0KK0FkZGl0aW9uYWwgZmFjdG9ycyBpbmZsdWVuY2luZyBBTSdzIGFwcHJvYWNoIHRvIGNvZGluZyAqIFJlc3VsdHMgb2YgQU0ncw0KK2V4cGVyaWVuY2Ugd2l0aCByZWtleWluZyAqIE90aGVyIHByb2JsZW1zIGluIGRlYWxpbmcgd2l0aCBzZXJ2aWNlIGJ1cmVhdXMNCisqIFF1YWxpdHkgY29udHJvbCB0aGUgbW9zdCB0aW1lLWNvbnN1bWluZyBhc3BlY3Qgb2YgY29udHJhY3Rpbmcgb3V0DQorY29udmVyc2lvbiAqIExvbmctdGVybSBvdXRsb29rIHVuY2VydGFpbiAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK1RvIFJpY2t5IEVSV0FZLCBhc3NvY2lhdGUgY29vcmRpbmF0b3IsIEFtZXJpY2FuIE1lbW9yeSwgTGlicmFyeSBvZg0KK0NvbmdyZXNzLCB0aGUgY29uc3RhbnQgdmFyaWV0eSBvZiBjb252ZXJzaW9uIHByb2plY3RzIHRha2luZyBwbGFjZQ0KK3NpbXVsdGFuZW91c2x5IHJlcHJlc2VudGVkIHBlcmhhcHMgdGhlIG1vc3QgY2hhbGxlbmdpbmcgYXNwZWN0IG9mIHdvcmtpbmcNCitvbiBBTS4gIFRodXMsIHRoZSBjaGFsbGVuZ2Ugd2FzIG5vdCB0byBmaW5kIGEgc29sdXRpb24gZm9yIHRleHQNCitjb252ZXJzaW9uIGJ1dCBhIHRvb2wga2l0IG9mIHNvbHV0aW9ucyB0byBhcHBseSB0byBMQydzIHZhcmllZA0KK2NvbGxlY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBjb252ZXJ0ZWQuICBFUldBWSBsaW1pdGVkIGhlciByZW1hcmtzIHRvIHRoZQ0KK3Byb2Nlc3Mgb2YgY29udmVydGluZyB0ZXh0IHRvIG1hY2hpbmUtcmVhZGFibGUgZm9ybSwgYW5kIHRoZSB2YXJpZXR5IG9mDQorTEMncyB0ZXh0IGNvbGxlY3Rpb25zLCBmb3IgZXhhbXBsZSwgYm91bmQgdm9sdW1lcywgbWljcm9maWxtLCBhbmQNCitoYW5kd3JpdHRlbiBtYW51c2NyaXB0cy4NCisNCitUd28gYXNzdW1wdGlvbnMgaGF2ZSBndWlkZWQgQU0ncyBhcHByb2FjaCwgRVJXQVkgc2FpZDogIDEpIEEgZGVzaXJlIG5vdA0KK3RvIHBlcmZvcm0gdGhlIGNvbnZlcnNpb24gaW5ob3VzZS4gIEJlY2F1c2Ugb2YgdGhlIHZhcmlldHkgb2YgZm9ybWF0cyBhbmQNCit0eXBlcyBvZiB0ZXh0cywgdG8gY2FwaXRhbGl6ZSB0aGUgZXF1aXBtZW50IGFuZCBoYXZlIHRoZSB0YWxlbnRzIGFuZA0KK3NraWxscyB0byBvcGVyYXRlIHRoZW0gYXQgTEMgd291bGQgYmUgZXh0cmVtZWx5IGV4cGVuc2l2ZS4gIEZ1cnRoZXIsIHRoZQ0KK25hdHVyYWwgaW5jbGluYXRpb24gdG8gdXBncmFkZSB0byBuZXdlciBhbmQgYmV0dGVyIGVxdWlwbWVudCBlYWNoIHllYXINCittYWRlIGl0IHJlYXNvbmFibGUgZm9yIEFNIHRvIGZvY3VzIG9uIHdoYXQgaXQgZGlkIGJlc3QgYW5kIHNlZWsgZXh0ZXJuYWwNCitjb252ZXJzaW9uIHNlcnZpY2VzLiAgVXNpbmcgc2VydmljZSBidXJlYXVzIGFsc28gYWxsb3dlZCBBTSB0byBoYXZlDQorc2V2ZXJhbCB0eXBlcyBvZiBvcGVyYXRpb25zIHRha2UgcGxhY2UgYXQgdGhlIHNhbWUgdGltZS4gIDIpIEFNIHdhcyBub3QgYQ0KK3RlY2hub2xvZ3kgcHJvamVjdCwgYnV0IGFuIGVmZm9ydCB0byBpbXByb3ZlIGFjY2VzcyB0byBsaWJyYXJ5DQorY29sbGVjdGlvbnMuICBIZW5jZSwgd2hldGhlciB0ZXh0IHdhcyBjb252ZXJ0ZWQgdXNpbmcgT0NSIG9yIHJla2V5aW5nDQorbWF0dGVyZWQgbGl0dGxlIHRvIEFNLiAgV2hhdCBtYXR0ZXJlZCB3ZXJlIGNvc3QgYW5kIGFjY3VyYWN5IG9mIHJlc3VsdHMuDQorDQorQU0gY29uc2lkZXJlZCBkaWZmZXJlbnQgdHlwZXMgb2Ygc2VydmljZSBidXJlYXVzIGFuZCBzZWxlY3RlZCB0aHJlZSB0bw0KK3BlcmZvcm0gc2V2ZXJhbCBzbWFsbCB0ZXN0cyBpbiBvcmRlciB0byBhY3F1aXJlIGEgc2Vuc2Ugb2YgdGhlIGZpZWxkLiANCitUaGUgc2FtcGxlIGNvbGxlY3Rpb25zIHdpdGggd2hpY2ggdGhleSB3b3JrZWQgaW5jbHVkZWQgaGFuZHdyaXR0ZW4NCitjb3JyZXNwb25kZW5jZSwgdHlwZXdyaXR0ZW4gbWFudXNjcmlwdHMgZnJvbSB0aGUgMTk0MHMsIGFuZA0KK2VpZ2h0ZWVudGgtY2VudHVyeSBwcmludGVkIGJyb2Fkc2lkZXMgb24gbWljcm9maWxtLiAgT24gbm9uZSBvZiB0aGVzZQ0KK3NhbXBsZXMgd2FzIE9DUiBwZXJmb3JtZWQ7IHRoZXkgd2VyZSBhbGwgcmVrZXllZC4gIEFNIGhhZCBzZXZlcmFsIHNwZWNpYWwNCityZXF1aXJlbWVudHMgZm9yIHRoZSB0aHJlZSBzZXJ2aWNlIGJ1cmVhdXMgaXQgaGFkIGVuZ2FnZWQuICBGb3IgaW5zdGFuY2UsDQorYW55IGVycm9ycyBpbiB0aGUgb3JpZ2luYWwgdGV4dCB3ZXJlIHRvIGJlIHJldGFpbmVkLiAgV29ya2luZyBmcm9tIGJvdW5kDQordm9sdW1lcyBvciBhbnl0aGluZyB0aGF0IGNvdWxkIG5vdCBiZSBzaGVldC1mZWQgYWxzbyBjb25zdGl0dXRlZCBhIGZhY3Rvcg0KK2VsaW1pbmF0aW5nIGNvbXBhbmllcyB0aGF0IHdvdWxkIGhhdmUgcGVyZm9ybWVkIE9DUi4NCisNCitBTSByZXF1aXJlcyA5OS45NSBwZXJjZW50IGFjY3VyYWN5LCB3aGljaCwgdGhvdWdoIGl0IHNvdW5kcyBoaWdoLCBvZnRlbg0KK21lYW5zIG9uZSBvciB0d28gZXJyb3JzIHBlciBwYWdlLiAgVGhlIGluaXRpYWwgYmF0Y2ggb2YgdGVzdCBzYW1wbGVzDQorY29udGFpbmVkIHNldmVyYWwgaGFuZHdyaXR0ZW4gbWF0ZXJpYWxzIGZvciB3aGljaCBBTSBkaWQgbm90IHJlcXVpcmUNCit0ZXh0LWNvZGluZy4gIFRoZSByZXN1bHRzLCBFUldBWSByZXBvcnRlZCwgd2VyZSBpbiBhbGwgY2FzZXMgZmFpcmx5DQorY29tcGFyYWJsZTogIGZvciB0aGUgbW9zdCBwYXJ0LCBhbGwgdGhyZWUgc2VydmljZSBidXJlYXVzIGFjaGlldmVkIDk5Ljk1DQorcGVyY2VudCBhY2N1cmFjeS4gIEFNIHdhcyBzYXRpc2ZpZWQgd2l0aCB0aGUgd29yayBidXQgc3VycHJpc2VkIGF0IHRoZSBjb3N0Lg0KKw0KK0FzIEFNIGJlZ2FuIGNvbnZlcnRpbmcgd2hvbGUgY29sbGVjdGlvbnMsIGl0IHJldGFpbmVkIHRoZSByZXF1aXJlbWVudCBmb3INCis5OS45NSBwZXJjZW50IGFjY3VyYWN5IGFuZCBhZGRlZCByZXF1aXJlbWVudHMgZm9yIHRleHQtY29kaW5nLiAgQU0gbmVlZGVkDQordG8gYmVnaW4gcGVyZm9ybWluZyB3b3JrIG1vcmUgdGhhbiB0aHJlZSB5ZWFycyBhZ28gYmVmb3JlIExDIHJlcXVpcmVtZW50cw0KK2ZvciBTR01MIGFwcGxpY2F0aW9ucyBoYWQgYmVlbiBlc3RhYmxpc2hlZC4gIFNpbmNlIEFNJ3MgZ29hbCB3YXMgc2ltcGx5DQordG8gcmV0YWluIGFueSBvZiB0aGUgaW50ZWxsZWN0dWFsIGNvbnRlbnQgcmVwcmVzZW50ZWQgYnkgdGhlIGZvcm1hdHRpbmcNCitvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdvdWxkIGJlIGxvc3QgaWYgb25lIHBlcmZvcm1lZCBhIHN0cmFpZ2h0IEFTQ0lJDQorY29udmVyc2lvbiksIEFNIHVzZWQgIlNHTUwtbGlrZSIgY29kZXMuICBUaGVzZSBjb2RlcyByZXNlbWJsZWQgU0dNTCB0YWdzDQorYnV0IHdlcmUgdXNlZCB3aXRob3V0IHRoZSBiZW5lZml0IG9mIGRvY3VtZW50LXR5cGUgZGVmaW5pdGlvbnMuICBBTSBmb3VuZA0KK3RoYXQgbWFueSBzZXJ2aWNlIGJ1cmVhdXMgd2VyZSBub3QgeWV0IFNHTUwtcHJvZmljaWVudC4NCisNCitBZGRpdGlvbmFsIGZhY3RvcnMgaW5mbHVlbmNpbmcgdGhlIGFwcHJvYWNoIEFNIHRvb2sgd2l0aCByZXNwZWN0IHRvDQorY29kaW5nIGluY2x1ZGVkOiAgMSkgdGhlIGluYWJpbGl0eSBvZiBhbnkga25vd24gbWljcm9jb21wdXRlci1iYXNlZA0KK3VzZXItcmV0cmlldmFsIHNvZnR3YXJlIHRvIHRha2UgYWR2YW50YWdlIG9mIFNHTUwgY29kaW5nOyBhbmQgMikgdGhlDQorbXVsdGlwbGUgaW5jb25zaXN0ZW5jaWVzIGluIGZvcm1hdCBvZiB0aGUgb2xkZXIgZG9jdW1lbnRzLCB3aGljaA0KK2NvbmZpcm1lZCBBTSBpbiBpdHMgZGVzaXJlIG5vdCB0byBhdHRlbXB0IHRvIGZvcmNlIHRoZSBkaWZmZXJlbnQgZm9ybWF0cw0KK3RvIGNvbmZvcm0gdG8gYSBzaW5nbGUgZG9jdW1lbnQtdHlwZSBkZWZpbml0aW9uIChEVEQpIGFuZCB0aHVzIGNyZWF0ZSB0aGUNCituZWVkIGZvciBhIHNlcGFyYXRlIERURCBmb3IgZWFjaCBkb2N1bWVudC4gDQorDQorVGhlIGZpdmUgdGV4dCBjb2xsZWN0aW9ucyB0aGF0IEFNIGhhcyBjb252ZXJ0ZWQgb3IgaXMgaW4gdGhlIHByb2Nlc3Mgb2YNCitjb252ZXJ0aW5nIGluY2x1ZGUgYSBjb2xsZWN0aW9uIG9mIGVpZ2h0ZWVudGgtY2VudHVyeSBicm9hZHNpZGVzLCBhDQorY29sbGVjdGlvbiBvZiBwYW1waGxldHMsIHR3byB0eXBlc2NyaXB0IGRvY3VtZW50IGNvbGxlY3Rpb25zLCBhbmQgYQ0KK2NvbGxlY3Rpb24gb2YgMTUwIGJvb2tzLg0KKw0KK0VSV0FZIG5leHQgcmV2aWV3ZWQgdGhlIHJlc3VsdHMgb2YgQU0ncyBleHBlcmllbmNlIHdpdGggcmVrZXlpbmcsIG5vdGluZw0KK2FnYWluIHRoYXQgYmVjYXVzZSB0aGUgYnVsayBvZiBBTSdzIG1hdGVyaWFscyBhcmUgaGlzdG9yaWNhbCwgdGhlIHF1YWxpdHkNCitvZiB0aGUgdGV4dCBvZnRlbiBkb2VzIG5vdCBsZW5kIGl0c2VsZiB0byBPQ1IuICBXaGlsZSBub24tRW5nbGlzaA0KK3NwZWFrZXJzIGFyZSBsZXNzIGxpa2VseSB0byBndWVzcyBvciBlbGFib3JhdGUgb3IgY29ycmVjdCB0eXBvcyBpbiB0aGUNCitvcmlnaW5hbCB0ZXh0LCB0aGV5IGFyZSBhbHNvIGxlc3MgYWJsZSB0byBpbmZlciB3aGF0IHdlIHdvdWxkOyB0aGV5IGFsc28NCithcmUgbmVhcmx5IGluY2FwYWJsZSBvZiBjb252ZXJ0aW5nIGhhbmR3cml0dGVuIHRleHQuICBBbm90aGVyDQorZGlzYWR2YW50YWdlIG9mIHdvcmtpbmcgd2l0aCBvdmVyc2VhcyBrZXllcnMgaXMgdGhhdCB0aGV5IGFyZSBtdWNoIGxlc3MNCitsaWtlbHkgdG8gdGVsZXBob25lIHdpdGggcXVlc3Rpb25zLCBlc3BlY2lhbGx5IG9uIHRoZSBjb2RpbmcsIHdpdGggdGhlDQorcmVzdWx0IHRoYXQgdGhleSBkZXZlbG9wIHRoZWlyIG93biBydWxlcyBhcyB0aGV5IGVuY291bnRlciBuZXcNCitzaXR1YXRpb25zLg0KKw0KK0dvdmVybm1lbnQgY29udHJhY3RpbmcgcHJvY2VkdXJlcyBhbmQgdGltZSBmcmFtZXMgcG9zZWQgYSBtYWpvciBjaGFsbGVuZ2UNCit0byBwZXJmb3JtaW5nIHRoZSBjb252ZXJzaW9uLiAgTWFueSBzZXJ2aWNlIGJ1cmVhdXMgYXJlIG5vdCBhY2N1c3RvbWVkIHRvDQorcmV0YWluaW5nIHRoZSBpbWFnZSwgZXZlbiBpZiB0aGV5IHBlcmZvcm0gT0NSLiAgVGh1cywgcXVlc3Rpb25zIG9mIGltYWdlDQorZm9ybWF0IGFuZCBzdG9yYWdlIG1lZGlhIHdlcmUgc29tZXdoYXQgbm92ZWwgdG8gbWFueSBvZiB0aGVtLiAgRVJXQVkgYWxzbw0KK3JlbWFya2VkIG90aGVyIHByb2JsZW1zIGluIGRlYWxpbmcgd2l0aCBzZXJ2aWNlIGJ1cmVhdXMsIGZvciBleGFtcGxlLA0KK3RoZWlyIGluYWJpbGl0eSB0byBwZXJmb3JtIHRleHQgY29udmVyc2lvbiBmcm9tIHRoZSBraW5kIG9mIG1pY3JvZmlsbQ0KK3RoYXQgTEMgdXNlcyBmb3IgcHJlc2VydmF0aW9uIHB1cnBvc2VzLg0KKw0KK0J1dCBxdWFsaXR5IGNvbnRyb2wsIGluIEVSV0FZJ3MgZXhwZXJpZW5jZSwgd2FzIHRoZSBtb3N0IHRpbWUtY29uc3VtaW5nDQorYXNwZWN0IG9mIGNvbnRyYWN0aW5nIG91dCBjb252ZXJzaW9uLiAgQU0gaGFzIGJlZW4gYXR0ZW1wdGluZyB0byBwZXJmb3JtDQorYSAxMC1wZXJjZW50IHF1YWxpdHkgcmV2aWV3LCBsb29raW5nIGF0IGVpdGhlciBldmVyeSB0ZW50aCBkb2N1bWVudCBvcg0KK2V2ZXJ5IHRlbnRoIHBhZ2UgdG8gbWFrZSBjZXJ0YWluIHRoYXQgdGhlIHNlcnZpY2UgYnVyZWF1cyBhcmUgbWFpbnRhaW5pbmcNCis5OS45NSBwZXJjZW50IGFjY3VyYWN5LiAgQnV0IGV2ZW4gaWYgdGhleSBhcmUgY29tcGx5aW5nIHdpdGggdGhlDQorcmVxdWlyZW1lbnQgZm9yIGFjY3VyYWN5LCBmaW5kaW5nIGVycm9ycyBwcm9kdWNlcyBhIGRlc2lyZSB0byBjb3JyZWN0DQordGhlbSBhbmQsIGluIHR1cm4sIHRvIGNsZWFuIHVwIHRoZSB3aG9sZSBjb2xsZWN0aW9uLCB3aGljaCBkZWZlYXRzIHRoZQ0KK3B1cnBvc2UgdG8gc29tZSBleHRlbnQuICBFdmVuIGEgZG91YmxlIGVudHJ5IHJlcXVpcmVzIGENCitjaGFyYWN0ZXItYnktY2hhcmFjdGVyIGNvbXBhcmlzb24gdG8gdGhlIG9yaWdpbmFsIHRvIG1lZXQgdGhlIGFjY3VyYWN5DQorcmVxdWlyZW1lbnQuICBMQyBpcyBub3QgYWNjdXN0b21lZCB0byBwdWJsaXNoIGltcGVyZmVjdCB0ZXh0cywgd2hpY2gNCittYWtlcyBhdHRlbXB0aW5nIHRvIGRlYWwgd2l0aCB0aGUgaW5kdXN0cnkgc3RhbmRhcmQgYW4gZW1vdGlvbmFsbHkNCitmcmF1Z2h0IGlzc3VlIGZvciBBTS4gIEFzIHdhcyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIGRheSdzIGRpc2N1c3Npb24sDQorZ29pbmcgZnJvbSA5OS45NSB0byA5OS45OSBwZXJjZW50IGFjY3VyYWN5IHVzdWFsbHkgZG91YmxlcyBjb3N0cyBhbmQNCittZWFucyBhIHRoaXJkIGtleWluZyBvciBhbm90aGVyIGNvbXBsZXRlIHJ1bi10aHJvdWdoIG9mIHRoZSB0ZXh0Lg0KKw0KK0FsdGhvdWdoIEFNIGhhcyBsZWFybmVkIG11Y2ggZnJvbSBpdHMgZXhwZXJpZW5jZXMgd2l0aCB2YXJpb3VzIGNvbGxlY3Rpb25zDQorYW5kIHZhcmlvdXMgc2VydmljZSBidXJlYXVzLCBFUldBWSBjb25jbHVkZWQgcGVzc2ltaXN0aWNhbGx5IHRoYXQgbm8NCiticmVha3Rocm91Z2ggaGFzIGJlZW4gYWNoaWV2ZWQuICAgSW5jcmVtZW50YWwgaW1wcm92ZW1lbnRzIGhhdmUgb2NjdXJyZWQNCitpbiBzb21lIG9mIHRoZSBPQ1IgdGVjaG5vbG9neSwgc29tZSBvZiB0aGUgcHJvY2Vzc2VzLCBhbmQgc29tZSBvZiB0aGUNCitzdGFuZGFyZHMgYWNjZXB0YW5jZXMsIHdoaWNoLCB0aG91Z2ggdGhleSBtYXkgbGVhZCB0byBzb21ld2hhdCBsb3dlciBjb3N0cywNCitkbyBub3Qgb2ZmZXIgbXVjaCBlbmNvdXJhZ2VtZW50IHRvIG1hbnkgcGVvcGxlIHdobyBhcmUgYW54aW91c2x5IGF3YWl0aW5nDQordGhlIGRheSB0aGF0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgTEMgYXJlIGF2YWlsYWJsZSBvbi1saW5lLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitaSURBUiAqIFNldmVyYWwgYW5zd2VycyB0byB3aHkgb25lIGF0dGVtcHRzIHRvIHBlcmZvcm0gZnVsbC10ZXh0DQorY29udmVyc2lvbiAqIFBlciBwYWdlIGNvc3Qgb2YgcGVyZm9ybWluZyBPQ1IgKiBUeXBpY2FsIHByb2JsZW1zDQorZW5jb3VudGVyZWQgZHVyaW5nIGVkaXRpbmcgKiBFZGl0aW5nIHBvb3IgY29weSBPQ1IgdnMuIHJla2V5aW5nICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorSnVkaXRoIFpJREFSLCBjb29yZGluYXRvciwgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIFRleHQgRGlnaXRpemluZyBQcm9ncmFtDQorKE5BVERQKSwgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIExpYnJhcnkgKE5BTCksIG9mZmVyZWQgc2V2ZXJhbCBhbnN3ZXJzIHRvDQordGhlIHF1ZXN0aW9uIG9mIHdoeSBvbmUgYXR0ZW1wdHMgdG8gcGVyZm9ybSBmdWxsLXRleHQgY29udmVyc2lvbjogIDEpDQorVGV4dCBpbiBhbiBpbWFnZSBjYW4gYmUgcmVhZCBieSBhIGh1bWFuIGJ1dCBub3QgYnkgYSBjb21wdXRlciwgc28gb2YNCitjb3Vyc2UgaXQgaXMgbm90IHNlYXJjaGFibGUgYW5kIHRoZXJlIGlzIG5vdCBtdWNoIG9uZSBjYW4gZG8gd2l0aCBpdC4gIDIpDQorU29tZSBtYXRlcmlhbCBzaW1wbHkgcmVxdWlyZXMgd29yZC1sZXZlbCBhY2Nlc3MuICBGb3IgaW5zdGFuY2UsIHRoZSBsZWdhbA0KK3Byb2Zlc3Npb24gaW5zaXN0cyBvbiBmdWxsLXRleHQgYWNjZXNzIHRvIGl0cyBtYXRlcmlhbDsgd2l0aCB0YXhvbm9taWMgb3INCitnZW9ncmFwaGljIG1hdGVyaWFsLCB3aGljaCBlbnRhaWxzIG51bWVyb3VzIG5hbWVzLCBvbmUgdmlydHVhbGx5IHJlcXVpcmVzDQord29yZC1sZXZlbCBhY2Nlc3MuICAzKSBGdWxsIHRleHQgcGVybWl0cyByYXBpZCBicm93c2luZyBhbmQgc2VhcmNoaW5nLA0KK3NvbWV0aGluZyB0aGF0IGNhbm5vdCBiZSBhY2hpZXZlZCBpbiBhbiBpbWFnZSB3aXRoIHRvZGF5J3MgdGVjaG5vbG9neS4gDQorNCkgVGV4dCBzdG9yZWQgYXMgQVNDSUkgYW5kIGRlbGl2ZXJlZCBpbiBBU0NJSSBpcyBzdGFuZGFyZGl6ZWQgYW5kIGhpZ2hseQ0KK3BvcnRhYmxlLiAgNSkgUGVvcGxlIGp1c3Qgd2FudCBmdWxsLXRleHQgc2VhcmNoaW5nLCBldmVuIHRob3NlIHdobyBkbyBub3QNCitrbm93IGhvdyB0byBkbyBpdC4gIE5BTCwgZm9yIHRoZSBtb3N0IHBhcnQsIGlzIHBlcmZvcm1pbmcgT0NSIGF0IGFuDQorYWN0dWFsIGNvc3QgcGVyIGF2ZXJhZ2Utc2l6ZSBwYWdlIG9mIGFwcHJveGltYXRlbHkgJDcuICBOQUwgc2NhbnMgdGhlDQorcGFnZSB0byBjcmVhdGUgdGhlIGVsZWN0cm9uaWMgaW1hZ2UgYW5kIHBhc3NlcyBpdCB0aHJvdWdoIHRoZSBPQ1IgZGV2aWNlLg0KKw0KK1pJREFSIG5leHQgcmVoZWFyc2VkIHNldmVyYWwgdHlwaWNhbCBwcm9ibGVtcyBlbmNvdW50ZXJlZCBkdXJpbmcgZWRpdGluZy4gDQorUHJhaXNpbmcgdGhlIGNlbGVyaXR5IG9mIGhlciBzdHVkZW50IHdvcmtlcnMsIFpJREFSIG9ic2VydmVkIHRoYXQgZWRpdGluZw0KK3JlcXVpcmVzIGFwcHJveGltYXRlbHkgZml2ZSB0byB0ZW4gbWludXRlcyBwZXIgcGFnZSwgYXNzdW1pbmcgdGhhdCB0aGVyZQ0KK2FyZSBubyBsYXJnZSB0YWJsZXMgdG8gYXVkaXQuICBDb25mdXNpb24gYW1vbmcgdGhlIHRocmVlIGNoYXJhY3RlcnMgSSwgMSwgDQorYW5kIGwsIGNvbnN0aXR1dGVzIHBlcmhhcHMgdGhlIG1vc3QgY29tbW9uIHByb2JsZW0gZW5jb3VudGVyZWQuICBaZXJvZXMNCithbmQgIE8ncyBhbHNvIGFyZSAgZnJlcXVlbnRseSBjb25mdXNlZC4gIERvdWJsZSBNJ3MgY3JlYXRlIGEgcGFydGljdWxhcg0KK3Byb2JsZW0sIGV2ZW4gb24gY2xlYW4gcGFnZXMuICBUaGV5IGFyZSBzbyB3aWRlIGluIG1vc3QgZm9udHMgdGhhdCB0aGV5DQordG91Y2gsIGFuZCB0aGUgc3lzdGVtIHNpbXBseSBjYW5ub3QgdGVsbCB3aGVyZSBvbmUgbGV0dGVyIGVuZHMgYW5kIHRoZQ0KK290aGVyIGJlZ2lucy4gIENvbXBsZXggcGFnZSBmb3JtYXRzIG9jY2FzaW9uYWxseSBmYWlsIHRvIGNvbHVtbmF0ZQ0KK3Byb3Blcmx5LCB3aGljaCBlbnRhaWxzIHJlc2Nhbm5pbmcgYXMgdGhvdWdoIG9uZSB3ZXJlIHdvcmtpbmcgd2l0aCBhDQorc2luZ2xlIGNvbHVtbiwgZW50ZXJpbmcgdGhlIEFTQ0lJLCBhbmQgZGVjb2x1bW5hdGluZyBmb3IgYmV0dGVyDQorc2VhcmNoaW5nLiAgV2l0aCBwcm9wb3J0aW9uYWxseSBzcGFjZWQgdGV4dCwgT0NSIGNhbiBoYXZlIGRpZmZpY3VsdHkNCitkaXNjZXJuaW5nIHdoYXQgaXMgYSBzcGFjZSBhbmQgd2hhdCBhcmUgbWVyZWx5IHNwYWNlcyBiZXR3ZWVuIGxldHRlcnMsIGFzDQorb3Bwb3NlZCB0byBzcGFjZXMgYmV0d2VlbiB3b3JkcywgYW5kIHRoZXJlZm9yZSB3aWxsIG1lcmdlIHRleHQgb3IgYnJlYWsNCit1cCB3b3JkcyB3aGVyZSBpdCBzaG91bGQgbm90Lg0KKw0KK1pJREFSIHNhaWQgdGhhdCBpdCBjYW4gb2Z0ZW4gdGFrZSBsb25nZXIgdG8gZWRpdCBhIHBvb3ItY29weSBPQ1IgdGhhbiB0bw0KK2tleSBpdCBmcm9tIHNjcmF0Y2guICBOQUwgaGFzIGFsc28gZXhwZXJpbWVudGVkIHdpdGggcGFydGlhbCBlZGl0aW5nIG9mDQordGV4dCwgd2hlcmVieSBwcm9qZWN0IHdvcmtlcnMgZ28gaW50byBhbmQgY2xlYW4gdXAgdGhlIGZvcm1hdCwgcmVtb3ZpbmcNCitzdHJheSBjaGFyYWN0ZXJzIGJ1dCBub3QgcnVubmluZyBhIHNwZWxsLWNoZWNrLiAgTkFMIGNvcnJlY3RzIHR5cG9zIGluDQordGhlIHRpdGxlIGFuZCBhdXRob3JzJyBuYW1lcywgd2hpY2ggcHJvdmlkZXMgYSBmb290aG9sZCBmb3Igc2VhcmNoaW5nIGFuZA0KK2Jyb3dzaW5nLiAgRXZlbiBleHRyZW1lbHkgcG9vci1xdWFsaXR5IE9DUiAoZS5nLiwgNjAtcGVyY2VudCBhY2N1cmFjeSkNCitjYW4gc3RpbGwgYmUgc2VhcmNoZWQsIGJlY2F1c2UgbnVtZXJvdXMgd29yZHMgYXJlIGNvcnJlY3QsIHdoaWxlIHRoZQ0KK2ltcG9ydGFudCB3b3JkcyBhcmUgcHJvYmFibHkgcmVwZWF0ZWQgb2Z0ZW4gZW5vdWdoIHRoYXQgdGhleSBhcmUgbGlrZWx5DQordG8gYmUgZm91bmQgY29ycmVjdCBzb21ld2hlcmUuICBMaWJyYXJpYW5zLCBob3dldmVyLCBjYW5ub3QgdG9sZXJhdGUgdGhpcw0KK3NpdHVhdGlvbiwgdGhvdWdoIGVuZCB1c2VycyBzZWVtIG1vcmUgd2lsbGluZyB0byB1c2UgdGhpcyB0ZXh0IGZvcg0KK3NlYXJjaGluZywgcHJvdmlkZWQgdGhhdCBOQUwgaW5kaWNhdGVzIHRoYXQgaXQgaXMgdW5lZGl0ZWQuICBaSURBUg0KK2NvbmNsdWRlZCB0aGF0IHJla2V5aW5nIG9mIHRleHQgbWF5IGJlIHRoZSBiZXN0IHJvdXRlIHRvIHRha2UsIGluIHNwaXRlDQorb2YgbnVtZXJvdXMgcHJvYmxlbXMgd2l0aCBxdWFsaXR5IGNvbnRyb2wgYW5kIGNvc3QuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0RJU0NVU1NJT04gKiBNb2RpZnlpbmcgYW4gaW1hZ2UgYmVmb3JlIHBlcmZvcm1pbmcgT0NSICogTkFMJ3MgY29zdHMgcGVyDQorcGFnZSAqQU0ncyBjb3N0cyBwZXIgcGFnZSBhbmQgZXhwZXJpZW5jZSB3aXRoIEZlZGVyYWwgUHJpc29uIEluZHVzdHJpZXMgKg0KK0VsZW1lbnRzIGNvbXByaXNpbmcgTkFURFAncyBjb3N0cyBwZXIgcGFnZSAqIE9DUiBhbmQgc3RydWN0dXJlZCBtYXJrdXAgKg0KK0Rpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHN0cnVjdHVyZSBvZiBhIGRvY3VtZW50IGFuZCBpdHMgcmVwcmVzZW50YXRpb24NCit3aGVuIHB1dCBvbiB0aGUgc2NyZWVuIG9yIHByaW50ZWQgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitIT09UT04gcHJlZmFjZWQgdGhlIGxlbmd0aHkgZGlzY3Vzc2lvbiB0aGF0IGZvbGxvd2VkIHdpdGggc2V2ZXJhbA0KK2NvbW1lbnRzIGFib3V0IG1vZGlmeWluZyBhbiBpbWFnZSBiZWZvcmUgb25lIHJlYWNoZXMgdGhlIHBvaW50IG9mDQorcGVyZm9ybWluZyBPQ1IuICBGb3IgZXhhbXBsZSwgaW4gcmVnYXJkIHRvIGFuIGFwcGxpY2F0aW9uIGNvbnRhaW5pbmcgYQ0KK3NpZ25pZmljYW50IGFtb3VudCBvZiByZWR1bmRhbnQgZGF0YSwgc3VjaCBhcyBmb3JtLXR5cGUgZGF0YSwgbnVtZXJvdXMNCitjb21wYW5pZXMgdG9kYXkgYXJlIHdvcmtpbmcgb24gdmFyaW91cyBraW5kcyBvZiBmb3JtIHJlbmV3YWwsIHByaW9yIHRvDQorZ29pbmcgdGhyb3VnaCBhIHJlY29nbml0aW9uIHByb2Nlc3MsIGJ5IHVzaW5nIGRyb3BvdXQgY29sb3JzLiAgVGh1cywNCithY3F1aXJpbmcgYWNjZXNzIHRvIGZvcm0gZGVzaWduIG9yIHVzaW5nIGVsZWN0cm9uaWMgbWVhbnMgYXJlIHdvcnRoDQorY29uc2lkZXJpbmcuICBIT09UT04gYWxzbyBub3RlZCB0aGF0IGNvbnZlcnNpb24gdXN1YWxseSBtYWtlcyBvciBicmVha3MNCitvbmUncyBpbWFnaW5nIHN5c3RlbS4gIEl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQsIGV4dHJlbWVseSBjb3N0bHkgaW4NCit0ZXJtcyBvZiBlaXRoZXIgY2FwaXRhbCBpbnZlc3RtZW50IG9yIHNlcnZpY2UsIGFuZCBkZXRlcm1pbmVzIHRoZSBxdWFsaXR5DQorb2YgdGhlIHJlbWFpbmRlciBvZiBvbmUncyBzeXN0ZW0sIGJlY2F1c2UgaXQgZGV0ZXJtaW5lcyB0aGUgY2hhcmFjdGVyIG9mDQordGhlIHJhdyBtYXRlcmlhbCB1c2VkIGJ5IHRoZSBzeXN0ZW0uDQorDQorQ29uY2VybmluZyB0aGUgZm91ciBwcm9qZWN0cyB1bmRlcnRha2VuIGJ5IE5BTCwgdHdvIGluc2lkZSBhbmQgdHdvDQorcGVyZm9ybWVkIGJ5IG91dHNpZGUgY29udHJhY3RvcnMsIFpJREFSIHJldmVhbGVkIHRoYXQgYW4gaW4taG91c2Ugc2VydmljZQ0KK2J1cmVhdSBleGVjdXRlZCB0aGUgZmlyc3QgYXQgYSBjb3N0IGJldHdlZW4gJDggYW5kICQxMCBwZXIgcGFnZSBmb3INCitldmVyeXRoaW5nLCBpbmNsdWRpbmcgYnVpbGRpbmcgb2YgdGhlIGRhdGFiYXNlLiAgVGhlIHByb2plY3QgdW5kZXJ0YWtlbg0KK2J5IHRoZSBDb25zdWx0YXRpdmUgR3JvdXAgb24gSW50ZXJuYXRpb25hbCBBZ3JpY3VsdHVyYWwgUmVzZWFyY2ggKENHSUFSKQ0KK2Nvc3QgYXBwcm94aW1hdGVseSAkMTAgcGVyIHBhZ2UgZm9yIHRoZSBjb252ZXJzaW9uLCBwbHVzIHNvbWUgZXhwZW5zZXMNCitmb3IgdGhlIHNvZnR3YXJlIGFuZCBidWlsZGluZyBvZiB0aGUgZGF0YWJhc2UuICBUaGUgQWNpZCBSYWluIFByb2plY3QtLWENCit0d28tZGlzayBzZXQgcHJvZHVjZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YgVmVybW9udCwgY29uc2lzdGluZyBvZg0KK0NhbmFkaWFuIHB1YmxpY2F0aW9ucyBvbiBhY2lkIHJhaW4tLWNvc3QgJDYuNzAgcGVyIHBhZ2UgZm9yIGV2ZXJ5dGhpbmcsDQoraW5jbHVkaW5nIGtleWluZyBvZiB0aGUgdGV4dCwgd2hpY2ggd2FzIGRvdWJsZSBrZXllZCwgc2Nhbm5pbmcgb2YgdGhlDQoraW1hZ2VzLCBhbmQgYnVpbGRpbmcgb2YgdGhlIGRhdGFiYXNlLiAgVGhlIGluLWhvdXNlIHByb2plY3Qgb2ZmZXJlZA0KK2NvbnNpZGVyYWJsZSBlYXNlIG9mIGNvbnZlbmllbmNlIGFuZCBncmVhdGVyIGNvbnRyb2wgb2YgdGhlIHByb2Nlc3MuICBPbg0KK3RoZSBvdGhlciBoYW5kLCB0aGUgc2VydmljZSBidXJlYXVzIGtub3cgdGhlaXIgam9iIGFuZCBwZXJmb3JtIGl0DQorZXhwZWRpdGlvdXNseSwgYmVjYXVzZSB0aGV5IGhhdmUgbW9yZSBwZW9wbGUuDQorDQorQXMgYSB1c2VmdWwgY29tcGFyaXNvbiwgRVJXQVkgcmV2ZWFsZWQgQU0ncyBjb3N0cyBhcyBmb2xsb3dzOiAgJDAuNzUNCitjZW50cyB0byAkMC44NSBjZW50cyBwZXIgdGhvdXNhbmQgY2hhcmFjdGVycywgd2l0aCBhbiBhdmVyYWdlIHBhZ2UNCitjb250YWluaW5nIDIsNzAwIGNoYXJhY3RlcnMuICBSZXF1aXJlbWVudHMgZm9yIGNvZGluZyBhbmQgaW1hZ2luZw0KK2luY3JlYXNlIHRoZSBjb3N0cy4gIFRodXMsIGNvbnZlcnNpb24gb2YgdGhlIHRleHQsIGluY2x1ZGluZyB0aGUgY29kaW5nLA0KK2Nvc3RzIGFwcHJveGltYXRlbHkgJDMgcGVyIHBhZ2UuICAoVGhpcyBmaWd1cmUgZG9lcyBub3QgaW5jbHVkZSB0aGUNCitpbWFnaW5nIGFuZCBkYXRhYmFzZS1idWlsZGluZyBpbmNsdWRlZCBpbiB0aGUgTkFMIGNvc3RzLikgIEFNIGFsc28NCitlbmpveWVkIGEgaGFwcHkgZXhwZXJpZW5jZSB3aXRoIEZlZGVyYWwgUHJpc29uIEluZHVzdHJpZXMsIHdoaWNoDQorcHJlY2x1ZGVkIHRoZSBuZWNlc3NpdHkgb2YgZ29pbmcgdGhyb3VnaCB0aGUgcmVxdWVzdC1mb3ItcHJvcG9zYWwgcHJvY2Vzcw0KK3RvIGF3YXJkIGEgY29udHJhY3QsIGJlY2F1c2UgaXQgaXMgYW5vdGhlciBnb3Zlcm5tZW50IGFnZW5jeS4gIFRoZQ0KK3ByaXNvbmVycyBwZXJmb3JtZWQgQU0ncyByZWtleWluZyBqdXN0IGFzIHdlbGwgYXMgb3RoZXIgc2VydmljZSBidXJlYXVzDQorYW5kIHByb3ZlZCBoYW5keSBhcyB3ZWxsLiAgQU0gc2hpcHBlZCB0aGVtIHRoZSBib29rcywgd2hpY2ggdGhleSB3b3VsZA0KK3Bob3RvY29weSBvbiBhIGJvb2stZWRnZSBzY2FubmVyLiAgVGhleSB3b3VsZCBwZXJmb3JtIHRoZSBtYXJrdXAgb24NCitwaG90b2NvcGllcywgcmV0dXJuIHRoZSBib29rcyBhcyBzb29uIGFzIHRoZXkgd2VyZSBkb25lIHdpdGggdGhlbSwNCitwZXJmb3JtIHRoZSBrZXlpbmcsIGFuZCByZXR1cm4gdGhlIG1hdGVyaWFsIHRvIEFNIG9uIFdPUk0gZGlza3MuDQorDQorWklEQVIgZGV0YWlsZWQgdGhlIGVsZW1lbnRzIHRoYXQgY29uc3RpdHV0ZSB0aGUgcHJldmlvdXNseSBub3RlZCBjb3N0IG9mDQorYXBwcm94aW1hdGVseSAkNyBwZXIgcGFnZS4gIE1vc3Qgc2lnbmlmaWNhbnQgaXMgdGhlIGVkaXRpbmcsIGNvcnJlY3Rpb24NCitvZiBlcnJvcnMsIGFuZCBzcGVsbC1jaGVja2luZ3MsIHdoaWNoIHRob3VnaCB0aGV5IG1heSBzb3VuZCBlYXN5IHRvDQorcGVyZm9ybSByZXF1aXJlLCBpbiBmYWN0LCBhIGdyZWF0IGRlYWwgb2YgdGltZS4gIFJlZm9ybWF0dGluZyB0ZXh0IGFsc28NCit0YWtlcyBhIHdoaWxlLCBidXQgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgTkFMJ3MgZXhwZW5zZXMgYXJlIGZvciBlcXVpcG1lbnQsDQord2hpY2ggd2FzIGV4dHJlbWVseSBleHBlbnNpdmUgd2hlbiBwdXJjaGFzZWQgYmVjYXVzZSBpdCB3YXMgb25lIG9mIHRoZSBmZXcNCitzeXN0ZW1zIG9uIHRoZSBtYXJrZXQuICBUaGUgY29zdHMgb2YgZXF1aXBtZW50IGFyZSBiZWluZyBhbW9ydGl6ZWQgb3Zlcg0KK2ZpdmUgeWVhcnMgYnV0IGFyZSBzdGlsbCBxdWl0ZSBoaWdoLCBuZWFybHkgJDIsMDAwIHBlciBtb250aC4NCisNCitIT0NLRVkgcmFpc2VkIGEgZ2VuZXJhbCBxdWVzdGlvbiBjb25jZXJuaW5nIE9DUiBhbmQgdGhlIGFtb3VudCBvZiBlZGl0aW5nDQorcmVxdWlyZWQgKHN1YnN0YW50aWFsIGluIGhlciBleHBlcmllbmNlKSB0byBnZW5lcmF0ZSB0aGUga2luZCBvZg0KK3N0cnVjdHVyZWQgbWFya3VwIG5lY2Vzc2FyeSBmb3IgbWFuaXB1bGF0aW5nIHRoZSB0ZXh0IG9uIHRoZSBjb21wdXRlciBvcg0KK2xvYWRpbmcgaXQgaW50byBhbnkgcmV0cmlldmFsIHN5c3RlbS4gIFNoZSB3b25kZXJlZCBpZiB0aGUgc3BlYWtlcnMgY291bGQNCitleHRlbmQgdGhlIHByZXZpb3VzIHF1ZXN0aW9uIGFib3V0IHRoZSBjb3N0LWJlbmVmaXQgb2YgYWRkaW5nIG9yIGV4ZXJ0aW5nDQorc3RydWN0dXJlZCBtYXJrdXAuICBFUldBWSBub3RlZCB0aGF0IHNldmVyYWwgT0NSIHN5c3RlbXMgcmV0YWluIGl0YWxpY3MsDQorYm9sZGluZywgYW5kIG90aGVyIHNwYXRpYWwgZm9ybWF0dGluZy4gIFdoaWxlIHRoZSBtYXRlcmlhbCBtYXkgbm90IGJlIGluDQordGhlIGZvcm1hdCBkZXNpcmVkLCB0aGVzZSBzeXN0ZW1zIHBvc3Nlc3MgdGhlIGFiaWxpdHkgdG8gcmVtb3ZlIHRoZQ0KK29yaWdpbmFsIG1hdGVyaWFscyBxdWlja2x5IGZyb20gdGhlIGhhbmRzIG9mIHRoZSBwZW9wbGUgcGVyZm9ybWluZyB0aGUNCitjb252ZXJzaW9uLCBhcyB3ZWxsIGFzIHRvIHJldGFpbiB0aGF0IGluZm9ybWF0aW9uIHNvIHRoYXQgdXNlcnMgY2FuIHdvcmsNCit3aXRoIGl0LiAgSE9DS0VZIHJlam9pbmVkIHRoYXQgdGhlIGN1cnJlbnQgdGhpbmtpbmcgb24gbWFya3VwIGlzIHRoYXQgb25lDQorc2hvdWxkIG5vdCBzYXkgdGhhdCBzb21ldGhpbmcgaXMgaXRhbGljIG9yIGJvbGQgc28gbXVjaCBhcyB3aHkgaXQgaXMgdGhhdA0KK3dheS4gIFRvIGJlIHN1cmUsIG9uZSBuZWVkcyB0byBrbm93IHRoYXQgc29tZXRoaW5nIHdhcyBpdGFsaWNpemVkLCBidXQNCitob3cgY2FuIG9uZSBnZXQgZnJvbSBvbmUgdG8gdGhlIG90aGVyPyAgT25lIGNhbiBtYXAgZnJvbSB0aGUgc3RydWN0dXJlIHRvDQordGhlIHR5cG9ncmFwaGljIHJlcHJlc2VudGF0aW9uLg0KKw0KK0ZMRUlTQ0hIQVVFUiBzdWdnZXN0ZWQgdGhhdCwgZ2l2ZW4gdGhlIDEwMCBtaWxsaW9uIGl0ZW1zIHRoZSBMaWJyYXJ5DQoraG9sZHMsIGl0IG1heSBub3QgYmUgcG9zc2libGUgZm9yIExDIHRvIGRvIG1vcmUgdGhhbiByZXBvcnQgdGhhdCBhIHRoaW5nDQord2FzIGluIGl0YWxpY3MgYXMgb3Bwb3NlZCB0byB3aHkgaXQgd2FzIGl0YWxpY3MsIGFsdGhvdWdoIHRoYXQgbWF5IGJlDQorZGVzaXJhYmxlIGluIHNvbWUgY29udGV4dHMuICBQcm9taXNpbmcgdG8gdGFsayBhIGJpdCBkdXJpbmcgdGhlIGFmdGVybm9vbg0KK3Nlc3Npb24gYWJvdXQgc2V2ZXJhbCBleHBlcmltZW50cyBPQ0xDIHBlcmZvcm1lZCBvbiBhdXRvbWF0aWMgcmVjb2duaXRpb24NCitvZiBkb2N1bWVudCBlbGVtZW50cywgYW5kIHdoaWNoIHRoZXkgaG9wZWQgdG8gZXh0ZW5kLCBXRUlCRUwgc2FpZCB0aGF0IGluDQorZmFjdCBvbmUgY2FuIHJlY29nbml6ZSB0aGUgbWFqb3IgZWxlbWVudHMgb2YgYSBkb2N1bWVudCB3aXRoIGEgZmFpcmx5DQoraGlnaCBkZWdyZWUgb2YgcmVsaWFiaWxpdHksIGF0IGxlYXN0IGFzIGdvb2QgYXMgT0NSLiAgU1RFVkVOUyBkcmV3IGENCit1c2VmdWwgZGlzdGluY3Rpb24gYmV0d2VlbiBzdGFuZGFyZCwgZ2VuZXJhbGl6ZWQgbWFya3VwIChpLmUuLCBkZWZpbmluZw0KK2ZvciBhIGRvY3VtZW50LXR5cGUgZGVmaW5pdGlvbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBkb2N1bWVudCksIGFuZCB3aGF0DQoraGUgdGVybWVkIGEgc3R5bGUgc2hlZXQsIHdoaWNoIGhhZCB0byBkbyB3aXRoIGl0YWxpY3MsIGJvbGRpbmcsIGFuZCBvdGhlcg0KK2Zvcm1zIG9mIGVtcGhhc2lzLiAgVGh1cywgdHdvIGRpZmZlcmVudCBjb21wb25lbnRzIGFyZSBhdCB3b3JrLCBvbmUgYmVpbmcNCit0aGUgc3RydWN0dXJlIG9mIHRoZSBkb2N1bWVudCBpdHNlbGYgKGl0cyBsb2dpYyksIGFuZCB0aGUgb3RoZXIgYmVpbmcgaXRzDQorcmVwcmVzZW50YXRpb24gd2hlbiBpdCBpcyBwdXQgb24gdGhlIHNjcmVlbiBvciBwcmludGVkLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KK1NFU1NJT04gVi4gIEFQUFJPQUNIRVMgVE8gUFJFUEFSSU5HIEVMRUNUUk9OSUMgVEVYVFMNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorSE9DS0VZICogVGV4dCBpbiBBU0NJSSBhbmQgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGVsZWN0cm9uaWMgdGV4dCB2ZXJzdXMNCithbiBpbWFnZSAqIFRoZSBuZWVkIHRvIGxvb2sgYXQgd2F5cyBvZiB1c2luZyBtYXJrdXAgdG8gYXNzaXN0IHJldHJpZXZhbCAqDQorVGhlIG5lZWQgZm9yIGFuIGVuY29kaW5nIGZvcm1hdCB0aGF0IHdpbGwgYmUgcmV1c2FibGUgYW5kIG11bHRpZnVuY3Rpb25hbA0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitTdXNhbiBIT0NLRVksIGRpcmVjdG9yLCBDZW50ZXIgZm9yIEVsZWN0cm9uaWMgVGV4dHMgaW4gdGhlIEh1bWFuaXRpZXMNCisoQ0VUSCksIFJ1dGdlcnMgYW5kIFByaW5jZXRvbiBVbml2ZXJzaXRpZXMsIGFubm91bmNlZCB0aGF0IG9uZSB0YWxrDQorKFdFSUJFTCdzKSB3YXMgbW92ZWQgaW50byB0aGlzIHNlc3Npb24gZnJvbSB0aGUgbW9ybmluZyBhbmQgdGhhdCBEYXZpZA0KK1BhY2thcmQgd2FzIHVuYWJsZSB0byBhdHRlbmQuICBUaGUgc2Vzc2lvbiB3b3VsZCBhdHRlbXB0IHRvIGZvY3VzIG1vcmUgb24NCit3aGF0IG9uZSBjYW4gZG8gd2l0aCBhIHRleHQgaW4gQVNDSUkgYW5kIHRoZSByZXByZXNlbnRhdGlvbiBvZiBlbGVjdHJvbmljDQordGV4dCByYXRoZXIgdGhhbiBqdXN0IGFuIGltYWdlLCB3aGF0IG9uZSBjYW4gZG8gd2l0aCBhIGNvbXB1dGVyIHRoYXQNCitjYW5ub3QgYmUgZG9uZSB3aXRoIGEgYm9vayBvciBhbiBpbWFnZS4gIEl0IHdvdWxkIGJlIGFyZ3VlZCB0aGF0IG9uZSBjYW4NCitkbyBtdWNoIG1vcmUgdGhhbiBqdXN0IHJlYWQgYSB0ZXh0LCBhbmQgZnJvbSB0aGF0IHN0YXJ0aW5nIHBvaW50IG9uZSBjYW4NCit1c2UgbWFya3VwIGFuZCBtZXRob2RzIG9mIHByZXBhcmluZyB0aGUgdGV4dCB0byB0YWtlIGZ1bGwgYWR2YW50YWdlIG9mDQordGhlIGNhcGFiaWxpdHkgb2YgdGhlIGNvbXB1dGVyLiAgVGhhdCB3b3VsZCBsZWFkIHRvIGEgZGlzY3Vzc2lvbiBvZiB3aGF0DQordGhlIEV1cm9wZWFuIENvbW11bml0eSBjYWxscyBSRVVTQUJJTElUWSwgd2hhdCBtYXkgYmV0dGVyIGJlIHRlcm1lZA0KK0RVUkFCSUxJVFksIHRoYXQgaXMsIGhvdyB0byBwcmVwYXJlIG9yIG1ha2UgYSB0ZXh0IHRoYXQgd2lsbCBsYXN0IGEgbG9uZw0KK3RpbWUgYW5kIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFzIG1hbnkgYXBwbGljYXRpb25zIGFzIHBvc3NpYmxlLCB3aGljaA0KK3dvdWxkIGxlYWQgdG8gaXNzdWVzIG9mIGltcHJvdmluZyBpbnRlbGxlY3R1YWwgYWNjZXNzLg0KKw0KK0hPQ0tFWSB1cmdlZCB0aGUgbmVlZCB0byBsb29rIGF0IHdheXMgb2YgdXNpbmcgbWFya3VwIHRvIGZhY2lsaXRhdGUgcmV0cmlldmFsLA0KK25vdCBqdXN0IGZvciByZWZlcmVuY2luZyBvciB0byBoZWxwIGxvY2F0ZSBhbiBpdGVtIHRoYXQgaXMgcmV0cmlldmVkLCBidXQgYWxzbyB0byBwdXQgbWFya3VwIHRhZ3MgaW4NCithIHRleHQgdG8gaGVscCByZXRyaWV2ZSB0aGUgdGhpbmcgc291Z2h0IGVpdGhlciB3aXRoIGxpbmd1aXN0aWMgdGFnZ2luZyBvcg0KK2ludGVycHJldGF0aW9uLiAgSE9DS0VZIGFsc28gYXJndWVkIHRoYXQgbGl0dGxlIGFkdmFuY2VtZW50IGhhZCBvY2N1cnJlZCBpbg0KK3RoZSBzb2Z0d2FyZSB0b29scyBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciByZXRyaWV2aW5nIGFuZCBzZWFyY2hpbmcgdGV4dC4NCitTaGUgcHJlc3NlZCB0aGUgZGVzaWRlcmF0dW0gb2YgZ29pbmcgYmV5b25kIEJvb2xlYW4gc2VhcmNoZXMgYW5kIHBlcmZvcm1pbmcNCittb3JlIHNvcGhpc3RpY2F0ZWQgc2VhcmNoaW5nLCB3aGljaCB0aGUgaW5zZXJ0aW9uIG9mIG1vcmUgbWFya3VwIGluIHRoZSB0ZXh0DQord291bGQgZmFjaWxpdGF0ZS4gIFRoaW5raW5nIGFib3V0IGVsZWN0cm9uaWMgdGV4dHMgYXMgb3Bwb3NlZCB0byBpbWFnZXMgbWVhbnMNCitjb25zaWRlcmluZyBtYXRlcmlhbCB0aGF0IHdpbGwgbmV2ZXIgYXBwZWFyIGluIHByaW50IGZvcm0sIG9yIHByaW50IHdpbGwgbm90DQorYmUgaXRzIHByaW1hcnkgZm9ybSwgdGhhdCBpcywgbWF0ZXJpYWwgd2hpY2ggb25seSBhcHBlYXJzIGluIGVsZWN0cm9uaWMgZm9ybS4NCitIT0NLRVkgYWxsdWRlZCB0byB0aGUgaGlzdG9yeSBhbmQgdGhlIG5lZWQgZm9yIG1hcmt1cCBhbmQgdGFnZ2luZyBhbmQNCitlbGVjdHJvbmljIHRleHQsIHdoaWNoIHdhcyBkZXZlbG9wZWQgdGhyb3VnaCB0aGUgdXNlIG9mIGNvbXB1dGVycyBpbiB0aGUNCitodW1hbml0aWVzOyBhcyBNSUNIRUxTT04gaGFkIG9ic2VydmVkLCBGYXRoZXIgQnVzYSBoYWQgc3RhcnRlZCBpbiAxOTQ5DQordG8gcHJlcGFyZSB0aGUgZmlyc3QtZXZlciB0ZXh0IG9uIHRoZSBjb21wdXRlci4NCisNCitIT0NLRVkgcmVtYXJrZWQgc2V2ZXJhbCBsYXJnZSBwcm9qZWN0cywgcGFydGljdWxhcmx5IGluIEV1cm9wZSwgZm9yIHRoZQ0KK2NvbXBpbGF0aW9uIG9mIGRpY3Rpb25hcmllcywgbGFuZ3VhZ2Ugc3R1ZGllcywgYW5kIGxhbmd1YWdlIGFuYWx5c2lzLCBpbg0KK3doaWNoIHBlb3BsZSBoYXZlIGJ1aWx0IHVwIGFyY2hpdmVzIG9mIHRleHQgYW5kIGhhdmUgYmVndW4gdG8gcmVjb2duaXplDQordGhlIG5lZWQgZm9yIGFuIGVuY29kaW5nIGZvcm1hdCB0aGF0IHdpbGwgYmUgcmV1c2FibGUgYW5kIG11bHRpZnVuY3Rpb25hbCwNCit0aGF0IGNhbiBiZSB1c2VkIG5vdCBqdXN0IHRvIHByaW50IHRoZSB0ZXh0LCB3aGljaCBtYXkgYmUgYXNzdW1lZCB0byBiZSBhDQorYnlwcm9kdWN0IG9mIHdoYXQgb25lIHdhbnRzIHRvIGRvLCBidXQgdG8gc3RydWN0dXJlIGl0IGluc2lkZSB0aGUgY29tcHV0ZXINCitzbyB0aGF0IGl0IGNhbiBiZSBzZWFyY2hlZCwgYnVpbHQgaW50byBhIEh5cGVydGV4dCBzeXN0ZW0sIGV0Yy4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorV0VJQkVMICogT0NMQydzIGFwcHJvYWNoIHRvIHByZXBhcmluZyBlbGVjdHJvbmljIHRleHQ6ICByZXRyb2NvbnZlcnNpb24sDQora2V5aW5nIG9mIHRleHRzLCBtb3JlIGF1dG9tYXRlZCB3YXlzIG9mIGRldmVsb3BpbmcgZGF0YSAqIFByb2plY3QgQURBUFQNCithbmQgdGhlIENPUkUgUHJvamVjdCAqIEludGVsbGlnZW50IGNoYXJhY3RlciByZWNvZ25pdGlvbiBkb2VzIG5vdCBleGlzdCAqDQorQWR2YW50YWdlcyBvZiBTR01MICogRGF0YSBzaG91bGQgYmUgZnJlZSBvZiBwcm9jZWR1cmFsIG1hcmt1cDsNCitkZXNjcmlwdGl2ZSBtYXJrdXAgc3Ryb25nbHkgYWR2b2NhdGVkICogT0NMQydzIGludGVyZmFjZSBpbGx1c3RyYXRlZCAqDQorU3RvcmFnZSByZXF1aXJlbWVudHMgYW5kIGNvc3RzIGZvciBwdXR0aW5nIGEgbG90IG9mIGluZm9ybWF0aW9uIG9uIGxpbmUgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitTdHVhcnQgV0VJQkVMLCBzZW5pb3IgcmVzZWFyY2ggc2NpZW50aXN0LCBPbmxpbmUgQ29tcHV0ZXIgTGlicmFyeSBDZW50ZXIsDQorSW5jLiAoT0NMQyksIGRlc2NyaWJlZCBPQ0xDJ3MgYXBwcm9hY2ggdG8gcHJlcGFyaW5nIGVsZWN0cm9uaWMgdGV4dC4gIEhlDQorYXJndWVkIHRoYXQgdGhlIGVsZWN0cm9uaWMgd29ybGQgaW50byB3aGljaCB3ZSBhcmUgbW92aW5nIG11c3QNCithY2NvbW1vZGF0ZSBub3Qgb25seSB0aGUgZnV0dXJlIGJ1dCB0aGUgcGFzdCBhcyB3ZWxsLCBhbmQgdG8gc29tZSBkZWdyZWUNCitldmVuIHRoZSBwcmVzZW50LiAgVGh1cywgc3RhcnRpbmcgb3V0IGF0IG9uZSBlbmQgd2l0aCByZXRyb2NvbnZlcnNpb24gYW5kDQora2V5aW5nIG9mIHRleHRzLCBvbmUgd291bGQgbGlrZSB0byBtb3ZlIHRvd2FyZCBtdWNoIG1vcmUgYXV0b21hdGVkIHdheXMNCitvZiBkZXZlbG9waW5nIGRhdGEuDQorDQorRm9yIGV4YW1wbGUsIFByb2plY3QgQURBUFQgaGFkIHRvIGRvIHdpdGggYXV0b21hdGljYWxseSBjb252ZXJ0aW5nDQorZG9jdW1lbnQgaW1hZ2VzIGludG8gYSBzdHJ1Y3R1cmVkIGRvY3VtZW50IGRhdGFiYXNlIHdpdGggT0NSIHRleHQgYXMNCitpbmRleGluZyBhbmQgYWxzbyBhIGxpdHRsZSBiaXQgb2YgYXV0b21hdGljIGZvcm1hdHRpbmcgYW5kIHRhZ2dpbmcgb2YNCit0aGF0IHRleHQuICBUaGUgQ09SRSBwcm9qZWN0IGhvc3RlZCBieSBDb3JuZWxsIFVuaXZlcnNpdHksIEJlbGxjb3JlLA0KK09DTEMsIHRoZSBBbWVyaWNhbiBDaGVtaWNhbCBTb2NpZXR5LCBhbmQgQ2hlbWljYWwgQWJzdHJhY3RzLCBjb25zdGl0dXRlcw0KK1dFSUJFTCdzIHByaW5jaXBhbCBjb25jZXJuIGF0IHRoZSBtb21lbnQuICBUaGlzIHByb2plY3QgaXMgYW4gZXhhbXBsZSBvZg0KK2NvbnZlcnRpbmcgdGV4dCBmb3Igd2hpY2ggb25lIGFscmVhZHkgaGFzIGEgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9uIGludG8NCithIGZvcm1hdCBtb3JlIHN1aXRhYmxlIGZvciBlbGVjdHJvbmljIGRlbGl2ZXJ5IGFuZCBkYXRhYmFzZSBzZWFyY2hpbmcuIA0KKyhTaW5jZSBNaWNoYWVsIExFU0sgaGFkIHByZXZpb3VzbHkgZGVzY3JpYmVkIENPUkUsIFdFSUJFTCB3b3VsZCBzYXkNCitsaXR0bGUgY29uY2VybmluZyBpdC4pICBCb3Jyb3dpbmcgYSBjaGVtaWNhbCBwaHJhc2UsIGRlIG5vdm8gc3ludGhlc2lzLA0KK1dFSUJFTCBjaXRlZCB0aGUgT25saW5lIEpvdXJuYWwgb2YgQ3VycmVudCBDbGluaWNhbCBUcmlhbHMgYXMgYW4gZXhhbXBsZQ0KK29mIGRlIG5vdm8gZWxlY3Ryb25pYyBwdWJsaXNoaW5nLCB0aGF0IGlzLCBhIGZvcm0gaW4gd2hpY2ggdGhlIHByaW1hcnkNCitmb3JtIG9mIHRoZSBpbmZvcm1hdGlvbiBpcyBlbGVjdHJvbmljLg0KKw0KK1Byb2plY3QgQURBUFQsIHRoZW4sIHdoaWNoIE9DTEMgY29tcGxldGVkIGEgY291cGxlIG9mIHllYXJzIGFnbyBhbmQgaW4NCitmYWN0IGlzIGFib3V0IHRvIHJlc3VtZSwgaXMgYSBtb2RlbCBpbiB3aGljaCBvbmUgdGFrZXMgcGFnZSBpbWFnZXMgZWl0aGVyDQoraW4gcGFwZXIgb3IgbWljcm9maWxtIGFuZCBjb252ZXJ0cyB0aGVtIGF1dG9tYXRpY2FsbHkgdG8gYSBzZWFyY2hhYmxlDQorZWxlY3Ryb25pYyBkYXRhYmFzZSwgZWl0aGVyIG9uLWxpbmUgb3IgbG9jYWwuICBUaGUgb3BlcmF0aW5nIGFzc3VtcHRpb24NCitpcyB0aGF0IGFjY2VwdGluZyBzb21lIGJsZW1pc2hlcyBpbiB0aGUgZGF0YSwgZXNwZWNpYWxseSBmb3INCityZXRyb2NvbnZlcnNpb24gb2YgbWF0ZXJpYWxzLCB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8gYWNjb21wbGlzaCBtb3JlLiANCitOb3QgZW5vdWdoIG1vbmV5IGlzIGF2YWlsYWJsZSB0byBzdXBwb3J0IHBlcmZlY3QgY29udmVyc2lvbi4NCisNCitXRUlCRUwgcmVsYXRlZCBzZXZlcmFsIHN0ZXBzIHRha2VuIHRvIHBlcmZvcm0gaW1hZ2UgcHJlcHJvY2Vzc2luZw0KKyhwcm9jZXNzaW5nIG9uIHRoZSBpbWFnZSBiZWZvcmUgcGVyZm9ybWluZyBvcHRpY2FsIGNoYXJhY3Rlcg0KK3JlY29nbml0aW9uKSwgYXMgd2VsbCBhcyBpbWFnZSBwb3N0cHJvY2Vzc2luZy4gIEhlIGRlbmllZCB0aGUgZXhpc3RlbmNlDQorb2YgaW50ZWxsaWdlbnQgY2hhcmFjdGVyIHJlY29nbml0aW9uIGFuZCBhc3NlcnRlZCB0aGF0IHdoYXQgaXMgd2FudGVkIGlzDQorcGFnZSByZWNvZ25pdGlvbiwgd2hpY2ggaXMgYSBsb25nIHdheSBvZmYuICBPQ0xDIGhhcyBleHBlcmltZW50ZWQgd2l0aA0KK21lcmdpbmcgb2YgbXVsdGlwbGUgb3B0aWNhbCBjaGFyYWN0ZXIgcmVjb2duaXRpb24gc3lzdGVtcyB0aGF0IHdpbGwNCityZWR1Y2UgZXJyb3JzIGZyb20gYW4gdW5hY2NlcHRhYmxlIHJhdGUgb2YgNSBjaGFyYWN0ZXJzIG91dCBvZiBldmVyeQ0KK2wsMDAwIHRvIGFuIHVuYWNjZXB0YWJsZSByYXRlIG9mIDIgY2hhcmFjdGVycyBvdXQgb2YgZXZlcnkgbCwwMDAsIGJ1dCBpdA0KK2lzIG5vdCBnb29kIGVub3VnaC4gIEl0IHdpbGwgbmV2ZXIgYmUgcGVyZmVjdC4NCisNCitDb25jZXJuaW5nIHRoZSBDT1JFIFByb2plY3QsIFdFSUJFTCBvYnNlcnZlZCB0aGF0IEJlbGxjb3JlIGlzIHRha2luZyB0aGUNCit0b3BvZ3JhcGh5IGZpbGVzLCBleHRyYWN0aW5nIHRoZSBwYWdlIGltYWdlcywgYW5kIGNvbnZlcnRpbmcgdGhvc2UNCit0b3BvZ3JhcGh5IGZpbGVzIHRvIFNHTUwgbWFya3VwLiAgTEVTSyBoYW5kcyB0aGF0IGRhdGEgb2ZmIHRvIE9DTEMsIHdoaWNoDQorYnVpbGRzIHRoYXQgZGF0YSBpbnRvIGEgTmV3dG9uIGRhdGFiYXNlLCB0aGUgc2FtZSBzeXN0ZW0gdGhhdCB1bmRlcmxpZXMNCit0aGUgb24tbGluZSBzeXN0ZW0gaW4gdmlydHVhbGx5IGFsbCBvZiB0aGUgcmVmZXJlbmNlIHByb2R1Y3RzIGF0IE9DTEMuIA0KK1RoZSBsb25nLXRlcm0gZ29hbCBpcyB0byBtYWtlIHRoZSBzeXN0ZW1zIGludGVyb3BlcmFibGUgc28gdGhhdCBub3QganVzdA0KK0JlbGxjb3JlJ3Mgc3lzdGVtIGFuZCBPQ0xDJ3Mgc3lzdGVtIGNhbiBhY2Nlc3MgdGhpcyBkYXRhLCBidXQgb3RoZXINCitzeXN0ZW1zIGNhbiBhcyB3ZWxsLCBhbmQgdGhlIGtleSB0byB0aGF0IGlzIHRoZSBaMzkuNTAgY29tbW9uIGNvbW1hbmQNCitsYW5ndWFnZSBhbmQgdGhlIGZ1bGwtdGV4dCBleHRlbnNpb24uICBaMzkuNTAgaXMgZmluZSBmb3IgTUFSQyByZWNvcmRzLA0KK2J1dCBpcyBub3QgZW5vdWdoIHRvIGRvIGl0IGZvciBmdWxsIHRleHQgKHRoYXQgaXMsIG1ha2UgZnVsbCB0ZXh0cw0KK2ludGVyb3BlcmFibGUpLg0KKw0KK1dFSUJFTCBuZXh0IG91dGxpbmVkIHRoZSBjcml0aWNhbCByb2xlIG9mIFNHTUwgZm9yIGEgdmFyaWV0eSBvZiBwdXJwb3NlcywNCitmb3IgZXhhbXBsZSwgYXMgbm90ZWQgYnkgSE9DS0VZLCBpbiB0aGUgd29ybGQgb2YgZXh0cmVtZWx5IGxhcmdlDQorZGF0YWJhc2VzLCB1c2luZyBoaWdobHkgc3RydWN0dXJlZCBkYXRhIHRvIHBlcmZvcm0gZmllbGQgc2VhcmNoZXMuIA0KK1dFSUJFTCBhcmd1ZWQgdGhhdCBieSBidWlsZGluZyB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIGluIChpLmUuLCB0aGUNCitzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgb3JpZ2luYWxseSBvbiBhIHByaW50ZWQgcGFnZSksIGl0IGJlY29tZXMgZWFzeSB0bw0KK2xvb2sgYXQgYSBqb3VybmFsIGFydGljbGUgZXZlbiBpZiBvbmUgY2Fubm90IHJlYWQgdGhlIGNoYXJhY3RlcnMgYW5kIGtub3cNCit3aGVyZSB0aGUgdGl0bGUgb3IgYXV0aG9yIGlzLCBvciB3aGF0IHRoZSBzZWN0aW9ucyBvZiB0aGF0IGRvY3VtZW50IHdvdWxkIGJlLg0KK09DTEMgd2FudHMgdG8gbWFrZSB0aGF0IHN0cnVjdHVyZSBleHBsaWNpdCBpbiB0aGUgZGF0YWJhc2UsIGJlY2F1c2UgaXQgd2lsbA0KK2JlIGltcG9ydGFudCBmb3IgcmV0cmlldmFsIHB1cnBvc2VzLg0KKw0KK1RoZSBzZWNvbmQgYmlnIGFkdmFudGFnZSBvZiBTR01MIGlzIHRoYXQgaXQgZ2l2ZXMgb25lIHRoZSBhYmlsaXR5IHRvDQorYnVpbGQgc3RydWN0dXJlIGludG8gdGhlIGRhdGFiYXNlIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRpc3BsYXkgcHVycG9zZXMNCit3aXRob3V0IGNvbnRhbWluYXRpbmcgdGhlIGRhdGEgd2l0aCBpbnN0cnVjdGlvbnMgYWJvdXQgaG93IHRvIGZvcm1hdA0KK3RoaW5ncy4gIFRoZSBkaXN0aW5jdGlvbiBsaWVzIGJldHdlZW4gcHJvY2VkdXJhbCBtYXJrdXAsIHdoaWNoIHRlbGxzIG9uZQ0KK3doZXJlIHRvIHB1dCBkb3RzIG9uIHRoZSBwYWdlLCBhbmQgZGVzY3JpcHRpdmUgbWFya3VwLCB3aGljaCBkZXNjcmliZXMNCit0aGUgZWxlbWVudHMgb2YgYSBkb2N1bWVudC4NCisNCitXRUlCRUwgYmVsaWV2ZXMgdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gcHJvY2VkdXJhbCBtYXJrdXAgaW4gdGhlIGRhdGEgYXQNCithbGwsIHRoYXQgdGhlIGRhdGEgc2hvdWxkIGJlIGNvbXBsZXRlbHkgdW5zdWxsaWVkIGJ5IGluZm9ybWF0aW9uIGFib3V0DQoraXRhbGljcyBvciBib2xkbmVzcy4gIFRoYXQgc2hvdWxkIGJlIGxlZnQgdXAgdG8gdGhlIGRpc3BsYXkgZGV2aWNlLA0KK3doZXRoZXIgdGhhdCBkaXNwbGF5IGRldmljZSBpcyBhIHBhZ2UgcHJpbnRlciBvciBhIHNjcmVlbiBkaXNwbGF5IGRldmljZS4gDQorQnkga2VlcGluZyBvbmUncyBkYXRhYmFzZSBmcmVlIG9mIHRoYXQga2luZCBvZiBjb250YW1pbmF0aW9uLCBvbmUgY2FuDQorbWFrZSBkZWNpc2lvbnMgZG93biB0aGUgcm9hZCwgZm9yIGV4YW1wbGUsIHJlb3JnYW5pemUgdGhlIGRhdGEgaW4gd2F5cw0KK3RoYXQgYXJlIG5vdCBjcmFtcGVkIGJ5IGJ1aWx0LWluIG5vdGlvbnMgb2Ygd2hhdCBzaG91bGQgYmUgaXRhbGljIGFuZA0KK3doYXQgc2hvdWxkIGJlIGJvbGQuICBXRUlCRUwgc3Ryb25nbHkgYWR2b2NhdGVkIGRlc2NyaXB0aXZlIG1hcmt1cC4gIEFzDQorYW4gZXhhbXBsZSwgaGUgaWxsdXN0cmF0ZWQgdGhlIGluZGV4IHN0cnVjdHVyZSBpbiB0aGUgQ09SRSBkYXRhLiAgV2l0aA0KK3N1YnNlcXVlbnQgaWxsdXN0cmF0ZWQgZXhhbXBsZXMgb2YgbWFya3VwLCBXRUlCRUwgYWNrbm93bGVkZ2VkIHRoZSBjb21tb24NCitjb21wbGFpbnQgdGhhdCBTR01MIGlzIGhhcmQgdG8gcmVhZCBpbiBpdHMgbmF0aXZlIGZvcm0sIGFsdGhvdWdoIG1hcmt1cA0KK2RlY3JlYXNlcyBjb25zaWRlcmFibHkgb25jZSBvbmUgZ2V0cyBpbnRvIHRoZSBib2R5LiAgV2l0aG91dCB0aGUgbWFya3VwLA0KK2hvd2V2ZXIsIG9uZSB3b3VsZCBub3QgaGF2ZSB0aGUgc3RydWN0dXJlIGluIHRoZSBkYXRhLiAgT25lIGNhbiBwYXNzDQorbWFya3VwIHRocm91Z2ggYSBMYVRlWCBwcm9jZXNzb3IgYW5kIGNvbnZlcnQgaXQgcmVsYXRpdmVseSBlYXNpbHkgdG8gYQ0KK3ByaW50ZWQgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQuDQorDQorV0VJQkVMIG5leHQgaWxsdXN0cmF0ZWQgYW4gZXh0cmVtZWx5IGNsdXR0ZXJlZCBzY3JlZW4gZHVtcCBvZiBPQ0xDJ3MNCitzeXN0ZW0sIGluIG9yZGVyIHRvIHNob3cgYXMgbXVjaCBhcyBwb3NzaWJsZSB0aGUgaW5oZXJlbnQgY2FwYWJpbGl0eSBvbg0KK3RoZSBzY3JlZW4uICAoSGUgbm90ZWQgcGFyZW50aGV0aWNhbGx5IHRoYXQgaGUgaGFkIGJlY29tZSBhIHN1cHBvcnRlciBvZg0KK1gtV2luZG93cyBhcyBhIHJlc3VsdCBvZiB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIENPUkUgUHJvamVjdC4pICBXRUlCRUwgYWxzbw0KK2lsbHVzdHJhdGVkIHRoZSB0d28gbWFqb3IgcGFydHMgb2YgdGhlIGludGVyZmFjZTogIGwpIGEgY29udHJvbCBib3ggdGhhdA0KK2FsbG93cyBvbmUgdG8gZ2VuZXJhdGUgbGlzdHMgb2YgaXRlbXMsIHdoaWNoIHJlc2VtYmxlcyBhIHNtYWxsIHRhYmxlIG9mDQorY29udGVudHMgYmFzZWQgb24ga2V5IHdvcmRzIG9uZSB3aXNoZXMgdG8gc2VhcmNoLCBhbmQgMikgYSBkb2N1bWVudA0KK3ZpZXdlciwgd2hpY2ggaXMgYSBzZXBhcmF0ZSBwcm9jZXNzIGluIGFuZCBvZiBpdHNlbGYuICBIZSBkZW1vbnN0cmF0ZWQNCitob3cgdG8gZm9sbG93IGxpbmtzIHRocm91Z2ggdGhlIGVsZWN0cm9uaWMgZGF0YWJhc2Ugc2ltcGx5IGJ5IHNlbGVjdGluZw0KK3RoZSBhcHByb3ByaWF0ZSBidXR0b24gYW5kIGJyaW5naW5nIHRoZW0gdXAuICBIZSBhbHNvIG5vdGVkIHByb2JsZW1zIHRoYXQNCityZW1haW4gdG8gYmUgYWNjb21tb2RhdGVkIGluIHRoZSBpbnRlcmZhY2UgKGUuZy4sIGFzIHBvaW50ZWQgb3V0IGJ5IExFU0ssDQord2hhdCBoYXBwZW5zIHdoZW4gdXNlcnMgZG8gbm90IGNsaWNrIG9uIHRoZSBpY29uIGZvciB0aGUgZmlndXJlKS4NCisNCitHaXZlbiB0aGUgY29uc3RyYWludHMgb2YgdGltZSwgV0VJQkVMIG9taXR0ZWQgYSBsYXJnZSBudW1iZXIgb2YgYW5jaWxsYXJ5DQoraXRlbXMgaW4gb3JkZXIgdG8gc2F5IGEgZmV3IHdvcmRzIGNvbmNlcm5pbmcgc3RvcmFnZSByZXF1aXJlbWVudHMgYW5kDQord2hhdCB3aWxsIGJlIHJlcXVpcmVkIHRvIHB1dCBhIGxvdCBvZiB0aGluZ3Mgb24gbGluZS4gIFNpbmNlIGl0IGlzDQorZXh0cmVtZWx5IGV4cGVuc2l2ZSB0byByZWNvbnZlcnQgYWxsIG9mIHRoaXMgZGF0YSwgZXNwZWNpYWxseSBpZiBpdCBpcw0KK2p1c3QgaW4gcGFwZXIgZm9ybSAoYW5kIGV2ZW4gaWYgaXQgaXMgaW4gZWxlY3Ryb25pYyBmb3JtIGluIHR5cGVzZXR0aW5nDQordGFwZXMpLCBoZSBhZHZvY2F0ZWQgYnVpbGRpbmcgam91cm5hbHMgZWxlY3Ryb25pY2FsbHkgZnJvbSB0aGUgc3RhcnQuICBJbg0KK3RoYXQgY2FzZSwgaWYgb25lIG9ubHkgaGFzIHRleHQgZ3JhcGhpY3MgYW5kIGluZGV4aW5nICh3aGljaCBpcyBhbGwgdGhhdA0KK29uZSBuZWVkcyB3aXRoIGRlIG5vdm8gZWxlY3Ryb25pYyBwdWJsaXNoaW5nLCBiZWNhdXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8NCitnbyBiYWNrIGFuZCBsb29rIGF0IGJpdC1tYXBzIG9mIHBhZ2VzKSwgb25lIGNhbiBnZXQgMTAsMDAwIGpvdXJuYWxzIG9mDQorZnVsbCB0ZXh0LCBvciBhbG1vc3QgNiBtaWxsaW9uIHBhZ2VzIHBlciB5ZWFyLiAgVGhlc2UgcGFnZXMgY2FuIGJlIHB1dCBpbg0KK2FwcHJveGltYXRlbHkgMTM1IGdpZ2FieXRlcyBvZiBzdG9yYWdlLCB3aGljaCBpcyBub3QgYWxsIHRoYXQgbXVjaCwNCitXRUlCRUwgc2FpZC4gIEZvciB0d2VudHkgeWVhcnMsIHNvbWV0aGluZyBsZXNzIHRoYW4gdGhyZWUgdGVyYWJ5dGVzIHdvdWxkDQorYmUgcmVxdWlyZWQuICBXRUlCRUwgY2FsY3VsYXRlZCB0aGUgY29zdHMgb2Ygc3RvcmluZyB0aGlzIGluZm9ybWF0aW9uIGFzDQorZm9sbG93czogIElmIGEgZ2lnYWJ5dGUgY29zdHMgYXBwcm94aW1hdGVseSAkMSwwMDAsIHRoZW4gYSB0ZXJhYnl0ZSBjb3N0cw0KK2FwcHJveGltYXRlbHkgJDEgbWlsbGlvbiB0byBidXkgaW4gdGVybXMgb2YgaGFyZHdhcmUuICBPbmUgYWxzbyBuZWVkcyBhDQorYnVpbGRpbmcgdG8gcHV0IGl0IGluIGFuZCBhIHN0YWZmIGxpa2UgT0NMQyB0byBoYW5kbGUgdGhhdCBpbmZvcm1hdGlvbi4gDQorU28sIHRvIHN1cHBvcnQgYSB0ZXJhYnl0ZSwgbXVsdGlwbHkgYnkgZml2ZSwgd2hpY2ggZ2l2ZXMgJDUgbWlsbGlvbiBwZXINCit5ZWFyIGZvciBhIHN1cHBvcnRlZCB0ZXJhYnl0ZSBvZiBkYXRhLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogVGFwZXMgc2F2ZWQgYnkgQUNTIGFyZSB0aGUgdHlwb2dyYXBoeSBmaWxlcyBvcmlnaW5hbGx5DQorc3VwcG9ydGluZyBwdWJsaWNhdGlvbiBvZiB0aGUgam91cm5hbCAqIENvc3Qgb2YgYnVpbGRpbmcgdGFnZ2VkIHRleHQgaW50bw0KK3RoZSBkYXRhYmFzZSAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK0R1cmluZyB0aGUgcXVlc3Rpb24tYW5kLWFuc3dlciBwZXJpb2QgdGhhdCBmb2xsb3dlZCBXRUlCRUwncw0KK3ByZXNlbnRhdGlvbiwgdGhlc2UgY2xhcmlmaWNhdGlvbnMgZW1lcmdlZC4gIFRoZSB0YXBlcyBzYXZlZCBieSB0aGUNCitBbWVyaWNhbiBDaGVtaWNhbCBTb2NpZXR5IGFyZSB0aGUgdHlwb2dyYXBoeSBmaWxlcyB0aGF0IG9yaWdpbmFsbHkNCitzdXBwb3J0ZWQgdGhlIHB1YmxpY2F0aW9uIG9mIHRoZSBqb3VybmFsLiAgQWx0aG91Z2ggdGhleSBhcmUgbm90IHRhZ2dlZA0KK2luIFNHTUwsIHRoZXkgYXJlIHRhZ2dlZCBpbiB2ZXJ5IGZpbmUgZGV0YWlsLiAgRXZlcnkgc2luZ2xlIHNlbnRlbmNlIGlzDQorbWFya2VkLCBhbGwgdGhlIHJlZ2lzdHJ5IG51bWJlcnMsIGFsbCB0aGUgcHVibGljYXRpb25zIGlzc3VlcywgZGF0ZXMsIGFuZA0KK3ZvbHVtZXMuICBObyBjb3N0IGZpZ3VyZXMgb24gdGFnZ2luZyBtYXRlcmlhbCBvbiBhIHBlci1tZWdhYnl0ZSBiYXNpcw0KK3dlcmUgYXZhaWxhYmxlLiAgQmVjYXVzZSBBQ1MncyB0eXBlc2V0dGluZyBzeXN0ZW0gcnVucyBmcm9tIHRhZ2dlZCB0ZXh0LA0KK3RoZXJlIGlzIG5vIGV4dHJhIGNvc3QgcGVyIGFydGljbGUuICBJdCB3YXMgdW5rbm93biB3aGF0IGl0IGNvc3RzIEFDUyB0bw0KK2tleWJvYXJkIHRoZSB0YWdnZWQgdGV4dCByYXRoZXIgdGhhbiBqdXN0IGtleWJvYXJkIHRoZSB0ZXh0IGluIHRoZQ0KK2NoZWFwZXN0IHByb2Nlc3MuICBJbiBvdGhlciB3b3Jkcywgc2luY2Ugb25lIGludGVuZHMgdG8gcHVibGlzaCB0aGluZ3MNCithbmQgd2lsbCBuZWVkIHRvIGJ1aWxkIHRhZ2dlZCB0ZXh0IGludG8gYSB0eXBvZ3JhcGh5IHN5c3RlbSBpbiBhbnkgY2FzZSwNCitpZiBvbmUgZG9lcyB0aGF0IGluIHN1Y2ggYSB3YXkgdGhhdCBpdCBjYW4gZHJpdmUgbm90IG9ubHkgdHlwb2dyYXBoeSBidXQNCithbiBlbGVjdHJvbmljIHN5c3RlbSAod2hpY2ggaXMgd2hhdCBBQ1MgaW50ZW5kcyB0byBkby0tbW92ZSB0byBTR01MDQorcHVibGlzaGluZyksIHRoZSBtYXJnaW5hbCBjb3N0IGlzIHplcm8uICBUaGUgbWFyZ2luYWwgY29zdCByZXByZXNlbnRzIHRoZQ0KK2Nvc3Qgb2YgYnVpbGRpbmcgdGFnZ2VkIHRleHQgaW50byB0aGUgZGF0YWJhc2UsIHdoaWNoIGlzIHNtYWxsLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitTUEVSQkVSRy1NY1FVRUVOICogRGlzdGluY3Rpb24gYmV0d2VlbiB0ZXh0cyBhbmQgY29tcHV0ZXJzICogSW1wbGljYXRpb25zDQorb2YgcmVjb2duaXppbmcgdGhhdCBhbGwgcmVwcmVzZW50YXRpb24gaXMgZW5jb2RpbmcgKiBEZWFsaW5nIHdpdGgNCitjb21wbGljYXRlZCByZXByZXNlbnRhdGlvbnMgb2YgdGV4dCBlbnRhaWxzIHRoZSBuZWVkIGZvciBhIGdyYW1tYXIgb2YNCitkb2N1bWVudHMgKiBWYXJpZXR5IG9mIGZvcm1zIG9mIGZvcm1hbCBncmFtbWFycyAqIFRleHQgYXMgYSBiaXQtbWFwcGVkDQoraW1hZ2UgZG9lcyBub3QgcmVwcmVzZW50IGEgc2VyaW91cyBhdHRlbXB0IHRvIHJlcHJlc2VudCB0ZXh0IGluDQorZWxlY3Ryb25pYyBmb3JtICogU0dNTCwgdGhlIFRFSSwgZG9jdW1lbnQtdHlwZSBkZWNsYXJhdGlvbnMsIGFuZCB0aGUNCityZXVzYWJpbGl0eSBhbmQgbG9uZ2V2aXR5IG9mIGRhdGEgKiBURUkgY29uZm9ybWFuY2UgZXhwbGljaXRseSBhbGxvd3MNCitleHRlbnNpb24gb3IgbW9kaWZpY2F0aW9uIG9mIHRoZSBURUkgdGFnIHNldCAqIEFkbWluaXN0cmF0aXZlIGJhY2tncm91bmQNCitvZiB0aGUgVEVJICogU2V2ZXJhbCBkZXNpZ24gZ29hbHMgZm9yIHRoZSBURUkgdGFnIHNldCAqIEFuIGFic29sdXRlbHkNCitmaXhlZCByZXF1aXJlbWVudCBvZiB0aGUgVEVJIEd1aWRlbGluZXMgKiBDaGFsbGVuZ2VzIHRoZSBURUkgaGFzDQorYXR0ZW1wdGVkIHRvIGZhY2UgKiBHb29kIHRleHRzIG5vdCBiZXlvbmQgZWNvbm9taWMgZmVhc2liaWxpdHkgKiBUaGUNCitpc3N1ZSBvZiByZXByb2R1Y2liaWxpdHkgb3IgcHJvY2Vzc2FiaWxpdHkgKiBUaGUgaXNzdWUgb2YgbWFnZXMgYXMNCitzaW11bGFjcmEgZm9yIHRoZSB0ZXh0IHJlZHV4ICogT25lJ3MgbW9kZWwgb2YgdGV4dCBkZXRlcm1pbmVzIHdoYXQgb25lJ3MNCitzb2Z0d2FyZSBjYW4gZG8gd2l0aCBhIHRleHQgYW5kIGhhcyBlY29ub21pYyBjb25zZXF1ZW5jZXMgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitQcmlvciB0byBzcGVha2luZyBhYm91dCBTR01MIGFuZCBtYXJrdXAsIE1pY2hhZWwgU1BFUkJFUkctTWNRVUVFTiwgZWRpdG9yLA0KK1RleHQgRW5jb2RpbmcgSW5pdGlhdGl2ZSAoVEVJKSwgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcy1DaGljYWdvLCBmaXJzdCBkcmV3DQorYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRleHRzIGFuZCBjb21wdXRlcnM6ICBUZXh0cyBhcmUgYWJzdHJhY3QgY3VsdHVyYWwNCithbmQgbGluZ3Vpc3RpYyBvYmplY3RzIHdoaWxlIGNvbXB1dGVycyBhcmUgY29tcGxpY2F0ZWQgcGh5c2ljYWwgZGV2aWNlcywNCitoZSBzYWlkLiAgQWJzdHJhY3Qgb2JqZWN0cyBjYW5ub3QgYmUgcGxhY2VkIGluc2lkZSBwaHlzaWNhbCBkZXZpY2VzOyB3aXRoDQorY29tcHV0ZXJzIG9uZSBjYW4gb25seSByZXByZXNlbnQgdGV4dCBhbmQgYWN0IHVwb24gdGhvc2UgcmVwcmVzZW50YXRpb25zLg0KKw0KK1RoZSByZWNvZ25pdGlvbiB0aGF0IGFsbCByZXByZXNlbnRhdGlvbiBpcyBlbmNvZGluZywgU1BFUkJFUkctTWNRVUVFTg0KK2FyZ3VlZCwgbGVhZHMgdG8gdGhlIHJlY29nbml0aW9uIG9mIHR3byB0aGluZ3M6ICAxKSBUaGUgdG9waWMgZGVzY3JpcHRpb24NCitmb3IgdGhpcyBzZXNzaW9uIGlzIHNsaWdodGx5IG1pc2xlYWRpbmcsIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG5vIGRpc2N1c3Npb24NCitvZiBwcm9zIGFuZCBjb25zIG9mIHRleHQtY29kaW5nIHVubGVzcyB3aGF0IG9uZSBtZWFucyBpcyBwcm9zIGFuZCBjb25zIG9mDQord29ya2luZyB3aXRoIHRleHQgd2l0aCBjb21wdXRlcnMuICAyKSBObyB0ZXh0IGNhbiBiZSByZXByZXNlbnRlZCBpbiBhDQorY29tcHV0ZXIgd2l0aG91dCBzb21lIHNvcnQgb2YgZW5jb2Rpbmc7IGltYWdlcyBhcmUgb25lIHdheSBvZiBlbmNvZGluZyB0ZXh0LA0KK0FTQ0lJIGlzIGFub3RoZXIsIFNHTUwgeWV0IGFub3RoZXIuICBUaGVyZSBpcyBubyBlbmNvZGluZyB3aXRob3V0IHNvbWUNCitpbmZvcm1hdGlvbiBsb3NzLCB0aGF0IGlzLCB0aGVyZSBpcyBubyBwZXJmZWN0IHJlcHJvZHVjdGlvbiBvZiBhIHRleHQgdGhhdA0KK2FsbG93cyBvbmUgdG8gZG8gYXdheSB3aXRoIHRoZSBvcmlnaW5hbC4gIFRodXMsIHRoZSBxdWVzdGlvbiBiZWNvbWVzLA0KK1doYXQgaXMgdGhlIG1vc3QgdXNlZnVsIHJlcHJlc2VudGF0aW9uIG9mIHRleHQgZm9yIGEgc2VyaW91cyB3b3JrPw0KK1RoaXMgZGVwZW5kcyBvbiB3aGF0IGtpbmQgb2Ygc2VyaW91cyB3b3JrIG9uZSBpcyB0YWxraW5nIGFib3V0Lg0KKw0KK1RoZSBwcm9qZWN0cyBkZW1vbnN0cmF0ZWQgdGhlIHByZXZpb3VzIGRheSBhbGwgaW52b2x2ZWQgaGlnaGx5IGNvbXBsZXgNCitpbmZvcm1hdGlvbiBhbmQgZmFpcmx5IGNvbXBsZXggbWFuaXB1bGF0aW9uIG9mIHRoZSB0ZXh0dWFsIG1hdGVyaWFsLg0KK0luIG9yZGVyIHRvIHVzZSB0aGF0IGNvbXBsaWNhdGVkIGluZm9ybWF0aW9uLCBvbmUgaGFzIHRvIGNhbGN1bGF0ZSBpdA0KK3Nsb3dseSBvciBtYW51YWxseSBhbmQgc3RvcmUgdGhlIHJlc3VsdC4gIEl0IG5lZWRzIHRvIGJlIHN0b3JlZCwgdGhlcmVmb3JlLA0KK2FzIHBhcnQgb2Ygb25lJ3MgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQuICBUaHVzLCBvbmUgbmVlZHMgdG8gc3RvcmUgdGhlDQorc3RydWN0dXJlIGluIHRoZSB0ZXh0LiAgVG8gZGVhbCB3aXRoIGNvbXBsaWNhdGVkIHJlcHJlc2VudGF0aW9ucyBvZiB0ZXh0LA0KK29uZSBuZWVkcyBzb21laG93IHRvIGNvbnRyb2wgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGEgdGV4dDsNCit0aGF0IG1lYW5zIG9uZSBuZWVkcyBhIHdheSBvZiBmaW5kaW5nIG91dCB3aGV0aGVyIGEgZG9jdW1lbnQgYW5kIGFuDQorZWxlY3Ryb25pYyByZXByZXNlbnRhdGlvbiBvZiBhIGRvY3VtZW50IGlzIGxlZ2FsIG9yIG5vdDsgYW5kIHRoYXQNCittZWFucyBvbmUgbmVlZHMgYSBncmFtbWFyIG9mIGRvY3VtZW50cy4NCisNCitTUEVSQkVSRy1NY1FVRUVOIGRpc2N1c3NlZCB0aGUgdmFyaWV0eSBvZiBmb3JtcyBvZiBmb3JtYWwgZ3JhbW1hcnMsDQoraW1wbGljaXQgYW5kIGV4cGxpY2l0LCBhcyBhcHBsaWVkIHRvIHRleHQsIGFuZCB0aGVpciBjYXBhYmlsaXRpZXMuICBIZQ0KK2FyZ3VlZCB0aGF0IHRoZXNlIGdyYW1tYXJzIGNvcnJlc3BvbmQgdG8gZGlmZmVyZW50IG1vZGVscyBvZiB0ZXh0IHRoYXQNCitkaWZmZXJlbnQgZGV2ZWxvcGVycyBoYXZlLiAgRm9yIGV4YW1wbGUsIG9uZSBpbXBsaWNpdCBtb2RlbCBvZiB0aGUgdGV4dA0KK2lzIHRoYXQgdGhlcmUgaXMgbm8gaW50ZXJuYWwgc3RydWN0dXJlLCBidXQganVzdCBvbmUgdGhpbmcgYWZ0ZXIgYW5vdGhlciwNCithIGZldyBjaGFyYWN0ZXJzIGFuZCB0aGVuIHBlcmhhcHMgYSBzdGFydC10aXRsZSBjb21tYW5kLCBhbmQgdGhlbiBhIGZldw0KK21vcmUgY2hhcmFjdGVycyBhbmQgYW4gZW5kLXRpdGxlIGNvbW1hbmQuICBTUEVSQkVSRy1NY1FVRUVOIGFsc28NCitkaXN0aW5ndWlzaGVkIHNldmVyYWwga2luZHMgb2YgdGV4dCB0aGF0IGhhdmUgYSBzb3J0IG9mIGhpZXJhcmNoaWNhbA0KK3N0cnVjdHVyZSB0aGF0IGlzIG5vdCB2ZXJ5IHdlbGwgZGVmaW5lZCwgd2hpY2gsIHR5cGljYWxseSwgY29ycmVzcG9uZHMNCit0byBncmFtbWFycyB0aGF0IGFyZSBub3QgdmVyeSB3ZWxsIGRlZmluZWQsIGFzIHdlbGwgYXMgaGllcmFyY2hpZXMgdGhhdA0KK2FyZSB2ZXJ5IHdlbGwgZGVmaW5lZCAoZS5nLiwgdGhlIFRoZXNhdXJ1cyBMaW5ndWFlIEdyYWVjYWUpIGFuZCBleHRyZW1lbHkNCitjb21wbGljYXRlZCB0aGluZ3Mgc3VjaCBhcyBTR01MLCB3aGljaCBoYW5kbGUgc3RyaWN0bHkgaGllcmFyY2hpY2FsIGRhdGENCit2ZXJ5IG5pY2VseS4NCisNCitTUEVSQkVSRy1NY1FVRUVOIGNvbmNlZGVkIHRoYXQgb25lIG90aGVyIG1vZGVsIG5vdCBpbGx1c3RyYXRlZCBvbiBoaXMgdHdvDQorZGlzcGxheXMgd2FzIHRoZSBtb2RlbCBvZiB0ZXh0IGFzIGEgYml0LW1hcHBlZCBpbWFnZSwgYW4gaW1hZ2Ugb2YgYSBwYWdlLA0KK2FuZCBjb25mZXNzZWQgdG8gaGF2aW5nIGJlZW4gY29udmVydGVkIHRvIGEgbGltaXRlZCBleHRlbnQgYnkgdGhlDQorV29ya3Nob3AgdG8gdGhlIHZpZXcgdGhhdCBlbGVjdHJvbmljIGltYWdlcyBjb25zdGl0dXRlIGEgcHJvbWlzaW5nLA0KK3Byb2JhYmx5IHN1cGVyaW9yIGFsdGVybmF0aXZlIHRvIG1pY3JvZmlsbWluZy4gIEJ1dCBoZSB3YXMgbm90IGNvbnZpbmNlZA0KK3RoYXQgZWxlY3Ryb25pYyBpbWFnZXMgcmVwcmVzZW50IGEgc2VyaW91cyBhdHRlbXB0IHRvIHJlcHJlc2VudCB0ZXh0IGluDQorZWxlY3Ryb25pYyBmb3JtLiAgTWFueSBvZiB0aGVpciBwcm9ibGVtcyBzdGVtIGZyb20gdGhlIGZhY3QgdGhhdCB0aGV5IGFyZQ0KK25vdCBkaXJlY3QgYXR0ZW1wdHMgdG8gcmVwcmVzZW50IHRoZSB0ZXh0IGJ1dCBhdHRlbXB0cyB0byByZXByZXNlbnQgdGhlDQorcGFnZSwgdGh1cyBtYWtpbmcgdGhlbSByZXByZXNlbnRhdGlvbnMgb2YgcmVwcmVzZW50YXRpb25zLg0KKw0KK0luIHRoaXMgc2l0dWF0aW9uIG9mIGluY3JlYXNpbmdseSBjb21wbGljYXRlZCB0ZXh0dWFsIGluZm9ybWF0aW9uIGFuZCB0aGUNCituZWVkIHRvIGNvbnRyb2wgdGhhdCBjb21wbGV4aXR5IGluIGEgdXNlZnVsIHdheSAod2hpY2ggYmVncyB0aGUgcXVlc3Rpb24NCitvZiB0aGUgbmVlZCBmb3IgZ29vZCB0ZXh0dWFsIGdyYW1tYXJzKSwgb25lIGhhcyB0aGUgaW50cm9kdWN0aW9uIG9mIFNHTUwuIA0KK1dpdGggU0dNTCwgb25lIGNhbiBkZXZlbG9wIHNwZWNpZmljIGRvY3VtZW50LXR5cGUgZGVjbGFyYXRpb25zDQorZm9yIHNwZWNpZmljIHRleHQgdHlwZXMgb3IsIGFzIHdpdGggdGhlIFRFSSwgYXR0ZW1wdHMgdG8gZ2VuZXJhdGUNCitnZW5lcmFsIGRvY3VtZW50LXR5cGUgZGVjbGFyYXRpb25zIHRoYXQgY2FuIGhhbmRsZSBhbGwgc29ydHMgb2YgdGV4dC4NCitUaGUgVEVJIGlzIGFuIGF0dGVtcHQgdG8gZGV2ZWxvcCBmb3JtYXRzIGZvciB0ZXh0IHJlcHJlc2VudGF0aW9uIHRoYXQNCit3aWxsIGVuc3VyZSB0aGUga2luZCBvZiByZXVzYWJpbGl0eSBhbmQgbG9uZ2V2aXR5IG9mIGRhdGEgZGlzY3Vzc2VkIGVhcmxpZXIuDQorSXQgb2ZmZXJzIGEgd2F5IHRvIHN0YXkgYWxpdmUgaW4gdGhlIHN0YXRlIG9mIHBlcm1hbmVudCB0ZWNobm9sb2dpY2FsDQorcmV2b2x1dGlvbi4NCisNCitJdCBoYXMgYmVlbiBhIGNvbnRpbnVpbmcgY2hhbGxlbmdlIGluIHRoZSBURUkgdG8gY3JlYXRlIGRvY3VtZW50IGdyYW1tYXJzDQordGhhdCBkbyBzb21lIHdvcmsgaW4gY29udHJvbGxpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRleHR1YWwgb2JqZWN0IGJ1dA0KK2Fsc28gYWxsb3dpbmcgb25lIHRvIHJlcHJlc2VudCB0aGUgcmVhbCB0ZXh0IHRoYXQgb25lIHdpbGwgZmluZC4gDQorRnVuZGFtZW50YWwgdG8gdGhlIG5vdGlvbiBvZiB0aGUgVEVJIGlzIHRoYXQgVEVJIGNvbmZvcm1hbmNlIGFsbG93cyBvbmUNCit0aGUgYWJpbGl0eSB0byBleHRlbmQgb3IgbW9kaWZ5IHRoZSBURUkgdGFnIHNldCBzbyB0aGF0IGl0IGZpdHMgdGhlIHRleHQNCit0aGF0IG9uZSBpcyBhdHRlbXB0aW5nIHRvIHJlcHJlc2VudC4NCisNCitTUEVSQkVSRy1NY1FVRUVOIG5leHQgb3V0bGluZWQgdGhlIGFkbWluaXN0cmF0aXZlIGJhY2tncm91bmQgb2YgdGhlIFRFSS4gDQorVGhlIFRFSSBpcyBhbiBpbnRlcm5hdGlvbmFsIHByb2plY3QgdG8gZGV2ZWxvcCBhbmQgZGlzc2VtaW5hdGUgZ3VpZGVsaW5lcw0KK2ZvciB0aGUgZW5jb2RpbmcgYW5kIGludGVyY2hhbmdlIG9mIG1hY2hpbmUtcmVhZGFibGUgdGV4dC4gIEl0IGlzDQorc3BvbnNvcmVkIGJ5IHRoZSBBc3NvY2lhdGlvbiBmb3IgQ29tcHV0ZXJzIGluIHRoZSBIdW1hbml0aWVzLCB0aGUNCitBc3NvY2lhdGlvbiBmb3IgQ29tcHV0YXRpb25hbCBMaW5ndWlzdGljcywgYW5kIHRoZSBBc3NvY2lhdGlvbiBmb3INCitMaXRlcmFyeSBhbmQgTGluZ3Vpc3RpYyBDb21wdXRpbmcuICBSZXByZXNlbnRhdGl2ZXMgb2YgbnVtZXJvdXMgb3RoZXINCitwcm9mZXNzaW9uYWwgc29jaWV0aWVzIHNpdCBvbiBpdHMgYWR2aXNvcnkgYm9hcmQuICBUaGUgVEVJIGhhcyBhIG51bWJlcg0KK29mIGFmZmlsaWF0ZWQgcHJvamVjdHMgdGhhdCBoYXZlIHByb3ZpZGVkIGFzc2lzdGFuY2UgYnkgdGVzdGluZyBkcmFmdHMgb2YNCit0aGUgZ3VpZGVsaW5lcy4NCisNCitBbW9uZyB0aGUgZGVzaWduIGdvYWxzIGZvciB0aGUgVEVJIHRhZyBzZXQsIHRoZSBzY2hlbWUgZmlyc3Qgb2YgYWxsIG11c3QNCittZWV0IHRoZSBuZWVkcyBvZiByZXNlYXJjaCwgYmVjYXVzZSB0aGUgVEVJIGNhbWUgb3V0IG9mIHRoZSByZXNlYXJjaA0KK2NvbW11bml0eSwgd2hpY2ggZGlkIG5vdCBmZWVsIGFkZXF1YXRlbHkgc2VydmVkIGJ5IGV4aXN0aW5nIHRhZyBzZXRzLiANCitUaGUgdGFnIHNldCBtdXN0IGJlIGV4dGVuc2l2ZSBhcyB3ZWxsIGFzIGNvbXBhdGlibGUgd2l0aCBleGlzdGluZyBhbmQNCitlbWVyZ2luZyBzdGFuZGFyZHMuICBJbiAxOTkwLCB2ZXJzaW9uIDEuMCBvZiB0aGUgR3VpZGVsaW5lcyB3YXMgcmVsZWFzZWQNCisoU1BFUkJFUkctTWNRVUVFTiBpbGx1c3RyYXRlZCB0aGVpciBjb250ZW50cykuDQorDQorU1BFUkJFUkctTWNRVUVFTiBub3RlZCB0aGF0IG9uZSBwcm9ibGVtIGJlc2V0dGluZyBlbGVjdHJvbmljIHRleHQgaGFzDQorYmVlbiB0aGUgbGFjayBvZiBhZGVxdWF0ZSBpbnRlcm5hbCBvciBleHRlcm5hbCBkb2N1bWVudGF0aW9uIGZvciBtYW55DQorZXhpc3RpbmcgZWxlY3Ryb25pYyB0ZXh0cy4gIFRoZSBURUkgZ3VpZGVsaW5lcyBhcyBjdXJyZW50bHkgZm9ybXVsYXRlZA0KK2NvbnRhaW4gZmV3IGZpeGVkIHJlcXVpcmVtZW50cywgYnV0IG9uZSBvZiB0aGVtIGlzIHRoaXM6ICBUaGVyZSBtdXN0DQorYWx3YXlzIGJlIGEgZG9jdW1lbnQgaGVhZGVyLCBhbiBpbi1maWxlIFNHTUwgdGFnIHRoYXQgcHJvdmlkZXMNCisxKSBhIGJpYmxpb2dyYXBoaWMgZGVzY3JpcHRpb24gb2YgdGhlIGVsZWN0cm9uaWMgb2JqZWN0IG9uZSBpcyB0YWxraW5nDQorYWJvdXQgKHRoYXQgaXMsIHdobyBpbmNsdWRlZCBpdCwgd2hlbiwgd2hhdCBmb3IsIGFuZCB1bmRlciB3aGljaCB0aXRsZSk7DQorYW5kIDIpIHRoZSBjb3B5IHRleHQgZnJvbSB3aGljaCBpdCB3YXMgZGVyaXZlZCwgaWYgYW55LiAgSWYgdGhlcmUgd2FzDQorbm8gY29weSB0ZXh0IG9yIGlmIHRoZSBjb3B5IHRleHQgaXMgdW5rbm93biwgdGhlbiBvbmUgc3RhdGVzIGFzIG11Y2guDQorVmVyc2lvbiAyLjAgb2YgdGhlIEd1aWRlbGluZXMgd2FzIHNjaGVkdWxlZCB0byBiZSBjb21wbGV0ZWQgaW4gZmFsbCAxOTkyDQorYW5kIGEgcmV2aXNlZCB0aGlyZCB2ZXJzaW9uIGlzIHRvIGJlIHByZXNlbnRlZCB0byB0aGUgVEVJIGFkdmlzb3J5IGJvYXJkDQorZm9yIGl0cyBlbmRvcnNlbWVudCB0aGlzIGNvbWluZyB3aW50ZXIuICBUaGUgVEVJIGl0c2VsZiBleGlzdHMgdG8gcHJvdmlkZQ0KK2EgbWFya3VwIGxhbmd1YWdlLCBub3QgYSBtYXJrZWQtdXAgdGV4dC4NCisNCitBbW9uZyB0aGUgY2hhbGxlbmdlcyB0aGUgVEVJIGhhcyBhdHRlbXB0ZWQgdG8gZmFjZSBpcyB0aGUgbmVlZCBmb3IgYQ0KK21hcmt1cCBsYW5ndWFnZSB0aGF0IHdpbGwgd29yayBmb3IgZXhpc3RpbmcgcHJvamVjdHMsIHRoYXQgaXMsIGhhbmRsZSB0aGUNCitsZXZlbCBvZiBtYXJrdXAgdGhhdCBwZW9wbGUgYXJlIHVzaW5nIG5vdyB0byB0YWcgb25seSBjaGFwdGVyLCBzZWN0aW9uLA0KK2FuZCBwYXJhZ3JhcGggZGl2aXNpb25zIGFuZCBub3QgbXVjaCBlbHNlLiAgQXQgdGhlIHNhbWUgdGltZSwgc3VjaCBhDQorbGFuZ3VhZ2UgYWxzbyB3aWxsIGJlIGFibGUgdG8gc2NhbGUgdXAgZ3JhY2VmdWxseSB0byBoYW5kbGUgdGhlIGhpZ2hseQ0KK2RldGFpbGVkIG1hcmt1cCB3aGljaCBtYW55IHBlb3BsZSBmb3Jlc2VlIGFzIHRoZSBmdXR1cmUgZGVzdGluYXRpb24gb2YNCittdWNoIGVsZWN0cm9uaWMgdGV4dCwgYW5kIHdoaWNoIGlzIG5vdCB0aGUgZnV0dXJlIGRlc3RpbmF0aW9uIGJ1dCB0aGUNCitwcmVzZW50IGhvbWUgb2YgbnVtZXJvdXMgZWxlY3Ryb25pYyB0ZXh0cyBpbiBzcGVjaWFsaXplZCBhcmVhcy4NCisNCitTUEVSQkVSRy1NY1FVRUVOIGRpc21pc3NlZCB0aGUgbG93ZXN0LWNvbW1vbi1kZW5vbWluYXRvciBhcHByb2FjaCBhcw0KK3VuYWJsZSB0byBzdXBwb3J0IHRoZSBraW5kIG9mIGFwcGxpY2F0aW9ucyB0aGF0IGRyYXcgcGVvcGxlIHdobyBoYXZlDQorbmV2ZXIgYmVlbiBpbiB0aGUgcHVibGljIGxpYnJhcnkgcmVndWxhcmx5IGJlZm9yZSwgYW5kIG1ha2UgdGhlbSBjb21lDQorYmFjay4gIEhlIGFkdm9jYXRlZCBtb3JlIGludGVyZXN0aW5nIHRleHQgYW5kIG1vcmUgaW50ZWxsaWdlbnQgdGV4dC4gDQorQXNzZXJ0aW5nIHRoYXQgaXQgaXMgbm90IGJleW9uZCBlY29ub21pYyBmZWFzaWJpbGl0eSB0byBoYXZlIGdvb2QgdGV4dHMsDQorU1BFUkJFUkctTWNRVUVFTiBub3RlZCB0aGF0IHRoZSBURUkgR3VpZGVsaW5lcyBsaXN0aW5nIDIwMC1vZGQgdGFncw0KK2NvbnRhaW5zIHRhZ3MgdGhhdCBvbmUgaXMgZXhwZWN0ZWQgdG8gZW50ZXIgZXZlcnkgdGltZSB0aGUgcmVsZXZhbnQNCit0ZXh0dWFsIGZlYXR1cmUgb2NjdXJzLiAgSXQgY29udGFpbnMgYWxsIHRoZSB0YWdzIHRoYXQgcGVvcGxlIG5lZWQgbm93LA0KK2FuZCBpdCBpcyBub3QgZXhwZWN0ZWQgdGhhdCBldmVyeW9uZSB3aWxsIHRhZyB0aGluZ3MgaW4gdGhlIHNhbWUgd2F5Lg0KKw0KK1RoZSBxdWVzdGlvbiBvZiBob3cgcGVvcGxlIHdpbGwgdGFnIHRoZSB0ZXh0IGlzIGluIGxhcmdlIHBhcnQgYSBmdW5jdGlvbg0KK29mIHRoZWlyIHJlYWN0aW9uIHRvIHdoYXQgU1BFUkJFUkctTWNRVUVFTiB0ZXJtZWQgdGhlIGlzc3VlIG9mDQorcmVwcm9kdWNpYmlsaXR5LiAgV2hhdCBvbmUgbmVlZHMgdG8gYmUgYWJsZSB0byByZXByb2R1Y2UgYXJlIHRoZSB0aGluZ3MNCitvbmUgd2FudHMgdG8gd29yayB3aXRoLiAgUGVyaGFwcyBhIG1vcmUgdXNlZnVsIGNvbmNlcHQgdGhhbiB0aGF0IG9mDQorcmVwcm9kdWNpYmlsaXR5IG9yIHJlY292ZXJhYmlsaXR5IGlzIHRoYXQgb2YgcHJvY2Vzc2FiaWxpdHksIHRoYXQgaXMsDQord2hhdCBjYW4gb25lIGdldCBmcm9tIGFuIGVsZWN0cm9uaWMgdGV4dCB3aXRob3V0IHJlYWRpbmcgaXQgYWdhaW4NCitpbiB0aGUgb3JpZ2luYWwuICBIZSBpbGx1c3RyYXRlZCB0aGlzIGNvbnRlbnRpb24gd2l0aCBhIHBhZ2UgZnJvbQ0KK0phbiBDb21lbml1cydzIGJpbGluZ3VhbCBJbnRyb2R1Y3Rpb24gdG8gTGF0aW4uDQorDQorU1BFUkJFUkctTWNRVUVFTiByZXR1cm5lZCBhdCBsZW5ndGggdG8gdGhlIGlzc3VlIG9mIGltYWdlcyBhcyBzaW11bGFjcmENCitmb3IgdGhlIHRleHQsIGluIG9yZGVyIHRvIHJlaXRlcmF0ZSBoaXMgYmVsaWVmIHRoYXQgaW4gdGhlIGxvbmcgcnVuIG1vcmUNCit0aGFuIGltYWdlcyBvZiBwYWdlcyBvZiBwYXJ0aWN1bGFyIGVkaXRpb25zIG9mIHRoZSB0ZXh0IGFyZSBuZWVkZWQsDQorYmVjYXVzZSBqdXN0IGFzIHNlY29uZC1nZW5lcmF0aW9uIHBob3RvY29waWVzIGFuZCBzZWNvbmQtZ2VuZXJhdGlvbg0KK21pY3JvZmlsbSBkZWdlbmVyYXRlLCBzbyBzZWNvbmQtZ2VuZXJhdGlvbiByZXByZXNlbnRhdGlvbnMgdGVuZCB0bw0KK2RlZ2VuZXJhdGUsIGFuZCBvbmUgdGVuZHMgdG8gb3ZlcnN0cmVzcyBzb21lIHJlbGF0aXZlbHkgdHJpdmlhbCBhc3BlY3RzDQorb2YgdGhlIHRleHQgc3VjaCBhcyBpdHMgbGF5b3V0IG9uIHRoZSBwYWdlLCB3aGljaCBpcyBub3QgYWx3YXlzDQorc2lnbmlmaWNhbnQsIGRlc3BpdGUgd2hhdCB0aGUgdGV4dCBjcml0aWNzIG1pZ2h0IHNheSwgYW5kIHNsaWdodCBvdGhlcg0KK3BpZWNlcyBvZiBpbmZvcm1hdGlvbiBzdWNoIGFzIHRoZSB2ZXJ5IGltcG9ydGFudCBsZXhpY2FsIHRpZXMgYmV0d2VlbiB0aGUNCitFbmdsaXNoIGFuZCBMYXRpbiB2ZXJzaW9ucyBvZiBDb21lbml1cydzIGJpbGluZ3VhbCB0ZXh0LCBmb3IgZXhhbXBsZS4gDQorTW9yZW92ZXIsIGluIG1hbnkgY3J1Y2lhbCByZXNwZWN0cyBpdCBpcyBlYXN5IHRvIGZvb2wgb25lc2VsZiBjb25jZXJuaW5nDQord2hhdCBhIHNjYW5uZWQgaW1hZ2Ugb2YgdGhlIHRleHQgd2lsbCBhY2NvbXBsaXNoLiAgRm9yIGV4YW1wbGUsIGluIG9yZGVyDQordG8gc3R1ZHkgdGhlIHRyYW5zbWlzc2lvbiBvZiB0ZXh0cywgaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGUgdGV4dA0KK2NhcnJpZXIgaXMgbmVjZXNzYXJ5LCB3aGljaCBzY2FubmVkIGltYWdlcyBzaW1wbHkgZG8gbm90IGFsd2F5cyBoYW5kbGUuIA0KK0Z1cnRoZXIsIGV2ZW4gdGhlIGhpZ2gtcXVhbGl0eSBtYXRlcmlhbHMgYmVpbmcgcHJvZHVjZWQgYXQgQ29ybmVsbCB1c2UNCittdWNoIG9mIHRoZSBpbmZvcm1hdGlvbiB0aGF0IG9uZSB3b3VsZCBuZWVkIGlmIHN0dWR5aW5nIHRob3NlIGJvb2tzIGFzDQorcGh5c2ljYWwgb2JqZWN0cy4gIEl0IGlzIGEgY2hvaWNlIHRoYXQgaGFzIGJlZW4gbWFkZS4gIEl0IGlzIGFuIGFyZ3VhYmx5DQoranVzdGlmaWFibGUgY2hvaWNlLCBidXQgb25lIGRvZXMgbm90IGtub3cgd2hhdCBjb2xvciB0aG9zZSBwZW4gc3Ryb2tlcyBpbg0KK3RoZSBtYXJnaW4gYXJlIG9yIHdoZXRoZXIgdGhlcmUgd2FzIGEgc3RhaW4gb24gdGhlIHBhZ2UsIGJlY2F1c2UgaXQgaGFzDQorYmVlbiBmaWx0ZXJlZCBvdXQuICBPbmUgZG9lcyBub3Qga25vdyB3aGV0aGVyIHRoZXJlIHdlcmUgcmlwcyBpbiB0aGUgcGFnZQ0KK2JlY2F1c2UgdGhleSBkbyBub3Qgc2hvdyB1cCwgYW5kIG9uIGEgY291cGxlIG9mIHRoZSBtYXJnaW5hbCBtYXJrcyBvbmUNCitsb3NlcyBoYWxmIG9mIHRoZSBtYXJrIGJlY2F1c2UgdGhlIHBlbiBpcyB2ZXJ5IGxpZ2h0IGFuZCB0aGUgc2Nhbm5lcg0KK2ZhaWxlZCB0byBwaWNrIGl0IHVwLCBhbmQgc28gd2hhdCBpcyBjbGVhcmx5IGEgY2hlY2ttYXJrIGluIHRoZSBtYXJnaW4gb2YNCit0aGUgb3JpZ2luYWwgYmVjb21lcyBhIGxpdHRsZSBzY29vcCBpbiB0aGUgbWFyZ2luIG9mIHRoZSBmYWNzaW1pbGUuIA0KK1N0YW5kYXJkIHByb2JsZW1zIGZvciBmYWNzaW1pbGUgZWRpdGlvbnMsIG5vdCBuZXcgdG8gZWxlY3Ryb25pY3MsIGJ1dA0KK2Fsc28gdHJ1ZSBvZiBsaWdodC1sZW5zIHBob3RvZ3JhcGh5LCBhbmQgYXJlIHJlbWFya2VkIGhlcmUgYmVjYXVzZSBpdCBpcw0KK2ltcG9ydGFudCB0aGF0IHdlIG5vdCBmb29sIG91cnNlbHZlcyB0aGF0IGV2ZW4gaWYgd2UgcHJvZHVjZSBhIHZlcnkgbmljZQ0KK2ltYWdlIG9mIHRoaXMgcGFnZSB3aXRoIGdvb2QgY29udHJhc3QsIHdlIGFyZSBub3QgcmVwbGFjaW5nIHRoZQ0KK21hbnVzY3JpcHQgYW55IG1vcmUgdGhhbiBtaWNyb2ZpbG0gaGFzIHJlcGxhY2VkIHRoZSBtYW51c2NyaXB0Lg0KKw0KK1RoZSBURUkgY29tZXMgZnJvbSB0aGUgcmVzZWFyY2ggY29tbXVuaXR5LCB3aGVyZSBpdHMgZmlyc3QgYWxsZWdpYW5jZQ0KK2xpZXMsIGJ1dCBpdCBpcyBub3QganVzdCBhbiBhY2FkZW1pYyBleGVyY2lzZS4gIEl0IGhhcyByZWxldmFuY2UgZmFyDQorYmV5b25kIHRob3NlIHdobyBzcGVuZCBhbGwgb2YgdGhlaXIgdGltZSBzdHVkeWluZyB0ZXh0LCBiZWNhdXNlIG9uZSdzDQorbW9kZWwgb2YgdGV4dCBkZXRlcm1pbmVzIHdoYXQgb25lJ3Mgc29mdHdhcmUgY2FuIGRvIHdpdGggYSB0ZXh0LiAgR29vZA0KK21vZGVscyBsZWFkIHRvIGdvb2Qgc29mdHdhcmUuICBCYWQgbW9kZWxzIGxlYWQgdG8gYmFkIHNvZnR3YXJlLiAgVGhhdCBoYXMNCitlY29ub21pYyBjb25zZXF1ZW5jZXMsIGFuZCBpdCBpcyB0aGVzZSBlY29ub21pYyBjb25zZXF1ZW5jZXMgdGhhdCBoYXZlDQorbGVkIHRoZSBFdXJvcGVhbiBDb21tdW5pdHkgdG8gaGVscCBzdXBwb3J0IHRoZSBURUksIGFuZCB0aGF0IHdpbGwgbGVhZCwNCitTUEVSQkVSRy1NY1FVRUVOIGhvcGVkLCBzb21lIHNvZnR3YXJlIHZlbmRvcnMgdG8gcmVhbGl6ZSB0aGF0IGlmIHRoZXkNCitwcm92aWRlIHNvZnR3YXJlIHdpdGggYSBiZXR0ZXIgbW9kZWwgb2YgdGhlIHRleHQgdGhleSBjYW4gbWFrZSBhIGtpbGxpbmcuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0RJU0NVU1NJT04gKiBJbXBsaWNhdGlvbnMgb2YgZGlmZmVyZW50IERURHMgYW5kIHRhZyBzZXRzICogT0RBIHZlcnN1cyBTR01MICoNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQorDQorRHVyaW5nIHRoZSBkaXNjdXNzaW9uIHRoYXQgZm9sbG93ZWQsIHNldmVyYWwgYWRkaXRpb25hbCBwb2ludHMgd2VyZSBtYWRlLiANCitOZWl0aGVyIEFBUCAoaS5lLiwgQXNzb2NpYXRpb24gb2YgQW1lcmljYW4gUHVibGlzaGVycykgbm9yIENBTFMgKGkuZS4sDQorQ29tcHV0ZXItYWlkZWQgQWNxdWlzaXRpb24gYW5kIExvZ2lzdGljcyBTdXBwb3J0KSBoYXMgYSBkb2N1bWVudC10eXBlDQorZGVmaW5pdGlvbiBmb3IgYW5jaWVudCBHcmVlayBkcmFtYSwgYWx0aG91Z2ggdGhlIFRFSSB3aWxsIGJlIGFibGUgdG8NCitoYW5kbGUgdGhhdC4gIEdpdmVuIHRoaXMgc3RhdGUgb2YgYWZmYWlycyBhbmQgYXNzdW1pbmcgdGhhdCB0aGUNCit0ZWNobmljYWwtam91cm5hbCBwcm9kdWNlcnMgYW5kIHRoZSBjb21tZXJjaWFsIHZlbmRvcnMgZGVjaWRlIHRvIHVzZSB0aGUNCitvdGhlciB0d28gdHlwZXMsIHRoZW4gYW4gaW5zdGl0dXRpb24gbGlrZSB0aGUgTGlicmFyeSBvZiBDb25ncmVzcywgd2hpY2gNCittaWdodCByZWNlaXZlIGFsbCBvZiB0aGVpciBwdWJsaWNhdGlvbnMsIHdvdWxkIGhhdmUgdG8gYmUgYWJsZSB0byBoYW5kbGUNCit0aHJlZSBkaWZmZXJlbnQgdHlwZXMgb2YgZG9jdW1lbnQgZGVmaW5pdGlvbnMgYW5kIHRhZyBzZXRzIGFuZCBiZSBhYmxlIHRvDQorZGlzdGluZ3Vpc2ggYW1vbmcgdGhlbS4NCisNCitPZmZpY2UgRG9jdW1lbnQgQXJjaGl0ZWN0dXJlIChPREEpIGhhcyBzb21lIGFkdmFudGFnZXMgdGhhdCBmbG93IGZyb20gaXRzDQordGlnaHQgZm9jdXMgb24gb2ZmaWNlIGRvY3VtZW50cyBhbmQgY2xlYXIgZGlyZWN0aW9ucyBmb3IgaW1wbGVtZW50YXRpb24uIA0KK011Y2ggb2YgdGhlIE9EQSBzdGFuZGFyZCBpcyBlYXNpZXIgdG8gcmVhZCBhbmQgY2xlYXJlciBhdCBmaXJzdCByZWFkaW5nDQordGhhbiB0aGUgU0dNTCBzdGFuZGFyZCwgd2hpY2ggaXMgZXh0cmVtZWx5IGdlbmVyYWwuICBXaGF0IHRoYXQgbWVhbnMgaXMNCit0aGF0IGlmIG9uZSB3YW50cyB0byB1c2UgZ3JhcGhpY3MgaW4gVElGRiBhbmQgT0RBLCBvbmUgaXMgc3R1Y2ssIGJlY2F1c2UNCitPREEgZGVmaW5lcyBncmFwaGljcyBmb3JtYXRzIHdoaWxlIFRJRkYgZG9lcyBub3QsIHdoZXJlYXMgU0dNTCBzYXlzIHRoZQ0KK3dvcmxkIGlzIG5vdCB3YWl0aW5nIGZvciB0aGlzIHdvcmsgZ3JvdXAgdG8gY3JlYXRlIGFub3RoZXIgZ3JhcGhpY3MgZm9ybWF0Lg0KK1doYXQgaXMgbmVlZGVkIGlzIGFuIGFiaWxpdHkgdG8gdXNlIHdoYXRldmVyIGdyYXBoaWNzIGZvcm1hdCBvbmUgd2FudHMuDQorDQorVGhlIFRFSSBwcm92aWRlcyBhIHNvY2tldCB0aGF0IGFsbG93cyBvbmUgdG8gY29ubmVjdCB0aGUgU0dNTCBkb2N1bWVudCB0bw0KK3RoZSBncmFwaGljcy4gIFRoZSBub3RhdGlvbiB0aGF0IHRoZSBncmFwaGljcyBhcmUgaW4gaXMgY2xlYXJseSBhIGNob2ljZQ0KK3RoYXQgb25lIG5lZWRzIHRvIG1ha2UgYmFzZWQgb24gaGVyIG9yIGhpcyBlbnZpcm9ubWVudCwgYW5kIHRoYXQgaXMgb25lDQorYWR2YW50YWdlLiAgU0dNTCBpcyBsZXNzIG1lZ2Fsb21hbmlhY2FsIGluIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGZvcm1hdHMNCitmb3IgYWxsIGtpbmRzIG9mIGluZm9ybWF0aW9uLCB0aG91Z2ggbW9yZSBtZWdhbG9tYW5pYWNhbCBpbiBhdHRlbXB0aW5nIHRvDQorY292ZXIgYWxsIHNvcnRzIG9mIGRvY3VtZW50cy4gIFRoZSBvdGhlciBhZHZhbnRhZ2UgaXMgdGhhdCB0aGUgbW9kZWwgb2YNCit0ZXh0IHJlcHJlc2VudGVkIGJ5IFNHTUwgaXMgc2ltcGx5IGFuIG9yZGVyIG9mIG1hZ25pdHVkZSByaWNoZXIgYW5kIG1vcmUNCitmbGV4aWJsZSB0aGFuIHRoZSBtb2RlbCBvZiB0ZXh0IG9mZmVyZWQgYnkgT0RBLiAgQm90aCBvZmZlciBoaWVyYXJjaGljYWwNCitzdHJ1Y3R1cmVzLCBidXQgU0dNTCByZWNvZ25pemVzIHRoYXQgdGhlIGhpZXJhcmNoaWNhbCBtb2RlbCBvZiB0aGUgdGV4dA0KK3RoYXQgb25lIGlzIGxvb2tpbmcgYXQgbWF5IG5vdCBoYXZlIGJlZW4gaW4gdGhlIG1pbmRzIG9mIHRoZSBkZXNpZ25lcnMsDQord2hlcmVhcyBPREEgZG9lcyBub3QuDQorDQorT0RBIGlzIG5vdCByZWFsbHkgYWltaW5nIGZvciB0aGUga2luZCBvZiBkb2N1bWVudCB0aGF0IHRoZSBURUkgd2FudHMgdG8NCitlbmNvbXBhc3MuICBUaGUgVEVJIGNhbiBoYW5kbGUgdGhlIGtpbmQgb2YgbWF0ZXJpYWwgT0RBIGhhcywgYXMgd2VsbCBhcyBhDQorc2lnbmlmaWNhbnRseSBicm9hZGVyIHJhbmdlIG9mIG1hdGVyaWFsLiAgT0RBIHNlZW1zIHRvIGJlIHZlcnkgbXVjaA0KK2ZvY3VzZWQgb24gb2ZmaWNlIGRvY3VtZW50cywgd2hpY2ggaXMgd2hhdCBpdCBzdGFydGVkIG91dCBiZWluZyBjYWxsZWQtLQ0KK29mZmljZSBkb2N1bWVudCBhcmNoaXRlY3R1cmUuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0NBTEFMVUNBICogVGV4dC1lbmNvZGluZyBmcm9tIGEgcHVibGlzaGVyJ3MgcGVyc3BlY3RpdmUgKg0KK1Jlc3BvbnNpYmlsaXRpZXMgb2YgYSBwdWJsaXNoZXIgKiBSZXByb2R1Y3Rpb24gb2YgTWlnbmUncyBMYXRpbiBzZXJpZXMNCit3aG9sZSBhbmQgY29tcGxldGUgd2l0aCBTR01MIHRhZ3MgYmFzZWQgb24gcGVyY2VpdmVkIG5lZWQgYW5kIGV4cGVjdGVkDQordXNlICogUGFydGljdWxhciBkZWNpc2lvbnMgYXJpc2luZyBmcm9tIHRoZSBnZW5lcmFsIGRlY2lzaW9uIHRvIHByb2R1Y2UNCithbmQgcHVibGlzaCBQTEQgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitUaGUgZmluYWwgc3BlYWtlciBpbiB0aGlzIHNlc3Npb24sIEVyaWMgQ0FMQUxVQ0EsIHZpY2UgcHJlc2lkZW50LA0KK0NoYWR3eWNrLUhlYWxleSwgSW5jLiwgc3Bva2UgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYSBwdWJsaXNoZXIgcmUNCit0ZXh0LWVuY29kaW5nLCByYXRoZXIgdGhhbiBhcyBvbmUgcXVhbGlmaWVkIHRvIGRpc2N1c3MgbWV0aG9kcyBvZg0KK2VuY29kaW5nIGRhdGEsIGFuZCBvYnNlcnZlZCB0aGF0IHRoZSBwcmVzZW50ZXJzIHNpdHRpbmcgaW4gdGhlIHJvb20sDQord2hldGhlciB0aGV5IGhhZCBjaG9zZW4gdG8gb3Igbm90LCB3ZXJlIGFjdGluZyBhcyBwdWJsaXNoZXJzOiAgbWFraW5nDQorY2hvaWNlcywgZ2F0aGVyaW5nIGRhdGEsIGdhdGhlcmluZyBpbmZvcm1hdGlvbiwgYW5kIG1ha2luZyBhc3Nlc3NtZW50cy4gDQorQ0FMQUxVQ0Egb2ZmZXJlZCB0aGUgaGFyZC13b24gY29udmljdGlvbiB0aGF0IGluIHB1Ymxpc2hpbmcgdmVyeSBsYXJnZQ0KK3RleHQgZmlsZXMgKHN1Y2ggYXMgUExEKSwgb25lIGNhbm5vdCBhdm9pZCBtYWtpbmcgcGVyc29uYWwganVkZ21lbnRzIG9mDQorYXBwcm9wcmlhdGVuZXNzIGFuZCBzdHJ1Y3R1cmUuDQorDQorSW4gQ0FMQUxVQ0EncyB2aWV3LCBlbmNvZGluZyBkZWNpc2lvbnMgc3RlbSBmcm9tIHByaW9yIGp1ZGdtZW50cy4gIFR3bw0KK25vdGlvbnMgaGF2ZSBiZWNvbWUgYXhpb21zIGZvciBoaW0gaW4gdGhlIGNvbnNpZGVyYXRpb24gb2YgZnV0dXJlIHNvdXJjZXMNCitmb3IgZWxlY3Ryb25pYyBwdWJsaWNhdGlvbjogIDEpIGVsZWN0cm9uaWMgdGV4dCBwdWJsaXNoaW5nIGlzIGFzIHBlcnNvbmFsDQorYXMgYW55IG90aGVyIGtpbmQgb2YgcHVibGlzaGluZywgYW5kIHF1ZXN0aW9ucyBvZiBpZiBhbmQgaG93IHRvIGVuY29kZQ0KK3RoZSBkYXRhIGFyZSBzaW1wbHkgYSBjb25zZXF1ZW5jZSBvZiB0aGF0IHByaW9yIGRlY2lzaW9uOyAgMikgYWxsDQorcGVyc29uYWwgZGVjaXNpb25zIGFyZSBvcGVuIHRvIGNyaXRpY2lzbSwgd2hpY2ggaXMgdW5hdm9pZGFibGUuDQorDQorQ0FMQUxVQ0EgcmVoZWFyc2VkIGhpcyByb2xlIGFzIGEgcHVibGlzaGVyIG9yLCBiZXR0ZXIsIGFzIGFuIGludGVybWVkaWFyeQ0KK2JldHdlZW4gd2hhdCBpcyB2aWV3ZWQgYXMgYSBzb3VuZCBpZGVhIGFuZCB0aGUgcGVvcGxlIHdobyB3b3VsZCBtYWtlIHVzZQ0KK29mIGl0LiAgRmluZGluZyB0aGUgc3BlY2lhbGlzdCB0byBhZHZpc2UgaW4gdGhpcyBwcm9jZXNzIGlzIHRoZSBjb3JlIG9mDQordGhhdCBmdW5jdGlvbi4gIFRoZSBwdWJsaXNoZXIgbXVzdCBtb25pdG9yIGFuZCBodWcgdGhlIGZpbmUgbGluZSBiZXR3ZWVuDQorZ2l2aW5nIHVzZXJzIHdoYXQgdGhleSB3YW50IGFuZCBzdWdnZXN0aW5nIHdoYXQgdGhleSBtaWdodCBuZWVkLiAgT25lDQorcmVzcG9uc2liaWxpdHkgb2YgYSBwdWJsaXNoZXIgaXMgdG8gcmVwcmVzZW50IHRoZSBkZXNpcmVzIG9mIHNjaG9sYXJzIGFuZA0KK3Jlc2VhcmNoIGxpYnJhcmlhbnMgYXMgb3Bwb3NlZCB0byBidWxsaGVhZGVkbHkgZm9yY2luZyB0aGVtIGludG8gYXJlYXMNCit0aGV5IHdvdWxkIG5vdCBjaG9vc2UgdG8gZW50ZXIuDQorDQorQ0FMQUxVQ0EgbGlrZW5lZCB0aGUgcXVlc3Rpb25zIGJlaW5nIHJhaXNlZCB0b2RheSBhYm91dCBkYXRhIHN0cnVjdHVyZQ0KK2FuZCBzdGFuZGFyZHMgdG8gdGhlIGRlY2lzaW9ucyBmYWNlZCBieSB0aGUgQWJiZSBNaWduZSBoaW1zZWxmIGR1cmluZw0KK3Byb2R1Y3Rpb24gb2YgdGhlIFBhdHJvbG9naWEgc2VyaWVzIGluIHRoZSBtaWQtbmluZXRlZW50aCBjZW50dXJ5LiANCitDaGFkd3ljay1IZWFsZXkncyBkZWNpc2lvbiB0byByZXByb2R1Y2UgTWlnbmUncyBMYXRpbiBzZXJpZXMgd2hvbGUgYW5kDQorY29tcGxldGUgd2l0aCBTR01MIHRhZ3Mgd2FzIGFsc28gYmFzZWQgdXBvbiBhIHBlcmNlaXZlZCBuZWVkIGFuZCBhbg0KK2V4cGVjdGVkIHVzZS4gIEluIHRoZSBzYW1lIHdheSB0aGF0IE1pZ25lJ3Mgd29yayBjYW1lIHRvIGJlIGZhciBtb3JlIHRoYW4NCithIHNpbXBsZSBoYW5kYm9vayBmb3IgY2xlcmljcywgUExEIGlzIGFscmVhZHkgZmFyIG1vcmUgdGhhbiBhIGRhdGFiYXNlDQorZm9yIHRoZW9sb2dpYW5zLiAgSXQgaXMgYSBiZWRyb2NrIHNvdXJjZSBmb3IgdGhlIHN0dWR5IG9mIFdlc3Rlcm4NCitjaXZpbGl6YXRpb24sIENBTEFMVUNBIGFzc2VydGVkLg0KKw0KK0luIHJlZ2FyZCB0byB0aGUgZGVjaXNpb24gdG8gcHJvZHVjZSBhbmQgcHVibGlzaCBQTEQsIHRoZSBlZGl0b3JpYWwgYm9hcmQNCitvZmZlcmVkIGRpcmVjdCBqdWRnbWVudHMgb24gdGhlIHF1ZXN0aW9uIG9mIGFwcHJvcHJpYXRlbmVzcyBvZiB0aGVzZQ0KK3RleHRzIGZvciBjb252ZXJzaW9uLCB0aGVpciBlbmNvZGluZyBhbmQgdGhlaXIgZGlzdHJpYnV0aW9uLCBhbmQNCitjb25jbHVkZWQgdGhhdCB0aGUgYmVzdCBwb3NzaWJsZSBwcm9qZWN0IHdhcyBvbmUgdGhhdCBhdm9pZGVkIG92ZXJ0DQoraW50cnVzaW9ucyBvciBleGNsdXNpb25zIGluIHNvIGltcG9ydGFudCBhIHJlc291cmNlLiAgVGh1cywgdGhlIGdlbmVyYWwNCitkZWNpc2lvbiB0byB0cmFuc21pdCB0aGUgb3JpZ2luYWwgY29sbGVjdGlvbiBhcyBjbGVhcmx5IGFzIHBvc3NpYmxlIHdpdGgNCit0aGUgd2lkZXN0IHBvc3NpYmxlIGF2ZW51ZXMgZm9yIHVzZSBsZWQgdG8gb3RoZXIgZGVjaXNpb25zOiAgMSkgVG8gZW5jb2RlDQordGhlIGRhdGEgb3Igbm90LCBTR01MIG9yIG5vdCwgVEVJIG9yIG5vdC4gIEFnYWluLCB0aGUgZXhwZWN0ZWQgdXNlcg0KK2NvbW11bml0eSBhc3NlcnRlZCB0aGUgbmVlZCBmb3Igbm9ybWF0aXZlIHRhZ2dpbmcgc3RydWN0dXJlcyBvZiBpbXBvcnRhbnQNCitodW1hbml0aWVzIHRleHRzLCBhbmQgdGhlIFRFSSBzZWVtZWQgdGhlIG1vc3QgYXBwcm9wcmlhdGUgc3RydWN0dXJlIGZvcg0KK3RoYXQgcHVycG9zZS4gIFJlc2VhcmNoIGxpYnJhcmlhbnMsIHdobyBhcmUgdHJhaW5lZCB0byB2aWV3IHRoZSBsYXJnZXINCitpbXBhY3Qgb2YgZWxlY3Ryb25pYyB0ZXh0IHNvdXJjZXMgb24gODAgb3IgOTAgb3IgMTAwIGRvY3RvcmFsDQorZGlzY2lwbGluZXMsIGxvdWRseSBhcHByb3ZlZCB0aGUgZGVjaXNpb24gdG8gaW5jbHVkZSB0YWdnaW5nLiAgVGhleSBzZWUNCit3aGF0IGlzIGNvbWluZyBiZXR0ZXIgdGhhbiB0aGUgc3BlY2lhbGlzdCB3aG8gaXMgY29tcGxldGVseSBmb2N1c2VkIG9uDQorb25lIGVkaXRpb24gb2YgQW1icm9zZSdzIERlIEFuaW1hLCBhbmQgdGhleSBhbHNvIHVuZGVyc3RhbmQgdGhhdCB0aGUNCitwb3RlbnRpYWwgdXNlcyBleGNlZWQgcHJlc2VudCBleHBlY3RhdGlvbnMuICAyKSBXaGF0IHdpbGwgYmUgdGFnZ2VkIGFuZA0KK3doYXQgd2lsbCBub3QuICBPbmNlIGFnYWluLCB0aGUgYm9hcmQgcmVhbGl6ZWQgdGhhdCBvbmUgbXVzdCB0YWcgdGhlDQorb2J2aW91cy4gIEJ1dCBpbiBubyB3YXkgc2hvdWxkIG9uZSBhdHRlbXB0IHRvIGlkZW50aWZ5IHRocm91Z2ggZW5jb2RpbmcNCitzY2hlbWVzIGV2ZXJ5IHNpbmdsZSBkaXNjcmV0ZSBhcmVhIG9mIGEgdGV4dCB0aGF0IG1pZ2h0IHNvbWVkYXkgYmUNCitzZWFyY2hlZC4gIFRoYXQgd2FzIGFub3RoZXIgZGVjaXNpb24uICBTZWFyY2hpbmcgYnkgYSBjb2x1bW4gbnVtYmVyLCBhbg0KK2F1dGhvciwgYSB3b3JkLCBhIHZvbHVtZSwgcGVybWl0dGluZyBjb21iaW5hdGlvbiBzZWFyY2hlcywgYW5kIHRhZ2dpbmcNCitub3RhdGlvbnMgc2VlbWVkIGxvZ2ljYWwgY2hvaWNlcyBhcyBjb3JlIGVsZW1lbnRzLiAgMykgSG93IGRvZXMgb25lIG1ha2UNCit0aGUgZGF0YSBhdmFpbGFibGU/ICBUaWVpbmcgaXQgdG8gYSBDRC1ST00gZWRpdGlvbiBjcmVhdGVzIGxpbWl0YXRpb25zLA0KK2J1dCBhIG1hZ25ldGljIHRhcGUgZmlsZSB0aGF0IGlzIHZlcnkgbGFyZ2UsIGlzIGFjY29tcGFuaWVkIGJ5IHRoZQ0KK2VuY29kaW5nIHNwZWNpZmljYXRpb25zLCBhbmQgdGhhdCBhbGxvd3Mgb25lIHRvIG1ha2UgbG9jYWwgbW9kaWZpY2F0aW9ucw0KK2Fsc28gYWxsb3dzIG9uZSB0byBpbmNvcnBvcmF0ZSBhbnkgY2hhbmdlcyBvbmUgbWF5IGRlc2lyZSB3aXRoaW4gdGhlDQorYm91bmRzIG9mIHByaXZhdGUgcmVzZWFyY2gsIHRob3VnaCBleHBvcnRpbmcgdGFnIGZpbGVzIGZyb20gYSBDRC1ST00NCitjb3VsZCBzZXJ2ZSBqdXN0IGFzIHdlbGwuICBTaW5jZSBubyBvbmUgb24gdGhlIGJvYXJkIGNvdWxkIHBvc3NpYmx5DQorYW50aWNpcGF0ZSBlYWNoIGFuZCBldmVyeSB3YXkgaW4gd2hpY2ggYSBzY2hvbGFyIG1pZ2h0IGNob29zZSB0byBtaW5lDQordGhpcyBkYXRhIGJhbmssIGl0IHdhcyBkZWNpZGVkIHRvIHNhdGlzZnkgdGhlIGJhc2ljcyBhbmQgbWFrZSBzb21lDQorcHJvdmlzaW9ucyBmb3Igd2hhdCBtaWdodCBjb21lLiAgNCkgTm90IHRvIGVuY29kZSB0aGUgZGF0YWJhc2Ugd291bGQgcm9iDQoraXQgb2YgdGhlIGludGVyY2hhbmdlYWJpbGl0eSBhbmQgcG9ydGFiaWxpdHkgdGhlc2UgaW1wb3J0YW50IHRleHRzIHNob3VsZA0KK2FjY29tbW9kYXRlLiAgRm9yIENBTEFMVUNBLCB0aGUgZXh0ZW5zaXZlIG9wdGlvbnMgcHJlc2VudGVkIGJ5IGZ1bGwtdGV4dA0KK3NlYXJjaGluZyByZXF1aXJlIGNhcmUgaW4gdGV4dCBzZWxlY3Rpb24gYW5kIHN0cm9uZ2x5IHN1cHBvcnQgZW5jb2Rpbmcgb2YNCitkYXRhIHRvIGZhY2lsaXRhdGUgdGhlIHdpZGVzdCBwb3NzaWJsZSBzZWFyY2ggc3RyYXRlZ2llcy4gIEJldHRlcg0KK3NvZnR3YXJlIGNhbiBhbHdheXMgYmUgY3JlYXRlZCwgYnV0IHN1bW1vbmluZyB0aGUgcmVzb3VyY2VzLCB0aGUgcGVvcGxlLA0KK2FuZCB0aGUgZW5lcmd5IHRvIHJlY29udmVydCB0aGUgdGV4dCBpcyBhbm90aGVyIG1hdHRlci4NCisNCitQTEQgaXMgYmVpbmcgZW5jb2RlZCwgY2FwdHVyZWQsIGFuZCBkaXN0cmlidXRlZCwgYmVjYXVzZSB0bw0KK0NoYWR3eWNrLUhlYWxleSBhbmQgdGhlIGJvYXJkIGl0IG9mZmVycyB0aGUgd2lkZXN0IHBvc3NpYmxlIGFycmF5IG9mDQorZnV0dXJlIHJlc2VhcmNoIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBiZSBzZWVuIHRvZGF5LiAgQ0FMQUxVQ0EgY29uY2x1ZGVkDQorYnkgdXJnaW5nIHRoZSBlbmNvZGluZyBvZiBhbGwgaW1wb3J0YW50IHRleHQgc291cmNlcyBpbiB3aGF0ZXZlciB3YXkNCitzZWVtcyBtb3N0IGFwcHJvcHJpYXRlIGFuZCBkdXJhYmxlIGF0IHRoZSB0aW1lLCB3aXRob3V0IGJsYW5jaGluZyBhdCB0aGUNCit0aG91Z2h0IHRoYXQgb25lJ3Mgd29yayBtYXkgcmVxdWlyZSBlbWVuZGF0aW9uIGluIHRoZSBmdXR1cmUuICAoVGh1cywNCitDaGFkd3ljay1IZWFsZXkgcHJvZHVjZWQgYSB2ZXJ5IGxhcmdlIGh1bWFuaXRpZXMgdGV4dCBkYXRhYmFzZSBiZWZvcmUgdGhlDQorZmluYWwgcmVsZWFzZSBvZiB0aGUgVEVJIEd1aWRlbGluZXMuKQ0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKg0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitESVNDVVNTSU9OICogQ3JlYXRpbmcgdGV4dHMgd2l0aCBtYXJrdXAgYWR2b2NhdGVkICogVHJlbmRzIGluIGVuY29kaW5nICoNCitUaGUgVEVJIGFuZCB0aGUgaXNzdWUgb2YgaW50ZXJjaGFuZ2VhYmlsaXR5IG9mIHN0YW5kYXJkcyAqIEENCittaXNjb25jZXB0aW9uIGNvbmNlcm5pbmcgdGhlIFRFSSAqIEltcGxpY2F0aW9ucyBmb3IgYW4gaW5zdGl0dXRpb24gbGlrZQ0KK0xDIGluIHRoZSBldmVudCB0aGF0IGEgbXVsdGlwbGljaXR5IG9mIERURHMgZGV2ZWxvcHMgKiBQcm9kdWNpbmcgaW1hZ2VzDQorYXMgYSBmaXJzdCBzdGVwIHRvd2FyZHMgcG9zc2libGUgY29udmVyc2lvbiB0byBmdWxsIHRleHQgdGhyb3VnaA0KK2NoYXJhY3RlciByZWNvZ25pdGlvbiAqIFRoZSBBQVAgdGFnIHNldHMgYXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgYW5kDQordGhlIG5lZWQgZm9yIGNhdXRpb24gKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitIT0NLRVkgcHJlZmFjZWQgdGhlIGRpc2N1c3Npb24gdGhhdCBmb2xsb3dlZCB3aXRoIHNldmVyYWwgY29tbWVudHMgaW4NCitmYXZvciBvZiBjcmVhdGluZyB0ZXh0cyB3aXRoIG1hcmt1cCBhbmQgb24gdHJlbmRzIGluIGVuY29kaW5nLiAgSW4gdGhlDQorZnV0dXJlLCB3aGVuIG1hbnkgbW9yZSB0ZXh0cyBhcmUgYXZhaWxhYmxlIGZvciBvbi1saW5lIHNlYXJjaGluZywgcmVhbA0KK3Byb2JsZW1zIGluIGZpbmRpbmcgd2hhdCBpcyB3YW50ZWQgd2lsbCBkZXZlbG9wLCBpZiBvbmUgaXMgZmFjZWQgd2l0aA0KK21pbGxpb25zIG9mIHdvcmRzIG9mIGRhdGEuICBJdCB0aGVyZWZvcmUgYmVjb21lcyBpbXBvcnRhbnQgdG8gY29uc2lkZXINCitwdXR0aW5nIG1hcmt1cCBpbiB0ZXh0cyB0byBoZWxwIHNlYXJjaGVycyBob21lIGluIG9uIHRoZSBhY3R1YWwgdGhpbmdzDQordGhleSB3aXNoIHRvIHJldHJpZXZlLiAgVmFyaW91cyBhcHByb2FjaGVzIHRvIHJlZmluaW5nIHJldHJpZXZhbCBtZXRob2RzDQordG93YXJkIHRoaXMgZW5kIGluY2x1ZGUgYnVpbGRpbmcgb24gYSBjb21wdXRlciB2ZXJzaW9uIG9mIGEgZGljdGlvbmFyeQ0KK2FuZCBsZXR0aW5nIHRoZSBjb21wdXRlciBsb29rIHVwIHdvcmRzIGluIGl0IHRvIG9idGFpbiBtb3JlIGluZm9ybWF0aW9uDQorYWJvdXQgdGhlIHNlbWFudGljIHN0cnVjdHVyZSBvciBzZW1hbnRpYyBmaWVsZCBvZiBhIHdvcmQsIGl0cyBncmFtbWF0aWNhbA0KK3N0cnVjdHVyZSwgYW5kIHN5bnRhY3RpYyBzdHJ1Y3R1cmUuDQorDQorSE9DS0VZIGNvbW1lbnRlZCBvbiB0aGUgcHJlc2VudCBrZWVuIGludGVyZXN0IGluIHRoZSBlbmNvZGluZyB3b3JsZA0KK2luIGNyZWF0aW5nOiAgMSkgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9ucyBvZiBkaWN0aW9uYXJpZXMgdGhhdCBjYW4gYmUNCitpbml0aWFsbHkgdGFnZ2VkIGluIFNHTUwsIHdoaWNoIGdpdmVzIGEgc3RydWN0dXJlIHRvIHRoZSBkaWN0aW9uYXJ5IGVudHJ5Ow0KK3RoZXNlIGVudHJpZXMgY2FuIHRoZW4gYmUgY29udmVydGVkIGludG8gYSBtb3JlIHJpZ2lkIG9yIG90aGVyd2lzZQ0KK2RpZmZlcmVudCBkYXRhYmFzZSBzdHJ1Y3R1cmUgaW5zaWRlIHRoZSBjb21wdXRlciwgd2hpY2ggY2FuIGJlIHRyZWF0ZWQgYXMNCithIGR5bmFtaWMgdG9vbCBmb3Igc2VhcmNoaW5nIG1lY2hhbmlzbXM7IDIpIGxhcmdlIGJvZGllcyBvZiB0ZXh0IHRvIHN0dWR5DQordGhlIGxhbmd1YWdlLiAgSW4gb3JkZXIgdG8gaW5jb3Jwb3JhdGUgbW9yZSBzb3BoaXN0aWNhdGVkIG1lY2hhbmlzbXMsDQorbW9yZSBhYm91dCBob3cgd29yZHMgYmVoYXZlIG5lZWRzIHRvIGJlIGtub3duLCB3aGljaCBjYW4gYmUgbGVhcm5lZCBpbg0KK3BhcnQgZnJvbSBpbmZvcm1hdGlvbiBpbiBkaWN0aW9uYXJpZXMuICBIb3dldmVyLCB0aGUgbGFzdCB0ZW4geWVhcnMgaGF2ZQ0KK3NlZW4gbXVjaCBpbnRlcmVzdCBpbiBzdHVkeWluZyB0aGUgc3RydWN0dXJlIG9mIHByaW50ZWQgZGljdGlvbmFyaWVzDQorY29udmVydGVkIGludG8gY29tcHV0ZXItcmVhZGFibGUgZm9ybS4gIFRoZSBpbmZvcm1hdGlvbiBvbmUgZGVyaXZlcyBhYm91dA0KK21hbnkgd29yZHMgZnJvbSB0aG9zZSBpcyBvbmx5IHBhcnRpYWwsIG9uZSBvciB0d28gZGVmaW5pdGlvbnMgb2YgdGhlDQorY29tbW9uIG9yIHRoZSB1c3VhbCBtZWFuaW5nIG9mIGEgd29yZCwgYW5kIHRoZW4gbnVtZXJvdXMgZGVmaW5pdGlvbnMgb2YNCit1bnVzdWFsIHVzYWdlcy4gIElmIHRoZSBjb21wdXRlciBpcyB1c2luZyBhIGRpY3Rpb25hcnkgdG8gaGVscCByZXRyaWV2ZQ0KK3dvcmRzIGluIGEgdGV4dCwgaXQgbmVlZHMgbXVjaCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21tb24gdXNhZ2VzLA0KK2JlY2F1c2UgdGhvc2UgYXJlIHRoZSBvbmVzIHRoYXQgb2NjdXIgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4gIEhlbmNlIHRoZQ0KK2N1cnJlbnQgaW50ZXJlc3QgaW4gZGV2ZWxvcGluZyBsYXJnZSBib2RpZXMgb2YgdGV4dCBpbiBjb21wdXRlci1yZWFkYWJsZQ0KK2Zvcm0gaW4gb3JkZXIgdG8gc3R1ZHkgdGhlIGxhbmd1YWdlLiAgU2V2ZXJhbCBwcm9qZWN0cyBhcmUgZW5nYWdlZCBpbg0KK2NvbXBpbGluZywgZm9yIGV4YW1wbGUsIDEwMCBtaWxsaW9uIHdvcmRzLiBIT0NLRVkgZGVzY3JpYmVkIG9uZSB3aXRoDQord2hpY2ggc2hlIHdhcyBhc3NvY2lhdGVkIGJyaWVmbHkgYXQgT3hmb3JkIFVuaXZlcnNpdHkgaW52b2x2aW5nDQorY29tcGlsYXRpb24gb2YgMTAwIG1pbGxpb24gd29yZHMgb2YgQnJpdGlzaCBFbmdsaXNoOiAgYWJvdXQgMTAgcGVyY2VudCBvZg0KK3RoYXQgd2lsbCBjb250YWluIGRldGFpbGVkIGxpbmd1aXN0aWMgdGFnZ2luZyBlbmNvZGVkIGluIFNHTUw7IGl0IHdpbGwNCitoYXZlIHdvcmQgY2xhc3MgdGFnZ2luZ3MsIHdpdGggd29yZHMgaWRlbnRpZmllZCBhcyBub3VucywgdmVyYnMsDQorYWRqZWN0aXZlcywgb3Igb3RoZXIgcGFydHMgb2Ygc3BlZWNoLiAgVGhpcyB0YWdnaW5nIGNhbiB0aGVuIGJlIHVzZWQgYnkNCitwcm9ncmFtcyB3aGljaCB3aWxsIGJlZ2luIHRvIGxlYXJuIGEgYml0IG1vcmUgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUNCitsYW5ndWFnZSwgYW5kIHRoZW4sIGNhbiBnbyB0byB0YWcgbW9yZSB0ZXh0Lg0KKw0KK0hPQ0tFWSBzYWlkIHRoYXQgdGhlIG1vcmUgdGhhdCBpcyB0YWdnZWQgYWNjdXJhdGVseSwgdGhlIG1vcmUgb25lIGNhbg0KK3JlZmluZSB0aGUgdGFnZ2luZyBwcm9jZXNzIGFuZCB0aHVzIHRoZSBiaWdnZXIgYm9keSBvZiB0ZXh0IG9uZSBjYW4gYnVpbGQNCit1cCB3aXRoIGxpbmd1aXN0aWMgdGFnZ2luZyBpbmNvcnBvcmF0ZWQgaW50byBpdC4gIEhlbmNlLCB0aGUgbW9yZSB0YWdnaW5nDQorb3IgYW5ub3RhdGlvbiB0aGVyZSBpcyBpbiB0aGUgdGV4dCwgdGhlIG1vcmUgb25lIG1heSBiZWdpbiB0byBsZWFybiBhYm91dA0KK2xhbmd1YWdlIGFuZCB0aGUgbW9yZSBpdCB3aWxsIGhlbHAgYWNjb21wbGlzaCBtb3JlIGludGVsbGlnZW50IE9DUi4gIFNoZQ0KK3JlY29tbWVuZGVkIHRoZSBkZXZlbG9wbWVudCBvZiBzb2Z0d2FyZSB0b29scyB0aGF0IHdpbGwgaGVscCBvbmUgYmVnaW4gdG8NCit1bmRlcnN0YW5kIG1vcmUgYWJvdXQgYSB0ZXh0LCB3aGljaCBjYW4gdGhlbiBiZSBhcHBsaWVkIHRvIHNjYW5uaW5nDQoraW1hZ2VzIG9mIHRoYXQgdGV4dCBpbiB0aGF0IGZvcm1hdCBhbmQgdG8gdXNpbmcgbW9yZSBpbnRlbGxpZ2VuY2UgdG8gaGVscA0KK29uZSBpbnRlcnByZXQgb3IgdW5kZXJzdGFuZCB0aGUgdGV4dC4NCisNCitIT0NLRVkgcG9zaXRlZCB0aGUgbmVlZCB0byB0aGluayBhYm91dCBjb21tb24gbWV0aG9kcyBvZiB0ZXh0LWVuY29kaW5nDQorZm9yIGEgbG9uZyB0aW1lIHRvIGNvbWUsIGJlY2F1c2UgYnVpbGRpbmcgdGhlc2UgbGFyZ2UgYm9kaWVzIG9mIHRleHQgaXMNCitleHRyZW1lbHkgZXhwZW5zaXZlIGFuZCB3aWxsIG9ubHkgYmUgZG9uZSBvbmNlLg0KKw0KK0luIHRoZSBtb3JlIGdlbmVyYWwgZGlzY3Vzc2lvbiBvbiBhcHByb2FjaGVzIHRvIGVuY29kaW5nIHRoYXQgZm9sbG93ZWQsDQordGhlc2UgcG9pbnRzIHdlcmUgbWFkZToNCisNCitCRVNTRVIgaWRlbnRpZmllZCB0aGUgdW5kZXJseWluZyBwcm9ibGVtIHdpdGggc3RhbmRhcmRzIHRoYXQgYWxsIGhhdmUgdG8NCitzdHJ1Z2dsZSB3aXRoIGluIGFkb3B0aW5nIGEgc3RhbmRhcmQsIG5hbWVseSwgdGhlIHRlbnNpb24gYmV0d2VlbiBhIHZlcnkNCitoaWdobHkgZGVmaW5lZCBzdGFuZGFyZCB0aGF0IGlzIHZlcnkgaW50ZXJjaGFuZ2VhYmxlIGJ1dCBkb2VzIG5vdCB3b3JrDQorZm9yIGV2ZXJ5b25lIGJlY2F1c2Ugc29tZXRoaW5nIGlzIGxhY2tpbmcsIGFuZCBhIHN0YW5kYXJkIHRoYXQgaXMgbGVzcw0KK2RlZmluZWQsIG1vcmUgb3BlbiwgbW9yZSBhZGFwdGFibGUsIGJ1dCBsZXNzIGludGVyY2hhbmdlYWJsZS4gIENvbnRlbmRpbmcNCit0aGF0IHRoZSB3YXkgaW4gd2hpY2ggcGVvcGxlIHVzZSBTR01MIGlzIG5vdCBzdWZmaWNpZW50bHkgZGVmaW5lZCwgQkVTU0VSDQord29uZGVyZWQgMSkgaWYgcGVvcGxlIHJlc2lzdCB0aGUgVEVJIGJlY2F1c2UgdGhleSB0aGluayBpdCBpcyB0b28gZGVmaW5lZA0KK2luIGNlcnRhaW4gdGhpbmdzIHRoZXkgZG8gbm90IGZpdCBpbnRvLCBhbmQgMikgaG93IHByb2dyZXNzIHdpdGgNCitpbnRlcmNoYW5nZWFiaWxpdHkgY2FuIGJlIG1hZGUgd2l0aG91dCBmcmlnaHRlbmluZyBwZW9wbGUgYXdheS4NCisNCitTUEVSQkVSRy1NY1FVRUVOIHJlcGxpZWQgdGhhdCB0aGUgcHVibGlzaGVkIGRyYWZ0cyBvZiB0aGUgVEVJIGhhZCBtZXQNCit3aXRoIHN1cnByaXNpbmdseSBsaXR0bGUgb2JqZWN0aW9uIG9uIHRoZSBncm91bmRzIHRoYXQgdGhleSBkbyBub3QgYWxsb3cNCitvbmUgdG8gaGFuZGxlIFggb3IgWSBvciBaLiAgUGFydGljdWxhciBjb25jZXJucyBvZiB0aGUgYWZmaWxpYXRlZA0KK3Byb2plY3RzIGhhdmUgbGVkLCBpbiBwcmFjdGljZSwgdG8gZGlzY3Vzc2lvbnMgb2YgaG93IGV4dGVuc2lvbnMgYXJlIHRvDQorYmUgbWFkZTsgdGhlIHByaW1hcnkgY29uY2VybiBvZiBhbnkgcHJvamVjdCBoYXMgdG8gYmUgaG93IGl0IGNhbiBiZQ0KK3JlcHJlc2VudGVkIGxvY2FsbHksIHRodXMgbWFraW5nIGludGVyY2hhbmdlIHNlY29uZGFyeS4gIFRoZSBURUkgaGFzDQorcmVjZWl2ZWQgbXVjaCBjcml0aWNpc20gYmFzZWQgb24gdGhlIG5vdGlvbiB0aGF0IGV2ZXJ5dGhpbmcgaW4gaXQgaXMNCityZXF1aXJlZCBvciBldmVuIHJlY29tbWVuZGVkLCB3aGljaCwgYXMgaXQgaGFwcGVucywgaXMgYSBtaXNjb25jZXB0aW9uDQorZnJvbSB0aGUgYmVnaW5uaW5nLCAgIGJlY2F1c2Ugbm9uZSBvZiBpdCBpcyByZXF1aXJlZCBhbmQgdmVyeSBsaXR0bGUgaXMNCithY3R1YWxseSBhY3RpdmVseSByZWNvbW1lbmRlZCBmb3IgYWxsIGNhc2VzLCBleGNlcHQgdGhhdCBvbmUgZG9jdW1lbnQNCitvbmUncyBzb3VyY2UuDQorDQorU1BFUkJFUkctTWNRVUVFTiBhZ3JlZWQgd2l0aCBCRVNTRVIgYWJvdXQgdGhpcyB0cmFkZS1vZmY6ICBhbGwgdGhlDQorcHJvamVjdHMgaW4gYSBzZXQgb2YgdHdlbnR5IFRFSS1jb25mb3JtYW50IHByb2plY3RzIHdpbGwgbm90IG5lY2Vzc2FyaWx5DQordGFnIHRoZSBtYXRlcmlhbCBpbiB0aGUgc2FtZSB3YXkuICBPbmUgcmVzdWx0IG9mIHRoZSBURUkgd2lsbCBiZSB0aGF0IHRoZQ0KK2Vhc2llc3QgcHJvYmxlbXMgd2lsbCBiZSBzb2x2ZWQtLXRob3NlIGRlYWxpbmcgd2l0aCB0aGUgZXh0ZXJuYWwgZm9ybSBvZg0KK3RoZSBpbmZvcm1hdGlvbjsgYnV0IHRoZSBwcm9ibGVtIHRoYXQgaXMgaGFyZGVzdCBpbiBpbnRlcmNoYW5nZSBpcyB0aGF0DQorb25lIGlzIG5vdCBlbmNvZGluZyB3aGF0IGFub3RoZXIgd2FudHMsIGFuZCB2aWNlIHZlcnNhLiAgVGh1cywgYWZ0ZXINCit0aGUgYWRvcHRpb24gb2YgYSBjb21tb24gbm90YXRpb24sIHRoZSBkaWZmZXJlbmNlcyBpbiB0aGUgdW5kZXJseWluZw0KK2NvbmNlcHRpb25zIG9mIHdoYXQgaXMgaW50ZXJlc3RpbmcgYWJvdXQgdGV4dHMgYmVjb21lIG1vcmUgdmlzaWJsZS4NCitUaGUgc3VjY2VzcyBvZiBhIHN0YW5kYXJkIGxpa2UgdGhlIFRFSSB3aWxsIGxpZSBpbiB0aGUgYWJpbGl0eSBvZg0KK3RoZSByZWNpcGllbnQgb2YgaW50ZXJjaGFuZ2VkIHRleHRzIHRvIHVzZSBzb21lIG9mIHdoYXQgaXQgY29udGFpbnMNCithbmQgdG8gYWRkIHRoZSBpbmZvcm1hdGlvbiB0aGF0IHdhcyBub3QgZW5jb2RlZCB0aGF0IG9uZSB3YW50cywgaW4gYQ0KK2xheWVyZWQgd2F5LCBzbyB0aGF0IHRleHRzIGNhbiBiZSBncmFkdWFsbHkgZW5yaWNoZWQgYW5kIG9uZSBkb2VzIG5vdA0KK2hhdmUgdG8gcHV0IGluIGV2ZXJ5dGhpbmcgYWxsIGF0IG9uY2UuICBIZW5jZSwgaGF2aW5nIGEgd2VsbC1iZWhhdmVkDQorbWFya3VwIHNjaGVtZSBpcyBpbXBvcnRhbnQuDQorDQorU1RFVkVOUyBmb2xsb3dlZCB1cCBvbiB0aGUgcGFyYWRveGljYWwgYW5hbG9neSB0aGF0IEJFU1NFUiBhbGx1ZGVkIHRvIGluDQordGhlIGV4YW1wbGUgb2YgdGhlIE1BUkMgcmVjb3JkcywgbmFtZWx5LCB0aGUgZm9ybWF0cyB0aGF0IGFyZSB0aGUgc2FtZQ0KK2V4Y2VwdCB0aGF0IHRoZXkgYXJlIGRpZmZlcmVudC4gIFNURVZFTlMgZHJldyBhIHBhcmFsbGVsIGJldHdlZW4NCitkb2N1bWVudC10eXBlIGRlZmluaXRpb25zIGFuZCBNQVJDIHJlY29yZHMgZm9yIGJvb2tzIGFuZCBzZXJpYWxzIGFuZCBtYXBzLA0KK3doZXJlIG9uZSBoYXMgYSB0YWdnaW5nIHN0cnVjdHVyZSBhbmQgdGhlcmUgaXMgYSB0ZXh0LWludGVyY2hhbmdlLiANCitTVEVWRU5TIG9waW5lZCB0aGF0IHRoZSBwcm9kdWNlcnMgb2YgdGhlIGluZm9ybWF0aW9uIHdpbGwgc2V0IHRoZSB0ZXJtcw0KK2ZvciB0aGUgc3RhbmRhcmQgKGkuZS4sIGRldmVsb3AgZG9jdW1lbnQtdHlwZSBkZWZpbml0aW9ucyBmb3IgdGhlIHVzZXJzDQorb2YgdGhlaXIgcHJvZHVjdHMpLCBjcmVhdGluZyBhIHNpdHVhdGlvbiB0aGF0IHdpbGwgYmUgcHJvYmxlbWF0aWNhbCBmb3INCithbiBpbnN0aXR1dGlvbiBsaWtlIHRoZSBMaWJyYXJ5IG9mIENvbmdyZXNzLCB3aGljaCB3aWxsIGhhdmUgdG8gZGVhbCB3aXRoDQordGhlIERURHMgaW4gdGhlIGV2ZW50IHRoYXQgYSBtdWx0aXBsaWNpdHkgb2YgdGhlbSBkZXZlbG9wcy4gIFRodXMsDQorbnVtZXJvdXMgcGVvcGxlIGFyZSBzZWVraW5nIGEgc3RhbmRhcmQgYnV0IGNhbm5vdCBmaW5kIHRoZSB0YWcgc2V0IHRoYXQNCit3aWxsIGJlIGFjY2VwdGFibGUgdG8gdGhlbSBhbmQgdGhlaXIgY2xpZW50cy4gIFNQRVJCRVJHLU1jUVVFRU4gYWdyZWVkDQord2l0aCB0aGlzIHZpZXcsIGFuZCBzYWlkIHRoYXQgdGhlIHNpdHVhdGlvbiB3YXMgaW4gYSB3YXkgd29yc2U6ICBhdHRlbXB0aW5nDQordG8gdW5pZnkgYXJiaXRyYXJ5IERURHMgcmVzZW1ibGVkIGF0dGVtcHRpbmcgdG8gdW5pZnkgYSBNQVJDIHJlY29yZCB3aXRoIGENCitiaWJsaW9ncmFwaGljIHJlY29yZCBkb25lIGFjY29yZGluZyB0byB0aGUgUHJ1c3NpYW4gaW5zdHJ1Y3Rpb25zLiANCitBY2NvcmRpbmcgdG8gU1RFVkVOUywgdGhpcyBzaXR1YXRpb24gb2NjdXJyZWQgdmVyeSBlYXJseSBpbiB0aGUgcHJvY2Vzcy4NCisNCitXQVRFUlMgcmVjYWxsZWQgZnJvbSBlYXJseSBkaXNjdXNzaW9ucyBvbiBQcm9qZWN0IE9wZW4gQm9vayB0aGUgY29uY2Vybg0KK29mIG1hbnkgcGVvcGxlIHRoYXQgbWVyZWx5IGJ5IHByb2R1Y2luZyBpbWFnZXMsIFBPQiB3YXMgbm90IHJlYWxseQ0KK2VuaGFuY2luZyBpbnRlbGxlY3R1YWwgYWNjZXNzIHRvIHRoZSBtYXRlcmlhbC4gIE5ldmVydGhlbGVzcywgbm90IHdpc2hpbmcNCit0byBvdmVyZW1waGFzaXplIHRoZSBvcHBvc2l0aW9uIGJldHdlZW4gaW1hZ2luZyBhbmQgZnVsbCB0ZXh0LCBXQVRFUlMNCitzdGF0ZWQgdGhhdCBQT0Igdmlld3MgZ2V0dGluZyB0aGUgaW1hZ2VzIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgcG9zc2libHkNCitjb252ZXJ0aW5nIHRvIGZ1bGwgdGV4dCB0aHJvdWdoIGNoYXJhY3RlciByZWNvZ25pdGlvbiwgaWYgdGhlIHRlY2hub2xvZ3kNCitpcyBhcHByb3ByaWF0ZS4gIFdBVEVSUyBhbHNvIGVtcGhhc2l6ZWQgdGhhdCBlbmNvZGluZyBpcyBpbnZvbHZlZCBldmVuDQord2l0aCBhIHNldCBvZiBpbWFnZXMuDQorDQorU1BFUkJFUkctTWNRVUVFTiBhZ3JlZWQgd2l0aCBXQVRFUlMgdGhhdCBvbmUgY2FuIGNyZWF0ZSBhbiBTR01MIGRvY3VtZW50DQorY29uc2lzdGluZyB3aG9sbHkgb2YgaW1hZ2VzLiAgQXQgZmlyc3Qgc2lnaHQsIG9yZ2FuaXppbmcgZ3JhcGhpYyBpbWFnZXMNCit3aXRoIGFuIFNHTUwgZG9jdW1lbnQgbWF5IG5vdCBzZWVtIHRvIG9mZmVyIGdyZWF0IGFkdmFudGFnZXMsIGJ1dCB0aGUNCithZHZhbnRhZ2VzIG9mIHRoZSBzY2hlbWUgV0FURVJTIGRlc2NyaWJlZCB3b3VsZCBiZSBwcmVjaXNlbHkgdGhhdA0KK2FiaWxpdHkgdG8gbW92ZSBpbnRvIHNvbWV0aGluZyB0aGF0IGlzIG1vcmUgb2YgYSBtdWx0aW1lZGlhIGRvY3VtZW50Og0KK2EgY29tYmluYXRpb24gb2YgdHJhbnNjcmliZWQgdGV4dCBhbmQgcGFnZSBpbWFnZXMuICBXRUlCRUwgY29uY3VycmVkIGluDQordGhpcyBqdWRnbWVudCwgb2ZmZXJpbmcgZXZpZGVuY2UgZnJvbSBQcm9qZWN0IEFEQVBULCB3aGVyZSBhIHBhZ2UgaXMNCitkaXZpZGVkIGludG8gdGV4dCBlbGVtZW50cyBhbmQgZ3JhcGhpYyBlbGVtZW50cywgYW5kIGluIGZhY3QgdGhlIHRleHQNCitlbGVtZW50cyBhcmUgb3JnYW5pemVkIGJ5IGNvbHVtbnMgYW5kIGxpbmVzLiAgVGhlc2UgbGluZXMgbWF5IGJlIHVzZWQgYXMNCit0aGUgYmFzaXMgZm9yIGRpc3RyaWJ1dGluZyBkb2N1bWVudHMgaW4gYSBuZXR3b3JrIGVudmlyb25tZW50LiAgQXMgb25lDQorZGV2ZWxvcHMgc29mdHdhcmUgaW50ZWxsaWdlbnQgZW5vdWdoIHRvIHJlY29nbml6ZSB3aGF0IHRob3NlIGVsZW1lbnRzDQorYXJlLCBpdCBtYWtlcyBzZW5zZSB0byBhcHBseSBTR01MIHRvIGFuIGltYWdlIGluaXRpYWxseSwgdGhhdCBtYXksIGluDQorZmFjdCwgdWx0aW1hdGVseSBiZWNvbWUgbW9yZSBhbmQgbW9yZSB0ZXh0LCBlaXRoZXIgdGhyb3VnaCBPQ1Igb3IgZWRpdGVkDQorT0NSIG9yIGV2ZW4ganVzdCB0aHJvdWdoIGtleWluZy4gIEZvciBXQVRFUlMsIHRoZSBsYWJvciBvZiBjb21wb3NpbmcgdGhlDQorZG9jdW1lbnQgYW5kIHNheWluZyB0aGlzIHNldCBvZiBkb2N1bWVudHMgb3IgdGhpcyBzZXQgb2YgaW1hZ2VzIGJlbG9uZ3MNCit0byB0aGlzIGRvY3VtZW50IGNvbnN0aXR1dGVzIGEgc2lnbmlmaWNhbnQgaW52ZXN0bWVudC4NCisNCitXRUlCRUwgYWxzbyBtYWRlIHRoZSBwb2ludCB0aGF0IHRoZSBBQVAgdGFnIHNldHMsIHdoaWxlIG5vdCBleGNlc3NpdmVseQ0KK3ByZXNjcmlwdGl2ZSwgb2ZmZXIgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQ7IHRoZXkgZG8gbm90IGRlZmluZSB0aGUNCitzdHJ1Y3R1cmUgb2YgdGhlIGRvY3VtZW50cywgdGhvdWdoLiAgVGhleSBoYXZlIHNvbWUgcmVjb21tZW5kYXRpb25zIGFib3V0DQorRFREcyBvbmUgY291bGQgdXNlIGFzIGV4YW1wbGVzLCBidXQgdGhleSBkbyBqdXN0IHN1Z2dlc3QgdGFnIHNldHMuICAgRm9yDQorZXhhbXBsZSwgdGhlIENPUkUgcHJvamVjdCBhdHRlbXB0cyB0byB1c2UgdGhlIEFBUCBtYXJrdXAgYXMgbXVjaCBhcw0KK3Bvc3NpYmxlLCBidXQgdGhlcmUgYXJlIGNsZWFybHkgYXJlYXMgd2hlcmUgc3RydWN0dXJlIG11c3QgYmUgYWRkZWQuIA0KK1RoYXQgaW4gbm8gd2F5IGNvbnRyYWRpY3RzIHRoZSB1c2Ugb2YgQUFQIHRhZyBzZXRzLg0KKw0KK1NQRVJCRVJHLU1jUVVFRU4gbm90ZWQgdGhhdCB0aGUgVEVJIHByZXBhcmVkIGEgbG9uZyB3b3JraW5nIHBhcGVyIGVhcmx5DQorb24gYWJvdXQgdGhlIEFBUCB0YWcgc2V0IGFuZCB3aGF0IGl0IGxhY2tlZCB0aGF0IHRoZSBURUkgdGhvdWdodCBpdA0KK25lZWRlZCwgYW5kIGEgZmFpcmx5IGxvbmcgY3JpdGlxdWUgb2YgdGhlIG5hbWluZyBjb252ZW50aW9ucywgd2hpY2ggaGFzDQorbGVkIHRvIGEgdmVyeSBkaWZmZXJlbnQgc3R5bGUgb2YgbmFtaW5nIGluIHRoZSBURUkuICBIZSBzdHJlc3NlZCB0aGUNCitpbXBvcnRhbmNlIG9mIHRoZSBvcHBvc2l0aW9uIGJldHdlZW4gcHJlc2NyaXB0aXZlIG1hcmt1cCwgdGhlIGtpbmQgdGhhdCBhDQorcHVibGlzaGVyIG9yIGFueWJvZHkgY2FuIGRvIHdoZW4gcHJvZHVjaW5nIGRvY3VtZW50cyBkZSBub3ZvLCBhbmQNCitkZXNjcmlwdGl2ZSBtYXJrdXAsIGluIHdoaWNoIG9uZSBoYXMgdG8gdGFrZSB3aGF0IHRoZSB0ZXh0IGNhcnJpZXINCitwcm92aWRlcy4gIEluIHRoZXNlIHBhcnRpY3VsYXIgdGFnIHNldHMgaXQgaXMgZWFzeSB0byBvdmVyZW1waGFzaXplIHRoaXMNCitvcHBvc2l0aW9uLCBiZWNhdXNlIHRoZSBBQVAgdGFnIHNldCBpcyBleHRyZW1lbHkgZmxleGlibGUuICBFdmVuIGlmIG9uZQ0KK2p1c3QgdXNlZCB0aGUgRFREcywgdGhleSBhbGxvdyBhbG1vc3QgYW55dGhpbmcgdG8gYXBwZWFyIGFsbW9zdCBhbnl3aGVyZS4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioNCisNCitTRVNTSU9OIFZJLiAgQ09QWVJJR0hUIElTU1VFUw0KKw0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCitQRVRFUlMgKiBTZXZlcmFsIGNhdXRpb25zIGNvbmNlcm5pbmcgY29weXJpZ2h0IGluIGFuIGVsZWN0cm9uaWMNCitlbnZpcm9ubWVudCAqIFJldmlldyBvZiBjb3B5cmlnaHQgbGF3IGluIHRoZSBVbml0ZWQgU3RhdGVzICogVGhlIG5vdGlvbg0KK29mIHRoZSBwdWJsaWMgZ29vZCBhbmQgdGhlIGRlc2lyYWJpbGl0eSBvZiBpbmNlbnRpdmVzIHRvIHByb21vdGUgaXQgKg0KK1doYXQgY29weXJpZ2h0IHByb3RlY3RzICogV29ya3Mgbm90IHByb3RlY3RlZCBieSBjb3B5cmlnaHQgKiBUaGUgcmlnaHRzDQorb2YgY29weXJpZ2h0IGhvbGRlcnMgKiBQdWJsaXNoZXJzJyBjb25jZXJucyBpbiB0b2RheSdzIGVsZWN0cm9uaWMNCitlbnZpcm9ubWVudCAqIENvbXB1bHNvcnkgbGljZW5zZXMgKiBUaGUgcHJpY2Ugb2YgY29weXJpZ2h0IGluIGEgZGlnaXRhbA0KK21lZGl1bSBhbmQgdGhlIG5lZWQgZm9yIGNvb3BlcmF0aW9uICogQWRkaXRpb25hbCBjbGFyaWZpY2F0aW9ucyAqICBSb3VnaA0KK2p1c3RpY2Ugb2Z0ZW50aW1lcyB0aGUgb3V0Y29tZSBpbiBudW1lcm91cyBjb3B5cmlnaHQgbWF0dGVycyAqIENvcHlyaWdodA0KK2luIGFuIGVsZWN0cm9uaWMgc29jaWV0eSAqIENvcHlyaWdodCBsYXcgYWx3YXlzIG9ubHkgc2V0cyB1cCB0aGUNCitib3VuZGFyaWVzOyBhbnl0aGluZyBjYW4gYmUgY2hhbmdlZCBieSBjb250cmFjdCAqDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KKw0KK01hcnliZXRoIFBFVEVSUywgcG9saWN5IHBsYW5uaW5nIGFkdmlzZXIgdG8gdGhlIFJlZ2lzdGVyIG9mIENvcHlyaWdodHMsDQorTGlicmFyeSBvZiBDb25ncmVzcywgICBtYWRlIHNldmVyYWwgZ2VuZXJhbCBjb21tZW50cyBhbmQgdGhlbiBvcGVuZWQgdGhlDQorZmxvb3IgdG8gZGlzY3Vzc2lvbiBvZiBzdWJqZWN0cyBvZiBpbnRlcmVzdCB0byB0aGUgYXVkaWVuY2UuDQorDQorSGF2aW5nIGF0dGVuZGVkIHNldmVyYWwgc2Vzc2lvbnMgaW4gYW4gZWZmb3J0IHRvIGdhaW4gYSBzZW5zZSBvZiB3aGF0DQorcGVvcGxlIGRpZCBhbmQgd2hlcmUgY29weXJpZ2h0IHdvdWxkIGFmZmVjdCB0aGVpciBsaXZlcywgUEVURVJTIGV4cHJlc3NlZA0KK3RoZSBmb2xsb3dpbmcgY2F1dGlvbnM6DQorDQorICAgICAqIElmIG9uZSB0YWtlcyBhbmQgY29udmVydHMgbWF0ZXJpYWxzIGFuZCBwdXRzIHRoZW0gaW4gbmV3IGZvcm1zLA0KKyAgICAgdGhlbiwgZnJvbSBhIGNvcHlyaWdodCBwb2ludCBvZiB2aWV3LCBvbmUgaXMgY3JlYXRpbmcgc29tZXRoaW5nIGFuZA0KKyAgICAgd2lsbCByZWNlaXZlIHNvbWUgcmlnaHRzLg0KKw0KKyAgICAgKiBIb3dldmVyLCBpZiB3aGF0IG9uZSBpcyBjb252ZXJ0aW5nIGFscmVhZHkgZXhpc3RzLCBhIHF1ZXN0aW9uDQorICAgICBpbW1lZGlhdGVseSBhcmlzZXMgYWJvdXQgdGhlIHN0YXR1cyBvZiB0aGUgbWF0ZXJpYWxzIGluIHF1ZXN0aW9uLg0KKw0KKyAgICAgKiBQdXR0aW5nIHNvbWV0aGluZyBpbiB0aGUgcHVibGljIGRvbWFpbiBpbiB0aGUgVW5pdGVkIFN0YXRlcyBvZmZlcnMNCisgICAgIHNvbWUgZnJlZWRvbSBmcm9tIGFueGlldHksIGJ1dCBkaXN0cmlidXRpbmcgaXQgdGhyb3VnaG91dCB0aGUgd29ybGQNCisgICAgIG9uIGEgbmV0d29yayBpcyBhbm90aGVyIG1hdHRlciwgZXZlbiBpZiBvbmUgaGFzIHB1dCBpdCBpbiB0aGUgcHVibGljDQorICAgICBkb21haW4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMuICBSZSBmb3JlaWduIGxhd3MsIHZlcnkgZnJlcXVlbnRseSBhDQorICAgICB3b3JrIGNhbiBiZSBpbiB0aGUgcHVibGljIGRvbWFpbiBpbiB0aGUgVW5pdGVkIFN0YXRlcyBidXQgcHJvdGVjdGVkDQorICAgICBpbiBvdGhlciBjb3VudHJpZXMuICBUaHVzLCBvbmUgbXVzdCBjb25zaWRlciBhbGwgb2YgdGhlIHBsYWNlcyBhDQorICAgICB3b3JrIG1heSByZWFjaCwgbGVzdCBvbmUgdW53aXR0aW5nbHkgYmVjb21lIGxpYWJsZSB0byBiZWluZyBmYWNlZA0KKyAgICAgd2l0aCBhIHN1aXQgZm9yIGNvcHlyaWdodCBpbmZyaW5nZW1lbnQsIG9yIGF0IGxlYXN0IGEgbGV0dGVyDQorICAgICBkZW1hbmRpbmcgZGlzY3Vzc2lvbiBvZiB3aGF0IG9uZSBpcyBkb2luZy4NCisNCitQRVRFUlMgcmV2aWV3ZWQgY29weXJpZ2h0IGxhdyBpbiB0aGUgVW5pdGVkIFN0YXRlcy4gIFRoZSBVLlMuDQorQ29uc3RpdHV0aW9uIGVmZmVjdGl2ZWx5IHN0YXRlcyB0aGF0IENvbmdyZXNzIGhhcyB0aGUgcG93ZXIgdG8gZW5hY3QNCitjb3B5cmlnaHQgbGF3cyBmb3IgdHdvIHB1cnBvc2VzOiAgMSkgdG8gZW5jb3VyYWdlIHRoZSBjcmVhdGlvbiBhbmQNCitkaXNzZW1pbmF0aW9uIG9mIGludGVsbGVjdHVhbCB3b3JrcyBmb3IgdGhlIGdvb2Qgb2Ygc29jaWV0eSBhcyBhIHdob2xlOw0KK2FuZCwgc2lnbmlmaWNhbnRseSwgMikgdG8gZ2l2ZSBjcmVhdG9ycyBhbmQgdGhvc2Ugd2hvIHBhY2thZ2UgYW5kDQorZGlzc2VtaW5hdGUgbWF0ZXJpYWxzIHRoZSBlY29ub21pYyByZXdhcmRzIHRoYXQgYXJlIGR1ZSB0aGVtLg0KKw0KK0NvbmdyZXNzIHN0cml2ZXMgdG8gc3RyaWtlIGEgYmFsYW5jZSwgd2hpY2ggYXQgdGltZXMgY2FuIGJlY29tZSBhbg0KK2Vtb3Rpb25hbCBpc3N1ZS4gIFRoZSBVbml0ZWQgU3RhdGVzIGhhcyBuZXZlciBhY2NlcHRlZCB0aGUgbm90aW9uIG9mIHRoZQ0KK25hdHVyYWwgcmlnaHQgb2YgYW4gYXV0aG9yIHNvIG11Y2ggYXMgaXQgaGFzIGFjY2VwdGVkIHRoZSBub3Rpb24gb2YgdGhlDQorcHVibGljIGdvb2QgYW5kIHRoZSBkZXNpcmFiaWxpdHkgb2YgaW5jZW50aXZlcyB0byBwcm9tb3RlIGl0LiAgVGhpcyBzdGF0ZQ0KK29mIGFmZmFpcnMsIGhvd2V2ZXIsIGhhcyBjcmVhdGVkIHN0cmFpbnMgb24gdGhlIGludGVybmF0aW9uYWwgbGV2ZWwgYW5kDQoraXMgdGhlIHJlYXNvbiBmb3Igc2V2ZXJhbCBvZiB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGxhd3MgdGhhdCB3ZSBoYXZlLiANCitUb2RheSB0aGUgVW5pdGVkIFN0YXRlcyBwcm90ZWN0cyBhbG1vc3QgZXZlcnkga2luZCBvZiB3b3JrIHRoYXQgY2FuIGJlDQorY2FsbGVkIGFuIGV4cHJlc3Npb24gb2YgYW4gYXV0aG9yLiAgVGhlIHN0YW5kYXJkIGZvciBnYWluaW5nIGNvcHlyaWdodA0KK3Byb3RlY3Rpb24gaXMgc2ltcGx5IG9yaWdpbmFsaXR5LiAgVGhpcyBpcyBhIGxvdyBzdGFuZGFyZCBhbmQgbWVhbnMgdGhhdA0KK2Egd29yayBpcyBub3QgY29waWVkIGZyb20gc29tZXRoaW5nIGVsc2UsIGFzIHdlbGwgYXMgc2hvd3MgYSBjZXJ0YWluDQorbWluaW1hbCBhbW91bnQgb2YgYXV0aG9yc2hpcC4gIE9uZSBjYW4gYWxzbyBhY3F1aXJlIGNvcHlyaWdodCBwcm90ZWN0aW9uDQorZm9yIG1ha2luZyBhIG5ldyB2ZXJzaW9uIG9mIHByZWV4aXN0aW5nIG1hdGVyaWFsLCBwcm92aWRlZCBpdCBtYW5pZmVzdHMNCitzb21lIHNwYXJrIG9mIGNyZWF0aXZpdHkuDQorDQorSG93ZXZlciwgY29weXJpZ2h0IGRvZXMgbm90IHByb3RlY3QgaWRlYXMsIG1ldGhvZHMsIHN5c3RlbXMtLW9ubHkgdGhlIHdheQ0KK3RoYXQgb25lIGV4cHJlc3NlcyB0aG9zZSB0aGluZ3MuICBOb3IgZG9lcyBjb3B5cmlnaHQgcHJvdGVjdCBhbnl0aGluZw0KK3RoYXQgaXMgbWVjaGFuaWNhbCwgYW55dGhpbmcgdGhhdCBkb2VzIG5vdCBpbnZvbHZlIGNob2ljZSwgb3IgY3JpdGVyaWENCitjb25jZXJuaW5nIHdoZXRoZXIgb3Igbm90IG9uZSBzaG91bGQgZG8gYSB0aGluZy4gIEZvciBleGFtcGxlLCB0aGUNCityZXN1bHRzIG9mIGEgcHJvY2VzcyBjYWxsZWQgZGVjbGlja2luZywgaW4gd2hpY2ggb25lIG1lY2hhbmljYWxseSByZW1vdmVzDQoraW1wdXJlIHNvdW5kcyBmcm9tIG9sZCByZWNvcmRpbmdzLCBhcmUgbm90IGNvcHlyaWdodGFibGUuICBPbiB0aGUgb3RoZXINCitoYW5kLCB0aGUgY2hvaWNlIHRvIHJlY29yZCBhIHNvbmcgZGlnaXRhbGx5IGFuZCB0byBpbmNyZWFzZSB0aGUgc291bmQgb2YNCit2aW9saW5zIG9yIHRvIGJyaW5nIHVwIHRoZSB0eW1wYW5pIGNvbnN0aXR1dGVzIHRoZSByZXN1bHRzIG9mIGNvbnZlcnNpb24NCit0aGF0IGFyZSBjb3B5cmlnaHRhYmxlLiAgTW9yZW92ZXIsIGlmIGEgd29yayBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGluDQordGhlIFVuaXRlZCBTdGF0ZXMsIG9uZSBnZW5lcmFsbHkgbmVlZHMgdGhlIHBlcm1pc3Npb24gb2YgdGhlIGNvcHlyaWdodA0KK293bmVyIHRvIGNvbnZlcnQgaXQuICBOb3JtYWxseSwgd2hvIHdpbGwgb3duIHRoZSBuZXctLXRoYXQgaXMsIGNvbnZlcnRlZC0NCistbWF0ZXJpYWwgaXMgYSBtYXR0ZXIgb2YgY29udHJhY3QuICBJbiB0aGUgYWJzZW5jZSBvZiBhIGNvbnRyYWN0LCB0aGUNCitwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIG5ldyBtYXRlcmlhbCBpcyB0aGUgYXV0aG9yIGFuZCBvd25lci4gIEJ1dCBwZW9wbGUNCitkbyBub3QgZ2VuZXJhbGx5IHRoaW5rIGFib3V0IHRoZSBjb3B5cmlnaHQgaW1wbGljYXRpb25zIHVudGlsIGFmdGVyIHRoZQ0KK2ZhY3QuICBQRVRFUlMgc3RyZXNzZWQgdGhlIG5lZWQgd2hlbiBkZWFsaW5nIHdpdGggY29weXJpZ2h0ZWQgd29ya3MgdG8NCit0aGluayBhYm91dCBjb3B5cmlnaHQgaW4gYWR2YW5jZS4gIE9uZSdzIGJhcmdhaW5pbmcgcG93ZXIgaXMgbXVjaCBncmVhdGVyDQordXAgZnJvbnQgdGhhbiBpdCBpcyBkb3duIHRoZSByb2FkLg0KKw0KK1BFVEVSUyBuZXh0IGRpc2N1c3NlZCB3b3JrcyBub3QgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCwgZm9yIGV4YW1wbGUsIGFueQ0KK3dvcmsgZG9uZSBieSBhIGZlZGVyYWwgZW1wbG95ZWUgYXMgcGFydCBvZiBoaXMgb3IgaGVyIG9mZmljaWFsIGR1dGllcyBpcw0KK2luIHRoZSBwdWJsaWMgZG9tYWluIGluIHRoZSBVbml0ZWQgU3RhdGVzLiAgVGhlIGlzc3VlIGlzIG5vdCB3aG9sbHkgZnJlZQ0KK29mIGRvdWJ0IGNvbmNlcm5pbmcgd2hldGhlciBvciBub3QgdGhlIHdvcmsgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4NCitvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzLiAgT3RoZXIgbWF0ZXJpYWxzIGluIHRoZSBwdWJsaWMgZG9tYWluIGluY2x1ZGU6IA0KK2FueSB3b3JrcyBwdWJsaXNoZWQgbW9yZSB0aGFuIHNldmVudHktZml2ZSB5ZWFycyBhZ28sIGFuZCBhbnkgd29yaw0KK3B1Ymxpc2hlZCBpbiB0aGUgVW5pdGVkIFN0YXRlcyBtb3JlIHRoYW4gdHdlbnR5LWVpZ2h0IHllYXJzIGFnbywgd2hvc2UNCitjb3B5cmlnaHQgd2FzIG5vdCByZW5ld2VkLiAgSW4gdGFsa2luZyBhYm91dCB0aGUgbmV3IHRlY2hub2xvZ3kgYW5kDQorcHV0dGluZyBtYXRlcmlhbCBpbiBhIGRpZ2l0YWwgZm9ybSB0byBzZW5kIGFsbCBvdmVyIHRoZSB3b3JsZCwgUEVURVJTDQorY2F1dGlvbmVkLCBvbmUgbXVzdCBrZWVwIGluIG1pbmQgdGhhdCB3aGlsZSB0aGUgcmlnaHRzIG1heSBub3QgYmUgYW4NCitpc3N1ZSBpbiB0aGUgVW5pdGVkIFN0YXRlcywgdGhleSBtYXkgYmUgaW4gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSB3b3JsZCwNCit3aGVyZSBtb3N0IGNvdW50cmllcyBwcmV2aW91c2x5IGVtcGxveWVkIGEgY29weXJpZ2h0IHRlcm0gb2YgdGhlIGxpZmUgb2YNCit0aGUgYXV0aG9yIHBsdXMgZmlmdHkgeWVhcnMuDQorDQorUEVURVJTIG5leHQgcmV2aWV3ZWQgdGhlIGVjb25vbWljcyBvZiBjb3B5cmlnaHQgaG9sZGluZy4gIFNpbXBseSwNCitlY29ub21pYyByaWdodHMgYXJlIHRoZSByaWdodHMgdG8gY29udHJvbCB0aGUgcmVwcm9kdWN0aW9uIG9mIGEgd29yayBpbg0KK2FueSBmb3JtLiAgVGhleSBiZWxvbmcgdG8gdGhlIGF1dGhvciwgb3IgaW4gdGhlIGNhc2Ugb2YgYSB3b3JrIG1hZGUgZm9yDQoraGlyZSwgdGhlIGVtcGxveWVyLiAgVGhlIHNlY29uZCByaWdodCwgd2hpY2ggaXMgY3JpdGljYWwgdG8gY29udmVyc2lvbiwNCitpcyB0aGUgcmlnaHQgdG8gY2hhbmdlIGEgd29yay4gIFRoZSByaWdodCB0byBtYWtlIG5ldyB2ZXJzaW9ucyBpcyBwZXJoYXBzDQorb25lIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IHJpZ2h0cyBvZiBhdXRob3JzLCBwYXJ0aWN1bGFybHkgaW4gYW4NCitlbGVjdHJvbmljIHdvcmxkLiAgVGhlIHRoaXJkIHJpZ2h0IGlzIHRoZSByaWdodCB0byBwdWJsaXNoIHRoZSB3b3JrIGFuZA0KK3RoZSByaWdodCB0byBkaXNzZW1pbmF0ZSBpdCwgc29tZXRoaW5nIHRoYXQgZXZlcnlvbmUgd2hvIGRlYWxzIGluIGFuDQorZWxlY3Ryb25pYyBtZWRpdW0gbmVlZHMgdG8ga25vdy4gIFRoZSBiYXNpYyBydWxlIGlzIGlmIGEgY29weSBpcyBzb2xkLA0KK2FsbCByaWdodHMgb2YgZGlzdHJpYnV0aW9uIGFyZSBleHRpbmd1aXNoZWQgd2l0aCB0aGUgc2FsZSBvZiB0aGF0IGNvcHkuIA0KK1RoZSBrZXkgaXMgdGhhdCBpdCBtdXN0IGJlIHNvbGQuICBBIG51bWJlciBvZiBjb21wYW5pZXMgb3ZlcmNvbWUgdGhpcw0KK29ic3RhY2xlIGJ5IGxlYXNpbmcgb3IgcmVudGluZyB0aGVpciBwcm9kdWN0LiAgVGhlc2UgY29tcGFuaWVzIGFyZ3VlIHRoYXQNCitpZiB0aGUgbWF0ZXJpYWwgaXMgcmVudGVkIG9yIGxlYXNlZCBhbmQgbm90IHNvbGQsIHRoZXkgY29udHJvbCB0aGUgdXNlcw0KK29mIGEgd29yay4gIFRoZSBmb3VydGggcmlnaHQsIGFuZCBvbmUgdmVyeSBpbXBvcnRhbnQgaW4gYSBkaWdpdGFsIHdvcmxkLA0KK2lzIGEgcmlnaHQgb2YgcHVibGljIHBlcmZvcm1hbmNlLCB3aGljaCBtZWFucyB0aGUgcmlnaHQgdG8gc2hvdyB0aGUgd29yaw0KK3NlcXVlbnRpYWxseS4gIEZvciBleGFtcGxlLCBjb3B5cmlnaHQgb3duZXJzIGNvbnRyb2wgdGhlIHNob3dpbmcgb2YgYQ0KK0NELVJPTSBwcm9kdWN0IGluIGEgcHVibGljIHBsYWNlIHN1Y2ggYXMgYSBwdWJsaWMgbGlicmFyeS4gIFRoZSByZXZlcnNlDQorc2lkZSBvZiBwdWJsaWMgcGVyZm9ybWFuY2UgaXMgc29tZXRoaW5nIGNhbGxlZCB0aGUgcmlnaHQgb2YgcHVibGljDQorZGlzcGxheS4gIE1vcmFsIHJpZ2h0cyBhbHNvIGV4aXN0LCB3aGljaCBhdCB0aGUgZmVkZXJhbCBsZXZlbCBhcHBseSBvbmx5DQordG8gdmVyeSBsaW1pdGVkIHZpc3VhbCB3b3JrcyBvZiBhcnQsIGJ1dCBpbiB0aGVvcnkgbWF5IGFwcGx5IHVuZGVyDQorY29udHJhY3QgYW5kIG90aGVyIHByaW5jaXBsZXMuICBNb3JhbCByaWdodHMgbWF5IGluY2x1ZGUgdGhlIHJpZ2h0IG9mIGFuDQorYXV0aG9yIHRvIGhhdmUgaGlzIG9yIGhlciBuYW1lIG9uIGEgd29yaywgdGhlIHJpZ2h0IG9mIGF0dHJpYnV0aW9uLCBhbmQNCit0aGUgcmlnaHQgdG8gb2JqZWN0IHRvIGRpc3RvcnRpb24gb3IgbXV0aWxhdGlvbi0tdGhlIHJpZ2h0IG9mIGludGVncml0eS4NCisNCitUaGUgd2F5IGNvcHlyaWdodCBsYXcgaXMgd29yZGVkIGdpdmVzIG11Y2ggbGF0aXR1ZGUgdG8gYWN0aXZpdGllcyBzdWNoIGFzDQorcHJlc2VydmF0aW9uOyB0byB1c2Ugb2YgbWF0ZXJpYWwgZm9yIHNjaG9sYXJseSBhbmQgcmVzZWFyY2ggcHVycG9zZXMgd2hlbg0KK3RoZSB1c2VyIGRvZXMgbm90IG1ha2UgbXVsdGlwbGUgY29waWVzOyBhbmQgdG8gdGhlIGdlbmVyYXRpb24gb2YNCitmYWNzaW1pbGUgY29waWVzIG9mIHVucHVibGlzaGVkIHdvcmtzIGJ5IGxpYnJhcmllcyBmb3IgdGhlbXNlbHZlcyBhbmQNCitvdGhlciBsaWJyYXJpZXMuICBCdXQgdGhlIGxhdyBkb2VzIG5vdCBhbGxvdyBhbnlvbmUgdG8gYmVjb21lIHRoZQ0KK2Rpc3RyaWJ1dG9yIG9mIHRoZSBwcm9kdWN0IGZvciB0aGUgZW50aXJlIHdvcmxkLiAgSW4gdG9kYXkncyBlbGVjdHJvbmljDQorZW52aXJvbm1lbnQsIHB1Ymxpc2hlcnMgYXJlIGV4dHJlbWVseSBjb25jZXJuZWQgdGhhdCB0aGUgZW50aXJlIHdvcmxkIGlzDQorbmV0d29ya2VkIGFuZCBjYW4gb2J0YWluIHRoZSBpbmZvcm1hdGlvbiBkZXNpcmVkIGZyb20gYSBzaW5nbGUgY29weSBpbiBhDQorc2luZ2xlIGxpYnJhcnkuICBIZW5jZSwgaWYgdGhlcmUgaXMgdG8gYmUgb25seSBvbmUgc2FsZSwgd2hpY2ggcHVibGlzaGVycw0KK21heSBjaG9vc2UgdG8gbGl2ZSB3aXRoLCB0aGV5IHdpbGwgb2J0YWluIHRoZWlyIG1vbmV5IGluIG90aGVyIHdheXMsIGZvcg0KK2V4YW1wbGUsIGZyb20gYWNjZXNzIGFuZCB1c2UuICBIZW5jZSwgdGhlIGRldmVsb3BtZW50IG9mIHNpdGUgbGljZW5zZXMNCithbmQgb3RoZXIga2luZHMgb2YgYWdyZWVtZW50cyB0byBjb3ZlciB3aGF0IHB1Ymxpc2hlcnMgYmVsaWV2ZSB0aGV5DQorc2hvdWxkIGJlIGNvbXBlbnNhdGVkIGZvci4gIEFueSBzb2x1dGlvbiB0aGF0IHRoZSBVbml0ZWQgU3RhdGVzIHRha2VzDQordG9kYXkgaGFzIHRvIGNvbnNpZGVyIHRoZSBpbnRlcm5hdGlvbmFsIGFyZW5hLg0KKw0KK05vdGluZyB0aGF0IHRoZSBVbml0ZWQgU3RhdGVzIGlzIGEgbWVtYmVyIG9mIHRoZSBCZXJuZSBDb252ZW50aW9uIGFuZA0KK3N1YnNjcmliZXMgdG8gaXRzIHByb3Zpc2lvbnMsIFBFVEVSUyBkZXNjcmliZWQgdGhlIHBlcm1pc3Npb25zIHByb2Nlc3MuIA0KK1NoZSBhbHNvIGRlZmluZWQgY29tcHVsc29yeSBsaWNlbnNlcy4gIEEgY29tcHVsc29yeSBsaWNlbnNlLCBvZiB3aGljaCB0aGUNCitVbml0ZWQgU3RhdGVzIGhhcyBoYWQgYSBmZXcsIGJ1aWxkcyBpbnRvIHRoZSBsYXcgdGhlIHJpZ2h0IHRvIHVzZSBhIHdvcmsNCitzdWJqZWN0IHRvIGNlcnRhaW4gdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJbiB0aGUgaW50ZXJuYXRpb25hbCBhcmVuYSwNCitob3dldmVyLCB0aGUgYWJpbGl0eSB0byB1c2UgY29tcHVsc29yeSBsaWNlbnNlcyBpcyBleHRyZW1lbHkgbGltaXRlZC4gDQorVGh1cywgY2xlYXJpbmdob3VzZXMgYW5kIG90aGVyIGNvbGxlY3RpdmVzIGNvbXByaXNlIG9uZSBvcHRpb24gdGhhdCBoYXMNCitzdWNjZWVkZWQgaW4gcHJvdmlkaW5nIGZvciB1c2Ugb2YgYSB3b3JrLiAgT2Z0ZW4gb3Zlcmxvb2tlZCB3aGVuIG9uZQ0KK2JlZ2lucyB0byB1c2UgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgYW5kIHB1dCBwcm9kdWN0cyB0b2dldGhlciBpcyBob3cNCitleHBlbnNpdmUgdGhlIHBlcm1pc3Npb25zIHByb2Nlc3MgYW5kIG1hbmFnaW5nIGl0IGlzLiAgQWNjb3JkaW5nIHRvDQorUEVURVJTLCB0aGUgcHJpY2Ugb2YgY29weXJpZ2h0IGluIGEgZGlnaXRhbCBtZWRpdW0sIHdoYXRldmVyIHNvbHV0aW9uIGlzDQord29ya2VkIG91dCwgd2lsbCBpbmNsdWRlIG1hbmFnaW5nIGFuZCBhc3NlbWJsaW5nIHRoZSBkYXRhYmFzZS4gIFNoZQ0KK3N0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcHVibGlzaGVycyBhbmQgbGlicmFyaWFucyBvciBwZW9wbGUgd2l0aA0KK3ZhcmlvdXMgYmFja2dyb3VuZHMgY29vcGVyYXRlIHRvIHdvcmsgb3V0IGFkbWluaXN0cmF0aXZlbHkgZmVhc2libGUNCitzeXN0ZW1zLCBpbiBvcmRlciB0byBwcm9kdWNlIGJldHRlciByZXN1bHRzLg0KKw0KK0luIHRoZSBsZW5ndGh5IHF1ZXN0aW9uLWFuZC1hbnN3ZXIgcGVyaW9kIHRoYXQgZm9sbG93ZWQgUEVURVJTJ3MNCitwcmVzZW50YXRpb24sIHRoZSBmb2xsb3dpbmcgcG9pbnRzIGVtZXJnZWQ6DQorDQorICAgICAqIFRoZSBDb3B5cmlnaHQgT2ZmaWNlIG1haW50YWlucyB0aGF0IGFueXRoaW5nIG1lY2hhbmljYWwgYW5kDQorICAgICB0b3RhbGx5IGV4aGF1c3RpdmUgcHJvYmFibHkgaXMgbm90IHByb3RlY3RlZC4gIEluIHRoZSBldmVudCB0aGF0DQorICAgICB3aGF0IGFuIGluZGl2aWR1YWwgZGlkIGluIGRldmVsb3BpbmcgcG90ZW50aWFsbHkgY29weXJpZ2h0YWJsZQ0KKyAgICAgbWF0ZXJpYWwgaXMgbm90IHVuZGVyc3Rvb2QsIHRoZSBDb3B5cmlnaHQgT2ZmaWNlIHdpbGwgYXNrIGFib3V0IHRoZQ0KKyAgICAgY3JlYXRpdmUgY2hvaWNlcyB0aGUgYXBwbGljYW50IGNob3NlIHRvIG1ha2Ugb3Igbm90IHRvIG1ha2UuICBBcyBhDQorICAgICBwcmFjdGljYWwgbWF0dGVyLCBpZiBvbmUgYmVsaWV2ZXMgc2hlIG9yIGhlIGhhcyBtYWRlIGVub3VnaCBvZiB0aG9zZQ0KKyAgICAgY2hvaWNlcywgdGhhdCBwZXJzb24gaGFzIGEgcmlnaHQgdG8gYXNzZXJ0IGEgY29weXJpZ2h0IGFuZCBzb21lb25lDQorICAgICBlbHNlIG11c3QgYXNzZXJ0IHRoYXQgdGhlIHdvcmsgaXMgbm90IGNvcHlyaWdodGFibGUuICBUaGUgbW9yZQ0KKyAgICAgbWVjaGFuaWNhbCwgdGhlIG1vcmUgYXV0b21hdGljLCBhIHRoaW5nIGlzLCB0aGUgbGVzcyBsaWtlbHkgaXQgaXMgdG8NCisgICAgIGJlIGNvcHlyaWdodGFibGUuDQorDQorICAgICAqIE5lYXJseSBhbGwgcGhvdG9ncmFwaHMgYXJlIGRlZW1lZCB0byBiZSBjb3B5cmlnaHRhYmxlLCBidXQgbm8gb25lDQorICAgICB3b3JyaWVzIGFib3V0IHRoZW0gbXVjaCwgYmVjYXVzZSBldmVyeW9uZSBpcyBmcmVlIHRvIHRha2UgdGhlIHNhbWUNCisgICAgIGltYWdlLiAgVGh1cywgYSBwaG90b2dyYXBoaWMgY29weXJpZ2h0IHJlcHJlc2VudHMgd2hhdCBpcyBjYWxsZWQgYQ0KKyAgICAgInRoaW4iIGNvcHlyaWdodC4gIFRoZSBwaG90b2dyYXBoIGl0c2VsZiBtdXN0IGJlIGR1cGxpY2F0ZWQsIGluDQorICAgICBvcmRlciBmb3IgY29weXJpZ2h0IHRvIGJlIHZpb2xhdGVkLg0KKw0KKyAgICAgKiBUaGUgQ29weXJpZ2h0IE9mZmljZSB0YWtlcyB0aGUgcG9zaXRpb24gdGhhdCBYLXJheXMgYXJlIG5vdA0KKyAgICAgY29weXJpZ2h0YWJsZSBiZWNhdXNlIHRoZXkgYXJlIG1lY2hhbmljYWwuICBJdCAgY2FuIGJlIGFyZ3VlZA0KKyAgICAgd2hldGhlciBvciBub3QgaW1hZ2UgZW5oYW5jZW1lbnQgaW4gc2Nhbm5pbmcgY2FuIGJlIHByb3RlY3RlZC4gIE9uZQ0KKyAgICAgbXVzdCBleGVyY2lzZSBjYXJlIHdpdGggbWF0ZXJpYWwgY3JlYXRlZCB3aXRoIHB1YmxpYyBmdW5kcyBhbmQNCisgICAgIGdlbmVyYWxseSBpbiB0aGUgcHVibGljIGRvbWFpbi4gIEFuIGFydGljbGUgd3JpdHRlbiBieSBhIGZlZGVyYWwNCisgICAgIGVtcGxveWVlLCBpZiB3cml0dGVuIGFzIHBhcnQgb2Ygb2ZmaWNpYWwgZHV0aWVzLCBpcyBub3QNCisgICAgIGNvcHlyaWdodGFibGUuICBIb3dldmVyLCBjb250cm9sIG92ZXIgYSBzY2llbnRpZmljIGFydGljbGUgd3JpdHRlbg0KKyAgICAgYnkgYSBOYXRpb25hbCBJbnN0aXR1dGVzIG9mIEhlYWx0aCBncmFudGVlIChpLmUuLCBzb21lb25lIHdobw0KKyAgICAgcmVjZWl2ZXMgbW9uZXkgZnJvbSB0aGUgVS5TLiBnb3Zlcm5tZW50KSwgZGVwZW5kcyBvbiBOSUggcG9saWN5LiAgSWYNCisgICAgIHRoZSBnb3Zlcm5tZW50IGFnZW5jeSBoYXMgbm8gcG9saWN5IChhbmQgdGhhdCBwb2xpY3kgY2FuIGJlDQorICAgICBjb250YWluZWQgaW4gaXRzIHJlZ3VsYXRpb25zLCB0aGUgY29udHJhY3QsIG9yIHRoZSBncmFudCksIHRoZQ0KKyAgICAgYXV0aG9yIHJldGFpbnMgY29weXJpZ2h0LiAgSWYgYSBwcm92aXNpb24gb2YgdGhlIGNvbnRyYWN0LCBncmFudCwgb3INCisgICAgIHJlZ3VsYXRpb24gc3RhdGVzIHRoYXQgdGhlcmUgd2lsbCBiZSBubyBjb3B5cmlnaHQsIHRoZW4gaXQgZG9lcyBub3QNCisgICAgIGV4aXN0LiAgV2hlbiBhIHdvcmsgaXMgY3JlYXRlZCwgY29weXJpZ2h0IGF1dG9tYXRpY2FsbHkgY29tZXMgaW50bw0KKyAgICAgZXhpc3RlbmNlIHVubGVzcyBzb21ldGhpbmcgZXhpc3RzIHRoYXQgc2F5cyBpdCBkb2VzIG5vdC4NCisNCisgICAgICogQW4gZW5oYW5jZWQgZWxlY3Ryb25pYyBjb3B5IG9mIGEgcHJpbnQgY29weSBvZiBhbiBvbGRlciByZWZlcmVuY2UNCisgICAgIHdvcmsgaW4gdGhlIHB1YmxpYyBkb21haW4gdGhhdCBkb2VzIG5vdCBjb250YWluIGNvcHlyaWdodGFibGUgbmV3DQorICAgICBtYXRlcmlhbCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmRpdGlvbiBvZiB0aGUgb3JpZ2luYWwgd29yaywgYW5kDQorICAgICBpcyBub3QgY29weXJpZ2h0YWJsZS4NCisNCisgICAgICogVXN1YWxseSwgd2hlbiBhIHdvcmsgZW50ZXJzIHRoZSBwdWJsaWMgZG9tYWluLCBub3RoaW5nIGNhbiByZW1vdmUNCisgICAgIGl0LiAgRm9yIGV4YW1wbGUsIENvbmdyZXNzIHJlY2VudGx5IHBhc3NlZCBpbnRvIGxhdyB0aGUgY29uY2VwdCBvZg0KKyAgICAgYXV0b21hdGljIHJlbmV3YWwsIHdoaWNoIG1lYW5zIHRoYXQgY29weXJpZ2h0IG9uIGFueSB3b3JrIHB1Ymxpc2hlZA0KKyAgICAgYmV0d2VlbiBsOTY0IGFuZCBsOTc4IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVuZXdlZCBpbiBvcmRlciB0bw0KKyAgICAgcmVjZWl2ZSBhIHNldmVudHktZml2ZS15ZWFyIHRlcm0uICBCdXQgYW55IHdvcmsgbm90IHJlbmV3ZWQgYmVmb3JlDQorICAgICAxOTY0IGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLg0KKw0KKyAgICAgKiBDb25jZXJuaW5nIHdoZXRoZXIgb3Igbm90IHRoZSBVbml0ZWQgU3RhdGVzIGtlZXBzIHRyYWNrIG9mIHdoZW4NCisgICAgIGF1dGhvcnMgZGllLCBub3RoaW5nIHdhcyBldmVyIGRvbmUsIG5vciBpcyBhbnl0aGluZyBiZWluZyBkb25lIGF0DQorICAgICB0aGUgbW9tZW50IGJ5IHRoZSBDb3B5cmlnaHQgT2ZmaWNlLg0KKw0KKyAgICAgKiBTb2Z0d2FyZSB0aGF0IGRyaXZlcyBhIG1lY2hhbmljYWwgcHJvY2VzcyBpcyBpdHNlbGYgY29weXJpZ2h0YWJsZS4gDQorICAgICBJZiBvbmUgY2hhbmdlcyBwbGF0Zm9ybXMsIHRoZSBzb2Z0d2FyZSBpdHNlbGYgaGFzIGEgY29weXJpZ2h0LiAgVGhlDQorICAgICBXb3JsZCBJbnRlbGxlY3R1YWwgUHJvcGVydHkgT3JnYW5pemF0aW9uIHdpbGwgaG9sZCBhIHN5bXBvc2l1bSAyOA0KKyAgICAgTWFyY2ggdGhyb3VnaCAyIEFwcmlsIGw5OTMsIGF0IEhhcnZhcmQgVW5pdmVyc2l0eSwgb24gZGlnaXRhbA0KKyAgICAgdGVjaG5vbG9neSwgYW5kIHdpbGwgc3R1ZHkgdGhpcyBlbnRpcmUgaXNzdWUuICBJZiBvbmUgcHVyY2hhc2VzIGENCisgICAgIGNvbXB1dGVyIHNvZnR3YXJlIHBhY2thZ2UsIHN1Y2ggYXMgTWFjUGFpbnQsIGFuZCBjcmVhdGVzIHNvbWV0aGluZw0KKyAgICAgbmV3LCBvbmUgcmVjZWl2ZXMgcHJvdGVjdGlvbiBvbmx5IGZvciB0aGF0IHdoaWNoIGhhcyBiZWVuIGFkZGVkLg0KKw0KK1BFVEVSUyBhZGRlZCB0aGF0IG9mdGVuIGluIGNvcHlyaWdodCBtYXR0ZXJzLCByb3VnaCBqdXN0aWNlIGlzIHRoZQ0KK291dGNvbWUsIGZvciBleGFtcGxlLCBpbiBjb2xsZWN0aXZlIGxpY2Vuc2luZywgQVNDQVAgKGkuZS4sIEFtZXJpY2FuDQorU29jaWV0eSBvZiBDb21wb3NlcnMsIEF1dGhvcnMsIGFuZCBQdWJsaXNoZXJzKSwgYW5kIEJNSSAoaS5lLiwgQnJvYWRjYXN0DQorTXVzaWMsIEluYy4pLCB3aGVyZSBpdCBtYXkgc2VlbSB0aGF0IHRoZSBiaWcgZ3V5cyByZWNlaXZlIG1vcmUgdGhhbiB0aGVpcg0KK2R1ZS4gIE9mIGNvdXJzZSwgcGVvcGxlIG91Z2h0IG5vdCB0byBjb3B5IGEgY3JlYXRpdmUgcHJvZHVjdCB3aXRob3V0DQorcGF5aW5nIGZvciBpdDsgdGhlcmUgc2hvdWxkIGJlIHNvbWUgY29tcGVuc2F0aW9uLiAgQnV0IHRoZSB0cnV0aCBvZiB0aGUNCit3b3JsZCwgYW5kIGl0IGlzIG5vdCBhIGdyZWF0IHRydXRoLCBpcyB0aGF0IHRoZSBiaWcgZ3V5IGdldHMgcGxheWVkIG9uDQordGhlIHJhZGlvIG1vcmUgZnJlcXVlbnRseSB0aGFuIHRoZSBsaXR0bGUgZ3V5LCB3aG8gaGFzIHRvIGRvIG11Y2ggbW9yZQ0KK3VudGlsIGhlIGJlY29tZXMgYSBiaWcgZ3V5LiAgVGhhdCBpcyB0cnVlIG9mIGV2ZXJ5IGF1dGhvciwgZXZlcnkNCitjb21wb3NlciwgZXZlcnlvbmUsIGFuZCwgdW5mb3J0dW5hdGVseSwgaXMgcGFydCBvZiBsaWZlLg0KKw0KK0NvcHlyaWdodCBhbHdheXMgb3JpZ2luYXRlcyB3aXRoIHRoZSBhdXRob3IsIGV4Y2VwdCBpbiBjYXNlcyBvZiB3b3Jrcw0KK21hZGUgZm9yIGhpcmUuICAoTW9zdCBzb2Z0d2FyZSBmYWxscyBpbnRvIHRoaXMgY2F0ZWdvcnkuKSAgV2hlbiBhbiBhdXRob3INCitzZW5kcyBoaXMgYXJ0aWNsZSB0byBhIGpvdXJuYWwsIGhlIGhhcyBub3QgcmVsaW5xdWlzaGVkIGNvcHlyaWdodCwgdGhvdWdoDQoraGUgcmV0YWlucyB0aGUgcmlnaHQgdG8gcmVsaW5xdWlzaCBpdC4gIFRoZSBhdXRob3IgcmVjZWl2ZXMgYWJzb2x1dGVseQ0KK2V2ZXJ5dGhpbmcuICBUaGUgbGVzcyBwcm9taW5lbnQgdGhlIGF1dGhvciwgdGhlIG1vcmUgbGV2ZXJhZ2UgdGhlDQorcHVibGlzaGVyIHdpbGwgaGF2ZSBpbiBjb250cmFjdCBuZWdvdGlhdGlvbnMuICBJbiBvcmRlciB0byB0cmFuc2ZlciB0aGUNCityaWdodHMsIHRoZSBhdXRob3IgbXVzdCBzaWduIGFuIGFncmVlbWVudCBnaXZpbmcgdGhlbSBhd2F5Lg0KKw0KK0luIGFuIGVsZWN0cm9uaWMgc29jaWV0eSwgaXQgaXMgaW1wb3J0YW50IHRvIGJlIGFibGUgdG8gbGljZW5zZSBhIHdyaXRlcg0KK2FuZCB3b3JrIG91dCBkZWFscy4gIFdpdGggcmVnYXJkIHRvIHVzZSBvZiBhIHdvcmssIGl0IHVzdWFsbHkgaXMgbXVjaA0KK2Vhc2llciB3aGVuIGEgcHVibGlzaGVyIGhvbGRzIHRoZSByaWdodHMuICBJbiBhbiBlbGVjdHJvbmljIGVyYSwgYSByZWFsDQorcHJvYmxlbSBhcmlzZXMgd2hlbiBvbmUgaXMgZGlnaXRpemluZyBhbmQgbWFraW5nIGluZm9ybWF0aW9uIGF2YWlsYWJsZS4gDQorUEVURVJTIHJlZmVycmVkIGFnYWluIHRvIGVsZWN0cm9uaWMgbGljZW5zaW5nIGNsZWFyaW5naG91c2VzLiAgQ29weXJpZ2h0DQorb3VnaHQgdG8gcmVtYWluIHdpdGggdGhlIGF1dGhvciwgYnV0IGFzIG9uZSBtb3ZlcyBmb3J3YXJkIGdsb2JhbGx5IGluIHRoZQ0KK2VsZWN0cm9uaWMgYXJlbmEsIGEgbWlkZGxlbWFuIHdobyBjYW4gaGFuZGxlIHRoZSB2YXJpb3VzIHJpZ2h0cyBiZWNvbWVzDQoraW5jcmVhc2luZ2x5IG5lY2Vzc2FyeS4NCisNCitUaGUgbm90aW9uIG9mIGNvcHlyaWdodCBsYXcgaXMgdGhhdCBpdCByZXNpZGVzIHdpdGggdGhlIGluZGl2aWR1YWwsIGJ1dA0KK2luIGFuIG9uLWxpbmUgZW52aXJvbm1lbnQsIHdoZXJlIGEgd29yayBjYW4gYmUgYWRhcHRlZCBhbmQgdGlua2VyZWQgd2l0aA0KK2J5IG1hbnkgaW5kaXZpZHVhbHMsIHRoZXJlIGlzIGNvbmNlcm4uICBJZiBjaGFuZ2VzIGFyZSBhdXRob3JpemVkIGFuZA0KK3RoZXJlIGlzIG5vIGFncmVlbWVudCB0byB0aGUgY29udHJhcnksIHRoZSBwZXJzb24gd2hvIGNoYW5nZXMgYSB3b3JrIG93bnMNCit0aGUgY2hhbmdlcy4gIFRvIHB1dCBpdCBhbm90aGVyIHdheSwgdGhlIHBlcnNvbiB3aG8gYWNxdWlyZXMgcGVybWlzc2lvbg0KK3RvIGNoYW5nZSBhIHdvcmsgdGVjaG5pY2FsbHkgd2lsbCBiZWNvbWUgdGhlIGF1dGhvciBhbmQgdGhlIG93bmVyLCB1bmxlc3MNCitzb21lIGFncmVlbWVudCB0byB0aGUgY29udHJhcnkgaGFzIGJlZW4gbWFkZS4gIEl0IGlzIHR5cGljYWwgZm9yIHRoZQ0KK29yaWdpbmFsIHB1Ymxpc2hlciB0byB0cnkgdG8gY29udHJvbCBhbGwgb2YgdGhlIHZlcnNpb25zIGFuZCBhbGwgb2YgdGhlDQordXNlcy4gIENvcHlyaWdodCBsYXcgYWx3YXlzIG9ubHkgc2V0cyB1cCB0aGUgYm91bmRhcmllcy4gIEFueXRoaW5nIGNhbiBiZQ0KK2NoYW5nZWQgYnkgY29udHJhY3QuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorU0VTU0lPTiBWSUkuICBDT05DTFVTSU9ODQorDQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK0dFTkVSQUwgRElTQ1VTU0lPTiAqIFR3byBxdWVzdGlvbnMgZm9yIGRpc2N1c3Npb24gKiBEaWZmZXJlbnQgZW1waGFzZXMgaW4NCit0aGUgV29ya3Nob3AgKiBCcmluZ2luZyB0aGUgdGV4dCBhbmQgaW1hZ2UgcGFydGlzYW5zIHRvZ2V0aGVyICoNCitEZXNpZGVyYXRhIGluIHBsYW5uaW5nIHRoZSBsb25nLXRlcm0gZGV2ZWxvcG1lbnQgb2Ygc29tZXRoaW5nICogUXVlc3Rpb25zDQorc3Vycm91bmRpbmcgdGhlIGlzc3VlIG9mIGVsZWN0cm9uaWMgZGVwb3NpdCAqIERpc2N1c3Npb24gb2YgZWxlY3Ryb25pYw0KK2RlcG9zaXQgYXMgYW4gYWxsdXNpb24gdG8gdGhlIGlzc3VlIG9mIHN0YW5kYXJkcyAqIE5lZWQgZm9yIGEgZGlyZWN0b3J5DQorb2YgcHJlc2VydmF0aW9uIHByb2plY3RzIGluIGRpZ2l0YWwgZm9ybSBhbmQgZm9yIGFjY2VzcyB0byB0aGVpcg0KK2RpZ2l0aXplZCBmaWxlcyAqIENFVEgncyBjYXRhbG9ndWUgb2YgbWFjaGluZS1yZWFkYWJsZSB0ZXh0cyBpbiB0aGUNCitodW1hbml0aWVzICogV2hhdCBjb25zdGl0dXRlcyBhIHB1YmxpY2F0aW9uIGluIHRoZSBlbGVjdHJvbmljIHdvcmxkPyAqDQorTmVlZCBmb3IgTEMgdG8gZGVhbCB3aXRoIHRoZSBjb25jZXB0IG9mIG9uLWxpbmUgcHVibGlzaGluZyAqIExDJ3MgTmV0d29yaw0KK0RldmVsb3BtZW50IE9mZmljZSAgZXhwbG9yaW5nIHRoZSBsaW1pdHMgb2YgTUFSQyBhcyBhIHN0YW5kYXJkIGluIHRlcm1zDQorb2YgaGFuZGxpbmcgZWxlY3Ryb25pYyBpbmZvcm1hdGlvbiAqIE1hZ25pdHVkZSBvZiB0aGUgcHJvYmxlbSBhbmQgdGhlDQorbmVlZCBmb3IgZGlzdHJpYnV0ZWQgcmVzcG9uc2liaWxpdHkgaW4gb3JkZXIgdG8gbWFpbnRhaW4gYW5kIHN0b3JlDQorZWxlY3Ryb25pYyBpbmZvcm1hdGlvbiAqIFdvcmtzaG9wIHBhcnRpY2lwYW50cyB0byBiZSB2aWV3ZWQgYXMgYSBzdGFydGluZw0KK3BvaW50ICogRGV2ZWxvcG1lbnQgb2YgYSBuZXR3b3JrIHZlcnNpb24gb2YgQU0gdXJnZWQgKiBBIHN0ZXAgdG93YXJkIEFNJ3MNCitjb25zdHJ1Y3Rpb24gb2Ygc29tZSBzb3J0IG9mIGFwcGFyYXR1cyBmb3IgbmV0d29yayBhY2Nlc3MgKiBBIGRlbGljYXRlDQorYW5kIGFnb25pemluZyBwb2xpY3kgcXVlc3Rpb24gZm9yIExDICogUmUgdGhlIGlzc3VlIG9mIGVsZWN0cm9uaWMNCitkZXBvc2l0LCBMQyB1cmdlZCB0byBpbml0aWF0ZSBhIGNhdGFseXRpYyBwcm9jZXNzIGluIHRlcm1zIG9mIGRpc3RyaWJ1dGVkDQorcmVzcG9uc2liaWxpdHkgKiBTdWdnZXN0aW9ucyBmb3IgY29vcGVyYXRpdmUgdmVudHVyZXMgKiBDb21tZXJjaWFsDQorcHVibGlzaGVycycgZmVhcnMgKiBTdHJhdGVnaWMgcXVlc3Rpb25zIGZvciBnZXR0aW5nIHRoZSBpbWFnZSBhbmQgdGV4dA0KK3Blb3BsZSB0byB0aGluayB0aHJvdWdoIGxvbmctdGVybSBjb29wZXJhdGlvbiAqIENsYXJpZmljYXRpb24gb2YgdGhlDQorZHJpdmluZyBmb3JjZSBiZWhpbmQgYm90aCB0aGUgUGVyc2V1cyBhbmQgdGhlIENvcm5lbGwgWGVyb3ggcHJvamVjdHMgKg0KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCisNCitJbiBoaXMgcm9sZSBhcyBtb2RlcmF0b3Igb2YgdGhlIGNvbmNsdWRpbmcgc2Vzc2lvbiwgR0lGRk9SRCByYWlzZWQgdHdvDQorcXVlc3Rpb25zIGhlIGJlbGlldmVkIHdvdWxkIGJlbmVmaXQgZnJvbSBkaXNjdXNzaW9uOiAgMSkgQXJlIHRoZXJlIGVub3VnaA0KK2NvbW1vbmFsaXRpZXMgYW1vbmcgdGhvc2Ugb2YgdXMgdGhhdCBoYXZlIGJlZW4gaGVyZSBmb3IgdHdvIGRheXMgc28gdGhhdA0KK3dlIGNhbiBzZWUgY291cnNlcyBvZiBhY3Rpb24gdGhhdCBzaG91bGQgYmUgdGFrZW4gaW4gdGhlIGZ1dHVyZT8gIEFuZCwgaWYNCitzbywgd2hhdCBhcmUgdGhleSBhbmQgd2hvIG1pZ2h0IHRha2UgdGhlbT8gIDIpIFBhcnRseSBkZXJpdmF0aXZlIGZyb20NCit0aGF0LCBidXQgb2J2aW91c2x5IHZlcnkgZGFuZ2Vyb3VzIHRvIExDIGFzIGhvc3QsIGRvIHlvdSBzZWUgYSByb2xlIGZvcg0KK3RoZSBMaWJyYXJ5IG9mIENvbmdyZXNzIGluIGFsbCB0aGlzPyAgT2YgY291cnNlLCB0aGUgTGlicmFyeSBvZiBDb25ncmVzcw0KK2hvbGRzIGEgcmF0aGVyIHNwZWNpYWwgc3RhdHVzIGluIGEgbnVtYmVyIG9mIHRoZXNlIG1hdHRlcnMsIGJlY2F1c2UgaXQgaXMNCitub3QgcGVyY2VpdmVkIGFzIGEgcGxheWVyIHdpdGggYW4gZWNvbm9taWMgc3Rha2UgaW4gdGhlbSwgYnV0IGFyZSB0aGVyZQ0KK3JvbGVzIHRoYXQgTEMgY2FuIHBsYXkgdGhhdCBjYW4gaGVscCBhZHZhbmNlIHVzIHRvd2FyZCB3aGVyZSB3ZSBhcmUgaGVhZGluZz8NCisNCitEZXNjcmliaW5nIGhpbXNlbGYgYXMgYW4gdW5pbmZvcm1lZCBvYnNlcnZlciBvZiB0aGUgdGVjaG5pY2FsaXRpZXMgb2YgdGhlDQorbGFzdCB0d28gZGF5cywgR0lGRk9SRCBkZXRlY3RlZCB0aHJlZSBkaWZmZXJlbnQgZW1waGFzZXMgaW4gdGhlIFdvcmtzaG9wOiANCisxKSBwZW9wbGUgd2hvIGFyZSB2ZXJ5IGRlZXBseSBjb21taXR0ZWQgdG8gdGV4dDsgMikgcGVvcGxlIHdobyBhcmUgYWxtb3N0DQorcGFzc2lvbmF0ZSBhYm91dCBpbWFnZXM7IGFuZCAzKSBhIGZldyBwZW9wbGUgd2hvIGFyZSB2ZXJ5IGNvbW1pdHRlZCB0bw0KK3doYXQgaGFwcGVucyB0byB0aGUgbmV0d29ya3MuICBJbiBvdGhlciB3b3JkcywgdGhlIG5ldyBuZXR3b3JraW5nDQorZGltZW5zaW9uLCB0aGUgYWNjZXNzaWJpbGl0eSBvZiB0aGUgcHJvY2Vzc2FiaWxpdHksIHRoZSBwb3J0YWJpbGl0eSBvZg0KK2FsbCB0aGlzIGFjcm9zcyB0aGUgbmV0d29ya3MuICBIb3cgZG8gd2UgcHVsbCB0aG9zZSB0aHJlZSB0b2dldGhlcj8NCisNCitBZGRpbmcgYSBxdWVzdGlvbiB0aGF0IHJlZmxlY3RlZCBIT0NLRVkncyBjb21tZW50IHRoYXQgdGhpcyB3YXMgdGhlDQorZm91cnRoIHdvcmtzaG9wIHNoZSBoYWQgYXR0ZW5kZWQgaW4gdGhlIHByZXZpb3VzIHRoaXJ0eSBkYXlzLCBGTEVJU0NISEFVRVINCit3b25kZXJlZCB0byB3aGF0IGV4dGVudCB0aGlzIG1lZXRpbmcgaGFkIHJlaW52ZW50ZWQgdGhlIHdoZWVsLCBvciBpZiBpdA0KK2hhZCBjb250cmlidXRlZCBhbnl0aGluZyBpbiB0aGUgd2F5IG9mIGJyaW5naW5nIHRvZ2V0aGVyIGEgZGlmZmVyZW50IGdyb3VwDQorb2YgcGVvcGxlIGZyb20gdGhvc2Ugd2hvIG5vcm1hbGx5IGFwcGVhciBvbiB0aGUgd29ya3Nob3AgY2lyY3VpdC4NCisNCitIT0NLRVkgY29uZmVzc2VkIHRvIGJlaW5nIHN0cnVjayBhdCB0aGlzIG1lZXRpbmcgYW5kIHRoZSBvbmUgdGhlDQorRWxlY3Ryb25pYyBQaWVyY2UgQ29uc29ydGl1bSBvcmdhbml6ZWQgdGhlIHByZXZpb3VzIHdlZWsgdGhhdCB0aGlzIHdhcyBhDQorY29taW5nIHRvZ2V0aGVyIG9mIHBlb3BsZSB3b3JraW5nIG9uIHRleHRzIGFuZCBub3QgaW1hZ2VzLiAgQXR0ZW1wdGluZyB0bw0KK2JyaW5nIHRoZSB0d28gdG9nZXRoZXIgaXMgc29tZXRoaW5nIHdlIG91Z2h0IHRvIGJlIHRoaW5raW5nIGFib3V0IGZvciB0aGUNCitmdXR1cmU6ICBIb3cgb25lIGNhbiB0aGluayBhYm91dCB3b3JraW5nIHdpdGggaW1hZ2UgbWF0ZXJpYWwgdG8gYmVnaW4NCit3aXRoLCBidXQgc3RydWN0dXJpbmcgaXQgYW5kIGRpZ2l0aXppbmcgaXQgaW4gc3VjaCBhIHdheSB0aGF0IGF0IGEgbGF0ZXINCitzdGFnZSBpdCBjYW4gYmUgaW50ZXJwcmV0ZWQgaW50byB0ZXh0LCBhbmQgZmluZCBhIGNvbW1vbiB3YXkgb2YgYnVpbGRpbmcNCit0ZXh0IGFuZCBpbWFnZXMgdG9nZXRoZXIgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGpvaW50bHkgaW4gdGhlIGZ1dHVyZSwNCit3aXRoIHRoZSBuZXR3b3JrIHN1cHBvcnQgdG8gYmVnaW4gdGhlcmUgYmVjYXVzZSB0aGF0IGlzIGhvdyBwZW9wbGUgd2lsbA0KK3dhbnQgdG8gYWNjZXNzIGl0Lg0KKw0KK0luIHBsYW5uaW5nIHRoZSBsb25nLXRlcm0gZGV2ZWxvcG1lbnQgb2Ygc29tZXRoaW5nLCB3aGljaCBpcyB3aGF0IGlzDQorYmVpbmcgZG9uZSBpbiBlbGVjdHJvbmljIHRleHQsIEhPQ0tFWSBzdHJlc3NlZCB0aGUgaW1wb3J0YW5jZSBub3Qgb25seQ0KK29mIGRpc2N1c3NpbmcgdGhlIHRlY2huaWNhbCBhc3BlY3RzIG9mIGhvdyBvbmUgZG9lcyBpdCBidXQgcGFydGljdWxhcmx5DQorb2YgdGhpbmtpbmcgYWJvdXQgd2hhdCB0aGUgcGVvcGxlIHdobyB1c2UgdGhlIHN0dWZmIHdpbGwgd2FudCB0byBkby4NCitCdXQgY29udmVyc2VseSwgdGhlcmUgYXJlIG51bWVyb3VzIHRoaW5ncyB0aGF0IHBlb3BsZSBzdGFydCB0byBkbyB3aXRoDQorZWxlY3Ryb25pYyB0ZXh0IG9yIG1hdGVyaWFsIHRoYXQgbm9ib2R5IGV2ZXIgdGhvdWdodCBvZiBpbiB0aGUgYmVnaW5uaW5nLg0KKw0KK0xFU0ssIGluIHJlc3BvbnNlIHRvIHRoZSBxdWVzdGlvbiBjb25jZXJuaW5nIHRoZSByb2xlIG9mIHRoZSBMaWJyYXJ5IG9mDQorQ29uZ3Jlc3MsIHJlbWFya2VkIHRoZSBvZnRlbiBzdWdnZXN0ZWQgZGVzaWRlcmF0dW0gb2YgaGF2aW5nIGVsZWN0cm9uaWMNCitkZXBvc2l0OiAgU2luY2UgZXZlcnl0aGluZyBpcyBub3cgY29tcHV0ZXItdHlwZXNldCwgYW4gZW50aXJlIGRlY2FkZSBvZg0KK21hdGVyaWFsIHRoYXQgd2FzIG1hY2hpbmUtcmVhZGFibGUgZXhpc3RzLCBidXQgdGhlIHB1Ymxpc2hlcnMgZnJlcXVlbnRseQ0KK2RpZCBub3Qgc2F2ZSBpdDsgaGFzIExDIHRha2VuIGFueSBhY3Rpb24gdG8gaGF2ZSBpdHMgY29weXJpZ2h0IGRlcG9zaXQNCitvcGVyYXRpb24gc3RhcnQgY29sbGVjdGluZyB0aGVzZSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb25zPyAgSW4gdGhlDQorYWJzZW5jZSBvZiBQRVRFUlMsIEdJRkZPUkQgcmVwbGllZCB0aGF0IHRoZSBxdWVzdGlvbiB3YXMgYmVpbmcNCithY3RpdmVseSBjb25zaWRlcmVkIGJ1dCB0aGF0IHRoYXQgd2FzIG9ubHkgb25lIGRpbWVuc2lvbiBvZiB0aGUgcHJvYmxlbS4NCitBbm90aGVyIGRpbWVuc2lvbiBpcyB0aGUgd2hvbGUgcXVlc3Rpb24gb2YgdGhlIGludGVncml0eSBvZiB0aGUgb3JpZ2luYWwNCitlbGVjdHJvbmljIGRvY3VtZW50LiAgSXQgYmVjb21lcyBoaWdobHkgaW1wb3J0YW50IGluIHNjaWVuY2UgdG8gcHJvdmUNCithdXRob3JzaGlwLiAgSG93IHdpbGwgdGhhdCBiZSBkb25lPw0KKw0KK0VSV0FZIGV4cGxhaW5lZCB0aGF0LCB1bmRlciB0aGUgb2xkIHBvbGljeSwgdG8gbWFrZSBhIGNsYWltIGZvciBhDQorY29weXJpZ2h0IGZvciB3b3JrcyB0aGF0IHdlcmUgcHVibGlzaGVkIGluIGVsZWN0cm9uaWMgZm9ybSwgaW5jbHVkaW5nDQorc29mdHdhcmUsIG9uZSBoYWQgdG8gc3VibWl0IGEgcGFwZXIgY29weSBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgdHdlbnR5DQorcGFnZXMgb2YgY29kZS0tc29tZXRoaW5nIHRoYXQgcmVwcmVzZW50ZWQgdGhlIHdvcmsgYnV0IGRpZCBub3QgaW5jbHVkZQ0KK3RoZSBlbnRpcmUgd29yayBpdHNlbGYgYW5kIGhhZCBsaXR0bGUgdmFsdWUgdG8gYW55b25lLiAgQXMgYSB0ZW1wb3JhcnkNCittZWFzdXJlLCBMQyBoYXMgY2xhaW1lZCB0aGUgcmlnaHQgdG8gZGVtYW5kIGVsZWN0cm9uaWMgdmVyc2lvbnMgb2YNCitlbGVjdHJvbmljIHB1YmxpY2F0aW9ucy4gIFRoaXMgbWVhc3VyZSBlbnRhaWxzIGEgcHJvYWN0aXZlIHJvbGUgZm9yIHRoZQ0KK0xpYnJhcnkgdG8gc2F5IHRoYXQgaXQgd2FudHMgYSBwYXJ0aWN1bGFyIGVsZWN0cm9uaWMgdmVyc2lvbi4gIFB1Ymxpc2hlcnMNCit0aGVuIGhhdmUgcGVyaGFwcyBhIHllYXIgdG8gc3VibWl0IGl0LiAgQnV0IHRoZSByZWFsIHByb2JsZW0gZm9yIExDIGlzDQord2hhdCB0byBkbyB3aXRoIGFsbCB0aGlzIG1hdGVyaWFsIGluIGFsbCB0aGVzZSBkaWZmZXJlbnQgZm9ybWF0cy4gIFdpbGwNCit0aGUgTGlicmFyeSBtb3VudCBpdD8gIEhvdyB3aWxsIGl0IGdpdmUgcGVvcGxlIGFjY2VzcyB0byBpdD8gIEhvdyBkb2VzIExDDQora2VlcCB0cmFjayBvZiB0aGUgYXBwcm9wcmlhdGUgY29tcHV0ZXJzLCBzb2Z0d2FyZSwgYW5kIG1lZGlhPyAgVGhlIHNpdHVhdGlvbg0KK2lzIHNvIGhhcmQgdG8gY29udHJvbCwgRVJXQVkgc2FpZCwgdGhhdCBpdCBtYWtlcyBzZW5zZSBmb3IgZWFjaCBwdWJsaXNoaW5nDQoraG91c2UgdG8gbWFpbnRhaW4gaXRzIG93biBhcmNoaXZlLiAgQnV0IExDIGNhbm5vdCBlbmZvcmNlIHRoYXQgZWl0aGVyLg0KKw0KK0dJRkZPUkQgYWNrbm93bGVkZ2VkIExFU0sncyBzdWdnZXN0aW9uIHRoYXQgZXN0YWJsaXNoaW5nIGEgcHJpb3JpdHkNCitvZmZlcmVkIHRoZSBzb2x1dGlvbiwgYWxiZWl0IGEgZmFpcmx5IGNvbXBsaWNhdGVkIG9uZS4gIEJ1dCB3aG8gbWFpbnRhaW5zDQordGhhdCByZWdpc3Rlcj8sIGhlIGFza2VkLiAgR1JBQkVSIG5vdGVkIHRoYXQgTEMgZG9lcyBhdHRlbXB0IHRvIGNvbGxlY3QgYQ0KK01hY2ludG9zaCB2ZXJzaW9uIGFuZCB0aGUgSUJNLWNvbXBhdGlibGUgdmVyc2lvbiBvZiBzb2Z0d2FyZS4gIEl0IGRvZXMNCitub3QgY29sbGVjdCBvdGhlciB2ZXJzaW9ucy4gIEJ1dCB3aGlsZSB0cnVlIGZvciBzb2Z0d2FyZSwgQllSVU0gb2JzZXJ2ZWQsDQordGhpcyByZXBseSBkb2VzIG5vdCBzcGVhayB0byBtYXRlcmlhbHMsIHRoYXQgaXMsIGFsbCB0aGUgbWF0ZXJpYWxzIHRoYXQNCit3ZXJlIHB1Ymxpc2hlZCB0aGF0IHdlcmUgb24gc29tZWJvZHkncyBtaWNyb2NvbXB1dGVyIG9yIGRyaXZlciB0YXBlcw0KK2F0IGEgcHVibGlzaGluZyBvZmZpY2UgYWNyb3NzIHRoZSBjb3VudHJ5LiAgTEMgZG9lcyB3ZWxsIHRvIGFjcXVpcmUNCitzcGVjaWZpYyBtYWNoaW5lLXJlYWRhYmxlIHByb2R1Y3RzIHNlbGVjdGl2ZWx5IHRoYXQgd2VyZSBpbnRlbmRlZCB0byBiZQ0KK21hY2hpbmUtcmVhZGFibGUuICBNYXRlcmlhbHMgdGhhdCB3ZXJlIGluIG1hY2hpbmUtcmVhZGFibGUgZm9ybSBhdCBvbmUgdGltZSwNCitCWVJVTSBzYWlkLCB3b3VsZCBiZSBiZXlvbmQgTEMncyBjYXBhYmlsaXR5IGF0IHRoZSBtb21lbnQsIGluc29mYXIgYXMNCithdHRlbXB0aW5nIHRvIGFjcXVpcmUsIG9yZ2FuaXplLCBhbmQgcHJlc2VydmUgdGhlbSBhcmUgY29uY2VybmVkLS1hbmQNCitwcmVzZXJ2YXRpb24gd291bGQgYmUgdGhlIG1vc3QgaW1wb3J0YW50IGNvbnNpZGVyYXRpb24uICBJbiB0aGlzDQorY29ubmVjdGlvbiwgR0lGRk9SRCByZWl0ZXJhdGVkIHRoZSBuZWVkIHRvIHdvcmsgb3V0IHNvbWUgc2Vuc2Ugb2YNCitkaXN0cmlidXRpdmUgcmVzcG9uc2liaWxpdHkgZm9yIGEgbnVtYmVyIG9mIHRoZXNlIGlzc3Vlcywgd2hpY2gNCitpbmV2aXRhYmx5IHdpbGwgcmVxdWlyZSBzaWduaWZpY2FudCBjb29wZXJhdGlvbiBhbmQgZGlzY3Vzc2lvbi4NCitOb2JvZHkgY2FuIGRvIGl0IGFsbC4NCisNCitMRVNLIHN1Z2dlc3RlZCB0aGF0IHNvbWUgcHVibGlzaGVycyBtYXkgbG9vayB3aXRoIGZhdm9yIG9uIExDIGJlZ2lubmluZw0KK3RvIHNlcnZlIGFzIGEgZGVwb3NpdG9yeSBvZiB0YXBlcyBpbiBhbiBlbGVjdHJvbmljIG1hbnVzY3JpcHQgc3RhbmRhcmQuIA0KK1B1Ymxpc2hlcnMgbWF5IHZpZXcgdGhpcyBhcyBhIHNlcnZpY2UgdGhhdCB0aGV5IGRpZCBub3QgaGF2ZSB0byBwZXJmb3JtDQorYW5kIHRoZXkgbWlnaHQgc2VuZCBpbiB0YXBlcy4gIEhvd2V2ZXIsIFNQRVJCRVJHLU1jUVVFRU4gY291bnRlcmVkLA0KK2FsdGhvdWdoIHB1Ymxpc2hlcnMgaGF2ZSBoYWQgZXF1aXZhbGVudCBzZXJ2aWNlcyBhdmFpbGFibGUgdG8gdGhlbSBmb3IgYQ0KK2xvbmcgdGltZSwgdGhlIGVsZWN0cm9uaWMgdGV4dCBhcmNoaXZlIGhhcyBuZXZlciB0dXJuZWQgYXdheSBvciBiZWVuDQorZmxvb2RlZCB3aXRoIHRhcGVzIGFuZCBpcyBmb3JldmVyIHNlbmRpbmcgZmVlZGJhY2sgdG8gdGhlIGRlcG9zaXRvci4gDQorU29tZSBwdWJsaXNoZXJzIGRvIHNlbmQgaW4gdGFwZXMuDQorDQorQU5EUkUgdmlld2VkIHRoaXMgZGlzY3Vzc2lvbiBhcyBhbiBhbGx1c2lvbiB0byB0aGUgaXNzdWUgb2Ygc3RhbmRhcmRzLiANCitTaGUgcmVjb21tZW5kZWQgdGhhdCB0aGUgQUFQIHN0YW5kYXJkIGFuZCB0aGUgVEVJLCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuDQorc29tZXdoYXQgaGFybW9uaXplZCBpbnRlcm5hdGlvbmFsbHkgYW5kIHdoaWNoIGFsc28gc2hhcmVzIHNldmVyYWwNCitjb21wYXRpYmlsaXRpZXMgd2l0aCB0aGUgQUFQLCBiZSBoYXJtb25pemVkIHRvIGVuc3VyZSBzdWZmaWNpZW50DQorY29tcGF0aWJpbGl0eSBpbiB0aGUgc29mdHdhcmUuICBTaGUgZHJldyB0aGUgbGluZSBhdCBzYXlpbmcgTEMgb3VnaHQgdG8NCitiZSB0aGUgbG9jdXMgb3IgZm9ydW0gZm9yIHN1Y2ggaGFybW9uaXphdGlvbi4NCisNCitUYWtpbmcgdGhlIGdyb3VwIGluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGRpcmVjdGlvbiwgYnV0IG9uZSB3aGVyZSBhdA0KK2xlYXN0IGluIHRoZSBuZWFyIHRlcm0gTEMgbWlnaHQgcGxheSBhIGhlbHBmdWwgcm9sZSwgTFlOQ0ggcmVtYXJrZWQgdGhlDQorcGxhbnMgb2YgYSBudW1iZXIgb2YgcHJvamVjdHMgdG8gY2Fycnkgb3V0IHByZXNlcnZhdGlvbiBieSBjcmVhdGluZw0KK2RpZ2l0YWwgaW1hZ2VzIHRoYXQgd2lsbCBlbmQgdXAgaW4gb24tbGluZSBvciBuZWFyLWxpbmUgc3RvcmFnZSBhdCBzb21lDQoraW5zdGl0dXRpb24uICAgUHJlc3VtYWJseSwgTEMgd2lsbCBsaW5rIHRoaXMgbWF0ZXJpYWwgc29tZWhvdyB0byBpdHMNCitvbi1saW5lIGNhdGFsb2cgaW4gbW9zdCBjYXNlcy4gIFRodXMsIGl0IGlzIGluIGEgZGlnaXRhbCBmb3JtLiAgTFlOQ0ggaGFkDQordGhlIGltcHJlc3Npb24gdGhhdCBtYW55IG9mIHRoZXNlIGluc3RpdHV0aW9ucyB3b3VsZCBiZSB3aWxsaW5nIHRvIG1ha2UNCit0aG9zZSBmaWxlcyBhY2Nlc3NpYmxlIHRvIG90aGVyIHBlb3BsZSBvdXRzaWRlIHRoZSBpbnN0aXR1dGlvbiwgcHJvdmlkZWQNCit0aGF0IHRoZXJlIGlzIG5vIGNvcHlyaWdodCBwcm9ibGVtLiAgVGhpcyBkZXNpZGVyYXR1bSB3aWxsIHJlcXVpcmUNCitwcm9wYWdhdGluZyB0aGUga25vd2xlZGdlIHRoYXQgdGhvc2UgZGlnaXRpemVkIGZpbGVzIGV4aXN0LCBzbyB0aGF0IHRoZXkNCitjYW4gZW5kIHVwIGluIG90aGVyIG9uLWxpbmUgY2F0YWxvZ3MuICBBbHRob3VnaCB1bmNlcnRhaW4gYWJvdXQgdGhlDQorbWVjaGFuaXNtIGZvciBhY2hpZXZpbmcgdGhpcyByZXN1bHQsIExZTkNIIHNhaWQgdGhhdCBpdCB3YXJyYW50ZWQNCitzY3J1dGlueSBiZWNhdXNlIGl0IHNlZW1lZCB0byBiZSBjb25uZWN0ZWQgdG8gc29tZSBvZiB0aGUgYmFzaWMgaXNzdWVzIG9mDQorY2F0YWxvZ2luZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHJlY29yZHMuICBJdCB3b3VsZCBiZSAgZm9vbGlzaCwgZ2l2ZW4gdGhlDQorYW1vdW50IG9mIHdvcmsgdGhhdCBhbGwgb2YgdXMgaGF2ZSB0byBkbyBhbmQgb3VyIG1lYWdlciByZXNvdXJjZXMsIHRvDQorZGlzY292ZXIgbXVsdGlwbGUgaW5zdGl0dXRpb25zIGRpZ2l0aXppbmcgdGhlIHNhbWUgd29yay4gIFJlIG1pY3JvZm9ybXMsDQorTFlOQ0ggc2FpZCwgd2UgYXJlIGluIHByZXR0eSBnb29kIHNoYXBlLg0KKw0KK0JBVFRJTiBjYWxsZWQgdGhpcyBhIGJpZyBwcm9ibGVtIGFuZCBub3RlZCB0aGF0IHRoZSBDb3JuZWxsIHBlb3BsZSAod2hvDQoraGFkIGFscmVhZHkgZGVwYXJ0ZWQpIHdlcmUgd29ya2luZyBvbiBpdC4gIEF0IGlzc3VlIGZyb20gdGhlIGJlZ2lubmluZw0KK3dhcyB0byBsZWFybiBob3cgdG8gY2F0YWxvZyB0aGF0IGluZm9ybWF0aW9uIGludG8gUkxJTiBhbmQgdGhlbiBpbnRvDQorT0NMQywgc28gdGhhdCBpdCB3b3VsZCBiZSBhY2Nlc3NpYmxlLiAgVGhhdCBpc3N1ZSByZW1haW5zIHRvIGJlIHJlc29sdmVkLiANCitMWU5DSCByZWpvaW5lZCB0aGF0IHB1dHRpbmcgaXQgaW50byBPQ0xDIG9yIFJMSU4gd2FzIGhlbHBmdWwgaW5zb2ZhciBhcw0KK3NvbWVib2R5IHdobyBpcyB0aGlua2luZyBvZiBwZXJmb3JtaW5nIHByZXNlcnZhdGlvbiBhY3Rpdml0eSBvbiB0aGF0IHdvcmsNCitjb3VsZCBsZWFybiBhYm91dCBpdC4gIEl0IGlzIG5vdCBuZWNlc3NhcmlseSBoZWxwZnVsIGZvciBpbnN0aXR1dGlvbnMgdG8NCittYWtlIHRoYXQgYXZhaWxhYmxlLiAgQkFUVElOIG9waW5lZCB0aGF0IHRoZSBpZGVhIHdhcyB0aGF0IGl0IG5vdCBvbmx5IGJlDQorZm9yIHByZXNlcnZhdGlvbiBwdXJwb3NlcyBidXQgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiBwZW9wbGUgbG9va2luZyBmb3INCit0aGlzIG1hdGVyaWFsLiAgU2hlIGVuZG9yc2VkIExZTkNIJ3MgZGljdHVtIHRoYXQgZHVwbGljYXRpb24gb2YgdGhpcw0KK2VmZm9ydCB3YXMgdG8gYmUgYXZvaWRlZCBieSBldmVyeSBtZWFucy4NCisNCitIT0NLRVkgaW5mb3JtZWQgdGhlIFdvcmtzaG9wIGFib3V0IG9uZSBtYWpvciBjdXJyZW50IGFjdGl2aXR5IG9mIENFVEgsDQorbmFtZWx5IGEgY2F0YWxvZ3VlIG9mIG1hY2hpbmUtcmVhZGFibGUgdGV4dHMgaW4gdGhlIGh1bWFuaXRpZXMuICBIZWxkIG9uDQorUkxJTiBhdCBwcmVzZW50LCB0aGUgY2F0YWxvZ3VlIGhhcyBiZWVuIGNvbmNlbnRyYXRlZCBvbiBBU0NJSSBhcyBvcHBvc2VkDQordG8gZGlnaXRpemVkIGltYWdlcyBvZiB0ZXh0LiAgU2hlIGlzIGV4cGxvcmluZyB3YXlzIHRvIGltcHJvdmUgdGhlDQorY2F0YWxvZ3VlIGFuZCBtYWtlIGl0IG1vcmUgd2lkZWx5IGF2YWlsYWJsZSwgYW5kIHdlbGNvbWVkIHN1Z2dlc3Rpb25zDQorYWJvdXQgdGhlc2UgY29uY2VybnMuICBDRVRIIG93bnMgdGhlIHJlY29yZHMsIHdoaWNoIGFyZSBub3QganVzdA0KK3Jlc3RyaWN0ZWQgdG8gUkxJTiwgYW5kIGNhbiBkaXN0cmlidXRlIHRoZW0gaG93ZXZlciBpdCB3aXNoZXMuDQorDQorVGFraW5nIHVwIExFU0sncyBlYXJsaWVyIHF1ZXN0aW9uLCBCQVRUSU4gaW5xdWlyZWQgd2hldGhlciBMQywgc2luY2UgaXQNCitpcyBhY2NlcHRpbmcgZWxlY3Ryb25pYyBmaWxlcyBhbmQgZGVzaWduaW5nIGEgbWVjaGFuaXNtIGZvciBkZWFsaW5nIHdpdGgNCit0aGF0IHJhdGhlciB0aGFuIHB1dHRpbmcgYm9va3Mgb24gc2hlbHZlcywgd291bGQgYmVjb21lIHJlc3BvbnNpYmxlIGZvcg0KK3RoZSBOYXRpb25hbCBDb3B5cmlnaHQgRGVwb3NpdG9yeSBvZiBFbGVjdHJvbmljIE1hdGVyaWFscy4gIE9mIGNvdXJzZQ0KK3RoYXQgY291bGQgbm90IGJlIGFjY29tcGxpc2hlZCBvdmVybmlnaHQsIGJ1dCBpdCB3b3VsZCBiZSBzb21ldGhpbmcgTEMNCitjb3VsZCBwbGFuIGZvci4gIEdJRkZPUkQgYWNrbm93bGVkZ2VkIHRoYXQgbXVjaCB0aG91Z2h0IHdhcyBiZWluZyBkZXZvdGVkDQordG8gdGhhdCBzZXQgb2YgcHJvYmxlbXMgYW5kIHJldHVybmVkIHRoZSBkaXNjdXNzaW9uIHRvIHRoZSBpc3N1ZSByYWlzZWQNCitieSBMWU5DSC0td2hldGhlciBvciBub3QgcHV0dGluZyB0aGUga2luZCBvZiByZWNvcmRzIHRoYXQgYm90aCBCQVRUSU4gYW5kDQorSE9DS0VZIGhhdmUgYmVlbiB0YWxraW5nIGFib3V0IGluIFJMSU4gaXMgbm90IGEgc2F0aXNmYWN0b3J5IHNvbHV0aW9uLiANCitJdCBzZWVtZWQgdG8gaGltIHRoYXQgUkxJTiBhbnN3ZXJlZCBMWU5DSCdzIG9yaWdpbmFsIHBvaW50IGNvbmNlcm5pbmcNCitzb21lIGtpbmQgb2YgZGlyZWN0b3J5IGZvciB0aGVzZSBraW5kcyBvZiBtYXRlcmlhbHMuICBJbiBhIHNpdHVhdGlvbg0KK3doZXJlIHNvbWVib2R5IGlzIGF0dGVtcHRpbmcgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIHNjYW4gdGhpcyBvcg0KK2ZpbG0gdGhhdCBvciB0byBsZWFybiB3aGV0aGVyIG9yIG5vdCBzb21lb25lIGhhcyBhbHJlYWR5IGRvbmUgc28sIExZTkNIDQorc3VnZ2VzdGVkLCBSTElOIGlzIGhlbHBmdWwsIGJ1dCBpdCBpcyBub3QgaGVscGZ1bCBpbiB0aGUgY2FzZSBvZiBhIGxvY2FsLA0KK29uLWxpbmUgY2F0YWxvZ3VlLiAgRnVydGhlciwgb25lIHdvdWxkIGxpa2UgdG8gaGF2ZSBoZXIgb3IgaGlzIHN5c3RlbSBiZQ0KK2F3YXJlIHRoYXQgdGhhdCBleGlzdHMgaW4gZGlnaXRhbCBmb3JtLCBzbyB0aGF0IG9uZSBjYW4gcHJlc2VudCBpdCB0byBhDQorcGF0cm9uLCBldmVuIHRob3VnaCBvbmUgZGlkIG5vdCBkaWdpdGl6ZSBpdCwgaWYgaXQgaXMgb3V0IG9mIGNvcHlyaWdodC4gDQorVGhlIG9ubHkgd2F5IHRvIG1ha2UgdGhvc2UgbGlua2FnZXMgd291bGQgYmUgdG8gcGVyZm9ybSBhIHRyZW1lbmRvdXMNCithbW91bnQgb2YgcmVhbC10aW1lIGxvb2stdXAsIHdoaWNoIHdvdWxkIGJlIGF3a3dhcmQgYXQgYmVzdCwgb3INCitwZXJpb2RpY2FsbHkgdG8geWFuayB0aGUgd2hvbGUgZmlsZSBmcm9tIFJMSU4gYW5kIG1hdGNoIGl0IGFnYWluc3Qgb25lJ3MNCitvd24gc3R1ZmYsIHdoaWNoIGlzIGEgbnVpc2FuY2UuDQorDQorQnV0IHdoZXJlLCBFUldBWSBpbnF1aXJlZCwgZG9lcyBvbmUgc3RvcCBpbmNsdWRpbmcgdGhpbmdzIHRoYXQgYXJlDQorYXZhaWxhYmxlIHdpdGggSW50ZXJuZXQsIGZvciBpbnN0YW5jZSwgaW4gb25lJ3MgbG9jYWwgY2F0YWxvZ3VlPw0KK0l0IGFsbW9zdCBzZWVtcyB0aGF0IHRoYXQgaXMgTEMncyBtZWFucyB0byBhY3F1aXJlIGFjY2VzcyB0byB0aGVtLg0KK1RoYXQgcmVwcmVzZW50cyBMQydzIG5ldyBmb3JtIG9mIGxpYnJhcnkgbG9hbi4gIFBlcmhhcHMgTEMncyBuZXcgb24tbGluZQ0KK2NhdGFsb2d1ZSBpcyBhbiBhbWFsZ2FtYXRpb24gb2YgYWxsIHRoZXNlIGNhdGFsb2d1ZXMgb24gbGluZS4gIExZTkNIDQorY29uY2VkZWQgdGhhdCBwZXJoYXBzIHRoYXQgd2FzIHRydWUgaW4gdGhlIHZlcnkgbG9uZyB0ZXJtLCBidXQgd2FzIG5vdA0KK2FwcGxpY2FibGUgdG8gc2Nhbm5pbmcgaW4gdGhlIHNob3J0IHRlcm0uICBJbiBoaXMgdmlldywgdGhlIHRvdGFscyBjaXRlZA0KK2J5IFlhbGUsIDEwLDAwMCBib29rcyBvdmVyIHBlcmhhcHMgYSBmb3VyLXllYXIgcGVyaW9kLCBhbmQgMSwwMDAtMSw1MDANCitib29rcyBmcm9tIENvcm5lbGwsIHdlcmUgbm90IGJpZyBudW1iZXJzLCB3aGlsZSBzZWFyY2hpbmcgYWxsIG92ZXINCitjcmVhdGlvbiBmb3IgcmVsYXRpdmVseSByYXJlIG9jY3VycmVuY2VzIHdpbGwgcHJvdmUgdG8gYmUgbGVzcyBlZmZpY2llbnQuIA0KK0FzIEdJRkZPUkQgd29uZGVyZWQgaWYgdGhpcyB3b3VsZCBub3QgYmUgYSBzZXBhcmFibGUgZmlsZSBvbiBSTElOIGFuZA0KK2NvdWxkIGJlIHJlcXVlc3RlZCBmcm9tIHRoZW0sIEJBVFRJTiBpbnRlcmplY3RlZCB0aGF0IGl0IHdhcyBlYXNpbHkNCithY2Nlc3NpYmxlIHRvIGFuIGluc3RpdHV0aW9uLiAgU0VWRVJUU09OIHBvaW50ZWQgb3V0IHRoYXQgdGhhdCBmaWxlLCBjdW0NCitlbmhhbmNlbWVudHMsIHdhcyBhdmFpbGFibGUgd2l0aCByZWZlcmVuY2UgaW5mb3JtYXRpb24gb24gQ0QtUk9NLCB3aGljaA0KK21ha2VzIGl0IGEgbGl0dGxlIG1vcmUgYXZhaWxhYmxlLg0KKw0KK0luIEhPQ0tFWSdzIHZpZXcsIHRoZSByZWFsIHF1ZXN0aW9uIGZhY2luZyB0aGUgV29ya3Nob3AgaXMgd2hhdCB0byBwdXQgaW4NCit0aGlzIGNhdGFsb2d1ZSwgYmVjYXVzZSB0aGF0IHJhaXNlcyB0aGUgcXVlc3Rpb24gb2Ygd2hhdCBjb25zdGl0dXRlcyBhDQorcHVibGljYXRpb24gaW4gdGhlIGVsZWN0cm9uaWMgd29ybGQuICAoV0VJQkVMIGludGVyamVjdGVkIHRoYXQgRXJpYyBKb3VsZQ0KK2luIE9DTEMncyBPZmZpY2Ugb2YgUmVzZWFyY2ggaXMgYWxzbyB3cmVzdGxpbmcgd2l0aCB0aGlzIHBhcnRpY3VsYXINCitwcm9ibGVtLCB3aGlsZSBHSUZGT1JEIHRob3VnaHQgaXQgc291bmRlZCBmYWlybHkgZ2VuZXJpYy4pICBIT0NLRVkNCitjb250ZW5kZWQgdGhhdCBhIG1ham9yaXR5IG9mIHRleHRzIGluIHRoZSBodW1hbml0aWVzIGFyZSBpbiB0aGUgaGFuZHMNCitvZiBlaXRoZXIgYSBzbWFsbCBudW1iZXIgb2YgbGFyZ2UgcmVzZWFyY2ggaW5zdGl0dXRpb25zIG9yIGluZGl2aWR1YWxzDQorYW5kIGFyZSBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmb3IgYW55b25lIGVsc2UgdG8gYWNjZXNzIGF0IGFsbC4NCitTaGUgd29uZGVyZWQgaWYgdGhlc2UgdGV4dHMgb3VnaHQgdG8gYmUgY2F0YWxvZ3VlZC4NCisNCitBZnRlciBhcmd1bWVudCBwcm9jZWVkZWQgYmFjayBhbmQgZm9ydGggZm9yIHNldmVyYWwgbWludXRlcyBvdmVyIHdoeQ0KK2NhdGFsb2d1aW5nIG1pZ2h0IGJlIGEgbmVjZXNzYXJ5IHNlcnZpY2UsIExFQlJPTiBzdWdnZXN0ZWQgdGhhdCB0aGlzDQoraXNzdWUgaW52b2x2ZWQgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGEgcHVibGlzaGVyLiAgVGhlIGZhY3QgdGhhdCBzb21lb25lDQoraGFzIGNyZWF0ZWQgc29tZXRoaW5nIGVsZWN0cm9uaWNhbGx5IGFuZCBrZWVwcyBpdCB1bmRlciBoaXMgb3IgaGVyDQorY29udHJvbCBkb2VzIG5vdCBjb25zdGl0dXRlIHB1YmxpY2F0aW9uLiAgUHVibGljYXRpb24gaW1wbGllcw0KK2Rpc3NlbWluYXRpb24uICBXaGlsZSBpdCB3b3VsZCBiZSBpbXBvcnRhbnQgZm9yIGEgc2Nob2xhciB0byBsZXQgb3RoZXINCitwZW9wbGUga25vdyB0aGF0IHRoaXMgY3JlYXRpb24gZXhpc3RzLCBpbiBtYW55IHJlc3BlY3RzIHRoaXMgaXMgbm8NCitkaWZmZXJlbnQgZnJvbSBhbiB1bnB1Ymxpc2hlZCBtYW51c2NyaXB0LiAgVGhhdCBpcyB3aGF0IGlzIGJlaW5nIGFjY2Vzc2VkDQoraW4gdGhlcmUsIGV4Y2VwdCB0aGF0IG5vdyBvbmUgaXMgbm90IGxvb2tpbmcgYXQgaXQgaW4gdGhlIGhhcmQtY29weSBidXQNCitpbiB0aGUgZWxlY3Ryb25pYyBlbnZpcm9ubWVudC4NCisNCitMRUJST04gZXhwcmVzc2VkIHB1enpsZW1lbnQgYXQgdGhlIHZhcmlldHkgb2Ygd2F5cyBlbGVjdHJvbmljIHB1Ymxpc2hpbmcNCitoYXMgYmVlbiB2aWV3ZWQuICBNdWNoIG9mIHdoYXQgaGFzIGJlZW4gZGlzY3Vzc2VkIHRocm91Z2hvdXQgdGhlc2UgdHdvDQorZGF5cyBoYXMgY29uY2VybmVkIENELVJPTSBwdWJsaXNoaW5nLCB3aGVyZWFzIGluIHRoZSBvbi1saW5lIGVudmlyb25tZW50DQordGhhdCBzaGUgY29uZnJvbnRzLCB0aGUgY29uc3RyYWludHMgYW5kIGNoYWxsZW5nZXMgYXJlIHZlcnkgZGlmZmVyZW50LiANCitTb29uZXIgb3IgbGF0ZXIgTEMgd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgY29uY2VwdCBvZiBvbi1saW5lDQorcHVibGlzaGluZy4gIFRha2luZyB1cCB0aGUgY29tbWVudCBFUldBWSBtYWRlIGVhcmxpZXIgYWJvdXQgc3RvcmluZw0KK2NvcGllcywgTEVCUk9OIGdhdmUgaGVyIG93biBqb3VybmFsIGFzIGFuIGV4YW1wbGUuICBIb3cgd291bGQgc2hlIGRlcG9zaXQNCitPSkNDVCBmb3IgY29weXJpZ2h0Pywgc2hlIGFza2VkLCBiZWNhdXNlIHRoZSBqb3VybmFsIHdpbGwgZXhpc3QgaW4gdGhlDQorbWFpbmZyYW1lIGF0IE9DTEMgYW5kIHBlb3BsZSB3aWxsIGJlIGFibGUgdG8gYWNjZXNzIGl0LiAgSGVyZSB0aGUNCitzaXR1YXRpb24gaXMgZGlmZmVyZW50LCBvd25lcnNoaXAgdmVyc3VzIGFjY2VzcywgYW5kIGlzIHNvbWV0aGluZyB0aGF0DQorYXJpc2VzIHdpdGggcHVibGljYXRpb24gaW4gdGhlIG9uLWxpbmUgZW52aXJvbm1lbnQsIGZhc3RlciB0aGFuIGlzDQorc29tZXRpbWVzIHJlYWxpemVkLiAgTGFja2luZyBjbGVhciBhbnN3ZXJzIHRvIGFsbCBvZiB0aGVzZSBxdWVzdGlvbnMNCitoZXJzZWxmLCBMRUJST04gZGlkIG5vdCBhbnRpY2lwYXRlIHRoYXQgTEMgd291bGQgYmUgYWJsZSB0byB0YWtlIGEgcm9sZQ0KK2luIGhlbHBpbmcgdG8gZGVmaW5lIHNvbWUgb2YgdGhlbSBmb3IgcXVpdGUgYSB3aGlsZS4NCisNCitHUkVFTkZJRUxEIG9ic2VydmVkIHRoYXQgTEMncyBOZXR3b3JrIERldmVsb3BtZW50IE9mZmljZSBpcyBhdHRlbXB0aW5nLA0KK2Ftb25nIG90aGVyIHRoaW5ncywgdG8gZXhwbG9yZSB0aGUgbGltaXRzIG9mIE1BUkMgYXMgYSBzdGFuZGFyZCBpbiB0ZXJtcw0KK29mIGhhbmRsaW5nIGVsZWN0cm9uaWMgaW5mb3JtYXRpb24uICBHUkVFTkZJRUxEIGFsc28gbm90ZWQgdGhhdCBSZWJlY2NhDQorR1VFTlRIRVIgZnJvbSB0aGF0IG9mZmljZSBnYXZlIGEgcGFwZXIgdG8gdGhlIEFtZXJpY2FuIFNvY2lldHkgZm9yDQorSW5mb3JtYXRpb24gU2NpZW5jZSAoQVNJUykgc3VtbWFyaXppbmcgc2V2ZXJhbCBvZiB0aGUgZGlzY3Vzc2lvbiBwYXBlcnMNCit0aGF0IHdlcmUgY29taW5nIG91dCBvZiB0aGUgTmV0d29yayBEZXZlbG9wbWVudCBPZmZpY2UuICBHUkVFTkZJRUxEIHNhaWQNCitoZSB1bmRlcnN0b29kIHRoYXQgdGhhdCBvZmZpY2UgaGFkIGEgbGlzdC1zZXJ2ZXIgc29saWNpdGluZyBqdXN0IHRoZSBraW5kDQorb2YgZmVlZGJhY2sgcmVjZWl2ZWQgdG9kYXkgY29uY2VybmluZyB0aGUgZGlmZmljdWx0aWVzIG9mIGlkZW50aWZ5aW5nIGFuZA0KK2NhdGFsb2d1aW5nIGVsZWN0cm9uaWMgaW5mb3JtYXRpb24uICBHUkVFTkZJRUxEIGhvcGVkIHRoYXQgZXZlcnlib2R5DQord291bGQgYmUgYXdhcmUgb2YgdGhhdCBhbmQgc29tZWhvdyBjb250cmlidXRlIHRvIHRoYXQgY29udmVyc2F0aW9uLg0KKw0KK05vdGluZyB0d28gb2YgTEMncyByb2xlcywgZmlyc3QsIHRvIGFjdCBhcyBhIHJlcG9zaXRvcnkgb2YgcmVjb3JkIGZvcg0KK21hdGVyaWFsIHRoYXQgaXMgY29weXJpZ2h0ZWQgaW4gdGhpcyBjb3VudHJ5LCBhbmQgc2Vjb25kLCB0byBtYWtlDQorbWF0ZXJpYWxzIGl0IGhvbGRzIGF2YWlsYWJsZSBpbiBzb21lIGxpbWl0ZWQgZm9ybSB0byBhIGNsaWVudGVsZSB0aGF0DQorZ29lcyBiZXlvbmQgQ29uZ3Jlc3MsIEJFU1NFUiBzdWdnZXN0ZWQgdGhhdCBpdCB3YXMgaW5jdW1iZW50IG9uIExDIHRvDQorZXh0ZW5kIHRob3NlIHJlc3BvbnNpYmlsaXRpZXMgdG8gYWxsIHRoZSB0aGluZ3MgYmVpbmcgcHVibGlzaGVkIGluDQorZWxlY3Ryb25pYyBmb3JtLiAgVGhpcyB3b3VsZCBtZWFuIGV2ZW50dWFsbHkgYWNjZXB0aW5nIGVsZWN0cm9uaWMNCitmb3JtYXRzLiAgTEMgY291bGQgcmVxdWlyZSB0aGF0IGF0IHNvbWUgcG9pbnQgdGhleSBiZSBpbiBhIGNlcnRhaW4NCitsaW1pdGVkIHNldCBvZiBmb3JtYXRzLCBhbmQgdGhlbiBkZXZlbG9wIG1lY2hhbmlzbXMgZm9yIGFsbG93aW5nIHBlb3BsZQ0KK3RvIGFjY2VzcyB0aG9zZSBpbiB0aGUgc2FtZSB3YXkgdGhhdCBvdGhlciB0aGluZ3MgYXJlIGFjY2Vzc2VkLiAgVGhpcw0KK2RvZXMgbm90IGltcGx5IHRoYXQgdGhleSBhcmUgb24gdGhlIG5ldHdvcmsgYW5kIGF2YWlsYWJsZSB0byBldmVyeW9uZS4gDQorTEMgZG9lcyB0aGF0IHdpdGggbW9zdCBvZiBpdHMgYmlibGlvZ3JhcGhpYyByZWNvcmRzLCBCRVNTRVIgc2FpZCwgd2hpY2gNCitlbmQgdXAgbWlncmF0aW5nIHRvIHRoZSB1dGlsaXR5IChlLmcuLCBPQ0xDKSBvciBzb21ld2hlcmUgZWxzZS4gIEJ1dCBqdXN0DQorYXMgbW9zdCBvZiBMQydzIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gc29tZSBmb3JtIHRocm91Z2ggaW50ZXJsaWJyYXJ5DQorbG9hbiBvciBzb21lIG90aGVyIG1lY2hhbmlzbSwgc28gaW4gdGhlIHNhbWUgd2F5IGVsZWN0cm9uaWMgZm9ybWF0cyBvdWdodA0KK3RvIGJlIGF2YWlsYWJsZSB0byBvdGhlcnMgaW4gc29tZSBmb3JtYXQsIHRob3VnaCB3aXRoIHNvbWUgY29weXJpZ2h0DQorY29uc2lkZXJhdGlvbnMuICBCRVNTRVIgd2FzIG5vdCBzdWdnZXN0aW5nIHRoYXQgdGhlc2UgbWVjaGFuaXNtcyBiZQ0KK2VzdGFibGlzaGVkIHRvbW9ycm93LCBvbmx5IHRoYXQgdGhleSBzZWVtZWQgdG8gZmFsbCB3aXRoaW4gTEMncyBwdXJ2aWV3LA0KK2FuZCB0aGF0IHRoZXJlIHNob3VsZCBiZSBsb25nLXJhbmdlIHBsYW5zIHRvIGVzdGFibGlzaCB0aGVtLg0KKw0KK0Fja25vd2xlZGdpbmcgdGhhdCB0aG9zZSBmcm9tIExDIGluIHRoZSByb29tIGFncmVlZCB3aXRoIEJFU1NFUg0KK2NvbmNlcm5pbmcgdGhlIG5lZWQgdG8gY29uZnJvbnQgZGlmZmljdWx0IHF1ZXN0aW9ucywgR0lGRk9SRCB1bmRlcnNjb3JlZA0KK3RoZSBtYWduaXR1ZGUgb2YgdGhlIHByb2JsZW0gb2Ygd2hhdCB0byBrZWVwIGFuZCB3aGF0IHRvIHNlbGVjdC4gIEdJRkZPUkQNCitub3RlZCB0aGF0IExDIGN1cnJlbnRseSByZWNlaXZlcyBzb21lIDMxLDAwMCBpdGVtcyBwZXIgZGF5LCBub3QgY291bnRpbmcNCitlbGVjdHJvbmljIG1hdGVyaWFscywgYW5kIGFyZ3VlZCBmb3IgbXVjaCBtb3JlIGRpc3RyaWJ1dGVkIHJlc3BvbnNpYmlsaXR5DQoraW4gb3JkZXIgdG8gbWFpbnRhaW4gYW5kIHN0b3JlIGVsZWN0cm9uaWMgaW5mb3JtYXRpb24uDQorDQorQkVTU0VSIHJlc3BvbmRlZCB0aGF0IHRoZSBhc3NlbWJsZWQgZ3JvdXAgY291bGQgYmUgdmlld2VkIGFzIGEgc3RhcnRpbmcNCitwb2ludCwgd2hvc2UgaW5pdGlhbCBvcGVyYXRpbmcgcHJlbWlzZSBjb3VsZCBiZSBoZWxwaW5nIHRvIG1vdmUgaW4gdGhpcw0KK2RpcmVjdGlvbiBhbmQgZGVmaW5pbmcgaG93IExDIGNvdWxkIGRvIHNvLCBmb3IgZXhhbXBsZSwgaW4gYXJlYXMgb2YNCitzdGFuZGFyZGl6YXRpb24gb3IgZGlzdHJpYnV0aW9uIG9mIHJlc3BvbnNpYmlsaXR5Lg0KKw0KK0ZMRUlTQ0hIQVVFUiBhZGRlZCB0aGF0IEFNIHdhcyBmdWxseSBlbmdhZ2VkLCB3cmVzdGxpbmcgd2l0aCBzb21lIG9mIHRoZQ0KK3F1ZXN0aW9ucyB0aGF0IHBlcnRhaW4gdG8gdGhlIGNvbnZlcnNpb24gb2Ygb2xkZXIgaGlzdG9yaWNhbCBtYXRlcmlhbHMsDQord2hpY2ggd291bGQgYmUgb25lIHRoaW5nIHRoYXQgdGhlIExpYnJhcnkgb2YgQ29uZ3Jlc3MgbWlnaHQgZG8uICBTZXZlcmFsDQorcG9pbnRzIG1lbnRpb25lZCBieSBCRVNTRVIgYW5kIHNldmVyYWwgb3RoZXJzIG9uIHRoaXMgcXVlc3Rpb24gaGF2ZSBhDQorbXVjaCBncmVhdGVyIGltcGFjdCBvbiB0aG9zZSB3aG8gYXJlIGNvbmNlcm5lZCB3aXRoIGNhdGFsb2d1aW5nIGFuZCB0aGUNCituZXR3b3JraW5nIG9mIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24sIGFzIHdlbGwgYXMgcHJlc2VydmF0aW9uIGl0c2VsZi4NCisNCitTcGVha2luZyBkaXJlY3RseSB0byBBTSwgd2hpY2ggaGUgY29uc2lkZXJlZCB3YXMgYSBsYXJnZWx5IHVuY29weXJpZ2h0ZWQNCitkYXRhYmFzZSwgTFlOQ0ggdXJnZWQgZGV2ZWxvcG1lbnQgb2YgYSBuZXR3b3JrIHZlcnNpb24gb2YgQU0sIG9yDQorY29uc2lkZXJhdGlvbiBvZiBtYWtpbmcgdGhlIGRhdGEgaW4gaXQgYXZhaWxhYmxlIHRvIHBlb3BsZSBpbnRlcmVzdGVkIGluDQorZG9pbmcgbmV0d29yayBtdWx0aW1lZGlhLiAgT24gYWNjb3VudCBvZiB0aGUgY3VycmVudCBncmVhdCBzaG9ydGFnZSBvZg0KK2RpZ2l0YWwgZGF0YSB0aGF0IGlzIGJvdGggYXBwZWFsaW5nIGFuZCB1bmVuY3VtYmVyZWQgYnkgY29tcGxleCByaWdodHMNCitwcm9ibGVtcywgdGhpcyBjb3Vyc2Ugb2YgYWN0aW9uIGNvdWxkIGhhdmUgYSBzaWduaWZpY2FudCBlZmZlY3Qgb24gbWFraW5nDQorbmV0d29yayBtdWx0aW1lZGlhIGEgcmVhbGl0eS4NCisNCitJbiB0aGlzIGNvbm5lY3Rpb24sIEZMRUlTQ0hIQVVFUiByZXBvcnRlZCBvbiBhIGZyYWdtZW50YXJ5IHByb3RvdHlwZSBpbg0KK0xDJ3MgT2ZmaWNlIG9mIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMgdGhhdCBhdHRlbXB0cyB0byBhc3NvY2lhdGUNCitkaWdpdGFsIGltYWdlcyBvZiBwaG90b2dyYXBocyB3aXRoIGNhdGFsb2d1aW5nIGluZm9ybWF0aW9uIGluIHdheXMgdGhhdA0KK3dvcmsgd2l0aGluIGEgbG9jYWwgYXJlYSBuZXR3b3JrLS1hIHN0ZXAsIHNvIHRvIHNheSwgdG93YXJkIEFNJ3MNCitjb25zdHJ1Y3Rpb24gb2Ygc29tZSBzb3J0IG9mIGFwcGFyYXR1cyBmb3IgYWNjZXNzLiAgRnVydGhlciwgQU0gaGFzDQorYXR0ZW1wdGVkIHRvIHVzZSBzdGFuZGFyZCBkYXRhIGZvcm1zIGluIG9yZGVyIHRvIGhlbHAgbWFrZSB0aGF0DQorZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgYWNjZXNzIHRvb2xzIGFuZCB0aGUgdW5kZXJseWluZyBkYXRhLCBhbmQgdGh1cw0KK2JlbGlldmVzIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG5ldHdvcmthYmxlLg0KKw0KK0EgZGVsaWNhdGUgYW5kIGFnb25pemluZyBwb2xpY3kgcXVlc3Rpb24gZm9yIExDLCBob3dldmVyLCB3aGljaCBjb21lcw0KK2JhY2sgdG8gcmVzb3VyY2VzIGFuZCB1bmZvcnR1bmF0ZWx5IGhhcyBhbiBpbXBhY3Qgb24gdGhpcywgaXMgdG8gZmluZA0KK3NvbWUgYXBwcm9wcmlhdGUsIGhvbm9yYWJsZSwgYW5kIGxlZ2FsIGNvc3QtcmVjb3ZlcnkgcG9zc2liaWxpdGllcy4gIEENCitjZXJ0YWluIHNraXR0aXNobmVzcyBjb25jZXJuaW5nIGNvc3QtcmVjb3ZlcnkgaGFzIG1hZGUgcGVvcGxlIHVuc3VyZQ0KK2V4YWN0bHkgd2hhdCB0byBkby4gIEFNIHdvdWxkIGJlIGhpZ2hseSByZWNlcHRpdmUgdG8gZGlzY3Vzc2luZyBmdXJ0aGVyDQorTFlOQ0gncyBvZmZlciB0byB0ZXN0IG9yIGRlbW9uc3RyYXRlIGl0cyBkYXRhYmFzZSBpbiBhIG5ldHdvcmsNCitlbnZpcm9ubWVudCwgRkxFSVNDSEhBVUVSIHNhaWQuDQorDQorUmV0dXJuaW5nIHRoZSBkaXNjdXNzaW9uIHRvIHdoYXQgc2hlIHZpZXdlZCBhcyB0aGUgdml0YWwgaXNzdWUgb2YNCitlbGVjdHJvbmljIGRlcG9zaXQsIEJBVFRJTiByZWNvbW1lbmRlZCB0aGF0IExDIGluaXRpYXRlIGEgY2F0YWx5dGljDQorcHJvY2VzcyBpbiB0ZXJtcyBvZiBkaXN0cmlidXRlZCByZXNwb25zaWJpbGl0eSwgdGhhdCBpcywgYnJpbmcgdG9nZXRoZXINCit0aGUgZGlzdHJpYnV0ZWQgb3JnYW5pemF0aW9ucyBhbmQgc2V0IHVwIGEgc3R1ZHkgZ3JvdXAgdG8gbG9vayBhdCBhbGwNCit0aGVzZSBpc3N1ZXMgYW5kIHNlZSB3aGVyZSB3ZSBhcyBhIG5hdGlvbiBzaG91bGQgbW92ZS4gIFRoZSBicm9hZGVyDQoraXNzdWVzIG9mIGhvdyB3ZSBkZWFsIHdpdGggdGhlIG1hbmFnZW1lbnQgb2YgZWxlY3Ryb25pYyBpbmZvcm1hdGlvbiB3aWxsDQorbm90IGRpc2FwcGVhciwgYnV0IG9ubHkgZ3JvdyB3b3JzZS4NCisNCitMRVNLIHRvb2sgdXAgdGhpcyB0aGVtZSBhbmQgc3VnZ2VzdGVkIHRoYXQgTEMgYXR0ZW1wdCB0byBwZXJzdWFkZSBvbmUNCittYWpvciBsaWJyYXJ5IGluIGVhY2ggc3RhdGUgdG8gZGVhbCB3aXRoIGl0cyBzdGF0ZSBlcXVpdmFsZW50IHB1Ymxpc2hlciwNCit3aGljaCBtaWdodCBwcm9kdWNlIGEgY29vcGVyYXRpdmUgcHJvamVjdCB0aGF0IHdvdWxkIGJlIGVxdWl0YWJseQ0KK2Rpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgY291bnRyeSwgYW5kIG9uZSBpbiB3aGljaCBMQyB3b3VsZCBiZSBkZWFsaW5nIHdpdGgNCithIG1pbmltYWwgbnVtYmVyIG9mIHB1Ymxpc2hlcnMgYW5kIG1pbmltYWwgY29weXJpZ2h0IHByb2JsZW1zLg0KKw0KK0dSQUJFUiByZW1hcmtlZCB0aGUgcmVjZW50IGRldmVsb3BtZW50IGluIHRoZSBzY2llbnRpZmljIGNvbW11bml0eSBvZiBhDQord2lsbGluZ25lc3MgdG8gdXNlIFNHTUwgYW5kIGVpdGhlciBkZXBvc2l0IG9yIGludGVyY2hhbmdlIG9uIGEgZmFpcmx5DQorc3RhbmRhcmRpemVkIGZvcm1hdC4gIEhlIHdvbmRlcmVkIGlmIGEgc2ltaWxhciBtb3ZlbWVudCB3YXMgdGFraW5nIHBsYWNlDQoraW4gdGhlIGh1bWFuaXRpZXMuICBBbHRob3VnaCB0aGUgTmF0aW9uYWwgTGlicmFyeSBvZiBNZWRpY2luZSBmb3VuZCBvbmx5DQorYSBmZXcgcHVibGlzaGVycyB0byBjb29wZXJhdGUgaW4gYSBsaWtlIHZlbnR1cmUgdHdvIG9yIHRocmVlIHllYXJzIGFnbywgYQ0KK25ldyBlZmZvcnQgbWlnaHQgZ2VuZXJhdGUgYSBtdWNoIGxhcmdlciBudW1iZXIgd2lsbGluZyB0byBjb29wZXJhdGUuDQorDQorS0lNQkFMTCByZWNvdW50ZWQgaGlzIHVuaXQncyAoTWFjaGluZS1SZWFkYWJsZSBDb2xsZWN0aW9ucyBSZWFkaW5nIFJvb20pDQordHJvdWJsZXMgd2l0aCB0aGUgY29tbWVyY2lhbCBwdWJsaXNoZXJzIG9mIGVsZWN0cm9uaWMgbWVkaWEgaW4gYWNxdWlyaW5nDQorbWF0ZXJpYWxzIGZvciBMQydzIGNvbGxlY3Rpb25zLCBpbiBwYXJ0aWN1bGFyIHRoZSBwdWJsaXNoZXJzJyBmZWFyIHRoYXQNCit0aGV5IHdvdWxkIG5vdCBiZSBhYmxlIHRvIGNvdmVyIHRoZWlyIGNvc3RzIGFuZCB3b3VsZCBsb3NlIGNvbnRyb2wgb2YNCit0aGVpciBwcm9kdWN0cywgdGhhdCBMQyB3b3VsZCBnaXZlIHRoZW0gYXdheSBvciBzZWxsIHRoZW0gYW5kIG1ha2UNCitwcm9maXRzIGZyb20gdGhlbS4gIEhlIGRvdWJ0ZWQgdGhhdCB0aGUgcHVibGlzaGluZyBpbmR1c3RyeSB3YXMgcHJlcGFyZWQNCit0byBtb3ZlIGludG8gdGhpcyBhcmVhIGF0IHRoZSBtb21lbnQsIGdpdmVuIGl0cyByZXNpc3RhbmNlIHRvIGFsbG93aW5nIExDDQordG8gdXNlIGl0cyBtYWNoaW5lLXJlYWRhYmxlIG1hdGVyaWFscyBhcyB0aGUgTGlicmFyeSB3b3VsZCBsaWtlLg0KKw0KK1RoZSBjb3B5cmlnaHQgbGF3IG5vdyBhZGRyZXNzZXMgY29tcGFjdCBkaXNrIGFzIGEgbWVkaXVtLCBhbmQgTEMgY2FuDQorcmVxdWVzdCBvbmUgY29weSBvZiB0aGF0LCBvciB0d28gY29waWVzIGlmIGl0IGlzIHRoZSBvbmx5IHZlcnNpb24sIGFuZA0KK2NhbiByZXF1ZXN0IGNvcGllcyBvZiBzb2Z0d2FyZSwgYnV0IHRoYXQgZmFpbHMgdG8gYWRkcmVzcyBtYWdhemluZXMgb3INCitib29rcyBvciBhbnl0aGluZyBsaWtlIHRoYXQgd2hpY2ggaXMgaW4gbWFjaGluZS1yZWFkYWJsZSBmb3JtLg0KKw0KK0dJRkZPUkQgYWNrbm93bGVkZ2VkIHRoZSB0aG9ybnkgbmF0dXJlIG9mIHRoaXMgaXNzdWUsIHdoaWNoIGhlIGlsbHVzdHJhdGVkDQord2l0aCB0aGUgZXhhbXBsZSBvZiB0aGUgY3VtYmVyc29tZSBwcm9jZXNzIGludm9sdmVkIGluIHB1dHRpbmcgYSBjb3B5IG9mIGENCitzY2llbnRpZmljIGRhdGFiYXNlIG9uIGEgTEFOIGluIExDJ3Mgc2NpZW5jZSByZWFkaW5nIHJvb20uICBIZSBhbHNvDQorYWNrbm93bGVkZ2VkIHRoYXQgTEMgbmVlZHMgaGVscCBhbmQgY291bGQgZW5saXN0IHRoZSBlbmVyZ2llcyBhbmQgdGFsZW50cw0KK29mIFdvcmtzaG9wIHBhcnRpY2lwYW50cyBpbiB0aGlua2luZyB0aHJvdWdoIGEgbnVtYmVyIG9mIHRoZXNlIHByb2JsZW1zLg0KKw0KK0dJRkZPUkQgcmV0dXJuZWQgdGhlIGRpc2N1c3Npb24gdG8gZ2V0dGluZyB0aGUgaW1hZ2UgYW5kIHRleHQgcGVvcGxlIHRvDQordGhpbmsgdGhyb3VnaCB0b2dldGhlciB3aGVyZSB0aGV5IHdhbnQgdG8gZ28gaW4gdGhlIGxvbmcgdGVybS4gIE1ZTE9OQVMNCitjb25jZWRlZCB0aGF0IGhlciBleHBlcmllbmNlIGF0IHRoZSBQaWVyY2UgU3ltcG9zaXVtIHRoZSBwcmV2aW91cyB3ZWVrIGF0DQorR2VvcmdldG93biBVbml2ZXJzaXR5IGFuZCB0aGlzIHdlZWsgYXQgTEMgaGFkIGZvcmNlZCBoZXIgdG8gcmVldmFsdWF0ZQ0KK2hlciBwZXJzcGVjdGl2ZSBvbiB0aGUgdXNlZnVsbmVzcyBvZiB0ZXh0IGFzIGltYWdlcy4gIE1ZTE9OQVMgZnJhbWVkIHRoZQ0KK2lzc3VlcyBpbiBhIHNlcmllcyBvZiBxdWVzdGlvbnM6ICBIb3cgZG8gd2UgYWNxdWlyZSBtYWNoaW5lLXJlYWRhYmxlDQordGV4dD8gIERvIHdlIHRha2UgcGljdHVyZXMgb2YgaXQgYW5kIHBlcmZvcm0gT0NSIG9uIGl0IGxhdGVyPyAgSXMgaXQNCitpbXBvcnRhbnQgdG8gb2J0YWluIHZlcnkgaGlnaC1xdWFsaXR5IGltYWdlcyBhbmQgdGV4dCwgZXRjLj8gDQorRkxFSVNDSEhBVUVSIGFncmVlZCB3aXRoIE1ZTE9OQVMncyBmcmFtaW5nIG9mIHN0cmF0ZWdpYyBxdWVzdGlvbnMsIGFkZGluZw0KK3RoYXQgYSBsYXJnZSBpbnN0aXR1dGlvbiBzdWNoIGFzIExDIHByb2JhYmx5IGhhcyB0byBkbyBhbGwgb2YgdGhvc2UNCit0aGluZ3MgYXQgZGlmZmVyZW50IHRpbWVzLiAgVGh1cywgdGhlIHRyaWNrIGlzIHRvIGV4ZXJjaXNlIGp1ZGdtZW50LiAgVGhlDQorV29ya3Nob3AgaGFkIGFkZGVkIHRvIGhpcyBhbmQgQU0ncyBjb25zaWRlcmF0aW9ucyBpbiBtYWtpbmcgdGhvc2UNCitqdWRnbWVudHMuICBDb25jZXJuaW5nIGZ1dHVyZSBtZWV0aW5ncyBvciBkaXNjdXNzaW9ucywgTVlMT05BUyBzdWdnZXN0ZWQNCit0aGF0IHNjcmVlbmluZyBwcmlvcml0aWVzIHdvdWxkIGJlIGhlbHBmdWwuDQorDQorV0VJQkVMIG9waW5lZCB0aGF0IHRoZSBkaXZlcnNpdHkgcmVmbGVjdGVkIGluIHRoaXMgZ3JvdXAgd2FzIGEgc2lnbiBib3RoDQorb2YgdGhlIGhlYWx0aCBhbmQgb2YgdGhlIGltbWF0dXJpdHkgb2YgdGhlIGZpZWxkLCBhbmQgbW9yZSB0aW1lIHdvdWxkDQoraGF2ZSB0byBwYXNzIGJlZm9yZSB3ZSBjb252aW5jZSBvbmUgYW5vdGhlciBjb25jZXJuaW5nIHN0YW5kYXJkcy4NCisNCitBbiBleGNoYW5nZSBiZXR3ZWVuIE1ZTE9OQVMgYW5kIEJBVFRJTiBjbGFyaWZpZWQgdGhlIHBvaW50IHRoYXQgdGhlDQorZHJpdmluZyBmb3JjZSBiZWhpbmQgYm90aCB0aGUgUGVyc2V1cyBhbmQgdGhlIENvcm5lbGwgWGVyb3ggcHJvamVjdHMgd2FzDQordGhlIHByZXNlcnZhdGlvbiBvZiBrbm93bGVkZ2UgZm9yIHRoZSBmdXR1cmUsIG5vdCBzaW1wbHkgZm9yIHBhcnRpY3VsYXINCityZXNlYXJjaCB1c2UuICBJbiB0aGUgY2FzZSBvZiBQZXJzZXVzLCBNWUxPTkFTIHNhaWQsIHRoZSBhc3N1bXB0aW9uIHdhcw0KK3RoYXQgdGhlIHRleHRzIHdvdWxkIG5vdCBiZSBlbnRlcmVkIGFnYWluIGludG8gZWxlY3Ryb25pY2FsbHkgcmVhZGFibGUNCitmb3JtLiAgU1BFUkJFUkctTWNRVUVFTiBhZGRlZCB0aGF0IGEgc2Nhbm5lZCBpbWFnZSB3b3VsZCBub3Qgc2VydmUgYXMgYW4NCithcmNoaXZhbCBjb3B5IGZvciBwdXJwb3NlcyBvZiBwcmVzZXJ2YXRpb24gaW4gdGhlIGNhc2Ugb2YsIHNheSwgdGhlIEJpbGwNCitvZiBSaWdodHMsIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBzY2FubmVkIGltYWdlcyBhcmUgZWZmZWN0aXZlbHkgdGhlDQorYXJjaGl2YWwgY29waWVzIGZvciB0aGUgQ29ybmVsbCBtYXRoZW1hdGljcyBib29rcy4NCisNCisNCisgICAgICAgICAgICAgICAqKiogICAqKiogICAqKiogICAqKioqKiogICAqKiogICAqKiogICAqKioNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGVuZGl4IEk6ICBQUk9HUkFNDQorDQorDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXT1JLU0hPUA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT04NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUxFQ1RST05JQw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhUUw0KKw0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS0xMCBKdW5lIDE5OTINCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IG9mIENvbmdyZXNzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc2hpbmd0b24sIEQuQy4NCisNCisNCisNCisgICAgU3VwcG9ydGVkIGJ5IGEgR3JhbnQgZnJvbSB0aGUgRGF2aWQgYW5kIEx1Y2lsZSBQYWNrYXJkIEZvdW5kYXRpb24NCisNCisNCitUdWVzZGF5LCA5IEp1bmUgMTk5Mg0KKw0KK05BVElPTkFMIERFTU9OU1RSQVRJT04gTEFCLCBBVFJJVU0sIExJQlJBUlkgTUFESVNPTg0KKw0KKzg6MzAgQU0gICBDb2ZmZWUgYW5kIERhbmlzaCwgcmVnaXN0cmF0aW9uDQorDQorOTowMCBBTSAgIFdlbGNvbWUNCisNCisgICAgICAgICAgUHJvc3NlciBHaWZmb3JkLCBEaXJlY3RvciBmb3IgU2Nob2xhcmx5IFByb2dyYW1zLCBhbmQgQ2FybA0KKyAgICAgICAgICAgICBGbGVpc2NoaGF1ZXIsIENvb3JkaW5hdG9yLCBBbWVyaWNhbiBNZW1vcnksIExpYnJhcnkgb2YNCisgICAgICAgICAgICAgQ29uZ3Jlc3MNCisNCis5Omw1IEFNICAgU2Vzc2lvbiBJLiAgQ29udGVudCBpbiBhIE5ldyBGb3JtOiAgV2hvIFdpbGwgVXNlIEl0IGFuZCBXaGF0DQorICAgICAgICAgIFdpbGwgVGhleSBEbz8NCisNCisgICAgICAgICAgQnJvYWQgZGVzY3JpcHRpb24gb2YgdGhlIHJhbmdlIG9mIGVsZWN0cm9uaWMgaW5mb3JtYXRpb24uIA0KKyAgICAgICAgICBDaGFyYWN0ZXJpemF0aW9uIG9mIHdobyB1c2VzIGl0IGFuZCBob3cgaXQgaXMgb3IgbWF5IGJlIHVzZWQuIA0KKyAgICAgICAgICBJbiBhZGRpdGlvbiB0byBhIGxvb2sgYXQgc2Nob2xhcmx5IHVzZXMsIHRoaXMgc2Vzc2lvbiB3aWxsDQorICAgICAgICAgIGluY2x1ZGUgYSBwcmVzZW50YXRpb24gb24gdXNlIGJ5IHN0dWRlbnRzIChLLTEyIGFuZCBjb2xsZWdlKQ0KKyAgICAgICAgICBhbmQgdGhlIGdlbmVyYWwgcHVibGljLg0KKw0KKyAgICAgICAgICBNb2RlcmF0b3I6ICBKYW1lcyBEYWx5DQorICAgICAgICAgIEF2cmEgTWljaGVsc29uLCBBcmNoaXZhbCBSZXNlYXJjaCBhbmQgRXZhbHVhdGlvbiBTdGFmZiwNCisgICAgICAgICAgICAgTmF0aW9uYWwgQXJjaGl2ZXMgYW5kIFJlY29yZHMgQWRtaW5pc3RyYXRpb24gKE92ZXJ2aWV3KQ0KKyAgICAgICAgICBTdXNhbiBILiBWZWNjaWEsIFRlYW0gTGVhZGVyLCBBbWVyaWNhbiBNZW1vcnksIFVzZXIgRXZhbHVhdGlvbiwNCisgICAgICAgICAgICAgYW5kDQorICAgICAgICAgIEpvYW5uZSBGcmVlbWFuLCBBc3NvY2lhdGUgQ29vcmRpbmF0b3IsIEFtZXJpY2FuIE1lbW9yeSwgTGlicmFyeQ0KKyAgICAgICAgICAgICBvZiBDb25ncmVzcyAoQmV5b25kIHRoZSBzY2hvbGFyKQ0KKw0KKzEwOjMwLQ0KKzExOjAwIEFNICBCcmVhaw0KKw0KKzExOjAwIEFNICBTZXNzaW9uIElJLiAgU2hvdyBhbmQgVGVsbC4NCisNCisgICAgICAgICAgRWFjaCBwcmVzZW50YXRpb24gdG8gY29uc2lzdCBvZiBhIGZpZnRlZW4tbWludXRlDQorICAgICAgICAgIHN0YXRlbWVudC9zaG93OyBncm91cCBkaXNjdXNzaW9uIHdpbGwgZm9sbG93IGx1bmNoLg0KKw0KKyAgICAgICAgICBNb2RlcmF0b3I6ICBKYWNxdWVsaW5lIEhlc3MsIERpcmVjdG9yLCBOYXRpb25hbCBEZW1vbnN0cmF0aW9uDQorICAgICAgICAgICAgIExhYg0KKw0KKyAgICAgICAgICAgIDEuICBBIGNsYXNzaWNzIHByb2plY3QsIHN0cmVzc2luZyB0ZXh0cyBhbmQgdGV4dCByZXRyaWV2YWwNCisgICAgICAgICAgICAgICAgbW9yZSB0aGFuIG11bHRpbWVkaWE6ICBQZXJzZXVzIFByb2plY3QsIEhhcnZhcmQNCisgICAgICAgICAgICAgICAgVW5pdmVyc2l0eQ0KKyAgICAgICAgICAgICAgICBFbGxpIE15bG9uYXMsIE1hbmFnaW5nIEVkaXRvcg0KKw0KKyAgICAgICAgICAgIDIuICBPdGhlciBodW1hbml0aWVzIHByb2plY3RzIGVtcGxveWluZyB0aGUgZW1lcmdpbmcgbm9ybXMgb2YNCisgICAgICAgICAgICAgICAgdGhlIFRleHQgRW5jb2RpbmcgSW5pdGlhdGl2ZSAoVEVJKTogIENoYWR3eWNrLUhlYWxleSdzDQorICAgICAgICAgICAgICAgIFRoZSBFbmdsaXNoIFBvZXRyeSBGdWxsIFRleHQgRGF0YWJhc2UgYW5kL29yIFBhdHJvbG9naWENCisgICAgICAgICAgICAgICAgTGF0aW5hIERhdGFiYXNlDQorICAgICAgICAgICAgICAgIEVyaWMgTS4gQ2FsYWx1Y2EsIFZpY2UgUHJlc2lkZW50LCBDaGFkd3ljay1IZWFsZXksIEluYy4NCisNCisgICAgICAgICAgICAzLiAgQW1lcmljYW4gTWVtb3J5DQorICAgICAgICAgICAgICAgIENhcmwgRmxlaXNjaGhhdWVyLCBDb29yZGluYXRvciwgYW5kDQorICAgICAgICAgICAgICAgIFJpY2t5IEVyd2F5LCBBc3NvY2lhdGUgQ29vcmRpbmF0b3IsIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisNCisgICAgICAgICAgICA0LiAgRm91bmRpbmcgRmF0aGVycyBleGFtcGxlIGZyb20gUGFja2FyZCBIdW1hbml0aWVzDQorICAgICAgICAgICAgICAgIEluc3RpdHV0ZTogIFRoZSBQYXBlcnMgb2YgR2VvcmdlIFdhc2hpbmd0b24sIFVuaXZlcnNpdHkNCisgICAgICAgICAgICAgICAgb2YgVmlyZ2luaWENCisgICAgICAgICAgICAgICAgRG9yb3RoeSBUd29oaWcsIE1hbmFnaW5nIEVkaXRvciwgYW5kL29yDQorICAgICAgICAgICAgICAgIERhdmlkIFdvb2RsZXkgUGFja2FyZA0KKw0KKyAgICAgICAgICAgIDUuICBBbiBlbGVjdHJvbmljIG1lZGljYWwgam91cm5hbCBvZmZlcmluZyBncmFwaGljcyBhbmQNCisgICAgICAgICAgICAgICAgZnVsbC10ZXh0IHNlYXJjaGFiaWxpdHk6ICBUaGUgT25saW5lIEpvdXJuYWwgb2YgQ3VycmVudA0KKyAgICAgICAgICAgICAgICBDbGluaWNhbCBUcmlhbHMsIEFtZXJpY2FuIEFzc29jaWF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQNCisgICAgICAgICAgICAgICAgb2YgU2NpZW5jZQ0KKyAgICAgICAgICAgICAgICBNYXJpYSBMLiBMZWJyb24sIE1hbmFnaW5nIEVkaXRvcg0KKw0KKyAgICAgICAgICAgIDYuICBBIHByb2plY3QgdGhhdCBvZmZlcnMgZmFjc2ltaWxlIGltYWdlcyBvZiBwYWdlcyBidXQgb21pdHMNCisgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSB0ZXh0OiAgQ29ybmVsbCBtYXRoIGJvb2tzDQorICAgICAgICAgICAgICAgIEx5bm5lIEsuIFBlcnNvbml1cywgQXNzaXN0YW50IERpcmVjdG9yLCBDb3JuZWxsDQorICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIFRlY2hub2xvZ2llcyBmb3IgU2Nob2xhcmx5IEluZm9ybWF0aW9uDQorICAgICAgICAgICAgICAgICAgIFNvdXJjZXMsIENvcm5lbGwgVW5pdmVyc2l0eQ0KKw0KKzEyOjMwIFBNICBMdW5jaCAgKERpbmluZyBSb29tIEEsIExpYnJhcnkgTWFkaXNvbiA2MjAuICBFeGhpYml0cw0KKyAgICAgICAgICBhdmFpbGFibGUuKQ0KKw0KKzE6MzAgUE0gICBTZXNzaW9uIElJLiAgU2hvdyBhbmQgVGVsbCAoQ29udCdkLikuDQorDQorMzowMC0NCiszOjMwIFBNICAgQnJlYWsNCisNCiszOjMwLQ0KKzU6MzAgUE0gICBTZXNzaW9uIElJSS4gIERpc3RyaWJ1dGlvbiwgTmV0d29ya3MsIGFuZCBOZXR3b3JraW5nOiAgT3B0aW9ucw0KKyAgICAgICAgICBmb3IgRGlzc2VtaW5hdGlvbi4NCisNCisgICAgICAgICAgUHVibGlzaGVkIGRpc2tzOiAgVW5pdmVyc2l0eSBwcmVzc2VzIGFuZCBwdWJsaWMtc2VjdG9yDQorICAgICAgICAgICAgIHB1Ymxpc2hlcnMsIHByaXZhdGUtc2VjdG9yIHB1Ymxpc2hlcnMNCisgICAgICAgICAgQ29tcHV0ZXIgbmV0d29ya3MNCisNCisgICAgICAgICAgTW9kZXJhdG9yOiAgUm9iZXJ0IEcuIFppY2gsIFNwZWNpYWwgQXNzaXN0YW50IHRvIHRoZSBBc3NvY2lhdGUNCisgICAgICAgICAgICAgTGlicmFyaWFuIGZvciBTcGVjaWFsIFByb2plY3RzLCBMaWJyYXJ5IG9mIENvbmdyZXNzDQorICAgICAgICAgIENsaWZmb3JkIEEuIEx5bmNoLCBEaXJlY3RvciwgTGlicmFyeSBBdXRvbWF0aW9uLCBVbml2ZXJzaXR5IG9mDQorICAgICAgICAgICAgIENhbGlmb3JuaWENCisgICAgICAgICAgSG93YXJkIEJlc3NlciwgU2Nob29sIG9mIExpYnJhcnkgYW5kIEluZm9ybWF0aW9uIFNjaWVuY2UsDQorICAgICAgICAgICAgIFVuaXZlcnNpdHkgb2YgUGl0dHNidXJnaA0KKyAgICAgICAgICBSb25hbGQgTC4gTGFyc2VuLCBBc3NvY2lhdGUgRGlyZWN0b3Igb2YgTGlicmFyaWVzIGZvcg0KKyAgICAgICAgICAgICBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBVbml2ZXJzaXR5IG9mIE1hcnlsYW5kIGF0IENvbGxlZ2UNCisgICAgICAgICAgICAgUGFyaw0KKyAgICAgICAgICBFZHdpbiBCLiBCcm93bnJpZ2csIEV4ZWN1dGl2ZSBEaXJlY3RvciwgTWVtZXggUmVzZWFyY2gNCisgICAgICAgICAgICAgSW5zdGl0dXRlDQorDQorNjozMCBQTSAgIFJlY2VwdGlvbiAgKE1vbnRwZWxpZXIgUm9vbSwgTGlicmFyeSBNYWRpc29uIDYxOS4pDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqDQorDQorV2VkbmVzZGF5LCAxMCBKdW5lIDE5OTINCisNCitESU5JTkcgUk9PTSBBLCBMSUJSQVJZIE1BRElTT04gNjIwDQorDQorODozMCBBTSAgIENvZmZlZSBhbmQgRGFuaXNoDQorDQorOTowMCBBTSAgIFNlc3Npb24gSVYuICBJbWFnZSBDYXB0dXJlLCBUZXh0IENhcHR1cmUsIE92ZXJ2aWV3IG9mIFRleHQgYW5kDQorICAgICAgICAgIEltYWdlIFN0b3JhZ2UgRm9ybWF0cy4NCisNCisgICAgICAgICAgTW9kZXJhdG9yOiAgV2lsbGlhbSBMLiBIb290b24sIFZpY2UgUHJlc2lkZW50IG9mIE9wZXJhdGlvbnMsDQorICAgICAgICAgICAgIEktTkVUDQorDQorICAgICAgICAgIEEpIFByaW5jaXBhbCBNZXRob2RzIGZvciBJbWFnZSBDYXB0dXJlIG9mIFRleHQ6DQorICAgICAgICAgICAgIERpcmVjdCBzY2FubmluZw0KKyAgICAgICAgICAgICBVc2Ugb2YgbWljcm9mb3JtDQorDQorICAgICAgICAgIEFubmUgUi4gS2VubmV5LCBBc3Npc3RhbnQgRGlyZWN0b3IsIERlcGFydG1lbnQgb2YgUHJlc2VydmF0aW9uDQorICAgICAgICAgICAgIGFuZCBDb25zZXJ2YXRpb24sIENvcm5lbGwgVW5pdmVyc2l0eQ0KKyAgICAgICAgICBQYW1lbGEgUS5KLiBBbmRyZSwgQXNzb2NpYXRlIERpcmVjdG9yLCBBdXRvbWF0aW9uLCBhbmQNCisgICAgICAgICAgSnVkaXRoIEEuIFppZGFyLCBDb29yZGluYXRvciwgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIFRleHQNCisgICAgICAgICAgICAgRGlnaXRpemluZyBQcm9ncmFtIChOQVREUCksIE5hdGlvbmFsIEFncmljdWx0dXJhbCBMaWJyYXJ5DQorICAgICAgICAgICAgIChOQUwpDQorICAgICAgICAgIERvbmFsZCBKLiBXYXRlcnMsIEhlYWQsIFN5c3RlbXMgT2ZmaWNlLCBZYWxlIFVuaXZlcnNpdHkgTGlicmFyeQ0KKw0KKyAgICAgICAgICBCKSBTcGVjaWFsIFByb2JsZW1zOg0KKyAgICAgICAgICAgICBCb3VuZCB2b2x1bWVzDQorICAgICAgICAgICAgIENvbnNlcnZhdGlvbg0KKyAgICAgICAgICAgICBSZXByb2R1Y2luZyBwcmludGVkIGhhbGZ0b25lcw0KKw0KKyAgICAgICAgICBDYXJsIEZsZWlzY2hoYXVlciwgQ29vcmRpbmF0b3IsIEFtZXJpY2FuIE1lbW9yeSwgTGlicmFyeSBvZg0KKyAgICAgICAgICAgICBDb25ncmVzcw0KKyAgICAgICAgICBHZW9yZ2UgVGhvbWEsIENoaWVmLCBDb21tdW5pY2F0aW9ucyBFbmdpbmVlcmluZyBCcmFuY2gsDQorICAgICAgICAgICAgIE5hdGlvbmFsIExpYnJhcnkgb2YgTWVkaWNpbmUgKE5MTSkNCisNCisxMDozMC0NCisxMTowMCBBTSAgQnJlYWsNCisNCisxMTowMCBBTSAgU2Vzc2lvbiBJVi4gIEltYWdlIENhcHR1cmUsIFRleHQgQ2FwdHVyZSwgT3ZlcnZpZXcgb2YgVGV4dCBhbmQNCisgICAgICAgICAgSW1hZ2UgU3RvcmFnZSBGb3JtYXRzIChDb250J2QuKS4NCisNCisgICAgICAgICAgQykgSW1hZ2UgU3RhbmRhcmRzIGFuZCBJbXBsaWNhdGlvbnMgZm9yIFByZXNlcnZhdGlvbg0KKw0KKyAgICAgICAgICBKZWFuIEJhcm9uYXMsIFNlbmlvciBNYW5hZ2VyLCBEZXBhcnRtZW50IG9mIFN0YW5kYXJkcyBhbmQNCisgICAgICAgICAgICAgVGVjaG5vbG9neSwgQXNzb2NpYXRpb24gZm9yIEluZm9ybWF0aW9uIGFuZCBJbWFnZSBNYW5hZ2VtZW50DQorICAgICAgICAgICAgIChBSUlNKQ0KKyAgICAgICAgICBQYXRyaWNpYSBCYXR0aW4sIFByZXNpZGVudCwgVGhlIENvbW1pc3Npb24gb24gUHJlc2VydmF0aW9uIGFuZA0KKyAgICAgICAgICAgICBBY2Nlc3MgKENQQSkNCisNCisgICAgICAgICAgRCkgVGV4dCBDb252ZXJzaW9uOg0KKyAgICAgICAgICAgICBPQ1IgdnMuIHJla2V5aW5nDQorICAgICAgICAgICAgIFN0YW5kYXJkcyBvZiBhY2N1cmFjeSBhbmQgdXNlIG9mIGltcGVyZmVjdCB0ZXh0cw0KKyAgICAgICAgICAgICBTZXJ2aWNlIGJ1cmVhdXMNCisNCisgICAgICAgICAgU3R1YXJ0IFdlaWJlbCwgU2VuaW9yIFJlc2VhcmNoIFNwZWNpYWxpc3QsIE9ubGluZSBDb21wdXRlcg0KKyAgICAgICAgICAgICBMaWJyYXJ5IENlbnRlciwgSW5jLiAoT0NMQykNCisgICAgICAgICAgTWljaGFlbCBMZXNrLCBFeGVjdXRpdmUgRGlyZWN0b3IsIENvbXB1dGVyIFNjaWVuY2UgUmVzZWFyY2gsDQorICAgICAgICAgICAgIEJlbGxjb3JlDQorICAgICAgICAgIFJpY2t5IEVyd2F5LCBBc3NvY2lhdGUgQ29vcmRpbmF0b3IsIEFtZXJpY2FuIE1lbW9yeSwgTGlicmFyeSBvZg0KKyAgICAgICAgICAgICBDb25ncmVzcw0KKyAgICAgICAgICBQYW1lbGEgUS5KLiBBbmRyZSwgQXNzb2NpYXRlIERpcmVjdG9yLCBBdXRvbWF0aW9uLCBhbmQNCisgICAgICAgICAgSnVkaXRoIEEuIFppZGFyLCBDb29yZGluYXRvciwgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIFRleHQNCisgICAgICAgICAgICAgRGlnaXRpemluZyBQcm9ncmFtIChOQVREUCksIE5hdGlvbmFsIEFncmljdWx0dXJhbCBMaWJyYXJ5DQorICAgICAgICAgICAgIChOQUwpDQorDQorMTI6MzAtDQorMTozMCBQTSAgIEx1bmNoDQorDQorMTozMCBQTSAgIFNlc3Npb24gVi4gIEFwcHJvYWNoZXMgdG8gUHJlcGFyaW5nIEVsZWN0cm9uaWMgVGV4dHMuDQorDQorICAgICAgICAgIERpc2N1c3Npb24gb2YgYXBwcm9hY2hlcyB0byBzdHJ1Y3R1cmluZyB0ZXh0IGZvciB0aGUgY29tcHV0ZXI7DQorICAgICAgICAgIHByb3MgYW5kIGNvbnMgb2YgdGV4dCBjb2RpbmcsIGRlc2NyaXB0aW9uIG9mIG1ldGhvZHMgaW4NCisgICAgICAgICAgcHJhY3RpY2UsIGFuZCBjb21wYXJpc29uIG9mIHRleHQtY29kaW5nIG1ldGhvZHMuDQorDQorICAgICAgICAgIE1vZGVyYXRvcjogIFN1c2FuIEhvY2tleSwgRGlyZWN0b3IsIENlbnRlciBmb3IgRWxlY3Ryb25pYyBUZXh0cw0KKyAgICAgICAgICAgICBpbiB0aGUgSHVtYW5pdGllcyAoQ0VUSCksIFJ1dGdlcnMgYW5kIFByaW5jZXRvbiBVbml2ZXJzaXRpZXMNCisgICAgICAgICAgRGF2aWQgV29vZGxleSBQYWNrYXJkDQorICAgICAgICAgIEMuTS4gU3BlcmJlcmctTWNRdWVlbiwgRWRpdG9yLCBUZXh0IEVuY29kaW5nIEluaXRpYXRpdmUgKFRFSSksDQorICAgICAgICAgICAgIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMtQ2hpY2Fnbw0KKyAgICAgICAgICBFcmljIE0uIENhbGFsdWNhLCBWaWNlIFByZXNpZGVudCwgQ2hhZHd5Y2stSGVhbGV5LCBJbmMuDQorDQorMzozMC0NCis0OjAwIFBNICAgQnJlYWsNCisNCis0OjAwIFBNICAgU2Vzc2lvbiBWSS4gIENvcHlyaWdodCBJc3N1ZXMuDQorDQorICAgICAgICAgIE1hcnliZXRoIFBldGVycywgUG9saWN5IFBsYW5uaW5nIEFkdmlzZXIgdG8gdGhlIFJlZ2lzdGVyIG9mDQorICAgICAgICAgICAgIENvcHlyaWdodHMsIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisNCis1OjAwIFBNICAgU2Vzc2lvbiBWSUkuIENvbmNsdXNpb24uDQorDQorICAgICAgICAgIEdlbmVyYWwgZGlzY3Vzc2lvbi4NCisgICAgICAgICAgV2hhdCB0b3BpY3Mgd2VyZSBvbWl0dGVkIG9yIGdpdmVuIHNob3J0IHNocmlmdCB0aGF0IGFueW9uZQ0KKyAgICAgICAgICAgICB3b3VsZCBsaWtlIHRvIHRhbGsgYWJvdXQgbm93Pw0KKyAgICAgICAgICBJcyB0aGVyZSBhICJncm91cCIgaGVyZT8gIFdoYXQgc2hvdWxkIHRoZSBncm91cCBkbyBuZXh0LCBpZg0KKyAgICAgICAgICAgICBhbnl0aGluZz8gIFdoYXQgc2hvdWxkIHRoZSBMaWJyYXJ5IG9mIENvbmdyZXNzIGRvIG5leHQsIGlmDQorICAgICAgICAgICAgIGFueXRoaW5nPw0KKyAgICAgICAgICBNb2RlcmF0b3I6ICBQcm9zc2VyIEdpZmZvcmQsIERpcmVjdG9yIGZvciBTY2hvbGFybHkgUHJvZ3JhbXMsDQorICAgICAgICAgICAgIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisNCis2OjAwIFBNICAgQWRqb3Vybg0KKw0KKw0KKyAgICAgICAgICAgICAgICoqKiAgICoqKiAgICoqKiAgICoqKioqKiAgICoqKiAgICoqKiAgICoqKg0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICBBcHBlbmRpeCBJSTogIEFCU1RSQUNUUw0KKw0KKw0KK1NFU1NJT04gSQ0KKw0KK0F2cmEgTUlDSEVMU09OICAgICAgICAgICBGb3JlY2FzdGluZyB0aGUgVXNlIG9mIEVsZWN0cm9uaWMgVGV4dHMgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgU29jaWFsIFNjaWVuY2VzIGFuZCBIdW1hbml0aWVzIFNjaG9sYXJzDQorDQorVGhpcyBwcmVzZW50YXRpb24gZXhwbG9yZXMgdGhlIHdheXMgaW4gd2hpY2ggZWxlY3Ryb25pYyB0ZXh0cyBhcmUgbGlrZWx5DQordG8gYmUgdXNlZCBieSB0aGUgbm9uLXNjaWVudGlmaWMgc2Nob2xhcmx5IGNvbW11bml0eS4gIE1hbnkgb2YgdGhlDQorcmVtYXJrcyBhcmUgZHJhd24gZnJvbSBhIHJlcG9ydCB0aGUgc3BlYWtlciBjb2F1dGhvcmVkIHdpdGggSmVmZg0KK1JvdGhlbmJlcmcsIGEgY29tcHV0ZXIgc2NpZW50aXN0IGF0IFRoZSBSQU5EIENvcnBvcmF0aW9uLg0KKw0KK1RoZSBzcGVha2VyIGFzc2Vzc2VzIDEpIGN1cnJlbnQgc2Nob2xhcmx5IHVzZSBvZiBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5DQorYW5kIDIpIHRoZSBrZXkgdHJlbmRzIGluIGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgbW9zdCByZWxldmFudCB0byB0aGUNCityZXNlYXJjaCBwcm9jZXNzLCBpbiBvcmRlciB0byBwcmVkaWN0IGhvdyBzb2NpYWwgc2NpZW5jZXMgYW5kIGh1bWFuaXRpZXMNCitzY2hvbGFycyBhcmUgYXB0IHRvIHVzZSBlbGVjdHJvbmljIHRleHRzLiAgSW4gaW50cm9kdWNpbmcgdGhlIHRvcGljLA0KK2N1cnJlbnQgdXNlIG9mIGVsZWN0cm9uaWMgdGV4dHMgaXMgZXhwbG9yZWQgYnJvYWRseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YNCitzY2hvbGFybHkgY29tbXVuaWNhdGlvbi4gIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHNjaG9sYXJseQ0KK2NvbW11bmljYXRpb24sIHRoZSB3b3JrIG9mIGh1bWFuaXRpZXMgYW5kIHNvY2lhbCBzY2llbmNlcyBzY2hvbGFycw0KK2ludm9sdmVzIGZpdmUgcHJvY2Vzc2VzOiAgMSkgaWRlbnRpZmljYXRpb24gb2Ygc291cmNlcywgMikgY29tbXVuaWNhdGlvbg0KK3dpdGggY29sbGVhZ3VlcywgMykgaW50ZXJwcmV0YXRpb24gYW5kIGFuYWx5c2lzIG9mIGRhdGEsIDQpIGRpc3NlbWluYXRpb24NCitvZiByZXNlYXJjaCBmaW5kaW5ncywgYW5kIDUpIGN1cnJpY3VsdW0gZGV2ZWxvcG1lbnQgYW5kIGluc3RydWN0aW9uLiAgVGhlDQorZXh0ZW50IHRvIHdoaWNoIGNvbXB1dGF0aW9uIGN1cnJlbnRseSBwZXJtZWF0ZXMgYXNwZWN0cyBvZiBzY2hvbGFybHkNCitjb21tdW5pY2F0aW9uIHJlcHJlc2VudHMgYSB2aWFibGUgaW5kaWNhdG9yIG9mIHRoZSBwcm9zcGVjdHMgZm9yDQorZWxlY3Ryb25pYyB0ZXh0cy4NCisNCitUaGUgZGlzY3Vzc2lvbiBvZiBjdXJyZW50IHByYWN0aWNlIGlzIGJhbGFuY2VkIGJ5IGFuIGFuYWx5c2lzIG9mIGtleQ0KK3RyZW5kcyBpbiB0aGUgc2Nob2xhcmx5IHVzZSBvZiBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5LiAgVGhlc2UgaW5jbHVkZSB0aGUNCit0cmVuZHMgdG93YXJkIGVuZC11c2VyIGNvbXB1dGluZyBhbmQgY29ubmVjdGl2aXR5LCB3aGljaCBwcm92aWRlIGENCitmcmFtZXdvcmsgZm9yIGZvcmVjYXN0aW5nIHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyB0ZXh0cyB0aHJvdWdoIHRoaXMNCittaWxsZW5uaXVtLiAgVGhlIHByZXNlbnRhdGlvbiBjb25jbHVkZXMgd2l0aCBhIHN1bW1hcnkgb2YgdGhlIHdheXMgaW4NCit3aGljaCB0aGUgbm9uc2NpZW50aWZpYyBzY2hvbGFybHkgY29tbXVuaXR5IGNhbiBiZSBleHBlY3RlZCB0byB1c2UNCitlbGVjdHJvbmljIHRleHRzLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHVzZSBmb3IgaW5mb3JtYXRpb24NCitwcm92aWRlcnMuDQorDQorU3VzYW4gVkVDQ0lBIGFuZCBKb2FubmUgRlJFRU1BTiAgICBFbGVjdHJvbmljIEFyY2hpdmVzIGZvciB0aGUgUHVibGljOiANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBvZiBBbWVyaWNhbiBNZW1vcnkgaW4gUHVibGljIGFuZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Nob29sIExpYnJhcmllcw0KKw0KK1RoaXMgam9pbnQgZGlzY3Vzc2lvbiBmb2N1c2VzIG9uIG5vbnNjaG9sYXJseSBhcHBsaWNhdGlvbnMgb2YgZWxlY3Ryb25pYw0KK2xpYnJhcnkgbWF0ZXJpYWxzLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB1c2Ugb2YgdGhlIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCitBbWVyaWNhbiBNZW1vcnkgKEFNKSBwcm9ncmFtIGluIGEgc21hbGwgbnVtYmVyIG9mIHB1YmxpYyBhbmQgc2Nob29sDQorbGlicmFyaWVzIHRocm91Z2hvdXQgdGhlIFVuaXRlZCBTdGF0ZXMuICBBTSBjb25zaXN0cyBvZiBzZWxlY3RlZCBMaWJyYXJ5DQorb2YgQ29uZ3Jlc3MgcHJpbWFyeSBhcmNoaXZhbCBtYXRlcmlhbHMsIHN0b3JlZCBvbiBvcHRpY2FsIG1lZGlhDQorKENELVJPTS92aWRlb2Rpc2MpLCBhbmQgcHJlc2VudGVkIHdpdGggbGl0dGxlIG9yIG5vIGVkaXRpbmcuICBNYW55DQorY29sbGVjdGlvbnMgYXJlIGFjY29tcGFuaWVkIGJ5IGVsZWN0cm9uaWMgaW50cm9kdWN0aW9ucyBhbmQgdXNlcidzIGd1aWRlcw0KK29mZmVyaW5nIGJhY2tncm91bmQgaW5mb3JtYXRpb24gYW5kIGhpc3RvcmljYWwgY29udGV4dC4gIENvbGxlY3Rpb25zDQorcmVwcmVzZW50IGEgdmFyaWV0eSBvZiBmb3JtYXRzIGluY2x1ZGluZyBwaG90b2dyYXBocywgZ3JhcGhpYyBhcnRzLA0KK21vdGlvbiBwaWN0dXJlcywgcmVjb3JkZWQgc291bmQsIG11c2ljLCBicm9hZHNpZGVzIGFuZCBtYW51c2NyaXB0cywNCitib29rcywgYW5kIHBhbXBobGV0cy4NCisNCitJbiAxOTkxLCB0aGUgTGlicmFyeSBvZiBDb25ncmVzcyBiZWdhbiBhIG5hdGlvbndpZGUgZXZhbHVhdGlvbiBvZiBBTSBpbg0KK2RpZmZlcmVudCB0eXBlcyBvZiBpbnN0aXR1dGlvbnMuICBUZXN0IHNpdGVzIGluY2x1ZGUgcHVibGljIGxpYnJhcmllcywNCitlbGVtZW50YXJ5IGFuZCBzZWNvbmRhcnkgc2Nob29sIGxpYnJhcmllcywgY29sbGVnZSBhbmQgdW5pdmVyc2l0eQ0KK2xpYnJhcmllcywgc3RhdGUgbGlicmFyaWVzLCBhbmQgc3BlY2lhbCBsaWJyYXJpZXMuICBTdXNhbiBWRUNDSUEgYW5kDQorSm9hbm5lIEZSRUVNQU4gd2lsbCBkaXNjdXNzIHRoZWlyIG9ic2VydmF0aW9ucyBvbiB0aGUgdXNlIG9mIEFNIGJ5IHRoZQ0KK25vbnNjaG9sYXJseSBjb21tdW5pdHksIHVzaW5nIGV2aWRlbmNlIGdsZWFuZWQgZnJvbSB0aGlzIG9uZ29pbmcNCitldmFsdWF0aW9uIGVmZm9ydC4NCisNCitWRUNDSUEgd2lsbCBjb21tZW50IG9uIHRoZSBvdmVyYWxsIGdvYWxzIG9mIHRoZSBldmFsdWF0aW9uIHByb2plY3QsIGFuZA0KK3RoZSB0eXBlcyBvZiBwdWJsaWMgYW5kIHNjaG9vbCBsaWJyYXJpZXMgaW5jbHVkZWQgaW4gdGhpcyBzdHVkeS4gIEhlcg0KK2NvbW1lbnRzIG9uIG5vbnNjaG9sYXJseSB1c2Ugb2YgQU0gd2lsbCBmb2N1cyBvbiB0aGUgcHVibGljIGxpYnJhcnkgYXMgYQ0KK2N1bHR1cmFsIGFuZCBjb21tdW5pdHkgaW5zdGl0dXRpb24sIG9mdGVuIGJyaWRnaW5nIHRoZSBnYXAgYmV0d2VlbiBmb3JtYWwNCithbmQgaW5mb3JtYWwgZWR1Y2F0aW9uLiAgRlJFRU1BTiB3aWxsIGRpc2N1c3MgdGhlIHVzZSBvZiBBTSBpbiBzY2hvb2wNCitsaWJyYXJpZXMuICBVc2UgYnkgc3R1ZGVudHMgYW5kIHRlYWNoZXJzIGhhcyByZXZlYWxlZCBzb21lIGJyb2FkDQorcXVlc3Rpb25zIGFib3V0IHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyByZXNvdXJjZXMsIGFzIHdlbGwgYXMgZGVmaW5pdGUNCitiZW5lZml0cyBnYWluZWQgYnkgdGhlICJub25zY2hvbGFyLiIgIFRvcGljcyB3aWxsIGluY2x1ZGUgdGhlIHByb2JsZW0gb2YNCitncmFzcGluZyBjb250ZW50IGFuZCBjb250ZXh0IGluIGFuIGVsZWN0cm9uaWMgZW52aXJvbm1lbnQsIHRoZSBzdHVtYmxpbmcNCitibG9ja3MgY3JlYXRlZCBieSAibmV3IiB0ZWNobm9sb2dpZXMsIGFuZCB0aGUgdW5pcXVlIHNraWxscyBhbmQgaW50ZXJlc3RzDQorYXdha2VuZWQgdGhyb3VnaCB1c2Ugb2YgZWxlY3Ryb25pYyByZXNvdXJjZXMuDQorDQorU0VTU0lPTiBJSQ0KKw0KK0VsbGkgTVlMT05BUyAgICAgICAgICAgICBUaGUgUGVyc2V1cyBQcm9qZWN0OiAgSW50ZXJhY3RpdmUgU291cmNlcyBhbmQNCisgICAgICAgICAgICAgICAgICAgICAgICAgU3R1ZGllcyBpbiBDbGFzc2ljYWwgR3JlZWNlDQorDQorVGhlIFBlcnNldXMgUHJvamVjdCAoNSkgaGFzIGp1c3QgcmVsZWFzZWQgUGVyc2V1cyAxLjAsIHRoZSBmaXJzdCBwdWJsaWNseQ0KK2F2YWlsYWJsZSB2ZXJzaW9uIG9mIGl0cyBoeXBlcnRleHR1YWwgZGF0YWJhc2Ugb2YgbXVsdGltZWRpYSBtYXRlcmlhbHMgb24NCitjbGFzc2ljYWwgR3JlZWNlLiAgUGVyc2V1cyBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIGJ5IGEgd2lkZSBhdWRpZW5jZSwNCitjb21wcmlzZWQgb2YgcmVhZGVycyBhdCB0aGUgc3R1ZGVudCBhbmQgc2Nob2xhciBsZXZlbHMuICBBcyBzdWNoLCBpdCBtdXN0DQorYmUgYWJsZSB0byBsb2NhdGUgaW5mb3JtYXRpb24gdXNpbmcgZGlmZmVyZW50IHN0cmF0ZWdpZXMsIGFuZCBpdCBtdXN0DQorY29udGFpbiBlbm91Z2ggZGV0YWlsIHRvIHNlcnZlIHRoZSBkaWZmZXJlbnQgbmVlZHMgb2YgaXRzIHVzZXJzLiAgSW4NCithZGRpdGlvbiwgaXQgbXVzdCBiZSBkZWxpdmVyZWQgc28gdGhhdCBpdCBpcyBhZmZvcmRhYmxlIHRvIGl0cyB0YXJnZXQNCithdWRpZW5jZS4gIFtUaGVzZSBwcm9ibGVtcyBhbmQgdGhlIHNvbHV0aW9ucyB3ZSBjaG9zZSBhcmUgZGVzY3JpYmVkIGluDQorTXlsb25hcywgIkFuIEludGVyZmFjZSB0byBDbGFzc2ljYWwgR3JlZWsgQ2l2aWxpemF0aW9uLCIgSkFTSVMgNDM6MiwNCitNYXJjaCAxOTkyLl0NCisNCitJbiBvcmRlciB0byBhY2hpZXZlIGl0cyBvYmplY3RpdmUsIHRoZSBwcm9qZWN0IHN0YWZmIGRlY2lkZWQgdG8gbWFrZSBhDQorY29uc2Npb3VzIHNlcGFyYXRpb24gYmV0d2VlbiBzZWxlY3RpbmcgYW5kIGNvbnZlcnRpbmcgdGV4dHVhbCwgZGF0YWJhc2UsDQorYW5kIGltYWdlIGRhdGEgb24gdGhlIG9uZSBoYW5kLCBhbmQgcHV0dGluZyBpdCBpbnRvIGEgZGVsaXZlcnkgc3lzdGVtIG9uDQordGhlIG90aGVyLiAgVGhhdCB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSB0aGUgZWxlY3Ryb25pYyBkYXRhDQord2l0aG91dCB0aGlua2luZyBhYm91dCB0aGUgcmVzdHJpY3Rpb25zIG9mIHRoZSBkZWxpdmVyeSBzeXN0ZW0uICBXZSBoYXZlDQorbWFkZSBhIGdyZWF0IGVmZm9ydCB0byBjaG9vc2Ugc3lzdGVtLWluZGVwZW5kZW50IGZvcm1hdHMgZm9yIG91ciBkYXRhLA0KK2FuZCB0byBwdXQgYXMgbXVjaCB0aG91Z2h0IGFuZCB3b3JrIGFzIHBvc3NpYmxlIGludG8gc3RydWN0dXJpbmcgaXQgc28NCit0aGF0IHRoZSB0cmFuc2xhdGlvbiBmcm9tIHBhcGVyIHRvIGVsZWN0cm9uaWMgZm9ybSB3aWxsIGVuaGFuY2UgdGhlIHZhbHVlDQorb2YgdGhlIGRhdGEuIFtBIGRpc2N1c3Npb24gb2YgdGhlc2Ugc29sdXRpb25zIGFzIG9mIHR3byB5ZWFycyBhZ28gaXMgaW4NCitFbGxpIE15bG9uYXMsIEdyZWdvcnkgQ3JhbmUsIEtlbm5ldGggTW9ycmVsbCwgYW5kIEQuIE5lZWwgU21pdGgsICJUaGUNCitQZXJzZXVzIFByb2plY3Q6ICBEYXRhIGluIHRoZSBFbGVjdHJvbmljIEFnZSwiIGluIEFjY2Vzc2luZyBBbnRpcXVpdHk6IA0KK1RoZSBDb21wdXRlcml6YXRpb24gb2YgQ2xhc3NpY2FsIERhdGFiYXNlcywgSi4gU29sb21vbiBhbmQgVC4gV29ydGhlbg0KKyhlZHMuKSwgIFVuaXZlcnNpdHkgb2YgQXJpem9uYSBQcmVzcywgaW4gcHJlc3MuXQ0KKw0KK011Y2ggb2YgdGhlIHdvcmsgb24gUGVyc2V1cyBpcyBmb2N1c2VkIG9uIGNvbGxlY3RpbmcgYW5kIGNvbnZlcnRpbmcgdGhlDQorZGF0YSBvbiB3aGljaCB0aGUgcHJvamVjdCBpcyBiYXNlZC4gIEF0IHRoZSBzYW1lIHRpbWUsIGl0IGlzIG5lY2Vzc2FyeSB0bw0KK3Byb3ZpZGUgbWVhbnMgb2YgYWNjZXNzIHRvIHRoZSBpbmZvcm1hdGlvbiwgaW4gb3JkZXIgdG8gbWFrZSBpdCB1c2FibGUsDQorYW5kIHRoZW0gdG8gaW52ZXN0aWdhdGUgaG93IGl0IGlzIHVzZWQuICBBcyB3ZSBsZWFybiBtb3JlIGFib3V0IHdoYXQNCitzdHVkZW50cyBhbmQgc2Nob2xhcnMgZnJvbSBkaWZmZXJlbnQgYmFja2dyb3VuZHMgZG8gd2l0aCBQZXJzZXVzLCB3ZSBjYW4NCithZGp1c3Qgb3VyIGRhdGEgY29sbGVjdGlvbiwgYW5kIGFsc28gbW9kaWZ5IHRoZSBzeXN0ZW0gdG8gYWNjb21tb2RhdGUNCit0aGVtLiAgSW4gY3JlYXRpbmcgYSBkZWxpdmVyeSBzeXN0ZW0gZm9yIGdlbmVyYWwgdXNlLCB3ZSBoYXZlIHRyaWVkIHRvDQorYXZvaWQgZmF2b3JpbmcgYW55IG9uZSB0eXBlIG9mIHVzZSBieSBhbGxvd2luZyBtdWx0aXBsZSBmb3JtcyBvZiBhY2Nlc3MNCit0byBhbmQgbmF2aWdhdGlvbiB0aHJvdWdoIHRoZSBzeXN0ZW0uDQorDQorVGhlIHdheSB0ZXh0IGlzIGhhbmRsZWQgZXhlbXBsaWZpZXMgc29tZSBvZiB0aGVzZSBwcmluY2lwbGVzLiAgQWxsIHRleHQNCitpbiBQZXJzZXVzIGlzIHRhZ2dlZCB1c2luZyBTR01MLCBmb2xsb3dpbmcgdGhlIGd1aWRlbGluZXMgb2YgdGhlIFRleHQNCitFbmNvZGluZyBJbml0aWF0aXZlIChURUkpLiAgVGhpcyBtYXJrdXAgaXMgdXNlZCB0byBpbmRleCB0aGUgdGV4dCwgYW5kDQorcHJvY2VzcyBpdCBzbyB0aGF0IGl0IGNhbiBiZSBpbXBvcnRlZCBpbnRvIEh5cGVyQ2FyZC4gIE5vIFNHTUwgbWFya3VwDQorcmVtYWlucyBpbiB0aGUgdGV4dCB0aGF0IHJlYWNoZXMgdGhlIHVzZXIsIGJlY2F1c2UgY3VycmVudGx5IGl0IHdvdWxkIGJlDQordG9vIGV4cGVuc2l2ZSB0byBjcmVhdGUgYSBzeXN0ZW0gdGhhdCBhY3RzIG9uIFNHTUwgaW4gcmVhbCB0aW1lLiANCitIb3dldmVyLCB0aGUgcmVndWxhcml0eSBwcm92aWRlZCBieSBTR01MIGlzIGVzc2VudGlhbCBmb3IgdmVyaWZ5aW5nIHRoZQ0KK2NvbnRlbnQgb2YgdGhlIHRleHRzLCBhbmQgZ3JlYXRseSBzcGVlZHMgYWxsIHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBvbg0KK3RoZW0uICBUaGUgZmFjdCB0aGF0IHRoZSB0ZXh0cyBleGlzdCBpbiBTR01MIGVuc3VyZXMgdGhhdCB0aGV5IHdpbGwgYmUNCityZWxhdGl2ZWx5IGVhc3kgdG8gcG9ydCB0byBkaWZmZXJlbnQgaGFyZHdhcmUgYW5kIHNvZnR3YXJlLCBhbmQgc28gd2lsbA0KK291dGxhc3QgdGhlIGN1cnJlbnQgZGVsaXZlcnkgcGxhdGZvcm0uICBGaW5hbGx5LCB0aGUgU0dNTCBtYXJrdXANCitpbmNvcnBvcmF0ZXMgZXhpc3RpbmcgY2Fub25pY2FsIHJlZmVyZW5jZSBzeXN0ZW1zIChjaGFwdGVyLCB2ZXJzZSwgbGluZSwNCitldGMuKTsgaW5kZXhpbmcgYW5kIG5hdmlnYXRpb24gYXJlIGJhc2VkIG9uIHRoZXNlIGZlYXR1cmVzLiAgVGhpcyBlbnN1cmVzDQordGhhdCB0aGUgc2FtZSBjYW5vbmljYWwgcmVmZXJlbmNlIHdpbGwgYWx3YXlzIHJlc29sdmUgdG8gdGhlIHNhbWUgcG9pbnQNCit3aXRoaW4gYSB0ZXh0LCBhbmQgdGhhdCBhbGwgdmVyc2lvbnMgb2Ygb3VyIHRleHRzLCByZWdhcmRsZXNzIG9mIGRlbGl2ZXJ5DQorcGxhdGZvcm0gKGV2ZW4gcGFwZXIgcHJpbnRvdXRzKSB3aWxsIGZ1bmN0aW9uIHRoZSBzYW1lIHdheS4NCisNCitJbiBvcmRlciB0byBwcm92aWRlIHRvb2xzIGZvciB1c2VycywgdGhlIHRleHQgaXMgcHJvY2Vzc2VkIGJ5IGENCittb3JwaG9sb2dpY2FsIGFuYWx5emVyLCBhbmQgdGhlIHJlc3VsdHMgYXJlIHN0b3JlZCBpbiBhIGRhdGFiYXNlLiANCitUb2dldGhlciB3aXRoIHRoZSBpbmRleCwgdGhlIEdyZWVrLUVuZ2xpc2ggTGV4aWNvbiwgYW5kIHRoZSBpbmRleCBvZiBhbGwNCit0aGUgRW5nbGlzaCB3b3JkcyBpbiB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGxleGljb24sIHRoZSBtb3JwaG9sb2dpY2FsDQorYW5hbHlzZXMgY29tcHJpc2UgYSBzZXQgb2YgbGluZ3Vpc3RpYyB0b29scyB0aGF0IGFsbG93IHVzZXJzIG9mIGFsbA0KK2xldmVscyB0byB3b3JrIHdpdGggdGhlIHRleHR1YWwgaW5mb3JtYXRpb24sIGFuZCB0byBhY2NvbXBsaXNoIGRpZmZlcmVudA0KK3Rhc2tzLiAgRm9yIGV4YW1wbGUsIHN0dWRlbnRzIHdobyByZWFkIG5vIEdyZWVrIG1heSBleHBsb3JlIGEgY29uY2VwdCBhcw0KK2l0IGFwcGVhcnMgaW4gR3JlZWsgdGV4dHMgYnkgdXNpbmcgdGhlIEVuZ2xpc2gtR3JlZWsgaW5kZXgsIGFuZCB0aGVuDQorbG9va2luZyB1cCB3b3JrcyBpbiB0aGUgdGV4dHMgYW5kIHRyYW5zbGF0aW9ucywgb3Igc2Nob2xhcnMgbWF5IGRvDQorZGV0YWlsZWQgbW9ycGhvbG9naWNhbCBzdHVkaWVzIG9mIHdvcmQgdXNlIGJ5IHVzaW5nIHRoZSBtb3JwaG9sb2dpY2FsDQorYW5hbHlzZXMgb2YgdGhlIHRleHRzLiAgQmVjYXVzZSB0aGVzZSB0b29scyB3ZXJlIG5vdCBkZXNpZ25lZCBmb3IgYW55IG9uZQ0KK3VzZSwgdGhlIHNhbWUgdG9vbHMgYW5kIHRoZSBzYW1lIGRhdGEgY2FuIGJlIHVzZWQgYnkgYm90aCBzdHVkZW50cyBhbmQNCitzY2hvbGFycy4NCisNCitOT1RFUzoNCisgICAgICg1KSAgUGVyc2V1cyBpcyBiYXNlZCBhdCBIYXJ2YXJkIFVuaXZlcnNpdHksIHdpdGggY29sbGFib3JhdG9ycyBhdA0KKyAgICAgc2V2ZXJhbCBvdGhlciB1bml2ZXJzaXRpZXMuICBUaGUgcHJvamVjdCBoYXMgYmVlbiBmdW5kZWQgcHJpbWFyaWx5DQorICAgICBieSB0aGUgQW5uZW5iZXJnL0NQQiBQcm9qZWN0LCBhcyB3ZWxsIGFzIGJ5IEhhcnZhcmQgVW5pdmVyc2l0eSwNCisgICAgIEFwcGxlIENvbXB1dGVyLCBhbmQgb3RoZXJzLiAgSXQgaXMgcHVibGlzaGVkIGJ5IFlhbGUgVW5pdmVyc2l0eQ0KKyAgICAgUHJlc3MuICBQZXJzZXVzIHJ1bnMgb24gTWFjaW50b3NoIGNvbXB1dGVycywgdW5kZXIgdGhlIEh5cGVyQ2FyZA0KKyAgICAgcHJvZ3JhbS4NCisNCitFcmljIENBTEFMVUNBDQorDQorQ2hhZHd5Y2stSGVhbGV5IGVtYmFya2VkIGxhc3QgeWVhciBvbiB0d28gZGlzdGluY3QgeWV0IHJlbGF0ZWQgZnVsbC10ZXh0DQoraHVtYW5pdGllcyBkYXRhYmFzZSBwcm9qZWN0cy4NCisNCitUaGUgRW5nbGlzaCBQb2V0cnkgRnVsbC1UZXh0IERhdGFiYXNlIGFuZCB0aGUgUGF0cm9sb2dpYSBMYXRpbmEgRGF0YWJhc2UNCityZXByZXNlbnQgbmV3IGFwcHJvYWNoZXMgdG8gbGluZ3Vpc3RpYyByZXNlYXJjaCByZXNvdXJjZXMuICBUaGUgc2l6ZSBhbmQNCitjb21wbGV4aXR5IG9mIHRoZSBwcm9qZWN0cyBwcmVzZW50IHByb2JsZW1zIGZvciBlbGVjdHJvbmljIHB1Ymxpc2hlcnMsDQorYnV0IHN1cm1vdW50YWJsZSBvbmVzIGlmIHRoZXkgcmVtYWluIGFicmVhc3Qgb2YgdGhlIGxhdGVzdCBwb3NzaWJpbGl0aWVzDQoraW4gZGF0YSBjYXB0dXJlIGFuZCByZXRyaWV2YWwgc29mdHdhcmUgdGVjaG5pcXVlcy4NCisNCitUaGUgaXNzdWVzIHdoaWNoIHJlcXVpcmVkIGFkZHJlc3MgcHJpb3IgdG8gdGhlIGNvbW1lbmNlbWVudCBvZiB0aGUNCitwcm9qZWN0cyB3ZXJlIGxlZ2lvbjoNCisNCisgICAgIDEuICAgRWRpdG9yaWFsIHNlbGVjdGlvbiAob3IgZXhjbHVzaW9uKSBvZiBtYXRlcmlhbHMgaW4gZWFjaA0KKyAgICAgICAgICBkYXRhYmFzZQ0KKw0KKyAgICAgMi4gICBEZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0byBpbmNvcnBvcmF0ZSBhIG5vcm1hdGl2ZSBlbmNvZGluZw0KKyAgICAgICAgICBzdHJ1Y3R1cmUgaW50byB0aGUgZGF0YWJhc2VzPw0KKyAgICAgICAgICAgICAgIEEuICBJZiBvbmUgaXMgc2VsZWN0ZWQsIHNob3VsZCBpdCBiZSBTR01MPw0KKyAgICAgICAgICAgICAgIEIuICBJZiBTR01MLCB0aGVuIHRoZSBURUk/DQorICAgICANCisgICAgIDMuICAgRGVsaXZlciBhcyBDRC1ST00sIG1hZ25ldGljIHRhcGUsIG9yIGJvdGg/DQorDQorICAgICA0LiAgIENhbiBvbmUgcHJvZHVjZSByZXRyaWV2YWwgc29mdHdhcmUgYWR2YW5jZWQgZW5vdWdoIGZvciB0aGUNCisgICAgICAgICAgcG9zdGRvY3RvcmFsIGxpbmd1aXN0LCB5ZXQgYWNjZXNzaWJsZSBlbm91Z2ggZm9yIHVuYXR0ZW5kZWQNCisgICAgICAgICAgZ2VuZXJhbCB1c2U/ICBTaG91bGQgb25lIHRyeT8NCisNCisgICAgIDUuICAgUmUgZmFpciBhbmQgbGliZXJhbCBuZXR3b3JraW5nIHBvbGljaWVzLCB3aGF0IGFyZSB0aGUgcmlza3MgdG8NCisgICAgICAgICAgYW4gZWxlY3Ryb25pYyBwdWJsaXNoZXI/DQorDQorICAgICA2LiAgIEhvdyBkb2VzIHRoZSBlbWVyZ2VuY2Ugb2YgbmF0aW9uYWwgYW5kIGludGVybmF0aW9uYWwgZWR1Y2F0aW9uDQorICAgICAgICAgIG5ldHdvcmtzIGFmZmVjdCB0aGUgdXNlIGFuZCB2aWFiaWxpdHkgb2YgcmVzZWFyY2ggcHJvamVjdHMNCisgICAgICAgICAgcmVxdWlyaW5nIGhpZ2ggaW52ZXN0bWVudD8gIERvIHRoZSBuZXcgRXVyb3BlYW4gQ29tbXVuaXR5DQorICAgICAgICAgIGRpcmVjdGl2ZXMgY29uY2VybmluZyBkYXRhYmFzZSBwcm90ZWN0aW9uIG5lY2Vzc2l0YXRlIHR3bw0KKyAgICAgICAgICBkaXN0aW5jdCBwdWJsaXNoaW5nIHByb2plY3RzLCBvbmUgZm9yIE5vcnRoIEFtZXJpY2EgYW5kIG9uZSBmb3INCisgICAgICAgICAgb3ZlcnNlYXM/DQorDQorRnJvbSBuZXcgbm90aW9ucyBvZiAic2Nob2xhcmx5IGZhaXIgdXNlIiB0byB0aGUgZnV0dXJlIG9mIG9wdGljYWwgbWVkaWEsDQordmlydHVhbGx5IGV2ZXJ5IGlzc3VlIHJlbGF0ZWQgdG8gZWxlY3Ryb25pYyBwdWJsaXNoaW5nIHdhcyBhaXJlZC4gIFRoZQ0KK3Jlc3VsdCBpcyB0d28gcHJvamVjdHMgd2hpY2ggaGF2ZSBiZWVuIGNvbnN0cnVjdGVkIHRvIHByb3ZpZGUgdGhlIHF1YWxpdHkNCityZXNlYXJjaCByZXNvdXJjZXMgd2l0aCB0aGUgZmV3ZXN0IGVuY3VtYnJhbmNlcyB0byB1c2UgYnkgdGVhY2hlcnMgYW5kDQorcHJpdmF0ZSBzY2hvbGFycy4NCisNCitEb3JvdGh5IFRXT0hJRw0KKw0KK0luIHNwcmluZyAxOTg4IHRoZSBlZGl0b3JzIG9mIHRoZSBwYXBlcnMgb2YgR2VvcmdlIFdhc2hpbmd0b24sIEpvaG4NCitBZGFtcywgVGhvbWFzIEplZmZlcnNvbiwgSmFtZXMgTWFkaXNvbiwgYW5kIEJlbmphbWluIEZyYW5rbGluIHdlcmUNCithcHByb2FjaGVkIGJ5IGNsYXNzaWNzIHNjaG9sYXIgRGF2aWQgUGFja2FyZCBvbiBiZWhhbGYgb2YgdGhlIFBhY2thcmQNCitIdW1hbml0aWVzIEZvdW5kYXRpb24gd2l0aCBhIHByb3Bvc2FsIHRvIHByb2R1Y2UgYSBDRC1ST00gZWRpdGlvbiBvZiB0aGUNCitjb21wbGV0ZSBwYXBlcnMgb2YgZWFjaCBvZiB0aGUgRm91bmRpbmcgRmF0aGVycy4gIFRoaXMgZWxlY3Ryb25pYyBlZGl0aW9uDQord2lsbCBzdXBwbGVtZW50IHRoZSBwdWJsaXNoZWQgdm9sdW1lcywgbWFraW5nIHRoZSBkb2N1bWVudHMgd2lkZWx5DQorYXZhaWxhYmxlIHRvIHN0dWRlbnRzIGFuZCByZXNlYXJjaGVycyBhdCByZWFzb25hYmxlIGNvc3QuICBXZSBlc3RpbWF0ZQ0KK3RoYXQgb3VyIENELVJPTSBlZGl0aW9uIG9mIFdhc2hpbmd0b24ncyBQYXBlcnMgd2lsbCBiZSBzdWJzdGFudGlhbGx5DQorY29tcGxldGVkIHdpdGhpbiB0aGUgbmV4dCB0d28geWVhcnMgYW5kIHJlYWR5IGZvciBwdWJsaWNhdGlvbi4gIFdpdGhpbg0KK3RoZSBuZXh0IHRlbiB5ZWFycyBvciBzbywgc2ltaWxhciBDRC1ST00gZWRpdGlvbnMgb2YgdGhlIEZyYW5rbGluLCBBZGFtcywNCitKZWZmZXJzb24sIGFuZCBNYWRpc29uIHBhcGVycyBhbHNvIHdpbGwgYmUgYXZhaWxhYmxlLiAgQXQgdGhlIExpYnJhcnkgb2YNCitDb25ncmVzcydzIHNlc3Npb24gb24gdGVjaG5vbG9neSwgSSB3b3VsZCBsaWtlIHRvIGRpc2N1c3Mgbm90IG9ubHkgdGhlDQorZXhwZXJpZW5jZSBvZiB0aGUgV2FzaGluZ3RvbiBQYXBlcnMgaW4gcHJvZHVjaW5nIHRoZSBDRC1ST00gZWRpdGlvbiwgYnV0DQordGhlIGltcGFjdCB0ZWNobm9sb2d5IGhhcyBoYWQgb24gdGhlc2UgbWFqb3IgZWRpdG9yaWFsIHByb2plY3RzLiANCitBbHJlYWR5LCB3ZSBhcmUgZWRpdGluZyBvdXIgdm9sdW1lcyB3aXRoIGFuIGV5ZSB0byB0aGUgbWF0ZXJpYWwgdGhhdCB3aWxsDQorYmUgcmVhZGlseSBhdmFpbGFibGUgaW4gdGhlIENELVJPTSBlZGl0aW9uLiAgVGhlIGNvbXBsZXRlZCBlbGVjdHJvbmljDQorZWRpdGlvbiB3aWxsIHByb3ZpZGUgaW1tZW5zZSBwb3NzaWJpbGl0aWVzIGZvciB0aGUgc2VhcmNoaW5nIG9mIGRvY3VtZW50cw0KK2ZvciBpbmZvcm1hdGlvbiBpbiBhIHdheSBuZXZlciBwb3NzaWJsZSBiZWZvcmUuICBUaGUga2luZCBvZiB0ZWNobmljYWwNCitpbm5vdmF0aW9ucyB0aGF0IGFyZSBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvbiB0aGUgZHJhd2luZyBib2FyZCB3aWxsDQorc29vbiByZXZvbHV0aW9uaXplIGhpc3RvcmljYWwgcmVzZWFyY2ggYW5kIHRoZSBwcm9kdWN0aW9uIG9mIGhpc3RvcmljYWwNCitkb2N1bWVudHMuICBVbmZvcnR1bmF0ZWx5LCBtdWNoIG9mIHRoaXMgbmV3IHRlY2hub2xvZ3kgaXMgbm90IGJlaW5nIHVzZWQNCitpbiB0aGUgcGxhbm5pbmcgc3RhZ2VzIG9mIGhpc3RvcmljYWwgcHJvamVjdHMsIHNpbXBseSBiZWNhdXNlIG1hbnkNCitoaXN0b3JpYW5zIGFyZSBhd2FyZSBvbmx5IGluIHRoZSB2YWd1ZXN0IHdheSBvZiBpdHMgZXhpc3RlbmNlLiAgQXQgbGVhc3QNCit0d28gbWFqb3IgbmV3IGhpc3RvcmljYWwgZWRpdGluZyBwcm9qZWN0cyBhcmUgY29uc2lkZXJpbmcgbWljcm9maWxtDQorZWRpdGlvbnMsIHNpbXBseSBiZWNhdXNlIHRoZXkgYXJlIG5vdCBhd2FyZSBvZiB0aGUgcG9zc2liaWxpdGllcyBvZg0KK2VsZWN0cm9uaWMgYWx0ZXJuYXRpdmVzIGFuZCB0aGUgYWR2YW50YWdlcyBvZiB0aGUgbmV3IHRlY2hub2xvZ3kgaW4gdGVybXMNCitvZiBmbGV4aWJpbGl0eSBhbmQgcmVzZWFyY2ggcG90ZW50aWFsIGNvbXBhcmVkIHRvIG1pY3JvZmlsbS4gIEluIGZhY3QsDQordG9vIG1hbnkgb2YgdXMgaW4gaGlzdG9yeSBhbmQgbGl0ZXJhdHVyZSBhcmUgc3RpbGwgYXQgdGhlIHN0YWdlIG9mDQorc3RydWdnbGluZyB3aXRoIG91ciBQQ3MuICBUaGVyZSBhcmUgbWFueSBoaXN0b3JpY2FsIGVkaXRvcmlhbCBwcm9qZWN0cyBpbg0KK3Byb2dyZXNzIHByZXNlbnRseSwgYW5kIGFuIGVxdWFsIG51bWJlciBvZiBsaXRlcmFyeSBwcm9qZWN0cy4gIFdoaWxlIHRoZQ0KK3R3byBmaWVsZHMgaGF2ZSBzb21ld2hhdCBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byB0ZXh0dWFsIGVkaXRpbmcsIHRoZXJlDQorYXJlIHdheXMgaW4gd2hpY2ggZWxlY3Ryb25pYyB0ZWNobm9sb2d5IGNhbiBiZSBvZiBzZXJ2aWNlIHRvIGJvdGguDQorDQorU2luY2UgZmV3IG9mIHRoZSBlZGl0b3JzIGludm9sdmVkIGluIHRoZSBGb3VuZGluZyBGYXRoZXJzIENELVJPTSBlZGl0aW9ucw0KK2FyZSB0ZWNobmljYWwgZXhwZXJ0cyBpbiBhbnkgc2Vuc2UsIEkgaG9wZSB0byBwb2ludCBvdXQgaW4gbXkgZGlzY3Vzc2lvbg0KK29mIG91ciBleHBlcmllbmNlIGhvdyBtYW55IG9mIHRoZXNlIGVsZWN0cm9uaWMgaW5ub3ZhdGlvbnMgY2FuIGJlIHVzZWQNCitzdWNjZXNzZnVsbHkgYnkgc2Nob2xhcnMgd2hvIGFyZSBub3ZpY2VzIGluIHRoZSB3b3JsZCBvZiBuZXcgdGVjaG5vbG9neS4gDQorT25lIG9mIHRoZSBtYWpvciBjb25jZXJucyBvZiB0aGUgc3BvbnNvcnMgb2YgdGhlIG11bHRpdHVkZSBvZiBuZXcNCitzY2hvbGFybHkgZWRpdGlvbnMgaXMgdGhlIGxpbWl0ZWQgYXVkaWVuY2UgcmVhY2hlZCBieSB0aGUgcHVibGlzaGVkDQordm9sdW1lcy4gIE1vc3Qgb2YgdGhlc2UgZWRpdGlvbnMgYXJlIGJlaW5nIHB1Ymxpc2hlZCBpbiBzbWFsbCBxdWFudGl0aWVzDQorYW5kIHRoZSBwdWJsaXNoZXJzJyBwcmljZSBmb3IgdGhlbSBwdXRzIHRoZW0gb3V0IG9mIHRoZSByZWFjaCBub3Qgb25seSBvZg0KK2luZGl2aWR1YWwgc2Nob2xhcnMgYnV0IG9mIG1vc3QgcHVibGljIGxpYnJhcmllcyBhbmQgYWxsIGJ1dCB0aGUgbGFyZ2VzdA0KK2VkdWNhdGlvbmFsIGluc3RpdHV0aW9ucy4gIEhvd2V2ZXIsIGxpdHRsZSBhdHRlbnRpb24gaXMgYmVpbmcgZ2l2ZW4gdG8NCit3YXlzIGluIHdoaWNoIHRlY2hub2xvZ3kgY2FuIGJ5cGFzcyBjb252ZW50aW9uYWwgcHVibGljYXRpb24gdG8gbWFrZQ0KK2hpc3RvcmljYWwgYW5kIGxpdGVyYXJ5IGRvY3VtZW50cyBtb3JlIHdpZGVseSBhdmFpbGFibGUuDQorDQorV2hhdCBhdHRyYWN0ZWQgdXMgbW9zdCB0byB0aGUgQ0QtUk9NIGVkaXRpb24gb2YgVGhlIFBhcGVycyBvZiBHZW9yZ2UNCitXYXNoaW5ndG9uIHdhcyB0aGUgZmFjdCB0aGF0IERhdmlkIFBhY2thcmQncyBhaW0gd2FzIHRvIG1ha2UgYSBjb21wbGV0ZQ0KK2VkaXRpb24gb2YgYWxsIG9mIHRoZSAxMzUsMDAwIGRvY3VtZW50cyB3ZSBoYXZlIGNvbGxlY3RlZCBhdmFpbGFibGUgaW4gYW4NCitpbmV4cGVuc2l2ZSBmb3JtYXQgdGhhdCB3b3VsZCBiZSBwbGFjZWQgaW4gcHVibGljIGxpYnJhcmllcywgc21hbGwNCitjb2xsZWdlcywgYW5kIGV2ZW4gaGlnaCBzY2hvb2xzLiAgVGhpcyB3b3VsZCBwcm92aWRlIGFuIGF1ZGllbmNlIGZhcg0KK2JleW9uZCBvdXIgcHJlc2VudCAxLDAwMC1jb3B5LCAkNDUgcHVibGlzaGVkIGVkaXRpb24uICBTaW5jZSB0aGUgQ0QtUk9NDQorZWRpdGlvbiB3aWxsIGNhcnJ5IG5vbmUgb2YgdGhlIGV4cGxhbmF0b3J5IGFubm90YXRpb24gdGhhdCBhcHBlYXJzIGluIHRoZQ0KK3B1Ymxpc2hlZCB2b2x1bWVzLCB3ZSBhbHNvIGZlZWwgdGhhdCB0aGUgdXNlIG9mIHRoZSBDRC1ST00gd2lsbCBsZWFkIG1hbnkNCityZXNlYXJjaGVycyB0byBzZWVrIG91dCB0aGUgcHVibGlzaGVkIHZvbHVtZXMuDQorDQorSW4gYWRkaXRpb24gdG8gaWdub3JhbmNlIG9mIG5ldyB0ZWNobmljYWwgYWR2YW5jZXMsIEkgaGF2ZSBmb3VuZCB0aGF0IHRvbw0KK21hbnkgZWRpdG9ycy0tYW5kIGhpc3RvcmlhbnMgYW5kIGxpdGVyYXJ5IHNjaG9sYXJzLS1hcmUgcmVzaXN0YW50IGFuZA0KK2V2ZW4gaG9zdGlsZSB0byBzdWdnZXN0aW9ucyB0aGF0IGVsZWN0cm9uaWMgdGVjaG5vbG9neSBtYXkgZW5oYW5jZSB0aGVpcg0KK3dvcmsuICBJIGludGVuZCB0byBkaXNjdXNzIHNvbWUgb2YgdGhlIGFyZ3VtZW50cyB0cmFkaXRpb25hbGlzdHMgYXJlDQorYWR2YW5jaW5nIHRvIHJlc2lzdCB0ZWNobm9sb2d5LCByYW5naW5nIGZyb20gZGlzdHJ1c3Qgb2YgdGhlIHNwZWVkIHdpdGgNCit3aGljaCBpdCBjaGFuZ2VzICh3ZSBhcmUgYWxyZWFkeSB3b25kZXJpbmcgd2hhdCBpcyBvdXQgdGhlcmUgdGhhdCBpcw0KK2JldHRlciB0aGFuIENELVJPTSkgdG8gc3VzcGljaW9uIG9mIHRoZSB0ZWNobmljYWwgbGFuZ3VhZ2UgdXNlZCB0bw0KK2Rlc2NyaWJlIGVsZWN0cm9uaWMgZGV2ZWxvcG1lbnRzLg0KKw0KK01hcmlhIExFQlJPTg0KKw0KK1RoZSBPbmxpbmUgSm91cm5hbCBvZiBDdXJyZW50IENsaW5pY2FsIFRyaWFscywgYSBqb2ludCB2ZW50dXJlIG9mIHRoZQ0KK0FtZXJpY2FuIEFzc29jaWF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU2NpZW5jZSAoQUFBUykgYW5kIHRoZSBPbmxpbmUNCitDb21wdXRlciBMaWJyYXJ5IENlbnRlciwgSW5jLiAoT0NMQyksIGlzIHRoZSBmaXJzdCBwZWVyLXJldmlld2VkIGpvdXJuYWwNCit0byBwcm92aWRlIGZ1bGwgdGV4dCwgdGFidWxhciBtYXRlcmlhbCwgYW5kIGxpbmUgaWxsdXN0cmF0aW9ucyBvbiBsaW5lLiANCitUaGlzIHByZXNlbnRhdGlvbiB3aWxsIGRpc2N1c3MgdGhlIGdlbmVzaXMgYW5kIHN0YXJ0LXVwIHBlcmlvZCBvZiB0aGUNCitqb3VybmFsLiAgVG9waWNzIG9mIGRpc2N1c3Npb24gd2lsbCBpbmNsdWRlIGhpc3RvcmljYWwgb3ZlcnZpZXcsDQorZGF5LXRvLWRheSBtYW5hZ2VtZW50IG9mIHRoZSBlZGl0b3JpYWwgcGVlciByZXZpZXcsIGFuZCBtYW51c2NyaXB0DQordGFnZ2luZyBhbmQgcHVibGljYXRpb24uICBBIGRlbW9uc3RyYXRpb24gb2YgdGhlIGpvdXJuYWwgYW5kIGl0cyBmZWF0dXJlcw0KK3dpbGwgYWNjb21wYW55IHRoZSBwcmVzZW50YXRpb24uDQorDQorTHlubmUgUEVSU09OSVVTDQorDQorQ29ybmVsbCBVbml2ZXJzaXR5IExpYnJhcnksIENvcm5lbGwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzLCBhbmQgWGVyb3gNCitDb3Jwb3JhdGlvbiwgd2l0aCB0aGUgc3VwcG9ydCBvZiB0aGUgQ29tbWlzc2lvbiBvbiBQcmVzZXJ2YXRpb24gYW5kDQorQWNjZXNzLCBhbmQgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiwgaGF2ZSBiZWVuIGNvbGxhYm9yYXRpbmcgaW4gYSBwcm9qZWN0DQordG8gdGVzdCBhIHByb3RvdHlwZSBzeXN0ZW0gZm9yIHJlY29yZGluZyBicml0dGxlIGJvb2tzIGFzIGRpZ2l0YWwgaW1hZ2VzDQorYW5kIHByb2R1Y2luZywgb24gZGVtYW5kLCBoaWdoLXF1YWxpdHkgYXJjaGl2YWwgcGFwZXIgcmVwbGFjZW1lbnRzLiAgVGhlDQorcHJvamVjdCBnb2VzIGJleW9uZCB0aGF0LCBob3dldmVyLCB0byBpbnZlc3RpZ2F0ZSBzb21lIG9mIHRoZSBpc3N1ZXMNCitzdXJyb3VuZGluZyBzY2FubmluZywgc3RvcmluZywgcmV0cmlldmluZywgYW5kIHByb3ZpZGluZyBhY2Nlc3MgdG8NCitkaWdpdGFsIGltYWdlcyBpbiBhIG5ldHdvcmsgZW52aXJvbm1lbnQuDQorDQorVGhlIEpvaW50IFN0dWR5IGluIERpZ2l0YWwgUHJlc2VydmF0aW9uIGJlZ2FuIGluIEphbnVhcnkgMTk5MC4gIFhlcm94DQorcHJvdmlkZWQgdGhlIENvbGxlZ2UgTGlicmFyeSBBY2Nlc3MgYW5kIFN0b3JhZ2UgU3lzdGVtIChDTEFTUykgc29mdHdhcmUsDQorYSBwcm90b3R5cGUgNjAwLWRvdHMtcGVyLWluY2ggKGRwaSkgc2Nhbm5lciwgYW5kIHRoZSBoYXJkd2FyZSBuZWNlc3NhcnkNCit0byBzdXBwb3J0IG5ldHdvcmsgcHJpbnRpbmcgb24gdGhlIERvY3VUZWNoIHByaW50ZXIgaG91c2VkIGluIENvcm5lbGwncw0KK0NvbXB1dGluZyBhbmQgQ29tbXVuaWNhdGlvbnMgQ2VudGVyIChDQ0MpLg0KKw0KK1RoZSBDb3JuZWxsIHN0YWZmIHVzaW5nIHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgYmVjYW1lIGFuIGludGVncmFsIHBhcnQNCitvZiB0aGUgZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcgcHJvY2VzcyBmb3IgZW5oYW5jZW1lbnRzIHRvIHRoZSBDTEFTUw0KK3NvZnR3YXJlIHN5c3RlbS4gIFRoZSBjb2xsYWJvcmF0aXZlIG5hdHVyZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcw0KK3Jlc3VsdGluZyBpbiBhIHN5c3RlbSB0aGF0IGlzIHNwZWNpZmljYWxseSB0YWlsb3JlZCB0byB0aGUgcHJlc2VydmF0aW9uDQorYXBwbGljYXRpb24uDQorDQorQSBkaWdpdGFsIGxpYnJhcnkgb2YgMSwwMDAgdm9sdW1lcyAob3IgYXBwcm94aW1hdGVseSAzMDAsMDAwIGltYWdlcykgaGFzDQorYmVlbiBjcmVhdGVkIGFuZCBpcyBzdG9yZWQgb24gYW4gb3B0aWNhbCBqdWtlYm94IHRoYXQgcmVzaWRlcyBpbiBDQ0MuIA0KK1RoZSBsaWJyYXJ5IGluY2x1ZGVzIGEgY29sbGVjdGlvbiBvZiBzZWxlY3QgbWF0aGVtYXRpY3MgbW9ub2dyYXBocyB0aGF0DQorcHJvdmlkZXMgbWF0aGVtYXRpY3MgZmFjdWx0eSB3aXRoIGFuIG9wcG9ydHVuaXR5IHRvIHVzZSB0aGUgZWxlY3Ryb25pYw0KK2xpYnJhcnkuICBUaGUgcmVtYWluaW5nIHZvbHVtZXMgd2VyZSBjaG9zZW4gZm9yIHRoZSBsaWJyYXJ5IHRvIHRlc3QgdGhlDQordmFyaW91cyBjYXBhYmlsaXRpZXMgb2YgdGhlIHNjYW5uaW5nIHN5c3RlbS4NCisNCitPbmUgcHJvamVjdCBvYmplY3RpdmUgaXMgdG8gcHJvdmlkZSB1c2VycyBvZiB0aGUgQ29ybmVsbCBsaWJyYXJ5IGFuZCB0aGUNCitsaWJyYXJ5IHN0YWZmIHdpdGggdGhlIGFiaWxpdHkgdG8gcmVxdWVzdCBmYWNzaW1pbGVzIG9mIGRpZ2l0aXplZCBpbWFnZXMNCitvciB0byByZXRyaWV2ZSB0aGUgYWN0dWFsIGVsZWN0cm9uaWMgaW1hZ2UgZm9yIGJyb3dzaW5nLiAgQSBwcm90b3R5cGUNCit2aWV3aW5nIHdvcmtzdGF0aW9uIGhhcyBiZWVuIGNyZWF0ZWQgYnkgWGVyb3gsIHdpdGggaW5wdXQgaW50byB0aGUgZGVzaWduDQorYnkgYSBjb21taXR0ZWUgb2YgQ29ybmVsbCBsaWJyYXJpYW5zIGFuZCBjb21wdXRlciBwcm9mZXNzaW9uYWxzLiAgVGhpcw0KK3dpbGwgYWxsb3cgdXMgdG8gZXhwZXJpbWVudCB3aXRoIHBhdHJvbiBhY2Nlc3MgdG8gdGhlIGltYWdlcyB0aGF0IG1ha2UgdXANCit0aGUgZGlnaXRhbCBsaWJyYXJ5LiAgVGhlIHZpZXdpbmcgc3RhdGlvbiBwcm92aWRlcyBzZWFyY2gsIHJldHJpZXZhbCwgYW5kDQorKHVsdGltYXRlbHkpIHByaW50aW5nIGZ1bmN0aW9ucyB3aXRoIGVuaGFuY2VtZW50cyB0byBmYWNpbGl0YXRlDQorbmF2aWdhdGlvbiB0aHJvdWdoIG11bHRpcGxlIGRvY3VtZW50cy4NCisNCitDb3JuZWxsIGN1cnJlbnRseSBpcyB3b3JraW5nIHRvIGV4dGVuZCBhY2Nlc3MgdG8gdGhlIGRpZ2l0YWwgbGlicmFyeSB0bw0KK3JlYWRlcnMgdXNpbmcgd29ya3N0YXRpb25zIGZyb20gdGhlaXIgb2ZmaWNlcy4gIFRoaXMgeWVhciBpcyBkZXZvdGVkIHRvDQordGhlIGRldmVsb3BtZW50IG9mIGEgbmV0d29yayByZXNpZGVudCBpbWFnZSBjb252ZXJzaW9uIGFuZCBkZWxpdmVyeQ0KK3NlcnZlciwgYW5kIGNsaWVudCBzb2Z0d2FyZSB0aGF0IHdpbGwgc3VwcG9ydCByZWFkZXJzIHdobyB1c2UgQXBwbGUNCitNYWNpbnRvc2ggY29tcHV0ZXJzLCBJQk0gd2luZG93cyBwbGF0Zm9ybXMsIGFuZCBTdW4gd29ya3N0YXRpb25zLiANCitFcXVpcG1lbnQgZm9yIHRoaXMgZGV2ZWxvcG1lbnQgd2FzIHByb3ZpZGVkIGJ5IFN1biBNaWNyb3N5c3RlbXMgd2l0aA0KK3N1cHBvcnQgZnJvbSB0aGUgQ29tbWlzc2lvbiBvbiBQcmVzZXJ2YXRpb24gYW5kIEFjY2Vzcy4NCisNCitEdXJpbmcgdGhlIHNob3ctYW5kLXRlbGwgc2Vzc2lvbiBvZiB0aGUgV29ya3Nob3Agb24gRWxlY3Ryb25pYyBUZXh0cywgYQ0KK3Byb3RvdHlwZSB2aWV3IHN0YXRpb24gd2lsbCBiZSBkZW1vbnN0cmF0ZWQuICBJbiBhZGRpdGlvbiwgYSBkaXNwbGF5IG9mDQorb3JpZ2luYWwgbGlicmFyeSBib29rcyB0aGF0IGhhdmUgYmVlbiBkaWdpdGl6ZWQgd2lsbCBiZSBhdmFpbGFibGUgZm9yDQorcmV2aWV3IHdpdGggYXNzb2NpYXRlZCBwcmludGVkIGNvcGllcyBmb3IgY29tcGFyaXNvbi4gIFRoZSBmaWZ0ZWVuLW1pbnV0ZQ0KK292ZXJ2aWV3IG9mIHRoZSBwcm9qZWN0IHdpbGwgaW5jbHVkZSBhIHNsaWRlIHByZXNlbnRhdGlvbiB0aGF0DQorY29uc3RpdHV0ZXMgYSAidG91ciIgb2YgdGhlIHByZXNlcnZhdGlvbiBkaWdpdGl6aW5nIHByb2Nlc3MuDQorDQorVGhlIGZpbmFsIG5ldHdvcmstY29ubmVjdGVkIHZlcnNpb24gb2YgdGhlIHZpZXdpbmcgc3RhdGlvbiB3aWxsIHByb3ZpZGUNCitsaWJyYXJ5IHVzZXJzIHdpdGggYW5vdGhlciBtZWNoYW5pc20gZm9yIGFjY2Vzc2luZyB0aGUgZGlnaXRhbCBsaWJyYXJ5LA0KK2FuZCB3aWxsIGFsc28gcHJvdmlkZSB0aGUgY2FwYWJpbGl0eSBvZiB2aWV3aW5nIGltYWdlcyBkaXJlY3RseS4gIFRoaXMNCit3aWxsIG5vdCByZXF1aXJlIHNwZWNpYWwgc29mdHdhcmUsIGFsdGhvdWdoIGEgcG93ZXJmdWwgY29tcHV0ZXIgd2l0aCBnb29kDQorZ3JhcGhpY3Mgd2lsbCBiZSBuZWVkZWQuDQorDQorVGhlIEpvaW50IFN0dWR5IGluIERpZ2l0YWwgUHJlc2VydmF0aW9uIGhhcyBnZW5lcmF0ZWQgYSBncmVhdCBkZWFsIG9mDQoraW50ZXJlc3QgaW4gdGhlIGxpYnJhcnkgY29tbXVuaXR5LiAgVW5mb3J0dW5hdGVseSwgb3IgcGVyaGFwcw0KK2ZvcnR1bmF0ZWx5LCB0aGlzIHByb2plY3Qgc2VydmVzIHRvIHJhaXNlIGEgdmFzdCBudW1iZXIgb2Ygb3RoZXIgaXNzdWVzDQorc3Vycm91bmRpbmcgdGhlIHVzZSBvZiBkaWdpdGFsIHRlY2hub2xvZ3kgZm9yIHRoZSBwcmVzZXJ2YXRpb24gYW5kIHVzZSBvZg0KK2RldGVyaW9yYXRpbmcgbGlicmFyeSBtYXRlcmlhbHMsIHdoaWNoIHN1YnNlcXVlbnQgcHJvamVjdHMgd2lsbCBuZWVkIHRvDQorZXhhbWluZS4gIE11Y2ggd29yayByZW1haW5zLg0KKw0KK1NFU1NJT04gSUlJDQorDQorSG93YXJkIEJFU1NFUiAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JraW5nIE11bHRpbWVkaWEgRGF0YWJhc2VzDQorDQorV2hhdCBkbyB3ZSBoYXZlIHRvIGNvbnNpZGVyIGluIGJ1aWxkaW5nIGFuZCBkaXN0cmlidXRpbmcgZGF0YWJhc2VzIG9mDQordmlzdWFsIG1hdGVyaWFscyBpbiBhIG11bHRpLXVzZXIgZW52aXJvbm1lbnQ/ICBUaGlzIHByZXNlbnRhdGlvbiBleGFtaW5lcw0KK2EgdmFyaWV0eSBvZiBjb25jZXJucyB0aGF0IG5lZWQgdG8gYmUgYWRkcmVzc2VkIGJlZm9yZSBhIG11bHRpbWVkaWENCitkYXRhYmFzZSBjYW4gYmUgc2V0IHVwIGluIGEgbmV0d29ya2VkIGVudmlyb25tZW50Lg0KKw0KK0luIHRoZSBwYXN0IGl0IGhhcyBub3QgYmVlbiBmZWFzaWJsZSB0byBpbXBsZW1lbnQgZGF0YWJhc2VzIG9mIHZpc3VhbA0KK21hdGVyaWFscyBpbiBzaGFyZWQtdXNlciBlbnZpcm9ubWVudHMgYmVjYXVzZSBvZiB0ZWNobm9sb2dpY2FsIGJhcnJpZXJzLiANCitFYWNoIG9mIHRoZSB0d28gYmFzaWMgbW9kZWxzIGZvciBtdWx0aS11c2VyIG11bHRpbWVkaWEgZGF0YWJhc2VzIGhhcw0KK3Bvc2VkIGl0cyBvd24gcHJvYmxlbS4gIFRoZSBhbmFsb2cgbXVsdGltZWRpYSBzdG9yYWdlIG1vZGVsIChyZXByZXNlbnRlZA0KK2J5IFByb2plY3QgQXRoZW5hJ3MgcGFyYWxsZWwgYW5hbG9nIGFuZCBkaWdpdGFsIG5ldHdvcmtzKSBoYXMgcmVxdWlyZWQgYW4NCitpbmNyZWRpYmx5IGNvbXBsZXggKGFuZCBleHBlbnNpdmUpIGluZnJhc3RydWN0dXJlLiAgVGhlIGVjb25vbWllcyBvZg0KK3NjYWxlIHRoYXQgbWFrZSBtdWx0aS11c2VyIHNldHVwcyBjaGVhcGVyIHBlciB1c2VyIHNlcnZlZCBkbyBub3Qgb3BlcmF0ZQ0KK2luIGFuIGVudmlyb25tZW50IHRoYXQgcmVxdWlyZXMgYSBjb21wdXRlciB3b3Jrc3RhdGlvbiwgdmlkZW9kaXNjIHBsYXllciwNCithbmQgdHdvIGRpc3BsYXkgZGV2aWNlcyBmb3IgZWFjaCB1c2VyLg0KKw0KK1RoZSBkaWdpdGFsIG11bHRpbWVkaWEgc3RvcmFnZSBtb2RlbCBoYXMgcmVxdWlyZWQgdmFzdCBhbW91bnRzIG9mIHN0b3JhZ2UNCitzcGFjZSAoYXMgbXVjaCBhcyBvbmUgZ2lnYWJ5dGUgcGVyIHRoaXJ0eSBzdGlsbCBpbWFnZXMpLiAgSW4gdGhlIHBhc3QgdGhlDQorY29zdCBvZiBzdWNoIGEgbGFyZ2UgYW1vdW50IG9mIHN0b3JhZ2Ugc3BhY2UgbWFkZSB0aGlzIG1vZGVsIGENCitwcm9oaWJpdGl2ZSBjaG9pY2UgYXMgd2VsbC4gIEJ1dCBwbHVuZ2luZyBzdG9yYWdlIGNvc3RzIGFyZSBmaW5hbGx5DQorbWFraW5nIHRoaXMgc2Vjb25kIGFsdGVybmF0aXZlIHZpYWJsZS4NCisNCitJZiBzdG9yYWdlIG5vIGxvbmdlciBwb3NlcyBzdWNoIGFuIGltcGVkaW1lbnQsIHdoYXQgZG8gd2UgbmVlZCB0bw0KK2NvbnNpZGVyIGluIGJ1aWxkaW5nIGRpZ2l0YWxseSBzdG9yZWQgbXVsdGktdXNlciBkYXRhYmFzZXMgb2YgdmlzdWFsDQorbWF0ZXJpYWxzPyAgVGhpcyBwcmVzZW50YXRpb24gd2lsbCBleGFtaW5lIHRoZSBuZXR3b3JraW5nIGFuZA0KK3RlbGVjb21tdW5pY2F0aW9uIGNvbnN0cmFpbnRzIHRoYXQgbXVzdCBiZSBvdmVyY29tZSBiZWZvcmUgc3VjaCBkYXRhYmFzZXMNCitjYW4gYmVjb21lIGNvbW1vbnBsYWNlIGFuZCB1c2VmdWwgdG8gYSBsYXJnZSBudW1iZXIgb2YgcGVvcGxlLg0KKw0KK1RoZSBrZXkgcHJvYmxlbSBpcyB0aGUgdmFzdCBzaXplIG9mIG11bHRpbWVkaWEgZG9jdW1lbnRzLCBhbmQgaG93IHRoaXMNCithZmZlY3RzIG5vdCBvbmx5IHN0b3JhZ2UgYnV0IHRlbGVjb21tdW5pY2F0aW9ucyB0cmFuc21pc3Npb24gdGltZS4gDQorQW55dGhpbmcgc2xvd2VyIHRoYW4gVC0xIHNwZWVkIGlzIGltcHJhY3RpY2FsIGZvciBmaWxlcyBvZiAxIG1lZ2FieXRlIG9yDQorbGFyZ2VyICh3aGljaCBpcyBsaWtlbHkgdG8gYmUgc21hbGwgZm9yIGEgbXVsdGltZWRpYSBkb2N1bWVudCkuICBGb3INCitpbnN0YW5jZSwgZXZlbiBvbiBhIDU2IEtiIGxpbmUgaXQgd291bGQgdGFrZSB0aHJlZSBtaW51dGVzIHRvIHRyYW5zZmVyIGENCisxLW1lZ2FieXRlIGZpbGUuICBBbmQgdGhlc2UgZmlndXJlcyBhc3N1bWUgaWRlYWwgY2lyY3Vtc3RhbmNlcywgYW5kIGRvDQorbm90IHRha2UgaW50byBjb25zaWRlcmF0aW9uIG90aGVyIHVzZXJzIGNvbnRlbmRpbmcgZm9yIG5ldHdvcmsgYmFuZHdpZHRoLA0KK2Rpc2sgYWNjZXNzIHRpbWUsIG9yIHRoZSB0aW1lIG5lZWRlZCBmb3IgcmVtb3RlIGRpc3BsYXkuICBDdXJyZW50IGNvbW1vbg0KK3RlbGVwaG9uZSB0cmFuc21pc3Npb24gcmF0ZXMgd291bGQgYmUgY29tcGxldGVseSBpbXByYWN0aWNhbDsgZmV3IHVzZXJzDQord291bGQgYmUgd2lsbGluZyB0byB3YWl0IHRoZSBob3VyIG5lY2Vzc2FyeSB0byB0cmFuc21pdCBhIHNpbmdsZSBpbWFnZSBhdA0KKzI0MDAgYmF1ZC4NCisNCitUaGlzIG5lY2Vzc2l0YXRlcyBjb21wcmVzc2lvbiwgd2hpY2ggaXRzZWxmIHJhaXNlcyBhIG51bWJlciBvZiBvdGhlcg0KK2lzc3Vlcy4gIEluIG9yZGVyIHRvIGRlY3JlYXNlIGZpbGUgc2l6ZXMgc2lnbmlmaWNhbnRseSwgd2UgbXVzdCBlbXBsb3kNCitsb3NzeSBjb21wcmVzc2lvbiBhbGdvcml0aG1zLiAgQnV0IGhvdyBtdWNoIHF1YWxpdHkgY2FuIHdlIGFmZm9yZCB0bw0KK2xvc2U/ICBUbyBkYXRlIHRoZXJlIGhhcyBiZWVuIG9ubHkgb25lIHNpZ25pZmljYW50IHN0dWR5IGRvbmUgb2YNCitpbWFnZS1xdWFsaXR5IG5lZWRzIGZvciBhIHBhcnRpY3VsYXIgdXNlciBncm91cCwgYW5kIHRoaXMgc3R1ZHkgZGlkIG5vdA0KK2xvb2sgYXQgbG9zcyByZXN1bHRpbmcgZnJvbSBjb21wcmVzc2lvbi4gIE9ubHkgYWZ0ZXIgaWRlbnRpZnlpbmcNCitpbWFnZS1xdWFsaXR5IG5lZWRzIGNhbiB3ZSBiZWdpbiB0byBhZGRyZXNzIHN0b3JhZ2UgYW5kIG5ldHdvcmsgYmFuZHdpZHRoDQorbmVlZHMuDQorDQorRXhwZXJpZW5jZSB3aXRoIFgtV2luZG93cy1iYXNlZCBhcHBsaWNhdGlvbnMgKHN1Y2ggYXMgSW1hZ2VxdWVyeSwgdGhlDQorVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhIGF0IEJlcmtlbGV5IGltYWdlIGRhdGFiYXNlKSBkZW1vbnN0cmF0ZXMgdGhlDQordXRpbGl0eSBvZiBhIGNsaWVudC1zZXJ2ZXIgdG9wb2xvZ3ksIGJ1dCBhbHNvIHBvaW50cyB0byB0aGUgbGltaXRhdGlvbiBvZg0KK2N1cnJlbnQgc29mdHdhcmUgZm9yIGEgZGlzdHJpYnV0ZWQgZW52aXJvbm1lbnQuICBGb3IgZXhhbXBsZSwNCithcHBsaWNhdGlvbnMgbGlrZSBJbWFnZXF1ZXJ5IGNhbiBpbmNvcnBvcmF0ZSBjb21wcmVzc2lvbiwgYnV0IGN1cnJlbnQgWA0KK2ltcGxlbWVudGF0aW9ucyBkbyBub3QgcGVybWl0IGRlY29tcHJlc3Npb24gYXQgdGhlIGVuZCB1c2VyJ3MNCit3b3Jrc3RhdGlvbi4gIFN1Y2ggZGVjb21wcmVzc2lvbiBhdCB0aGUgaG9zdCBjb21wdXRlciBhbGxldmlhdGVzIHN0b3JhZ2UNCitjYXBhY2l0eSBwcm9ibGVtcyB3aGlsZSBkb2luZyBub3RoaW5nIHRvIGFkZHJlc3MgcHJvYmxlbXMgb2YNCit0ZWxlY29tbXVuaWNhdGlvbnMgYmFuZHdpZHRoLg0KKw0KK1dlIG5lZWQgdG8gZXhhbWluZSB0aGUgZWZmZWN0cyBvbiBuZXR3b3JrIHRocm91Z2gtcHV0IG9mIG1vdmluZw0KK211bHRpbWVkaWEgZG9jdW1lbnRzIGFyb3VuZCBvbiBhIG5ldHdvcmsuICBXZSBuZWVkIHRvIGV4YW1pbmUgdmFyaW91cw0KK3RvcG9sb2dpZXMgdGhhdCB3aWxsIGhlbHAgdXMgYXZvaWQgYm90dGxlbmVja3MgYXJvdW5kIHNlcnZlcnMgYW5kDQorZ2F0ZXdheXMuICBFeHBlcmllbmNlIHdpdGggYXBwbGljYXRpb25zIHN1Y2ggYXMgdGhlc2UgcmFpc2Ugc3RpbGwgYnJvYWRlcg0KK3F1ZXN0aW9ucy4gSG93IGNsb3NlbHkgaXMgdGhlIG11bHRpbWVkaWEgZG9jdW1lbnQgdGllZCB0byB0aGUgc29mdHdhcmUNCitmb3Igdmlld2luZyBpdD8gIENhbiBpdCBiZSBhY2Nlc3NlZCBhbmQgdmlld2VkIGZyb20gb3RoZXIgYXBwbGljYXRpb25zPyANCitFeHBlcmllbmNlIHdpdGggdGhlIE1BUkMgZm9ybWF0IChhbmQgbW9yZSByZWNlbnRseSB3aXRoIHRoZSBaMzkuNTANCitwcm90b2NvbHMpIHNob3dzIGhvdyB1c2VmdWwgaXQgY2FuIGJlIHRvIHN0b3JlIGRvY3VtZW50cyBpbiBhIGZvcm0gaW4NCit3aGljaCB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBieSBhIHZhcmlldHkgb2YgYXBwbGljYXRpb24gc29mdHdhcmUuDQorDQorRmluYWxseSwgZnJvbSBhbiBpbnRlbGxlY3R1YWwtYWNjZXNzIHN0YW5kcG9pbnQsIHdlIG5lZWQgdG8gYWRkcmVzcyB0aGUNCitpc3N1ZSBvZiBwcm92aWRpbmcgYWNjZXNzIHRvIHRoZXNlIG11bHRpbWVkaWEgZG9jdW1lbnRzIGluDQoraW50ZXJkaXNjaXBsaW5hcnkgZW52aXJvbm1lbnRzLiAgV2UgbmVlZCB0byBleGFtaW5lIHRlcm1pbm9sb2d5IGFuZA0KK2luZGV4aW5nIHN0cmF0ZWdpZXMgdGhhdCB3aWxsIGFsbG93IHVzIHRvIHByb3ZpZGUgYWNjZXNzIHRvIHRoaXMgbWF0ZXJpYWwNCitpbiBhIGNyb3NzLWRpc2NpcGxpbmFyeSB3YXkuDQorDQorUm9uYWxkIExBUlNFTiAgICAgICAgICAgIERpcmVjdGlvbnMgaW4gSGlnaC1QZXJmb3JtYW5jZSBOZXR3b3JraW5nIGZvcg0KKyAgICAgICAgICAgICAgICAgICAgICAgICBMaWJyYXJpZXMNCisNCitUaGUgcGFjZSBhdCB3aGljaCBjb21wdXRpbmcgdGVjaG5vbG9neSBoYXMgYWR2YW5jZWQgb3ZlciB0aGUgcGFzdCBmb3J0eQ0KK3llYXJzIHNob3dzIG5vIHNpZ24gb2YgYWJhdGluZy4gIFJvdWdobHkgc3BlYWtpbmcsIGVhY2ggZml2ZS15ZWFyIHBlcmlvZA0KK2hhcyB5aWVsZGVkIGFuIG9yZGVyLW9mLW1hZ25pdHVkZSBpbXByb3ZlbWVudCBpbiBwcmljZSBhbmQgcGVyZm9ybWFuY2Ugb2YNCitjb21wdXRpbmcgZXF1aXBtZW50LiAgTm8gZnVuZGFtZW50YWwgaHVyZGxlcyBhcmUgbGlrZWx5IHRvIHByZXZlbnQgdGhpcw0KK3BhY2UgZnJvbSBjb250aW51aW5nIGZvciBhdCBsZWFzdCB0aGUgbmV4dCBkZWNhZGUuICBJdCBpcyBvbmx5IGluIHRoZQ0KK3Bhc3QgZml2ZSB5ZWFycywgdGhvdWdoLCB0aGF0IGNvbXB1dGluZyBoYXMgYmVjb21lIHViaXF1aXRvdXMgaW4NCitsaWJyYXJpZXMsIGFmZmVjdGluZyBhbGwgc3RhZmYgYW5kIHBhdHJvbnMsIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuDQorDQorRHVyaW5nIHRoZXNlIHNhbWUgZml2ZSB5ZWFycywgY29tbXVuaWNhdGlvbnMgcmF0ZXMgb24gdGhlIEludGVybmV0LCB0aGUNCitwcmluY2lwYWwgYWNhZGVtaWMgY29tcHV0aW5nIG5ldHdvcmssIGhhdmUgZ3Jvd24gZnJvbSA1NiBrYnBzIHRvIDEuNQ0KK01icHMsIGFuZCB0aGUgTlNGTmV0IGJhY2tib25lIGlzIG5vdyBydW5uaW5nIDQ1IE1icHMuICBPdmVyIHRoZSBuZXh0IGZpdmUNCit5ZWFycywgY29tbXVuaWNhdGlvbiByYXRlcyBvbiB0aGUgYmFja2JvbmUgYXJlIGV4cGVjdGVkIHRvIGV4Y2VlZCAxIEdicHMuIA0KK0dyb3d0aCBpbiBib3RoIHRoZSBwb3B1bGF0aW9uIG9mIG5ldHdvcmsgdXNlcnMgYW5kIHRoZSB2b2x1bWUgb2YgbmV0d29yaw0KK3RyYWZmaWMgIGhhcyBjb250aW51ZWQgdG8gZ3JvdyBnZW9tZXRyaWNhbGx5LCBhdCByYXRlcyBhcHByb2FjaGluZyAxNQ0KK3BlcmNlbnQgcGVyIG1vbnRoLiAgVGhpcyBmbG9vZCBvZiBjYXBhY2l0eSBhbmQgdXNlLCBsaWtlbmVkIGJ5IHNvbWUgdG8NCisiZHJpbmtpbmcgZnJvbSBhIGZpcmVob3NlLCIgIGNyZWF0ZXMgaW1tZW5zZSBvcHBvcnR1bml0aWVzIGFuZCBjaGFsbGVuZ2VzDQorZm9yIGxpYnJhcmllcy4gIExpYnJhcmllcyBtdXN0IGFudGljaXBhdGUgdGhlIGZ1dHVyZSBpbXBsaWNhdGlvbnMgb2YgdGhpcw0KK3RlY2hub2xvZ3ksIHBhcnRpY2lwYXRlIGluIGl0cyBkZXZlbG9wbWVudCwgYW5kIGRlcGxveSBpdCB0byBlbnN1cmUNCithY2Nlc3MgdG8gdGhlIHdvcmxkJ3MgaW5mb3JtYXRpb24gcmVzb3VyY2VzLg0KKw0KK1RoZSBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGluZm9ybWF0aW9uIGFnZSBpcyBiZWluZyBwdXQgaW4gcGxhY2UuIA0KK0xpYnJhcmllcyBmYWNlIHN0cmF0ZWdpYyBkZWNpc2lvbnMgYWJvdXQgdGhlaXIgcm9sZSBpbiB0aGUgZGV2ZWxvcG1lbnQsDQorZGVwbG95bWVudCwgYW5kIHVzZSBvZiB0aGlzIGluZnJhc3RydWN0dXJlLiAgVGhlIGVtZXJnaW5nIGluZnJhc3RydWN0dXJlDQoraXMgbXVjaCBtb3JlIHRoYW4gY29tcHV0ZXJzIGFuZCBjb21tdW5pY2F0aW9uIGxpbmVzLiAgSXQgaXMgbW9yZSB0aGFuIHRoZQ0KK2FiaWxpdHkgdG8gY29tcHV0ZSBhdCBhIHJlbW90ZSBzaXRlLCBzZW5kIGVsZWN0cm9uaWMgbWFpbCB0byBhIHBlZXINCithY3Jvc3MgdGhlIGNvdW50cnksIG9yIG1vdmUgYSBmaWxlIGZyb20gb25lIGxpYnJhcnkgdG8gYW5vdGhlci4gIFRoZSBuZXh0DQorZml2ZSB5ZWFycyB3aWxsIHdpdG5lc3Mgc3Vic3RhbnRpYWwgZGV2ZWxvcG1lbnQgb2YgdGhlIGluZm9ybWF0aW9uDQoraW5mcmFzdHJ1Y3R1cmUgb2YgdGhlIG5ldHdvcmsuDQorDQorSW4gb3JkZXIgdG8gcHJvdmlkZSBhcHByb3ByaWF0ZSBsZWFkZXJzaGlwLCBsaWJyYXJ5IHByb2Zlc3Npb25hbHMgbXVzdA0KK2hhdmUgYSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nIG9mIGFuZCBhcHByZWNpYXRpb24gZm9yIGNvbXB1dGVyDQorbmV0d29ya2luZywgZnJvbSBsb2NhbCBhcmVhIG5ldHdvcmtzIHRvIHRoZSBOYXRpb25hbCBSZXNlYXJjaCBhbmQNCitFZHVjYXRpb24gTmV0d29yayAoTlJFTikuICBUaGlzIHByZXNlbnRhdGlvbiBhZGRyZXNzZXMgdGhlc2UNCitmdW5kYW1lbnRhbHMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gbGlicmFyaWVzIHRvZGF5IGFuZCBpbiB0aGUgbmVhcg0KK2Z1dHVyZS4NCisNCitFZHdpbiBCUk9XTlJJR0cgICAgICAgICAgICAgICBFbGVjdHJvbmljIExpYnJhcnkgVmlzaW9ucyBhbmQgUmVhbGl0aWVzDQorDQorVGhlIGVsZWN0cm9uaWMgbGlicmFyeSBoYXMgYmVlbiBhIHZpc2lvbiBkZXNpcmVkIGJ5IG1hbnktLWFuZCByZWplY3RlZCBieQ0KK3NvbWUtLXNpbmNlIFZhbm5ldmFyIEJ1c2ggY29pbmVkIHRoZSB0ZXJtIG1lbWV4IHRvIGRlc2NyaWJlIGFuIGF1dG9tYXRlZCwNCitpbnRlbGxpZ2VudCwgcGVyc29uYWwgaW5mb3JtYXRpb24gc3lzdGVtLiAgVmFyaWF0aW9ucyBvbiB0aGlzIHZpc2lvbiBoYXZlDQoraW5jbHVkZWQgVGVkIE5lbHNvbidzIFhhbmFkYXUsIEFsYW4gS2F5J3MgRHluYWJvb2ssIGFuZCBMYW5jYXN0ZXIncw0KKyJwYXBlcmxlc3MgbGlicmFyeSwiIHdpdGggdGhlIG1vc3QgcmVjZW50IGluY2FybmF0aW9uIGJlaW5nIHRoZQ0KKyJLbm93bGVkZ2UgTmF2aWdhdG9yIiBkZXNjcmliZWQgYnkgSm9obiBTY3VsbHkgb2YgQXBwbGUuICBCdXQgdGhlIHJlYWxpdHkNCitvZiBsaWJyYXJ5IHNlcnZpY2UgaGFzIGJlZW4gbGVzcyB2aXNpb25hcnkgYW5kIHRoZSBsZWFwIHRvIHRoZSBlbGVjdHJvbmljDQorbGlicmFyeSBoYXMgZWx1ZGVkIHVuaXZlcnNpdGllcywgcHVibGlzaGVycywgYW5kIGluZm9ybWF0aW9uIHRlY2hub2xvZ3kNCitmaWxlcy4NCisNCitUaGUgTWVtZXggUmVzZWFyY2ggSW5zdGl0dXRlIChNZW1SSSksIGFuIGluZGVwZW5kZW50LCBub25wcm9maXQgcmVzZWFyY2gNCithbmQgZGV2ZWxvcG1lbnQgb3JnYW5pemF0aW9uLCBoYXMgY3JlYXRlZCBhbiBFbGVjdHJvbmljIExpYnJhcnkgUHJvZ3JhbQ0KK29mIHNoYXJlZCByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgY29sbGVjdGl2ZSB2aXNpb24NCittb3JlIGNvbmNyZXRlLiAgVGhlIHByb2dyYW0gaXMgd29ya2luZyB0b3dhcmQgdGhlIGNyZWF0aW9uIG9mIGxhcmdlLA0KK2luZGV4ZWQgcHVibGljbHkgYXZhaWxhYmxlIGVsZWN0cm9uaWMgaW1hZ2UgY29sbGVjdGlvbnMgb2YgcHVibGlzaGVkDQorZG9jdW1lbnRzIGluIGFjYWRlbWljLCBzcGVjaWFsLCBhbmQgcHVibGljIGxpYnJhcmllcy4gIFRoaXMgc3RyYXRlZ2ljDQorcGxhbiBpcyB0aGUgcmVzdWx0IG9mIHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgcHJvZ3JhbSwgd2hpY2ggaGFzIGJlZW4gYW4NCitpbnZlc3RpZ2F0aW9uIG9mIHRoZSBpbmZvcm1hdGlvbiB0ZWNobm9sb2dpZXMgYXZhaWxhYmxlIHRvIHN1cHBvcnQgc3VjaA0KK2FuIGVmZm9ydCwgdGhlIGVjb25vbWljIHBhcmFtZXRlcnMgb2YgZWxlY3Ryb25pYyBzZXJ2aWNlIGNvbXBhcmVkIHRvDQordHJhZGl0aW9uYWwgbGlicmFyeSBvcGVyYXRpb25zLCBhbmQgdGhlIGJ1c2luZXNzIGFuZCBwb2xpdGljYWwgZmFjdG9ycw0KK2FmZmVjdGluZyB0aGUgc2hpZnQgZnJvbSBwcmludCBkaXN0cmlidXRpb24gdG8gZWxlY3Ryb25pYyBuZXR3b3JrZWQNCithY2Nlc3MuDQorDQorVGhlIHN0cmF0ZWdpYyBwbGFuIGVudmlzaW9ucyBhIGNvbWJpbmF0aW9uIG9mIHB1YmxpY2x5IHNlYXJjaGFibGUgYWNjZXNzDQorZGF0YWJhc2VzLCBpbWFnZSAoYW5kIHRleHQpIGRvY3VtZW50IGNvbGxlY3Rpb25zIHN0b3JlZCBvbiBuZXR3b3JrICJmaWxlDQorc2VydmVycywiIGxvY2FsIGFuZCByZW1vdGUgbmV0d29yayBhY2Nlc3MsIGFuZCBhbiBpbnRlbGxlY3R1YWwgcHJvcGVydHkNCittYW5hZ2VtZW50LWNvbnRyb2wgc3lzdGVtLiAgVGhpcyBjb21iaW5hdGlvbiBvZiB0ZWNobm9sb2d5IGFuZA0KK2luZm9ybWF0aW9uIGNvbnRlbnQgaXMgZGVmaW5lZCBpbiB0aGlzIHBsYW4gYXMgYW4gRS1saWJyYXJ5IG9yIEUtbGlicmFyeQ0KK2NvbGxlY3Rpb24uICBTb21lIHBhcnRpY2lwYXRpbmcgc3BvbnNvcnMgYXJlIGFscmVhZHkgZGV2ZWxvcGluZyBwcm9qZWN0cw0KK2Jhc2VkIG9uIE1lbVJJJ3MgcmVjb21tZW5kZWQgZGlyZWN0aW9ucy4NCisNCitUaGUgRS1saWJyYXJ5IHN0cmF0ZWd5IHByb2plY3RlZCBpbiB0aGlzIHBsYW4gaXMgYSB2aXNpb25hcnkgb25lIHRoYXQgY2FuDQorZW5hYmxlIG1ham9yIGNoYW5nZXMgYW5kIGltcHJvdmVtZW50cyBpbiBhY2FkZW1pYywgcHVibGljLCBhbmQgc3BlY2lhbA0KK2xpYnJhcnkgc2VydmljZS4gIFRoaXMgdmlzaW9uIGlzLCB0aG91Z2gsIG9uZSB0aGF0IGNhbiBiZSByZWFsaXplZCB3aXRoDQordG9kYXkncyB0ZWNobm9sb2d5LiAgQXQgdGhlIHNhbWUgdGltZSwgaXQgd2lsbCBjaGFsbGVuZ2UgdGhlIHBvbGl0aWNhbA0KK2FuZCBzb2NpYWwgc3RydWN0dXJlIHdpdGhpbiB3aGljaCBsaWJyYXJpZXMgb3BlcmF0ZTogIGluIGFjYWRlbWljDQorbGlicmFyaWVzLCB0aGUgdHJhZGl0aW9uYWwgZW1waGFzaXMgb24gbG9jYWwgY29sbGVjdGlvbnMsIGV4dGVuZGluZyB0bw0KK2FjY3JlZGl0YXRpb24gaXNzdWVzOyBpbiBwdWJsaWMgbGlicmFyaWVzLCB0aGUgcG90ZW50aWFsIG9mIGVsZWN0cm9uaWMNCiticmFuY2ggYW5kIGNlbnRyYWwgbGlicmFyaWVzIGZ1bGx5IGF2YWlsYWJsZSB0byB0aGUgcHVibGljOyBhbmQgZm9yDQorc3BlY2lhbCBsaWJyYXJpZXMsIG5ldyBvcHBvcnR1bml0aWVzIGZvciBzaGFyZWQgY29sbGVjdGlvbnMgYW5kIG5ldHdvcmtzLg0KKw0KK1RoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGlzIHN0cmF0ZWdpYyBwbGFuIGhhcyBiZWVuIGRldmVsb3BlZCBpcywgYXQNCit0aGUgbW9tZW50LCBkb21pbmF0ZWQgYnkgYSBzZW5zZSBvZiBsaWJyYXJ5IGxpbWl0cy4gIFRoZSBjb250aW51ZWQNCitleHBhbnNpb24gYW5kIHJhcGlkIGdyb3d0aCBvZiBsb2NhbCBhY2FkZW1pYyBsaWJyYXJ5IGNvbGxlY3Rpb25zIGlzIG5vdw0KK2NsZWFybHkgYXQgYW4gZW5kLiAgQ29ycG9yYXRlIGxpYnJhcmllcywgYW5kIGV2ZW4gbGF3IGxpYnJhcmllcywgYXJlDQorZmFjZWQgd2l0aCBvcGVyYXRpbmcgd2l0aGluIGEgZGlmZmljdWx0IGVjb25vbWljIGNsaW1hdGUsIGFzIHdlbGwgYXMgd2l0aA0KK3ZlcnkgYWN0aXZlIGNvbXBldGl0aW9uIGZyb20gY29tbWVyY2lhbCBpbmZvcm1hdGlvbiBzb3VyY2VzLiAgRm9yDQorZXhhbXBsZSwgcHVibGljIGxpYnJhcmllcyBtYXkgYmUgc2VlbiBhcyBhIGRlc2lyYWJsZSBidXQgbm90IGNyaXRpY2FsDQorbXVuaWNpcGFsIHNlcnZpY2UgaW4gYSB0aW1lIHdoZW4gdGhlIGJ1ZGdldHMgb2Ygc2FmZXR5IGFuZCBoZWFsdGgNCithZ2VuY2llcyBhcmUgYmVpbmcgY3V0IGJhY2suDQorDQorRnVydGhlciwgbGlicmFyaWVzIGluIGdlbmVyYWwgaGF2ZSBhIHZlcnkgaGlnaCBsYWJvci10by1jb3N0IHJhdGlvIGluDQordGhlaXIgYnVkZ2V0cywgYW5kIGxhYm9yIGNvc3RzIGFyZSBzdGlsbCBpbmNyZWFzaW5nLCBub3R3aXRoc3RhbmRpbmcNCithdXRvbWF0aW9uIGludmVzdG1lbnRzLiAgSXQgaXMgZGlmZmljdWx0IGZvciBsaWJyYXJpZXMgdG8gb2J0YWluIGNhcGl0YWwsDQorc3RhcnR1cCwgb3Igc2VlZCBmdW5kaW5nIGZvciBpbm5vdmF0aXZlIGFjdGl2aXRpZXMsIGFuZCB0aG9zZQ0KK3RlY2hub2xvZ3ktaW50ZW5zaXZlIGluaXRpYXRpdmVzIHRoYXQgb2ZmZXIgdGhlIHBvdGVudGlhbCBvZiBkZWNyZWFzZWQNCitsYWJvciBjb3N0cyBjYW4gcHJvdm9rZSB0aGUgb3Bwb3NpdGlvbiBvZiBsaWJyYXJ5IHN0YWZmLg0KKw0KK0hvd2V2ZXIsIGxpYnJhcmllcyBoYXZlIGFjaGlldmVkIHNvbWUgY29uc2lkZXJhYmxlIHN1Y2Nlc3NlcyBpbiB0aGUgcGFzdA0KK3R3byBkZWNhZGVzIGJ5IGltcHJvdmluZyBib3RoIHRoZWlyIHNlcnZpY2UgYW5kIHRoZWlyIGNyZWRpYmlsaXR5IHdpdGhpbg0KK3RoZWlyIG9yZ2FuaXphdGlvbnMtLWFuZCB0aGVzZSBwb3NpdGl2ZSBjaGFuZ2VzIGhhdmUgYmVlbiBhY2NvbXBsaXNoZWQNCittb3N0bHkgd2l0aCBqdWRpY2lvdXMgdXNlIG9mIGluZm9ybWF0aW9uIHRlY2hub2xvZ2llcy4gIFRoZSBhZHZhbmNlcyBpbg0KK2NvbXB1dGluZyBhbmQgaW5mb3JtYXRpb24gdGVjaG5vbG9neSBoYXZlIGJlZW4gd2VsbC1jaHJvbmljbGVkOiAgdGhlDQorY29udGludWluZyBwcmVjaXBpdG91cyBkcm9wIGluIGNvbXB1dGluZyBjb3N0cywgdGhlIGdyb3d0aCBvZiB0aGUNCitJbnRlcm5ldCBhbmQgcHJpdmF0ZSBuZXR3b3JrcywgYW5kIHRoZSBleHBsb3NpdmUgaW5jcmVhc2UgaW4gcHVibGljbHkNCithdmFpbGFibGUgaW5mb3JtYXRpb24gZGF0YWJhc2VzLg0KKw0KK0ZvciBleGFtcGxlLCBPQ0xDIGhhcyBiZWNvbWUgb25lIG9mIHRoZSBsYXJnZXN0IGNvbXB1dGVyIG5ldHdvcmsNCitvcmdhbml6YXRpb25zIGluIHRoZSB3b3JsZCBieSBjcmVhdGluZyBhIGNvb3BlcmF0aXZlIGNhdGFsb2dpbmcgbmV0d29yaw0KK29mIG1vcmUgdGhhbiA2LDAwMCBsaWJyYXJpZXMgd29ybGR3aWRlLiAgT24tbGluZSBwdWJsaWMgYWNjZXNzIGNhdGFsb2dzDQorbm93IHNlcnZlIG1pbGxpb25zIG9mIHVzZXJzIG9uIG1vcmUgdGhhbiA1MCwwMDAgZGVkaWNhdGVkIHRlcm1pbmFscyBpbg0KK3RoZSBVbml0ZWQgU3RhdGVzIGFsb25lLiAgVGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSBNRUxWWUwgb24tbGluZQ0KK2NhdGFsb2cgc3lzdGVtIGhhcyBub3cgZXhwYW5kZWQgaW50byBhbiBpbmRleCBkYXRhYmFzZSByZWZlcmVuY2Ugc2VydmljZQ0KK2FuZCBzdXBwb3J0cyBtb3JlIHRoYW4gc2l4IG1pbGxpb24gc2VhcmNoZXMgYSB5ZWFyLiAgQW5kLCBsaWJyYXJpZXMgaGF2ZQ0KK2JlY29tZSB0aGUgbGFyZ2VzdCBncm91cCBvZiBjdXN0b21lcnMgb2YgQ0QtUk9NIHB1Ymxpc2hpbmcgdGVjaG5vbG9neTsNCittb3JlIHRoYW4gMzAsMDAwIG9wdGljYWwgbWVkaWEgcHVibGljYXRpb25zIHN1Y2ggYXMgdGhvc2Ugb2ZmZXJlZCBieQ0KK0luZm9UcmFjIGFuZCBTaWx2ZXIgUGxhdHRlciBhcmUgc3Vic2NyaWJlZCB0byBieSBVLlMuIGxpYnJhcmllcy4NCisNCitUaGlzIG1hcmNoIG9mIHRlY2hub2xvZ3kgY29udGludWVzIGFuZCBpbiB0aGUgbmV4dCBkZWNhZGUgd2lsbCByZXN1bHQgaW4NCitmdXJ0aGVyIGlubm92YXRpb25zIHRoYXQgYXJlIGV4dHJlbWVseSBkaWZmaWN1bHQgdG8gcHJlZGljdC4gIFdoYXQgaXMNCitjbGVhciBpcyB0aGF0IGxpYnJhcmllcyBjYW4gbm93IGdvIGJleW9uZCBhdXRvbWF0aW9uIG9mIHRoZWlyIG9yZGVyIGZpbGVzDQorYW5kIGNhdGFsb2dzIHRvIGF1dG9tYXRpb24gb2YgdGhlaXIgY29sbGVjdGlvbnMgdGhlbXNlbHZlcy0tYW5kIGl0IGlzDQorcG9zc2libGUgdG8gY2lyY3VtdmVudCB0aGUgZmlzY2FsIGxpbWl0YXRpb25zIHRoYXQgYXBwZWFyIHRvIG9idGFpbg0KK3RvZGF5Lg0KKw0KK1RoaXMgRWxlY3Ryb25pYyBMaWJyYXJ5IFN0cmF0ZWdpYyBQbGFuIHJlY29tbWVuZHMgYSBwYXJhZGlnbSBzaGlmdCBpbg0KK2xpYnJhcnkgc2VydmljZSwgYW5kIGRlbW9uc3RyYXRlcyB0aGUgc3RlcHMgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgaW1wcm92ZWQNCitsaWJyYXJ5IHNlcnZpY2VzIHdpdGggbGltaXRlZCBjYXBhY2l0aWVzIGFuZCBvcGVyYXRpbmcgaW52ZXN0bWVudHMuDQorDQorU0VTU0lPTiBJVi1BDQorDQorQW5uZSBLRU5ORVkNCisNCitUaGUgQ29ybmVsbC9YZXJveCBKb2ludCBTdHVkeSBpbiBEaWdpdGFsIFByZXNlcnZhdGlvbiByZXN1bHRlZCBpbiB0aGUNCityZWNvcmRpbmcgb2YgMSwwMDAgYnJpdHRsZSBib29rcyBhcyA2MDAtZHBpIGRpZ2l0YWwgaW1hZ2VzIGFuZCB0aGUNCitwcm9kdWN0aW9uLCBvbiBkZW1hbmQsIG9mIGhpZ2gtcXVhbGl0eSBhbmQgYXJjaGl2YWxseSBzb3VuZCBwYXBlcg0KK3JlcGxhY2VtZW50cy4gIFRoZSBwcm9qZWN0LCB3aGljaCB3YXMgc3VwcG9ydGVkIGJ5IHRoZSBDb21taXNzaW9uIG9uDQorUHJlc2VydmF0aW9uIGFuZCBBY2Nlc3MsIGFsc28gaW52ZXN0aWdhdGVkIHNvbWUgb2YgdGhlIGlzc3VlcyBzdXJyb3VuZGluZw0KK3NjYW5uaW5nLCBzdG9yaW5nLCByZXRyaWV2aW5nLCBhbmQgcHJvdmlkaW5nIGFjY2VzcyB0byBkaWdpdGFsIGltYWdlcyBpbg0KK2EgbmV0d29yayBlbnZpcm9ubWVudC4NCisNCitBbm5lIEtlbm5leSB3aWxsIGZvY3VzIG9uIHNvbWUgb2YgdGhlIGlzc3VlcyBzdXJyb3VuZGluZyBkaXJlY3Qgc2Nhbm5pbmcNCithcyBpZGVudGlmaWVkIGluIHRoZSBDb3JuZWxsIFhlcm94IFByb2plY3QuICBBbW9uZyB0aG9zZSB0byBiZSBkaXNjdXNzZWQNCithcmU6ICBpbWFnZSB2ZXJzdXMgdGV4dCBjYXB0dXJlOyBpbmRleGluZyBhbmQgYWNjZXNzOyBpbWFnZS1jYXB0dXJlDQorY2FwYWJpbGl0aWVzOyBhIGNvbXBhcmlzb24gdG8gcGhvdG9jb3B5IGFuZCBtaWNyb2ZpbG07IHByb2R1Y3Rpb24gYW5kDQorY29zdCBhbmFseXNpczsgc3RvcmFnZSBmb3JtYXRzLCBwcm90b2NvbHMsIGFuZCBzdGFuZGFyZHM7IGFuZCB0aGUgdXNlIG9mDQordGhpcyBzY2FubmluZyB0ZWNobm9sb2d5IGZvciBwcmVzZXJ2YXRpb24gcHVycG9zZXMuDQorDQorVGhlIDYwMC1kcGkgZGlnaXRhbCBpbWFnZXMgcHJvZHVjZWQgaW4gdGhlIENvcm5lbGwgWGVyb3ggUHJvamVjdCBwcm92ZWQNCitoaWdobHkgYWNjZXB0YWJsZSBmb3IgY3JlYXRpbmcgcGFwZXIgcmVwbGFjZW1lbnRzIG9mIGRldGVyaW9yYXRpbmcNCitvcmlnaW5hbHMuICBUaGUgMSwwMDAgc2Nhbm5lZCB2b2x1bWVzIHByb3ZpZGVkIGFuIGFycmF5IG9mIGltYWdlLWNhcHR1cmUNCitjaGFsbGVuZ2VzIHRoYXQgYXJlIGNvbW1vbiB0byBuaW5ldGVlbnRoLWNlbnR1cnkgcHJpbnRpbmcgdGVjaG5pcXVlcyBhbmQNCitlbWJyaXR0bGVkIG1hdGVyaWFsLCBhbmQgdGhhdCBkZWZ5IHRoZSB1c2Ugb2YgdGV4dC1jb252ZXJzaW9uIHByb2Nlc3Nlcy4gDQorVGhlc2UgY2hhbGxlbmdlcyBpbmNsdWRlIGRpbWluaXNoZWQgY29udHJhc3QgYmV0d2VlbiB0ZXh0IGFuZCBiYWNrZ3JvdW5kLA0KK2ZyYWdpbGUgYW5kIGRldGVyaW9yYXRlZCBwYWdlcywgdW5ldmVuIHByaW50aW5nLCBlbGFib3JhdGUgdHlwZSBmYWNlcywNCitmYWludCBhbmQgYm9sZCB0ZXh0IGFkamFjZW5jeSwgaGFuZHdyaXR0ZW4gdGV4dCBhbmQgYW5ub3RhdGlvbnMsIG5vblJvbWFuDQorbGFuZ3VhZ2VzLCBhbmQgYSBwcm9saWZlcmF0aW9uIG9mIGlsbHVzdHJhdGVkIG1hdGVyaWFsIGVtYmVkZGVkIGluIHRleHQuIA0KK1RoZSBsYXR0ZXIgY2F0ZWdvcnkgaW5jbHVkZWQgaGlnaC1mcmVxdWVuY3kgYW5kIGxvdy1mcmVxdWVuY3kgaGFsZnRvbmVzLA0KK2NvbnRpbnVvdXMgdG9uZSBwaG90b2dyYXBocywgaW50cmljYXRlIG1hdGhlbWF0aWNhbCBkcmF3aW5ncywgbWFwcywNCitldGNoaW5ncywgcmV2ZXJzZS1wb2xhcml0eSBkcmF3aW5ncywgYW5kIGVuZ3JhdmluZ3MuDQorDQorVGhlIFhlcm94IHByb3RvdHlwZSBzY2FubmluZyBzeXN0ZW0gcHJvdmlkZWQgYSBudW1iZXIgb2YgaW1wb3J0YW50DQorZmVhdHVyZXMgZm9yIGNhcHR1cmluZyB0aGlzIGRpdmVyc2UgbWF0ZXJpYWwuICBUZWNobmljaWFucyB1c2VkIG11bHRpcGxlDQordGhyZXNob2xkIHNldHRpbmdzLCBmaWx0ZXJzLCBsaW5lIGFydCBhbmQgaGFsZnRvbmUgZGVmaW5pdGlvbnMsDQorYXV0b3NlZ21lbnRhdGlvbiwgd2luZG93aW5nLCBhbmQgc29mdHdhcmUtZWRpdGluZyBwcm9ncmFtcyB0byBvcHRpbWl6ZQ0KK2ltYWdlIGNhcHR1cmUuICBBdCB0aGUgc2FtZSB0aW1lLCB0aGlzIHByb2plY3QgZm9jdXNlZCBvbiBwcm9kdWN0aW9uLiANCitUaGUgZ29hbCB3YXMgdG8gbWFrZSBzY2FubmluZyBhcyBhZmZvcmRhYmxlIGFuZCBhY2NlcHRhYmxlIGFzDQorcGhvdG9jb3B5aW5nIGFuZCBtaWNyb2ZpbG1pbmcgZm9yIHByZXNlcnZhdGlvbiByZWZvcm1hdHRpbmcuICBBDQordGltZS1hbmQtY29zdCBzdHVkeSBjb25kdWN0ZWQgZHVyaW5nIHRoZSBsYXN0IHRocmVlIG1vbnRocyBvZiB0aGlzDQorcHJvamVjdCBjb25maXJtZWQgdGhlIGVjb25vbWljIHZpYWJpbGl0eSBvZiBkaWdpdGFsIHNjYW5uaW5nLCBhbmQgdGhlc2UNCitmaW5kaW5ncyB3aWxsIGJlIGRpc2N1c3NlZCBoZXJlLg0KKw0KK0Zyb20gdGhlIG91dHNldCwgdGhlIENvcm5lbGwgWGVyb3ggUHJvamVjdCB3YXMgcHJlZGljYXRlZCBvbiB0aGUgdXNlIG9mDQorbm9ucHJvcHJpZXRhcnkgc3RhbmRhcmRzIGFuZCB0aGUgdXNlIG9mIGNvbW1vbiBwcm90b2NvbHMgd2hlbiBzdGFuZGFyZHMNCitkaWQgbm90IGV4aXN0LiAgRGlnaXRhbCBmaWxlcyB3ZXJlIGNyZWF0ZWQgYXMgVElGRiBpbWFnZXMgd2hpY2ggd2VyZQ0KK2NvbXByZXNzZWQgcHJpb3IgdG8gc3RvcmFnZSB1c2luZyBHcm91cCA0IENDSVRUIGNvbXByZXNzaW9uLiAgVGhlIFhlcm94DQorc29mdHdhcmUgaXMgTVMgRE9TIGJhc2VkIGFuZCB1dGlsaXplcyBvZmYtdGhlIHNoZWxmIHByb2dyYW1zIHN1Y2ggYXMNCitNaWNyb3NvZnQgV2luZG93cyBhbmQgV2FuZyBJbWFnZSBXaXphcmQuICBUaGUgZGlnaXRhbCBsaWJyYXJ5IGlzIGRlc2lnbmVkDQordG8gYmUgaGFyZHdhcmUtaW5kZXBlbmRlbnQgYW5kIHRvIHByb3ZpZGUgaW50ZXJjaGFuZ2VhYmlsaXR5IHdpdGggb3RoZXINCitpbnN0aXR1dGlvbnMgdGhyb3VnaCBuZXR3b3JrIGNvbm5lY3Rpb25zLiAgQWNjZXNzIHRvIHRoZSBkaWdpdGFsIGZpbGVzDQordGhlbXNlbHZlcyBpcyB0d28tdGllcmVkOiAgQmlibGlvZ3JhcGhpYyByZWNvcmRzIGZvciB0aGUgY29tcHV0ZXIgZmlsZXMNCithcmUgY3JlYXRlZCBpbiBSTElOIGFuZCBDb3JuZWxsJ3MgbG9jYWwgc3lzdGVtIGFuZCBhY2Nlc3MgaW50byB0aGUgYWN0dWFsDQorZGlnaXRhbCBpbWFnZXMgY29tcHJpc2luZyBhIGJvb2sgaXMgcHJvdmlkZWQgdGhyb3VnaCBhIGRvY3VtZW50IGNvbnRyb2wNCitzdHJ1Y3R1cmUgYW5kIGEgbmV0d29ya2VkIGltYWdlIGZpbGUtc2VydmVyLCBib3RoIG9mIHdoaWNoIHdpbGwgYmUNCitkZXNjcmliZWQuDQorDQorVGhlIHByZXNlbnRhdGlvbiB3aWxsIGNvbmNsdWRlIHdpdGggYSBkaXNjdXNzaW9uIG9mIHNvbWUgb2YgdGhlIGlzc3Vlcw0KK3N1cnJvdW5kaW5nIHRoZSB1c2Ugb2YgdGhpcyB0ZWNobm9sb2d5IGFzIGEgcHJlc2VydmF0aW9uIHRvb2wgKHN0b3JhZ2UsDQorcmVmcmVzaGluZywgYmFja3VwKS4NCisNCitQYW1lbGEgQU5EUkUgYW5kIEp1ZGl0aCBaSURBUg0KKw0KK1RoZSBOYXRpb25hbCBBZ3JpY3VsdHVyYWwgTGlicmFyeSAoTkFMKSBoYXMgaGFkIGV4dGVuc2l2ZSBleHBlcmllbmNlIHdpdGgNCityYXN0ZXIgc2Nhbm5pbmcgb2YgcHJpbnRlZCBtYXRlcmlhbHMuICBTaW5jZSAxOTg3LCB0aGUgTGlicmFyeSBoYXMNCitwYXJ0aWNpcGF0ZWQgaW4gdGhlIE5hdGlvbmFsIEFncmljdWx0dXJhbCBUZXh0IERpZ2l0aXppbmcgUHJvamVjdCAoTkFURFApDQorYSBjb29wZXJhdGl2ZSBlZmZvcnQgYmV0d2VlbiBOQUwgYW5kIGZvcnR5LWZpdmUgbGFuZCBncmFudCB1bml2ZXJzaXR5DQorbGlicmFyaWVzLiAgQW4gb3ZlcnZpZXcgb2YgdGhlIHByb2plY3Qgd2lsbCBiZSBwcmVzZW50ZWQsIGdpdmluZyBpdHMNCitoaXN0b3J5IGFuZCBOQUwncyBzdHJhdGVneSBmb3IgdGhlIGZ1dHVyZS4NCisNCitBbiBpbi1kZXB0aCBkaXNjdXNzaW9uIG9mIE5BVERQIHdpbGwgZm9sbG93LCBpbmNsdWRpbmcgYSBkZXNjcmlwdGlvbiBvZg0KK3RoZSBzY2FubmluZyBwcm9jZXNzLCBmcm9tIHRoZSBnYXRoZXJpbmcgb2YgdGhlIHByaW50ZWQgbWF0ZXJpYWxzIHRvIHRoZQ0KK2FyY2hpdmluZyBvZiB0aGUgZWxlY3Ryb25pYyBwYWdlcy4gIFRoZSB0eXBlIG9mIGVxdWlwbWVudCByZXF1aXJlZCBmb3IgYQ0KK3N0YW5kLWFsb25lIHNjYW5uaW5nIHdvcmtzdGF0aW9uIGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBmaWxlIG1hbmFnZW1lbnQNCitzb2Z0d2FyZSB3aWxsIGJlIGRpc2N1c3NlZC4gIElzc3VlcyBjb25jZXJuaW5nIHRoZSBpbWFnZXMgdGhlbXNlbHZlcyB3aWxsDQorYmUgYWRkcmVzc2VkIGJyaWVmbHksIHN1Y2ggYXMgaW1hZ2UgZm9ybWF0OyBibGFjayBhbmQgd2hpdGUgdmVyc3VzIGNvbG9yOw0KK2dyYXkgc2NhbGUgdmVyc3VzIGRpdGhlcmluZzsgYW5kIHJlc29sdXRpb24uDQorDQorQWxzbyBkZXNjcmliZWQgd2lsbCBiZSBhIHN0dWR5IGN1cnJlbnRseSBpbiBwcm9ncmVzcyBieSBOQUwgdG8gZXZhbHVhdGUNCit0aGUgdXNlZnVsbmVzcyBvZiBjb252ZXJ0aW5nIG1pY3JvZmlsbSB0byBlbGVjdHJvbmljIGltYWdlcyBpbiBvcmRlciB0bw0KK2ltcHJvdmUgYWNjZXNzLiAgV2l0aCB0aGUgY29vcGVyYXRpb24gb2YgVHVza2VnZWUgVW5pdmVyc2l0eSwgTkFMIGhhcw0KK3NlbGVjdGVkIHRocmVlIHJlZWxzIG9mIG1pY3JvZmlsbSBmcm9tIGEgY29sbGVjdGlvbiBvZiBzaXh0eS1zZXZlbiByZWVscw0KK2NvbnRhaW5pbmcgdGhlIHBhcGVycywgbGV0dGVycywgYW5kIGRyYXdpbmdzIG9mIEdlb3JnZSBXYXNoaW5ndG9uIENhcnZlci4gDQorVGhlIHRocmVlIHJlZWxzIHdlcmUgY29udmVydGVkIGludG8gMyw1MDAgZWxlY3Ryb25pYyBpbWFnZXMgdXNpbmcgYQ0KK3NwZWNpYWxpemVkIG1pY3JvZmlsbSBzY2FubmVyLiAgVGhlIHNlbGVjdGlvbiwgZmlsbWluZywgYW5kIGluZGV4aW5nIG9mDQordGhpcyBtYXRlcmlhbCB3aWxsIGJlIGRpc2N1c3NlZC4NCisNCitEb25hbGQgV0FURVJTDQorDQorUHJvamVjdCBPcGVuIEJvb2ssIHRoZSBZYWxlIFVuaXZlcnNpdHkgTGlicmFyeSdzIGVmZm9ydCB0byBjb252ZXJ0IDEwLA0KKzAwMCBib29rcyBmcm9tIG1pY3JvZmlsbSB0byBkaWdpdGFsIGltYWdlcnksIGlzIGN1cnJlbnRseSBpbiBhbiBhZHZhbmNlZA0KK3N0YXRlIG9mIHBsYW5uaW5nIGFuZCBvcmdhbml6YXRpb24uICBUaGUgWWFsZSBMaWJyYXJ5IGhhcyBzZWxlY3RlZCBhDQorbWFqb3IgdmVuZG9yIHRvIHNlcnZlIGFzIGEgcGFydG5lciBpbiB0aGUgcHJvamVjdCBhbmQgYXMgc3lzdGVtcw0KK2ludGVncmF0b3IuICBJbiBpdHMgcHJvcG9zYWwsIHRoZSBzdWNjZXNzZnVsIHZlbmRvciBoZWxwZWQgaXNvbGF0ZSBhcmVhcw0KK29mIHJpc2sgYW5kIHVuY2VydGFpbnR5IGFzIHdlbGwgYXMga2V5IGlzc3VlcyB0byBiZSBhZGRyZXNzZWQgZHVyaW5nIHRoZQ0KK2xpZmUgb2YgdGhlIHByb2plY3QuICBUaGUgWWFsZSBMaWJyYXJ5IGlzIG5vdyBwb2lzZWQgdG8gZGVjaWRlIHdoYXQNCittYXRlcmlhbCBpdCB3aWxsIGNvbnZlcnQgdG8gZGlnaXRhbCBpbWFnZSBmb3JtIGFuZCB0byBzZWVrIGZ1bmRpbmcsDQoraW5pdGlhbGx5IGZvciB0aGUgZmlyc3QgcGhhc2UgYW5kIHRoZW4gZm9yIHRoZSBlbnRpcmUgcHJvamVjdC4NCisNCitUaGUgcHJvcG9zYWwgdGhhdCBZYWxlIGFjY2VwdGVkIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgUHJvamVjdCBPcGVuDQorQm9vayB3aWxsIHByb3ZpZGUgYXQgdGhlIGVuZCBvZiB0aHJlZSBwaGFzZXMgYSBjb252ZXJzaW9uIHN1YnN5c3RlbSwNCiticm93c2luZyBzdGF0aW9ucyBkaXN0cmlidXRlZCBvbiB0aGUgY2FtcHVzIG5ldHdvcmsgd2l0aGluIHRoZSBZYWxlDQorTGlicmFyeSwgYSBzdWJzeXN0ZW0gZm9yIHN0b3JpbmcgMTAsMDAwIGJvb2tzIGF0IDIwMCBhbmQgNjAwIGRvdHMgcGVyDQoraW5jaCwgYW5kIG5ldHdvcmsgYWNjZXNzIHRvIHRoZSBpbWFnZSBwcmludGVycy4gIFByaWNpbmcgZm9yIHRoZSBzeXN0ZW0NCitpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBleGlzdGVuY2Ugb2YgWWFsZSdzIGNhbXB1cyBldGhlcm5ldCBuZXR3b3JrDQorYW5kIGl0cyBoaWdoLXNwZWVkIGltYWdlIHByaW50ZXJzLCBhbmQgaW5jbHVkZXMgb3RoZXIgcmVxdWlzaXRlIGhhcmR3YXJlDQorYW5kIHNvZnR3YXJlLCBhcyB3ZWxsIGFzIHN5c3RlbSBpbnRlZ3JhdGlvbiBzZXJ2aWNlcy4gIFByb3Bvc2VkIG9wZXJhdGluZw0KK2Nvc3RzIGluY2x1ZGUgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIG1haW50ZW5hbmNlLCBidXQgZG8gbm90IGluY2x1ZGUNCitlc3RpbWF0ZXMgZm9yIHRoZSBmYWNpbGl0aWVzIG1hbmFnZW1lbnQgb2YgdGhlIHN0b3JhZ2UgZGV2aWNlcyBhbmQgaW1hZ2UNCitzZXJ2ZXJzLg0KKw0KK1lhbGUgc2VsZWN0ZWQgaXRzIHZlbmRvciBwYXJ0bmVyIGluIGEgZm9ybWFsIHByb2Nlc3MsIHBhcnRseSBmdW5kZWQgYnkNCit0aGUgQ29tbWlzc2lvbiBmb3IgUHJlc2VydmF0aW9uIGFuZCBBY2Nlc3MuICBGb2xsb3dpbmcgYSByZXF1ZXN0IGZvcg0KK3Byb3Bvc2FsLCB0aGUgWWFsZSBMaWJyYXJ5IHNlbGVjdGVkIHR3byB2ZW5kb3JzIGFzIGZpbmFsaXN0cyB0byB3b3JrIHdpdGgNCitZYWxlIHN0YWZmIHRvIGdlbmVyYXRlIGEgZGV0YWlsZWQgYW5hbHlzaXMgb2YgcmVxdWlyZW1lbnRzIGZvciBQcm9qZWN0DQorT3BlbiBCb29rLiAgRWFjaCB2ZW5kb3IgdXNlZCB0aGUgcmVzdWx0cyBvZiB0aGUgcmVxdWlyZW1lbnRzIGFuYWx5c2lzIHRvDQorZ2VuZXJhdGUgYW5kIHN1Ym1pdCBhIGZvcm1hbCBwcm9wb3NhbCBmb3IgdGhlIGVudGlyZSBwcm9qZWN0LiAgVGhpcw0KK2NvbXBldGl0aXZlIHByb2Nlc3Mgbm90IG9ubHkgZW5hYmxlZCB0aGUgWWFsZSBMaWJyYXJ5IHRvIHNlbGVjdCBpdHMNCitwcmltYXJ5IHZlbmRvciBwYXJ0bmVyIGJ1dCBhbHNvIHJldmVhbGVkIG11Y2ggYWJvdXQgdGhlIHN0YXRlIG9mIHRoZQ0KK2ltYWdpbmcgaW5kdXN0cnksIGFib3V0IHRoZSB2YXJ5aW5nLCBjb3Jwb3JhdGUgY29tbWl0bWVudHMgdG8gdGhlIG1hcmtldHMNCitmb3IgaW1hZ2luZyB0ZWNobm9sb2d5LCBhbmQgYWJvdXQgdGhlIHZhcnlpbmcgb3JnYW5pemF0aW9uYWwgZHluYW1pY3MNCit0aHJvdWdoIHdoaWNoIG1ham9yIGNvbXBhbmllcyBhcmUgcmVzcG9uZGluZyB0byBhbmQgc2Vla2luZyB0byBkZXZlbG9wDQordGhlc2UgbWFya2V0cy4NCisNCitQcm9qZWN0IE9wZW4gQm9vayBpcyBmb2N1c2VkIHNwZWNpZmljYWxseSBvbiB0aGUgY29udmVyc2lvbiBvZiBpbWFnZXMNCitmcm9tIG1pY3JvZmlsbSB0byBkaWdpdGFsIGZvcm0uICBUaGUgdGVjaG5vbG9neSBmb3Igc2Nhbm5pbmcgbWljcm9maWxtIGlzDQorcmVhZGlseSBhdmFpbGFibGUgYnV0IGlzIGNoYW5naW5nIHJhcGlkbHkuICBJbiBpdHMgcHJvamVjdCByZXF1aXJlbWVudHMsDQordGhlIFlhbGUgTGlicmFyeSBlbXBoYXNpemVkIGZlYXR1cmVzIG9mIHRoZSB0ZWNobm9sb2d5IHRoYXQgYWZmZWN0IHRoZQ0KK3RlY2huaWNhbCBxdWFsaXR5IG9mIGRpZ2l0YWwgaW1hZ2UgcHJvZHVjdGlvbiBhbmQgdGhlIGNvc3RzIG9mIGNyZWF0aW5nDQorYW5kIHN0b3JpbmcgdGhlIGltYWdlIGxpYnJhcnk6ICBXaGF0IGxldmVscyBvZiBkaWdpdGFsIHJlc29sdXRpb24gY2FuIGJlDQorYWNoaWV2ZWQgYnkgc2Nhbm5pbmcgbWljcm9maWxtPyAgSG93IGRvZXMgdmFyaWF0aW9uIGluIHRoZSBxdWFsaXR5IG9mDQorbWljcm9maWxtLCBwYXJ0aWN1bGFybHkgaW4gZmlsbSBwcm9kdWNlZCB0byBwcmVzZXJ2YXRpb24gc3RhbmRhcmRzLA0KK2FmZmVjdCB0aGUgcXVhbGl0eSBvZiB0aGUgZGlnaXRhbCBpbWFnZXM/ICBXaGF0IHRlY2hub2xvZ2llcyBjYW4gYW4NCitvcGVyYXRvciBlZmZlY3RpdmVseSBhbmQgZWNvbm9taWNhbGx5IGFwcGx5IHdoZW4gc2Nhbm5pbmcgZmlsbSB0bw0KK3NlcGFyYXRlIHR3by11cCBpbWFnZXMgYW5kIHRvIGNvbnRyb2wgZm9yIGFuZCBjb3JyZWN0IGltYWdlDQoraW1wZXJmZWN0aW9ucz8gIEhvdyBjYW4gcXVhbGl0eSBjb250cm9sIGJlc3QgYmUgaW50ZWdyYXRlZCBpbnRvDQorZGlnaXRpemluZyB3b3JrIGZsb3cgdGhhdCBpbmNsdWRlcyBkb2N1bWVudCBpbmRleGluZyBhbmQgc3RvcmFnZT8NCisNCitUaGUgYWN0dWFsIGFuZCBleHBlY3RlZCB1c2VzIG9mIGRpZ2l0YWwgaW1hZ2VzLS1zdG9yYWdlLCBicm93c2luZywNCitwcmludGluZywgYW5kIE9DUi0taGVscCBkZXRlcm1pbmUgdGhlIHN0YW5kYXJkcyBmb3IgbWVhc3VyaW5nIHRoZWlyDQorcXVhbGl0eS4gIEJyb3dzaW5nIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50LCBidXQgdGhlIGZhY2lsaXRpZXMgYXZhaWxhYmxlDQorZm9yIHJlYWRlcnMgdG8gYnJvd3NlIGltYWdlIGRvY3VtZW50cyBpcyBwZXJoYXBzIHRoZSB3ZWFrZXN0IGFzcGVjdCBvZg0KK2ltYWdpbmcgdGVjaG5vbG9neSBhbmQgbW9zdCBpbiBuZWVkIG9mIGRldmVsb3BtZW50LiAgQXMgaXQgZGVmaW5lZCBpdHMNCityZXF1aXJlbWVudHMsIHRoZSBZYWxlIExpYnJhcnkgY29uY2VudHJhdGVkIG9uIHNvbWUgZnVuZGFtZW50YWwgYXNwZWN0cw0KK29mIHVzYWJpbGl0eSBmb3IgaW1hZ2UgZG9jdW1lbnRzOiAgRG9lcyB0aGUgc3lzdGVtIGhhdmUgc3VmZmljaWVudA0KK2ZsZXhpYmlsaXR5IHRvIGhhbmRsZSB0aGUgZnVsbCByYW5nZSBvZiBkb2N1bWVudCB0eXBlcywgaW5jbHVkaW5nDQorbW9ub2dyYXBocywgbXVsdGktcGFydCBhbmQgbXVsdGl2b2x1bWUgc2V0cywgYW5kIHNlcmlhbHMsIGFzIHdlbGwgYXMNCittYW51c2NyaXB0IGNvbGxlY3Rpb25zPyAgV2hhdCBjb252ZW50aW9ucyBhcmUgbmVjZXNzYXJ5IHRvIGlkZW50aWZ5IGENCitkb2N1bWVudCB1bmlxdWVseSBmb3Igc3RvcmFnZSBhbmQgcmV0cmlldmFsPyAgV2hlcmUgaXMgdGhlIGRhdGFiYXNlIG9mDQorcmVjb3JkIGZvciBzdG9yaW5nIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltYWdlIGRvY3VtZW50PyANCitIb3cgYXJlIGJhc2ljIGludGVybmFsIHN0cnVjdHVyZXMgb2YgZG9jdW1lbnRzLCBzdWNoIGFzIHBhZ2luYXRpb24sIG1hZGUNCithY2Nlc3NpYmxlIHRvIHRoZSByZWFkZXI/ICBIb3cgYXJlIHRoZSBpbWFnZSBkb2N1bWVudHMgcGh5c2ljYWxseQ0KK3ByZXNlbnRlZCBvbiB0aGUgc2NyZWVuIHRvIHRoZSByZWFkZXI/DQorDQorVGhlIFlhbGUgTGlicmFyeSBkZXNpZ25lZCBQcm9qZWN0IE9wZW4gQm9vayBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0DQorbWljcm9maWxtIGlzIG1vcmUgdGhhbiBhZGVxdWF0ZSBhcyBhIG1lZGl1bSBmb3IgcHJlc2VydmluZyB0aGUgY29udGVudCBvZg0KK2RldGVyaW9yYXRlZCBsaWJyYXJ5IG1hdGVyaWFscy4gIEFzIHBsYW5uaW5nIGluIHRoZSBwcm9qZWN0IGhhcyBhZHZhbmNlZCwNCitpdCBpcyBpbmNyZWFzaW5nbHkgY2xlYXIgdGhhdCB0aGUgY2hhbGxlbmdlIG9mIGRpZ2l0YWwgaW1hZ2UgdGVjaG5vbG9neQ0KK2FuZCB0aGUga2V5IHRvIHRoZSBzdWNjZXNzIG9mIGVmZm9ydHMgbGlrZSBQcm9qZWN0IE9wZW4gQm9vayBpcyB0bw0KK3Byb3ZpZGUgYSBtZWFucyBvZiBib3RoIHByZXNlcnZpbmcgYW5kIGltcHJvdmluZyBhY2Nlc3MgdG8gdGhvc2UNCitkZXRlcmlvcmF0ZWQgbWF0ZXJpYWxzLg0KKw0KK1NFU1NJT04gSVYtQg0KKw0KK0dlb3JnZSBUSE9NQQ0KKw0KK0luIHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyBpbWFnaW5nIGZvciBkb2N1bWVudCBwcmVzZXJ2YXRpb24sIHRoZXJlIGFyZQ0KK3NldmVyYWwgaXNzdWVzIHRvIGNvbnNpZGVyLCBzdWNoIGFzOiAgZW5zdXJpbmcgYWRlcXVhdGUgaW1hZ2UgcXVhbGl0eSwNCittYWludGFpbmluZyBzdWJzdGFudGlhbCBjb252ZXJzaW9uIHJhdGVzICh0aHJvdWdoLXB1dCksIHByb3ZpZGluZyB1bmlxdWUNCitpZGVudGlmaWNhdGlvbiBmb3IgYXV0b21hdGVkIGFjY2VzcyBhbmQgcmV0cmlldmFsLCBhbmQgYWNjb21tb2RhdGluZw0KK2JvdW5kIHZvbHVtZXMgYW5kIGZyYWdpbGUgbWF0ZXJpYWwuDQorDQorVG8gbWFpbnRhaW4gaGlnaCBpbWFnZSBxdWFsaXR5LCBpbWFnZSBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBhcmUgcmVxdWlyZWQNCit0byBjb3JyZWN0IHRoZSBkZWZpY2llbmNpZXMgaW4gdGhlIHNjYW5uZWQgaW1hZ2UuICBTb21lIGNvbW1lcmNpYWxseQ0KK2F2YWlsYWJsZSBzeXN0ZW1zIGluY2x1ZGUgdGhlc2UgZnVuY3Rpb25zLCB3aGlsZSBzb21lIGRvIG5vdC4gIFRoZQ0KK3NjYW5uZWQgcmF3IGltYWdlIG11c3QgYmUgcHJvY2Vzc2VkIHRvIGNvcnJlY3QgY29udHJhc3QgZGVmaWNpZW5jaWVzLS0NCitib3RoIHBvb3Igb3ZlcmFsbCBjb250cmFzdCByZXN1bHRpbmcgZnJvbSBsaWdodCBwcmludCBhbmQvb3IgZGFyaw0KK2JhY2tncm91bmQsIGFuZCB2YXJpYWJsZSBjb250cmFzdCByZXN1bHRpbmcgZnJvbSBzdGFpbnMgYW5kDQorYmxlZWQtdGhyb3VnaC4gIEZ1cnRoZXJtb3JlLCB0aGUgc2NhbiBkZW5zaXR5IG11c3QgYmUgYWRlcXVhdGUgdG8gYWxsb3cNCitsZWdpYmlsaXR5IG9mIHByaW50IGFuZCBzdWZmaWNpZW50IGZpZGVsaXR5IGluIHRoZSBwc2V1ZG8taGFsZnRvbmVkIGdyYXkNCittYXRlcmlhbC4gIEJvcmRlcnMgb3IgcGFnZS1lZGdlIGVmZmVjdHMgbXVzdCBiZSByZW1vdmVkIGZvciBib3RoDQorY29tcGFjdGliaWxpdHkgYW5kIGFlc3RoZXRpY3MuICBQYWdlIHNrZXcgbXVzdCBiZSBjb3JyZWN0ZWQgZm9yIGFlc3RoZXRpYw0KK3JlYXNvbnMgYW5kIHRvIGVuYWJsZSBhY2N1cmF0ZSBjaGFyYWN0ZXIgcmVjb2duaXRpb24gaWYgZGVzaXJlZC4gDQorQ29tcG91bmQgaW1hZ2VzIGNvbnNpc3Rpbmcgb2YgYm90aCB0d28tdG9uZWQgdGV4dCBhbmQgZ3JheS1zY2FsZQ0KK2lsbHVzdHJhdGlvbnMgbXVzdCBiZSBwcm9jZXNzZWQgYXBwcm9wcmlhdGVseSB0byByZXRhaW4gdGhlIHF1YWxpdHkgb2YNCitlYWNoLg0KKw0KK1NFU1NJT04gSVYtQw0KKw0KK0plYW4gQkFST05BUw0KKw0KK1N0YW5kYXJkcyBwdWJsaWNhdGlvbnMgYmVpbmcgZGV2ZWxvcGVkIGJ5IHNjaWVudGlzdHMsIGVuZ2luZWVycywgYW5kDQorYnVzaW5lc3MgbWFuYWdlcnMgaW4gQXNzb2NpYXRpb24gZm9yIEluZm9ybWF0aW9uIGFuZCBJbWFnZSBNYW5hZ2VtZW50DQorKEFJSU0pIHN0YW5kYXJkcyBjb21taXR0ZWVzIGNhbiBiZSBhcHBsaWVkIHRvIGVsZWN0cm9uaWMgaW1hZ2UgbWFuYWdlbWVudA0KKyhFSU0pIHByb2Nlc3NlcyBpbmNsdWRpbmc6ICBkb2N1bWVudCAoaW1hZ2UpIHRyYW5zZmVyLCByZXRyaWV2YWwgYW5kDQorZXZhbHVhdGlvbjsgb3B0aWNhbCBkaXNrIGFuZCBkb2N1bWVudCBzY2FubmluZzsgYW5kIGRvY3VtZW50IGRlc2lnbiBhbmQNCitjb252ZXJzaW9uLiAgV2hlbiBjb21iaW5lZCB3aXRoIEVJTSBzeXN0ZW0gcGxhbm5pbmcgYW5kIG9wZXJhdGlvbnMsDQorc3RhbmRhcmRzIGNhbiBhc3Npc3QgaW4gZ2VuZXJhdGluZyBpbWFnZSBkYXRhYmFzZXMgdGhhdCBhcmUNCitpbnRlcmNoYW5nZWFibGUgYW1vbmcgYSB2YXJpZXR5IG9mIHN5c3RlbXMuICBUaGUgYXBwbGljYXRpb25zIG9mDQorZGlmZmVyZW50IGFwcHJvYWNoZXMgZm9yIGltYWdlLXRhZ2dpbmcsIGluZGV4aW5nLCBjb21wcmVzc2lvbiwgYW5kDQordHJhbnNmZXIgb2Z0ZW4gY2F1c2UgdW5jZXJ0YWludHkgY29uY2VybmluZyBFSU0gc3lzdGVtIGNvbXBhdGliaWxpdHksDQorY2FsaWJyYXRpb24sIHBlcmZvcm1hbmNlLCBhbmQgdXB3YXJkIGNvbXBhdGliaWxpdHksIHVudGlsIHN0YW5kYXJkDQoraW1wbGVtZW50YXRpb24gcGFyYW1ldGVycyBhcmUgZXN0YWJsaXNoZWQuICBUaGUgQUlJTSBzdGFuZGFyZHMgdGhhdCBhcmUNCitiZWluZyBkZXZlbG9wZWQgZm9yIHRoZXNlIGFwcGxpY2F0aW9ucyBjYW4gYmUgdXNlZCB0byBkZWNyZWFzZSB0aGUNCit1bmNlcnRhaW50eSwgc3VjY2Vzc2Z1bGx5IGludGVncmF0ZSBpbWFnaW5nIHByb2Nlc3NlcywgYW5kIHByb21vdGUgIm9wZW4NCitzeXN0ZW1zLiIgIEFJSU0gaXMgYW4gYWNjcmVkaXRlZCBBbWVyaWNhbiBOYXRpb25hbCBTdGFuZGFyZHMgSW5zdGl0dXRlDQorKEFOU0kpIHN0YW5kYXJkcyBkZXZlbG9wZXIgd2l0aCBtb3JlIHRoYW4gdHdlbnR5IGNvbW1pdHRlZXMgY29tcHJpc2VkIG9mDQorMzAwIHZvbHVudGVlcnMgcmVwcmVzZW50aW5nIHVzZXJzLCB2ZW5kb3JzLCBhbmQgbWFudWZhY3R1cmVycy4gIFRoZQ0KK3N0YW5kYXJkcyBwdWJsaWNhdGlvbnMgdGhhdCBhcmUgZGV2ZWxvcGVkIGluIHRoZXNlIGNvbW1pdHRlZXMgaGF2ZQ0KK25hdGlvbmFsIGFjY2VwdGFuY2UgYW5kIHByb3ZpZGUgdGhlIGJhc2lzIGZvciBpbnRlcm5hdGlvbmFsIGhhcm1vbml6YXRpb24NCitpbiB0aGUgZGV2ZWxvcG1lbnQgb2YgbmV3IEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24NCisoSVNPKSBzdGFuZGFyZHMuDQorDQorVGhpcyBwcmVzZW50YXRpb24gZGVzY3JpYmVzIHRoZSBkZXZlbG9wbWVudCBvZiBBSUlNJ3MgRUlNIHN0YW5kYXJkcyBhbmQgYQ0KK25ldyBlZmZvcnQgYXQgQUlJTSwgYSBkYXRhYmFzZSBvbiBzdGFuZGFyZHMgcHJvamVjdHMgaW4gYSB3aWRlIGZyYW1ld29yaw0KK29mIGltYWdpbmcgaW5kdXN0cmllcyBpbmNsdWRpbmcgY2FwdHVyZSwgcmVjb3JkaW5nLCBwcm9jZXNzaW5nLA0KK2R1cGxpY2F0aW9uLCBkaXN0cmlidXRpb24sIGRpc3BsYXksIGV2YWx1YXRpb24sIGFuZCBwcmVzZXJ2YXRpb24uICBUaGUNCitBSUlNIEltYWdlcnkgRGF0YWJhc2Ugd2lsbCBjb3ZlciBpbWFnaW5nIHN0YW5kYXJkcyBiZWluZyBkZXZlbG9wZWQgYnkNCittYW55IG9yZ2FuaXphdGlvbnMgaW4gbWFueSBkaWZmZXJlbnQgY291bnRyaWVzLiAgSXQgd2lsbCBjb250YWluDQorc3RhbmRhcmRzIHB1YmxpY2F0aW9ucycgZGF0ZXMsIG9yaWdpbnMsIHJlbGF0ZWQgbmF0aW9uYWwgYW5kDQoraW50ZXJuYXRpb25hbCBwcm9qZWN0cywgc3RhdHVzLCBrZXkgd29yZHMsIGFuZCBhYnN0cmFjdHMuICBUaGUgQU5TSSBJbWFnZQ0KK1RlY2hub2xvZ3kgU3RhbmRhcmRzIEJvYXJkIHJlcXVlc3RlZCB0aGF0IHN1Y2ggYSBkYXRhYmFzZSBiZSBlc3RhYmxpc2hlZCwNCithcyBkaWQgdGhlIElTTy9JbnRlcm5hdGlvbmFsIEVsZWN0cm90ZWNobmljYWwgQ29tbWlzc2lvbiBKb2ludCBUYXNrIEZvcmNlDQorb24gSW1hZ2VyeS4gIEFJSU0gd2lsbCB0YWtlIG9uIHRoZSBsZWFkZXJzaGlwIHJvbGUgZm9yIHRoZSBkYXRhYmFzZSBhbmQNCitjb29yZGluYXRlIGl0cyBkZXZlbG9wbWVudCB3aXRoIHNldmVyYWwgc3RhbmRhcmRzIGRldmVsb3BlcnMuDQorDQorUGF0cmljaWEgQkFUVElODQorDQorICAgICBDaGFyYWN0ZXJpc3RpY3Mgb2Ygc3RhbmRhcmRzIGZvciBkaWdpdGFsIGltYWdlcnk6DQorDQorICAgICAgICAgICogTmF0dXJlIG9mIGRpZ2l0YWwgdGVjaG5vbG9neSBpbXBsaWVzIGNvbnRpbnVpbmcgdm9sYXRpbGl0eS4NCisNCisgICAgICAgICAgKiBQcmVjaXBpdG91cyBzdGFuZGFyZC1zZXR0aW5nIG5vdCBwb3NzaWJsZSBhbmQgcHJvYmFibHkgbm90DQorICAgICAgICAgIGRlc2lyYWJsZS4NCisNCisgICAgICAgICAgKiBTdGFuZGFyZHMgYXJlIGEgY29tcGxleCBpc3N1ZSBpbnZvbHZpbmcgdGhlIG1lZGl1bSwgdGhlDQorICAgICAgICAgIGhhcmR3YXJlLCB0aGUgc29mdHdhcmUsIGFuZCB0aGUgdGVjaG5pY2FsIGNhcGFjaXR5IGZvcg0KKyAgICAgICAgICByZXByb2R1Y3RpdmUgZmlkZWxpdHkgYW5kIGNsYXJpdHkuDQorDQorICAgICAgICAgICogVGhlIHByb2dub3NpcyBmb3IgcmVsaWFibGUgYXJjaGl2YWwgc3RhbmRhcmRzIChhcyBkZWZpbmVkIGJ5DQorICAgICAgICAgIGxpYnJhcmlhbnMpIGluIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUgaXMgcG9vci4NCisNCisgICAgIFNpZ25pZmljYW50IHBvdGVudGlhbCBhbmQgYXR0cmFjdGl2ZW5lc3Mgb2YgZGlnaXRhbCB0ZWNobm9sb2d5IGFzIGENCisgICAgIHByZXNlcnZhdGlvbiBtZWRpdW0gYW5kIGFjY2VzcyBtZWNoYW5pc20uDQorDQorICAgICBQcm9kdWN0aXZlIHVzZSBvZiBkaWdpdGFsIGltYWdlcnkgZm9yIHByZXNlcnZhdGlvbiByZXF1aXJlcyBhDQorICAgICByZWNvbmNlcHR1YWxpemluZyBvZiBwcmVzZXJ2YXRpb24gcHJpbmNpcGxlcyBpbiBhIHZvbGF0aWxlLA0KKyAgICAgc3RhbmRhcmRsZXNzIHdvcmxkLg0KKw0KKyAgICAgQ29uY2VwdCBvZiBtYW5hZ2luZyBjb250aW51aW5nIGFjY2VzcyBpbiB0aGUgZGlnaXRhbCBlbnZpcm9ubWVudA0KKyAgICAgcmF0aGVyIHRoYW4gZm9jdXNpbmcgb24gdGhlIHBlcm1hbmVuY2Ugb2YgdGhlIG1lZGl1bSBhbmQgbG9uZy10ZXJtDQorICAgICBhcmNoaXZhbCBzdGFuZGFyZHMgZGV2ZWxvcGVkIGZvciB0aGUgYW5hbG9nIHdvcmxkLg0KKw0KKyAgICAgVHJhbnNpdGlvbiBwZXJpb2Q6ICBIb3cgbG9uZyBhbmQgd2hhdCB0byBkbz8NCisNCisgICAgICAgICAgKiAgUmVkZWZpbmUgImFyY2hpdmFsLiINCisNCisgICAgICAgICAgKiAgUmVtb3ZlIHRoZSBidXJkZW4gb2YgImFyY2hpdmFsIGNvcHkiIGZyb20gcGFwZXIgYXJ0aWZhY3RzLg0KKw0KKyAgICAgICAgICAqICBVc2UgZGlnaXRhbCB0ZWNobm9sb2d5IGZvciBzdG9yYWdlLCBkZXZlbG9wIG1hbmFnZW1lbnQNCisgICAgICAgICAgc3RyYXRlZ2llcyBmb3IgcmVmcmVzaGluZyBtZWRpdW0sIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZS4NCisNCisgICAgICAgICAgKiAgQ3JlYXRlIGFjaWQtZnJlZSBwYXBlciBjb3BpZXMgZm9yIHRyYW5zaXRpb24gcGVyaW9kIGJhY2t1cA0KKyAgICAgICAgICB1bnRpbCB3ZSBkZXZlbG9wIHJlbGlhYmxlIHByb2NlZHVyZXMgZm9yIGVuc3VyaW5nIGNvbnRpbnVpbmcNCisgICAgICAgICAgYWNjZXNzIHRvIGRpZ2l0YWwgZmlsZXMuDQorDQorU0VTU0lPTiBJVi1EDQorDQorU3R1YXJ0IFdFSUJFTCAgICAgICAgICAgIFRoZSBSb2xlIG9mIFNHTUwgTWFya3VwIGluIHRoZSBDT1JFIFByb2plY3QgKDYpDQorDQorVGhlIGVtZXJnZW5jZSBvZiBoaWdoLXNwZWVkIHRlbGVjb21tdW5pY2F0aW9ucyBuZXR3b3JrcyBhcyBhIGJhc2ljDQorZmVhdHVyZSBvZiB0aGUgc2Nob2xhcmx5IHdvcmtwbGFjZSBpcyBkcml2aW5nIHRoZSBkZW1hbmQgZm9yIGVsZWN0cm9uaWMNCitkb2N1bWVudCBkZWxpdmVyeS4gIFRocmVlIGRpc3RpbmN0IGNhdGVnb3JpZXMgb2YgZWxlY3Ryb25pYw0KK3B1Ymxpc2hpbmcvcmVwdWJsaXNoaW5nIGFyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCBhY2Nlc3MgZGVtYW5kcyBpbiB0aGlzDQorZW1lcmdpbmcgZW52aXJvbm1lbnQ6DQorDQorICAgICAxLikgIENvbnZlcnNpb24gb2YgcGFwZXIgb3IgbWljcm9maWxtIGFyY2hpdmVzIHRvIGVsZWN0cm9uaWMgZm9ybWF0DQorICAgICAyLikgIENvbnZlcnNpb24gb2YgZWxlY3Ryb25pYyBmaWxlcyB0byBmb3JtYXRzIHRhaWxvcmVkIHRvDQorICAgICAgICAgIGVsZWN0cm9uaWMgcmV0cmlldmFsIGFuZCBkaXNwbGF5DQorICAgICAzLikgIFByaW1hcnkgZWxlY3Ryb25pYyBwdWJsaXNoaW5nIChtYXRlcmlhbHMgZm9yIHdoaWNoIHRoZQ0KKyAgICAgICAgICBlbGVjdHJvbmljIHZlcnNpb24gaXMgdGhlIHByaW1hcnkgZm9ybWF0KQ0KKw0KK09DTEMgaGFzIGV4cGVyaW1lbnRhbCBvciBwcm9kdWN0IGRldmVsb3BtZW50IGFjdGl2aXRpZXMgaW4gZWFjaCBvZiB0aGVzZQ0KK2FyZWFzLiAgQW1vbmcgdGhlIGNoYWxsZW5nZXMgdGhhdCBsaWUgYWhlYWQgaXMgdGhlIGludGVncmF0aW9uIG9mIHRoZXNlDQordGhyZWUgdHlwZXMgb2YgaW5mb3JtYXRpb24gc3RvcmVzIGluIGNvaGVyZW50IGRpc3RyaWJ1dGVkIHN5c3RlbXMuDQorDQorVGhlIENPUkUgKENoZW1pc3RyeSBPbmxpbmUgUmV0cmlldmFsIEV4cGVyaW1lbnQpIFByb2plY3QgaXMgYSBtb2RlbCBmb3INCit0aGUgY29udmVyc2lvbiBvZiBsYXJnZSB0ZXh0IGFuZCBncmFwaGljcyBjb2xsZWN0aW9ucyBmb3Igd2hpY2gNCitlbGVjdHJvbmljIHR5cGVzZXR0aW5nIGZpbGVzIGFyZSBhdmFpbGFibGUgKGNhdGVnb3J5IDIpLiAgVGhlIEFtZXJpY2FuDQorQ2hlbWljYWwgU29jaWV0eSBoYXMgbWFkZSBhdmFpbGFibGUgY29tcHV0ZXIgdHlwb2dyYXBoeSBmaWxlcyBkYXRpbmcgZnJvbQ0KKzE5ODAgZm9yIGl0cyB0d2VudHkgam91cm5hbHMuICBUaGlzIGNvbGxlY3Rpb24gb2Ygc29tZSAyNTAgam91cm5hbC15ZWFycw0KK2lzIGJlaW5nIGNvbnZlcnRlZCB0byBhbiBlbGVjdHJvbmljIGZvcm1hdCB0aGF0IHdpbGwgYmUgYWNjZXNzaWJsZQ0KK3Rocm91Z2ggc2V2ZXJhbCBlbmQtdXNlciBhcHBsaWNhdGlvbnMuDQorDQorVGhlIHVzZSBvZiBTdGFuZGFyZCBHZW5lcmFsaXplZCBNYXJrdXAgTGFuZ3VhZ2UgKFNHTUwpIG9mZmVycyB0aGUgbWVhbnMNCit0byBjYXB0dXJlIHRoZSBzdHJ1Y3R1cmFsIHJpY2huZXNzIG9mIHRoZSBvcmlnaW5hbCBhcnRpY2xlcyBpbiBhIHdheSB0aGF0DQord2lsbCBzdXBwb3J0IGEgdmFyaWV0eSBvZiByZXRyaWV2YWwsIG5hdmlnYXRpb24sIGFuZCBkaXNwbGF5IG9wdGlvbnMNCituZWNlc3NhcnkgdG8gbmF2aWdhdGUgZWZmZWN0aXZlbHkgaW4gdmVyeSBsYXJnZSB0ZXh0IGRhdGFiYXNlcy4NCisNCitBbiBTR01MIGRvY3VtZW50IGNvbnNpc3RzIG9mIHRleHQgdGhhdCBpcyBtYXJrZWQgdXAgd2l0aCBkZXNjcmlwdGl2ZSB0YWdzDQordGhhdCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiBvZiBhIGdpdmVuIGVsZW1lbnQgd2l0aGluIHRoZSBkb2N1bWVudC4gIEFzIGENCitmb3JtYWwgbGFuZ3VhZ2UgY29uc3RydWN0LCBhbiBTR01MIGRvY3VtZW50IGNhbiBiZSBwYXJzZWQgYWdhaW5zdCBhDQorZG9jdW1lbnQtdHlwZSBkZWZpbml0aW9uIChEVEQpIHRoYXQgdW5hbWJpZ3VvdXNseSBkZWZpbmVzIHdoYXQgZWxlbWVudHMNCithcmUgYWxsb3dlZCBhbmQgd2hlcmUgaW4gdGhlIGRvY3VtZW50IHRoZXkgY2FuIChvciBtdXN0KSBvY2N1ci4gIFRoaXMNCitmb3JtYWxpemVkIG1hcCBvZiBhcnRpY2xlIHN0cnVjdHVyZSBhbGxvd3MgdGhlIHVzZXIgaW50ZXJmYWNlIGRlc2lnbiB0bw0KK2JlIHVuY291cGxlZCBmcm9tIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIHN5c3RlbSwgYW4gaW1wb3J0YW50IHN0ZXANCit0b3dhcmQgaW50ZXJvcGVyYWJpbGl0eS4gIERlbW9uc3RyYXRpb24gb2YgdGhpcyBzZXBhcmFiaWxpdHkgaXMgYSBwYXJ0IG9mDQordGhlIENPUkUgcHJvamVjdCwgd2hlcmVpbiB1c2VyIGludGVyZmFjZSBkZXNpZ25zIGJvcm4gb2YgdmVyeSBkaWZmZXJlbnQNCitwaGlsb3NvcGhpZXMgd2lsbCBhY2Nlc3MgdGhlIHNhbWUgZGF0YWJhc2UuDQorDQorTk9URVM6DQorICAgICAoNikgIFRoZSBDT1JFIHByb2plY3QgaXMgYSBjb2xsYWJvcmF0aW9uIGFtb25nIENvcm5lbGwgVW5pdmVyc2l0eSdzDQorICAgICBNYW5uIExpYnJhcnksIEJlbGwgQ29tbXVuaWNhdGlvbnMgUmVzZWFyY2ggKEJlbGxjb3JlKSwgdGhlIEFtZXJpY2FuDQorICAgICBDaGVtaWNhbCBTb2NpZXR5IChBQ1MpLCB0aGUgQ2hlbWljYWwgQWJzdHJhY3RzIFNlcnZpY2UgKENBUyksIGFuZA0KKyAgICAgT0NMQy4NCisNCitNaWNoYWVsIExFU0sgICAgICAgICAgICAgICAgICBUaGUgQ09SRSBFbGVjdHJvbmljIENoZW1pc3RyeSBMaWJyYXJ5DQorDQorQSBtYWpvciBvbi1saW5lIGZpbGUgb2YgY2hlbWljYWwgam91cm5hbCBsaXRlcmF0dXJlIGNvbXBsZXRlIHdpdGgNCitncmFwaGljcyBpcyBiZWluZyBkZXZlbG9wZWQgdG8gdGVzdCB0aGUgdXNhYmlsaXR5IG9mIGZ1bGx5IGVsZWN0cm9uaWMNCithY2Nlc3MgdG8gZG9jdW1lbnRzLCBhcyBhIGpvaW50IHByb2plY3Qgb2YgQ29ybmVsbCBVbml2ZXJzaXR5LCB0aGUNCitBbWVyaWNhbiBDaGVtaWNhbCBTb2NpZXR5LCB0aGUgQ2hlbWljYWwgQWJzdHJhY3RzIFNlcnZpY2UsIE9DTEMsIGFuZA0KK0JlbGxjb3JlICh3aXRoIGFkZGl0aW9uYWwgc3VwcG9ydCBmcm9tIFN1biBNaWNyb3N5c3RlbXMsIFNwcmluZ2VyLVZlcmxhZywNCitEaWdpdGFJIEVxdWlwbWVudCBDb3Jwb3JhdGlvbiwgU29ueSBDb3Jwb3JhdGlvbiBvZiBBbWVyaWNhLCBhbmQgQXBwbGUNCitDb21wdXRlcnMpLiAgT3VyIGZpbGUgY29udGFpbnMgdGhlIEFtZXJpY2FuIENoZW1pY2FsIFNvY2lldHkncyBvbi1saW5lDQoram91cm5hbHMsIHN1cHBsZW1lbnRlZCB3aXRoIHRoZSBncmFwaGljcyBmcm9tIHRoZSBwYXBlciBwdWJsaWNhdGlvbi4gIFRoZQ0KK2luZGV4aW5nIG9mIHRoZSBhcnRpY2xlcyBmcm9tIENoZW1pY2FsIEFic3RyYWN0cyBEb2N1bWVudHMgaXMgYXZhaWxhYmxlDQoraW4gYm90aCBpbWFnZSBhbmQgdGV4dCBmb3JtYXQsIGFuZCBzZXZlcmFsIGRpZmZlcmVudCBpbnRlcmZhY2VzIGNhbiBiZQ0KK3VzZWQuICBPdXIgZ29hbHMgYXJlICgxKSB0byBhc3Nlc3MgdGhlIGVmZmVjdGl2ZW5lc3MgYW5kIGFjY2VwdGFiaWxpdHkgb2YNCitlbGVjdHJvbmljIGFjY2VzcyB0byBwcmltYXJ5IGpvdXJuYWxzIGFzIGNvbXBhcmVkIHdpdGggcGFwZXIsIGFuZCAoMikgdG8NCitpZGVudGlmeSB0aGUgbW9zdCBkZXNpcmFibGUgZnVuY3Rpb25zIG9mIHRoZSB1c2VyIGludGVyZmFjZSB0byBhbg0KK2VsZWN0cm9uaWMgc3lzdGVtIG9mIGpvdXJuYWxzLCBpbmNsdWRpbmcgaW4gcGFydGljdWxhciBhIGNvbXBhcmlzb24gb2YNCitwYWdlLWltYWdlIGRpc3BsYXkgd2l0aCBBU0NJSSBkaXNwbGF5IGludGVyZmFjZXMuICBFYXJseSBleHBlcmltZW50cyB3aXRoDQorY2hlbWlzdHJ5IHN0dWRlbnRzIG9uIGEgdmFyaWV0eSBvZiB0YXNrcyBzdWdnZXN0IHRoYXQgc2VhcmNoaW5nIHRhc2tzIGFyZQ0KK2NvbXBsZXRlZCBtdWNoIGZhc3RlciB3aXRoIGFueSBlbGVjdHJvbmljIHN5c3RlbSB0aGFuIHdpdGggcGFwZXIsIGJ1dA0KK3RoYXQgZm9yIHJlYWRpbmcgYWxsIHZlcnNpb25zIG9mIHRoZSBhcnRpY2xlcyBhcmUgcm91Z2hseSBlcXVpdmFsZW50Lg0KKw0KK1BhbWVsYSBBTkRSRSBhbmQgSnVkaXRoIFpJREFSDQorDQorVGV4dCBjb252ZXJzaW9uIGlzIGZhciBtb3JlIGV4cGVuc2l2ZSBhbmQgdGltZS1jb25zdW1pbmcgdGhhbiBpbWFnZQ0KK2NhcHR1cmUgYWxvbmUuICBOQUwncyBleHBlcmllbmNlIHdpdGggb3B0aWNhbCBjaGFyYWN0ZXIgcmVjb2duaXRpb24gKE9DUikNCit3aWxsIGJlIHJlbGF0ZWQgYW5kIGNvbXBhcmVkIHdpdGggdGhlIGV4cGVyaWVuY2Ugb2YgaGF2aW5nIHRleHQgcmVrZXllZC4gDQorV2hhdCBmYWN0b3JzIGFmZmVjdCBPQ1IgYWNjdXJhY3k/ICBIb3cgYWNjdXJhdGUgZG9lcyBmdWxsIHRleHQgaGF2ZSB0byBiZQ0KK2luIG9yZGVyIHRvIGJlIHVzZWZ1bD8gIEhvdyBkbyBkaWZmZXJlbnQgdXNlcnMgcmVhY3QgdG8gaW1wZXJmZWN0IHRleHQ/IA0KK1RoZXNlIGFyZSBxdWVzdGlvbnMgdGhhdCB3aWxsIGJlIGV4cGxvcmVkLiAgRm9yIG1hbnksIGEgc2VydmljZSBidXJlYXUNCittYXkgYmUgYSBiZXR0ZXIgc29sdXRpb24gdGhhbiBwZXJmb3JtaW5nIHRoZSB3b3JrIGluaG91c2U7IHRoaXMgd2lsbCBhbHNvDQorYmUgZGlzY3Vzc2VkLg0KKw0KK1NFU1NJT04gVkkNCisNCitNYXJ5YmV0aCBQRVRFUlMNCisNCitDb3B5cmlnaHQgbGF3IHByb3RlY3RzIGNyZWF0aXZlIHdvcmtzLiAgUHJvdGVjdGlvbiBncmFudGVkIGJ5IHRoZSBsYXcgdG8NCithdXRob3JzIGFuZCBkaXNzZW1pbmF0b3JzIG9mIHdvcmtzIGluY2x1ZGVzIHRoZSByaWdodCB0byBkbyBvciBhdXRob3JpemUNCit0aGUgZm9sbG93aW5nOiAgcmVwcm9kdWNlIHRoZSB3b3JrLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3MsIGRpc3RyaWJ1dGUNCit0aGUgd29yayB0byB0aGUgcHVibGljLCBhbmQgcHVibGljbHkgcGVyZm9ybSBvciBkaXNwbGF5IHRoZSB3b3JrLiAgSW4NCithZGRpdGlvbiwgY29weXJpZ2h0IG93bmVycyBvZiBzb3VuZCByZWNvcmRpbmdzIGFuZCBjb21wdXRlciBwcm9ncmFtcyBoYXZlDQordGhlIHJpZ2h0IHRvIGNvbnRyb2wgcmVudGFsIG9mIHRoZWlyIHdvcmtzLiAgVGhlc2UgcmlnaHRzIGFyZSBub3QNCit1bmxpbWl0ZWQ7IHRoZXJlIGFyZSBhIG51bWJlciBvZiBleGNlcHRpb25zIGFuZCBsaW1pdGF0aW9ucy4NCisNCitBbiBlbGVjdHJvbmljIGVudmlyb25tZW50IHBsYWNlcyBzdHJhaW5zIG9uIHRoZSBjb3B5cmlnaHQgc3lzdGVtLiANCitDb3B5cmlnaHQgb3duZXJzIHdhbnQgdG8gY29udHJvbCB1c2VzIG9mIHRoZWlyIHdvcmsgYW5kIGJlIHBhaWQgZm9yIGFueQ0KK3VzZTsgdGhlIHB1YmxpYyB3YW50cyBxdWljayBhbmQgZWFzeSBhY2Nlc3MgYXQgbGl0dGxlIG9yIG5vIGNvc3QuICBUaGUNCittYXJrZXRwbGFjZSBpcyB3b3JraW5nIGluIHRoaXMgYXJlYS4gIENvbnRyYWN0cywgZ3VpZGVsaW5lcyBvbiBlbGVjdHJvbmljDQordXNlLCBhbmQgY29sbGVjdGl2ZSBsaWNlbnNpbmcgYXJlIGluIHVzZSBhbmQgYmVpbmcgcmVmaW5lZC4NCisNCitJc3N1ZXMgY29uY2VybmluZyB0aGUgYWJpbGl0eSB0byBjaGFuZ2Ugd29ya3Mgd2l0aG91dCBkZXRlY3Rpb24gYXJlIG1vcmUNCitkaWZmaWN1bHQgdG8gZGVhbCB3aXRoLiAgUXVlc3Rpb25zIGNvbmNlcm5pbmcgdGhlIGludGVncml0eSBvZiB0aGUgd29yaw0KK2FuZCB0aGUgc3RhdHVzIG9mIHRoZSBjaGFuZ2VkIHZlcnNpb24gdW5kZXIgdGhlIGNvcHlyaWdodCBsYXcgYXJlIHRvIGJlDQorYWRkcmVzc2VkLiAgVGhlc2UgYXJlIHB1YmxpYyBwb2xpY3kgaXNzdWVzIHdoaWNoIHJlcXVpcmUgaW5mb3JtZWQNCitkaWFsb2d1ZS4NCisNCisNCisgICAgICAgICAgICAgICAqKiogICAqKiogICAqKiogICAqKioqKiogICAqKiogICAqKiogICAqKioNCisNCisNCisgICAgICAgICAgICAgICAgQXBwZW5kaXggSUlJOiAgRElSRUNUT1JZIE9GIFBBUlRJQ0lQQU5UUw0KKyAgICAgICAgICAgICAgICAgICAgICAgICANCisNCitQUkVTRU5URVJTOg0KKw0KKyAgICAgUGFtZWxhIFEuSi4gQW5kcmUNCisgICAgIEFzc29jaWF0ZSBEaXJlY3RvciwgQXV0b21hdGlvbg0KKyAgICAgTmF0aW9uYWwgQWdyaWN1bHR1cmFsIExpYnJhcnkNCisgICAgIDEwMzAxIEJhbHRpbW9yZSBCb3VsZXZhcmQNCisgICAgIEJlbHRzdmlsbGUsIE1EIDIwNzA1LTIzNTENCisgICAgIFBob25lOiAgKDMwMSkgNTA0LTY4MTMNCisgICAgIEZheDogICgzMDEpIDUwNC03NDczDQorICAgICBFLW1haWw6ICBJTlRFUk5FVDogIFBBTkRSRUBBU1JSLkFSU1VTREEuR09WDQorDQorICAgICBKZWFuIEJhcm9uYXMsIFNlbmlvciBNYW5hZ2VyDQorICAgICBEZXBhcnRtZW50IG9mIFN0YW5kYXJkcyBhbmQgVGVjaG5vbG9neQ0KKyAgICAgQXNzb2NpYXRpb24gZm9yIEluZm9ybWF0aW9uIGFuZCBJbWFnZSBNYW5hZ2VtZW50IChBSUlNKQ0KKyAgICAgMTEwMCBXYXluZSBBdmVudWUsIFN1aXRlIDExMDANCisgICAgIFNpbHZlciBTcHJpbmcsIE1EIDIwOTEwDQorICAgICBQaG9uZTogICgzMDEpIDU4Ny04MjAyDQorICAgICBGYXg6ICAoMzAxKSA1ODctMjcxMQ0KKyAgICAgDQorICAgICBQYXRyaWNpYSBCYXR0aW4sIFByZXNpZGVudA0KKyAgICAgVGhlIENvbW1pc3Npb24gb24gUHJlc2VydmF0aW9uIGFuZCBBY2Nlc3MNCisgICAgIDE0MDAgMTZ0aCBTdHJlZXQsIE4uVy4NCisgICAgIFN1aXRlIDc0MA0KKyAgICAgV2FzaGluZ3RvbiwgREMgMjAwMzYtMjIxNw0KKyAgICAgUGhvbmU6ICAoMjAyKSA5MzktMzQwMA0KKyAgICAgRmF4OiAgKDIwMikgOTM5LTM0MDcNCisgICAgIEUtbWFpbDogIENQQUBHV1VWTS5CSVRORVQNCisNCisgICAgIEhvd2FyZCBCZXNzZXINCisgICAgIENlbnRyZSBDYW5hZGllbiBkJ0FyY2hpdGVjdHVyZQ0KKyAgICAgKENhbmFkaWFuIENlbnRlciBmb3IgQXJjaGl0ZWN0dXJlKQ0KKyAgICAgMTkyMCwgcnVlIEJhaWxlDQorICAgICBNb250cmVhbCwgUXVlYmVjIEgzSCAyUzYNCisgICAgIENBTkFEQQ0KKyAgICAgUGhvbmU6ICAoNTE0KSA5MzktNzAwMQ0KKyAgICAgRmF4OiAgKDUxNCkgOTM5LTcwMjANCisgICAgIEUtbWFpbDogIGhvd2FyZEBsaXMucGl0dC5lZHUNCisNCisgICAgIEVkd2luIEIuIEJyb3ducmlnZywgRXhlY3V0aXZlIERpcmVjdG9yDQorICAgICBNZW1leCBSZXNlYXJjaCBJbnN0aXR1dGUNCisgICAgIDQyMiBCb25pdGEgQXZlbnVlDQorICAgICBSb3NldmlsbGUsIENBIDk1Njc4DQorICAgICBQaG9uZTogICg5MTYpIDc4NC0yMjk4DQorICAgICBGYXg6ICAoOTE2KSA3ODYtNzU1OQ0KKyAgICAgRS1tYWlsOiAgQklUTkVUOiAgTUVNRVhAQ0FMU1RBVEUuMg0KKw0KKyAgICAgRXJpYyBNLiBDYWxhbHVjYSwgVmljZSBQcmVzaWRlbnQNCisgICAgIENoYWR3eWNrLUhlYWxleSwgSW5jLg0KKyAgICAgMTEwMSBLaW5nIFN0cmVldA0KKyAgICAgQWxleGFuZHJpYSwgVkEgMjIzbDQNCisgICAgIFBob25lOiAgKDgwMCkgNzUyLTA1bDUNCisgICAgIEZheDogICg3MDMpIDY4My03NTg5DQorDQorICAgICBKYW1lcyBEYWx5DQorICAgICA0MDE1IERlZXB3b29kIFJvYWQNCisgICAgIEJhbHRpbW9yZSwgTUQgMjEyMTgtMTQwNA0KKyAgICAgUGhvbmU6ICAoNDEwKSAyMzUtMDc2Mw0KKw0KKyAgICAgUmlja3kgRXJ3YXksIEFzc29jaWF0ZSBDb29yZGluYXRvcg0KKyAgICAgQW1lcmljYW4gTWVtb3J5DQorICAgICBMaWJyYXJ5IG9mIENvbmdyZXNzDQorICAgICBQaG9uZTogICgyMDIpIDcwNy02MjMzDQorICAgICBGYXg6ICAoMjAyKSA3MDctMzc2NA0KKw0KKyAgICAgQ2FybCBGbGVpc2NoaGF1ZXIsIENvb3JkaW5hdG9yDQorICAgICBBbWVyaWNhbiBNZW1vcnkNCisgICAgIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisgICAgIFBob25lOiAgKDIwMikgNzA3LTYyMzMNCisgICAgIEZheDogICgyMDIpIDcwNy0zNzY0DQorDQorICAgICBKb2FubmUgRnJlZW1hbg0KKyAgICAgMjAwMCBKZWZmZXJzb24gUGFyayBBdmVudWUsIE5vLiA3DQorICAgICBDaGFybG90dGVzdmlsbGUsIFZBICAyMjkwMw0KKyAgICAgDQorICAgICBQcm9zc2VyIEdpZmZvcmQNCisgICAgIERpcmVjdG9yIGZvciBTY2hvbGFybHkgUHJvZ3JhbXMNCisgICAgIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisgICAgIFBob25lOiAgKDIwMikgNzA3LTE1MTcNCisgICAgIEZheDogICgyMDIpIDcwNy05ODk4DQorICAgICBFLW1haWw6ICBwZ2lmQHNlcTEubG9jLmdvdg0KKw0KKyAgICAgSmFjcXVlbGluZSBIZXNzLCBEaXJlY3Rvcg0KKyAgICAgTmF0aW9uYWwgRGVtb25zdHJhdGlvbiBMYWJvcmF0b3J5DQorICAgICAgIGZvciBJbnRlcmFjdGl2ZSBJbmZvcm1hdGlvbiBUZWNobm9sb2dpZXMNCisgICAgIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisgICAgIFBob25lOiAgKDIwMikgNzA3LTQxNTcNCisgICAgIEZheDogICgyMDIpIDcwNy0yODI5DQorICAgICANCisgICAgIFN1c2FuIEhvY2tleSwgRGlyZWN0b3INCisgICAgIENlbnRlciBmb3IgRWxlY3Ryb25pYyBUZXh0cyBpbiB0aGUgSHVtYW5pdGllcyAoQ0VUSCkNCisgICAgIEFsZXhhbmRlciBMaWJyYXJ5DQorICAgICBSdXRnZXJzIFVuaXZlcnNpdHkNCisgICAgIDE2OSBDb2xsZWdlIEF2ZW51ZQ0KKyAgICAgTmV3IEJydW5zd2ljaywgTkogMDg5MDMNCisgICAgIFBob25lOiAgKDkwOCkgOTMyLTEzODQNCisgICAgIEZheDogICg5MDgpIDkzMi0xMzg2DQorICAgICBFLW1haWw6ICBob2NrZXlAem9kaWFjLnJ1dGdlcnMuZWR1DQorDQorICAgICBXaWxsaWFtIEwuIEhvb3RvbiwgVmljZSBQcmVzaWRlbnQNCisgICAgIEJ1c2luZXNzICYgVGVjaG5pY2FsIERldmVsb3BtZW50DQorICAgICAgIEltYWdpbmcgJiBJbmZvcm1hdGlvbiBTeXN0ZW1zIEdyb3VwDQorICAgICBJLU5FVA0KKyAgICAgNjQzMCBSb2NrbGVkZ2UgRHJpdmUsIFN1aXRlIDQwMA0KKyAgICAgQmV0aGVzZGEsIE1EIDIwOGw3DQorICAgICBQaG9uZTogICgzMDEpIDU2NC02NzUwDQorICAgICBGYXg6ICAoNTEzKSA1NjQtNjg2Nw0KKw0KKyAgICAgQW5uZSBSLiBLZW5uZXksIEFzc29jaWF0ZSBEaXJlY3Rvcg0KKyAgICAgRGVwYXJ0bWVudCBvZiBQcmVzZXJ2YXRpb24gYW5kIENvbnNlcnZhdGlvbg0KKyAgICAgNzAxIE9saW4gTGlicmFyeQ0KKyAgICAgQ29ybmVsbCBVbml2ZXJzaXR5DQorICAgICBJdGhhY2EsIE5ZIDE0ODUzDQorICAgICBQaG9uZTogICg2MDcpIDI1NS02ODc1DQorICAgICBGYXg6ICAoNjA3KSAyNTUtOTM0Ng0KKyAgICAgRS1tYWlsOiAgTFlEWUBDT1JORUxMQS5CSVRORVQNCisNCisgICAgIFJvbmFsZCBMLiBMYXJzZW4NCisgICAgIEFzc29jaWF0ZSBEaXJlY3RvciBmb3IgSW5mb3JtYXRpb24gVGVjaG5vbG9neQ0KKyAgICAgVW5pdmVyc2l0eSBvZiBNYXJ5bGFuZCBhdCBDb2xsZWdlIFBhcmsNCisgICAgIFJvb20gQjAyMjQsIE1jS2VsZGluIExpYnJhcnkNCisgICAgIENvbGxlZ2UgUGFyaywgTUQgMjA3NDItNzAxMQ0KKyAgICAgUGhvbmU6ICAoMzAxKSA0MDUtOTE5NA0KKyAgICAgRmF4OiAgKDMwMSkgMzE0LTk4NjUNCisgICAgIEUtbWFpbDogIHJsYXJzZW5AbGlici51bWQuZWR1DQorDQorICAgICBNYXJpYSBMLiBMZWJyb24sIE1hbmFnaW5nIEVkaXRvcg0KKyAgICAgVGhlIE9ubGluZSBKb3VybmFsIG9mIEN1cnJlbnQgQ2xpbmljYWwgVHJpYWxzDQorICAgICBsMzMzIEggU3RyZWV0LCBOLlcuDQorICAgICBXYXNoaW5ndG9uLCBEQyAyMDAwNQ0KKyAgICAgUGhvbmU6ICAoMjAyKSAzMjYtNjczNQ0KKyAgICAgRmF4OiAgKDIwMikgODQyLTI4NjgNCisgICAgIEUtbWFpbDogIFBVQlNBQUFTQEdXVVZNLkJJVE5FVA0KKw0KKyAgICAgTWljaGFlbCBMZXNrLCBFeGVjdXRpdmUgRGlyZWN0b3INCisgICAgIENvbXB1dGVyIFNjaWVuY2UgUmVzZWFyY2gNCisgICAgIEJlbGwgQ29tbXVuaWNhdGlvbnMgUmVzZWFyY2gsIEluYy4NCisgICAgIFJtIDJBLTM4NQ0KKyAgICAgNDQ1IFNvdXRoIFN0cmVldA0KKyAgICAgTW9ycmlzdG93biwgTkogMDc5NjAtbDlsMCAgICAgDQorICAgICBQaG9uZTogICgyMDEpIDgyOS00MDcwDQorICAgICBGYXg6ICAoMjAxKSA4MjktNTk4MQ0KKyAgICAgRS1tYWlsOiAgbGVza0BiZWxsY29yZS5jb20gKEludGVybmV0KSBvciBiZWxsY29yZSFsZXNrICh1dWNwKQ0KKw0KKyAgICAgQ2xpZmZvcmQgQS4gTHluY2gNCisgICAgIERpcmVjdG9yLCBMaWJyYXJ5IEF1dG9tYXRpb24NCisgICAgIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwNCisgICAgICAgIE9mZmljZSBvZiB0aGUgUHJlc2lkZW50DQorICAgICAzMDAgTGFrZXNpZGUgRHJpdmUsIDh0aCBGbG9vcg0KKyAgICAgT2FrbGFuZCwgQ0EgOTQ2MTItMzM1MA0KKyAgICAgUGhvbmU6ICAoNTEwKSA5ODctMDUyMg0KKyAgICAgRmF4OiAgKDUxMCkgODM5LTM1NzMNCisgICAgIEUtbWFpbDogIGNhbHVyQHVjY212c2ENCisNCisgICAgIEF2cmEgTWljaGVsc29uDQorICAgICBOYXRpb25hbCBBcmNoaXZlcyBhbmQgUmVjb3JkcyBBZG1pbmlzdHJhdGlvbg0KKyAgICAgTlNaIFJtLiAxNE4NCisgICAgIDd0aCAmIFBlbm5zeWx2YW5pYSwgTi5XLg0KKyAgICAgV2FzaGluZ3RvbiwgRC5DLiAyMDQwOA0KKyAgICAgUGhvbmU6ICAoMjAyKSA1MDEtNTU0NA0KKyAgICAgRmF4OiAgKDIwMikgNTAxLTU1MzMNCisgICAgIEUtbWFpbDogIHRtaUBjdS5uaWguZ292DQorICAgICANCisgICAgIEVsbGkgTXlsb25hcywgTWFuYWdpbmcgRWRpdG9yDQorICAgICBQZXJzZXVzIFByb2plY3QNCisgICAgIERlcGFydG1lbnQgb2YgdGhlIENsYXNzaWNzDQorICAgICBIYXJ2YXJkIFVuaXZlcnNpdHkNCisgICAgIDMxOSBCb3lsc3RvbiBIYWxsDQorICAgICBDYW1icmlkZ2UsIE1BIDAyMTM4DQorICAgICBQaG9uZTogICg2MTcpIDQ5NS05MDI1LCAoNjE3KSA0OTUtMDQ1NiAoZGlyZWN0KQ0KKyAgICAgRmF4OiAgKDYxNykgNDk2LTg4ODYNCisgICAgIEUtbWFpbDogIEVsbGlASUtBUk9TLkhhcnZhcmQuRURVIG9yIGVsbGlAd2poMTIuaGFydmFyZC5lZHUNCisNCisgICAgIERhdmlkIFdvb2RsZXkgUGFja2FyZA0KKyAgICAgUGFja2FyZCBIdW1hbml0aWVzIEluc3RpdHV0ZQ0KKyAgICAgMzAwIFNlY29uZCBTdHJlZXQsIFN1aXRlIDIwMQ0KKyAgICAgTG9zIEFsdG9zLCBDQSA5NDAwMg0KKyAgICAgUGhvbmU6ICAoNDE1KSA5NDgtMDE1MCAoUEhJKQ0KKyAgICAgRmF4OiAgKDQxNSkgOTQ4LTU3OTMNCisNCisgICAgIEx5bm5lIEsuIFBlcnNvbml1cywgQXNzaXN0YW50IERpcmVjdG9yDQorICAgICBDb3JuZWxsIEluZm9ybWF0aW9uIFRlY2hub2xvZ2llcyBmb3INCisgICAgICBTY2hvbGFybHkgSW5mb3JtYXRpb24gU291cmNlcw0KKyAgICAgNTAyIE9saW4gTGlicmFyeQ0KKyAgICAgQ29ybmVsbCBVbml2ZXJzaXR5DQorICAgICBJdGhhY2EsIE5ZIDE0ODUzDQorICAgICBQaG9uZTogICg2MDcpIDI1NS0zMzkzDQorICAgICBGYXg6ICAoNjA3KSAyNTUtOTM0Ng0KKyAgICAgRS1tYWlsOiAgSlJOQENPUk5FTExDLkJJVE5FVA0KKw0KKyAgICAgTWFyeWJldGggUGV0ZXJzDQorICAgICBQb2xpY3kgUGxhbm5pbmcgQWR2aXNlciB0byB0aGUNCisgICAgICAgUmVnaXN0ZXIgb2YgQ29weXJpZ2h0cw0KKyAgICAgTGlicmFyeSBvZiBDb25ncmVzcw0KKyAgICAgT2ZmaWNlIExNIDQwMw0KKyAgICAgUGhvbmU6ICAoMjAyKSA3MDctODM1MA0KKyAgICAgRmF4OiAgKDIwMikgNzA3LTgzNjYNCisNCisgICAgIEMuIE1pY2hhZWwgU3BlcmJlcmctTWNRdWVlbg0KKyAgICAgRWRpdG9yLCBUZXh0IEVuY29kaW5nIEluaXRpYXRpdmUNCisgICAgIENvbXB1dGVyIENlbnRlciAoTS9DIDEzNSkNCisgICAgIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgQ2hpY2Fnbw0KKyAgICAgQm94IDY5OTgNCisgICAgIENoaWNhZ28sIElMIDYwNjgwDQorICAgICBQaG9uZTogICgzMTIpIDQxMy0wMzE3DQorICAgICBGYXg6ICAoMzEyKSA5OTYtNjgzNA0KKyAgICAgRS1tYWlsOiAgdTM1Mzk1QHVpY3ZtLi5jYy51aWMuZWR1IG9yIHUzNTM5NUB1aWN2bS5iaXRuZXQNCisNCisgICAgIEdlb3JnZSBSLiBUaG9tYSwgQ2hpZWYNCisgICAgIENvbW11bmljYXRpb25zIEVuZ2luZWVyaW5nIEJyYW5jaA0KKyAgICAgTmF0aW9uYWwgTGlicmFyeSBvZiBNZWRpY2luZQ0KKyAgICAgODYwMCBSb2NrdmlsbGUgUGlrZQ0KKyAgICAgQmV0aGVzZGEsIE1EIDIwODk0DQorICAgICBQaG9uZTogICgzMDEpIDQ5Ni00NDk2DQorICAgICBGYXg6ICAoMzAxKSA0MDItMDM0MQ0KKyAgICAgRS1tYWlsOiAgdGhvbWFAbGhjLm5sbS5uaWguZ292DQorDQorICAgICBEb3JvdGh5IFR3b2hpZywgRWRpdG9yDQorICAgICBUaGUgUGFwZXJzIG9mIEdlb3JnZSBXYXNoaW5ndG9uDQorICAgICA1MDQgQWxkZXJtYW4gTGlicmFyeQ0KKyAgICAgVW5pdmVyc2l0eSBvZiBWaXJnaW5pYQ0KKyAgICAgQ2hhcmxvdHRlc3ZpbGxlLCBWQSAyMjkwMy0yNDk4DQorICAgICBQaG9uZTogICg4MDQpIDkyNC0wNTIzDQorICAgICBGYXg6ICAoODA0KSA5MjQtNDMzNw0KKw0KKyAgICAgU3VzYW4gSC4gVmVjY2lhLCBUZWFtIGxlYWRlcg0KKyAgICAgQW1lcmljYW4gTWVtb3J5LCBVc2VyIEV2YWx1YXRpb24NCisgICAgIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisgICAgIEFtZXJpY2FuIE1lbW9yeSBFdmFsdWF0aW9uIFByb2plY3QNCisgICAgIFBob25lOiAgKDIwMikgNzA3LTkxMDQNCisgICAgIEZheDogICgyMDIpIDcwNy0zNzY0DQorICAgICBFLW1haWw6ICBzdmVjQHNlcTEubG9jLmdvdg0KKw0KKyAgICAgRG9uYWxkIEouIFdhdGVycywgSGVhZA0KKyAgICAgU3lzdGVtcyBPZmZpY2UNCisgICAgIFlhbGUgVW5pdmVyc2l0eSBMaWJyYXJ5DQorICAgICBOZXcgSGF2ZW4sIENUIDA2NTIwDQorICAgICBQaG9uZTogICgyMDMpIDQzMi00ODg5DQorICAgICBGYXg6ICAoMjAzKSA0MzItNzIzMQ0KKyAgICAgRS1tYWlsOiAgRFdBVEVSU0BZQUxFVk0uQklUTkVUIG9yIERXQVRFUlNAWUFMRVZNLllDQy5ZQUxFLkVEVQ0KKw0KKyAgICAgU3R1YXJ0IFdlaWJlbCwgU2VuaW9yIFJlc2VhcmNoIFNjaWVudGlzdA0KKyAgICAgT0NMQw0KKyAgICAgNjU2NSBGcmFudHogUm9hZA0KKyAgICAgRHVibGluLCBPSCA0MzAxNw0KKyAgICAgUGhvbmU6ICAoNjE0KSA3NjQtNjA4bA0KKyAgICAgRmF4OiAgKDYxNCkgNzY0LTIzNDQNCisgICAgIEUtbWFpbDogIElOVEVSTkVUOiAgU3R1QHJzY2gub2NsYy5vcmcNCisNCisgICAgIFJvYmVydCBHLiBaaWNoDQorICAgICBTcGVjaWFsIEFzc2lzdGFudCB0byB0aGUgQXNzb2NpYXRlIExpYnJhcmlhbg0KKyAgICAgICBmb3IgU3BlY2lhbCBQcm9qZWN0cw0KKyAgICAgTGlicmFyeSBvZiBDb25ncmVzcw0KKyAgICAgUGhvbmU6ICAoMjAyKSA3MDctNjIzMw0KKyAgICAgRmF4OiAgKDIwMikgNzA3LTM3NjQNCisgICAgIEUtbWFpbDogIHJ6aWNAc2VxMS5sb2MuZ292DQorDQorICAgICBKdWRpdGggQS4gWmlkYXIsIENvb3JkaW5hdG9yDQorICAgICBOYXRpb25hbCBBZ3JpY3VsdHVyYWwgVGV4dCBEaWdpdGl6aW5nIFByb2dyYW0NCisgICAgIEluZm9ybWF0aW9uIFN5c3RlbXMgRGl2aXNpb24NCisgICAgIE5hdGlvbmFsIEFncmljdWx0dXJhbCBMaWJyYXJ5DQorICAgICAxMDMwMSBCYWx0aW1vcmUgQm91bGV2YXJkDQorICAgICBCZWx0c3ZpbGxlLCBNRCAyMDcwNS0yMzUxDQorICAgICBQaG9uZTogICgzMDEpIDUwNC02ODEzIG9yIDUwNC01ODUzDQorICAgICBGYXg6ICAoMzAxKSA1MDQtNzQ3Mw0KKyAgICAgRS1tYWlsOiAgSU5URVJORVQ6ICBKWklEQVJAQVNSUi5BUlNVU0RBLkdPVg0KKw0KKw0KK09CU0VSVkVSUzoNCisNCisgICAgIEhlbGVuIEFndWVyYSwgUHJvZ3JhbSBPZmZpY2VyDQorICAgICBEaXZpc2lvbiBvZiBSZXNlYXJjaA0KKyAgICAgUm9vbSAzMTgNCisgICAgIE5hdGlvbmFsIEVuZG93bWVudCBmb3IgdGhlIEh1bWFuaXRpZXMNCisgICAgIDExMDAgUGVubnN5bHZhbmlhIEF2ZW51ZSwgTi5XLg0KKyAgICAgV2FzaGluZ3RvbiwgRC5DLiAyMDUwNg0KKyAgICAgUGhvbmU6ICAoMjAyKSA3ODYtMDM1OA0KKyAgICAgRmF4OiAgKDIwMikgNzg2LTAyNDMNCisNCisgICAgIE0uIEVsbHluIEJsYW50b24sIERlcHV0eSBEaXJlY3Rvcg0KKyAgICAgTmF0aW9uYWwgRGVtb25zdHJhdGlvbiBMYWJvcmF0b3J5DQorICAgICAgIGZvciBJbnRlcmFjdGl2ZSBJbmZvcm1hdGlvbiBUZWNobm9sb2dpZXMNCisgICAgIExpYnJhcnkgb2YgQ29uZ3Jlc3MNCisgICAgIFBob25lOiAgKDIwMikgNzA3LTQxNTcNCisgICAgIEZheDogICgyMDIpIDcwNy0yODI5DQorDQorICAgICBDaGFybGVzIE0uIERvbGxhcg0KKyAgICAgTmF0aW9uYWwgQXJjaGl2ZXMgYW5kIFJlY29yZHMgQWRtaW5pc3RyYXRpb24NCisgICAgIE5TWiBSbS4gMTRODQorICAgICA3dGggJiBQZW5uc3lsdmFuaWEsIE4uVy4NCisgICAgIFdhc2hpbmd0b24sIERDIDIwNDA4DQorICAgICBQaG9uZTogICgyMDIpIDUwMS01NTMyDQorICAgICBGYXg6ICAoMjAyKSA1MDEtNTUxMg0KKw0KKyAgICAgSmVmZnJleSBGaWVsZCwgRGVwdXR5IHRvIHRoZSBEaXJlY3Rvcg0KKyAgICAgRGl2aXNpb24gb2YgUHJlc2VydmF0aW9uIGFuZCBBY2Nlc3MNCisgICAgIFJvb20gODAyDQorICAgICBOYXRpb25hbCBFbmRvd21lbnQgZm9yIHRoZSBIdW1hbml0aWVzDQorICAgICAxMTAwIFBlbm5zeWx2YW5pYSBBdmVudWUsIE4uVy4NCisgICAgIFdhc2hpbmd0b24sIERDIDIwNTA2DQorICAgICBQaG9uZTogICgyMDIpIDc4Ni0wNTcwDQorICAgICBGYXg6ICAoMjAyKSA3ODYtMDI0Mw0KKw0KKyAgICAgTG9ycmluIEdhcnNvbg0KKyAgICAgQW1lcmljYW4gQ2hlbWljYWwgU29jaWV0eQ0KKyAgICAgUmVzZWFyY2ggYW5kIERldmVsb3BtZW50IERlcGFydG1lbnQNCisgICAgIDExNTUgMTZ0aCBTdHJlZXQsIE4uVy4NCisgICAgIFdhc2hpbmd0b24sIEQuQy4gMjAwMzYNCisgICAgIFBob25lOiAgKDIwMikgODcyLTQ1NDENCisgICAgIEZheDogIEUtbWFpbDogIElOVEVSTkVUOiAgTFJHOTZAQUNTLk9SRw0KKw0KKyAgICAgV2lsbGlhbSBNLiBIb2xtZXMsIEpyLg0KKyAgICAgTmF0aW9uYWwgQXJjaGl2ZXMgYW5kIFJlY29yZHMgQWRtaW5pc3RyYXRpb24NCisgICAgIE5TWiBSbS4gMTRODQorICAgICA3dGggJiBQZW5uc3lsdmFuaWEsIE4uVy4NCisgICAgIFdhc2hpbmd0b24sIERDIDIwNDA4DQorICAgICBQaG9uZTogICgyMDIpIDUwMS01NTQwDQorICAgICBGYXg6ICAoMjAyKSA1MDEtNTUxMg0KKyAgICAgRS1tYWlsOiAgV0hPTE1FU0BBTUVSSUNBTi5FRFUNCisNCisgICAgIFNwZXJsaW5nIE1hcnRpbg0KKyAgICAgSW5mb3JtYXRpb24gUmVzb3VyY2UgTWFuYWdlbWVudA0KKyAgICAgMjAwMzAgRG9vbGl0dGxlIFN0cmVldA0KKyAgICAgR2FpdGhlcnNidXJnLCBNRCAyMDg3OQ0KKyAgICAgUGhvbmU6ICAoMzAxKSA5MjQtMTgwMw0KKw0KKyAgICAgTWljaGFlbCBOZXVtYW4sIERpcmVjdG9yDQorICAgICBUaGUgQ2VudGVyIGZvciBUZXh0IGFuZCBUZWNobm9sb2d5DQorICAgICBBY2FkZW1pYyBDb21wdXRpbmcgQ2VudGVyDQorICAgICAyMzggUmVpc3MgU2NpZW5jZSBCdWlsZGluZw0KKyAgICAgR2VvcmdldG93biBVbml2ZXJzaXR5DQorICAgICBXYXNoaW5ndG9uLCBEQyAyMDA1Nw0KKyAgICAgUGhvbmU6ICAoMjAyKSA2ODctNjA5Ng0KKyAgICAgRmF4OiAgKDIwMikgNjg3LTYwMDMNCisgICAgIEUtbWFpbDogIG5ldW1hbkBndXZheC5iaXRuZXQsIG5ldW1hbkBndXZheC5nZW9yZ2V0b3duLmVkdQ0KKw0KKyAgICAgQmFyYmFyYSBQYXVsc29uLCBQcm9ncmFtIE9mZmljZXINCisgICAgIERpdmlzaW9uIG9mIFByZXNlcnZhdGlvbiBhbmQgQWNjZXNzDQorICAgICBSb29tIDgwMg0KKyAgICAgTmF0aW9uYWwgRW5kb3dtZW50IGZvciB0aGUgSHVtYW5pdGllcw0KKyAgICAgMTEwMCBQZW5uc3lsdmFuaWEgQXZlbnVlLCBOLlcuDQorICAgICBXYXNoaW5ndG9uLCBEQyAyMDUwNg0KKyAgICAgUGhvbmU6ICAoMjAyKSA3ODYtMDU3Nw0KKyAgICAgRmF4OiAgKDIwMikgNzg2LTAyNDMNCisgICAgIA0KKyAgICAgQWxsZW4gSC4gUmVuZWFyDQorICAgICBTZW5pb3IgQWNhZGVtaWMgUGxhbm5pbmcgQW5hbHlzdA0KKyAgICAgQnJvd24gVW5pdmVyc2l0eSBDb21wdXRpbmcgYW5kIEluZm9ybWF0aW9uIFNlcnZpY2VzDQorICAgICAxMTUgV2F0ZXJtYW4gU3RyZWV0DQorICAgICBDYW1wdXMgQm94IDE4ODUNCisgICAgIFByb3ZpZGVuY2UsIFIuSS4gMDI5MTINCisgICAgIFBob25lOiAgKDQwMSkgODYzLTczMTINCisgICAgIEZheDogICg0MDEpIDg2My03MzI5DQorICAgICBFLW1haWw6ICBCSVRORVQ6ICBBbGxlbkBCUk9XTlZNIG9yICAgICAgICAgICANCisgICAgIElOVEVSTkVUOiAgQWxsZW5AYnJvd252bS5icm93bi5lZHUNCisNCisgICAgIFN1c2FuIE0uIFNldmVydHNvbiwgUHJlc2lkZW50DQorICAgICBDaGFkd3ljay1IZWFsZXksIEluYy4NCisgICAgIDExMDEgS2luZyBTdHJlZXQNCisgICAgIEFsZXhhbmRyaWEsIFZBIDIyM2w0DQorICAgICBQaG9uZTogICg4MDApIDc1Mi0wNWw1DQorICAgICBGYXg6ICAoNzAzKSA2ODMtNzU4OSAgICAgDQorDQorICAgICBGcmFuayBXaXRocm93DQorICAgICBVLlMuIERlcGFydG1lbnQgb2YgRWR1Y2F0aW9uDQorICAgICA1NTUgTmV3IEplcnNleSBBdmVudWUsIE4uVy4NCisgICAgIFdhc2hpbmd0b24sIERDIDIwMjA4LTU2NDQNCisgICAgIFBob25lOiAgKDIwMikgMjE5LTIyMDANCisgICAgIEZheDogICgyMDIpIDIxOS0yMTA2DQorDQorDQorKExDIFNUQUZGKQ0KKyAgICAgDQorICAgICBMaW5kYSBMLiBBcnJldA0KKyAgICAgTWFjaGluZS1SZWFkYWJsZSBDb2xsZWN0aW9ucyBSZWFkaW5nIFJvb20gTEogMTMyDQorICAgICAoMjAyKSA3MDctMTQ5MA0KKw0KKyAgICAgSm9obiBELiBCeXJ1bSwgSnIuDQorICAgICBEZXNjcmlwdGl2ZSBDYXRhbG9naW5nIERpdmlzaW9uIExNIDU0MA0KKyAgICAgKDIwMikgNzA3LTUxOTQNCisNCisgICAgIE1hcnkgSmFuZSBDYXZhbGxvDQorICAgICBTY2llbmNlIGFuZCBUZWNobm9sb2d5IERpdmlzaW9uIExBIDUyMTANCisgICAgICgyMDIpIDcwNy0xMjE5DQorDQorICAgICBTdXNhbiBUaGVhIERhdmlkDQorICAgICBDb25ncmVzc2lvbmFsIFJlc2VhcmNoIFNlcnZpY2UgTE0gMjI2DQorICAgICAoMjAyKSA3MDctNzE2OQ0KKw0KKyAgICAgUm9iZXJ0IERpZXJrZXINCisgICAgIFNlbmlvciBBZHZpc2VyIGZvciBNdWx0aW1lZGlhIEFjdGl2aXRpZXMgTE0gNjA4DQorICAgICAoMjAyKSA3MDctNjE1MQ0KKw0KKyAgICAgV2lsbGlhbSBXLiBFbGxpcw0KKyAgICAgQXNzb2NpYXRlIExpYnJhcmlhbiBmb3IgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBMTSA2MTENCisgICAgICgyMDIpIDcwNy02OTI4DQorDQorICAgICBSb25hbGQgR2VwaGFydA0KKyAgICAgTWFudXNjcmlwdCBEaXZpc2lvbiBMTSAxMDINCisgICAgICgyMDIpIDcwNy01MDk3DQorDQorICAgICBKYW1lcyBHcmFiZXINCisgICAgIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMgTE0gRzUxDQorICAgICAoMjAyKSA3MDctOTYyOA0KKw0KKyAgICAgUmljaCBHcmVlbmZpZWxkDQorICAgICBBbWVyaWNhbiBNZW1vcnkgTE0gNjAzDQorICAgICAoMjAyKSA3MDctNjIzMw0KKw0KKyAgICAgUmViZWNjYSBHdWVudGhlcg0KKyAgICAgTmV0d29yayBEZXZlbG9wbWVudCBMTSA2MzkNCisgICAgICgyMDIpIDcwNy01MDkyDQorDQorICAgICBLZW5uZXRoIEUuIEhhcnJpcw0KKyAgICAgUHJlc2VydmF0aW9uIExNIEcyMQ0KKyAgICAgKDIwMikgNzA3LTUyMTMNCisNCisgICAgIFN0YWxleSBIaXRjaGNvY2sNCisgICAgIE1hbnVzY3JpcHQgRGl2aXNpb24gTE0gMTAyDQorICAgICAoMjAyKSA3MDctNTM4Mw0KKw0KKyAgICAgQm9oZGFuIEthbnRvcg0KKyAgICAgT2ZmaWNlIG9mIFNwZWNpYWwgUHJvamVjdHMgTE0gNjEyDQorICAgICAoMjAyKSA3MDctMDE4MA0KKw0KKyAgICAgSm9obiBXLiBLaW1iYWxsLCBKcg0KKyAgICAgTWFjaGluZS1SZWFkYWJsZSBDb2xsZWN0aW9ucyBSZWFkaW5nIFJvb20gTEogMTMyDQorICAgICAoMjAyKSA3MDctNjU2MA0KKw0KKyAgICAgQmFzaWwgTWFubnMNCisgICAgIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMgTE0gRzUxDQorICAgICAoMjAyKSA3MDctODM0NQ0KKw0KKyAgICAgU2FsbHkgSGFydCBNY0NhbGx1bQ0KKyAgICAgTmV0d29yayBEZXZlbG9wbWVudCBMTSA2MzkNCisgICAgICgyMDIpIDcwNy02MjM3DQorDQorICAgICBEYW5hIEouIFByYXR0DQorICAgICBQdWJsaXNoaW5nIE9mZmljZSBMTSA2MDINCisgICAgICgyMDIpIDcwNy02MDI3DQorDQorICAgICBKYW5lIFJpZWZlbmhhdXNlcg0KKyAgICAgQW1lcmljYW4gTWVtb3J5IExNIDYwMw0KKyAgICAgKDIwMikgNzA3LTYyMzMNCisNCisgICAgIFdpbGxpYW0gWi4gU2NoZW5jaw0KKyAgICAgQ29sbGVjdGlvbnMgRGV2ZWxvcG1lbnQgTE0gNjUwDQorICAgICAoMjAyKSA3MDctNzcwNg0KKw0KKyAgICAgQ2hhbmRydSBKLiBTaGFoYW5pDQorICAgICBQcmVzZXJ2YXRpb24gUmVzZWFyY2ggYW5kIFRlc3RpbmcgT2ZmaWNlIChSJlQpIExNIEczOA0KKyAgICAgKDIwMikgNzA3LTU2MDcNCisNCisgICAgIFdpbGxpYW0gSi4gU2l0dGlnDQorICAgICBDb2xsZWN0aW9ucyBEZXZlbG9wbWVudCBMTSA2NTANCisgICAgICgyMDIpIDcwNy03MDUwDQorDQorICAgICBQYXVsIFNtaXRoDQorICAgICBNYW51c2NyaXB0IERpdmlzaW9uIExNIDEwMg0KKyAgICAgKDIwMikgNzA3LTUwOTcNCisNCisgICAgIEphbWVzIEwuIFN0ZXZlbnMNCisgICAgIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMgTE0gRzUxDQorICAgICAoMjAyKSA3MDctOTY4OA0KKw0KKyAgICAgS2FyZW4gU3R1YXJ0DQorICAgICBNYW51c2NyaXB0IERpdmlzaW9uIExNIDEzMA0KKyAgICAgKDIwMikgNzA3LTUzODkNCisNCisgICAgIFRhbWFyYSBTd29yYQ0KKyAgICAgUHJlc2VydmF0aW9uIE1pY3JvZmlsbWluZyBPZmZpY2UgTE0gRzA1DQorICAgICAoMjAyKSA3MDctNjI5Mw0KKw0KKyAgICAgU2FyYWggVGhvbWFzDQorICAgICBDb2xsZWN0aW9ucyBDYXRhbG9naW5nIExNIDY0Mg0KKyAgICAgKDIwMikgNzA3LTUzMzMNCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVORA0KKyAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCitOb3RlOiAgVGhpcyBmaWxlIGhhcyBiZWVuIGVkaXRlZCBmb3IgdXNlIG9uIGNvbXB1dGVyIG5ldHdvcmtzLiAgVGhpcw0KK2VkaXRpbmcgcmVxdWlyZWQgdGhlIHJlbW92YWwgb2YgZGlhY3JpdGljcywgdW5kZXJsaW5pbmcsIGFuZCBmb250cyBzdWNoDQorYXMgaXRhbGljcyBhbmQgYm9sZC4gIA0KKw0KK2tkZSAxMS85Mg0KKw0KK1tBIGZldyBvZiB0aGUgaXRhbGljcyAod2hlbiB1c2VkIGZvciBlbXBoYXNpcykgd2VyZSByZXBsYWNlZCBieSBDQVBTIG1oXQ0KKw0KKypFbmQgb2YgVGhlIFByb2plY3QgR3V0ZW5iZXJnIEV0ZXh0IG9mIExPQyBXT1JLU0hPUCBPTiBFTEVDVFJPTklDIEVURVhUUw0KKw0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9sY2V0MTAudHh0LmNvbXByZXNzZWQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvbGNldDEwLnR4dC5jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZDBmNjMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvbGNldDEwLnR4dC5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tYXBzZGF0YXpyaCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tYXBzZGF0YXpyaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzcxMTgzCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL21hcHNkYXRhenJoCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tYXBzZGF0YXpyaC5jb21wcmVzc2VkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL21hcHNkYXRhenJoLmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdiZmE0NwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tYXBzZGF0YXpyaC5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tb25rZXkgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvbW9ua2V5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NDA4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvbW9ua2V5CkBAIC0wLDAgKzEgQEAKK3pueGN2bm16LHh2bm0uLHp4Y252Lix4Y24ueix2bi56dm4uenhjdm4uLHp4Y24udm4udix6bm0uLHZuenguLHZuenhjLnZuLnosdm56Lixudi56LG52bXp4Yyxudnp4Y3Zjbm0uLHZjenh2bnp4Y252bXhjLnptY252em0uLG52bWMsbnp4bWMsdm4ubW5ubXp4Yyx2bnhjbm12LHpudnp4Y25tdiwueGNudm0senhjbnp4di56eCxxd2VyeXdldXJxaW93ZXVwcm9wcXd1dGlvd2V1cHFyaW93ZXV0aW9wd2V1cmlvcHdldXJpb3Bxd3VyaW9wdXRpb3Bxd3VyaW93dXFlcmlvdXBxd2Vyb3B1d2Vyb3Bxd3Vyd2V1cXJpb3B1cm9wcXd1cmlvcHVxd3Jpb3B1cXdlb3BydWlvcXdldXJxd2V1cmlvdXF3ZW9wcnVpb3VwcWl5dGlvcXR5aW93dHlxcHR5cHJ5b3F3ZXV0aW9pb3F0d2VxcnVvd3FleXRpb3dxdWlvdXJvd2V0eW9xd3VwaW90d2V1cWlvcndldXFyb2lwaXR1cXdpb3Jxd3Rpb3dldXJpb3V5dHVpb2VyeXR1aW93ZXJ5dWl0b3dleXR1aXdleXVpdHllcnVpcnR5dXFyaXF3ZXVyb3Bxd2VpcnVpb3F3ZXVyaW9xd3VlcmlvcXd5dWl0dWllcndvdHVlcnl1aW90d2V5cnR1aXdlcnR5aW93ZXJ5cnVlaW9xcHR5aW9ydXlpb3Bxd3Rqa2FzZGZobGFmaGxhc2RoZmprbGFzaGprZmhhc2prbGZoa2xhc2pkZmhrbGFzZGhmamthbHNkaGZrbGFzZGhqa2ZsYWhzamRrZmhrbGFzZmhqa2FzZGZoYXNmamthc2RoZmtsc2RoYWxnaGhhZjtoZGtsYXNmaGprbGFzaGprbGZhc2RoZmFzZGprbGZoc2Rqa2xhZnNkO2hrbGRhZGZqamtsYXNkaGZqYXNkZGZqa2xmaGFramtsYXNkamZrbDthc2RqZmFzZmxqYXNkZmhqa2xhc2RmaGprYWdoamthc2hmO2RqZmtsYXNkamZrbGphc2RrbGZqa2xhc2RqZmtsamFzZGZrbGpha2xmagpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tb25rZXkuY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9tb25rZXkuY29tcHJlc3NlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmNmMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL21vbmtleS5jb21wcmVzc2VkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9wbHJhYm4xMi50eHQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcGxyYWJuMTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MDg4YjgKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcGxyYWJuMTIudHh0CkBAIC0wLDAgKzEsMTA2OTkgQEAKKw0KK1RoaXMgaXMgdGhlIEZlYnJ1YXJ5IDE5OTIgUHJvamVjdCBHdXRlbmJlcmcgcmVsZWFzZSBvZjogDQorIA0KK1BhcmFkaXNlIExvc3QgYnkgSm9obiBNaWx0b24gDQorIA0KK1RoZSBvbGRlc3QgZXRleHQga25vd24gdG8gUHJvamVjdCBHdXRlbmJlcmcgKGNhLiAxOTY0LTE5NjUpIA0KKyhJZiB5b3Uga25vdyBvZiBhbnkgb2xkZXIgb25lcywgcGxlYXNlIGxldCB1cyBrbm93LikgDQorIA0KKyANCitJbnRyb2R1Y3Rpb24gIChvbmUgcGFnZSkgDQorIA0KK1RoaXMgZXRleHQgd2FzIG9yaWdpbmFsbHkgY3JlYXRlZCBpbiAxOTY0LTE5NjUgYWNjb3JkaW5nIHRvIERyLiANCitKb3NlcGggUmFiZW4gb2YgUXVlZW5zIENvbGxlZ2UsIE5ZLCB0byB3aG9tIGl0IGlzIGF0dHJpYnV0ZWQgYnkgDQorUHJvamVjdCBHdXRlbmJlcmcuICBXZSBoYWQgaGVhcmQgb2YgdGhpcyBldGV4dCBmb3IgeWVhcnMgYnV0IGl0IA0KK3dhcyBub3QgdW50aWwgMTk5MSB0aGF0IHdlIGFjdHVhbGx5IG1hbmFnZWQgdG8gdHJhY2sgaXQgZG93biB0byANCithIHNwZWNpZmljIGxvY2F0aW9uLCBhbmQgdGhlbiBpdCB0b29rIG1vbnRocyB0byBjb252aW5jZSBwZW9wbGUgDQordG8gbGV0IHVzIGhhdmUgYSBjb3B5LCB0aGVuIG1vcmUgbW9udGhzIGZvciB0aGVtIGFjdHVhbGx5IHRvIGRvIA0KK3RoZSBjb3B5aW5nIGFuZCBnZXQgaXQgdG8gdXMuICBUaGVuIGFub3RoZXIgbW9udGggdG8gY29udmVydCB0byANCitzb21ldGhpbmcgd2UgY291bGQgbWFzc2FnZSB3aXRoIG91ciBmYXZvcml0ZSA0ODYgaW4gRE9TLiAgQWZ0ZXIgDQordGhhdCBpcyB3YXMgb25seSBhIG1hdHRlciBvZiBkYXlzIHRvIGdldCBpdCBpbnRvIHRoaXMgc2hhcGUgeW91IA0KK3dpbGwgc2VlIGJlbG93LiAgVGhlIG9yaWdpbmFsIHdhcywgb2YgY291cnNlLCBpbiBDQVBTIG9ubHksIGFuZCANCitzbyB3ZXJlIGFsbCB0aGUgb3RoZXIgZXRleHRzIG9mIHRoZSA2MCdzIGFuZCBlYXJseSA3MCdzLiAgRG9uJ3QgDQorbGV0IGFueW9uZSBmb29sIHlvdSBpbnRvIHRoaW5raW5nIGFueSBldGV4dCB3aXRoIGJvdGggdXBwZXIgYW5kIA0KK2xvd2VyIGNhc2UgaXMgYW4gb3JpZ2luYWw7IGFsbCB0aG9zZSBvcmlnaW5hbCBQcm9qZWN0IEd1dGVuYmVyZyANCitldGV4dHMgd2VyZSBhbHNvIGluIHVwcGVyIGNhc2UgYW5kIHdlcmUgdHJhbnNsYXRlZCBvciByZXdyaXR0ZW4gDQorbWFueSB0aW1lcyB0byBnZXQgdGhlbSBpbnRvIHRoZWlyIGN1cnJlbnQgY29uZGl0aW9uLiAgVGhleSBoYXZlIA0KK2JlZW4gd29ya2VkIG9uIGJ5IG1hbnkgcGVvcGxlIHRocm91Z2hvdXQgdGhlIHdvcmxkLiANCisgDQorSW4gdGhlIGNvdXJzZSBvZiBvdXIgc2VhcmNoZXMgZm9yIFByb2Zlc3NvciBSYWJlbiBhbmQgaGlzIGV0ZXh0IA0KK3dlIHdlcmUgbmV2ZXIgYWJsZSB0byBkZXRlcm1pbmUgd2hlcmUgY29waWVzIHdlcmUgb3Igd2hpY2ggb2YgYSANCit2YXJpZXR5IG9mIGVkaXRpb25zIGhlIG1heSBoYXZlIHVzZWQgYXMgYSBzb3VyY2UuICBXZSBkaWQgZ2V0IGEgDQorbGl0dGxlIGluZm9ybWF0aW9uIGhlcmUgYW5kIHRoZXJlLCBidXQgZXZlbiBhZnRlciB3ZSByZWNlaXZlZCBhIA0KK2NvcHkgb2YgdGhlIGV0ZXh0IHdlIHdlcmUgdW53aWxsaW5nIHRvIHJlbGVhc2UgaXQgd2l0aG91dCBmaXJzdCANCitkZXRlcm1pbmluZyB0aGF0IGl0IHdhcyBpbiBmYWN0IFB1YmxpYyBEb21haW4gYW5kIGZpbmRpbmcgUmFiZW4gDQordG8gdmVyaWZ5IHRoaXMgYW5kIGdldCBoaXMgcGVybWlzc2lvbi4gIEludGVyZXN0ZWQgZW5vdWdoLCBpbiBhIA0KK3RvdGFsbHkgdW5yZWxhdGVkIGFjdGlvbiB0byBvdXIgc2VhcmNoZXMgZm9yIGhpbSwgdGhlIHByb2Zlc3NvciANCitzdWJzY3JpYmVkIHRvIHRoZSBQcm9qZWN0IEd1dGVuYmVyZyBsaXN0c2VydmVyIGFuZCB3ZSBoYXBwZW5lZCwgDQorYnkgYWNjaWRlbnQsIHRvIG5vdGljZSBoaXMgbmFtZS4gKFdlIGRvbid0IHJlYWxseSBsb29rIGF0IGV2ZXJ5IA0KK3N1YnNjcmlwdGlvbiByZXF1ZXN0IGFzIHRoZSBjb21wdXRlcnMgdXN1YWxseSBoYW5kbGUgdGhlbS4pIFRoZSANCitldGV4dCB3YXMgdGhlbiBwcm9wZXJseSBpZGVudGlmaWVkLCBjb3B5cmlnaHQgYW5hbHl6ZWQsIGFuZCB0aGUgDQorY3VycmVudCBlZGl0aW9uIHByZXBhcmVkLiANCisgDQorVG8gZ2l2ZSB5b3UgYW4gZXN0aW1hdGlvbiBvZiB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgb3JpZ2luYWwgYW5kIA0KK3doYXQgd2UgaGF2ZSB0b2RheTogIHRoZSBvcmlnaW5hbCB3YXMgcHJvYmFibHkgZW50ZXJlZCBvbiBjYXJkcyANCitjb21tb25seSBrbm93biBhdCB0aGUgdGltZSBhcyAiSUJNIGNhcmRzIiAoRG8gTm90IEZvbGQsIFNwaW5kbGUgDQorb3IgTXV0aWxhdGUpIGFuZCBwcm9iYWJseSB0b29rIGluIGV4Y2VzcyBvZiAxMDAsMDAwIG9mIHRoZW0uICBBIA0KK3NpbmdsZSBjYXJkIGNvdWxkIGhvbGQgODAgY2hhcmFjdGVycyAoaGVuY2UgODAgY2hhcmFjdGVycyBpcyBhbiANCithY2NlcHRlZCBzdGFuZGFyZCBmb3Igc28gbWFueSBjb21wdXRlciBtYXJnaW5zKSwgYW5kIHRoZSBlbnRpcmUgDQorb3JpZ2luYWwgZWRpdGlvbiB3ZSByZWNlaXZlZCBpbiBhbGwgY2FwcyB3YXMgb3ZlciA4MDAsMDAwIGNoYXJzIA0KK2luIGxlbmd0aCwgaW5jbHVkaW5nIGxpbmUgZW51bWVyYXRpb24sIHN5bWJvbHMgZm9yIGNhcHMgYW5kIHRoZSANCitwdW5jdHVhdGlvbiBtYXJrcywgZXRjLiwgc2luY2UgdGhleSB3ZXJlIG5vdCBhdmFpbGFibGUga2V5Ym9hcmQgDQorY2hhcmFjdGVycyBhdCB0aGUgdGltZSAocHJvYmFibHkgdGhlIGtleWJvYXJkcyBvcGVyYXRlZCBhdCBiYXVkIA0KK3JhdGVzIG9mIGFyb3VuZCAxMTMsIG1lYW5pbmcgdGhlIHR5cGlzdHMgaGFkIHRvIHR5cGUgc2xvd2x5IGZvciANCit0aGUga2V5Ym9hcmQgdG8ga2VlcCB1cCkuIA0KKyANCitUaGlzIGlzIHRoZSBzZWNvbmQgdmVyc2lvbiBvZiBQYXJhZGlzZSBMb3N0IHJlbGVhc2VkIGJ5IFByb2plY3QgDQorR3V0ZW5iZXJnLiAgVGhlIGZpcnN0IHdhcyByZWxlYXNlZCBhcyBvdXIgT2N0b2JlciwgMTk5MSBldGV4dC4gDQorIA0KKyANCisgDQorIA0KKyANCitQYXJhZGlzZSBMb3N0IA0KKyANCisgDQorIA0KKyANCitCb29rIEkgDQorIA0KKyANCitPZiBNYW4ncyBmaXJzdCBkaXNvYmVkaWVuY2UsIGFuZCB0aGUgZnJ1aXQgDQorT2YgdGhhdCBmb3JiaWRkZW4gdHJlZSB3aG9zZSBtb3J0YWwgdGFzdGUgDQorQnJvdWdodCBkZWF0aCBpbnRvIHRoZSBXb3JsZCwgYW5kIGFsbCBvdXIgd29lLCANCitXaXRoIGxvc3Mgb2YgRWRlbiwgdGlsbCBvbmUgZ3JlYXRlciBNYW4gDQorUmVzdG9yZSB1cywgYW5kIHJlZ2FpbiB0aGUgYmxpc3NmdWwgc2VhdCwgDQorU2luZywgSGVhdmVubHkgTXVzZSwgdGhhdCwgb24gdGhlIHNlY3JldCB0b3AgDQorT2YgT3JlYiwgb3Igb2YgU2luYWksIGRpZHN0IGluc3BpcmUgDQorVGhhdCBzaGVwaGVyZCB3aG8gZmlyc3QgdGF1Z2h0IHRoZSBjaG9zZW4gc2VlZCANCitJbiB0aGUgYmVnaW5uaW5nIGhvdyB0aGUgaGVhdmVucyBhbmQgZWFydGggDQorUm9zZSBvdXQgb2YgQ2hhb3M6IG9yLCBpZiBTaW9uIGhpbGwgDQorRGVsaWdodCB0aGVlIG1vcmUsIGFuZCBTaWxvYSdzIGJyb29rIHRoYXQgZmxvd2VkIA0KK0Zhc3QgYnkgdGhlIG9yYWNsZSBvZiBHb2QsIEkgdGhlbmNlIA0KK0ludm9rZSB0aHkgYWlkIHRvIG15IGFkdmVudHVyb3VzIHNvbmcsIA0KK1RoYXQgd2l0aCBubyBtaWRkbGUgZmxpZ2h0IGludGVuZHMgdG8gc29hciANCitBYm92ZSB0aCcgQW9uaWFuIG1vdW50LCB3aGlsZSBpdCBwdXJzdWVzIA0KK1RoaW5ncyB1bmF0dGVtcHRlZCB5ZXQgaW4gcHJvc2Ugb3Igcmh5bWUuIA0KK0FuZCBjaGllZmx5IHRob3UsIE8gU3Bpcml0LCB0aGF0IGRvc3QgcHJlZmVyIA0KK0JlZm9yZSBhbGwgdGVtcGxlcyB0aCcgdXByaWdodCBoZWFydCBhbmQgcHVyZSwgDQorSW5zdHJ1Y3QgbWUsIGZvciB0aG91IGtub3cnc3Q7IHRob3UgZnJvbSB0aGUgZmlyc3QgDQorV2FzdCBwcmVzZW50LCBhbmQsIHdpdGggbWlnaHR5IHdpbmdzIG91dHNwcmVhZCwgDQorRG92ZS1saWtlIHNhdCdzdCBicm9vZGluZyBvbiB0aGUgdmFzdCBBYnlzcywgDQorQW5kIG1hZCdzdCBpdCBwcmVnbmFudDogd2hhdCBpbiBtZSBpcyBkYXJrIA0KK0lsbHVtaW5lLCB3aGF0IGlzIGxvdyByYWlzZSBhbmQgc3VwcG9ydDsgDQorVGhhdCwgdG8gdGhlIGhlaWdodCBvZiB0aGlzIGdyZWF0IGFyZ3VtZW50LCANCitJIG1heSBhc3NlcnQgRXRlcm5hbCBQcm92aWRlbmNlLCANCitBbmQganVzdGlmeSB0aGUgd2F5cyBvZiBHb2QgdG8gbWVuLiANCisgIFNheSBmaXJzdC0tZm9yIEhlYXZlbiBoaWRlcyBub3RoaW5nIGZyb20gdGh5IHZpZXcsIA0KK05vciB0aGUgZGVlcCB0cmFjdCBvZiBIZWxsLS1zYXkgZmlyc3Qgd2hhdCBjYXVzZSANCitNb3ZlZCBvdXIgZ3JhbmQgcGFyZW50cywgaW4gdGhhdCBoYXBweSBzdGF0ZSwgDQorRmF2b3VyZWQgb2YgSGVhdmVuIHNvIGhpZ2hseSwgdG8gZmFsbCBvZmYgDQorRnJvbSB0aGVpciBDcmVhdG9yLCBhbmQgdHJhbnNncmVzcyBoaXMgd2lsbCANCitGb3Igb25lIHJlc3RyYWludCwgbG9yZHMgb2YgdGhlIFdvcmxkIGJlc2lkZXMuIA0KK1dobyBmaXJzdCBzZWR1Y2VkIHRoZW0gdG8gdGhhdCBmb3VsIHJldm9sdD8gDQorICBUaCcgaW5mZXJuYWwgU2VycGVudDsgaGUgaXQgd2FzIHdob3NlIGd1aWxlLCANCitTdGlycmVkIHVwIHdpdGggZW52eSBhbmQgcmV2ZW5nZSwgZGVjZWl2ZWQgDQorVGhlIG1vdGhlciBvZiBtYW5raW5kLCB3aGF0IHRpbWUgaGlzIHByaWRlIA0KK0hhZCBjYXN0IGhpbSBvdXQgZnJvbSBIZWF2ZW4sIHdpdGggYWxsIGhpcyBob3N0IA0KK09mIHJlYmVsIEFuZ2VscywgYnkgd2hvc2UgYWlkLCBhc3BpcmluZyANCitUbyBzZXQgaGltc2VsZiBpbiBnbG9yeSBhYm92ZSBoaXMgcGVlcnMsIA0KK0hlIHRydXN0ZWQgdG8gaGF2ZSBlcXVhbGxlZCB0aGUgTW9zdCBIaWdoLCANCitJZiBoZSBvcHBvc2VkLCBhbmQgd2l0aCBhbWJpdGlvdXMgYWltIA0KK0FnYWluc3QgdGhlIHRocm9uZSBhbmQgbW9uYXJjaHkgb2YgR29kLCANCitSYWlzZWQgaW1waW91cyB3YXIgaW4gSGVhdmVuIGFuZCBiYXR0bGUgcHJvdWQsIA0KK1dpdGggdmFpbiBhdHRlbXB0LiBIaW0gdGhlIEFsbWlnaHR5IFBvd2VyIA0KK0h1cmxlZCBoZWFkbG9uZyBmbGFtaW5nIGZyb20gdGgnIGV0aGVyZWFsIHNreSwgDQorV2l0aCBoaWRlb3VzIHJ1aW4gYW5kIGNvbWJ1c3Rpb24sIGRvd24gDQorVG8gYm90dG9tbGVzcyBwZXJkaXRpb24sIHRoZXJlIHRvIGR3ZWxsIA0KK0luIGFkYW1hbnRpbmUgY2hhaW5zIGFuZCBwZW5hbCBmaXJlLCANCitXaG8gZHVyc3QgZGVmeSB0aCcgT21uaXBvdGVudCB0byBhcm1zLiANCisgIE5pbmUgdGltZXMgdGhlIHNwYWNlIHRoYXQgbWVhc3VyZXMgZGF5IGFuZCBuaWdodCANCitUbyBtb3J0YWwgbWVuLCBoZSwgd2l0aCBoaXMgaG9ycmlkIGNyZXcsIA0KK0xheSB2YW5xdWlzaGVkLCByb2xsaW5nIGluIHRoZSBmaWVyeSBndWxmLCANCitDb25mb3VuZGVkLCB0aG91Z2ggaW1tb3J0YWwuIEJ1dCBoaXMgZG9vbSANCitSZXNlcnZlZCBoaW0gdG8gbW9yZSB3cmF0aDsgZm9yIG5vdyB0aGUgdGhvdWdodCANCitCb3RoIG9mIGxvc3QgaGFwcGluZXNzIGFuZCBsYXN0aW5nIHBhaW4gDQorVG9ybWVudHMgaGltOiByb3VuZCBoZSB0aHJvd3MgaGlzIGJhbGVmdWwgZXllcywgDQorVGhhdCB3aXRuZXNzZWQgaHVnZSBhZmZsaWN0aW9uIGFuZCBkaXNtYXksIA0KK01peGVkIHdpdGggb2JkdXJhdGUgcHJpZGUgYW5kIHN0ZWFkZmFzdCBoYXRlLiANCitBdCBvbmNlLCBhcyBmYXIgYXMgQW5nZWxzIGtlbiwgaGUgdmlld3MgDQorVGhlIGRpc21hbCBzaXR1YXRpb24gd2FzdGUgYW5kIHdpbGQuIA0KK0EgZHVuZ2VvbiBob3JyaWJsZSwgb24gYWxsIHNpZGVzIHJvdW5kLCANCitBcyBvbmUgZ3JlYXQgZnVybmFjZSBmbGFtZWQ7IHlldCBmcm9tIHRob3NlIGZsYW1lcyANCitObyBsaWdodDsgYnV0IHJhdGhlciBkYXJrbmVzcyB2aXNpYmxlIA0KK1NlcnZlZCBvbmx5IHRvIGRpc2NvdmVyIHNpZ2h0cyBvZiB3b2UsIA0KK1JlZ2lvbnMgb2Ygc29ycm93LCBkb2xlZnVsIHNoYWRlcywgd2hlcmUgcGVhY2UgDQorQW5kIHJlc3QgY2FuIG5ldmVyIGR3ZWxsLCBob3BlIG5ldmVyIGNvbWVzIA0KK1RoYXQgY29tZXMgdG8gYWxsLCBidXQgdG9ydHVyZSB3aXRob3V0IGVuZCANCitTdGlsbCB1cmdlcywgYW5kIGEgZmllcnkgZGVsdWdlLCBmZWQgDQorV2l0aCBldmVyLWJ1cm5pbmcgc3VscGh1ciB1bmNvbnN1bWVkLiANCitTdWNoIHBsYWNlIEV0ZXJuYWwgSnVzdGljZSBoYXMgcHJlcGFyZWQgDQorRm9yIHRob3NlIHJlYmVsbGlvdXM7IGhlcmUgdGhlaXIgcHJpc29uIG9yZGFpbmVkIA0KK0luIHV0dGVyIGRhcmtuZXNzLCBhbmQgdGhlaXIgcG9ydGlvbiBzZXQsIA0KK0FzIGZhciByZW1vdmVkIGZyb20gR29kIGFuZCBsaWdodCBvZiBIZWF2ZW4gDQorQXMgZnJvbSB0aGUgY2VudHJlIHRocmljZSB0byB0aCcgdXRtb3N0IHBvbGUuIA0KK09oIGhvdyB1bmxpa2UgdGhlIHBsYWNlIGZyb20gd2hlbmNlIHRoZXkgZmVsbCEgDQorVGhlcmUgdGhlIGNvbXBhbmlvbnMgb2YgaGlzIGZhbGwsIG8nZXJ3aGVsbWVkIA0KK1dpdGggZmxvb2RzIGFuZCB3aGlybHdpbmRzIG9mIHRlbXBlc3R1b3VzIGZpcmUsIA0KK0hlIHNvb24gZGlzY2VybnM7IGFuZCwgd2VsdGVyaW5nIGJ5IGhpcyBzaWRlLCANCitPbmUgbmV4dCBoaW1zZWxmIGluIHBvd2VyLCBhbmQgbmV4dCBpbiBjcmltZSwgDQorTG9uZyBhZnRlciBrbm93biBpbiBQYWxlc3RpbmUsIGFuZCBuYW1lZCANCitCZWVsemVidWIuIFRvIHdob20gdGgnIEFyY2gtRW5lbXksIA0KK0FuZCB0aGVuY2UgaW4gSGVhdmVuIGNhbGxlZCBTYXRhbiwgd2l0aCBib2xkIHdvcmRzIA0KK0JyZWFraW5nIHRoZSBob3JyaWQgc2lsZW5jZSwgdGh1cyBiZWdhbjotLSANCisgICJJZiB0aG91IGJlZXN0IGhlLS1idXQgTyBob3cgZmFsbGVuISBob3cgY2hhbmdlZCANCitGcm9tIGhpbSB3aG8sIGluIHRoZSBoYXBweSByZWFsbXMgb2YgbGlnaHQgDQorQ2xvdGhlZCB3aXRoIHRyYW5zY2VuZGVudCBicmlnaHRuZXNzLCBkaWRzdCBvdXRzaGluZSANCitNeXJpYWRzLCB0aG91Z2ggYnJpZ2h0IS0taWYgaGUgd2hvbSBtdXR1YWwgbGVhZ3VlLCANCitVbml0ZWQgdGhvdWdodHMgYW5kIGNvdW5zZWxzLCBlcXVhbCBob3BlIA0KK0FuZCBoYXphcmQgaW4gdGhlIGdsb3Jpb3VzIGVudGVycHJpc2UgDQorSm9pbmVkIHdpdGggbWUgb25jZSwgbm93IG1pc2VyeSBoYXRoIGpvaW5lZCANCitJbiBlcXVhbCBydWluOyBpbnRvIHdoYXQgcGl0IHRob3Ugc2Vlc3QgDQorRnJvbSB3aGF0IGhlaWdodCBmYWxsZW46IHNvIG11Y2ggdGhlIHN0cm9uZ2VyIHByb3ZlZCANCitIZSB3aXRoIGhpcyB0aHVuZGVyOyBhbmQgdGlsbCB0aGVuIHdobyBrbmV3IA0KK1RoZSBmb3JjZSBvZiB0aG9zZSBkaXJlIGFybXM/IFlldCBub3QgZm9yIHRob3NlLCANCitOb3Igd2hhdCB0aGUgcG90ZW50IFZpY3RvciBpbiBoaXMgcmFnZSANCitDYW4gZWxzZSBpbmZsaWN0LCBkbyBJIHJlcGVudCwgb3IgY2hhbmdlLCANCitUaG91Z2ggY2hhbmdlZCBpbiBvdXR3YXJkIGx1c3RyZSwgdGhhdCBmaXhlZCBtaW5kLCANCitBbmQgaGlnaCBkaXNkYWluIGZyb20gc2Vuc2Ugb2YgaW5qdXJlZCBtZXJpdCwgDQorVGhhdCB3aXRoIHRoZSBNaWdodGllc3QgcmFpc2VkIG1lIHRvIGNvbnRlbmQsIA0KK0FuZCB0byB0aGUgZmllcmNlIGNvbnRlbnRpb25zIGJyb3VnaHQgYWxvbmcgDQorSW5udW1lcmFibGUgZm9yY2Ugb2YgU3Bpcml0cyBhcm1lZCwgDQorVGhhdCBkdXJzdCBkaXNsaWtlIGhpcyByZWlnbiwgYW5kLCBtZSBwcmVmZXJyaW5nLCANCitIaXMgdXRtb3N0IHBvd2VyIHdpdGggYWR2ZXJzZSBwb3dlciBvcHBvc2VkIA0KK0luIGR1YmlvdXMgYmF0dGxlIG9uIHRoZSBwbGFpbnMgb2YgSGVhdmVuLCANCitBbmQgc2hvb2sgaGlzIHRocm9uZS4gV2hhdCB0aG91Z2ggdGhlIGZpZWxkIGJlIGxvc3Q/IA0KK0FsbCBpcyBub3QgbG9zdC0tdGhlIHVuY29ucXVlcmFibGUgd2lsbCwgDQorQW5kIHN0dWR5IG9mIHJldmVuZ2UsIGltbW9ydGFsIGhhdGUsIA0KK0FuZCBjb3VyYWdlIG5ldmVyIHRvIHN1Ym1pdCBvciB5aWVsZDogDQorQW5kIHdoYXQgaXMgZWxzZSBub3QgdG8gYmUgb3ZlcmNvbWU/IA0KK1RoYXQgZ2xvcnkgbmV2ZXIgc2hhbGwgaGlzIHdyYXRoIG9yIG1pZ2h0IA0KK0V4dG9ydCBmcm9tIG1lLiBUbyBib3cgYW5kIHN1ZSBmb3IgZ3JhY2UgDQorV2l0aCBzdXBwbGlhbnQga25lZSwgYW5kIGRlaWZ5IGhpcyBwb3dlciANCitXaG8sIGZyb20gdGhlIHRlcnJvciBvZiB0aGlzIGFybSwgc28gbGF0ZSANCitEb3VidGVkIGhpcyBlbXBpcmUtLXRoYXQgd2VyZSBsb3cgaW5kZWVkOyANCitUaGF0IHdlcmUgYW4gaWdub21pbnkgYW5kIHNoYW1lIGJlbmVhdGggDQorVGhpcyBkb3duZmFsbDsgc2luY2UsIGJ5IGZhdGUsIHRoZSBzdHJlbmd0aCBvZiBHb2RzLCANCitBbmQgdGhpcyBlbXB5cmVhbCBzeWJzdGFuY2UsIGNhbm5vdCBmYWlsOyANCitTaW5jZSwgdGhyb3VnaCBleHBlcmllbmNlIG9mIHRoaXMgZ3JlYXQgZXZlbnQsIA0KK0luIGFybXMgbm90IHdvcnNlLCBpbiBmb3Jlc2lnaHQgbXVjaCBhZHZhbmNlZCwgDQorV2UgbWF5IHdpdGggbW9yZSBzdWNjZXNzZnVsIGhvcGUgcmVzb2x2ZSANCitUbyB3YWdlIGJ5IGZvcmNlIG9yIGd1aWxlIGV0ZXJuYWwgd2FyLCANCitJcnJlY29uY2lsYWJsZSB0byBvdXIgZ3JhbmQgRm9lLCANCitXaG8gbm93IHRyaXVtcGhzLCBhbmQgaW4gdGgnIGV4Y2VzcyBvZiBqb3kgDQorU29sZSByZWlnbmluZyBob2xkcyB0aGUgdHlyYW5ueSBvZiBIZWF2ZW4uIiANCisgIFNvIHNwYWtlIHRoJyBhcG9zdGF0ZSBBbmdlbCwgdGhvdWdoIGluIHBhaW4sIA0KK1ZhdW50aW5nIGFsb3VkLCBidXQgcmFja2VkIHdpdGggZGVlcCBkZXNwYWlyOyANCitBbmQgaGltIHRodXMgYW5zd2VyZWQgc29vbiBoaXMgYm9sZCBjb21wZWVyOi0tIA0KKyAgIk8gUHJpbmNlLCBPIENoaWVmIG9mIG1hbnkgdGhyb25lZCBQb3dlcnMgDQorVGhhdCBsZWQgdGgnIGVtYmF0dGxlZCBTZXJhcGhpbSB0byB3YXIgDQorVW5kZXIgdGh5IGNvbmR1Y3QsIGFuZCwgaW4gZHJlYWRmdWwgZGVlZHMgDQorRmVhcmxlc3MsIGVuZGFuZ2VyZWQgSGVhdmVuJ3MgcGVycGV0dWFsIEtpbmcsIA0KK0FuZCBwdXQgdG8gcHJvb2YgaGlzIGhpZ2ggc3VwcmVtYWN5LCANCitXaGV0aGVyIHVwaGVsZCBieSBzdHJlbmd0aCwgb3IgY2hhbmNlLCBvciBmYXRlLCANCitUb28gd2VsbCBJIHNlZSBhbmQgcnVlIHRoZSBkaXJlIGV2ZW50IA0KK1RoYXQsIHdpdGggc2FkIG92ZXJ0aHJvdyBhbmQgZm91bCBkZWZlYXQsIA0KK0hhdGggbG9zdCB1cyBIZWF2ZW4sIGFuZCBhbGwgdGhpcyBtaWdodHkgaG9zdCANCitJbiBob3JyaWJsZSBkZXN0cnVjdGlvbiBsYWlkIHRodXMgbG93LCANCitBcyBmYXIgYXMgR29kcyBhbmQgaGVhdmVubHkgRXNzZW5jZXMgDQorQ2FuIHBlcmlzaDogZm9yIHRoZSBtaW5kIGFuZCBzcGlyaXQgcmVtYWlucyANCitJbnZpbmNpYmxlLCBhbmQgdmlnb3VyIHNvb24gcmV0dXJucywgDQorVGhvdWdoIGFsbCBvdXIgZ2xvcnkgZXh0aW5jdCwgYW5kIGhhcHB5IHN0YXRlIA0KK0hlcmUgc3dhbGxvd2VkIHVwIGluIGVuZGxlc3MgbWlzZXJ5LiANCitCdXQgd2hhdCBpZiBoZSBvdXIgQ29ucXVlcm9yICh3aG9tIEkgbm93IA0KK09mIGZvcmNlIGJlbGlldmUgYWxtaWdodHksIHNpbmNlIG5vIGxlc3MgDQorVGhhbiBzdWNoIGNvdWxkIGhhdmUgbydlcnBvd2VyZWQgc3VjaCBmb3JjZSBhcyBvdXJzKSANCitIYXZlIGxlZnQgdXMgdGhpcyBvdXIgc3Bpcml0IGFuZCBzdHJlbmd0aCBlbnRpcmUsIA0KK1N0cm9uZ2x5IHRvIHN1ZmZlciBhbmQgc3VwcG9ydCBvdXIgcGFpbnMsIA0KK1RoYXQgd2UgbWF5IHNvIHN1ZmZpY2UgaGlzIHZlbmdlZnVsIGlyZSwgDQorT3IgZG8gaGltIG1pZ2h0aWVyIHNlcnZpY2UgYXMgaGlzIHRocmFsbHMgDQorQnkgcmlnaHQgb2Ygd2FyLCB3aGF0ZSdlciBoaXMgYnVzaW5lc3MgYmUsIA0KK0hlcmUgaW4gdGhlIGhlYXJ0IG9mIEhlbGwgdG8gd29yayBpbiBmaXJlLCANCitPciBkbyBoaXMgZXJyYW5kcyBpbiB0aGUgZ2xvb215IERlZXA/IA0KK1doYXQgY2FuIGl0IHRoZSBhdmFpbCB0aG91Z2ggeWV0IHdlIGZlZWwgDQorU3RyZW5ndGggdW5kaW1pbmlzaGVkLCBvciBldGVybmFsIGJlaW5nIA0KK1RvIHVuZGVyZ28gZXRlcm5hbCBwdW5pc2htZW50PyIgDQorICBXaGVyZXRvIHdpdGggc3BlZWR5IHdvcmRzIHRoJyBBcmNoLUZpZW5kIHJlcGxpZWQ6LS0gDQorIkZhbGxlbiBDaGVydWIsIHRvIGJlIHdlYWsgaXMgbWlzZXJhYmxlLCANCitEb2luZyBvciBzdWZmZXJpbmc6IGJ1dCBvZiB0aGlzIGJlIHN1cmUtLSANCitUbyBkbyBhdWdodCBnb29kIG5ldmVyIHdpbGwgYmUgb3VyIHRhc2ssIA0KK0J1dCBldmVyIHRvIGRvIGlsbCBvdXIgc29sZSBkZWxpZ2h0LCANCitBcyBiZWluZyB0aGUgY29udHJhcnkgdG8gaGlzIGhpZ2ggd2lsbCANCitXaG9tIHdlIHJlc2lzdC4gSWYgdGhlbiBoaXMgcHJvdmlkZW5jZSANCitPdXQgb2Ygb3VyIGV2aWwgc2VlayB0byBicmluZyBmb3J0aCBnb29kLCANCitPdXIgbGFib3VyIG11c3QgYmUgdG8gcGVydmVydCB0aGF0IGVuZCwgDQorQW5kIG91dCBvZiBnb29kIHN0aWxsIHRvIGZpbmQgbWVhbnMgb2YgZXZpbDsgDQorV2hpY2ggb2Z0dGltZXMgbWF5IHN1Y2NlZWQgc28gYXMgcGVyaGFwcyANCitTaGFsbCBncmlldmUgaGltLCBpZiBJIGZhaWwgbm90LCBhbmQgZGlzdHVyYiANCitIaXMgaW5tb3N0IGNvdW5zZWxzIGZyb20gdGhlaXIgZGVzdGluZWQgYWltLiANCitCdXQgc2VlISB0aGUgYW5ncnkgVmljdG9yIGhhdGggcmVjYWxsZWQgDQorSGlzIG1pbmlzdGVycyBvZiB2ZW5nZWFuY2UgYW5kIHB1cnN1aXQgDQorQmFjayB0byB0aGUgZ2F0ZXMgb2YgSGVhdmVuOiB0aGUgc3VscGh1cm91cyBoYWlsLCANCitTaG90IGFmdGVyIHVzIGluIHN0b3JtLCBvJ2VyYmxvd24gaGF0aCBsYWlkIA0KK1RoZSBmaWVyeSBzdXJnZSB0aGF0IGZyb20gdGhlIHByZWNpcGljZSANCitPZiBIZWF2ZW4gcmVjZWl2ZWQgdXMgZmFsbGluZzsgYW5kIHRoZSB0aHVuZGVyLCANCitXaW5nZWQgd2l0aCByZWQgbGlnaHRuaW5nIGFuZCBpbXBldHVvdXMgcmFnZSwgDQorUGVyaGFwcyBoYXRoIHNwZW50IGhpcyBzaGFmdHMsIGFuZCBjZWFzZXMgbm93IA0KK1RvIGJlbGxvdyB0aHJvdWdoIHRoZSB2YXN0IGFuZCBib3VuZGxlc3MgRGVlcC4gDQorTGV0IHVzIG5vdCBzbGlwIHRoJyBvY2Nhc2lvbiwgd2hldGhlciBzY29ybiANCitPciBzYXRpYXRlIGZ1cnkgeWllbGQgaXQgZnJvbSBvdXIgRm9lLiANCitTZWVzdCB0aG91IHlvbiBkcmVhcnkgcGxhaW4sIGZvcmxvcm4gYW5kIHdpbGQsIA0KK1RoZSBzZWF0IG9mIGRlc29sYXRpb24sIHZvaWQgb2YgbGlnaHQsIA0KK1NhdmUgd2hhdCB0aGUgZ2xpbW1lcmluZyBvZiB0aGVzZSBsaXZpZCBmbGFtZXMgDQorQ2FzdHMgcGFsZSBhbmQgZHJlYWRmdWw/IFRoaXRoZXIgbGV0IHVzIHRlbmQgDQorRnJvbSBvZmYgdGhlIHRvc3Npbmcgb2YgdGhlc2UgZmllcnkgd2F2ZXM7IA0KK1RoZXJlIHJlc3QsIGlmIGFueSByZXN0IGNhbiBoYXJib3VyIHRoZXJlOyANCitBbmQsIHJlLWFzc2VtYmxpbmcgb3VyIGFmZmxpY3RlZCBwb3dlcnMsIA0KK0NvbnN1bHQgaG93IHdlIG1heSBoZW5jZWZvcnRoIG1vc3Qgb2ZmZW5kIA0KK091ciBlbmVteSwgb3VyIG93biBsb3NzIGhvdyByZXBhaXIsIA0KK0hvdyBvdmVyY29tZSB0aGlzIGRpcmUgY2FsYW1pdHksIA0KK1doYXQgcmVpbmZvcmNlbWVudCB3ZSBtYXkgZ2FpbiBmcm9tIGhvcGUsIA0KK0lmIG5vdCwgd2hhdCByZXNvbHV0aW9uIGZyb20gZGVzcGFpci4iIA0KKyAgVGh1cyBTYXRhbiwgdGFsa2luZyB0byBoaXMgbmVhcmVzdCBtYXRlLCANCitXaXRoIGhlYWQgdXBsaWZ0IGFib3ZlIHRoZSB3YXZlLCBhbmQgZXllcyANCitUaGF0IHNwYXJrbGluZyBibGF6ZWQ7IGhpcyBvdGhlciBwYXJ0cyBiZXNpZGVzIA0KK1Byb25lIG9uIHRoZSBmbG9vZCwgZXh0ZW5kZWQgbG9uZyBhbmQgbGFyZ2UsIA0KK0xheSBmbG9hdGluZyBtYW55IGEgcm9vZCwgaW4gYnVsayBhcyBodWdlIA0KK0FzIHdob20gdGhlIGZhYmxlcyBuYW1lIG9mIG1vbnN0cm91cyBzaXplLCANCitUaXRhbmlhbiBvciBFYXJ0aC1ib3JuLCB0aGF0IHdhcnJlZCBvbiBKb3ZlLCANCitCcmlhcmVvcyBvciBUeXBob24sIHdob20gdGhlIGRlbiANCitCeSBhbmNpZW50IFRhcnN1cyBoZWxkLCBvciB0aGF0IHNlYS1iZWFzdCANCitMZXZpYXRoYW4sIHdoaWNoIEdvZCBvZiBhbGwgaGlzIHdvcmtzIA0KK0NyZWF0ZWQgaHVnZXN0IHRoYXQgc3dpbSB0aCcgb2NlYW4tc3RyZWFtLiANCitIaW0sIGhhcGx5IHNsdW1iZXJpbmcgb24gdGhlIE5vcndheSBmb2FtLCANCitUaGUgcGlsb3Qgb2Ygc29tZSBzbWFsbCBuaWdodC1mb3VuZGVyZWQgc2tpZmYsIA0KK0RlZW1pbmcgc29tZSBpc2xhbmQsIG9mdCwgYXMgc2VhbWVuIHRlbGwsIA0KK1dpdGggZml4ZWQgYW5jaG9yIGluIGhpcyBzY2FseSByaW5kLCANCitNb29ycyBieSBoaXMgc2lkZSB1bmRlciB0aGUgbGVlLCB3aGlsZSBuaWdodCANCitJbnZlc3RzIHRoZSBzZWEsIGFuZCB3aXNoZWQgbW9ybiBkZWxheXMuIA0KK1NvIHN0cmV0Y2hlZCBvdXQgaHVnZSBpbiBsZW5ndGggdGhlIEFyY2gtZmllbmQgbGF5LCANCitDaGFpbmVkIG9uIHRoZSBidXJuaW5nIGxha2U7IG5vciBldmVyIHRoZW5jZSANCitIYWQgcmlzZW4sIG9yIGhlYXZlZCBoaXMgaGVhZCwgYnV0IHRoYXQgdGhlIHdpbGwgDQorQW5kIGhpZ2ggcGVybWlzc2lvbiBvZiBhbGwtcnVsaW5nIEhlYXZlbiANCitMZWZ0IGhpbSBhdCBsYXJnZSB0byBoaXMgb3duIGRhcmsgZGVzaWducywgDQorVGhhdCB3aXRoIHJlaXRlcmF0ZWQgY3JpbWVzIGhlIG1pZ2h0IA0KK0hlYXAgb24gaGltc2VsZiBkYW1uYXRpb24sIHdoaWxlIGhlIHNvdWdodCANCitFdmlsIHRvIG90aGVycywgYW5kIGVucmFnZWQgbWlnaHQgc2VlIA0KK0hvdyBhbGwgaGlzIG1hbGljZSBzZXJ2ZWQgYnV0IHRvIGJyaW5nIGZvcnRoIA0KK0luZmluaXRlIGdvb2RuZXNzLCBncmFjZSwgYW5kIG1lcmN5LCBzaGV3biANCitPbiBNYW4gYnkgaGltIHNlZHVjZWQsIGJ1dCBvbiBoaW1zZWxmIA0KK1RyZWJsZSBjb25mdXNpb24sIHdyYXRoLCBhbmQgdmVuZ2VhbmNlIHBvdXJlZC4gDQorICBGb3J0aHdpdGggdXByaWdodCBoZSByZWFycyBmcm9tIG9mZiB0aGUgcG9vbCANCitIaXMgbWlnaHR5IHN0YXR1cmU7IG9uIGVhY2ggaGFuZCB0aGUgZmxhbWVzIA0KK0RyaXZlbiBiYWNrd2FyZCBzbG9wZSB0aGVpciBwb2ludGluZyBzcGlyZXMsIGFuZCxyb2xsZWQgDQorSW4gYmlsbG93cywgbGVhdmUgaScgdGgnIG1pZHN0IGEgaG9ycmlkIHZhbGUuIA0KK1RoZW4gd2l0aCBleHBhbmRlZCB3aW5ncyBoZSBzdGVlcnMgaGlzIGZsaWdodCANCitBbG9mdCwgaW5jdW1iZW50IG9uIHRoZSBkdXNreSBhaXIsIA0KK1RoYXQgZmVsdCB1bnVzdWFsIHdlaWdodDsgdGlsbCBvbiBkcnkgbGFuZCANCitIZSBsaWdodHMtLWlmIGl0IHdlcmUgbGFuZCB0aGF0IGV2ZXIgYnVybmVkIA0KK1dpdGggc29saWQsIGFzIHRoZSBsYWtlIHdpdGggbGlxdWlkIGZpcmUsIA0KK0FuZCBzdWNoIGFwcGVhcmVkIGluIGh1ZSBhcyB3aGVuIHRoZSBmb3JjZSANCitPZiBzdWJ0ZXJyYW5lYW4gd2luZCB0cmFuc3Byb3RzIGEgaGlsbCANCitUb3JuIGZyb20gUGVsb3J1cywgb3IgdGhlIHNoYXR0ZXJlZCBzaWRlIA0KK09mIHRodW5kZXJpbmcgRXRuYSwgd2hvc2UgY29tYnVzdGlibGUgDQorQW5kIGZ1ZWxsZWQgZW50cmFpbHMsIHRoZW5jZSBjb25jZWl2aW5nIGZpcmUsIA0KK1N1YmxpbWVkIHdpdGggbWluZXJhbCBmdXJ5LCBhaWQgdGhlIHdpbmRzLCANCitBbmQgbGVhdmUgYSBzaW5nZWQgYm90dG9tIGFsbCBpbnZvbHZlZCANCitXaXRoIHN0ZW5jaCBhbmQgc21va2UuIFN1Y2ggcmVzdGluZyBmb3VuZCB0aGUgc29sZSANCitPZiB1bmJsZXN0IGZlZXQuIEhpbSBmb2xsb3dlZCBoaXMgbmV4dCBtYXRlOyANCitCb3RoIGdsb3J5aW5nIHRvIGhhdmUgc2NhcGVkIHRoZSBTdHlnaWFuIGZsb29kIA0KK0FzIGdvZHMsIGFuZCBieSB0aGVpciBvd24gcmVjb3ZlcmVkIHN0cmVuZ3RoLCANCitOb3QgYnkgdGhlIHN1ZmZlcmFuY2Ugb2Ygc3VwZXJuYWwgUG93ZXIuIA0KKyAgIklzIHRoaXMgdGhlIHJlZ2lvbiwgdGhpcyB0aGUgc29pbCwgdGhlIGNsaW1lLCIgDQorU2FpZCB0aGVuIHRoZSBsb3N0IEFyY2hhbmdlbCwgInRoaXMgdGhlIHNlYXQgDQorVGhhdCB3ZSBtdXN0IGNoYW5nZSBmb3IgSGVhdmVuPy0tdGhpcyBtb3VybmZ1bCBnbG9vbSANCitGb3IgdGhhdCBjZWxlc3RpYWwgbGlnaHQ/IEJlIGl0IHNvLCBzaW5jZSBoZSANCitXaG8gbm93IGlzIHNvdmVyZWlnbiBjYW4gZGlzcG9zZSBhbmQgYmlkIA0KK1doYXQgc2hhbGwgYmUgcmlnaHQ6IGZhcnRoZXN0IGZyb20gaGltIGlzIGJlc3QgDQorV2hvbSByZWFzb24gaGF0aCBlcXVhbGxlZCwgZm9yY2UgaGF0aCBtYWRlIHN1cHJlbWUgDQorQWJvdmUgaGlzIGVxdWFscy4gRmFyZXdlbGwsIGhhcHB5IGZpZWxkcywgDQorV2hlcmUgam95IGZvciBldmVyIGR3ZWxscyEgSGFpbCwgaG9ycm9ycyEgaGFpbCwgDQorSW5mZXJuYWwgd29ybGQhIGFuZCB0aG91LCBwcm9mb3VuZGVzdCBIZWxsLCANCitSZWNlaXZlIHRoeSBuZXcgcG9zc2Vzc29yLS1vbmUgd2hvIGJyaW5ncyANCitBIG1pbmQgbm90IHRvIGJlIGNoYW5nZWQgYnkgcGxhY2Ugb3IgdGltZS4gDQorVGhlIG1pbmQgaXMgaXRzIG93biBwbGFjZSwgYW5kIGluIGl0c2VsZiANCitDYW4gbWFrZSBhIEhlYXZlbiBvZiBIZWxsLCBhIEhlbGwgb2YgSGVhdmVuLiANCitXaGF0IG1hdHRlciB3aGVyZSwgaWYgSSBiZSBzdGlsbCB0aGUgc2FtZSwgDQorQW5kIHdoYXQgSSBzaG91bGQgYmUsIGFsbCBidXQgbGVzcyB0aGFuIGhlIA0KK1dob20gdGh1bmRlciBoYXRoIG1hZGUgZ3JlYXRlcj8gSGVyZSBhdCBsZWFzdCANCitXZSBzaGFsbCBiZSBmcmVlOyB0aCcgQWxtaWdodHkgaGF0aCBub3QgYnVpbHQgDQorSGVyZSBmb3IgaGlzIGVudnksIHdpbGwgbm90IGRyaXZlIHVzIGhlbmNlOiANCitIZXJlIHdlIG1heSByZWlnaCBzZWN1cmU7IGFuZCwgaW4gbXkgY2hvaWNlLCANCitUbyByZWlnbiBpcyB3b3J0aCBhbWJpdGlvbiwgdGhvdWdoIGluIEhlbGw6IA0KK0JldHRlciB0byByZWlnbiBpbiBIZWxsIHRoYW4gc2VydmUgaW4gSGVhdmVuLiANCitCdXQgd2hlcmVmb3JlIGxldCB3ZSB0aGVuIG91ciBmYWl0aGZ1bCBmcmllbmRzLCANCitUaCcgYXNzb2NpYXRlcyBhbmQgY28tcGFydG5lcnMgb2Ygb3VyIGxvc3MsIA0KK0xpZSB0aHVzIGFzdG9uaXNoZWQgb24gdGgnIG9ibGl2aW91cyBwb29sLCANCitBbmQgY2FsbCB0aGVtIG5vdCB0byBzaGFyZSB3aXRoIHVzIHRoZWlyIHBhcnQgDQorSW4gdGhpcyB1bmhhcHB5IG1hbnNpb24sIG9yIG9uY2UgbW9yZSANCitXaXRoIHJhbGxpZWQgYXJtcyB0byB0cnkgd2hhdCBtYXkgYmUgeWV0IA0KK1JlZ2FpbmVkIGluIEhlYXZlbiwgb3Igd2hhdCBtb3JlIGxvc3QgaW4gSGVsbD8iIA0KKyAgU28gU2F0YW4gc3Bha2U7IGFuZCBoaW0gQmVlbHplYnViIA0KK1RodXMgYW5zd2VyZWQ6LS0iTGVhZGVyIG9mIHRob3NlIGFybWllcyBicmlnaHQgDQorV2hpY2gsIGJ1dCB0aCcgT21uaXBvdGVudCwgbm9uZSBjb3VsZCBoYXZlIGZvaWxlZCEgDQorSWYgb25jZSB0aGV5IGhlYXIgdGhhdCB2b2ljZSwgdGhlaXIgbGl2ZWxpZXN0IHBsZWRnZSANCitPZiBob3BlIGluIGZlYXJzIGFuZCBkYW5nZXJzLS1oZWFyZCBzbyBvZnQgDQorSW4gd29yc3QgZXh0cmVtZXMsIGFuZCBvbiB0aGUgcGVyaWxvdXMgZWRnZSANCitPZiBiYXR0bGUsIHdoZW4gaXQgcmFnZWQsIGluIGFsbCBhc3NhdWx0cyANCitUaGVpciBzdXJlc3Qgc2lnbmFsLS10aGV5IHdpbGwgc29vbiByZXN1bWUgDQorTmV3IGNvdXJhZ2UgYW5kIHJldml2ZSwgdGhvdWdoIG5vdyB0aGV5IGxpZSANCitHcm92ZWxsaW5nIGFuZCBwcm9zdHJhdGUgb24geW9uIGxha2Ugb2YgZmlyZSwgDQorQXMgd2UgZXJld2hpbGUsIGFzdG91bmRlZCBhbmQgYW1hemVkOyANCitObyB3b25kZXIsIGZhbGxlbiBzdWNoIGEgcGVybmljaW91cyBoZWlnaHQhIiANCisgIEhlIHNjYXJlIGhhZCBjZWFzZWQgd2hlbiB0aGUgc3VwZXJpb3IgRmllbmQgDQorV2FzIG1vdmluZyB0b3dhcmQgdGhlIHNob3JlOyBoaXMgcG9uZGVyb3VzIHNoaWVsZCwgDQorRXRoZXJlYWwgdGVtcGVyLCBtYXNzeSwgbGFyZ2UsIGFuZCByb3VuZCwgDQorQmVoaW5kIGhpbSBjYXN0LiBUaGUgYnJvYWQgY2lyY3VtZmVyZW5jZSANCitIdW5nIG9uIGhpcyBzaG91bGRlcnMgbGlrZSB0aGUgbW9vbiwgd2hvc2Ugb3JiIA0KK1Rocm91Z2ggb3B0aWMgZ2xhc3MgdGhlIFR1c2NhbiBhcnRpc3Qgdmlld3MgDQorQXQgZXZlbmluZywgZnJvbSB0aGUgdG9wIG9mIEZlc29sZSwgDQorT3IgaW4gVmFsZGFybm8sIHRvIGRlc2NyeSBuZXcgbGFuZHMsIA0KK1JpdmVycywgb3IgbW91bnRhaW5zLCBpbiBoZXIgc3BvdHR5IGdsb2JlLiANCitIaXMgc3BlYXItLXRvIGVxdWFsIHdoaWNoIHRoZSB0YWxsZXN0IHBpbmUgDQorSGV3biBvbiBOb3J3ZWdpYW4gaGlsbHMsIHRvIGJlIHRoZSBtYXN0IA0KK09mIHNvbWUgZ3JlYXQgYW1taXJhbCwgd2VyZSBidXQgYSB3YW5kLS0gDQorSGUgd2Fsa2VkIHdpdGgsIHRvIHN1cHBvcnQgdW5lYXN5IHN0ZXBzIA0KK092ZXIgdGhlIGJ1cm5pbmcgbWFybCwgbm90IGxpa2UgdGhvc2Ugc3RlcHMgDQorT24gSGVhdmVuJ3MgYXp1cmU7IGFuZCB0aGUgdG9ycmlkIGNsaW1lIA0KK1Ntb3RlIG9uIGhpbSBzb3JlIGJlc2lkZXMsIHZhdWx0ZWQgd2l0aCBmaXJlLiANCitOYXRobGVzcyBoZSBzbyBlbmR1cmVkLCB0aWxsIG9uIHRoZSBiZWFjaCANCitPZiB0aGF0IGluZmxhbWVkIHNlYSBoZSBzdG9vZCwgYW5kIGNhbGxlZCANCitIaXMgbGVnaW9ucy0tQW5nZWwgRm9ybXMsIHdobyBsYXkgZW50cmFuY2VkIA0KK1RoaWNrIGFzIGF1dHVtbmFsIGxlYXZlcyB0aGF0IHN0cm93IHRoZSBicm9va3MgDQorSW4gVmFsbG9tYnJvc2EsIHdoZXJlIHRoJyBFdHJ1cmlhbiBzaGFkZXMgDQorSGlnaCBvdmVyLWFyY2hlZCBlbWJvd2VyOyBvciBzY2F0dGVyZWQgc2VkZ2UgDQorQWZsb2F0LCB3aGVuIHdpdGggZmllcmNlIHdpbmRzIE9yaW9uIGFybWVkIA0KK0hhdGggdmV4ZWQgdGhlIFJlZC1TZWEgY29hc3QsIHdob3NlIHdhdmVzIG8nZXJ0aHJldyANCitCdXNpcmlzIGFuZCBoaXMgTWVtcGhpYW4gY2hpdmFscnksIA0KK1doaWxlIHdpdGggcGVyZmlkaW91cyBoYXRyZWQgdGhleSBwdXJzdWVkIA0KK1RoZSBzb2pvdXJuZXJzIG9mIEdvc2hlbiwgd2hvIGJlaGVsZCANCitGcm9tIHRoZSBzYWZlIHNob3JlIHRoZWlyIGZsb2F0aW5nIGNhcmNhc2VzIA0KK0FuZCBicm9rZW4gY2hhcmlvdC13aGVlbHMuIFNvIHRoaWNrIGJlc3Ryb3duLCANCitBYmplY3QgYW5kIGxvc3QsIGxheSB0aGVzZSwgY292ZXJpbmcgdGhlIGZsb29kLCANCitVbmRlciBhbWF6ZW1lbnQgb2YgdGhlaXIgaGlkZW91cyBjaGFuZ2UuIA0KK0hlIGNhbGxlZCBzbyBsb3VkIHRoYXQgYWxsIHRoZSBob2xsb3cgZGVlcCANCitPZiBIZWxsIHJlc291bmRlZDotLSJQcmluY2VzLCBQb3RlbnRhdGVzLCANCitXYXJyaW9ycywgdGhlIEZsb3dlciBvZiBIZWF2ZW4tLW9uY2UgeW91cnM7IG5vdyBsb3N0LCANCitJZiBzdWNoIGFzdG9uaXNobWVudCBhcyB0aGlzIGNhbiBzZWl6ZSANCitFdGVybmFsIFNwaXJpdHMhIE9yIGhhdmUgeWUgY2hvc2VuIHRoaXMgcGxhY2UgDQorQWZ0ZXIgdGhlIHRvaWwgb2YgYmF0dGxlIHRvIHJlcG9zZSANCitZb3VyIHdlYXJpZWQgdmlydHVlLCBmb3IgdGhlIGVhc2UgeW91IGZpbmQgDQorVG8gc2x1bWJlciBoZXJlLCBhcyBpbiB0aGUgdmFsZXMgb2YgSGVhdmVuPyANCitPciBpbiB0aGlzIGFiamVjdCBwb3N0dXJlIGhhdmUgeWUgc3dvcm4gDQorVG8gYWRvcmUgdGhlIENvbnF1ZXJvciwgd2hvIG5vdyBiZWhvbGRzIA0KK0NoZXJ1YiBhbmQgU2VyYXBoIHJvbGxpbmcgaW4gdGhlIGZsb29kIA0KK1dpdGggc2NhdHRlcmVkIGFybXMgYW5kIGVuc2lnbnMsIHRpbGwgYW5vbiANCitIaXMgc3dpZnQgcHVyc3VlcnMgZnJvbSBIZWF2ZW4tZ2F0ZXMgZGlzY2VybiANCitUaCcgYWR2YW50YWdlLCBhbmQsIGRlc2NlbmRpbmcsIHRyZWFkIHVzIGRvd24gDQorVGh1cyBkcm9vcGluZywgb3Igd2l0aCBsaW5rZWQgdGh1bmRlcmJvbHRzIA0KK1RyYW5zZml4IHVzIHRvIHRoZSBib3R0b20gb2YgdGhpcyBndWxmPyANCitBd2FrZSwgYXJpc2UsIG9yIGJlIGZvciBldmVyIGZhbGxlbiEiIA0KKyAgVGhleSBoZWFyZCwgYW5kIHdlcmUgYWJhc2hlZCwgYW5kIHVwIHRoZXkgc3BydW5nIA0KK1Vwb24gdGhlIHdpbmcsIGFzIHdoZW4gbWVuIHdvbnQgdG8gd2F0Y2ggDQorT24gZHV0eSwgc2xlZXBpbmcgZm91bmQgYnkgd2hvbSB0aGV5IGRyZWFkLCANCitSb3VzZSBhbmQgYmVzdGlyIHRoZW1zZWx2ZXMgZXJlIHdlbGwgYXdha2UuIA0KK05vciBkaWQgdGhleSBub3QgcGVyY2VpdmUgdGhlIGV2aWwgcGxpZ2h0IA0KK0luIHdoaWNoIHRoZXkgd2VyZSwgb3IgdGhlIGZpZXJjZSBwYWlucyBub3QgZmVlbDsgDQorWWV0IHRvIHRoZWlyIEdlbmVyYWwncyB2b2ljZSB0aGV5IHNvb24gb2JleWVkIA0KK0lubnVtZXJhYmxlLiBBcyB3aGVuIHRoZSBwb3RlbnQgcm9kIA0KK09mIEFtcmFtJ3Mgc29uLCBpbiBFZ3lwdCdzIGV2aWwgZGF5LCANCitXYXZlZCByb3VuZCB0aGUgY29hc3QsIHVwLWNhbGxlZCBhIHBpdGNoeSBjbG91ZCANCitPZiBsb2N1c3RzLCB3YXJwaW5nIG9uIHRoZSBlYXN0ZXJuIHdpbmQsIA0KK1RoYXQgbydlciB0aGUgcmVhbG0gb2YgaW1waW91cyBQaGFyYW9oIGh1bmcgDQorTGlrZSBOaWdodCwgYW5kIGRhcmtlbmVkIGFsbCB0aGUgbGFuZCBvZiBOaWxlOyANCitTbyBudW1iZXJsZXNzIHdlcmUgdGhvc2UgYmFkIEFuZ2VscyBzZWVuIA0KK0hvdmVyaW5nIG9uIHdpbmcgdW5kZXIgdGhlIGNvcGUgb2YgSGVsbCwgDQorJ1R3aXh0IHVwcGVyLCBuZXRoZXIsIGFuZCBzdXJyb3VuZGluZyBmaXJlczsgDQorVGlsbCwgYXMgYSBzaWduYWwgZ2l2ZW4sIHRoJyB1cGxpZnRlZCBzcGVhciANCitPZiB0aGVpciBncmVhdCBTdWx0YW4gd2F2aW5nIHRvIGRpcmVjdCANCitUaGVpciBjb3Vyc2UsIGluIGV2ZW4gYmFsYW5jZSBkb3duIHRoZXkgbGlnaHQgDQorT24gdGhlIGZpcm0gYnJpbXN0b25lLCBhbmQgZmlsbCBhbGwgdGhlIHBsYWluOiANCitBIG11bHRpdHVkZSBsaWtlIHdoaWNoIHRoZSBwb3B1bG91cyBOb3J0aCANCitQb3VyZWQgbmV2ZXIgZnJvbSBoZXIgZnJvemVuIGxvaW5zIHRvIHBhc3MgDQorUmhlbmUgb3IgdGhlIERhbmF3LCB3aGVuIGhlciBiYXJiYXJvdXMgc29ucyANCitDYW1lIGxpa2UgYSBkZWx1Z2Ugb24gdGhlIFNvdXRoLCBhbmQgc3ByZWFkIA0KK0JlbmVhdGggR2licmFsdGFyIHRvIHRoZSBMaWJ5YW4gc2FuZHMuIA0KK0ZvcnRod2l0aCwgZm9ybSBldmVyeSBzcXVhZHJvbiBhbmQgZWFjaCBiYW5kLCANCitUaGUgaGVhZHMgYW5kIGxlYWRlcnMgdGhpdGhlciBoYXN0ZSB3aGVyZSBzdG9vZCANCitUaGVpciBncmVhdCBDb21tYW5kZXItLWdvZGxpa2UgU2hhcGVzLCBhbmQgRm9ybXMgDQorRXhjZWxsaW5nIGh1bWFuOyBwcmluY2VseSBEaWduaXRpZXM7IA0KK0FuZCBQb3dlcnMgdGhhdCBlcnN0IGluIEhlYXZlbiBzYXQgb24gdGhyb25lcywgDQorVGhvdWdoIG9uIHRoZWlyIG5hbWVzIGluIEhlYXZlbmx5IHJlY29yZHMgbm93IA0KK0JlIG5vIG1lbW9yaWFsLCBibG90dGVkIG91dCBhbmQgcmFzZWQgDQorQnkgdGhlaXIgcmViZWxsaW9uIGZyb20gdGhlIEJvb2tzIG9mIExpZmUuIA0KK05vciBoYWQgdGhleSB5ZXQgYW1vbmcgdGhlIHNvbnMgb2YgRXZlIA0KK0dvdCB0aGVtIG5ldyBuYW1lcywgdGlsbCwgd2FuZGVyaW5nIG8nZXIgdGhlIGVhcnRoLCANCitUaHJvdWdoIEdvZCdzIGhpZ2ggc3VmZmVyYW5jZSBmb3IgdGhlIHRyaWFsIG9mIG1hbiwgDQorQnkgZmFsc2l0aWVzIGFuZCBsaWVzIHRoZSBncmVhdGVzdCBwYXJ0IA0KK09mIG1hbmtpbmQgdGhleSBjb3JydXB0ZWQgdG8gZm9yc2FrZSANCitHb2QgdGhlaXIgQ3JlYXRvciwgYW5kIHRoJyBpbnZpc2libGUgDQorR2xvcnkgb2YgaGltIHRoYXQgbWFkZSB0aGVtIHRvIHRyYW5zZm9ybSANCitPZnQgdG8gdGhlIGltYWdlIG9mIGEgYnJ1dGUsIGFkb3JuZWQgDQorV2l0aCBnYXkgcmVsaWdpb25zIGZ1bGwgb2YgcG9tcCBhbmQgZ29sZCwgDQorQW5kIGRldmlscyB0byBhZG9yZSBmb3IgZGVpdGllczogDQorVGhlbiB3ZXJlIHRoZXkga25vd24gdG8gbWVuIGJ5IHZhcmlvdXMgbmFtZXMsIA0KK0FuZCB2YXJpb3VzIGlkb2xzIHRocm91Z2ggdGhlIGhlYXRoZW4gd29ybGQuIA0KKyAgU2F5LCBNdXNlLCB0aGVpciBuYW1lcyB0aGVuIGtub3duLCB3aG8gZmlyc3QsIHdobyBsYXN0LCANCitSb3VzZWQgZnJvbSB0aGUgc2x1bWJlciBvbiB0aGF0IGZpZXJ5IGNvdWNoLCANCitBdCB0aGVpciBncmVhdCBFbXBlcm9yJ3MgY2FsbCwgYXMgbmV4dCBpbiB3b3J0aCANCitDYW1lIHNpbmdseSB3aGVyZSBoZSBzdG9vZCBvbiB0aGUgYmFyZSBzdHJhbmQsIA0KK1doaWxlIHRoZSBwcm9taXNjdW91cyBjcm93ZCBzdG9vZCB5ZXQgYWxvb2Y/IA0KKyAgVGhlIGNoaWVmIHdlcmUgdGhvc2Ugd2hvLCBmcm9tIHRoZSBwaXQgb2YgSGVsbCANCitSb2FtaW5nIHRvIHNlZWsgdGhlaXIgcHJleSBvbiBFYXJ0aCwgZHVyc3QgZml4IA0KK1RoZWlyIHNlYXRzLCBsb25nIGFmdGVyLCBuZXh0IHRoZSBzZWF0IG9mIEdvZCwgDQorVGhlaXIgYWx0YXJzIGJ5IGhpcyBhbHRhciwgZ29kcyBhZG9yZWQgDQorQW1vbmcgdGhlIG5hdGlvbnMgcm91bmQsIGFuZCBkdXJzdCBhYmlkZSANCitKZWhvdmFoIHRodW5kZXJpbmcgb3V0IG9mIFNpb24sIHRocm9uZWQgDQorQmV0d2VlbiB0aGUgQ2hlcnViaW07IHllYSwgb2Z0ZW4gcGxhY2VkIA0KK1dpdGhpbiBoaXMgc2FuY3R1YXJ5IGl0c2VsZiB0aGVpciBzaHJpbmVzLCANCitBYm9taW5hdGlvbnM7IGFuZCB3aXRoIGN1cnNlZCB0aGluZ3MgDQorSGlzIGhvbHkgcml0ZXMgYW5kIHNvbGVtbiBmZWFzdHMgcHJvZmFuZWQsIA0KK0FuZCB3aXRoIHRoZWlyIGRhcmtuZXNzIGR1cnN0IGFmZnJvbnQgaGlzIGxpZ2h0LiANCitGaXJzdCwgTW9sb2NoLCBob3JyaWQga2luZywgYmVzbWVhcmVkIHdpdGggYmxvb2QgDQorT2YgaHVtYW4gc2FjcmlmaWNlLCBhbmQgcGFyZW50cycgdGVhcnM7IA0KK1Rob3VnaCwgZm9yIHRoZSBub2lzZSBvZiBkcnVtcyBhbmQgdGltYnJlbHMgbG91ZCwgDQorVGhlaXIgY2hpbGRyZW4ncyBjcmllcyB1bmhlYXJkIHRoYXQgcGFzc2VkIHRocm91Z2ggZmlyZSANCitUbyBoaXMgZ3JpbSBpZG9sLiBIaW0gdGhlIEFtbW9uaXRlIA0KK1dvcnNoaXBlZCBpbiBSYWJiYSBhbmQgaGVyIHdhdGVyeSBwbGFpbiwgDQorSW4gQXJnb2IgYW5kIGluIEJhc2FuLCB0byB0aGUgc3RyZWFtIA0KK09mIHV0bW9zdCBBcm5vbi4gTm9yIGNvbnRlbnQgd2l0aCBzdWNoIA0KK0F1ZGFjaW91cyBuZWlnaGJvdXJob29kLCB0aGUgd2lzZXN0IGhlYXJ0IA0KK09mIFNvbG9tb24gaGUgbGVkIGJ5IGZyYW91ZCB0byBidWlsZCANCitIaXMgdGVtcGxlIHJpZ2h0IGFnYWluc3QgdGhlIHRlbXBsZSBvZiBHb2QgDQorT24gdGhhdCBvcHByb2JyaW91cyBoaWxsLCBhbmQgbWFkZSBoaXMgZ3JvdmUgDQorVGhlIHBsZWFzYW50IHZhbGxleSBvZiBIaW5ub20sIFRvcGhldCB0aGVuY2UgDQorQW5kIGJsYWNrIEdlaGVubmEgY2FsbGVkLCB0aGUgdHlwZSBvZiBIZWxsLiANCitOZXh0IENoZW1vcywgdGgnIG9ic2NlbmUgZHJlYWQgb2YgTW9hYidzIHNvbnMsIA0KK0Zyb20gQXJvYXIgdG8gTmVibyBhbmQgdGhlIHdpbGQgDQorT2Ygc291dGhtb3N0IEFiYXJpbTsgaW4gSGVzZWJvbiANCitBbmQgSG9yb25haW0sIFNlb24ncyByZWFsLCBiZXlvbmQgDQorVGhlIGZsb3dlcnkgZGFsZSBvZiBTaWJtYSBjbGFkIHdpdGggdmluZXMsIA0KK0FuZCBFbGVhbGUgdG8gdGgnIEFzcGhhbHRpYyBQb29sOiANCitQZW9yIGhpcyBvdGhlciBuYW1lLCB3aGVuIGhlIGVudGljZWQgDQorSXNyYWVsIGluIFNpdHRpbSwgb24gdGhlaXIgbWFyY2ggZnJvbSBOaWxlLCANCitUbyBkbyBoaW0gd2FudG9uIHJpdGVzLCB3aGljaCBjb3N0IHRoZW0gd29lLiANCitZZXQgdGhlbmNlIGhpcyBsdXN0ZnVsIG9yZ2llcyBoZSBlbmxhcmdlZCANCitFdmVuIHRvIHRoYXQgaGlsbCBvZiBzY2FuZGFsLCBieSB0aGUgZ3JvdmUgDQorT2YgTW9sb2NoIGhvbWljaWRlLCBsdXN0IGhhcmQgYnkgaGF0ZSwgDQorVGlsbCBnb29kIEpvc2lhaCBkcm92ZSB0aGVtIHRoZW5jZSB0byBIZWxsLiANCitXaXRoIHRoZXNlIGNhbWUgdGhleSB3aG8sIGZyb20gdGhlIGJvcmRlcmluZyBmbG9vZCANCitPZiBvbGQgRXVwaHJhdGVzIHRvIHRoZSBicm9vayB0aGF0IHBhcnRzIA0KK0VneXB0IGZyb20gU3lyaWFuIGdyb3VuZCwgaGFkIGdlbmVyYWwgbmFtZXMgDQorT2YgQmFhbGltIGFuZCBBc2h0YXJvdGgtLXRob3NlIG1hbGUsIA0KK1RoZXNlIGZlbWluaW5lLiBGb3IgU3Bpcml0cywgd2hlbiB0aGV5IHBsZWFzZSwgDQorQ2FuIGVpdGhlciBzZXggYXNzdW1lLCBvciBib3RoOyBzbyBzb2Z0IA0KK0FuZCB1bmNvbXBvdW5kZWQgaXMgdGhlaXIgZXNzZW5jZSBwdXJlLCANCitOb3QgdHJpZWQgb3IgbWFuYWNsZWQgd2l0aCBqb2ludCBvciBsaW1iLCANCitOb3IgZm91bmRlZCBvbiB0aGUgYnJpdHRsZSBzdHJlbmd0aCBvZiBib25lcywgDQorTGlrZSBjdW1icm91cyBmbGVzaDsgYnV0LCBpbiB3aGF0IHNoYXBlIHRoZXkgY2hvb3NlLCANCitEaWxhdGVkIG9yIGNvbmRlbnNlZCwgYnJpZ2h0IG9yIG9ic2N1cmUsIA0KK0NhbiBleGVjdXRlIHRoZWlyIGFpcnkgcHVycG9zZXMsIA0KK0FuZCB3b3JrcyBvZiBsb3ZlIG9yIGVubWl0eSBmdWxmaWwuIA0KK0ZvciB0aG9zZSB0aGUgcmFjZSBvZiBJc3JhZWwgb2Z0IGZvcnNvb2sgDQorVGhlaXIgTGl2aW5nIFN0cmVuZ3RoLCBhbmQgdW5mcmVxdWVudGVkIGxlZnQgDQorSGlzIHJpZ2h0ZW91cyBhbHRhciwgYm93aW5nIGxvd2x5IGRvd24gDQorVG8gYmVzdGlhbCBnb2RzOyBmb3Igd2hpY2ggdGhlaXIgaGVhZHMgYXMgbG93IA0KK0Jvd2VkIGRvd24gaW4gYmF0dGxlLCBzdW5rIGJlZm9yZSB0aGUgc3BlYXIgDQorT2YgZGVzcGljYWJsZSBmb2VzLiBXaXRoIHRoZXNlIGluIHRyb29wIA0KK0NhbWUgQXN0b3JldGgsIHdob20gdGhlIFBob2VuaWNpYW5zIGNhbGxlZCANCitBc3RhcnRlLCBxdWVlbiBvZiBoZWF2ZW4sIHdpdGggY3Jlc2NlbnQgaG9ybnM7IA0KK1RvIHdob3NlIGJyaWdodCBpbWFnZSBuaWdudGx5IGJ5IHRoZSBtb29uIA0KK1NpZG9uaWFuIHZpcmdpbnMgcGFpZCB0aGVpciB2b3dzIGFuZCBzb25nczsgDQorSW4gU2lvbiBhbHNvIG5vdCB1bnN1bmcsIHdoZXJlIHN0b29kIA0KK0hlciB0ZW1wbGUgb24gdGgnIG9mZmVuc2l2ZSBtb3VudGFpbiwgYnVpbHQgDQorQnkgdGhhdCB1eG9yaW91cyBraW5nIHdob3NlIGhlYXJ0LCB0aG91Z2ggbGFyZ2UsIA0KK0JlZ3VpbGVkIGJ5IGZhaXIgaWRvbGF0cmVzc2VzLCBmZWxsIA0KK1RvIGlkb2xzIGZvdWwuIFRoYW1tdXogY2FtZSBuZXh0IGJlaGluZCwgDQorV2hvc2UgYW5udWFsIHdvdW5kIGluIExlYmFub24gYWxsdXJlZCANCitUaGUgU3lyaWFuIGRhbXNlbHMgdG8gbGFtZW50IGhpcyBmYXRlIA0KK0luIGFtb3JvdXMgZGl0dGllcyBhbGwgYSBzdW1tZXIncyBkYXksIA0KK1doaWxlIHNtb290aCBBZG9uaXMgZnJvbSBoaXMgbmF0aXZlIHJvY2sgDQorUmFuIHB1cnBsZSB0byB0aGUgc2VhLCBzdXBwb3NlZCB3aXRoIGJsb29kIA0KK09mIFRoYW1tdXogeWVhcmx5IHdvdW5kZWQ6IHRoZSBsb3ZlLXRhbGUgDQorSW5mZWN0ZWQgU2lvbidzIGRhdWdodGVycyB3aXRoIGxpa2UgaGVhdCwgDQorV2hvc2Ugd2FudG9uIHBhc3Npb25zIGluIHRoZSBzYWNyZWQgcHJvY2ggDQorRXpla2llbCBzYXcsIHdoZW4sIGJ5IHRoZSB2aXNpb24gbGVkLCANCitIaXMgZXllIHN1cnZleWVkIHRoZSBkYXJrIGlkb2xhdHJpZXMgDQorT2YgYWxpZW5hdGVkIEp1ZGFoLiBOZXh0IGNhbWUgb25lIA0KK1dobyBtb3VybmVkIGluIGVhcm5lc3QsIHdoZW4gdGhlIGNhcHRpdmUgYXJrIA0KK01haW1lZCBoaXMgYnJ1dGUgaW1hZ2UsIGhlYWQgYW5kIGhhbmRzIGxvcHQgb2ZmLCANCitJbiBoaXMgb3duIHRlbXBsZSwgb24gdGhlIGdydW5zZWwtZWRnZSwgDQorV2hlcmUgaGUgZmVsbCBmbGF0IGFuZCBzaGFtZWQgaGlzIHdvcnNoaXBwZXJzOiANCitEYWdvbiBoaXMgbmFtZSwgc2VhLW1vbnN0ZXIsdXB3YXJkIG1hbiANCitBbmQgZG93bndhcmQgZmlzaDsgeWV0IGhhZCBoaXMgdGVtcGxlIGhpZ2ggDQorUmVhcmVkIGluIEF6b3R1cywgZHJlYWRlZCB0aHJvdWdoIHRoZSBjb2FzdCANCitPZiBQYWxlc3RpbmUsIGluIEdhdGggYW5kIEFzY2Fsb24sIA0KK0FuZCBBY2Nhcm9uIGFuZCBHYXphJ3MgZnJvbnRpZXIgYm91bmRzLiANCitIaW0gZm9sbG93ZWQgUmltbW9uLCB3aG9zZSBkZWxpZ2h0ZnVsIHNlYXQgDQorV2FzIGZhaXIgRGFtYXNjdXMsIG9uIHRoZSBmZXJ0aWxlIGJhbmtzIA0KK09mIEFiYmFuYSBhbmQgUGhhcnBoYXIsIGx1Y2lkIHN0cmVhbXMuIA0KK0hlIGFsc28gYWdhaW5zdCB0aGUgaG91c2Ugb2YgR29kIHdhcyBib2xkOiANCitBIGxlcGVyIG9uY2UgaGUgbG9zdCwgYW5kIGdhaW5lZCBhIGtpbmctLSANCitBaGF6LCBoaXMgc290dGlzaCBjb25xdWVyb3IsIHdob20gaGUgZHJldyANCitHb2QncyBhbHRhciB0byBkaXNwYXJhZ2UgYW5kIGRpc3BsYWNlIA0KK0ZvciBvbmUgb2YgU3lyaWFuIG1vZGUsIHdoZXJlb24gdG8gYnVybiANCitIaXMgb2Rpb3VzIG9mZmVyaW5ncywgYW5kIGFkb3JlIHRoZSBnb2RzIA0KK1dob20gaGUgaGFkIHZhbnF1aXNoZWQuIEFmdGVyIHRoZXNlIGFwcGVhcmVkIA0KK0EgY3JldyB3aG8sIHVuZGVyIG5hbWVzIG9mIG9sZCByZW5vd24tLSANCitPc2lyaXMsIElzaXMsIE9ydXMsIGFuZCB0aGVpciB0cmFpbi0tIA0KK1dpdGggbW9uc3Ryb3VzIHNoYXBlcyBhbmQgc29yY2VyaWVzIGFidXNlZCANCitGYW5hdGljIEVneXB0IGFuZCBoZXIgcHJpZXN0cyB0byBzZWVrIA0KK1RoZWlyIHdhbmRlcmluZyBnb2RzIGRpc2d1aXNlZCBpbiBicnV0aXNoIGZvcm1zIA0KK1JhdGhlciB0aGFuIGh1bWFuLiBOb3IgZGlkIElzcmFlbCBzY2FwZSANCitUaCcgaW5mZWN0aW9uLCB3aGVuIHRoZWlyIGJvcnJvd2VkIGdvbGQgY29tcG9zZWQgDQorVGhlIGNhbGYgaW4gT3JlYjsgYW5kIHRoZSByZWJlbCBraW5nIA0KK0RvdWJsZWQgdGhhdCBzaW4gaW4gQmV0aGVsIGFuZCBpbiBEYW4sIA0KK0xpa2VuaW5nIGhpcyBNYWtlciB0byB0aGUgZ3JhemVkIG94LS0gDQorSmVob3ZhaCwgd2hvLCBpbiBvbmUgbmlnaHQsIHdoZW4gaGUgcGFzc2VkIA0KK0Zyb20gRWd5cHQgbWFyY2hpbmcsIGVxdWFsbGVkIHdpdGggb25lIHN0cm9rZSANCitCb3RoIGhlciBmaXJzdC1ib3JuIGFuZCBhbGwgaGVyIGJsZWF0aW5nIGdvZHMuIA0KK0JlbGlhbCBjYW1lIGxhc3Q7IHRoYW4gd2hvbSBhIFNwaXJpdCBtb3JlIGxld2QgDQorRmVsbCBub3QgZnJvbSBIZWF2ZW4sIG9yIG1vcmUgZ3Jvc3MgdG8gbG92ZSANCitWaWNlIGZvciBpdHNlbGYuIFRvIGhpbSBubyB0ZW1wbGUgc3Rvb2QgDQorT3IgYWx0YXIgc21va2VkOyB5ZXQgd2hvIG1vcmUgb2Z0IHRoYW4gaGUgDQorSW4gdGVtcGxlcyBhbmQgYXQgYWx0YXJzLCB3aGVuIHRoZSBwcmllc3QgDQorVHVybnMgYXRoZWlzdCwgYXMgZGlkIEVsaSdzIHNvbnMsIHdobyBmaWxsZWQgDQorV2l0aCBsdXN0IGFuZCB2aW9sZW5jZSB0aGUgaG91c2Ugb2YgR29kPyANCitJbiBjb3VydHMgYW5kIHBhbGFjZXMgaGUgYWxzbyByZWlnbnMsIA0KK0FuZCBpbiBsdXh1cmlvdXMgY2l0aWVzLCB3aGVyZSB0aGUgbm9pc2UgDQorT2YgcmlvdCBhc2NlbmRzIGFib3ZlIHRoZWlyIGxvZnRpZXN0IHRvd2VycywgDQorQW5kIGluanVyeSBhbmQgb3V0cmFnZTsgYW5kLCB3aGVuIG5pZ2h0IA0KK0RhcmtlbnMgdGhlIHN0cmVldHMsIHRoZW4gd2FuZGVyIGZvcnRoIHRoZSBzb25zIA0KK09mIEJlbGlhbCwgZmxvd24gd2l0aCBpbnNvbGVuY2UgYW5kIHdpbmUuIA0KK1dpdG5lc3MgdGhlIHN0cmVldHMgb2YgU29kb20sIGFuZCB0aGF0IG5pZ2h0IA0KK0luIEdpYmVhaCwgd2hlbiB0aGUgaG9zcGl0YWJsZSBkb29yIA0KK0V4cG9zZWQgYSBtYXRyb24sIHRvIGF2b2lkIHdvcnNlIHJhcGUuIA0KKyAgVGhlc2Ugd2VyZSB0aGUgcHJpbWUgaW4gb3JkZXIgYW5kIGluIG1pZ2h0OiANCitUaGUgcmVzdCB3ZXJlIGxvbmcgdG8gdGVsbDsgdGhvdWdoIGZhciByZW5vd25lZCANCitUaCcgSW9uaWFuIGdvZHMtLW9mIEphdmFuJ3MgaXNzdWUgaGVsZCANCitHb2RzLCB5ZXQgY29uZmVzc2VkIGxhdGVyIHRoYW4gSGVhdmVuIGFuZCBFYXJ0aCwgDQorVGhlaXIgYm9hc3RlZCBwYXJlbnRzOy0tVGl0YW4sIEhlYXZlbidzIGZpcnN0LWJvcm4sIA0KK1dpdGggaGlzIGVub3Jtb3VzIGJyb29kLCBhbmQgYmlydGhyaWdodCBzZWl6ZWQgDQorQnkgeW91bmdlciBTYXR1cm46IGhlIGZyb20gbWlnaHRpZXIgSm92ZSwgDQorSGlzIG93biBhbmQgUmhlYSdzIHNvbiwgbGlrZSBtZWFzdXJlIGZvdW5kOyANCitTbyBKb3ZlIHVzdXJwaW5nIHJlaWduZWQuIFRoZXNlLCBmaXJzdCBpbiBDcmV0ZSANCitBbmQgSWRhIGtub3duLCB0aGVuY2Ugb24gdGhlIHNub3d5IHRvcCANCitPZiBjb2xkIE9seW1wdXMgcnVsZWQgdGhlIG1pZGRsZSBhaXIsIA0KK1RoZWlyIGhpZ2hlc3QgaGVhdmVuOyBvciBvbiB0aGUgRGVscGhpYW4gY2xpZmYsIA0KK09yIGluIERvZG9uYSwgYW5kIHRocm91Z2ggYWxsIHRoZSBib3VuZHMgDQorT2YgRG9yaWMgbGFuZDsgb3Igd2hvIHdpdGggU2F0dXJuIG9sZCANCitGbGVkIG92ZXIgQWRyaWEgdG8gdGgnIEhlc3BlcmlhbiBmaWVsZHMsIA0KK0FuZCBvJ2VyIHRoZSBDZWx0aWMgcm9hbWVkIHRoZSB1dG1vc3QgSXNsZXMuIA0KKyAgQWxsIHRoZXNlIGFuZCBtb3JlIGNhbWUgZmxvY2tpbmc7IGJ1dCB3aXRoIGxvb2tzIA0KK0Rvd25jYXN0IGFuZCBkYW1wOyB5ZXQgc3VjaCB3aGVyZWluIGFwcGVhcmVkIA0KK09ic2N1cmUgc29tZSBnbGltcHNlIG9mIGpveSB0byBoYXZlIGZvdW5kIHRoZWlyIENoaWVmIA0KK05vdCBpbiBkZXNwYWlyLCB0byBoYXZlIGZvdW5kIHRoZW1zZWx2ZXMgbm90IGxvc3QgDQorSW4gbG9zcyBpdHNlbGY7IHdoaWNoIG9uIGhpcyBjb3VudGVuYW5jZSBjYXN0IA0KK0xpa2UgZG91YnRmdWwgaHVlLiBCdXQgaGUsIGhpcyB3b250ZWQgcHJpZGUgDQorU29vbiByZWNvbGxlY3RpbmcsIHdpdGggaGlnaCB3b3JkcywgdGhhdCBib3JlIA0KK1NlbWJsYW5jZSBvZiB3b3J0aCwgbm90IHN1YnN0YW5jZSwgZ2VudGx5IHJhaXNlZCANCitUaGVpciBmYWludGluZyBjb3VyYWdlLCBhbmQgZGlzcGVsbGVkIHRoZWlyIGZlYXJzLiANCitUaGVuIHN0cmFpZ2h0IGNvbW1hbmRzIHRoYXQsIGF0IHRoZSB3YXJsaWtlIHNvdW5kIA0KK09mIHRydW1wZXRzIGxvdWQgYW5kIGNsYXJpb25zLCBiZSB1cHJlYXJlZCANCitIaXMgbWlnaHR5IHN0YW5kYXJkLiBUaGF0IHByb3VkIGhvbm91ciBjbGFpbWVkIA0KK0F6YXplbCBhcyBoaXMgcmlnaHQsIGEgQ2hlcnViIHRhbGw6IA0KK1dobyBmb3J0aHdpdGggZnJvbSB0aGUgZ2xpdHRlcmluZyBzdGFmZiB1bmZ1cmxlZCANCitUaCcgaW1wZXJpYWwgZW5zaWduOyB3aGljaCwgZnVsbCBoaWdoIGFkdmFuY2VkLCANCitTaG9uZSBsaWtlIGEgbWV0ZW9yIHN0cmVhbWluZyB0byB0aGUgd2luZCwgDQorV2l0aCBnZW1zIGFuZCBnb2xkZW4gbHVzdHJlIHJpY2ggZW1ibGF6ZWQsIA0KK1NlcmFwaGljIGFybXMgYW5kIHRyb3BoaWVzOyBhbGwgdGhlIHdoaWxlIA0KK1Nvbm9yb3VzIG1ldGFsIGJsb3dpbmcgbWFydGlhbCBzb3VuZHM6IA0KK0F0IHdoaWNoIHRoZSB1bml2ZXJzYWwgaG9zdCB1cC1zZW50IA0KK0Egc2hvdXQgdGhhdCB0b3JlIEhlbGwncyBjb25jYXZlLCBhbmQgYmV5b25kIA0KK0ZyaWdodGVkIHRoZSByZWlnbiBvZiBDaGFvcyBhbmQgb2xkIE5pZ2h0LiANCitBbGwgaW4gYSBtb21lbnQgdGhyb3VnaCB0aGUgZ2xvb20gd2VyZSBzZWVuIA0KK1RlbiB0aG91c2FuZCBiYW5uZXJzIHJpc2UgaW50byB0aGUgYWlyLCANCitXaXRoIG9yaWVudCBjb2xvdXJzIHdhdmluZzogd2l0aCB0aGVtIHJvc2UgDQorQSBmb3Jlc3QgaHVnZSBvZiBzcGVhcnM7IGFuZCB0aHJvbmdpbmcgaGVsbXMgDQorQXBwZWFyZWQsIGFuZCBzZXJyaWVkIHNoaWVsZHMgaW4gdGhpY2sgYXJyYXkgDQorT2YgZGVwdGggaW1tZWFzdXJhYmxlLiBBbm9uIHRoZXkgbW92ZSANCitJbiBwZXJmZWN0IHBoYWxhbnggdG8gdGhlIERvcmlhbiBtb29kIA0KK09mIGZsdXRlcyBhbmQgc29mdCByZWNvcmRlcnMtLXN1Y2ggYXMgcmFpc2VkIA0KK1RvIGhlaWdodCBvZiBub2JsZXN0IHRlbXBlciBoZXJvZXMgb2xkIA0KK0FybWluZyB0byBiYXR0bGUsIGFuZCBpbnN0ZWFkIG9mIHJhZ2UgDQorRGVsaWJlcmF0ZSB2YWxvdXIgYnJlYXRoZWQsIGZpcm0sIGFuZCB1bm1vdmVkIA0KK1dpdGggZHJlYWQgb2YgZGVhdGggdG8gZmxpZ2h0IG9yIGZvdWwgcmV0cmVhdDsgDQorTm9yIHdhbnRpbmcgcG93ZXIgdG8gbWl0aWdhdGUgYW5kIHN3YWdlIA0KK1dpdGggc29sZW1uIHRvdWNoZXMgdHJvdWJsZWQgdGhvdWdodHMsIGFuZCBjaGFzZSANCitBbmd1aXNoIGFuZCBkb3VidCBhbmQgZmVhciBhbmQgc29ycm93IGFuZCBwYWluIA0KK0Zyb20gbW9ydGFsIG9yIGltbW9ydGFsIG1pbmRzLiBUaHVzIHRoZXksIA0KK0JyZWF0aGluZyB1bml0ZWQgZm9yY2Ugd2l0aCBmaXhlZCB0aG91Z2h0LCANCitNb3ZlZCBvbiBpbiBzaWxlbmNlIHRvIHNvZnQgcGlwZXMgdGhhdCBjaGFybWVkIA0KK1RoZWlyIHBhaW5mdWwgc3RlcHMgbydlciB0aGUgYnVybnQgc29pbC4gQW5kIG5vdyANCitBZHZhbmNlZCBpbiB2aWV3IHRoZXkgc3RhbmQtLWEgaG9ycmlkIGZyb250IA0KK09mIGRyZWFkZnVsIGxlbmd0aCBhbmQgZGF6emxpbmcgYXJtcywgaW4gZ3Vpc2UgDQorT2Ygd2FycmlvcnMgb2xkLCB3aXRoIG9yZGVyZWQgc3BlYXIgYW5kIHNoaWVsZCwgDQorQXdhaXRpbmcgd2hhdCBjb21tYW5kIHRoZWlyIG1pZ2h0eSBDaGllZiANCitIYWQgdG8gaW1wb3NlLiBIZSB0aHJvdWdoIHRoZSBhcm1lZCBmaWxlcyANCitEYXJ0cyBoaXMgZXhwZXJpZW5jZWQgZXllLCBhbmQgc29vbiB0cmF2ZXJzZSANCitUaGUgd2hvbGUgYmF0dGFsaW9uIHZpZXdzLS10aGVpciBvcmRlciBkdWUsIA0KK1RoZWlyIHZpc2FnZXMgYW5kIHN0YXR1cmUgYXMgb2YgZ29kczsgDQorVGhlaXIgbnVtYmVyIGxhc3QgaGUgc3Vtcy4gQW5kIG5vdyBoaXMgaGVhcnQgDQorRGlzdGVuZHMgd2l0aCBwcmlkZSwgYW5kLCBoYXJkZW5pbmcgaW4gaGlzIHN0cmVuZ3RoLCANCitHbG9yaWVzOiBmb3IgbmV2ZXIsIHNpbmNlIGNyZWF0ZWQgTWFuLCANCitNZXQgc3VjaCBlbWJvZGllZCBmb3JjZSBhcywgbmFtZWQgd2l0aCB0aGVzZSwgDQorQ291bGQgbWVyaXQgbW9yZSB0aGFuIHRoYXQgc21hbGwgaW5mYW50cnkgDQorV2FycmVkIG9uIGJ5IGNyYW5lcy0tdGhvdWdoIGFsbCB0aGUgZ2lhbnQgYnJvb2QgDQorT2YgUGhsZWdyYSB3aXRoIHRoJyBoZXJvaWMgcmFjZSB3ZXJlIGpvaW5lZCANCitUaGF0IGZvdWdodCBhdCBUaGViZXMgYW5kIElsaXVtLCBvbiBlYWNoIHNpZGUgDQorTWl4ZWQgd2l0aCBhdXhpbGlhciBnb2RzOyBhbmQgd2hhdCByZXNvdW5kcyANCitJbiBmYWJsZSBvciByb21hbmNlIG9mIFV0aGVyJ3Mgc29uLCANCitCZWdpcnQgd2l0aCBCcml0aXNoIGFuZCBBcm1vcmljIGtuaWdodHM7IA0KK0FuZCBhbGwgd2hvIHNpbmNlLCBiYXB0aXplZCBvciBpbmZpZGVsLCANCitKb3VzdGVkIGluIEFzcHJhbW9udCwgb3IgTW9udGFsYmFuLCANCitEYW1hc2NvLCBvciBNYXJvY2NvLCBvciBUcmViaXNvbmQsIA0KK09yIHdob20gQmlzZXJ0YSBzZW50IGZyb20gQWZyaWMgc2hvcmUgDQorV2hlbiBDaGFybGVtYWluIHdpdGggYWxsIGhpcyBwZWVyYWdlIGZlbGwgDQorQnkgRm9udGFyYWJiaWEuIFRodXMgZmFyIHRoZXNlIGJleW9uZCANCitDb21wYXJlIG9mIG1vcnRhbCBwcm93ZXNzLCB5ZXQgb2JzZXJ2ZWQgDQorVGhlaXIgZHJlYWQgQ29tbWFuZGVyLiBIZSwgYWJvdmUgdGhlIHJlc3QgDQorSW4gc2hhcGUgYW5kIGdlc3R1cmUgcHJvdWRseSBlbWluZW50LCANCitTdG9vZCBsaWtlIGEgdG93ZXIuIEhpcyBmb3JtIGhhZCB5ZXQgbm90IGxvc3QgDQorQWxsIGhlciBvcmlnaW5hbCBicmlnaHRuZXNzLCBub3IgYXBwZWFyZWQgDQorTGVzcyB0aGFuIEFyY2hhbmdlbCBydWluZWQsIGFuZCB0aCcgZXhjZXNzIA0KK09mIGdsb3J5IG9ic2N1cmVkOiBhcyB3aGVuIHRoZSBzdW4gbmV3LXJpc2VuIA0KK0xvb2tzIHRocm91Z2ggdGhlIGhvcml6b250YWwgbWlzdHkgYWlyIA0KK1Nob3JuIG9mIGhpcyBiZWFtcywgb3IsIGZyb20gYmVoaW5kIHRoZSBtb29uLCANCitJbiBkaW0gZWNsaXBzZSwgZGlzYXN0cm91cyB0d2lsaWdodCBzaGVkcyANCitPbiBoYWxmIHRoZSBuYXRpb25zLCBhbmQgd2l0aCBmZWFyIG9mIGNoYW5nZSANCitQZXJwbGV4ZXMgbW9uYXJjaHMuIERhcmtlbmVkIHNvLCB5ZXQgc2hvbmUgDQorQWJvdmUgdGhlbSBhbGwgdGgnIEFyY2hhbmdlbDogYnV0IGhpcyBmYWNlIA0KK0RlZXAgc2NhcnMgb2YgdGh1bmRlciBoYWQgaW50cmVuY2hlZCwgYW5kIGNhcmUgDQorU2F0IG9uIGhpcyBmYWRlZCBjaGVlaywgYnV0IHVuZGVyIGJyb3dzIA0KK09mIGRhdW50bGVzcyBjb3VyYWdlLCBhbmQgY29uc2lkZXJhdGUgcHJpZGUgDQorV2FpdGluZyByZXZlbmdlLiBDcnVlbCBoaXMgZXllLCBidXQgY2FzdCANCitTaWducyBvZiByZW1vcnNlIGFuZCBwYXNzaW9uLCB0byBiZWhvbGQgDQorVGhlIGZlbGxvd3Mgb2YgaGlzIGNyaW1lLCB0aGUgZm9sbG93ZXJzIHJhdGhlciANCisoRmFyIG90aGVyIG9uY2UgYmVoZWxkIGluIGJsaXNzKSwgY29uZGVtbmVkIA0KK0ZvciBldmVyIG5vdyB0byBoYXZlIHRoZWlyIGxvdCBpbiBwYWluLS0gDQorTWlsbGlvbnMgb2YgU3Bpcml0cyBmb3IgaGlzIGZhdWx0IGFtZXJjZWQgDQorT2YgSGVhdmVuLCBhbmQgZnJvbSBldGVyYW5sIHNwbGVuZG91cnMgZmx1bmcgDQorRm9yIGhpcyByZXZvbHQtLXlldCBmYWl0aGZ1bCBob3cgdGhleSBzdG9vZCwgDQorVGhlaXIgZ2xvcnkgd2l0aGVyZWQ7IGFzLCB3aGVuIGhlYXZlbidzIGZpcmUgDQorSGF0aCBzY2F0aGVkIHRoZSBmb3Jlc3Qgb2FrcyBvciBtb3VudGFpbiBwaW5lcywgDQorV2l0aCBzaW5nZWQgdG9wIHRoZWlyIHN0YXRlbHkgZ3Jvd3RoLCB0aG91Z2ggYmFyZSwgDQorU3RhbmRzIG9uIHRoZSBibGFzdGVkIGhlYXRoLiBIZSBub3cgcHJlcGFyZWQgDQorVG8gc3BlYWs7IHdoZXJlYXQgdGhlaXIgZG91YmxlZCByYW5rcyB0aGV5IGJlbmQgDQorRnJvbSB3aW5nIHRvIHdpbmcsIGFuZCBoYWxmIGVuY2xvc2UgaGltIHJvdW5kIA0KK1dpdGggYWxsIGhpcyBwZWVyczogYXR0ZW50aW9uIGhlbGQgdGhlbSBtdXRlLiANCitUaHJpY2UgaGUgYXNzYXllZCwgYW5kIHRocmljZSwgaW4gc3BpdGUgb2Ygc2Nvcm4sIA0KK1RlYXJzLCBzdWNoIGFzIEFuZ2VscyB3ZWVwLCBidXJzdCBmb3J0aDogYXQgbGFzdCANCitXb3JkcyBpbnRlcndvdmUgd2l0aCBzaWdocyBmb3VuZCBvdXQgdGhlaXIgd2F5Oi0tIA0KKyAgIk8gbXlyaWFkcyBvZiBpbW1vcnRhbCBTcGlyaXRzISBPIFBvd2VycyANCitNYXRjaGxlc3MsIGJ1dCB3aXRoIHRoJyBBbG1pZ2h0aCEtLWFuZCB0aGF0IHN0cmlmZSANCitXYXMgbm90IGluZ2xvcmlvdXMsIHRob3VnaCB0aCcgZXZlbnQgd2FzIGRpcmUsIA0KK0FzIHRoaXMgcGxhY2UgdGVzdGlmaWVzLCBhbmQgdGhpcyBkaXJlIGNoYW5nZSwgDQorSGF0ZWZ1bCB0byB1dHRlci4gQnV0IHdoYXQgcG93ZXIgb2YgbWluZCwgDQorRm9yc2VlaW5nIG9yIHByZXNhZ2luZywgZnJvbSB0aGUgZGVwdGggDQorT2Yga25vd2xlZGdlIHBhc3Qgb3IgcHJlc2VudCwgY291bGQgaGF2ZSBmZWFyZWQgDQorSG93IHN1Y2ggdW5pdGVkIGZvcmNlIG9mIGdvZHMsIGhvdyBzdWNoIA0KK0FzIHN0b29kIGxpa2UgdGhlc2UsIGNvdWxkIGV2ZXIga25vdyByZXB1bHNlPyANCitGb3Igd2hvIGNhbiB5ZXQgYmVsaWV2ZSwgdGhvdWdoIGFmdGVyIGxvc3MsIA0KK1RoYXQgYWxsIHRoZXNlIHB1aXNzYW50IGxlZ2lvbnMsIHdob3NlIGV4aWxlIA0KK0hhdGggZW1wdGllZCBIZWF2ZW4sIHNoYWxsIGZhaWwgdG8gcmUtYXNjZW5kLCANCitTZWxmLXJhaXNlZCwgYW5kIHJlcG9zc2VzcyB0aGVpciBuYXRpdmUgc2VhdD8gDQorRm9yIG1lLCBiZSB3aXRuZXNzIGFsbCB0aGUgaG9zdCBvZiBIZWF2ZW4sIA0KK0lmIGNvdW5zZWxzIGRpZmZlcmVudCwgb3IgZGFuZ2VyIHNodW5uZWQgDQorQnkgbWUsIGhhdmUgbG9zdCBvdXIgaG9wZXMuIEJ1dCBoZSB3aG8gcmVpZ25zIA0KK01vbmFyY2ggaW4gSGVhdmVuIHRpbGwgdGhlbiBhcyBvbmUgc2VjdXJlIA0KK1NhdCBvbiBoaXMgdGhyb25lLCB1cGhlbGQgYnkgb2xkIHJlcHV0ZSwgDQorQ29uc2VudCBvciBjdXN0b20sIGFuZCBoaXMgcmVnYWwgc3RhdGUgDQorUHV0IGZvcnRoIGF0IGZ1bGwsIGJ1dCBzdGlsbCBoaXMgc3RyZW5ndGggY29uY2VhbGVkLS0gDQorV2hpY2ggdGVtcHRlZCBvdXIgYXR0ZW1wdCwgYW5kIHdyb3VnaHQgb3VyIGZhbGwuIA0KK0hlbmNlZm9ydGggaGlzIG1pZ2h0IHdlIGtub3csIGFuZCBrbm93IG91ciBvd24sIA0KK1NvIGFzIG5vdCBlaXRoZXIgdG8gcHJvdm9rZSwgb3IgZHJlYWQgDQorTmV3IHdhciBwcm92b2tlZDogb3VyIGJldHRlciBwYXJ0IHJlbWFpbnMgDQorVG8gd29yayBpbiBjbG9zZSBkZXNpZ24sIGJ5IGZyYXVkIG9yIGd1aWxlLCANCitXaGF0IGZvcmNlIGVmZmVjdGVkIG5vdDsgdGhhdCBoZSBubyBsZXNzIA0KK0F0IGxlbmd0aCBmcm9tIHVzIG1heSBmaW5kLCB3aG8gb3ZlcmNvbWVzIA0KK0J5IGZvcmNlIGhhdGggb3ZlcmNvbWUgYnV0IGhhbGYgaGlzIGZvZS4gDQorU3BhY2UgbWF5IHByb2R1Y2UgbmV3IFdvcmxkczsgd2hlcmVvZiBzbyByaWZlIA0KK1RoZXJlIHdlbnQgYSBmYW1lIGluIEhlYXZlbiB0aGF0IGhlIGVyZSBsb25nIA0KK0ludGVuZGVkIHRvIGNyZWF0ZSwgYW5kIHRoZXJlaW4gcGxhbnQgDQorQSBnZW5lcmF0aW9uIHdob20gaGlzIGNob2ljZSByZWdhcmQgDQorU2hvdWxkIGZhdm91ciBlcXVhbCB0byB0aGUgU29ucyBvZiBIZWF2ZW4uIA0KK1RoaXRoZXIsIGlmIGJ1dCB0byBwcnksIHNoYWxsIGJlIHBlcmhhcHMgDQorT3VyIGZpcnN0IGVydXB0aW9uLS10aGl0aGVyLCBvciBlbHNld2hlcmU7IA0KK0ZvciB0aGlzIGluZmVybmFsIHBpdCBzaGFsbCBuZXZlciBob2xkIA0KK0NlbGVzdGlhbCBTcGlyaXRzIGluIGJvbmRhZ2UsIG5vciB0aCcgQWJ5c3MgDQorTG9uZyB1bmRlciBkYXJrbmVzcyBjb3Zlci4gQnV0IHRoZXNlIHRob3VnaHRzIA0KK0Z1bGwgY291bnNlbCBtdXN0IG1hdHVyZS4gUGVhY2UgaXMgZGVzcGFpcmVkOyANCitGb3Igd2hvIGNhbiB0aGluayBzdWJtaXNzaW9uPyBXYXIsIHRoZW4sIHdhciANCitPcGVuIG9yIHVuZGVyc3Rvb2QsIG11c3QgYmUgcmVzb2x2ZWQuIiANCisgIEhlIHNwYWtlOyBhbmQsIHRvIGNvbmZpcm0gaGlzIHdvcmRzLCBvdXRmbGV3IA0KK01pbGxpb25zIG9mIGZsYW1pbmcgc3dvcmRzLCBkcmF3biBmcm9tIHRoZSB0aGlnaHMgDQorT2YgbWlnaHR5IENoZXJ1YmltOyB0aGUgc3VkZGVuIGJsYXplIA0KK0ZhciByb3VuZCBpbGx1bWluZWQgSGVsbC4gSGlnaGx5IHRoZXkgcmFnZWQgDQorQWdhaW5zdCB0aGUgSGlnaGVzdCwgYW5kIGZpZXJjZSB3aXRoIGdyYXNwZWQgYXJtcyANCitDbGFzaGVkIG9uIHRoZWlyIHNvdW5kaW5nIHNoaWVsZHMgdGhlIGRpbiBvZiB3YXIsIA0KK0h1cmxpbmcgZGVmaWFuY2UgdG93YXJkIHRoZSB2YXVsdCBvZiBIZWF2ZW4uIA0KKyAgVGhlcmUgc3Rvb2QgYSBoaWxsIG5vdCBmYXIsIHdob3NlIGdyaXNseSB0b3AgDQorQmVsY2hlZCBmaXJlIGFuZCByb2xsaW5nIHNtb2tlOyB0aGUgcmVzdCBlbnRpcmUgDQorU2hvbmUgd2l0aCBhIGdsb3NzeSBzY3VyZi0tdW5kb3VidGVkIHNpZ24gDQorVGhhdCBpbiBoaXMgd29tYiB3YXMgaGlkIG1ldGFsbGljIG9yZSwgDQorVGhlIHdvcmsgb2Ygc3VscGh1ci4gVGhpdGhlciwgd2luZ2VkIHdpdGggc3BlZWQsIA0KK0EgbnVtZXJvdXMgYnJpZ2FkZSBoYXN0ZW5lZDogYXMgd2hlbiBiYW5kcyANCitPZiBwaW9uZWVycywgd2l0aCBzcGFkZSBhbmQgcGlja2F4ZSBhcm1lZCwgDQorRm9yZXJ1biB0aGUgcm95YWwgY2FtcCwgdG8gdHJlbmNoIGEgZmllbGQsIA0KK09yIGNhc3QgYSByYW1wYXJ0LiBNYW1tb24gbGVkIHRoZW0gb24tLSANCitNYW1tb24sIHRoZSBsZWFzdCBlcmVjdGVkIFNwaXJpdCB0aGF0IGZlbGwgDQorRnJvbSBIZWF2ZW47IGZvciBldmVuIGluIEhlYXZlbiBoaXMgbG9va3MgYW5kIHRob3VnaHRzIA0KK1dlcmUgYWx3YXlzIGRvd253YXJkIGJlbnQsIGFkbWlyaW5nIG1vcmUgDQorVGhlIHJpY2hlcyBvZiBoZWF2ZW4ncyBwYXZlbWVudCwgdHJvZGRlbiBnb2xkLCANCitUaGFuIGF1Z2h0IGRpdmluZSBvciBob2x5IGVsc2UgZW5qb3llZCANCitJbiB2aXNpb24gYmVhdGlmaWMuIEJ5IGhpbSBmaXJzdCANCitNZW4gYWxzbywgYW5kIGJ5IGhpcyBzdWdnZXN0aW9uIHRhdWdodCwgDQorUmFuc2Fja2VkIHRoZSBjZW50cmUsIGFuZCB3aXRoIGltcGlvdXMgaGFuZHMgDQorUmlmbGVkIHRoZSBib3dlbHMgb2YgdGhlaXIgbW90aGVyIEVhcnRoIA0KK0ZvciB0cmVhc3VyZXMgYmV0dGVyIGhpZC4gU29vbiBoYWQgaGlzIGNyZXcgDQorT3BlbmVkIGludG8gdGhlIGhpbGwgYSBzcGFjaW91cyB3b3VuZCwgDQorQW5kIGRpZ2dlZCBvdXQgcmlicyBvZiBnb2xkLiBMZXQgbm9uZSBhZG1pcmUgDQorVGhhdCByaWNoZXMgZ3JvdyBpbiBIZWxsOyB0aGF0IHNvaWwgbWF5IGJlc3QgDQorRGVzZXJ2ZSB0aGUgcHJlY2lvdXMgYmFuZS4gQW5kIGhlcmUgbGV0IHRob3NlIA0KK1dobyBib2FzdCBpbiBtb3J0YWwgdGhpbmdzLCBhbmQgd29uZGVyaW5nIHRlbGwgDQorT2YgQmFiZWwsIGFuZCB0aGUgd29ya3Mgb2YgTWVtcGhpYW4ga2luZ3MsIA0KK0xlYXJuIGhvdyB0aGVpciBncmVhdGVzdCBtb251bWVudHMgb2YgZmFtZSANCitBbmQgc3RyZW5ndGgsIGFuZCBhcnQsIGFyZSBlYXNpbHkgb3V0ZG9uZSANCitCeSBTcGlyaXRzIHJlcHJvYmF0ZSwgYW5kIGluIGFuIGhvdXIgDQorV2hhdCBpbiBhbiBhZ2UgdGhleSwgd2l0aCBpbmNlc3NhbnQgdG9pbCANCitBbmQgaGFuZHMgaW5udW1lcmFibGUsIHNjYXJjZSBwZXJmb3JtLiANCitOaWdoIG9uIHRoZSBwbGFpbiwgaW4gbWFueSBjZWxscyBwcmVwYXJlZCwgDQorVGhhdCB1bmRlcm5lYXRoIGhhZCB2ZWlucyBvZiBsaXF1aWQgZmlyZSANCitTbHVpY2VkIGZyb20gdGhlIGxha2UsIGEgc2Vjb25kIG11bHRpdHVkZSANCitXaXRoIHdvbmRyb3VzIGFydCBmb3VuZGVkIHRoZSBtYXNzeSBvcmUsIA0KK1NldmVyaW5nIGVhY2gga2luZCwgYW5kIHNjdW1tZWQgdGhlIGJ1bGxpb24tZHJvc3MuIA0KK0EgdGhpcmQgYXMgc29vbiBoYWQgZm9ybWVkIHdpdGhpbiB0aGUgZ3JvdW5kIA0KK0EgdmFyaW91cyBtb3VsZCwgYW5kIGZyb20gdGhlIGJvaWxpbmcgY2VsbHMgDQorQnkgc3RyYW5nZSBjb252ZXlhbmNlIGZpbGxlZCBlYWNoIGhvbGxvdyBub29rOyANCitBcyBpbiBhbiBvcmdhbiwgZnJvbSBvbmUgYmxhc3Qgb2Ygd2luZCwgDQorVG8gbWFueSBhIHJvdyBvZiBwaXBlcyB0aGUgc291bmQtYm9hcmQgYnJlYXRoZXMuIA0KK0Fub24gb3V0IG9mIHRoZSBlYXJ0aCBhIGZhYnJpYyBodWdlIA0KK1Jvc2UgbGlrZSBhbiBleGhhbGF0aW9uLCB3aXRoIHRoZSBzb3VuZCANCitPZiBkdWxjZXQgc3ltcGhvbmllcyBhbmQgdm9pY2VzIHN3ZWV0LS0gDQorQnVpbHQgbGlrZSBhIHRlbXBsZSwgd2hlcmUgcGlsYXN0ZXJzIHJvdW5kIA0KK1dlcmUgc2V0LCBhbmQgRG9yaWMgcGlsbGFycyBvdmVybGFpZCANCitXaXRoIGdvbGRlbiBhcmNoaXRyYXZlOyBub3IgZGlkIHRoZXJlIHdhbnQgDQorQ29ybmljZSBvciBmcmllemUsIHdpdGggYm9zc3kgc2N1bHB0dXJlcyBncmF2ZW47IA0KK1RoZSByb29mIHdhcyBmcmV0dGVkIGdvbGQuIE5vdCBCYWJ5bG9uIA0KK05vciBncmVhdCBBbGNhaXJvIHN1Y2ggbWFnbmlmaWNlbmNlIA0KK0VxdWFsbGVkIGluIGFsbCB0aGVpciBnbG9yaWVzLCB0byBlbnNocmluZSANCitCZWx1cyBvciBTZXJhcGlzIHRoZWlyIGdvZHMsIG9yIHNlYXQgDQorVGhlaXIga2luZ3MsIHdoZW4gRWd5cHQgd2l0aCBBc3N5cmlhIHN0cm92ZSANCitJbiB3ZWFsdGggYW5kIGx1eHVyeS4gVGgnIGFzY2VuZGluZyBwaWxlIA0KK1N0b29kIGZpeGVkIGhlciBzdGF0ZWx5IGhlaWdodCwgYW5kIHN0cmFpZ2h0IHRoZSBkb29ycywgDQorT3BlbmluZyB0aGVpciBicmF6ZW4gZm9sZHMsIGRpc2NvdmVyLCB3aWRlIA0KK1dpdGhpbiwgaGVyIGFtcGxlIHNwYWNlcyBvJ2VyIHRoZSBzbW9vdGggDQorQW5kIGxldmVsIHBhdmVtZW50OiBmcm9tIHRoZSBhcmNoZWQgcm9vZiwgDQorUGVuZGVudCBieSBzdWJ0bGUgbWFnaWMsIG1hbnkgYSByb3cgDQorT2Ygc3RhcnJ5IGxhbXBzIGFuZCBibGF6aW5nIGNyZXNzZXRzLCBmZWQgDQorV2l0aCBuYXB0aGEgYW5kIGFzcGhhbHR1cywgeWllbGRlZCBsaWdodCANCitBcyBmcm9tIGEgc2t5LiBUaGUgaGFzdHkgbXVsdGl0dWRlIA0KK0FkbWlyaW5nIGVudGVyZWQ7IGFuZCB0aGUgd29yayBzb21lIHByYWlzZSwgDQorQW5kIHNvbWUgdGhlIGFyY2hpdGVjdC4gSGlzIGhhbmQgd2FzIGtub3duIA0KK0luIEhlYXZlbiBieSBtYW55IGEgdG93ZXJlZCBzdHJ1Y3R1cmUgaGlnaCwgDQorV2hlcmUgc2NlcHRyZWQgQW5nZWxzIGhlbGQgdGhlaXIgcmVzaWRlbmNlLCANCitBbmQgc2F0IGFzIFByaW5jZXMsIHdob20gdGhlIHN1cHJlbWUgS2luZyANCitFeGFsdGVkIHRvIHN1Y2ggcG93ZXIsIGFuZCBnYXZlIHRvIHJ1bGUsIA0KK0VhY2ggaW4gaGlzIEhpZXJhcmNoeSwgdGhlIE9yZGVycyBicmlnaHQuIA0KK05vciB3YXMgaGlzIG5hbWUgdW5oZWFyZCBvciB1bmFkb3JlZCANCitJbiBhbmNpZW50IEdyZWVjZTsgYW5kIGluIEF1c29uaWFuIGxhbmQgDQorTWVuIGNhbGxlZCBoaW0gTXVsY2liZXI7IGFuZCBob3cgaGUgZmVsbCANCitGcm9tIEhlYXZlbiB0aGV5IGZhYmxlZCwgdGhyb3duIGJ5IGFuZ3J5IEpvdmUgDQorU2hlZXIgbydlciB0aGUgY3J5c3RhbCBiYXR0bGVtZW50czogZnJvbSBtb3JuIA0KK1RvIG5vb24gaGUgZmVsbCwgZnJvbSBub29uIHRvIGRld3kgZXZlLCANCitBIHN1bW1lcidzIGRheSwgYW5kIHdpdGggdGhlIHNldHRpbmcgc3VuIA0KK0Ryb3B0IGZyb20gdGhlIHplbml0aCwgbGlrZSBhIGZhbGxpbmcgc3RhciwgDQorT24gTGVtbm9zLCB0aCcgQWVnYWVhbiBpc2xlLiBUaHVzIHRoZXkgcmVsYXRlLCANCitFcnJpbmc7IGZvciBoZSB3aXRoIHRoaXMgcmViZWxsaW91cyByb3V0IA0KK0ZlbGwgbG9uZyBiZWZvcmU7IG5vciBhdWdodCBhdmlsZWQgaGltIG5vdyANCitUbyBoYXZlIGJ1aWx0IGluIEhlYXZlbiBoaWdoIHRvd2Vyczsgbm9yIGRpZCBoZSBzY2FwZSANCitCeSBhbGwgaGlzIGVuZ2luZXMsIGJ1dCB3YXMgaGVhZGxvbmcgc2VudCwgDQorV2l0aCBoaXMgaW5kdXN0cmlvdXMgY3JldywgdG8gYnVpbGQgaW4gSGVsbC4gDQorICBNZWFud2hpbGUgdGhlIHdpbmdlZCBIZXJhbGRzLCBieSBjb21tYW5kIA0KK09mIHNvdmVyZWlnbiBwb3dlciwgd2l0aCBhd2Z1bCBjZXJlbW9ueSANCitBbmQgdHJ1bXBldCdzIHNvdW5kLCB0aHJvdWdob3V0IHRoZSBob3N0IHByb2NsYWltIA0KK0Egc29sZW1uIGNvdW5jaWwgZm9ydGh3aXRoIHRvIGJlIGhlbGQgDQorQXQgUGFuZGVtb25pdW0sIHRoZSBoaWdoIGNhcGl0YWwgDQorT2YgU2F0YW4gYW5kIGhpcyBwZWVycy4gVGhlaXIgc3VtbW9ucyBjYWxsZWQgDQorRnJvbSBldmVyeSBiYW5kIGFuZCBzcXVhcmVkIHJlZ2ltZW50IA0KK0J5IHBsYWNlIG9yIGNob2ljZSB0aGUgd29ydGhpZXN0OiB0aGV5IGFub24gDQorV2l0aCBodW5kcmVkcyBhbmQgd2l0aCB0aG91c2FuZHMgdHJvb3BpbmcgY2FtZSANCitBdHRlbmRlZC4gQWxsIGFjY2VzcyB3YXMgdGhyb25nZWQ7IHRoZSBnYXRlcyANCitBbmQgcG9yY2hlcyB3aWRlLCBidXQgY2hpZWYgdGhlIHNwYWNpb3VzIGhhbGwgDQorKFRob3VnaCBsaWtlIGEgY292ZXJlZCBmaWVsZCwgd2hlcmUgY2hhbXBpb25zIGJvbGQgDQorV29udCByaWRlIGluIGFybWVkLCBhbmQgYXQgdGhlIFNvbGRhbidzIGNoYWlyIA0KK0RlZmllZCB0aGUgYmVzdCBvZiBQYXluaW0gY2hpdmFscnkgDQorVG8gbW9ydGFsIGNvbWJhdCwgb3IgY2FyZWVyIHdpdGggbGFuY2UpLCANCitUaGljayBzd2FybWVkLCBib3RoIG9uIHRoZSBncm91bmQgYW5kIGluIHRoZSBhaXIsIA0KK0JydXNoZWQgd2l0aCB0aGUgaGlzcyBvZiBydXN0bGluZyB3aW5ncy4gQXMgYmVlcyANCitJbiBzcHJpbmctdGltZSwgd2hlbiB0aGUgU3VuIHdpdGggVGF1cnVzIHJpZGVzLiANCitQb3VyIGZvcnRoIHRoZWlyIHBvcHVsb3VzIHlvdXRoIGFib3V0IHRoZSBoaXZlIA0KK0luIGNsdXN0ZXJzOyB0aGV5IGFtb25nIGZyZXNoIGRld3MgYW5kIGZsb3dlcnMgDQorRmx5IHRvIGFuZCBmcm8sIG9yIG9uIHRoZSBzbW9vdGhlZCBwbGFuaywgDQorVGhlIHN1YnVyYiBvZiB0aGVpciBzdHJhdy1idWlsdCBjaXRhZGVsLCANCitOZXcgcnViYmVkIHdpdGggYmFsbSwgZXhwYXRpYXRlLCBhbmQgY29uZmVyIA0KK1RoZWlyIHN0YXRlLWFmZmFpcnM6IHNvIHRoaWNrIHRoZSBhaXJ5IGNyb3dkIA0KK1N3YXJtZWQgYW5kIHdlcmUgc3RyYWl0ZW5lZDsgdGlsbCwgdGhlIHNpZ25hbCBnaXZlbiwgDQorQmVob2xkIGEgd29uZGVyISBUaGV5IGJ1dCBub3cgd2hvIHNlZW1lZCANCitJbiBiaWduZXNzIHRvIHN1cnBhc3MgRWFydGgncyBnaWFudCBzb25zLCANCitOb3cgbGVzcyB0aGFuIHNtYWxsZXN0IGR3YXJmcywgaW4gbmFycm93IHJvb20gDQorVGhyb25nIG51bWJlcmxlc3MtLWxpa2UgdGhhdCBweWdtZWFuIHJhY2UgDQorQmV5b25kIHRoZSBJbmRpYW4gbW91bnQ7IG9yIGZhZXJ5IGVsdmVzLCANCitXaG9zZSBtaWRuaWdodCByZXZlbHMsIGJ5IGEgZm9yZXN0LXNpZGUgDQorT3IgZm91bnRhaW4sIHNvbWUgYmVsYXRlZCBwZWFzYW50IHNlZXMsIA0KK09yIGRyZWFtcyBoZSBzZWVzLCB3aGlsZSBvdmVyaGVhZCB0aGUgTW9vbiANCitTaXRzIGFyYml0cmVzcywgYW5kIG5lYXJlciB0byB0aGUgRWFydGggDQorV2hlZWxzIGhlciBwYWxlIGNvdXJzZTogdGhleSwgb24gdGhlaXIgbWlydGggYW5kIGRhbmNlIA0KK0ludGVudCwgd2l0aCBqb2N1bmQgbXVzaWMgY2hhcm0gaGlzIGVhcjsgDQorQXQgb25jZSB3aXRoIGpveSBhbmQgZmVhciBoaXMgaGVhcnQgcmVib3VuZHMuIA0KK1RodXMgaW5jb3Jwb3JlYWwgU3Bpcml0cyB0byBzbWFsbGVzdCBmb3JtcyANCitSZWR1Y2VkIHRoZWlyIHNoYXBlcyBpbW1lbnNlLCBhbmQgd2VyZSBhdCBsYXJnZSwgDQorVGhvdWdoIHdpdGhvdXQgbnVtYmVyIHN0aWxsLCBhbWlkc3QgdGhlIGhhbGwgDQorT2YgdGhhdCBpbmZlcm5hbCBjb3VydC4gQnV0IGZhciB3aXRoaW4sIA0KK0FuZCBpbiB0aGVpciBvd24gZGltZW5zaW9ucyBsaWtlIHRoZW1zZWx2ZXMsIA0KK1RoZSBncmVhdCBTZXJhcGhpYyBMb3JkcyBhbmQgQ2hlcnViaW0gDQorSW4gY2xvc2UgcmVjZXNzIGFuZCBzZWNyZXQgY29uY2xhdmUgc2F0LCANCitBIHRob3VzYW5kIGRlbWktZ29kcyBvbiBnb2xkZW4gc2VhdHMsIA0KK0ZyZXF1ZW50IGFuZCBmdWxsLiBBZnRlciBzaG9ydCBzaWxlbmNlIHRoZW4sIA0KK0FuZCBzdW1tb25zIHJlYWQsIHRoZSBncmVhdCBjb25zdWx0IGJlZ2FuLiANCisgDQorIA0KKyANCitCb29rIElJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgIA0KK0hpZ2ggb24gYSB0aHJvbmUgb2Ygcm95YWwgc3RhdGUsIHdoaWNoIGZhciANCitPdXRzaG9uZSB0aGUgd2VhbHRoIG9yIE9ybXVzIGFuZCBvZiBJbmQsIA0KK09yIHdoZXJlIHRoZSBnb3JnZW91cyBFYXN0IHdpdGggcmljaGVzdCBoYW5kIA0KK1Nob3dlcnMgb24gaGVyIGtpbmdzIGJhcmJhcmljIHBlYXJsIGFuZCBnb2xkLCANCitTYXRhbiBleGFsdGVkIHNhdCwgYnkgbWVyaXQgcmFpc2VkIA0KK1RvIHRoYXQgYmFkIGVtaW5lbmNlOyBhbmQsIGZyb20gZGVzcGFpciANCitUaHVzIGhpZ2ggdXBsaWZ0ZWQgYmV5b25kIGhvcGUsIGFzcGlyZXMgDQorQmV5b25kIHRodXMgaGlnaCwgaW5zYXRpYXRlIHRvIHB1cnN1ZSANCitWYWluIHdhciB3aXRoIEhlYXZlbjsgYW5kLCBieSBzdWNjZXNzIHVudGF1Z2h0LCANCitIaXMgcHJvdWQgaW1hZ2luYXRpb25zIHRodXMgZGlzcGxheWVkOi0tIA0KKyAgIlBvd2VycyBhbmQgRG9taW5pb25zLCBEZWl0aWVzIG9mIEhlYXZlbiEtLSANCitGb3IsIHNpbmNlIG5vIGRlZXAgd2l0aGluIGhlciBndWxmIGNhbiBob2xkIA0KK0ltbW9ydGFsIHZpZ291ciwgdGhvdWdoIG9wcHJlc3NlZCBhbmQgZmFsbGVuLCANCitJIGdpdmUgbm90IEhlYXZlbiBmb3IgbG9zdDogZnJvbSB0aGlzIGRlc2NlbnQgDQorQ2VsZXN0aWFsIFZpcnR1ZXMgcmlzaW5nIHdpbGwgYXBwZWFyIA0KK01vcmUgZ2xvcmlvdXMgYW5kIG1vcmUgZHJlYWQgdGhhbiBmcm9tIG5vIGZhbGwsIA0KK0FuZCB0cnVzdCB0aGVtc2VsdmVzIHRvIGZlYXIgbm8gc2Vjb25kIGZhdGUhLS0gDQorTWUgdGhvdWdoIGp1c3QgcmlnaHQsIGFuZCB0aGUgZml4ZWQgbGF3cyBvZiBIZWF2ZW4sIA0KK0RpZCBmaXJzdCBjcmVhdGUgeW91ciBsZWFkZXItLW5leHQsIGZyZWUgY2hvaWNlIA0KK1dpdGggd2hhdCBiZXNpZGVzIGluIGNvdW5jaWwgb3IgaW4gZmlnaHQgDQorSGF0aCBiZWVuIGFjaGlldmVkIG9mIG1lcml0LS15ZXQgdGhpcyBsb3NzLCANCitUaHVzIGZhciBhdCBsZWFzdCByZWNvdmVyZWQsIGhhdGggbXVjaCBtb3JlIA0KK0VzdGFibGlzaGVkIGluIGEgc2FmZSwgdW5lbnZpZWQgdGhyb25lLCANCitZaWVsZGVkIHdpdGggZnVsbCBjb25zZW50LiBUaGUgaGFwcGllciBzdGF0ZSANCitJbiBIZWF2ZW4sIHdoaWNoIGZvbGxvd3MgZGlnbml0eSwgbWlnaHQgZHJhdyANCitFbnZ5IGZyb20gZWFjaCBpbmZlcmlvcjsgYnV0IHdobyBoZXJlIA0KK1dpbGwgZW52eSB3aG9tIHRoZSBoaWdoZXN0IHBsYWNlIGV4cG9zZXMgDQorRm9yZW1vc3QgdG8gc3RhbmQgYWdhaW5zdCB0aGUgVGh1bmRlcmVyJ3MgYWltIA0KK1lvdXIgYnVsd2FyaywgYW5kIGNvbmRlbW5zIHRvIGdyZWF0ZXN0IHNoYXJlIA0KK09mIGVuZGxlc3MgcGFpbj8gV2hlcmUgdGhlcmUgaXMsIHRoZW4sIG5vIGdvb2QgDQorRm9yIHdoaWNoIHRvIHN0cml2ZSwgbm8gc3RyaWZlIGNhbiBncm93IHVwIHRoZXJlIA0KK0Zyb20gZmFjdGlvbjogZm9yIG5vbmUgc3VyZSB3aWxsIGNsYWltIGluIEhlbGwgDQorUHJlY2VkZW5jZTsgbm9uZSB3aG9zZSBwb3J0aW9uIGlzIHNvIHNtYWxsIA0KK09mIHByZXNlbnQgcGFpbiB0aGF0IHdpdGggYW1iaXRpb3VzIG1pbmQgDQorV2lsbCBjb3ZldCBtb3JlISBXaXRoIHRoaXMgYWR2YW50YWdlLCB0aGVuLCANCitUbyB1bmlvbiwgYW5kIGZpcm0gZmFpdGgsIGFuZCBmaXJtIGFjY29yZCwgDQorTW9yZSB0aGFuIGNhbiBiZSBpbiBIZWF2ZW4sIHdlIG5vdyByZXR1cm4gDQorVG8gY2xhaW0gb3VyIGp1c3QgaW5oZXJpdGFuY2Ugb2Ygb2xkLCANCitTdXJlciB0byBwcm9zcGVyIHRoYW4gcHJvc3Blcml0eSANCitDb3VsZCBoYXZlIGFzc3VyZWQgdXM7IGFuZCBieSB3aGF0IGJlc3Qgd2F5LCANCitXaGV0aGVyIG9mIG9wZW4gd2FyIG9yIGNvdmVydCBndWlsZSwgDQorV2Ugbm93IGRlYmF0ZS4gV2hvIGNhbiBhZHZpc2UgbWF5IHNwZWFrLiIgDQorICBIZSBjZWFzZWQ7IGFuZCBuZXh0IGhpbSBNb2xvY2gsIHNjZXB0cmVkIGtpbmcsIA0KK1N0b29kIHVwLS10aGUgc3Ryb25nZXN0IGFuZCB0aGUgZmllcmNlc3QgU3Bpcml0IA0KK1RoYXQgZm91Z2h0IGluIEhlYXZlbiwgbm93IGZpZXJjZXIgYnkgZGVzcGFpci4gDQorSGlzIHRydXN0IHdhcyB3aXRoIHRoJyBFdGVybmFsIHRvIGJlIGRlZW1lZCANCitFcXVhbCBpbiBzdHJlbmd0aCwgYW5kIHJhdGhlciB0aGFuIGJlIGxlc3MgDQorQ2FyZWQgbm90IHRvIGJlIGF0IGFsbDsgd2l0aCB0aGF0IGNhcmUgbG9zdCANCitXZW50IGFsbCBoaXMgZmVhcjogb2YgR29kLCBvciBIZWxsLCBvciB3b3JzZSwgDQorSGUgcmVja2VkIG5vdCwgYW5kIHRoZXNlIHdvcmRzIHRoZXJlYWZ0ZXIgc3Bha2U6LS0gDQorICAiTXkgc2VudGVuY2UgaXMgZm9yIG9wZW4gd2FyLiBPZiB3aWxlcywgDQorTW9yZSB1bmV4cGVydCwgSSBib2FzdCBub3Q6IHRoZW0gbGV0IHRob3NlIA0KK0NvbnRyaXZlIHdobyBuZWVkLCBvciB3aGVuIHRoZXkgbmVlZDsgbm90IG5vdy4gDQorRm9yLCB3aGlsZSB0aGV5IHNpdCBjb250cml2aW5nLCBzaGFsbCB0aGUgcmVzdC0tIA0KK01pbGxpb25zIHRoYXQgc3RhbmQgaW4gYXJtcywgYW5kIGxvbmdpbmcgd2FpdCANCitUaGUgc2lnbmFsIHRvIGFzY2VuZC0tc2l0IGxpbmdlcmluZyBoZXJlLCANCitIZWF2ZW4ncyBmdWdpdGl2ZXMsIGFuZCBmb3IgdGhlaXIgZHdlbGxpbmctcGxhY2UgDQorQWNjZXB0IHRoaXMgZGFyayBvcHByb2JyaW91cyBkZW4gb2Ygc2hhbWUsIA0KK1RoZSBwcmlzb24gb2YgaGlzIHJ5cmFubnkgd2hvIHJlaWducyANCitCeSBvdXIgZGVsYXk/IE5vISBsZXQgdXMgcmF0aGVyIGNob29zZSwgDQorQXJtZWQgd2l0aCBIZWxsLWZsYW1lcyBhbmQgZnVyeSwgYWxsIGF0IG9uY2UgDQorTydlciBIZWF2ZW4ncyBoaWdoIHRvd2VycyB0byBmb3JjZSByZXNpc3RsZXNzIHdheSwgDQorVHVybmluZyBvdXIgdG9ydHVyZXMgaW50byBob3JyaWQgYXJtcyANCitBZ2FpbnN0IHRoZSBUb3J0dXJlcjsgd2hlbiwgdG8gbWVldCB0aGUgbm9pc2UgDQorT2YgaGlzIGFsbWlnaHR5IGVuZ2luZSwgaGUgc2hhbGwgaGVhciANCitJbmZlcm5hbCB0aHVuZGVyLCBhbmQsIGZvciBsaWdodG5pbmcsIHNlZSANCitCbGFjayBmaXJlIGFuZCBob3Jyb3Igc2hvdCB3aXRoIGVxdWFsIHJhZ2UgDQorQW1vbmcgaGlzIEFuZ2VscywgYW5kIGhpcyB0aHJvbmUgaXRzZWxmIA0KK01peGVkIHdpdGggVGFydGFyZWFuIHN1bHBodXIgYW5kIHN0cmFuZ2UgZmlyZSwgDQorSGlzIG93biBpbnZlbnRlZCB0b3JtZW50cy4gQnV0IHBlcmhhcHMgDQorVGhlIHdheSBzZWVtcyBkaWZmaWN1bHQsIGFuZCBzdGVlcCB0byBzY2FsZSANCitXaXRoIHVwcmlnaHQgd2luZyBhZ2FpbnN0IGEgaGlnaGVyIGZvZSEgDQorTGV0IHN1Y2ggYmV0aGluayB0aGVtLCBpZiB0aGUgc2xlZXB5IGRyZW5jaCANCitPZiB0aGF0IGZvcmdldGZ1bCBsYWtlIGJlbnVtYiBub3Qgc3RpbGwsIA0KK1RoYXQgaW4gb3VyIHBvcnBlciBtb3Rpb24gd2UgYXNjZW5kIA0KK1VwIHRvIG91ciBuYXRpdmUgc2VhdDsgZGVzY2VudCBhbmQgZmFsbCANCitUbyB1cyBpcyBhZHZlcnNlLiBXaG8gYnV0IGZlbHQgb2YgbGF0ZSwgDQorV2hlbiB0aGUgZmllcmNlIGZvZSBodW5nIG9uIG91ciBicm9rZW4gcmVhciANCitJbnN1bHRpbmcsIGFuZCBwdXJzdWVkIHVzIHRocm91Z2ggdGhlIERlZXAsIA0KK1dpdGggd2hhdCBjb21wdWxzaW9uIGFuZCBsYWJvcmlvdXMgZmxpZ2h0IA0KK1dlIHN1bmsgdGh1cyBsb3c/IFRoJyBhc2NlbnQgaXMgZWFzeSwgdGhlbjsgDQorVGgnIGV2ZW50IGlzIGZlYXJlZCEgU2hvdWxkIHdlIGFnYWluIHByb3Zva2UgDQorT3VyIHN0cm9uZ2VyLCBzb21lIHdvcnNlIHdheSBoaXMgd3JhdGggbWF5IGZpbmQgDQorVG8gb3VyIGRlc3RydWN0aW9uLCBpZiB0aGVyZSBiZSBpbiBIZWxsIA0KK0ZlYXIgdG8gYmUgd29yc2UgZGVzdHJveWVkISBXaGF0IGNhbiBiZSB3b3JzZSANCitUaGFuIHRvIGR3ZWxsIGhlcmUsIGRyaXZlbiBvdXQgZnJvbSBibGlzcywgY29uZGVtbmVkIA0KK0luIHRoaXMgYWJob3JyZWQgZGVlcCB0byB1dHRlciB3b2UhIA0KK1doZXJlIHBhaW4gb2YgdW5leHRpbmd1aXNoYWJsZSBmaXJlIA0KK011c3QgZXhlcmNpc2UgdXMgd2l0aG91dCBob3BlIG9mIGVuZCANCitUaGUgdmFzc2FscyBvZiBoaXMgYW5nZXIsIHdoZW4gdGhlIHNjb3VyZ2UgDQorSW5leG9yYWJseSwgYW5kIHRoZSB0b3J0dXJpbmcgaG91ciwgDQorQ2FsbHMgdXMgdG8gcGVuYW5jZT8gTW9yZSBkZXN0cm95ZWQgdGhhbiB0aHVzLCANCitXZSBzaG91bGQgYmUgcXVpdGUgYWJvbGlzaGVkLCBhbmQgZXhwaXJlLiANCitXaGF0IGZlYXIgd2UgdGhlbj8gd2hhdCBkb3VidCB3ZSB0byBpbmNlbnNlIA0KK0hpcyB1dG1vc3QgaXJlPyB3aGljaCwgdG8gdGhlIGhlaWdodCBlbnJhZ2VkLCANCitXaWxsIGVpdGhlciBxdWl0ZSBjb25zdW1lIHVzLCBhbmQgcmVkdWNlIA0KK1RvIG5vdGhpbmcgdGhpcyBlc3NlbnRpYWwtLWhhcHBpZXIgZmFyIA0KK1RoYW4gbWlzZXJhYmxlIHRvIGhhdmUgZXRlcm5hbCBiZWluZyEtLSANCitPciwgaWYgb3VyIHN1YnN0YW5jZSBiZSBpbmRlZWQgZGl2aW5lLCANCitBbmQgY2Fubm90IGNlYXNlIHRvIGJlLCB3ZSBhcmUgYXQgd29yc3QgDQorT24gdGhpcyBzaWRlIG5vdGhpbmc7IGFuZCBieSBwcm9vZiB3ZSBmZWVsIA0KK091ciBwb3dlciBzdWZmaWNpZW50IHRvIGRpc3R1cmIgaGlzIEhlYXZlbiwgDQorQW5kIHdpdGggcGVycGV0dWFsIGlucm9hZHMgdG8gYWxhcm0sIA0KK1Rob3VnaCBpbmFjY2Vzc2libGUsIGhpcyBmYXRhbCB0aHJvbmU6IA0KK1doaWNoLCBpZiBub3QgdmljdG9yeSwgaXMgeWV0IHJldmVuZ2UuIiANCisgIEhlIGVuZGVkIGZyb3duaW5nLCBhbmQgaGlzIGxvb2sgZGVub3VuY2VkIA0KK0Rlc3BlcmF0ZSByZXZlbmdlLCBhbmQgYmF0dGxlIGRhbmdlcm91cyANCitUbyBsZXNzIHRoYW4gZ29kcy4gT24gdGgnIG90aGVyIHNpZGUgdXAgcm9zZSANCitCZWxpYWwsIGluIGFjdCBtb3JlIGdyYWNlZnVsIGFuZCBodW1hbmUuIA0KK0EgZmFpcmVyIHBlcnNvbiBsb3N0IG5vdCBIZWF2ZW47IGhlIHNlZW1lZCANCitGb3IgZGlnbml0eSBjb21wb3NlZCwgYW5kIGhpZ2ggZXhwbG9pdC4gDQorQnV0IGFsbCB3YXMgZmFsc2UgYW5kIGhvbGxvdzsgdGhvdWdoIGhpcyB0b25ndWUgDQorRHJvcHBlZCBtYW5uYSwgYW5kIGNvdWxkIG1ha2UgdGhlIHdvcnNlIGFwcGVhciANCitUaGUgYmV0dGVyIHJlYXNvbiwgdG8gcGVycGxleCBhbmQgZGFzaCANCitNYXR1cmVzdCBjb3Vuc2VsczogZm9yIGhpcyB0aG91Z2h0cyB3ZXJlIGxvdy0tIA0KKyBUbyB2aWNlIGluZHVzdHJpb3VzLCBidXQgdG8gbm9ibGVyIGRlZWRzIA0KK1RpbW9yb3VzIGFuZCBzbG90aGZ1bC4gWWV0IGhlIHBsZWFzZWQgdGhlIGVhciwgDQorQW5kIHdpdGggcGVyc3Vhc2l2ZSBhY2NlbnQgdGh1cyBiZWdhbjotLSANCisgICJJIHNob3VsZCBiZSBtdWNoIGZvciBvcGVuIHdhciwgTyBQZWVycywgDQorQXMgbm90IGJlaGluZCBpbiBoYXRlLCBpZiB3aGF0IHdhcyB1cmdlZCANCitNYWluIHJlYXNvbiB0byBwZXJzdWFkZSBpbW1lZGlhdGUgd2FyIA0KK0RpZCBub3QgZGlzc3VhZGUgbWUgbW9zdCwgYW5kIHNlZW0gdG8gY2FzdCANCitPbWlub3VzIGNvbmplY3R1cmUgb24gdGhlIHdob2xlIHN1Y2Nlc3M7IA0KK1doZW4gaGUgd2hvIG1vc3QgZXhjZWxzIGluIGZhY3Qgb2YgYXJtcywgDQorSW4gd2hhdCBoZSBjb3Vuc2VscyBhbmQgaW4gd2hhdCBleGNlbHMgDQorTWlzdHJ1c3RmdWwsIGdyb3VuZHMgaGlzIGNvdXJhZ2Ugb24gZGVzcGFpciANCitBbmQgdXR0ZXIgZGlzc29sdXRpb24sIGFzIHRoZSBzY29wZSANCitPZiBhbGwgaGlzIGFpbSwgYWZ0ZXIgc29tZSBkaXJlIHJldmVuZ2UuIA0KK0ZpcnN0LCB3aGF0IHJldmVuZ2U/IFRoZSB0b3dlcnMgb2YgSGVhdmVuIGFyZSBmaWxsZWQgDQorV2l0aCBhcm1lZCB3YXRjaCwgdGhhdCByZW5kZXIgYWxsIGFjY2VzcyANCitJbXByZWduYWJsZTogb2Z0IG9uIHRoZSBib2RlcmluZyBEZWVwIA0KK0VuY2FtcCB0aGVpciBsZWdpb25zLCBvciB3aXRoIG9ic2N1cmUgd2luZyANCitTY291dCBmYXIgYW5kIHdpZGUgaW50byB0aGUgcmVhbG0gb2YgTmlnaHQsIA0KK1Njb3JuaW5nIHN1cnByaXNlLiBPciwgY291bGQgd2UgYnJlYWsgb3VyIHdheSANCitCeSBmb3JjZSwgYW5kIGF0IG91ciBoZWVscyBhbGwgSGVsbCBzaG91bGQgcmlzZSANCitXaXRoIGJsYWNrZXN0IGluc3VycmVjdGlvbiB0byBjb25mb3VuZCANCitIZWF2ZW4ncyBwdXJlc3QgbGlnaHQsIHlldCBvdXIgZ3JlYXQgRW5lbXksIA0KK0FsbCBpbmNvcnJ1cHRpYmxlLCB3b3VsZCBvbiBoaXMgdGhyb25lIA0KK1NpdCB1bnBvbGx1dGVkLCBhbmQgdGgnIGV0aGVyZWFsIG1vdWxkLCANCitJbmNhcGFibGUgb2Ygc3RhaW4sIHdvdWxkIHNvb24gZXhwZWwgDQorSGVyIG1pc2NoaWVmLCBhbmQgcHVyZ2Ugb2ZmIHRoZSBiYXNlciBmaXJlLCANCitWaWN0b3Jpb3VzLiBUaHVzIHJlcHVsc2VkLCBvdXIgZmluYWwgaG9wZSANCitJcyBmbGF0IGRlc3BhaXI6IHdlIG11c3QgZXhhc3BlcmF0ZSANCitUaCcgQWxtaWdodHkgVmljdG9yIHRvIHNwZW5kIGFsbCBoaXMgcmFnZTsgDQorQW5kIHRoYXQgbXVzdCBlbmQgdXM7IHRoYXQgbXVzdCBiZSBvdXIgY3VyZS0tIA0KK1RvIGJlIG5vIG1vcmUuIFNhZCBjdXJlISBmb3Igd2hvIHdvdWxkIGxvc2UsIA0KK1Rob3VnaCBmdWxsIG9mIHBhaW4sIHRoaXMgaW50ZWxsZWN0dWFsIGJlaW5nLCANCitUaG9zZSB0aG91Z2h0cyB0aGF0IHdhbmRlciB0aHJvdWdoIGV0ZXJuaXR5LCANCitUbyBwZXJpc2ggcmF0aGVyLCBzd2FsbG93ZWQgdXAgYW5kIGxvc3QgDQorSW4gdGhlIHdpZGUgd29tYiBvZiB1bmNyZWF0ZWQgTmlnaHQsIA0KK0Rldm9pZCBvZiBzZW5zZSBhbmQgbW90aW9uPyBBbmQgd2hvIGtub3dzLCANCitMZXQgdGhpcyBiZSBnb29kLCB3aGV0aGVyIG91ciBhbmdyeSBGb2UgDQorQ2FuIGdpdmUgaXQsIG9yIHdpbGwgZXZlcj8gSG93IGhlIGNhbiANCitJcyBkb3VidGZ1bDsgdGhhdCBoZSBuZXZlciB3aWxsIGlzIHN1cmUuIA0KK1dpbGwgaGUsIHNvIHdpc2UsIGxldCBsb29zZSBhdCBvbmNlIGhpcyBpcmUsIA0KK0JlbGlrZSB0aHJvdWdoIGltcG90ZW5jZSBvciB1bmF3YXJlLCANCitUbyBnaXZlIGhpcyBlbmVtaWVzIHRoZWlyIHdpc2gsIGFuZCBlbmQgDQorVGhlbSBpbiBoaXMgYW5nZXIgd2hvbSBoaXMgYW5nZXIgc2F2ZXMgDQorVG8gcHVuaXNoIGVuZGxlc3M/ICdXaGVyZWZvcmUgY2Vhc2Ugd2UsIHRoZW4/JyANCitTYXkgdGhleSB3aG8gY291bnNlbCB3YXI7ICd3ZSBhcmUgZGVjcmVlZCwgDQorUmVzZXJ2ZWQsIGFuZCBkZXN0aW5lZCB0byBldGVybmFsIHdvZTsgDQorV2hhdGV2ZXIgZG9pbmcsIHdoYXQgY2FuIHdlIHN1ZmZlciBtb3JlLCANCitXaGF0IGNhbiB3ZSBzdWZmZXIgd29yc2U/JyBJcyB0aGlzLCB0aGVuLCB3b3JzdC0tIA0KK1RodXMgc2l0dGluZywgdGh1cyBjb25zdWx0aW5nLCB0aHVzIGluIGFybXM/IA0KK1doYXQgd2hlbiB3ZSBmbGVkIGFtYWluLCBwdXJzdWVkIGFuZCBzdHJ1Y2sgDQorV2l0aCBIZWF2ZW4ncyBhZmZsaWN0aW5nIHRodW5kZXIsIGFuZCBiZXNvdWdodCANCitUaGUgRGVlcCB0byBzaGVsdGVyIHVzPyBUaGlzIEhlbGwgdGhlbiBzZWVtZWQgDQorQSByZWZ1Z2UgZnJvbSB0aG9zZSB3b3VuZHMuIE9yIHdoZW4gd2UgbGF5IA0KK0NoYWluZWQgb24gdGhlIGJ1cm5pbmcgbGFrZT8gVGhhdCBzdXJlIHdhcyB3b3JzZS4gDQorV2hhdCBpZiB0aGUgYnJlYXRoIHRoYXQga2luZGxlZCB0aG9zZSBncmltIGZpcmVzLCANCitBd2FrZWQsIHNob3VsZCBibG93IHRoZW0gaW50byBzZXZlbmZvbGQgcmFnZSwgDQorQW5kIHBsdW5nZSB1cyBpbiB0aGUgZmxhbWVzOyBvciBmcm9tIGFib3ZlIA0KK1Nob3VsZCBpbnRlcm1pdHRlZCB2ZW5nZWFuY2UgYXJtIGFnYWluIA0KK0hpcyByZWQgcmlnaHQgaGFuZCB0byBwbGFndWUgdXM/IFdoYXQgaWYgYWxsIA0KK0hlciBzdG9yZXMgd2VyZSBvcGVuZWQsIGFuZCB0aGlzIGZpcm1hbWVudCANCitPZiBIZWxsIHNob3VsZCBzcG91dCBoZXIgY2F0YXJhY3RzIG9mIGZpcmUsIA0KK0ltcGVuZGVudCBob3Jyb3JzLCB0aHJlYXRlbmluZyBoaWRlb3VzIGZhbGwgDQorT25lIGRheSB1cG9uIG91ciBoZWFkczsgd2hpbGUgd2UgcGVyaGFwcywgDQorRGVzaWduaW5nIG9yIGV4aG9ydGluZyBnbG9yaW91cyB3YXIsIA0KK0NhdWdodCBpbiBhIGZpZXJ5IHRlbXBlc3QsIHNoYWxsIGJlIGh1cmxlZCwgDQorRWFjaCBvbiBoaXMgcm9jayB0cmFuc2ZpeGVkLCB0aGUgc3BvcnQgYW5kIHByZXkgDQorT3IgcmFja2luZyB3aGlybHdpbmRzLCBvciBmb3IgZXZlciBzdW5rIA0KK1VuZGVyIHlvbiBib2lsaW5nIG9jZWFuLCB3cmFwdCBpbiBjaGFpbnMsIA0KK1RoZXJlIHRvIGNvbnZlcnNlIHdpdGggZXZlcmxhc3RpbmcgZ3JvYW5zLCANCitVbnJlc3BpdGVkLCB1bnBpdGllZCwgdW5yZXByaWV2ZWQsIA0KK0FnZXMgb2YgaG9wZWxlc3MgZW5kPyBUaGlzIHdvdWxkIGJlIHdvcnNlLiANCitXYXIsIHRoZXJlZm9yZSwgb3BlbiBvciBjb25jZWFsZWQsIGFsaWtlIA0KK015IHZvaWNlIGRpc3N1YWRlczsgZm9yIHdoYXQgY2FuIGZvcmNlIG9yIGd1aWxlIA0KK1dpdGggaGltLCBvciB3aG8gZGVjZWl2ZSBoaXMgbWluZCwgd2hvc2UgZXllIA0KK1ZpZXdzIGFsbCB0aGluZ3MgYXQgb25lIHZpZXc/IEhlIGZyb20gSGVhdmVuJ3MgaGVpZ2h0IA0KK0FsbCB0aGVzZSBvdXIgbW90aW9ucyB2YWluIHNlZXMgYW5kIGRlcmlkZXMsIA0KK05vdCBtb3JlIGFsbWlnaHR5IHRvIHJlc2lzdCBvdXIgbWlnaHQgDQorVGhhbiB3aXNlIHRvIGZydXN0cmF0ZSBhbGwgb3VyIHBsb3RzIGFuZCB3aWxlcy4gDQorU2hhbGwgd2UsIHRoZW4sIGxpdmUgdGh1cyB2aWxlLS10aGUgcmFjZSBvZiBIZWF2ZW4gDQorVGh1cyB0cmFtcGxlZCwgdGh1cyBleHBlbGxlZCwgdG8gc3VmZmVyIGhlcmUgDQorQ2hhaW5zIGFuZCB0aGVzZSB0b3JtZW50cz8gQmV0dGVyIHRoZXNlIHRoYW4gd29yc2UsIA0KK0J5IG15IGFkdmljZTsgc2luY2UgZmF0ZSBpbmV2aXRhYmxlIA0KK1N1YmR1ZXMgdXMsIGFuZCBvbW5pcG90ZW50IGRlY3JlZSwgDQorVGhlIFZpY3RvcidzIHdpbGwuIFRvIHN1ZmZlciwgYXMgdG8gZG8sIA0KK091ciBzdHJlbmd0aCBpcyBlcXVhbDsgbm9yIHRoZSBsYXcgdW5qdXN0IA0KK1RoYXQgc28gb3JkYWlucy4gVGhpcyB3YXMgYXQgZmlyc3QgcmVzb2x2ZWQsIA0KK0lmIHdlIHdlcmUgd2lzZSwgYWdhaW5zdCBzbyBncmVhdCBhIGZvZSANCitDb250ZW5kaW5nLCBhbmQgc28gZG91YnRmdWwgd2hhdCBtaWdodCBmYWxsLiANCitJIGxhdWdoIHdoZW4gdGhvc2Ugd2hvIGF0IHRoZSBzcGVhciBhcmUgYm9sZCANCitBbmQgdmVudHVyb3VzLCBpZiB0aGF0IGZhaWwgdGhlbSwgc2hyaW5rLCBhbmQgZmVhciANCitXaGF0IHlldCB0aGV5IGtub3cgbXVzdCBmb2xsb3ctLXRvIGVuZHVyZSANCitFeGlsZSwgb3IgaWdvbWlueSwgb3IgYm9uZHMsIG9yIHBhaW4sIA0KK1RoZSBzZW50ZW5jZSBvZiB0aGVpciBDb25xdWVyb3IuIFRoaXMgaXMgbm93IA0KK091ciBkb29tOyB3aGljaCBpZiB3ZSBjYW4gc3VzdGFpbiBhbmQgYmVhciwgDQorT3VyIFN1cHJlbWUgRm9lIGluIHRpbWUgbWF5IG11Y2ggcmVtaXQgDQorSGlzIGFuZ2VyLCBhbmQgcGVyaGFwcywgdGh1cyBmYXIgcmVtb3ZlZCwgDQorTm90IG1pbmQgdXMgbm90IG9mZmVuZGluZywgc2F0aXNmaWVkIA0KK1dpdGggd2hhdCBpcyBwdW5pc2hlZDsgd2hlbmNlIHRoZXNlIHJhZ2luZyBmaXJlcyANCitXaWxsIHNsYWNrZW4sIGlmIGhpcyBicmVhdGggc3RpciBub3QgdGhlaXIgZmxhbWVzLiANCitPdXIgcHVyZXIgZXNzZW5jZSB0aGVuIHdpbGwgb3ZlcmNvbWUgDQorVGhlaXIgbm94aW91cyB2YXBvdXI7IG9yLCBpbnVyZWQsIG5vdCBmZWVsOyANCitPciwgY2hhbmdlZCBhdCBsZW5ndGgsIGFuZCB0byB0aGUgcGxhY2UgY29uZm9ybWVkIA0KK0luIHRlbXBlciBhbmQgaW4gbmF0dXJlLCB3aWxsIHJlY2VpdmUgDQorRmFtaWxpYXIgdGhlIGZpZXJjZSBoZWF0OyBhbmQsIHZvaWQgb2YgcGFpbiwgDQorVGhpcyBob3Jyb3Igd2lsbCBncm93IG1pbGQsIHRoaXMgZGFya25lc3MgbGlnaHQ7IA0KK0Jlc2lkZXMgd2hhdCBob3BlIHRoZSBuZXZlci1lbmRpbmcgZmxpZ2h0IA0KK09mIGZ1dHVyZSBkYXlzIG1heSBicmluZywgd2hhdCBjaGFuY2UsIHdoYXQgY2hhbmdlIA0KK1dvcnRoIHdhaXRpbmctLXNpbmNlIG91ciBwcmVzZW50IGxvdCBhcHBlYXJzIA0KK0ZvciBoYXBweSB0aG91Z2ggYnV0IGlsbCwgZm9yIGlsbCBub3Qgd29yc3QsIA0KK0lmIHdlIHByb2N1cmUgbm90IHRvIG91cnNlbHZlcyBtb3JlIHdvZS4iIA0KKyAgVGh1cyBCZWxpYWwsIHdpdGggd29yZHMgY2xvdGhlZCBpbiByZWFzb24ncyBnYXJiLCANCitDb3Vuc2VsbGVkIGlnbm9ibGUgZWFzZSBhbmQgcGVhY2VmdWwgc2xvdGgsIA0KK05vdCBwZWFjZTsgYW5kIGFmdGVyIGhpbSB0aHVzIE1hbW1vbiBzcGFrZTotLSANCisgICJFaXRoZXIgdG8gZGlzZW50aHJvbmUgdGhlIEtpbmcgb2YgSGVhdmVuIA0KK1dlIHdhciwgaWYgd2FyIGJlIGJlc3QsIG9yIHRvIHJlZ2FpbiANCitPdXIgb3duIHJpZ2h0IGxvc3QuIEhpbSB0byB1bnRocm9uZSB3ZSB0aGVuIA0KK01heSBob3BlLCB3aGVuIGV2ZXJsYXN0aW5nIEZhdGUgc2hhbGwgeWllbGQgDQorVG8gZmlja2xlIENoYW5jZSwgYW5kIENoYW9zIGp1ZGdlIHRoZSBzdHJpZmUuIA0KK1RoZSBmb3JtZXIsIHZhaW4gdG8gaG9wZSwgYXJndWVzIGFzIHZhaW4gDQorVGhlIGxhdHRlcjsgZm9yIHdoYXQgcGxhY2UgY2FuIGJlIGZvciB1cyANCitXaXRoaW4gSGVhdmVuJ3MgYm91bmQsIHVubGVzcyBIZWF2ZW4ncyBMb3JkIHN1cHJlbWUgDQorV2Ugb3ZlcnBvd2VyPyBTdXBwb3NlIGhlIHNob3VsZCByZWxlbnQgDQorQW5kIHB1Ymxpc2ggZ3JhY2UgdG8gYWxsLCBvbiBwcm9taXNlIG1hZGUgDQorT2YgbmV3IHN1YmplY3Rpb247IHdpdGggd2hhdCBleWVzIGNvdWxkIHdlIA0KK1N0YW5kIGluIGhpcyBwcmVzZW5jZSBodW1ibGUsIGFuZCByZWNlaXZlIA0KK1N0cmljdCBsYXdzIGltcG9zZWQsIHRvIGNlbGVicmF0ZSBoaXMgdGhyb25lIA0KK1dpdGggd2FyYmxlZCBoeW1zLCBhbmQgdG8gaGlzIEdvZGhlYWQgc2luZyANCitGb3JjZWQgaGFsbGVsdWphaHMsIHdoaWxlIGhlIGxvcmRseSBzaXRzIA0KK091ciBlbnZpZWQgc292ZXJlaWduLCBhbmQgaGlzIGFsdGFyIGJyZWF0aGVzIA0KK0FtYnJvc2lhbCBvZG91cnMgYW5kIGFtYnJvc2lhbCBmbG93ZXJzLCANCitPdXIgc2VydmlsZSBvZmZlcmluZ3M/IFRoaXMgbXVzdCBiZSBvdXIgdGFzayANCitJbiBIZWF2ZW4sIHRoaXMgb3VyIGRlbGlnaHQuIEhvdyB3ZWFyaXNvbWUgDQorRXRlcm5pdHkgc28gc3BlbnQgaW4gd29yc2hpcCBwYWlkIA0KK1RvIHdob20gd2UgaGF0ZSEgTGV0IHVzIG5vdCB0aGVuIHB1cnN1ZSwgDQorQnkgZm9yY2UgaW1wb3NzaWJsZSwgYnkgbGVhdmUgb2J0YWluZWQgDQorVW5hY2NlcHRhYmxlLCB0aG91Z2ggaW4gSGVhdmVuLCBvdXIgc3RhdGUgDQorT2Ygc3BsZW5kaWQgdmFzc2FsYWdlOyBidXQgcmF0aGVyIHNlZWsgDQorT3VyIG93biBnb29kIGZyb20gb3Vyc2VsdmVzLCBhbmQgZnJvbSBvdXIgb3duIA0KK0xpdmUgdG8gb3Vyc2VsdmVzLCB0aG91Z2ggaW4gdGhpcyB2YXN0IHJlY2VzcywgDQorRnJlZSBhbmQgdG8gbm9uZSBhY2NvdW50YWJsZSwgcHJlZmVycmluZyANCitIYXJkIGxpYmVydHkgYmVmb3JlIHRoZSBlYXN5IHlva2UgDQorT2Ygc2VydmlsZSBwb21wLiBPdXIgZ3JlYXRuZXNzIHdpbGwgYXBwZWFyIA0KK1RoZW4gbW9zdCBjb25zcGljdW91cyB3aGVuIGdyZWF0IHRoaW5ncyBvZiBzbWFsbCwgDQorVXNlZnVsIG9mIGh1cnRmdWwsIHByb3NwZXJvdXMgb2YgYWR2ZXJzZSwgDQorV2UgY2FuIGNyZWF0ZSwgYW5kIGluIHdoYXQgcGxhY2Ugc29lJ2VyIA0KK1Rocml2ZSB1bmRlciBldmlsLCBhbmQgd29yayBlYXNlIG91dCBvZiBwYWluIA0KK1Rocm91Z2ggbGFib3VyIGFuZCBlbmR1cmFuY2UuIFRoaXMgZGVlcCB3b3JsZCANCitPZiBkYXJrbmVzcyBkbyB3ZSBkcmVhZD8gSG93IG9mdCBhbWlkc3QgDQorVGhpY2sgY2xvdWRzIGFuZCBkYXJrIGRvdGggSGVhdmVuJ3MgYWxsLXJ1bGluZyBTaXJlIA0KK0Nob29zZSB0byByZXNpZGUsIGhpcyBnbG9yeSB1bm9ic2N1cmVkLCANCitBbmQgd2l0aCB0aGUgbWFqZXN0eSBvZiBkYXJrbmVzcyByb3VuZCANCitDb3ZlcnMgaGlzIHRocm9uZSwgZnJvbSB3aGVuY2UgZGVlcCB0aHVuZGVycyByb2FyLiANCitNdXN0ZXJpbmcgdGhlaXIgcmFnZSwgYW5kIEhlYXZlbiByZXNlbWJsZXMgSGVsbCEgDQorQXMgaGUgb3VyIGRhcmtuZXNzLCBjYW5ub3Qgd2UgaGlzIGxpZ2h0IA0KK0ltaXRhdGUgd2hlbiB3ZSBwbGVhc2U/IFRoaXMgZGVzZXJ0IHNvaWwgDQorV2FudHMgbm90IGhlciBoaWRkZW4gbHVzdHJlLCBnZW1zIGFuZCBnb2xkOyANCitOb3Igd2FudCB3ZSBza2lsbCBvciBhcnQgZnJvbSB3aGVuY2UgdG8gcmFpc2UgDQorTWFnbmlmaWNlbmNlOyBhbmQgd2hhdCBjYW4gSGVhdmVuIHNob3cgbW9yZT8gDQorT3VyIHRvcm1lbnRzIGFsc28gbWF5LCBpbiBsZW5ndGggb2YgdGltZSwgDQorQmVjb21lIG91ciBlbGVtZW50cywgdGhlc2UgcGllcmNpbmcgZmlyZXMgDQorQXMgc29mdCBhcyBub3cgc2V2ZXJlLCBvdXIgdGVtcGVyIGNoYW5nZWQgDQorSW50byB0aGVpciB0ZW1wZXI7IHdoaWNoIG11c3QgbmVlZHMgcmVtb3ZlIA0KK1RoZSBzZW5zaWJsZSBvZiBwYWluLiBBbGwgdGhpbmdzIGludml0ZSANCitUbyBwZWFjZWZ1bCBjb3Vuc2VscywgYW5kIHRoZSBzZXR0bGVkIHN0YXRlIA0KK09mIG9yZGVyLCBob3cgaW4gc2FmZXR5IGJlc3Qgd2UgbWF5IA0KK0NvbXBvc2Ugb3VyIHByZXNlbnQgZXZpbHMsIHdpdGggcmVnYXJkIA0KK09mIHdoYXQgd2UgYXJlIGFuZCB3aGVyZSwgZGlzbWlzc2luZyBxdWl0ZSANCitBbGwgdGhvdWdodHMgb2Ygd2FyLiBZZSBoYXZlIHdoYXQgSSBhZHZpc2UuIiANCisgIEhlIHNjYXJjZSBoYWQgZmluaXNoZWQsIHdoZW4gc3VjaCBtdXJtdXIgZmlsbGVkIA0KK1RoJyBhc3NlbWJseSBhcyB3aGVuIGhvbGxvdyByb2NrcyByZXRhaW4gDQorVGhlIHNvdW5kIG9mIGJsdXN0ZXJpbmcgd2luZHMsIHdoaWNoIGFsbCBuaWdodCBsb25nIA0KK0hhZCByb3VzZWQgdGhlIHNlYSwgbm93IHdpdGggaG9hcnNlIGNhZGVuY2UgbHVsbCANCitTZWFmYXJpbmcgbWVuIG8nZXJ3YXRjaGVkLCB3aG9zZSBiYXJrIGJ5IGNoYW5jZSANCitPciBwaW5uYWNlLCBhbmNob3JzIGluIGEgY3JhZ2d5IGJheSANCitBZnRlciB0aGUgdGVtcGVzdC4gU3VjaCBhcHBsYXVzZSB3YXMgaGVhcmQgDQorQXMgTWFtbW9uIGVuZGVkLCBhbmQgaGlzIHNlbnRlbmNlIHBsZWFzZWQsIA0KK0FkdmlzaW5nIHBlYWNlOiBmb3Igc3VjaCBhbm90aGVyIGZpZWxkIA0KK1RoZXkgZHJlYWRlZCB3b3JzZSB0aGFuIEhlbGw7IHNvIG11Y2ggdGhlIGZlYXIgDQorT2YgdGh1bmRlciBhbmQgdGhlIHN3b3JkIG9mIE1pY2hhZWwgDQorV3JvdWdodCBzdGlsbCB3aXRoaW4gdGhlbTsgYW5kIG5vIGxlc3MgZGVzaXJlIA0KK1RvIGZvdW5kIHRoaXMgbmV0aGVyIGVtcGlyZSwgd2hpY2ggbWlnaHQgcmlzZSwgDQorQnkgcG9saWN5IGFuZCBsb25nIHByb2Nlc3Mgb2YgdGltZSwgDQorSW4gZW11bGF0aW9uIG9wcG9zaXRlIHRvIEhlYXZlbi4gDQorV2hpY2ggd2hlbiBCZWVsemVidWIgcGVyY2VpdmVkLS10aGFuIHdob20sIA0KK1NhdGFuIGV4Y2VwdCwgbm9uZSBoaWdoZXIgc2F0LS13aXRoIGdyYXZlIA0KK0FzcGVjdCBoZSByb3NlLCBhbmQgaW4gaGlzIHJpc2luZyBzZWVtZWQgDQorQSBwaWxsYXIgb2Ygc3RhdGUuIERlZXAgb24gaGlzIGZyb250IGVuZ3JhdmVuIA0KK0RlbGliZXJhdGlvbiBzYXQsIGFuZCBwdWJsaWMgY2FyZTsgDQorQW5kIHByaW5jZWx5IGNvdW5zZWwgaW4gaGlzIGZhY2UgeWV0IHNob25lLCANCitNYWplc3RpYywgdGhvdWdoIGluIHJ1aW4uIFNhZ2UgaGUgc3Rvb2QgDQorV2l0aCBBdGxhbnRlYW4gc2hvdWxkZXJzLCBmaXQgdG8gYmVhciANCitUaGUgd2VpZ2h0IG9mIG1pZ2h0aWVzdCBtb25hcmNoaWVzOyBoaXMgbG9vayANCitEcmV3IGF1ZGllbmNlIGFuZCBhdHRlbnRpb24gc3RpbGwgYXMgbmlnaHQgDQorT3Igc3VtbWVyJ3Mgbm9vbnRpZGUgYWlyLCB3aGlsZSB0aHVzIGhlIHNwYWtlOi0tIA0KKyAgIlRocm9uZXMgYW5kIEltcGVyaWFsIFBvd2VycywgT2Zmc3ByaW5nIG9mIEhlYXZlbiwgDQorRXRoZXJlYWwgVmlydHVlcyEgb3IgdGhlc2UgdGl0bGVzIG5vdyANCitNdXN0IHdlIHJlbm91bmNlLCBhbmQsIGNoYW5naW5nIHN0eWxlLCBiZSBjYWxsZWQgDQorUHJpbmNlcyBvZiBIZWxsPyBmb3Igc28gdGhlIHBvcHVsYXIgdm90ZSANCitJbmNsaW5lcy0taGVyZSB0byBjb250aW51ZSwgYW5kIGJ1aWxkIHVwIGhlcmUgDQorQSBncm93aW5nIGVtcGlyZTsgZG91YnRsZXNzISB3aGlsZSB3ZSBkcmVhbSwgDQorQW5kIGtub3cgbm90IHRoYXQgdGhlIEtpbmcgb2YgSGVhdmVuIGhhdGggZG9vbWVkIA0KK1RoaXMgcGxhY2Ugb3VyIGR1bmdlb24sIG5vdCBvdXIgc2FmZSByZXRyZWF0IA0KK0JleW9uZCBoaXMgcG90ZW50IGFybSwgdG8gbGl2ZSBleGVtcHQgDQorRnJvbSBIZWF2ZW4ncyBoaWdoIGp1cmlzZGljdGlvbiwgaW4gbmV3IGxlYWd1ZSANCitCYW5kZWQgYWdhaW5zdCBoaXMgdGhyb25lLCBidXQgdG8gcmVtYWluIA0KK0luIHN0cmljdGVzdCBib25kYWdlLCB0aG91Z2ggdGh1cyBmYXIgcmVtb3ZlZCwgDQorVW5kZXIgdGgnIGluZXZpdGFibGUgY3VyYiwgcmVzZXJ2ZWQgDQorSGlzIGNhcHRpdmUgbXVsdGl0dWRlLiBGb3IgaGUsIHRvIGJlIHN1cmUsIA0KK0luIGhlaWdodCBvciBkZXB0aCwgc3RpbGwgZmlyc3QgYW5kIGxhc3Qgd2lsbCByZWlnbiANCitTb2xlIGtpbmcsIGFuZCBvZiBoaXMga2luZ2RvbSBsb3NlIG5vIHBhcnQgDQorQnkgb3VyIHJldm9sdCwgYnV0IG92ZXIgSGVsbCBleHRlbmQgDQorSGlzIGVtcGlyZSwgYW5kIHdpdGggaXJvbiBzY2VwdHJlIHJ1bGUgDQorVXMgaGVyZSwgYXMgd2l0aCBoaXMgZ29sZGVuIHRob3NlIGluIEhlYXZlbi4gDQorV2hhdCBzaXQgd2UgdGhlbiBwcm9qZWN0aW5nIHBlYWNlIGFuZCB3YXI/IA0KK1dhciBoYXRoIGRldGVybWluZWQgdXMgYW5kIGZvaWxlZCB3aXRoIGxvc3MgDQorSXJyZXBhcmFibGU7IHRlcm1zIG9mIHBlYWNlIHlldCBub25lIA0KK1ZvdWNoc2FmZWQgb3Igc291Z2h0OyBmb3Igd2hhdCBwZWFjZSB3aWxsIGJlIGdpdmVuIA0KK1RvIHVzIGVuc2xhdmVkLCBidXQgY3VzdG9keSBzZXZlcmUsIA0KK0FuZCBzdHJpcGVzIGFuZCBhcmJpdHJhcnkgcHVuaXNobWVudCANCitJbmZsaWN0ZWQ/IGFuZCB3aGF0IHBlYWNlIGNhbiB3ZSByZXR1cm4sIA0KK0J1dCwgdG8gb3VyIHBvd2VyLCBob3N0aWxpdHkgYW5kIGhhdGUsIA0KK1VudGFtZWQgcmVsdWN0YW5jZSwgYW5kIHJldmVuZ2UsIHRob3VnaCBzbG93LCANCitZZXQgZXZlciBwbG90dGluZyBob3cgdGhlIENvbnF1ZXJvciBsZWFzdCANCitNYXkgcmVhcCBoaXMgY29ucXVlc3QsIGFuZCBtYXkgbGVhc3QgcmVqb2ljZSANCitJbiBkb2luZyB3aGF0IHdlIG1vc3QgaW4gc3VmZmVyaW5nIGZlZWw/IA0KK05vciB3aWxsIG9jY2FzaW9uIHdhbnQsIG5vciBzaGFsbCB3ZSBuZWVkIA0KK1dpdGggZGFuZ2Vyb3VzIGV4cGVkaXRpb24gdG8gaW52YWRlIA0KK0hlYXZlbiwgd2hvc2UgaGlnaCB3YWxscyBmZWFyIG5vIGFzc2F1bHQgb3Igc2llZ2UsIA0KK09yIGFtYnVzaCBmcm9tIHRoZSBEZWVwLiBXaGF0IGlmIHdlIGZpbmQgDQorU29tZSBlYXNpZXIgZW50ZXJwcmlzZT8gVGhlcmUgaXMgYSBwbGFjZSANCisoSWYgYW5jaWVudCBhbmQgcHJvcGhldGljIGZhbWUgaW4gSGVhdmVuIA0KK0VyciBub3QpLS1hbm90aGVyIFdvcmxkLCB0aGUgaGFwcHkgc2VhdCANCitPZiBzb21lIG5ldyByYWNlLCBjYWxsZWQgTWFuLCBhYm91dCB0aGlzIHRpbWUgDQorVG8gYmUgY3JlYXRlZCBsaWtlIHRvIHVzLCB0aG91Z2ggbGVzcyANCitJbiBwb3dlciBhbmQgZXhjZWxsZW5jZSwgYnV0IGZhdm91cmVkIG1vcmUgDQorT2YgaGltIHdobyBydWxlcyBhYm92ZTsgc28gd2FzIGhpcyB3aWxsIA0KK1Byb25vdW5jZWQgYW1vbmcgdGhlIEdvZHMsIGFuZCBieSBhbiBvYXRoIA0KK1RoYXQgc2hvb2sgSGVhdmVuJ3Mgd2hvbGUgY2lyY3VtZmVyZW5jZSBjb25maXJtZWQuIA0KK1RoaXRoZXIgbGV0IHVzIGJlbmQgYWxsIG91ciB0aG91Z2h0cywgdG8gbGVhcm4gDQorV2hhdCBjcmVhdHVyZXMgdGhlcmUgaW5oYWJpdCwgb2Ygd2hhdCBtb3VsZCANCitPciBzdWJzdGFuY2UsIGhvdyBlbmR1ZWQsIGFuZCB3aGF0IHRoZWlyIHBvd2VyIA0KK0FuZCB3aGVyZSB0aGVpciB3ZWFrbmVzczogaG93IGF0dGVtcHRlZCBiZXN0LCANCitCeSBmb3JjZSBvZiBzdWJ0bGV0eS4gVGhvdWdoIEhlYXZlbiBiZSBzaHV0LCANCitBbmQgSGVhdmVuJ3MgaGlnaCBBcmJpdHJhdG9yIHNpdCBzZWN1cmUgDQorSW4gaGlzIG93biBzdHJlbmd0aCwgdGhpcyBwbGFjZSBtYXkgbGllIGV4cG9zZWQsIA0KK1RoZSB1dG1vc3QgYm9yZGVyIG9mIGhpcyBraW5nZG9tLCBsZWZ0IA0KK1RvIHRoZWlyIGRlZmVuY2Ugd2hvIGhvbGQgaXQ6IGhlcmUsIHBlcmhhcHMsIA0KK1NvbWUgYWR2YW50YWdlb3VzIGFjdCBtYXkgYmUgYWNoaWV2ZWQgDQorQnkgc3VkZGVuIG9uc2V0LS1laXRoZXIgd2l0aCBIZWxsLWZpcmUgDQorVG8gd2FzdGUgaGlzIHdob2xlIGNyZWF0aW9uLCBvciBwb3NzZXNzIA0KK0FsbCBhcyBvdXIgb3duLCBhbmQgZHJpdmUsIGFzIHdlIHdlcmUgZHJpdmVuLCANCitUaGUgcHVueSBoYWJpdGFudHM7IG9yLCBpZiBub3QgZHJpdmUsIA0KK1NlZHVjZSB0aGVtIHRvIG91ciBwYXJ0eSwgdGhhdCB0aGVpciBHb2QgDQorTWF5IHByb3ZlIHRoZWlyIGZvZSwgYW5kIHdpdGggcmVwZW50aW5nIGhhbmQgDQorQWJvbGlzaCBoaXMgb3duIHdvcmtzLiBUaGlzIHdvdWxkIHN1cnBhc3MgDQorQ29tbW9uIHJldmVuZ2UsIGFuZCBpbnRlcnJ1cHQgaGlzIGpveSANCitJbiBvdXIgY29uZnVzaW9uLCBhbmQgb3VyIGpveSB1cHJhaXNlIA0KK0luIGhpcyBkaXN0dXJiYW5jZTsgd2hlbiBoaXMgZGFybGluZyBzb25zLCANCitIdXJsZWQgaGVhZGxvbmcgdG8gcGFydGFrZSB3aXRoIHVzLCBzaGFsbCBjdXJzZSANCitUaGVpciBmcmFpbCBvcmlnaW5hbCwgYW5kIGZhZGVkIGJsaXNzLS0gDQorRmFkZWQgc28gc29vbiEgQWR2aXNlIGlmIHRoaXMgYmUgd29ydGggDQorQXR0ZW1wdGluZywgb3IgdG8gc2l0IGluIGRhcmtuZXNzIGhlcmUgDQorSGF0Y2hpbmcgdmFpbiBlbXBpcmVzLiIgVGh1cyBiZWVsemVidWIgDQorUGxlYWRlZCBoaXMgZGV2aWxpc2ggY291bnNlbC0tZmlyc3QgZGV2aXNlZCANCitCeSBTYXRhbiwgYW5kIGluIHBhcnQgcHJvcG9zZWQ6IGZvciB3aGVuY2UsIA0KK0J1dCBmcm9tIHRoZSBhdXRob3Igb2YgYWxsIGlsbCwgY291bGQgc3ByaW5nIA0KK1NvIGRlZXAgYSBtYWxpY2UsIHRvIGNvbmZvdW5kIHRoZSByYWNlIA0KK09mIG1hbmtpbmQgaW4gb25lIHJvb3QsIGFuZCBFYXJ0aCB3aXRoIEhlbGwgDQorVG8gbWluZ2xlIGFuZCBpbnZvbHZlLCBkb25lIGFsbCB0byBzcGl0ZSANCitUaGUgZ3JlYXQgQ3JlYXRvcj8gQnV0IHRoZWlyIHNwaXRlIHN0aWxsIHNlcnZlcyANCitIaXMgZ2xvcnkgdG8gYXVnbWVudC4gVGhlIGJvbGQgZGVzaWduIA0KK1BsZWFzZWQgaGlnaGx5IHRob3NlIGluZmVybmFsIFN0YXRlcywgYW5kIGpveSANCitTcGFya2xlZCBpbiBhbGwgdGhlaXIgZXllczogd2l0aCBmdWxsIGFzc2VudCANCitUaGV5IHZvdGU6IHdoZXJlYXQgaGlzIHNwZWVjaCBoZSB0aHVzIHJlbmV3czotLSANCisiV2VsbCBoYXZlIHllIGp1ZGdlZCwgd2VsbCBlbmRlZCBsb25nIGRlYmF0ZSwgDQorU3lub2Qgb2YgR29kcywgYW5kLCBsaWtlIHRvIHdoYXQgeWUgYXJlLCANCitHcmVhdCB0aGluZ3MgcmVzb2x2ZWQsIHdoaWNoIGZyb20gdGhlIGxvd2VzdCBkZWVwIA0KK1dpbGwgb25jZSBtb3JlIGxpZnQgdXMgdXAsIGluIHNwaXRlIG9mIGZhdGUsIA0KK05lYXJlciBvdXIgYW5jaWVudCBzZWF0LS1wZXJoYXBzIGluIHZpZXcgDQorT2YgdGhvc2UgYnJpZ2h0IGNvbmZpbmVzLCB3aGVuY2UsIHdpdGggbmVpZ2hib3VyaW5nIGFybXMsIA0KK0FuZCBvcHBvcnR1bmUgZXhjdXJzaW9uLCB3ZSBtYXkgY2hhbmNlIA0KK1JlLWVudGVyIEhlYXZlbjsgb3IgZWxzZSBpbiBzb21lIG1pbGQgem9uZSANCitEd2VsbCwgbm90IHVudmlzaXRlZCBvZiBIZWF2ZW4ncyBmYWlyIGxpZ2h0LCANCitTZWN1cmUsIGFuZCBhdCB0aGUgYnJpZ2h0ZW5pbmcgb3JpZW50IGJlYW0gDQorUHVyZ2Ugb2ZmIHRoaXMgZ2xvb206IHRoZSBzb2Z0IGRlbGljaW91cyBhaXIsIA0KK1RvIGhlYWwgdGhlIHNjYXIgb2YgdGhlc2UgY29ycm9zaXZlIGZpcmVzLCANCitTaGFsbCBicmVhdGhlIGhlciBiYWxtLiBCdXQsIGZpcnN0LCB3aG9tIHNoYWxsIHdlIHNlbmQgDQorSW4gc2VhcmNoIG9mIHRoaXMgbmV3IFdvcmxkPyB3aG9tIHNoYWxsIHdlIGZpbmQgDQorU3VmZmljaWVudD8gd2hvIHNoYWxsIHRlbXB0IHdpdGggd2FuZGVyaW5nIGZlZXQgDQorVGhlIGRhcmssIHVuYm90dG9tZWQsIGluZmluaXRlIEFieXNzLCANCitBbmQgdGhyb3VnaCB0aGUgcGFscGFibGUgb2JzY3VyZSBmaW5kIG91dCANCitIaXMgdW5jb3V0aCB3YXksIG9yIHNwcmVhZCBoaXMgYWlyeSBmbGlnaHQsIA0KK1VwYm9ybmUgd2l0aCBpbmRlZmF0aWdhYmxlIHdpbmdzIA0KK092ZXIgdGhlIHZhc3QgYWJydXB0LCBlcmUgaGUgYXJyaXZlIA0KK1RoZSBoYXBweSBJc2xlPyBXaGF0IHN0cmVuZ3RoLCB3aGF0IGFydCwgY2FuIHRoZW4gDQorU3VmZmljZSwgb3Igd2hhdCBldmFzaW9uIGJlYXIgaGltIHNhZmUsIA0KK1Rocm91Z2ggdGhlIHN0cmljdCBzZW50ZXJpZXMgYW5kIHN0YXRpb25zIHRoaWNrIA0KK09mIEFuZ2VscyB3YXRjaGluZyByb3VuZD8gSGVyZSBoZSBoYWQgbmVlZCANCitBbGwgY2lyY3Vtc3BlY3Rpb246IGFuZCB3ZSBub3cgbm8gbGVzcyANCitDaG9pY2UgaW4gb3VyIHN1ZmZyYWdlOyBmb3Igb24gd2hvbSB3ZSBzZW5kIA0KK1RoZSB3ZWlnaHQgb2YgYWxsLCBhbmQgb3VyIGxhc3QgaG9wZSwgcmVsaWVzLiIgDQorICBUaGlzIHNhaWQsIGhlIHNhdDsgYW5kIGV4cGVjdGF0aW9uIGhlbGQgDQorSGlzIGxvb2sgc3VzcGVuc2UsIGF3YWl0aW5nIHdobyBhcHBlYXJlZCANCitUbyBzZWNvbmQsIG9yIG9wcG9zZSwgb3IgdW5kZXJ0YWtlIA0KK1RoZSBwZXJpbG91cyBhdHRlbXB0LiBCdXQgYWxsIHNhdCBtdXRlLCANCitQb25kZXJpbmcgdGhlIGRhbmdlciB3aXRoIGRlZXAgdGhvdWdodHM7IGFuZCBlYWNoIA0KK0luIG90aGVyJ3MgY291bnRlbmFuY2UgcmVhZCBoaXMgb3duIGRpc21heSwgDQorQXN0b25pc2hlZC4gTm9uZSBhbW9uZyB0aGUgY2hvaWNlIGFuZCBwcmltZSANCitPZiB0aG9zZSBIZWF2ZW4td2FycmluZyBjaGFtcGlvbnMgY291bGQgYmUgZm91bmQgDQorU28gaGFyZHkgYXMgdG8gcHJvZmZlciBvciBhY2NlcHQsIA0KK0Fsb25lLCB0aGUgZHJlYWRmdWwgdm95YWdlOyB0aWxsLCBhdCBsYXN0LCANCitTYXRhbiwgd2hvbSBub3cgdHJhbnNjZW5kZW50IGdsb3J5IHJhaXNlZCANCitBYm92ZSBoaXMgZmVsbG93cywgd2l0aCBtb25hcmNoYWwgcHJpZGUgDQorQ29uc2Npb3VzIG9mIGhpZ2hlc3Qgd29ydGgsIHVubW92ZWQgdGh1cyBzcGFrZTotLSANCisgICJPIFByb2dlbnkgb2YgSGVhdmVuISBFbXB5cmVhbCBUaHJvbmVzISANCitXaXRoIHJlYXNvbiBoYXRoIGRlZXAgc2lsZW5jZSBhbmQgZGVtdXIgDQorU2VpemVkIHVzLCB0aG91Z2ggdW5kaXNtYXllZC4gTG9uZyBpcyB0aGUgd2F5IA0KK0FuZCBoYXJkLCB0aGF0IG91dCBvZiBIZWxsIGxlYWRzIHVwIHRvIGxpZ2h0LiANCitPdXIgcHJpc29uIHN0cm9uZywgdGhpcyBodWdlIGNvbnZleCBvZiBmaXJlLCANCitPdXRyYWdlb3VzIHRvIGRldm91ciwgaW1tdXJlcyB1cyByb3VuZCANCitOaW5lZm9sZDsgYW5kIGdhdGVzIG9mIGJ1cm5pbmcgYWRhbWFudCwgDQorQmFycmVkIG92ZXIgdXMsIHByb2hpYml0IGFsbCBlZ3Jlc3MuIA0KK1RoZXNlIHBhc3NlZCwgaWYgYW55IHBhc3MsIHRoZSB2b2lkIHByb2ZvdW5kIA0KK09mIHVuZXNzZW50aWFsIE5pZ2h0IHJlY2VpdmVzIGhpbSBuZXh0LCANCitXaWRlLWdhcGluZywgYW5kIHdpdGggdXR0ZXIgbG9zcyBvZiBiZWluZyANCitUaHJlYXRlbnMgaGltLCBwbHVuZ2VkIGluIHRoYXQgYWJvcnRpdmUgZ3VsZi4gDQorSWYgdGhlbmNlIGhlIHNjYXBlLCBpbnRvIHdoYXRldmVyIHdvcmxkLCANCitPciB1bmtub3duIHJlZ2lvbiwgd2hhdCByZW1haW5zIGhpbSBsZXNzIA0KK1RoYW4gdW5rbm93biBkYW5nZXJzLCBhbmQgYXMgaGFyZCBlc2NhcGU/IA0KK0J1dCBJIHNob3VsZCBpbGwgYmVjb21lIHRoaXMgdGhyb25lLCBPIFBlZXJzLCANCitBbmQgdGhpcyBpbXBlcmlhbCBzb3ZlcmVpZ250eSwgYWRvcm5lZCANCitXaXRoIHNwbGVuZG91ciwgYXJtZWQgd2l0aCBwb3dlciwgaWYgYXVnaHQgcHJvcG9zZWQgDQorQW5kIGp1ZGdlZCBvZiBwdWJsaWMgbW9tZW50IGluIHRoZSBzaGFwZSANCitPZiBkaWZmaWN1bHR5IG9yIGRhbmdlciwgY291bGQgZGV0ZXIgDQorTWUgZnJvbSBhdHRlbXB0aW5nLiBXaGVyZWZvcmUgZG8gSSBhc3N1bWUgDQorVGhlc2Ugcm95YWx0aWVzLCBhbmQgbm90IHJlZnVzZSB0byByZWlnbiwgDQorUmVmdXNpbmcgdG8gYWNjZXB0IGFzIGdyZWF0IGEgc2hhcmUgDQorT2YgaGF6YXJkIGFzIG9mIGhvbm91ciwgZHVlIGFsaWtlIA0KK1RvIGhpbSB3aG8gcmVpZ25zLCBhbmQgc28gbXVjaCB0byBoaW0gZHVlIA0KK09mIGhhemFyZCBtb3JlIGFzIGhlIGFib3ZlIHRoZSByZXN0IA0KK0hpZ2ggaG9ub3VyZWQgc2l0cz8gR28sIHRoZXJlZm9yZSwgbWlnaHR5IFBvd2VycywgDQorVGVycm9yIG9mIEhlYXZlbiwgdGhvdWdoIGZhbGxlbjsgaW50ZW5kIGF0IGhvbWUsIA0KK1doaWxlIGhlcmUgc2hhbGwgYmUgb3VyIGhvbWUsIHdoYXQgYmVzdCBtYXkgZWFzZSANCitUaGUgcHJlc2VudCBtaXNlcnksIGFuZCByZW5kZXIgSGVsbCANCitNb3JlIHRvbGVyYWJsZTsgaWYgdGhlcmUgYmUgY3VyZSBvciBjaGFybSANCitUbyByZXNwaXRlLCBvciBkZWNlaXZlLCBvciBzbGFjayB0aGUgcGFpbiANCitPZiB0aGlzIGlsbCBtYW5zaW9uOiBpbnRlcm1pdCBubyB3YXRjaCANCitBZ2FpbnN0IGEgd2FrZWZ1bCBmb2UsIHdoaWxlIEkgYWJyb2FkIA0KK1Rocm91Z2ggYWxsIHRoZSBjb2FzdHMgb2YgZGFyayBkZXN0cnVjdGlvbiBzZWVrIA0KK0RlbGl2ZXJhbmNlIGZvciB1cyBhbGwuIFRoaXMgZW50ZXJwcmlzZSANCitOb25lIHNoYWxsIHBhcnRha2Ugd2l0aCBtZS4iIFRodXMgc2F5aW5nLCByb3NlIA0KK1RoZSBNb25hcmNoLCBhbmQgcHJldmVudGVkIGFsbCByZXBseTsgDQorUHJ1ZGVudCBsZXN0LCBmcm9tIGhpcyByZXNvbHV0aW9uIHJhaXNlZCwgDQorT3RoZXJzIGFtb25nIHRoZSBjaGllZiBtaWdodCBvZmZlciBub3csIA0KK0NlcnRhaW4gdG8gYmUgcmVmdXNlZCwgd2hhdCBlcnN0IHRoZXkgZmVhcmVkLCANCitBbmQsIHNvIHJlZnVzZWQsIG1pZ2h0IGluIG9waW5pb24gc3RhbmQgDQorSGlzIHJpdmFscywgd2lubmluZyBjaGVhcCB0aGUgaGlnaCByZXB1dGUgDQorV2hpY2ggaGUgdGhyb3VnaCBoYXphcmQgaHVnZSBtdXN0IGVhcm4uIEJ1dCB0aGV5IA0KK0RyZWFkZWQgbm90IG1vcmUgdGgnIGFkdmVudHVyZSB0aGFuIGhpcyB2b2ljZSANCitGb3JiaWRkaW5nOyBhbmQgYXQgb25jZSB3aXRoIGhpbSB0aGV5IHJvc2UuIA0KK1RoZWlyIHJpc2luZyBhbGwgYXQgb25jZSB3YXMgYXMgdGhlIHNvdW5kIA0KK09mIHRodW5kZXIgaGVhcmQgcmVtb3RlLiBUb3dhcmRzIGhpbSB0aGV5IGJlbmQgDQorV2l0aCBhd2Z1bCByZXZlcmVuY2UgcHJvbmUsIGFuZCBhcyBhIEdvZCANCitFeHRvbCBoaW0gZXF1YWwgdG8gdGhlIEhpZ2hlc3QgaW4gSGVhdmVuLiANCitOb3IgZmFpbGVkIHRoZXkgdG8gZXhwcmVzcyBob3cgbXVjaCB0aGV5IHByYWlzZWQgDQorVGhhdCBmb3IgdGhlIGdlbmVyYWwgc2FmZXR5IGhlIGRlc3Bpc2VkIA0KK0hpcyBvd246IGZvciBuZWl0aGVyIGRvIHRoZSBTcGlyaXRzIGRhbW5lZCANCitMb3NlIGFsbCB0aGVpciB2aXJ0dWU7IGxlc3QgYmFkIG1lbiBzaG91bGQgYm9hc3QgDQorVGhlaXIgc3BlY2lvdXMgZGVlZHMgb24gZWFydGgsIHdoaWNoIGdsb3J5IGV4Y2l0ZXMsIA0KK09yIGNsb3NlIGFtYml0aW9uIHZhcm5pc2hlZCBvJ2VyIHdpdGggemVhbC4gDQorICBUaHVzIHRoZXkgdGhlaXIgZG91YnRmdWwgY29uc3VsdGF0aW9ucyBkYXJrIA0KK0VuZGVkLCByZWpvaWNpbmcgaW4gdGhlaXIgbWF0Y2hsZXNzIENoaWVmOiANCitBcywgd2hlbiBmcm9tIG1vdW50YWluLXRvcHMgdGhlIGR1c2t5IGNsb3VkcyANCitBc2NlbmRpbmcsIHdoaWxlIHRoZSBub3J0aCB3aW5kIHNsZWVwcywgbydlcnNwcmVhZCANCitIZWF2ZW4ncyBjaGVlcmZ1bCBmYWNlLCB0aGUgbG91cmluZyBlbGVtZW50IA0KK1Njb3dscyBvJ2VyIHRoZSBkYXJrZW5lZCBsYW5kc2NhcGUgc25vdyBvciBzaG93ZXIsIA0KK0lmIGNoYW5jZSB0aGUgcmFkaWFudCBzdW4sIHdpdGggZmFyZXdlbGwgc3dlZXQsIA0KK0V4dGVuZCBoaXMgZXZlbmluZyBiZWFtLCB0aGUgZmllbGRzIHJldml2ZSwgDQorVGhlIGJpcmRzIHRoZWlyIG5vdGVzIHJlbmV3LCBhbmQgYmxlYXRpbmcgaGVyZHMgDQorQXR0ZXN0IHRoZWlyIGpveSwgdGhhdCBoaWxsIGFuZCB2YWxsZXkgcmluZ3MuIA0KK08gc2hhbWUgdG8gbWVuISBEZXZpbCB3aXRoIGRldmlsIGRhbW5lZCANCitGaXJtIGNvbmNvcmQgaG9sZHM7IG1lbiBvbmx5IGRpc2FncmVlIA0KK09mIGNyZWF0dXJlcyByYXRpb25hbCwgdGhvdWdoIHVuZGVyIGhvcGUgDQorT2YgaGVhdmVubHkgZ3JhY2UsIGFuZCwgR29kIHByb2NsYWltaW5nIHBlYWNlLCANCitZZXQgbGl2ZSBpbiBoYXRyZWQsIGVubWl0eSwgYW5kIHN0cmlmZSANCitBbW9uZyB0aGVtc2VsdmVzLCBhbmQgbGV2eSBjcnVlbCB3YXJzIA0KK1dhc3RpbmcgdGhlIGVhcnRoLCBlYWNoIG90aGVyIHRvIGRlc3Ryb3k6IA0KK0FzIGlmICh3aGljaCBtaWdodCBpbmR1Y2UgdXMgdG8gYWNjb3JkKSANCitNYW4gaGFkIG5vdCBoZWxsaXNoIGZvZXMgZW5vdyBiZXNpZGVzLCANCitUaGF0IGRheSBhbmQgbmlnaHQgZm9yIGhpcyBkZXN0cnVjdGlvbiB3YWl0ISANCisgIFRoZSBTdHlnaWFuIGNvdW5jaWwgdGh1cyBkaXNzb2x2ZWQ7IGFuZCBmb3J0aCANCitJbiBvcmRlciBjYW1lIHRoZSBncmFuZCBpbmZlcm5hbCBQZWVyczogDQorTWlkc3QgY2FtZSB0aGVpciBtaWdodHkgUGFyYW1vdW50LCBhbmQgc2VlbWVkIA0KK0Fsb25lIHRoJyBhbnRhZ29uaXN0IG9mIEhlYXZlbiwgbm9yIGxlc3MgDQorVGhhbiBIZWxsJ3MgZHJlYWQgRW1wZXJvciwgd2l0aCBwb21wIHN1cHJlbWUsIA0KK0FuZCBnb2QtbGlrZSBpbWl0YXRlZCBzdGF0ZTogaGltIHJvdW5kIA0KK0EgZ2xvYmUgb2YgZmllcnkgU2VyYXBoaW0gZW5jbG9zZWQgDQorV2l0aCBicmlnaHQgZW1ibGF6b25yeSwgYW5kIGhvcnJlbnQgYXJtcy4gDQorVGhlbiBvZiB0aGVpciBzZXNzaW9uIGVuZGVkIHRoZXkgYmlkIGNyeSANCitXaXRoIHRydW1wZXQncyByZWdhbCBzb3VuZCB0aGUgZ3JlYXQgcmVzdWx0OiANCitUb3dhcmQgdGhlIGZvdXIgd2luZHMgZm91ciBzcGVlZHkgQ2hlcnViaW0gDQorUHV0IHRvIHRoZWlyIG1vdXRocyB0aGUgc291bmRpbmcgYWxjaGVteSwgDQorQnkgaGVyYWxkJ3Mgdm9pY2UgZXhwbGFpbmVkOyB0aGUgaG9sbG93IEFieXNzIA0KK0hlYXJkIGZhciBhZG4gd2lkZSwgYW5kIGFsbCB0aGUgaG9zdCBvZiBIZWxsIA0KK1dpdGggZGVhZmVuaW5nIHNob3V0IHJldHVybmVkIHRoZW0gbG91ZCBhY2NsYWltLiANCitUaGVuY2UgbW9yZSBhdCBlYXNlIHRoZWlyIG1pbmRzLCBhbmQgc29tZXdoYXQgcmFpc2VkIA0KK0J5IGZhbHNlIHByZXN1bXB0dW91cyBob3BlLCB0aGUgcmFuZ2VkIFBvd2VycyANCitEaXNiYW5kOyBhbmQsIHdhbmRlcmluZywgZWFjaCBoaXMgc2V2ZXJhbCB3YXkgDQorUHVyc3VlcywgYXMgaW5jbGluYXRpb24gb3Igc2FkIGNob2ljZSANCitMZWFkcyBoaW0gcGVycGxleGVkLCB3aGVyZSBoZSBtYXkgbGlrZWxpZXN0IGZpbmQgDQorVHJ1Y2UgdG8gaGlzIHJlc3RsZXNzIHRob3VnaHRzLCBhbmQgZW50ZXJ0YWluIA0KK1RoZSBpcmtzb21lIGhvdXJzLCB0aWxsIGhpcyBncmVhdCBDaGllZiByZXR1cm4uIA0KK1BhcnQgb24gdGhlIHBsYWluLCBvciBpbiB0aGUgYWlyIHN1YmxpbWUsIA0KK1Vwb24gdGhlIHdpbmcgb3IgaW4gc3dpZnQgcmFjZSBjb250ZW5kLCANCitBcyBhdCB0aCcgT2x5bXBpYW4gZ2FtZXMgb3IgUHl0aGlhbiBmaWVsZHM7IA0KK1BhcnQgY3VyYiB0aGVpciBmaWVyeSBzdGVlZHMsIG9yIHNodW4gdGhlIGdvYWwgDQorV2l0aCByYXBpZCB3aGVlbHMsIG9yIGZyb250ZWQgYnJpZ2FkZXMgZm9ybTogDQorQXMgd2hlbiwgdG8gd2FybiBwcm91ZCBjaXRpZXMsIHdhciBhcHBlYXJzIA0KK1dhZ2VkIGluIHRoZSB0cm91YmxlZCBza3ksIGFuZCBhcm1pZXMgcnVzaCANCitUbyBiYXR0bGUgaW4gdGhlIGNsb3VkczsgYmVmb3JlIGVhY2ggdmFuIA0KK1ByaWNrIGZvcnRoIHRoZSBhaXJ5IGtuaWdodHMsIGFuZCBjb3VjaCB0aGVpciBzcGVhcnMsIA0KK1RpbGwgdGhpY2tlc3QgbGVnaW9ucyBjbG9zZTsgd2l0aCBmZWF0cyBvZiBhcm1zIA0KK0Zyb20gZWl0aGVyIGVuZCBvZiBoZWF2ZW4gdGhlIHdlbGtpbiBidXJucy4gDQorT3RoZXJzLCB3aXRoIHZhc3QgVHlwaG9lYW4gcmFnZSwgbW9yZSBmZWxsLCANCitSZW5kIHVwIGJvdGggcm9ja3MgYW5kIGhpbGxzLCBhbmQgcmlkZSB0aGUgYWlyIA0KK0luIHdoaXJsd2luZDsgSGVsbCBzY2FyY2UgaG9sZHMgdGhlIHdpbGQgdXByb2FyOi0tIA0KK0FzIHdoZW4gQWxjaWRlcywgZnJvbSBPZWNoYWxpYSBjcm93bmVkIA0KK1dpdGggY29ucXVlc3QsIGZlbHQgdGgnIGVudmVub21lZCByb2JlLCBhbmQgdG9yZSANCitUaHJvdWdoIHBhaW4gdXAgYnkgdGhlIHJvb3RzIFRoZXNzYWxpYW4gcGluZXMsIA0KK0FuZCBMaWNoYXMgZnJvbSB0aGUgdG9wIG9mIE9ldGEgdGhyZXcgDQorSW50byB0aCcgRXVib2ljIHNlYS4gT3RoZXJzLCBtb3JlIG1pbGQsIA0KK1JldHJlYXRlZCBpbiBhIHNpbGVudCB2YWxsZXksIHNpbmcgDQorV2l0aCBub3RlcyBhbmdlbGljYWwgdG8gbWFueSBhIGhhcnAgDQorVGhlaXIgb3duIGhlcm9pYyBkZWVkcywgYW5kIGhhcGxlc3MgZmFsbCANCitCeSBkb29tIG9mIGJhdHRsZSwgYW5kIGNvbXBsYWluIHRoYXQgRmF0ZSANCitGcmVlIFZpcnR1ZSBzaG91bGQgZW50aHJhbGwgdG8gRm9yY2Ugb3IgQ2hhbmNlLiANCitUaGVpciBzb25nIHdhcyBwYXJ0aWFsOyBidXQgdGhlIGhhcm1vbnkgDQorKFdoYXQgY291bGQgaXQgbGVzcyB3aGVuIFNwaXJpdHMgaW1tb3J0YWwgc2luZz8pIA0KK1N1c3BlbmRlZCBIZWxsLCBhbmQgdG9vayB3aXRoIHJhdmlzaG1lbnQgDQorVGhlIHRocm9uZ2luZyBhdWRpZW5jZS4gSW4gZGlzY291cnNlIG1vcmUgc3dlZXQgDQorKEZvciBFbG9xdWVuY2UgdGhlIFNvdWwsIFNvbmcgY2hhcm1zIHRoZSBTZW5zZSkgDQorT3RoZXJzIGFwYXJ0IHNhdCBvbiBhIGhpbGwgcmV0aXJlZCwgDQorSW4gdGhvdWdodHMgbW9yZSBlbGV2YXRlLCBhbmQgcmVhc29uZWQgaGlnaCANCitPZiBQcm92aWRlbmNlLCBGb3Jla25vd2xlZGdlLCBXaWxsLCBhbmQgRmF0ZS0tIA0KK0ZpeGVkIGZhdGUsIGZyZWUgd2lsbCwgZm9yZWtub3dsZWRnZSBhYnNvbHV0ZSwgDQorQW5kIGZvdW5kIG5vIGVuZCwgaW4gd2FuZGVyaW5nIG1hemVzIGxvc3QuIA0KK09mIGdvb2QgYW5kIGV2aWwgbXVjaCB0aGV5IGFyZ3VlZCB0aGVuLCANCitPZiBoYXBwaW5lc3MgYW5kIGZpbmFsIG1pc2VyeSwgDQorUGFzc2lvbiBhbmQgYXBhdGh5LCBhbmQgZ2xvcnkgYW5kIHNoYW1lOiANCitWYWluIHdpc2RvbSBhbGwsIGFuZCBmYWxzZSBwaGlsb3NvcGh5IS0tIA0KK1lldCwgd2l0aCBhIHBsZWFzaW5nIHNvcmNlcnksIGNvdWxkIGNoYXJtIA0KK1BhaW4gZm9yIGEgd2hpbGUgb3IgYW5ndWlzaCwgYW5kIGV4Y2l0ZSANCitGYWxsYWNpb3VzIGhvcGUsIG9yIGFybSB0aCcgb2JkdXJlZCBicmVhc3QgDQorV2l0aCBzdHViYm9ybiBwYXRpZW5jZSBhcyB3aXRoIHRyaXBsZSBzdGVlbC4gDQorQW5vdGhlciBwYXJ0LCBpbiBzcXVhZHJvbnMgYW5kIGdyb3NzIGJhbmRzLCANCitPbiBib2xkIGFkdmVudHVyZSB0byBkaXNjb3ZlciB3aWRlIA0KK1RoYXQgZGlzbWFsIHdvcmxkLCBpZiBhbnkgY2xpbWUgcGVyaGFwcyANCitNaWdodCB5aWVsZCB0aGVtIGVhc2llciBoYWJpdGF0aW9uLCBiZW5kIA0KK0ZvdXIgd2F5cyB0aGVpciBmbHlpbmcgbWFyY2gsIGFsb25nIHRoZSBiYW5rcyANCitPZiBmb3VyIGluZmVybmFsIHJpdmVycywgdGhhdCBkaXNnb3JnZSANCitJbnRvIHRoZSBidXJuaW5nIGxha2UgdGhlaXIgYmFsZWZ1bCBzdHJlYW1zLS0gDQorQWJob3JyZWQgU3R5eCwgdGhlIGZsb29kIG9mIGRlYWRseSBoYXRlOyANCitTYWQgQWNoZXJvbiBvZiBzb3Jyb3csIGJsYWNrIGFuZCBkZWVwOyANCitDb2N5dHVzLCBuYW1lZCBvZiBsYW1lbnRhdGlvbiBsb3VkIA0KK0hlYXJkIG9uIHRoZSBydWVmdWwgc3RyZWFtOyBmaWVyY2UgUGhsZWdldG9uLCANCitXaG9zZSB3YXZlcyBvZiB0b3JyZW50IGZpcmUgaW5mbGFtZSB3aXRoIHJhZ2UuIA0KK0ZhciBvZmYgZnJvbSB0aGVzZSwgYSBzbG93IGFuZCBzaWxlbnQgc3RyZWFtLCANCitMZXRoZSwgdGhlIHJpdmVyIG9mIG9ibGl2aW9uLCByb2xscyANCitIZXIgd2F0ZXJ5IGxhYnlyaW50aCwgd2hlcmVvZiB3aG8gZHJpbmtzIA0KK0ZvcnRod2l0aCBoaXMgZm9ybWVyIHN0YXRlIGFuZCBiZWluZyBmb3JnZXRzLS0gDQorRm9yZ2V0cyBib3RoIGpveSBhbmQgZ3JpZWYsIHBsZWFzdXJlIGFuZCBwYWluLiANCitCZXlvbmQgdGhpcyBmbG9vZCBhIGZyb3plbiBjb250aW5lbnQgDQorTGllcyBkYXJrIGFuZCB3aWxkLCBiZWF0IHdpdGggcGVycGV0dWFsIHN0b3JtcyANCitPZiB3aGlybHdpbmQgYW5kIGRpcmUgaGFpbCwgd2hpY2ggb24gZmlybSBsYW5kIA0KK1RoYXdzIG5vdCwgYnV0IGdhdGhlcnMgaGVhcCwgYW5kIHJ1aW4gc2VlbXMgDQorT2YgYW5jaWVudCBwaWxlOyBhbGwgZWxzZSBkZWVwIHNub3cgYW5kIGljZSwgDQorQSBndWxmIHByb2ZvdW5kIGFzIHRoYXQgU2VyYm9uaWFuIGJvZyANCitCZXR3aXh0IERhbWlhdGEgYW5kIE1vdW50IENhc2l1cyBvbGQsIA0KK1doZXJlIGFybWllcyB3aG9sZSBoYXZlIHN1bms6IHRoZSBwYXJjaGluZyBhaXIgDQorQnVybnMgZnJvcmUsIGFuZCBjb2xkIHBlcmZvcm1zIHRoJyBlZmZlY3Qgb2YgZmlyZS4gDQorVGhpdGhlciwgYnkgaGFycHktZm9vdGVkIEZ1cmllcyBoYWxlZCwgDQorQXQgY2VydGFpbiByZXZvbHV0aW9ucyBhbGwgdGhlIGRhbW5lZCANCitBcmUgYnJvdWdodDsgYW5kIGZlZWwgYnkgdHVybnMgdGhlIGJpdHRlciBjaGFuZ2UgDQorT2YgZmllcmNlIGV4dHJlbWVzLCBleHRyZW1lcyBieSBjaGFuZ2UgbW9yZSBmaWVyY2UsIA0KK0Zyb20gYmVkcyBvZiByYWdpbmcgZmlyZSB0byBzdGFydmUgaW4gaWNlIA0KK1RoZWlyIHNvZnQgZXRoZXJlYWwgd2FybXRoLCBhbmQgdGhlcmUgdG8gcGluZSANCitJbW1vdmFibGUsIGluZml4ZWQsIGFuZCBmcm96ZW4gcm91bmQgDQorUGVyaW9kcyBvZiB0aW1lLC0tdGhlbmNlIGh1cnJpZWQgYmFjayB0byBmaXJlLiANCitUaGV5IGZlcnJ5IG92ZXIgdGhpcyBMZXRoZWFuIHNvdW5kIA0KK0JvdGggdG8gYW5kIGZybywgdGhlaXIgc29ycm93IHRvIGF1Z21lbnQsIA0KK0FuZCB3aXNoIGFuZCBzdHJ1Z2dsZSwgYXMgdGhleSBwYXNzLCB0byByZWFjaCANCitUaGUgdGVtcHRpbmcgc3RyZWFtLCB3aXRoIG9uZSBzbWFsbCBkcm9wIHRvIGxvc2UgDQorSW4gc3dlZXQgZm9yZ2V0ZnVsbmVzcyBhbGwgcGFpbiBhbmQgd29lLCANCitBbGwgaW4gb25lIG1vbWVudCwgYW5kIHNvIG5lYXIgdGhlIGJyaW5rOyANCitCdXQgRmF0ZSB3aXRoc3RhbmRzLCBhbmQsIHRvIG9wcG9zZSB0aCcgYXR0ZW1wdCwgDQorTWVkdXNhIHdpdGggR29yZ29uaWFuIHRlcnJvciBndWFyZHMgDQorVGhlIGZvcmQsIGFuZCBvZiBpdHNlbGYgdGhlIHdhdGVyIGZsaWVzIA0KK0FsbCB0YXN0ZSBvZiBsaXZpbmcgd2lnaHQsIGFzIG9uY2UgaXQgZmxlZCANCitUaGUgbGlwIG9mIFRhbnRhbHVzLiBUaHVzIHJvdmluZyBvbiANCitJbiBjb25mdXNlZCBtYXJjaCBmb3Jsb3JuLCB0aCcgYWR2ZW50dXJvdXMgYmFuZHMsIA0KK1dpdGggc2h1ZGRlcmluZyBob3Jyb3IgcGFsZSwgYW5kIGV5ZXMgYWdoYXN0LCANCitWaWV3ZWQgZmlyc3QgdGhlaXIgbGFtZW50YWJsZSBsb3QsIGFuZCBmb3VuZCANCitObyByZXN0LiBUaHJvdWdoIG1hbnkgYSBkYXJrIGFuZCBkcmVhcnkgdmFsZSANCitUaGV5IHBhc3NlZCwgYW5kIG1hbnkgYSByZWdpb24gZG9sb3JvdXMsIA0KK08nZXIgbWFueSBhIGZyb3plbiwgbWFueSBhIGZpZXJ5IGFscCwgDQorUm9ja3MsIGNhdmVzLCBsYWtlcywgZmVucywgYm9ncywgZGVucywgYW5kIHNoYWRlcyBvZiBkZWF0aC0tIA0KK0EgdW5pdmVyc2Ugb2YgZGVhdGgsIHdoaWNoIEdvZCBieSBjdXJzZSANCitDcmVhdGVkIGV2aWwsIGZvciBldmlsIG9ubHkgZ29vZDsgDQorV2hlcmUgYWxsIGxpZmUgZGllcywgZGVhdGggbGl2ZXMsIGFuZCBOYXR1cmUgYnJlZWRzLCANCitQZXJ2ZXJzZSwgYWxsIG1vbnN0cm91cywgYWxsIHByb2RpZ2lvdXMgdGhpbmdzLCANCitPYm9taW5hYmxlLCBpbnV0dGVyYWJsZSwgYW5kIHdvcnNlIA0KK1RoYW4gZmFibGVzIHlldCBoYXZlIGZlaWduZWQgb3IgZmVhciBjb25jZWl2ZWQsIA0KK0dvcmdvbnMsIGFuZCBIeWRyYXMsIGFuZCBDaGltZXJhcyBkaXJlLiANCisgIE1lYW53aGlsZSB0aGUgQWR2ZXJzYXJ5IG9mIEdvZCBhbmQgTWFuLCANCitTYXRhbiwgd2l0aCB0aG91Z2h0cyBpbmZsYW1lZCBvZiBoaWdoZXN0IGRlc2lnbiwgDQorUHV0cyBvbiBzd2lmdCB3aW5ncywgYW5kIHRvd2FyZCB0aGUgZ2F0ZXMgb2YgSGVsbCANCitFeHBsb3JlcyBoaXMgc29saXRhcnkgZmxpZ2h0OiBzb21ldGltZXMgDQorSGUgc2NvdXJzIHRoZSByaWdodCBoYW5kIGNvYXN0LCBzb21ldGltZXMgdGhlIGxlZnQ7IA0KK05vdyBzaGF2ZXMgd2l0aCBsZXZlbCB3aW5nIHRoZSBkZWVwLCB0aGVuIHNvYXJzIA0KK1VwIHRvIHRoZSBmaWVyeSBjb25jYXZlIHRvd2VyaW5nIGhpZ2guIA0KK0FzIHdoZW4gZmFyIG9mZiBhdCBzZWEgYSBmbGVldCBkZXNjcmllZCANCitIYW5ncyBpbiB0aGUgY2xvdWRzLCBieSBlcXVpbm9jdGlhbCB3aW5kcyANCitDbG9zZSBzYWlsaW5nIGZyb20gQmVuZ2FsYSwgb3IgdGhlIGlzbGVzIA0KK09mIFRlcm5hdGUgYW5kIFRpZG9yZSwgd2hlbmNlIG1lcmNoYW50cyBicmluZyANCitUaGVpciBzcGljeSBkcnVnczsgdGhleSBvbiB0aGUgdHJhZGluZyBmbG9vZCwgDQorVGhyb3VnaCB0aGUgd2lkZSBFdGhpb3BpYW4gdG8gdGhlIENhcGUsIA0KK1BseSBzdGVtbWluZyBuaWdodGx5IHRvd2FyZCB0aGUgcG9sZTogc28gc2VlbWVkIA0KK0ZhciBvZmYgdGhlIGZseWluZyBGaWVuZC4gQXQgbGFzdCBhcHBlYXIgDQorSGVsbC1ib3VuZHMsIGhpZ2ggcmVhY2hpbmcgdG8gdGhlIGhvcnJpZCByb29mLCANCitBbmQgdGhyaWNlIHRocmVlZm9sZCB0aGUgZ2F0ZXM7IHRocmVlIGZvbGRzIHdlcmUgYnJhc3MsIA0KK1RocmVlIGlyb24sIHRocmVlIG9mIGFkYW1hbnRpbmUgcm9jaywgDQorSW1wZW5ldHJhYmxlLCBpbXBhbGVkIHdpdGggY2lyY2xpbmcgZmlyZSwgDQorWWV0IHVuY29uc3VtZWQuIEJlZm9yZSB0aGUgZ2F0ZXMgdGhlcmUgc2F0IA0KK09uIGVpdGhlciBzaWRlIGEgZm9ybWlkYWJsZSBTaGFwZS4gDQorVGhlIG9uZSBzZWVtZWQgd29tYW4gdG8gdGhlIHdhaXN0LCBhbmQgZmFpciwgDQorQnV0IGVuZGVkIGZvdWwgaW4gbWFueSBhIHNjYWx5IGZvbGQsIA0KK1ZvbHVtaW5vdXMgYW5kIHZhc3QtLWEgc2VycGVudCBhcm1lZCANCitXaXRoIG1vcnRhbCBzdGluZy4gQWJvdXQgaGVyIG1pZGRsZSByb3VuZCANCitBIGNyeSBvZiBIZWxsLWhvdW5kcyBuZXZlci1jZWFzaW5nIGJhcmtlZCANCitXaXRoIHdpZGUgQ2VyYmVyZWFuIG1vdXRocyBmdWxsIGxvdWQsIGFuZCBydW5nIA0KK0EgaGlkZW91cyBwZWFsOyB5ZXQsIHdoZW4gdGhleSBsaXN0LCB3b3VsZCBjcmVlcCwgDQorSWYgYXVnaHQgZGlzdHVyYmVkIHRoZWlyIG5vaXNlLCBpbnRvIGhlciB3b21iLCANCitBbmQga2VubmVsIHRoZXJlOyB5ZXQgdGhlcmUgc3RpbGwgYmFya2VkIGFuZCBob3dsZWQgDQorV2l0aGluIHVuc2Vlbi4gRmFyIGxlc3MgYWJob3JyZWQgdGhhbiB0aGVzZSANCitWZXhlZCBTY3lsbGEsIGJhdGhpbmcgaW4gdGhlIHNlYSB0aGF0IHBhcnRzIA0KK0NhbGFicmlhIGZyb20gdGhlIGhvYXJzZSBUcmluYWNyaWFuIHNob3JlOyANCitOb3IgdWdsaWVyIGZvbGxvdyB0aGUgbmlnaHQtaGFnLCB3aGVuLCBjYWxsZWQgDQorSW4gc2VjcmV0LCByaWRpbmcgdGhyb3VnaCB0aGUgYWlyIHNoZSBjb21lcywgDQorTHVyZWQgd2l0aCB0aGUgc21lbGwgb2YgaW5mYW50IGJsb29kLCB0byBkYW5jZSANCitXaXRoIExhcGxhbmQgd2l0Y2hlcywgd2hpbGUgdGhlIGxhYm91cmluZyBtb29uIA0KK0VjbGlwc2VzIGF0IHRoZWlyIGNoYXJtcy4gVGhlIG90aGVyIFNoYXBlLS0gDQorSWYgc2hhcGUgaXQgbWlnaHQgYmUgY2FsbGVkIHRoYXQgc2hhcGUgaGFkIG5vbmUgDQorRGlzdGluZ3Vpc2hhYmxlIGluIG1lbWJlciwgam9pbnQsIG9yIGxpbWI7IA0KK09yIHN1YnN0YW5jZSBtaWdodCBiZSBjYWxsZWQgdGhhdCBzaGFkb3cgc2VlbWVkLCANCitGb3IgZWFjaCBzZWVtZWQgZWl0aGVyLS1ibGFjayBpdCBzdG9vZCBhcyBOaWdodCwgDQorRmllcmNlIGFzIHRlbiBGdXJpZXMsIHRlcnJpYmxlIGFzIEhlbGwsIA0KK0FuZCBzaG9vayBhIGRyZWFkZnVsIGRhcnQ6IHdoYXQgc2VlbWVkIGhpcyBoZWFkIA0KK1RoZSBsaWtlbmVzcyBvZiBhIGtpbmdseSBjcm93biBoYWQgb24uIA0KK1NhdGFuIHdhcyBub3cgYXQgaGFuZCwgYW5kIGZyb20gaGlzIHNlYXQgDQorVGhlIG1vbnN0ZXIgbW92aW5nIG9ud2FyZCBjYW1lIGFzIGZhc3QgDQorV2l0aCBob3JyaWQgc3RyaWRlczsgSGVsbCB0cmVtYmxlZCBhcyBoZSBzdHJvZGUuIA0KK1RoJyB1bmRhdW50ZWQgRmllbmQgd2hhdCB0aGlzIG1pZ2h0IGJlIGFkbWlyZWQtLSANCitBZG1pcmVkLCBub3QgZmVhcmVkIChHb2QgYW5kIGhpcyBTb24gZXhjZXB0LCANCitDcmVhdGVkIHRoaW5nIG5hdWdodCB2YWx1ZWQgaGUgbm9yIHNodW5uZWQpLCANCitBbmQgd2l0aCBkaXNkYWluZnVsIGxvb2sgdGh1cyBmaXJzdCBiZWdhbjotLSANCisgICJXaGVuY2UgYW5kIHdoYXQgYXJ0IHRob3UsIGV4ZWNyYWJsZSBTaGFwZSwgDQorVGhhdCBkYXInc3QsIHRob3VnaCBncmltIGFuZCB0ZXJyaWJsZSwgYWR2YW5jZSANCitUaHkgbWlzY3JlYXRlZCBmcm9udCBhdGh3YXJ0IG15IHdheSANCitUbyB5b25kZXIgZ2F0ZXM/IFRocm91Z2ggdGhlbSBJIG1lYW4gdG8gcGFzcywgDQorVGhhdCBiZSBhc3N1cmVkLCB3aXRob3V0IGxlYXZlIGFza2VkIG9mIHRoZWUuIA0KK1JldGlyZTsgb3IgdGFzdGUgdGh5IGZvbGx5LCBhbmQgbGVhcm4gYnkgcHJvb2YsIA0KK0hlbGwtYm9ybiwgbm90IHRvIGNvbnRlbmQgd2l0aCBTcGlyaXRzIG9mIEhlYXZlbi4iIA0KKyAgVG8gd2hvbSB0aGUgR29ibGluLCBmdWxsIG9mIHdyYXRoLCByZXBsaWVkOi0tIA0KKyJBcnQgdGhvdSB0aGF0IHRyYWl0b3IgQW5nZWw/IGFydCB0aG91IGhlLCANCitXaG8gZmlyc3QgYnJva2UgcGVhY2UgaW4gSGVhdmVuIGFuZCBmYWl0aCwgdGlsbCB0aGVuIA0KK1VuYnJva2VuLCBhbmQgaW4gcHJvdWQgcmViZWxsaW91cyBhcm1zIA0KK0RyZXcgYWZ0ZXIgaGltIHRoZSB0aGlyZCBwYXJ0IG9mIEhlYXZlbidzIHNvbnMsIA0KK0Nvbmp1cmVkIGFnYWluc3QgdGhlIEhpZ2hlc3QtLWZvciB3aGljaCBib3RoIHRob3UgDQorQW5kIHRoZXksIG91dGNhc3QgZnJvbSBHb2QsIGFyZSBoZXJlIGNvbmRlbW5lZCANCitUbyB3YXN0ZSBldGVybmFsIGRheXMgaW4gd29lIGFuZCBwYWluPyANCitBbmQgcmVja29uJ3N0IHRob3UgdGh5c2VsZiB3aXRoIFNwaXJpdHMgb2YgSGVhdmVuIA0KK0hlbGwtZG9vbWVkLCBhbmQgYnJlYXRoJ3N0IGRlZmlhbmNlIGhlcmUgYW5kIHNjb3JuLCANCitXaGVyZSBJIHJlaWduIGtpbmcsIGFuZCwgdG8gZW5yYWdlIHRoZWUgbW9yZSwgDQorVGh5IGtpbmcgYW5kIGxvcmQ/IEJhY2sgdG8gdGh5IHB1bmlzaG1lbnQsIA0KK0ZhbHNlIGZ1Z2l0aXZlOyBhbmQgdG8gdGh5IHNwZWVkIGFkZCB3aW5ncywgDQorTGVzdCB3aXRoIGEgd2hpcCBvZiBzY29ycGlvbnMgSSBwdXJzdWUgDQorVGh5IGxpbmdlcmluZywgb3Igd2l0aCBvbmUgc3Ryb2tlIG9mIHRoaXMgZGFydCANCitTdHJhbmdlIGhvcnJvciBzZWl6ZSB0aGVlLCBhbmQgcGFuZ3MgdW5mZWx0IGJlZm9yZS4iIA0KKyAgU28gc3Bha2UgdGhlIGdyaXNseSBUZXJyb3IsIGFuZCBpbiBzaGFwZSwgDQorU28gc3BlYWtpbmcgYW5kIHNvIHRocmVhdGVuaW5nLCBncmV3IHRlbmZvbGQsIA0KK01vcmUgZHJlYWRmdWwgYW5kIGRlZm9ybS4gT24gdGgnIG90aGVyIHNpZGUsIA0KK0luY2Vuc2VkIHdpdGggaW5kaWduYXRpb24sIFNhdGFuIHN0b29kIA0KK1VudGVycmlmaWVkLCBhbmQgbGlrZSBhIGNvbWV0IGJ1cm5lZCwgDQorVGhhdCBmaXJlcyB0aGUgbGVuZ3RoIG9mIE9waGl1Y2h1cyBodWdlIA0KK0luIHRoJyBhcmN0aWMgc2t5LCBhbmQgZnJvbSBoaXMgaG9ycmlkIGhhaXIgDQorU2hha2VzIHBlc3RpbGVuY2UgYW5kIHdhci4gRWFjaCBhdCB0aGUgaGVhZCANCitMZXZlbGxlZCBoaXMgZGVhZGx5IGFpbTsgdGhlaXIgZmF0YWwgaGFuZHMgDQorTm8gc2Vjb25kIHN0cm9rZSBpbnRlbmQ7IGFuZCBzdWNoIGEgZnJvd24gDQorRWFjaCBjYXN0IGF0IHRoJyBvdGhlciBhcyB3aGVuIHR3byBibGFjayBjbG91ZHMsIA0KK1dpdGggaGVhdmVuJ3MgYXJ0aWxsZXJ5IGZyYXVnaHQsIGNhbWUgcmF0dGxpbmcgb24gDQorT3ZlciB0aGUgQ2FzcGlhbiwtLXRoZW4gc3RhbmQgZnJvbnQgdG8gZnJvbnQgDQorSG92ZXJpbmcgYSBzcGFjZSwgdGlsbCB3aW5kcyB0aGUgc2lnbmFsIGJsb3cgDQorVG8gam9pbiB0aGVpciBkYXJrIGVuY291bnRlciBpbiBtaWQtYWlyLiANCitTbyBmcm93bmVkIHRoZSBtaWdodHkgY29tYmF0YW50cyB0aGF0IEhlbGwgDQorR3JldyBkYXJrZXIgYXQgdGhlaXIgZnJvd247IHNvIG1hdGNoZWQgdGhleSBzdG9vZDsgDQorRm9yIG5ldmVyIGJ1dCBvbmNlIG1vcmUgd2FzIHdpdGhlciBsaWtlIA0KK1RvIG1lZXQgc28gZ3JlYXQgYSBmb2UuIEFuZCBub3cgZ3JlYXQgZGVlZHMgDQorSGFkIGJlZW4gYWNoaWV2ZWQsIHdoZXJlb2YgYWxsIEhlbGwgaGFkIHJ1bmcsIA0KK0hhZCBub3QgdGhlIHNuYWt5IFNvcmNlcmVzcywgdGhhdCBzYXQgDQorRmFzdCBieSBIZWxsLWdhdGUgYW5kIGtlcHQgdGhlIGZhdGFsIGtleSwgDQorUmlzZW4sIGFuZCB3aXRoIGhpZGVvdXMgb3V0Y3J5IHJ1c2hlZCBiZXR3ZWVuLiANCisgICJPIGZhdGhlciwgd2hhdCBpbnRlbmRzIHRoeSBoYW5kLCIgc2hlIGNyaWVkLCANCisiQWdhaW5zdCB0aHkgb25seSBzb24/IFdoYXQgZnVyeSwgTyBzb24sIA0KK1Bvc3Nlc3NlcyB0aGVlIHRvIGJlbmQgdGhhdCBtb3J0YWwgZGFydCANCitBZ2FpbnN0IHRoeSBmYXRoZXIncyBoZWFkPyBBbmQga25vdydzdCBmb3Igd2hvbT8gDQorRm9yIGhpbSB3aG8gc2l0cyBhYm92ZSwgYW5kIGxhdWdocyB0aGUgd2hpbGUgDQorQXQgdGhlZSwgb3JkYWluZWQgaGlzIGRydWRnZSB0byBleGVjdXRlIA0KK1doYXRlJ2VyIGhpcyB3cmF0aCwgd2hpY2ggaGUgY2FsbHMganVzdGljZSwgYmlkcy0tIA0KK0hpcyB3cmF0aCwgd2hpY2ggb25lIGRheSB3aWxsIGRlc3Ryb3kgeWUgYm90aCEiIA0KKyAgU2hlIHNwYWtlLCBhbmQgYXQgaGVyIHdvcmRzIHRoZSBoZWxsaXNoIFBlc3QgDQorRm9yYm9yZTogdGhlbiB0aGVzZSB0byBoZXIgU2F0YW4gcmV0dXJuZWQ6LS0gDQorICAiU28gc3RyYW5nZSB0aHkgb3V0Y3J5LCBhbmQgdGh5IHdvcmRzIHNvIHN0cmFuZ2UgDQorVGhvdSBpbnRlcnBvc2VzdCwgdGhhdCBteSBzdWRkZW4gaGFuZCwgDQorUHJldmVudGVkLCBzcGFyZXMgdG8gdGVsbCB0aGVlIHlldCBieSBkZWVkcyANCitXaGF0IGl0IGludGVuZHMsIHRpbGwgZmlyc3QgSSBrbm93IG9mIHRoZWUgDQorV2hhdCB0aGluZyB0aG91IGFydCwgdGh1cyBkb3VibGUtZm9ybWVkLCBhbmQgd2h5LCANCitJbiB0aGlzIGluZmVybmFsIHZhbGUgZmlyc3QgbWV0LCB0aG91IGNhbGwnc3QgDQorTWUgZmF0aGVyLCBhbmQgdGhhdCBwaGFudGFzbSBjYWxsJ3N0IG15IHNvbi4gDQorSSBrbm93IHRoZWUgbm90LCBub3IgZXZlciBzYXcgdGlsbCBub3cgDQorU2lnaHQgbW9yZSBkZXRlc3RhYmxlIHRoYW4gaGltIGFuZCB0aGVlLiIgDQorICBUJyB3aG9tIHRodXMgdGhlIFBvcnRyZXNzIG9mIEhlbGwtZ2F0ZSByZXBsaWVkOi0tIA0KKyJIYXN0IHRob3UgZm9yZ290IG1lLCB0aGVuOyBhbmQgZG8gSSBzZWVtIA0KK05vdyBpbiB0aGluZSBleWUgc28gZm91bD8tLW9uY2UgZGVlbWVkIHNvIGZhaXIgDQorSW4gSGVhdmVuLCB3aGVuIGF0IHRoJyBhc3NlbWJseSwgYW5kIGluIHNpZ2h0IA0KK09mIGFsbCB0aGUgU2VyYXBoaW0gd2l0aCB0aGVlIGNvbWJpbmVkIA0KK0luIGJvbGQgY29uc3BpcmFjeSBhZ2FpbnN0IEhlYXZlbidzIEtpbmcsIA0KK0FsbCBvbiBhIHN1ZGRlbiBtaXNlcmFibGUgcGFpbiANCitTdXJwcmlzZWQgdGhlZSwgZGltIHRoaW5lIGV5ZXMgYW5kIGRpenp5IHN3dW0gDQorSW4gZGFya25lc3MsIHdoaWxlIHRoeSBoZWFkIGZsYW1lcyB0aGljayBhbmQgZmFzdCANCitUaHJldyBmb3J0aCwgdGlsbCBvbiB0aGUgbGVmdCBzaWRlIG9wZW5pbmcgd2lkZSwgDQorTGlrZXN0IHRvIHRoZWUgaW4gc2hhcGUgYW5kIGNvdW50ZW5hbmNlIGJyaWdodCwgDQorVGhlbiBzaGluaW5nIGhlYXZlbmx5IGZhaXIsIGEgZ29kZGVzcyBhcm1lZCwgDQorT3V0IG9mIHRoeSBoZWFkIEkgc3BydW5nLiBBbWF6ZW1lbnQgc2VpemVkIA0KK0FsbCB0aCcgaG9zdCBvZiBIZWF2ZW47IGJhY2sgdGhleSByZWNvaWxlZCBhZnJhaWQgDQorQXQgZmlyc3QsIGFuZCBjYWxsZWQgbWUgU2luLCBhbmQgZm9yIGEgc2lnbiANCitQb3J0ZW50b3VzIGhlbGQgbWU7IGJ1dCwgZmFtaWxpYXIgZ3Jvd24sIA0KK0kgcGxlYXNlZCwgYW5kIHdpdGggYXR0cmFjdGl2ZSBncmFjZXMgd29uIA0KK1RoZSBtb3N0IGF2ZXJzZS0tdGhlZSBjaGllZmx5LCB3aG8sIGZ1bGwgb2Z0IA0KK1RoeXNlbGYgaW4gbWUgdGh5IHBlcmZlY3QgaW1hZ2Ugdmlld2luZywgDQorQmVjYW0nc3QgZW5hbW91cmVkOyBhbmQgc3VjaCBqb3kgdGhvdSB0b29rJ3N0IA0KK1dpdGggbWUgaW4gc2VjcmV0IHRoYXQgbXkgd29tYiBjb25jZWl2ZWQgDQorQSBncm93aW5nIGJ1cmRlbi4gTWVhbndoaWxlIHdhciBhcm9zZSwgDQorQW5kIGZpZWxkcyB3ZXJlIGZvdWdodCBpbiBIZWF2ZW46IHdoZXJlaW4gcmVtYWluZWQgDQorKEZvciB3aGF0IGNvdWxkIGVsc2U/KSB0byBvdXIgQWxtaWdodHkgRm9lIA0KK0NsZWFyIHZpY3Rvcnk7IHRvIG91ciBwYXJ0IGxvc3MgYW5kIHJvdXQgDQorVGhyb3VnaCBhbGwgdGhlIEVtcHlyZWFuLiBEb3duIHRoZXkgZmVsbCwgDQorRHJpdmVuIGhlYWRsb25nIGZyb20gdGhlIHBpdGNoIG9mIEhlYXZlbiwgZG93biANCitJbnRvIHRoaXMgRGVlcDsgYW5kIGluIHRoZSBnZW5lcmFsIGZhbGwgDQorSSBhbHNvOiBhdCB3aGljaCB0aW1lIHRoaXMgcG93ZXJmdWwga2V5IA0KK0ludG8gbXkgaGFuZHMgd2FzIGdpdmVuLCB3aXRoIGNoYXJnZSB0byBrZWVwIA0KK1RoZXNlIGdhdGVzIGZvciBldmVyIHNodXQsIHdoaWNoIG5vbmUgY2FuIHBhc3MgDQorV2l0aG91dCBteSBvcGVuaW5nLiBQZW5zaXZlIGhlcmUgSSBzYXQgDQorQWxvbmU7IGJ1dCBsb25nIEkgc2F0IG5vdCwgdGlsbCBteSB3b21iLCANCitQcmVnbmFudCBieSB0aGVlLCBhbmQgbm93IGV4Y2Vzc2l2ZSBncm93biwgDQorUHJvZGlnaW91cyBtb3Rpb24gZmVsdCBhbmQgcnVlZnVsIHRocm9lcy4gDQorQXQgbGFzdCB0aGlzIG9kaW91cyBvZmZzcHJpbmcgd2hvbSB0aG91IHNlZXN0LCANCitUaGluZSBvd24gYmVnb3R0ZW4sIGJyZWFraW5nIHZpb2xlbnQgd2F5LCANCitUb3JlIHRocm91Z2ggbXkgZW50cmFpbHMsIHRoYXQsIHdpdGggZmVhciBhbmQgcGFpbiANCitEaXN0b3J0ZWQsIGFsbCBteSBuZXRoZXIgc2hhcGUgdGh1cyBncmV3IA0KK1RyYW5zZm9ybWVkOiBidXQgaGUgbXkgaW5icmVkIGVuZW15IA0KK0ZvcnRoIGlzc3VlZCwgYnJhbmRpc2hpbmcgaGlzIGZhdGFsIGRhcnQsIA0KK01hZGUgdG8gZGVzdHJveS4gSSBmbGVkLCBhbmQgY3JpZWQgb3V0IERlYXRoISANCitIZWxsIHRyZW1ibGVkIGF0IHRoZSBoaWRlb3VzIG5hbWUsIGFuZCBzaWdoZWQgDQorRnJvbSBhbGwgaGVyIGNhdmVzLCBhbmQgYmFjayByZXNvdW5kZWQgRGVhdGghIA0KK0kgZmxlZDsgYnV0IGhlIHB1cnN1ZWQgKHRob3VnaCBtb3JlLCBpdCBzZWVtcywgDQorSW5mbGFtZWQgd2l0aCBsdXN0IHRoYW4gcmFnZSksIGFuZCwgc3dpZnRlciBmYXIsIA0KK01lIG92ZXJ0b29rLCBoaXMgbW90aGVyLCBhbGwgZGlzbWF5ZWQsIA0KK0FuZCwgaW4gZW1icmFjZXMgZm9yY2libGUgYW5kIGZvdWwgDQorRW5nZW5kZXJpbmcgd2l0aCBtZSwgb2YgdGhhdCByYXBlIGJlZ290IA0KK1RoZXNlIHllbGxpbmcgbW9uc3RlcnMsIHRoYXQgd2l0aCBjZWFzZWxlc3MgY3J5IA0KK1N1cnJvdW5kIG1lLCBhcyB0aG91IHNhdydzdC0taG91cmx5IGNvbmNlaXZlZCANCitBbmQgaG91cmx5IGJvcm4sIHdpdGggc29ycm93IGluZmluaXRlIA0KK1RvIG1lOyBmb3IsIHdoZW4gdGhleSBsaXN0LCBpbnRvIHRoZSB3b21iIA0KK1RoYXQgYnJlZCB0aGVtIHRoZXkgcmV0dXJuLCBhbmQgaG93bCwgYW5kIGduYXcgDQorTXkgYm93ZWxzLCB0aGVpciByZXBhc3Q7IHRoZW4sIGJ1cnN0aW5nIGZvcnRoIA0KK0FmcmVzaCwgd2l0aCBjb25zY2lvdXMgdGVycm9ycyB2ZXggbWUgcm91bmQsIA0KK1RoYXQgcmVzdCBvciBpbnRlcm1pc3Npb24gbm9uZSBJIGZpbmQuIA0KK0JlZm9yZSBtaW5lIGV5ZXMgaW4gb3Bwb3NpdGlvbiBzaXRzIA0KK0dyaW0gRGVhdGgsIG15IHNvbiBhbmQgZm9lLCB3aG8gc2V0IHRoZW0gb24sIA0KK0FuZCBtZSwgaGlzIHBhcmVudCwgd291bGQgZnVsbCBzb29uIGRldm91ciANCitGb3Igd2FudCBvZiBvdGhlciBwcmV5LCBidXQgdGhhdCBoZSBrbm93cyANCitIaXMgZW5kIHdpdGggbWluZSBpbnZvbHZlZCwgYW5kIGtub3dzIHRoYXQgSSANCitTaG91bGQgcHJvdmUgYSBiaXR0ZXIgbW9yc2VsLCBhbmQgaGlzIGJhbmUsIA0KK1doZW5ldmVyIHRoYXQgc2hhbGwgYmU6IHNvIEZhdGUgcHJvbm91bmNlZC4gDQorQnV0IHRob3UsIE8gZmF0aGVyLCBJIGZvcmV3YXJuIHRoZWUsIHNodW4gDQorSGlzIGRlYWRseSBhcnJvdzsgbmVpdGhlciB2YWlubHkgaG9wZSANCitUbyBiZSBpbnZ1bG5lcmFibGUgaW4gdGhvc2UgYnJpZ2h0IGFybXMsIA0KK1Rocm91Z2ggdGVtcGVyZWQgaGVhdmVubHk7IGZvciB0aGF0IG1vcnRhbCBkaW50LCANCitTYXZlIGhlIHdobyByZWlnbnMgYWJvdmUsIG5vbmUgY2FuIHJlc2lzdC4iIA0KKyAgU2hlIGZpbmlzaGVkOyBhbmQgdGhlIHN1YnRsZSBGaWVuZCBoaXMgbG9yZSANCitTb29uIGxlYXJuZWQsIG5vdyBtaWxkZXIsIGFuZCB0aHVzIGFuc3dlcmVkIHNtb290aDotLSANCisgICJEZWFyIGRhdWdodGVyLS1zaW5jZSB0aG91IGNsYWltJ3N0IG1lIGZvciB0aHkgc2lyZSwgDQorQW5kIG15IGZhaXIgc29uIGhlcmUgc2hvdydzdCBtZSwgdGhlIGRlYXIgcGxlZGdlIA0KK09mIGRhbGxpYW5jZSBoYWQgd2l0aCB0aGVlIGluIEhlYXZlbiwgYW5kIGpveXMgDQorVGhlbiBzd2VldCwgbm93IHNhZCB0byBtZW50aW9uLCB0aHJvdWdoIGRpcmUgY2hhbmdlIA0KK0JlZmFsbGVuIHVzIHVuZm9yZXNlZW4sIHVudGhvdWdodC1vZi0ta25vdywgDQorSSBjb21lIG5vIGVuZW15LCBidXQgdG8gc2V0IGZyZWUgDQorRnJvbSBvdXQgdGhpcyBkYXJrIGFuZCBkaXNtYWwgaG91c2Ugb2YgcGFpbiANCitCb3RoIGhpbSBhbmQgdGhlZSwgYW5kIGFsbCB0aGUgaGVhdmVubHkgaG9zdCANCitPZiBTcGlyaXRzIHRoYXQsIGluIG91ciBqdXN0IHByZXRlbmNlcyBhcm1lZCwgDQorRmVsbCB3aXRoIHVzIGZyb20gb24gaGlnaC4gRnJvbSB0aGVtIEkgZ28gDQorVGhpcyB1bmNvdXRoIGVycmFuZCBzb2xlLCBhbmQgb25lIGZvciBhbGwgDQorTXlzZWxmIGV4cG9zZSwgd2l0aCBsb25lbHkgc3RlcHMgdG8gdHJlYWQgDQorVGgnIHVuZm91bmRlZCBEZWVwLCBhbmQgdGhyb3VnaCB0aGUgdm9pZCBpbW1lbnNlIA0KK1RvIHNlYXJjaCwgd2l0aCB3YW5kZXJpbmcgcXVlc3QsIGEgcGxhY2UgZm9yZXRvbGQgDQorU2hvdWxkIGJlLS1hbmQsIGJ5IGNvbmN1cnJpbmcgc2lnbnMsIGVyZSBub3cgDQorQ3JlYXRlZCB2YXN0IGFuZCByb3VuZC0tYSBwbGFjZSBvZiBibGlzcyANCitJbiB0aGUgcHVybGlldXMgb2YgSGVhdmVuOyBhbmQgdGhlcmVpbiBwbGFjZWQgDQorQSByYWNlIG9mIHVwc3RhcnQgY3JlYXR1cmVzLCB0byBzdXBwbHkgDQorUGVyaGFwcyBvdXIgdmFjYW50IHJvb20sIHRob3VnaCBtb3JlIHJlbW92ZWQsIA0KK0xlc3QgSGVhdmVuLCBzdXJjaGFyZ2VkIHdpdGggcG90ZW50IG11bHRpdHVkZSwgDQorTWlnaHQgaGFwIHRvIG1vdmUgbmV3IGJyb2lscy4gQmUgdGhpcywgb3IgYXVnaHQgDQorVGhhbiB0aGlzIG1vcmUgc2VjcmV0LCBub3cgZGVzaWduZWQsIEkgaGFzdGUgDQorVG8ga25vdzsgYW5kLCB0aGlzIG9uY2Uga25vd24sIHNoYWxsIHNvb24gcmV0dXJuLCANCitBbmQgYnJpbmcgeWUgdG8gdGhlIHBsYWNlIHdoZXJlIHRob3UgYW5kIERlYXRoIA0KK1NoYWxsIGR3ZWxsIGF0IGVhc2UsIGFuZCB1cCBhbmQgZG93biB1bnNlZW4gDQorV2luZyBzaWxlbnRseSB0aGUgYnV4b20gYWlyLCBlbWJhbG1lZCANCitXaXRoIG9kb3Vycy4gVGhlcmUgeWUgc2hhbGwgYmUgZmVkIGFuZCBmaWxsZWQgDQorSW1tZWFzdXJhYmx5OyBhbGwgdGhpbmdzIHNoYWxsIGJlIHlvdXIgcHJleS4iIA0KKyAgSGUgY2Vhc2VkOyBmb3IgYm90aCBzZWVtZWQgaGlnaGx5IHBsZWFzZWQsIGFuZCBEZWF0aCANCitHcmlubmVkIGhvcnJpYmxlIGEgZ2hhc3RseSBzbWlsZSwgdG8gaGVhciANCitIaXMgZmFtaW5lIHNob3VsZCBiZSBmaWxsZWQsIGFuZCBibGVzc2VkIGhpcyBtYXcgDQorRGVzdGluZWQgdG8gdGhhdCBnb29kIGhvdXIuIE5vIGxlc3MgcmVqb2ljZWQgDQorSGlzIG1vdGhlciBiYWQsIGFuZCB0aHVzIGJlc3Bha2UgaGVyIHNpcmU6LS0gDQorICAiVGhlIGtleSBvZiB0aGlzIGluZmVybmFsIFBpdCwgYnkgZHVlIA0KK0FuZCBieSBjb21tYW5kIG9mIEhlYXZlbidzIGFsbC1wb3dlcmZ1bCBLaW5nLCANCitJIGtlZXAsIGJ5IGhpbSBmb3JiaWRkZW4gdG8gdW5sb2NrIA0KK1RoZXNlIGFkYW1hbnRpbmUgZ2F0ZXM7IGFnYWluc3QgYWxsIGZvcmNlIA0KK0RlYXRoIHJlYWR5IHN0YW5kcyB0byBpbnRlcnBvc2UgaGlzIGRhcnQsIA0KK0ZlYXJsZXNzIHRvIGJlIG8nZXJtYXRjaGVkIGJ5IGxpdmluZyBtaWdodC4gDQorQnV0IHdoYXQgb3dlIEkgdG8gaGlzIGNvbW1hbmRzIGFib3ZlLCANCitXaG8gaGF0ZXMgbWUsIGFuZCBoYXRoIGhpdGhlciB0aHJ1c3QgbWUgZG93biANCitJbnRvIHRoaXMgZ2xvb20gb2YgVGFydGFydXMgcHJvZm91bmQsIA0KK1RvIHNpdCBpbiBoYXRlZnVsIG9mZmljZSBoZXJlIGNvbmZpbmVkLCANCitJbmhhYml0YW50IG9mIEhlYXZlbiBhbmQgaGVhdmVubHkgYm9ybi0tIA0KK0hlcmUgaW4gcGVycGV0dWFsIGFnb255IGFuZCBwYWluLCANCitXaXRoIHRlcnJvcnMgYW5kIHdpdGggY2xhbW91cnMgY29tcGFzc2VkIHJvdW5kIA0KK09mIG1pbmUgb3duIGJyb29kLCB0aGF0IG9uIG15IGJvd2VscyBmZWVkPyANCitUaG91IGFydCBteSBmYXRoZXIsIHRob3UgbXkgYXV0aG9yLCB0aG91IA0KK015IGJlaW5nIGdhdidzdCBtZTsgd2hvbSBzaG91bGQgSSBvYmV5IA0KK0J1dCB0aGVlPyB3aG9tIGZvbGxvdz8gVGhvdSB3aWx0IGJyaW5nIG1lIHNvb24gDQorVG8gdGhhdCBuZXcgd29ybGQgb2YgbGlnaHQgYW5kIGJsaXNzLCBhbW9uZyANCitUaGUgZ29kcyB3aG8gbGl2ZSBhdCBlYXNlLCB3aGVyZSBJIHNoYWxsIHJlaWduIA0KK0F0IHRoeSByaWdodCBoYW5kIHZvbHVwdHVvdXMsIGFzIGJlc2VlbXMgDQorVGh5IGRhdWdodGVyIGFuZCB0aHkgZGFybGluZywgd2l0aG91dCBlbmQuIiANCisgIFRodXMgc2F5aW5nLCBmcm9tIGhlciBzaWRlIHRoZSBmYXRhbCBrZXksIA0KK1NhZCBpbnN0cnVtZW50IG9mIGFsbCBvdXIgd29lLCBzaGUgdG9vazsgDQorQW5kLCB0b3dhcmRzIHRoZSBnYXRlIHJvbGxpbmcgaGVyIGJlc3RpYWwgdHJhaW4sIA0KK0ZvcnRod2l0aCB0aGUgaHVnZSBwb3J0Y3VsbGlzIGhpZ2ggdXAtZHJldywgDQorV2hpY2gsIGJ1dCBoZXJzZWxmLCBub3QgYWxsIHRoZSBTdHlnaWFuIFBvd2VycyANCitDb3VsZCBvbmNlIGhhdmUgbW92ZWQ7IHRoZW4gaW4gdGhlIGtleS1ob2xlIHR1cm5zIA0KK1RoJyBpbnRyaWNhdGUgd2FyZHMsIGFuZCBldmVyeSBib2x0IGFuZCBiYXIgDQorT2YgbWFzc3kgaXJvbiBvciBzb2xpZCByb2NrIHdpdGggZWFzZSANCitVbmZhc3RlbnMuIE9uIGEgc3VkZGVuIG9wZW4gZmx5LCANCitXaXRoIGltcGV0dW91cyByZWNvaWwgYW5kIGphcnJpbmcgc291bmQsIA0KK1RoJyBpbmZlcm5hbCBkb29ycywgYW5kIG9uIHRoZWlyIGhpbmdlcyBncmF0ZSANCitIYXJzaCB0aHVuZGVyLCB0aGF0IHRoZSBsb3dlc3QgYm90dG9tIHNob29rIA0KK09mIEVyZWJ1cy4gU2hlIG9wZW5lZDsgYnV0IHRvIHNodXQgDQorRXhjZWxsZWQgaGVyIHBvd2VyOiB0aGUgZ2F0ZXMgd2lkZSBvcGVuIHN0b29kLCANCitUaGF0IHdpdGggZXh0ZW5kZWQgd2luZ3MgYSBiYW5uZXJlZCBob3N0LCANCitVbmRlciBzcHJlYWQgZW5zaWducyBtYXJjaGluZywgbWliaHQgcGFzcyB0aHJvdWdoIA0KK1dpdGggaG9yc2UgYW5kIGNoYXJpb3RzIHJhbmtlZCBpbiBsb29zZSBhcnJheTsgDQorU28gd2lkZSB0aGV5IHN0b29kLCBhbmQgbGlrZSBhIGZ1cm5hY2UtbW91dGggDQorQ2FzdCBmb3J0aCByZWRvdW5kaW5nIHNtb2tlIGFuZCBydWRkeSBmbGFtZS4gDQorQmVmb3JlIHRoZWlyIGV5ZXMgaW4gc3VkZGVuIHZpZXcgYXBwZWFyIA0KK1RoZSBzZWNyZXRzIG9mIHRoZSBob2FyeSBEZWVwLS1hIGRhcmsgDQorSWxsaW1pdGFibGUgb2NlYW4sIHdpdGhvdXQgYm91bmQsIA0KK1dpdGhvdXQgZGltZW5zaW9uOyB3aGVyZSBsZW5ndGgsIGJyZWFkdGgsIGFuZCBoZWlnaHQsIA0KK0FuZCB0aW1lLCBhbmQgcGxhY2UsIGFyZSBsb3N0OyB3aGVyZSBlbGRlc3QgTmlnaHQgDQorQW5kIENoYW9zLCBhbmNlc3RvcnMgb2YgTmF0dXJlLCBob2xkIA0KK0V0ZXJuYWwgYW5hcmNoeSwgYW1pZHN0IHRoZSBub2lzZSANCitPZiBlbmRsZXNzIHdhcnMsIGFuZCBieSBjb25mdXNpb24gc3RhbmQuIA0KK0ZvciBIb3QsIENvbGQsIE1vaXN0LCBhbmQgRHJ5LCBmb3VyIGNoYW1waW9ucyBmaWVyY2UsIA0KK1N0cml2ZSBoZXJlIGZvciBtYXN0ZXJ5LCBhbmQgdG8gYmF0dGxlIGJyaW5nIA0KK1RoZWlyIGVtYnJ5b24gYXRvbXM6IHRoZXkgYXJvdW5kIHRoZSBmbGFnIA0KK09mIGVhY2ggaGlzIGZhY3Rpb24sIGluIHRoZWlyIHNldmVyYWwgY2xhbnMsIA0KK0xpZ2h0LWFybWVkIG9yIGhlYXZ5LCBzaGFycCwgc21vb3RoLCBzd2lmdCwgb3Igc2xvdywgDQorU3dhcm0gcG9wdWxvdXMsIHVubnVtYmVyZWQgYXMgdGhlIHNhbmRzIA0KK09mIEJhcmNhIG9yIEN5cmVuZSdzIHRvcnJpZCBzb2lsLCANCitMZXZpZWQgdG8gc2lkZSB3aXRoIHdhcnJpbmcgd2luZHMsIGFuZCBwb2lzZSANCitUaGVpciBsaWdodGVyIHdpbmdzLiBUbyB3aG9tIHRoZXNlIG1vc3QgYWRoZXJlIA0KK0hlIHJ1bGVzIGEgbW9tZW50OiBDaGFvcyB1bXBpcmUgc2l0cywgDQorQW5kIGJ5IGRlY2lzaW9uIG1vcmUgZW1icm9pbHMgdGhlIGZyYXkgDQorQnkgd2hpY2ggaGUgcmVpZ25zOiBuZXh0IGhpbSwgaGlnaCBhcmJpdGVyLCANCitDaGFuY2UgZ292ZXJucyBhbGwuIEludG8gdGhpcyB3aWxkIEFieXNzLCANCitUaGUgd29tYiBvZiBOYXR1cmUsIGFuZCBwZXJoYXBzIGhlciBncmF2ZSwgDQorT2YgbmVpdGhlciBzZWEsIG5vciBzaG9yZSwgbm9yIGFpciwgbm9yIGZpcmUsIA0KK0J1dCBhbGwgdGhlc2UgaW4gdGhlaXIgcHJlZ25hbnQgY2F1c2VzIG1peGVkIA0KK0NvbmZ1c2VkbHksIGFuZCB3aGljaCB0aHVzIG11c3QgZXZlciBmaWdodCwgDQorVW5sZXNzIHRoJyBBbG1pZ2h0eSBNYWtlciB0aGVtIG9yZGFpbiANCitIaXMgZGFyayBtYXRlcmlhbHMgdG8gY3JlYXRlIG1vcmUgd29ybGRzLS0gDQorSW50byB0aGlzIHdpbGQgQWJ5c3MgdGhlIHdhcnkgRmllbmQgDQorU3Rvb2Qgb24gdGhlIGJyaW5rIG9mIEhlbGwgYW5kIGxvb2tlZCBhIHdoaWxlLCANCitQb25kZXJpbmcgaGlzIHZveWFnZTsgZm9yIG5vIG5hcnJvdyBmcml0aCANCitIZSBoYWQgdG8gY3Jvc3MuIE5vciB3YXMgaGlzIGVhciBsZXNzIHBlYWxlZCANCitXaXRoIG5vaXNlcyBsb3VkIGFuZCBydWlub3VzICh0byBjb21wYXJlIA0KK0dyZWF0IHRoaW5ncyB3aXRoIHNtYWxsKSB0aGFuIHdoZW4gQmVsbG9uYSBzdG9ybXMgDQorV2l0aCBhbGwgaGVyIGJhdHRlcmluZyBlbmdpbmVzLCBiZW50IHRvIHJhc2UgDQorU29tZSBjYXBpdGFsIGNpdHk7IG9yIGxlc3MgdGhhbiBpZiB0aGlzIGZyYW1lIA0KK09mIEhlYXZlbiB3ZXJlIGZhbGxpbmcsIGFuZCB0aGVzZSBlbGVtZW50cyANCitJbiBtdXRpbnkgaGFkIGZyb20gaGVyIGF4bGUgdG9ybiANCitUaGUgc3RlYWRmYXN0IEVhcnRoLiBBdCBsYXN0IGhpcyBzYWlsLWJyb2FkIHZhbnMgDQorSGUgc3ByZWFkIGZvciBmbGlnaHQsIGFuZCwgaW4gdGhlIHN1cmdpbmcgc21va2UgDQorVXBsaWZ0ZWQsIHNwdXJucyB0aGUgZ3JvdW5kOyB0aGVuY2UgbWFueSBhIGxlYWd1ZSwgDQorQXMgaW4gYSBjbG91ZHkgY2hhaXIsIGFzY2VuZGluZyByaWRlcyANCitBdWRhY2lvdXM7IGJ1dCwgdGhhdCBzZWF0IHNvb24gZmFpbGluZywgbWVldHMgDQorQSB2YXN0IHZhY3VpdHkuIEFsbCB1bmF3YXJlcywgDQorRmx1dHRlcmluZyBoaXMgcGVubm9ucyB2YWluLCBwbHVtYi1kb3duIGhlIGRyb3BzIA0KK1RlbiB0aG91c2FuZCBmYXRob20gZGVlcCwgYW5kIHRvIHRoaXMgaG91ciANCitEb3duIGhhZCBiZWVuIGZhbGxpbmcsIGhhZCBub3QsIGJ5IGlsbCBjaGFuY2UsIA0KK1RoZSBzdHJvbmcgcmVidWZmIG9mIHNvbWUgdHVtdWx0dW91cyBjbG91ZCwgDQorSW5zdGluY3Qgd2l0aCBmaXJlIGFuZCBuaXRyZSwgaHVycmllZCBoaW0gDQorQXMgbWFueSBtaWxlcyBhbG9mdC4gVGhhdCBmdXJ5IHN0YXllZC0tIA0KK1F1ZW5jaGVkIGluIGEgYm9nZ3kgU3lydGlzLCBuZWl0aGVyIHNlYSwgDQorTm9yIGdvb2QgZHJ5IGxhbmQtLW5pZ2ggZm91bmRlcmVkLCBvbiBoZSBmYXJlcywgDQorVHJlYWRpbmcgdGhlIGNydWRlIGNvbnNpc3RlbmNlLCBoYWxmIG9uIGZvb3QsIA0KK0hhbGYgZmx5aW5nOyBiZWhvdmVzIGhpbSBub3cgYm90aCBvYXIgYW5kIHNhaWwuIA0KK0FzIHdoZW4gYSBncnlwaG9uIHRocm91Z2ggdGhlIHdpbGRlcm5lc3MgDQorV2l0aCB3aW5nZWQgY291cnNlLCBvJ2VyIGhpbGwgb3IgbW9vcnkgZGFsZSwgDQorUHVyc3VlcyB0aGUgQXJpbWFzcGlhbiwgd2hvIGJ5IHN0ZWFsdGggDQorSGFkIGZyb20gaGlzIHdha2VmdWwgY3VzdG9keSBwdXJsb2luZWQgDQorVGhlIGd1YXJkZWQgZ29sZDsgc28gZWFnZXJseSB0aGUgRmllbmQgDQorTydlciBib2cgb3Igc3RlZXAsIHRocm91Z2ggc3RyYWl0LCByb3VnaCwgZGVuc2UsIG9yIHJhcmUsIA0KK1dpdGggaGVhZCwgaGFuZHMsIHdpbmdzLCBvciBmZWV0LCBwdXJzdWVzIGhpcyB3YXksIA0KK0FuZCBzd2ltcywgb3Igc2lua3MsIG9yIHdhZGVzLCBvciBjcmVlcHMsIG9yIGZsaWVzLiANCitBdCBsZW5ndGggYSB1bml2ZXJzYWwgaHViYnViIHdpbGQgDQorT2Ygc3R1bm5pbmcgc291bmRzLCBhbmQgdm9pY2VzIGFsbCBjb25mdXNlZCwgDQorQm9ybmUgdGhyb3VnaCB0aGUgaG9sbG93IGRhcmssIGFzc2F1bHRzIGhpcyBlYXIgDQorV2l0aCBsb3VkZXN0IHZlaGVtZW5jZS4gVGhpdGhlciBoZSBwbGllcyANCitVbmRhdW50ZWQsIHRvIG1lZXQgdGhlcmUgd2hhdGV2ZXIgUG93ZXIgDQorT3IgU3Bpcml0IG9mIHRoZSBuZXRoZXJtb3N0IEFieXNzIA0KK01pZ2h0IGluIHRoYXQgbm9pc2UgcmVzaWRlLCBvZiB3aG9tIHRvIGFzayANCitXaGljaCB3YXkgdGhlIG5lYXJlc3QgY29hc3Qgb2YgZGFya25lc3MgbGllcyANCitCb3JkZXJpbmcgb24gbGlnaHQ7IHdoZW4gc3RyYWlnaHQgYmVob2xkIHRoZSB0aHJvbmUgDQorT2YgQ2hhb3MsIGFuZCBoaXMgZGFyayBwYXZpbGlvbiBzcHJlYWQgDQorV2lkZSBvbiB0aGUgd2FzdGVmdWwgRGVlcCEgV2l0aCBoaW0gZW50aHJvbmVkIA0KK1NhdCBzYWJsZS12ZXN0ZWQgTmlnaHQsIGVsZGVzdCBvZiB0aGluZ3MsIA0KK1RoZSBjb25zb3J0IG9mIGhpcyByZWlnbjsgYW5kIGJ5IHRoZW0gc3Rvb2QgDQorT3JjdXMgYW5kIEFkZXMsIGFuZCB0aGUgZHJlYWRlZCBuYW1lIA0KK09mIERlbW9nb3Jnb247IFJ1bW91ciBuZXh0LCBhbmQgQ2hhbmNlLCANCitBbmQgVHVtdWx0LCBhbmQgQ29uZnVzaW9uLCBhbGwgZW1icm9pbGVkLCANCitBbmQgRGlzY29yZCB3aXRoIGEgdGhvdXNhbmQgdmFyaW91cyBtb3V0aHMuIA0KKyAgVCcgd2hvbSBTYXRhbiwgdHVybmluZyBib2xkbHksIHRodXM6LS0iWWUgUG93ZXJzIA0KK0FuZCBTcGlydGlzIG9mIHRoaXMgbmV0aGVybW9zdCBBYnlzcywgDQorQ2hhb3MgYW5kIGFuY2llbnQgTmlnaHQsIEkgY29tZSBubyBzcHkgDQorV2l0aCBwdXJwb3NlIHRvIGV4cGxvcmUgb3IgdG8gZGlzdHVyYiANCitUaGUgc2VjcmV0cyBvZiB5b3VyIHJlYWxtOyBidXQsIGJ5IGNvbnN0cmFpbnQgDQorV2FuZGVyaW5nIHRoaXMgZGFya3NvbWUgZGVzZXJ0LCBhcyBteSB3YXkgDQorTGllcyB0aHJvdWdoIHlvdXIgc3BhY2lvdXMgZW1waXJlIHVwIHRvIGxpZ2h0LCANCitBbG9uZSBhbmQgd2l0aG91dCBndWlkZSwgaGFsZiBsb3N0LCBJIHNlZWssIA0KK1doYXQgcmVhZGllc3QgcGF0aCBsZWFkcyB3aGVyZSB5b3VyIGdsb29teSBib3VuZHMgDQorQ29uZmluZSB3aXRoIEhlYXZlbjsgb3IsIGlmIHNvbWUgb3RoZXIgcGxhY2UsIA0KK0Zyb20geW91ciBkb21pbmlvbiB3b24sIHRoJyBFdGhlcmVhbCBLaW5nIA0KK1Bvc3Nlc3NlcyBsYXRlbHksIHRoaXRoZXIgdG8gYXJyaXZlIA0KK0kgdHJhdmVsIHRoaXMgcHJvZm91bmQuIERpcmVjdCBteSBjb3Vyc2U6IA0KK0RpcmVjdGVkLCBubyBtZWFuIHJlY29tcGVuc2UgaXQgYnJpbmdzIA0KK1RvIHlvdXIgYmVob29mLCBpZiBJIHRoYXQgcmVnaW9uIGxvc3QsIA0KK0FsbCB1c3VycGF0aW9uIHRoZW5jZSBleHBlbGxlZCwgcmVkdWNlIA0KK1RvIGhlciBvcmlnaW5hbCBkYXJrbmVzcyBhbmQgeW91ciBzd2F5IA0KKyhXaGljaCBpcyBteSBwcmVzZW50IGpvdXJuZXkpLCBhbmQgb25jZSBtb3JlIA0KK0VyZWN0IHRoZSBzdGFuZGFyZCB0aGVyZSBvZiBhbmNpZW50IE5pZ2h0LiANCitZb3VycyBiZSB0aCcgYWR2YW50YWdlIGFsbCwgbWluZSB0aGUgcmV2ZW5nZSEiIA0KKyAgVGh1cyBTYXRhbjsgYW5kIGhpbSB0aHVzIHRoZSBBbmFyY2ggb2xkLCANCitXaXRoIGZhbHRlcmluZyBzcGVlY2ggYW5kIHZpc2FnZSBpbmNvbXBvc2VkLCANCitBbnN3ZXJlZDogICJJIGtub3cgdGhlZSwgc3RyYW5nZXIsIHdobyB0aG91IGFydC0tICAqKiogDQorVGhhdCBtaWdodHkgbGVhZGluZyBBbmdlbCwgd2hvIG9mIGxhdGUgDQorTWFkZSBoZWFkIGFnYWluc3QgSGVhdmVuJ3MgS2luZywgdGhvdWdoIG92ZXJ0aHJvd24uIA0KK0kgc2F3IGFuZCBoZWFyZDsgZm9yIHN1Y2ggYSBudW1lcm91cyBob3N0IA0KK0ZsZWQgbm90IGluIHNpbGVuY2UgdGhyb3VnaCB0aGUgZnJpZ2h0ZWQgRGVlcCwgDQorV2l0aCBydWluIHVwb24gcnVpbiwgcm91dCBvbiByb3V0LCANCitDb25mdXNpb24gd29yc2UgY29uZm91bmRlZDsgYW5kIEhlYXZlbi1nYXRlcyANCitQb3VyZWQgb3V0IGJ5IG1pbGxpb25zIGhlciB2aWN0b3Jpb3VzIGJhbmRzLCANCitQdXJzdWluZy4gSSB1cG9uIG15IGZyb250aWVycyBoZXJlIA0KK0tlZXAgcmVzaWRlbmNlOyBpZiBhbGwgSSBjYW4gd2lsbCBzZXJ2ZSANCitUaGF0IGxpdHRsZSB3aGljaCBpcyBsZWZ0IHNvIHRvIGRlZmVuZCwgDQorRW5jcm9hY2hlZCBvbiBzdGlsbCB0aHJvdWdoIG91ciBpbnRlc3RpbmUgYnJvaWxzIA0KK1dlYWtlbmluZyB0aGUgc2NlcHRyZSBvZiBvbGQgTmlnaHQ6IGZpcnN0LCBIZWxsLCANCitZb3VyIGR1bmdlb24sIHN0cmV0Y2hpbmcgZmFyIGFuZCB3aWRlIGJlbmVhdGg7IA0KK05vdyBsYXRlbHkgSGVhdmVuIGFuZCBFYXJ0aCwgYW5vdGhlciB3b3JsZCANCitIdW5nIG8nZXIgbXkgcmVhbG0sIGxpbmtlZCBpbiBhIGdvbGRlbiBjaGFpbiANCitUbyB0aGF0IHNpZGUgSGVhdmVuIGZyb20gd2hlbmNlIHlvdXIgbGVnaW9ucyBmZWxsISANCitJZiB0aGF0IHdheSBiZSB5b3VyIHdhbGssIHlvdSBoYXZlIG5vdCBmYXI7IA0KK1NvIG11Y2ggdGhlIG5lYXJlciBkYW5nZXIuIEdvLCBhbmQgc3BlZWQ7IA0KK0hhdm9jLCBhbmQgc3BvaWwsIGFuZCBydWluLCBhcmUgbXkgZ2Fpbi4iIA0KKyAgSGUgY2Vhc2VkOyBhbmQgU2F0YW4gc3RheWVkIG5vdCB0byByZXBseSwgDQorQnV0LCBnbGFkIHRoYXQgbm93IGhpcyBzZWEgc2hvdWxkIGZpbmQgYSBzaG9yZSwgDQorV2l0aCBmcmVzaCBhbGFjcml0eSBhbmQgZm9yY2UgcmVuZXdlZCANCitTcHJpbmdzIHVwd2FyZCwgbGlrZSBhIHB5cmFtaWQgb2YgZmlyZSwgDQorSW50byB0aGUgd2lsZCBleHBhbnNlLCBhbmQgdGhyb3VnaCB0aGUgc2hvY2sgDQorT2YgZmlnaHRpbmcgZWxlbWVudHMsIG9uIGFsbCBzaWRlcyByb3VuZCANCitFbnZpcm9uZWQsIHdpbnMgaGlzIHdheTsgaGFyZGVyIGJlc2V0IA0KK0FuZCBtb3JlIGVuZGFuZ2VyZWQgdGhhbiB3aGVuIEFyZ28gcGFzc2VkIA0KK1Rocm91Z2ggQm9zcG9ydXMgYmV0d2l4dCB0aGUganVzdGxpbmcgcm9ja3MsIA0KK09yIHdoZW4gVWx5c3NlcyBvbiB0aGUgbGFyYm9hcmQgc2h1bm5lZCANCitDaGFyeWJkaXMsIGFuZCBieSB0aCcgb3RoZXIgd2hpcmxwb29sIHN0ZWVyZWQuIA0KK1NvIGhlIHdpdGggZGlmZmljdWx0eSBhbmQgbGFib3VyIGhhcmQgDQorTW92ZWQgb24sIHdpdGggZGlmZmljdWx0eSBhbmQgbGFib3VyIGhlOyANCitCdXQsIGhlIG9uY2UgcGFzc2VkLCBzb29uIGFmdGVyLCB3aGVuIE1hbiBmZWxsLCANCitTdHJhbmdlIGFsdGVyYXRpb24hIFNpbiBhbmQgRGVhdGggYW1haW4sIA0KK0ZvbGxvd2luZyBoaXMgdHJhY2sgKHN1Y2ggd2FzIHRoZSB3aWxsIG9mIEhlYXZlbikgDQorUGF2ZWQgYWZ0ZXIgaGltIGEgYnJvYWQgYW5kIGJlYXRlbiB3YXkgDQorT3ZlciB0aGUgZGFyayBBYnlzcywgd2hvc2UgYm9pbGluZyBndWxmIA0KK1RhbWVseSBlbmR1cmVkIGEgYnJpZGdlIG9mIHdvbmRyb3VzIGxlbmd0aCwgDQorRnJvbSBIZWxsIGNvbnRpbnVlZCwgcmVhY2hpbmcgdGgnIHV0bW9zdCBvcmIgDQorT2YgdGhpcyBmcmFpbCBXb3JsZDsgYnkgd2hpY2ggdGhlIFNwaXJpdHMgcGVydmVyc2UgDQorV2l0aCBlYXN5IGludGVyY291cnNlIHBhc3MgdG8gYW5kIGZybyANCitUbyB0ZW1wdCBvciBwdW5pc2ggbW9ydGFscywgZXhjZXB0IHdob20gDQorR29kIGFuZCBnb29kIEFuZ2VscyBndWFyZCBieSBzcGVjaWFsIGdyYWNlLiANCisgIEJ1dCBub3cgYXQgbGFzdCB0aGUgc2FjcmVkIGluZmx1ZW5jZSANCitPZiBsaWdodCBhcHBlYXJzLCBhbmQgZnJvbSB0aGUgd2FsbHMgb2YgSGVhdmVuIA0KK1Nob290cyBmYXIgaW50byB0aGUgYm9zb20gb2YgZGltIE5pZ2h0IA0KK0EgZ2xpbW1lcmluZyBkYXduLiBIZXJlIE5hdHVyZSBmaXJzdCBiZWdpbnMgDQorSGVyIGZhcnRoZXN0IHZlcmdlLCBhbmQgQ2hhb3MgdG8gcmV0aXJlLCANCitBcyBmcm9tIGhlciBvdXRtb3N0IHdvcmtzLCBhIGJyb2tlbiBmb2UsIA0KK1dpdGggdHVtdWx0IGxlc3MgYW5kIHdpdGggbGVzcyBob3N0aWxlIGRpbjsgDQorVGhhdCBTYXRhbiB3aXRoIGxlc3MgdG9pbCwgYW5kIG5vdyB3aXRoIGVhc2UsIA0KK1dhZnRzIG9uIHRoZSBjYWxtZXIgd2F2ZSBieSBkdWJpb3VzIGxpZ2h0LCANCitBbmQsIGxpa2UgYSB3ZWF0aGVyLWJlYXRlbiB2ZXNzZWwsIGhvbGRzIA0KK0dsYWRseSB0aGUgcG9ydCwgdGhvdWdoIHNocm91ZHMgYW5kIHRhY2tsZSB0b3JuOyANCitPciBpbiB0aGUgZW1wdGllciB3YXN0ZSwgcmVzZW1ibGluZyBhaXIsIA0KK1dlaWdocyBoaXMgc3ByZWFkIHdpbmdzLCBhdCBsZWlzdXJlIHRvIGJlaG9sZCANCitGYXIgb2ZmIHRoJyBlbXB5cmVhbCBIZWF2ZW4sIGV4dGVuZGVkIHdpZGUgDQorSW4gY2lyY3VpdCwgdW5kZXRlcm1pbmVkIHNxdWFyZSBvciByb3VuZCwgDQorV2l0aCBvcGFsIHRvd2VycyBhbmQgYmF0dGxlbWVudHMgYWRvcm5lZCANCitPZiBsaXZpbmcgc2FwcGhpcmUsIG9uY2UgaGlzIG5hdGl2ZSBzZWF0OyANCitBbmQsIGZhc3QgYnksIGhhbmdpbmcgaW4gYSBnb2xkZW4gY2hhaW4sIA0KK1RoaXMgcGVuZGVudCBXb3JsZCwgaW4gYmlnbmVzcyBhcyBhIHN0YXIgDQorT2Ygc21hbGxlc3QgbWFnbml0dWRlIGNsb3NlIGJ5IHRoZSBtb29uLiANCitUaGl0aGVyLCBmdWxsIGZyYXVnaHQgd2l0aCBtaXNjaGlldm91cyByZXZlbmdlLCANCitBY2N1cnNlZCwgYW5kIGluIGEgY3Vyc2VkIGhvdXIsIGhlIGhpZXMuIA0KKyANCisgDQorIA0KK0Jvb2sgSUlJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorIA0KKyANCitIYWlsLCBob2x5IExpZ2h0LCBvZmZzcHJpbmcgb2YgSGVhdmVuIGZpcnN0Ym9ybiwgDQorT3Igb2YgdGhlIEV0ZXJuYWwgY29ldGVybmFsIGJlYW0gDQorTWF5IEkgZXhwcmVzcyB0aGVlIHVuYmxhbSdkPyAgc2luY2UgR29kIGlzIGxpZ2h0LCANCitBbmQgbmV2ZXIgYnV0IGluIHVuYXBwcm9hY2hlZCBsaWdodCANCitEd2VsdCBmcm9tIGV0ZXJuaXR5LCBkd2VsdCB0aGVuIGluIHRoZWUgDQorQnJpZ2h0IGVmZmx1ZW5jZSBvZiBicmlnaHQgZXNzZW5jZSBpbmNyZWF0ZS4gDQorT3IgaGVhciJzdCB0aG91IHJhdGhlciBwdXJlIGV0aGVyZWFsIHN0cmVhbSwgDQorV2hvc2UgZm91bnRhaW4gd2hvIHNoYWxsIHRlbGw/ICBiZWZvcmUgdGhlIHN1biwgDQorQmVmb3JlIHRoZSBIZWF2ZW5zIHRob3Ugd2VydCwgYW5kIGF0IHRoZSB2b2ljZSANCitPZiBHb2QsIGFzIHdpdGggYSBtYW50bGUsIGRpZHN0IGludmVzdCAgKioqIA0KK1RoZSByaXNpbmcgd29ybGQgb2Ygd2F0ZXJzIGRhcmsgYW5kIGRlZXAsIA0KK1dvbiBmcm9tIHRoZSB2b2lkIGFuZCBmb3JtbGVzcyBpbmZpbml0ZS4gDQorVGhlZSBJIHJlLXZpc2l0IG5vdyB3aXRoIGJvbGRlciB3aW5nLCANCitFc2NhcCdkIHRoZSBTdHlnaWFuIHBvb2wsIHRob3VnaCBsb25nIGRldGFpbidkIA0KK0luIHRoYXQgb2JzY3VyZSBzb2pvdXJuLCB3aGlsZSBpbiBteSBmbGlnaHQgDQorVGhyb3VnaCB1dHRlciBhbmQgdGhyb3VnaCBtaWRkbGUgZGFya25lc3MgYm9ybmUsIA0KK1dpdGggb3RoZXIgbm90ZXMgdGhhbiB0byB0aGUgT3JwaGVhbiBseXJlIA0KK0kgc3VuZyBvZiBDaGFvcyBhbmQgZXRlcm5hbCBOaWdodDsgDQorVGF1Z2h0IGJ5IHRoZSBoZWF2ZW5seSBNdXNlIHRvIHZlbnR1cmUgZG93biANCitUaGUgZGFyayBkZXNjZW50LCBhbmQgdXAgdG8gcmUtYXNjZW5kLCANCitUaG91Z2ggaGFyZCBhbmQgcmFyZTogIFRoZWUgSSByZXZpc2l0IHNhZmUsIA0KK0FuZCBmZWVsIHRoeSBzb3ZyYW4gdml0YWwgbGFtcDsgYnV0IHRob3UgDQorUmV2aXNpdCdzdCBub3QgdGhlc2UgZXllcywgdGhhdCByb2xsIGluIHZhaW4gDQorVG8gZmluZCB0aHkgcGllcmNpbmcgcmF5LCBhbmQgZmluZCBubyBkYXduOyANCitTbyAgdGhpY2sgYSBkcm9wIHNlcmVuZSBoYXRoIHF1ZW5jaCdkIHRoZWlyIG9yYnMsIA0KK09yIGRpbSBzdWZmdXNpb24gdmVpbCdkLiAgWWV0IG5vdCB0aGUgbW9yZSANCitDZWFzZSBJIHRvIHdhbmRlciwgd2hlcmUgdGhlIE11c2VzIGhhdW50LCANCitDbGVhciBzcHJpbmcsIG9yIHNoYWR5IGdyb3ZlLCBvciBzdW5ueSBoaWxsLCANCitTbWl0IHdpdGggdGhlIGxvdmUgb2Ygc2FjcmVkIHNvbmc7IGJ1dCBjaGllZiANCitUaGVlLCBTaW9uLCBhbmQgdGhlIGZsb3dlcnkgYnJvb2tzIGJlbmVhdGgsIA0KK1RoYXQgd2FzaCB0aHkgaGFsbG93J2QgZmVldCwgYW5kIHdhcmJsaW5nIGZsb3csIA0KK05pZ2h0bHkgSSB2aXNpdDogIG5vciBzb21ldGltZXMgZm9yZ2V0IA0KK1NvIHdlcmUgSSBlcXVhbGwnZCB3aXRoIHRoZW0gaW4gcmVub3duLCANCitUaHkgc292cmFuIGNvbW1hbmQsIHRoYXQgTWFuIHNob3VsZCBmaW5kIGdyYWNlOyANCitCbGluZCBUaGFteXJpcywgYW5kIGJsaW5kIE1hZW9uaWRlcywgDQorQW5kIFRpcmVzaWFzLCBhbmQgUGhpbmV1cywgcHJvcGhldHMgb2xkOiANCitUaGVuIGZlZWQgb24gdGhvdWdodHMsIHRoYXQgdm9sdW50YXJ5IG1vdmUgDQorSGFybW9uaW91cyBudW1iZXJzOyBhcyB0aGUgd2FrZWZ1bCBiaXJkIA0KK1NpbmdzIGRhcmtsaW5nLCBhbmQgaW4gc2hhZGllc3QgY292ZXJ0IGhpZCANCitUdW5lcyBoZXIgbm9jdHVybmFsIG5vdGUuICBUaHVzIHdpdGggdGhlIHllYXIgDQorU2Vhc29ucyByZXR1cm47IGJ1dCBub3QgdG8gbWUgcmV0dXJucyANCitEYXksIG9yIHRoZSBzd2VldCBhcHByb2FjaCBvZiBldmVuIG9yIG1vcm4sIA0KK09yIHNpZ2h0IG9mIHZlcm5hbCBibG9vbSwgb3Igc3VtbWVyJ3Mgcm9zZSwgDQorT3IgZmxvY2tzLCBvciBoZXJkcywgb3IgaHVtYW4gZmFjZSBkaXZpbmU7IA0KK0J1dCBjbG91ZCBpbnN0ZWFkLCBhbmQgZXZlci1kdXJpbmcgZGFyayANCitTdXJyb3VuZHMgbWUsIGZyb20gdGhlIGNoZWVyZnVsIHdheXMgb2YgbWVuIA0KK0N1dCBvZmYsIGFuZCBmb3IgdGhlIGJvb2sgb2Yga25vd2xlZGdlIGZhaXIgDQorUHJlc2VudGVkIHdpdGggYSB1bml2ZXJzYWwgYmxhbmsgDQorT2YgbmF0dXJlJ3Mgd29ya3MgdG8gbWUgZXhwdW5nJ2QgYW5kIHJhcydkLCANCitBbmQgd2lzZG9tIGF0IG9uZSBlbnRyYW5jZSBxdWl0ZSBzaHV0IG91dC4gDQorU28gbXVjaCB0aGUgcmF0aGVyIHRob3UsIGNlbGVzdGlhbCBMaWdodCwgDQorU2hpbmUgaW53YXJkLCBhbmQgdGhlIG1pbmQgdGhyb3VnaCBhbGwgaGVyIHBvd2VycyANCitJcnJhZGlhdGU7IHRoZXJlIHBsYW50IGV5ZXMsIGFsbCBtaXN0IGZyb20gdGhlbmNlIA0KK1B1cmdlIGFuZCBkaXNwZXJzZSwgdGhhdCBJIG1heSBzZWUgYW5kIHRlbGwgDQorT2YgdGhpbmdzIGludmlzaWJsZSB0byBtb3J0YWwgc2lnaHQuIA0KK05vdyBoYWQgdGhlIEFsbWlnaHR5IEZhdGhlciBmcm9tIGFib3ZlLCANCitGcm9tIHRoZSBwdXJlIGVtcHlyZWFuIHdoZXJlIGhlIHNpdHMgDQorSGlnaCB0aHJvbidkIGFib3ZlIGFsbCBoaWdodGgsIGJlbnQgZG93biBoaXMgZXllIA0KK0hpcyBvd24gd29ya3MgYW5kIHRoZWlyIHdvcmtzIGF0IG9uY2UgdG8gdmlldzogDQorQWJvdXQgaGltIGFsbCB0aGUgU2FuY3RpdGllcyBvZiBIZWF2ZW4gDQorU3Rvb2QgdGhpY2sgYXMgc3RhcnMsIGFuZCBmcm9tIGhpcyBzaWdodCByZWNlaXYnZCANCitCZWF0aXR1ZGUgcGFzdCB1dHRlcmFuY2U7IG9uIGhpcyByaWdodCANCitUaGUgcmFkaWFudCBpbWFnZSBvZiBoaXMgZ2xvcnkgc2F0LCANCitIaXMgb25seSBzb247IG9uIGVhcnRoIGhlIGZpcnN0IGJlaGVsZCANCitPdXIgdHdvIGZpcnN0IHBhcmVudHMsIHlldCB0aGUgb25seSB0d28gDQorT2YgbWFua2luZCBpbiB0aGUgaGFwcHkgZ2FyZGVuIHBsYWMnZCANCitSZWFwaW5nIGltbW9ydGFsIGZydWl0cyBvZiBqb3kgYW5kIGxvdmUsIA0KK1VuaW50ZXJydXB0ZWQgam95LCB1bnJpdmFsbCdkIGxvdmUsIA0KK0luIGJsaXNzZnVsIHNvbGl0dWRlOyBoZSB0aGVuIHN1cnZleSdkIA0KK0hlbGwgYW5kIHRoZSBndWxmIGJldHdlZW4sIGFuZCBTYXRhbiB0aGVyZSAgDQorQ29hc3RpbmcgdGhlIHdhbGwgb2YgSGVhdmVuIG9uIHRoaXMgc2lkZSBOaWdodCANCitJbiB0aGUgZHVuIGFpciBzdWJsaW1lLCBhbmQgcmVhZHkgbm93IA0KK1RvIHN0b29wIHdpdGggd2VhcmllZCB3aW5ncywgYW5kIHdpbGxpbmcgZmVldCwgDQorT24gdGhlIGJhcmUgb3V0c2lkZSBvZiB0aGlzIHdvcmxkLCB0aGF0IHNlZW0nZCANCitGaXJtIGxhbmQgaW1ib3NvbSdkLCB3aXRob3V0IGZpcm1hbWVudCwgDQorVW5jZXJ0YWluIHdoaWNoLCBpbiBvY2VhbiBvciBpbiBhaXIuIA0KK0hpbSBHb2QgYmVob2xkaW5nIGZyb20gaGlzIHByb3NwZWN0IGhpZ2gsIA0KK1doZXJlaW4gcGFzdCwgcHJlc2VudCwgZnV0dXJlLCBoZSBiZWhvbGRzLCANCitUaHVzIHRvIGhpcyBvbmx5IFNvbiBmb3Jlc2VlaW5nIHNwYWtlLiANCitPbmx5IGJlZ290dGVuIFNvbiwgc2Vlc3QgdGhvdSB3aGF0IHJhZ2UgDQorVHJhbnNwb3J0cyBvdXIgQWR2ZXJzYXJ5PyAgd2hvbSBubyBib3VuZHMgDQorUHJlc2NyaWInZCBubyBiYXJzIG9mIEhlbGwsIG5vciBhbGwgdGhlIGNoYWlucyANCitIZWFwJ2Qgb24gaGltIHRoZXJlLCBub3IgeWV0IHRoZSBtYWluIGFieXNzIA0KK1dpZGUgaW50ZXJydXB0LCBjYW4gaG9sZDsgc28gYmVudCBoZSBzZWVtcyANCitPbiBkZXNwZXJhdGUgcmV2ZW5nZSwgdGhhdCBzaGFsbCByZWRvdW5kIA0KK1Vwb24gaGlzIG93biByZWJlbGxpb3VzIGhlYWQuICBBbmQgbm93LCANCitUaHJvdWdoIGFsbCByZXN0cmFpbnQgYnJva2UgbG9vc2UsIGhlIHdpbmdzIGhpcyB3YXkgDQorTm90IGZhciBvZmYgSGVhdmVuLCBpbiB0aGUgcHJlY2luY3RzIG9mIGxpZ2h0LCANCitEaXJlY3RseSB0b3dhcmRzIHRoZSBuZXcgY3JlYXRlZCB3b3JsZCwgDQorQW5kIG1hbiB0aGVyZSBwbGFjJ2QsIHdpdGggcHVycG9zZSB0byBhc3NheSANCitJZiBoaW0gYnkgZm9yY2UgaGUgY2FuIGRlc3Ryb3ksIG9yLCB3b3JzZSwgDQorQnkgc29tZSBmYWxzZSBndWlsZSBwZXJ2ZXJ0OyBhbmQgc2hhbGwgcGVydmVydDsgDQorRm9yIG1hbiB3aWxsIGhlYXJrZW4gdG8gaGlzIGdsb3ppbmcgbGllcywgDQorQW5kIGVhc2lseSB0cmFuc2dyZXNzIHRoZSBzb2xlIGNvbW1hbmQsIA0KK1NvbGUgcGxlZGdlIG9mIGhpcyBvYmVkaWVuY2U6ICBTbyB3aWxsIGZhbGwgDQorSGUgYW5kIGhpcyBmYWl0aGxlc3MgcHJvZ2VueTogIFdob3NlIGZhdWx0PyANCitXaG9zZSBidXQgaGlzIG93bj8gIGluZ3JhdGUsIGhlIGhhZCBvZiBtZSANCitBbGwgaGUgY291bGQgaGF2ZTsgSSBtYWRlIGhpbSBqdXN0IGFuZCByaWdodCwgDQorU3VmZmljaWVudCB0byBoYXZlIHN0b29kLCB0aG91Z2ggZnJlZSB0byBmYWxsLiANCitTdWNoIEkgY3JlYXRlZCBhbGwgdGhlIGV0aGVyZWFsIFBvd2VycyANCitBbmQgU3Bpcml0cywgYm90aCB0aGVtIHdobyBzdG9vZCwgYW5kIHRoZW0gd2hvIGZhaWwnZDsgDQorRnJlZWx5IHRoZXkgc3Rvb2Qgd2hvIHN0b29kLCBhbmQgZmVsbCB3aG8gZmVsbC4gDQorTm90IGZyZWUsIHdoYXQgcHJvb2YgY291bGQgdGhleSBoYXZlIGdpdmVuIHNpbmNlcmUgDQorT2YgdHJ1ZSBhbGxlZ2lhbmNlLCBjb25zdGFudCBmYWl0aCBvciBsb3ZlLCANCitXaGVyZSBvbmx5IHdoYXQgdGhleSBuZWVkcyBtdXN0IGRvIGFwcGVhcidkLCANCitOb3Qgd2hhdCB0aGV5IHdvdWxkPyAgd2hhdCBwcmFpc2UgY291bGQgdGhleSByZWNlaXZlPyANCitXaGF0IHBsZWFzdXJlIEkgZnJvbSBzdWNoIG9iZWRpZW5jZSBwYWlkLCANCitXaGVuIHdpbGwgYW5kIHJlYXNvbiAocmVhc29uIGFsc28gaXMgY2hvaWNlKSANCitVc2VsZXNzIGFuZCB2YWluLCBvZiBmcmVlZG9tIGJvdGggZGVzcG9pbCdkLCANCitNYWRlIHBhc3NpdmUgYm90aCwgaGFkIHNlcnYnZCBuZWNlc3NpdHksIA0KK05vdCBtZT8gIHRoZXkgdGhlcmVmb3JlLCBhcyB0byByaWdodCBiZWxvbmckICdkLCANCitTbyB3ZXJlIGNyZWF0ZWQsIG5vciBjYW4ganVzdGx5IGFjY3VzZSANCitUaGVpciBNYWtlciwgb3IgdGhlaXIgbWFraW5nLCBvciB0aGVpciBmYXRlLCANCitBcyBpZiBwcmVkZXN0aW5hdGlvbiBvdmVyLXJ1bCdkIA0KK1RoZWlyIHdpbGwgZGlzcG9zJ2QgYnkgYWJzb2x1dGUgZGVjcmVlIA0KK09yIGhpZ2ggZm9yZWtub3dsZWRnZSB0aGV5IHRoZW1zZWx2ZXMgZGVjcmVlZCANCitUaGVpciBvd24gcmV2b2x0LCBub3QgSTsgaWYgSSBmb3Jla25ldywgDQorRm9yZWtub3dsZWRnZSBoYWQgbm8gaW5mbHVlbmNlIG9uIHRoZWlyIGZhdWx0LCANCitXaGljaCBoYWQgbm8gbGVzcyBwcm92ZWQgY2VydGFpbiB1bmZvcmVrbm93bi4gDQorU28gd2l0aG91dCBsZWFzdCBpbXB1bHNlIG9yIHNoYWRvdyBvZiBmYXRlLCANCitPciBhdWdodCBieSBtZSBpbW11dGFibHkgZm9yZXNlZW4sIA0KK1RoZXkgdHJlc3Bhc3MsIGF1dGhvcnMgdG8gdGhlbXNlbHZlcyBpbiBhbGwgDQorQm90aCB3aGF0IHRoZXkganVkZ2UsIGFuZCB3aGF0IHRoZXkgY2hvb3NlOyBmb3Igc28gDQorSSBmb3JtJ2QgdGhlbSBmcmVlOiBhbmQgZnJlZSB0aGV5IG11c3QgcmVtYWluLCANCitUaWxsIHRoZXkgZW50aHJhbGwgdGhlbXNlbHZlczsgSSBlbHNlIG11c3QgY2hhbmdlIA0KK1RoZWlyIG5hdHVyZSwgYW5kIHJldm9rZSB0aGUgaGlnaCBkZWNyZWUgDQorVW5jaGFuZ2VhYmxlLCBldGVybmFsLCB3aGljaCBvcmRhaW4nZCANCiskVEhlaXIgZnJlZWRvbTogdGhleSB0aGVtc2VsdmVzIG9yZGFpbidkIHRoZWlyIGZhbGwuIA0KK1RoZSBmaXJzdCBzb3J0IGJ5IHRoZWlyIG93biBzdWdnZXN0aW9uIGZlbGwsIA0KK1NlbGYtdGVtcHRlZCwgc2VsZi1kZXByYXYnZDogIE1hbiBmYWxscywgZGVjZWl2J2QgDQorQnkgdGhlIG90aGVyIGZpcnN0OiAgTWFuIHRoZXJlZm9yZSBzaGFsbCBmaW5kIGdyYWNlLCANCitUaGUgb3RoZXIgbm9uZTogIEluIG1lcmN5IGFuZCBqdXN0aWNlIGJvdGgsIA0KK1Rocm91Z2ggSGVhdmVuIGFuZCBFYXJ0aCwgc28gc2hhbGwgbXkgZ2xvcnkgZXhjZWw7IA0KK0J1dCBNZXJjeSwgZmlyc3QgYW5kIGxhc3QsIHNoYWxsIGJyaWdodGVzdCBzaGluZS4gDQorVGh1cyB3aGlsZSBHb2Qgc3Bha2UsIGFtYnJvc2lhbCBmcmFncmFuY2UgZmlsbCdkIA0KK0FsbCBIZWF2ZW4sIGFuZCBpbiB0aGUgYmxlc3NlZCBTcGlyaXRzIGVsZWN0IA0KK1NlbnNlIG9mIG5ldyBqb3kgaW5lZmZhYmxlIGRpZmZ1cydkLiANCitCZXlvbmQgY29tcGFyZSB0aGUgU29uIG9mIEdvZCB3YXMgc2VlbiANCitNb3N0IGdsb3Jpb3VzOyBpbiBoaW0gYWxsIGhpcyBGYXRoZXIgc2hvbmUgDQorU3Vic3RhbnRpYWxseSBleHByZXNzJ2Q7IGFuZCBpbiBoaXMgZmFjZSANCitEaXZpbmUgY29tcGFzc2lvbiB2aXNpYmx5IGFwcGVhcidkLCANCitMb3ZlIHdpdGhvdXQgZW5kLCBhbmQgd2l0aG91dCBtZWFzdXJlIGdyYWNlLCANCitXaGljaCB1dHRlcmluZywgdGh1cyBoZSB0byBoaXMgRmF0aGVyIHNwYWtlLiANCitPIEZhdGhlciwgZ3JhY2lvdXMgd2FzIHRoYXQgd29yZCB3aGljaCBjbG9zJ2QgDQorVGh5IHNvdnJhbiBjb21tYW5kLCB0aGF0IE1hbiBzaG91bGQgZmluZCBncmFjZTsgDQorLCB0aGF0IE1hbiBzaG91bGQgZmluZCBncmFjZTsgDQorRm9yIHdoaWNoIGJvdGggSGVhdmVuIGFuZCBlYXJ0aCBzaGFsbCBoaWdoIGV4dG9sIA0KK1RoeSBwcmFpc2VzLCB3aXRoIHRoZSBpbm51bWVyYWJsZSBzb3VuZCANCitPZiBoeW1ucyBhbmQgc2FjcmVkIHNvbmdzLCB3aGVyZXdpdGggdGh5IHRocm9uZSANCitFbmNvbXBhc3MnZCBzaGFsbCByZXNvdW5kIHRoZWUgZXZlciBibGVzdC4gDQorRm9yIHNob3VsZCBNYW4gZmluYWxseSBiZSBsb3N0LCBzaG91bGQgTWFuLCANCitUaHkgY3JlYXR1cmUgbGF0ZSBzbyBsb3YnZCwgdGh5IHlvdW5nZXN0IHNvbiwgDQorRmFsbCBjaXJjdW12ZW50ZWQgdGh1cyBieSBmcmF1ZCwgdGhvdWdoIGpvaW4nZCANCitXaXRoIGhpcyBvd24gZm9sbHk/ICB0aGF0IGJlIGZyb20gdGhlZSBmYXIsIA0KK1RoYXQgZmFyIGJlIGZyb20gdGhlZSwgRmF0aGVyLCB3aG8gYXJ0IGp1ZGdlIA0KK09mIGFsbCB0aGluZ3MgbWFkZSwgYW5kIGp1ZGdlc3Qgb25seSByaWdodC4gDQorT3Igc2hhbGwgdGhlIEFkdmVyc2FyeSB0aHVzIG9idGFpbiANCitIaXMgZW5kLCBhbmQgZnJ1c3RyYXRlIHRoaW5lPyAgc2hhbGwgaGUgZnVsZmlsbCANCitIaXMgbWFsaWNlLCBhbmQgdGh5IGdvb2RuZXNzIGJyaW5nIHRvIG5vdWdodCwgDQorT3IgcHJvdWQgcmV0dXJuLCB0aG91Z2ggdG8gaGlzIGhlYXZpZXIgZG9vbSwgDQorWWV0IHdpdGggcmV2ZW5nZSBhY2NvbXBsaXNoJ2QsIGFuZCB0byBIZWxsIA0KK0RyYXcgYWZ0ZXIgaGltIHRoZSB3aG9sZSByYWNlIG9mIG1hbmtpbmQsIA0KK0J5IGhpbSBjb3JydXB0ZWQ/ICBvciB3aWx0IHRob3UgdGh5c2VsZiANCitBYm9saXNoIHRoeSBjcmVhdGlvbiwgYW5kIHVubWFrZSANCitGb3IgaGltLCB3aGF0IGZvciB0aHkgZ2xvcnkgdGhvdSBoYXN0IG1hZGU/IA0KK1NvIHNob3VsZCB0aHkgZ29vZG5lc3MgYW5kIHRoeSBncmVhdG5lc3MgYm90aCANCitCZSBxdWVzdGlvbidkIGFuZCBibGFzcGhlbSdkIHdpdGhvdXQgZGVmZW5jZS4gDQorVG8gd2hvbSB0aGUgZ3JlYXQgQ3JlYXRvciB0aHVzIHJlcGxpZWQuIA0KK08gc29uLCBpbiB3aG9tIG15IHNvdWwgaGF0aCBjaGllZiBkZWxpZ2h0LCANCitTb24gb2YgbXkgYm9zb20sIFNvbiB3aG8gYXJ0IGFsb25lLiANCitNeSB3b3JkLCBteSB3aXNkb20sIGFuZCBlZmZlY3R1YWwgbWlnaHQsICANCitBbGwgaGFzdCB0aG91IHNwb2tlbiBhcyBteSB0aG91Z2h0cyBhcmUsIGFsbCANCitBcyBteSBldGVybmFsIHB1cnBvc2UgaGF0aCBkZWNyZWVkOyANCitNYW4gc2hhbGwgbm90IHF1aXRlIGJlIGxvc3QsIGJ1dCBzYXYnZCB3aG8gd2lsbDsgDQorWWV0IG5vdCBvZiB3aWxsIGluIGhpbSwgYnV0IGdyYWNlIGluIG1lIA0KK0ZyZWVseSB2b3VjaHNhZidkOyBvbmNlIG1vcmUgSSB3aWxsIHJlbmV3IA0KK0hpcyBsYXBzZWQgcG93ZXJzLCB0aG91Z2ggZm9yZmVpdDsgYW5kIGVudGhyYWxsJ2QgDQorQnkgc2luIHRvIGZvdWwgZXhvcmJpdGFudCBkZXNpcmVzOyANCitVcGhlbGQgYnkgbWUsIHlldCBvbmNlIG1vcmUgaGUgc2hhbGwgc3RhbmQgDQorT24gZXZlbiBncm91bmQgYWdhaW5zdCBoaXMgbW9ydGFsIGZvZTsgDQorQnkgbWUgdXBoZWxkLCB0aGF0IGhlIG1heSBrbm93IGhvdyBmcmFpbCANCitIaXMgZmFsbGVuIGNvbmRpdGlvbiBpcywgYW5kIHRvIG1lIG93ZSANCitBbGwgaGlzIGRlbGl2ZXJhbmNlLCBhbmQgdG8gbm9uZSBidXQgbWUuIA0KK1NvbWUgSSBoYXZlIGNob3NlbiBvZiBwZWN1bGlhciBncmFjZSwgDQorRWxlY3QgYWJvdmUgdGhlIHJlc3Q7IHNvIGlzIG15IHdpbGw6IA0KK1RoZSByZXN0IHNoYWxsIGhlYXIgbWUgY2FsbCwgYW5kIG9mdCBiZSB3YXJuJ2QgDQorVGhlaXIgc2luZnVsIHN0YXRlLCBhbmQgdG8gYXBwZWFzZSBiZXRpbWVzIA0KK1RoZSBpbmNlbnNlZCBEZWl0eSwgd2hpbGUgb2ZmZXInZCBncmFjZSANCitJbnZpdGVzOyBmb3IgSSB3aWxsIGNsZWFyIHRoZWlyIHNlbnNlcyBkYXJrLCANCitXaGF0IG1heSBzdWZmaWNlLCBhbmQgc29mdGVuIHN0b255IGhlYXJ0cyANCitUbyBwcmF5LCByZXBlbnQsIGFuZCBicmluZyBvYmVkaWVuY2UgZHVlLiANCitUbyBwcmF5ZXIsIHJlcGVudGFuY2UsIGFuZCBvYmVkaWVuY2UgZHVlLCANCitUaG91Z2ggYnV0IGVuZGVhdm91cidkIHdpdGggc2luY2VyZSBpbnRlbnQsIA0KK01pbmUgZWFyIHNoYWxsIG5vdCBiZSBzbG93LCBtaW5lIGV5ZSBub3Qgc2h1dC4gDQorQW5kIEkgd2lsbCBwbGFjZSB3aXRoaW4gdGhlbSBhcyBhIGd1aWRlLCANCitNeSB1bXBpcmUgQ29uc2NpZW5jZTsgd2hvbSBpZiB0aGV5IHdpbGwgaGVhciwgDQorTGlnaHQgYWZ0ZXIgbGlnaHQsIHdlbGwgdXMnZCwgdGhleSBzaGFsbCBhdHRhaW4sIA0KK0FuZCB0byB0aGUgZW5kLCBwZXJzaXN0aW5nLCBzYWZlIGFycml2ZS4gDQorVGhpcyBteSBsb25nIHN1ZmZlcmFuY2UsIGFuZCBteSBkYXkgb2YgZ3JhY2UsIA0KK1RoZXkgd2hvIG5lZ2xlY3QgYW5kIHNjb3JuLCBzaGFsbCBuZXZlciB0YXN0ZTsgDQorQnV0IGhhcmQgYmUgaGFyZGVuJ2QsIGJsaW5kIGJlIGJsaW5kZWQgbW9yZSwgDQorVGhhdCB0aGV5IG1heSBzdHVtYmxlIG9uLCBhbmQgZGVlcGVyIGZhbGw7IA0KK0FuZCBub25lIGJ1dCBzdWNoIGZyb20gbWVyY3kgSSBleGNsdWRlLiANCitCdXQgeWV0IGFsbCBpcyBub3QgZG9uZTsgTWFuIGRpc29iZXlpbmcsIA0KK0Rpc2xveWFsLCBicmVha3MgaGlzIGZlYWx0eSwgYW5kIHNpbnMgDQorQWdhaW5zdCB0aGUgaGlnaCBzdXByZW1hY3kgb2YgSGVhdmVuLCANCitBZmZlY3RpbmcgR29kLWhlYWQsIGFuZCwgc28gbG9zaW5nIGFsbCwgDQorVG8gZXhwaWF0ZSBoaXMgdHJlYXNvbiBoYXRoIG5vdWdodCBsZWZ0LCANCitCdXQgdG8gZGVzdHJ1Y3Rpb24gc2FjcmVkIGFuZCBkZXZvdGUsIA0KK0hlLCB3aXRoIGhpcyB3aG9sZSBwb3N0ZXJpdHksIG11c3QgZGllLCANCitEaWUgaGUgb3IganVzdGljZSBtdXN0OyB1bmxlc3MgZm9yIGhpbSANCitTb21lIG90aGVyIGFibGUsIGFuZCBhcyB3aWxsaW5nLCBwYXkgDQorVGhlIHJpZ2lkIHNhdGlzZmFjdGlvbiwgZGVhdGggZm9yIGRlYXRoLiANCitTYXksIGhlYXZlbmx5IFBvd2Vycywgd2hlcmUgc2hhbGwgd2UgZmluZCBzdWNoIGxvdmU/IA0KK1doaWNoIG9mIHlvdSB3aWxsIGJlIG1vcnRhbCwgdG8gcmVkZWVtIA0KK01hbidzIG1vcnRhbCBjcmltZSwgYW5kIGp1c3QgdGhlIHVuanVzdCB0byBzYXZlPyANCitEd2VsbHMgaW4gYWxsIEhlYXZlbiBjaGFyaXR5IHNvIGRlYXI/IA0KK0FuZCBzaWxlbmNlIHdhcyBpbiBIZWF2ZW46ICQgb24gTWFuJ3MgYmVoYWxmIA0KK0hlIGFzaydkLCBidXQgYWxsIHRoZSBoZWF2ZW5seSBxdWlyZSBzdG9vZCBtdXRlLCANCitQYXRyb24gb3IgaW50ZXJjZXNzb3VyIG5vbmUgYXBwZWFyJ2QsIA0KK011Y2ggbGVzcyB0aGF0IGR1cnN0IHVwb24gaGlzIG93biBoZWFkIGRyYXcgDQorVGhlIGRlYWRseSBmb3JmZWl0dXJlLCBhbmQgcmFuc29tIHNldC4gDQorQW5kIG5vdyB3aXRob3V0IHJlZGVtcHRpb24gYWxsIG1hbmtpbmQgDQorTXVzdCBoYXZlIGJlZW4gbG9zdCwgYWRqdWRnJ2QgdG8gRGVhdGggYW5kIEhlbGwgDQorQnkgZG9vbSBzZXZlcmUsIGhhZCBub3QgdGhlIFNvbiBvZiBHb2QsIA0KK0luIHdob20gdGhlIGZ1bG5lc3MgZHdlbGxzIG9mIGxvdmUgZGl2aW5lLCANCitIaXMgZGVhcmVzdCBtZWRpYXRpb24gdGh1cyByZW5ldydkLiANCitGYXRoZXIsIHRoeSB3b3JkIGlzIHBhc3QsIE1hbiBzaGFsbCBmaW5kIGdyYWNlOyANCitBbmQgc2hhbGwgZ3JhY2Ugbm90IGZpbmQgbWVhbnMsIHRoYXQgZmluZHMgaGVyIHdheSwgDQorVGhlIHNwZWVkaWVzdCBvZiB0aHkgd2luZ2VkIG1lc3NlbmdlcnMsIA0KK1RvIHZpc2l0IGFsbCB0aHkgY3JlYXR1cmVzLCBhbmQgdG8gYWxsIA0KK0NvbWVzIHVucHJldmVudGVkLCB1bmltcGxvcidkLCB1bnNvdWdodD8gDQorSGFwcHkgZm9yIE1hbiwgc28gY29taW5nOyBoZSBoZXIgYWlkIA0KK0NhbiBuZXZlciBzZWVrLCBvbmNlIGRlYWQgaW4gc2lucywgYW5kIGxvc3Q7IA0KK0F0b25lbWVudCBmb3IgaGltc2VsZiwgb3Igb2ZmZXJpbmcgbWVldCwgDQorSW5kZWJ0ZWQgYW5kIHVuZG9uZSwgaGF0aCBub25lIHRvIGJyaW5nOyANCitCZWhvbGQgbWUgdGhlbjogIG1lIGZvciBoaW0sIGxpZmUgZm9yIGxpZmUgDQorSSBvZmZlcjogb24gbWUgbGV0IHRoaW5lIGFuZ2VyIGZhbGw7IA0KK0FjY291bnQgbWUgTWFuOyBJIGZvciBoaXMgc2FrZSB3aWxsIGxlYXZlIA0KKyBUaHkgYm9zb20sIGFuZCB0aGlzIGdsb3J5IG5leHQgdG8gdGhlZSANCisgRnJlZWx5IHB1dCBvZmYsIGFuZCBmb3IgaGltIGxhc3RseSBkaWUgDQorIFdlbGwgcGxlYXNlZDsgb24gbWUgbGV0IERlYXRoIHdyZWFrIGFsbCBoaXMgcmFnZS4gDQorIFVuZGVyIGhpcyBnbG9vbXkgcG93ZXIgSSBzaGFsbCBub3QgbG9uZyANCisgTGllIHZhbnF1aXNoZWQuIFRob3UgaGFzdCBnaXZlbiBtZSB0byBwb3NzZXNzIA0KKyBMaWZlIGluIG15c2VsZiBmb3IgZXZlcjsgYnkgdGhlZSBJIGxpdmU7IA0KKyBUaG91Z2ggbm93IHRvIERlYXRoIEkgeWllbGQsIGFuZCBhbSBoaXMgZHVlLCANCisgQWxsIHRoYXQgb2YgbWUgY2FuIGRpZSwgeWV0LCB0aGF0IGRlYnQgcGFpZCwgDQorICQgdGhvdSB3aWx0IG5vdCBsZWF2ZSBtZSBpbiB0aGUgbG9hdGhzb21lIGdyYXZlIA0KKyBIaXMgcHJleSwgbm9yIHN1ZmZlciBteSB1bnNwb3R0ZWQgc291bCANCisgRm9yIGV2ZXIgd2l0aCBjb3JydXB0aW9uIHRoZXJlIHRvIGR3ZWxsOyANCisgQnV0IEkgc2hhbGwgcmlzZSB2aWN0b3Jpb3VzLCBhbmQgc3ViZHVlIA0KKyBNeSB2YW5xdWlzaGVyLCBzcG9pbGVkIG9mIGhpcyB2YXVudGVkIHNwb2lsLiANCisgRGVhdGggaGlzIGRlYXRoJ3Mgd291bmQgc2hhbGwgdGhlbiByZWNlaXZlLCBhbmQgc3Rvb3AgDQorIEluZ2xvcmlvdXMsIG9mIGhpcyBtb3J0YWwgc3RpbmcgZGlzYXJtZWQ7IA0KKyBJIHRocm91Z2ggdGhlIGFtcGxlIGFpciBpbiB0cml1bXBoIGhpZ2ggDQorIFNoYWxsIGxlYWQgSGVsbCBjYXB0aXZlIG1hdWdyZSBIZWxsLCBhbmQgc2hvdyANCitUaGUgcG93ZXJzIG9mIGRhcmtuZXNzIGJvdW5kLiBUaG91LCBhdCB0aGUgc2lnaHQgDQorIFBsZWFzZWQsIG91dCBvZiBIZWF2ZW4gc2hhbHQgbG9vayBkb3duIGFuZCBzbWlsZSwgDQorIFdoaWxlLCBieSB0aGVlIHJhaXNlZCwgSSBydWluIGFsbCBteSBmb2VzOyANCisgRGVhdGggbGFzdCwgYW5kIHdpdGggaGlzIGNhcmNhc2UgZ2x1dCB0aGUgZ3JhdmU7IA0KKyBUaGVuLCB3aXRoIHRoZSBtdWx0aXR1ZGUgb2YgbXkgcmVkZWVtZWQsIA0KKyBTaGFsbCBlbnRlciBIZWF2ZW4sIGxvbmcgYWJzZW50LCBhbmQgcmV0dXJuLCANCisgRmF0aGVyLCB0byBzZWUgdGh5IGZhY2UsIHdoZXJlaW4gbm8gY2xvdWQgDQorIE9mIGFuZ2VyIHNoYWxsIHJlbWFpbiwgYnV0IHBlYWNlIGFzc3VyZWQgDQorIEFuZCByZWNvbmNpbGVtZW50OiB3cmF0aCBzaGFsbCBiZSBubyBtb3JlIA0KKyBUaGVuY2Vmb3J0aCwgYnV0IGluIHRoeSBwcmVzZW5jZSBqb3kgZW50aXJlLiANCisgSGlzIHdvcmRzIGhlcmUgZW5kZWQ7IGJ1dCBoaXMgbWVlayBhc3BlY3QgDQorIFNpbGVudCB5ZXQgc3Bha2UsIGFuZCBicmVhdGhlZCBpbW1vcnRhbCBsb3ZlIA0KKyBUbyBtb3J0YWwgbWVuLCBhYm92ZSB3aGljaCBvbmx5IHNob25lIA0KKyBGaWxpYWwgb2JlZGllbmNlOiBhcyBhIHNhY3JpZmljZSANCisgR2xhZCB0byBiZSBvZmZlcmVkLCBoZSBhdHRlbmRzIHRoZSB3aWxsIA0KKyBPZiBoaXMgZ3JlYXQgRmF0aGVyLiBBZG1pcmF0aW9uIHNlaXplZCANCisgQWxsIEhlYXZlbiwgd2hhdCB0aGlzIG1pZ2h0IG1lYW4sIGFuZCB3aGl0aGVyIHRlbmQsIA0KKyBXb25kZXJpbmc7IGJ1dCBzb29uIHRoJyBBbG1pZ2h0eSB0aHVzIHJlcGxpZWQuIA0KKyBPIHRob3UgaW4gSGVhdmVuIGFuZCBFYXJ0aCB0aGUgb25seSBwZWFjZSANCisgRm91bmQgb3V0IGZvciBtYW5raW5kIHVuZGVyIHdyYXRoLCBPIHRob3UgDQorIE15IHNvbGUgY29tcGxhY2VuY2UhIFdlbGwgdGhvdSBrbm93J3N0IGhvdyBkZWFyIA0KKyBUbyBtZSBhcmUgYWxsIG15IHdvcmtzOyBub3IgTWFuIHRoZSBsZWFzdCwgDQorIFRob3VnaCBsYXN0IGNyZWF0ZWQsIHRoYXQgZm9yIGhpbSBJIHNwYXJlIA0KKyBUaGVlIGZyb20gbXkgYm9zb20gYW5kIHJpZ2h0IGhhbmQsIHRvIHNhdmUsIA0KKyBCeSBsb3NpbmcgdGhlZSBhIHdoaWxlLCB0aGUgd2hvbGUgcmFjZSBsb3N0LiAgICAgICAgICAgICAgICAgICAgDQorIA0KKyAgICAgMDAwMjEwNTMgIA0KKyBUaG91LCB0aGVyZWZvcmUsIHdob20gdGhvdSBvbmx5IGNhbnN0IHJlZGVlbSwgDQorIFRoZWlyIG5hdHVyZSBhbHNvIHRvIHRoeSBuYXR1cmUgam9pbjsgDQorIEFuZCBiZSB0aHlzZWxmIE1hbiBhbW9uZyBtZW4gb24gRWFydGgsIA0KKyBNYWRlIGZsZXNoLCB3aGVuIHRpbWUgc2hhbGwgYmUsIG9mIHZpcmdpbiBzZWVkLCANCisgQnkgd29uZHJvdXMgYmlydGg7IGJlIHRob3UgaW4gQWRhbSdzIHJvb20gDQorVGhlIGhlYWQgb2YgYWxsIG1hbmtpbmQsIHRob3VnaCBBZGFtJ3Mgc29uLiANCitBcyBpbiBoaW0gcGVyaXNoIGFsbCBtZW4sIHNvIGluIHRoZWUsIA0KK0FzIGZyb20gYSBzZWNvbmQgcm9vdCwgc2hhbGwgYmUgcmVzdG9yZWQgDQorQXMgbWFueSBhcyBhcmUgcmVzdG9yZWQsIHdpdGhvdXQgdGhlZSBub25lLiANCitIaXMgY3JpbWUgbWFrZXMgZ3VpbHR5IGFsbCBoaXMgc29uczsgdGh5IG1lcml0LCANCitJbXB1dGVkLCBzaGFsbCBhYnNvbHZlIHRoZW0gd2hvIHJlbm91bmNlIA0KK1RoZWlyIG93biBib3RoIHJpZ2h0ZW91cyBhbmQgdW5yaWdodGVvdXMgZGVlZHMsIA0KK0FuZCBsaXZlIGluIHRoZWUgdHJhbnNwbGFudGVkLCBhbmQgZnJvbSB0aGVlIA0KK1JlY2VpdmUgbmV3IGxpZmUuICBTbyBNYW4sIGFzIGlzIG1vc3QganVzdCwgDQorU2hhbGwgc2F0aXNmeSBmb3IgTWFuLCBiZSBqdWRnZWQgYW5kIGRpZSwgDQorQW5kIGR5aW5nIHJpc2UsIGFuZCByaXNpbmcgd2l0aCBoaW0gcmFpc2UgDQorSGlzIGJyZXRocmVuLCByYW5zb21lZCB3aXRoIGhpcyBvd24gZGVhciBsaWZlLiANCitTbyBoZWF2ZW5seSBsb3ZlIHNoYWxsIG91dGRvIGhlbGxpc2ggaGF0ZSwgDQorR2l2aW5nIHRvIGRlYXRoLCBhbmQgZHlpbmcgdG8gcmVkZWVtLCANCitTbyBkZWFybHkgdG8gcmVkZWVtIHdoYXQgaGVsbGlzaCBoYXRlIA0KK1NvIGVhc2lseSBkZXN0cm95ZWQsIGFuZCBzdGlsbCBkZXN0cm95cyANCitJbiB0aG9zZSB3aG8sIHdoZW4gdGhleSBtYXksIGFjY2VwdCBub3QgZ3JhY2UuIA0KK05vciBzaGFsdCB0aG91LCBieSBkZXNjZW5kaW5nIHRvIGFzc3VtZSANCitNYW4ncyBuYXR1cmUsIGxlc3NlbiBvciBkZWdyYWRlIHRoaW5lIG93bi4gDQorQmVjYXVzZSB0aG91IGhhc3QsIHRob3VnaCB0aHJvbmVkIGluIGhpZ2hlc3QgYmxpc3MgDQorRXF1YWwgdG8gR29kLCBhbmQgZXF1YWxseSBlbmpveWluZyANCitHb2QtbGlrZSBmcnVpdGlvbiwgcXVpdHRlZCBhbGwsIHRvIHNhdmUgDQorQSB3b3JsZCBmcm9tIHV0dGVyIGxvc3MsIGFuZCBoYXN0IGJlZW4gZm91bmQgDQorQnkgbWVyaXQgbW9yZSB0aGFuIGJpcnRocmlnaHQgU29uIG9mIEdvZCwgDQorRm91bmQgd29ydGhpZXN0IHRvIGJlIHNvIGJ5IGJlaW5nIGdvb2QsIA0KK0ZhciBtb3JlIHRoYW4gZ3JlYXQgb3IgaGlnaDsgYmVjYXVzZSBpbiB0aGVlIA0KK0xvdmUgaGF0aCBhYm91bmRlZCBtb3JlIHRoYW4gZ2xvcnkgYWJvdW5kczsgDQorVGhlcmVmb3JlIHRoeSBodW1pbGlhdGlvbiBzaGFsbCBleGFsdCANCitXaXRoIHRoZWUgdGh5IG1hbmhvb2QgYWxzbyB0byB0aGlzIHRocm9uZTogDQorSGVyZSBzaGFsdCB0aG91IHNpdCBpbmNhcm5hdGUsIGhlcmUgc2hhbHQgcmVpZ24gDQorQm90aCBHb2QgYW5kIE1hbiwgU29uIGJvdGggb2YgR29kIGFuZCBNYW4sIA0KK0Fub2ludGVkIHVuaXZlcnNhbCBLaW5nOyBhbGwgcG93ZXIgDQorSSBnaXZlIHRoZWU7IHJlaWduIGZvciBldmVyLCBhbmQgYXNzdW1lIA0KK1RoeSBtZXJpdHM7IHVuZGVyIHRoZWUsIGFzIGhlYWQgc3VwcmVtZSwgDQorVGhyb25lcywgUHJpbmNlZG9tcywgUG93ZXJzLCBEb21pbmlvbnMsIEkgcmVkdWNlOiANCitBbGwga25lZXMgdG8gdGhlZSBzaGFsbCBib3csIG9mIHRoZW0gdGhhdCBiaWRlIA0KK0luIEhlYXZlbiwgb3IgRWFydGgsIG9yIHVuZGVyIEVhcnRoIGluIEhlbGwuIA0KK1doZW4gdGhvdSwgYXR0ZW5kZWQgZ2xvcmlvdXNseSBmcm9tIEhlYXZlbiwgDQorU2hhbHQgaW4gdGhlIHNreSBhcHBlYXIsIGFuZCBmcm9tIHRoZWUgc2VuZCANCitUaGUgc3VtbW9uaW5nIEFyY2gtQW5nZWxzIHRvIHByb2NsYWltIA0KK1RoeSBkcmVhZCB0cmlidW5hbDsgZm9ydGh3aXRoIGZyb20gYWxsIHdpbmRzLCANCitUaGUgbGl2aW5nLCBhbmQgZm9ydGh3aXRoIHRoZSBjaXRlZCBkZWFkIA0KK09mIGFsbCBwYXN0IGFnZXMsIHRvIHRoZSBnZW5lcmFsIGRvb20gDQorU2hhbGwgaGFzdGVuOyBzdWNoIGEgcGVhbCBzaGFsbCByb3VzZSB0aGVpciBzbGVlcC4gDQorVGhlbiwgYWxsIHRoeSBzYWludHMgYXNzZW1ibGVkLCB0aG91IHNoYWx0IGp1ZGdlIA0KK0JhZCBNZW4gYW5kIEFuZ2VsczsgdGhleSwgYXJyYWlnbmVkLCBzaGFsbCBzaW5rIA0KK0JlbmVhdGggdGh5IHNlbnRlbmNlOyBIZWxsLCBoZXIgbnVtYmVycyBmdWxsLCANCitUaGVuY2Vmb3J0aCBzaGFsbCBiZSBmb3IgZXZlciBzaHV0LiAgTWVhbiB3aGlsZSANCitUaGUgd29ybGQgc2hhbGwgYnVybiwgYW5kIGZyb20gaGVyIGFzaGVzIHNwcmluZyANCitOZXcgSGVhdmVuIGFuZCBFYXJ0aCwgd2hlcmVpbiB0aGUganVzdCBzaGFsbCBkd2VsbCwgDQorQW5kLCBhZnRlciBhbGwgdGhlaXIgdHJpYnVsYXRpb25zIGxvbmcsIA0KK1NlZSBnb2xkZW4gZGF5cywgZnJ1aXRmdWwgb2YgZ29sZGVuIGRlZWRzLCANCitXaXRoIGpveSBhbmQgcGVhY2UgdHJpdW1waGluZywgYW5kIGZhaXIgdHJ1dGguIA0KK1RoZW4gdGhvdSB0aHkgcmVnYWwgc2NlcHRlciBzaGFsdCBsYXkgYnksIA0KK0ZvciByZWdhbCBzY2VwdGVyIHRoZW4gbm8gbW9yZSBzaGFsbCBuZWVkLCANCitHb2Qgc2hhbGwgYmUgYWxsIGluIGFsbC4gIEJ1dCwgYWxsIHllIEdvZHMsIA0KK0Fkb3JlIGhpbSwgd2hvIHRvIGNvbXBhc3MgYWxsIHRoaXMgZGllczsgDQorQWRvcmUgdGhlIFNvbiwgYW5kIGhvbm91ciBoaW0gYXMgbWUuIA0KK05vIHNvb25lciBoYWQgdGhlIEFsbWlnaHR5IGNlYXNlZCwgYnV0IGFsbCANCitUaGUgbXVsdGl0dWRlIG9mIEFuZ2Vscywgd2l0aCBhIHNob3V0IA0KK0xvdWQgYXMgZnJvbSBudW1iZXJzIHdpdGhvdXQgbnVtYmVyLCBzd2VldCANCitBcyBmcm9tIGJsZXN0IHZvaWNlcywgdXR0ZXJpbmcgam95LCBIZWF2ZW4gcnVuZyANCitXaXRoIGp1YmlsZWUsIGFuZCBsb3VkIEhvc2FubmFzIGZpbGxlZCANCitUaGUgZXRlcm5hbCByZWdpb25zOiAgTG93bHkgcmV2ZXJlbnQgDQorVG93YXJkcyBlaXRoZXIgdGhyb25lIHRoZXkgYm93LCBhbmQgdG8gdGhlIGdyb3VuZCANCitXaXRoIHNvbGVtbiBhZG9yYXRpb24gZG93biB0aGV5IGNhc3QgDQorVGhlaXIgY3Jvd25zIGlud292ZSB3aXRoIGFtYXJhbnQgYW5kIGdvbGQ7IA0KK0ltbW9ydGFsIGFtYXJhbnQsIGEgZmxvd2VyIHdoaWNoIG9uY2UgDQorSW4gUGFyYWRpc2UsIGZhc3QgYnkgdGhlIHRyZWUgb2YgbGlmZSwgDQorQmVnYW4gdG8gYmxvb207IGJ1dCBzb29uIGZvciBtYW4ncyBvZmZlbmNlIA0KK1RvIEhlYXZlbiByZW1vdmVkLCB3aGVyZSBmaXJzdCBpdCBncmV3LCB0aGVyZSBncm93cywgDQorQW5kIGZsb3dlcnMgYWxvZnQgc2hhZGluZyB0aGUgZm91bnQgb2YgbGlmZSwgDQorQW5kIHdoZXJlIHRoZSByaXZlciBvZiBibGlzcyB0aHJvdWdoIG1pZHN0IG9mIEhlYXZlbiANCitSb2xscyBvJ2VyIEVseXNpYW4gZmxvd2VycyBoZXIgYW1iZXIgc3RyZWFtOyANCitXaXRoIHRoZXNlIHRoYXQgbmV2ZXIgZmFkZSB0aGUgU3Bpcml0cyBlbGVjdCANCitCaW5kIHRoZWlyIHJlc3BsZW5kZW50IGxvY2tzIGlud3JlYXRoZWQgd2l0aCBiZWFtczsgDQorTm93IGluIGxvb3NlIGdhcmxhbmRzIHRoaWNrIHRocm93biBvZmYsIHRoZSBicmlnaHQgDQorUGF2ZW1lbnQsIHRoYXQgbGlrZSBhIHNlYSBvZiBqYXNwZXIgc2hvbmUsIA0KK0ltcHVycGxlZCB3aXRoIGNlbGVzdGlhbCByb3NlcyBzbWlsZWQuIA0KK1RoZW4sIGNyb3duZWQgYWdhaW4sIHRoZWlyIGdvbGRlbiBoYXJwcyB0aGV5IHRvb2ssIA0KK0hhcnBzIGV2ZXIgdHVuZWQsIHRoYXQgZ2xpdHRlcmluZyBieSB0aGVpciBzaWRlIA0KK0xpa2UgcXVpdmVycyBodW5nLCBhbmQgd2l0aCBwcmVhbWJsZSBzd2VldCANCitPZiBjaGFybWluZyBzeW1waG9ueSB0aGV5IGludHJvZHVjZSANCitUaGVpciBzYWNyZWQgc29uZywgYW5kIHdha2VuIHJhcHR1cmVzIGhpZ2g7IA0KK05vIHZvaWNlIGV4ZW1wdCwgbm8gdm9pY2UgYnV0IHdlbGwgY291bGQgam9pbiANCitNZWxvZGlvdXMgcGFydCwgc3VjaCBjb25jb3JkIGlzIGluIEhlYXZlbi4gDQorVGhlZSwgRmF0aGVyLCBmaXJzdCB0aGV5IHN1bmcgT21uaXBvdGVudCwgDQorSW1tdXRhYmxlLCBJbW1vcnRhbCwgSW5maW5pdGUsIA0KK0V0ZXJuYWwgS2luZzsgdGhlIEF1dGhvciBvZiBhbGwgYmVpbmcsIA0KK0Zvbm50YWluIG9mIGxpZ2h0LCB0aHlzZWxmIGludmlzaWJsZSANCitBbWlkc3QgdGhlIGdsb3Jpb3VzIGJyaWdodG5lc3Mgd2hlcmUgdGhvdSBzaXQnc3QgDQorVGhyb25lZCBpbmFjY2Vzc2libGUsIGJ1dCB3aGVuIHRob3Ugc2hhZGVzdCANCitUaGUgZnVsbCBibGF6ZSBvZiB0aHkgYmVhbXMsIGFuZCwgdGhyb3VnaCBhIGNsb3VkIA0KK0RyYXduIHJvdW5kIGFib3V0IHRoZWUgbGlrZSBhIHJhZGlhbnQgc2hyaW5lLCANCitEYXJrIHdpdGggZXhjZXNzaXZlIGJyaWdodCB0aHkgc2tpcnRzIGFwcGVhciwgDQorWWV0IGRhenpsZSBIZWF2ZW4sIHRoYXQgYnJpZ2h0ZXN0IFNlcmFwaGltIA0KK0FwcHJvYWNoIG5vdCwgYnV0IHdpdGggYm90aCB3aW5ncyB2ZWlsIHRoZWlyIGV5ZXMuIA0KK1RoZWUgbmV4dCB0aGV5IHNhbmcgb2YgYWxsIGNyZWF0aW9uIGZpcnN0LCANCitCZWdvdHRlbiBTb24sIERpdmluZSBTaW1pbGl0dWRlLCANCitJbiB3aG9zZSBjb25zcGljdW91cyBjb3VudGVuYW5jZSwgd2l0aG91dCBjbG91ZCANCitNYWRlIHZpc2libGUsIHRoZSBBbG1pZ2h0eSBGYXRoZXIgc2hpbmVzLCANCitXaG9tIGVsc2Ugbm8gY3JlYXR1cmUgY2FuIGJlaG9sZDsgb24gdGhlZSANCitJbXByZXNzZWQgdGhlIGVmZnVsZ2VuY2Ugb2YgaGlzIGdsb3J5IGFiaWRlcywgDQorVHJhbnNmdXNlZCBvbiB0aGVlIGhpcyBhbXBsZSBTcGlyaXQgcmVzdHMuIA0KK0hlIEhlYXZlbiBvZiBIZWF2ZW5zIGFuZCBhbGwgdGhlIFBvd2VycyB0aGVyZWluIA0KK0J5IHRoZWUgY3JlYXRlZDsgYW5kIGJ5IHRoZWUgdGhyZXcgZG93biANCitUaGUgYXNwaXJpbmcgRG9taW5hdGlvbnM6ICBUaG91IHRoYXQgZGF5IA0KK1RoeSBGYXRoZXIncyBkcmVhZGZ1bCB0aHVuZGVyIGRpZHN0IG5vdCBzcGFyZSwgDQorTm9yIHN0b3AgdGh5IGZsYW1pbmcgY2hhcmlvdC13aGVlbHMsIHRoYXQgc2hvb2sgDQorSGVhdmVuJ3MgZXZlcmxhc3RpbmcgZnJhbWUsIHdoaWxlIG8nZXIgdGhlIG5lY2tzIA0KK1Rob3UgZHJvdmVzdCBvZiB3YXJyaW5nIEFuZ2VscyBkaXNhcnJheWVkLiANCitCYWNrIGZyb20gcHVyc3VpdCB0aHkgUG93ZXJzIHdpdGggbG91ZCBhY2NsYWltIA0KK1RoZWUgb25seSBleHRvbGxlZCwgU29uIG9mIHRoeSBGYXRoZXIncyBtaWdodCwgDQorVG8gZXhlY3V0ZSBmaWVyY2UgdmVuZ2VhbmNlIG9uIGhpcyBmb2VzLCANCitOb3Qgc28gb24gTWFuOiAgSGltIHRocm91Z2ggdGhlaXIgbWFsaWNlIGZhbGxlbiwgDQorRmF0aGVyIG9mIG1lcmN5IGFuZCBncmFjZSwgdGhvdSBkaWRzdCBub3QgZG9vbSANCitTbyBzdHJpY3RseSwgYnV0IG11Y2ggbW9yZSB0byBwaXR5IGluY2xpbmU6IA0KK05vIHNvb25lciBkaWQgdGh5IGRlYXIgYW5kIG9ubHkgU29uIA0KK1BlcmNlaXZlIHRoZWUgcHVycG9zZWQgbm90IHRvIGRvb20gZnJhaWwgTWFuIA0KK1NvIHN0cmljdGx5LCBidXQgbXVjaCBtb3JlIHRvIHBpdHkgaW5jbGluZWQsIA0KK0hlIHRvIGFwcGVhc2UgdGh5IHdyYXRoLCBhbmQgZW5kIHRoZSBzdHJpZmUgDQorT2YgbWVyY3kgYW5kIGp1c3RpY2UgaW4gdGh5IGZhY2UgZGlzY2VybmVkLCANCitSZWdhcmRsZXNzIG9mIHRoZSBibGlzcyB3aGVyZWluIGhlIHNhdCANCitTZWNvbmQgdG8gdGhlZSwgb2ZmZXJlZCBoaW1zZWxmIHRvIGRpZSANCitGb3IgTWFuJ3Mgb2ZmZW5jZS4gIE8gdW5leGFtcGxlZCBsb3ZlLCANCitMb3ZlIG5vIHdoZXJlIHRvIGJlIGZvdW5kIGxlc3MgdGhhbiBEaXZpbmUhIA0KK0hhaWwsIFNvbiBvZiBHb2QsIFNhdmlvdXIgb2YgTWVuISAgVGh5IG5hbWUgDQorU2hhbGwgYmUgdGhlIGNvcGlvdXMgbWF0dGVyIG9mIG15IHNvbmcgDQorSGVuY2Vmb3J0aCwgYW5kIG5ldmVyIHNoYWxsIG15IGhlYXJ0IHRoeSBwcmFpc2UgDQorRm9yZ2V0LCBub3IgZnJvbSB0aHkgRmF0aGVyJ3MgcHJhaXNlIGRpc2pvaW4uIA0KK1RodXMgdGhleSBpbiBIZWF2ZW4sIGFib3ZlIHRoZSBzdGFycnkgc3BoZXJlLCANCitUaGVpciBoYXBweSBob3VycyBpbiBqb3kgYW5kIGh5bW5pbmcgc3BlbnQuIA0KK01lYW4gd2hpbGUgdXBvbiB0aGUgZmlybSBvcGFjb3VzIGdsb2JlIA0KK09mIHRoaXMgcm91bmQgd29ybGQsIHdob3NlIGZpcnN0IGNvbnZleCBkaXZpZGVzIA0KK1RoZSBsdW1pbm91cyBpbmZlcmlvdXIgb3JicywgZW5jbG9zZWQgDQorRnJvbSBDaGFvcywgYW5kIHRoZSBpbnJvYWQgb2YgRGFya25lc3Mgb2xkLCANCitTYXRhbiBhbGlnaHRlZCB3YWxrczogIEEgZ2xvYmUgZmFyIG9mZiANCitJdCBzZWVtZWQsIG5vdyBzZWVtcyBhIGJvdW5kbGVzcyBjb250aW5lbnQgDQorRGFyaywgd2FzdGUsIGFuZCB3aWxkLCB1bmRlciB0aGUgZnJvd24gb2YgTmlnaHQgDQorU3Rhcmxlc3MgZXhwb3NlZCwgYW5kIGV2ZXItdGhyZWF0ZW5pbmcgc3Rvcm1zIA0KK09mIENoYW9zIGJsdXN0ZXJpbmcgcm91bmQsIGluY2xlbWVudCBza3k7IA0KK1NhdmUgb24gdGhhdCBzaWRlIHdoaWNoIGZyb20gdGhlIHdhbGwgb2YgSGVhdmVuLCANCitUaG91Z2ggZGlzdGFudCBmYXIsIHNvbWUgc21hbGwgcmVmbGVjdGlvbiBnYWlucyANCitPZiBnbGltbWVyaW5nIGFpciBsZXNzIHZleGVkIHdpdGggdGVtcGVzdCBsb3VkOiANCitIZXJlIHdhbGtlZCB0aGUgRmllbmQgYXQgbGFyZ2UgaW4gc3BhY2lvdXMgZmllbGQuIA0KK0FzIHdoZW4gYSB2dWx0dXIgb24gSW1hdXMgYnJlZCwgDQorV2hvc2Ugc25vd3kgcmlkZ2UgdGhlIHJvdmluZyBUYXJ0YXIgYm91bmRzLCANCitEaXNsb2RnaW5nIGZyb20gYSByZWdpb24gc2NhcmNlIG9mIHByZXkgDQorVG8gZ29yZ2UgdGhlIGZsZXNoIG9mIGxhbWJzIG9yIHllYW5saW5nIGtpZHMsIA0KK09uIGhpbGxzIHdoZXJlIGZsb2NrcyBhcmUgZmVkLCBmbGllcyB0b3dhcmQgdGhlIHNwcmluZ3MgDQorT2YgR2FuZ2VzIG9yIEh5ZGFzcGVzLCBJbmRpYW4gc3RyZWFtczsgDQorQnV0IGluIGhpcyB3YXkgbGlnaHRzIG9uIHRoZSBiYXJyZW4gcGxhaW5zIA0KK09mIFNlcmljYW5hLCB3aGVyZSBDaGluZXNlcyBkcml2ZSANCitXaXRoIHNhaWxzIGFuZCB3aW5kIHRoZWlyIGNhbnkgd2FnZ29ucyBsaWdodDogDQorU28sIG9uIHRoaXMgd2luZHkgc2VhIG9mIGxhbmQsIHRoZSBGaWVuZCANCitXYWxrZWQgdXAgYW5kIGRvd24gYWxvbmUsIGJlbnQgb24gaGlzIHByZXk7IA0KK0Fsb25lLCBmb3Igb3RoZXIgY3JlYXR1cmUgaW4gdGhpcyBwbGFjZSwgDQorTGl2aW5nIG9yIGxpZmVsZXNzLCB0byBiZSBmb3VuZCB3YXMgbm9uZTsgDQorTm9uZSB5ZXQsIGJ1dCBzdG9yZSBoZXJlYWZ0ZXIgZnJvbSB0aGUgZWFydGggDQorVXAgaGl0aGVyIGxpa2UgYWVyZWFsIHZhcG91cnMgZmxldyANCitPZiBhbGwgdGhpbmdzIHRyYW5zaXRvcnkgYW5kIHZhaW4sIHdoZW4gc2luIA0KK1dpdGggdmFuaXR5IGhhZCBmaWxsZWQgdGhlIHdvcmtzIG9mIG1lbjogDQorQm90aCBhbGwgdGhpbmdzIHZhaW4sIGFuZCBhbGwgd2hvIGluIHZhaW4gdGhpbmdzIA0KK0J1aWx0IHRoZWlyIGZvbmQgaG9wZXMgb2YgZ2xvcnkgb3IgbGFzdGluZyBmYW1lLCANCitPciBoYXBwaW5lc3MgaW4gdGhpcyBvciB0aGUgb3RoZXIgbGlmZTsgDQorQWxsIHdobyBoYXZlIHRoZWlyIHJld2FyZCBvbiBlYXJ0aCwgdGhlIGZydWl0cyANCitPZiBwYWluZnVsIHN1cGVyc3RpdGlvbiBhbmQgYmxpbmQgemVhbCwgDQorTm91Z2h0IHNlZWtpbmcgYnV0IHRoZSBwcmFpc2Ugb2YgbWVuLCBoZXJlIGZpbmQgDQorRml0IHJldHJpYnV0aW9uLCBlbXB0eSBhcyB0aGVpciBkZWVkczsgDQorQWxsIHRoZSB1bmFjY29tcGxpc2hlZCB3b3JrcyBvZiBOYXR1cmUncyBoYW5kLCANCitBYm9ydGl2ZSwgbW9uc3Ryb3VzLCBvciB1bmtpbmRseSBtaXhlZCwgDQorRGlzc29sdmVkIG9uIGVhcnRoLCBmbGVldCBoaXRoZXIsIGFuZCBpbiB2YWluLCANCitUaWxsIGZpbmFsIGRpc3NvbHV0aW9uLCB3YW5kZXIgaGVyZTsgDQorTm90IGluIHRoZSBuZWlnaGJvdXJpbmcgbW9vbiBhcyBzb21lIGhhdmUgZHJlYW1lZDsgDQorVGhvc2UgYXJnZW50IGZpZWxkcyBtb3JlIGxpa2VseSBoYWJpdGFudHMsIA0KK1RyYW5zbGF0ZWQgU2FpbnRzLCBvciBtaWRkbGUgU3Bpcml0cyBob2xkIA0KK0JldHdpeHQgdGhlIGFuZ2VsaWNhbCBhbmQgaHVtYW4ga2luZC4gDQorSGl0aGVyIG9mIGlsbC1qb2luZWQgc29ucyBhbmQgZGF1Z2h0ZXJzIGJvcm4gDQorRmlyc3QgZnJvbSB0aGUgYW5jaWVudCB3b3JsZCB0aG9zZSBnaWFudHMgY2FtZSANCitXaXRoIG1hbnkgYSB2YWluIGV4cGxvaXQsIHRob3VnaCB0aGVuIHJlbm93bmVkOiANCitUaGUgYnVpbGRlcnMgbmV4dCBvZiBCYWJlbCBvbiB0aGUgcGxhaW4gDQorT2YgU2VubmFhciwgYW5kIHN0aWxsIHdpdGggdmFpbiBkZXNpZ24sIA0KK05ldyBCYWJlbHMsIGhhZCB0aGV5IHdoZXJld2l0aGFsLCB3b3VsZCBidWlsZDogDQorT3RoZXJzIGNhbWUgc2luZ2xlOyBoZSwgd2hvLCB0byBiZSBkZWVtZWQgDQorQSBHb2QsIGxlYXBlZCBmb25kbHkgaW50byBBZXRuYSBmbGFtZXMsIA0KK0VtcGVkb2NsZXM7IGFuZCBoZSwgd2hvLCB0byBlbmpveSANCitQbGF0bydzIEVseXNpdW0sIGxlYXBlZCBpbnRvIHRoZSBzZWEsIA0KK0NsZW9tYnJvdHVzOyBhbmQgbWFueSBtb3JlIHRvbyBsb25nLCANCitFbWJyeW9zLCBhbmQgaWRpb3RzLCBlcmVtaXRlcywgYW5kIGZyaWFycyANCitXaGl0ZSwgYmxhY2ssIGFuZCBncmF5LCB3aXRoIGFsbCB0aGVpciB0cnVtcGVyeS4gDQorSGVyZSBwaWxncmltcyByb2FtLCB0aGF0IHN0cmF5ZWQgc28gZmFyIHRvIHNlZWsgDQorSW4gR29sZ290aGEgaGltIGRlYWQsIHdobyBsaXZlcyBpbiBIZWF2ZW47IA0KK0FuZCB0aGV5LCB3aG8gdG8gYmUgc3VyZSBvZiBQYXJhZGlzZSwgDQorRHlpbmcsIHB1dCBvbiB0aGUgd2VlZHMgb2YgRG9taW5pY2ssIA0KK09yIGluIEZyYW5jaXNjYW4gdGhpbmsgdG8gcGFzcyBkaXNndWlzZWQ7IA0KK1RoZXkgcGFzcyB0aGUgcGxhbmV0cyBzZXZlbiwgYW5kIHBhc3MgdGhlIGZpeGVkLCANCitBbmQgdGhhdCBjcnlzdGFsbGluZyBzcGhlcmUgd2hvc2UgYmFsYW5jZSB3ZWlnaHMgDQorVGhlIHRyZXBpZGF0aW9uIHRhbGtlZCwgYW5kIHRoYXQgZmlyc3QgbW92ZWQ7IA0KK0FuZCBub3cgU2FpbnQgUGV0ZXIgYXQgSGVhdmVuJ3Mgd2lja2V0IHNlZW1zIA0KK1RvIHdhaXQgdGhlbSB3aXRoIGhpcyBrZXlzLCBhbmQgbm93IGF0IGZvb3QgDQorT2YgSGVhdmVuJ3MgYXNjZW50IHRoZXkgbGlmdCB0aGVpciBmZWV0LCB3aGVuIGxvIA0KK0EgdmlvbGVudCBjcm9zcyB3aW5kIGZyb20gZWl0aGVyIGNvYXN0IA0KK0Jsb3dzIHRoZW0gdHJhbnN2ZXJzZSwgdGVuIHRob3VzYW5kIGxlYWd1ZXMgYXdyeSANCitJbnRvIHRoZSBkZXZpb3VzIGFpcjogIFRoZW4gbWlnaHQgeWUgc2VlIA0KK0Nvd2xzLCBob29kcywgYW5kIGhhYml0cywgd2l0aCB0aGVpciB3ZWFyZXJzLCB0b3N0IA0KK0FuZCBmbHV0dGVyZWQgaW50byByYWdzOyB0aGVuIHJlbGlxdWVzLCBiZWFkcywgDQorSW5kdWxnZW5jZXMsIGRpc3BlbnNlcywgcGFyZG9ucywgYnVsbHMsIA0KK1RoZSBzcG9ydCBvZiB3aW5kczogIEFsbCB0aGVzZSwgdXB3aGlybGVkIGFsb2Z0LCANCitGbHkgbydlciB0aGUgYmFja3NpZGUgb2YgdGhlIHdvcmxkIGZhciBvZmYgDQorSW50byBhIExpbWJvIGxhcmdlIGFuZCBicm9hZCwgc2luY2UgY2FsbGVkIA0KK1RoZSBQYXJhZGlzZSBvZiBGb29scywgdG8gZmV3IHVua25vd24gDQorTG9uZyBhZnRlcjsgbm93IHVucGVvcGxlZCwgYW5kIHVudHJvZC4gDQorQWxsIHRoaXMgZGFyayBnbG9iZSB0aGUgRmllbmQgZm91bmQgYXMgaGUgcGFzc2VkLCANCitBbmQgbG9uZyBoZSB3YW5kZXJlZCwgdGlsbCBhdCBsYXN0IGEgZ2xlYW0gDQorT2YgZGF3bmluZyBsaWdodCB0dXJuZWQgdGhpdGhlci13YXJkIGluIGhhc3RlIA0KK0hpcyB0cmF2ZWxsZWQgc3RlcHM6IGZhciBkaXN0YW50IGhlIGRlc2NyaWVzIA0KK0FzY2VuZGluZyBieSBkZWdyZWVzIG1hZ25pZmljZW50IA0KK1VwIHRvIHRoZSB3YWxsIG9mIEhlYXZlbiBhIHN0cnVjdHVyZSBoaWdoOyANCitBdCB0b3Agd2hlcmVvZiwgYnV0IGZhciBtb3JlIHJpY2gsIGFwcGVhcmVkIA0KK1RoZSB3b3JrIGFzIG9mIGEga2luZ2x5IHBhbGFjZS1nYXRlLCANCitXaXRoIGZyb250aXNwaWVjZSBvZiBkaWFtb25kIGFuZCBnb2xkIA0KK0VtYmVsbGlzaGVkOyB0aGljayB3aXRoIHNwYXJrbGluZyBvcmllbnQgZ2VtcyANCitUaGUgcG9ydGFsIHNob25lLCBpbmltaXRhYmxlIG9uIGVhcnRoIA0KK0J5IG1vZGVsLCBvciBieSBzaGFkaW5nIHBlbmNpbCwgZHJhd24uIA0KK1RoZXNlIHN0YWlycyB3ZXJlIHN1Y2ggYXMgd2hlcmVvbiBKYWNvYiBzYXcgDQorQW5nZWxzIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZywgYmFuZHMgDQorT2YgZ3VhcmRpYW5zIGJyaWdodCwgd2hlbiBoZSBmcm9tIEVzYXUgZmxlZCANCitUbyBQYWRhbi1BcmFtLCBpbiB0aGUgZmllbGQgb2YgTHV6IA0KK0RyZWFtaW5nIGJ5IG5pZ2h0IHVuZGVyIHRoZSBvcGVuIHNreSANCitBbmQgd2FraW5nIGNyaWVkLCAgVGhpcyBpcyB0aGUgZ2F0ZSBvZiBIZWF2ZW4uIA0KK0VhY2ggc3RhaXIgbXlzdGVyaW91c2x5IHdhcyBtZWFudCwgbm9yIHN0b29kIA0KK1RoZXJlIGFsd2F5cywgYnV0IGRyYXduIHVwIHRvIEhlYXZlbiBzb21ldGltZXMgDQorVmlld2xlc3M7IGFuZCB1bmRlcm5lYXRoIGEgYnJpZ2h0IHNlYSBmbG93ZWQgDQorT2YgamFzcGVyLCBvciBvZiBsaXF1aWQgcGVhcmwsIHdoZXJlb24gDQorV2hvIGFmdGVyIGNhbWUgZnJvbSBlYXJ0aCwgZmFpbGluZyBhcnJpdmVkIA0KK1dhZnRlZCBieSBBbmdlbHMsIG9yIGZsZXcgbydlciB0aGUgbGFrZSANCitSYXB0IGluIGEgY2hhcmlvdCBkcmF3biBieSBmaWVyeSBzdGVlZHMuIA0KK1RoZSBzdGFpcnMgd2VyZSB0aGVuIGxldCBkb3duLCB3aGV0aGVyIHRvIGRhcmUgDQorVGhlIEZpZW5kIGJ5IGVhc3kgYXNjZW50LCBvciBhZ2dyYXZhdGUgDQorSGlzIHNhZCBleGNsdXNpb24gZnJvbSB0aGUgZG9vcnMgb2YgYmxpc3M6IA0KK0RpcmVjdCBhZ2FpbnN0IHdoaWNoIG9wZW5lZCBmcm9tIGJlbmVhdGgsIA0KK0p1c3QgbydlciB0aGUgYmxpc3NmdWwgc2VhdCBvZiBQYXJhZGlzZSwgDQorQSBwYXNzYWdlIGRvd24gdG8gdGhlIEVhcnRoLCBhIHBhc3NhZ2Ugd2lkZSwgDQorV2lkZXIgYnkgZmFyIHRoYW4gdGhhdCBvZiBhZnRlci10aW1lcyANCitPdmVyIG1vdW50IFNpb24sIGFuZCwgdGhvdWdoIHRoYXQgd2VyZSBsYXJnZSwgDQorT3ZlciB0aGUgUHJvbWlzZWQgTGFuZCB0byBHb2Qgc28gZGVhcjsgDQorQnkgd2hpY2gsIHRvIHZpc2l0IG9mdCB0aG9zZSBoYXBweSB0cmliZXMsIA0KK09uIGhpZ2ggYmVoZXN0cyBoaXMgYW5nZWxzIHRvIGFuZCBmcm8gDQorUGFzc2VkIGZyZXF1ZW50LCBhbmQgaGlzIGV5ZSB3aXRoIGNob2ljZSByZWdhcmQgDQorRnJvbSBQYW5lYXMsIHRoZSBmb3VudCBvZiBKb3JkYW4ncyBmbG9vZCwgDQorVG8gQmVlcnNhYmEsIHdoZXJlIHRoZSBIb2x5IExhbmQgDQorQm9yZGVycyBvbiBFZ3lwdCBhbmQgdGhlIEFyYWJpYW4gc2hvcmU7IA0KK1NvIHdpZGUgdGhlIG9wZW5pbmcgc2VlbWVkLCB3aGVyZSBib3VuZHMgd2VyZSBzZXQgDQorVG8gZGFya25lc3MsIHN1Y2ggYXMgYm91bmQgdGhlIG9jZWFuIHdhdmUuIA0KK1NhdGFuIGZyb20gaGVuY2UsIG5vdyBvbiB0aGUgbG93ZXIgc3RhaXIsIA0KK1RoYXQgc2NhbGVkIGJ5IHN0ZXBzIG9mIGdvbGQgdG8gSGVhdmVuLWdhdGUsIA0KK0xvb2tzIGRvd24gd2l0aCB3b25kZXIgYXQgdGhlIHN1ZGRlbiB2aWV3IA0KK09mIGFsbCB0aGlzIHdvcmxkIGF0IG9uY2UuICBBcyB3aGVuIGEgc2NvdXQsIA0KK1Rocm91Z2ggZGFyaz87bmQgZGVzYXJ0IHdheXMgd2l0aD9vZXJpbCBnb25lIA0KK0FsbD9taWdodCw/O3Q/a2FzdCBieSBicmVhayBvZiBjaGVlcmZ1bCBkYXduIA0KK09idGFpbnMgdGhlIGJyb3cgb2Ygc29tZSBoaWdoLWNsaW1iaW5nIGhpbGwsIA0KK1doaWNoIHRvIGhpcyBleWUgZGlzY292ZXJzIHVuYXdhcmUgDQorVGhlIGdvb2RseSBwcm9zcGVjdCBvZiBzb21lIGZvcmVpZ24gbGFuZCANCitGaXJzdCBzZWVuLCBvciBzb21lIHJlbm93bmVkIG1ldHJvcG9saXMgDQorV2l0aCBnbGlzdGVyaW5nIHNwaXJlcyBhbmQgcGlubmFjbGVzIGFkb3JuZWQsIA0KK1doaWNoIG5vdyB0aGUgcmlzaW5nIHN1biBnaWxkcyB3aXRoIGhpcyBiZWFtczogDQorU3VjaCB3b25kZXIgc2Vpc2VkLCB0aG91Z2ggYWZ0ZXIgSGVhdmVuIHNlZW4sIA0KK1RoZSBTcGlyaXQgbWFsaWduLCBidXQgbXVjaCBtb3JlIGVudnkgc2Vpc2VkLCANCitBdCBzaWdodCBvZiBhbGwgdGhpcyB3b3JsZCBiZWhlbGQgc28gZmFpci4gDQorUm91bmQgaGUgc3VydmV5cyAoYW5kIHdlbGwgbWlnaHQsIHdoZXJlIGhlIHN0b29kIA0KK1NvIGhpZ2ggYWJvdmUgdGhlIGNpcmNsaW5nIGNhbm9weSANCitPZiBuaWdodCdzIGV4dGVuZGVkIHNoYWRlLCkgZnJvbSBlYXN0ZXJuIHBvaW50IA0KK09mIExpYnJhIHRvIHRoZSBmbGVlY3kgc3RhciB0aGF0IGJlYXJzIA0KK0FuZHJvbWVkYSBmYXIgb2ZmIEF0bGFudGljayBzZWFzIA0KK0JleW9uZCB0aGUgaG9yaXpvbjsgdGhlbiBmcm9tIHBvbGUgdG8gcG9sZSANCitIZSB2aWV3cyBpbiBicmVhZHRoLCBhbmQgd2l0aG91dCBsb25nZXIgcGF1c2UgDQorRG93biByaWdodCBpbnRvIHRoZSB3b3JsZCdzIGZpcnN0IHJlZ2lvbiB0aHJvd3MgDQorSGlzIGZsaWdodCBwcmVjaXBpdGFudCwgYW5kIHdpbmRzIHdpdGggZWFzZSANCitUaHJvdWdoIHRoZSBwdXJlIG1hcmJsZSBhaXIgaGlzIG9ibGlxdWUgd2F5IA0KK0Ftb25nc3QgaW5udW1lcmFibGUgc3RhcnMsIHRoYXQgc2hvbmUgDQorU3RhcnMgZGlzdGFudCwgYnV0IG5pZ2ggaGFuZCBzZWVtZWQgb3RoZXIgd29ybGRzOyANCitPciBvdGhlciB3b3JsZHMgdGhleSBzZWVtZWQsIG9yIGhhcHB5IGlzbGVzLCANCitMaWtlIHRob3NlIEhlc3BlcmlhbiBnYXJkZW5zIGZhbWVkIG9mIG9sZCwgDQorRm9ydHVuYXRlIGZpZWxkcywgYW5kIGdyb3ZlcywgYW5kIGZsb3dlcnkgdmFsZXMsIA0KK1RocmljZSBoYXBweSBpc2xlczsgYnV0IHdobyBkd2VsdCBoYXBweSB0aGVyZSANCitIZSBzdGFpZCBub3QgdG8gaW5xdWlyZTogIEFib3ZlIHRoZW0gYWxsIA0KK1RoZSBnb2xkZW4gc3VuLCBpbiBzcGxlbmRvdXIgbGlrZXN0IEhlYXZlbiwgDQorQWxsdXJlZCBoaXMgZXllOyB0aGl0aGVyIGhpcyBjb3Vyc2UgaGUgYmVuZHMgDQorVGhyb3VnaCB0aGUgY2FsbSBmaXJtYW1lbnQsIChidXQgdXAgb3IgZG93biwgDQorQnkgY2VudGVyLCBvciBlY2NlbnRyaWNrLCBoYXJkIHRvIHRlbGwsIA0KK09yIGxvbmdpdHVkZSwpIHdoZXJlIHRoZSBncmVhdCBsdW1pbmFyeSANCitBbG9vZiB0aGUgdnVsZ2FyIGNvbnN0ZWxsYXRpb25zIHRoaWNrLCANCitUaGF0IGZyb20gaGlzIGxvcmRseSBleWUga2VlcCBkaXN0YW5jZSBkdWUsIA0KK0Rpc3BlbnNlcyBsaWdodCBmcm9tIGZhcjsgdGhleSwgYXMgdGhleSBtb3ZlIA0KK1RoZWlyIHN0YXJyeSBkYW5jZSBpbiBudW1iZXJzIHRoYXQgY29tcHV0ZSANCitEYXlzLCBtb250aHMsIGFuZCB5ZWFycywgdG93YXJkcyBoaXMgYWxsLWNoZWVyaW5nIGxhbXAgDQorVHVybiBzd2lmdCB0aGVpciB2YXJpb3VzIG1vdGlvbnMsIG9yIGFyZSB0dXJuZWQgDQorQnkgaGlzIG1hZ25ldGljayBiZWFtLCB0aGF0IGdlbnRseSB3YXJtcyANCitUaGUgdW5pdmVyc2UsIGFuZCB0byBlYWNoIGlud2FyZCBwYXJ0IA0KK1dpdGggZ2VudGxlIHBlbmV0cmF0aW9uLCB0aG91Z2ggdW5zZWVuLCANCitTaG9vdHMgaW52aXNpYmxlIHZpcnR1ZSBldmVuIHRvIHRoZSBkZWVwOyANCitTbyB3b25kZXJvdXNseSB3YXMgc2V0IGhpcyBzdGF0aW9uIGJyaWdodC4gDQorVGhlcmUgbGFuZHMgdGhlIEZpZW5kLCBhIHNwb3QgbGlrZSB3aGljaCBwZXJoYXBzIA0KK0FzdHJvbm9tZXIgaW4gdGhlIHN1bidzIGx1Y2VudCBvcmIgDQorVGhyb3VnaCBoaXMgZ2xhemVkIG9wdGljayB0dWJlIHlldCBuZXZlciBzYXcuIA0KK1RoZSBwbGFjZSBoZSBmb3VuZCBiZXlvbmQgZXhwcmVzc2lvbiBicmlnaHQsIA0KK0NvbXBhcmVkIHdpdGggYXVnaHQgb24gZWFydGgsIG1ldGFsIG9yIHN0b25lOyANCitOb3QgYWxsIHBhcnRzIGxpa2UsIGJ1dCBhbGwgYWxpa2UgaW5mb3JtZWQgDQorV2l0aCByYWRpYW50IGxpZ2h0LCBhcyBnbG93aW5nIGlyb24gd2l0aCBmaXJlOyANCitJZiBtZXRhbCwgcGFydCBzZWVtZWQgZ29sZCwgcGFydCBzaWx2ZXIgY2xlYXI7IA0KK0lmIHN0b25lLCBjYXJidW5jbGUgbW9zdCBvciBjaHJ5c29saXRlLCANCitSdWJ5IG9yIHRvcGF6LCB0byB0aGUgdHdlbHZlIHRoYXQgc2hvbmUgDQorSW4gQWFyb24ncyBicmVhc3QtcGxhdGUsIGFuZCBhIHN0b25lIGJlc2lkZXMgDQorSW1hZ2luZWQgcmF0aGVyIG9mdCB0aGFuIGVsc2V3aGVyZSBzZWVuLCANCitUaGF0IHN0b25lLCBvciBsaWtlIHRvIHRoYXQgd2hpY2ggaGVyZSBiZWxvdyANCitQaGlsb3NvcGhlcnMgaW4gdmFpbiBzbyBsb25nIGhhdmUgc291Z2h0LCANCitJbiB2YWluLCB0aG91Z2ggYnkgdGhlaXIgcG93ZXJmdWwgYXJ0IHRoZXkgYmluZCANCitWb2xhdGlsZSBIZXJtZXMsIGFuZCBjYWxsIHVwIHVuYm91bmQgDQorSW4gdmFyaW91cyBzaGFwZXMgb2xkIFByb3RldXMgZnJvbSB0aGUgc2VhLCANCitEcmFpbmVkIHRocm91Z2ggYSBsaW1iZWNrIHRvIGhpcyBuYXRpdmUgZm9ybS4gDQorV2hhdCB3b25kZXIgdGhlbiBpZiBmaWVsZHMgYW5kIHJlZ2lvbnMgaGVyZSANCitCcmVhdGhlIGZvcnRoIEVsaXhpciBwdXJlLCBhbmQgcml2ZXJzIHJ1biANCitQb3RhYmxlIGdvbGQsIHdoZW4gd2l0aCBvbmUgdmlydHVvdXMgdG91Y2ggDQorVGhlIGFyY2gtY2hlbWljayBzdW4sIHNvIGZhciBmcm9tIHVzIHJlbW90ZSwgDQorUHJvZHVjZXMsIHdpdGggdGVycmVzdHJpYWwgaHVtb3VyIG1peGVkLCANCitIZXJlIGluIHRoZSBkYXJrIHNvIG1hbnkgcHJlY2lvdXMgdGhpbmdzIA0KK09mIGNvbG91ciBnbG9yaW91cywgYW5kIGVmZmVjdCBzbyByYXJlPyANCitIZXJlIG1hdHRlciBuZXcgdG8gZ2F6ZSB0aGUgRGV2aWwgbWV0IA0KK1VuZGF6emxlZDsgZmFyIGFuZCB3aWRlIGhpcyBleWUgY29tbWFuZHM7IA0KK0ZvciBzaWdodCBubyBvYnN0YWNsZSBmb3VuZCBoZXJlLCBub3Igc2hhZGUsIA0KK0J1dCBhbGwgc3VuLXNoaW5lLCBhcyB3aGVuIGhpcyBiZWFtcyBhdCBub29uIA0KK0N1bG1pbmF0ZSBmcm9tIHRoZSBlcXVhdG9yLCBhcyB0aGV5IG5vdyANCitTaG90IHVwd2FyZCBzdGlsbCBkaXJlY3QsIHdoZW5jZSBubyB3YXkgcm91bmQgDQorU2hhZG93IGZyb20gYm9keSBvcGFxdWUgY2FuIGZhbGw7IGFuZCB0aGUgYWlyLCANCitObyB3aGVyZSBzbyBjbGVhciwgc2hhcnBlbmVkIGhpcyB2aXN1YWwgcmF5IA0KK1RvIG9iamVjdHMgZGlzdGFudCBmYXIsIHdoZXJlYnkgaGUgc29vbiANCitTYXcgd2l0aGluIGtlbiBhIGdsb3Jpb3VzIEFuZ2VsIHN0YW5kLCANCitUaGUgc2FtZSB3aG9tIEpvaG4gc2F3IGFsc28gaW4gdGhlIHN1bjogDQorSGlzIGJhY2sgd2FzIHR1cm5lZCwgYnV0IG5vdCBoaXMgYnJpZ2h0bmVzcyBoaWQ7IA0KK09mIGJlYW1pbmcgc3VubnkgcmF5cyBhIGdvbGRlbiB0aWFyIA0KK0NpcmNsZWQgaGlzIGhlYWQsIG5vciBsZXNzIGhpcyBsb2NrcyBiZWhpbmQgDQorSWxsdXN0cmlvdXMgb24gaGlzIHNob3VsZGVycyBmbGVkZ2Ugd2l0aCB3aW5ncyANCitMYXkgd2F2aW5nIHJvdW5kOyBvbiBzb21lIGdyZWF0IGNoYXJnZSBlbXBsb3llZCANCitIZSBzZWVtZWQsIG9yIGZpeGVkIGluIGNvZ2l0YXRpb24gZGVlcC4gDQorR2xhZCB3YXMgdGhlIFNwaXJpdCBpbXB1cmUsIGFzIG5vdyBpbiBob3BlIA0KK1RvIGZpbmQgd2hvIG1pZ2h0IGRpcmVjdCBoaXMgd2FuZGVyaW5nIGZsaWdodCANCitUbyBQYXJhZGlzZSwgdGhlIGhhcHB5IHNlYXQgb2YgTWFuLCANCitIaXMgam91cm5leSdzIGVuZCBhbmQgb3VyIGJlZ2lubmluZyB3b2UuIA0KK0J1dCBmaXJzdCBoZSBjYXN0cyB0byBjaGFuZ2UgaGlzIHByb3BlciBzaGFwZSwgDQorV2hpY2ggZWxzZSBtaWdodCB3b3JrIGhpbSBkYW5nZXIgb3IgZGVsYXk6IA0KK0FuZCBub3cgYSBzdHJpcGxpbmcgQ2hlcnViIGhlIGFwcGVhcnMsIA0KK05vdCBvZiB0aGUgcHJpbWUsIHlldCBzdWNoIGFzIGluIGhpcyBmYWNlIA0KK1lvdXRoIHNtaWxlZCBjZWxlc3RpYWwsIGFuZCB0byBldmVyeSBsaW1iIA0KK1N1aXRhYmxlIGdyYWNlIGRpZmZ1c2VkLCBzbyB3ZWxsIGhlIGZlaWduZWQ6IA0KK1VuZGVyIGEgY29yb25ldCBoaXMgZmxvd2luZyBoYWlyIA0KK0luIGN1cmxzIG9uIGVpdGhlciBjaGVlayBwbGF5ZWQ7IHdpbmdzIGhlIHdvcmUgDQorT2YgbWFueSBhIGNvbG91cmVkIHBsdW1lLCBzcHJpbmtsZWQgd2l0aCBnb2xkOyANCitIaXMgaGFiaXQgZml0IGZvciBzcGVlZCBzdWNjaW5jdCwgYW5kIGhlbGQgDQorQmVmb3JlIGhpcyBkZWNlbnQgc3RlcHMgYSBzaWx2ZXIgd2FuZC4gDQorSGUgZHJldyBub3QgbmlnaCB1bmhlYXJkOyB0aGUgQW5nZWwgYnJpZ2h0LCANCitFcmUgaGUgZHJldyBuaWdoLCBoaXMgcmFkaWFudCB2aXNhZ2UgdHVybmVkLCANCitBZG1vbmlzaGVkIGJ5IGhpcyBlYXIsIGFuZCBzdHJhaWdodCB3YXMga25vd24gDQorVGhlIEFyY2gtQW5nZWwgVXJpZWwsIG9uZSBvZiB0aGUgc2V2ZW4gDQorV2hvIGluIEdvZCdzIHByZXNlbmNlLCBuZWFyZXN0IHRvIGhpcyB0aHJvbmUsIA0KK1N0YW5kIHJlYWR5IGF0IGNvbW1hbmQsIGFuZCBhcmUgaGlzIGV5ZXMgDQorVGhhdCBydW4gdGhyb3VnaCBhbGwgdGhlIEhlYXZlbnMsIG9yIGRvd24gdG8gdGhlIEVhcnRoIA0KK0JlYXIgaGlzIHN3aWZ0IGVycmFuZHMgb3ZlciBtb2lzdCBhbmQgZHJ5LCANCitPJ2VyIHNlYSBhbmQgbGFuZDogaGltIFNhdGFuIHRodXMgYWNjb3N0cy4gDQorVXJpZWwsIGZvciB0aG91IG9mIHRob3NlIHNldmVuIFNwaXJpdHMgdGhhdCBzdGFuZCANCitJbiBzaWdodCBvZiBHb2QncyBoaWdoIHRocm9uZSwgZ2xvcmlvdXNseSBicmlnaHQsIA0KK1RoZSBmaXJzdCBhcnQgd29udCBoaXMgZ3JlYXQgYXV0aGVudGljayB3aWxsIA0KK0ludGVycHJldGVyIHRocm91Z2ggaGlnaGVzdCBIZWF2ZW4gdG8gYnJpbmcsIA0KK1doZXJlIGFsbCBoaXMgc29ucyB0aHkgZW1iYXNzeSBhdHRlbmQ7IA0KK0FuZCBoZXJlIGFydCBsaWtlbGllc3QgYnkgc3VwcmVtZSBkZWNyZWUgDQorTGlrZSBob25vdXIgdG8gb2J0YWluLCBhbmQgYXMgaGlzIGV5ZSANCitUbyB2aXNpdCBvZnQgdGhpcyBuZXcgY3JlYXRpb24gcm91bmQ7IA0KK1Vuc3BlYWthYmxlIGRlc2lyZSB0byBzZWUsIGFuZCBrbm93IA0KK0FsbCB0aGVzZSBoaXMgd29uZGVyb3VzIHdvcmtzLCBidXQgY2hpZWZseSBNYW4sIA0KK0hpcyBjaGllZiBkZWxpZ2h0IGFuZCBmYXZvdXIsIGhpbSBmb3Igd2hvbSANCitBbGwgdGhlc2UgaGlzIHdvcmtzIHNvIHdvbmRlcm91cyBoZSBvcmRhaW5lZCwgDQorSGF0aCBicm91Z2h0IG1lIGZyb20gdGhlIHF1aXJlcyBvZiBDaGVydWJpbSANCitBbG9uZSB0aHVzIHdhbmRlcmluZy4gIEJyaWdodGVzdCBTZXJhcGgsIHRlbGwgDQorSW4gd2hpY2ggb2YgYWxsIHRoZXNlIHNoaW5pbmcgb3JicyBoYXRoIE1hbiANCitIaXMgZml4ZWQgc2VhdCwgb3IgZml4ZWQgc2VhdCBoYXRoIG5vbmUsIA0KK0J1dCBhbGwgdGhlc2Ugc2hpbmluZyBvcmJzIGhpcyBjaG9pY2UgdG8gZHdlbGw7IA0KK1RoYXQgSSBtYXkgZmluZCBoaW0sIGFuZCB3aXRoIHNlY3JldCBnYXplIA0KK09yIG9wZW4gYWRtaXJhdGlvbiBoaW0gYmVob2xkLCANCitPbiB3aG9tIHRoZSBncmVhdCBDcmVhdG9yIGhhdGggYmVzdG93ZWQgDQorV29ybGRzLCBhbmQgb24gd2hvbSBoYXRoIGFsbCB0aGVzZSBncmFjZXMgcG91cmVkOyANCitUaGF0IGJvdGggaW4gaGltIGFuZCBhbGwgdGhpbmdzLCBhcyBpcyBtZWV0LCANCitUaGUgdW5pdmVyc2FsIE1ha2VyIHdlIG1heSBwcmFpc2U7IA0KK1dobyBqdXN0bHkgaGF0aCBkcml2ZW4gb3V0IGhpcyByZWJlbCBmb2VzIA0KK1RvIGRlZXBlc3QgSGVsbCwgYW5kLCB0byByZXBhaXIgdGhhdCBsb3NzLCANCitDcmVhdGVkIHRoaXMgbmV3IGhhcHB5IHJhY2Ugb2YgTWVuIA0KK1RvIHNlcnZlIGhpbSBiZXR0ZXI6ICBXaXNlIGFyZSBhbGwgaGlzIHdheXMuIA0KK1NvIHNwYWtlIHRoZSBmYWxzZSBkaXNzZW1ibGVyIHVucGVyY2VpdmVkOyANCitGb3IgbmVpdGhlciBNYW4gbm9yIEFuZ2VsIGNhbiBkaXNjZXJuIA0KK0h5cG9jcmlzeSwgdGhlIG9ubHkgZXZpbCB0aGF0IHdhbGtzIA0KK0ludmlzaWJsZSwgZXhjZXB0IHRvIEdvZCBhbG9uZSwgDQorQnkgaGlzIHBlcm1pc3NpdmUgd2lsbCwgdGhyb3VnaCBIZWF2ZW4gYW5kIEVhcnRoOiANCitBbmQgb2Z0LCB0aG91Z2ggd2lzZG9tIHdha2UsIHN1c3BpY2lvbiBzbGVlcHMgDQorQXQgd2lzZG9tJ3MgZ2F0ZSwgYW5kIHRvIHNpbXBsaWNpdHkgDQorUmVzaWducyBoZXIgY2hhcmdlLCB3aGlsZSBnb29kbmVzcyB0aGlua3Mgbm8gaWxsIA0KK1doZXJlIG5vIGlsbCBzZWVtczogIFdoaWNoIG5vdyBmb3Igb25jZSBiZWd1aWxlZCANCitVcmllbCwgdGhvdWdoIHJlZ2VudCBvZiB0aGUgc3VuLCBhbmQgaGVsZCANCitUaGUgc2hhcnBlc3Qtc2lnaHRlZCBTcGlyaXQgb2YgYWxsIGluIEhlYXZlbjsgDQorV2hvIHRvIHRoZSBmcmF1ZHVsZW50IGltcG9zdG9yIGZvdWwsIA0KK0luIGhpcyB1cHJpZ2h0bmVzcywgYW5zd2VyIHRodXMgcmV0dXJuZWQuIA0KK0ZhaXIgQW5nZWwsIHRoeSBkZXNpcmUsIHdoaWNoIHRlbmRzIHRvIGtub3cgDQorVGhlIHdvcmtzIG9mIEdvZCwgdGhlcmVieSB0byBnbG9yaWZ5IA0KK1RoZSBncmVhdCBXb3JrLW1hc3RlciwgbGVhZHMgdG8gbm8gZXhjZXNzIA0KK1RoYXQgcmVhY2hlcyBibGFtZSwgYnV0IHJhdGhlciBtZXJpdHMgcHJhaXNlIA0KK1RoZSBtb3JlIGl0IHNlZW1zIGV4Y2VzcywgdGhhdCBsZWQgdGhlZSBoaXRoZXIgDQorRnJvbSB0aHkgZW1weXJlYWwgbWFuc2lvbiB0aHVzIGFsb25lLCANCitUbyB3aXRuZXNzIHdpdGggdGhpbmUgZXllcyB3aGF0IHNvbWUgcGVyaGFwcywgDQorQ29udGVudGVkIHdpdGggcmVwb3J0LCBoZWFyIG9ubHkgaW4gSGVhdmVuOiANCitGb3Igd29uZGVyZnVsIGluZGVlZCBhcmUgYWxsIGhpcyB3b3JrcywgDQorUGxlYXNhbnQgdG8ga25vdywgYW5kIHdvcnRoaWVzdCB0byBiZSBhbGwgDQorSGFkIGluIHJlbWVtYnJhbmNlIGFsd2F5cyB3aXRoIGRlbGlnaHQ7IA0KK0J1dCB3aGF0IGNyZWF0ZWQgbWluZCBjYW4gY29tcHJlaGVuZCANCitUaGVpciBudW1iZXIsIG9yIHRoZSB3aXNkb20gaW5maW5pdGUgDQorVGhhdCBicm91Z2h0IHRoZW0gZm9ydGgsIGJ1dCBoaWQgdGhlaXIgY2F1c2VzIGRlZXA/IA0KK0kgc2F3IHdoZW4gYXQgaGlzIHdvcmQgdGhlIGZvcm1sZXNzIG1hc3MsIA0KK1RoaXMgd29ybGQncyBtYXRlcmlhbCBtb3VsZCwgY2FtZSB0byBhIGhlYXA6IA0KK0NvbmZ1c2lvbiBoZWFyZCBoaXMgdm9pY2UsIGFuZCB3aWxkIHVwcm9hciANCitTdG9vZCBydWxlZCwgc3Rvb2QgdmFzdCBpbmZpbml0dWRlIGNvbmZpbmVkOyANCitUaWxsIGF0IGhpcyBzZWNvbmQgYmlkZGluZyBEYXJrbmVzcyBmbGVkLCANCitMaWdodCBzaG9uZSwgYW5kIG9yZGVyIGZyb20gZGlzb3JkZXIgc3BydW5nOiANCitTd2lmdCB0byB0aGVpciBzZXZlcmFsIHF1YXJ0ZXJzIGhhc3RlZCB0aGVuIA0KK1RoZSBjdW1icm91cyBlbGVtZW50cywgZWFydGgsIGZsb29kLCBhaXIsIGZpcmU7IA0KK0FuZCB0aGlzIGV0aGVyZWFsIHF1aW50ZXNzZW5jZSBvZiBIZWF2ZW4gDQorRmxldyB1cHdhcmQsIHNwaXJpdGVkIHdpdGggdmFyaW91cyBmb3JtcywgDQorVGhhdCByb2xsZWQgb3JiaWN1bGFyLCBhbmQgdHVybmVkIHRvIHN0YXJzIA0KK051bWJlcmxlc3MsIGFzIHRob3Ugc2Vlc3QsIGFuZCBob3cgdGhleSBtb3ZlOyANCitFYWNoIGhhZCBoaXMgcGxhY2UgYXBwb2ludGVkLCBlYWNoIGhpcyBjb3Vyc2U7IA0KK1RoZSByZXN0IGluIGNpcmN1aXQgd2FsbHMgdGhpcyB1bml2ZXJzZS4gDQorTG9vayBkb3dud2FyZCBvbiB0aGF0IGdsb2JlLCB3aG9zZSBoaXRoZXIgc2lkZSANCitXaXRoIGxpZ2h0IGZyb20gaGVuY2UsIHRob3VnaCBidXQgcmVmbGVjdGVkLCBzaGluZXM7IA0KK1RoYXQgcGxhY2UgaXMgRWFydGgsIHRoZSBzZWF0IG9mIE1hbjsgdGhhdCBsaWdodCANCitIaXMgZGF5LCB3aGljaCBlbHNlLCBhcyB0aGUgb3RoZXIgaGVtaXNwaGVyZSwgDQorTmlnaHQgd291bGQgaW52YWRlOyBidXQgdGhlcmUgdGhlIG5laWdoYm91cmluZyBtb29uIA0KK1NvIGNhbGwgdGhhdCBvcHBvc2l0ZSBmYWlyIHN0YXIpIGhlciBhaWQgDQorVGltZWx5IGludGVycG9zZXMsIGFuZCBoZXIgbW9udGhseSByb3VuZCANCitTdGlsbCBlbmRpbmcsIHN0aWxsIHJlbmV3aW5nLCB0aHJvdWdoIG1pZCBIZWF2ZW4sIA0KK1dpdGggYm9ycm93ZWQgbGlnaHQgaGVyIGNvdW50ZW5hbmNlIHRyaWZvcm0gDQorSGVuY2UgZmlsbHMgYW5kIGVtcHRpZXMgdG8gZW5saWdodGVuIHRoZSBFYXJ0aCwgDQorQW5kIGluIGhlciBwYWxlIGRvbWluaW9uIGNoZWNrcyB0aGUgbmlnaHQuIA0KK1RoYXQgc3BvdCwgdG8gd2hpY2ggSSBwb2ludCwgaXMgUGFyYWRpc2UsIA0KK0FkYW0ncyBhYm9kZTsgdGhvc2UgbG9mdHkgc2hhZGVzLCBoaXMgYm93ZXIuIA0KK1RoeSB3YXkgdGhvdSBjYW5zdCBub3QgbWlzcywgbWUgbWluZSByZXF1aXJlcy4gDQorVGh1cyBzYWlkLCBoZSB0dXJuZWQ7IGFuZCBTYXRhbiwgYm93aW5nIGxvdywgDQorQXMgdG8gc3VwZXJpb3VyIFNwaXJpdHMgaXMgd29udCBpbiBIZWF2ZW4sIA0KK1doZXJlIGhvbm91ciBkdWUgYW5kIHJldmVyZW5jZSBub25lIG5lZ2xlY3RzLCANCitUb29rIGxlYXZlLCBhbmQgdG93YXJkIHRoZSBjb2FzdCBvZiBlYXJ0aCBiZW5lYXRoLCANCitEb3duIGZyb20gdGhlIGVjbGlwdGljaywgc3BlZCB3aXRoIGhvcGVkIHN1Y2Nlc3MsIA0KK1Rocm93cyBoaXMgc3RlZXAgZmxpZ2h0IGluIG1hbnkgYW4gYWVyeSB3aGVlbDsgDQorTm9yIHN0YWlkLCB0aWxsIG9uIE5pcGhhdGVzJyB0b3AgaGUgbGlnaHRzLiANCisgDQorIA0KKyANCitCb29rIElWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgDQorTywgZm9yIHRoYXQgd2FybmluZyB2b2ljZSwgd2hpY2ggaGUsIHdobyBzYXcgDQorVGhlIEFwb2NhbHlwc2UsIGhlYXJkIGNyeSBpbiBIZWF2ZW4gYWxvdWQsIA0KK1RoZW4gd2hlbiB0aGUgRHJhZ29uLCBwdXQgdG8gc2Vjb25kIHJvdXQsIA0KK0NhbWUgZnVyaW91cyBkb3duIHRvIGJlIHJldmVuZ2VkIG9uIG1lbiwgDQorV29lIHRvIHRoZSBpbmhhYml0YW50cyBvbiBlYXJ0aCEgdGhhdCBub3csIA0KK1doaWxlIHRpbWUgd2FzLCBvdXIgZmlyc3QgcGFyZW50cyBoYWQgYmVlbiB3YXJuZWQgDQorVGhlIGNvbWluZyBvZiB0aGVpciBzZWNyZXQgZm9lLCBhbmQgJ3NjYXBlZCwgDQorSGFwbHkgc28gJ3NjYXBlZCBoaXMgbW9ydGFsIHNuYXJlOiAgRm9yIG5vdyANCitTYXRhbiwgbm93IGZpcnN0IGluZmxhbWVkIHdpdGggcmFnZSwgY2FtZSBkb3duLCANCitUaGUgdGVtcHRlciBlcmUgdGhlIGFjY3VzZXIgb2YgbWFua2luZCwgDQorVG8gd3JlYWsgb24gaW5ub2NlbnQgZnJhaWwgTWFuIGhpcyBsb3NzIA0KK09mIHRoYXQgZmlyc3QgYmF0dGxlLCBhbmQgaGlzIGZsaWdodCB0byBIZWxsOiANCitZZXQsIG5vdCByZWpvaWNpbmcgaW4gaGlzIHNwZWVkLCB0aG91Z2ggYm9sZCANCitGYXIgb2ZmIGFuZCBmZWFybGVzcywgbm9yIHdpdGggY2F1c2UgdG8gYm9hc3QsIA0KK0JlZ2lucyBoaXMgZGlyZSBhdHRlbXB0OyB3aGljaCBuaWdoIHRoZSBiaXJ0aCANCitOb3cgcm9sbGluZyBib2lscyBpbiBoaXMgdHVtdWx0dW91cyBicmVhc3QsIA0KK0FuZCBsaWtlIGEgZGV2aWxpc2ggZW5naW5lIGJhY2sgcmVjb2lscyANCitVcG9uIGhpbXNlbGY7IGhvcnJvdXIgYW5kIGRvdWJ0IGRpc3RyYWN0IA0KK0hpcyB0cm91YmxlZCB0aG91Z2h0cywgYW5kIGZyb20gdGhlIGJvdHRvbSBzdGlyIA0KK1RoZSBIZWxsIHdpdGhpbiBoaW07IGZvciB3aXRoaW4gaGltIEhlbGwgDQorSGUgYnJpbmdzLCBhbmQgcm91bmQgYWJvdXQgaGltLCBub3IgZnJvbSBIZWxsIA0KK09uZSBzdGVwLCBubyBtb3JlIHRoYW4gZnJvbSBoaW1zZWxmLCBjYW4gZmx5IA0KK0J5IGNoYW5nZSBvZiBwbGFjZTogIE5vdyBjb25zY2llbmNlIHdha2VzIGRlc3BhaXIsIA0KK1RoYXQgc2x1bWJlcmVkOyB3YWtlcyB0aGUgYml0dGVyIG1lbW9yeSANCitPZiB3aGF0IGhlIHdhcywgd2hhdCBpcywgYW5kIHdoYXQgbXVzdCBiZSANCitXb3JzZTsgb2Ygd29yc2UgZGVlZHMgd29yc2Ugc3VmZmVyaW5ncyBtdXN0IGVuc3VlLiANCitTb21ldGltZXMgdG93YXJkcyBFZGVuLCB3aGljaCBub3cgaW4gaGlzIHZpZXcgDQorTGF5IHBsZWFzYW50LCBoaXMgZ3JpZXZlZCBsb29rIGhlIGZpeGVzIHNhZDsgDQorU29tZXRpbWVzIHRvd2FyZHMgSGVhdmVuLCBhbmQgdGhlIGZ1bGwtYmxhemluZyBzdW4sIA0KK1doaWNoIG5vdyBzYXQgaGlnaCBpbiBoaXMgbWVyaWRpYW4gdG93ZXI6IA0KK1RoZW4sIG11Y2ggcmV2b2x2aW5nLCB0aHVzIGluIHNpZ2hzIGJlZ2FuLiANCitPIHRob3UsIHRoYXQsIHdpdGggc3VycGFzc2luZyBnbG9yeSBjcm93bmVkLCANCitMb29rZXN0IGZyb20gdGh5IHNvbGUgZG9taW5pb24gbGlrZSB0aGUgR29kIA0KK09mIHRoaXMgbmV3IHdvcmxkOyBhdCB3aG9zZSBzaWdodCBhbGwgdGhlIHN0YXJzIA0KK0hpZGUgdGhlaXIgZGltaW5pc2hlZCBoZWFkczsgdG8gdGhlZSBJIGNhbGwsIA0KK0J1dCB3aXRoIG5vIGZyaWVuZGx5IHZvaWNlLCBhbmQgYWRkIHRoeSBuYW1lLCANCitPZiBTdW4hIHRvIHRlbGwgdGhlZSBob3cgSSBoYXRlIHRoeSBiZWFtcywgDQorVGhhdCBicmluZyB0byBteSByZW1lbWJyYW5jZSBmcm9tIHdoYXQgc3RhdGUgDQorSSBmZWxsLCBob3cgZ2xvcmlvdXMgb25jZSBhYm92ZSB0aHkgc3BoZXJlOyANCitUaWxsIHByaWRlIGFuZCB3b3JzZSBhbWJpdGlvbiB0aHJldyBtZSBkb3duIA0KK1dhcnJpbmcgaW4gSGVhdmVuIGFnYWluc3QgSGVhdmVuJ3MgbWF0Y2hsZXNzIEtpbmc6IA0KK0FoLCB3aGVyZWZvcmUhIGhlIGRlc2VydmVkIG5vIHN1Y2ggcmV0dXJuIA0KK0Zyb20gbWUsIHdob20gaGUgY3JlYXRlZCB3aGF0IEkgd2FzIA0KK0luIHRoYXQgYnJpZ2h0IGVtaW5lbmNlLCBhbmQgd2l0aCBoaXMgZ29vZCANCitVcGJyYWlkZWQgbm9uZTsgbm9yIHdhcyBoaXMgc2VydmljZSBoYXJkLiANCitXaGF0IGNvdWxkIGJlIGxlc3MgdGhhbiB0byBhZmZvcmQgaGltIHByYWlzZSwgDQorVGhlIGVhc2llc3QgcmVjb21wZW5jZSwgYW5kIHBheSBoaW0gdGhhbmtzLCANCitIb3cgZHVlISB5ZXQgYWxsIGhpcyBnb29kIHByb3ZlZCBpbGwgaW4gbWUsIA0KK0FuZCB3cm91Z2h0IGJ1dCBtYWxpY2U7IGxpZnRlZCB1cCBzbyBoaWdoIA0KK0kgc2RlaW5lZCBzdWJqZWN0aW9uLCBhbmQgdGhvdWdodCBvbmUgc3RlcCBoaWdoZXIgDQorV291bGQgc2V0IG1lIGhpZ2hlc3QsIGFuZCBpbiBhIG1vbWVudCBxdWl0IA0KK1RoZSBkZWJ0IGltbWVuc2Ugb2YgZW5kbGVzcyBncmF0aXR1ZGUsIA0KK1NvIGJ1cmRlbnNvbWUgc3RpbGwgcGF5aW5nLCBzdGlsbCB0byBvd2UsIA0KK0ZvcmdldGZ1bCB3aGF0IGZyb20gaGltIEkgc3RpbGwgcmVjZWl2ZWQsIA0KK0FuZCB1bmRlcnN0b29kIG5vdCB0aGF0IGEgZ3JhdGVmdWwgbWluZCANCitCeSBvd2luZyBvd2VzIG5vdCwgYnV0IHN0aWxsIHBheXMsIGF0IG9uY2UgDQorSW5kZWJ0ZWQgYW5kIGRpc2NoYXJnZWQ7IHdoYXQgYnVyZGVuIHRoZW4gDQorTywgaGFkIGhpcyBwb3dlcmZ1bCBkZXN0aW55IG9yZGFpbmVkIA0KK01lIHNvbWUgaW5mZXJpb3VyIEFuZ2VsLCBJIGhhZCBzdG9vZCANCitUaGVuIGhhcHB5OyBubyB1bmJvdW5kZWQgaG9wZSBoYWQgcmFpc2VkIA0KK0FtYml0aW9uISAgWWV0IHdoeSBub3Qgc29tZSBvdGhlciBQb3dlciANCitBcyBncmVhdCBtaWdodCBoYXZlIGFzcGlyZWQsIGFuZCBtZSwgdGhvdWdoIG1lYW4sIA0KK0RyYXduIHRvIGhpcyBwYXJ0OyBidXQgb3RoZXIgUG93ZXJzIGFzIGdyZWF0IA0KK0ZlbGwgbm90LCBidXQgc3RhbmQgdW5zaGFrZW4sIGZyb20gd2l0aGluIA0KK09yIGZyb20gd2l0aG91dCwgdG8gYWxsIHRlbXB0YXRpb25zIGFybWVkLiANCitIYWRzdCB0aG91IHRoZSBzYW1lIGZyZWUgd2lsbCBhbmQgcG93ZXIgdG8gc3RhbmQ/IA0KK1Rob3UgaGFkc3Q6IHdob20gaGFzdCB0aG91IHRoZW4gb3Igd2hhdCB0byBhY2N1c2UsIA0KK0J1dCBIZWF2ZW4ncyBmcmVlIGxvdmUgZGVhbHQgZXF1YWxseSB0byBhbGw/IA0KK0JlIHRoZW4gaGlzIGxvdmUgYWNjdXJzZWQsIHNpbmNlIGxvdmUgb3IgaGF0ZSwgDQorVG8gbWUgYWxpa2UsIGl0IGRlYWxzIGV0ZXJuYWwgd29lLiANCitOYXksIGN1cnNlZCBiZSB0aG91OyBzaW5jZSBhZ2FpbnN0IGhpcyB0aHkgd2lsbCANCitDaG9zZSBmcmVlbHkgd2hhdCBpdCBub3cgc28ganVzdGx5IHJ1ZXMuIA0KK01lIG1pc2VyYWJsZSEgd2hpY2ggd2F5IHNoYWxsIEkgZmx5IA0KK0luZmluaXRlIHdyYXRoLCBhbmQgaW5maW5pdGUgZGVzcGFpcj8gDQorV2hpY2ggd2F5IEkgZmx5IGlzIEhlbGw7IG15c2VsZiBhbSBIZWxsOyANCitBbmQsIGluIHRoZSBsb3dlc3QgZGVlcCwgYSBsb3dlciBkZWVwIA0KK1N0aWxsIHRocmVhdGVuaW5nIHRvIGRldm91ciBtZSBvcGVucyB3aWRlLCANCitUbyB3aGljaCB0aGUgSGVsbCBJIHN1ZmZlciBzZWVtcyBhIEhlYXZlbi4gDQorTywgdGhlbiwgYXQgbGFzdCByZWxlbnQ6ICBJcyB0aGVyZSBubyBwbGFjZSANCitMZWZ0IGZvciByZXBlbnRhbmNlLCBub25lIGZvciBwYXJkb24gbGVmdD8gDQorTm9uZSBsZWZ0IGJ1dCBieSBzdWJtaXNzaW9uOyBhbmQgdGhhdCB3b3JkIA0KK0Rpc2RhaW4gZm9yYmlkcyBtZSwgYW5kIG15IGRyZWFkIG9mIHNoYW1lIA0KK0Ftb25nIHRoZSBTcGlyaXRzIGJlbmVhdGgsIHdob20gSSBzZWR1Y2VkIA0KK1dpdGggb3RoZXIgcHJvbWlzZXMgYW5kIG90aGVyIHZhdW50cyANCitUaGFuIHRvIHN1Ym1pdCwgYm9hc3RpbmcgSSBjb3VsZCBzdWJkdWUgDQorVGhlIE9tbmlwb3RlbnQuICBBeSBtZSEgdGhleSBsaXR0bGUga25vdyANCitIb3cgZGVhcmx5IEkgYWJpZGUgdGhhdCBib2FzdCBzbyB2YWluLCANCitVbmRlciB3aGF0IHRvcm1lbnRzIGlud2FyZGx5IEkgZ3JvYW4sIA0KK1doaWxlIHRoZXkgYWRvcmUgbWUgb24gdGhlIHRocm9uZSBvZiBIZWxsLiANCitXaXRoIGRpYWRlbSBhbmQgc2NlcHRlciBoaWdoIGFkdmFuY2VkLCANCitUaGUgbG93ZXIgc3RpbGwgSSBmYWxsLCBvbmx5IHN1cHJlbWUgDQorSW4gbWlzZXJ5OiAgU3VjaCBqb3kgYW1iaXRpb24gZmluZHMuIA0KK0J1dCBzYXkgSSBjb3VsZCByZXBlbnQsIGFuZCBjb3VsZCBvYnRhaW4sIA0KK0J5IGFjdCBvZiBncmFjZSwgbXkgZm9ybWVyIHN0YXRlOyBob3cgc29vbiANCitXb3VsZCBoaWdodGggcmVjYWxsIGhpZ2ggdGhvdWdodHMsIGhvdyBzb29uIHVuc2F5IA0KK1doYXQgZmVpZ25lZCBzdWJtaXNzaW9uIHN3b3JlPyAgRWFzZSB3b3VsZCByZWNhbnQgDQorVm93cyBtYWRlIGluIHBhaW4sIGFzIHZpb2xlbnQgYW5kIHZvaWQuIA0KK0ZvciBuZXZlciBjYW4gdHJ1ZSByZWNvbmNpbGVtZW50IGdyb3csIA0KK1doZXJlIHdvdW5kcyBvZiBkZWFkbHkgaGF0ZSBoYXZlIHBpZXJjZWQgc28gZGVlcDogDQorV2hpY2ggd291bGQgYnV0IGxlYWQgbWUgdG8gYSB3b3JzZSByZWxhcHNlIA0KK0FuZCBoZWF2aWVyIGZhbGw6ICBzbyBzaG91bGQgSSBwdXJjaGFzZSBkZWFyIA0KK1Nob3J0IGludGVybWlzc2lvbiBib3VnaHQgd2l0aCBkb3VibGUgc21hcnQuIA0KK1RoaXMga25vd3MgbXkgUHVuaXNoZXI7IHRoZXJlZm9yZSBhcyBmYXIgDQorRnJvbSBncmFudGluZyBoZSwgYXMgSSBmcm9tIGJlZ2dpbmcsIHBlYWNlOyANCitBbGwgaG9wZSBleGNsdWRlZCB0aHVzLCBiZWhvbGQsIGluIHN0ZWFkIA0KK01hbmtpbmQgY3JlYXRlZCwgYW5kIGZvciBoaW0gdGhpcyB3b3JsZC4gDQorU28gZmFyZXdlbGwsIGhvcGU7IGFuZCB3aXRoIGhvcGUgZmFyZXdlbGwsIGZlYXI7IA0KK0ZhcmV3ZWxsLCByZW1vcnNlISBhbGwgZ29vZCB0byBtZSBpcyBsb3N0OyANCitFdmlsLCBiZSB0aG91IG15IGdvb2Q7IGJ5IHRoZWUgYXQgbGVhc3QgDQorRGl2aWRlZCBlbXBpcmUgd2l0aCBIZWF2ZW4ncyBLaW5nIEkgaG9sZCwgDQorQnkgdGhlZSwgYW5kIG1vcmUgdGhhbiBoYWxmIHBlcmhhcHMgd2lsbCByZWlnbjsgDQorQXMgTWFuIGVyZSBsb25nLCBhbmQgdGhpcyBuZXcgd29ybGQsIHNoYWxsIGtub3cuIA0KK1RodXMgd2hpbGUgaGUgc3Bha2UsIGVhY2ggcGFzc2lvbiBkaW1tZWQgaGlzIGZhY2UgDQorVGhyaWNlIGNoYW5nZWQgd2l0aCBwYWxlLCBpcmUsIGVudnksIGFuZCBkZXNwYWlyOyANCitXaGljaCBtYXJyZWQgaGlzIGJvcnJvd2VkIHZpc2FnZSwgYW5kIGJldHJheWVkIA0KK0hpbSBjb3VudGVyZmVpdCwgaWYgYW55IGV5ZSBiZWhlbGQuIA0KK0ZvciBoZWF2ZW5seSBtaW5kcyBmcm9tIHN1Y2ggZGlzdGVtcGVycyBmb3VsIA0KK0FyZSBldmVyIGNsZWFyLiAgV2hlcmVvZiBoZSBzb29uIGF3YXJlLCANCitFYWNoIHBlcnR1cmJhdGlvbiBzbW9vdGhlZCB3aXRoIG91dHdhcmQgY2FsbSwgDQorQXJ0aWZpY2VyIG9mIGZyYXVkOyBhbmQgd2FzIHRoZSBmaXJzdCANCitUaGF0IHByYWN0aXNlZCBmYWxzZWhvb2QgdW5kZXIgc2FpbnRseSBzaG93LCANCitEZWVwIG1hbGljZSB0byBjb25jZWFsLCBjb3VjaGVkIHdpdGggcmV2ZW5nZTogDQorWWV0IG5vdCBlbm91Z2ggaGFkIHByYWN0aXNlZCB0byBkZWNlaXZlIA0KK1VyaWVsIG9uY2Ugd2FybmVkOyB3aG9zZSBleWUgcHVyc3VlZCBoaW0gZG93biANCisgVGhlIHdheSBoZSB3ZW50LCBhbmQgb24gdGhlIEFzc3lyaWFuIG1vdW50IA0KKyBTYXcgaGltIGRpc2ZpZ3VyZWQsIG1vcmUgdGhhbiBjb3VsZCBiZWZhbGwgDQorIFNwaXJpdCBvZiBoYXBweSBzb3J0OyBoaXMgZ2VzdHVyZXMgZmllcmNlIA0KKyBIZSBtYXJrZWQgYW5kIG1hZCBkZW1lYW5vdXIsIHRoZW4gYWxvbmUsIA0KKyBBcyBoZSBzdXBwb3NlZCwgYWxsIHVub2JzZXJ2ZWQsIHVuc2Vlbi4gDQorIFNvIG9uIGhlIGZhcmVzLCBhbmQgdG8gdGhlIGJvcmRlciBjb21lcyANCisgT2YgRWRlbiwgd2hlcmUgZGVsaWNpb3VzIFBhcmFkaXNlLCANCisgTm93IG5lYXJlciwgY3Jvd25zIHdpdGggaGVyIGVuY2xvc3VyZSBncmVlbiwgDQorIEFzIHdpdGggYSBydXJhbCBtb3VuZCwgdGhlIGNoYW1wYWlnbiBoZWFkIA0KKyBPZiBhIHN0ZWVwIHdpbGRlcm5lc3MsIHdob3NlIGhhaXJ5IHNpZGVzIA0KK0FjY2VzcyBkZW5pZWQ7IGFuZCBvdmVyaGVhZCB1cGdyZXcgDQorIEluc3VwZXJhYmxlIGhlaWdodCBvZiBsb2Z0aWVzdCBzaGFkZSwgDQorIENlZGFyLCBhbmQgcGluZSwgYW5kIGZpciwgYW5kIGJyYW5jaGluZyBwYWxtLCANCisgQSBzeWx2YW4gc2NlbmUsIGFuZCwgYXMgdGhlIHJhbmtzIGFzY2VuZCwgDQorIFNoYWRlIGFib3ZlIHNoYWRlLCBhIHdvb2R5IHRoZWF0cmUgDQorIE9mIHN0YXRlbGllc3Qgdmlldy4gWWV0IGhpZ2hlciB0aGFuIHRoZWlyIHRvcHMgDQorIFRoZSB2ZXJkdXJvdXMgd2FsbCBvZiBQYXJhZGlzZSB1cHNwcnVuZzsgICAgICAgICAgICAgICAgICAgICAgICANCisgDQorICAgIDAwMDgxNDI5ICANCitXaGljaCB0byBvdXIgZ2VuZXJhbCBzaXJlIGdhdmUgcHJvc3BlY3QgbGFyZ2UgDQorSW50byBoaXMgbmV0aGVyIGVtcGlyZSBuZWlnaGJvdXJpbmcgcm91bmQuIA0KK0FuZCBoaWdoZXIgdGhhbiB0aGF0IHdhbGwgYSBjaXJjbGluZyByb3cgDQorT2YgZ29vZGxpZXN0IHRyZWVzLCBsb2FkZW4gd2l0aCBmYWlyZXN0IGZydWl0LCANCitCbG9zc29tcyBhbmQgZnJ1aXRzIGF0IG9uY2Ugb2YgZ29sZGVuIGh1ZSwgDQorQXBwZWFyZWQsIHdpdGggZ2F5IGVuYW1lbGxlZCBjb2xvdXJzIG1peGVkOiANCitPbiB3aGljaCB0aGUgc3VuIG1vcmUgZ2xhZCBpbXByZXNzZWQgaGlzIGJlYW1zIA0KK1RoYW4gaW4gZmFpciBldmVuaW5nIGNsb3VkLCBvciBodW1pZCBib3csIA0KK1doZW4gR29kIGhhdGggc2hvd2VyZWQgdGhlIGVhcnRoOyBzbyBsb3ZlbHkgc2VlbWVkIA0KK1RoYXQgbGFuZHNraXA6ICBBbmQgb2YgcHVyZSBub3cgcHVyZXIgYWlyIA0KK01lZXRzIGhpcyBhcHByb2FjaCwgYW5kIHRvIHRoZSBoZWFydCBpbnNwaXJlcyANCitWZXJuYWwgZGVsaWdodCBhbmQgam95LCBhYmxlIHRvIGRyaXZlIA0KK0FsbCBzYWRuZXNzIGJ1dCBkZXNwYWlyOiAgTm93IGdlbnRsZSBnYWxlcywgDQorRmFubmluZyB0aGVpciBvZG9yaWZlcm91cyB3aW5ncywgZGlzcGVuc2UgDQorTmF0aXZlIHBlcmZ1bWVzLCBhbmQgd2hpc3BlciB3aGVuY2UgdGhleSBzdG9sZSANCitUaG9zZSBiYWxteSBzcG9pbHMuICBBcyB3aGVuIHRvIHRoZW0gd2hvIGZhaWwgDQorQmV5b25kIHRoZSBDYXBlIG9mIEhvcGUsIGFuZCBub3cgYXJlIHBhc3QgDQorTW96YW1iaWNrLCBvZmYgYXQgc2VhIG5vcnRoLWVhc3Qgd2luZHMgYmxvdyANCitTYWJlYW4gb2RvdXJzIGZyb20gdGhlIHNwaWN5IHNob3JlIA0KK09mIEFyYWJ5IHRoZSBibGVzdDsgd2l0aCBzdWNoIGRlbGF5IA0KK1dlbGwgcGxlYXNlZCB0aGV5IHNsYWNrIHRoZWlyIGNvdXJzZSwgYW5kIG1hbnkgYSBsZWFndWUgDQorQ2hlZXJlZCB3aXRoIHRoZSBncmF0ZWZ1bCBzbWVsbCBvbGQgT2NlYW4gc21pbGVzOiANCitTbyBlbnRlcnRhaW5lZCB0aG9zZSBvZG9yb3VzIHN3ZWV0cyB0aGUgRmllbmQsIA0KK1dobyBjYW1lIHRoZWlyIGJhbmU7IHRob3VnaCB3aXRoIHRoZW0gYmV0dGVyIHBsZWFzZWQgDQorVGhhbiBBc21vZGV1cyB3aXRoIHRoZSBmaXNoeSBmdW1lIA0KK1RoYXQgZHJvdmUgaGltLCB0aG91Z2ggZW5hbW91cmVkLCBmcm9tIHRoZSBzcG91c2UgDQorT2YgVG9iaXQncyBzb24sIGFuZCB3aXRoIGEgdmVuZ2VhbmNlIHNlbnQgDQorRnJvbSBNZWRpYSBwb3N0IHRvIEVneXB0LCB0aGVyZSBmYXN0IGJvdW5kLiANCitOb3cgdG8gdGhlIGFzY2VudCBvZiB0aGF0IHN0ZWVwIHNhdmFnZSBoaWxsIA0KK1NhdGFuIGhhZCBqb3VybmV5ZWQgb24sIHBlbnNpdmUgYW5kIHNsb3c7IA0KK0J1dCBmdXJ0aGVyIHdheSBmb3VuZCBub25lLCBzbyB0aGljayBlbnR3aW5lZCwgDQorQXMgb25lIGNvbnRpbnVlZCBicmFrZSwgdGhlIHVuZGVyZ3Jvd3RoIA0KK09mIHNocnVicyBhbmQgdGFuZ2xpbmcgYnVzaGVzIGhhZCBwZXJwbGV4ZWQgDQorQWxsIHBhdGggb2YgbWFuIG9yIGJlYXN0IHRoYXQgcGFzc2VkIHRoYXQgd2F5LiANCitPbmUgZ2F0ZSB0aGVyZSBvbmx5IHdhcywgYW5kIHRoYXQgbG9va2VkIGVhc3QgDQorT24gdGhlIG90aGVyIHNpZGU6IHdoaWNoIHdoZW4gdGhlIGFyY2gtZmVsb24gc2F3LCANCitEdWUgZW50cmFuY2UgaGUgZGlzZGFpbmVkOyBhbmQsIGluIGNvbnRlbXB0LCANCitBdCBvbmUgZmxpZ2h0IGJvdW5kIGhpZ2ggb3Zlci1sZWFwZWQgYWxsIGJvdW5kIA0KK09mIGhpbGwgb3IgaGlnaGVzdCB3YWxsLCBhbmQgc2hlZXIgd2l0aGluIA0KK0xpZ2h0cyBvbiBoaXMgZmVldC4gIEFzIHdoZW4gYSBwcm93bGluZyB3b2xmLCANCitXaG9tIGh1bmdlciBkcml2ZXMgdG8gc2VlayBuZXcgaGF1bnQgZm9yIHByZXksIA0KK1dhdGNoaW5nIHdoZXJlIHNoZXBoZXJkcyBwZW4gdGhlaXIgZmxvY2tzIGF0IGV2ZSANCitJbiBodXJkbGVkIGNvdGVzIGFtaWQgdGhlIGZpZWxkIHNlY3VyZSwgDQorTGVhcHMgbydlciB0aGUgZmVuY2Ugd2l0aCBlYXNlIGludG8gdGhlIGZvbGQ6IA0KK09yIGFzIGEgdGhpZWYsIGJlbnQgdG8gdW5ob2FyZCB0aGUgY2FzaCANCitPZiBzb21lIHJpY2ggYnVyZ2hlciwgd2hvc2Ugc3Vic3RhbnRpYWwgZG9vcnMsIA0KK0Nyb3NzLWJhcnJlZCBhbmQgYm9sdGVkIGZhc3QsIGZlYXIgbm8gYXNzYXVsdCwgDQorSW4gYXQgdGhlIHdpbmRvdyBjbGltYnMsIG9yIG8nZXIgdGhlIHRpbGVzOiANCitTbyBjbG9tYiB0aGlzIGZpcnN0IGdyYW5kIHRoaWVmIGludG8gR29kJ3MgZm9sZDsgDQorU28gc2luY2UgaW50byBoaXMgY2h1cmNoIGxld2QgaGlyZWxpbmdzIGNsaW1iLiANCitUaGVuY2UgdXAgaGUgZmxldywgYW5kIG9uIHRoZSB0cmVlIG9mIGxpZmUsIA0KK1RoZSBtaWRkbGUgdHJlZSBhbmQgaGlnaGVzdCB0aGVyZSB0aGF0IGdyZXcsIA0KK1NhdCBsaWtlIGEgY29ybW9yYW50OyB5ZXQgbm90IHRydWUgbGlmZSANCitUaGVyZWJ5IHJlZ2FpbmVkLCBidXQgc2F0IGRldmlzaW5nIGRlYXRoIA0KK1RvIHRoZW0gd2hvIGxpdmVkOyBub3Igb24gdGhlIHZpcnR1ZSB0aG91Z2h0IA0KK09mIHRoYXQgbGlmZS1naXZpbmcgcGxhbnQsIGJ1dCBvbmx5IHVzZWQgDQorRm9yIHByb3NwZWN0LCB3aGF0IHdlbGwgdXNlZCBoYWQgYmVlbiB0aGUgcGxlZGdlIA0KK09mIGltbW9ydGFsaXR5LiAgU28gbGl0dGxlIGtub3dzIA0KK0FueSwgYnV0IEdvZCBhbG9uZSwgdG8gdmFsdWUgcmlnaHQgDQorVGhlIGdvb2QgYmVmb3JlIGhpbSwgYnV0IHBlcnZlcnRzIGJlc3QgdGhpbmdzIA0KK1RvIHdvcnN0IGFidXNlLCBvciB0byB0aGVpciBtZWFuZXN0IHVzZS4gDQorQmVuZWF0aCBoaW0gd2l0aCBuZXcgd29uZGVyIG5vdyBoZSB2aWV3cywgDQorVG8gYWxsIGRlbGlnaHQgb2YgaHVtYW4gc2Vuc2UgZXhwb3NlZCwgDQorSW4gbmFycm93IHJvb20sIE5hdHVyZSdzIHdob2xlIHdlYWx0aCwgeWVhIG1vcmUsIA0KK0EgSGVhdmVuIG9uIEVhcnRoOiAgRm9yIGJsaXNzZnVsIFBhcmFkaXNlIA0KK09mIEdvZCB0aGUgZ2FyZGVuIHdhcywgYnkgaGltIGluIHRoZSBlYXN0IA0KK09mIEVkZW4gcGxhbnRlZDsgRWRlbiBzdHJldGNoZWQgaGVyIGxpbmUgDQorRnJvbSBBdXJhbiBlYXN0d2FyZCB0byB0aGUgcm95YWwgdG93ZXJzIA0KK09mIGdyZWF0IFNlbGV1Y2lhLCBidWlsdCBieSBHcmVjaWFuIGtpbmdzLCANCitPZiB3aGVyZSB0aGUgc29ucyBvZiBFZGVuIGxvbmcgYmVmb3JlIA0KK0R3ZWx0IGluIFRlbGFzc2FyOiAgSW4gdGhpcyBwbGVhc2FudCBzb2lsIA0KK0hpcyBmYXIgbW9yZSBwbGVhc2FudCBnYXJkZW4gR29kIG9yZGFpbmVkOyANCitPdXQgb2YgdGhlIGZlcnRpbGUgZ3JvdW5kIGhlIGNhdXNlZCB0byBncm93IA0KK0FsbCB0cmVlcyBvZiBub2JsZXN0IGtpbmQgZm9yIHNpZ2h0LCBzbWVsbCwgdGFzdGU7IA0KK0FuZCBhbGwgYW1pZCB0aGVtIHN0b29kIHRoZSB0cmVlIG9mIGxpZmUsIA0KK0hpZ2ggZW1pbmVudCwgYmxvb21pbmcgYW1icm9zaWFsIGZydWl0IA0KK09mIHZlZ2V0YWJsZSBnb2xkOyBhbmQgbmV4dCB0byBsaWZlLCANCitPdXIgZGVhdGgsIHRoZSB0cmVlIG9mIGtub3dsZWRnZSwgZ3JldyBmYXN0IGJ5LCANCitLbm93bGVkZ2Ugb2YgZ29vZCBib3VnaHQgZGVhciBieSBrbm93aW5nIGlsbC4gDQorU291dGh3YXJkIHRocm91Z2ggRWRlbiB3ZW50IGEgcml2ZXIgbGFyZ2UsIA0KK05vciBjaGFuZ2VkIGhpcyBjb3Vyc2UsIGJ1dCB0aHJvdWdoIHRoZSBzaGFnZ3kgaGlsbCANCitQYXNzZWQgdW5kZXJuZWF0aCBpbmd1bGZlZDsgZm9yIEdvZCBoYWQgdGhyb3duIA0KK1RoYXQgbW91bnRhaW4gYXMgaGlzIGdhcmRlbi1tb3VsZCBoaWdoIHJhaXNlZCANCitVcG9uIHRoZSByYXBpZCBjdXJyZW50LCB3aGljaCwgdGhyb3VnaCB2ZWlucyANCitPZiBwb3JvdXMgZWFydGggd2l0aCBraW5kbHkgdGhpcnN0IHVwLWRyYXduLCANCitSb3NlIGEgZnJlc2ggZm91bnRhaW4sIGFuZCB3aXRoIG1hbnkgYSByaWxsIA0KK1dhdGVyZWQgdGhlIGdhcmRlbjsgdGhlbmNlIHVuaXRlZCBmZWxsIA0KK0Rvd24gdGhlIHN0ZWVwIGdsYWRlLCBhbmQgbWV0IHRoZSBuZXRoZXIgZmxvb2QsIA0KK1doaWNoIGZyb20gaGlzIGRhcmtzb21lIHBhc3NhZ2Ugbm93IGFwcGVhcnMsIA0KK0FuZCBub3csIGRpdmlkZWQgaW50byBmb3VyIG1haW4gc3RyZWFtcywgDQorUnVucyBkaXZlcnNlLCB3YW5kZXJpbmcgbWFueSBhIGZhbW91cyByZWFsbSANCitBbmQgY291bnRyeSwgd2hlcmVvZiBoZXJlIG5lZWRzIG5vIGFjY291bnQ7IA0KK0J1dCByYXRoZXIgdG8gdGVsbCBob3csIGlmIEFydCBjb3VsZCB0ZWxsLCANCitIb3cgZnJvbSB0aGF0IHNhcHBoaXJlIGZvdW50IHRoZSBjcmlzcGVkIGJyb29rcywgDQorUm9sbGluZyBvbiBvcmllbnQgcGVhcmwgYW5kIHNhbmRzIG9mIGdvbGQsIA0KK1dpdGggbWF6eSBlcnJvdXIgdW5kZXIgcGVuZGFudCBzaGFkZXMgDQorUmFuIG5lY3RhciwgdmlzaXRpbmcgZWFjaCBwbGFudCwgYW5kIGZlZCANCitGbG93ZXJzIHdvcnRoeSBvZiBQYXJhZGlzZSwgd2hpY2ggbm90IG5pY2UgQXJ0IA0KK0luIGJlZHMgYW5kIGN1cmlvdXMga25vdHMsIGJ1dCBOYXR1cmUgYm9vbiANCitQb3VyZWQgZm9ydGggcHJvZnVzZSBvbiBoaWxsLCBhbmQgZGFsZSwgYW5kIHBsYWluLCANCitCb3RoIHdoZXJlIHRoZSBtb3JuaW5nIHN1biBmaXJzdCB3YXJtbHkgc21vdGUgDQorVGhlIG9wZW4gZmllbGQsIGFuZCB3aGVyZSB0aGUgdW5waWVyY2VkIHNoYWRlIA0KK0ltYnJvd25lZCB0aGUgbm9vbnRpZGUgYm93ZXJzOiAgVGh1cyB3YXMgdGhpcyBwbGFjZSANCitBIGhhcHB5IHJ1cmFsIHNlYXQgb2YgdmFyaW91cyB2aWV3OyANCitHcm92ZXMgd2hvc2UgcmljaCB0cmVlcyB3ZXB0IG9kb3JvdXMgZ3VtcyBhbmQgYmFsbSwgDQorT3RoZXJzIHdob3NlIGZydWl0LCBidXJuaXNoZWQgd2l0aCBnb2xkZW4gcmluZCwgDQorSHVuZyBhbWlhYmxlLCBIZXNwZXJpYW4gZmFibGVzIHRydWUsIA0KK0lmIHRydWUsIGhlcmUgb25seSwgYW5kIG9mIGRlbGljaW91cyB0YXN0ZTogDQorQmV0d2l4dCB0aGVtIGxhd25zLCBvciBsZXZlbCBkb3ducywgYW5kIGZsb2NrcyANCitHcmF6aW5nIHRoZSB0ZW5kZXIgaGVyYiwgd2VyZSBpbnRlcnBvc2VkLCANCitPciBwYWxteSBoaWxsb2NrOyBvciB0aGUgZmxvd2VyeSBsYXAgDQorT2Ygc29tZSBpcnJpZ3VvdXMgdmFsbGV5IHNwcmVhZCBoZXIgc3RvcmUsIA0KK0Zsb3dlcnMgb2YgYWxsIGh1ZSwgYW5kIHdpdGhvdXQgdGhvcm4gdGhlIHJvc2U6IA0KK0Fub3RoZXIgc2lkZSwgdW1icmFnZW91cyBncm90cyBhbmQgY2F2ZXMgDQorT2YgY29vbCByZWNlc3MsIG8nZXIgd2hpY2ggdGhlIG1hbnRsaW5nIHZpbmUgDQorTGF5cyBmb3J0aCBoZXIgcHVycGxlIGdyYXBlLCBhbmQgZ2VudGx5IGNyZWVwcyANCitMdXh1cmlhbnQ7IG1lYW4gd2hpbGUgbXVybXVyaW5nIHdhdGVycyBmYWxsIA0KK0Rvd24gdGhlIHNsb3BlIGhpbGxzLCBkaXNwZXJzZWQsIG9yIGluIGEgbGFrZSwgDQorVGhhdCB0byB0aGUgZnJpbmdlZCBiYW5rIHdpdGggbXlydGxlIGNyb3duZWQgDQorSGVyIGNyeXN0YWwgbWlycm91ciBob2xkcywgdW5pdGUgdGhlaXIgc3RyZWFtcy4gDQorVGhlIGJpcmRzIHRoZWlyIHF1aXJlIGFwcGx5OyBhaXJzLCB2ZXJuYWwgYWlycywgDQorQnJlYXRoaW5nIHRoZSBzbWVsbCBvZiBmaWVsZCBhbmQgZ3JvdmUsIGF0dHVuZSANCitUaGUgdHJlbWJsaW5nIGxlYXZlcywgd2hpbGUgdW5pdmVyc2FsIFBhbiwgDQorS25pdCB3aXRoIHRoZSBHcmFjZXMgYW5kIHRoZSBIb3VycyBpbiBkYW5jZSwgDQorTGVkIG9uIHRoZSBldGVybmFsIFNwcmluZy4gIE5vdCB0aGF0IGZhaXIgZmllbGQgDQorT2YgRW5uYSwgd2hlcmUgUHJvc2VycGluZSBnYXRoZXJpbmcgZmxvd2VycywgDQorSGVyc2VsZiBhIGZhaXJlciBmbG93ZXIgYnkgZ2xvb215IERpcyANCitXYXMgZ2F0aGVyZWQsIHdoaWNoIGNvc3QgQ2VyZXMgYWxsIHRoYXQgcGFpbiANCitUbyBzZWVrIGhlciB0aHJvdWdoIHRoZSB3b3JsZDsgbm9yIHRoYXQgc3dlZXQgZ3JvdmUgDQorT2YgRGFwaG5lIGJ5IE9yb250ZXMsIGFuZCB0aGUgaW5zcGlyZWQgDQorQ2FzdGFsaWFuIHNwcmluZywgbWlnaHQgd2l0aCB0aGlzIFBhcmFkaXNlIA0KK09mIEVkZW4gc3RyaXZlOyBub3IgdGhhdCBOeXNlaWFuIGlzbGUgDQorR2lydCB3aXRoIHRoZSByaXZlciBUcml0b24sIHdoZXJlIG9sZCBDaGFtLCANCitXaG9tIEdlbnRpbGVzIEFtbW9uIGNhbGwgYW5kIExpYnlhbiBKb3ZlLCANCitIaWQgQW1hbHRoZWEsIGFuZCBoZXIgZmxvcmlkIHNvbiANCitZb3VuZyBCYWNjaHVzLCBmcm9tIGhpcyBzdGVwZGFtZSBSaGVhJ3MgZXllOyANCitOb3Igd2hlcmUgQWJhc3NpbiBraW5ncyB0aGVpciBpc3N1ZSBndWFyZCwgDQorTW91bnQgQW1hcmEsIHRob3VnaCB0aGlzIGJ5IHNvbWUgc3VwcG9zZWQgDQorVHJ1ZSBQYXJhZGlzZSB1bmRlciB0aGUgRXRoaW9wIGxpbmUgDQorQnkgTmlsdXMnIGhlYWQsIGVuY2xvc2VkIHdpdGggc2hpbmluZyByb2NrLCANCitBIHdob2xlIGRheSdzIGpvdXJuZXkgaGlnaCwgYnV0IHdpZGUgcmVtb3RlIA0KK0Zyb20gdGhpcyBBc3N5cmlhbiBnYXJkZW4sIHdoZXJlIHRoZSBGaWVuZCANCitTYXcsIHVuZGVsaWdodGVkLCBhbGwgZGVsaWdodCwgYWxsIGtpbmQgDQorT2YgbGl2aW5nIGNyZWF0dXJlcywgbmV3IHRvIHNpZ2h0LCBhbmQgc3RyYW5nZSANCitUd28gb2YgZmFyIG5vYmxlciBzaGFwZSwgZXJlY3QgYW5kIHRhbGwsIA0KK0dvZGxpa2UgZXJlY3QsIHdpdGggbmF0aXZlIGhvbm91ciBjbGFkIA0KK0luIG5ha2VkIG1hamVzdHkgc2VlbWVkIGxvcmRzIG9mIGFsbDogDQorQW5kIHdvcnRoeSBzZWVtZWQ7IGZvciBpbiB0aGVpciBsb29rcyBkaXZpbmUgDQorVGhlIGltYWdlIG9mIHRoZWlyIGdsb3Jpb3VzIE1ha2VyIHNob25lLCANCitUcnV0aCwgd2lzZG9tLCBzYW5jdGl0dWRlIHNldmVyZSBhbmQgcHVyZSwgDQorKFNldmVyZSwgYnV0IGluIHRydWUgZmlsaWFsIGZyZWVkb20gcGxhY2VkLCkgDQorV2hlbmNlIHRydWUgYXV0aG9yaXR5IGluIG1lbjsgdGhvdWdoIGJvdGggDQorTm90IGVxdWFsLCBhcyB0aGVpciBzZXggbm90IGVxdWFsIHNlZW1lZDsgDQorRm9yIGNvbnRlbXBsYXRpb24gaGUgYW5kIHZhbG91ciBmb3JtZWQ7IA0KK0ZvciBzb2Z0bmVzcyBzaGUgYW5kIHN3ZWV0IGF0dHJhY3RpdmUgZ3JhY2U7IA0KK0hlIGZvciBHb2Qgb25seSwgc2hlIGZvciBHb2QgaW4gaGltOiANCitIaXMgZmFpciBsYXJnZSBmcm9udCBhbmQgZXllIHN1YmxpbWUgZGVjbGFyZWQgDQorQWJzb2x1dGUgcnVsZTsgYW5kIGh5YWNpbnRoaW5lIGxvY2tzIA0KK1JvdW5kIGZyb20gaGlzIHBhcnRlZCBmb3JlbG9jayBtYW5seSBodW5nIA0KK0NsdXN0ZXJpbmcsIGJ1dCBub3QgYmVuZWF0aCBoaXMgc2hvdWxkZXJzIGJyb2FkOiANCitTaGUsIGFzIGEgdmVpbCwgZG93biB0byB0aGUgc2xlbmRlciB3YWlzdCANCitIZXIgdW5hZG9ybmVkIGdvbGRlbiB0cmVzc2VzIHdvcmUgDQorRGlzaGV2ZWxsZWQsIGJ1dCBpbiB3YW50b24gcmluZ2xldHMgd2F2ZWQgDQorQXMgdGhlIHZpbmUgY3VybHMgaGVyIHRlbmRyaWxzLCB3aGljaCBpbXBsaWVkIA0KK1N1YmplY3Rpb24sIGJ1dCByZXF1aXJlZCB3aXRoIGdlbnRsZSBzd2F5LCANCitBbmQgYnkgaGVyIHlpZWxkZWQsIGJ5IGhpbSBiZXN0IHJlY2VpdmVkLCANCitZaWVsZGVkIHdpdGggY295IHN1Ym1pc3Npb24sIG1vZGVzdCBwcmlkZSwgDQorQW5kIHN3ZWV0LCByZWx1Y3RhbnQsIGFtb3JvdXMgZGVsYXkuIA0KK05vciB0aG9zZSBteXN0ZXJpb3VzIHBhcnRzIHdlcmUgdGhlbiBjb25jZWFsZWQ7IA0KK1RoZW4gd2FzIG5vdCBndWlsdHkgc2hhbWUsIGRpc2hvbmVzdCBzaGFtZSANCitPZiBuYXR1cmUncyB3b3JrcywgaG9ub3VyIGRpc2hvbm91cmFibGUsIA0KK1Npbi1icmVkLCBob3cgaGF2ZSB5ZSB0cm91YmxlZCBhbGwgbWFua2luZCANCitXaXRoIHNob3dzIGluc3RlYWQsIG1lcmUgc2hvd3Mgb2Ygc2VlbWluZyBwdXJlLCANCitBbmQgYmFuaXNoZWQgZnJvbSBtYW4ncyBsaWZlIGhpcyBoYXBwaWVzdCBsaWZlLCANCitTaW1wbGljaXR5IGFuZCBzcG90bGVzcyBpbm5vY2VuY2UhIA0KK1NvIHBhc3NlZCB0aGV5IG5ha2VkIG9uLCBub3Igc2h1bm5lZCB0aGUgc2lnaHQgDQorT2YgR29kIG9yIEFuZ2VsOyBmb3IgdGhleSB0aG91Z2h0IG5vIGlsbDogDQorU28gaGFuZCBpbiBoYW5kIHRoZXkgcGFzc2VkLCB0aGUgbG92ZWxpZXN0IHBhaXIsIA0KK1RoYXQgZXZlciBzaW5jZSBpbiBsb3ZlJ3MgZW1icmFjZXMgbWV0OyANCitBZGFtIHRoZSBnb29kbGllc3QgbWFuIG9mIG1lbiBzaW5jZSBib3JuIA0KK0hpcyBzb25zLCB0aGUgZmFpcmVzdCBvZiBoZXIgZGF1Z2h0ZXJzIEV2ZS4gDQorVW5kZXIgYSB0dWZ0IG9mIHNoYWRlIHRoYXQgb24gYSBncmVlbiANCitTdG9vZCB3aGlzcGVyaW5nIHNvZnQsIGJ5IGEgZnJlc2ggZm91bnRhaW4gc2lkZSANCitUaGV5IHNhdCB0aGVtIGRvd247IGFuZCwgYWZ0ZXIgbm8gbW9yZSB0b2lsIA0KK09mIHRoZWlyIHN3ZWV0IGdhcmRlbmluZyBsYWJvdXIgdGhhbiBzdWZmaWNlZCANCitUbyByZWNvbW1lbmQgY29vbCBaZXBoeXIsIGFuZCBtYWRlIGVhc2UgDQorTW9yZSBlYXN5LCB3aG9sZXNvbWUgdGhpcnN0IGFuZCBhcHBldGl0ZSANCitNb3JlIGdyYXRlZnVsLCB0byB0aGVpciBzdXBwZXItZnJ1aXRzIHRoZXkgZmVsbCwgDQorTmVjdGFyaW5lIGZydWl0cyB3aGljaCB0aGUgY29tcGxpYW50IGJvdWdocyANCitZaWVsZGVkIHRoZW0sIHNpZGUtbG9uZyBhcyB0aGV5IHNhdCByZWNsaW5lIA0KK09uIHRoZSBzb2Z0IGRvd255IGJhbmsgZGFtYXNrZWQgd2l0aCBmbG93ZXJzOiANCitUaGUgc2F2b3VyeSBwdWxwIHRoZXkgY2hldywgYW5kIGluIHRoZSByaW5kLCANCitTdGlsbCBhcyB0aGV5IHRoaXJzdGVkLCBzY29vcCB0aGUgYnJpbW1pbmcgc3RyZWFtOyANCitOb3IgZ2VudGxlIHB1cnBvc2UsIG5vciBlbmRlYXJpbmcgc21pbGVzIA0KK1dhbnRlZCwgbm9yIHlvdXRoZnVsIGRhbGxpYW5jZSwgYXMgYmVzZWVtcyANCitGYWlyIGNvdXBsZSwgbGlua2VkIGluIGhhcHB5IG51cHRpYWwgbGVhZ3VlLCANCitBbG9uZSBhcyB0aGV5LiAgQWJvdXQgdGhlbSBmcmlza2luZyBwbGF5ZWQgDQorQWxsIGJlYXN0cyBvZiB0aGUgZWFydGgsIHNpbmNlIHdpbGQsIGFuZCBvZiBhbGwgY2hhc2UgDQorSW4gd29vZCBvciB3aWxkZXJuZXNzLCBmb3Jlc3Qgb3IgZGVuOyANCitTcG9ydGluZyB0aGUgbGlvbiByYW1wZWQsIGFuZCBpbiBoaXMgcGF3IA0KK0RhbmRsZWQgdGhlIGtpZDsgYmVhcnMsIHRpZ2Vycywgb3VuY2VzLCBwYXJkcywgDQorR2FtYm9sbGVkIGJlZm9yZSB0aGVtOyB0aGUgdW53aWVsZHkgZWxlcGhhbnQsIA0KK1RvIG1ha2UgdGhlbSBtaXJ0aCwgdXNlZCBhbGwgaGlzIG1pZ2h0LCBhbmQgd3JlYXRoZWQgDQorSGlzP2tpdGhldG1yb2Jvc2NpczsgY2xvc2UgdGhlIHNlcnBlbnQgc2x5LCANCitJbnNpbnVhdGluZywgd292ZSB3aXRoIEdvcmRpYW4gdHdpbmUgDQorSGlzIGJyYWlkZWQgdHJhaW4sIGFuZCBvZiBoaXMgZmF0YWwgZ3VpbGUgDQorR2F2ZSBwcm9vZiB1bmhlZWRlZDsgb3RoZXJzIG9uIHRoZSBncmFzcyANCitDb3VjaGVkLCBhbmQgbm93IGZpbGxlZCB3aXRoIHBhc3R1cmUgZ2F6aW5nIHNhdCwgDQorT3IgYmVkd2FyZCBydW1pbmF0aW5nOyBmb3IgdGhlIHN1biwgDQorRGVjbGluZWQsIHdhcyBoYXN0aW5nIG5vdyB3aXRoIHByb25lIGNhcmVlciANCitUbyB0aGUgb2NlYW4gaXNsZXMsIGFuZCBpbiB0aGUgYXNjZW5kaW5nIHNjYWxlIA0KK09mIEhlYXZlbiB0aGUgc3RhcnMgdGhhdCB1c2hlciBldmVuaW5nIHJvc2U6IA0KK1doZW4gU2F0YW4gc3RpbGwgaW4gZ2F6ZSwgYXMgZmlyc3QgaGUgc3Rvb2QsIA0KK1NjYXJjZSB0aHVzIGF0IGxlbmd0aCBmYWlsZWQgc3BlZWNoIHJlY292ZXJlZCBzYWQuIA0KK08gSGVsbCEgd2hhdCBkbyBtaW5lIGV5ZXMgd2l0aCBncmllZiBiZWhvbGQhIA0KK0ludG8gb3VyIHJvb20gb2YgYmxpc3MgdGh1cyBoaWdoIGFkdmFuY2VkIA0KK0NyZWF0dXJlcyBvZiBvdGhlciBtb3VsZCwgZWFydGgtYm9ybiBwZXJoYXBzLCANCitOb3QgU3Bpcml0cywgeWV0IHRvIGhlYXZlbmx5IFNwaXJpdHMgYnJpZ2h0IA0KK0xpdHRsZSBpbmZlcmlvdXI7IHdob20gbXkgdGhvdWdodHMgcHVyc3VlIA0KK1dpdGggd29uZGVyLCBhbmQgY291bGQgbG92ZSwgc28gbGl2ZWx5IHNoaW5lcyANCitJbiB0aGVtIGRpdmluZSByZXNlbWJsYW5jZSwgYW5kIHN1Y2ggZ3JhY2UgDQorVGhlIGhhbmQgdGhhdCBmb3JtZWQgdGhlbSBvbiB0aGVpciBzaGFwZSBoYXRoIHBvdXJlZC4gDQorQWghIGdlbnRsZSBwYWlyLCB5ZSBsaXR0bGUgdGhpbmsgaG93IG5pZ2ggDQorWW91ciBjaGFuZ2UgYXBwcm9hY2hlcywgd2hlbiBhbGwgdGhlc2UgZGVsaWdodHMgDQorV2lsbCB2YW5pc2gsIGFuZCBkZWxpdmVyIHllIHRvIHdvZTsgDQorTW9yZSB3b2UsIHRoZSBtb3JlIHlvdXIgdGFzdGUgaXMgbm93IG9mIGpveTsgDQorSGFwcHksIGJ1dCBmb3Igc28gaGFwcHkgaWxsIHNlY3VyZWQgDQorTG9uZyB0byBjb250aW51ZSwgYW5kIHRoaXMgaGlnaCBzZWF0IHlvdXIgSGVhdmVuIA0KK0lsbCBmZW5jZWQgZm9yIEhlYXZlbiB0byBrZWVwIG91dCBzdWNoIGEgZm9lIA0KK0FzIG5vdyBpcyBlbnRlcmVkOyB5ZXQgbm8gcHVycG9zZWQgZm9lIA0KK1RvIHlvdSwgd2hvbSBJIGNvdWxkIHBpdHkgdGh1cyBmb3Jsb3JuLCANCitUaG91Z2ggSSB1bnBpdGllZDogIExlYWd1ZSB3aXRoIHlvdSBJIHNlZWssIA0KK0FuZCBtdXR1YWwgYW1pdHksIHNvIHN0cmFpdCwgc28gY2xvc2UsIA0KK1RoYXQgSSB3aXRoIHlvdSBtdXN0IGR3ZWxsLCBvciB5b3Ugd2l0aCBtZSANCitIZW5jZWZvcnRoOyBteSBkd2VsbGluZyBoYXBseSBtYXkgbm90IHBsZWFzZSwgDQorTGlrZSB0aGlzIGZhaXIgUGFyYWRpc2UsIHlvdXIgc2Vuc2U7IHlldCBzdWNoIA0KK0FjY2VwdCB5b3VyIE1ha2VyJ3Mgd29yazsgaGUgZ2F2ZSBpdCBtZSwgDQorV2hpY2ggSSBhcyBmcmVlbHkgZ2l2ZTogIEhlbGwgc2hhbGwgdW5mb2xkLCANCitUbyBlbnRlcnRhaW4geW91IHR3bywgaGVyIHdpZGVzdCBnYXRlcywgDQorQW5kIHNlbmQgZm9ydGggYWxsIGhlciBraW5nczsgdGhlcmUgd2lsbCBiZSByb29tLCANCitOb3QgbGlrZSB0aGVzZSBuYXJyb3cgbGltaXRzLCB0byByZWNlaXZlIA0KK1lvdXIgbnVtZXJvdXMgb2Zmc3ByaW5nOyBpZiBubyBiZXR0ZXIgcGxhY2UsIA0KK1RoYW5rIGhpbSB3aG8gcHV0cyBtZSBsb3RoIHRvIHRoaXMgcmV2ZW5nZSANCitPbiB5b3Ugd2hvIHdyb25nIG1lIG5vdCBmb3IgaGltIHdobyB3cm9uZ2VkLiANCitBbmQgc2hvdWxkIEkgYXQgeW91ciBoYXJtbGVzcyBpbm5vY2VuY2UgDQorTWVsdCwgYXMgSSBkbywgeWV0IHB1YmxpY2sgcmVhc29uIGp1c3QsIA0KK0hvbm91ciBhbmQgZW1waXJlIHdpdGggcmV2ZW5nZSBlbmxhcmdlZCwgDQorQnkgY29ucXVlcmluZyB0aGlzIG5ldyB3b3JsZCwgY29tcGVscyBtZSBub3cgDQorVG8gZG8gd2hhdCBlbHNlLCB0aG91Z2ggZGFtbmVkLCBJIHNob3VsZCBhYmhvci4gDQorU28gc3Bha2UgdGhlIEZpZW5kLCBhbmQgd2l0aCBuZWNlc3NpdHksIA0KK1RoZSB0eXJhbnQncyBwbGVhLCBleGN1c2VkIGhpcyBkZXZpbGlzaCBkZWVkcy4gDQorVGhlbiBmcm9tIGhpcyBsb2Z0eSBzdGFuZCBvbiB0aGF0IGhpZ2ggdHJlZSANCitEb3duIGhlIGFsaWdodHMgYW1vbmcgdGhlIHNwb3J0ZnVsIGhlcmQgDQorT2YgdGhvc2UgZm91ci1mb290ZWQga2luZHMsIGhpbXNlbGYgbm93IG9uZSwgDQorTm93IG90aGVyLCBhcyB0aGVpciBzaGFwZSBzZXJ2ZWQgYmVzdCBoaXMgZW5kIA0KK05lYXJlciB0byB2aWV3IGhpcyBwcmV5LCBhbmQsIHVuZXNwaWVkLCANCitUbyBtYXJrIHdoYXQgb2YgdGhlaXIgc3RhdGUgaGUgbW9yZSBtaWdodCBsZWFybiwgDQorQnkgd29yZCBvciBhY3Rpb24gbWFya2VkLiBBYm91dCB0aGVtIHJvdW5kIA0KK0EgbGlvbiBub3cgaGUgc3RhbGtzIHdpdGggZmllcnkgZ2xhcmU7IA0KK1RoZW4gYXMgYSB0aWdlciwgd2hvIGJ5IGNoYW5jZSBoYXRoIHNwaWVkIA0KK0luIHNvbWUgcHVybGlldSB0d28gZ2VudGxlIGZhd25zIGF0IHBsYXksIA0KK1N0cmFpZ2h0IGNvdWNoZXMgY2xvc2UsIHRoZW4sIHJpc2luZywgY2hhbmdlcyBvZnQgDQorSGlzIGNvdWNoYW50IHdhdGNoLCBhcyBvbmUgd2hvIGNob3NlIGhpcyBncm91bmQsIA0KK1doZW5jZSBydXNoaW5nLCBoZSBtaWdodCBzdXJlc3Qgc2VpemUgdGhlbSBib3RoLCANCitHcmlwZWQgaW4gZWFjaCBwYXc6IHdoZW4sIEFkYW0gZmlyc3Qgb2YgbWVuIA0KK1RvIGZpcnN0IG9mIHdvbWVuIEV2ZSB0aHVzIG1vdmluZyBzcGVlY2gsIA0KK1R1cm5lZCBoaW0sIGFsbCBlYXIgdG8gaGVhciBuZXcgdXR0ZXJhbmNlIGZsb3cuIA0KK1NvbGUgcGFydG5lciwgYW5kIHNvbGUgcGFydCwgb2YgYWxsIHRoZXNlIGpveXMsIA0KK0RlYXJlciB0aHlzZWxmIHRoYW4gYWxsOyBuZWVkcyBtdXN0IHRoZSBQb3dlciANCitUaGF0IG1hZGUgdXMsIGFuZCBmb3IgdXMgdGhpcyBhbXBsZSB3b3JsZCwgDQorQmUgaW5maW5pdGVseSBnb29kLCBhbmQgb2YgaGlzIGdvb2QgDQorQXMgbGliZXJhbCBhbmQgZnJlZSBhcyBpbmZpbml0ZTsgDQorVGhhdCByYWlzZWQgdXMgZnJvbSB0aGUgZHVzdCwgYW5kIHBsYWNlZCB1cyBoZXJlIA0KK0luIGFsbCB0aGlzIGhhcHBpbmVzcywgd2hvIGF0IGhpcyBoYW5kIA0KK0hhdmUgbm90aGluZyBtZXJpdGVkLCBub3IgY2FuIHBlcmZvcm0gDQorQXVnaHQgd2hlcmVvZiBoZSBoYXRoIG5lZWQ7IGhlIHdobyByZXF1aXJlcyANCitGcm9tIHVzIG5vIG90aGVyIHNlcnZpY2UgdGhhbiB0byBrZWVwIA0KK1RoaXMgb25lLCB0aGlzIGVhc3kgY2hhcmdlLCBvZiBhbGwgdGhlIHRyZWVzIA0KK0luIFBhcmFkaXNlIHRoYXQgYmVhciBkZWxpY2lvdXMgZnJ1aXQgDQorU28gdmFyaW91cywgbm90IHRvIHRhc3RlIHRoYXQgb25seSB0cmVlIA0KK09mIGtub3dsZWRnZSwgcGxhbnRlZCBieSB0aGUgdHJlZSBvZiBsaWZlOyANCitTbyBuZWFyIGdyb3dzIGRlYXRoIHRvIGxpZmUsIHdoYXRlJ2VyIGRlYXRoIGlzLCANCitTb21lIGRyZWFkZnVsIHRoaW5nIG5vIGRvdWJ0OyBmb3Igd2VsbCB0aG91IGtub3dlc3QgDQorR29kIGhhdGggcHJvbm91bmNlZCBpdCBkZWF0aCB0byB0YXN0ZSB0aGF0IHRyZWUsIA0KK1RoZSBvbmx5IHNpZ24gb2Ygb3VyIG9iZWRpZW5jZSBsZWZ0LCANCitBbW9uZyBzbyBtYW55IHNpZ25zIG9mIHBvd2VyIGFuZCBydWxlIA0KK0NvbmZlcnJlZCB1cG9uIHVzLCBhbmQgZG9taW5pb24gZ2l2ZW4gDQorT3ZlciBhbGwgb3RoZXIgY3JlYXR1cmVzIHRoYXQgcG9zc2VzcyANCitFYXJ0aCwgYWlyLCBhbmQgc2VhLiAgVGhlbiBsZXQgdXMgbm90IHRoaW5rIGhhcmQgDQorT25lIGVhc3kgcHJvaGliaXRpb24sIHdobyBlbmpveSANCitGcmVlIGxlYXZlIHNvIGxhcmdlIHRvIGFsbCB0aGluZ3MgZWxzZSwgYW5kIGNob2ljZSANCitVbmxpbWl0ZWQgb2YgbWFuaWZvbGQgZGVsaWdodHM6IA0KK0J1dCBsZXQgdXMgZXZlciBwcmFpc2UgaGltLCBhbmQgZXh0b2wgDQorSGlzIGJvdW50eSwgZm9sbG93aW5nIG91ciBkZWxpZ2h0ZnVsIHRhc2ssIA0KK1RvIHBydW5lIHRoZXNlIGdyb3dpbmcgcGxhbnRzLCBhbmQgdGVuZCB0aGVzZSBmbG93ZXJzLCANCitXaGljaCB3ZXJlIGl0IHRvaWxzb21lLCB5ZXQgd2l0aCB0aGVlIHdlcmUgc3dlZXQuIA0KK1RvIHdob20gdGh1cyBFdmUgcmVwbGllZC4gIE8gdGhvdSBmb3Igd2hvbSANCitBbmQgZnJvbSB3aG9tIEkgd2FzIGZvcm1lZCwgZmxlc2ggb2YgdGh5IGZsZXNoLCANCitBbmQgd2l0aG91dCB3aG9tIGFtIHRvIG5vIGVuZCwgbXkgZ3VpZGUgDQorQW5kIGhlYWQhIHdoYXQgdGhvdSBoYXN0IHNhaWQgaXMganVzdCBhbmQgcmlnaHQuIA0KK0ZvciB3ZSB0byBoaW0gaW5kZWVkIGFsbCBwcmFpc2VzIG93ZSwgDQorQW5kIGRhaWx5IHRoYW5rczsgSSBjaGllZmx5LCB3aG8gZW5qb3kgDQorU28gZmFyIHRoZSBoYXBwaWVyIGxvdCwgZW5qb3lpbmcgdGhlZSANCitQcmUtZW1pbmVudCBieSBzbyBtdWNoIG9kZHMsIHdoaWxlIHRob3UgDQorTGlrZSBjb25zb3J0IHRvIHRoeXNlbGYgY2Fuc3Qgbm8gd2hlcmUgZmluZC4gDQorVGhhdCBkYXkgSSBvZnQgcmVtZW1iZXIsIHdoZW4gZnJvbSBzbGVlcCANCitJIGZpcnN0IGF3YWtlZCwgYW5kIGZvdW5kIG15c2VsZiByZXBvc2VkIA0KK1VuZGVyIGEgc2hhZGUgb24gZmxvd2VycywgbXVjaCB3b25kZXJpbmcgd2hlcmUgDQorQW5kIHdoYXQgSSB3YXMsIHdoZW5jZSB0aGl0aGVyIGJyb3VnaHQsIGFuZCBob3cuIA0KK05vdCBkaXN0YW50IGZhciBmcm9tIHRoZW5jZSBhIG11cm11cmluZyBzb3VuZCANCitPZiB3YXRlcnMgaXNzdWVkIGZyb20gYSBjYXZlLCBhbmQgc3ByZWFkIA0KK0ludG8gYSBsaXF1aWQgcGxhaW4sIHRoZW4gc3Rvb2QgdW5tb3ZlZCANCitQdXJlIGFzIHRoZSBleHBhbnNlIG9mIEhlYXZlbjsgSSB0aGl0aGVyIHdlbnQgDQorV2l0aCB1bmV4cGVyaWVuY2VkIHRob3VnaHQsIGFuZCBsYWlkIG1lIGRvd24gDQorT24gdGhlIGdyZWVuIGJhbmssIHRvIGxvb2sgaW50byB0aGUgY2xlYXIgDQorU21vb3RoIGxha2UsIHRoYXQgdG8gbWUgc2VlbWVkIGFub3RoZXIgc2t5LiANCitBcyBJIGJlbnQgZG93biB0byBsb29rLCBqdXN0IG9wcG9zaXRlIA0KK0Egc2hhcGUgd2l0aGluIHRoZSB3YXRlcnkgZ2xlYW0gYXBwZWFyZWQsIA0KK0JlbmRpbmcgdG8gbG9vayBvbiBtZTogIEkgc3RhcnRlZCBiYWNrLCANCitJdCBzdGFydGVkIGJhY2s7IGJ1dCBwbGVhc2VkIEkgc29vbiByZXR1cm5lZCwgDQorUGxlYXNlZCBpdCByZXR1cm5lZCBhcyBzb29uIHdpdGggYW5zd2VyaW5nIGxvb2tzIA0KK09mIHN5bXBhdGh5IGFuZCBsb3ZlOiAgVGhlcmUgSSBoYWQgZml4ZWQgDQorTWluZSBleWVzIHRpbGwgbm93LCBhbmQgcGluZWQgd2l0aCB2YWluIGRlc2lyZSwgDQorSGFkIG5vdCBhIHZvaWNlIHRodXMgd2FybmVkIG1lOyAgJ1doYXQgdGhvdSBzZWVzdCwgDQorJ1doYXQgdGhlcmUgdGhvdSBzZWVzdCwgZmFpciBDcmVhdHVyZSwgaXMgdGh5c2VsZjsgDQorJ1dpdGggdGhlZSBpdCBjYW1lIGFuZCBnb2VzOiBidXQgZm9sbG93IG1lLCANCisnQW5kIEkgd2lsbCBicmluZyB0aGVlIHdoZXJlIG5vIHNoYWRvdyBzdGF5cyANCisnVGh5IGNvbWluZywgYW5kIHRoeSBzb2Z0IGVtYnJhY2VzLCBoZSANCisnV2hvc2UgaW1hZ2UgdGhvdSBhcnQ7IGhpbSB0aG91IHNoYWx0IGVuam95IA0KKydJbnNlcGFyYWJseSB0aGluZSwgdG8gaGltIHNoYWx0IGJlYXIgDQorJ011bHRpdHVkZXMgbGlrZSB0aHlzZWxmLCBhbmQgdGhlbmNlIGJlIGNhbGxlZCANCisnTW90aGVyIG9mIGh1bWFuIHJhY2UuJyAgV2hhdCBjb3VsZCBJIGRvLCANCitCdXQgZm9sbG93IHN0cmFpZ2h0LCBpbnZpc2libHkgdGh1cyBsZWQ/IA0KK1RpbGwgSSBlc3BpZWQgdGhlZSwgZmFpciBpbmRlZWQgYW5kIHRhbGwsIA0KK1VuZGVyIGEgcGxhdGFuZTsgeWV0IG1ldGhvdWdodCBsZXNzIGZhaXIsIA0KK0xlc3Mgd2lubmluZyBzb2Z0LCBsZXNzIGFtaWFibHkgbWlsZCwgDQorVGhhbiB0aGF0IHNtb290aCB3YXRlcnkgaW1hZ2U6ICBCYWNrIEkgdHVybmVkOyANCitUaG91IGZvbGxvd2luZyBjcnllZHN0IGFsb3VkLCAnUmV0dXJuLCBmYWlyIEV2ZTsgDQorJ1dob20gZmx5ZXN0IHRob3U/ICB3aG9tIHRob3UgZmx5ZXN0LCBvZiBoaW0gdGhvdSBhcnQsIA0KKydIaXMgZmxlc2gsIGhpcyBib25lOyB0byBnaXZlIHRoZWUgYmVpbmcgSSBsZW50IA0KKydPdXQgb2YgbXkgc2lkZSB0byB0aGVlLCBuZWFyZXN0IG15IGhlYXJ0LCANCisnU3Vic3RhbnRpYWwgbGlmZSwgdG8gaGF2ZSB0aGVlIGJ5IG15IHNpZGUgDQorJ0hlbmNlZm9ydGggYW4gaW5kaXZpZHVhbCBzb2xhY2UgZGVhcjsgDQorJ1BhcnQgb2YgbXkgc291bCBJIHNlZWsgdGhlZSwgYW5kIHRoZWUgY2xhaW0gDQorJ015IG90aGVyIGhhbGY6JyAgV2l0aCB0aGF0IHRoeSBnZW50bGUgaGFuZCANCitTZWlzZWQgbWluZTogIEkgeWllbGRlZDthbmQgZnJvbSB0aGF0IHRpbWUgc2VlIA0KK0hvdyBiZWF1dHkgaXMgZXhjZWxsZWQgYnkgbWFubHkgZ3JhY2UsIA0KK0FuZCB3aXNkb20sIHdoaWNoIGFsb25lIGlzIHRydWx5IGZhaXIuIA0KK1NvIHNwYWtlIG91ciBnZW5lcmFsIG1vdGhlciwgYW5kIHdpdGggZXllcyANCitPZiBjb25qdWdhbCBhdHRyYWN0aW9uIHVucmVwcm92ZWQsIA0KK0FuZCBtZWVrIHN1cnJlbmRlciwgaGFsZi1lbWJyYWNpbmcgbGVhbmVkIA0KK09uIG91ciBmaXJzdCBmYXRoZXI7IGhhbGYgaGVyIHN3ZWxsaW5nIGJyZWFzdCANCitOYWtlZCBtZXQgaGlzLCB1bmRlciB0aGUgZmxvd2luZyBnb2xkIA0KK09mIGhlciBsb29zZSB0cmVzc2VzIGhpZDogaGUgaW4gZGVsaWdodCANCitCb3RoIG9mIGhlciBiZWF1dHksIGFuZCBzdWJtaXNzaXZlIGNoYXJtcywgDQorU21pbGVkIHdpdGggc3VwZXJpb3VyIGxvdmUsIGFzIEp1cGl0ZXIgDQorT24gSnVubyBzbWlsZXMsIHdoZW4gaGUgaW1wcmVnbnMgdGhlIGNsb3VkcyANCitUaGF0IHNoZWQgTWF5Zmxvd2VyczsgYW5kIHByZXNzZWQgaGVyIG1hdHJvbiBsaXAgDQorV2l0aCBraXNzZXMgcHVyZTogIEFzaWRlIHRoZSBEZXZpbCB0dXJuZWQgDQorRm9yIGVudnk7IHlldCB3aXRoIGplYWxvdXMgbGVlciBtYWxpZ24gDQorRXllZCB0aGVtIGFza2FuY2UsIGFuZCB0byBoaW1zZWxmIHRodXMgcGxhaW5lZC4gDQorU2lnaHQgaGF0ZWZ1bCwgc2lnaHQgdG9ybWVudGluZyEgdGh1cyB0aGVzZSB0d28sIA0KK0ltcGFyYWRpc2VkIGluIG9uZSBhbm90aGVyJ3MgYXJtcywgDQorVGhlIGhhcHBpZXIgRWRlbiwgc2hhbGwgZW5qb3kgdGhlaXIgZmlsbCANCitPZiBibGlzcyBvbiBibGlzczsgd2hpbGUgSSB0byBIZWxsIGFtIHRocnVzdCwgDQorV2hlcmUgbmVpdGhlciBqb3kgbm9yIGxvdmUsIGJ1dCBmaWVyY2UgZGVzaXJlLCANCitBbW9uZyBvdXIgb3RoZXIgdG9ybWVudHMgbm90IHRoZSBsZWFzdCwgDQorU3RpbGwgdW5mdWxmaWxsZWQgd2l0aCBwYWluIG9mIGxvbmdpbmcgcGluZXMuIA0KK1lldCBsZXQgbWUgbm90IGZvcmdldCB3aGF0IEkgaGF2ZSBnYWluZWQgDQorRnJvbSB0aGVpciBvd24gbW91dGhzOiAgQWxsIGlzIG5vdCB0aGVpcnMsIGl0IHNlZW1zOyANCitPbmUgZmF0YWwgdHJlZSB0aGVyZSBzdGFuZHMsIG9mIGtub3dsZWRnZSBjYWxsZWQsIA0KK0ZvcmJpZGRlbiB0aGVtIHRvIHRhc3RlOiAgS25vd2xlZGdlIGZvcmJpZGRlbiANCitTdXNwaWNpb3VzLCByZWFzb25sZXNzLiAgV2h5IHNob3VsZCB0aGVpciBMb3JkIA0KK0VudnkgdGhlbSB0aGF0PyAgQ2FuIGl0IGJlIHNpbiB0byBrbm93PyANCitDYW4gaXQgYmUgZGVhdGg/ICBBbmQgZG8gdGhleSBvbmx5IHN0YW5kIA0KK0J5IGlnbm9yYW5jZT8gIElzIHRoYXQgdGhlaXIgaGFwcHkgc3RhdGUsIA0KK1RoZSBwcm9vZiBvZiB0aGVpciBvYmVkaWVuY2UgYW5kIHRoZWlyIGZhaXRoPyANCitPIGZhaXIgZm91bmRhdGlvbiBsYWlkIHdoZXJlb24gdG8gYnVpbGQgDQorVGhlaXIgcnVpbiEgaGVuY2UgSSB3aWxsIGV4Y2l0ZSB0aGVpciBtaW5kcyANCitXaXRoIG1vcmUgZGVzaXJlIHRvIGtub3csIGFuZCB0byByZWplY3QgDQorRW52aW91cyBjb21tYW5kcywgaW52ZW50ZWQgd2l0aCBkZXNpZ24gDQorVG8ga2VlcCB0aGVtIGxvdywgd2hvbSBrbm93bGVkZ2UgbWlnaHQgZXhhbHQgDQorRXF1YWwgd2l0aCBHb2RzOiBhc3BpcmluZyB0byBiZSBzdWNoLCANCitUaGV5IHRhc3RlIGFuZCBkaWU6ICBXaGF0IGxpa2VsaWVyIGNhbiBlbnN1ZSANCitCdXQgZmlyc3Qgd2l0aCBuYXJyb3cgc2VhcmNoIEkgbXVzdCB3YWxrIHJvdW5kIA0KK1RoaXMgZ2FyZGVuLCBhbmQgbm8gY29ybmVyIGxlYXZlIHVuc3BpZWQ7IA0KK0EgY2hhbmNlIGJ1dCBjaGFuY2UgbWF5IGxlYWQgd2hlcmUgSSBtYXkgbWVldCANCitTb21lIHdhbmRlcmluZyBTcGlyaXQgb2YgSGVhdmVuIGJ5IGZvdW50YWluIHNpZGUsIA0KK09yIGluIHRoaWNrIHNoYWRlIHJldGlyZWQsIGZyb20gaGltIHRvIGRyYXcgDQorV2hhdCBmdXJ0aGVyIHdvdWxkIGJlIGxlYXJuZWQuICBMaXZlIHdoaWxlIHllIG1heSwgDQorWWV0IGhhcHB5IHBhaXI7IGVuam95LCB0aWxsIEkgcmV0dXJuLCANCitTaG9ydCBwbGVhc3VyZXMsIGZvciBsb25nIHdvZXMgYXJlIHRvIHN1Y2NlZWQhIA0KK1NvIHNheWluZywgaGlzIHByb3VkIHN0ZXAgaGUgc2Nvcm5mdWwgdHVybmVkLCANCitCdXQgd2l0aCBzbHkgY2lyY3Vtc3BlY3Rpb24sIGFuZCBiZWdhbiANCitUaHJvdWdoIHdvb2QsIHRocm91Z2ggd2FzdGUsIG8nZXIgaGlsbCwgbydlciBkYWxlLCBoaXMgcm9hbSANCitNZWFuIHdoaWxlIGluIHV0bW9zdCBsb25naXR1ZGUsIHdoZXJlIEhlYXZlbiANCitXaXRoIGVhcnRoIGFuZCBvY2VhbiBtZWV0cywgdGhlIHNldHRpbmcgc3VuIA0KK1Nsb3dseSBkZXNjZW5kZWQsIGFuZCB3aXRoIHJpZ2h0IGFzcGVjdCANCitBZ2FpbnN0IHRoZSBlYXN0ZXJuIGdhdGUgb2YgUGFyYWRpc2UgDQorTGV2ZWxsZWQgaGlzIGV2ZW5pbmcgcmF5czogIEl0IHdhcyBhIHJvY2sgDQorT2YgYWxhYmFzdGVyLCBwaWxlZCB1cCB0byB0aGUgY2xvdWRzLCANCitDb25zcGljdW91cyBmYXIsIHdpbmRpbmcgd2l0aCBvbmUgYXNjZW50IA0KK0FjY2Vzc2libGUgZnJvbSBlYXJ0aCwgb25lIGVudHJhbmNlIGhpZ2g7IA0KK1RoZSByZXN0IHdhcyBjcmFnZ3kgY2xpZmYsIHRoYXQgb3Zlcmh1bmcgDQorU3RpbGwgYXMgaXQgcm9zZSwgaW1wb3NzaWJsZSB0byBjbGltYi4gDQorQmV0d2l4dCB0aGVzZSByb2NreSBwaWxsYXJzIEdhYnJpZWwgc2F0LCANCitDaGllZiBvZiB0aGUgYW5nZWxpY2sgZ3VhcmRzLCBhd2FpdGluZyBuaWdodDsgDQorQWJvdXQgaGltIGV4ZXJjaXNlZCBoZXJvaWNrIGdhbWVzIA0KK1RoZSB1bmFybWVkIHlvdXRoIG9mIEhlYXZlbiwgYnV0IG5pZ2ggYXQgaGFuZCANCitDZWxlc3RpYWwgYXJtb3VyeSwgc2hpZWxkcywgaGVsbXMsIGFuZCBzcGVhcnMsIA0KK0h1bmcgaGlnaCB3aXRoIGRpYW1vbmQgZmxhbWluZywgYW5kIHdpdGggZ29sZC4gDQorVGhpdGhlciBjYW1lIFVyaWVsLCBnbGlkaW5nIHRocm91Z2ggdGhlIGV2ZW4gDQorT24gYSBzdW4tYmVhbSwgc3dpZnQgYXMgYSBzaG9vdGluZyBzdGFyIA0KK0luIGF1dHVtbiB0aHdhcnRzIHRoZSBuaWdodCwgd2hlbiB2YXBvdXJzIGZpcmVkIA0KK0ltcHJlc3MgdGhlIGFpciwgYW5kIHNob3dzIHRoZSBtYXJpbmVyIA0KK0Zyb20gd2hhdCBwb2ludCBvZiBoaXMgY29tcGFzcyB0byBiZXdhcmUgDQorSW1wZXR1b3VzIHdpbmRzOiAgSGUgdGh1cyBiZWdhbiBpbiBoYXN0ZS4gDQorR2FicmllbCwgdG8gdGhlZSB0aHkgY291cnNlIGJ5IGxvdCBoYXRoIGdpdmVuIA0KK0NoYXJnZSBhbmQgc3RyaWN0IHdhdGNoLCB0aGF0IHRvIHRoaXMgaGFwcHkgcGxhY2UgDQorTm8gZXZpbCB0aGluZyBhcHByb2FjaCBvciBlbnRlciBpbi4gDQorVGhpcyBkYXkgYXQgaGlnaHRoIG9mIG5vb24gY2FtZSB0byBteSBzcGhlcmUgDQorQSBTcGlyaXQsIHplYWxvdXMsIGFzIGhlIHNlZW1lZCwgdG8ga25vdyANCitNb3JlIG9mIHRoZSBBbG1pZ2h0eSdzIHdvcmtzLCBhbmQgY2hpZWZseSBNYW4sIA0KK0dvZCdzIGxhdGVzdCBpbWFnZTogIEkgZGVzY3JpYmVkIGhpcyB3YXkgDQorQmVudCBhbGwgb24gc3BlZWQsIGFuZCBtYXJrZWQgaGlzIGFlcnkgZ2FpdDsgDQorQnV0IGluIHRoZSBtb3VudCB0aGF0IGxpZXMgZnJvbSBFZGVuIG5vcnRoLCANCitXaGVyZSBoZSBmaXJzdCBsaWdodGVkLCBzb29uIGRpc2Nlcm5lZCBoaXMgbG9va3MgDQorQWxpZW4gZnJvbSBIZWF2ZW4sIHdpdGggcGFzc2lvbnMgZm91bCBvYnNjdXJlZDogDQorTWluZSBleWUgcHVyc3VlZCBoaW0gc3RpbGwsIGJ1dCB1bmRlciBzaGFkZSANCitMb3N0IHNpZ2h0IG9mIGhpbTogIE9uZSBvZiB0aGUgYmFuaXNoZWQgY3JldywgDQorSSBmZWFyLCBoYXRoIHZlbnR1cmVkIGZyb20gdGhlIGRlZXAsIHRvIHJhaXNlIA0KK05ldyB0cm91YmxlczsgaGltIHRoeSBjYXJlIG11c3QgYmUgdG8gZmluZC4gDQorVG8gd2hvbSB0aGUgd2luZ2VkIHdhcnJpb3VyIHRodXMgcmV0dXJuZWQuIA0KK1VyaWVsLCBubyB3b25kZXIgaWYgdGh5IHBlcmZlY3Qgc2lnaHQsIA0KK0FtaWQgdGhlIHN1bidzIGJyaWdodCBjaXJjbGUgd2hlcmUgdGhvdSBzaXRzdCwgDQorU2VlIGZhciBhbmQgd2lkZTogIEluIGF0IHRoaXMgZ2F0ZSBub25lIHBhc3MgDQorVGhlIHZpZ2lsYW5jZSBoZXJlIHBsYWNlZCwgYnV0IHN1Y2ggYXMgY29tZSANCitXZWxsIGtub3duIGZyb20gSGVhdmVuOyBhbmQgc2luY2UgbWVyaWRpYW4gaG91ciANCitObyBjcmVhdHVyZSB0aGVuY2U6ICBJZiBTcGlyaXQgb2Ygb3RoZXIgc29ydCwgDQorU28gbWluZGVkLCBoYXZlIG8nZXItbGVhcGVkIHRoZXNlIGVhcnRobHkgYm91bmRzIA0KK09uIHB1cnBvc2UsIGhhcmQgdGhvdSBrbm93ZXN0IGl0IHRvIGV4Y2x1ZGUgDQorU3Bpcml0dWFsIHN1YnN0YW5jZSB3aXRoIGNvcnBvcmVhbCBiYXIuIA0KK0J1dCBpZiB3aXRoaW4gdGhlIGNpcmN1aXQgb2YgdGhlc2Ugd2Fsa3MsIA0KK0luIHdoYXRzb2V2ZXIgc2hhcGUgaGUgbHVyaywgb2Ygd2hvbSANCitUaG91IHRlbGxlc3QsIGJ5IG1vcnJvdyBkYXduaW5nIEkgc2hhbGwga25vdy4gDQorU28gcHJvbWlzZWQgaGU7IGFuZCBVcmllbCB0byBoaXMgY2hhcmdlIA0KK1JldHVybmVkIG9uIHRoYXQgYnJpZ2h0IGJlYW0sIHdob3NlIHBvaW50IG5vdyByYWlzZWQgDQorQm9yZSBoaW0gc2xvcGUgZG93bndhcmQgdG8gdGhlIHN1biBub3cgZmFsbGVuIA0KK0JlbmVhdGggdGhlIEF6b3Jlczsgd2hldGhlciB0aGUgcHJpbWUgb3JiLCANCitJbmNyZWRpYmxlIGhvdyBzd2lmdCwgaGFkIHRoaXRoZXIgcm9sbGVkIA0KK0RpdXJuYWwsIG9yIHRoaXMgbGVzcyB2b2x1YmlsIGVhcnRoLCANCitCeSBzaG9ydGVyIGZsaWdodCB0byB0aGUgZWFzdCwgaGFkIGxlZnQgaGltIHRoZXJlIA0KK0FycmF5aW5nIHdpdGggcmVmbGVjdGVkIHB1cnBsZSBhbmQgZ29sZCANCitUaGUgY2xvdWRzIHRoYXQgb24gaGlzIHdlc3Rlcm4gdGhyb25lIGF0dGVuZC4gDQorTm93IGNhbWUgc3RpbGwgRXZlbmluZyBvbiwgYW5kIFR3aWxpZ2h0IGdyYXkgDQorSGFkIGluIGhlciBzb2JlciBsaXZlcnkgYWxsIHRoaW5ncyBjbGFkOyANCitTaWxlbmNlIGFjY29tcGFuaWVkOyBmb3IgYmVhc3QgYW5kIGJpcmQsIA0KK1RoZXkgdG8gdGhlaXIgZ3Jhc3N5IGNvdWNoLCB0aGVzZSB0byB0aGVpciBuZXN0cyANCitXZXJlIHNsdW5rLCBhbGwgYnV0IHRoZSB3YWtlZnVsIG5pZ2h0aW5nYWxlOyANCitTaGUgYWxsIG5pZ2h0IGxvbmcgaGVyIGFtb3JvdXMgZGVzY2FudCBzdW5nOyANCitTaWxlbmNlIHdhcyBwbGVhc2VkOiAgTm93IGdsb3dlZCB0aGUgZmlybWFtZW50IA0KK1dpdGggbGl2aW5nIHNhcHBoaXJlczogIEhlc3BlcnVzLCB0aGF0IGxlZCANCitUaGUgc3RhcnJ5IGhvc3QsIHJvZGUgYnJpZ2h0ZXN0LCB0aWxsIHRoZSBtb29uLCANCitSaXNpbmcgaW4gY2xvdWRlZCBtYWplc3R5LCBhdCBsZW5ndGggDQorQXBwYXJlbnQgcXVlZW4gdW52ZWlsZWQgaGVyIHBlZXJsZXNzIGxpZ2h0LCANCitBbmQgbydlciB0aGUgZGFyayBoZXIgc2lsdmVyIG1hbnRsZSB0aHJldy4gDQorV2hlbiBBZGFtIHRodXMgdG8gRXZlLiAgRmFpciBDb25zb3J0LCB0aGUgaG91ciANCitPZiBuaWdodCwgYW5kIGFsbCB0aGluZ3Mgbm93IHJldGlyZWQgdG8gcmVzdCwgDQorTWluZCB1cyBvZiBsaWtlIHJlcG9zZTsgc2luY2UgR29kIGhhdGggc2V0IA0KK0xhYm91ciBhbmQgcmVzdCwgYXMgZGF5IGFuZCBuaWdodCwgdG8gbWVuIA0KK1N1Y2Nlc3NpdmU7IGFuZCB0aGUgdGltZWx5IGRldyBvZiBzbGVlcCwgDQorTm93IGZhbGxpbmcgd2l0aCBzb2Z0IHNsdW1icm91cyB3ZWlnaHQsIGluY2xpbmVzIA0KK091ciBleWUtbGlkczogIE90aGVyIGNyZWF0dXJlcyBhbGwgZGF5IGxvbmcgDQorUm92ZSBpZGxlLCB1bmVtcGxveWVkLCBhbmQgbGVzcyBuZWVkIHJlc3Q7IA0KK01hbiBoYXRoIGhpcyBkYWlseSB3b3JrIG9mIGJvZHkgb3IgbWluZCANCitBcHBvaW50ZWQsIHdoaWNoIGRlY2xhcmVzIGhpcyBkaWduaXR5LCANCitBbmQgdGhlIHJlZ2FyZCBvZiBIZWF2ZW4gb24gYWxsIGhpcyB3YXlzOyANCitXaGlsZSBvdGhlciBhbmltYWxzIHVuYWN0aXZlIHJhbmdlLCANCitBbmQgb2YgdGhlaXIgZG9pbmdzIEdvZCB0YWtlcyBubyBhY2NvdW50LiANCitUby1tb3Jyb3csIGVyZSBmcmVzaCBtb3JuaW5nIHN0cmVhayB0aGUgZWFzdCANCitXaXRoIGZpcnN0IGFwcHJvYWNoIG9mIGxpZ2h0LCB3ZSBtdXN0IGJlIHJpc2VuLCANCitBbmQgYXQgb3VyIHBsZWFzYW50IGxhYm91ciwgdG8gcmVmb3JtIA0KK1lvbiBmbG93ZXJ5IGFyYm91cnMsIHlvbmRlciBhbGxleXMgZ3JlZW4sIA0KK091ciB3YWxrIGF0IG5vb24sIHdpdGggYnJhbmNoZXMgb3Zlcmdyb3duLCANCitUaGF0IG1vY2sgb3VyIHNjYW50IG1hbnVyaW5nLCBhbmQgcmVxdWlyZSANCitNb3JlIGhhbmRzIHRoYW4gb3VycyB0byBsb3AgdGhlaXIgd2FudG9uIGdyb3d0aDogDQorVGhvc2UgYmxvc3NvbXMgYWxzbywgYW5kIHRob3NlIGRyb3BwaW5nIGd1bXMsIA0KK1RoYXQgbGllIGJlc3Ryb3duLCB1bnNpZ2h0bHkgYW5kIHVuc21vb3RoLCANCitBc2sgcmlkZGFuY2UsIGlmIHdlIG1lYW4gdG8gdHJlYWQgd2l0aCBlYXNlOyANCitNZWFuIHdoaWxlLCBhcyBOYXR1cmUgd2lsbHMsIG5pZ2h0IGJpZHMgdXMgcmVzdC4gDQorVG8gd2hvbSB0aHVzIEV2ZSwgd2l0aCBwZXJmZWN0IGJlYXV0eSBhZG9ybmVkIA0KK015IEF1dGhvciBhbmQgRGlzcG9zZXIsIHdoYXQgdGhvdSBiaWRzdCANCitVbmFyZ3VlZCBJIG9iZXk6ICBTbyBHb2Qgb3JkYWluczsgDQorR29kIGlzIHRoeSBsYXcsIHRob3UgbWluZTogIFRvIGtub3cgbm8gbW9yZSANCitJcyB3b21hbidzIGhhcHBpZXN0IGtub3dsZWRnZSwgYW5kIGhlciBwcmFpc2UuIA0KK1dpdGggdGhlZSBjb252ZXJzaW5nIEkgZm9yZ2V0IGFsbCB0aW1lOyANCitBbGwgc2Vhc29ucywgYW5kIHRoZWlyIGNoYW5nZSwgYWxsIHBsZWFzZSBhbGlrZS4gDQorU3dlZXQgaXMgdGhlIGJyZWF0aCBvZiBNb3JuLCBoZXIgcmlzaW5nIHN3ZWV0LCANCitXaXRoIGNoYXJtIG9mIGVhcmxpZXN0IGJpcmRzOiAgcGxlYXNhbnQgdGhlIHN1biwgDQorV2hlbiBmaXJzdCBvbiB0aGlzIGRlbGlnaHRmdWwgbGFuZCBoZSBzcHJlYWRzIA0KK0hpcyBvcmllbnQgYmVhbXMsIG9uIGhlcmIsIHRyZWUsIGZydWl0LCBhbmQgZmxvd2VyLCANCitHbGlzdGVyaW5nIHdpdGggZGV3OyBmcmFncmFudCB0aGUgZmVydGlsZSBlYXJ0aCANCitBZnRlciBzb2Z0IHNob3dlcnM7IGFuZCBzd2VldCB0aGUgY29taW5nIG9uIA0KK09mIGdyYXRlZnVsIEV2ZW5pbmcgbWlsZDsgdGhlbiBzaWxlbnQgTmlnaHQsIA0KK1dpdGggdGhpcyBoZXIgc29sZW1uIGJpcmQsIGFuZCB0aGlzIGZhaXIgbW9vbiwgDQorQW5kIHRoZXNlIHRoZSBnZW1zIG9mIEhlYXZlbiwgaGVyIHN0YXJyeSB0cmFpbjogDQorQnV0IG5laXRoZXIgYnJlYXRoIG9mIE1vcm4sIHdoZW4gc2hlIGFzY2VuZHMgDQorV2l0aCBjaGFybSBvZiBlYXJsaWVzdCBiaXJkczsgbm9yIHJpc2luZyBzdW4gDQorT24gdGhpcyBkZWxpZ2h0ZnVsIGxhbmQ7IG5vciBoZXJiLCBmcnVpdCwgZmxvd2VyLCANCitHbGlzdGVyaW5nIHdpdGggZGV3OyBub3IgZnJhZ3JhbmNlIGFmdGVyIHNob3dlcnM7IA0KK05vciBncmF0ZWZ1bCBFdmVuaW5nIG1pbGQ7IG5vciBzaWxlbnQgTmlnaHQsIA0KK1dpdGggdGhpcyBoZXIgc29sZW1uIGJpcmQsIG5vciB3YWxrIGJ5IG1vb24sIA0KK09yIGdsaXR0ZXJpbmcgc3Rhci1saWdodCwgd2l0aG91dCB0aGVlIGlzIHN3ZWV0LiANCitCdXQgd2hlcmVmb3JlIGFsbCBuaWdodCBsb25nIHNoaW5lIHRoZXNlPyBmb3Igd2hvbSANCitUaGlzIGdsb3Jpb3VzIHNpZ2h0LCB3aGVuIHNsZWVwIGhhdGggc2h1dCBhbGwgZXllcz8gDQorVG8gd2hvbSBvdXIgZ2VuZXJhbCBhbmNlc3RvciByZXBsaWVkLiANCitEYXVnaHRlciBvZiBHb2QgYW5kIE1hbiwgYWNjb21wbGlzaGVkIEV2ZSwgDQorVGhlc2UgaGF2ZSB0aGVpciBjb3Vyc2UgdG8gZmluaXNoIHJvdW5kIHRoZSBlYXJ0aCwgDQorQnkgbW9ycm93IGV2ZW5pbmcsIGFuZCBmcm9tIGxhbmQgdG8gbGFuZCANCitJbiBvcmRlciwgdGhvdWdoIHRvIG5hdGlvbnMgeWV0IHVuYm9ybiwgDQorTWluaXN0cmluZyBsaWdodCBwcmVwYXJlZCwgdGhleSBzZXQgYW5kIHJpc2U7IA0KK0xlc3QgdG90YWwgRGFya25lc3Mgc2hvdWxkIGJ5IG5pZ2h0IHJlZ2FpbiANCitIZXIgb2xkIHBvc3Nlc3Npb24sIGFuZCBleHRpbmd1aXNoIGxpZmUgDQorSW4gTmF0dXJlIGFuZCBhbGwgdGhpbmdzOyB3aGljaCB0aGVzZSBzb2Z0IGZpcmVzIA0KK05vdCBvbmx5IGVubGlnaHRlbiwgYnV0IHdpdGgga2luZGx5IGhlYXQgDQorT2YgdmFyaW91cyBpbmZsdWVuY2UgZm9tZW50IGFuZCB3YXJtLCANCitUZW1wZXIgb3Igbm91cmlzaCwgb3IgaW4gcGFydCBzaGVkIGRvd24gDQorVGhlaXIgc3RlbGxhciB2aXJ0dWUgb24gYWxsIGtpbmRzIHRoYXQgZ3JvdyANCitPbiBlYXJ0aCwgbWFkZSBoZXJlYnkgYXB0ZXIgdG8gcmVjZWl2ZSANCitQZXJmZWN0aW9uIGZyb20gdGhlIHN1bidzIG1vcmUgcG90ZW50IHJheS4gDQorVGhlc2UgdGhlbiwgdGhvdWdoIHVuYmVoZWxkIGluIGRlZXAgb2YgbmlnaHQsIA0KK1NoaW5lIG5vdCBpbiB2YWluOyBub3IgdGhpbmssIHRob3VnaCBtZW4gd2VyZSBub25lLCANCitUaGF0IEhlYXZlbiB3b3VsZCB3YW50IHNwZWN0YXRvcnMsIEdvZCB3YW50IHByYWlzZTogDQorTWlsbGlvbnMgb2Ygc3Bpcml0dWFsIGNyZWF0dXJlcyB3YWxrIHRoZSBlYXJ0aCANCitVbnNlZW4sIGJvdGggd2hlbiB3ZSB3YWtlLCBhbmQgd2hlbiB3ZSBzbGVlcDogDQorQWxsIHRoZXNlIHdpdGggY2Vhc2VsZXNzIHByYWlzZSBoaXMgd29ya3MgYmVob2xkIA0KK0JvdGggZGF5IGFuZCBuaWdodDogIEhvdyBvZnRlbiBmcm9tIHRoZSBzdGVlcCANCitPZiBlY2hvaW5nIGhpbGwgb3IgdGhpY2tldCBoYXZlIHdlIGhlYXJkIA0KK0NlbGVzdGlhbCB2b2ljZXMgdG8gdGhlIG1pZG5pZ2h0IGFpciwgDQorU29sZSwgb3IgcmVzcG9uc2l2ZSBlYWNoIHRvIG90aGVycyBub3RlLCANCitTaW5naW5nIHRoZWlyIGdyZWF0IENyZWF0b3I/IG9mdCBpbiBiYW5kcyANCitXaGlsZSB0aGV5IGtlZXAgd2F0Y2gsIG9yIG5pZ2h0bHkgcm91bmRpbmcgd2FsaywgDQorV2l0aCBoZWF2ZW5seSB0b3VjaCBvZiBpbnN0cnVtZW50YWwgc291bmRzIA0KK0luIGZ1bGwgaGFybW9uaWNrIG51bWJlciBqb2luZWQsIHRoZWlyIHNvbmdzIA0KK0RpdmlkZSB0aGUgbmlnaHQsIGFuZCBsaWZ0IG91ciB0aG91Z2h0cyB0byBIZWF2ZW4uIA0KK1RodXMgdGFsa2luZywgaGFuZCBpbiBoYW5kIGFsb25lIHRoZXkgcGFzc2VkIA0KK09uIHRvIHRoZWlyIGJsaXNzZnVsIGJvd2VyOiBpdCB3YXMgYSBwbGFjZSANCitDaG9zZW4gYnkgdGhlIHNvdnJhbiBQbGFudGVyLCB3aGVuIGhlIGZyYW1lZCANCitBbGwgdGhpbmdzIHRvIE1hbidzIGRlbGlnaHRmdWwgdXNlOyB0aGUgcm9vZiANCitPZiB0aGlja2VzdCBjb3ZlcnQgd2FzIGlud292ZW4gc2hhZGUgDQorTGF1cmVsIGFuZCBteXJ0bGUsIGFuZCB3aGF0IGhpZ2hlciBncmV3IA0KK09mIGZpcm0gYW5kIGZyYWdyYW50IGxlYWY7IG9uIGVpdGhlciBzaWRlIA0KK0FjYW50aHVzLCBhbmQgZWFjaCBvZG9yb3VzIGJ1c2h5IHNocnViLCANCitGZW5jZWQgdXAgdGhlIHZlcmRhbnQgd2FsbDsgZWFjaCBiZWF1dGVvdXMgZmxvd2VyLCANCitJcmlzIGFsbCBodWVzLCByb3NlcywgYW5kIGplc3NhbWluLCANCitSZWFyZWQgaGlnaCB0aGVpciBmbG91cmlzaGVkIGhlYWRzIGJldHdlZW4sIGFuZCB3cm91Z2h0IA0KK01vc2FpY2s7IHVuZGVyZm9vdCB0aGUgdmlvbGV0LCANCitDcm9jdXMsIGFuZCBoeWFjaW50aCwgd2l0aCByaWNoIGlubGF5IA0KK0Jyb2lkZXJlZCB0aGUgZ3JvdW5kLCBtb3JlIGNvbG91cmVkIHRoYW4gd2l0aCBzdG9uZSANCitPZiBjb3N0bGllc3QgZW1ibGVtOiAgT3RoZXIgY3JlYXR1cmUgaGVyZSwgDQorQmlyZCwgYmVhc3QsIGluc2VjdCwgb3Igd29ybSwgZHVyc3QgZW50ZXIgbm9uZSwgDQorU3VjaCB3YXMgdGhlaXIgYXdlIG9mIE1hbi4gIEluIHNoYWRpZXIgYm93ZXIgDQorTW9yZSBzYWNyZWQgYW5kIHNlcXVlc3RlcmVkLCB0aG91Z2ggYnV0IGZlaWduZWQsIA0KK1BhbiBvciBTeWx2YW51cyBuZXZlciBzbGVwdCwgbm9yIE55bXBoIA0KK05vciBGYXVudXMgaGF1bnRlZC4gIEhlcmUsIGluIGNsb3NlIHJlY2VzcywgDQorV2l0aCBmbG93ZXJzLCBnYXJsYW5kcywgYW5kIHN3ZWV0LXNtZWxsaW5nIGhlcmJzLCANCitFc3BvdXNlZCBFdmUgZGVja2VkIGZpcnN0IGhlciBudXB0aWFsIGJlZDsgDQorQW5kIGhlYXZlbmx5IHF1aXJlcyB0aGUgaHltZW5hZWFuIHN1bmcsIA0KK1doYXQgZGF5IHRoZSBnZW5pYWwgQW5nZWwgdG8gb3VyIHNpcmUgDQorQnJvdWdodCBoZXIgaW4gbmFrZWQgYmVhdXR5IG1vcmUgYWRvcm5lZCwgDQorTW9yZSBsb3ZlbHksIHRoYW4gUGFuZG9yYSwgd2hvbSB0aGUgR29kcyANCitFbmRvd2VkIHdpdGggYWxsIHRoZWlyIGdpZnRzLCBhbmQgTyEgdG9vIGxpa2UgDQorSW4gc2FkIGV2ZW50LCB3aGVuIHRvIHRoZSB1bndpc2VyIHNvbiANCitPZiBKYXBoZXQgYnJvdWdodCBieSBIZXJtZXMsIHNoZSBlbnNuYXJlZCANCitNYW5raW5kIHdpdGggaGVyIGZhaXIgbG9va3MsIHRvIGJlIGF2ZW5nZWQgDQorT24gaGltIHdobyBoYWQgc3RvbGUgSm92ZSdzIGF1dGhlbnRpY2sgZmlyZS4gDQorVGh1cywgYXQgdGhlaXIgc2hhZHkgbG9kZ2UgYXJyaXZlZCwgYm90aCBzdG9vZCwgDQorQm90aCB0dXJuZWQsIGFuZCB1bmRlciBvcGVuIHNreSBhZG9yZWQgDQorVGhlIEdvZCB0aGF0IG1hZGUgYm90aCBza3ksIGFpciwgZWFydGgsIGFuZCBoZWF2ZW4sIA0KK1doaWNoIHRoZXkgYmVoZWxkLCB0aGUgbW9vbidzIHJlc3BsZW5kZW50IGdsb2JlLCANCitBbmQgc3RhcnJ5IHBvbGU6ICBUaG91IGFsc28gbWFkZXN0IHRoZSBuaWdodCwgDQorTWFrZXIgT21uaXBvdGVudCwgYW5kIHRob3UgdGhlIGRheSwgDQorV2hpY2ggd2UsIGluIG91ciBhcHBvaW50ZWQgd29yayBlbXBsb3llZCwgDQorSGF2ZSBmaW5pc2hlZCwgaGFwcHkgaW4gb3VyIG11dHVhbCBoZWxwIA0KK0FuZCBtdXR1YWwgbG92ZSwgdGhlIGNyb3duIG9mIGFsbCBvdXIgYmxpc3MgDQorT3JkYWluZWQgYnkgdGhlZTsgYW5kIHRoaXMgZGVsaWNpb3VzIHBsYWNlIA0KK0ZvciB1cyB0b28gbGFyZ2UsIHdoZXJlIHRoeSBhYnVuZGFuY2Ugd2FudHMgDQorUGFydGFrZXJzLCBhbmQgdW5jcm9wdCBmYWxscyB0byB0aGUgZ3JvdW5kLiANCitCdXQgdGhvdSBoYXN0IHByb21pc2VkIGZyb20gdXMgdHdvIGEgcmFjZSANCitUbyBmaWxsIHRoZSBlYXJ0aCwgd2hvIHNoYWxsIHdpdGggdXMgZXh0b2wgDQorVGh5IGdvb2RuZXNzIGluZmluaXRlLCBib3RoIHdoZW4gd2Ugd2FrZSwgDQorQW5kIHdoZW4gd2Ugc2VlaywgYXMgbm93LCB0aHkgZ2lmdCBvZiBzbGVlcC4gDQorVGhpcyBzYWlkIHVuYW5pbW91cywgYW5kIG90aGVyIHJpdGVzIA0KK09ic2VydmluZyBub25lLCBidXQgYWRvcmF0aW9uIHB1cmUgDQorV2hpY2ggR29kIGxpa2VzIGJlc3QsIGludG8gdGhlaXIgaW5tb3N0IGJvd2VyIA0KK0hhbmRlZCB0aGV5IHdlbnQ7IGFuZCwgZWFzZWQgdGhlIHB1dHRpbmcgb2ZmIA0KK1RoZXNlIHRyb3VibGVzb21lIGRpc2d1aXNlcyB3aGljaCB3ZSB3ZWFyLCANCitTdHJhaWdodCBzaWRlIGJ5IHNpZGUgd2VyZSBsYWlkOyBub3IgdHVybmVkLCBJIHdlZW4sIA0KK0FkYW0gZnJvbSBoaXMgZmFpciBzcG91c2UsIG5vciBFdmUgdGhlIHJpdGVzIA0KK015c3RlcmlvdXMgb2YgY29ubnViaWFsIGxvdmUgcmVmdXNlZDogDQorV2hhdGV2ZXIgaHlwb2NyaXRlcyBhdXN0ZXJlbHkgdGFsayANCitPZiBwdXJpdHksIGFuZCBwbGFjZSwgYW5kIGlubm9jZW5jZSwgDQorRGVmYW1pbmcgYXMgaW1wdXJlIHdoYXQgR29kIGRlY2xhcmVzIA0KK1B1cmUsIGFuZCBjb21tYW5kcyB0byBzb21lLCBsZWF2ZXMgZnJlZSB0byBhbGwuIA0KK091ciBNYWtlciBiaWRzIGVuY3JlYXNlOyB3aG8gYmlkcyBhYnN0YWluIA0KK0J1dCBvdXIgRGVzdHJveWVyLCBmb2UgdG8gR29kIGFuZCBNYW4/IA0KK0hhaWwsIHdlZGRlZCBMb3ZlLCBteXN0ZXJpb3VzIGxhdywgdHJ1ZSBzb3VyY2UgDQorT2YgaHVtYW4gb2Zmc3ByaW5nLCBzb2xlIHByb3ByaWV0eSANCitJbiBQYXJhZGlzZSBvZiBhbGwgdGhpbmdzIGNvbW1vbiBlbHNlISANCitCeSB0aGVlIGFkdWx0ZXJvdXMgTHVzdCB3YXMgZHJpdmVuIGZyb20gbWVuIA0KK0Ftb25nIHRoZSBiZXN0aWFsIGhlcmRzIHRvIHJhbmdlOyBieSB0aGVlIA0KK0ZvdW5kZWQgaW4gcmVhc29uLCBsb3lhbCwganVzdCwgYW5kIHB1cmUsIA0KK1JlbGF0aW9ucyBkZWFyLCBhbmQgYWxsIHRoZSBjaGFyaXRpZXMgDQorT2YgZmF0aGVyLCBzb24sIGFuZCBicm90aGVyLCBmaXJzdCB3ZXJlIGtub3duLiANCitGYXIgYmUgaXQsIHRoYXQgSSBzaG91bGQgd3JpdGUgdGhlZSBzaW4gb3IgYmxhbWUsIA0KK09yIHRoaW5rIHRoZWUgdW5iZWZpdHRpbmcgaG9saWVzdCBwbGFjZSwgDQorUGVycGV0dWFsIGZvdW50YWluIG9mIGRvbWVzdGljayBzd2VldHMsIA0KK1dob3NlIGJlZCBpcyB1bmRlZmlsZWQgYW5kIGNoYXN0ZSBwcm9ub3VuY2VkLCANCitQcmVzZW50LCBvciBwYXN0LCBhcyBzYWludHMgYW5kIHBhdHJpYXJjaHMgdXNlZC4gDQorSGVyZSBMb3ZlIGhpcyBnb2xkZW4gc2hhZnRzIGVtcGxveXMsIGhlcmUgbGlnaHRzIA0KK0hpcyBjb25zdGFudCBsYW1wLCBhbmQgd2F2ZXMgaGlzIHB1cnBsZSB3aW5ncywgDQorUmVpZ25zIGhlcmUgYW5kIHJldmVsczsgbm90IGluIHRoZSBib3VnaHQgc21pbGUgDQorT2YgaGFybG90cywgbG92ZWxlc3MsIGpveWxlc3MsIHVuZW5kZWFyZWQsIA0KK0Nhc3VhbCBmcnVpdGlvbjsgbm9yIGluIGNvdXJ0LWFtb3VycywgDQorTWl4ZWQgZGFuY2UsIG9yIHdhbnRvbiBtYXNrLCBvciBtaWRuaWdodCBiYWxsLCANCitPciBzZXJlbmF0ZSwgd2hpY2ggdGhlIHN0YXJ2ZWQgbG92ZXIgc2luZ3MgDQorVG8gaGlzIHByb3VkIGZhaXIsIGJlc3QgcXVpdHRlZCB3aXRoIGRpc2RhaW4uIA0KK1RoZXNlLCBsdWxsZWQgYnkgbmlnaHRpbmdhbGVzLCBlbWJyYWNpbmcgc2xlcHQsIA0KK0FuZCBvbiB0aGVpciBuYWtlZCBsaW1icyB0aGUgZmxvd2VyeSByb29mIA0KK1Nob3dlcmVkIHJvc2VzLCB3aGljaCB0aGUgbW9ybiByZXBhaXJlZC4gIFNsZWVwIG9uLCANCitCbGVzdCBwYWlyOyBhbmQgTyF5ZXQgaGFwcGllc3QsIGlmIHllIHNlZWsgDQorTm8gaGFwcGllciBzdGF0ZSwgYW5kIGtub3cgdG8ga25vdyBubyBtb3JlLiANCitOb3cgaGFkIG5pZ2h0IG1lYXN1cmVkIHdpdGggaGVyIHNoYWRvd3kgY29uZSANCitIYWxmIHdheSB1cCBoaWxsIHRoaXMgdmFzdCBzdWJsdW5hciB2YXVsdCwgDQorQW5kIGZyb20gdGhlaXIgaXZvcnkgcG9ydCB0aGUgQ2hlcnViaW0sIA0KK0ZvcnRoIGlzc3VpbmcgYXQgdGhlIGFjY3VzdG9tZWQgaG91ciwgc3Rvb2QgYXJtZWQgDQorVG8gdGhlaXIgbmlnaHQgd2F0Y2hlcyBpbiB3YXJsaWtlIHBhcmFkZTsgDQorV2hlbiBHYWJyaWVsIHRvIGhpcyBuZXh0IGluIHBvd2VyIHRodXMgc3Bha2UuIA0KK1V6emllbCwgaGFsZiB0aGVzZSBkcmF3IG9mZiwgYW5kIGNvYXN0IHRoZSBzb3V0aCANCitXaXRoIHN0cmljdGVzdCB3YXRjaDsgdGhlc2Ugb3RoZXIgd2hlZWwgdGhlIG5vcnRoOyANCitPdXIgY2lyY3VpdCBtZWV0cyBmdWxsIHdlc3QuICBBcyBmbGFtZSB0aGV5IHBhcnQsIA0KK0hhbGYgd2hlZWxpbmcgdG8gdGhlIHNoaWVsZCwgaGFsZiB0byB0aGUgc3BlYXIuIA0KK0Zyb20gdGhlc2UsIHR3byBzdHJvbmcgYW5kIHN1YnRsZSBTcGlyaXRzIGhlIGNhbGxlZCANCitUaGF0IG5lYXIgaGltIHN0b29kLCBhbmQgZ2F2ZSB0aGVtIHRodXMgaW4gY2hhcmdlLiANCitJdGh1cmllbCBhbmQgWmVwaG9uLCB3aXRoIHdpbmdlZCBzcGVlZCANCitTZWFyY2ggdGhyb3VnaCB0aGlzIGdhcmRlbiwgbGVhdmUgdW5zZWFyY2hlZCBubyBub29rOyANCitCdXQgY2hpZWZseSB3aGVyZSB0aG9zZSB0d28gZmFpciBjcmVhdHVyZXMgbG9kZ2UsIA0KK05vdyBsYWlkIHBlcmhhcHMgYXNsZWVwLCBzZWN1cmUgb2YgaGFybS4gDQorVGhpcyBldmVuaW5nIGZyb20gdGhlIHN1bidzIGRlY2xpbmUgYXJyaXZlZCwgDQorV2hvIHRlbGxzIG9mIHNvbWUgaW5mZXJuYWwgU3Bpcml0IHNlZW4gDQorSGl0aGVyd2FyZCBiZW50ICh3aG8gY291bGQgaGF2ZSB0aG91Z2h0PykgZXNjYXBlZCANCitUaGUgYmFycyBvZiBIZWxsLCBvbiBlcnJhbmQgYmFkIG5vIGRvdWJ0OiANCitTdWNoLCB3aGVyZSB5ZSBmaW5kLCBzZWlzZSBmYXN0LCBhbmQgaGl0aGVyIGJyaW5nLiANCitTbyBzYXlpbmcsIG9uIGhlIGxlZCBoaXMgcmFkaWFudCBmaWxlcywgDQorRGF6emxpbmcgdGhlIG1vb247IHRoZXNlIHRvIHRoZSBib3dlciBkaXJlY3QgDQorSW4gc2VhcmNoIG9mIHdob20gdGhleSBzb3VnaHQ6ICBIaW0gdGhlcmUgdGhleSBmb3VuZCANCitTcXVhdCBsaWtlIGEgdG9hZCwgY2xvc2UgYXQgdGhlIGVhciBvZiBFdmUsIA0KK0Fzc2F5aW5nIGJ5IGhpcyBkZXZpbGlzaCBhcnQgdG8gcmVhY2ggDQorVGhlIG9yZ2FucyBvZiBoZXIgZmFuY3ksIGFuZCB3aXRoIHRoZW0gZm9yZ2UgDQorSWxsdXNpb25zLCBhcyBoZSBsaXN0LCBwaGFudGFzbXMgYW5kIGRyZWFtczsgDQorT3IgaWYsIGluc3BpcmluZyB2ZW5vbSwgaGUgbWlnaHQgdGFpbnQgDQorVGhlIGFuaW1hbCBzcGlyaXRzLCB0aGF0IGZyb20gcHVyZSBibG9vZCBhcmlzZSANCitMaWtlIGdlbnRsZSBicmVhdGhzIGZyb20gcml2ZXJzIHB1cmUsIHRoZW5jZSByYWlzZSANCitBdCBsZWFzdCBkaXN0ZW1wZXJlZCwgZGlzY29udGVudGVkIHRob3VnaHRzLCANCitWYWluIGhvcGVzLCB2YWluIGFpbXMsIGlub3JkaW5hdGUgZGVzaXJlcywgDQorQmxvd24gdXAgd2l0aCBoaWdoIGNvbmNlaXRzIGluZ2VuZGVyaW5nIHByaWRlLiANCitIaW0gdGh1cyBpbnRlbnQgSXRodXJpZWwgd2l0aCBoaXMgc3BlYXIgDQorVG91Y2hlZCBsaWdodGx5OyBmb3Igbm8gZmFsc2hvb2QgY2FuIGVuZHVyZSANCitUb3VjaCBvZiBjZWxlc3RpYWwgdGVtcGVyLCBidXQgcmV0dXJucyANCitPZiBmb3JjZSB0byBpdHMgb3duIGxpa2VuZXNzOiAgVXAgaGUgc3RhcnRzIA0KK0Rpc2NvdmVyZWQgYW5kIHN1cnByaXNlZC4gIEFzIHdoZW4gYSBzcGFyayANCitMaWdodHMgb24gYSBoZWFwIG9mIG5pdHJvdXMgcG93ZGVyLCBsYWlkIA0KK0ZpdCBmb3IgdGhlIHR1biBzb21lIG1hZ2F6aW5lIHRvIHN0b3JlIA0KK0FnYWluc3QgYSBydW1vdXJlZCB3YXIsIHRoZSBzbXV0dHkgZ3JhaW4sIA0KK1dpdGggc3VkZGVuIGJsYXplIGRpZmZ1c2VkLCBpbmZsYW1lcyB0aGUgYWlyOyANCitTbyBzdGFydGVkIHVwIGluIGhpcyBvd24gc2hhcGUgdGhlIEZpZW5kLiANCitCYWNrIHN0ZXB0IHRob3NlIHR3byBmYWlyIEFuZ2VscywgaGFsZiBhbWF6ZWQgDQorU28gc3VkZGVuIHRvIGJlaG9sZCB0aGUgZ3Jpc2x5IGtpbmc7IA0KK1lldCB0aHVzLCB1bm1vdmVkIHdpdGggZmVhciwgYWNjb3N0IGhpbSBzb29uLiANCitXaGljaCBvZiB0aG9zZSByZWJlbCBTcGlyaXRzIGFkanVkZ2VkIHRvIEhlbGwgDQorQ29tZXN0IHRob3UsIGVzY2FwZWQgdGh5IHByaXNvbj8gYW5kLCB0cmFuc2Zvcm1lZCwgDQorV2h5IHNhdCdzdCB0aG91IGxpa2UgYW4gZW5lbXkgaW4gd2FpdCwgDQorSGVyZSB3YXRjaGluZyBhdCB0aGUgaGVhZCBvZiB0aGVzZSB0aGF0IHNsZWVwPyANCitLbm93IHllIG5vdCB0aGVuIHNhaWQgU2F0YW4sIGZpbGxlZCB3aXRoIHNjb3JuLCANCitLbm93IHllIG5vdCBtZT8geWUga25ldyBtZSBvbmNlIG5vIG1hdGUgDQorRm9yIHlvdSwgdGhlcmUgc2l0dGluZyB3aGVyZSB5ZSBkdXJzdCBub3Qgc29hcjogDQorTm90IHRvIGtub3cgbWUgYXJndWVzIHlvdXJzZWx2ZXMgdW5rbm93biwgDQorVGhlIGxvd2VzdCBvZiB5b3VyIHRocm9uZzsgb3IsIGlmIHllIGtub3csIA0KK1doeSBhc2sgeWUsIGFuZCBzdXBlcmZsdW91cyBiZWdpbiANCitZb3VyIG1lc3NhZ2UsIGxpa2UgdG8gZW5kIGFzIG11Y2ggaW4gdmFpbj8gDQorVG8gd2hvbSB0aHVzIFplcGhvbiwgYW5zd2VyaW5nIHNjb3JuIHdpdGggc2Nvcm4uIA0KK1RoaW5rIG5vdCwgcmV2b2x0ZWQgU3Bpcml0LCB0aHkgc2hhcGUgdGhlIHNhbWUsIA0KK09yIHVuZGltaW5pc2hlZCBicmlnaHRuZXNzIHRvIGJlIGtub3duLCANCitBcyB3aGVuIHRob3Ugc3Rvb2Rlc3QgaW4gSGVhdmVuIHVwcmlnaHQgYW5kIHB1cmU7IA0KK1RoYXQgZ2xvcnkgdGhlbiwgd2hlbiB0aG91IG5vIG1vcmUgd2FzdCBnb29kLCANCitEZXBhcnRlZCBmcm9tIHRoZWU7IGFuZCB0aG91IHJlc2VtYmxlc3Qgbm93IA0KK1RoeSBzaW4gYW5kIHBsYWNlIG9mIGRvb20gb2JzY3VyZSBhbmQgZm91bC4gDQorQnV0IGNvbWUsIGZvciB0aG91LCBiZSBzdXJlLCBzaGFsdCBnaXZlIGFjY291bnQgDQorVG8gaGltIHdobyBzZW50IHVzLCB3aG9zZSBjaGFyZ2UgaXMgdG8ga2VlcCANCitUaGlzIHBsYWNlIGludmlvbGFibGUsIGFuZCB0aGVzZSBmcm9tIGhhcm0uIA0KK1NvIHNwYWtlIHRoZSBDaGVydWI7IGFuZCBoaXMgZ3JhdmUgcmVidWtlLCANCitTZXZlcmUgaW4geW91dGhmdWwgYmVhdXR5LCBhZGRlZCBncmFjZSANCitJbnZpbmNpYmxlOiAgQWJhc2hlZCB0aGUgRGV2aWwgc3Rvb2QsIA0KK0FuZCBmZWx0IGhvdyBhd2Z1bCBnb29kbmVzcyBpcywgYW5kIHNhdyANCitWaXJ0dWUgaW4gaGVyIHNoYXBlIGhvdyBsb3ZlbHk7IHNhdywgYW5kIHBpbmVkIA0KK0hpcyBsb3NzOyBidXQgY2hpZWZseSB0byBmaW5kIGhlcmUgb2JzZXJ2ZWQgDQorSGlzIGx1c3RyZSB2aXNpYmx5IGltcGFpcmVkOyB5ZXQgc2VlbWVkIA0KK1VuZGF1bnRlZC4gIElmIEkgbXVzdCBjb250ZW5kLCBzYWlkIGhlLCANCitCZXN0IHdpdGggdGhlIGJlc3QsIHRoZSBzZW5kZXIsIG5vdCB0aGUgc2VudCwgDQorT3IgYWxsIGF0IG9uY2U7IG1vcmUgZ2xvcnkgd2lsbCBiZSB3b24sIA0KK09yIGxlc3MgYmUgbG9zdC4gIFRoeSBmZWFyLCBzYWlkIFplcGhvbiBib2xkLCANCitXaWxsIHNhdmUgdXMgdHJpYWwgd2hhdCB0aGUgbGVhc3QgY2FuIGRvIA0KK1NpbmdsZSBhZ2FpbnN0IHRoZWUgd2lja2VkLCBhbmQgdGhlbmNlIHdlYWsuIA0KK1RoZSBGaWVuZCByZXBsaWVkIG5vdCwgb3ZlcmNvbWUgd2l0aCByYWdlOyANCitCdXQsIGxpa2UgYSBwcm91ZCBzdGVlZCByZWluZWQsIHdlbnQgaGF1Z2h0eSBvbiwgDQorQ2hhbXBpbmcgaGlzIGlyb24gY3VyYjogIFRvIHN0cml2ZSBvciBmbHkgDQorSGUgaGVsZCBpdCB2YWluOyBhd2UgZnJvbSBhYm92ZSBoYWQgcXVlbGxlZCANCitIaXMgaGVhcnQsIG5vdCBlbHNlIGRpc21heWVkLiAgTm93IGRyZXcgdGhleSBuaWdoIA0KK1RoZSB3ZXN0ZXJuIHBvaW50LCB3aGVyZSB0aG9zZSBoYWxmLXJvdW5kaW5nIGd1YXJkcyANCitKdXN0IG1ldCwgYW5kIGNsb3Npbmcgc3Rvb2QgaW4gc3F1YWRyb24gam9pbmVkLCANCitBIHdhaXRpbmcgbmV4dCBjb21tYW5kLiAgVG8gd2hvbSB0aGVpciBDaGllZiwgDQorR2FicmllbCwgZnJvbSB0aGUgZnJvbnQgdGh1cyBjYWxsZWQgYWxvdWQuIA0KK08gZnJpZW5kcyEgIEkgaGVhciB0aGUgdHJlYWQgb2YgbmltYmxlIGZlZXQgDQorSGFzdGluZyB0aGlzIHdheSwgYW5kIG5vdyBieSBnbGltcHNlIGRpc2Nlcm4gDQorSXRodXJpZWwgYW5kIFplcGhvbiB0aHJvdWdoIHRoZSBzaGFkZTsgDQorQW5kIHdpdGggdGhlbSBjb21lcyBhIHRoaXJkIG9mIHJlZ2FsIHBvcnQsIA0KK0J1dCBmYWRlZCBzcGxlbmRvdXIgd2FuOyB3aG8gYnkgaGlzIGdhaXQgDQorQW5kIGZpZXJjZSBkZW1lYW5vdXIgc2VlbXMgdGhlIFByaW5jZSBvZiBIZWxsLCANCitOb3QgbGlrZWx5IHRvIHBhcnQgaGVuY2Ugd2l0aG91dCBjb250ZXN0OyANCitTdGFuZCBmaXJtLCBmb3IgaW4gaGlzIGxvb2sgZGVmaWFuY2UgbG91cnMuIA0KK0hlIHNjYXJjZSBoYWQgZW5kZWQsIHdoZW4gdGhvc2UgdHdvIGFwcHJvYWNoZWQsIA0KK0FuZCBicmllZiByZWxhdGVkIHdob20gdGhleSBicm91Z2h0LCB3aGVyZSBmb3VuZCwgDQorSG93IGJ1c2llZCwgaW4gd2hhdCBmb3JtIGFuZCBwb3N0dXJlIGNvdWNoZWQuIA0KK1RvIHdob20gd2l0aCBzdGVybiByZWdhcmQgdGh1cyBHYWJyaWVsIHNwYWtlLiANCitXaHkgaGFzdCB0aG91LCBTYXRhbiwgYnJva2UgdGhlIGJvdW5kcyBwcmVzY3JpYmVkIA0KK1RvIHRoeSB0cmFuc2dyZXNzaW9ucywgYW5kIGRpc3R1cmJlZCB0aGUgY2hhcmdlIA0KK09mIG90aGVycywgd2hvIGFwcHJvdmUgbm90IHRvIHRyYW5zZ3Jlc3MgDQorQnkgdGh5IGV4YW1wbGUsIGJ1dCBoYXZlIHBvd2VyIGFuZCByaWdodCANCitUbyBxdWVzdGlvbiB0aHkgYm9sZCBlbnRyYW5jZSBvbiB0aGlzIHBsYWNlOyANCitFbXBsb3llZCwgaXQgc2VlbXMsIHRvIHZpb2xhdGUgc2xlZXAsIGFuZCB0aG9zZSANCitXaG9zZSBkd2VsbGluZyBHb2QgaGF0aCBwbGFudGVkIGhlcmUgaW4gYmxpc3MhIA0KK1RvIHdob20gdGh1cyBTYXRhbiB3aXRoIGNvbnRlbXB0dW91cyBicm93LiANCitHYWJyaWVsPyB0aG91IGhhZHN0IGluIEhlYXZlbiB0aGUgZXN0ZWVtIG9mIHdpc2UsIA0KK0FuZCBzdWNoIEkgaGVsZCB0aGVlOyBidXQgdGhpcyBxdWVzdGlvbiBhc2tlZCANCitQdXRzIG1lIGluIGRvdWJ0LiAgTGl2ZXMgdGhlcmUgd2hvIGxvdmVzIGhpcyBwYWluISANCitXaG8gd291bGQgbm90LCBmaW5kaW5nIHdheSwgYnJlYWsgbG9vc2UgZnJvbSBIZWxsLCANCitUaG91Z2ggdGhpdGhlciBkb29tZWQhICBUaG91IHdvdWxkc3QgdGh5c2VsZiwgbm8gZG91YnQgDQorQW5kIGJvbGRseSB2ZW50dXJlIHRvIHdoYXRldmVyIHBsYWNlIA0KK0ZhcnRoZXN0IGZyb20gcGFpbiwgd2hlcmUgdGhvdSBtaWdodHN0IGhvcGUgdG8gY2hhbmdlIA0KK1Rvcm1lbnQgd2l0aCBlYXNlLCBhbmQgc29vbmVzdCByZWNvbXBlbnNlIA0KK0RvbGUgd2l0aCBkZWxpZ2h0LCB3aGljaCBpbiB0aGlzIHBsYWNlIEkgc291Z2h0OyANCitUbyB0aGVlIG5vIHJlYXNvbiwgd2hvIGtub3dlc3Qgb25seSBnb29kLCANCitCdXQgZXZpbCBoYXN0IG5vdCB0cmllZDogYW5kIHdpbHQgb2JqZWN0IA0KK0hpcyB3aWxsIHdobyBib3VuZHMgdXMhICBMZXQgaGltIHN1cmVyIGJhciANCitIaXMgaXJvbiBnYXRlcywgaWYgaGUgaW50ZW5kcyBvdXIgc3RheSANCitJbiB0aGF0IGRhcmsgZHVyYW5jZTogIFRodXMgbXVjaCB3aGF0IHdhcyBhc2tlZC4gDQorVGhlIHJlc3QgaXMgdHJ1ZSwgdGhleSBmb3VuZCBtZSB3aGVyZSB0aGV5IHNheTsgDQorQnV0IHRoYXQgaW1wbGllcyBub3QgdmlvbGVuY2Ugb3IgaGFybS4gDQorVGh1cyBoZSBpbiBzY29ybi4gIFRoZSB3YXJsaWtlIEFuZ2VsIG1vdmVkLCANCitEaXNkYWluZnVsbHkgaGFsZiBzbWlsaW5nLCB0aHVzIHJlcGxpZWQuIA0KK08gbG9zcyBvZiBvbmUgaW4gSGVhdmVuIHRvIGp1ZGdlIG9mIHdpc2UgDQorU2luY2UgU2F0YW4gZmVsbCwgd2hvbSBmb2xseSBvdmVydGhyZXcsIA0KK0FuZCBub3cgcmV0dXJucyBoaW0gZnJvbSBoaXMgcHJpc29uICdzY2FwZWQsIA0KK0dyYXZlbHkgaW4gZG91YnQgd2hldGhlciB0byBob2xkIHRoZW0gd2lzZSANCitPciBub3QsIHdobyBhc2sgd2hhdCBib2xkbmVzcyBicm91Z2h0IGhpbSBoaXRoZXIgDQorVW5saWNlbnNlZCBmcm9tIGhpcyBib3VuZHMgaW4gSGVsbCBwcmVzY3JpYmVkOyANCitTbyB3aXNlIGhlIGp1ZGdlcyBpdCB0byBmbHkgZnJvbSBwYWluIA0KK0hvd2V2ZXIsIGFuZCB0byAnc2NhcGUgaGlzIHB1bmlzaG1lbnQhIA0KK1NvIGp1ZGdlIHRob3Ugc3RpbGwsIHByZXN1bXB0dW91cyEgdGlsbCB0aGUgd3JhdGgsIA0KK1doaWNoIHRob3UgaW5jdXJyZXN0IGJ5IGZseWluZywgbWVldCB0aHkgZmxpZ2h0IA0KK1NldmVuZm9sZCwgYW5kIHNjb3VyZ2UgdGhhdCB3aXNkb20gYmFjayB0byBIZWxsLCANCitXaGljaCB0YXVnaHQgdGhlZSB5ZXQgbm8gYmV0dGVyLCB0aGF0IG5vIHBhaW4gDQorQ2FuIGVxdWFsIGFuZ2VyIGluZmluaXRlIHByb3Zva2VkLiANCitCdXQgd2hlcmVmb3JlIHRob3UgYWxvbmU/IHdoZXJlZm9yZSB3aXRoIHRoZWUgDQorQ2FtZSBub3QgYWxsIGhlbGwgYnJva2UgbG9vc2U/IG9yIHRob3UgdGhhbiB0aGV5IA0KK0xlc3MgaGFyZHkgdG8gZW5kdXJlPyAgQ291cmFnZW91cyBDaGllZiEgDQorVGhlIGZpcnN0IGluIGZsaWdodCBmcm9tIHBhaW4hIGhhZHN0IHRob3UgYWxsZWdlZCANCitUbyB0aHkgZGVzZXJ0ZWQgaG9zdCB0aGlzIGNhdXNlIG9mIGZsaWdodCwgDQorVGhvdSBzdXJlbHkgaGFkc3Qgbm90IGNvbWUgc29sZSBmdWdpdGl2ZS4gDQorVG8gd2hpY2ggdGhlIEZpZW5kIHRodXMgYW5zd2VyZWQsIGZyb3duaW5nIHN0ZXJuLiANCitOb3QgdGhhdCBJIGxlc3MgZW5kdXJlLCBvciBzaHJpbmsgZnJvbSBwYWluLCANCitJbnN1bHRpbmcgQW5nZWwhIHdlbGwgdGhvdSBrbm93ZXN0IEkgc3Rvb2QgDQorVGh5IGZpZXJjZXN0LCB3aGVuIGluIGJhdHRsZSB0byB0aHkgYWlkIA0KK1RoZSBibGFzdGluZyB2b2xsaWVkIHRodW5kZXIgbWFkZSBhbGwgc3BlZWQsIA0KK0FuZCBzZWNvbmRlZCB0aHkgZWxzZSBub3QgZHJlYWRlZCBzcGVhci4gDQorQnV0IHN0aWxsIHRoeSB3b3JkcyBhdCByYW5kb20sIGFzIGJlZm9yZSwgDQorQXJndWUgdGh5IGluZXhwZXJpZW5jZSB3aGF0IGJlaG92ZXMgDQorRnJvbSBoYXJkIGFzc2F5cyBhbmQgaWxsIHN1Y2Nlc3NlcyBwYXN0IA0KK0EgZmFpdGhmdWwgbGVhZGVyLCBub3QgdG8gaGF6YXJkIGFsbCANCitUaHJvdWdoIHdheXMgb2YgZGFuZ2VyIGJ5IGhpbXNlbGYgdW50cmllZDogDQorSSwgdGhlcmVmb3JlLCBJIGFsb25lIGZpcnN0IHVuZGVydG9vayANCitUbyB3aW5nIHRoZSBkZXNvbGF0ZSBhYnlzcywgYW5kIHNweSANCitUaGlzIG5ldyBjcmVhdGVkIHdvcmxkLCB3aGVyZW9mIGluIEhlbGwgDQorRmFtZSBpcyBub3Qgc2lsZW50LCBoZXJlIGluIGhvcGUgdG8gZmluZCANCitCZXR0ZXIgYWJvZGUsIGFuZCBteSBhZmZsaWN0ZWQgUG93ZXJzIA0KK1RvIHNldHRsZSBoZXJlIG9uIGVhcnRoLCBvciBpbiBtaWQgYWlyOyANCitUaG91Z2ggZm9yIHBvc3Nlc3Npb24gcHV0IHRvIHRyeSBvbmNlIG1vcmUgDQorV2hhdCB0aG91IGFuZCB0aHkgZ2F5IGxlZ2lvbnMgZGFyZSBhZ2FpbnN0OyANCitXaG9zZSBlYXNpZXIgYnVzaW5lc3Mgd2VyZSB0byBzZXJ2ZSB0aGVpciBMb3JkIA0KK0hpZ2ggdXAgaW4gSGVhdmVuLCB3aXRoIHNvbmdzIHRvIGh5bW4gaGlzIHRocm9uZSwgDQorQW5kIHByYWN0aXNlZCBkaXN0YW5jZXMgdG8gY3JpbmdlLCBub3QgZmlnaHQsIA0KK1RvIHdob20gdGhlIHdhcnJpb3VyIEFuZ2VsIHNvb24gcmVwbGllZC4gDQorVG8gc2F5IGFuZCBzdHJhaWdodCB1bnNheSwgcHJldGVuZGluZyBmaXJzdCANCitXaXNlIHRvIGZseSBwYWluLCBwcm9mZXNzaW5nIG5leHQgdGhlIHNweSwgDQorQXJndWVzIG5vIGxlYWRlciBidXQgYSBsaWVhciB0cmFjZWQsIA0KK1NhdGFuLCBhbmQgY291bGRzdCB0aG91IGZhaXRoZnVsIGFkZD8gIE8gbmFtZSwgDQorTyBzYWNyZWQgbmFtZSBvZiBmYWl0aGZ1bG5lc3MgcHJvZmFuZWQhIA0KK0ZhaXRoZnVsIHRvIHdob20/IHRvIHRoeSByZWJlbGxpb3VzIGNyZXc/IA0KK0FybXkgb2YgRmllbmRzLCBmaXQgYm9keSB0byBmaXQgaGVhZC4gDQorV2FzIHRoaXMgeW91ciBkaXNjaXBsaW5lIGFuZCBmYWl0aCBlbmdhZ2VkLCANCitZb3VyIG1pbGl0YXJ5IG9iZWRpZW5jZSwgdG8gZGlzc29sdmUgDQorQWxsZWdpYW5jZSB0byB0aGUgYWNrbm93bGVkZ2VkIFBvd2VyIHN1cHJlbWU/IA0KK0FuZCB0aG91LCBzbHkgaHlwb2NyaXRlLCB3aG8gbm93IHdvdWxkc3Qgc2VlbSANCitQYXRyb24gb2YgbGliZXJ0eSwgd2hvIG1vcmUgdGhhbiB0aG91IA0KK09uY2UgZmF3bmVkLCBhbmQgY3JpbmdlZCwgYW5kIHNlcnZpbHkgYWRvcmVkIA0KK0hlYXZlbidzIGF3ZnVsIE1vbmFyY2g/IHdoZXJlZm9yZSwgYnV0IGluIGhvcGUgDQorVG8gZGlzcG9zc2VzcyBoaW0sIGFuZCB0aHlzZWxmIHRvIHJlaWduPyANCitCdXQgbWFyayB3aGF0IEkgYXJyZWVkIHRoZWUgbm93LCBBdmFudDsgDQorRmx5IG5laXRoZXIgd2hlbmNlIHRob3UgZmxlZHN0ISAgSWYgZnJvbSB0aGlzIGhvdXIgDQorV2l0aGluIHRoZXNlIGhhbGxvd2VkIGxpbWl0cyB0aG91IGFwcGVhciwgDQorQmFjayB0byB0aGUgaW5mZXJuYWwgcGl0IEkgZHJhZyB0aGVlIGNoYWluZWQsIA0KK0FuZCBzZWFsIHRoZWUgc28sIGFzIGhlbmNlZm9ydGggbm90IHRvIHNjb3JuIA0KK1RoZSBmYWNpbGUgZ2F0ZXMgb2YgSGVsbCB0b28gc2xpZ2h0bHkgYmFycmVkLiANCitTbyB0aHJlYXRlbmVkIGhlOyBidXQgU2F0YW4gdG8gbm8gdGhyZWF0cyANCitHYXZlIGhlZWQsIGJ1dCB3YXhpbmcgbW9yZSBpbiByYWdlIHJlcGxpZWQuIA0KK1RoZW4gd2hlbiBJIGFtIHRoeSBjYXB0aXZlIHRhbGsgb2YgY2hhaW5zLCANCitQcm91ZCBsaW1pdGFyeSBDaGVydWIhIGJ1dCBlcmUgdGhlbiANCitGYXIgaGVhdmllciBsb2FkIHRoeXNlbGYgZXhwZWN0IHRvIGZlZWwgDQorRnJvbSBteSBwcmV2YWlsaW5nIGFybSwgdGhvdWdoIEhlYXZlbidzIEtpbmcgDQorUmlkZSBvbiB0aHkgd2luZ3MsIGFuZCB0aG91IHdpdGggdGh5IGNvbXBlZXJzLCANCitVcydkIHRvIHRoZSB5b2tlLCBkcmF3ZXN0IGhpcyB0cml1bXBoYW50IHdoZWVscyANCitJbiBwcm9ncmVzcyB0aHJvdWdoIHRoZSByb2FkIG9mIEhlYXZlbiBzdGFyLXBhdmVkLiANCitXaGlsZSB0aHVzIGhlIHNwYWtlLCB0aGUgYW5nZWxpY2sgc3F1YWRyb24gYnJpZ2h0IA0KK1R1cm5lZCBmaWVyeSByZWQsIHNoYXJwZW5pbmcgaW4gbW9vbmVkIGhvcm5zIA0KK1RoZWlyIHBoYWxhbngsIGFuZCBiZWdhbiB0byBoZW0gaGltIHJvdW5kIA0KK1dpdGggcG9ydGVkIHNwZWFycywgYXMgdGhpY2sgYXMgd2hlbiBhIGZpZWxkIA0KK09mIENlcmVzIHJpcGUgZm9yIGhhcnZlc3Qgd2F2aW5nIGJlbmRzIA0KK0hlciBiZWFyZGVkIGdyb3ZlIG9mIGVhcnMsIHdoaWNoIHdheSB0aGUgd2luZCANCitTd2F5cyB0aGVtOyB0aGUgY2FyZWZ1bCBwbG93bWFuIGRvdWJ0aW5nIHN0YW5kcywgDQorTGVmdCBvbiB0aGUgdGhyZXNoaW5nIGZsb29yIGhpcyBob3BlbGVzcyBzaGVhdmVzIA0KK1Byb3ZlIGNoYWZmLiAgT24gdGhlIG90aGVyIHNpZGUsIFNhdGFuLCBhbGFybWVkLCANCitDb2xsZWN0aW5nIGFsbCBoaXMgbWlnaHQsIGRpbGF0ZWQgc3Rvb2QsIA0KK0xpa2UgVGVuZXJpZmYgb3IgQXRsYXMsIHVucmVtb3ZlZDogDQorSGlzIHN0YXR1cmUgcmVhY2hlZCB0aGUgc2t5LCBhbmQgb24gaGlzIGNyZXN0IA0KK1NhdCBIb3Jyb3VyIHBsdW1lZDsgbm9yIHdhbnRlZCBpbiBoaXMgZ3Jhc3AgDQorV2hhdCBzZWVtZWQgYm90aCBzcGVhciBhbmQgc2hpZWxkOiAgTm93IGRyZWFkZnVsIGRlZWRzIA0KK01pZ2h0IGhhdmUgZW5zdWVkLCBub3Igb25seSBQYXJhZGlzZSANCitJbiB0aGlzIGNvbW1vdGlvbiwgYnV0IHRoZSBzdGFycnkgY29wZSANCitPZiBIZWF2ZW4gcGVyaGFwcywgb3IgYWxsIHRoZSBlbGVtZW50cyANCitBdCBsZWFzdCBoYWQgZ29uZSB0byB3cmFjaywgZGlzdHVyYmVkIGFuZCB0b3JuIA0KK1dpdGggdmlvbGVuY2Ugb2YgdGhpcyBjb25mbGljdCwgaGFkIG5vdCBzb29uIA0KK1RoZSBFdGVybmFsLCB0byBwcmV2ZW50IHN1Y2ggaG9ycmlkIGZyYXksIA0KK0h1bmcgZm9ydGggaW4gSGVhdmVuIGhpcyBnb2xkZW4gc2NhbGVzLCB5ZXQgc2VlbiANCitCZXR3aXh0IEFzdHJlYSBhbmQgdGhlIFNjb3JwaW9uIHNpZ24sIA0KK1doZXJlaW4gYWxsIHRoaW5ncyBjcmVhdGVkIGZpcnN0IGhlIHdlaWdoZWQsIA0KK1RoZSBwZW5kdWxvdXMgcm91bmQgZWFydGggd2l0aCBiYWxhbmNlZCBhaXIgDQorSW4gY291bnRlcnBvaXNlLCBub3cgcG9uZGVycyBhbGwgZXZlbnRzLCANCitCYXR0bGVzIGFuZCByZWFsbXM6ICBJbiB0aGVzZSBoZSBwdXQgdHdvIHdlaWdodHMsIA0KK1RoZSBzZXF1ZWwgZWFjaCBvZiBwYXJ0aW5nIGFuZCBvZiBmaWdodDogDQorVGhlIGxhdHRlciBxdWljayB1cCBmbGV3LCBhbmQga2lja2VkIHRoZSBiZWFtLCANCitXaGljaCBHYWJyaWVsIHNweWluZywgdGh1cyBiZXNwYWtlIHRoZSBGaWVuZC4gDQorU2F0YW4sIEkga25vdyB0aHkgc3RyZW5ndGgsIGFuZCB0aG91IGtub3dlc3QgbWluZTsgDQorTmVpdGhlciBvdXIgb3duLCBidXQgZ2l2ZW46ICBXaGF0IGZvbGx5IHRoZW4gDQorVG8gYm9hc3Qgd2hhdCBhcm1zIGNhbiBkbz8gc2luY2UgdGhpbmUgbm8gbW9yZSANCitUaGFuIEhlYXZlbiBwZXJtaXRzLCBub3IgbWluZSwgdGhvdWdoIGRvdWJsZWQgbm93IA0KK1RvIHRyYW1wbGUgdGhlZSBhcyBtaXJlOiAgRm9yIHByb29mIGxvb2sgdXAsIA0KK0FuZCByZWFkIHRoeSBsb3QgaW4geW9uIGNlbGVzdGlhbCBzaWduOyANCitXaGVyZSB0aG91IGFydCB3ZWlnaGVkLCBhbmQgc2hvd24gaG93IGxpZ2h0LCBob3cgd2VhaywgDQorSWYgdGhvdSByZXNpc3QuICBUaGUgRmllbmQgbG9va2VkIHVwLCBhbmQga25ldyANCitIaXMgbW91bnRlZCBzY2FsZSBhbG9mdDogIE5vciBtb3JlO2J1dCBmbGVkIA0KK011cm11cmluZywgYW5kIHdpdGggaGltIGZsZWQgdGhlIHNoYWRlcyBvZiBuaWdodC4gDQorIA0KKyANCisgDQorQm9vayBWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgDQorIA0KK05vdyBNb3JuLCBoZXIgcm9zeSBzdGVwcyBpbiB0aGUgZWFzdGVybiBjbGltZSANCitBZHZhbmNpbmcsIHNvd2VkIHRoZSBlYXJ0aCB3aXRoIG9yaWVudCBwZWFybCwgDQorV2hlbiBBZGFtIHdha2VkLCBzbyBjdXN0b21lZDsgZm9yIGhpcyBzbGVlcCANCitXYXMgYWVyeS1saWdodCwgZnJvbSBwdXJlIGRpZ2VzdGlvbiBicmVkLCANCitBbmQgdGVtcGVyYXRlIHZhcG91cnMgYmxhbmQsIHdoaWNoIHRoZSBvbmx5IHNvdW5kIA0KK09mIGxlYXZlcyBhbmQgZnVtaW5nIHJpbGxzLCBBdXJvcmEncyBmYW4sIA0KK0xpZ2h0bHkgZGlzcGVyc2VkLCBhbmQgdGhlIHNocmlsbCBtYXRpbiBzb25nIA0KK09mIGJpcmRzIG9uIGV2ZXJ5IGJvdWdoOyBzbyBtdWNoIHRoZSBtb3JlIA0KK0hpcyB3b25kZXIgd2FzIHRvIGZpbmQgdW53YWtlbmVkIEV2ZSANCitXaXRoIHRyZXNzZXMgZGlzY29tcG9zZWQsIGFuZCBnbG93aW5nIGNoZWVrLCANCitBcyB0aHJvdWdoIHVucXVpZXQgcmVzdDogIEhlLCBvbiBoaXMgc2lkZSANCitMZWFuaW5nIGhhbGYgcmFpc2VkLCB3aXRoIGxvb2tzIG9mIGNvcmRpYWwgbG92ZSANCitIdW5nIG92ZXIgaGVyIGVuYW1vdXJlZCwgYW5kIGJlaGVsZCANCitCZWF1dHksIHdoaWNoLCB3aGV0aGVyIHdha2luZyBvciBhc2xlZXAsIA0KK1Nob3QgZm9ydGggcGVjdWxpYXIgZ3JhY2VzOyB0aGVuIHdpdGggdm9pY2UgDQorTWlsZCwgYXMgd2hlbiBaZXBoeXJ1cyBvbiBGbG9yYSBicmVhdGhlcywgDQorSGVyIGhhbmQgc29mdCB0b3VjaGluZywgd2hpc3BlcmVkIHRodXMuICBBd2FrZSwgDQorTXkgZmFpcmVzdCwgbXkgZXNwb3VzZWQsIG15IGxhdGVzdCBmb3VuZCwgDQorSGVhdmVuJ3MgbGFzdCBiZXN0IGdpZnQsIG15IGV2ZXIgbmV3IGRlbGlnaHQhIA0KK0F3YWtlOiAgVGhlIG1vcm5pbmcgc2hpbmVzLCBhbmQgdGhlIGZyZXNoIGZpZWxkIA0KK0NhbGxzIHVzOyB3ZSBsb3NlIHRoZSBwcmltZSwgdG8gbWFyayBob3cgc3ByaW5nIA0KK091ciB0ZW5kZXIgcGxhbnRzLCBob3cgYmxvd3MgdGhlIGNpdHJvbiBncm92ZSwgDQorV2hhdCBkcm9wcyB0aGUgbXlycmgsIGFuZCB3aGF0IHRoZSBiYWxteSByZWVkLCANCitIb3cgbmF0dXJlIHBhaW50cyBoZXIgY29sb3VycywgaG93IHRoZSBiZWUgDQorU2l0cyBvbiB0aGUgYmxvb20gZXh0cmFjdGluZyBsaXF1aWQgc3dlZXQuIA0KK1N1Y2ggd2hpc3BlcmluZyB3YWtlZCBoZXIsIGJ1dCB3aXRoIHN0YXJ0bGVkIGV5ZSANCitPbiBBZGFtLCB3aG9tIGVtYnJhY2luZywgdGh1cyBzaGUgc3Bha2UuIA0KK08gc29sZSBpbiB3aG9tIG15IHRob3VnaHRzIGZpbmQgYWxsIHJlcG9zZSwgDQorTXkgZ2xvcnksIG15IHBlcmZlY3Rpb24hIGdsYWQgSSBzZWUgDQorVGh5IGZhY2UsIGFuZCBtb3JuIHJldHVybmVkOyBmb3IgSSB0aGlzIG5pZ2h0IA0KKyhTdWNoIG5pZ2h0IHRpbGwgdGhpcyBJIG5ldmVyIHBhc3NlZCkgaGF2ZSBkcmVhbWVkLCANCitJZiBkcmVhbWVkLCBub3QsIGFzIEkgb2Z0IGFtIHdvbnQsIG9mIHRoZWUsIA0KK1dvcmtzIG9mIGRheSBwYXN0LCBvciBtb3Jyb3cncyBuZXh0IGRlc2lnbiwgDQorQnV0IG9mIG9mZmVuY2UgYW5kIHRyb3VibGUsIHdoaWNoIG15IG1pbmQgDQorS25ldyBuZXZlciB0aWxsIHRoaXMgaXJrc29tZSBuaWdodDogIE1ldGhvdWdodCwgDQorQ2xvc2UgYXQgbWluZSBlYXIgb25lIGNhbGxlZCBtZSBmb3J0aCB0byB3YWxrIA0KK1dpdGggZ2VudGxlIHZvaWNlOyAgSSB0aG91Z2h0IGl0IHRoaW5lOiBJdCBzYWlkLCANCisnV2h5IHNsZWVwZXN0IHRob3UsIEV2ZT8gbm93IGlzIHRoZSBwbGVhc2FudCB0aW1lLCANCisnVGhlIGNvb2wsIHRoZSBzaWxlbnQsIHNhdmUgd2hlcmUgc2lsZW5jZSB5aWVsZHMgDQorJ1RvIHRoZSBuaWdodC13YXJibGluZyBiaXJkLCB0aGF0IG5vdyBhd2FrZSANCisnVHVuZXMgc3dlZXRlc3QgaGlzIGxvdmUtbGFib3VyZWQgc29uZzsgbm93IHJlaWducyANCisnRnVsbC1vcmJlZCB0aGUgbW9vbiwgYW5kIHdpdGggbW9yZSBwbGVhc2luZyBsaWdodCANCisnU2hhZG93eSBzZXRzIG9mZiB0aGUgZmFjZSBvZiB0aGluZ3M7IGluIHZhaW4sIA0KKydJZiBub25lIHJlZ2FyZDsgSGVhdmVuIHdha2VzIHdpdGggYWxsIGhpcyBleWVzLCANCisnV2hvbSB0byBiZWhvbGQgYnV0IHRoZWUsIE5hdHVyZSdzIGRlc2lyZT8gDQorJ0luIHdob3NlIHNpZ2h0IGFsbCB0aGluZ3Mgam95LCB3aXRoIHJhdmlzaG1lbnQgDQorJ0F0dHJhY3RlZCBieSB0aHkgYmVhdXR5IHN0aWxsIHRvIGdhemUuJyANCitJIHJvc2UgYXMgYXQgdGh5IGNhbGwsIGJ1dCBmb3VuZCB0aGVlIG5vdDsgDQorVG8gZmluZCB0aGVlIEkgZGlyZWN0ZWQgdGhlbiBteSB3YWxrOyANCitBbmQgb24sIG1ldGhvdWdodCwgYWxvbmUgSSBwYXNzZWQgdGhyb3VnaCB3YXlzIA0KK1RoYXQgYnJvdWdodCBtZSBvbiBhIHN1ZGRlbiB0byB0aGUgdHJlZSANCitPZiBpbnRlcmRpY3RlZCBrbm93bGVkZ2U6IGZhaXIgaXQgc2VlbWVkLCANCitNdWNoIGZhaXJlciB0byBteSBmYW5jeSB0aGFuIGJ5IGRheTogDQorQW5kLCBhcyBJIHdvbmRlcmluZyBsb29rZWQsIGJlc2lkZSBpdCBzdG9vZCANCitPbmUgc2hhcGVkIGFuZCB3aW5nZWQgbGlrZSBvbmUgb2YgdGhvc2UgZnJvbSBIZWF2ZW4gDQorQnkgdXMgb2Z0IHNlZW47IGhpcyBkZXd5IGxvY2tzIGRpc3RpbGxlZCANCitBbWJyb3NpYTsgb24gdGhhdCB0cmVlIGhlIGFsc28gZ2F6ZWQ7IA0KK0FuZCAnTyBmYWlyIHBsYW50LCcgc2FpZCBoZSwgJ3dpdGggZnJ1aXQgc3VyY2hhcmdlZCwgDQorJ0RlaWducyBub25lIHRvIGVhc2UgdGh5IGxvYWQsIGFuZCB0YXN0ZSB0aHkgc3dlZXQsIA0KKydOb3IgR29kLCBub3IgTWFuPyAgSXMga25vd2xlZGdlIHNvIGRlc3Bpc2VkPyANCisnT3IgZW52eSwgb3Igd2hhdCByZXNlcnZlIGZvcmJpZHMgdG8gdGFzdGU/IA0KKydGb3JiaWQgd2hvIHdpbGwsIG5vbmUgc2hhbGwgZnJvbSBtZSB3aXRoaG9sZCANCisnTG9uZ2VyIHRoeSBvZmZlcmVkIGdvb2Q7IHdoeSBlbHNlIHNldCBoZXJlPyANCitUaGlzIHNhaWQsIGhlIHBhdXNlZCBub3QsIGJ1dCB3aXRoIHZlbnR1cm91cyBhcm0gDQorSGUgcGx1Y2tlZCwgaGUgdGFzdGVkOyBtZSBkYW1wIGhvcnJvdXIgY2hpbGxlZCANCitBdCBzdWNoIGJvbGQgd29yZHMgdm91Y2hlZCB3aXRoIGEgZGVlZCBzbyBib2xkOiANCitCdXQgaGUgdGh1cywgb3ZlcmpveWVkOyAnTyBmcnVpdCBkaXZpbmUsIA0KKydTd2VldCBvZiB0aHlzZWxmLCBidXQgbXVjaCBtb3JlIHN3ZWV0IHRodXMgY3JvcHQsIA0KKydGb3JiaWRkZW4gaGVyZSwgaXQgc2VlbXMsIGFzIG9ubHkgZml0IA0KKydGb3IgR29kcywgeWV0IGFibGUgdG8gbWFrZSBHb2RzIG9mIE1lbjogDQorJ0FuZCB3aHkgbm90IEdvZHMgb2YgTWVuOyBzaW5jZSBnb29kLCB0aGUgbW9yZSANCisnQ29tbXVuaWNhdGVkLCBtb3JlIGFidW5kYW50IGdyb3dzLCANCisnVGhlIGF1dGhvciBub3QgaW1wYWlyZWQsIGJ1dCBob25vdXJlZCBtb3JlPyANCisnSGVyZSwgaGFwcHkgY3JlYXR1cmUsIGZhaXIgYW5nZWxpY2sgRXZlISANCisnUGFydGFrZSB0aG91IGFsc287IGhhcHB5IHRob3VnaCB0aG91IGFydCwgDQorJ0hhcHBpZXIgdGhvdSBtYXllc3QgYmUsIHdvcnRoaWVyIGNhbnN0IG5vdCBiZTogDQorJ1Rhc3RlIHRoaXMsIGFuZCBiZSBoZW5jZWZvcnRoIGFtb25nIHRoZSBHb2RzIA0KKydUaHlzZWxmIGEgR29kZGVzcywgbm90IHRvIGVhcnRoIGNvbmZpbmVkLCANCisnQnV0IHNvbWV0aW1lcyBpbiB0aGUgYWlyLCBhcyB3ZSwgc29tZXRpbWVzIA0KKydBc2NlbmQgdG8gSGVhdmVuLCBieSBtZXJpdCB0aGluZSwgYW5kIHNlZSANCisnV2hhdCBsaWZlIHRoZSBHb2RzIGxpdmUgdGhlcmUsIGFuZCBzdWNoIGxpdmUgdGhvdSEnIA0KK1NvIHNheWluZywgaGUgZHJldyBuaWdoLCBhbmQgdG8gbWUgaGVsZCwgDQorRXZlbiB0byBteSBtb3V0aCBvZiB0aGF0IHNhbWUgZnJ1aXQgaGVsZCBwYXJ0IA0KK1doaWNoIGhlIGhhZCBwbHVja2VkOyB0aGUgcGxlYXNhbnQgc2F2b3VyeSBzbWVsbCANCitTbyBxdWlja2VuZWQgYXBwZXRpdGUsIHRoYXQgSSwgbWV0aG91Z2h0LCANCitDb3VsZCBub3QgYnV0IHRhc3RlLiAgRm9ydGh3aXRoIHVwIHRvIHRoZSBjbG91ZHMgDQorV2l0aCBoaW0gSSBmbGV3LCBhbmQgdW5kZXJuZWF0aCBiZWhlbGQgDQorVGhlIGVhcnRoIG91dHN0cmV0Y2hlZCBpbW1lbnNlLCBhIHByb3NwZWN0IHdpZGUgDQorQW5kIHZhcmlvdXM6ICBXb25kZXJpbmcgYXQgbXkgZmxpZ2h0IGFuZCBjaGFuZ2UgDQorVG8gdGhpcyBoaWdoIGV4YWx0YXRpb247IHN1ZGRlbmx5IA0KK015IGd1aWRlIHdhcyBnb25lLCBhbmQgSSwgbWV0aG91Z2h0LCBzdW5rIGRvd24sIA0KK0FuZCBmZWxsIGFzbGVlcDsgYnV0IE8sIGhvdyBnbGFkIEkgd2FrZWQgDQorVG8gZmluZCB0aGlzIGJ1dCBhIGRyZWFtISAgVGh1cyBFdmUgaGVyIG5pZ2h0IA0KK1JlbGF0ZWQsIGFuZCB0aHVzIEFkYW0gYW5zd2VyZWQgc2FkLiANCitCZXN0IGltYWdlIG9mIG15c2VsZiwgYW5kIGRlYXJlciBoYWxmLCANCitUaGUgdHJvdWJsZSBvZiB0aHkgdGhvdWdodHMgdGhpcyBuaWdodCBpbiBzbGVlcCANCitBZmZlY3RzIG1lIGVxdWFsbHk7IG5vciBjYW4gSSBsaWtlIA0KK1RoaXMgdW5jb3V0aCBkcmVhbSwgb2YgZXZpbCBzcHJ1bmcsIEkgZmVhcjsgDQorWWV0IGV2aWwgd2hlbmNlPyBpbiB0aGVlIGNhbiBoYXJib3VyIG5vbmUsIA0KK0NyZWF0ZWQgcHVyZS4gIEJ1dCBrbm93IHRoYXQgaW4gdGhlIHNvdWwgDQorQXJlIG1hbnkgbGVzc2VyIGZhY3VsdGllcywgdGhhdCBzZXJ2ZSANCitSZWFzb24gYXMgY2hpZWY7IGFtb25nIHRoZXNlIEZhbmN5IG5leHQgDQorSGVyIG9mZmljZSBob2xkczsgb2YgYWxsIGV4dGVybmFsIHRoaW5ncyANCitXaGljaCB0aGUgZml2ZSB3YXRjaGZ1bCBzZW5zZXMgcmVwcmVzZW50LCANCitTaGUgZm9ybXMgaW1hZ2luYXRpb25zLCBhZXJ5IHNoYXBlcywgDQorV2hpY2ggUmVhc29uLCBqb2luaW5nIG9yIGRpc2pvaW5pbmcsIGZyYW1lcyANCitBbGwgd2hhdCB3ZSBhZmZpcm0gb3Igd2hhdCBkZW55LCBhbmQgY2FsbCANCitPdXIga25vd2xlZGdlIG9yIG9waW5pb247IHRoZW4gcmV0aXJlcyANCitJbnRvIGhlciBwcml2YXRlIGNlbGwsIHdoZW4gbmF0dXJlIHJlc3RzLiANCitPZnQgaW4gaGVyIGFic2VuY2UgbWltaWNrIEZhbmN5IHdha2VzIA0KK1RvIGltaXRhdGUgaGVyOyBidXQsIG1pc2pvaW5pbmcgc2hhcGVzLCANCitXaWxkIHdvcmsgcHJvZHVjZXMgb2Z0LCBhbmQgbW9zdCBpbiBkcmVhbXM7IA0KK0lsbCBtYXRjaGluZyB3b3JkcyBhbmQgZGVlZHMgbG9uZyBwYXN0IG9yIGxhdGUuIA0KK1NvbWUgc3VjaCByZXNlbWJsYW5jZXMsIG1ldGhpbmtzLCBJIGZpbmQgDQorT2Ygb3VyIGxhc3QgZXZlbmluZydzIHRhbGssIGluIHRoaXMgdGh5IGRyZWFtLCANCitCdXQgd2l0aCBhZGRpdGlvbiBzdHJhbmdlOyB5ZXQgYmUgbm90IHNhZC4gDQorRXZpbCBpbnRvIHRoZSBtaW5kIG9mIEdvZCBvciBNYW4gDQorTWF5IGNvbWUgYW5kIGdvLCBzbyB1bnJlcHJvdmVkLCBhbmQgbGVhdmUgDQorTm8gc3BvdCBvciBibGFtZSBiZWhpbmQ6ICBXaGljaCBnaXZlcyBtZSBob3BlIA0KK1RoYXQgd2hhdCBpbiBzbGVlcCB0aG91IGRpZHN0IGFiaG9yIHRvIGRyZWFtLCANCitXYWtpbmcgdGhvdSBuZXZlciB3aWxsIGNvbnNlbnQgdG8gZG8uIA0KK0JlIG5vdCBkaXNoZWFydGVuZWQgdGhlbiwgbm9yIGNsb3VkIHRob3NlIGxvb2tzLCANCitUaGF0IHdvbnQgdG8gYmUgbW9yZSBjaGVlcmZ1bCBhbmQgc2VyZW5lLCANCitUaGFuIHdoZW4gZmFpciBtb3JuaW5nIGZpcnN0IHNtaWxlcyBvbiB0aGUgd29ybGQ7IA0KK0FuZCBsZXQgdXMgdG8gb3VyIGZyZXNoIGVtcGxveW1lbnRzIHJpc2UgDQorQW1vbmcgdGhlIGdyb3ZlcywgdGhlIGZvdW50YWlucywgYW5kIHRoZSBmbG93ZXJzIA0KK1RoYXQgb3BlbiBub3cgdGhlaXIgY2hvaXNlc3QgYm9zb21lZCBzbWVsbHMsIA0KK1Jlc2VydmVkIGZyb20gbmlnaHQsIGFuZCBrZXB0IGZvciB0aGVlIGluIHN0b3JlLiANCitTbyBjaGVlcmVkIGhlIGhpcyBmYWlyIHNwb3VzZSwgYW5kIHNoZSB3YXMgY2hlZXJlZDsgDQorQnV0IHNpbGVudGx5IGEgZ2VudGxlIHRlYXIgbGV0IGZhbGwgDQorRnJvbSBlaXRoZXIgZXllLCBhbmQgd2lwZWQgdGhlbSB3aXRoIGhlciBoYWlyOyANCitUd28gb3RoZXIgcHJlY2lvdXMgZHJvcHMgdGhhdCByZWFkeSBzdG9vZCwgDQorRWFjaCBpbiB0aGVpciBjcnlzdGFsIHNsdWljZSwgaGUgZXJlIHRoZXkgZmVsbCANCitLaXNzZWQsIGFzIHRoZSBncmFjaW91cyBzaWducyBvZiBzd2VldCByZW1vcnNlIA0KK0FuZCBwaW91cyBhd2UsIHRoYXQgZmVhcmVkIHRvIGhhdmUgb2ZmZW5kZWQuIA0KK1NvIGFsbCB3YXMgY2xlYXJlZCwgYW5kIHRvIHRoZSBmaWVsZCB0aGV5IGhhc3RlLiANCitCdXQgZmlyc3QsIGZyb20gdW5kZXIgc2hhZHkgYXJib3JvdXMgcm9vZiANCitTb29uIGFzIHRoZXkgZm9ydGggd2VyZSBjb21lIHRvIG9wZW4gc2lnaHQgDQorT2YgZGF5LXNwcmluZywgYW5kIHRoZSBzdW4sIHdobywgc2NhcmNlIHVwLXJpc2VuLCANCitXaXRoIHdoZWVscyB5ZXQgaG92ZXJpbmcgbydlciB0aGUgb2NlYW4tYnJpbSwgDQorU2hvdCBwYXJhbGxlbCB0byB0aGUgZWFydGggaGlzIGRld3kgcmF5LCANCitEaXNjb3ZlcmluZyBpbiB3aWRlIGxhbmRza2lwIGFsbCB0aGUgZWFzdCANCitPZiBQYXJhZGlzZSBhbmQgRWRlbidzIGhhcHB5IHBsYWlucywgDQorTG93bHkgdGhleSBib3dlZCBhZG9yaW5nLCBhbmQgYmVnYW4gDQorVGhlaXIgb3Jpc29ucywgZWFjaCBtb3JuaW5nIGR1bHkgcGFpZCANCitJbiB2YXJpb3VzIHN0eWxlOyBmb3IgbmVpdGhlciB2YXJpb3VzIHN0eWxlIA0KK05vciBob2x5IHJhcHR1cmUgd2FudGVkIHRoZXkgdG8gcHJhaXNlIA0KK1RoZWlyIE1ha2VyLCBpbiBmaXQgc3RyYWlucyBwcm9ub3VuY2VkLCBvciBzdW5nIA0KK1VubWVkaXRhdGVkOyBzdWNoIHByb21wdCBlbG9xdWVuY2UgDQorRmxvd2VkIGZyb20gdGhlaXIgbGlwcywgaW4gcHJvc2Ugb3IgbnVtZXJvdXMgdmVyc2UsIA0KK01vcmUgdHVuZWFibGUgdGhhbiBuZWVkZWQgbHV0ZSBvciBoYXJwIA0KK1RvIGFkZCBtb3JlIHN3ZWV0bmVzczsgYW5kIHRoZXkgdGh1cyBiZWdhbi4gDQorVGhlc2UgYXJlIHRoeSBnbG9yaW91cyB3b3JrcywgUGFyZW50IG9mIGdvb2QsIA0KK0FsbWlnaHR5ISAgVGhpbmUgdGhpcyB1bml2ZXJzYWwgZnJhbWUsIA0KK1RodXMgd29uZGVyb3VzIGZhaXI7ICBUaHlzZWxmIGhvdyB3b25kZXJvdXMgdGhlbiEgDQorVW5zcGVha2FibGUsIHdobyBzaXRzdCBhYm92ZSB0aGVzZSBoZWF2ZW5zIA0KK1RvIHVzIGludmlzaWJsZSwgb3IgZGltbHkgc2VlbiANCitJbiB0aGVzZSB0aHkgbG93ZXN0IHdvcmtzOyB5ZXQgdGhlc2UgZGVjbGFyZSANCitUaHkgZ29vZG5lc3MgYmV5b25kIHRob3VnaHQsIGFuZCBwb3dlciBkaXZpbmUuIA0KK1NwZWFrLCB5ZSB3aG8gYmVzdCBjYW4gdGVsbCwgeWUgc29ucyBvZiBsaWdodCwgDQorQW5nZWxzOyBmb3IgeWUgYmVob2xkIGhpbSwgYW5kIHdpdGggc29uZ3MgDQorQW5kIGNob3JhbCBzeW1waG9uaWVzLCBkYXkgd2l0aG91dCBuaWdodCwgDQorQ2lyY2xlIGhpcyB0aHJvbmUgcmVqb2ljaW5nOyB5ZSBpbiBIZWF2ZW4gDQorT24gRWFydGggam9pbiBhbGwgeWUgQ3JlYXR1cmVzIHRvIGV4dG9sIA0KK0hpbSBmaXJzdCwgaGltIGxhc3QsIGhpbSBtaWRzdCwgYW5kIHdpdGhvdXQgZW5kLiANCitGYWlyZXN0IG9mIHN0YXJzLCBsYXN0IGluIHRoZSB0cmFpbiBvZiBuaWdodCwgDQorSWYgYmV0dGVyIHRob3UgYmVsb25nIG5vdCB0byB0aGUgZGF3biwgDQorU3VyZSBwbGVkZ2Ugb2YgZGF5LCB0aGF0IGNyb3duZXN0IHRoZSBzbWlsaW5nIG1vcm4gDQorV2l0aCB0aHkgYnJpZ2h0IGNpcmNsZXQsIHByYWlzZSBoaW0gaW4gdGh5IHNwaGVyZSwgDQorV2hpbGUgZGF5IGFyaXNlcywgdGhhdCBzd2VldCBob3VyIG9mIHByaW1lLiANCitUaG91IFN1biwgb2YgdGhpcyBncmVhdCB3b3JsZCBib3RoIGV5ZSBhbmQgc291bCwgDQorQWNrbm93bGVkZ2UgaGltIHRoeSBncmVhdGVyOyBzb3VuZCBoaXMgcHJhaXNlIA0KK0luIHRoeSBldGVybmFsIGNvdXJzZSwgYm90aCB3aGVuIHRob3UgY2xpbWJlc3QsIA0KK0FuZCB3aGVuIGhpZ2ggbm9vbiBoYXN0IGdhaW5lZCwgYW5kIHdoZW4gdGhvdSBmYWxsZXN0LiANCitNb29uLCB0aGF0IG5vdyBtZWV0ZXN0IHRoZSBvcmllbnQgc3VuLCBub3cgZmx5ZXN0LCANCitXaXRoIHRoZSBmaXhlZCBTdGFycywgZml4ZWQgaW4gdGhlaXIgb3JiIHRoYXQgZmxpZXM7IA0KK0FuZCB5ZSBmaXZlIG90aGVyIHdhbmRlcmluZyBGaXJlcywgdGhhdCBtb3ZlIA0KK0luIG15c3RpY2sgZGFuY2Ugbm90IHdpdGhvdXQgc29uZywgcmVzb3VuZCANCitIaXMgcHJhaXNlLCB3aG8gb3V0IG9mIGRhcmtuZXNzIGNhbGxlZCB1cCBsaWdodC4gDQorQWlyLCBhbmQgeWUgRWxlbWVudHMsIHRoZSBlbGRlc3QgYmlydGggDQorT2YgTmF0dXJlJ3Mgd29tYiwgdGhhdCBpbiBxdWF0ZXJuaW9uIHJ1biANCitQZXJwZXR1YWwgY2lyY2xlLCBtdWx0aWZvcm07IGFuZCBtaXggDQorQW5kIG5vdXJpc2ggYWxsIHRoaW5nczsgbGV0IHlvdXIgY2Vhc2VsZXNzIGNoYW5nZSANCitWYXJ5IHRvIG91ciBncmVhdCBNYWtlciBzdGlsbCBuZXcgcHJhaXNlLiANCitZZSBNaXN0cyBhbmQgRXhoYWxhdGlvbnMsIHRoYXQgbm93IHJpc2UgDQorRnJvbSBoaWxsIG9yIHN0ZWFtaW5nIGxha2UsIGR1c2t5IG9yIGdyYXksIA0KK1RpbGwgdGhlIHN1biBwYWludCB5b3VyIGZsZWVjeSBza2lydHMgd2l0aCBnb2xkLCANCitJbiBob25vdXIgdG8gdGhlIHdvcmxkJ3MgZ3JlYXQgQXV0aG9yIHJpc2U7IA0KK1doZXRoZXIgdG8gZGVjayB3aXRoIGNsb3VkcyB0aGUgdW5jb2xvdXJlZCBza3ksIA0KK09yIHdldCB0aGUgdGhpcnN0eSBlYXJ0aCB3aXRoIGZhbGxpbmcgc2hvd2VycywgDQorUmlzaW5nIG9yIGZhbGxpbmcgc3RpbGwgYWR2YW5jZSBoaXMgcHJhaXNlLiANCitIaXMgcHJhaXNlLCB5ZSBXaW5kcywgdGhhdCBmcm9tIGZvdXIgcXVhcnRlcnMgYmxvdywgDQorQnJlYXRoZSBzb2Z0IG9yIGxvdWQ7IGFuZCwgd2F2ZSB5b3VyIHRvcHMsIHllIFBpbmVzLCANCitXaXRoIGV2ZXJ5IHBsYW50LCBpbiBzaWduIG9mIHdvcnNoaXAgd2F2ZS4gDQorRm91bnRhaW5zLCBhbmQgeWUgdGhhdCB3YXJibGUsIGFzIHllIGZsb3csIA0KK01lbG9kaW91cyBtdXJtdXJzLCB3YXJibGluZyB0dW5lIGhpcyBwcmFpc2UuIA0KK0pvaW4gdm9pY2VzLCBhbGwgeWUgbGl2aW5nIFNvdWxzOiAgWWUgQmlyZHMsIA0KK1RoYXQgc2luZ2luZyB1cCB0byBIZWF2ZW4tZ2F0ZSBhc2NlbmQsIA0KK0JlYXIgb24geW91ciB3aW5ncyBhbmQgaW4geW91ciBub3RlcyBoaXMgcHJhaXNlLiANCitZZSB0aGF0IGluIHdhdGVycyBnbGlkZSwgYW5kIHllIHRoYXQgd2FsayANCitUaGUgZWFydGgsIGFuZCBzdGF0ZWx5IHRyZWFkLCBvciBsb3dseSBjcmVlcDsgDQorV2l0bmVzcyBpZiBJIGJlIHNpbGVudCwgbW9ybiBvciBldmVuLCANCitUbyBoaWxsLCBvciB2YWxsZXksIGZvdW50YWluLCBvciBmcmVzaCBzaGFkZSwgDQorTWFkZSB2b2NhbCBieSBteSBzb25nLCBhbmQgdGF1Z2h0IGhpcyBwcmFpc2UuIA0KK0hhaWwsIHVuaXZlcnNhbCBMb3JkLCBiZSBib3VudGVvdXMgc3RpbGwgDQorVG8gZ2l2ZSB1cyBvbmx5IGdvb2Q7IGFuZCBpZiB0aGUgbmlnaHQgDQorSGF2ZSBnYXRoZXJlZCBhdWdodCBvZiBldmlsLCBvciBjb25jZWFsZWQsIA0KK0Rpc3BlcnNlIGl0LCBhcyBub3cgbGlnaHQgZGlzcGVscyB0aGUgZGFyayEgDQorU28gcHJheWVkIHRoZXkgaW5ub2NlbnQsIGFuZCB0byB0aGVpciB0aG91Z2h0cyANCitGaXJtIHBlYWNlIHJlY292ZXJlZCBzb29uLCBhbmQgd29udGVkIGNhbG0uIA0KK09uIHRvIHRoZWlyIG1vcm5pbmcncyBydXJhbCB3b3JrIHRoZXkgaGFzdGUsIA0KK0Ftb25nIHN3ZWV0IGRld3MgYW5kIGZsb3dlcnM7IHdoZXJlIGFueSByb3cgDQorT2YgZnJ1aXQtdHJlZXMgb3Zlci13b29keSByZWFjaGVkIHRvbyBmYXIgDQorVGhlaXIgcGFtcGVyZWQgYm91Z2hzLCBhbmQgbmVlZGVkIGhhbmRzIHRvIGNoZWNrIA0KK0ZydWl0bGVzcyBlbWJyYWNlczogb3IgdGhleSBsZWQgdGhlIHZpbmUgDQorVG8gd2VkIGhlciBlbG07IHNoZSwgc3BvdXNlZCwgYWJvdXQgaGltIHR3aW5lcyANCitIZXIgbWFycmlhZ2VhYmxlIGFybXMsIGFuZCB3aXRoIGhpbSBicmluZ3MgDQorSGVyIGRvd2VyLCB0aGUgYWRvcHRlZCBjbHVzdGVycywgdG8gYWRvcm4gDQorSGlzIGJhcnJlbiBsZWF2ZXMuICBUaGVtIHRodXMgZW1wbG95ZWQgYmVoZWxkIA0KK1dpdGggcGl0eSBIZWF2ZW4ncyBoaWdoIEtpbmcsIGFuZCB0byBoaW0gY2FsbGVkIA0KK1JhcGhhZWwsIHRoZSBzb2NpYWJsZSBTcGlyaXQsIHRoYXQgZGVpZ25lZCANCitUbyB0cmF2ZWwgd2l0aCBUb2JpYXMsIGFuZCBzZWN1cmVkIA0KK0hpcyBtYXJyaWFnZSB3aXRoIHRoZSBzZXZlbnRpbWVzLXdlZGRlZCBtYWlkLiANCitSYXBoYWVsLCBzYWlkIGhlLCB0aG91IGhlYXJlc3Qgd2hhdCBzdGlyIG9uIEVhcnRoIA0KK1NhdGFuLCBmcm9tIEhlbGwgJ3NjYXBlZCB0aHJvdWdoIHRoZSBkYXJrc29tZSBndWxmLCANCitIYXRoIHJhaXNlZCBpbiBQYXJhZGlzZTsgYW5kIGhvdyBkaXN0dXJiZWQgDQorVGhpcyBuaWdodCB0aGUgaHVtYW4gcGFpcjsgaG93IGhlIGRlc2lnbnMgDQorSW4gdGhlbSBhdCBvbmNlIHRvIHJ1aW4gYWxsIG1hbmtpbmQuIA0KK0dvIHRoZXJlZm9yZSwgaGFsZiB0aGlzIGRheSBhcyBmcmllbmQgd2l0aCBmcmllbmQgDQorQ29udmVyc2Ugd2l0aCBBZGFtLCBpbiB3aGF0IGJvd2VyIG9yIHNoYWRlIA0KK1Rob3UgZmluZGVzdCBoaW0gZnJvbSB0aGUgaGVhdCBvZiBub29uIHJldGlyZWQsIA0KK1RvIHJlc3BpdGUgaGlzIGRheS1sYWJvdXIgd2l0aCByZXBhc3QsIA0KK09yIHdpdGggcmVwb3NlOyBhbmQgc3VjaCBkaXNjb3Vyc2UgYnJpbmcgb24sIA0KK0FzIG1heSBhZHZpc2UgaGltIG9mIGhpcyBoYXBweSBzdGF0ZSwgDQorSGFwcGluZXNzIGluIGhpcyBwb3dlciBsZWZ0IGZyZWUgdG8gd2lsbCwgDQorTGVmdCB0byBoaXMgb3duIGZyZWUgd2lsbCwgaGlzIHdpbGwgdGhvdWdoIGZyZWUsIA0KK1lldCBtdXRhYmxlOyB3aGVuY2Ugd2FybiBoaW0gdG8gYmV3YXJlIA0KK0hlIHN3ZXJ2ZSBub3QsIHRvbyBzZWN1cmU6ICBUZWxsIGhpbSB3aXRoYWwgDQorSGlzIGRhbmdlciwgYW5kIGZyb20gd2hvbTsgd2hhdCBlbmVteSwgDQorTGF0ZSBmYWxsZW4gaGltc2VsZiBmcm9tIEhlYXZlbiwgaXMgcGxvdHRpbmcgbm93IA0KK1RoZSBmYWxsIG9mIG90aGVycyBmcm9tIGxpa2Ugc3RhdGUgb2YgYmxpc3M7IA0KK0J5IHZpb2xlbmNlPyBubywgZm9yIHRoYXQgc2hhbGwgYmUgd2l0aHN0b29kOyANCitCdXQgYnkgZGVjZWl0IGFuZCBsaWVzOiAgVGhpcyBsZXQgaGltIGtub3csIA0KK0xlc3QsIHdpbGZ1bGx5IHRyYW5zZ3Jlc3NpbmcsIGhlIHByZXRlbmQgDQorU3VycHJpc2FsLCB1bmFkbW9uaXNoZWQsIHVuZm9yZXdhcm5lZC4gDQorU28gc3Bha2UgdGhlIEV0ZXJuYWwgRmF0aGVyLCBhbmQgZnVsZmlsbGVkIA0KK0FsbCBqdXN0aWNlOiAgTm9yIGRlbGF5ZWQgdGhlIHdpbmdlZCBTYWludCANCitBZnRlciBoaXMgY2hhcmdlIHJlY2VpdmVkOyBidXQgZnJvbSBhbW9uZyANCitUaG91c2FuZCBjZWxlc3RpYWwgQXJkb3Vycywgd2hlcmUgaGUgc3Rvb2QgDQorVmVpbGVkIHdpdGggaGlzIGdvcmdlb3VzIHdpbmdzLCB1cCBzcHJpbmdpbmcgbGlnaHQsIA0KK0ZsZXcgdGhyb3VnaCB0aGUgbWlkc3Qgb2YgSGVhdmVuOyB0aGUgYW5nZWxpY2sgcXVpcmVzLCANCitPbiBlYWNoIGhhbmQgcGFydGluZywgdG8gaGlzIHNwZWVkIGdhdmUgd2F5IA0KK1Rocm91Z2ggYWxsIHRoZSBlbXB5cmVhbCByb2FkOyB0aWxsLCBhdCB0aGUgZ2F0ZSANCitPZiBIZWF2ZW4gYXJyaXZlZCwgdGhlIGdhdGUgc2VsZi1vcGVuZWQgd2lkZSANCitPbiBnb2xkZW4gaGluZ2VzIHR1cm5pbmcsIGFzIGJ5IHdvcmsgDQorRGl2aW5lIHRoZSBzb3ZyYW4gQXJjaGl0ZWN0IGhhZCBmcmFtZWQuIA0KK0Zyb20gaGVuY2Ugbm8gY2xvdWQsIG9yLCB0byBvYnN0cnVjdCBoaXMgc2lnaHQsIA0KK1N0YXIgaW50ZXJwb3NlZCwgaG93ZXZlciBzbWFsbCBoZSBzZWVzLCANCitOb3QgdW5jb25mb3JtZWQgdG8gb3RoZXIgc2hpbmluZyBnbG9iZXMsIA0KK0VhcnRoLCBhbmQgdGhlIGdhcmRlbiBvZiBHb2QsIHdpdGggY2VkYXJzIGNyb3duZWQgDQorQWJvdmUgYWxsIGhpbGxzLiAgQXMgd2hlbiBieSBuaWdodCB0aGUgZ2xhc3MgDQorT2YgR2FsaWxlbywgbGVzcyBhc3N1cmVkLCBvYnNlcnZlcyANCitJbWFnaW5lZCBsYW5kcyBhbmQgcmVnaW9ucyBpbiB0aGUgbW9vbjogDQorT3IgcGlsb3QsIGZyb20gYW1pZHN0IHRoZSBDeWNsYWRlcyANCitEZWxvcyBvciBTYW1vcyBmaXJzdCBhcHBlYXJpbmcsIGtlbnMgDQorQSBjbG91ZHkgc3BvdC4gIERvd24gdGhpdGhlciBwcm9uZSBpbiBmbGlnaHQgDQorSGUgc3BlZWRzLCBhbmQgdGhyb3VnaCB0aGUgdmFzdCBldGhlcmVhbCBza3kgDQorU2FpbHMgYmV0d2VlbiB3b3JsZHMgYW5kIHdvcmxkcywgd2l0aCBzdGVhZHkgd2luZyANCitOb3cgb24gdGhlIHBvbGFyIHdpbmRzLCB0aGVuIHdpdGggcXVpY2sgZmFuIA0KK1dpbm5vd3MgdGhlIGJ1eG9tIGFpcjsgdGlsbCwgd2l0aGluIHNvYXIgDQorT2YgdG93ZXJpbmcgZWFnbGVzLCB0byBhbGwgdGhlIGZvd2xzIGhlIHNlZW1zIA0KK0EgcGhvZW5peCwgZ2F6ZWQgYnkgYWxsIGFzIHRoYXQgc29sZSBiaXJkLCANCitXaGVuLCB0byBlbnNocmluZSBoaXMgcmVsaXF1ZXMgaW4gdGhlIFN1bidzIA0KK0JyaWdodCB0ZW1wbGUsIHRvIEVneXB0aWFuIFRoZWJlcyBoZSBmbGllcy4gDQorQXQgb25jZSBvbiB0aGUgZWFzdGVybiBjbGlmZiBvZiBQYXJhZGlzZSANCitIZSBsaWdodHMsIGFuZCB0byBoaXMgcHJvcGVyIHNoYXBlIHJldHVybnMgDQorQSBTZXJhcGggd2luZ2VkOiAgU2l4IHdpbmdzIGhlIHdvcmUsIHRvIHNoYWRlIA0KK0hpcyBsaW5lYW1lbnRzIGRpdmluZTsgdGhlIHBhaXIgdGhhdCBjbGFkIA0KK0VhY2ggc2hvdWxkZXIgYnJvYWQsIGNhbWUgbWFudGxpbmcgbydlciBoaXMgYnJlYXN0IA0KK1dpdGggcmVnYWwgb3JuYW1lbnQ7IHRoZSBtaWRkbGUgcGFpciANCitHaXJ0IGxpa2UgYSBzdGFycnkgem9uZSBoaXMgd2Fpc3QsIGFuZCByb3VuZCANCitTa2lydGVkIGhpcyBsb2lucyBhbmQgdGhpZ2hzIHdpdGggZG93bnkgZ29sZCANCitBbmQgY29sb3VycyBkaXB0IGluIEhlYXZlbjsgdGhlIHRoaXJkIGhpcyBmZWV0IA0KK1NoYWRvd2VkIGZyb20gZWl0aGVyIGhlZWwgd2l0aCBmZWF0aGVyZWQgbWFpbCwgDQorU2t5LXRpbmN0dXJlZCBncmFpbi4gIExpa2UgTWFpYSdzIHNvbiBoZSBzdG9vZCwgDQorQW5kIHNob29rIGhpcyBwbHVtZXMsIHRoYXQgaGVhdmVubHkgZnJhZ3JhbmNlIGZpbGxlZCANCitUaGUgY2lyY3VpdCB3aWRlLiAgU3RyYWlnaHQga25ldyBoaW0gYWxsIHRoZSBiYW5kcyANCitPZiBBbmdlbHMgdW5kZXIgd2F0Y2g7IGFuZCB0byBoaXMgc3RhdGUsIA0KK0FuZCB0byBoaXMgbWVzc2FnZSBoaWdoLCBpbiBob25vdXIgcmlzZTsgDQorRm9yIG9uIHNvbWUgbWVzc2FnZSBoaWdoIHRoZXkgZ3Vlc3NlZCBoaW0gYm91bmQuIA0KK1RoZWlyIGdsaXR0ZXJpbmcgdGVudHMgaGUgcGFzc2VkLCBhbmQgbm93IGlzIGNvbWUgDQorSW50byB0aGUgYmxpc3NmdWwgZmllbGQsIHRocm91Z2ggZ3JvdmVzIG9mIG15cnJoLCANCitBbmQgZmxvd2VyaW5nIG9kb3VycywgY2Fzc2lhLCBuYXJkLCBhbmQgYmFsbTsgDQorQSB3aWxkZXJuZXNzIG9mIHN3ZWV0czsgZm9yIE5hdHVyZSBoZXJlIA0KK1dhbnRvbmVkIGFzIGluIGhlciBwcmltZSwgYW5kIHBsYXllZCBhdCB3aWxsIA0KK0hlciB2aXJnaW4gZmFuY2llcyBwb3VyaW5nIGZvcnRoIG1vcmUgc3dlZXQsIA0KK1dpbGQgYWJvdmUgcnVsZSBvciBhcnQsIGVub3Jtb3VzIGJsaXNzLiANCitIaW0gdGhyb3VnaCB0aGUgc3BpY3kgZm9yZXN0IG9ud2FyZCBjb21lIA0KK0FkYW0gZGlzY2VybmVkLCBhcyBpbiB0aGUgZG9vciBoZSBzYXQgDQorT2YgaGlzIGNvb2wgYm93ZXIsIHdoaWxlIG5vdyB0aGUgbW91bnRlZCBzdW4gDQorU2hvdCBkb3duIGRpcmVjdCBoaXMgZmVydmlkIHJheXMgdG8gd2FybSANCitFYXJ0aCdzIGlubW9zdCB3b21iLCBtb3JlIHdhcm10aCB0aGFuIEFkYW0gbmVlZHM6IA0KK0FuZCBFdmUgd2l0aGluLCBkdWUgYXQgaGVyIGhvdXIgcHJlcGFyZWQgDQorRm9yIGRpbm5lciBzYXZvdXJ5IGZydWl0cywgb2YgdGFzdGUgdG8gcGxlYXNlIA0KK1RydWUgYXBwZXRpdGUsIGFuZCBub3QgZGlzcmVsaXNoIHRoaXJzdCANCitPZiBuZWN0YXJvdXMgZHJhdWdodHMgYmV0d2VlbiwgZnJvbSBtaWxreSBzdHJlYW0sIA0KK0JlcnJ5IG9yIGdyYXBlOiAgVG8gd2hvbSB0aHVzIEFkYW0gY2FsbGVkLiANCitIYXN0ZSBoaXRoZXIsIEV2ZSwgYW5kIHdvcnRoIHRoeSBzaWdodCBiZWhvbGQgDQorRWFzdHdhcmQgYW1vbmcgdGhvc2UgdHJlZXMsIHdoYXQgZ2xvcmlvdXMgc2hhcGUgDQorQ29tZXMgdGhpcyB3YXkgbW92aW5nOyBzZWVtcyBhbm90aGVyIG1vcm4gDQorUmlzZW4gb24gbWlkLW5vb247IHNvbWUgZ3JlYXQgYmVoZXN0IGZyb20gSGVhdmVuIA0KK1RvIHVzIHBlcmhhcHMgaGUgYnJpbmdzLCBhbmQgd2lsbCB2b3VjaHNhZmUgDQorVGhpcyBkYXkgdG8gYmUgb3VyIGd1ZXN0LiAgQnV0IGdvIHdpdGggc3BlZWQsIA0KK0FuZCwgd2hhdCB0aHkgc3RvcmVzIGNvbnRhaW4sIGJyaW5nIGZvcnRoLCBhbmQgcG91ciANCitBYnVuZGFuY2UsIGZpdCB0byBob25vdXIgYW5kIHJlY2VpdmUgDQorT3VyIGhlYXZlbmx5IHN0cmFuZ2VyOiAgV2VsbCB3ZSBtYXkgYWZmb3JkIA0KK091ciBnaXZlcnMgdGhlaXIgb3duIGdpZnRzLCBhbmQgbGFyZ2UgYmVzdG93IA0KK0Zyb20gbGFyZ2UgYmVzdG93ZWQsIHdoZXJlIE5hdHVyZSBtdWx0aXBsaWVzIA0KK0hlciBmZXJ0aWxlIGdyb3d0aCwgYW5kIGJ5IGRpc2J1cnRoZW5pbmcgZ3Jvd3MgDQorTW9yZSBmcnVpdGZ1bCwgd2hpY2ggaW5zdHJ1Y3RzIHVzIG5vdCB0byBzcGFyZS4gDQorVG8gd2hvbSB0aHVzIEV2ZS4gIEFkYW0sIGVhcnRoJ3MgaGFsbG93ZWQgbW91bGQsIA0KK09mIEdvZCBpbnNwaXJlZCEgc21hbGwgc3RvcmUgd2lsbCBzZXJ2ZSwgd2hlcmUgc3RvcmUsIA0KK0FsbCBzZWFzb25zLCByaXBlIGZvciB1c2UgaGFuZ3Mgb24gdGhlIHN0YWxrOyANCitTYXZlIHdoYXQgYnkgZnJ1Z2FsIHN0b3JpbmcgZmlybW5lc3MgZ2FpbnMgDQorVG8gbm91cmlzaCwgYW5kIHN1cGVyZmx1b3VzIG1vaXN0IGNvbnN1bWVzOiANCitCdXQgSSB3aWxsIGhhc3RlLCBhbmQgZnJvbSBlYWNoIGJvdWdoIGFuZCBicmFrZSwgDQorRWFjaCBwbGFudCBhbmQganVjaWVzdCBnb3VyZCwgd2lsbCBwbHVjayBzdWNoIGNob2ljZSANCitUbyBlbnRlcnRhaW4gb3VyIEFuZ2VsLWd1ZXN0LCBhcyBoZSANCitCZWhvbGRpbmcgc2hhbGwgY29uZmVzcywgdGhhdCBoZXJlIG9uIEVhcnRoIA0KK0dvZCBoYXRoIGRpc3BlbnNlZCBoaXMgYm91bnRpZXMgYXMgaW4gSGVhdmVuLiANCitTbyBzYXlpbmcsIHdpdGggZGlzcGF0Y2hmdWwgbG9va3MgaW4gaGFzdGUgDQorU2hlIHR1cm5zLCBvbiBob3NwaXRhYmxlIHRob3VnaHRzIGludGVudCANCitXaGF0IGNob2ljZSB0byBjaG9vc2UgZm9yIGRlbGljYWN5IGJlc3QsIA0KK1doYXQgb3JkZXIsIHNvIGNvbnRyaXZlZCBhcyBub3QgdG8gbWl4IA0KK1Rhc3Rlcywgbm90IHdlbGwgam9pbmVkLCBpbmVsZWdhbnQsIGJ1dCBicmluZyANCitUYXN0ZSBhZnRlciB0YXN0ZSB1cGhlbGQgd2l0aCBraW5kbGllc3QgY2hhbmdlOyANCitCZXN0aXJzIGhlciB0aGVuLCBhbmQgZnJvbSBlYWNoIHRlbmRlciBzdGFsayANCitXaGF0ZXZlciBFYXJ0aCwgYWxsLWJlYXJpbmcgbW90aGVyLCB5aWVsZHMgDQorSW4gSW5kaWEgRWFzdCBvciBXZXN0LCBvciBtaWRkbGUgc2hvcmUgDQorSW4gUG9udHVzIG9yIHRoZSBQdW5pY2sgY29hc3QsIG9yIHdoZXJlIA0KK0FsY2lub3VzIHJlaWduZWQsIGZydWl0IG9mIGFsbCBraW5kcywgaW4gY29hdCANCitSb3VnaCwgb3Igc21vb3RoIHJpbmQsIG9yIGJlYXJkZWQgaHVzaywgb3Igc2hlbGwsIA0KK1NoZSBnYXRoZXJzLCB0cmlidXRlIGxhcmdlLCBhbmQgb24gdGhlIGJvYXJkIA0KK0hlYXBzIHdpdGggdW5zcGFyaW5nIGhhbmQ7IGZvciBkcmluayB0aGUgZ3JhcGUgDQorU2hlIGNydXNoZXMsIGlub2ZmZW5zaXZlIG11c3QsIGFuZCBtZWF0aHMgDQorRnJvbSBtYW55IGEgYmVycnksIGFuZCBmcm9tIHN3ZWV0IGtlcm5lbHMgcHJlc3NlZCANCitTaGUgdGVtcGVycyBkdWxjZXQgY3JlYW1zOyBub3IgdGhlc2UgdG8gaG9sZCANCitXYW50cyBoZXIgZml0IHZlc3NlbHMgcHVyZTsgdGhlbiBzdHJvd3MgdGhlIGdyb3VuZCANCitXaXRoIHJvc2UgYW5kIG9kb3VycyBmcm9tIHRoZSBzaHJ1YiB1bmZ1bWVkLiANCitNZWFuIHdoaWxlIG91ciBwcmltaXRpdmUgZ3JlYXQgc2lyZSwgdG8gbWVldCANCitIaXMgR29kLWxpa2UgZ3Vlc3QsIHdhbGtzIGZvcnRoLCB3aXRob3V0IG1vcmUgdHJhaW4gDQorQWNjb21wYW5pZWQgdGhhbiB3aXRoIGhpcyBvd24gY29tcGxldGUgDQorUGVyZmVjdGlvbnM7IGluIGhpbXNlbGYgd2FzIGFsbCBoaXMgc3RhdGUsIA0KK01vcmUgc29sZW1uIHRoYW4gdGhlIHRlZGlvdXMgcG9tcCB0aGF0IHdhaXRzIA0KK09uIHByaW5jZXMsIHdoZW4gdGhlaXIgcmljaCByZXRpbnVlIGxvbmcgDQorT2YgaG9yc2VzIGxlZCwgYW5kIGdyb29tcyBiZXNtZWFyZWQgd2l0aCBnb2xkLCANCitEYXp6bGVzIHRoZSBjcm91ZCwgYW5kIHNldHMgdGhlbSBhbGwgYWdhcGUuIA0KK05lYXJlciBoaXMgcHJlc2VuY2UgQWRhbSwgdGhvdWdoIG5vdCBhd2VkLCANCitZZXQgd2l0aCBzdWJtaXNzIGFwcHJvYWNoIGFuZCByZXZlcmVuY2UgbWVlaywgDQorQXMgdG8gYSBzdXBlcmlvdXIgbmF0dXJlIGJvd2luZyBsb3csIA0KK1RodXMgc2FpZC4gIE5hdGl2ZSBvZiBIZWF2ZW4sIGZvciBvdGhlciBwbGFjZSANCitOb25lIGNhbiB0aGFuIEhlYXZlbiBzdWNoIGdsb3Jpb3VzIHNoYXBlIGNvbnRhaW47IA0KK1NpbmNlLCBieSBkZXNjZW5kaW5nIGZyb20gdGhlIHRocm9uZXMgYWJvdmUsIA0KK1Rob3NlIGhhcHB5IHBsYWNlcyB0aG91IGhhc3QgZGVpZ25lZCBhIHdoaWxlIA0KK1RvIHdhbnQsIGFuZCBob25vdXIgdGhlc2UsIHZvdWNoc2FmZSB3aXRoIHVzIA0KK1R3byBvbmx5LCB3aG8geWV0IGJ5IHNvdnJhbiBnaWZ0IHBvc3Nlc3MgDQorVGhpcyBzcGFjaW91cyBncm91bmQsIGluIHlvbmRlciBzaGFkeSBib3dlciANCitUbyByZXN0OyBhbmQgd2hhdCB0aGUgZ2FyZGVuIGNob2ljZXN0IGJlYXJzIA0KK1RvIHNpdCBhbmQgdGFzdGUsIHRpbGwgdGhpcyBtZXJpZGlhbiBoZWF0IA0KK0JlIG92ZXIsIGFuZCB0aGUgc3VuIG1vcmUgY29vbCBkZWNsaW5lLiANCitXaG9tIHRodXMgdGhlIGFuZ2VsaWNrIFZpcnR1ZSBhbnN3ZXJlZCBtaWxkLiANCitBZGFtLCBJIHRoZXJlZm9yZSBjYW1lOyBub3IgYXJ0IHRob3Ugc3VjaCANCitDcmVhdGVkLCBvciBzdWNoIHBsYWNlIGhhc3QgaGVyZSB0byBkd2VsbCwgDQorQXMgbWF5IG5vdCBvZnQgaW52aXRlLCB0aG91Z2ggU3Bpcml0cyBvZiBIZWF2ZW4sIA0KK1RvIHZpc2l0IHRoZWU7IGxlYWQgb24gdGhlbiB3aGVyZSB0aHkgYm93ZXIgDQorTydlcnNoYWRlczsgZm9yIHRoZXNlIG1pZC1ob3VycywgdGlsbCBldmVuaW5nIHJpc2UsIA0KK0kgaGF2ZSBhdCB3aWxsLiAgU28gdG8gdGhlIHN5bHZhbiBsb2RnZSANCitUaGV5IGNhbWUsIHRoYXQgbGlrZSBQb21vbmEncyBhcmJvdXIgc21pbGVkLCANCitXaXRoIGZsb3dlcmV0cyBkZWNrZWQsIGFuZCBmcmFncmFudCBzbWVsbHM7IGJ1dCBFdmUsIA0KK1VuZGVja2VkIHNhdmUgd2l0aCBoZXJzZWxmLCBtb3JlIGxvdmVseSBmYWlyIA0KK1RoYW4gV29vZC1OeW1waCwgb3IgdGhlIGZhaXJlc3QgR29kZGVzcyBmZWlnbmVkIA0KK09mIHRocmVlIHRoYXQgaW4gbW91bnQgSWRhIG5ha2VkIHN0cm92ZSwgDQorU3Rvb2QgdG8gZW50ZXJ0YWluIGhlciBndWVzdCBmcm9tIEhlYXZlbjsgbm8gdmVpbCANCitTaGUgbmVlZGVkLCB2aXJ0dWUtcHJvb2Y7IG5vIHRob3VnaHQgaW5maXJtIA0KK0FsdGVyZWQgaGVyIGNoZWVrLiAgT24gd2hvbSB0aGUgQW5nZWwgSGFpbCANCitCZXN0b3dlZCwgdGhlIGhvbHkgc2FsdXRhdGlvbiB1c2VkIA0KK0xvbmcgYWZ0ZXIgdG8gYmxlc3QgTWFyeSwgc2Vjb25kIEV2ZS4gDQorSGFpbCwgTW90aGVyIG9mIE1hbmtpbmQsIHdob3NlIGZydWl0ZnVsIHdvbWIgDQorU2hhbGwgZmlsbCB0aGUgd29ybGQgbW9yZSBudW1lcm91cyB3aXRoIHRoeSBzb25zLCANCitUaGFuIHdpdGggdGhlc2UgdmFyaW91cyBmcnVpdHMgdGhlIHRyZWVzIG9mIEdvZCANCitIYXZlIGhlYXBlZCB0aGlzIHRhYmxlIS0tUmFpc2VkIG9mIGdyYXNzeSB0dXJmIA0KK1RoZWlyIHRhYmxlIHdhcywgYW5kIG1vc3N5IHNlYXRzIGhhZCByb3VuZCwgDQorQW5kIG9uIGhlciBhbXBsZSBzcXVhcmUgZnJvbSBzaWRlIHRvIHNpZGUgDQorQWxsIGF1dHVtbiBwaWxlZCwgdGhvdWdoIHNwcmluZyBhbmQgYXV0dW1uIGhlcmUgDQorRGFuY2VkIGhhbmQgaW4gaGFuZC4gIEEgd2hpbGUgZGlzY291cnNlIHRoZXkgaG9sZDsgDQorTm8gZmVhciBsZXN0IGRpbm5lciBjb29sOyB3aGVuIHRodXMgYmVnYW4gDQorT3VyIGF1dGhvci4gIEhlYXZlbmx5IHN0cmFuZ2VyLCBwbGVhc2UgdG8gdGFzdGUgDQorVGhlc2UgYm91bnRpZXMsIHdoaWNoIG91ciBOb3VyaXNoZXIsIGZyb20gd2hvbSANCitBbGwgcGVyZmVjdCBnb29kLCB1bm1lYXN1cmVkIG91dCwgZGVzY2VuZHMsIA0KK1RvIHVzIGZvciBmb29kIGFuZCBmb3IgZGVsaWdodCBoYXRoIGNhdXNlZCANCitUaGUgZWFydGggdG8geWllbGQ7IHVuc2F2b3VyeSBmb29kIHBlcmhhcHMgDQorVG8gc3Bpcml0dWFsIG5hdHVyZXM7IG9ubHkgdGhpcyBJIGtub3csIA0KK1RoYXQgb25lIGNlbGVzdGlhbCBGYXRoZXIgZ2l2ZXMgdG8gYWxsLiANCitUbyB3aG9tIHRoZSBBbmdlbC4gIFRoZXJlZm9yZSB3aGF0IGhlIGdpdmVzIA0KKyhXaG9zZSBwcmFpc2UgYmUgZXZlciBzdW5nKSB0byBNYW4gaW4gcGFydCANCitTcGlyaXR1YWwsIG1heSBvZiBwdXJlc3QgU3Bpcml0cyBiZSBmb3VuZCANCitObyBpbmdyYXRlZnVsIGZvb2Q6ICBBbmQgZm9vZCBhbGlrZSB0aG9zZSBwdXJlIA0KK0ludGVsbGlnZW50aWFsIHN1YnN0YW5jZXMgcmVxdWlyZSwgDQorQXMgZG90aCB5b3VyIHJhdGlvbmFsOyBhbmQgYm90aCBjb250YWluIA0KK1dpdGhpbiB0aGVtIGV2ZXJ5IGxvd2VyIGZhY3VsdHkgDQorT2Ygc2Vuc2UsIHdoZXJlYnkgdGhleSBoZWFyLCBzZWUsIHNtZWxsLCB0b3VjaCwgdGFzdGUsIA0KK1Rhc3RpbmcgY29uY29jdCwgZGlnZXN0LCBhc3NpbWlsYXRlLCANCitBbmQgY29ycG9yZWFsIHRvIGluY29ycG9yZWFsIHR1cm4uIA0KK0ZvciBrbm93LCB3aGF0ZXZlciB3YXMgY3JlYXRlZCwgbmVlZHMgDQorVG8gYmUgc3VzdGFpbmVkIGFuZCBmZWQ6ICBPZiBlbGVtZW50cyANCitUaGUgZ3Jvc3NlciBmZWVkcyB0aGUgcHVyZXIsIGVhcnRoIHRoZSBzZWEsIA0KK0VhcnRoIGFuZCB0aGUgc2VhIGZlZWQgYWlyLCB0aGUgYWlyIHRob3NlIGZpcmVzIA0KK0V0aGVyZWFsLCBhbmQgYXMgbG93ZXN0IGZpcnN0IHRoZSBtb29uOyANCitXaGVuY2UgaW4gaGVyIHZpc2FnZSByb3VuZCB0aG9zZSBzcG90cywgdW5wdXJnZWQgDQorVmFwb3VycyBub3QgeWV0IGludG8gaGVyIHN1YnN0YW5jZSB0dXJuZWQuIA0KK05vciBkb3RoIHRoZSBtb29uIG5vIG5vdXJpc2htZW50IGV4aGFsZSANCitGcm9tIGhlciBtb2lzdCBjb250aW5lbnQgdG8gaGlnaGVyIG9yYnMuIA0KK1RoZSBzdW4gdGhhdCBsaWdodCBpbXBhcnRzIHRvIGFsbCwgcmVjZWl2ZXMgDQorRnJvbSBhbGwgaGlzIGFsaW1lbnRhbCByZWNvbXBlbmNlIA0KK0luIGh1bWlkIGV4aGFsYXRpb25zLCBhbmQgYXQgZXZlbiANCitTdXBzIHdpdGggdGhlIG9jZWFuLiAgVGhvdWdoIGluIEhlYXZlbiB0aGUgdHJlZXMgDQorT2YgbGlmZSBhbWJyb3NpYWwgZnJ1aXRhZ2UgYmVhciwgYW5kIHZpbmVzIA0KK1lpZWxkIG5lY3RhcjsgdGhvdWdoIGZyb20gb2ZmIHRoZSBib3VnaHMgZWFjaCBtb3JuIA0KK1dlIGJydXNoIG1lbGxpZmx1b3VzIGRld3MsIGFuZCBmaW5kIHRoZSBncm91bmQgDQorQ292ZXJlZCB3aXRoIHBlYXJseSBncmFpbjogIFlldCBHb2QgaGF0aCBoZXJlIA0KK1ZhcmllZCBoaXMgYm91bnR5IHNvIHdpdGggbmV3IGRlbGlnaHRzLCANCitBcyBtYXkgY29tcGFyZSB3aXRoIEhlYXZlbjsgYW5kIHRvIHRhc3RlIA0KK1RoaW5rIG5vdCBJIHNoYWxsIGJlIG5pY2UuICBTbyBkb3duIHRoZXkgc2F0LCANCitBbmQgdG8gdGhlaXIgdmlhbmRzIGZlbGw7IG5vciBzZWVtaW5nbHkgDQorVGhlIEFuZ2VsLCBub3IgaW4gbWlzdCwgdGhlIGNvbW1vbiBnbG9zcyANCitPZiBUaGVvbG9naWFuczsgYnV0IHdpdGgga2VlbiBkaXNwYXRjaCANCitPZiByZWFsIGh1bmdlciwgYW5kIGNvbmNvY3RpdmUgaGVhdCANCitUbyB0cmFuc3Vic3RhbnRpYXRlOiAgV2hhdCByZWRvdW5kcywgdHJhbnNwaXJlcyANCitUaHJvdWdoIFNwaXJpdHMgd2l0aCBlYXNlOyBub3Igd29uZGVyO2lmIGJ5IGZpcmUgDQorT2Ygc29vdHkgY29hbCB0aGUgZW1waXJpY2sgYWxjaGVtaXN0IA0KK0NhbiB0dXJuLCBvciBob2xkcyBpdCBwb3NzaWJsZSB0byB0dXJuLCANCitNZXRhbHMgb2YgZHJvc3NpZXN0IG9yZSB0byBwZXJmZWN0IGdvbGQsIA0KK0FzIGZyb20gdGhlIG1pbmUuICBNZWFuIHdoaWxlIGF0IHRhYmxlIEV2ZSANCitNaW5pc3RlcmVkIG5ha2VkLCBhbmQgdGhlaXIgZmxvd2luZyBjdXBzIA0KK1dpdGggcGxlYXNhbnQgbGlxdW91cnMgY3Jvd25lZDogIE8gaW5ub2NlbmNlIA0KK0Rlc2VydmluZyBQYXJhZGlzZSEgaWYgZXZlciwgdGhlbiwgDQorVGhlbiBoYWQgdGhlIHNvbnMgb2YgR29kIGV4Y3VzZSB0byBoYXZlIGJlZW4gDQorRW5hbW91cmVkIGF0IHRoYXQgc2lnaHQ7IGJ1dCBpbiB0aG9zZSBoZWFydHMgDQorTG92ZSB1bmxpYmlkaW5vdXMgcmVpZ25lZCwgbm9yIGplYWxvdXN5IA0KK1dhcyB1bmRlcnN0b29kLCB0aGUgaW5qdXJlZCBsb3ZlcidzIGhlbGwuIA0KK1RodXMgd2hlbiB3aXRoIG1lYXRzIGFuZCBkcmlua3MgdGhleSBoYWQgc3VmZmljZWQsIA0KK05vdCBidXJkZW5lZCBuYXR1cmUsIHN1ZGRlbiBtaW5kIGFyb3NlIA0KK0luIEFkYW0sIG5vdCB0byBsZXQgdGhlIG9jY2FzaW9uIHBhc3MgDQorR2l2ZW4gaGltIGJ5IHRoaXMgZ3JlYXQgY29uZmVyZW5jZSB0byBrbm93IA0KK09mIHRoaW5ncyBhYm92ZSBoaXMgd29ybGQsIGFuZCBvZiB0aGVpciBiZWluZyANCitXaG8gZHdlbGwgaW4gSGVhdmVuLCB3aG9zZSBleGNlbGxlbmNlIGhlIHNhdyANCitUcmFuc2NlbmQgaGlzIG93biBzbyBmYXI7IHdob3NlIHJhZGlhbnQgZm9ybXMsIA0KK0RpdmluZSBlZmZ1bGdlbmNlLCB3aG9zZSBoaWdoIHBvd2VyLCBzbyBmYXIgDQorRXhjZWVkZWQgaHVtYW47IGFuZCBoaXMgd2FyeSBzcGVlY2ggDQorVGh1cyB0byB0aGUgZW1weXJlYWwgbWluaXN0ZXIgaGUgZnJhbWVkLiANCitJbmhhYml0YW50IHdpdGggR29kLCBub3cga25vdyBJIHdlbGwgDQorVGh5IGZhdm91ciwgaW4gdGhpcyBob25vdXIgZG9uZSB0byBNYW47IA0KK1VuZGVyIHdob3NlIGxvd2x5IHJvb2YgdGhvdSBoYXN0IHZvdWNoc2FmZWQgDQorVG8gZW50ZXIsIGFuZCB0aGVzZSBlYXJ0aGx5IGZydWl0cyB0byB0YXN0ZSwgDQorRm9vZCBub3Qgb2YgQW5nZWxzLCB5ZXQgYWNjZXB0ZWQgc28sIA0KK0FzIHRoYXQgbW9yZSB3aWxsaW5nbHkgdGhvdSBjb3VsZHN0IG5vdCBzZWVtIA0KK0F0IEhlYXZlbidzIGhpZ2ggZmVhc3RzIHRvIGhhdmUgZmVkOiB5ZXQgd2hhdCBjb21wYXJlIA0KK1RvIHdob20gdGhlIHdpbmdlZCBIaWVyYXJjaCByZXBsaWVkLiANCitPIEFkYW0sIE9uZSBBbG1pZ2h0eSBpcywgZnJvbSB3aG9tIA0KK0FsbCB0aGluZ3MgcHJvY2VlZCwgYW5kIHVwIHRvIGhpbSByZXR1cm4sIA0KK0lmIG5vdCBkZXByYXZlZCBmcm9tIGdvb2QsIGNyZWF0ZWQgYWxsIA0KK1N1Y2ggdG8gcGVyZmVjdGlvbiwgb25lIGZpcnN0IG1hdHRlciBhbGwsIA0KK0VuZHVlZCB3aXRoIHZhcmlvdXMgZm9ybXMsIHZhcmlvdXMgZGVncmVlcyANCitPZiBzdWJzdGFuY2UsIGFuZCwgaW4gdGhpbmdzIHRoYXQgbGl2ZSwgb2YgbGlmZTsgDQorQnV0IG1vcmUgcmVmaW5lZCwgbW9yZSBzcGlyaXRvdXMsIGFuZCBwdXJlLCANCitBcyBuZWFyZXIgdG8gaGltIHBsYWNlZCwgb3IgbmVhcmVyIHRlbmRpbmcgDQorRWFjaCBpbiB0aGVpciBzZXZlcmFsIGFjdGl2ZSBzcGhlcmVzIGFzc2lnbmVkLCANCitUaWxsIGJvZHkgdXAgdG8gc3Bpcml0IHdvcmssIGluIGJvdW5kcyANCitQcm9wb3J0aW9uZWQgdG8gZWFjaCBraW5kLiAgU28gZnJvbSB0aGUgcm9vdCANCitTcHJpbmdzIGxpZ2h0ZXIgdGhlIGdyZWVuIHN0YWxrLCBmcm9tIHRoZW5jZSB0aGUgbGVhdmVzIA0KK01vcmUgYWVyeSwgbGFzdCB0aGUgYnJpZ2h0IGNvbnN1bW1hdGUgZmxvd2VyIA0KK1NwaXJpdHMgb2Rvcm91cyBicmVhdGhlczogZmxvd2VycyBhbmQgdGhlaXIgZnJ1aXQsIA0KK01hbidzIG5vdXJpc2htZW50LCBieSBncmFkdWFsIHNjYWxlIHN1YmxpbWVkLCANCitUbyB2aXRhbCBzcGlyaXRzIGFzcGlyZSwgdG8gYW5pbWFsLCANCitUbyBpbnRlbGxlY3R1YWw7IGdpdmUgYm90aCBsaWZlIGFuZCBzZW5zZSwgDQorRmFuY3kgYW5kIHVuZGVyc3RhbmRpbmc7IHdoZW5jZSB0aGUgc291bCANCitSZWFzb24gcmVjZWl2ZXMsIGFuZCByZWFzb24gaXMgaGVyIGJlaW5nLCANCitEaXNjdXJzaXZlLCBvciBpbnR1aXRpdmU7IGRpc2NvdXJzZSANCitJcyBvZnRlc3QgeW91cnMsIHRoZSBsYXR0ZXIgbW9zdCBpcyBvdXJzLCANCitEaWZmZXJpbmcgYnV0IGluIGRlZ3JlZSwgb2Yga2luZCB0aGUgc2FtZS4gDQorV29uZGVyIG5vdCB0aGVuLCB3aGF0IEdvZCBmb3IgeW91IHNhdyBnb29kIA0KK0lmIEkgcmVmdXNlIG5vdCwgYnV0IGNvbnZlcnQsIGFzIHlvdSANCitUbyBwcm9wZXIgc3Vic3RhbmNlLiAgVGltZSBtYXkgY29tZSwgd2hlbiBNZW4gDQorV2l0aCBBbmdlbHMgbWF5IHBhcnRpY2lwYXRlLCBhbmQgZmluZCANCitObyBpbmNvbnZlbmllbnQgZGlldCwgbm9yIHRvbyBsaWdodCBmYXJlOyANCitBbmQgZnJvbSB0aGVzZSBjb3Jwb3JhbCBudXRyaW1lbnRzIHBlcmhhcHMgDQorWW91ciBib2RpZXMgbWF5IGF0IGxhc3QgdHVybiBhbGwgdG8gc3Bpcml0LCANCitJbXByb3ZlZCBieSB0cmFjdCBvZiB0aW1lLCBhbmQsIHdpbmdlZCwgYXNjZW5kIA0KK0V0aGVyZWFsLCBhcyB3ZTsgb3IgbWF5LCBhdCBjaG9pY2UsIA0KK0hlcmUgb3IgaW4gaGVhdmVubHkgUGFyYWRpc2VzIGR3ZWxsOyANCitJZiB5ZSBiZSBmb3VuZCBvYmVkaWVudCwgYW5kIHJldGFpbiANCitVbmFsdGVyYWJseSBmaXJtIGhpcyBsb3ZlIGVudGlyZSwgDQorV2hvc2UgcHJvZ2VueSB5b3UgYXJlLiAgTWVhbiB3aGlsZSBlbmpveSANCitZb3VyIGZpbGwgd2hhdCBoYXBwaW5lc3MgdGhpcyBoYXBweSBzdGF0ZSANCitDYW4gY29tcHJlaGVuZCwgaW5jYXBhYmxlIG9mIG1vcmUuIA0KK1RvIHdob20gdGhlIHBhdHJpYXJjaCBvZiBtYW5raW5kIHJlcGxpZWQuIA0KK08gZmF2b3VyYWJsZSBTcGlyaXQsIHByb3BpdGlvdXMgZ3Vlc3QsIA0KK1dlbGwgaGFzdCB0aG91IHRhdWdodCB0aGUgd2F5IHRoYXQgbWlnaHQgZGlyZWN0IA0KK091ciBrbm93bGVkZ2UsIGFuZCB0aGUgc2NhbGUgb2YgbmF0dXJlIHNldCANCitGcm9tIGNlbnRlciB0byBjaXJjdW1mZXJlbmNlOyB3aGVyZW9uLCANCitJbiBjb250ZW1wbGF0aW9uIG9mIGNyZWF0ZWQgdGhpbmdzLCANCitCeSBzdGVwcyB3ZSBtYXkgYXNjZW5kIHRvIEdvZC4gIEJ1dCBzYXksIA0KK1doYXQgbWVhbnQgdGhhdCBjYXV0aW9uIGpvaW5lZCwgSWYgeWUgYmUgZm91bmQgDQorT2JlZGllbnQ/ICBDYW4gd2Ugd2FudCBvYmVkaWVuY2UgdGhlbiANCitUbyBoaW0sIG9yIHBvc3NpYmx5IGhpcyBsb3ZlIGRlc2VydCwgDQorV2hvIGZvcm1lZCB1cyBmcm9tIHRoZSBkdXN0IGFuZCBwbGFjZWQgdXMgaGVyZSANCitGdWxsIHRvIHRoZSB1dG1vc3QgbWVhc3VyZSBvZiB3aGF0IGJsaXNzIA0KK0h1bWFuIGRlc2lyZXMgY2FuIHNlZWsgb3IgYXBwcmVoZW5kPyANCitUbyB3aG9tIHRoZSBBbmdlbC4gIFNvbiBvZiBIZWF2ZW4gYW5kIEVhcnRoLCANCitBdHRlbmQhICBUaGF0IHRob3UgYXJ0IGhhcHB5LCBvd2UgdG8gR29kOyANCitUaGF0IHRob3UgY29udGludWVzdCBzdWNoLCBvd2UgdG8gdGh5c2VsZiwgDQorVGhhdCBpcywgdG8gdGh5IG9iZWRpZW5jZTsgdGhlcmVpbiBzdGFuZC4gDQorVGhpcyB3YXMgdGhhdCBjYXV0aW9uIGdpdmVuIHRoZWU7IGJlIGFkdmlzZWQuIA0KK0dvZCBtYWRlIHRoZWUgcGVyZmVjdCwgbm90IGltbXV0YWJsZTsgDQorQW5kIGdvb2QgaGUgbWFkZSB0aGVlLCBidXQgdG8gcGVyc2V2ZXJlIA0KK0hlIGxlZnQgaXQgaW4gdGh5IHBvd2VyOyBvcmRhaW5lZCB0aHkgd2lsbCANCitCeSBuYXR1cmUgZnJlZSwgbm90IG92ZXItcnVsZWQgYnkgZmF0ZSANCitJbmV4dHJpY2FibGUsIG9yIHN0cmljdCBuZWNlc3NpdHk6IA0KK091ciB2b2x1bnRhcnkgc2VydmljZSBoZSByZXF1aXJlcywgDQorTm90IG91ciBuZWNlc3NpdGF0ZWQ7IHN1Y2ggd2l0aCBoaW0gDQorRmluZHMgbm8gYWNjZXB0YW5jZSwgbm9yIGNhbiBmaW5kOyBmb3IgaG93IA0KK0NhbiBoZWFydHMsIG5vdCBmcmVlLCBiZSB0cmllZCB3aGV0aGVyIHRoZXkgc2VydmUgDQorV2lsbGluZyBvciBubywgd2hvIHdpbGwgYnV0IHdoYXQgdGhleSBtdXN0IA0KK0J5IGRlc3RpbnksIGFuZCBjYW4gbm8gb3RoZXIgY2hvb3NlPyANCitNeXNlbGYsIGFuZCBhbGwgdGhlIGFuZ2VsaWNrIGhvc3QsIHRoYXQgc3RhbmQgDQorSW4gc2lnaHQgb2YgR29kLCBlbnRocm9uZWQsIG91ciBoYXBweSBzdGF0ZSANCitIb2xkLCBhcyB5b3UgeW91cnMsIHdoaWxlIG91ciBvYmVkaWVuY2UgaG9sZHM7IA0KK09uIG90aGVyIHN1cmV0eSBub25lOiAgRnJlZWx5IHdlIHNlcnZlLCANCitCZWNhdXNlIHdlIGZyZWVseSBsb3ZlLCBhcyBpbiBvdXIgd2lsbCANCitUbyBsb3ZlIG9yIG5vdDsgaW4gdGhpcyB3ZSBzdGFuZCBvciBmYWxsOiANCitBbmQgc29tZSBhcmUgZmFsbGVuLCB0byBkaXNvYmVkaWVuY2UgZmFsbGVuLCANCitBbmQgc28gZnJvbSBIZWF2ZW4gdG8gZGVlcGVzdCBIZWxsOyBPIGZhbGwgDQorRnJvbSB3aGF0IGhpZ2ggc3RhdGUgb2YgYmxpc3MsIGludG8gd2hhdCB3b2UhIA0KK1RvIHdob20gb3VyIGdyZWF0IHByb2dlbml0b3IuICBUaHkgd29yZHMgDQorQXR0ZW50aXZlLCBhbmQgd2l0aCBtb3JlIGRlbGlnaHRlZCBlYXIsIA0KK0RpdmluZSBpbnN0cnVjdGVyLCBJIGhhdmUgaGVhcmQsIHRoYW4gd2hlbiANCitDaGVydWJpY2sgc29uZ3MgYnkgbmlnaHQgZnJvbSBuZWlnaGJvdXJpbmcgaGlsbHMgDQorQWVyZWFsIG11c2ljayBzZW5kOiAgTm9yIGtuZXcgSSBub3QgDQorVG8gYmUgYm90aCB3aWxsIGFuZCBkZWVkIGNyZWF0ZWQgZnJlZTsgDQorWWV0IHRoYXQgd2UgbmV2ZXIgc2hhbGwgZm9yZ2V0IHRvIGxvdmUgDQorT3VyIE1ha2VyLCBhbmQgb2JleSBoaW0gd2hvc2UgY29tbWFuZCANCitTaW5nbGUgaXMgeWV0IHNvIGp1c3QsIG15IGNvbnN0YW50IHRob3VnaHRzIA0KK0Fzc3VyZWQgbWUsIGFuZCBzdGlsbCBhc3N1cmU6ICBUaG91Z2ggd2hhdCB0aG91IHRlbGxlc3QgDQorSGF0aCBwYXNzZWQgaW4gSGVhdmVuLCBzb21lIGRvdWJ0IHdpdGhpbiBtZSBtb3ZlLCANCitCdXQgbW9yZSBkZXNpcmUgdG8gaGVhciwgaWYgdGhvdSBjb25zZW50LCANCitUaGUgZnVsbCByZWxhdGlvbiwgd2hpY2ggbXVzdCBuZWVkcyBiZSBzdHJhbmdlLCANCitXb3J0aHkgb2Ygc2FjcmVkIHNpbGVuY2UgdG8gYmUgaGVhcmQ7IA0KK0FuZCB3ZSBoYXZlIHlldCBsYXJnZSBkYXksIGZvciBzY2FyY2UgdGhlIHN1biANCitIYXRoIGZpbmlzaGVkIGhhbGYgaGlzIGpvdXJuZXksIGFuZCBzY2FyY2UgYmVnaW5zIA0KK0hpcyBvdGhlciBoYWxmIGluIHRoZSBncmVhdCB6b25lIG9mIEhlYXZlbi4gDQorVGh1cyBBZGFtIG1hZGUgcmVxdWVzdDsgYW5kIFJhcGhhZWwsIA0KK0FmdGVyIHNob3J0IHBhdXNlIGFzc2VudGluZywgdGh1cyBiZWdhbi4gDQorSGlnaCBtYXR0ZXIgdGhvdSBlbmpvaW5lc3QgbWUsIE8gcHJpbWUgb2YgbWVuLCANCitTYWQgdGFzayBhbmQgaGFyZDogIEZvciBob3cgc2hhbGwgSSByZWxhdGUgDQorVG8gaHVtYW4gc2Vuc2UgdGhlIGludmlzaWJsZSBleHBsb2l0cyANCitPZiB3YXJyaW5nIFNwaXJpdHM/IGhvdywgd2l0aG91dCByZW1vcnNlLCANCitUaGUgcnVpbiBvZiBzbyBtYW55IGdsb3Jpb3VzIG9uY2UgDQorQW5kIHBlcmZlY3Qgd2hpbGUgdGhleSBzdG9vZD8gaG93IGxhc3QgdW5mb2xkIA0KK1RoZSBzZWNyZXRzIG9mIGFub3RoZXIgd29ybGQsIHBlcmhhcHMgDQorTm90IGxhd2Z1bCB0byByZXZlYWw/IHlldCBmb3IgdGh5IGdvb2QgDQorVGhpcyBpcyBkaXNwZW5zZWQ7IGFuZCB3aGF0IHN1cm1vdW50cyB0aGUgcmVhY2ggDQorT2YgaHVtYW4gc2Vuc2UsIEkgc2hhbGwgZGVsaW5lYXRlIHNvLCANCitCeSBsaWtlbmluZyBzcGlyaXR1YWwgdG8gY29ycG9yYWwgZm9ybXMsIA0KK0FzIG1heSBleHByZXNzIHRoZW0gYmVzdDsgdGhvdWdoIHdoYXQgaWYgRWFydGggDQorQmUgYnV0IGEgc2hhZG93IG9mIEhlYXZlbiwgYW5kIHRoaW5ncyB0aGVyZWluIA0KK0VhY2ggdG8gb3RoZXIgbGlrZSwgbW9yZSB0aGFuIG9uIGVhcnRoIGlzIHRob3VnaHQ/IA0KK0FzIHlldCB0aGlzIHdvcmxkIHdhcyBub3QsIGFuZCBDaGFvcyB3aWxkIA0KK1JlaWduZWQgd2hlcmUgdGhlc2UgSGVhdmVucyBub3cgcm9sbCwgd2hlcmUgRWFydGggbm93IHJlc3RzIA0KK1Vwb24gaGVyIGNlbnRlciBwb2lzZWQ7IHdoZW4gb24gYSBkYXkgDQorKEZvciB0aW1lLCB0aG91Z2ggaW4gZXRlcm5pdHksIGFwcGxpZWQgDQorVG8gbW90aW9uLCBtZWFzdXJlcyBhbGwgdGhpbmdzIGR1cmFibGUgDQorQnkgcHJlc2VudCwgcGFzdCwgYW5kIGZ1dHVyZSwpIG9uIHN1Y2ggZGF5IA0KK0FzIEhlYXZlbidzIGdyZWF0IHllYXIgYnJpbmdzIGZvcnRoLCB0aGUgZW1weXJlYWwgaG9zdCANCitPZiBBbmdlbHMgYnkgaW1wZXJpYWwgc3VtbW9ucyBjYWxsZWQsIA0KK0lubnVtZXJhYmxlIGJlZm9yZSB0aGUgQWxtaWdodHkncyB0aHJvbmUgDQorRm9ydGh3aXRoLCBmcm9tIGFsbCB0aGUgZW5kcyBvZiBIZWF2ZW4sIGFwcGVhcmVkIA0KK1VuZGVyIHRoZWlyIEhpZXJhcmNocyBpbiBvcmRlcnMgYnJpZ2h0OiANCitUZW4gdGhvdXNhbmQgdGhvdXNhbmQgZW5zaWducyBoaWdoIGFkdmFuY2VkLCANCitTdGFuZGFyZHMgYW5kIGdvbmZhbG9ucyAndHdpeHQgdmFuIGFuZCByZWFyIA0KK1N0cmVhbSBpbiB0aGUgYWlyLCBhbmQgZm9yIGRpc3RpbmN0aW9uIHNlcnZlIA0KK09mIGhpZXJhcmNoaWVzLCBvZiBvcmRlcnMsIGFuZCBkZWdyZWVzOyANCitPciBpbiB0aGVpciBnbGl0dGVyaW5nIHRpc3N1ZXMgYmVhciBpbWJsYXplZCANCitIb2x5IG1lbW9yaWFscywgYWN0cyBvZiB6ZWFsIGFuZCBsb3ZlIA0KK1JlY29yZGVkIGVtaW5lbnQuICBUaHVzIHdoZW4gaW4gb3JicyANCitPZiBjaXJjdWl0IGluZXhwcmVzc2libGUgdGhleSBzdG9vZCwgDQorT3JiIHdpdGhpbiBvcmIsIHRoZSBGYXRoZXIgSW5maW5pdGUsIA0KK0J5IHdob20gaW4gYmxpc3MgaW1ib3NvbWVkIHNhdCB0aGUgU29uLCANCitBbWlkc3QgYXMgZnJvbSBhIGZsYW1pbmcgbW91bnQsIHdob3NlIHRvcCANCitCcmlnaHRuZXNzIGhhZCBtYWRlIGludmlzaWJsZSwgdGh1cyBzcGFrZS4gDQorSGVhciwgYWxsIHllIEFuZ2VscywgcHJvZ2VueSBvZiBsaWdodCwgDQorVGhyb25lcywgRG9taW5hdGlvbnMsIFByaW5jZWRvbXMsIFZpcnR1ZXMsIFBvd2VyczsgDQorSGVhciBteSBkZWNyZWUsIHdoaWNoIHVucmV2b2tlZCBzaGFsbCBzdGFuZC4gDQorVGhpcyBkYXkgSSBoYXZlIGJlZ290IHdob20gSSBkZWNsYXJlIA0KK015IG9ubHkgU29uLCBhbmQgb24gdGhpcyBob2x5IGhpbGwgDQorSGltIGhhdmUgYW5vaW50ZWQsIHdob20geWUgbm93IGJlaG9sZCANCitBdCBteSByaWdodCBoYW5kOyB5b3VyIGhlYWQgSSBoaW0gYXBwb2ludDsgDQorQW5kIGJ5IG15c2VsZiBoYXZlIHN3b3JuLCB0byBoaW0gc2hhbGwgYm93IA0KK0FsbCBrbmVlcyBpbiBIZWF2ZW4sIGFuZCBzaGFsbCBjb25mZXNzIGhpbSBMb3JkOiANCitVbmRlciBoaXMgZ3JlYXQgdmljZS1nZXJlbnQgcmVpZ24gYWJpZGUgDQorVW5pdGVkLCBhcyBvbmUgaW5kaXZpZHVhbCBzb3VsLCANCitGb3IgZXZlciBoYXBweTogIEhpbSB3aG8gZGlzb2JleXMsIA0KK01lIGRpc29iZXlzLCBicmVha3MgdW5pb24sIGFuZCB0aGF0IGRheSwgDQorQ2FzdCBvdXQgZnJvbSBHb2QgYW5kIGJsZXNzZWQgdmlzaW9uLCBmYWxscyANCitJbnRvIHV0dGVyIGRhcmtuZXNzLCBkZWVwIGluZ3VsZmVkLCBoaXMgcGxhY2UgDQorT3JkYWluZWQgd2l0aG91dCByZWRlbXB0aW9uLCB3aXRob3V0IGVuZC4gDQorU28gc3Bha2UgdGhlIE9tbmlwb3RlbnQsIGFuZCB3aXRoIGhpcyB3b3JkcyANCitBbGwgc2VlbWVkIHdlbGwgcGxlYXNlZDsgYWxsIHNlZW1lZCwgYnV0IHdlcmUgbm90IGFsbC4gDQorVGhhdCBkYXksIGFzIG90aGVyIHNvbGVtbiBkYXlzLCB0aGV5IHNwZW50IA0KK0luIHNvbmcgYW5kIGRhbmNlIGFib3V0IHRoZSBzYWNyZWQgaGlsbDsgDQorTXlzdGljYWwgZGFuY2UsIHdoaWNoIHlvbmRlciBzdGFycnkgc3BoZXJlIA0KK09mIHBsYW5ldHMsIGFuZCBvZiBmaXhlZCwgaW4gYWxsIGhlciB3aGVlbHMgDQorUmVzZW1ibGVzIG5lYXJlc3QsIG1hemVzIGludHJpY2F0ZSwgDQorRWNjZW50cmljaywgaW50ZXJ2b2x2ZWQsIHlldCByZWd1bGFyIA0KK1RoZW4gbW9zdCwgd2hlbiBtb3N0IGlycmVndWxhciB0aGV5IHNlZW07IA0KK0FuZCBpbiB0aGVpciBtb3Rpb25zIGhhcm1vbnkgZGl2aW5lIA0KK1NvIHNtb290aHMgaGVyIGNoYXJtaW5nIHRvbmVzLCB0aGF0IEdvZCdzIG93biBlYXIgDQorTGlzdGVucyBkZWxpZ2h0ZWQuICBFdmVuaW5nIG5vdyBhcHByb2FjaGVkLCANCisoRm9yIHdlIGhhdmUgYWxzbyBvdXIgZXZlbmluZyBhbmQgb3VyIG1vcm4sIA0KK1dlIG91cnMgZm9yIGNoYW5nZSBkZWxlY3RhYmxlLCBub3QgbmVlZDspIA0KK0ZvcnRod2l0aCBmcm9tIGRhbmNlIHRvIHN3ZWV0IHJlcGFzdCB0aGV5IHR1cm4gDQorRGVzaXJvdXM7IGFsbCBpbiBjaXJjbGVzIGFzIHRoZXkgc3Rvb2QsIA0KK1RhYmxlcyBhcmUgc2V0LCBhbmQgb24gYSBzdWRkZW4gcGlsZWQgDQorV2l0aCBBbmdlbHMgZm9vZCwgYW5kIHJ1YmllZCBuZWN0YXIgZmxvd3MgDQorSW4gcGVhcmwsIGluIGRpYW1vbmQsIGFuZCBtYXNzeSBnb2xkLCANCitGcnVpdCBvZiBkZWxpY2lvdXMgdmluZXMsIHRoZSBncm93dGggb2YgSGVhdmVuLiANCitPbiBmbG93ZXJzIHJlcG9zZWQsIGFuZCB3aXRoIGZyZXNoIGZsb3dlcmV0cyBjcm93bmVkLCANCitUaGV5IGVhdCwgdGhleSBkcmluaywgYW5kIGluIGNvbW11bmlvbiBzd2VldCANCitRdWFmZiBpbW1vcnRhbGl0eSBhbmQgam95LCBzZWN1cmUgDQorT2Ygc3VyZmVpdCwgd2hlcmUgZnVsbCBtZWFzdXJlIG9ubHkgYm91bmRzIA0KK0V4Y2VzcywgYmVmb3JlIHRoZSBhbGwtYm91bnRlb3VzIEtpbmcsIHdobyBzaG93ZXJlZCANCitXaXRoIGNvcGlvdXMgaGFuZCwgcmVqb2ljaW5nIGluIHRoZWlyIGpveS4gDQorTm93IHdoZW4gYW1icm9zaWFsIG5pZ2h0IHdpdGggY2xvdWRzIGV4aGFsZWQgDQorRnJvbSB0aGF0IGhpZ2ggbW91bnQgb2YgR29kLCB3aGVuY2UgbGlnaHQgYW5kIHNoYWRlIA0KK1NwcmluZyBib3RoLCB0aGUgZmFjZSBvZiBicmlnaHRlc3QgSGVhdmVuIGhhZCBjaGFuZ2VkIA0KK1RvIGdyYXRlZnVsIHR3aWxpZ2h0LCAoZm9yIG5pZ2h0IGNvbWVzIG5vdCB0aGVyZSANCitJbiBkYXJrZXIgdmVpbCwpIGFuZCByb3NlYXQgZGV3cyBkaXNwb3NlZCANCitBbGwgYnV0IHRoZSB1bnNsZWVwaW5nIGV5ZXMgb2YgR29kIHRvIHJlc3Q7IA0KK1dpZGUgb3ZlciBhbGwgdGhlIHBsYWluLCBhbmQgd2lkZXIgZmFyIA0KK1RoYW4gYWxsIHRoaXMgZ2xvYm91cyBlYXJ0aCBpbiBwbGFpbiBvdXRzcHJlYWQsIA0KKyhTdWNoIGFyZSB0aGUgY291cnRzIG9mIEdvZCkgdGhlIGFuZ2VsaWNrIHRocm9uZywgDQorRGlzcGVyc2VkIGluIGJhbmRzIGFuZCBmaWxlcywgdGhlaXIgY2FtcCBleHRlbmQgDQorQnkgbGl2aW5nIHN0cmVhbXMgYW1vbmcgdGhlIHRyZWVzIG9mIGxpZmUsIA0KK1BhdmlsaW9ucyBudW1iZXJsZXNzLCBhbmQgc3VkZGVuIHJlYXJlZCwgDQorQ2VsZXN0aWFsIHRhYmVybmFjbGVzLCB3aGVyZSB0aGV5IHNsZXB0IA0KK0Zhbm5lZCB3aXRoIGNvb2wgd2luZHM7IHNhdmUgdGhvc2UsIHdobywgaW4gdGhlaXIgY291cnNlLCANCitNZWxvZGlvdXMgaHltbnMgYWJvdXQgdGhlIHNvdnJhbiB0aHJvbmUgDQorQWx0ZXJuYXRlIGFsbCBuaWdodCBsb25nOiBidXQgbm90IHNvIHdha2VkIA0KK1NhdGFuOyBzbyBjYWxsIGhpbSBub3csIGhpcyBmb3JtZXIgbmFtZSANCitJcyBoZWFyZCBubyBtb3JlIGluIEhlYXZlbjsgaGUgb2YgdGhlIGZpcnN0LCANCitJZiBub3QgdGhlIGZpcnN0IEFyY2gtQW5nZWwsIGdyZWF0IGluIHBvd2VyLCANCitJbiBmYXZvdXIgYW5kIHByZS1lbWluZW5jZSwgeWV0IGZyYXVnaHQgDQorV2l0aCBlbnZ5IGFnYWluc3QgdGhlIFNvbiBvZiBHb2QsIHRoYXQgZGF5IA0KK0hvbm91cmVkIGJ5IGhpcyBncmVhdCBGYXRoZXIsIGFuZCBwcm9jbGFpbWVkIA0KK01lc3NpYWggS2luZyBhbm9pbnRlZCwgY291bGQgbm90IGJlYXIgDQorVGhyb3VnaCBwcmlkZSB0aGF0IHNpZ2h0LCBhbmQgdGhvdWdodCBoaW1zZWxmIGltcGFpcmVkLiANCitEZWVwIG1hbGljZSB0aGVuY2UgY29uY2VpdmluZyBhbmQgZGlzZGFpbiwgDQorU29vbiBhcyBtaWRuaWdodCBicm91Z2h0IG9uIHRoZSBkdXNreSBob3VyIA0KK0ZyaWVuZGxpZXN0IHRvIHNsZWVwIGFuZCBzaWxlbmNlLCBoZSByZXNvbHZlZCANCitXaXRoIGFsbCBoaXMgbGVnaW9ucyB0byBkaXNsb2RnZSwgYW5kIGxlYXZlIA0KK1Vud29yc2hpcHQsIHVub2JleWVkLCB0aGUgdGhyb25lIHN1cHJlbWUsIA0KK0NvbnRlbXB0dW91czsgYW5kIGhpcyBuZXh0IHN1Ym9yZGluYXRlIA0KK0F3YWtlbmluZywgdGh1cyB0byBoaW0gaW4gc2VjcmV0IHNwYWtlLiANCitTbGVlcGVzdCB0aG91LCBDb21wYW5pb24gZGVhcj8gIFdoYXQgc2xlZXAgY2FuIGNsb3NlIA0KK1RoeSBleWUtbGlkcz8gYW5kIHJlbWVtYmVyZXN0IHdoYXQgZGVjcmVlIA0KK09mIHllc3RlcmRheSwgc28gbGF0ZSBoYXRoIHBhc3NlZCB0aGUgbGlwcyANCitPZiBIZWF2ZW4ncyBBbG1pZ2h0eS4gIFRob3UgdG8gbWUgdGh5IHRob3VnaHRzIA0KK1dhc3Qgd29udCwgSSBtaW5lIHRvIHRoZWUgd2FzIHdvbnQgdG8gaW1wYXJ0OyANCitCb3RoIHdha2luZyB3ZSB3ZXJlIG9uZTsgaG93IHRoZW4gY2FuIG5vdyANCitUaHkgc2xlZXAgZGlzc2VudD8gIE5ldyBsYXdzIHRob3Ugc2Vlc3QgaW1wb3NlZDsgDQorTmV3IGxhd3MgZnJvbSBoaW0gd2hvIHJlaWducywgbmV3IG1pbmRzIG1heSByYWlzZSANCitJbiB1cyB3aG8gc2VydmUsIG5ldyBjb3Vuc2VscyB0byBkZWJhdGUgDQorV2hhdCBkb3VidGZ1bCBtYXkgZW5zdWU6ICBNb3JlIGluIHRoaXMgcGxhY2UgDQorVG8gdXR0ZXIgaXMgbm90IHNhZmUuICBBc3NlbWJsZSB0aG91IA0KK09mIGFsbCB0aG9zZSBteXJpYWRzIHdoaWNoIHdlIGxlYWQgdGhlIGNoaWVmOyANCitUZWxsIHRoZW0sIHRoYXQgYnkgY29tbWFuZCwgZXJlIHlldCBkaW0gbmlnaHQgDQorSGVyIHNoYWRvd3kgY2xvdWQgd2l0aGRyYXdzLCBJIGFtIHRvIGhhc3RlLCANCitBbmQgYWxsIHdobyB1bmRlciBtZSB0aGVpciBiYW5uZXJzIHdhdmUsIA0KK0hvbWV3YXJkLCB3aXRoIGZseWluZyBtYXJjaCwgd2hlcmUgd2UgcG9zc2VzcyANCitUaGUgcXVhcnRlcnMgb2YgdGhlIG5vcnRoOyB0aGVyZSB0byBwcmVwYXJlIA0KK0ZpdCBlbnRlcnRhaW5tZW50IHRvIHJlY2VpdmUgb3VyIEtpbmcsIA0KK1RoZSBncmVhdCBNZXNzaWFoLCBhbmQgaGlzIG5ldyBjb21tYW5kcywgDQorV2hvIHNwZWVkaWx5IHRocm91Z2ggYWxsIHRoZSBoaWVyYXJjaGllcyANCitJbnRlbmRzIHRvIHBhc3MgdHJpdW1waGFudCwgYW5kIGdpdmUgbGF3cy4gDQorU28gc3Bha2UgdGhlIGZhbHNlIEFyY2gtQW5nZWwsIGFuZCBpbmZ1c2VkIA0KK0JhZCBpbmZsdWVuY2UgaW50byB0aGUgdW53YXJ5IGJyZWFzdCANCitPZiBoaXMgYXNzb2NpYXRlOiAgSGUgdG9nZXRoZXIgY2FsbHMsIA0KK09yIHNldmVyYWwgb25lIGJ5IG9uZSwgdGhlIHJlZ2VudCBQb3dlcnMsIA0KK1VuZGVyIGhpbSBSZWdlbnQ7IHRlbGxzLCBhcyBoZSB3YXMgdGF1Z2h0LCANCitUaGF0IHRoZSBNb3N0IEhpZ2ggY29tbWFuZGluZywgbm93IGVyZSBuaWdodCwgDQorTm93IGVyZSBkaW0gbmlnaHQgaGFkIGRpc2luY3VtYmVyZWQgSGVhdmVuLCANCitUaGUgZ3JlYXQgaGllcmFyY2hhbCBzdGFuZGFyZCB3YXMgdG8gbW92ZTsgDQorVGVsbHMgdGhlIHN1Z2dlc3RlZCBjYXVzZSwgYW5kIGNhc3RzIGJldHdlZW4gDQorQW1iaWd1b3VzIHdvcmRzIGFuZCBqZWFsb3VzaWVzLCB0byBzb3VuZCANCitPciB0YWludCBpbnRlZ3JpdHk6ICBCdXQgYWxsIG9iZXllZCANCitUaGUgd29udGVkIHNpZ25hbCwgYW5kIHN1cGVyaW91ciB2b2ljZSANCitPZiB0aGVpciBncmVhdCBQb3RlbnRhdGU7IGZvciBncmVhdCBpbmRlZWQgDQorSGlzIG5hbWUsIGFuZCBoaWdoIHdhcyBoaXMgZGVncmVlIGluIEhlYXZlbjsgDQorSGlzIGNvdW50ZW5hbmNlLCBhcyB0aGUgbW9ybmluZy1zdGFyIHRoYXQgZ3VpZGVzIA0KK1RoZSBzdGFycnkgZmxvY2ssIGFsbHVyZWQgdGhlbSwgYW5kIHdpdGggbGllcyANCitEcmV3IGFmdGVyIGhpbSB0aGUgdGhpcmQgcGFydCBvZiBIZWF2ZW4ncyBob3N0LiANCitNZWFuIHdoaWxlIHRoZSBFdGVybmFsIGV5ZSwgd2hvc2Ugc2lnaHQgZGlzY2VybnMgDQorQWJzdHJ1c2VzdCB0aG91Z2h0cywgZnJvbSBmb3J0aCBoaXMgaG9seSBtb3VudCwgDQorQW5kIGZyb20gd2l0aGluIHRoZSBnb2xkZW4gbGFtcHMgdGhhdCBidXJuIA0KK05pZ2h0bHkgYmVmb3JlIGhpbSwgc2F3IHdpdGhvdXQgdGhlaXIgbGlnaHQgDQorUmViZWxsaW9uIHJpc2luZzsgc2F3IGluIHdob20sIGhvdyBzcHJlYWQgDQorQW1vbmcgdGhlIHNvbnMgb2YgbW9ybiwgd2hhdCBtdWx0aXR1ZGVzIA0KK1dlcmUgYmFuZGVkIHRvIG9wcG9zZSBoaXMgaGlnaCBkZWNyZWU7IA0KK0FuZCwgc21pbGluZywgdG8gaGlzIG9ubHkgU29uIHRodXMgc2FpZC4gDQorU29uLCB0aG91IGluIHdob20gbXkgZ2xvcnkgSSBiZWhvbGQgDQorSW4gZnVsbCByZXNwbGVuZGVuY2UsIEhlaXIgb2YgYWxsIG15IG1pZ2h0LCANCitOZWFybHkgaXQgbm93IGNvbmNlcm5zIHVzIHRvIGJlIHN1cmUgDQorT2Ygb3VyIE9tbmlwb3RlbmNlLCBhbmQgd2l0aCB3aGF0IGFybXMgDQorV2UgbWVhbiB0byBob2xkIHdoYXQgYW5jaWVudGx5IHdlIGNsYWltIA0KK09mIGRlaXR5IG9yIGVtcGlyZTogIFN1Y2ggYSBmb2UgDQorSXMgcmlzaW5nLCB3aG8gaW50ZW5kcyB0byBlcmVjdCBoaXMgdGhyb25lIA0KK0VxdWFsIHRvIG91cnMsIHRocm91Z2hvdXQgdGhlIHNwYWNpb3VzIG5vcnRoOyANCitOb3Igc28gY29udGVudCwgaGF0aCBpbiBoaXMgdGhvdWdodCB0byB0cnkgDQorSW4gYmF0dGxlLCB3aGF0IG91ciBwb3dlciBpcywgb3Igb3VyIHJpZ2h0LiANCitMZXQgdXMgYWR2aXNlLCBhbmQgdG8gdGhpcyBoYXphcmQgZHJhdyANCitXaXRoIHNwZWVkIHdoYXQgZm9yY2UgaXMgbGVmdCwgYW5kIGFsbCBlbXBsb3kgDQorSW4gb3VyIGRlZmVuY2U7IGxlc3QgdW5hd2FyZXMgd2UgbG9zZSANCitUaGlzIG91ciBoaWdoIHBsYWNlLCBvdXIgc2FuY3R1YXJ5LCBvdXIgaGlsbC4gDQorVG8gd2hvbSB0aGUgU29uIHdpdGggY2FsbSBhc3BlY3QgYW5kIGNsZWFyLCANCitMaWdodG5pbmcgZGl2aW5lLCBpbmVmZmFibGUsIHNlcmVuZSwgDQorTWFkZSBhbnN3ZXIuICBNaWdodHkgRmF0aGVyLCB0aG91IHRoeSBmb2VzIA0KK0p1c3RseSBoYXN0IGluIGRlcmlzaW9uLCBhbmQsIHNlY3VyZSwgDQorTGF1Z2hlc3QgYXQgdGhlaXIgdmFpbiBkZXNpZ25zIGFuZCB0dW11bHRzIHZhaW4sIA0KK01hdHRlciB0byBtZSBvZiBnbG9yeSwgd2hvbSB0aGVpciBoYXRlIA0KK0lsbHVzdHJhdGVzLCB3aGVuIHRoZXkgc2VlIGFsbCByZWdhbCBwb3dlciANCitHaXZlbiBtZSB0byBxdWVsbCB0aGVpciBwcmlkZSwgYW5kIGluIGV2ZW50IA0KK0tub3cgd2hldGhlciBJIGJlIGRleHRyb3VzIHRvIHN1YmR1ZSANCitUaHkgcmViZWxzLCBvciBiZSBmb3VuZCB0aGUgd29yc3QgaW4gSGVhdmVuLiANCitTbyBzcGFrZSB0aGUgU29uOyBidXQgU2F0YW4sIHdpdGggaGlzIFBvd2VycywgDQorRmFyIHdhcyBhZHZhbmNlZCBvbiB3aW5nZWQgc3BlZWQ7IGFuIGhvc3QgDQorSW5udW1lcmFibGUgYXMgdGhlIHN0YXJzIG9mIG5pZ2h0LCANCitPciBzdGFycyBvZiBtb3JuaW5nLCBkZXctZHJvcHMsIHdoaWNoIHRoZSBzdW4gDQorSW1wZWFybHMgb24gZXZlcnkgbGVhZiBhbmQgZXZlcnkgZmxvd2VyLiANCitSZWdpb25zIHRoZXkgcGFzc2VkLCB0aGUgbWlnaHR5IHJlZ2VuY2llcyANCitPZiBTZXJhcGhpbSwgYW5kIFBvdGVudGF0ZXMsIGFuZCBUaHJvbmVzLCANCitJbiB0aGVpciB0cmlwbGUgZGVncmVlczsgcmVnaW9ucyB0byB3aGljaCANCitBbGwgdGh5IGRvbWluaW9uLCBBZGFtLCBpcyBubyBtb3JlIA0KK1RoYW4gd2hhdCB0aGlzIGdhcmRlbiBpcyB0byBhbGwgdGhlIGVhcnRoLCANCitBbmQgYWxsIHRoZSBzZWEsIGZyb20gb25lIGVudGlyZSBnbG9ib3NlIA0KK1N0cmV0Y2hlZCBpbnRvIGxvbmdpdHVkZTsgd2hpY2ggaGF2aW5nIHBhc3NlZCwgDQorQXQgbGVuZ3RoIGludG8gdGhlIGxpbWl0cyBvZiB0aGUgbm9ydGggDQorVGhleSBjYW1lOyBhbmQgU2F0YW4gdG8gaGlzIHJveWFsIHNlYXQgDQorSGlnaCBvbiBhIGhpbGwsIGZhciBibGF6aW5nLCBhcyBhIG1vdW50IA0KK1JhaXNlZCBvbiBhIG1vdW50LCB3aXRoIHB5cmFtaWRzIGFuZCB0b3dlcnMgDQorRnJvbSBkaWFtb25kIHF1YXJyaWVzIGhld24sIGFuZCByb2NrcyBvZiBnb2xkOyANCitUaGUgcGFsYWNlIG9mIGdyZWF0IEx1Y2lmZXIsIChzbyBjYWxsIA0KK1RoYXQgc3RydWN0dXJlIGluIHRoZSBkaWFsZWN0IG9mIG1lbiANCitJbnRlcnByZXRlZCwpIHdoaWNoIG5vdCBsb25nIGFmdGVyLCBoZSANCitBZmZlY3RpbmcgYWxsIGVxdWFsaXR5IHdpdGggR29kLCANCitJbiBpbWl0YXRpb24gb2YgdGhhdCBtb3VudCB3aGVyZW9uIA0KK01lc3NpYWggd2FzIGRlY2xhcmVkIGluIHNpZ2h0IG9mIEhlYXZlbiwgDQorVGhlIE1vdW50YWluIG9mIHRoZSBDb25ncmVnYXRpb24gY2FsbGVkOyANCitGb3IgdGhpdGhlciBoZSBhc3NlbWJsZWQgYWxsIGhpcyB0cmFpbiwgDQorUHJldGVuZGluZyBzbyBjb21tYW5kZWQgdG8gY29uc3VsdCANCitBYm91dCB0aGUgZ3JlYXQgcmVjZXB0aW9uIG9mIHRoZWlyIEtpbmcsIA0KK1RoaXRoZXIgdG8gY29tZSwgYW5kIHdpdGggY2FsdW1uaW91cyBhcnQgDQorT2YgY291bnRlcmZlaXRlZCB0cnV0aCB0aHVzIGhlbGQgdGhlaXIgZWFycy4gDQorVGhyb25lcywgRG9taW5hdGlvbnMsIFByaW5jZWRvbXMsIFZpcnR1ZXMsIFBvd2VyczsgDQorSWYgdGhlc2UgbWFnbmlmaWNrIHRpdGxlcyB5ZXQgcmVtYWluIA0KK05vdCBtZXJlbHkgdGl0dWxhciwgc2luY2UgYnkgZGVjcmVlIA0KK0Fub3RoZXIgbm93IGhhdGggdG8gaGltc2VsZiBlbmdyb3NzZWQgDQorQWxsIHBvd2VyLCBhbmQgdXMgZWNsaXBzZWQgdW5kZXIgdGhlIG5hbWUgDQorT2YgS2luZyBhbm9pbnRlZCwgZm9yIHdob20gYWxsIHRoaXMgaGFzdGUgDQorT2YgbWlkbmlnaHQtbWFyY2gsIGFuZCBodXJyaWVkIG1lZXRpbmcgaGVyZSwgDQorVGhpcyBvbmx5IHRvIGNvbnN1bHQgaG93IHdlIG1heSBiZXN0LCANCitXaXRoIHdoYXQgbWF5IGJlIGRldmlzZWQgb2YgaG9ub3VycyBuZXcsIA0KK1JlY2VpdmUgaGltIGNvbWluZyB0byByZWNlaXZlIGZyb20gdXMgDQorS25lZS10cmlidXRlIHlldCB1bnBhaWQsIHByb3N0cmF0aW9uIHZpbGUhIA0KK1RvbyBtdWNoIHRvIG9uZSEgYnV0IGRvdWJsZSBob3cgZW5kdXJlZCwgDQorVG8gb25lLCBhbmQgdG8gaGlzIGltYWdlIG5vdyBwcm9jbGFpbWVkPyANCitCdXQgd2hhdCBpZiBiZXR0ZXIgY291bnNlbHMgbWlnaHQgZXJlY3QgDQorT3VyIG1pbmRzLCBhbmQgdGVhY2ggdXMgdG8gY2FzdCBvZmYgdGhpcyB5b2tlPyANCitXaWxsIHllIHN1Ym1pdCB5b3VyIG5lY2tzLCBhbmQgY2hvb3NlIHRvIGJlbmQgDQorVGhlIHN1cHBsZSBrbmVlPyAgWWUgd2lsbCBub3QsIGlmIEkgdHJ1c3QgDQorVG8ga25vdyB5ZSByaWdodCwgb3IgaWYgeWUga25vdyB5b3Vyc2VsdmVzIA0KK05hdGl2ZXMgYW5kIHNvbnMgb2YgSGVhdmVuIHBvc3Nlc3NlZCBiZWZvcmUgDQorQnkgbm9uZTsgYW5kIGlmIG5vdCBlcXVhbCBhbGwsIHlldCBmcmVlLCANCitFcXVhbGx5IGZyZWU7IGZvciBvcmRlcnMgYW5kIGRlZ3JlZXMgDQorSmFyIG5vdCB3aXRoIGxpYmVydHksIGJ1dCB3ZWxsIGNvbnNpc3QuIA0KK1dobyBjYW4gaW4gcmVhc29uIHRoZW4sIG9yIHJpZ2h0LCBhc3N1bWUgDQorTW9uYXJjaHkgb3ZlciBzdWNoIGFzIGxpdmUgYnkgcmlnaHQgDQorSGlzIGVxdWFscywgaWYgaW4gcG93ZXIgYW5kIHNwbGVuZG91ciBsZXNzLCANCitJbiBmcmVlZG9tIGVxdWFsPyBvciBjYW4gaW50cm9kdWNlIA0KK0xhdyBhbmQgZWRpY3Qgb24gdXMsIHdobyB3aXRob3V0IGxhdyANCitFcnIgbm90PyBtdWNoIGxlc3MgZm9yIHRoaXMgdG8gYmUgb3VyIExvcmQsIA0KK0FuZCBsb29rIGZvciBhZG9yYXRpb24sIHRvIHRoZSBhYnVzZSANCitPZiB0aG9zZSBpbXBlcmlhbCB0aXRsZXMsIHdoaWNoIGFzc2VydCANCitPdXIgYmVpbmcgb3JkYWluZWQgdG8gZ292ZXJuLCBub3QgdG8gc2VydmUuIA0KK1RodXMgZmFyIGhpcyBib2xkIGRpc2NvdXJzZSB3aXRob3V0IGNvbnRyb3VsIA0KK0hhZCBhdWRpZW5jZTsgd2hlbiBhbW9uZyB0aGUgU2VyYXBoaW0gDQorQWJkaWVsLCB0aGFuIHdob20gbm9uZSB3aXRoIG1vcmUgemVhbCBhZG9yZWQgDQorVGhlIERlaXR5LCBhbmQgZGl2aW5lIGNvbW1hbmRzIG9iZXllZCwgDQorU3Rvb2QgdXAsIGFuZCBpbiBhIGZsYW1lIG9mIHplYWwgc2V2ZXJlIA0KK1RoZSBjdXJyZW50IG9mIGhpcyBmdXJ5IHRodXMgb3Bwb3NlZC4gDQorTyBhcmd1bWVudCBibGFzcGhlbW91cywgZmFsc2UsIGFuZCBwcm91ZCEgDQorV29yZHMgd2hpY2ggbm8gZWFyIGV2ZXIgdG8gaGVhciBpbiBIZWF2ZW4gDQorRXhwZWN0ZWQsIGxlYXN0IG9mIGFsbCBmcm9tIHRoZWUsICBJbmdyYXRlLCANCitJbiBwbGFjZSB0aHlzZWxmIHNvIGhpZ2ggYWJvdmUgdGh5IHBlZXJzLiANCitDYW5zdCB0aG91IHdpdGggaW1waW91cyBvYmxvcXV5IGNvbmRlbW4gDQorVGhlIGp1c3QgZGVjcmVlIG9mIEdvZCwgcHJvbm91bmNlZCBhbmQgc3dvcm4sIA0KK1RoYXQgdG8gaGlzIG9ubHkgU29uLCBieSByaWdodCBlbmR1ZWQgDQorV2l0aCByZWdhbCBzY2VwdGVyLCBldmVyeSBzb3VsIGluIEhlYXZlbiANCitTaGFsbCBiZW5kIHRoZSBrbmVlLCBhbmQgaW4gdGhhdCBob25vdXIgZHVlIA0KK0NvbmZlc3MgaGltIHJpZ2h0ZnVsIEtpbmc/IHVuanVzdCwgdGhvdSBzYXllc3QsIA0KK0ZsYXRseSB1bmp1c3QsIHRvIGJpbmQgd2l0aCBsYXdzIHRoZSBmcmVlLCANCitBbmQgZXF1YWwgb3ZlciBlcXVhbHMgdG8gbGV0IHJlaWduLCANCitPbmUgb3ZlciBhbGwgd2l0aCB1bnN1Y2NlZWRlZCBwb3dlci4gDQorU2hhbHQgdGhvdSBnaXZlIGxhdyB0byBHb2Q/IHNoYWx0IHRob3UgZGlzcHV0ZSANCitXaXRoIGhpbSB0aGUgcG9pbnRzIG9mIGxpYmVydHksIHdobyBtYWRlIA0KK1RoZWUgd2hhdCB0aG91IGFydCwgYW5kIGZvcm1lZCB0aGUgUG93ZXJzIG9mIEhlYXZlbiANCitTdWNoIGFzIGhlIHBsZWFzZWQsIGFuZCBjaXJjdW1zY3JpYmVkIHRoZWlyIGJlaW5nPyANCitZZXQsIGJ5IGV4cGVyaWVuY2UgdGF1Z2h0LCB3ZSBrbm93IGhvdyBnb29kLCANCitBbmQgb2Ygb3VyIGdvb2QgYW5kIG9mIG91ciBkaWduaXR5IA0KK0hvdyBwcm92aWRlbnQgaGUgaXM7IGhvdyBmYXIgZnJvbSB0aG91Z2h0IA0KK1RvIG1ha2UgdXMgbGVzcywgYmVudCByYXRoZXIgdG8gZXhhbHQgDQorT3VyIGhhcHB5IHN0YXRlLCB1bmRlciBvbmUgaGVhZCBtb3JlIG5lYXIgDQorVW5pdGVkLiAgQnV0IHRvIGdyYW50IGl0IHRoZWUgdW5qdXN0LCANCitUaGF0IGVxdWFsIG92ZXIgZXF1YWxzIG1vbmFyY2ggcmVpZ246IA0KK1RoeXNlbGYsIHRob3VnaCBncmVhdCBhbmQgZ2xvcmlvdXMsIGRvc3QgdGhvdSBjb3VudCwgDQorT3IgYWxsIGFuZ2VsaWNrIG5hdHVyZSBqb2luZWQgaW4gb25lLCANCitFcXVhbCB0byBoaW0gYmVnb3R0ZW4gU29uPyBieSB3aG9tLCANCitBcyBieSBoaXMgV29yZCwgdGhlIE1pZ2h0eSBGYXRoZXIgbWFkZSANCitBbGwgdGhpbmdzLCBldmVuIHRoZWU7IGFuZCBhbGwgdGhlIFNwaXJpdHMgb2YgSGVhdmVuIA0KK0J5IGhpbSBjcmVhdGVkIGluIHRoZWlyIGJyaWdodCBkZWdyZWVzLCANCitDcm93bmVkIHRoZW0gd2l0aCBnbG9yeSwgYW5kIHRvIHRoZWlyIGdsb3J5IG5hbWVkIA0KK1Rocm9uZXMsIERvbWluYXRpb25zLCBQcmluY2Vkb21zLCBWaXJ0dWVzLCBQb3dlcnMsIA0KK0Vzc2VudGlhbCBQb3dlcnM7IG5vciBieSBoaXMgcmVpZ24gb2JzY3VyZWQsIA0KK0J1dCBtb3JlIGlsbHVzdHJpb3VzIG1hZGU7IHNpbmNlIGhlIHRoZSBoZWFkIA0KK09uZSBvZiBvdXIgbnVtYmVyIHRodXMgcmVkdWNlZCBiZWNvbWVzOyANCitIaXMgbGF3cyBvdXIgbGF3czsgYWxsIGhvbm91ciB0byBoaW0gZG9uZSANCitSZXR1cm5zIG91ciBvd24uICBDZWFzZSB0aGVuIHRoaXMgaW1waW91cyByYWdlLCANCitBbmQgdGVtcHQgbm90IHRoZXNlOyBidXQgaGFzdGVuIHRvIGFwcGVhc2UgDQorVGhlIGluY2Vuc2VkIEZhdGhlciwgYW5kIHRoZSBpbmNlbnNlZCBTb24sIA0KK1doaWxlIHBhcmRvbiBtYXkgYmUgZm91bmQgaW4gdGltZSBiZXNvdWdodC4gDQorU28gc3Bha2UgdGhlIGZlcnZlbnQgQW5nZWw7IGJ1dCBoaXMgemVhbCANCitOb25lIHNlY29uZGVkLCBhcyBvdXQgb2Ygc2Vhc29uIGp1ZGdlZCwgDQorT3Igc2luZ3VsYXIgYW5kIHJhc2g6ICBXaGVyZWF0IHJlam9pY2VkIA0KK1RoZSBBcG9zdGF0ZSwgYW5kLCBtb3JlIGhhdWdodHksIHRodXMgcmVwbGllZC4gDQorVGhhdCB3ZSB3ZXJlIGZvcm1lZCB0aGVuIHNheWVzdCB0aG91PyBhbmQgdGhlIHdvcmsgDQorT2Ygc2Vjb25kYXJ5IGhhbmRzLCBieSB0YXNrIHRyYW5zZmVycmVkIA0KK0Zyb20gRmF0aGVyIHRvIGhpcyBTb24/IHN0cmFuZ2UgcG9pbnQgYW5kIG5ldyEgDQorRG9jdHJpbmUgd2hpY2ggd2Ugd291bGQga25vdyB3aGVuY2UgbGVhcm5lZDogd2hvIHNhdyANCitXaGVuIHRoaXMgY3JlYXRpb24gd2FzPyByZW1lbWJlcmVzdCB0aG91IA0KK1RoeSBtYWtpbmcsIHdoaWxlIHRoZSBNYWtlciBnYXZlIHRoZWUgYmVpbmc/IA0KK1dlIGtub3cgbm8gdGltZSB3aGVuIHdlIHdlcmUgbm90IGFzIG5vdzsgDQorS25vdyBub25lIGJlZm9yZSB1cywgc2VsZi1iZWdvdCwgc2VsZi1yYWlzZWQgDQorQnkgb3VyIG93biBxdWlja2VuaW5nIHBvd2VyLCB3aGVuIGZhdGFsIGNvdXJzZSANCitIYWQgY2lyY2xlZCBoaXMgZnVsbCBvcmIsIHRoZSBiaXJ0aCBtYXR1cmUgDQorT2YgdGhpcyBvdXIgbmF0aXZlIEhlYXZlbiwgZXRoZXJlYWwgc29ucy4gDQorT3VyIHB1aXNzYW5jZSBpcyBvdXIgb3duOyBvdXIgb3duIHJpZ2h0IGhhbmQgDQorU2hhbGwgdGVhY2ggdXMgaGlnaGVzdCBkZWVkcywgYnkgcHJvb2YgdG8gdHJ5IA0KK1dobyBpcyBvdXIgZXF1YWw6ICBUaGVuIHRob3Ugc2hhbHQgYmVob2xkIA0KK1doZXRoZXIgYnkgc3VwcGxpY2F0aW9uIHdlIGludGVuZCANCitBZGRyZXNzLCBhbmQgdG8gYmVnaXJ0IHRoZSBhbG1pZ2h0eSB0aHJvbmUgDQorQmVzZWVjaGluZyBvciBiZXNpZWdpbmcuICBUaGlzIHJlcG9ydCwgDQorVGhlc2UgdGlkaW5ncyBjYXJyeSB0byB0aGUgYW5vaW50ZWQgS2luZzsgDQorQW5kIGZseSwgZXJlIGV2aWwgaW50ZXJjZXB0IHRoeSBmbGlnaHQuIA0KK0hlIHNhaWQ7IGFuZCwgYXMgdGhlIHNvdW5kIG9mIHdhdGVycyBkZWVwLCANCitIb2Fyc2UgbXVybXVyIGVjaG9lZCB0byBoaXMgd29yZHMgYXBwbGF1c2UgDQorVGhyb3VnaCB0aGUgaW5maW5pdGUgaG9zdDsgbm9yIGxlc3MgZm9yIHRoYXQgDQorVGhlIGZsYW1pbmcgU2VyYXBoIGZlYXJsZXNzLCB0aG91Z2ggYWxvbmUgDQorRW5jb21wYXNzZWQgcm91bmQgd2l0aCBmb2VzLCB0aHVzIGFuc3dlcmVkIGJvbGQuIA0KK08gYWxpZW5hdGUgZnJvbSBHb2QsIE8gU3Bpcml0IGFjY3Vyc2VkLCANCitGb3JzYWtlbiBvZiBhbGwgZ29vZCEgIEkgc2VlIHRoeSBmYWxsIA0KK0RldGVybWluZWQsIGFuZCB0aHkgaGFwbGVzcyBjcmV3IGludm9sdmVkIA0KK0luIHRoaXMgcGVyZmlkaW91cyBmcmF1ZCwgY29udGFnaW9uIHNwcmVhZCANCitCb3RoIG9mIHRoeSBjcmltZSBhbmQgcHVuaXNobWVudDogIEhlbmNlZm9ydGggDQorTm8gbW9yZSBiZSB0cm91YmxlZCBob3cgdG8gcXVpdCB0aGUgeW9rZSANCitPZiBHb2QncyBNZXNzaWFoOyB0aG9zZSBpbmR1bGdlbnQgbGF3cyANCitXaWxsIG5vdCBiZSBub3cgdm91Y2hzYWZlZDsgb3RoZXIgZGVjcmVlcyANCitBZ2FpbnN0IHRoZWUgYXJlIGdvbmUgZm9ydGggd2l0aG91dCByZWNhbGw7IA0KK1RoYXQgZ29sZGVuIHNjZXB0ZXIsIHdoaWNoIHRob3UgZGlkc3QgcmVqZWN0LCANCitJcyBub3cgYW4gaXJvbiByb2QgdG8gYnJ1aXNlIGFuZCBicmVhayANCitUaHkgZGlzb2JlZGllbmNlLiAgV2VsbCB0aG91IGRpZHN0IGFkdmlzZTsgDQorWWV0IG5vdCBmb3IgdGh5IGFkdmljZSBvciB0aHJlYXRzIEkgZmx5IA0KK1RoZXNlIHdpY2tlZCB0ZW50cyBkZXZvdGVkLCBsZXN0IHRoZSB3cmF0aCANCitJbXBlbmRlbnQsIHJhZ2luZyBpbnRvIHN1ZGRlbiBmbGFtZSwgDQorRGlzdGluZ3Vpc2ggbm90OiAgRm9yIHNvb24gZXhwZWN0IHRvIGZlZWwgDQorSGlzIHRodW5kZXIgb24gdGh5IGhlYWQsIGRldm91cmluZyBmaXJlLiANCitUaGVuIHdobyBjcmVhdGVkIHRoZWUgbGFtZW50aW5nIGxlYXJuLCANCitXaGVuIHdobyBjYW4gdW5jcmVhdGUgdGhlZSB0aG91IHNoYWx0IGtub3cuIA0KK1NvIHNwYWtlIHRoZSBTZXJhcGggQWJkaWVsLCBmYWl0aGZ1bCBmb3VuZCANCitBbW9uZyB0aGUgZmFpdGhsZXNzLCBmYWl0aGZ1bCBvbmx5IGhlOyANCitBbW9uZyBpbm51bWVyYWJsZSBmYWxzZSwgdW5tb3ZlZCwgDQorVW5zaGFrZW4sIHVuc2VkdWNlZCwgdW50ZXJyaWZpZWQsIA0KK0hpcyBsb3lhbHR5IGhlIGtlcHQsIGhpcyBsb3ZlLCBoaXMgemVhbDsgDQorTm9yIG51bWJlciwgbm9yIGV4YW1wbGUsIHdpdGggaGltIHdyb3VnaHQgDQorVG8gc3dlcnZlIGZyb20gdHJ1dGgsIG9yIGNoYW5nZSBoaXMgY29uc3RhbnQgbWluZCwgDQorVGhvdWdoIHNpbmdsZS4gIEZyb20gYW1pZHN0IHRoZW0gZm9ydGggaGUgcGFzc2VkLCANCitMb25nIHdheSB0aHJvdWdoIGhvc3RpbGUgc2Nvcm4sIHdoaWNoIGhlIHN1c3RhaW5lZCANCitTdXBlcmlvdXIsIG5vciBvZiB2aW9sZW5jZSBmZWFyZWQgYXVnaHQ7IA0KK0FuZCwgd2l0aCByZXRvcnRlZCBzY29ybiwgaGlzIGJhY2sgaGUgdHVybmVkIA0KK09uIHRob3NlIHByb3VkIHRvd2VycyB0byBzd2lmdCBkZXN0cnVjdGlvbiBkb29tZWQuIA0KKyANCisgDQorIA0KK0Jvb2sgVkkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorIA0KKyANCitBbGwgbmlnaHQgdGhlIGRyZWFkbGVzcyBBbmdlbCwgdW5wdXJzdWVkLCANCitUaHJvdWdoIEhlYXZlbidzIHdpZGUgY2hhbXBhaW4gaGVsZCBoaXMgd2F5OyB0aWxsIE1vcm4sIA0KK1dha2VkIGJ5IHRoZSBjaXJjbGluZyBIb3Vycywgd2l0aCByb3N5IGhhbmQgDQorVW5iYXJyZWQgdGhlIGdhdGVzIG9mIGxpZ2h0LiAgVGhlcmUgaXMgYSBjYXZlIA0KK1dpdGhpbiB0aGUgbW91bnQgb2YgR29kLCBmYXN0IGJ5IGhpcyB0aHJvbmUsIA0KK1doZXJlIGxpZ2h0IGFuZCBkYXJrbmVzcyBpbiBwZXJwZXR1YWwgcm91bmQgDQorTG9kZ2UgYW5kIGRpc2xvZGdlIGJ5IHR1cm5zLCB3aGljaCBtYWtlcyB0aHJvdWdoIEhlYXZlbiANCitHcmF0ZWZ1bCB2aWNpc3NpdHVkZSwgbGlrZSBkYXkgYW5kIG5pZ2h0OyANCitMaWdodCBpc3N1ZXMgZm9ydGgsIGFuZCBhdCB0aGUgb3RoZXIgZG9vciANCitPYnNlcXVpb3VzIGRhcmtuZXNzIGVudGVycywgdGlsbCBoZXIgaG91ciANCitUbyB2ZWlsIHRoZSBIZWF2ZW4sIHRob3VnaCBkYXJrbmVzcyB0aGVyZSBtaWdodCB3ZWxsIA0KK1NlZW0gdHdpbGlnaHQgaGVyZTogIEFuZCBub3cgd2VudCBmb3J0aCB0aGUgTW9ybiANCitTdWNoIGFzIGluIGhpZ2hlc3QgSGVhdmVuIGFycmF5ZWQgaW4gZ29sZCANCitFbXB5cmVhbDsgZnJvbSBiZWZvcmUgaGVyIHZhbmlzaGVkIE5pZ2h0LCANCitTaG90IHRocm91Z2ggd2l0aCBvcmllbnQgYmVhbXM7IHdoZW4gYWxsIHRoZSBwbGFpbiANCitDb3ZlcmVkIHdpdGggdGhpY2sgZW1iYXR0bGVkIHNxdWFkcm9ucyBicmlnaHQsIA0KK0NoYXJpb3RzLCBhbmQgZmxhbWluZyBhcm1zLCBhbmQgZmllcnkgc3RlZWRzLCANCitSZWZsZWN0aW5nIGJsYXplIG9uIGJsYXplLCBmaXJzdCBtZXQgaGlzIHZpZXc6IA0KK1dhciBoZSBwZXJjZWl2ZWQsIHdhciBpbiBwcm9jaW5jdDsgYW5kIGZvdW5kIA0KK0FscmVhZHkga25vd24gd2hhdCBoZSBmb3IgbmV3cyBoYWQgdGhvdWdodCANCitUbyBoYXZlIHJlcG9ydGVkOiAgR2xhZGx5IHRoZW4gaGUgbWl4ZWQgDQorQW1vbmcgdGhvc2UgZnJpZW5kbHkgUG93ZXJzLCB3aG8gaGltIHJlY2VpdmVkIA0KK1dpdGggam95IGFuZCBhY2NsYW1hdGlvbnMgbG91ZCwgdGhhdCBvbmUsIA0KK1RoYXQgb2Ygc28gbWFueSBteXJpYWRzIGZhbGxlbiwgeWV0IG9uZSANCitSZXR1cm5lZCBub3QgbG9zdC4gIE9uIHRvIHRoZSBzYWNyZWQgaGlsbCANCitUaGV5IGxlZCBoaW0gaGlnaCBhcHBsYXVkZWQsIGFuZCBwcmVzZW50IA0KK0JlZm9yZSB0aGUgc2VhdCBzdXByZW1lOyBmcm9tIHdoZW5jZSBhIHZvaWNlLCANCitGcm9tIG1pZHN0IGEgZ29sZGVuIGNsb3VkLCB0aHVzIG1pbGQgd2FzIGhlYXJkLiANCitTZXJ2YW50IG9mIEdvZC4gV2VsbCBkb25lOyB3ZWxsIGhhc3QgdGhvdSBmb3VnaHQgDQorVGhlIGJldHRlciBmaWdodCwgd2hvIHNpbmdsZSBoYXN0IG1haW50YWluZWQgDQorQWdhaW5zdCByZXZvbHRlZCBtdWx0aXR1ZGVzIHRoZSBjYXVzZSANCitPZiB0cnV0aCwgaW4gd29yZCBtaWdodGllciB0aGFuIHRoZXkgaW4gYXJtczsgDQorQW5kIGZvciB0aGUgdGVzdGltb255IG9mIHRydXRoIGhhc3QgYm9ybmUgDQorVW5pdmVyc2FsIHJlcHJvYWNoLCBmYXIgd29yc2UgdG8gYmVhciANCitUaGFuIHZpb2xlbmNlOyBmb3IgdGhpcyB3YXMgYWxsIHRoeSBjYXJlIA0KK1RvIHN0YW5kIGFwcHJvdmVkIGluIHNpZ2h0IG9mIEdvZCwgdGhvdWdoIHdvcmxkcyANCitKdWRnZWQgdGhlZSBwZXJ2ZXJzZTogIFRoZSBlYXNpZXIgY29ucXVlc3Qgbm93IA0KK1JlbWFpbnMgdGhlZSwgYWlkZWQgYnkgdGhpcyBob3N0IG9mIGZyaWVuZHMsIA0KK0JhY2sgb24gdGh5IGZvZXMgbW9yZSBnbG9yaW91cyB0byByZXR1cm4sIA0KK1RoYW4gc2Nvcm5lZCB0aG91IGRpZHN0IGRlcGFydDsgYW5kIHRvIHN1YmR1ZSANCitCeSBmb3JjZSwgd2hvIHJlYXNvbiBmb3IgdGhlaXIgbGF3IHJlZnVzZSwgDQorUmlnaHQgcmVhc29uIGZvciB0aGVpciBsYXcsIGFuZCBmb3IgdGhlaXIgS2luZyANCitNZXNzaWFoLCB3aG8gYnkgcmlnaHQgb2YgbWVyaXQgcmVpZ25zLiANCitHbywgTWljaGFlbCwgb2YgY2VsZXN0aWFsIGFybWllcyBwcmluY2UsIA0KK0FuZCB0aG91LCBpbiBtaWxpdGFyeSBwcm93ZXNzIG5leHQsIA0KK0dhYnJpZWwsIGxlYWQgZm9ydGggdG8gYmF0dGxlIHRoZXNlIG15IHNvbnMgDQorSW52aW5jaWJsZTsgbGVhZCBmb3J0aCBteSBhcm1lZCBTYWludHMsIA0KK0J5IHRob3VzYW5kcyBhbmQgYnkgbWlsbGlvbnMsIHJhbmdlZCBmb3IgZmlnaHQsIA0KK0VxdWFsIGluIG51bWJlciB0byB0aGF0IEdvZGxlc3MgY3JldyANCitSZWJlbGxpb3VzOiAgVGhlbSB3aXRoIGZpcmUgYW5kIGhvc3RpbGUgYXJtcyANCitGZWFybGVzcyBhc3NhdWx0OyBhbmQsIHRvIHRoZSBicm93IG9mIEhlYXZlbiANCitQdXJzdWluZywgZHJpdmUgdGhlbSBvdXQgZnJvbSBHb2QgYW5kIGJsaXNzLCANCitJbnRvIHRoZWlyIHBsYWNlIG9mIHB1bmlzaG1lbnQsIHRoZSBndWxmIA0KK09mIFRhcnRhcnVzLCB3aGljaCByZWFkeSBvcGVucyB3aWRlIA0KK0hpcyBmaWVyeSBDaGFvcyB0byByZWNlaXZlIHRoZWlyIGZhbGwuIA0KK1NvIHNwYWtlIHRoZSBTb3ZyYW4gVm9pY2UsIGFuZCBjbG91ZHMgYmVnYW4gDQorVG8gZGFya2VuIGFsbCB0aGUgaGlsbCwgYW5kIHNtb2tlIHRvIHJvbGwgDQorSW4gZHVza3kgd3JlYXRocywgcmVsdWN0YW50IGZsYW1lcywgdGhlIHNpZ24gDQorT2Ygd3JhdGggYXdha2VkOyBub3Igd2l0aCBsZXNzIGRyZWFkIHRoZSBsb3VkIA0KK0V0aGVyZWFsIHRydW1wZXQgZnJvbSBvbiBoaWdoICdnYW4gYmxvdzogDQorQXQgd2hpY2ggY29tbWFuZCB0aGUgUG93ZXJzIG1pbGl0YW50LCANCitUaGF0IHN0b29kIGZvciBIZWF2ZW4sIGluIG1pZ2h0eSBxdWFkcmF0ZSBqb2luZWQgDQorT2YgdW5pb24gaXJyZXNpc3RpYmxlLCBtb3ZlZCBvbiANCitJbiBzaWxlbmNlIHRoZWlyIGJyaWdodCBsZWdpb25zLCB0byB0aGUgc291bmQgDQorT2YgaW5zdHJ1bWVudGFsIGhhcm1vbnksIHRoYXQgYnJlYXRoZWQgDQorSGVyb2ljayBhcmRvdXIgdG8gYWR2ZW50dXJvdXMgZGVlZHMgDQorVW5kZXIgdGhlaXIgR29kLWxpa2UgbGVhZGVycywgaW4gdGhlIGNhdXNlIA0KK09mIEdvZCBhbmQgaGlzIE1lc3NpYWguICBPbiB0aGV5IG1vdmUgDQorSW5kaXNzb2x1Ymx5IGZpcm07IG5vciBvYnZpb3VzIGhpbGwsIA0KK05vciBzdHJhaXRlbmluZyB2YWxlLCBub3Igd29vZCwgbm9yIHN0cmVhbSwgZGl2aWRlcyANCitUaGVpciBwZXJmZWN0IHJhbmtzOyBmb3IgaGlnaCBhYm92ZSB0aGUgZ3JvdW5kIA0KK1RoZWlyIG1hcmNoIHdhcywgYW5kIHRoZSBwYXNzaXZlIGFpciB1cGJvcmUgDQorVGhlaXIgbmltYmxlIHRyZWFkOyBhcyB3aGVuIHRoZSB0b3RhbCBraW5kIA0KK09mIGJpcmRzLCBpbiBvcmRlcmx5IGFycmF5IG9uIHdpbmcsIA0KK0NhbWUgc3VtbW9uZWQgb3ZlciBFZGVuIHRvIHJlY2VpdmUgDQorVGhlaXIgbmFtZXMgb2YgdGhlZTsgc28gb3ZlciBtYW55IGEgdHJhY3QgDQorT2YgSGVhdmVuIHRoZXkgbWFyY2hlZCwgYW5kIG1hbnkgYSBwcm92aW5jZSB3aWRlLCANCitUZW5mb2xkIHRoZSBsZW5ndGggb2YgdGhpcyB0ZXJyZW5lOiAgQXQgbGFzdCwgDQorRmFyIGluIHRoZSBob3Jpem9uIHRvIHRoZSBub3J0aCBhcHBlYXJlZCANCitGcm9tIHNraXJ0IHRvIHNraXJ0IGEgZmllcnkgcmVnaW9uLCBzdHJldGNoZWQgDQorSW4gYmF0dGFpbG91cyBhc3BlY3QsIGFuZCBuZWFyZXIgdmlldyANCitCcmlzdGxlZCB3aXRoIHVwcmlnaHQgYmVhbXMgaW5udW1lcmFibGUgDQorT2YgcmlnaWQgc3BlYXJzLCBhbmQgaGVsbWV0cyB0aHJvbmdlZCwgYW5kIHNoaWVsZHMgDQorVmFyaW91cywgd2l0aCBib2FzdGZ1bCBhcmd1bWVudCBwb3J0cmF5ZWQsIA0KK1RoZSBiYW5kZWQgUG93ZXJzIG9mIFNhdGFuIGhhc3Rpbmcgb24gDQorV2l0aCBmdXJpb3VzIGV4cGVkaXRpb247IGZvciB0aGV5IHdlZW5lZCANCitUaGF0IHNlbGYtc2FtZSBkYXksIGJ5IGZpZ2h0IG9yIGJ5IHN1cnByaXNlLCANCitUbyB3aW4gdGhlIG1vdW50IG9mIEdvZCwgYW5kIG9uIGhpcyB0aHJvbmUgDQorVG8gc2V0IHRoZSBFbnZpZXIgb2YgaGlzIHN0YXRlLCB0aGUgcHJvdWQgDQorQXNwaXJlcjsgYnV0IHRoZWlyIHRob3VnaHRzIHByb3ZlZCBmb25kIGFuZCB2YWluIA0KK0luIHRoZSBtaWQgd2F5OiAgVGhvdWdoIHN0cmFuZ2UgdG8gdXMgaXQgc2VlbWVkIA0KK0F0IGZpcnN0LCB0aGF0IEFuZ2VsIHNob3VsZCB3aXRoIEFuZ2VsIHdhciwgDQorQW5kIGluIGZpZXJjZSBob3N0aW5nIG1lZXQsIHdobyB3b250IHRvIG1lZXQgDQorU28gb2Z0IGluIGZlc3RpdmFscyBvZiBqb3kgYW5kIGxvdmUgDQorVW5hbmltb3VzLCBhcyBzb25zIG9mIG9uZSBncmVhdCBTaXJlLCANCitIeW1uaW5nIHRoZSBFdGVybmFsIEZhdGhlcjogIEJ1dCB0aGUgc2hvdXQgDQorT2YgYmF0dGxlIG5vdyBiZWdhbiwgYW5kIHJ1c2hpbmcgc291bmQgDQorT2Ygb25zZXQgZW5kZWQgc29vbiBlYWNoIG1pbGRlciB0aG91Z2h0LiANCitIaWdoIGluIHRoZSBtaWRzdCwgZXhhbHRlZCBhcyBhIEdvZCwgDQorVGhlIEFwb3N0YXRlIGluIGhpcyBzdW4tYnJpZ2h0IGNoYXJpb3Qgc2F0LCANCitJZG9sIG9mIG1hamVzdHkgZGl2aW5lLCBlbmNsb3NlZCANCitXaXRoIGZsYW1pbmcgQ2hlcnViaW0sIGFuZCBnb2xkZW4gc2hpZWxkczsgDQorVGhlbiBsaWdodGVkIGZyb20gaGlzIGdvcmdlb3VzIHRocm9uZSwgZm9yIG5vdyANCisidHdpeHQgaG9zdCBhbmQgaG9zdCBidXQgbmFycm93IHNwYWNlIHdhcyBsZWZ0LCANCitBIGRyZWFkZnVsIGludGVydmFsLCBhbmQgZnJvbnQgdG8gZnJvbnQgDQorUHJlc2VudGVkIHN0b29kIGluIHRlcnJpYmxlIGFycmF5IA0KK09mIGhpZGVvdXMgbGVuZ3RoOiAgQmVmb3JlIHRoZSBjbG91ZHkgdmFuLCANCitPbiB0aGUgcm91Z2ggZWRnZSBvZiBiYXR0bGUgZXJlIGl0IGpvaW5lZCwgDQorU2F0YW4sIHdpdGggdmFzdCBhbmQgaGF1Z2h0eSBzdHJpZGVzIGFkdmFuY2VkLCANCitDYW1lIHRvd2VyaW5nLCBhcm1lZCBpbiBhZGFtYW50IGFuZCBnb2xkOyANCitBYmRpZWwgdGhhdCBzaWdodCBlbmR1cmVkIG5vdCwgd2hlcmUgaGUgc3Rvb2QgDQorQW1vbmcgdGhlIG1pZ2h0aWVzdCwgYmVudCBvbiBoaWdoZXN0IGRlZWRzLCANCitBbmQgdGh1cyBoaXMgb3duIHVuZGF1bnRlZCBoZWFydCBleHBsb3Jlcy4gDQorTyBIZWF2ZW4hIHRoYXQgc3VjaCByZXNlbWJsYW5jZSBvZiB0aGUgSGlnaGVzdCANCitTaG91bGQgeWV0IHJlbWFpbiwgd2hlcmUgZmFpdGggYW5kIHJlYWx0eSANCitSZW1haW4gbm90OiAgV2hlcmVmb3JlIHNob3VsZCBub3Qgc3RyZW5ndGggYW5kIG1pZ2h0IA0KK1RoZXJlIGZhaWwgd2hlcmUgdmlydHVlIGZhaWxzLCBvciB3ZWFrZXN0IHByb3ZlIA0KK1doZXJlIGJvbGRlc3QsIHRob3VnaCB0byBmaWdodCB1bmNvbnF1ZXJhYmxlPyANCitIaXMgcHVpc3NhbmNlLCB0cnVzdGluZyBpbiB0aGUgQWxtaWdodHkncyBhaWQsIA0KK0kgbWVhbiB0byB0cnksIHdob3NlIHJlYXNvbiBJIGhhdmUgdHJpZWQgDQorVW5zb3VuZCBhbmQgZmFsc2U7IG5vciBpcyBpdCBhdWdodCBidXQganVzdCwgDQorVGhhdCBoZSwgd2hvIGluIGRlYmF0ZSBvZiB0cnV0aCBoYXRoIHdvbiwgDQorU2hvdWxkIHdpbiBpbiBhcm1zLCBpbiBib3RoIGRpc3B1dGVzIGFsaWtlIA0KK1ZpY3RvcjsgdGhvdWdoIGJydXRpc2ggdGhhdCBjb250ZXN0IGFuZCBmb3VsLCANCitXaGVuIHJlYXNvbiBoYXRoIHRvIGRlYWwgd2l0aCBmb3JjZSwgeWV0IHNvIA0KK01vc3QgcmVhc29uIGlzIHRoYXQgcmVhc29uIG92ZXJjb21lLiANCitTbyBwb25kZXJpbmcsIGFuZCBmcm9tIGhpcyBhcm1lZCBwZWVycyANCitGb3J0aCBzdGVwcGluZyBvcHBvc2l0ZSwgaGFsZi13YXkgaGUgbWV0IA0KK0hpcyBkYXJpbmcgZm9lLCBhdCB0aGlzIHByZXZlbnRpb24gbW9yZSANCitJbmNlbnNlZCwgYW5kIHRodXMgc2VjdXJlbHkgaGltIGRlZmllZC4gDQorUHJvdWQsIGFydCB0aG91IG1ldD8gdGh5IGhvcGUgd2FzIHRvIGhhdmUgcmVhY2hlZCANCitUaGUgaGlnaHRoIG9mIHRoeSBhc3BpcmluZyB1bm9wcG9zZWQsIA0KK1RoZSB0aHJvbmUgb2YgR29kIHVuZ3VhcmRlZCwgYW5kIGhpcyBzaWRlIA0KK0FiYW5kb25lZCwgYXQgdGhlIHRlcnJvdXIgb2YgdGh5IHBvd2VyIA0KK09yIHBvdGVudCB0b25ndWU6ICBGb29sIW5vdCB0byB0aGluayBob3cgdmFpbiANCitBZ2FpbnN0IHRoZSBPbW5pcG90ZW50IHRvIHJpc2UgaW4gYXJtczsgDQorV2hvIG91dCBvZiBzbWFsbGVzdCB0aGluZ3MgY291bGQsIHdpdGhvdXQgZW5kLCANCitIYXZlIHJhaXNlZCBpbmNlc3NhbnQgYXJtaWVzIHRvIGRlZmVhdCANCitUaHkgZm9sbHk7IG9yIHdpdGggc29saXRhcnkgaGFuZCANCitSZWFjaGluZyBiZXlvbmQgYWxsIGxpbWl0LCBhdCBvbmUgYmxvdywgDQorVW5haWRlZCwgY291bGQgaGF2ZSBmaW5pc2hlZCB0aGVlLCBhbmQgd2hlbG1lZCANCitUaHkgbGVnaW9ucyB1bmRlciBkYXJrbmVzczogIEJ1dCB0aG91IHNlZXN0IA0KK0FsbCBhcmUgbm90IG9mIHRoeSB0cmFpbjsgdGhlcmUgYmUsIHdobyBmYWl0aCANCitQcmVmZXIsIGFuZCBwaWV0eSB0byBHb2QsIHRob3VnaCB0aGVuIA0KK1RvIHRoZWUgbm90IHZpc2libGUsIHdoZW4gSSBhbG9uZSANCitTZWVtZWQgaW4gdGh5IHdvcmxkIGVycm9uZW91cyB0byBkaXNzZW50IA0KK0Zyb20gYWxsOiAgTXkgc2VjdCB0aG91IHNlZXN0O25vdyBsZWFybiB0b28gbGF0ZSANCitIb3cgZmV3IHNvbWV0aW1lcyBtYXkga25vdywgd2hlbiB0aG91c2FuZHMgZXJyLiANCitXaG9tIHRoZSBncmFuZCBmb2UsIHdpdGggc2Nvcm5mdWwgZXllIGFza2FuY2UsIA0KK1RodXMgYW5zd2VyZWQuICBJbGwgZm9yIHRoZWUsIGJ1dCBpbiB3aXNoZWQgaG91ciANCitPZiBteSByZXZlbmdlLCBmaXJzdCBzb3VnaHQgZm9yLCB0aG91IHJldHVybmVzdCANCitGcm9tIGZsaWdodCwgc2VkaXRpb3VzIEFuZ2VsISB0byByZWNlaXZlIA0KK1RoeSBtZXJpdGVkIHJld2FyZCwgdGhlIGZpcnN0IGFzc2F5IA0KK09mIHRoaXMgcmlnaHQgaGFuZCBwcm92b2tlZCwgc2luY2UgZmlyc3QgdGhhdCB0b25ndWUsIA0KK0luc3BpcmVkIHdpdGggY29udHJhZGljdGlvbiwgZHVyc3Qgb3Bwb3NlIA0KK0EgdGhpcmQgcGFydCBvZiB0aGUgR29kcywgaW4gc3lub2QgbWV0IA0KK1RoZWlyIGRlaXRpZXMgdG8gYXNzZXJ0OyB3aG8sIHdoaWxlIHRoZXkgZmVlbCANCitWaWdvdXIgZGl2aW5lIHdpdGhpbiB0aGVtLCBjYW4gYWxsb3cgDQorT21uaXBvdGVuY2UgdG8gbm9uZS4gIEJ1dCB3ZWxsIHRob3UgY29tZXN0IA0KK0JlZm9yZSB0aHkgZmVsbG93cywgYW1iaXRpb3VzIHRvIHdpbiANCitGcm9tIG1lIHNvbWUgcGx1bWUsIHRoYXQgdGh5IHN1Y2Nlc3MgbWF5IHNob3cgDQorRGVzdHJ1Y3Rpb24gdG8gdGhlIHJlc3Q6ICBUaGlzIHBhdXNlIGJldHdlZW4sIA0KKyhVbmFuc3dlcmVkIGxlc3QgdGhvdSBib2FzdCkgdG8gbGV0IHRoZWUga25vdywgDQorQXQgZmlyc3QgSSB0aG91Z2h0IHRoYXQgTGliZXJ0eSBhbmQgSGVhdmVuIA0KK1RvIGhlYXZlbmx5IHNvdWxzIGhhZCBiZWVuIGFsbCBvbmU7IGJ1dCBub3cgDQorSSBzZWUgdGhhdCBtb3N0IHRocm91Z2ggc2xvdGggaGFkIHJhdGhlciBzZXJ2ZSwgDQorTWluaXN0cmluZyBTcGlyaXRzLCB0cmFpbmVkIHVwIGluIGZlYXN0IGFuZCBzb25nISANCitTdWNoIGhhc3QgdGhvdSBhcm1lZCwgdGhlIG1pbnN0cmVsc3kgb2YgSGVhdmVuLCANCitTZXJ2aWxpdHkgd2l0aCBmcmVlZG9tIHRvIGNvbnRlbmQsIA0KK0FzIGJvdGggdGhlaXIgZGVlZHMgY29tcGFyZWQgdGhpcyBkYXkgc2hhbGwgcHJvdmUuIA0KK1RvIHdob20gaW4gYnJpZWYgdGh1cyBBYmRpZWwgc3Rlcm4gcmVwbGllZC4gDQorQXBvc3RhdGUhIHN0aWxsIHRob3UgZXJyZXN0LCBub3IgZW5kIHdpbHQgZmluZCANCitPZiBlcnJpbmcsIGZyb20gdGhlIHBhdGggb2YgdHJ1dGggcmVtb3RlOiANCitVbmp1c3RseSB0aG91IGRlcHJhdmVzdCBpdCB3aXRoIHRoZSBuYW1lIA0KK09mIHNlcnZpdHVkZSwgdG8gc2VydmUgd2hvbSBHb2Qgb3JkYWlucywgDQorT3IgTmF0dXJlOiAgR29kIGFuZCBOYXR1cmUgYmlkIHRoZSBzYW1lLCANCitXaGVuIGhlIHdobyBydWxlcyBpcyB3b3J0aGllc3QsIGFuZCBleGNlbHMgDQorVGhlbSB3aG9tIGhlIGdvdmVybnMuICBUaGlzIGlzIHNlcnZpdHVkZSwgDQorVG8gc2VydmUgdGhlIHVud2lzZSwgb3IgaGltIHdobyBoYXRoIHJlYmVsbGVkIA0KK0FnYWluc3QgaGlzIHdvcnRoaWVyLCBhcyB0aGluZSBub3cgc2VydmUgdGhlZSwgDQorVGh5c2VsZiBub3QgZnJlZSwgYnV0IHRvIHRoeXNlbGYgZW50aHJhbGxlZDsgDQorWWV0IGxld2RseSBkYXJlc3Qgb3VyIG1pbmlzdHJpbmcgdXBicmFpZC4gDQorUmVpZ24gdGhvdSBpbiBIZWxsLCB0aHkga2luZ2RvbTsgbGV0IG1lIHNlcnZlIA0KK0luIEhlYXZlbiBHb2QgZXZlciBibGVzdCwgYW5kIGhpcyBkaXZpbmUgDQorQmVoZXN0cyBvYmV5LCB3b3J0aGllc3QgdG8gYmUgb2JleWVkOyANCitZZXQgY2hhaW5zIGluIEhlbGwsIG5vdCByZWFsbXMsIGV4cGVjdDogIE1lYW4gd2hpbGUgDQorRnJvbSBtZSByZXR1cm5lZCwgYXMgZXJzdCB0aG91IHNhaWRzdCwgZnJvbSBmbGlnaHQsIA0KK1RoaXMgZ3JlZXRpbmcgb24gdGh5IGltcGlvdXMgY3Jlc3QgcmVjZWl2ZS4gDQorU28gc2F5aW5nLCBhIG5vYmxlIHN0cm9rZSBoZSBsaWZ0ZWQgaGlnaCwgDQorV2hpY2ggaHVuZyBub3QsIGJ1dCBzbyBzd2lmdCB3aXRoIHRlbXBlc3QgZmVsbCANCitPbiB0aGUgcHJvdWQgY3Jlc3Qgb2YgU2F0YW4sIHRoYXQgbm8gc2lnaHQsIA0KK05vciBtb3Rpb24gb2Ygc3dpZnQgdGhvdWdodCwgbGVzcyBjb3VsZCBoaXMgc2hpZWxkLCANCitTdWNoIHJ1aW4gaW50ZXJjZXB0OiAgVGVuIHBhY2VzIGh1Z2UgDQorSGUgYmFjayByZWNvaWxlZDsgdGhlIHRlbnRoIG9uIGJlbmRlZCBrbmVlIA0KK0hpcyBtYXNzeSBzcGVhciB1cHN0YWlkOyBhcyBpZiBvbiBlYXJ0aCANCitXaW5kcyB1bmRlciBncm91bmQsIG9yIHdhdGVycyBmb3JjaW5nIHdheSwgDQorU2lkZWxvbmcgaGFkIHB1c2hlZCBhIG1vdW50YWluIGZyb20gaGlzIHNlYXQsIA0KK0hhbGYgc3VuayB3aXRoIGFsbCBoaXMgcGluZXMuICBBbWF6ZW1lbnQgc2Vpc2VkIA0KK1RoZSByZWJlbCBUaHJvbmVzLCBidXQgZ3JlYXRlciByYWdlLCB0byBzZWUgDQorVGh1cyBmb2lsZWQgdGhlaXIgbWlnaHRpZXN0OyBvdXJzIGpveSBmaWxsZWQsIGFuZCBzaG91dCwgDQorUHJlc2FnZSBvZiB2aWN0b3J5LCBhbmQgZmllcmNlIGRlc2lyZSANCitPZiBiYXR0bGU6ICBXaGVyZWF0IE1pY2hhZWwgYmlkIHNvdW5kIA0KK1RoZSBBcmNoLUFuZ2VsIHRydW1wZXQ7IHRocm91Z2ggdGhlIHZhc3Qgb2YgSGVhdmVuIA0KK0l0IHNvdW5kZWQsIGFuZCB0aGUgZmFpdGhmdWwgYXJtaWVzIHJ1bmcgDQorSG9zYW5uYSB0byB0aGUgSGlnaGVzdDogIE5vciBzdG9vZCBhdCBnYXplIA0KK1RoZSBhZHZlcnNlIGxlZ2lvbnMsIG5vciBsZXNzIGhpZGVvdXMgam9pbmVkIA0KK1RoZSBob3JyaWQgc2hvY2suICBOb3cgc3Rvcm1pbmcgZnVyeSByb3NlLCANCitBbmQgY2xhbW91ciBzdWNoIGFzIGhlYXJkIGluIEhlYXZlbiB0aWxsIG5vdyANCitXYXMgbmV2ZXI7IGFybXMgb24gYXJtb3VyIGNsYXNoaW5nIGJyYXllZCANCitIb3JyaWJsZSBkaXNjb3JkLCBhbmQgdGhlIG1hZGRpbmcgd2hlZWxzIA0KK09mIGJyYXplbiBjaGFyaW90cyByYWdlZDsgZGlyZSB3YXMgdGhlIG5vaXNlIA0KK09mIGNvbmZsaWN0OyBvdmVyIGhlYWQgdGhlIGRpc21hbCBoaXNzIA0KK09mIGZpZXJ5IGRhcnRzIGluIGZsYW1pbmcgdm9sbGllcyBmbGV3LCANCitBbmQgZmx5aW5nIHZhdWx0ZWQgZWl0aGVyIGhvc3Qgd2l0aCBmaXJlLiANCitTbyB1bmRlciBmaWVyeSBjb3BlIHRvZ2V0aGVyIHJ1c2hlZCANCitCb3RoIGJhdHRsZXMgbWFpbiwgd2l0aCBydWlub3VzIGFzc2F1bHQgDQorQW5kIGluZXh0aW5ndWlzaGFibGUgcmFnZS4gIEFsbCBIZWF2ZW4gDQorUmVzb3VuZGVkOyBhbmQgaGFkIEVhcnRoIGJlZW4gdGhlbiwgYWxsIEVhcnRoIA0KK0hhZCB0byBoZXIgY2VudGVyIHNob29rLiAgV2hhdCB3b25kZXI/IHdoZW4gDQorTWlsbGlvbnMgb2YgZmllcmNlIGVuY291bnRlcmluZyBBbmdlbHMgZm91Z2h0IA0KK09uIGVpdGhlciBzaWRlLCB0aGUgbGVhc3Qgb2Ygd2hvbSBjb3VsZCB3aWVsZCANCitUaGVzZSBlbGVtZW50cywgYW5kIGFybSBoaW0gd2l0aCB0aGUgZm9yY2UgDQorT2YgYWxsIHRoZWlyIHJlZ2lvbnM6ICBIb3cgbXVjaCBtb3JlIG9mIHBvd2VyIA0KK0FybXkgYWdhaW5zdCBhcm15IG51bWJlcmxlc3MgdG8gcmFpc2UgDQorRHJlYWRmdWwgY29tYnVzdGlvbiB3YXJyaW5nLCBhbmQgZGlzdHVyYiwgDQorVGhvdWdoIG5vdCBkZXN0cm95LCB0aGVpciBoYXBweSBuYXRpdmUgc2VhdDsgDQorSGFkIG5vdCB0aGUgRXRlcm5hbCBLaW5nIE9tbmlwb3RlbnQsIA0KK0Zyb20gaGlzIHN0cm9uZyBob2xkIG9mIEhlYXZlbiwgaGlnaCBvdmVyLXJ1bGVkIA0KK0FuZCBsaW1pdGVkIHRoZWlyIG1pZ2h0OyB0aG91Z2ggbnVtYmVyZWQgc3VjaCANCitBcyBlYWNoIGRpdmlkZWQgbGVnaW9uIG1pZ2h0IGhhdmUgc2VlbWVkIA0KK0EgbnVtZXJvdXMgaG9zdDsgaW4gc3RyZW5ndGggZWFjaCBhcm1lZCBoYW5kIA0KK0EgbGVnaW9uOyBsZWQgaW4gZmlnaHQsIHlldCBsZWFkZXIgc2VlbWVkIA0KK0VhY2ggd2FycmlvdXIgc2luZ2xlIGFzIGluIGNoaWVmLCBleHBlcnQgDQorV2hlbiB0byBhZHZhbmNlLCBvciBzdGFuZCwgb3IgdHVybiB0aGUgc3dheSANCitPZiBiYXR0bGUsIG9wZW4gd2hlbiwgYW5kIHdoZW4gdG8gY2xvc2UgDQorVGhlIHJpZGdlcyBvZiBncmltIHdhcjogIE5vIHRob3VnaHQgb2YgZmxpZ2h0LCANCitOb25lIG9mIHJldHJlYXQsIG5vIHVuYmVjb21pbmcgZGVlZCANCitUaGF0IGFyZ3VlZCBmZWFyOyBlYWNoIG9uIGhpbXNlbGYgcmVsaWVkLCANCitBcyBvbmx5IGluIGhpcyBhcm0gdGhlIG1vbWVudCBsYXkgDQorT2YgdmljdG9yeTogIERlZWRzIG9mIGV0ZXJuYWwgZmFtZSANCitXZXJlIGRvbmUsIGJ1dCBpbmZpbml0ZTsgZm9yIHdpZGUgd2FzIHNwcmVhZCANCitUaGF0IHdhciBhbmQgdmFyaW91czsgc29tZXRpbWVzIG9uIGZpcm0gZ3JvdW5kIA0KK0Egc3RhbmRpbmcgZmlnaHQsIHRoZW4sIHNvYXJpbmcgb24gbWFpbiB3aW5nLCANCitUb3JtZW50ZWQgYWxsIHRoZSBhaXI7IGFsbCBhaXIgc2VlbWVkIHRoZW4gDQorQ29uZmxpY3RpbmcgZmlyZS4gIExvbmcgdGltZSBpbiBldmVuIHNjYWxlIA0KK1RoZSBiYXR0bGUgaHVuZzsgdGlsbCBTYXRhbiwgd2hvIHRoYXQgZGF5IA0KK1Byb2RpZ2lvdXMgcG93ZXIgaGFkIHNob3duLCBhbmQgbWV0IGluIGFybXMgDQorTm8gZXF1YWwsIHJhbmdpbmcgdGhyb3VnaCB0aGUgZGlyZSBhdHRhY2sgDQorT2YgZmlnaHRpbmcgU2VyYXBoaW0gY29uZnVzZWQsIGF0IGxlbmd0aCANCitTYXcgd2hlcmUgdGhlIHN3b3JkIG9mIE1pY2hhZWwgc21vdGUsIGFuZCBmZWxsZWQgDQorU3F1YWRyb25zIGF0IG9uY2U7IHdpdGggaHVnZSB0d28taGFuZGVkIHN3YXkgDQorQnJhbmRpc2hlZCBhbG9mdCwgdGhlIGhvcnJpZCBlZGdlIGNhbWUgZG93biANCitXaWRlLXdhc3Rpbmc7IHN1Y2ggZGVzdHJ1Y3Rpb24gdG8gd2l0aHN0YW5kIA0KK0hlIGhhc3RlZCwgYW5kIG9wcG9zZWQgdGhlIHJvY2t5IG9yYiANCitPZiB0ZW5mb2xkIGFkYW1hbnQsIGhpcyBhbXBsZSBzaGllbGQsIA0KK0EgdmFzdCBjaXJjdW1mZXJlbmNlLiAgQXQgaGlzIGFwcHJvYWNoIA0KK1RoZSBncmVhdCBBcmNoLUFuZ2VsIGZyb20gaGlzIHdhcmxpa2UgdG9pbCANCitTdXJjZWFzZWQsIGFuZCBnbGFkLCBhcyBob3BpbmcgaGVyZSB0byBlbmQgDQorSW50ZXN0aW5lIHdhciBpbiBIZWF2ZW4sIHRoZSBhcmNoLWZvZSBzdWJkdWVkIA0KK09yIGNhcHRpdmUgZHJhZ2dlZCBpbiBjaGFpbnMsIHdpdGggaG9zdGlsZSBmcm93biANCitBbmQgdmlzYWdlIGFsbCBpbmZsYW1lZCBmaXJzdCB0aHVzIGJlZ2FuLiANCitBdXRob3Igb2YgZXZpbCwgdW5rbm93biB0aWxsIHRoeSByZXZvbHQsIA0KK1VubmFtZWQgaW4gSGVhdmVuLCBub3cgcGxlbnRlb3VzIGFzIHRob3Ugc2Vlc3QgDQorVGhlc2UgYWN0cyBvZiBoYXRlZnVsIHN0cmlmZSwgaGF0ZWZ1bCB0byBhbGwsIA0KK1Rob3VnaCBoZWF2aWVzdCBieSBqdXN0IG1lYXN1cmUgb24gdGh5c2VsZiwgDQorQW5kIHRoeSAgYWRoZXJlbnRzOiAgSG93IGhhc3QgdGhvdSBkaXN0dXJiZWQgDQorSGVhdmVuJ3MgYmxlc3NlZCBwZWFjZSwgYW5kIGludG8gbmF0dXJlIGJyb3VnaHQgDQorTWlzZXJ5LCB1bmNyZWF0ZWQgdGlsbCB0aGUgY3JpbWUgDQorT2YgdGh5IHJlYmVsbGlvbiEgaG93IGhhc3QgdGhvdSBpbnN0aWxsZWQgDQorVGh5IG1hbGljZSBpbnRvIHRob3VzYW5kcywgb25jZSB1cHJpZ2h0IA0KK0FuZCBmYWl0aGZ1bCwgbm93IHByb3ZlZCBmYWxzZSEgIEJ1dCB0aGluayBub3QgaGVyZSANCitUbyB0cm91YmxlIGhvbHkgcmVzdDsgSGVhdmVuIGNhc3RzIHRoZWUgb3V0IA0KK0Zyb20gYWxsIGhlciBjb25maW5lcy4gIEhlYXZlbiwgdGhlIHNlYXQgb2YgYmxpc3MsIA0KK0Jyb29rcyBub3QgdGhlIHdvcmtzIG9mIHZpb2xlbmNlIGFuZCB3YXIuIA0KK0hlbmNlIHRoZW4sIGFuZCBldmlsIGdvIHdpdGggdGhlZSBhbG9uZywgDQorVGh5IG9mZnNwcmluZywgdG8gdGhlIHBsYWNlIG9mIGV2aWwsIEhlbGw7IA0KK1Rob3UgYW5kIHRoeSB3aWNrZWQgY3JldyEgdGhlcmUgbWluZ2xlIGJyb2lscywgDQorRXJlIHRoaXMgYXZlbmdpbmcgc3dvcmQgYmVnaW4gdGh5IGRvb20sIA0KK09yIHNvbWUgbW9yZSBzdWRkZW4gdmVuZ2VhbmNlLCB3aW5nZWQgZnJvbSBHb2QsIA0KK1ByZWNpcGl0YXRlIHRoZWUgd2l0aCBhdWdtZW50ZWQgcGFpbi4gDQorU28gc3Bha2UgdGhlIFByaW5jZSBvZiBBbmdlbHM7IHRvIHdob20gdGh1cyANCitUaGUgQWR2ZXJzYXJ5LiAgTm9yIHRoaW5rIHRob3Ugd2l0aCB3aW5kIA0KK09mIGFlcnkgdGhyZWF0cyB0byBhd2Ugd2hvbSB5ZXQgd2l0aCBkZWVkcyANCitUaG91IGNhbnN0IG5vdC4gIEhhc3QgdGhvdSB0dXJuZWQgdGhlIGxlYXN0IG9mIHRoZXNlIA0KK1RvIGZsaWdodCwgb3IgaWYgdG8gZmFsbCwgYnV0IHRoYXQgdGhleSByaXNlIA0KK1VudmFucXVpc2hlZCwgZWFzaWVyIHRvIHRyYW5zYWN0IHdpdGggbWUgDQorVGhhdCB0aG91IHNob3VsZHN0IGhvcGUsIGltcGVyaW91cywgYW5kIHdpdGggdGhyZWF0cyANCitUbyBjaGFzZSBtZSBoZW5jZT8gZXJyIG5vdCwgdGhhdCBzbyBzaGFsbCBlbmQgDQorVGhlIHN0cmlmZSB3aGljaCB0aG91IGNhbGxlc3QgZXZpbCwgYnV0IHdlIHN0eWxlIA0KK1RoZSBzdHJpZmUgb2YgZ2xvcnk7IHdoaWNoIHdlIG1lYW4gdG8gd2luLCANCitPciB0dXJuIHRoaXMgSGVhdmVuIGl0c2VsZiBpbnRvIHRoZSBIZWxsIA0KK1Rob3UgZmFibGVzdDsgaGVyZSBob3dldmVyIHRvIGR3ZWxsIGZyZWUsIA0KK0lmIG5vdCB0byByZWlnbjogIE1lYW4gd2hpbGUgdGh5IHV0bW9zdCBmb3JjZSwgDQorQW5kIGpvaW4gaGltIG5hbWVkIEFsbWlnaHR5IHRvIHRoeSBhaWQsIA0KK0kgZmx5IG5vdCwgYnV0IGhhdmUgc291Z2h0IHRoZWUgZmFyIGFuZCBuaWdoLiANCitUaGV5IGVuZGVkIHBhcmxlLCBhbmQgYm90aCBhZGRyZXNzZWQgZm9yIGZpZ2h0IA0KK1Vuc3BlYWthYmxlOyBmb3Igd2hvLCB0aG91Z2ggd2l0aCB0aGUgdG9uZ3VlIA0KK09mIEFuZ2VscywgY2FuIHJlbGF0ZSwgb3IgdG8gd2hhdCB0aGluZ3MgDQorTGlrZW4gb24gZWFydGggY29uc3BpY3VvdXMsIHRoYXQgbWF5IGxpZnQgDQorSHVtYW4gaW1hZ2luYXRpb24gdG8gc3VjaCBoaWdodGggDQorT2YgR29kbGlrZSBwb3dlcj8gZm9yIGxpa2VzdCBHb2RzIHRoZXkgc2VlbWVkLCANCitTdG9vZCB0aGV5IG9yIG1vdmVkLCBpbiBzdGF0dXJlLCBtb3Rpb24sIGFybXMsIA0KK0ZpdCB0byBkZWNpZGUgdGhlIGVtcGlyZSBvZiBncmVhdCBIZWF2ZW4uIA0KK05vdyB3YXZlZCB0aGVpciBmaWVyeSBzd29yZHMsIGFuZCBpbiB0aGUgYWlyIA0KK01hZGUgaG9ycmlkIGNpcmNsZXM7IHR3byBicm9hZCBzdW5zIHRoZWlyIHNoaWVsZHMgDQorQmxhemVkIG9wcG9zaXRlLCB3aGlsZSBFeHBlY3RhdGlvbiBzdG9vZCANCitJbiBob3Jyb3VyOiAgRnJvbSBlYWNoIGhhbmQgd2l0aCBzcGVlZCByZXRpcmVkLCANCitXaGVyZSBlcnN0IHdhcyB0aGlja2VzdCBmaWdodCwgdGhlIGFuZ2VsaWNrIHRocm9uZywgDQorQW5kIGxlZnQgbGFyZ2UgZmllbGQsIHVuc2FmZSB3aXRoaW4gdGhlIHdpbmQgDQorT2Ygc3VjaCBjb21tb3Rpb247IHN1Y2ggYXMsIHRvIHNldCBmb3J0aCANCitHcmVhdCB0aGluZ3MgYnkgc21hbGwsIGlmLCBuYXR1cmUncyBjb25jb3JkIGJyb2tlLCANCitBbW9uZyB0aGUgY29uc3RlbGxhdGlvbnMgd2FyIHdlcmUgc3BydW5nLCANCitUd28gcGxhbmV0cywgcnVzaGluZyBmcm9tIGFzcGVjdCBtYWxpZ24gDQorT2YgZmllcmNlc3Qgb3Bwb3NpdGlvbiwgaW4gbWlkIHNreSANCitTaG91bGQgY29tYmF0LCBhbmQgdGhlaXIgamFycmluZyBzcGhlcmVzIGNvbmZvdW5kLiANCitUb2dldGhlciBib3RoIHdpdGggbmV4dCB0byBhbG1pZ2h0eSBhcm0gDQorVXAtbGlmdGVkIGltbWluZW50LCBvbmUgc3Ryb2tlIHRoZXkgYWltZWQgDQorVGhhdCBtaWdodCBkZXRlcm1pbmUsIGFuZCBub3QgbmVlZCByZXBlYXQsIA0KK0FzIG5vdCBvZiBwb3dlciBhdCBvbmNlOyBub3Igb2RkcyBhcHBlYXJlZCANCitJbiBtaWdodCBvciBzd2lmdCBwcmV2ZW50aW9uOiAgQnV0IHRoZSBzd29yZCANCitPZiBNaWNoYWVsIGZyb20gdGhlIGFybW91cnkgb2YgR29kIA0KK1dhcyBnaXZlbiBoaW0gdGVtcGVyZWQgc28sIHRoYXQgbmVpdGhlciBrZWVuIA0KK05vciBzb2xpZCBtaWdodCByZXNpc3QgdGhhdCBlZGdlOiBpdCBtZXQgDQorVGhlIHN3b3JkIG9mIFNhdGFuLCB3aXRoIHN0ZWVwIGZvcmNlIHRvIHNtaXRlIA0KK0Rlc2NlbmRpbmcsIGFuZCBpbiBoYWxmIGN1dCBzaGVlcjsgbm9yIHN0YWlkLCANCitCdXQgd2l0aCBzd2lmdCB3aGVlbCByZXZlcnNlLCBkZWVwIGVudGVyaW5nLCBzaGFyZWQgDQorQWxsIGhpcyByaWdodCBzaWRlOiAgVGhlbiBTYXRhbiBmaXJzdCBrbmV3IHBhaW4sIA0KK0FuZCB3cml0aGVkIGhpbSB0byBhbmQgZnJvIGNvbnZvbHZlZDsgc28gc29yZSANCitUaGUgZ3JpZGluZyBzd29yZCB3aXRoIGRpc2NvbnRpbnVvdXMgd291bmQgDQorUGFzc2VkIHRocm91Z2ggaGltOiAgQnV0IHRoZSBldGhlcmVhbCBzdWJzdGFuY2UgY2xvc2VkLCANCitOb3QgbG9uZyBkaXZpc2libGU7IGFuZCBmcm9tIHRoZSBnYXNoIA0KK0Egc3RyZWFtIG9mIG5lY3R1cm91cyBodW1vdXIgaXNzdWluZyBmbG93ZWQgDQorU2FuZ3VpbmUsIHN1Y2ggYXMgY2VsZXN0aWFsIFNwaXJpdHMgbWF5IGJsZWVkLCANCitBbmQgYWxsIGhpcyBhcm1vdXIgc3RhaW5lZCwgZXJlIHdoaWxlIHNvIGJyaWdodC4gDQorRm9ydGh3aXRoIG9uIGFsbCBzaWRlcyB0byBoaXMgYWlkIHdhcyBydW4gDQorQnkgQW5nZWxzIG1hbnkgYW5kIHN0cm9uZywgd2hvIGludGVycG9zZWQgDQorRGVmZW5jZSwgd2hpbGUgb3RoZXJzIGJvcmUgaGltIG9uIHRoZWlyIHNoaWVsZHMgDQorQmFjayB0byBoaXMgY2hhcmlvdCwgd2hlcmUgaXQgc3Rvb2QgcmV0aXJlZCANCitGcm9tIG9mZiB0aGUgZmlsZXMgb2Ygd2FyOiAgVGhlcmUgdGhleSBoaW0gbGFpZCANCitHbmFzaGluZyBmb3IgYW5ndWlzaCwgYW5kIGRlc3BpdGUsIGFuZCBzaGFtZSwgDQorVG8gZmluZCBoaW1zZWxmIG5vdCBtYXRjaGxlc3MsIGFuZCBoaXMgcHJpZGUgDQorSHVtYmxlZCBieSBzdWNoIHJlYnVrZSwgc28gZmFyIGJlbmVhdGggDQorSGlzIGNvbmZpZGVuY2UgdG8gZXF1YWwgR29kIGluIHBvd2VyLiANCitZZXQgc29vbiBoZSBoZWFsZWQ7IGZvciBTcGlyaXRzIHRoYXQgbGl2ZSB0aHJvdWdob3V0IA0KK1ZpdGFsIGluIGV2ZXJ5IHBhcnQsIG5vdCBhcyBmcmFpbCBtYW4gDQorSW4gZW50cmFpbHMsIGhlYXJ0IG9mIGhlYWQsIGxpdmVyIG9yIHJlaW5zLCANCitDYW5ub3QgYnV0IGJ5IGFubmloaWxhdGluZyBkaWU7IA0KK05vciBpbiB0aGVpciBsaXF1aWQgdGV4dHVyZSBtb3J0YWwgd291bmQgDQorUmVjZWl2ZSwgbm8gbW9yZSB0aGFuIGNhbiB0aGUgZmx1aWQgYWlyOiANCitBbGwgaGVhcnQgdGhleSBsaXZlLCBhbGwgaGVhZCwgYWxsIGV5ZSwgYWxsIGVhciwgDQorQWxsIGludGVsbGVjdCwgYWxsIHNlbnNlOyBhbmQsIGFzIHRoZXkgcGxlYXNlLCANCitUaGV5IGxpbWIgdGhlbXNlbHZlcywgYW5kIGNvbG91ciwgc2hhcGUsIG9yIHNpemUgDQorQXNzdW1lLCBhcz9raWtlcyB0aGVtIGJlc3QsIGNvbmRlbnNlIG9yIHJhcmUuIA0KK01lYW4gd2hpbGUgaW4gb3RoZXIgcGFydHMgbGlrZSBkZWVkcyBkZXNlcnZlZCANCitNZW1vcmlhbCwgd2hlcmUgdGhlIG1pZ2h0IG9mIEdhYnJpZWwgZm91Z2h0LCANCitBbmQgd2l0aCBmaWVyY2UgZW5zaWducyBwaWVyY2VkIHRoZSBkZWVwIGFycmF5IA0KK09mIE1vbG9jaCwgZnVyaW91cyBraW5nOyB3aG8gaGltIGRlZmllZCwgDQorQW5kIGF0IGhpcyBjaGFyaW90LXdoZWVscyB0byBkcmFnIGhpbSBib3VuZCANCitUaHJlYXRlbmVkLCBub3IgZnJvbSB0aGUgSG9seSBPbmUgb2YgSGVhdmVuIA0KK1JlZnJhaW5lZCBoaXMgdG9uZ3VlIGJsYXNwaGVtb3VzOyBidXQgYW5vbiANCitEb3duIGNsb3ZlbiB0byB0aGUgd2Fpc3QsIHdpdGggc2hhdHRlcmVkIGFybXMgDQorQW5kIHVuY291dGggcGFpbiBmbGVkIGJlbGxvd2luZy4gIE9uIGVhY2ggd2luZyANCitVcmllbCwgYW5kIFJhcGhhZWwsIGhpcyB2YXVudGluZyBmb2UsIA0KK1Rob3VnaCBodWdlLCBhbmQgaW4gYSByb2NrIG9mIGRpYW1vbmQgYXJtZWQsIA0KK1ZhbnF1aXNoZWQgQWRyYW1lbGVjaCwgYW5kIEFzbWFkYWksIA0KK1R3byBwb3RlbnQgVGhyb25lcywgdGhhdCB0byBiZSBsZXNzIHRoYW4gR29kcyANCitEaXNkYWluZWQsIGJ1dCBtZWFuZXIgdGhvdWdodHMgbGVhcm5lZCBpbiB0aGVpciBmbGlnaHQsIA0KK01hbmdsZWQgd2l0aCBnaGFzdGx5IHdvdW5kcyB0aHJvdWdoIHBsYXRlIGFuZCBtYWlsLiANCitOb3Igc3Rvb2QgdW5taW5kZnVsIEFiZGllbCB0byBhbm5veSANCitUaGUgYXRoZWlzdCBjcmV3LCBidXQgd2l0aCByZWRvdWJsZWQgYmxvdyANCitBcmllbCwgYW5kIEFyaW9jaCwgYW5kIHRoZSB2aW9sZW5jZSANCitPZiBSYW1pZWwgc2NvcmNoZWQgYW5kIGJsYXN0ZWQsIG92ZXJ0aHJldy4gDQorSSBtaWdodCByZWxhdGUgb2YgdGhvdXNhbmRzLCBhbmQgdGhlaXIgbmFtZXMgDQorRXRlcm5pemUgaGVyZSBvbiBlYXJ0aDsgYnV0IHRob3NlIGVsZWN0IA0KK0FuZ2VscywgY29udGVudGVkIHdpdGggdGhlaXIgZmFtZSBpbiBIZWF2ZW4sIA0KK1NlZWsgbm90IHRoZSBwcmFpc2Ugb2YgbWVuOiAgVGhlIG90aGVyIHNvcnQsIA0KK0luIG1pZ2h0IHRob3VnaCB3b25kZXJvdXMgYW5kIGluIGFjdHMgb2Ygd2FyLCANCitOb3Igb2YgcmVub3duIGxlc3MgZWFnZXIsIHlldCBieSBkb29tIA0KK0NhbmNlbGxlZCBmcm9tIEhlYXZlbiBhbmQgc2FjcmVkIG1lbW9yeSwgDQorTmFtZWxlc3MgaW4gZGFyayBvYmxpdmlvbiBsZXQgdGhlbSBkd2VsbC4gDQorRm9yIHN0cmVuZ3RoIGZyb20gdHJ1dGggZGl2aWRlZCwgYW5kIGZyb20ganVzdCwgDQorSWxsYXVkYWJsZSwgbm91Z2h0IG1lcml0cyBidXQgZGlzcHJhaXNlIA0KK0FuZCBpZ25vbWlueTsgeWV0IHRvIGdsb3J5IGFzcGlyZXMgDQorVmFpbi1nbG9yaW91cywgYW5kIHRocm91Z2ggaW5mYW15IHNlZWtzIGZhbWU6IA0KK1RoZXJlZm9yZSBldGVybmFsIHNpbGVuY2UgYmUgdGhlaXIgZG9vbS4gDQorQW5kIG5vdywgdGhlaXIgbWlnaHRpZXN0IHF1ZWxsZWQsIHRoZSBiYXR0bGUgc3dlcnZlZCwgDQorV2l0aCBtYW55IGFuIGlucm9hZCBnb3JlZDsgZGVmb3JtZWQgcm91dCANCitFbnRlcmVkLCBhbmQgZm91bCBkaXNvcmRlcjsgYWxsIHRoZSBncm91bmQgDQorV2l0aCBzaGl2ZXJlZCBhcm1vdXIgc3Ryb3duLCBhbmQgb24gYSBoZWFwIA0KK0NoYXJpb3QgYW5kIGNoYXJpb3RlZXIgbGF5IG92ZXJ0dXJuZWQsIA0KK0FuZCBmaWVyeS1mb2FtaW5nIHN0ZWVkczsgd2hhdCBzdG9vZCwgcmVjb2lsZWQgDQorTydlci13ZWFyaWVkLCB0aHJvdWdoIHRoZSBmYWludCBTYXRhbmljayBob3N0IA0KK0RlZmVuc2l2ZSBzY2FyY2UsIG9yIHdpdGggcGFsZSBmZWFyIHN1cnByaXNlZCwgDQorVGhlbiBmaXJzdCB3aXRoIGZlYXIgc3VycHJpc2VkLCBhbmQgc2Vuc2Ugb2YgcGFpbiwgDQorRmxlZCBpZ25vbWluaW91cywgdG8gc3VjaCBldmlsIGJyb3VnaHQgDQorQnkgc2luIG9mIGRpc29iZWRpZW5jZTsgdGlsbCB0aGF0IGhvdXIgDQorTm90IGxpYWJsZSB0byBmZWFyLCBvciBmbGlnaHQsIG9yIHBhaW4uIA0KK0ZhciBvdGhlcndpc2UgdGhlIGludmlvbGFibGUgU2FpbnRzLCANCitJbiBjdWJpY2sgcGhhbGFueCBmaXJtLCBhZHZhbmNlZCBlbnRpcmUsIA0KK0ludnVsbmVyYWJsZSwgaW1wZW5ldHJhYmx5IGFybWVkOyANCitTdWNoIGhpZ2ggYWR2YW50YWdlcyB0aGVpciBpbm5vY2VuY2UgDQorR2F2ZSB0aGVtIGFib3ZlIHRoZWlyIGZvZXM7IG5vdCB0byBoYXZlIHNpbm5lZCwgDQorTm90IHRvIGhhdmUgZGlzb2JleWVkOyBpbiBmaWdodCB0aGV5IHN0b29kIA0KK1Vud2VhcmllZCwgdW5vYm5veGlvdXMgdG8gYmUgcGFpbmVkIA0KK0J5IHdvdW5kLCB0aG91Z2ggZnJvbSB0aGVpciBwbGFjZSBieSB2aW9sZW5jZSBtb3ZlZCwgDQorTm93IE5pZ2h0IGhlciBjb3Vyc2UgYmVnYW4sIGFuZCwgb3ZlciBIZWF2ZW4gDQorSW5kdWNpbmcgZGFya25lc3MsIGdyYXRlZnVsIHRydWNlIGltcG9zZWQsIA0KK0FuZCBzaWxlbmNlIG9uIHRoZSBvZGlvdXMgZGluIG9mIHdhcjogDQorVW5kZXIgaGVyIGNsb3VkeSBjb3ZlcnQgYm90aCByZXRpcmVkLCANCitWaWN0b3IgYW5kIHZhbnF1aXNoZWQ6ICBPbiB0aGUgZm91Z2h0ZW4gZmllbGQgDQorTWljaGFlbCBhbmQgaGlzIEFuZ2VscyBwcmV2YWxlbnQgDQorRW5jYW1waW5nLCBwbGFjZWQgaW4gZ3VhcmQgdGhlaXIgd2F0Y2hlcyByb3VuZCwgDQorQ2hlcnViaWNrIHdhdmluZyBmaXJlczogIE9uIHRoZSBvdGhlciBwYXJ0LCANCitTYXRhbiB3aXRoIGhpcyByZWJlbGxpb3VzIGRpc2FwcGVhcmVkLCANCitGYXIgaW4gdGhlIGRhcmsgZGlzbG9kZ2VkOyBhbmQsIHZvaWQgb2YgcmVzdCwgDQorSGlzIHBvdGVudGF0ZXMgdG8gY291bmNpbCBjYWxsZWQgYnkgbmlnaHQ7IA0KK0FuZCBpbiB0aGUgbWlkc3QgdGh1cyB1bmRpc21heWVkIGJlZ2FuLiANCitPIG5vdyBpbiBkYW5nZXIgdHJpZWQsIG5vdyBrbm93biBpbiBhcm1zIA0KK05vdCB0byBiZSBvdmVycG93ZXJlZCwgQ29tcGFuaW9ucyBkZWFyLCANCitGb3VuZCB3b3J0aHkgbm90IG9mIGxpYmVydHkgYWxvbmUsIA0KK1RvbyBtZWFuIHByZXRlbmNlISBidXQgd2hhdCB3ZSBtb3JlIGFmZmVjdCwgDQorSG9ub3VyLCBkb21pbmlvbiwgZ2xvcnksIGFuZCByZW5vd247IA0KK1dobyBoYXZlIHN1c3RhaW5lZCBvbmUgZGF5IGluIGRvdWJ0ZnVsIGZpZ2h0LCANCisoQW5kIGlmIG9uZSBkYXksIHdoeSBub3QgZXRlcm5hbCBkYXlzPykgDQorV2hhdCBIZWF2ZW4ncyBMb3JkIGhhZCBwb3dlcmZ1bGxlc3QgdG8gc2VuZCANCitBZ2FpbnN0IHVzIGZyb20gYWJvdXQgaGlzIHRocm9uZSwgYW5kIGp1ZGdlZCANCitTdWZmaWNpZW50IHRvIHN1YmR1ZSB1cyB0byBoaXMgd2lsbCwgDQorQnV0IHByb3ZlcyBub3Qgc286ICBUaGVuIGZhbGxpYmxlLCBpdCBzZWVtcywgDQorT2YgZnV0dXJlIHdlIG1heSBkZWVtIGhpbSwgdGhvdWdoIHRpbGwgbm93IA0KK09tbmlzY2llbnQgdGhvdWdodC4gIFRydWUgaXMsIGxlc3MgZmlybWx5IGFybWVkLCANCitTb21lIGRpc2FkdmFudGFnZSB3ZSBlbmR1cmVkIGFuZCBwYWluLCANCitUaWxsIG5vdyBub3Qga25vd24sIGJ1dCwga25vd24sIGFzIHNvb24gY29udGVtbmVkOyANCitTaW5jZSBub3cgd2UgZmluZCB0aGlzIG91ciBlbXB5cmVhbCBmb3JtIA0KK0luY2FwYWJsZSBvZiBtb3J0YWwgaW5qdXJ5LCANCitJbXBlcmlzaGFibGUsIGFuZCwgdGhvdWdoIHBpZXJjZWQgd2l0aCB3b3VuZCwgDQorU29vbiBjbG9zaW5nLCBhbmQgYnkgbmF0aXZlIHZpZ291ciBoZWFsZWQuIA0KK09mIGV2aWwgdGhlbiBzbyBzbWFsbCBhcyBlYXN5IHRoaW5rIA0KK1RoZSByZW1lZHk7IHBlcmhhcHMgbW9yZSB2YWxpZCBhcm1zLCANCitXZWFwb25zIG1vcmUgdmlvbGVudCwgd2hlbiBuZXh0IHdlIG1lZXQsIA0KK01heSBzZXJ2ZSB0byBiZXR0ZXIgdXMsIGFuZCB3b3JzZSBvdXIgZm9lcywgDQorT3IgZXF1YWwgd2hhdCBiZXR3ZWVuIHVzIG1hZGUgdGhlIG9kZHMsIA0KK0luIG5hdHVyZSBub25lOiAgSWYgb3RoZXIgaGlkZGVuIGNhdXNlIA0KK0xlZnQgdGhlbSBzdXBlcmlvdXIsIHdoaWxlIHdlIGNhbiBwcmVzZXJ2ZSANCitVbmh1cnQgb3VyIG1pbmRzLCBhbmQgdW5kZXJzdGFuZGluZyBzb3VuZCwgDQorRHVlIHNlYXJjaCBhbmQgY29uc3VsdGF0aW9uIHdpbGwgZGlzY2xvc2UuIA0KK0hlIHNhdDsgYW5kIGluIHRoZSBhc3NlbWJseSBuZXh0IHVwc3Rvb2QgDQorTmlzcm9jaCwgb2YgUHJpbmNpcGFsaXRpZXMgdGhlIHByaW1lOyANCitBcyBvbmUgaGUgc3Rvb2QgZXNjYXBlZCBmcm9tIGNydWVsIGZpZ2h0LCANCitTb3JlIHRvaWxlZCwgaGlzIHJpdmVuIGFybXMgdG8gaGF2b2NrIGhld24sIA0KK0FuZCBjbG91ZHkgaW4gYXNwZWN0IHRodXMgYW5zd2VyaW5nIHNwYWtlLiANCitEZWxpdmVyZXIgZnJvbSBuZXcgTG9yZHMsIGxlYWRlciB0byBmcmVlIA0KK0Vuam95bWVudCBvZiBvdXIgcmlnaHQgYXMgR29kczsgeWV0IGhhcmQgDQorRm9yIEdvZHMsIGFuZCB0b28gdW5lcXVhbCB3b3JrIHdlIGZpbmQsIA0KK0FnYWluc3QgdW5lcXVhbCBhcm1zIHRvIGZpZ2h0IGluIHBhaW4sIA0KK0FnYWluc3QgdW5wYWluZWQsIGltcGFzc2l2ZTsgZnJvbSB3aGljaCBldmlsIA0KK1J1aW4gbXVzdCBuZWVkcyBlbnN1ZTsgZm9yIHdoYXQgYXZhaWxzIA0KK1ZhbG91ciBvciBzdHJlbmd0aCwgdGhvdWdoIG1hdGNobGVzcywgcXVlbGxlZCB3aXRoIHBhaW4gDQorV2hpY2ggYWxsIHN1YmR1ZXMsIGFuZCBtYWtlcyByZW1pc3MgdGhlIGhhbmRzIA0KK09mIG1pZ2h0aWVzdD8gIFNlbnNlIG9mIHBsZWFzdXJlIHdlIG1heSB3ZWxsIA0KK1NwYXJlIG91dCBvZiBsaWZlIHBlcmhhcHMsIGFuZCBub3QgcmVwaW5lLCANCitCdXQgbGl2ZSBjb250ZW50LCB3aGljaCBpcyB0aGUgY2FsbWVzdCBsaWZlOiANCitCdXQgcGFpbiBpcyBwZXJmZWN0IG1pc2VyeSwgdGhlIHdvcnN0IA0KK09mIGV2aWxzLCBhbmQsIGV4Y2Vzc2l2ZSwgb3ZlcnR1cm5zIA0KK0FsbCBwYXRpZW5jZS4gIEhlLCB3aG8gdGhlcmVmb3JlIGNhbiBpbnZlbnQgDQorV2l0aCB3aGF0IG1vcmUgZm9yY2libGUgd2UgbWF5IG9mZmVuZCANCitPdXIgeWV0IHVud291bmRlZCBlbmVtaWVzLCBvciBhcm0gDQorT3Vyc2VsdmVzIHdpdGggbGlrZSBkZWZlbmNlLCB0byBtZSBkZXNlcnZlcyANCitObyBsZXNzIHRoYW4gZm9yIGRlbGl2ZXJhbmNlIHdoYXQgd2Ugb3dlLiANCitXaGVyZXRvIHdpdGggbG9vayBjb21wb3NlZCBTYXRhbiByZXBsaWVkLiANCitOb3QgdW5pbnZlbnRlZCB0aGF0LCB3aGljaCB0aG91IGFyaWdodCANCitCZWxpZXZlc3Qgc28gbWFpbiB0byBvdXIgc3VjY2VzcywgSSBicmluZy4gDQorV2hpY2ggb2YgdXMgd2hvIGJlaG9sZHMgdGhlIGJyaWdodCBzdXJmYWNlIA0KK09mIHRoaXMgZXRoZXJlb3VzIG1vdWxkIHdoZXJlb24gd2Ugc3RhbmQsIA0KK1RoaXMgY29udGluZW50IG9mIHNwYWNpb3VzIEhlYXZlbiwgYWRvcm5lZCANCitXaXRoIHBsYW50LCBmcnVpdCwgZmxvd2VyIGFtYnJvc2lhbCwgZ2VtcywgYW5kIGdvbGQ7IA0KK1dob3NlIGV5ZSBzbyBzdXBlcmZpY2lhbGx5IHN1cnZleXMgDQorVGhlc2UgdGhpbmdzLCBhcyBub3QgdG8gbWluZCBmcm9tIHdoZW5jZSB0aGV5IGdyb3cgDQorRGVlcCB1bmRlciBncm91bmQsIG1hdGVyaWFscyBkYXJrIGFuZCBjcnVkZSwgDQorT2Ygc3Bpcml0b3VzIGFuZCBmaWVyeSBzcHVtZSwgdGlsbCB0b3VjaGVkIA0KK1dpdGggSGVhdmVuJ3MgcmF5LCBhbmQgdGVtcGVyZWQsIHRoZXkgc2hvb3QgZm9ydGggDQorU28gYmVhdXRlb3VzLCBvcGVuaW5nIHRvIHRoZSBhbWJpZW50IGxpZ2h0PyANCitUaGVzZSBpbiB0aGVpciBkYXJrIG5hdGl2aXR5IHRoZSBkZWVwIA0KK1NoYWxsIHlpZWxkIHVzLCBwcmVnbmFudCB3aXRoIGluZmVybmFsIGZsYW1lOyANCitXaGljaCwgaW50byBob2xsb3cgZW5naW5lcywgbG9uZyBhbmQgcm91bmQsIA0KK1RoaWNrIHJhbW1lZCwgYXQgdGhlIG90aGVyIGJvcmUgd2l0aCB0b3VjaCBvZiBmaXJlIA0KK0RpbGF0ZWQgYW5kIGluZnVyaWF0ZSwgc2hhbGwgc2VuZCBmb3J0aCANCitGcm9tIGZhciwgd2l0aCB0aHVuZGVyaW5nIG5vaXNlLCBhbW9uZyBvdXIgZm9lcyANCitTdWNoIGltcGxlbWVudHMgb2YgbWlzY2hpZWYsIGFzIHNoYWxsIGRhc2ggDQorVG8gcGllY2VzLCBhbmQgbydlcndoZWxtIHdoYXRldmVyIHN0YW5kcyANCitBZHZlcnNlLCB0aGF0IHRoZXkgc2hhbGwgZmVhciB3ZSBoYXZlIGRpc2FybWVkIA0KK1RoZSBUaHVuZGVyZXIgb2YgaGlzIG9ubHkgZHJlYWRlZCBib2x0LiANCitOb3IgbG9uZyBzaGFsbCBiZSBvdXIgbGFib3VyOyB5ZXQgZXJlIGRhd24sIA0KK0VmZmVjdCBzaGFsbCBlbmQgb3VyIHdpc2guICBNZWFuIHdoaWxlIHJldml2ZTsgDQorQWJhbmRvbiBmZWFyOyB0byBzdHJlbmd0aCBhbmQgY291bnNlbCBqb2luZWQgDQorVGhpbmsgbm90aGluZyBoYXJkLCBtdWNoIGxlc3MgdG8gYmUgZGVzcGFpcmVkLiANCitIZSBlbmRlZCwgYW5kIGhpcyB3b3JkcyB0aGVpciBkcm9vcGluZyBjaGVlciANCitFbmxpZ2h0ZW5lZCwgYW5kIHRoZWlyIGxhbmd1aXNoZWQgaG9wZSByZXZpdmVkLiANCitUaGUgaW52ZW50aW9uIGFsbCBhZG1pcmVkLCBhbmQgZWFjaCwgaG93IGhlIA0KK1RvIGJlIHRoZSBpbnZlbnRlciBtaXNzZWQ7IHNvIGVhc3kgaXQgc2VlbWVkIA0KK09uY2UgZm91bmQsIHdoaWNoIHlldCB1bmZvdW5kIG1vc3Qgd291bGQgaGF2ZSB0aG91Z2h0IA0KK0ltcG9zc2libGU6ICBZZXQsIGhhcGx5LCBvZiB0aHkgcmFjZSANCitJbiBmdXR1cmUgZGF5cywgaWYgbWFsaWNlIHNob3VsZCBhYm91bmQsIA0KK1NvbWUgb25lIGludGVudCBvbiBtaXNjaGllZiwgb3IgaW5zcGlyZWQgDQorV2l0aCBkZXZpbGlzaCBtYWNoaW5hdGlvbiwgbWlnaHQgZGV2aXNlIA0KK0xpa2UgaW5zdHJ1bWVudCB0byBwbGFndWUgdGhlIHNvbnMgb2YgbWVuIA0KK0ZvciBzaW4sIG9uIHdhciBhbmQgbXV0dWFsIHNsYXVnaHRlciBiZW50LiANCitGb3J0aHdpdGggZnJvbSBjb3VuY2lsIHRvIHRoZSB3b3JrIHRoZXkgZmxldzsgDQorTm9uZSBhcmd1aW5nIHN0b29kOyBpbm51bWVyYWJsZSBoYW5kcyANCitXZXJlIHJlYWR5OyBpbiBhIG1vbWVudCB1cCB0aGV5IHR1cm5lZCANCitXaWRlIHRoZSBjZWxlc3RpYWwgc29pbCwgYW5kIHNhdyBiZW5lYXRoIA0KK1RoZSBvcmlnaW5hbHMgb2YgbmF0dXJlIGluIHRoZWlyIGNydWRlIA0KK0NvbmNlcHRpb247IHN1bHBodXJvdXMgYW5kIG5pdHJvdXMgZm9hbSANCitUaGV5IGZvdW5kLCB0aGV5IG1pbmdsZWQsIGFuZCwgd2l0aCBzdWJ0bGUgYXJ0LCANCitDb25jb2N0ZWQgYW5kIGFkdXN0ZWQgdGhleSByZWR1Y2VkIA0KK1RvIGJsYWNrZXN0IGdyYWluLCBhbmQgaW50byBzdG9yZSBjb252ZXllZDogDQorUGFydCBoaWRkZW4gdmVpbnMgZGlnZ2VkIHVwIChub3IgaGF0aCB0aGlzIGVhcnRoIA0KK0VudHJhaWxzIHVubGlrZSkgb2YgbWluZXJhbCBhbmQgc3RvbmUsIA0KK1doZXJlb2YgdG8gZm91bmQgdGhlaXIgZW5naW5lcyBhbmQgdGhlaXIgYmFsbHMgDQorT2YgbWlzc2l2ZSBydWluOyBwYXJ0IGluY2VudGl2ZSByZWVkIA0KK1Byb3ZpZGUsIHBlcm5pY2lvdXMgd2l0aCBvbmUgdG91Y2ggdG8gZmlyZS4gDQorU28gYWxsIGVyZSBkYXktc3ByaW5nLCB1bmRlciBjb25zY2lvdXMgbmlnaHQsIA0KK1NlY3JldCB0aGV5IGZpbmlzaGVkLCBhbmQgaW4gb3JkZXIgc2V0LCANCitXaXRoIHNpbGVudCBjaXJjdW1zcGVjdGlvbiwgdW5lc3BpZWQuIA0KK05vdyB3aGVuIGZhaXIgbW9ybiBvcmllbnQgaW4gSGVhdmVuIGFwcGVhcmVkLCANCitVcCByb3NlIHRoZSB2aWN0b3ItQW5nZWxzLCBhbmQgdG8gYXJtcyANCitUaGUgbWF0aW4gdHJ1bXBldCBzdW5nOiAgSW4gYXJtcyB0aGV5IHN0b29kIA0KK09mIGdvbGRlbiBwYW5vcGx5LCByZWZ1bGdlbnQgaG9zdCwgDQorU29vbiBiYW5kZWQ7IG90aGVycyBmcm9tIHRoZSBkYXduaW5nIGhpbGxzIA0KK0xvb2sgcm91bmQsIGFuZCBzY291dHMgZWFjaCBjb2FzdCBsaWdodC1hcm1lZCBzY291ciwgDQorRWFjaCBxdWFydGVyIHRvIGRlc2NyeSB0aGUgZGlzdGFudCBmb2UsIA0KK1doZXJlIGxvZGdlZCwgb3Igd2hpdGhlciBmbGVkLCBvciBpZiBmb3IgZmlnaHQsIA0KK0luIG1vdGlvbiBvciBpbiBoYWx0OiAgSGltIHNvb24gdGhleSBtZXQgDQorVW5kZXIgc3ByZWFkIGVuc2lnbnMgbW92aW5nIG5pZ2gsIGluIHNsb3cgDQorQnV0IGZpcm0gYmF0dGFsaW9uOyBiYWNrIHdpdGggc3BlZWRpZXN0IHNhaWwgDQorWm9waGllbCwgb2YgQ2hlcnViaW0gdGhlIHN3aWZ0ZXN0IHdpbmcsIA0KK0NhbWUgZmx5aW5nLCBhbmQgaW4gbWlkIGFpciBhbG91ZCB0aHVzIGNyaWVkLiANCitBcm0sIFdhcnJpb3VycywgYXJtIGZvciBmaWdodDsgdGhlIGZvZSBhdCBoYW5kLCANCitXaG9tIGZsZWQgd2UgdGhvdWdodCwgd2lsbCBzYXZlIHVzIGxvbmcgcHVyc3VpdCANCitUaGlzIGRheTsgZmVhciBub3QgaGlzIGZsaWdodDtzbyB0aGljayBhIGNsb3VkIA0KK0hlIGNvbWVzLCBhbmQgc2V0dGxlZCBpbiBoaXMgZmFjZSBJIHNlZSANCitTYWQgcmVzb2x1dGlvbiwgYW5kIHNlY3VyZTogIExldCBlYWNoIA0KK0hpcyBhZGFtYW50aW5lIGNvYXQgZ2lyZCB3ZWxsLCBhbmQgZWFjaCANCitGaXQgd2VsbCBoaXMgaGVsbSwgZ3JpcGUgZmFzdCBoaXMgb3JiZWQgc2hpZWxkLCANCitCb3JuZSBldmVuIG9yIGhpZ2g7IGZvciB0aGlzIGRheSB3aWxsIHBvdXIgZG93biwgDQorSWYgSSBjb25qZWN0dXJlIGF1Z2h0LCBubyBkcml6emxpbmcgc2hvd2VyLCANCitCdXQgcmF0dGxpbmcgc3Rvcm0gb2YgYXJyb3dzIGJhcmJlZCB3aXRoIGZpcmUuIA0KK1NvIHdhcm5lZCBoZSB0aGVtLCBhd2FyZSB0aGVtc2VsdmVzLCBhbmQgc29vbiANCitJbiBvcmRlciwgcXVpdCBvZiBhbGwgaW1wZWRpbWVudDsgDQorSW5zdGFudCB3aXRob3V0IGRpc3R1cmIgdGhleSB0b29rIGFsYXJtLCANCitBbmQgb253YXJkIG1vdmVkIGVtYmF0dGxlZDogIFdoZW4gYmVob2xkISANCitOb3QgZGlzdGFudCBmYXIgd2l0aCBoZWF2eSBwYWNlIHRoZSBmb2UgDQorQXBwcm9hY2hpbmcgZ3Jvc3MgYW5kIGh1Z2UsIGluIGhvbGxvdyBjdWJlIA0KK1RyYWluaW5nIGhpcyBkZXZpbGlzaCBlbmdpbmVyeSwgaW1wYWxlZCANCitPbiBldmVyeSBzaWRlIHdpdGggc2hhZG93aW5nIHNxdWFkcm9ucyBkZWVwLCANCitUbyBoaWRlIHRoZSBmcmF1ZC4gIEF0IGludGVydmlldyBib3RoIHN0b29kIA0KK0Egd2hpbGU7IGJ1dCBzdWRkZW5seSBhdCBoZWFkIGFwcGVhcmVkIA0KK1NhdGFuLCBhbmQgdGh1cyB3YXMgaGVhcmQgY29tbWFuZGluZyBsb3VkLiANCitWYW5ndWFyZCwgdG8gcmlnaHQgYW5kIGxlZnQgdGhlIGZyb250IHVuZm9sZDsgDQorVGhhdCBhbGwgbWF5IHNlZSB3aG8gaGF0ZSB1cywgaG93IHdlIHNlZWsgDQorUGVhY2UgYW5kIGNvbXBvc3VyZSwgYW5kIHdpdGggb3BlbiBicmVhc3QgDQorU3RhbmQgcmVhZHkgdG8gcmVjZWl2ZSB0aGVtLCBpZiB0aGV5IGxpa2UgDQorT3VyIG92ZXJ0dXJlOyBhbmQgdHVybiBub3QgYmFjayBwZXJ2ZXJzZTogDQorQnV0IHRoYXQgSSBkb3VidDsgaG93ZXZlciB3aXRuZXNzLCBIZWF2ZW4hIA0KK0hlYXZlbiwgd2l0bmVzcyB0aG91IGFub24hIHdoaWxlIHdlIGRpc2NoYXJnZSANCitGcmVlbHkgb3VyIHBhcnQ6IHllLCB3aG8gYXBwb2ludGVkIHN0YW5kIA0KK0RvIGFzIHlvdSBoYXZlIGluIGNoYXJnZSwgYW5kIGJyaWVmbHkgdG91Y2ggDQorV2hhdCB3ZSBwcm9wb3VuZCwgYW5kIGxvdWQgdGhhdCBhbGwgbWF5IGhlYXIhIA0KK1NvIHNjb2ZmaW5nIGluIGFtYmlndW91cyB3b3JkcywgaGUgc2NhcmNlIA0KK0hhZCBlbmRlZDsgd2hlbiB0byByaWdodCBhbmQgbGVmdCB0aGUgZnJvbnQgDQorRGl2aWRlZCwgYW5kIHRvIGVpdGhlciBmbGFuayByZXRpcmVkOiANCitXaGljaCB0byBvdXIgZXllcyBkaXNjb3ZlcmVkLCBuZXcgYW5kIHN0cmFuZ2UsIA0KK0EgdHJpcGxlIG1vdW50ZWQgcm93IG9mIHBpbGxhcnMgbGFpZCANCitPbiB3aGVlbHMgKGZvciBsaWtlIHRvIHBpbGxhcnMgbW9zdCB0aGV5IHNlZW1lZCwgDQorT3IgaG9sbG93ZWQgYm9kaWVzIG1hZGUgb2Ygb2FrIG9yIGZpciwgDQorV2l0aCBicmFuY2hlcyBsb3B0LCBpbiB3b29kIG9yIG1vdW50YWluIGZlbGxlZCwpIA0KK0JyYXNzLCBpcm9uLCBzdG9ueSBtb3VsZCwgaGFkIG5vdCB0aGVpciBtb3V0aHMgDQorV2l0aCBoaWRlb3VzIG9yaWZpY2UgZ2FwZWQgb24gdXMgd2lkZSwgDQorUG9ydGVuZGluZyBob2xsb3cgdHJ1Y2U6ICBBdCBlYWNoIGJlaGluZCANCitBIFNlcmFwaCBzdG9vZCwgYW5kIGluIGhpcyBoYW5kIGEgcmVlZCANCitTdG9vZCB3YXZpbmcgdGlwdCB3aXRoIGZpcmU7IHdoaWxlIHdlLCBzdXNwZW5zZSwgDQorQ29sbGVjdGVkIHN0b29kIHdpdGhpbiBvdXIgdGhvdWdodHMgYW11c2VkLCANCitOb3QgbG9uZzsgZm9yIHN1ZGRlbiBhbGwgYXQgb25jZSB0aGVpciByZWVkcyANCitQdXQgZm9ydGgsIGFuZCB0byBhIG5hcnJvdyB2ZW50IGFwcGxpZWQgDQorV2l0aCBuaWNlc3QgdG91Y2guICBJbW1lZGlhdGUgaW4gYSBmbGFtZSwgDQorQnV0IHNvb24gb2JzY3VyZWQgd2l0aCBzbW9rZSwgYWxsIEhlYXZlbiBhcHBlYXJlZCwgDQorRnJvbSB0aG9zZSBkZWVwLXRocm9hdGVkIGVuZ2luZXMgYmVsY2hlZCwgd2hvc2Ugcm9hciANCitFbWJvd2VsbGVkIHdpdGggb3V0cmFnZW91cyBub2lzZSB0aGUgYWlyLCANCitBbmQgYWxsIGhlciBlbnRyYWlscyB0b3JlLCBkaXNnb3JnaW5nIGZvdWwgDQorVGhlaXIgZGV2aWxpc2ggZ2x1dCwgY2hhaW5lZCB0aHVuZGVyYm9sdHMgYW5kIGhhaWwgDQorT2YgaXJvbiBnbG9iZXM7IHdoaWNoLCBvbiB0aGUgdmljdG9yIGhvc3QgDQorTGV2ZWxsZWQsIHdpdGggc3VjaCBpbXBldHVvdXMgZnVyeSBzbW90ZSwgDQorVGhhdCwgd2hvbSB0aGV5IGhpdCwgbm9uZSBvbiB0aGVpciBmZWV0IG1pZ2h0IHN0YW5kLCANCitUaG91Z2ggc3RhbmRpbmcgZWxzZSBhcyByb2NrcywgYnV0IGRvd24gdGhleSBmZWxsIA0KK0J5IHRob3VzYW5kcywgQW5nZWwgb24gQXJjaC1BbmdlbCByb2xsZWQ7IA0KK1RoZSBzb29uZXIgZm9yIHRoZWlyIGFybXM7IHVuYXJtZWQsIHRoZXkgbWlnaHQgDQorSGF2ZSBlYXNpbHksIGFzIFNwaXJpdHMsIGV2YWRlZCBzd2lmdCANCitCeSBxdWljayBjb250cmFjdGlvbiBvciByZW1vdmU7IGJ1dCBub3cgDQorRm91bCBkaXNzaXBhdGlvbiBmb2xsb3dlZCwgYW5kIGZvcmNlZCByb3V0OyANCitOb3Igc2VydmVkIGl0IHRvIHJlbGF4IHRoZWlyIHNlcnJpZWQgZmlsZXMuIA0KK1doYXQgc2hvdWxkIHRoZXkgZG8/IGlmIG9uIHRoZXkgcnVzaGVkLCByZXB1bHNlIA0KK1JlcGVhdGVkLCBhbmQgaW5kZWNlbnQgb3ZlcnRocm93IA0KK0RvdWJsZWQsIHdvdWxkIHJlbmRlciB0aGVtIHlldCBtb3JlIGRlc3Bpc2VkLCANCitBbmQgdG8gdGhlaXIgZm9lcyBhIGxhdWdodGVyOyBmb3IgaW4gdmlldyANCitTdG9vZCByYW5rZWQgb2YgU2VyYXBoaW0gYW5vdGhlciByb3csIA0KK0luIHBvc3R1cmUgdG8gZGlzcGxvZGUgdGhlaXIgc2Vjb25kIHRpcmUgDQorT2YgdGh1bmRlcjogIEJhY2sgZGVmZWF0ZWQgdG8gcmV0dXJuIA0KK1RoZXkgd29yc2UgYWJob3JyZWQuICBTYXRhbiBiZWhlbGQgdGhlaXIgcGxpZ2h0LCANCitBbmQgdG8gaGlzIG1hdGVzIHRodXMgaW4gZGVyaXNpb24gY2FsbGVkLiANCitPIEZyaWVuZHMhIHdoeSBjb21lIG5vdCBvbiB0aGVzZSB2aWN0b3JzIHByb3VkIA0KK0VyZSB3aGlsZSB0aGV5IGZpZXJjZSB3ZXJlIGNvbWluZzsgYW5kIHdoZW4gd2UsIA0KK1RvIGVudGVydGFpbiB0aGVtIGZhaXIgd2l0aCBvcGVuIGZyb250IA0KK0FuZCBicmVhc3QsICh3aGF0IGNvdWxkIHdlIG1vcmU/KSBwcm9wb3VuZGVkIHRlcm1zIA0KK09mIGNvbXBvc2l0aW9uLCBzdHJhaWdodCB0aGV5IGNoYW5nZWQgdGhlaXIgbWluZHMsIA0KK0ZsZXcgb2ZmLCBhbmQgaW50byBzdHJhbmdlIHZhZ2FyaWVzIGZlbGwsIA0KK0FzIHRoZXkgd291bGQgZGFuY2U7IHlldCBmb3IgYSBkYW5jZSB0aGV5IHNlZW1lZCANCitTb21ld2hhdCBleHRyYXZhZ2FudCBhbmQgd2lsZDsgcGVyaGFwcyANCitGb3Igam95IG9mIG9mZmVyZWQgcGVhY2U6ICBCdXQgSSBzdXBwb3NlLCANCitJZiBvdXIgcHJvcG9zYWxzIG9uY2UgYWdhaW4gd2VyZSBoZWFyZCwgDQorV2Ugc2hvdWxkIGNvbXBlbCB0aGVtIHRvIGEgcXVpY2sgcmVzdWx0LiANCitUbyB3aG9tIHRodXMgQmVsaWFsLCBpbiBsaWtlIGdhbWVzb21lIG1vb2QuIA0KK0xlYWRlciEgdGhlIHRlcm1zIHdlIHNlbnQgd2VyZSB0ZXJtcyBvZiB3ZWlnaHQsIA0KK09mIGhhcmQgY29udGVudHMsIGFuZCBmdWxsIG9mIGZvcmNlIHVyZ2VkIGhvbWU7IA0KK1N1Y2ggYXMgd2UgbWlnaHQgcGVyY2VpdmUgYW11c2VkIHRoZW0gYWxsLCANCitBbmQgc3R1bWJsZWQgbWFueTogIFdobyByZWNlaXZlcyB0aGVtIHJpZ2h0LCANCitIYWQgbmVlZCBmcm9tIGhlYWQgdG8gZm9vdCB3ZWxsIHVuZGVyc3RhbmQ7IA0KK05vdCB1bmRlcnN0b29kLCB0aGlzIGdpZnQgdGhleSBoYXZlIGJlc2lkZXMsIA0KK1RoZXkgc2hvdyB1cyB3aGVuIG91ciBmb2VzIHdhbGsgbm90IHVwcmlnaHQuIA0KK1NvIHRoZXkgYW1vbmcgdGhlbXNlbHZlcyBpbiBwbGVhc2FudCB2ZWluIA0KK1N0b29kIHNjb2ZmaW5nLCBoaWdodGVuZWQgaW4gdGhlaXIgdGhvdWdodHMgYmV5b25kIA0KK0FsbCBkb3VidCBvZiB2aWN0b3J5OiAgRXRlcm5hbCBNaWdodCANCitUbyBtYXRjaCB3aXRoIHRoZWlyIGludmVudGlvbnMgdGhleSBwcmVzdW1lZCANCitTbyBlYXN5LCBhbmQgb2YgaGlzIHRodW5kZXIgbWFkZSBhIHNjb3JuLCANCitBbmQgYWxsIGhpcyBob3N0IGRlcmlkZWQsIHdoaWxlIHRoZXkgc3Rvb2QgDQorQSB3aGlsZSBpbiB0cm91YmxlOiAgQnV0IHRoZXkgc3Rvb2Qgbm90IGxvbmc7IA0KK1JhZ2UgcHJvbXB0ZWQgdGhlbSBhdCBsZW5ndGgsIGFuZCBmb3VuZCB0aGVtIGFybXMgDQorQWdhaW5zdCBzdWNoIGhlbGxpc2ggbWlzY2hpZWYgZml0IHRvIG9wcG9zZS4gDQorRm9ydGh3aXRoIChiZWhvbGQgdGhlIGV4Y2VsbGVuY2UsIHRoZSBwb3dlciwgDQorV2hpY2ggR29kIGhhdGggaW4gaGlzIG1pZ2h0eSBBbmdlbHMgcGxhY2VkISkgDQorVGhlaXIgYXJtcyBhd2F5IHRoZXkgdGhyZXcsIGFuZCB0byB0aGUgaGlsbHMgDQorKEZvciBFYXJ0aCBoYXRoIHRoaXMgdmFyaWV0eSBmcm9tIEhlYXZlbiANCitPZiBwbGVhc3VyZSBzaXR1YXRlIGluIGhpbGwgYW5kIGRhbGUsKSANCitMaWdodCBhcyB0aGUgbGlnaHRuaW5nIGdsaW1wc2UgdGhleSByYW4sIHRoZXkgZmxldzsgDQorRnJvbSB0aGVpciBmb3VuZGF0aW9ucyBsb29zZW5pbmcgdG8gYW5kIGZybywgDQorVGhleSBwbHVja2VkIHRoZSBzZWF0ZWQgaGlsbHMsIHdpdGggYWxsIHRoZWlyIGxvYWQsIA0KK1JvY2tzLCB3YXRlcnMsIHdvb2RzLCBhbmQgYnkgdGhlIHNoYWdneSB0b3BzIA0KK1VwLWxpZnRpbmcgYm9yZSB0aGVtIGluIHRoZWlyIGhhbmRzOiAgQW1hemUsIA0KK0JlIHN1cmUsIGFuZCB0ZXJyb3VyLCBzZWl6ZWQgdGhlIHJlYmVsIGhvc3QsIA0KK1doZW4gY29taW5nIHRvd2FyZHMgdGhlbSBzbyBkcmVhZCB0aGV5IHNhdyANCitUaGUgYm90dG9tIG9mIHRoZSBtb3VudGFpbnMgdXB3YXJkIHR1cm5lZDsgDQorVGlsbCBvbiB0aG9zZSBjdXJzZWQgZW5naW5lcycgdHJpcGxlLXJvdyANCitUaGV5IHNhdyB0aGVtIHdoZWxtZWQsIGFuZCBhbGwgdGhlaXIgY29uZmlkZW5jZSANCitVbmRlciB0aGUgd2VpZ2h0IG9mIG1vdW50YWlucyBidXJpZWQgZGVlcDsgDQorVGhlbXNlbHZlcyBpbnZhZGVkIG5leHQsIGFuZCBvbiB0aGVpciBoZWFkcyANCitNYWluIHByb21vbnRvcmllcyBmbHVuZywgd2hpY2ggaW4gdGhlIGFpciANCitDYW1lIHNoYWRvd2luZywgYW5kIG9wcHJlc3NlZCB3aG9sZSBsZWdpb25zIGFybWVkOyANCitUaGVpciBhcm1vdXIgaGVscGVkIHRoZWlyIGhhcm0sIGNydXNoZWQgaW4gYW5kIGJydWlzZWQgDQorSW50byB0aGVpciBzdWJzdGFuY2UgcGVudCwgd2hpY2ggd3JvdWdodCB0aGVtIHBhaW4gDQorSW1wbGFjYWJsZSwgYW5kIG1hbnkgYSBkb2xvcm91cyBncm9hbjsgDQorTG9uZyBzdHJ1Z2dsaW5nIHVuZGVybmVhdGgsIGVyZSB0aGV5IGNvdWxkIHdpbmQgDQorT3V0IG9mIHN1Y2ggcHJpc29uLCB0aG91Z2ggU3Bpcml0cyBvZiBwdXJlc3QgbGlnaHQsIA0KK1B1cmVzdCBhdCBmaXJzdCwgbm93IGdyb3NzIGJ5IHNpbm5pbmcgZ3Jvd24uIA0KK1RoZSByZXN0LCBpbiBpbWl0YXRpb24sIHRvIGxpa2UgYXJtcyANCitCZXRvb2sgdGhlbSwgYW5kIHRoZSBuZWlnaGJvdXJpbmcgaGlsbHMgdXB0b3JlOiANCitTbyBoaWxscyBhbWlkIHRoZSBhaXIgZW5jb3VudGVyZWQgaGlsbHMsIA0KK0h1cmxlZCB0byBhbmQgZnJvIHdpdGggamFjdWxhdGlvbiBkaXJlOyANCitUaGF0IHVuZGVyIGdyb3VuZCB0aGV5IGZvdWdodCBpbiBkaXNtYWwgc2hhZGU7IA0KK0luZmVybmFsIG5vaXNlISB3YXIgc2VlbWVkIGEgY2l2aWwgZ2FtZSANCitUbyB0aGlzIHVwcm9hcjsgaG9ycmlkIGNvbmZ1c2lvbiBoZWFwZWQgDQorVXBvbiBjb25mdXNpb24gcm9zZTogIEFuZCBub3cgYWxsIEhlYXZlbiANCitIYWQgZ29uZSB0byB3cmFjaywgd2l0aCBydWluIG92ZXJzcHJlYWQ7IA0KK0hhZCBub3QgdGhlIEFsbWlnaHR5IEZhdGhlciwgd2hlcmUgaGUgc2l0cyANCitTaHJpbmVkIGluIGhpcyBzYW5jdHVhcnkgb2YgSGVhdmVuIHNlY3VyZSwgDQorQ29uc3VsdGluZyBvbiB0aGUgc3VtIG9mIHRoaW5ncywgZm9yZXNlZW4gDQorVGhpcyB0dW11bHQsIGFuZCBwZXJtaXR0ZWQgYWxsLCBhZHZpc2VkOiANCitUaGF0IGhpcyBncmVhdCBwdXJwb3NlIGhlIG1pZ2h0IHNvIGZ1bGZpbCwgDQorVG8gaG9ub3VyIGhpcyBhbm9pbnRlZCBTb24gYXZlbmdlZCANCitVcG9uIGhpcyBlbmVtaWVzLCBhbmQgdG8gZGVjbGFyZSANCitBbGwgcG93ZXIgb24gaGltIHRyYW5zZmVycmVkOiAgV2hlbmNlIHRvIGhpcyBTb24sIA0KK1RoZSBBc3Nlc3NvdXIgb2YgaGlzIHRocm9uZSwgaGUgdGh1cyBiZWdhbi4gDQorRWZmdWxnZW5jZSBvZiBteSBnbG9yeSwgU29uIGJlbG92ZWQsIA0KK1NvbiwgaW4gd2hvc2UgZmFjZSBpbnZpc2libGUgaXMgYmVoZWxkIA0KK1Zpc2libHksIHdoYXQgYnkgRGVpdHkgSSBhbTsgDQorQW5kIGluIHdob3NlIGhhbmQgd2hhdCBieSBkZWNyZWUgSSBkbywgDQorU2Vjb25kIE9tbmlwb3RlbmNlISB0d28gZGF5cyBhcmUgcGFzdCwgDQorVHdvIGRheXMsIGFzIHdlIGNvbXB1dGUgdGhlIGRheXMgb2YgSGVhdmVuLCANCitTaW5jZSBNaWNoYWVsIGFuZCBoaXMgUG93ZXJzIHdlbnQgZm9ydGggdG8gdGFtZSANCitUaGVzZSBkaXNvYmVkaWVudDogIFNvcmUgaGF0aCBiZWVuIHRoZWlyIGZpZ2h0LCANCitBcyBsaWtlbGllc3Qgd2FzLCB3aGVuIHR3byBzdWNoIGZvZXMgbWV0IGFybWVkOyANCitGb3IgdG8gdGhlbXNlbHZlcyBJIGxlZnQgdGhlbTsgYW5kIHRob3Uga25vd2VzdCwgDQorRXF1YWwgaW4gdGhlaXIgY3JlYXRpb24gdGhleSB3ZXJlIGZvcm1lZCwgDQorU2F2ZSB3aGF0IHNpbiBoYXRoIGltcGFpcmVkOyB3aGljaCB5ZXQgaGF0aCB3cm91Z2h0IA0KK0luc2Vuc2libHksIGZvciBJIHN1c3BlbmQgdGhlaXIgZG9vbTsgDQorV2hlbmNlIGluIHBlcnBldHVhbCBmaWdodCB0aGV5IG5lZWRzIG11c3QgbGFzdCANCitFbmRsZXNzLCBhbmQgbm8gc29sdXRpb24gd2lsbCBiZSBmb3VuZDogDQorV2FyIHdlYXJpZWQgaGF0aCBwZXJmb3JtZWQgd2hhdCB3YXIgY2FuIGRvLCANCitBbmQgdG8gZGlzb3JkZXJlZCByYWdlIGxldCBsb29zZSB0aGUgcmVpbnMgDQorV2l0aCBtb3VudGFpbnMsIGFzIHdpdGggd2VhcG9ucywgYXJtZWQ7IHdoaWNoIG1ha2VzIA0KK1dpbGQgd29yayBpbiBIZWF2ZW4sIGFuZCBkYW5nZXJvdXMgdG8gdGhlIG1haW4uIA0KK1R3byBkYXlzIGFyZSB0aGVyZWZvcmUgcGFzdCwgdGhlIHRoaXJkIGlzIHRoaW5lOyANCitGb3IgdGhlZSBJIGhhdmUgb3JkYWluZWQgaXQ7IGFuZCB0aHVzIGZhciANCitIYXZlIHN1ZmZlcmVkLCB0aGF0IHRoZSBnbG9yeSBtYXkgYmUgdGhpbmUgDQorT2YgZW5kaW5nIHRoaXMgZ3JlYXQgd2FyLCBzaW5jZSBub25lIGJ1dCBUaG91IA0KK0NhbiBlbmQgaXQuICBJbnRvIHRoZWUgc3VjaCB2aXJ0dWUgYW5kIGdyYWNlIA0KK0ltbWVuc2UgSSBoYXZlIHRyYW5zZnVzZWQsIHRoYXQgYWxsIG1heSBrbm93IA0KK0luIEhlYXZlbiBhbmQgSGVsbCB0aHkgcG93ZXIgYWJvdmUgY29tcGFyZTsgDQorQW5kLCB0aGlzIHBlcnZlcnNlIGNvbW1vdGlvbiBnb3Zlcm5lZCB0aHVzLCANCitUbyBtYW5pZmVzdCB0aGVlIHdvcnRoaWVzdCB0byBiZSBIZWlyIA0KK09mIGFsbCB0aGluZ3M7IHRvIGJlIEhlaXIsIGFuZCB0byBiZSBLaW5nIA0KK0J5IHNhY3JlZCB1bmN0aW9uLCB0aHkgZGVzZXJ2ZWQgcmlnaHQuIA0KK0dvIHRoZW4sIFRob3UgTWlnaHRpZXN0LCBpbiB0aHkgRmF0aGVyJ3MgbWlnaHQ7IA0KK0FzY2VuZCBteSBjaGFyaW90LCBndWlkZSB0aGUgcmFwaWQgd2hlZWxzIA0KK1RoYXQgc2hha2UgSGVhdmVuJ3MgYmFzaXMsIGJyaW5nIGZvcnRoIGFsbCBteSB3YXIsIA0KK015IGJvdyBhbmQgdGh1bmRlciwgbXkgYWxtaWdodHkgYXJtcyANCitHaXJkIG9uLCBhbmQgc3dvcmQgdXBvbiB0aHkgcHVpc3NhbnQgdGhpZ2g7IA0KK1B1cnN1ZSB0aGVzZSBzb25zIG9mIGRhcmtuZXNzLCBkcml2ZSB0aGVtIG91dCANCitGcm9tIGFsbCBIZWF2ZW4ncyBib3VuZHMgaW50byB0aGUgdXR0ZXIgZGVlcDogDQorVGhlcmUgbGV0IHRoZW0gbGVhcm4sIGFzIGxpa2VzIHRoZW0sIHRvIGRlc3Bpc2UgDQorR29kLCBhbmQgTWVzc2lhaCBoaXMgYW5vaW50ZWQgS2luZy4gDQorSGUgc2FpZCwgYW5kIG9uIGhpcyBTb24gd2l0aCByYXlzIGRpcmVjdCANCitTaG9uZSBmdWxsOyBoZSBhbGwgaGlzIEZhdGhlciBmdWxsIGV4cHJlc3NlZCANCitJbmVmZmFibHkgaW50byBoaXMgZmFjZSByZWNlaXZlZDsgDQorQW5kIHRodXMgdGhlIEZpbGlhbCBHb2RoZWFkIGFuc3dlcmluZyBzcGFrZS4gDQorTyBGYXRoZXIsIE8gU3VwcmVtZSBvZiBoZWF2ZW5seSBUaHJvbmVzLCANCitGaXJzdCwgSGlnaGVzdCwgSG9saWVzdCwgQmVzdDsgdGhvdSBhbHdheXMgc2VlaydzdCANCitUbyBnbG9yaWZ5IHRoeSBTb24sIEkgYWx3YXlzIHRoZWUsIA0KK0FzIGlzIG1vc3QganVzdDogIFRoaXMgSSBteSBnbG9yeSBhY2NvdW50LCANCitNeSBleGFsdGF0aW9uLCBhbmQgbXkgd2hvbGUgZGVsaWdodCwgDQorVGhhdCB0aG91LCBpbiBtZSB3ZWxsIHBsZWFzZWQsIGRlY2xhcmVzdCB0aHkgd2lsbCANCitGdWxmaWxsZWQsIHdoaWNoIHRvIGZ1bGZpbCBpcyBhbGwgbXkgYmxpc3MuIA0KK1NjZXB0ZXIgYW5kIHBvd2VyLCB0aHkgZ2l2aW5nLCBJIGFzc3VtZSwgDQorQW5kIGdsYWRsaWVyIHNoYWxsIHJlc2lnbiwgd2hlbiBpbiB0aGUgZW5kIA0KK1Rob3Ugc2hhbHQgYmUgYWxsIGluIGFsbCwgYW5kIEkgaW4gdGhlZSANCitGb3IgZXZlcjsgYW5kIGluIG1lIGFsbCB3aG9tIHRob3UgbG92ZXN0OiANCitCdXQgd2hvbSB0aG91IGhhdGVzdCwgSSBoYXRlLCBhbmQgY2FuIHB1dCBvbiANCitUaHkgdGVycm91cnMsIGFzIEkgcHV0IHRoeSBtaWxkbmVzcyBvbiwgDQorSW1hZ2Ugb2YgdGhlZSBpbiBhbGwgdGhpbmdzOyBhbmQgc2hhbGwgc29vbiwgDQorQXJtZWQgd2l0aCB0aHkgbWlnaHQsIHJpZCBIZWF2ZW4gb2YgdGhlc2UgcmViZWxsZWQ7IA0KK1RvIHRoZWlyIHByZXBhcmVkIGlsbCBtYW5zaW9uIGRyaXZlbiBkb3duLCANCitUbyBjaGFpbnMgb2YgZGFya25lc3MsIGFuZCB0aGUgdW5keWluZyB3b3JtOyANCitUaGF0IGZyb20gdGh5IGp1c3Qgb2JlZGllbmNlIGNvdWxkIHJldm9sdCwgDQorV2hvbSB0byBvYmV5IGlzIGhhcHBpbmVzcyBlbnRpcmUuIA0KK1RoZW4gc2hhbGwgdGh5IFNhaW50cyB1bm1peGVkLCBhbmQgZnJvbSB0aGUgaW1wdXJlIA0KK0ZhciBzZXBhcmF0ZSwgY2lyY2xpbmcgdGh5IGhvbHkgbW91bnQsIA0KK1VuZmVpZ25lZCBIYWxsZWx1aWFocyB0byB0aGVlIHNpbmcsIA0KK0h5bW5zIG9mIGhpZ2ggcHJhaXNlLCBhbmQgSSBhbW9uZyB0aGVtIENoaWVmLiANCitTbyBzYWlkLCBoZSwgbydlciBoaXMgc2NlcHRlciBib3dpbmcsIHJvc2UgDQorRnJvbSB0aGUgcmlnaHQgaGFuZCBvZiBHbG9yeSB3aGVyZSBoZSBzYXQ7IA0KK0FuZCB0aGUgdGhpcmQgc2FjcmVkIG1vcm4gYmVnYW4gdG8gc2hpbmUsIA0KK0Rhd25pbmcgdGhyb3VnaCBIZWF2ZW4uICBGb3J0aCBydXNoZWQgd2l0aCB3aGlybHdpbmQgc291bmQgDQorVGhlIGNoYXJpb3Qgb2YgUGF0ZXJuYWwgRGVpdHksIA0KK0ZsYXNoaW5nIHRoaWNrIGZsYW1lcywgd2hlZWwgd2l0aGluIHdoZWVsIHVuZHJhd24sIA0KK0l0c2VsZiBpbnN0aW5jdCB3aXRoIFNwaXJpdCwgYnV0IGNvbnZveWVkIA0KK0J5IGZvdXIgQ2hlcnViaWNrIHNoYXBlczsgZm91ciBmYWNlcyBlYWNoIA0KK0hhZCB3b25kZXJvdXM7IGFzIHdpdGggc3RhcnMsIHRoZWlyIGJvZGllcyBhbGwgDQorQW5kIHdpbmdzIHdlcmUgc2V0IHdpdGggZXllczsgd2l0aCBleWVzIHRoZSB3aGVlbHMgDQorT2YgYmVyeWwsIGFuZCBjYXJlZXJpbmcgZmlyZXMgYmV0d2VlbjsgDQorT3ZlciB0aGVpciBoZWFkcyBhIGNyeXN0YWwgZmlybWFtZW50LCANCitXaGVyZW9uIGEgc2FwcGhpcmUgdGhyb25lLCBpbmxhaWQgd2l0aCBwdXJlIA0KK0FtYmVyLCBhbmQgY29sb3VycyBvZiB0aGUgc2hvd2VyeSBhcmNoLiANCitIZSwgaW4gY2VsZXN0aWFsIHBhbm9wbHkgYWxsIGFybWVkIA0KK09mIHJhZGlhbnQgVXJpbSwgd29yayBkaXZpbmVseSB3cm91Z2h0LCANCitBc2NlbmRlZDsgYXQgaGlzIHJpZ2h0IGhhbmQgVmljdG9yeSANCitTYXQgZWFnbGUtd2luZ2VkOyBiZXNpZGUgaGltIGh1bmcgaGlzIGJvdyANCitBbmQgcXVpdmVyIHdpdGggdGhyZWUtYm9sdGVkIHRodW5kZXIgc3RvcmVkOyANCitBbmQgZnJvbSBhYm91dCBoaW0gZmllcmNlIGVmZnVzaW9uIHJvbGxlZCANCitPZiBzbW9rZSwgYW5kIGJpY2tlcmluZyBmbGFtZSwgYW5kIHNwYXJrbGVzIGRpcmU6IA0KK0F0dGVuZGVkIHdpdGggdGVuIHRob3VzYW5kIHRob3VzYW5kIFNhaW50cywgDQorSGUgb253YXJkIGNhbWU7IGZhciBvZmYgaGlzIGNvbWluZyBzaG9uZTsgDQorQW5kIHR3ZW50eSB0aG91c2FuZCAoSSB0aGVpciBudW1iZXIgaGVhcmQpIA0KK0NoYXJpb3RzIG9mIEdvZCwgaGFsZiBvbiBlYWNoIGhhbmQsIHdlcmUgc2VlbjsgDQorSGUgb24gdGhlIHdpbmdzIG9mIENoZXJ1YiByb2RlIHN1YmxpbWUgDQorT24gdGhlIGNyeXN0YWxsaW5lIHNreSwgaW4gc2FwcGhpcmUgdGhyb25lZCwgDQorSWxsdXN0cmlvdXMgZmFyIGFuZCB3aWRlOyBidXQgYnkgaGlzIG93biANCitGaXJzdCBzZWVuOiAgVGhlbSB1bmV4cGVjdGVkIGpveSBzdXJwcmlzZWQsIA0KK1doZW4gdGhlIGdyZWF0IGVuc2lnbiBvZiBNZXNzaWFoIGJsYXplZCANCitBbG9mdCBieSBBbmdlbHMgYm9ybmUsIGhpcyBzaWduIGluIEhlYXZlbjsgDQorVW5kZXIgd2hvc2UgY29uZHVjdCBNaWNoYWVsIHNvb24gcmVkdWNlZCANCitIaXMgYXJteSwgY2lyY3VtZnVzZWQgb24gZWl0aGVyIHdpbmcsIA0KK1VuZGVyIHRoZWlyIEhlYWQgaW1ib2RpZWQgYWxsIGluIG9uZS4gDQorQmVmb3JlIGhpbSBQb3dlciBEaXZpbmUgaGlzIHdheSBwcmVwYXJlZDsgDQorQXQgaGlzIGNvbW1hbmQgdGhlIHVwcm9vdGVkIGhpbGxzIHJldGlyZWQgDQorRWFjaCB0byBoaXMgcGxhY2U7IHRoZXkgaGVhcmQgaGlzIHZvaWNlLCBhbmQgd2VudCANCitPYnNlcXVpb3VzOyBIZWF2ZW4gaGlzIHdvbnRlZCBmYWNlIHJlbmV3ZWQsIA0KK0FuZCB3aXRoIGZyZXNoIGZsb3dlcmV0cyBoaWxsIGFuZCB2YWxsZXkgc21pbGVkLiANCitUaGlzIHNhdyBoaXMgaGFwbGVzcyBmb2VzLCBidXQgc3Rvb2Qgb2JkdXJlZCwgDQorQW5kIHRvIHJlYmVsbGlvdXMgZmlnaHQgcmFsbGllZCB0aGVpciBQb3dlcnMsIA0KK0luc2Vuc2F0ZSwgaG9wZSBjb25jZWl2aW5nIGZyb20gZGVzcGFpci4gDQorSW4gaGVhdmVubHkgU3Bpcml0cyBjb3VsZCBzdWNoIHBlcnZlcnNlbmVzcyBkd2VsbD8gDQorQnV0IHRvIGNvbnZpbmNlIHRoZSBwcm91ZCB3aGF0IHNpZ25zIGF2YWlsLCANCitPciB3b25kZXJzIG1vdmUgdGhlIG9iZHVyYXRlIHRvIHJlbGVudD8gDQorVGhleSwgaGFyZGVuZWQgbW9yZSBieSB3aGF0IG1pZ2h0IG1vc3QgcmVjbGFpbSwgDQorR3JpZXZpbmcgdG8gc2VlIGhpcyBnbG9yeSwgYXQgdGhlIHNpZ2h0IA0KK1Rvb2sgZW52eTsgYW5kLCBhc3BpcmluZyB0byBoaXMgaGlnaHRoLCANCitTdG9vZCByZS1lbWJhdHRsZWQgZmllcmNlLCBieSBmb3JjZSBvciBmcmF1ZCANCitXZWVuaW5nIHRvIHByb3NwZXIsIGFuZCBhdCBsZW5ndGggcHJldmFpbCANCitBZ2FpbnN0IEdvZCBhbmQgTWVzc2lhaCwgb3IgdG8gZmFsbCANCitJbiB1bml2ZXJzYWwgcnVpbiBsYXN0OyBhbmQgbm93IA0KK1RvIGZpbmFsIGJhdHRsZSBkcmV3LCBkaXNkYWluaW5nIGZsaWdodCwgDQorT3IgZmFpbnQgcmV0cmVhdDsgd2hlbiB0aGUgZ3JlYXQgU29uIG9mIEdvZCANCitUbyBhbGwgaGlzIGhvc3Qgb24gZWl0aGVyIGhhbmQgdGh1cyBzcGFrZS4gDQorU3RhbmQgc3RpbGwgaW4gYnJpZ2h0IGFycmF5LCB5ZSBTYWludHM7IGhlcmUgc3RhbmQsIA0KK1llIEFuZ2VscyBhcm1lZDsgdGhpcyBkYXkgZnJvbSBiYXR0bGUgcmVzdDogDQorRmFpdGhmdWwgaGF0aCBiZWVuIHlvdXIgd2FyZmFyZSwgYW5kIG9mIEdvZCANCitBY2NlcHRlZCwgZmVhcmxlc3MgaW4gaGlzIHJpZ2h0ZW91cyBjYXVzZTsgDQorQW5kIGFzIHllIGhhdmUgcmVjZWl2ZWQsIHNvIGhhdmUgeWUgZG9uZSwgDQorSW52aW5jaWJseTogIEJ1dCBvZiB0aGlzIGN1cnNlZCBjcmV3IA0KK1RoZSBwdW5pc2htZW50IHRvIG90aGVyIGhhbmQgYmVsb25nczsgDQorVmVuZ2VhbmNlIGlzIGhpcywgb3Igd2hvc2UgaGUgc29sZSBhcHBvaW50czogDQorTnVtYmVyIHRvIHRoaXMgZGF5J3Mgd29yayBpcyBub3Qgb3JkYWluZWQsIA0KK05vciBtdWx0aXR1ZGU7IHN0YW5kIG9ubHksIGFuZCBiZWhvbGQgDQorR29kJ3MgaW5kaWduYXRpb24gb24gdGhlc2UgZ29kbGVzcyBwb3VyZWQgDQorQnkgbWU7IG5vdCB5b3UsIGJ1dCBtZSwgdGhleSBoYXZlIGRlc3Bpc2VkLCANCitZZXQgZW52aWVkOyBhZ2FpbnN0IG1lIGlzIGFsbCB0aGVpciByYWdlLCANCitCZWNhdXNlIHRoZSBGYXRoZXIsIHRvIHdob20gaW4gSGVhdmVuIHMncHJlbWUgDQorS2luZ2RvbSwgYW5kIHBvd2VyLCBhbmQgZ2xvcnkgYXBwZXJ0YWlucywgDQorSGF0aCBob25vdXJlZCBtZSwgYWNjb3JkaW5nIHRvIGhpcyB3aWxsLiANCitUaGVyZWZvcmUgdG8gbWUgdGhlaXIgZG9vbSBoZSBoYXRoIGFzc2lnbmVkOyANCitUaGF0IHRoZXkgbWF5IGhhdmUgdGhlaXIgd2lzaCwgdG8gdHJ5IHdpdGggbWUgDQorSW4gYmF0dGxlIHdoaWNoIHRoZSBzdHJvbmdlciBwcm92ZXM7IHRoZXkgYWxsLCANCitPciBJIGFsb25lIGFnYWluc3QgdGhlbTsgc2luY2UgYnkgc3RyZW5ndGggDQorVGhleSBtZWFzdXJlIGFsbCwgb2Ygb3RoZXIgZXhjZWxsZW5jZSANCitOb3QgZW11bG91cywgbm9yIGNhcmUgd2hvIHRoZW0gZXhjZWxzOyANCitOb3Igb3RoZXIgc3RyaWZlIHdpdGggdGhlbSBkbyBJIHZvdWNoc2FmZS4gDQorU28gc3Bha2UgdGhlIFNvbiwgYW5kIGludG8gdGVycm91ciBjaGFuZ2VkIA0KK0hpcyBjb3VudGVuYW5jZSB0b28gc2V2ZXJlIHRvIGJlIGJlaGVsZCwgDQorQW5kIGZ1bGwgb2Ygd3JhdGggYmVudCBvbiBoaXMgZW5lbWllcy4gDQorQXQgb25jZSB0aGUgRm91ciBzcHJlYWQgb3V0IHRoZWlyIHN0YXJyeSB3aW5ncyANCitXaXRoIGRyZWFkZnVsIHNoYWRlIGNvbnRpZ3VvdXMsIGFuZCB0aGUgb3JicyANCitPZiBoaXMgZmllcmNlIGNoYXJpb3Qgcm9sbGVkLCBhcyB3aXRoIHRoZSBzb3VuZCANCitPZiB0b3JyZW50IGZsb29kcywgb3Igb2YgYSBudW1lcm91cyBob3N0LiANCitIZSBvbiBoaXMgaW1waW91cyBmb2VzIHJpZ2h0IG9ud2FyZCBkcm92ZSwgDQorR2xvb215IGFzIG5pZ2h0OyB1bmRlciBoaXMgYnVybmluZyB3aGVlbHMgDQorVGhlIHN0ZWRmYXN0IGVtcHlyZWFuIHNob29rIHRocm91Z2hvdXQsIA0KK0FsbCBidXQgdGhlIHRocm9uZSBpdHNlbGYgb2YgR29kLiAgRnVsbCBzb29uIA0KK0Ftb25nIHRoZW0gaGUgYXJyaXZlZDsgaW4gaGlzIHJpZ2h0IGhhbmQgDQorR3Jhc3BpbmcgdGVuIHRob3VzYW5kIHRodW5kZXJzLCB3aGljaCBoZSBzZW50IA0KK0JlZm9yZSBoaW0sIHN1Y2ggYXMgaW4gdGhlaXIgc291bHMgaW5maXhlZCANCitQbGFndWVzOiAgVGhleSwgYXN0b25pc2hlZCwgYWxsIHJlc2lzdGFuY2UgbG9zdCwgDQorQWxsIGNvdXJhZ2U7IGRvd24gdGhlaXIgaWRsZSB3ZWFwb25zIGRyb3B0OiANCitPJ2VyIHNoaWVsZHMsIGFuZCBoZWxtcywgYW5kIGhlbG1lZCBoZWFkcyBoZSByb2RlIA0KK09mIFRocm9uZXMgYW5kIG1pZ2h0eSBTZXJhcGhpbSBwcm9zdHJhdGUsIA0KK1RoYXQgd2lzaGVkIHRoZSBtb3VudGFpbnMgbm93IG1pZ2h0IGJlIGFnYWluIA0KK1Rocm93biBvbiB0aGVtLCBhcyBhIHNoZWx0ZXIgZnJvbSBoaXMgaXJlLiANCitOb3IgbGVzcyBvbiBlaXRoZXIgc2lkZSB0ZW1wZXN0dW91cyBmZWxsIA0KK0hpcyBhcnJvd3MsIGZyb20gdGhlIGZvdXJmb2xkLXZpc2FnZWQgRm91ciANCitEaXN0aW5jdCB3aXRoIGV5ZXMsIGFuZCBmcm9tIHRoZSBsaXZpbmcgd2hlZWxzIA0KK0Rpc3RpbmN0IGFsaWtlIHdpdGggbXVsdGl0dWRlIG9mIGV5ZXM7IA0KK09uZSBTcGlyaXQgaW4gdGhlbSBydWxlZDsgYW5kIGV2ZXJ5IGV5ZSANCitHbGFyZWQgbGlnaHRuaW5nLCBhbmQgc2hvdCBmb3J0aCBwZXJuaWNpb3VzIGZpcmUgDQorQW1vbmcgdGhlIGFjY3Vyc2VkLCB0aGF0IHdpdGhlcmVkIGFsbCB0aGVpciBzdHJlbmd0aCwgDQorQW5kIG9mIHRoZWlyIHdvbnRlZCB2aWdvdXIgbGVmdCB0aGVtIGRyYWluZWQsIA0KK0V4aGF1c3RlZCwgc3Bpcml0bGVzcywgYWZmbGljdGVkLCBmYWxsZW4uIA0KK1lldCBoYWxmIGhpcyBzdHJlbmd0aCBoZSBwdXQgbm90IGZvcnRoLCBidXQgY2hlY2tlZCANCitIaXMgdGh1bmRlciBpbiBtaWQgdm9sbGV5OyBmb3IgaGUgbWVhbnQgDQorTm90IHRvIGRlc3Ryb3ksIGJ1dCByb290IHRoZW0gb3V0IG9mIEhlYXZlbjogDQorVGhlIG92ZXJ0aHJvd24gaGUgcmFpc2VkLCBhbmQgYXMgYSBoZXJkIA0KK09mIGdvYXRzIG9yIHRpbW9yb3VzIGZsb2NrIHRvZ2V0aGVyIHRocm9uZ2VkIA0KK0Ryb3ZlIHRoZW0gYmVmb3JlIGhpbSB0aHVuZGVyLXN0cnVjaywgcHVyc3VlZCANCitXaXRoIHRlcnJvdXJzLCBhbmQgd2l0aCBmdXJpZXMsIHRvIHRoZSBib3VuZHMgDQorQW5kIGNyeXN0YWwgd2FsbCBvZiBIZWF2ZW47IHdoaWNoLCBvcGVuaW5nIHdpZGUsIA0KK1JvbGxlZCBpbndhcmQsIGFuZCBhIHNwYWNpb3VzIGdhcCBkaXNjbG9zZWQgDQorSW50byB0aGUgd2FzdGVmdWwgZGVlcDogIFRoZSBtb25zdHJvdXMgc2lnaHQgDQorU3RydWNrIHRoZW0gd2l0aCBob3Jyb3VyIGJhY2t3YXJkLCBidXQgZmFyIHdvcnNlIA0KK1VyZ2VkIHRoZW0gYmVoaW5kOiAgSGVhZGxvbmcgdGhlbXNlbHZlcyB0aGV5IHRocmV3IA0KK0Rvd24gZnJvbSB0aGUgdmVyZ2Ugb2YgSGVhdmVuOyBldGVybmFsIHdyYXRoIA0KK0J1cm50IGFmdGVyIHRoZW0gdG8gdGhlIGJvdHRvbWxlc3MgcGl0LiANCitIZWxsIGhlYXJkIHRoZSB1bnN1ZmZlcmFibGUgbm9pc2UsIEhlbGwgc2F3IA0KK0hlYXZlbiBydWluaW5nIGZyb20gSGVhdmVuLCBhbmQgd291bGQgaGF2ZSBmbGVkIA0KK0FmZnJpZ2h0ZWQ7IGJ1dCBzdHJpY3QgRmF0ZSBoYWQgY2FzdCB0b28gZGVlcCANCitIZXIgZGFyayBmb3VuZGF0aW9ucywgYW5kIHRvbyBmYXN0IGhhZCBib3VuZC4gDQorTmluZSBkYXlzIHRoZXkgZmVsbDogIENvbmZvdW5kZWQgQ2hhb3Mgcm9hcmVkLCANCitBbmQgZmVsdCB0ZW5mb2xkIGNvbmZ1c2lvbiBpbiB0aGVpciBmYWxsIA0KK1Rocm91Z2ggaGlzIHdpbGQgYW5hcmNoeSwgc28gaHVnZSBhIHJvdXQgDQorSW5jdW1iZXJlZCBoaW0gd2l0aCBydWluOiAgSGVsbCBhdCBsYXN0IA0KK1lhd25pbmcgcmVjZWl2ZWQgdGhlbSB3aG9sZSwgYW5kIG9uIHRoZW0gY2xvc2VkOyANCitIZWxsLCB0aGVpciBmaXQgaGFiaXRhdGlvbiwgZnJhdWdodCB3aXRoIGZpcmUgDQorVW5xdWVuY2hhYmxlLCB0aGUgaG91c2Ugb2Ygd29lIGFuZCBwYWluLiANCitEaXNidXJkZW5lZCBIZWF2ZW4gcmVqb2ljZWQsIGFuZCBzb29uIHJlcGFpcmVkIA0KK0hlciBtdXJhbCBicmVhY2gsIHJldHVybmluZyB3aGVuY2UgaXQgcm9sbGVkLiANCitTb2xlIHZpY3RvciwgZnJvbSB0aGUgZXhwdWxzaW9uIG9mIGhpcyBmb2VzLCANCitNZXNzaWFoIGhpcyB0cml1bXBoYWwgY2hhcmlvdCB0dXJuZWQ6IA0KK1RvIG1lZXQgaGltIGFsbCBoaXMgU2FpbnRzLCB3aG8gc2lsZW50IHN0b29kIA0KK0V5ZS13aXRuZXNzZXMgb2YgaGlzIGFsbWlnaHR5IGFjdHMsIA0KK1dpdGgganViaWxlZSBhZHZhbmNlZDsgYW5kLCBhcyB0aGV5IHdlbnQsIA0KK1NoYWRlZCB3aXRoIGJyYW5jaGluZyBwYWxtLCBlYWNoIE9yZGVyIGJyaWdodCwgDQorU3VuZyB0cml1bXBoLCBhbmQgaGltIHN1bmcgdmljdG9yaW91cyBLaW5nLCANCitTb24sIEhlaXIsIGFuZCBMb3JkLCB0byBoaW0gZG9taW5pb24gZ2l2ZW4sIA0KK1dvcnRoaWVzdCB0byByZWlnbjogIEhlLCBjZWxlYnJhdGVkLCByb2RlIA0KK1RyaXVtcGhhbnQgdGhyb3VnaCBtaWQgSGVhdmVuLCBpbnRvIHRoZSBjb3VydHMgDQorQW5kIHRlbXBsZSBvZiBoaXMgTWlnaHR5IEZhdGhlciB0aHJvbmVkIA0KK09uIGhpZ2g7IHdobyBpbnRvIGdsb3J5IGhpbSByZWNlaXZlZCwgDQorV2hlcmUgbm93IGhlIHNpdHMgYXQgdGhlIHJpZ2h0IGhhbmQgb2YgYmxpc3MuIA0KK1RodXMsIG1lYXN1cmluZyB0aGluZ3MgaW4gSGVhdmVuIGJ5IHRoaW5ncyBvbiBFYXJ0aCwgDQorQXQgdGh5IHJlcXVlc3QsIGFuZCB0aGF0IHRob3UgbWF5ZXN0IGJld2FyZSANCitCeSB3aGF0IGlzIHBhc3QsIHRvIHRoZWUgSSBoYXZlIHJldmVhbGVkIA0KK1doYXQgbWlnaHQgaGF2ZSBlbHNlIHRvIGh1bWFuIHJhY2UgYmVlbiBoaWQ7IA0KK1RoZSBkaXNjb3JkIHdoaWNoIGJlZmVsLCBhbmQgd2FyIGluIEhlYXZlbiANCitBbW9uZyB0aGUgYW5nZWxpY2sgUG93ZXJzLCBhbmQgdGhlIGRlZXAgZmFsbCANCitPZiB0aG9zZSB0b28gaGlnaCBhc3BpcmluZywgd2hvIHJlYmVsbGVkIA0KK1dpdGggU2F0YW47IGhlIHdobyBlbnZpZXMgbm93IHRoeSBzdGF0ZSwgDQorV2hvIG5vdyBpcyBwbG90dGluZyBob3cgaGUgbWF5IHNlZHVjZSANCitUaGVlIGFsc28gZnJvbSBvYmVkaWVuY2UsIHRoYXQsIHdpdGggaGltIA0KK0JlcmVhdmVkIG9mIGhhcHBpbmVzcywgdGhvdSBtYXllc3QgcGFydGFrZSANCitIaXMgcHVuaXNobWVudCwgZXRlcm5hbCBtaXNlcnk7IA0KK1doaWNoIHdvdWxkIGJlIGFsbCBoaXMgc29sYWNlIGFuZCByZXZlbmdlLCANCitBcyBhIGRlc3BpdGUgZG9uZSBhZ2FpbnN0IHRoZSBNb3N0IEhpZ2gsIA0KK1RoZWUgb25jZSB0byBnYWluIGNvbXBhbmlvbiBvZiBoaXMgd29lLiANCitCdXQgbGlzdGVuIG5vdCB0byBoaXMgdGVtcHRhdGlvbnMsIHdhcm4gDQorVGh5IHdlYWtlcjsgbGV0IGl0IHByb2ZpdCB0aGVlIHRvIGhhdmUgaGVhcmQsIA0KK0J5IHRlcnJpYmxlIGV4YW1wbGUsIHRoZSByZXdhcmQgDQorT2YgZGlzb2JlZGllbmNlOyBmaXJtIHRoZXkgbWlnaHQgaGF2ZSBzdG9vZCwgDQorWWV0IGZlbGw7IHJlbWVtYmVyLCBhbmQgZmVhciB0byB0cmFuc2dyZXNzLiANCisgDQorIA0KKyANCitCb29rIFZJSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgDQorRGVzY2VuZCBmcm9tIEhlYXZlbiwgVXJhbmlhLCBieSB0aGF0IG5hbWUgDQorSWYgcmlnaHRseSB0aG91IGFydCBjYWxsZWQsIHdob3NlIHZvaWNlIGRpdmluZSANCitGb2xsb3dpbmcsIGFib3ZlIHRoZSBPbHltcGlhbiBoaWxsIEkgc29hciwgDQorQWJvdmUgdGhlIGZsaWdodCBvZiBQZWdhc2VhbiB3aW5nISANCitUaGUgbWVhbmluZywgbm90IHRoZSBuYW1lLCBJIGNhbGw6IGZvciB0aG91IA0KK05vciBvZiB0aGUgTXVzZXMgbmluZSwgbm9yIG9uIHRoZSB0b3AgDQorT2Ygb2xkIE9seW1wdXMgZHdlbGxlc3Q7IGJ1dCwgaGVhdmVubHktYm9ybiwgDQorQmVmb3JlIHRoZSBoaWxscyBhcHBlYXJlZCwgb3IgZm91bnRhaW4gZmxvd2VkLCANCitUaG91IHdpdGggZXRlcm5hbCBXaXNkb20gZGlkc3QgY29udmVyc2UsIA0KK1dpc2RvbSB0aHkgc2lzdGVyLCBhbmQgd2l0aCBoZXIgZGlkc3QgcGxheSANCitJbiBwcmVzZW5jZSBvZiB0aGUgQWxtaWdodHkgRmF0aGVyLCBwbGVhc2VkIA0KK1dpdGggdGh5IGNlbGVzdGlhbCBzb25nLiAgVXAgbGVkIGJ5IHRoZWUgDQorSW50byB0aGUgSGVhdmVuIG9mIEhlYXZlbnMgSSBoYXZlIHByZXN1bWVkLCANCitBbiBlYXJ0aGx5IGd1ZXN0LCBhbmQgZHJhd24gZW1weXJlYWwgYWlyLCANCitUaHkgdGVtcGVyaW5nOiB3aXRoIGxpa2Ugc2FmZXR5IGd1aWRlZCBkb3duIA0KK1JldHVybiBtZSB0byBteSBuYXRpdmUgZWxlbWVudDogDQorTGVzdCBmcm9tIHRoaXMgZmx5aW5nIHN0ZWVkIHVucmVpbmVkLCAoYXMgb25jZSANCitCZWxsZXJvcGhvbiwgdGhvdWdoIGZyb20gYSBsb3dlciBjbGltZSwpIA0KK0Rpc21vdW50ZWQsIG9uIHRoZSBBbGVpYW4gZmllbGQgSSBmYWxsLCANCitFcnJvbmVvdXMgdGhlcmUgdG8gd2FuZGVyLCBhbmQgZm9ybG9ybi4gDQorSGFsZiB5ZXQgcmVtYWlucyB1bnN1bmcsIGJ1dCBuYXJyb3dlciBib3VuZCANCitXaXRoaW4gdGhlIHZpc2libGUgZGl1cm5hbCBzcGhlcmU7IA0KK1N0YW5kaW5nIG9uIGVhcnRoLCBub3QgcmFwdCBhYm92ZSB0aGUgcG9sZSwgDQorTW9yZSBzYWZlIEkgc2luZyB3aXRoIG1vcnRhbCB2b2ljZSwgdW5jaGFuZ2VkIA0KK1RvIGhvYXJzZSBvciBtdXRlLCB0aG91Z2ggZmFsbGVuIG9uIGV2aWwgZGF5cywgDQorT24gZXZpbCBkYXlzIHRob3VnaCBmYWxsZW4sIGFuZCBldmlsIHRvbmd1ZXM7IA0KK0luIGRhcmtuZXNzLCBhbmQgd2l0aCBkYW5nZXJzIGNvbXBhc3NlZCByb3VuZCwgDQorQW5kIHNvbGl0dWRlOyB5ZXQgbm90IGFsb25lLCB3aGlsZSB0aG91IA0KK1Zpc2l0ZXN0IG15IHNsdW1iZXJzIG5pZ2h0bHksIG9yIHdoZW4gbW9ybiANCitQdXJwbGVzIHRoZSBlYXN0OiBzdGlsbCBnb3Zlcm4gdGhvdSBteSBzb25nLCANCitVcmFuaWEsIGFuZCBmaXQgYXVkaWVuY2UgZmluZCwgdGhvdWdoIGZldy4gDQorQnV0IGRyaXZlIGZhciBvZmYgdGhlIGJhcmJhcm91cyBkaXNzb25hbmNlIA0KK09mIEJhY2NodXMgYW5kIGhpcyByZXZlbGxlcnMsIHRoZSByYWNlIA0KK09mIHRoYXQgd2lsZCByb3V0IHRoYXQgdG9yZSB0aGUgVGhyYWNpYW4gYmFyZCANCitJbiBSaG9kb3BlLCB3aGVyZSB3b29kcyBhbmQgcm9ja3MgaGFkIGVhcnMgDQorVG8gcmFwdHVyZSwgdGlsbCB0aGUgc2F2YWdlIGNsYW1vdXIgZHJvd25lZCANCitCb3RoIGhhcnAgYW5kIHZvaWNlOyBub3IgY291bGQgdGhlIE11c2UgZGVmZW5kIA0KK0hlciBzb24uICBTbyBmYWlsIG5vdCB0aG91LCB3aG8gdGhlZSBpbXBsb3JlczogDQorRm9yIHRob3UgYXJ0IGhlYXZlbmx5LCBzaGUgYW4gZW1wdHkgZHJlYW0uIA0KK1NheSwgR29kZGVzcywgd2hhdCBlbnN1ZWQgd2hlbiBSYXBoYWVsLCANCitUaGUgYWZmYWJsZSBBcmNoLUFuZ2VsLCBoYWQgZm9yZXdhcm5lZCANCitBZGFtLCBieSBkaXJlIGV4YW1wbGUsIHRvIGJld2FyZSANCitBcG9zdGFzeSwgYnkgd2hhdCBiZWZlbCBpbiBIZWF2ZW4gDQorVG8gdGhvc2UgYXBvc3RhdGVzOyBsZXN0IHRoZSBsaWtlIGJlZmFsbCANCitJbiBQYXJhZGlzZSB0byBBZGFtIG9yIGhpcyByYWNlLCANCitDaGFyZ2VkIG5vdCB0byB0b3VjaCB0aGUgaW50ZXJkaWN0ZWQgdHJlZSwgDQorSWYgdGhleSB0cmFuc2dyZXNzLCBhbmQgc2xpZ2h0IHRoYXQgc29sZSBjb21tYW5kLCANCitTbyBlYXNpbHkgb2JleWVkIGFtaWQgdGhlIGNob2ljZSANCitPZiBhbGwgdGFzdGVzIGVsc2UgdG8gcGxlYXNlIHRoZWlyIGFwcGV0aXRlLCANCitUaG91Z2ggd2FuZGVyaW5nLiAgSGUsIHdpdGggaGlzIGNvbnNvcnRlZCBFdmUsIA0KK1RoZSBzdG9yeSBoZWFyZCBhdHRlbnRpdmUsIGFuZCB3YXMgZmlsbGVkIA0KK1dpdGggYWRtaXJhdGlvbiBhbmQgZGVlcCBtdXNlLCB0byBoZWFyIA0KK09mIHRoaW5ncyBzbyBoaWdoIGFuZCBzdHJhbmdlOyB0aGluZ3MsIHRvIHRoZWlyIHRob3VnaHQgDQorU28gdW5pbWFnaW5hYmxlLCBhcyBoYXRlIGluIEhlYXZlbiwgDQorQW5kIHdhciBzbyBuZWFyIHRoZSBwZWFjZSBvZiBHb2QgaW4gYmxpc3MsIA0KK1dpdGggc3VjaCBjb25mdXNpb246IGJ1dCB0aGUgZXZpbCwgc29vbiANCitEcml2ZW4gYmFjaywgcmVkb3VuZGVkIGFzIGEgZmxvb2Qgb24gdGhvc2UgDQorRnJvbSB3aG9tIGl0IHNwcnVuZzsgaW1wb3NzaWJsZSB0byBtaXggDQorV2l0aCBibGVzc2VkbmVzcy4gIFdoZW5jZSBBZGFtIHNvb24gcmVwZWFsZWQgDQorVGhlIGRvdWJ0cyB0aGF0IGluIGhpcyBoZWFydCBhcm9zZTogYW5kIG5vdyANCitMZWQgb24sIHlldCBzaW5sZXNzLCB3aXRoIGRlc2lyZSB0byBrbm93IA0KK1doYXQgbmVhcmVyIG1pZ2h0IGNvbmNlcm4gaGltLCBob3cgdGhpcyB3b3JsZCANCitPZiBIZWF2ZW4gYW5kIEVhcnRoIGNvbnNwaWN1b3VzIGZpcnN0IGJlZ2FuOyANCitXaGVuLCBhbmQgd2hlcmVvZiBjcmVhdGVkOyBmb3Igd2hhdCBjYXVzZTsgDQorV2hhdCB3aXRoaW4gRWRlbiwgb3Igd2l0aG91dCwgd2FzIGRvbmUgDQorQmVmb3JlIGhpcyBtZW1vcnk7IGFzIG9uZSB3aG9zZSBkcm91dGggDQorWWV0IHNjYXJjZSBhbGxheWVkIHN0aWxsIGV5ZXMgdGhlIGN1cnJlbnQgc3RyZWFtLCANCitXaG9zZSBsaXF1aWQgbXVybXVyIGhlYXJkIG5ldyB0aGlyc3QgZXhjaXRlcywgDQorUHJvY2VlZGVkIHRodXMgdG8gYXNrIGhpcyBoZWF2ZW5seSBndWVzdC4gDQorR3JlYXQgdGhpbmdzLCBhbmQgZnVsbCBvZiB3b25kZXIgaW4gb3VyIGVhcnMsIA0KK0ZhciBkaWZmZXJpbmcgZnJvbSB0aGlzIHdvcmxkLCB0aG91IGhhc3QgcmV2ZWFsZWQsIA0KK0RpdmluZSBpbnRlcnByZXRlciEgYnkgZmF2b3VyIHNlbnQgDQorRG93biBmcm9tIHRoZSBlbXB5cmVhbiwgdG8gZm9yZXdhcm4gDQorVXMgdGltZWx5IG9mIHdoYXQgbWlnaHQgZWxzZSBoYXZlIGJlZW4gb3VyIGxvc3MsIA0KK1Vua25vd24sIHdoaWNoIGh1bWFuIGtub3dsZWRnZSBjb3VsZCBub3QgcmVhY2g7IA0KK0ZvciB3aGljaCB0byB0aGUgaW5maW5pdGVseSBHb29kIHdlIG93ZSANCitJbW1vcnRhbCB0aGFua3MsIGFuZCBoaXMgYWRtb25pc2htZW50IA0KK1JlY2VpdmUsIHdpdGggc29sZW1uIHB1cnBvc2UgdG8gb2JzZXJ2ZSANCitJbW11dGFibHkgaGlzIHNvdnJhbiB3aWxsLCB0aGUgZW5kIA0KK09mIHdoYXQgd2UgYXJlLiAgQnV0IHNpbmNlIHRob3UgaGFzdCB2b3VjaHNhZmVkIA0KK0dlbnRseSwgZm9yIG91ciBpbnN0cnVjdGlvbiwgdG8gaW1wYXJ0IA0KK1RoaW5ncyBhYm92ZSBlYXJ0aGx5IHRob3VnaHQsIHdoaWNoIHlldCBjb25jZXJuZWQgDQorT3VyIGtub3dpbmcsIGFzIHRvIGhpZ2hlc3Qgd2lzZG9tIHNlZW1lZCwgDQorRGVpZ24gdG8gZGVzY2VuZCBub3cgbG93ZXIsIGFuZCByZWxhdGUgDQorV2hhdCBtYXkgbm8gbGVzcyBwZXJoYXBzIGF2YWlsIHVzIGtub3duLCANCitIb3cgZmlyc3QgYmVnYW4gdGhpcyBIZWF2ZW4gd2hpY2ggd2UgYmVob2xkIA0KK0Rpc3RhbnQgc28gaGlnaCwgd2l0aCBtb3ZpbmcgZmlyZXMgYWRvcm5lZCANCitJbm51bWVyYWJsZTsgYW5kIHRoaXMgd2hpY2ggeWllbGRzIG9yIGZpbGxzIA0KK0FsbCBzcGFjZSwgdGhlIGFtYmllbnQgYWlyIHdpZGUgaW50ZXJmdXNlZCANCitFbWJyYWNpbmcgcm91bmQgdGhpcyBmbG9yaWVkIEVhcnRoOyB3aGF0IGNhdXNlIA0KK01vdmVkIHRoZSBDcmVhdG9yLCBpbiBoaXMgaG9seSByZXN0IA0KK1Rocm91Z2ggYWxsIGV0ZXJuaXR5LCBzbyBsYXRlIHRvIGJ1aWxkIA0KK0luIENoYW9zOyBhbmQgdGhlIHdvcmsgYmVndW4sIGhvdyBzb29uIA0KK0Fic29sdmVkOyBpZiB1bmZvcmJpZCB0aG91IG1heWVzdCB1bmZvbGQgDQorV2hhdCB3ZSwgbm90IHRvIGV4cGxvcmUgdGhlIHNlY3JldHMgYXNrIA0KK09mIGhpcyBldGVybmFsIGVtcGlyZSwgYnV0IHRoZSBtb3JlIA0KK1RvIG1hZ25pZnkgaGlzIHdvcmtzLCB0aGUgbW9yZSB3ZSBrbm93LiANCitBbmQgdGhlIGdyZWF0IGxpZ2h0IG9mIGRheSB5ZXQgd2FudHMgdG8gcnVuIA0KK011Y2ggb2YgaGlzIHJhY2UgdGhvdWdoIHN0ZWVwOyBzdXNwZW5zZSBpbiBIZWF2ZW4sIA0KK0hlbGQgYnkgdGh5IHZvaWNlLCB0aHkgcG90ZW50IHZvaWNlLCBoZSBoZWFycywgDQorQW5kIGxvbmdlciB3aWxsIGRlbGF5IHRvIGhlYXIgdGhlZSB0ZWxsIA0KK0hpcyBnZW5lcmF0aW9uLCBhbmQgdGhlIHJpc2luZyBiaXJ0aCANCitPZiBOYXR1cmUgZnJvbSB0aGUgdW5hcHBhcmVudCBEZWVwOiANCitPciBpZiB0aGUgc3RhciBvZiBldmVuaW5nIGFuZCB0aGUgbW9vbiANCitIYXN0ZSB0byB0aHkgYXVkaWVuY2UsIE5pZ2h0IHdpdGggaGVyIHdpbGwgYnJpbmcsIA0KK1NpbGVuY2U7IGFuZCBTbGVlcCwgbGlzdGVuaW5nIHRvIHRoZWUsIHdpbGwgd2F0Y2g7IA0KK09yIHdlIGNhbiBiaWQgaGlzIGFic2VuY2UsIHRpbGwgdGh5IHNvbmcgDQorRW5kLCBhbmQgZGlzbWlzcyB0aGVlIGVyZSB0aGUgbW9ybmluZyBzaGluZS4gDQorVGh1cyBBZGFtIGhpcyBpbGx1c3RyaW91cyBndWVzdCBiZXNvdWdodDogDQorQW5kIHRodXMgdGhlIEdvZGxpa2UgQW5nZWwgYW5zd2VyZWQgbWlsZC4gDQorVGhpcyBhbHNvIHRoeSByZXF1ZXN0LCB3aXRoIGNhdXRpb24gYXNrZWQsIA0KK09idGFpbjsgdGhvdWdoIHRvIHJlY291bnQgYWxtaWdodHkgd29ya3MgDQorV2hhdCB3b3JkcyBvciB0b25ndWUgb2YgU2VyYXBoIGNhbiBzdWZmaWNlLCANCitPciBoZWFydCBvZiBtYW4gc3VmZmljZSB0byBjb21wcmVoZW5kPyANCitZZXQgd2hhdCB0aG91IGNhbnN0IGF0dGFpbiwgd2hpY2ggYmVzdCBtYXkgc2VydmUgDQorVG8gZ2xvcmlmeSB0aGUgTWFrZXIsIGFuZCBpbmZlciANCitUaGVlIGFsc28gaGFwcGllciwgc2hhbGwgbm90IGJlIHdpdGhoZWxkIA0KK1RoeSBoZWFyaW5nOyBzdWNoIGNvbW1pc3Npb24gZnJvbSBhYm92ZSANCitJIGhhdmUgcmVjZWl2ZWQsIHRvIGFuc3dlciB0aHkgZGVzaXJlIA0KK09mIGtub3dsZWRnZSB3aXRoaW4gYm91bmRzOyBiZXlvbmQsIGFic3RhaW4gDQorVG8gYXNrOyBub3IgbGV0IHRoaW5lIG93biBpbnZlbnRpb25zIGhvcGUgDQorVGhpbmdzIG5vdCByZXZlYWxlZCwgd2hpY2ggdGhlIGludmlzaWJsZSBLaW5nLCANCitPbmx5IE9tbmlzY2llbnQsIGhhdGggc3VwcHJlc3NlZCBpbiBuaWdodDsgDQorVG8gbm9uZSBjb21tdW5pY2FibGUgaW4gRWFydGggb3IgSGVhdmVuOiANCitFbm91Z2ggaXMgbGVmdCBiZXNpZGVzIHRvIHNlYXJjaCBhbmQga25vdy4gDQorQnV0IGtub3dsZWRnZSBpcyBhcyBmb29kLCBhbmQgbmVlZHMgbm8gbGVzcyANCitIZXIgdGVtcGVyYW5jZSBvdmVyIGFwcGV0aXRlLCB0byBrbm93IA0KK0luIG1lYXN1cmUgd2hhdCB0aGUgbWluZCBtYXkgd2VsbCBjb250YWluOyANCitPcHByZXNzZXMgZWxzZSB3aXRoIHN1cmZlaXQsIGFuZCBzb29uIHR1cm5zIA0KK1dpc2RvbSB0byBmb2xseSwgYXMgbm91cmlzaG1lbnQgdG8gd2luZC4gDQorS25vdyB0aGVuLCB0aGF0LCBhZnRlciBMdWNpZmVyIGZyb20gSGVhdmVuIA0KKyhTbyBjYWxsIGhpbSwgYnJpZ2h0ZXIgb25jZSBhbWlkc3QgdGhlIGhvc3QgDQorT2YgQW5nZWxzLCB0aGFuIHRoYXQgc3RhciB0aGUgc3RhcnMgYW1vbmcsKSANCitGZWxsIHdpdGggaGlzIGZsYW1pbmcgbGVnaW9ucyB0aHJvdWdoIHRoZSBkZWVwIA0KK0ludG8gaGlzIHBsYWNlLCBhbmQgdGhlIGdyZWF0IFNvbiByZXR1cm5lZCANCitWaWN0b3Jpb3VzIHdpdGggaGlzIFNhaW50cywgdGhlIE9tbmlwb3RlbnQgDQorRXRlcm5hbCBGYXRoZXIgZnJvbSBoaXMgdGhyb25lIGJlaGVsZCANCitUaGVpciBtdWx0aXR1ZGUsIGFuZCB0byBoaXMgU29uIHRodXMgc3Bha2UuIA0KK0F0IGxlYXN0IG91ciBlbnZpb3VzIEZvZSBoYXRoIGZhaWxlZCwgd2hvIHRob3VnaHQgDQorQWxsIGxpa2UgaGltc2VsZiByZWJlbGxpb3VzLCBieSB3aG9zZSBhaWQgDQorVGhpcyBpbmFjY2Vzc2libGUgaGlnaCBzdHJlbmd0aCwgdGhlIHNlYXQgDQorT2YgRGVpdHkgc3VwcmVtZSwgdXMgZGlzcG9zc2Vzc2VkLCANCitIZSB0cnVzdGVkIHRvIGhhdmUgc2Vpc2VkLCBhbmQgaW50byBmcmF1ZCANCitEcmV3IG1hbnksIHdob20gdGhlaXIgcGxhY2Uga25vd3MgaGVyZSBubyBtb3JlOiANCitZZXQgZmFyIHRoZSBncmVhdGVyIHBhcnQgaGF2ZSBrZXB0LCBJIHNlZSwgDQorVGhlaXIgc3RhdGlvbjsgSGVhdmVuLCB5ZXQgcG9wdWxvdXMsIHJldGFpbnMgDQorTnVtYmVyIHN1ZmZpY2llbnQgdG8gcG9zc2VzcyBoZXIgcmVhbG1zIA0KK1Rob3VnaCB3aWRlLCBhbmQgdGhpcyBoaWdoIHRlbXBsZSB0byBmcmVxdWVudCANCitXaXRoIG1pbmlzdGVyaWVzIGR1ZSwgYW5kIHNvbGVtbiByaXRlczogDQorQnV0LCBsZXN0IGhpcyBoZWFydCBleGFsdCBoaW0gaW4gdGhlIGhhcm0gDQorQWxyZWFkeSBkb25lLCB0byBoYXZlIGRpc3Blb3BsZWQgSGVhdmVuLCANCitNeSBkYW1hZ2UgZm9uZGx5IGRlZW1lZCwgSSBjYW4gcmVwYWlyIA0KK1RoYXQgZGV0cmltZW50LCBpZiBzdWNoIGl0IGJlIHRvIGxvc2UgDQorU2VsZi1sb3N0OyBhbmQgaW4gYSBtb21lbnQgd2lsbCBjcmVhdGUgDQorQW5vdGhlciB3b3JsZCwgb3V0IG9mIG9uZSBtYW4gYSByYWNlIA0KK09mIG1lbiBpbm51bWVyYWJsZSwgdGhlcmUgdG8gZHdlbGwsIA0KK05vdCBoZXJlOyB0aWxsLCBieSBkZWdyZWVzIG9mIG1lcml0IHJhaXNlZCwgDQorVGhleSBvcGVuIHRvIHRoZW1zZWx2ZXMgYXQgbGVuZ3RoIHRoZSB3YXkgDQorVXAgaGl0aGVyLCB1bmRlciBsb25nIG9iZWRpZW5jZSB0cmllZDsgDQorQW5kIEVhcnRoIGJlIGNoYW5nZWQgdG8gSGVhdmVuLCBhbmQgSGVhdmVuIHRvIEVhcnRoLCANCitPbmUga2luZ2RvbSwgam95IGFuZCB1bmlvbiB3aXRob3V0IGVuZC4gDQorTWVhbiB3aGlsZSBpbmhhYml0IGxheCwgeWUgUG93ZXJzIG9mIEhlYXZlbjsgDQorQW5kIHRob3UgbXkgV29yZCwgYmVnb3R0ZW4gU29uLCBieSB0aGVlIA0KK1RoaXMgSSBwZXJmb3JtOyBzcGVhayB0aG91LCBhbmQgYmUgaXQgZG9uZSEgDQorTXkgb3ZlcnNoYWRvd2luZyBTcGlyaXQgYW5kIE1pZ2h0IHdpdGggdGhlZSANCitJIHNlbmQgYWxvbmc7IHJpZGUgZm9ydGgsIGFuZCBiaWQgdGhlIERlZXAgDQorV2l0aGluIGFwcG9pbnRlZCBib3VuZHMgYmUgSGVhdmVuIGFuZCBFYXJ0aDsgDQorQm91bmRsZXNzIHRoZSBEZWVwLCBiZWNhdXNlIEkgQW0gd2hvIGZpbGwgDQorSW5maW5pdHVkZSwgbm9yIHZhY3VvdXMgdGhlIHNwYWNlLiANCitUaG91Z2ggSSwgdW5jaXJjdW1zY3JpYmVkIG15c2VsZiwgcmV0aXJlLCANCitBbmQgcHV0IG5vdCBmb3J0aCBteSBnb29kbmVzcywgd2hpY2ggaXMgZnJlZSANCitUbyBhY3Qgb3Igbm90LCBOZWNlc3NpdHkgYW5kIENoYW5jZSANCitBcHByb2FjaCBub3QgbWUsIGFuZCB3aGF0IEkgd2lsbCBpcyBGYXRlLiANCitTbyBzcGFrZSB0aGUgQWxtaWdodHksIGFuZCB0byB3aGF0IGhlIHNwYWtlIA0KK0hpcyBXb3JkLCB0aGUgRmlsaWFsIEdvZGhlYWQsIGdhdmUgZWZmZWN0LiANCitJbW1lZGlhdGUgYXJlIHRoZSBhY3RzIG9mIEdvZCwgbW9yZSBzd2lmdCANCitUaGFuIHRpbWUgb3IgbW90aW9uLCBidXQgdG8gaHVtYW4gZWFycyANCitDYW5ub3Qgd2l0aG91dCBwcm9jZXNzIG9mIHNwZWVjaCBiZSB0b2xkLCANCitTbyB0b2xkIGFzIGVhcnRobHkgbm90aW9uIGNhbiByZWNlaXZlLiANCitHcmVhdCB0cml1bXBoIGFuZCByZWpvaWNpbmcgd2FzIGluIEhlYXZlbiwgDQorV2hlbiBzdWNoIHdhcyBoZWFyZCBkZWNsYXJlZCB0aGUgQWxtaWdodHkncyB3aWxsOyANCitHbG9yeSB0aGV5IHN1bmcgdG8gdGhlIE1vc3QgSGlnaCwgZ29vZCB3aWxsIA0KK1RvIGZ1dHVyZSBtZW4sIGFuZCBpbiB0aGVpciBkd2VsbGluZ3MgcGVhY2U7IA0KK0dsb3J5IHRvIEhpbSwgd2hvc2UganVzdCBhdmVuZ2luZyBpcmUgDQorSGFkIGRyaXZlbiBvdXQgdGhlIHVuZ29kbHkgZnJvbSBoaXMgc2lnaHQgDQorQW5kIHRoZSBoYWJpdGF0aW9ucyBvZiB0aGUganVzdDsgdG8gSGltIA0KK0dsb3J5IGFuZCBwcmFpc2UsIHdob3NlIHdpc2RvbSBoYWQgb3JkYWluZWQgDQorR29vZCBvdXQgb2YgZXZpbCB0byBjcmVhdGU7IGluc3RlYWQgDQorT2YgU3Bpcml0cyBtYWxpZ24sIGEgYmV0dGVyIHJhY2UgdG8gYnJpbmcgDQorSW50byB0aGVpciB2YWNhbnQgcm9vbSwgYW5kIHRoZW5jZSBkaWZmdXNlIA0KK0hpcyBnb29kIHRvIHdvcmxkcyBhbmQgYWdlcyBpbmZpbml0ZS4gDQorU28gc2FuZyB0aGUgSGllcmFyY2hpZXM6ICBNZWFuIHdoaWxlIHRoZSBTb24gDQorT24gaGlzIGdyZWF0IGV4cGVkaXRpb24gbm93IGFwcGVhcmVkLCANCitHaXJ0IHdpdGggT21uaXBvdGVuY2UsIHdpdGggcmFkaWFuY2UgY3Jvd25lZCANCitPZiBNYWplc3R5IERpdmluZTsgc2FwaWVuY2UgYW5kIGxvdmUgDQorSW1tZW5zZSwgYW5kIGFsbCBoaXMgRmF0aGVyIGluIGhpbSBzaG9uZS4gDQorQWJvdXQgaGlzIGNoYXJpb3QgbnVtYmVybGVzcyB3ZXJlIHBvdXJlZCANCitDaGVydWIsIGFuZCBTZXJhcGgsIFBvdGVudGF0ZXMsIGFuZCBUaHJvbmVzLCANCitBbmQgVmlydHVlcywgd2luZ2VkIFNwaXJpdHMsIGFuZCBjaGFyaW90cyB3aW5nZWQgDQorRnJvbSB0aGUgYXJtb3VyeSBvZiBHb2Q7IHdoZXJlIHN0YW5kIG9mIG9sZCANCitNeXJpYWRzLCBiZXR3ZWVuIHR3byBicmF6ZW4gbW91bnRhaW5zIGxvZGdlZCANCitBZ2FpbnN0IGEgc29sZW1uIGRheSwgaGFybmVzc2VkIGF0IGhhbmQsIA0KK0NlbGVzdGlhbCBlcXVpcGFnZTsgYW5kIG5vdyBjYW1lIGZvcnRoIA0KK1Nwb250YW5lb3VzLCBmb3Igd2l0aGluIHRoZW0gU3Bpcml0IGxpdmVkLCANCitBdHRlbmRhbnQgb24gdGhlaXIgTG9yZDogIEhlYXZlbiBvcGVuZWQgd2lkZSANCitIZXIgZXZlci1kdXJpbmcgZ2F0ZXMsIGhhcm1vbmlvdXMgc291bmQgDQorT24gZ29sZGVuIGhpbmdlcyBtb3ZpbmcsIHRvIGxldCBmb3J0aCANCitUaGUgS2luZyBvZiBHbG9yeSwgaW4gaGlzIHBvd2VyZnVsIFdvcmQgDQorQW5kIFNwaXJpdCwgY29taW5nIHRvIGNyZWF0ZSBuZXcgd29ybGRzLiANCitPbiBoZWF2ZW5seSBncm91bmQgdGhleSBzdG9vZDsgYW5kIGZyb20gdGhlIHNob3JlIA0KK1RoZXkgdmlld2VkIHRoZSB2YXN0IGltbWVhc3VyYWJsZSBhYnlzcyANCitPdXRyYWdlb3VzIGFzIGEgc2VhLCBkYXJrLCB3YXN0ZWZ1bCwgd2lsZCwgDQorVXAgZnJvbSB0aGUgYm90dG9tIHR1cm5lZCBieSBmdXJpb3VzIHdpbmRzIA0KK0FuZCBzdXJnaW5nIHdhdmVzLCBhcyBtb3VudGFpbnMsIHRvIGFzc2F1bHQgDQorSGVhdmVuJ3MgaGlnaHRoLCBhbmQgd2l0aCB0aGUgY2VudGVyIG1peCB0aGUgcG9sZS4gDQorU2lsZW5jZSwgeWUgdHJvdWJsZWQgV2F2ZXMsIGFuZCB0aG91IERlZXAsIHBlYWNlLCANCitTYWlkIHRoZW4gdGhlIE9tbmlmaWNrIFdvcmQ7IHlvdXIgZGlzY29yZCBlbmQhIA0KK05vciBzdGFpZDsgYnV0LCBvbiB0aGUgd2luZ3Mgb2YgQ2hlcnViaW0gDQorVXBsaWZ0ZWQsIGluIHBhdGVybmFsIGdsb3J5IHJvZGUgDQorRmFyIGludG8gQ2hhb3MsIGFuZCB0aGUgd29ybGQgdW5ib3JuOyANCitGb3IgQ2hhb3MgaGVhcmQgaGlzIHZvaWNlOiAgSGltIGFsbCBoaXMgdHJhaW4gDQorRm9sbG93ZWQgaW4gYnJpZ2h0IHByb2Nlc3Npb24sIHRvIGJlaG9sZCANCitDcmVhdGlvbiwgYW5kIHRoZSB3b25kZXJzIG9mIGhpcyBtaWdodC4gDQorVGhlbiBzdGFpZCB0aGUgZmVydmlkIHdoZWVscywgYW5kIGluIGhpcyBoYW5kIA0KK0hlIHRvb2sgdGhlIGdvbGRlbiBjb21wYXNzZXMsIHByZXBhcmVkIA0KK0luIEdvZCdzIGV0ZXJuYWwgc3RvcmUsIHRvIGNpcmN1bXNjcmliZSANCitUaGlzIHVuaXZlcnNlLCBhbmQgYWxsIGNyZWF0ZWQgdGhpbmdzOiANCitPbmUgZm9vdCBoZSBjZW50ZXJlZCwgYW5kIHRoZSBvdGhlciB0dXJuZWQgDQorUm91bmQgdGhyb3VnaCB0aGUgdmFzdCBwcm9mdW5kaXR5IG9ic2N1cmU7IA0KK0FuZCBzYWlkLCBUaHVzIGZhciBleHRlbmQsIHRodXMgZmFyIHRoeSBib3VuZHMsIA0KK1RoaXMgYmUgdGh5IGp1c3QgY2lyY3VtZmVyZW5jZSwgTyBXb3JsZCEgDQorVGh1cyBHb2QgdGhlIEhlYXZlbiBjcmVhdGVkLCB0aHVzIHRoZSBFYXJ0aCwgDQorTWF0dGVyIHVuZm9ybWVkIGFuZCB2b2lkOiAgRGFya25lc3MgcHJvZm91bmQgDQorQ292ZXJlZCB0aGUgYWJ5c3M6IGJ1dCBvbiB0aGUgd2F0ZXJ5IGNhbG0gDQorSGlzIGJyb29kaW5nIHdpbmdzIHRoZSBTcGlyaXQgb2YgR29kIG91dHNwcmVhZCwgDQorQW5kIHZpdGFsIHZpcnR1ZSBpbmZ1c2VkLCBhbmQgdml0YWwgd2FybXRoIA0KK1Rocm91Z2hvdXQgdGhlIGZsdWlkIG1hc3M7IGJ1dCBkb3dud2FyZCBwdXJnZWQgDQorVGhlIGJsYWNrIHRhcnRhcmVvdXMgY29sZCBpbmZlcm5hbCBkcmVncywgDQorQWR2ZXJzZSB0byBsaWZlOiB0aGVuIGZvdW5kZWQsIHRoZW4gY29uZ2xvYmVkIA0KK0xpa2UgdGhpbmdzIHRvIGxpa2U7IHRoZSByZXN0IHRvIHNldmVyYWwgcGxhY2UgDQorRGlzcGFydGVkLCBhbmQgYmV0d2VlbiBzcHVuIG91dCB0aGUgYWlyOyANCitBbmQgRWFydGggc2VsZi1iYWxhbmNlZCBvbiBoZXIgY2VudGVyIGh1bmcuIA0KK0xldCB0aGVyZSBiZSBsaWdodCwgc2FpZCBHb2Q7IGFuZCBmb3J0aHdpdGggTGlnaHQgDQorRXRoZXJlYWwsIGZpcnN0IG9mIHRoaW5ncywgcXVpbnRlc3NlbmNlIHB1cmUsIA0KK1NwcnVuZyBmcm9tIHRoZSBkZWVwOyBhbmQgZnJvbSBoZXIgbmF0aXZlIGVhc3QgDQorVG8gam91cm5leSB0aHJvdWdoIHRoZSBhZXJ5IGdsb29tIGJlZ2FuLCANCitTcGhlcmVkIGluIGEgcmFkaWFudCBjbG91ZCwgZm9yIHlldCB0aGUgc3VuIA0KK1dhcyBub3Q7IHNoZSBpbiBhIGNsb3VkeSB0YWJlcm5hY2xlIA0KK1Nvam91cm5lZCB0aGUgd2hpbGUuICBHb2Qgc2F3IHRoZSBsaWdodCB3YXMgZ29vZDsgDQorQW5kIGxpZ2h0IGZyb20gZGFya25lc3MgYnkgdGhlIGhlbWlzcGhlcmUgDQorRGl2aWRlZDogbGlnaHQgdGhlIERheSwgYW5kIGRhcmtuZXNzIE5pZ2h0LCANCitIZSBuYW1lZC4gIFRodXMgd2FzIHRoZSBmaXJzdCBkYXkgZXZlbiBhbmQgbW9ybjogDQorTm9yIHBhc3QgdW5jZWxlYnJhdGVkLCBub3IgdW5zdW5nIA0KK0J5IHRoZSBjZWxlc3RpYWwgcXVpcmVzLCB3aGVuIG9yaWVudCBsaWdodCANCitFeGhhbGluZyBmaXJzdCBmcm9tIGRhcmtuZXNzIHRoZXkgYmVoZWxkOyANCitCaXJ0aC1kYXkgb2YgSGVhdmVuIGFuZCBFYXJ0aDsgd2l0aCBqb3kgYW5kIHNob3V0IA0KK1RoZSBob2xsb3cgdW5pdmVyc2FsIG9yYiB0aGV5IGZpbGxlZCwgDQorQW5kIHRvdWNoZWQgdGhlaXIgZ29sZGVuIGhhcnBzLCBhbmQgaHltbmluZyBwcmFpc2VkIA0KK0dvZCBhbmQgaGlzIHdvcmtzOyBDcmVhdG9yIGhpbSB0aGV5IHN1bmcsIA0KK0JvdGggd2hlbiBmaXJzdCBldmVuaW5nIHdhcywgYW5kIHdoZW4gZmlyc3QgbW9ybi4gDQorQWdhaW4sIEdvZCBzYWlkLCAgTGV0IHRoZXJlIGJlIGZpcm1hbWVudCANCitBbWlkIHRoZSB3YXRlcnMsIGFuZCBsZXQgaXQgZGl2aWRlIA0KK1RoZSB3YXRlcnMgZnJvbSB0aGUgd2F0ZXJzOyBhbmQgR29kIG1hZGUgDQorVGhlIGZpcm1hbWVudCwgZXhwYW5zZSBvZiBsaXF1aWQsIHB1cmUsIA0KK1RyYW5zcGFyZW50LCBlbGVtZW50YWwgYWlyLCBkaWZmdXNlZCANCitJbiBjaXJjdWl0IHRvIHRoZSB1dHRlcm1vc3QgY29udmV4IA0KK09mIHRoaXMgZ3JlYXQgcm91bmQ7IHBhcnRpdGlvbiBmaXJtIGFuZCBzdXJlLCANCitUaGUgd2F0ZXJzIHVuZGVybmVhdGggZnJvbSB0aG9zZSBhYm92ZSANCitEaXZpZGluZzogZm9yIGFzIGVhcnRoLCBzbyBoZSB0aGUgd29ybGQgDQorQnVpbHQgb24gY2lyY3VtZmx1b3VzIHdhdGVycyBjYWxtLCBpbiB3aWRlIA0KK0NyeXN0YWxsaW5lIG9jZWFuLCBhbmQgdGhlIGxvdWQgbWlzcnVsZSANCitPZiBDaGFvcyBmYXIgcmVtb3ZlZDsgbGVzdCBmaWVyY2UgZXh0cmVtZXMgDQorQ29udGlndW91cyBtaWdodCBkaXN0ZW1wZXIgdGhlIHdob2xlIGZyYW1lOiANCitBbmQgSGVhdmVuIGhlIG5hbWVkIHRoZSBGaXJtYW1lbnQ6ICBTbyBldmVuIA0KK0FuZCBtb3JuaW5nIGNob3J1cyBzdW5nIHRoZSBzZWNvbmQgZGF5LiANCitUaGUgRWFydGggd2FzIGZvcm1lZCwgYnV0IGluIHRoZSB3b21iIGFzIHlldCANCitPZiB3YXRlcnMsIGVtYnJ5b24gaW1tYXR1cmUgaW52b2x2ZWQsIA0KK0FwcGVhcmVkIG5vdDogb3ZlciBhbGwgdGhlIGZhY2Ugb2YgRWFydGggDQorTWFpbiBvY2VhbiBmbG93ZWQsIG5vdCBpZGxlOyBidXQsIHdpdGggd2FybSANCitQcm9saWZpY2sgaHVtb3VyIHNvZnRlbmluZyBhbGwgaGVyIGdsb2JlLCANCitGZXJtZW50ZWQgdGhlIGdyZWF0IG1vdGhlciB0byBjb25jZWl2ZSwgDQorU2F0aWF0ZSB3aXRoIGdlbmlhbCBtb2lzdHVyZTsgd2hlbiBHb2Qgc2FpZCwgDQorQmUgZ2F0aGVyZWQgbm93IHllIHdhdGVycyB1bmRlciBIZWF2ZW4gDQorSW50byBvbmUgcGxhY2UsIGFuZCBsZXQgZHJ5IGxhbmQgYXBwZWFyLiANCitJbW1lZGlhdGVseSB0aGUgbW91bnRhaW5zIGh1Z2UgYXBwZWFyIA0KK0VtZXJnZW50LCBhbmQgdGhlaXIgYnJvYWQgYmFyZSBiYWNrcyB1cGhlYXZlIA0KK0ludG8gdGhlIGNsb3VkczsgdGhlaXIgdG9wcyBhc2NlbmQgdGhlIHNreTogDQorU28gaGlnaCBhcyBoZWF2ZWQgdGhlIHR1bWlkIGhpbGxzLCBzbyBsb3cgDQorRG93biBzdW5rIGEgaG9sbG93IGJvdHRvbSBicm9hZCBhbmQgZGVlcCwgDQorQ2FwYWNpb3VzIGJlZCBvZiB3YXRlcnM6ICBUaGl0aGVyIHRoZXkgDQorSGFzdGVkIHdpdGggZ2xhZCBwcmVjaXBpdGFuY2UsIHVwcm9sbGVkLCANCitBcyBkcm9wcyBvbiBkdXN0IGNvbmdsb2JpbmcgZnJvbSB0aGUgZHJ5OiANCitQYXJ0IHJpc2UgaW4gY3J5c3RhbCB3YWxsLCBvciByaWRnZSBkaXJlY3QsIA0KK0ZvciBoYXN0ZTsgc3VjaCBmbGlnaHQgdGhlIGdyZWF0IGNvbW1hbmQgaW1wcmVzc2VkIA0KK09uIHRoZSBzd2lmdCBmbG9vZHM6ICBBcyBhcm1pZXMgYXQgdGhlIGNhbGwgDQorT2YgdHJ1bXBldCAoZm9yIG9mIGFybWllcyB0aG91IGhhc3QgaGVhcmQpIA0KK1Ryb29wIHRvIHRoZWlyIHN0YW5kYXJkOyBzbyB0aGUgd2F0ZXJ5IHRocm9uZywgDQorV2F2ZSByb2xsaW5nIGFmdGVyIHdhdmUsIHdoZXJlIHdheSB0aGV5IGZvdW5kLCANCitJZiBzdGVlcCwgd2l0aCB0b3JyZW50IHJhcHR1cmUsIGlmIHRocm91Z2ggcGxhaW4sIA0KK1NvZnQtZWJiaW5nOyBub3Igd2l0aHN0b29kIHRoZW0gcm9jayBvciBoaWxsOyANCitCdXQgdGhleSwgb3IgdW5kZXIgZ3JvdW5kLCBvciBjaXJjdWl0IHdpZGUgDQorV2l0aCBzZXJwZW50IGVycm91ciB3YW5kZXJpbmcsIGZvdW5kIHRoZWlyIHdheSwgDQorQW5kIG9uIHRoZSB3YXNoeSBvb3NlIGRlZXAgY2hhbm5lbHMgd29yZTsgDQorRWFzeSwgZXJlIEdvZCBoYWQgYmlkIHRoZSBncm91bmQgYmUgZHJ5LCANCitBbGwgYnV0IHdpdGhpbiB0aG9zZSBiYW5rcywgd2hlcmUgcml2ZXJzIG5vdyANCitTdHJlYW0sIGFuZCBwZXJwZXR1YWwgZHJhdyB0aGVpciBodW1pZCB0cmFpbi4gDQorVGhlIGRyeSBsYW5kLCBFYXJ0aDsgYW5kIHRoZSBncmVhdCByZWNlcHRhY2xlIA0KK09mIGNvbmdyZWdhdGVkIHdhdGVycywgaGUgY2FsbGVkIFNlYXM6IA0KK0FuZCBzYXcgdGhhdCBpdCB3YXMgZ29vZDsgYW5kIHNhaWQsIExldCB0aGUgRWFydGggDQorUHV0IGZvcnRoIHRoZSB2ZXJkYW50IGdyYXNzLCBoZXJiIHlpZWxkaW5nIHNlZWQsIA0KK0FuZCBmcnVpdC10cmVlIHlpZWxkaW5nIGZydWl0IGFmdGVyIGhlciBraW5kLCANCitXaG9zZSBzZWVkIGlzIGluIGhlcnNlbGYgdXBvbiB0aGUgRWFydGguIA0KK0hlIHNjYXJjZSBoYWQgc2FpZCwgd2hlbiB0aGUgYmFyZSBFYXJ0aCwgdGlsbCB0aGVuIA0KK0Rlc2FydCBhbmQgYmFyZSwgdW5zaWdodGx5LCB1bmFkb3JuZWQsIA0KK0Jyb3VnaHQgZm9ydGggdGhlIHRlbmRlciBncmFzcywgd2hvc2UgdmVyZHVyZSBjbGFkIA0KK0hlciB1bml2ZXJzYWwgZmFjZSB3aXRoIHBsZWFzYW50IGdyZWVuOyANCitUaGVuIGhlcmJzIG9mIGV2ZXJ5IGxlYWYsIHRoYXQgc3VkZGVuIGZsb3dlcmVkIA0KK09wZW5pbmcgdGhlaXIgdmFyaW91cyBjb2xvdXJzLCBhbmQgbWFkZSBnYXkgDQorSGVyIGJvc29tLCBzbWVsbGluZyBzd2VldDogYW5kLCB0aGVzZSBzY2FyY2UgYmxvd24sIA0KK0ZvcnRoIGZsb3VyaXNoZWQgdGhpY2sgdGhlIGNsdXN0ZXJpbmcgdmluZSwgZm9ydGggY3JlcHQgDQorVGhlIHN3ZWxsaW5nIGdvdXJkLCB1cCBzdG9vZCB0aGUgY29ybnkgcmVlZCANCitFbWJhdHRsZWQgaW4gaGVyIGZpZWxkLCBhbmQgdGhlIGh1bWJsZSBzaHJ1YiwgDQorQW5kIGJ1c2ggd2l0aCBmcml6emxlZCBoYWlyIGltcGxpY2l0OiAgTGFzdCANCitSb3NlLCBhcyBpbiBkYW5jZSwgdGhlIHN0YXRlbHkgdHJlZXMsIGFuZCBzcHJlYWQgDQorVGhlaXIgYnJhbmNoZXMgaHVuZyB3aXRoIGNvcGlvdXMgZnJ1aXQsIG9yIGdlbW1lZCANCitUaGVpciBibG9zc29tczogIFdpdGggaGlnaCB3b29kcyB0aGUgaGlsbHMgd2VyZSBjcm93bmVkOyANCitXaXRoIHR1ZnRzIHRoZSB2YWxsZXlzLCBhbmQgZWFjaCBmb3VudGFpbiBzaWRlOyANCitXaXRoIGJvcmRlcnMgbG9uZyB0aGUgcml2ZXJzOiB0aGF0IEVhcnRoIG5vdyANCitTZWVtZWQgbGlrZSB0byBIZWF2ZW4sIGEgc2VhdCB3aGVyZSBHb2RzIG1pZ2h0IGR3ZWxsLCANCitPciB3YW5kZXIgd2l0aCBkZWxpZ2h0LCBhbmQgbG92ZSB0byBoYXVudCANCitIZXIgc2FjcmVkIHNoYWRlczogdGhvdWdoIEdvZCBoYWQgeWV0IG5vdCByYWluZWQgDQorVXBvbiB0aGUgRWFydGgsIGFuZCBtYW4gdG8gdGlsbCB0aGUgZ3JvdW5kIA0KK05vbmUgd2FzOyBidXQgZnJvbSB0aGUgRWFydGggYSBkZXd5IG1pc3QgDQorV2VudCB1cCwgYW5kIHdhdGVyZWQgYWxsIHRoZSBncm91bmQsIGFuZCBlYWNoIA0KK1BsYW50IG9mIHRoZSBmaWVsZDsgd2hpY2gsIGVyZSBpdCB3YXMgaW4gdGhlIEVhcnRoLCANCitHb2QgbWFkZSwgYW5kIGV2ZXJ5IGhlcmIsIGJlZm9yZSBpdCBncmV3IA0KK09uIHRoZSBncmVlbiBzdGVtOiAgR29kIHNhdyB0aGF0IGl0IHdhcyBnb29kOiANCitTbyBldmVuIGFuZCBtb3JuIHJlY29yZGVkIHRoZSB0aGlyZCBkYXkuIA0KK0FnYWluIHRoZSBBbG1pZ2h0eSBzcGFrZSwgTGV0IHRoZXJlIGJlIGxpZ2h0cyANCitIaWdoIGluIHRoZSBleHBhbnNlIG9mIEhlYXZlbiwgdG8gZGl2aWRlIA0KK1RoZSBkYXkgZnJvbSBuaWdodDsgYW5kIGxldCB0aGVtIGJlIGZvciBzaWducywgDQorRm9yIHNlYXNvbnMsIGFuZCBmb3IgZGF5cywgYW5kIGNpcmNsaW5nIHllYXJzOyANCitBbmQgbGV0IHRoZW0gYmUgZm9yIGxpZ2h0cywgYXMgSSBvcmRhaW4gDQorVGhlaXIgb2ZmaWNlIGluIHRoZSBmaXJtYW1lbnQgb2YgSGVhdmVuLCANCitUbyBnaXZlIGxpZ2h0IG9uIHRoZSBFYXJ0aDsgYW5kIGl0IHdhcyBzby4gDQorQW5kIEdvZCBtYWRlIHR3byBncmVhdCBsaWdodHMsIGdyZWF0IGZvciB0aGVpciB1c2UgDQorVG8gTWFuLCB0aGUgZ3JlYXRlciB0byBoYXZlIHJ1bGUgYnkgZGF5LCANCitUaGUgbGVzcyBieSBuaWdodCwgYWx0ZXJuOyBhbmQgbWFkZSB0aGUgc3RhcnMsIA0KK0FuZCBzZXQgdGhlbSBpbiB0aGUgZmlybWFtZW50IG9mIEhlYXZlbiANCitUbyBpbGx1bWluYXRlIHRoZSBFYXJ0aCwgYW5kIHJ1bGUgdGhlIGRheSANCitJbiB0aGVpciB2aWNpc3NpdHVkZSwgYW5kIHJ1bGUgdGhlIG5pZ2h0LCANCitBbmQgbGlnaHQgZnJvbSBkYXJrbmVzcyB0byBkaXZpZGUuICBHb2Qgc2F3LCANCitTdXJ2ZXlpbmcgaGlzIGdyZWF0IHdvcmssIHRoYXQgaXQgd2FzIGdvb2Q6IA0KK0ZvciBvZiBjZWxlc3RpYWwgYm9kaWVzIGZpcnN0IHRoZSBzdW4gDQorQSBtaWdodHkgc3BoZXJlIGhlIGZyYW1lZCwgdW5saWdodHNvbWUgZmlyc3QsIA0KK1Rob3VnaCBvZiBldGhlcmVhbCBtb3VsZDogdGhlbiBmb3JtZWQgdGhlIG1vb24gDQorR2xvYm9zZSwgYW5kIGV2ZXJ5IG1hZ25pdHVkZSBvZiBzdGFycywgDQorQW5kIHNvd2VkIHdpdGggc3RhcnMgdGhlIEhlYXZlbiwgdGhpY2sgYXMgYSBmaWVsZDogDQorT2YgbGlnaHQgYnkgZmFyIHRoZSBncmVhdGVyIHBhcnQgaGUgdG9vaywgDQorVHJhbnNwbGFudGVkIGZyb20gaGVyIGNsb3VkeSBzaHJpbmUsIGFuZCBwbGFjZWQgDQorSW4gdGhlIHN1bidzIG9yYiwgbWFkZSBwb3JvdXMgdG8gcmVjZWl2ZSANCitBbmQgZHJpbmsgdGhlIGxpcXVpZCBsaWdodDsgZmlybSB0byByZXRhaW4gDQorSGVyIGdhdGhlcmVkIGJlYW1zLCBncmVhdCBwYWxhY2Ugbm93IG9mIGxpZ2h0LiANCitIaXRoZXIsIGFzIHRvIHRoZWlyIGZvdW50YWluLCBvdGhlciBzdGFycyANCitSZXBhaXJpbmcsIGluIHRoZWlyIGdvbGRlbiB1cm5zIGRyYXcgbGlnaHQsIA0KK0FuZCBoZW5jZSB0aGUgbW9ybmluZy1wbGFuZXQgZ2lsZHMgaGVyIGhvcm5zOyANCitCeSB0aW5jdHVyZSBvciByZWZsZWN0aW9uIHRoZXkgYXVnbWVudCANCitUaGVpciBzbWFsbCBwZWN1bGlhciwgdGhvdWdoIGZyb20gaHVtYW4gc2lnaHQgDQorU28gZmFyIHJlbW90ZSwgd2l0aCBkaW1pbnV0aW9uIHNlZW4sIA0KK0ZpcnN0IGluIGhpcyBlYXN0IHRoZSBnbG9yaW91cyBsYW1wIHdhcyBzZWVuLCANCitSZWdlbnQgb2YgZGF5LCBhbmQgYWxsIHRoZSBob3Jpem9uIHJvdW5kIA0KK0ludmVzdGVkIHdpdGggYnJpZ2h0IHJheXMsIGpvY3VuZCB0byBydW4gDQorSGlzIGxvbmdpdHVkZSB0aHJvdWdoIEhlYXZlbidzIGhpZ2ggcm9hZDsgdGhlIGdyYXkgDQorRGF3biwgYW5kIHRoZSBQbGVpYWRlcywgYmVmb3JlIGhpbSBkYW5jZWQsIA0KK1NoZWRkaW5nIHN3ZWV0IGluZmx1ZW5jZTogIExlc3MgYnJpZ2h0IHRoZSBtb29uLCANCitCdXQgb3Bwb3NpdGUgaW4gbGV2ZWxsZWQgd2VzdCB3YXMgc2V0LCANCitIaXMgbWlycm91ciwgd2l0aCBmdWxsIGZhY2UgYm9ycm93aW5nIGhlciBsaWdodCANCitGcm9tIGhpbTsgZm9yIG90aGVyIGxpZ2h0IHNoZSBuZWVkZWQgbm9uZSANCitJbiB0aGF0IGFzcGVjdCwgYW5kIHN0aWxsIHRoYXQgZGlzdGFuY2Uga2VlcHMgDQorVGlsbCBuaWdodDsgdGhlbiBpbiB0aGUgZWFzdCBoZXIgdHVybiBzaGUgc2hpbmVzLCANCitSZXZvbHZlZCBvbiBIZWF2ZW4ncyBncmVhdCBheGxlLCBhbmQgaGVyIHJlaWduIA0KK1dpdGggdGhvdXNhbmQgbGVzc2VyIGxpZ2h0cyBkaXZpZHVhbCBob2xkcywgDQorV2l0aCB0aG91c2FuZCB0aG91c2FuZCBzdGFycywgdGhhdCB0aGVuIGFwcGVhcmVkIA0KK1NwYW5nbGluZyB0aGUgaGVtaXNwaGVyZTogIFRoZW4gZmlyc3QgYWRvcm5lZCANCitXaXRoIHRoZWlyIGJyaWdodCBsdW1pbmFyaWVzIHRoYXQgc2V0IGFuZCByb3NlLCANCitHbGFkIGV2ZW5pbmcgYW5kIGdsYWQgbW9ybiBjcm93bmVkIHRoZSBmb3VydGggZGF5LiANCitBbmQgR29kIHNhaWQsIExldCB0aGUgd2F0ZXJzIGdlbmVyYXRlIA0KK1JlcHRpbGUgd2l0aCBzcGF3biBhYnVuZGFudCwgbGl2aW5nIHNvdWw6IA0KK0FuZCBsZXQgZm93bCBmbHkgYWJvdmUgdGhlIEVhcnRoLCB3aXRoIHdpbmdzIA0KK0Rpc3BsYXllZCBvbiB0aGUgb3BlbiBmaXJtYW1lbnQgb2YgSGVhdmVuLiANCitBbmQgR29kIGNyZWF0ZWQgdGhlIGdyZWF0IHdoYWxlcywgYW5kIGVhY2ggDQorU291bCBsaXZpbmcsIGVhY2ggdGhhdCBjcmVwdCwgd2hpY2ggcGxlbnRlb3VzbHkgDQorVGhlIHdhdGVycyBnZW5lcmF0ZWQgYnkgdGhlaXIga2luZHM7IA0KK0FuZCBldmVyeSBiaXJkIG9mIHdpbmcgYWZ0ZXIgaGlzIGtpbmQ7IA0KK0FuZCBzYXcgdGhhdCBpdCB3YXMgZ29vZCwgYW5kIGJsZXNzZWQgdGhlbSwgc2F5aW5nLiANCitCZSBmcnVpdGZ1bCwgbXVsdGlwbHksIGFuZCBpbiB0aGUgc2VhcywgDQorQW5kIGxha2VzLCBhbmQgcnVubmluZyBzdHJlYW1zLCB0aGUgd2F0ZXJzIGZpbGw7IA0KK0FuZCBsZXQgdGhlIGZvd2wgYmUgbXVsdGlwbGllZCwgb24gdGhlIEVhcnRoLiANCitGb3J0aHdpdGggdGhlIHNvdW5kcyBhbmQgc2VhcywgZWFjaCBjcmVlayBhbmQgYmF5LCANCitXaXRoIGZyeSBpbm51bWVyYWJsZSBzd2FybSwgYW5kIHNob2FscyANCitPZiBmaXNoIHRoYXQgd2l0aCB0aGVpciBmaW5zLCBhbmQgc2hpbmluZyBzY2FsZXMsIA0KK0dsaWRlIHVuZGVyIHRoZSBncmVlbiB3YXZlLCBpbiBzY3VsbHMgdGhhdCBvZnQgDQorQmFuayB0aGUgbWlkIHNlYTogcGFydCBzaW5nbGUsIG9yIHdpdGggbWF0ZSwgDQorR3JhemUgdGhlIHNlYS13ZWVkIHRoZWlyIHBhc3R1cmUsIGFuZCB0aHJvdWdoIGdyb3ZlcyANCitPZiBjb3JhbCBzdHJheTsgb3IsIHNwb3J0aW5nIHdpdGggcXVpY2sgZ2xhbmNlLCANCitTaG93IHRvIHRoZSBzdW4gdGhlaXIgd2F2ZWQgY29hdHMgZHJvcHQgd2l0aCBnb2xkOyANCitPciwgaW4gdGhlaXIgcGVhcmx5IHNoZWxscyBhdCBlYXNlLCBhdHRlbmQgDQorTW9pc3QgbnV0cmltZW50OyBvciB1bmRlciByb2NrcyB0aGVpciBmb29kIA0KK0luIGpvaW50ZWQgYXJtb3VyIHdhdGNoOiBvbiBzbW9vdGggdGhlIHNlYWwgDQorQW5kIGJlbmRlZCBkb2xwaGlucyBwbGF5OiBwYXJ0IGh1Z2Ugb2YgYnVsayANCitXYWxsb3dpbmcgdW53aWVsZHksIGVub3Jtb3VzIGluIHRoZWlyIGdhaXQsIA0KK1RlbXBlc3QgdGhlIG9jZWFuOiB0aGVyZSBsZXZpYXRoYW4sIA0KK0h1Z2VzdCBvZiBsaXZpbmcgY3JlYXR1cmVzLCBvbiB0aGUgZGVlcCANCitTdHJldGNoZWQgbGlrZSBhIHByb21vbnRvcnkgc2xlZXBzIG9yIHN3aW1zLCANCitBbmQgc2VlbXMgYSBtb3ZpbmcgbGFuZDsgYW5kIGF0IGhpcyBnaWxscyANCitEcmF3cyBpbiwgYW5kIGF0IGhpcyB0cnVuayBzcG91dHMgb3V0LCBhIHNlYS4gDQorTWVhbiB3aGlsZSB0aGUgdGVwaWQgY2F2ZXMsIGFuZCBmZW5zLCBhbmQgc2hvcmVzLCANCitUaGVpciBicm9vZCBhcyBudW1lcm91cyBoYXRjaCwgZnJvbSB0aGUgZWdnIHRoYXQgc29vbiANCitCdXJzdGluZyB3aXRoIGtpbmRseSBydXB0dXJlIGZvcnRoIGRpc2Nsb3NlZCANCitUaGVpciBjYWxsb3cgeW91bmc7IGJ1dCBmZWF0aGVyZWQgc29vbiBhbmQgZmxlZGdlIA0KK1RoZXkgc3VtbWVkIHRoZWlyIHBlbnM7IGFuZCwgc29hcmluZyB0aGUgYWlyIHN1YmxpbWUsIA0KK1dpdGggY2xhbmcgZGVzcGlzZWQgdGhlIGdyb3VuZCwgdW5kZXIgYSBjbG91ZCANCitJbiBwcm9zcGVjdDsgdGhlcmUgdGhlIGVhZ2xlIGFuZCB0aGUgc3RvcmsgDQorT24gY2xpZmZzIGFuZCBjZWRhciB0b3BzIHRoZWlyIGV5cmllcyBidWlsZDogDQorUGFydCBsb29zZWx5IHdpbmcgdGhlIHJlZ2lvbiwgcGFydCBtb3JlIHdpc2UgDQorSW4gY29tbW9uLCByYW5nZWQgaW4gZmlndXJlLCB3ZWRnZSB0aGVpciB3YXksIA0KK0ludGVsbGlnZW50IG9mIHNlYXNvbnMsIGFuZCBzZXQgZm9ydGggDQorVGhlaXIgYWVyeSBjYXJhdmFuLCBoaWdoIG92ZXIgc2VhcyANCitGbHlpbmcsIGFuZCBvdmVyIGxhbmRzLCB3aXRoIG11dHVhbCB3aW5nIA0KK0Vhc2luZyB0aGVpciBmbGlnaHQ7IHNvIHN0ZWVycyB0aGUgcHJ1ZGVudCBjcmFuZSANCitIZXIgYW5udWFsIHZveWFnZSwgYm9ybmUgb24gd2luZHM7IHRoZSBhaXIgDQorRmxvYXRzIGFzIHRoZXkgcGFzcywgZmFubmVkIHdpdGggdW5udW1iZXJlZCBwbHVtZXM6IA0KK0Zyb20gYnJhbmNoIHRvIGJyYW5jaCB0aGUgc21hbGxlciBiaXJkcyB3aXRoIHNvbmcgDQorU29sYWNlZCB0aGUgd29vZHMsIGFuZCBzcHJlYWQgdGhlaXIgcGFpbnRlZCB3aW5ncyANCitUaWxsIGV2ZW47IG5vciB0aGVuIHRoZSBzb2xlbW4gbmlnaHRpbmdhbGUgDQorQ2Vhc2VkIHdhcmJsaW5nLCBidXQgYWxsIG5pZ2h0IHR1bidkIGhlciBzb2Z0IGxheXM6IA0KK090aGVycywgb24gc2lsdmVyIGxha2VzIGFuZCByaXZlcnMsIGJhdGhlZCANCitUaGVpciBkb3dueSBicmVhc3Q7IHRoZSBzd2FuIHdpdGggYXJjaGVkIG5lY2ssIA0KK0JldHdlZW4gaGVyIHdoaXRlIHdpbmdzIG1hbnRsaW5nIHByb3VkbHksIHJvd3MgDQorSGVyIHN0YXRlIHdpdGggb2FyeSBmZWV0OyB5ZXQgb2Z0IHRoZXkgcXVpdCANCitUaGUgZGFuaywgYW5kLCByaXNpbmcgb24gc3RpZmYgcGVubm9ucywgdG93ZXIgDQorVGhlIG1pZCBhZXJlYWwgc2t5OiAgT3RoZXJzIG9uIGdyb3VuZCANCitXYWxrZWQgZmlybTsgdGhlIGNyZXN0ZWQgY29jayB3aG9zZSBjbGFyaW9uIHNvdW5kcyANCitUaGUgc2lsZW50IGhvdXJzLCBhbmQgdGhlIG90aGVyIHdob3NlIGdheSB0cmFpbiANCitBZG9ybnMgaGltLCBjb2xvdXJlZCB3aXRoIHRoZSBmbG9yaWQgaHVlIA0KK09mIHJhaW5ib3dzIGFuZCBzdGFycnkgZXllcy4gIFRoZSB3YXRlcnMgdGh1cyANCitXaXRoIGZpc2ggcmVwbGVuaXNoZWQsIGFuZCB0aGUgYWlyIHdpdGggZm93bCwgDQorRXZlbmluZyBhbmQgbW9ybiBzb2xlbW5pemVkIHRoZSBmaWZ0aCBkYXkuIA0KK1RoZSBzaXh0aCwgYW5kIG9mIGNyZWF0aW9uIGxhc3QsIGFyb3NlIA0KK1dpdGggZXZlbmluZyBoYXJwcyBhbmQgbWF0aW47IHdoZW4gR29kIHNhaWQsIA0KK0xldCB0aGUgRWFydGggYnJpbmcgZm9ydGggc291bCBsaXZpbmcgaW4gaGVyIGtpbmQsIA0KK0NhdHRsZSwgYW5kIGNyZWVwaW5nIHRoaW5ncywgYW5kIGJlYXN0IG9mIHRoZSBFYXJ0aCwgDQorRWFjaCBpbiB0aGVpciBraW5kLiAgVGhlIEVhcnRoIG9iZXllZCwgYW5kIHN0cmFpZ2h0IA0KK09wZW5pbmcgaGVyIGZlcnRpbGUgd29tYiB0ZWVtZWQgYXQgYSBiaXJ0aCANCitJbm51bWVyb3VzIGxpdmluZyBjcmVhdHVyZXMsIHBlcmZlY3QgZm9ybXMsIA0KK0xpbWJlZCBhbmQgZnVsbCBncm93bjogIE91dCBvZiB0aGUgZ3JvdW5kIHVwIHJvc2UsIA0KK0FzIGZyb20gaGlzIGxhaXIsIHRoZSB3aWxkIGJlYXN0IHdoZXJlIGhlIHdvbnMgDQorSW4gZm9yZXN0IHdpbGQsIGluIHRoaWNrZXQsIGJyYWtlLCBvciBkZW47IA0KK0Ftb25nIHRoZSB0cmVlcyBpbiBwYWlycyB0aGV5IHJvc2UsIHRoZXkgd2Fsa2VkOiANCitUaGUgY2F0dGxlIGluIHRoZSBmaWVsZHMgYW5kIG1lYWRvd3MgZ3JlZW46IA0KK1Rob3NlIHJhcmUgYW5kIHNvbGl0YXJ5LCB0aGVzZSBpbiBmbG9ja3MgDQorUGFzdHVyaW5nIGF0IG9uY2UsIGFuZCBpbiBicm9hZCBoZXJkcyB1cHNwcnVuZy4gDQorVGhlIGdyYXNzeSBjbG9kcyBub3cgY2FsdmVkOyBub3cgaGFsZiBhcHBlYXJlZCANCitUaGUgdGF3bnkgbGlvbiwgcGF3aW5nIHRvIGdldCBmcmVlIA0KK0hpcyBoaW5kZXIgcGFydHMsIHRoZW4gc3ByaW5ncyBhcyBicm9rZSBmcm9tIGJvbmRzLCANCitBbmQgcmFtcGFudCBzaGFrZXMgaGlzIGJyaW5kZWQgbWFuZTsgdGhlIG91bmNlLCANCitUaGUgbGliYmFyZCwgYW5kIHRoZSB0aWdlciwgYXMgdGhlIG1vbGUgDQorUmlzaW5nLCB0aGUgY3J1bWJsZWQgZWFydGggYWJvdmUgdGhlbSB0aHJldyANCitJbiBoaWxsb2NrczogIFRoZSBzd2lmdCBzdGFnIGZyb20gdW5kZXIgZ3JvdW5kIA0KK0JvcmUgdXAgaGlzIGJyYW5jaGluZyBoZWFkOiAgU2NhcmNlIGZyb20gaGlzIG1vdWxkIA0KK0JlaGVtb3RoIGJpZ2dlc3QgYm9ybiBvZiBlYXJ0aCB1cGhlYXZlZCANCitIaXMgdmFzdG5lc3M6ICBGbGVlY2VkIHRoZSBmbG9ja3MgYW5kIGJsZWF0aW5nIHJvc2UsIA0KK0FzIHBsYW50czogIEFtYmlndW91cyBiZXR3ZWVuIHNlYSBhbmQgbGFuZCANCitUaGUgcml2ZXItaG9yc2UsIGFuZCBzY2FseSBjcm9jb2RpbGUuIA0KK0F0IG9uY2UgY2FtZSBmb3J0aCB3aGF0ZXZlciBjcmVlcHMgdGhlIGdyb3VuZCwgDQorSW5zZWN0IG9yIHdvcm06IHRob3NlIHdhdmVkIHRoZWlyIGxpbWJlciBmYW5zIA0KK0ZvciB3aW5ncywgYW5kIHNtYWxsZXN0IGxpbmVhbWVudHMgZXhhY3QgDQorSW4gYWxsIHRoZSBsaXZlcmllcyBkZWNrZWQgb2Ygc3VtbWVyJ3MgcHJpZGUgDQorV2l0aCBzcG90cyBvZiBnb2xkIGFuZCBwdXJwbGUsIGF6dXJlIGFuZCBncmVlbjogDQorVGhlc2UsIGFzIGEgbGluZSwgdGhlaXIgbG9uZyBkaW1lbnNpb24gZHJldywgDQorU3RyZWFraW5nIHRoZSBncm91bmQgd2l0aCBzaW51b3VzIHRyYWNlOyBub3QgYWxsIA0KK01pbmltcyBvZiBuYXR1cmU7IHNvbWUgb2Ygc2VycGVudC1raW5kLCANCitXb25kZXJvdXMgaW4gbGVuZ3RoIGFuZCBjb3JwdWxlbmNlLCBpbnZvbHZlZCANCitUaGVpciBzbmFreSBmb2xkcywgYW5kIGFkZGVkIHdpbmdzLiAgRmlyc3QgY3JlcHQgDQorVGhlIHBhcnNpbW9uaW91cyBlbW1ldCwgcHJvdmlkZW50IA0KK09mIGZ1dHVyZTsgaW4gc21hbGwgcm9vbSBsYXJnZSBoZWFydCBlbmNsb3NlZDsgDQorUGF0dGVybiBvZiBqdXN0IGVxdWFsaXR5IHBlcmhhcHMgDQorSGVyZWFmdGVyLCBqb2luZWQgaW4gaGVyIHBvcHVsYXIgdHJpYmVzIA0KK09mIGNvbW1vbmFsdHk6ICBTd2FybWluZyBuZXh0IGFwcGVhcmVkIA0KK1RoZSBmZW1hbGUgYmVlLCB0aGF0IGZlZWRzIGhlciBodXNiYW5kIGRyb25lIA0KK0RlbGljaW91c2x5LCBhbmQgYnVpbGRzIGhlciB3YXhlbiBjZWxscyANCitXaXRoIGhvbmV5IHN0b3JlZDogIFRoZSByZXN0IGFyZSBudW1iZXJsZXNzLCANCitBbmQgdGhvdSB0aGVpciBuYXR1cmVzIGtub3dlc3QsIGFuZCBnYXZlc3QgdGhlbSBuYW1lcywgDQorTmVlZGxlc3MgdG8gdGhlZSByZXBlYXRlZDsgbm9yIHVua25vd24gDQorVGhlIHNlcnBlbnQsIHN1YnRsZXN0IGJlYXN0IG9mIGFsbCB0aGUgZmllbGQsIA0KK09mIGh1Z2UgZXh0ZW50IHNvbWV0aW1lcywgd2l0aCBicmF6ZW4gZXllcyANCitBbmQgaGFpcnkgbWFuZSB0ZXJyaWZpY2ssIHRob3VnaCB0byB0aGVlIA0KK05vdCBub3hpb3VzLCBidXQgb2JlZGllbnQgYXQgdGh5IGNhbGwuIA0KK05vdyBIZWF2ZW4gaW4gYWxsIGhlciBnbG9yeSBzaG9uZSwgYW5kIHJvbGxlZCANCitIZXIgbW90aW9ucywgYXMgdGhlIGdyZWF0IGZpcnN0IE1vdmVyJ3MgaGFuZCANCitGaXJzdCB3aGVlbGVkIHRoZWlyIGNvdXJzZTogIEVhcnRoIGluIGhlciByaWNoIGF0dGlyZSANCitDb25zdW1tYXRlIGxvdmVseSBzbWlsZWQ7IGFpciwgd2F0ZXIsIGVhcnRoLCANCitCeSBmb3dsLCBmaXNoLCBiZWFzdCwgd2FzIGZsb3duLCB3YXMgc3d1bSwgd2FzIHdhbGtlZCwgDQorRnJlcXVlbnQ7IGFuZCBvZiB0aGUgc2l4dGggZGF5IHlldCByZW1haW5lZDogDQorVGhlcmUgd2FudGVkIHlldCB0aGUgbWFzdGVyLXdvcmssIHRoZSBlbmQgDQorT2YgYWxsIHlldCBkb25lOyBhIGNyZWF0dXJlLCB3aG8sIG5vdCBwcm9uZSANCitBbmQgYnJ1dGUgYXMgb3RoZXIgY3JlYXR1cmVzLCBidXQgZW5kdWVkIA0KK1dpdGggc2FuY3RpdHkgb2YgcmVhc29uLCBtaWdodCBlcmVjdCANCitIaXMgc3RhdHVyZSwgYW5kIHVwcmlnaHQgd2l0aCBmcm9udCBzZXJlbmUgDQorR292ZXJuIHRoZSByZXN0LCBzZWxmLWtub3dpbmc7IGFuZCBmcm9tIHRoZW5jZSANCitNYWduYW5pbW91cyB0byBjb3JyZXNwb25kIHdpdGggSGVhdmVuLCANCitCdXQgZ3JhdGVmdWwgdG8gYWNrbm93bGVkZ2Ugd2hlbmNlIGhpcyBnb29kIA0KK0Rlc2NlbmRzLCB0aGl0aGVyIHdpdGggaGVhcnQsIGFuZCB2b2ljZSwgYW5kIGV5ZXMgDQorRGlyZWN0ZWQgaW4gZGV2b3Rpb24sIHRvIGFkb3JlIA0KK0FuZCB3b3JzaGlwIEdvZCBTdXByZW1lLCB3aG8gbWFkZSBoaW0gY2hpZWYgDQorT2YgYWxsIGhpcyB3b3JrczogIHRoZXJlZm9yZSB0aGUgT21uaXBvdGVudCANCitFdGVybmFsIEZhdGhlciAoZm9yIHdoZXJlIGlzIG5vdCBoZSANCitQcmVzZW50PykgdGh1cyB0byBoaXMgU29uIGF1ZGlibHkgc3Bha2UuIA0KK0xldCB1cyBtYWtlIG5vdyBNYW4gaW4gb3VyIGltYWdlLCBNYW4gDQorSW4gb3VyIHNpbWlsaXR1ZGUsIGFuZCBsZXQgdGhlbSBydWxlIA0KK092ZXIgdGhlIGZpc2ggYW5kIGZvd2wgb2Ygc2VhIGFuZCBhaXIsIA0KK0JlYXN0IG9mIHRoZSBmaWVsZCwgYW5kIG92ZXIgYWxsIHRoZSBFYXJ0aCwgDQorQW5kIGV2ZXJ5IGNyZWVwaW5nIHRoaW5nIHRoYXQgY3JlZXBzIHRoZSBncm91bmQuIA0KK1RoaXMgc2FpZCwgaGUgZm9ybWVkIHRoZWUsIEFkYW0sIHRoZWUsIE8gTWFuLCANCitEdXN0IG9mIHRoZSBncm91bmQsIGFuZCBpbiB0aHkgbm9zdHJpbHMgYnJlYXRoZWQgDQorVGhlIGJyZWF0aCBvZiBsaWZlOyBpbiBoaXMgb3duIGltYWdlIGhlIA0KK0NyZWF0ZWQgdGhlZSwgaW4gdGhlIGltYWdlIG9mIEdvZCANCitFeHByZXNzOyBhbmQgdGhvdSBiZWNhbWVzdCBhIGxpdmluZyBzb3VsLiANCitNYWxlIGhlIGNyZWF0ZWQgdGhlZTsgYnV0IHRoeSBjb25zb3J0IA0KK0ZlbWFsZSwgZm9yIHJhY2U7IHRoZW4gYmxlc3NlZCBtYW5raW5kLCBhbmQgc2FpZCwgDQorQmUgZnJ1aXRmdWwsIG11bHRpcGx5LCBhbmQgZmlsbCB0aGUgRWFydGg7IA0KK1N1YmR1ZSBpdCwgYW5kIHRocm91Z2hvdXQgZG9taW5pb24gaG9sZCANCitPdmVyIGZpc2ggb2YgdGhlIHNlYSwgYW5kIGZvd2wgb2YgdGhlIGFpciwgDQorQW5kIGV2ZXJ5IGxpdmluZyB0aGluZyB0aGF0IG1vdmVzIG9uIHRoZSBFYXJ0aC4gDQorV2hlcmV2ZXIgdGh1cyBjcmVhdGVkLCBmb3Igbm8gcGxhY2UgDQorSXMgeWV0IGRpc3RpbmN0IGJ5IG5hbWUsIHRoZW5jZSwgYXMgdGhvdSBrbm93ZXN0LCANCitIZSBicm91Z2h0IHRoZWUgaW50byB0aGlzIGRlbGljaW91cyBncm92ZSwgDQorVGhpcyBnYXJkZW4sIHBsYW50ZWQgd2l0aCB0aGUgdHJlZXMgb2YgR29kLCANCitEZWxlY3RhYmxlIGJvdGggdG8gYmVob2xkIGFuZCB0YXN0ZTsgDQorQW5kIGZyZWVseSBhbGwgdGhlaXIgcGxlYXNhbnQgZnJ1aXQgZm9yIGZvb2QgDQorR2F2ZSB0aGVlOyBhbGwgc29ydHMgYXJlIGhlcmUgdGhhdCBhbGwgdGhlIEVhcnRoIHlpZWxkcywgDQorVmFyaWV0eSB3aXRob3V0IGVuZDsgYnV0IG9mIHRoZSB0cmVlLCANCitXaGljaCwgdGFzdGVkLCB3b3JrcyBrbm93bGVkZ2Ugb2YgZ29vZCBhbmQgZXZpbCwgDQorVGhvdSBtYXllc3Qgbm90OyBpbiB0aGUgZGF5IHRob3UgZWF0ZXN0LCB0aG91IGRpZXN0OyANCitEZWF0aCBpcyB0aGUgcGVuYWx0eSBpbXBvc2VkOyBiZXdhcmUsIA0KK0FuZCBnb3Zlcm4gd2VsbCB0aHkgYXBwZXRpdGU7IGxlc3QgU2luIA0KK1N1cnByaXNlIHRoZWUsIGFuZCBoZXIgYmxhY2sgYXR0ZW5kYW50IERlYXRoLiANCitIZXJlIGZpbmlzaGVkIGhlLCBhbmQgYWxsIHRoYXQgaGUgaGFkIG1hZGUgDQorVmlld2VkLCBhbmQgYmVob2xkIGFsbCB3YXMgZW50aXJlbHkgZ29vZDsgDQorU28gZXZlbiBhbmQgbW9ybiBhY2NvbXBsaXNoZWQgdGhlIHNpeHRoIGRheTogDQorWWV0IG5vdCB0aWxsIHRoZSBDcmVhdG9yIGZyb20gaGlzIHdvcmsgDQorRGVzaXN0aW5nLCB0aG91Z2ggdW53ZWFyaWVkLCB1cCByZXR1cm5lZCwgDQorVXAgdG8gdGhlIEhlYXZlbiBvZiBIZWF2ZW5zLCBoaXMgaGlnaCBhYm9kZTsgDQorVGhlbmNlIHRvIGJlaG9sZCB0aGlzIG5ldyBjcmVhdGVkIHdvcmxkLCANCitUaGUgYWRkaXRpb24gb2YgaGlzIGVtcGlyZSwgaG93IGl0IHNob3dlZCANCitJbiBwcm9zcGVjdCBmcm9tIGhpcyB0aHJvbmUsIGhvdyBnb29kLCBob3cgZmFpciwgDQorQW5zd2VyaW5nIGhpcyBncmVhdCBpZGVhLiAgVXAgaGUgcm9kZSANCitGb2xsb3dlZCB3aXRoIGFjY2xhbWF0aW9uLCBhbmQgdGhlIHNvdW5kIA0KK1N5bXBob25pb3VzIG9mIHRlbiB0aG91c2FuZCBoYXJwcywgdGhhdCB0dW5lZCANCitBbmdlbGljayBoYXJtb25pZXM6ICBUaGUgZWFydGgsIHRoZSBhaXIgDQorUmVzb3VuZGVkLCAodGhvdSByZW1lbWJlcmVzdCwgZm9yIHRob3UgaGVhcmRzdCwpIA0KK1RoZSBoZWF2ZW5zIGFuZCBhbGwgdGhlIGNvbnN0ZWxsYXRpb25zIHJ1bmcsIA0KK1RoZSBwbGFuZXRzIGluIHRoZWlyIHN0YXRpb24gbGlzdGVuaW5nIHN0b29kLCANCitXaGlsZSB0aGUgYnJpZ2h0IHBvbXAgYXNjZW5kZWQganViaWxhbnQuIA0KK09wZW4sIHllIGV2ZXJsYXN0aW5nIGdhdGVzISB0aGV5IHN1bmcsIA0KK09wZW4sIHllIEhlYXZlbnMhIHlvdXIgbGl2aW5nIGRvb3JzO2xldCBpbiANCitUaGUgZ3JlYXQgQ3JlYXRvciBmcm9tIGhpcyB3b3JrIHJldHVybmVkIA0KK01hZ25pZmljZW50LCBoaXMgc2l4IGRheXMgd29yaywgYSBXb3JsZDsgDQorT3BlbiwgYW5kIGhlbmNlZm9ydGggb2Z0OyBmb3IgR29kIHdpbGwgZGVpZ24gDQorVG8gdmlzaXQgb2Z0IHRoZSBkd2VsbGluZ3Mgb2YganVzdCBtZW4sIA0KK0RlbGlnaHRlZDsgYW5kIHdpdGggZnJlcXVlbnQgaW50ZXJjb3Vyc2UgDQorVGhpdGhlciB3aWxsIHNlbmQgaGlzIHdpbmdlZCBtZXNzZW5nZXJzIA0KK09uIGVycmFuZHMgb2Ygc3VwZXJuYWwgZ3JhY2UuICBTbyBzdW5nIA0KK1RoZSBnbG9yaW91cyB0cmFpbiBhc2NlbmRpbmc6ICBIZSB0aHJvdWdoIEhlYXZlbiwgDQorVGhhdCBvcGVuZWQgd2lkZSBoZXIgYmxhemluZyBwb3J0YWxzLCBsZWQgDQorVG8gR29kJ3MgZXRlcm5hbCBob3VzZSBkaXJlY3QgdGhlIHdheTsgDQorQSBicm9hZCBhbmQgYW1wbGUgcm9hZCwgd2hvc2UgZHVzdCBpcyBnb2xkIA0KK0FuZCBwYXZlbWVudCBzdGFycywgYXMgc3RhcnMgdG8gdGhlZSBhcHBlYXIsIA0KK1NlZW4gaW4gdGhlIGdhbGF4eSwgdGhhdCBtaWxreSB3YXksIA0KK1doaWNoIG5pZ2h0bHksIGFzIGEgY2lyY2xpbmcgem9uZSwgdGhvdSBzZWVzdCANCitQb3dkZXJlZCB3aXRoIHN0YXJzLiAgQW5kIG5vdyBvbiBFYXJ0aCB0aGUgc2V2ZW50aCANCitFdmVuaW5nIGFyb3NlIGluIEVkZW4sIGZvciB0aGUgc3VuIA0KK1dhcyBzZXQsIGFuZCB0d2lsaWdodCBmcm9tIHRoZSBlYXN0IGNhbWUgb24sIA0KK0ZvcmVydW5uaW5nIG5pZ2h0OyB3aGVuIGF0IHRoZSBob2x5IG1vdW50IA0KK09mIEhlYXZlbidzIGhpZ2gtc2VhdGVkIHRvcCwgdGhlIGltcGVyaWFsIHRocm9uZSANCitPZiBHb2RoZWFkLCBmaXhlZCBmb3IgZXZlciBmaXJtIGFuZCBzdXJlLCANCitUaGUgRmlsaWFsIFBvd2VyIGFycml2ZWQsIGFuZCBzYXQgaGltIGRvd24gDQorV2l0aCBoaXMgZ3JlYXQgRmF0aGVyOyBmb3IgaGUgYWxzbyB3ZW50IA0KK0ludmlzaWJsZSwgeWV0IHN0YWlkLCAoc3VjaCBwcml2aWxlZ2UgDQorSGF0aCBPbW5pcHJlc2VuY2UpIGFuZCB0aGUgd29yayBvcmRhaW5lZCwgDQorQXV0aG9yIGFuZCBFbmQgb2YgYWxsIHRoaW5nczsgYW5kLCBmcm9tIHdvcmsgDQorTm93IHJlc3RpbmcsIGJsZXNzZWQgYW5kIGhhbGxvd2VkIHRoZSBzZXZlbnRoIGRheSwgDQorQXMgcmVzdGluZyBvbiB0aGF0IGRheSBmcm9tIGFsbCBoaXMgd29yaywgDQorQnV0IG5vdCBpbiBzaWxlbmNlIGhvbHkga2VwdDogdGhlIGhhcnAgDQorSGFkIHdvcmsgYW5kIHJlc3RlZCBub3Q7IHRoZSBzb2xlbW4gcGlwZSwgDQorQW5kIGR1bGNpbWVyLCBhbGwgb3JnYW5zIG9mIHN3ZWV0IHN0b3AsIA0KK0FsbCBzb3VuZHMgb24gZnJldCBieSBzdHJpbmcgb3IgZ29sZGVuIHdpcmUsIA0KK1RlbXBlcmVkIHNvZnQgdHVuaW5ncywgaW50ZXJtaXhlZCB3aXRoIHZvaWNlIA0KK0Nob3JhbCBvciB1bmlzb246IG9mIGluY2Vuc2UgY2xvdWRzLCANCitGdW1pbmcgZnJvbSBnb2xkZW4gY2Vuc2VycywgaGlkIHRoZSBtb3VudC4gDQorQ3JlYXRpb24gYW5kIHRoZSBzaXggZGF5cyBhY3RzIHRoZXkgc3VuZzogDQorR3JlYXQgYXJlIHRoeSB3b3JrcywgSmVob3ZhaCEgaW5maW5pdGUgDQorVGh5IHBvd2VyISB3aGF0IHRob3VnaHQgY2FuIG1lYXN1cmUgdGhlZSwgb3IgdG9uZ3VlIA0KK1JlbGF0ZSB0aGVlISAgR3JlYXRlciBub3cgaW4gdGh5IHJldHVybiANCitUaGFuIGZyb20gdGhlIGdpYW50IEFuZ2VsczogIFRoZWUgdGhhdCBkYXkgDQorVGh5IHRodW5kZXJzIG1hZ25pZmllZDsgYnV0IHRvIGNyZWF0ZSANCitJcyBncmVhdGVyIHRoYW4gY3JlYXRlZCB0byBkZXN0cm95LiANCitXaG8gY2FuIGltcGFpciB0aGVlLCBNaWdodHkgS2luZywgb3IgYm91bmQgDQorVGh5IGVtcGlyZSEgIEVhc2lseSB0aGUgcHJvdWQgYXR0ZW1wdCANCitPZiBTcGlyaXRzIGFwb3N0YXRlLCBhbmQgdGhlaXIgY291bnNlbHMgdmFpbiwgDQorVGhvdSBoYXN0IHJlcGVsbGVkOyB3aGlsZSBpbXBpb3VzbHkgdGhleSB0aG91Z2h0IA0KK1RoZWUgdG8gZGltaW5pc2gsIGFuZCBmcm9tIHRoZWUgd2l0aGRyYXcgDQorVGhlIG51bWJlciBvZiB0aHkgd29yc2hpcHBlcnMuICBXaG8gc2Vla3MgDQorVG8gbGVzc2VuIHRoZWUsIGFnYWluc3QgaGlzIHB1cnBvc2Ugc2VydmVzIA0KK1RvIG1hbmlmZXN0IHRoZSBtb3JlIHRoeSBtaWdodDogaGlzIGV2aWwgDQorVGhvdSB1c2VzdCwgYW5kIGZyb20gdGhlbmNlIGNyZWF0ZXN0IG1vcmUgZ29vZC4gDQorV2l0bmVzcyB0aGlzIG5ldy1tYWRlIHdvcmxkLCBhbm90aGVyIEhlYXZlbiANCitGcm9tIEhlYXZlbi1nYXRlIG5vdCBmYXIsIGZvdW5kZWQgaW4gdmlldyANCitPbiB0aGUgY2xlYXIgaHlhbGluZSwgdGhlIGdsYXNzeSBzZWE7IA0KK09mIGFtcGxpdHVkZSBhbG1vc3QgaW1tZW5zZSwgd2l0aCBzdGFycyANCitOdW1lcm91cywgYW5kIGV2ZXJ5IHN0YXIgcGVyaGFwcyBhIHdvcmxkIA0KK09mIGRlc3RpbmVkIGhhYml0YXRpb247IGJ1dCB0aG91IGtub3dlc3QgDQorVGhlaXIgc2Vhc29uczogYW1vbmcgdGhlc2UgdGhlIHNlYXQgb2YgTWVuLCANCitFYXJ0aCwgd2l0aCBoZXIgbmV0aGVyIG9jZWFuIGNpcmN1bWZ1c2VkLCANCitUaGVpciBwbGVhc2FudCBkd2VsbGluZy1wbGFjZS4gIFRocmljZSBoYXBweSBNZW4sIA0KK0FuZCBzb25zIG9mIE1lbiwgd2hvbSBHb2QgaGF0aCB0aHVzIGFkdmFuY2VkISANCitDcmVhdGVkIGluIGhpcyBpbWFnZSwgdGhlcmUgdG8gZHdlbGwgDQorQW5kIHdvcnNoaXAgaGltOyBhbmQgaW4gcmV3YXJkIHRvIHJ1bGUgDQorT3ZlciBoaXMgd29ya3MsIG9uIGVhcnRoLCBpbiBzZWEsIG9yIGFpciwgDQorQW5kIG11bHRpcGx5IGEgcmFjZSBvZiB3b3JzaGlwcGVycyANCitIb2x5IGFuZCBqdXN0OiAgVGhyaWNlIGhhcHB5LCBpZiB0aGV5IGtub3cgDQorVGhlaXIgaGFwcGluZXNzLCBhbmQgcGVyc2V2ZXJlIHVwcmlnaHQhIA0KK1NvIHN1bmcgdGhleSwgYW5kIHRoZSBlbXB5cmVhbiBydW5nIA0KK1dpdGggaGFsbGVsdWlhaHM6ICBUaHVzIHdhcyBzYWJiYXRoIGtlcHQuIA0KK0FuZCB0aHkgcmVxdWVzdCB0aGluayBub3cgZnVsZmlsbGVkLCB0aGF0IGFza2VkIA0KK0hvdyBmaXJzdCB0aGlzIHdvcmxkIGFuZCBmYWNlIG9mIHRoaW5ncyBiZWdhbiwgDQorQW5kIHdoYXQgYmVmb3JlIHRoeSBtZW1vcnkgd2FzIGRvbmUgDQorRnJvbSB0aGUgYmVnaW5uaW5nOyB0aGF0IHBvc3Rlcml0eSwgDQorSW5mb3JtZWQgYnkgdGhlZSwgbWlnaHQga25vdzogIElmIGVsc2UgdGhvdSBzZWVrZXN0IA0KK0F1Z2h0LCBub3Qgc3VycGFzc2luZyBodW1hbiBtZWFzdXJlLCBzYXkuIA0KKyANCisgDQorIA0KK0Jvb2sgVklJSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorIA0KKyANCitUaGUgQW5nZWwgZW5kZWQsIGFuZCBpbiBBZGFtJ3MgZWFyIA0KK1NvIGNoYXJtaW5nIGxlZnQgaGlzIHZvaWNlLCB0aGF0IGhlIGEgd2hpbGUgDQorVGhvdWdodCBoaW0gc3RpbGwgc3BlYWtpbmcsIHN0aWxsIHN0b29kIGZpeGVkIHRvIGhlYXI7IA0KK1RoZW4sIGFzIG5ldyB3YWtlZCwgdGh1cyBncmF0ZWZ1bGx5IHJlcGxpZWQuIA0KK1doYXQgdGhhbmtzIHN1ZmZpY2llbnQsIG9yIHdoYXQgcmVjb21wZW5jZSANCitFcXVhbCwgaGF2ZSBJIHRvIHJlbmRlciB0aGVlLCBkaXZpbmUgDQorSGlzdG9yaWFuLCB3aG8gdGh1cyBsYXJnZWx5IGhhc3QgYWxsYXllZCANCitUaGUgdGhpcnN0IEkgaGFkIG9mIGtub3dsZWRnZSwgYW5kIHZvdWNoc2FmZWQgDQorVGhpcyBmcmllbmRseSBjb25kZXNjZW5zaW9uIHRvIHJlbGF0ZSANCitUaGluZ3MsIGVsc2UgYnkgbWUgdW5zZWFyY2hhYmxlOyBub3cgaGVhcmQgDQorV2l0aCB3b25kZXIsIGJ1dCBkZWxpZ2h0LCBhbmQsIGFzIGlzIGR1ZSwgDQorV2l0aCBnbG9yeSBhdHRyaWJ1dGVkIHRvIHRoZSBoaWdoIA0KK0NyZWF0b3IhICBTb21ldGhpbmcgeWV0IG9mIGRvdWJ0IHJlbWFpbnMsIA0KK1doaWNoIG9ubHkgdGh5IHNvbHV0aW9uIGNhbiByZXNvbHZlLiANCitXaGVuIEkgYmVob2xkIHRoaXMgZ29vZGx5IGZyYW1lLCB0aGlzIHdvcmxkLCANCitPZiBIZWF2ZW4gYW5kIEVhcnRoIGNvbnNpc3Rpbmc7IGFuZCBjb21wdXRlIA0KK1RoZWlyIG1hZ25pdHVkZXM7IHRoaXMgRWFydGgsIGEgc3BvdCwgYSBncmFpbiwgDQorQW4gYXRvbSwgd2l0aCB0aGUgZmlybWFtZW50IGNvbXBhcmVkIA0KK0FuZCBhbGwgaGVyIG51bWJlcmVkIHN0YXJzLCB0aGF0IHNlZW0gdG8gcm9sbCANCitTcGFjZXMgaW5jb21wcmVoZW5zaWJsZSwgKGZvciBzdWNoIA0KK1RoZWlyIGRpc3RhbmNlIGFyZ3VlcywgYW5kIHRoZWlyIHN3aWZ0IHJldHVybiANCitEaXVybmFsLCkgbWVyZWx5IHRvIG9mZmljaWF0ZSBsaWdodCANCitSb3VuZCB0aGlzIG9wYWNvdXMgRWFydGgsIHRoaXMgcHVuY3R1YWwgc3BvdCwgDQorT25lIGRheSBhbmQgbmlnaHQ7IGluIGFsbCBoZXIgdmFzdCBzdXJ2ZXkgDQorVXNlbGVzcyBiZXNpZGVzOyByZWFzb25pbmcgSSBvZnQgYWRtaXJlLCANCitIb3cgTmF0dXJlIHdpc2UgYW5kIGZydWdhbCBjb3VsZCBjb21taXQgDQorU3VjaCBkaXNwcm9wb3J0aW9ucywgd2l0aCBzdXBlcmZsdW91cyBoYW5kIA0KK1NvIG1hbnkgbm9ibGVyIGJvZGllcyB0byBjcmVhdGUsIA0KK0dyZWF0ZXIgc28gbWFuaWZvbGQsIHRvIHRoaXMgb25lIHVzZSwgDQorRm9yIGF1Z2h0IGFwcGVhcnMsIGFuZCBvbiB0aGVpciBvcmJzIGltcG9zZSANCitTdWNoIHJlc3RsZXNzIHJldm9sdXRpb24gZGF5IGJ5IGRheSANCitSZXBlYXRlZDsgd2hpbGUgdGhlIHNlZGVudGFyeSBFYXJ0aCwgDQorVGhhdCBiZXR0ZXIgbWlnaHQgd2l0aCBmYXIgbGVzcyBjb21wYXNzIG1vdmUsIA0KK1NlcnZlZCBieSBtb3JlIG5vYmxlIHRoYW4gaGVyc2VsZiwgYXR0YWlucyANCitIZXIgZW5kIHdpdGhvdXQgbGVhc3QgbW90aW9uLCBhbmQgcmVjZWl2ZXMsIA0KK0FzIHRyaWJ1dGUsIHN1Y2ggYSBzdW1sZXNzIGpvdXJuZXkgYnJvdWdodCANCitPZiBpbmNvcnBvcmVhbCBzcGVlZCwgaGVyIHdhcm10aCBhbmQgbGlnaHQ7IA0KK1NwZWVkLCB0byBkZXNjcmliZSB3aG9zZSBzd2lmdG5lc3MgbnVtYmVyIGZhaWxzLiANCitTbyBzcGFrZSBvdXIgc2lyZSwgYW5kIGJ5IGhpcyBjb3VudGVuYW5jZSBzZWVtZWQgDQorRW50ZXJpbmcgb24gc3R1ZGlvdXMgdGhvdWdodHMgYWJzdHJ1c2U7IHdoaWNoIEV2ZSANCitQZXJjZWl2aW5nLCB3aGVyZSBzaGUgc2F0IHJldGlyZWQgaW4gc2lnaHQsIA0KK1dpdGggbG93bGluZXNzIG1hamVzdGljayBmcm9tIGhlciBzZWF0LCANCitBbmQgZ3JhY2UgdGhhdCB3b24gd2hvIHNhdyB0byB3aXNoIGhlciBzdGF5LCANCitSb3NlLCBhbmQgd2VudCBmb3J0aCBhbW9uZyBoZXIgZnJ1aXRzIGFuZCBmbG93ZXJzLCANCitUbyB2aXNpdCBob3cgdGhleSBwcm9zcGVyZWQsIGJ1ZCBhbmQgYmxvb20sIA0KK0hlciBudXJzZXJ5OyB0aGV5IGF0IGhlciBjb21pbmcgc3BydW5nLCANCitBbmQsIHRvdWNoZWQgYnkgaGVyIGZhaXIgdGVuZGFuY2UsIGdsYWRsaWVyIGdyZXcuIA0KK1lldCB3ZW50IHNoZSBub3QsIGFzIG5vdCB3aXRoIHN1Y2ggZGlzY291cnNlIA0KK0RlbGlnaHRlZCwgb3Igbm90IGNhcGFibGUgaGVyIGVhciANCitPZiB3aGF0IHdhcyBoaWdoOiBzdWNoIHBsZWFzdXJlIHNoZSByZXNlcnZlZCwgDQorQWRhbSByZWxhdGluZywgc2hlIHNvbGUgYXVkaXRyZXNzOyANCitIZXIgaHVzYmFuZCB0aGUgcmVsYXRlciBzaGUgcHJlZmVycmVkIA0KK0JlZm9yZSB0aGUgQW5nZWwsIGFuZCBvZiBoaW0gdG8gYXNrIA0KK0Nob3NlIHJhdGhlcjsgaGUsIHNoZSBrbmV3LCB3b3VsZCBpbnRlcm1peCANCitHcmF0ZWZ1bCBkaWdyZXNzaW9ucywgYW5kIHNvbHZlIGhpZ2ggZGlzcHV0ZSANCitXaXRoIGNvbmp1Z2FsIGNhcmVzc2VzOiBmcm9tIGhpcyBsaXAgDQorTm90IHdvcmRzIGFsb25lIHBsZWFzZWQgaGVyLiAgTyEgd2hlbiBtZWV0IG5vdyANCitTdWNoIHBhaXJzLCBpbiBsb3ZlIGFuZCBtdXR1YWwgaG9ub3VyIGpvaW5lZD8gDQorV2l0aCBHb2RkZXNzLWxpa2UgZGVtZWFub3VyIGZvcnRoIHNoZSB3ZW50LCANCitOb3QgdW5hdHRlbmRlZDsgZm9yIG9uIGhlciwgYXMgUXVlZW4sIA0KK0EgcG9tcCBvZiB3aW5uaW5nIEdyYWNlcyB3YWl0ZWQgc3RpbGwsIA0KK0FuZCBmcm9tIGFib3V0IGhlciBzaG90IGRhcnRzIG9mIGRlc2lyZSANCitJbnRvIGFsbCBleWVzLCB0byB3aXNoIGhlciBzdGlsbCBpbiBzaWdodC4gDQorQW5kIFJhcGhhZWwgbm93LCB0byBBZGFtJ3MgZG91YnQgcHJvcG9zZWQsIA0KK0JlbmV2b2xlbnQgYW5kIGZhY2lsZSB0aHVzIHJlcGxpZWQuIA0KK1RvIGFzayBvciBzZWFyY2gsIEkgYmxhbWUgdGhlZSBub3Q7IGZvciBIZWF2ZW4gDQorSXMgYXMgdGhlIGJvb2sgb2YgR29kIGJlZm9yZSB0aGVlIHNldCwgDQorV2hlcmVpbiB0byByZWFkIGhpcyB3b25kZXJvdXMgd29ya3MsIGFuZCBsZWFybiANCitIaXMgc2Vhc29ucywgaG91cnMsIG9yIGRheXMsIG9yIG1vbnRocywgb3IgeWVhcnM6IA0KK1RoaXMgdG8gYXR0YWluLCB3aGV0aGVyIEhlYXZlbiBtb3ZlIG9yIEVhcnRoLCANCitJbXBvcnRzIG5vdCwgaWYgdGhvdSByZWNrb24gcmlnaHQ7IHRoZSByZXN0IA0KK0Zyb20gTWFuIG9yIEFuZ2VsIHRoZSBncmVhdCBBcmNoaXRlY3QgDQorRGlkIHdpc2VseSB0byBjb25jZWFsLCBhbmQgbm90IGRpdnVsZ2UgDQorSGlzIHNlY3JldHMgdG8gYmUgc2Nhbm5lZCBieSB0aGVtIHdobyBvdWdodCANCitSYXRoZXIgYWRtaXJlOyBvciwgaWYgdGhleSBsaXN0IHRvIHRyeSANCitDb25qZWN0dXJlLCBoZSBoaXMgZmFicmljayBvZiB0aGUgSGVhdmVucyANCitIYXRoIGxlZnQgdG8gdGhlaXIgZGlzcHV0ZXMsIHBlcmhhcHMgdG8gbW92ZSANCitIaXMgbGF1Z2h0ZXIgYXQgdGhlaXIgcXVhaW50IG9waW5pb25zIHdpZGUgDQorSGVyZWFmdGVyOyB3aGVuIHRoZXkgY29tZSB0byBtb2RlbCBIZWF2ZW4gDQorQW5kIGNhbGN1bGF0ZSB0aGUgc3RhcnMsIGhvdyB0aGV5IHdpbGwgd2llbGQgDQorVGhlIG1pZ2h0eSBmcmFtZTsgaG93IGJ1aWxkLCB1bmJ1aWxkLCBjb250cml2ZSANCitUbyBzYXZlIGFwcGVhcmFuY2VzOyBob3cgZ2lyZCB0aGUgc3BoZXJlIA0KK1dpdGggY2VudHJpY2sgYW5kIGVjY2VudHJpY2sgc2NyaWJibGVkIG8nZXIsIA0KK0N5Y2xlIGFuZCBlcGljeWNsZSwgb3JiIGluIG9yYjogDQorQWxyZWFkeSBieSB0aHkgcmVhc29uaW5nIHRoaXMgSSBndWVzcywgDQorV2hvIGFydCB0byBsZWFkIHRoeSBvZmZzcHJpbmcsIGFuZCBzdXBwb3Nlc3QgDQorVGhhdCBib2RpZXMgYnJpZ2h0IGFuZCBncmVhdGVyIHNob3VsZCBub3Qgc2VydmUgDQorVGhlIGxlc3Mgbm90IGJyaWdodCwgbm9yIEhlYXZlbiBzdWNoIGpvdXJuZXlzIHJ1biwgDQorRWFydGggc2l0dGluZyBzdGlsbCwgd2hlbiBzaGUgYWxvbmUgcmVjZWl2ZXMgDQorVGhlIGJlbmVmaXQ6ICBDb25zaWRlciBmaXJzdCwgdGhhdCBncmVhdCANCitPciBicmlnaHQgaW5mZXJzIG5vdCBleGNlbGxlbmNlOiB0aGUgRWFydGggDQorVGhvdWdoLCBpbiBjb21wYXJpc29uIG9mIEhlYXZlbiwgc28gc21hbGwsIA0KK05vciBnbGlzdGVyaW5nLCBtYXkgb2Ygc29saWQgZ29vZCBjb250YWluIA0KK01vcmUgcGxlbnR5IHRoYW4gdGhlIHN1biB0aGF0IGJhcnJlbiBzaGluZXM7IA0KK1dob3NlIHZpcnR1ZSBvbiBpdHNlbGYgd29ya3Mgbm8gZWZmZWN0LCANCitCdXQgaW4gdGhlIGZydWl0ZnVsIEVhcnRoOyB0aGVyZSBmaXJzdCByZWNlaXZlZCwgDQorSGlzIGJlYW1zLCB1bmFjdGl2ZSBlbHNlLCB0aGVpciB2aWdvdXIgZmluZC4gDQorWWV0IG5vdCB0byBFYXJ0aCBhcmUgdGhvc2UgYnJpZ2h0IGx1bWluYXJpZXMgDQorT2ZmaWNpb3VzOyBidXQgdG8gdGhlZSwgRWFydGgncyBoYWJpdGFudC4gDQorQW5kIGZvciB0aGUgSGVhdmVuJ3Mgd2lkZSBjaXJjdWl0LCBsZXQgaXQgc3BlYWsgDQorVGhlIE1ha2VyJ3MgaGlnaCBtYWduaWZpY2VuY2UsIHdobyBidWlsdCANCitTbyBzcGFjaW91cywgYW5kIGhpcyBsaW5lIHN0cmV0Y2hlZCBvdXQgc28gZmFyOyANCitUaGF0IE1hbiBtYXkga25vdyBoZSBkd2VsbHMgbm90IGluIGhpcyBvd247IA0KK0FuIGVkaWZpY2UgdG9vIGxhcmdlIGZvciBoaW0gdG8gZmlsbCwgDQorTG9kZ2VkIGluIGEgc21hbGwgcGFydGl0aW9uOyBhbmQgdGhlIHJlc3QgDQorT3JkYWluZWQgZm9yIHVzZXMgdG8gaGlzIExvcmQgYmVzdCBrbm93bi4gDQorVGhlIHN3aWZ0bmVzcyBvZiB0aG9zZSBjaXJjbGVzIGF0dHJpYnV0ZSwgDQorVGhvdWdoIG51bWJlcmxlc3MsIHRvIGhpcyBPbW5pcG90ZW5jZSwgDQorVGhhdCB0byBjb3Jwb3JlYWwgc3Vic3RhbmNlcyBjb3VsZCBhZGQgDQorU3BlZWQgYWxtb3N0IHNwaXJpdHVhbDogIE1lIHRob3UgdGhpbmtlc3Qgbm90IHNsb3csIA0KK1dobyBzaW5jZSB0aGUgbW9ybmluZy1ob3VyIHNldCBvdXQgZnJvbSBIZWF2ZW4gDQorV2hlcmUgR29kIHJlc2lkZXMsIGFuZCBlcmUgbWlkLWRheSBhcnJpdmVkIA0KK0luIEVkZW47IGRpc3RhbmNlIGluZXhwcmVzc2libGUgDQorQnkgbnVtYmVycyB0aGF0IGhhdmUgbmFtZS4gIEJ1dCB0aGlzIEkgdXJnZSwgDQorQWRtaXR0aW5nIG1vdGlvbiBpbiB0aGUgSGVhdmVucywgdG8gc2hvdyANCitJbnZhbGlkIHRoYXQgd2hpY2ggdGhlZSB0byBkb3VidCBpdCBtb3ZlZDsgDQorTm90IHRoYXQgSSBzbyBhZmZpcm0sIHRob3VnaCBzbyBpdCBzZWVtIA0KK1RvIHRoZWUgd2hvIGhhc3QgdGh5IGR3ZWxsaW5nIGhlcmUgb24gRWFydGguIA0KK0dvZCwgdG8gcmVtb3ZlIGhpcyB3YXlzIGZyb20gaHVtYW4gc2Vuc2UsIA0KK1BsYWNlZCBIZWF2ZW4gZnJvbSBFYXJ0aCBzbyBmYXIsIHRoYXQgZWFydGhseSBzaWdodCwgDQorSWYgaXQgcHJlc3VtZSwgbWlnaHQgZXJyIGluIHRoaW5ncyB0b28gaGlnaCwgDQorQW5kIG5vIGFkdmFudGFnZSBnYWluLiAgV2hhdCBpZiB0aGUgc3VuIA0KK0JlIGNlbnRlciB0byB0aGUgd29ybGQ7IGFuZCBvdGhlciBzdGFycywgDQorQnkgaGlzIGF0dHJhY3RpdmUgdmlydHVlIGFuZCB0aGVpciBvd24gDQorSW5jaXRlZCwgZGFuY2UgYWJvdXQgaGltIHZhcmlvdXMgcm91bmRzPyANCitUaGVpciB3YW5kZXJpbmcgY291cnNlIG5vdyBoaWdoLCBub3cgbG93LCB0aGVuIGhpZCwgDQorUHJvZ3Jlc3NpdmUsIHJldHJvZ3JhZGUsIG9yIHN0YW5kaW5nIHN0aWxsLCANCitJbiBzaXggdGhvdSBzZWVzdDsgYW5kIHdoYXQgaWYgc2V2ZW50aCB0byB0aGVzZSANCitUaGUgcGxhbmV0IGVhcnRoLCBzbyBzdGVkZmFzdCB0aG91Z2ggc2hlIHNlZW0sIA0KK0luc2Vuc2libHkgdGhyZWUgZGlmZmVyZW50IG1vdGlvbnMgbW92ZT8gDQorV2hpY2ggZWxzZSB0byBzZXZlcmFsIHNwaGVyZXMgdGhvdSBtdXN0IGFzY3JpYmUsIA0KK01vdmVkIGNvbnRyYXJ5IHdpdGggdGh3YXJ0IG9ibGlxdWl0aWVzOyANCitPciBzYXZlIHRoZSBzdW4gaGlzIGxhYm91ciwgYW5kIHRoYXQgc3dpZnQgDQorTm9jdHVybmFsIGFuZCBkaXVybmFsIHJob21iIHN1cHBvc2VkLCANCitJbnZpc2libGUgZWxzZSBhYm92ZSBhbGwgc3RhcnMsIHRoZSB3aGVlbCANCitPZiBkYXkgYW5kIG5pZ2h0OyB3aGljaCBuZWVkcyBub3QgdGh5IGJlbGllZiwgDQorSWYgZWFydGgsIGluZHVzdHJpb3VzIG9mIGhlcnNlbGYsIGZldGNoIGRheSANCitUcmF2ZWxsaW5nIGVhc3QsIGFuZCB3aXRoIGhlciBwYXJ0IGF2ZXJzZSANCitGcm9tIHRoZSBzdW4ncyBiZWFtIG1lZXQgbmlnaHQsIGhlciBvdGhlciBwYXJ0IA0KK1N0aWxsIGx1bWlub3VzIGJ5IGhpcyByYXkuICBXaGF0IGlmIHRoYXQgbGlnaHQsIA0KK1NlbnQgZnJvbSBoZXIgdGhyb3VnaCB0aGUgd2lkZSB0cmFuc3BpY3VvdXMgYWlyLCANCitUbyB0aGUgdGVycmVzdHJpYWwgbW9vbiBiZSBhcyBhIHN0YXIsIA0KK0VubGlnaHRlbmluZyBoZXIgYnkgZGF5LCBhcyBzaGUgYnkgbmlnaHQgDQorVGhpcyBlYXJ0aD8gcmVjaXByb2NhbCwgaWYgbGFuZCBiZSB0aGVyZSwgDQorRmllbGRzIGFuZCBpbmhhYml0YW50czogIEhlciBzcG90cyB0aG91IHNlZXN0IA0KK0FzIGNsb3VkcywgYW5kIGNsb3VkcyBtYXkgcmFpbiwgYW5kIHJhaW4gcHJvZHVjZSANCitGcnVpdHMgaW4gaGVyIHNvZnRlbmVkIHNvaWwgZm9yIHNvbWUgdG8gZWF0IA0KK0FsbG90dGVkIHRoZXJlOyBhbmQgb3RoZXIgc3VucyBwZXJoYXBzLCANCitXaXRoIHRoZWlyIGF0dGVuZGFudCBtb29ucywgdGhvdSB3aWx0IGRlc2NyeSwgDQorQ29tbXVuaWNhdGluZyBtYWxlIGFuZCBmZW1hbGUgbGlnaHQ7IA0KK1doaWNoIHR3byBncmVhdCBzZXhlcyBhbmltYXRlIHRoZSB3b3JsZCwgDQorU3RvcmVkIGluIGVhY2ggb3JiIHBlcmhhcHMgd2l0aCBzb21lIHRoYXQgbGl2ZS4gDQorRm9yIHN1Y2ggdmFzdCByb29tIGluIE5hdHVyZSB1bnBvc3Nlc3NlZCANCitCeSBsaXZpbmcgc291bCwgZGVzYXJ0IGFuZCBkZXNvbGF0ZSwgDQorT25seSB0byBzaGluZSwgeWV0IHNjYXJjZSB0byBjb250cmlidXRlIA0KK0VhY2ggb3JiIGEgZ2xpbXBzZSBvZiBsaWdodCwgY29udmV5ZWQgc28gZmFyIA0KK0Rvd24gdG8gdGhpcyBoYWJpdGFibGUsIHdoaWNoIHJldHVybnMgDQorTGlnaHQgYmFjayB0byB0aGVtLCBpcyBvYnZpb3VzIHRvIGRpc3B1dGUuIA0KK0J1dCB3aGV0aGVyIHRodXMgdGhlc2UgdGhpbmdzLCBvciB3aGV0aGVyIG5vdDsgDQorQnV0IHdoZXRoZXIgdGhlIHN1biwgcHJlZG9taW5hbnQgaW4gSGVhdmVuLCANCitSaXNlIG9uIHRoZSBlYXJ0aDsgb3IgZWFydGggcmlzZSBvbiB0aGUgc3VuOyANCitIZSBmcm9tIHRoZSBlYXN0IGhpcyBmbGFtaW5nIHJvYWQgYmVnaW47IA0KK09yIHNoZSBmcm9tIHdlc3QgaGVyIHNpbGVudCBjb3Vyc2UgYWR2YW5jZSwgDQorV2l0aCBpbm9mZmVuc2l2ZSBwYWNlIHRoYXQgc3Bpbm5pbmcgc2xlZXBzIA0KK09uIGhlciBzb2Z0IGF4bGUsIHdoaWxlIHNoZSBwYWNlcyBldmVuLCANCitBbmQgYmVhcnMgdGhlZSBzb2Z0IHdpdGggdGhlIHNtb290aCBoYWlyIGFsb25nOyANCitTb2xsaWNpdCBub3QgdGh5IHRob3VnaHRzIHdpdGggbWF0dGVycyBoaWQ7IA0KK0xlYXZlIHRoZW0gdG8gR29kIGFib3ZlOyBoaW0gc2VydmUsIGFuZCBmZWFyISANCitPZiBvdGhlciBjcmVhdHVyZXMsIGFzIGhpbSBwbGVhc2VzIGJlc3QsIA0KK1doZXJldmVyIHBsYWNlZCwgbGV0IGhpbSBkaXNwb3NlOyBqb3kgdGhvdSANCitJbiB3aGF0IGhlIGdpdmVzIHRvIHRoZWUsIHRoaXMgUGFyYWRpc2UgDQorQW5kIHRoeSBmYWlyIEV2ZTsgSGVhdmVuIGlzIGZvciB0aGVlIHRvbyBoaWdoIA0KK1RvIGtub3cgd2hhdCBwYXNzZXMgdGhlcmU7IGJlIGxvd2x5IHdpc2U6IA0KK1RoaW5rIG9ubHkgd2hhdCBjb25jZXJucyB0aGVlLCBhbmQgdGh5IGJlaW5nOyANCitEcmVhbSBub3Qgb2Ygb3RoZXIgd29ybGRzLCB3aGF0IGNyZWF0dXJlcyB0aGVyZSANCitMaXZlLCBpbiB3aGF0IHN0YXRlLCBjb25kaXRpb24sIG9yIGRlZ3JlZTsgDQorQ29udGVudGVkIHRoYXQgdGh1cyBmYXIgaGF0aCBiZWVuIHJldmVhbGVkIA0KK05vdCBvZiBFYXJ0aCBvbmx5LCBidXQgb2YgaGlnaGVzdCBIZWF2ZW4uIA0KK1RvIHdob20gdGh1cyBBZGFtLCBjbGVhcmVkIG9mIGRvdWJ0LCByZXBsaWVkLiANCitIb3cgZnVsbHkgaGFzdCB0aG91IHNhdGlzZmllZCBtZSwgcHVyZSANCitJbnRlbGxpZ2VuY2Ugb2YgSGVhdmVuLCBBbmdlbCBzZXJlbmUhIA0KK0FuZCwgZnJlZWQgZnJvbSBpbnRyaWNhY2llcywgdGF1Z2h0IHRvIGxpdmUgDQorVGhlIGVhc2llc3Qgd2F5OyBub3Igd2l0aCBwZXJwbGV4aW5nIHRob3VnaHRzIA0KK1RvIGludGVycnVwdCB0aGUgc3dlZXQgb2YgbGlmZSwgZnJvbSB3aGljaCANCitHb2QgaGF0aCBiaWQgZHdlbGwgZmFyIG9mZiBhbGwgYW54aW91cyBjYXJlcywgDQorQW5kIG5vdCBtb2xlc3QgdXM7IHVubGVzcyB3ZSBvdXJzZWx2ZXMgDQorU2VlayB0aGVtIHdpdGggd2FuZGVyaW5nIHRob3VnaHRzLCBhbmQgbm90aW9ucyB2YWluLiANCitCdXQgYXB0IHRoZSBtaW5kIG9yIGZhbmN5IGlzIHRvIHJvdmUgDQorVW5jaGVja2VkLCBhbmQgb2YgaGVyIHJvdmluZyBpcyBubyBlbmQ7IA0KK1RpbGwgd2FybmVkLCBvciBieSBleHBlcmllbmNlIHRhdWdodCwgc2hlIGxlYXJuLCANCitUaGF0LCBub3QgdG8ga25vdyBhdCBsYXJnZSBvZiB0aGluZ3MgcmVtb3RlIA0KK0Zyb20gdXNlLCBvYnNjdXJlIGFuZCBzdWJ0bGU7IGJ1dCwgdG8ga25vdyANCitUaGF0IHdoaWNoIGJlZm9yZSB1cyBsaWVzIGluIGRhaWx5IGxpZmUsIA0KK0lzIHRoZSBwcmltZSB3aXNkb206ICBXaGF0IGlzIG1vcmUsIGlzIGZ1bWUsIA0KK09yIGVtcHRpbmVzcywgb3IgZm9uZCBpbXBlcnRpbmVuY2U6IA0KK0FuZCByZW5kZXJzIHVzLCBpbiB0aGluZ3MgdGhhdCBtb3N0IGNvbmNlcm4sIA0KK1VucHJhY3Rpc2VkLCB1bnByZXBhcmVkLCBhbmQgc3RpbGwgdG8gc2Vlay4gDQorVGhlcmVmb3JlIGZyb20gdGhpcyBoaWdoIHBpdGNoIGxldCB1cyBkZXNjZW5kIA0KK0EgbG93ZXIgZmxpZ2h0LCBhbmQgc3BlYWsgb2YgdGhpbmdzIGF0IGhhbmQgDQorVXNlZnVsOyB3aGVuY2UsIGhhcGx5LCBtZW50aW9uIG1heSBhcmlzZSANCitPZiBzb21ldGhpbmcgbm90IHVuc2Vhc29uYWJsZSB0byBhc2ssIA0KK0J5IHN1ZmZlcmFuY2UsIGFuZCB0aHkgd29udGVkIGZhdm91ciwgZGVpZ25lZC4gDQorVGhlZSBJIGhhdmUgaGVhcmQgcmVsYXRpbmcgd2hhdCB3YXMgZG9uZSANCitFcmUgbXkgcmVtZW1icmFuY2U6IG5vdywgaGVhciBtZSByZWxhdGUgDQorTXkgc3RvcnksIHdoaWNoIHBlcmhhcHMgdGhvdSBoYXN0IG5vdCBoZWFyZDsgDQorQW5kIGRheSBpcyBub3QgeWV0IHNwZW50OyB0aWxsIHRoZW4gdGhvdSBzZWVzdCANCitIb3cgc3VidGx5IHRvIGRldGFpbiB0aGVlIEkgZGV2aXNlOyANCitJbnZpdGluZyB0aGVlIHRvIGhlYXIgd2hpbGUgSSByZWxhdGU7IA0KK0ZvbmQhIHdlcmUgaXQgbm90IGluIGhvcGUgb2YgdGh5IHJlcGx5OiANCitGb3IsIHdoaWxlIEkgc2l0IHdpdGggdGhlZSwgSSBzZWVtIGluIEhlYXZlbjsgDQorQW5kIHN3ZWV0ZXIgdGh5IGRpc2NvdXJzZSBpcyB0byBteSBlYXIgDQorVGhhbiBmcnVpdHMgb2YgcGFsbS10cmVlIHBsZWFzYW50ZXN0IHRvIHRoaXJzdCANCitBbmQgaHVuZ2VyIGJvdGgsIGZyb20gbGFib3VyLCBhdCB0aGUgaG91ciANCitPZiBzd2VldCByZXBhc3Q7IHRoZXkgc2F0aWF0ZSwgYW5kIHNvb24gZmlsbCwgDQorVGhvdWdoIHBsZWFzYW50OyBidXQgdGh5IHdvcmRzLCB3aXRoIGdyYWNlIGRpdmluZSANCitJbWJ1ZWQsIGJyaW5nIHRvIHRoZWlyIHN3ZWV0bmVzcyBubyBzYXRpZXR5LiANCitUbyB3aG9tIHRodXMgUmFwaGFlbCBhbnN3ZXJlZCBoZWF2ZW5seSBtZWVrLiANCitOb3IgYXJlIHRoeSBsaXBzIHVuZ3JhY2VmdWwsIFNpcmUgb2YgbWVuLCANCitOb3IgdG9uZ3VlIGluZWxvcXVlbnQ7IGZvciBHb2Qgb24gdGhlZSANCitBYnVuZGFudGx5IGhpcyBnaWZ0cyBoYXRoIGFsc28gcG91cmVkIA0KK0lud2FyZCBhbmQgb3V0d2FyZCBib3RoLCBoaXMgaW1hZ2UgZmFpcjogDQorU3BlYWtpbmcsIG9yIG11dGUsIGFsbCBjb21lbGluZXNzIGFuZCBncmFjZSANCitBdHRlbmRzIHRoZWU7IGFuZCBlYWNoIHdvcmQsIGVhY2ggbW90aW9uLCBmb3JtczsgDQorTm9yIGxlc3MgdGhpbmsgd2UgaW4gSGVhdmVuIG9mIHRoZWUgb24gRWFydGggDQorVGhhbiBvZiBvdXIgZmVsbG93LXNlcnZhbnQsIGFuZCBpbnF1aXJlIA0KK0dsYWRseSBpbnRvIHRoZSB3YXlzIG9mIEdvZCB3aXRoIE1hbjogDQorRm9yIEdvZCwgd2Ugc2VlLCBoYXRoIGhvbm91cmVkIHRoZWUsIGFuZCBzZXQgDQorT24gTWFuIGhpcyBlcXVhbCBsb3ZlOiAgU2F5IHRoZXJlZm9yZSBvbjsgDQorRm9yIEkgdGhhdCBkYXkgd2FzIGFic2VudCwgYXMgYmVmZWwsIA0KK0JvdW5kIG9uIGEgdm95YWdlIHVuY291dGggYW5kIG9ic2N1cmUsIA0KK0ZhciBvbiBleGN1cnNpb24gdG93YXJkIHRoZSBnYXRlcyBvZiBIZWxsOyANCitTcXVhcmVkIGluIGZ1bGwgbGVnaW9uIChzdWNoIGNvbW1hbmQgd2UgaGFkKSANCitUbyBzZWUgdGhhdCBub25lIHRoZW5jZSBpc3N1ZWQgZm9ydGggYSBzcHksIA0KK09yIGVuZW15LCB3aGlsZSBHb2Qgd2FzIGluIGhpcyB3b3JrOyANCitMZXN0IGhlLCBpbmNlbnNlZCBhdCBzdWNoIGVydXB0aW9uIGJvbGQsIA0KK0Rlc3RydWN0aW9uIHdpdGggY3JlYXRpb24gbWlnaHQgaGF2ZSBtaXhlZC4gDQorTm90IHRoYXQgdGhleSBkdXJzdCB3aXRob3V0IGhpcyBsZWF2ZSBhdHRlbXB0OyANCitCdXQgdXMgaGUgc2VuZHMgdXBvbiBoaXMgaGlnaCBiZWhlc3RzIA0KK0ZvciBzdGF0ZSwgYXMgU292cmFuIEtpbmc7IGFuZCB0byBpbnVyZSANCitPdXIgcHJvbXB0IG9iZWRpZW5jZS4gIEZhc3Qgd2UgZm91bmQsIGZhc3Qgc2h1dCwgDQorVGhlIGRpc21hbCBnYXRlcywgYW5kIGJhcnJpY2Fkb2VkIHN0cm9uZzsgDQorQnV0IGxvbmcgZXJlIG91ciBhcHByb2FjaGluZyBoZWFyZCB3aXRoaW4gDQorTm9pc2UsIG90aGVyIHRoYW4gdGhlIHNvdW5kIG9mIGRhbmNlIG9yIHNvbmcsIA0KK1Rvcm1lbnQsIGFuZCBsb3VkIGxhbWVudCwgYW5kIGZ1cmlvdXMgcmFnZS4gDQorR2xhZCB3ZSByZXR1cm5lZCB1cCB0byB0aGUgY29hc3RzIG9mIGxpZ2h0IA0KK0VyZSBzYWJiYXRoLWV2ZW5pbmc6IHNvIHdlIGhhZCBpbiBjaGFyZ2UuIA0KK0J1dCB0aHkgcmVsYXRpb24gbm93OyBmb3IgSSBhdHRlbmQsIA0KK1BsZWFzZWQgd2l0aCB0aHkgd29yZHMgbm8gbGVzcyB0aGFuIHRob3Ugd2l0aCBtaW5lLiANCitTbyBzcGFrZSB0aGUgR29kbGlrZSBQb3dlciwgYW5kIHRodXMgb3VyIFNpcmUuIA0KK0ZvciBNYW4gdG8gdGVsbCBob3cgaHVtYW4gbGlmZSBiZWdhbiANCitJcyBoYXJkOyBmb3Igd2hvIGhpbXNlbGYgYmVnaW5uaW5nIGtuZXcgDQorRGVzaXJlIHdpdGggdGhlZSBzdGlsbCBsb25nZXIgdG8gY29udmVyc2UgDQorSW5kdWNlZCBtZS4gIEFzIG5ldyB3YWtlZCBmcm9tIHNvdW5kZXN0IHNsZWVwLCANCitTb2Z0IG9uIHRoZSBmbG93ZXJ5IGhlcmIgSSBmb3VuZCBtZSBsYWlkLCANCitJbiBiYWxteSBzd2VhdDsgd2hpY2ggd2l0aCBoaXMgYmVhbXMgdGhlIHN1biANCitTb29uIGRyaWVkLCBhbmQgb24gdGhlIHJlZWtpbmcgbW9pc3R1cmUgZmVkLiANCitTdHJhaWdodCB0b3dhcmQgSGVhdmVuIG15IHdvbmRlcmluZyBleWVzIEkgdHVybmVkLCANCitBbmQgZ2F6ZWQgYSB3aGlsZSB0aGUgYW1wbGUgc2t5OyB0aWxsLCByYWlzZWQgDQorQnkgcXVpY2sgaW5zdGluY3RpdmUgbW90aW9uLCB1cCBJIHNwcnVuZywgDQorQXMgdGhpdGhlcndhcmQgZW5kZWF2b3VyaW5nLCBhbmQgdXByaWdodCANCitTdG9vZCBvbiBteSBmZWV0OiBhYm91dCBtZSByb3VuZCBJIHNhdyANCitIaWxsLCBkYWxlLCBhbmQgc2hhZHkgd29vZHMsIGFuZCBzdW5ueSBwbGFpbnMsIA0KK0FuZCBsaXF1aWQgbGFwc2Ugb2YgbXVybXVyaW5nIHN0cmVhbXM7IGJ5IHRoZXNlLCANCitDcmVhdHVyZXMgdGhhdCBsaXZlZCBhbmQgbW92ZWQsIGFuZCB3YWxrZWQsIG9yIGZsZXc7IA0KK0JpcmRzIG9uIHRoZSBicmFuY2hlcyB3YXJibGluZzsgYWxsIHRoaW5ncyBzbWlsZWQ7IA0KK1dpdGggZnJhZ3JhbmNlIGFuZCB3aXRoIGpveSBteSBoZWFydCBvJ2VyZmxvd2VkLiANCitNeXNlbGYgSSB0aGVuIHBlcnVzZWQsIGFuZCBsaW1iIGJ5IGxpbWIgDQorU3VydmV5ZWQsIGFuZCBzb21ldGltZXMgd2VudCwgYW5kIHNvbWV0aW1lcyByYW4gDQorV2l0aCBzdXBwbGUgam9pbnRzLCBhcyBsaXZlbHkgdmlnb3VyIGxlZDogDQorQnV0IHdobyBJIHdhcywgb3Igd2hlcmUsIG9yIGZyb20gd2hhdCBjYXVzZSwgDQorS25ldyBub3Q7IHRvIHNwZWFrIEkgdHJpZWQsIGFuZCBmb3J0aHdpdGggc3Bha2U7IA0KK015IHRvbmd1ZSBvYmV5ZWQsIGFuZCByZWFkaWx5IGNvdWxkIG5hbWUgDQorV2hhdGUnZXIgSSBzYXcuICBUaG91IFN1biwgc2FpZCBJLCBmYWlyIGxpZ2h0LCANCitBbmQgdGhvdSBlbmxpZ2h0ZW5lZCBFYXJ0aCwgc28gZnJlc2ggYW5kIGdheSwgDQorWWUgSGlsbHMsIGFuZCBEYWxlcywgeWUgUml2ZXJzLCBXb29kcywgYW5kIFBsYWlucywgDQorQW5kIHllIHRoYXQgbGl2ZSBhbmQgbW92ZSwgZmFpciBDcmVhdHVyZXMsIHRlbGwsIA0KK1RlbGwsIGlmIHllIHNhdywgaG93IEkgY2FtZSB0aHVzLCBob3cgaGVyZT8tLSANCitOb3Qgb2YgbXlzZWxmOy0tYnkgc29tZSBncmVhdCBNYWtlciB0aGVuLCANCitJbiBnb29kbmVzcyBhbmQgaW4gcG93ZXIgcHJlLWVtaW5lbnQ6IA0KK1RlbGwgbWUsIGhvdyBtYXkgSSBrbm93IGhpbSwgaG93IGFkb3JlLCANCitGcm9tIHdob20gSSBoYXZlIHRoYXQgdGh1cyBJIG1vdmUgYW5kIGxpdmUsIA0KK0FuZCBmZWVsIHRoYXQgSSBhbSBoYXBwaWVyIHRoYW4gSSBrbm93Li0tIA0KK1doaWxlIHRodXMgSSBjYWxsZWQsIGFuZCBzdHJheWVkIEkga25ldyBub3Qgd2hpdGhlciwgDQorRnJvbSB3aGVyZSBJIGZpcnN0IGRyZXcgYWlyLCBhbmQgZmlyc3QgYmVoZWxkIA0KK1RoaXMgaGFwcHkgbGlnaHQ7IHdoZW4sIGFuc3dlciBub25lIHJldHVybmVkLCANCitPbiBhIGdyZWVuIHNoYWR5IGJhbmssIHByb2Z1c2Ugb2YgZmxvd2VycywgDQorUGVuc2l2ZSBJIHNhdCBtZSBkb3duOiAgVGhlcmUgZ2VudGxlIHNsZWVwIA0KK0ZpcnN0IGZvdW5kIG1lLCBhbmQgd2l0aCBzb2Z0IG9wcHJlc3Npb24gc2Vpc2VkIA0KK015IGRyb3VzZWQgc2Vuc2UsIHVudHJvdWJsZWQsIHRob3VnaCBJIHRob3VnaHQgDQorSSB0aGVuIHdhcyBwYXNzaW5nIHRvIG15IGZvcm1lciBzdGF0ZSANCitJbnNlbnNpYmxlLCBhbmQgZm9ydGh3aXRoIHRvIGRpc3NvbHZlOiANCitXaGVuIHN1ZGRlbmx5IHN0b29kIGF0IG15IGhlYWQgYSBkcmVhbSwgDQorV2hvc2UgaW53YXJkIGFwcGFyaXRpb24gZ2VudGx5IG1vdmVkIA0KK015IGZhbmN5IHRvIGJlbGlldmUgSSB5ZXQgaGFkIGJlaW5nLCANCitBbmQgbGl2ZWQ6ICBPbmUgY2FtZSwgbWV0aG91Z2h0LCBvZiBzaGFwZSBkaXZpbmUsIA0KK0FuZCBzYWlkLCAnVGh5IG1hbnNpb24gd2FudHMgdGhlZSwgQWRhbTsgcmlzZSwgDQorJ0ZpcnN0IE1hbiwgb2YgbWVuIGlubnVtZXJhYmxlIG9yZGFpbmVkIA0KKydGaXJzdCBGYXRoZXIhIGNhbGxlZCBieSB0aGVlLCBJIGNvbWUgdGh5IGd1aWRlIA0KKydUbyB0aGUgZ2FyZGVuIG9mIGJsaXNzLCB0aHkgc2VhdCBwcmVwYXJlZC4nIA0KK1NvIHNheWluZywgYnkgdGhlIGhhbmQgaGUgdG9vayBtZSByYWlzZWQsIA0KK0FuZCBvdmVyIGZpZWxkcyBhbmQgd2F0ZXJzLCBhcyBpbiBhaXIgDQorU21vb3RoLXNsaWRpbmcgd2l0aG91dCBzdGVwLCBsYXN0IGxlZCBtZSB1cCANCitBIHdvb2R5IG1vdW50YWluOyB3aG9zZSBoaWdoIHRvcCB3YXMgcGxhaW4sIA0KK0EgY2lyY3VpdCB3aWRlLCBlbmNsb3NlZCwgd2l0aCBnb29kbGllc3QgdHJlZXMgDQorUGxhbnRlZCwgd2l0aCB3YWxrcywgYW5kIGJvd2VyczsgdGhhdCB3aGF0IEkgc2F3IA0KK09mIEVhcnRoIGJlZm9yZSBzY2FyY2UgcGxlYXNhbnQgc2VlbWVkLiAgRWFjaCB0cmVlLCANCitMb2FkZW4gd2l0aCBmYWlyZXN0IGZydWl0IHRoYXQgaHVuZyB0byB0aGUgZXllIA0KK1RlbXB0aW5nLCBzdGlycmVkIGluIG1lIHN1ZGRlbiBhcHBldGl0ZSANCitUbyBwbHVjayBhbmQgZWF0OyB3aGVyZWF0IEkgd2FrZWQsIGFuZCBmb3VuZCANCitCZWZvcmUgbWluZSBleWVzIGFsbCByZWFsLCBhcyB0aGUgZHJlYW0gDQorSGFkIGxpdmVseSBzaGFkb3dlZDogIEhlcmUgaGFkIG5ldyBiZWd1biANCitNeSB3YW5kZXJpbmcsIGhhZCBub3QgaGUsIHdobyB3YXMgbXkgZ3VpZGUgDQorVXAgaGl0aGVyLCBmcm9tIGFtb25nIHRoZSB0cmVlcyBhcHBlYXJlZCwgDQorUHJlc2VuY2UgRGl2aW5lLiAgUmVqb2ljaW5nLCBidXQgd2l0aCBhd2UsIA0KK0luIGFkb3JhdGlvbiBhdCBoaXMgZmVldCBJIGZlbGwgDQorU3VibWlzczogIEhlIHJlYXJlZCBtZSwgYW5kICdXaG9tIHRob3Ugc291Z2h0ZXN0IEkgYW0sJyANCitTYWlkIG1pbGRseSwgJ0F1dGhvciBvZiBhbGwgdGhpcyB0aG91IHNlZXN0IA0KKydBYm92ZSwgb3Igcm91bmQgYWJvdXQgdGhlZSwgb3IgYmVuZWF0aC4gDQorJ1RoaXMgUGFyYWRpc2UgSSBnaXZlIHRoZWUsIGNvdW50IGl0IHRoaW5lIA0KKydUbyB0aWxsIGFuZCBrZWVwLCBhbmQgb2YgdGhlIGZydWl0IHRvIGVhdDogDQorJ09mIGV2ZXJ5IHRyZWUgdGhhdCBpbiB0aGUgZ2FyZGVuIGdyb3dzIA0KKydFYXQgZnJlZWx5IHdpdGggZ2xhZCBoZWFydDsgZmVhciBoZXJlIG5vIGRlYXJ0aDogDQorJ0J1dCBvZiB0aGUgdHJlZSB3aG9zZSBvcGVyYXRpb24gYnJpbmdzIA0KKydLbm93bGVkZ2Ugb2YgZ29vZCBhbmQgaWxsLCB3aGljaCBJIGhhdmUgc2V0IA0KKydUaGUgcGxlZGdlIG9mIHRoeSBvYmVkaWVuY2UgYW5kIHRoeSBmYWl0aCwgDQorJ0FtaWQgdGhlIGdhcmRlbiBieSB0aGUgdHJlZSBvZiBsaWZlLCANCisnUmVtZW1iZXIgd2hhdCBJIHdhcm4gdGhlZSwgc2h1biB0byB0YXN0ZSwgDQorJ0FuZCBzaHVuIHRoZSBiaXR0ZXIgY29uc2VxdWVuY2U6IGZvciBrbm93LCANCisnVGhlIGRheSB0aG91IGVhdGVzdCB0aGVyZW9mLCBteSBzb2xlIGNvbW1hbmQgDQorJ1RyYW5zZ3Jlc3NlZCwgaW5ldml0YWJseSB0aG91IHNoYWx0IGRpZSwgDQorJ0Zyb20gdGhhdCBkYXkgbW9ydGFsOyBhbmQgdGhpcyBoYXBweSBzdGF0ZSANCisnU2hhbHQgbG9zZSwgZXhwZWxsZWQgZnJvbSBoZW5jZSBpbnRvIGEgd29ybGQgDQorJ09mIHdvZSBhbmQgc29ycm93LicgIFN0ZXJubHkgaGUgcHJvbm91bmNlZCANCitUaGUgcmlnaWQgaW50ZXJkaWN0aW9uLCB3aGljaCByZXNvdW5kcyANCitZZXQgZHJlYWRmdWwgaW4gbWluZSBlYXIsIHRob3VnaCBpbiBteSBjaG9pY2UgDQorTm90IHRvIGluY3VyOyBidXQgc29vbiBoaXMgY2xlYXIgYXNwZWN0IA0KK1JldHVybmVkLCBhbmQgZ3JhY2lvdXMgcHVycG9zZSB0aHVzIHJlbmV3ZWQuIA0KKydOb3Qgb25seSB0aGVzZSBmYWlyIGJvdW5kcywgYnV0IGFsbCB0aGUgRWFydGggDQorJ1RvIHRoZWUgYW5kIHRvIHRoeSByYWNlIEkgZ2l2ZTsgYXMgbG9yZHMgDQorJ1Bvc3Nlc3MgaXQsIGFuZCBhbGwgdGhpbmdzIHRoYXQgdGhlcmVpbiBsaXZlLCANCisnT3IgbGl2ZSBpbiBzZWEsIG9yIGFpcjsgYmVhc3QsIGZpc2gsIGFuZCBmb3dsLiANCisnSW4gc2lnbiB3aGVyZW9mLCBlYWNoIGJpcmQgYW5kIGJlYXN0IGJlaG9sZCANCisnQWZ0ZXIgdGhlaXIga2luZHM7IEkgYnJpbmcgdGhlbSB0byByZWNlaXZlIA0KKydGcm9tIHRoZWUgdGhlaXIgbmFtZXMsIGFuZCBwYXkgdGhlZSBmZWFsdHkgDQorJ1dpdGggbG93IHN1YmplY3Rpb247IHVuZGVyc3RhbmQgdGhlIHNhbWUgDQorJ09mIGZpc2ggd2l0aGluIHRoZWlyIHdhdGVyeSByZXNpZGVuY2UsIA0KKydOb3QgaGl0aGVyIHN1bW1vbmVkLCBzaW5jZSB0aGV5IGNhbm5vdCBjaGFuZ2UgDQorJ1RoZWlyIGVsZW1lbnQsIHRvIGRyYXcgdGhlIHRoaW5uZXIgYWlyLicgDQorQXMgdGh1cyBoZSBzcGFrZSwgZWFjaCBiaXJkIGFuZCBiZWFzdCBiZWhvbGQgDQorQXBwcm9hY2hpbmcgdHdvIGFuZCB0d287IHRoZXNlIGNvd2VyaW5nIGxvdyANCitXaXRoIGJsYW5kaXNobWVudDsgZWFjaCBiaXJkIHN0b29wZWQgb24gaGlzIHdpbmcuIA0KK0kgbmFtZWQgdGhlbSwgYXMgdGhleSBwYXNzZWQsIGFuZCB1bmRlcnN0b29kIA0KK1RoZWlyIG5hdHVyZSwgd2l0aCBzdWNoIGtub3dsZWRnZSBHb2QgZW5kdWVkIA0KK015IHN1ZGRlbiBhcHByZWhlbnNpb246ICBCdXQgaW4gdGhlc2UgDQorSSBmb3VuZCBub3Qgd2hhdCBtZXRob3VnaHQgSSB3YW50ZWQgc3RpbGw7IA0KK0FuZCB0byB0aGUgaGVhdmVubHkgVmlzaW9uIHRodXMgcHJlc3VtZWQuIA0KK08sIGJ5IHdoYXQgbmFtZSwgZm9yIHRob3UgYWJvdmUgYWxsIHRoZXNlLCANCitBYm92ZSBtYW5raW5kLCBvciBhdWdodCB0aGFuIG1hbmtpbmQgaGlnaGVyLCANCitTdXJwYXNzZXN0IGZhciBteSBuYW1pbmc7IGhvdyBtYXkgSSANCitBZG9yZSB0aGVlLCBBdXRob3Igb2YgdGhpcyB1bml2ZXJzZSwgDQorQW5kIGFsbCB0aGlzIGdvb2QgdG8gbWFuPyBmb3Igd2hvc2Ugd2VsbCBiZWluZyANCitTbyBhbXBseSwgYW5kIHdpdGggaGFuZHMgc28gbGliZXJhbCwgDQorVGhvdSBoYXN0IHByb3ZpZGVkIGFsbCB0aGluZ3M6ICBCdXQgd2l0aCBtZSANCitJIHNlZSBub3Qgd2hvIHBhcnRha2VzLiAgSW4gc29saXR1ZGUgDQorV2hhdCBoYXBwaW5lc3MsIHdobyBjYW4gZW5qb3kgYWxvbmUsIA0KK09yLCBhbGwgZW5qb3lpbmcsIHdoYXQgY29udGVudG1lbnQgZmluZD8gDQorVGh1cyBJIHByZXN1bXB0dW91czsgYW5kIHRoZSBWaXNpb24gYnJpZ2h0LCANCitBcyB3aXRoIGEgc21pbGUgbW9yZSBicmlnaHRlbmVkLCB0aHVzIHJlcGxpZWQuIA0KK1doYXQgY2FsbGVzdCB0aG91IHNvbGl0dWRlPyAgSXMgbm90IHRoZSBFYXJ0aCANCitXaXRoIHZhcmlvdXMgbGl2aW5nIGNyZWF0dXJlcywgYW5kIHRoZSBhaXIgDQorUmVwbGVuaXNoZWQsIGFuZCBhbGwgdGhlc2UgYXQgdGh5IGNvbW1hbmQgDQorVG8gY29tZSBhbmQgcGxheSBiZWZvcmUgdGhlZT8gIEtub3dlc3QgdGhvdSBub3QgDQorVGhlaXIgbGFuZ3VhZ2UgYW5kIHRoZWlyIHdheXM/ICBUaGV5IGFsc28ga25vdywgDQorQW5kIHJlYXNvbiBub3QgY29udGVtcHRpYmx5OiAgV2l0aCB0aGVzZSANCitGaW5kIHBhc3RpbWUsIGFuZCBiZWFyIHJ1bGU7IHRoeSByZWFsbSBpcyBsYXJnZS4gDQorU28gc3Bha2UgdGhlIFVuaXZlcnNhbCBMb3JkLCBhbmQgc2VlbWVkIA0KK1NvIG9yZGVyaW5nOiAgSSwgd2l0aCBsZWF2ZSBvZiBzcGVlY2ggaW1wbG9yZWQsIA0KK0FuZCBodW1ibGUgZGVwcmVjYXRpb24sIHRodXMgcmVwbGllZC4gDQorTGV0IG5vdCBteSB3b3JkcyBvZmZlbmQgdGhlZSwgSGVhdmVubHkgUG93ZXI7IA0KK015IE1ha2VyLCBiZSBwcm9waXRpb3VzIHdoaWxlIEkgc3BlYWsuIA0KK0hhc3QgdGhvdSBub3QgbWFkZSBtZSBoZXJlIHRoeSBzdWJzdGl0dXRlLCANCitBbmQgdGhlc2UgaW5mZXJpb3VyIGZhciBiZW5lYXRoIG1lIHNldD8gDQorQW1vbmcgdW5lcXVhbHMgd2hhdCBzb2NpZXR5IA0KK0NhbiBzb3J0LCB3aGF0IGhhcm1vbnksIG9yIHRydWUgZGVsaWdodD8gDQorV2hpY2ggbXVzdCBiZSBtdXR1YWwsIGluIHByb3BvcnRpb24gZHVlIA0KK0dpdmVuIGFuZCByZWNlaXZlZDsgYnV0LCBpbiBkaXNwYXJpdHkgDQorVGhlIG9uZSBpbnRlbnNlLCB0aGUgb3RoZXIgc3RpbGwgcmVtaXNzLCANCitDYW5ub3Qgd2VsbCBzdWl0IHdpdGggZWl0aGVyLCBidXQgc29vbiBwcm92ZSANCitUZWRpb3VzIGFsaWtlOiAgT2YgZmVsbG93c2hpcCBJIHNwZWFrIA0KK1N1Y2ggYXMgSSBzZWVrLCBmaXQgdG8gcGFydGljaXBhdGUgDQorQWxsIHJhdGlvbmFsIGRlbGlnaHQ6IHdoZXJlaW4gdGhlIGJydXRlIA0KK0Nhbm5vdCBiZSBodW1hbiBjb25zb3J0OiAgVGhleSByZWpvaWNlIA0KK0VhY2ggd2l0aCB0aGVpciBraW5kLCBsaW9uIHdpdGggbGlvbmVzczsgDQorU28gZml0bHkgdGhlbSBpbiBwYWlycyB0aG91IGhhc3QgY29tYmluZWQ6IA0KK011Y2ggbGVzcyBjYW4gYmlyZCB3aXRoIGJlYXN0LCBvciBmaXNoIHdpdGggZm93bCANCitTbyB3ZWxsIGNvbnZlcnNlLCBub3Igd2l0aCB0aGUgb3ggdGhlIGFwZTsgDQorV29yc2UgdGhlbiBjYW4gbWFuIHdpdGggYmVhc3QsIGFuZCBsZWFzdCBvZiBhbGwuIA0KK1doZXJldG8gdGhlIEFsbWlnaHR5IGFuc3dlcmVkLCBub3QgZGlzcGxlYXNlZC4gDQorQSBuaWNlIGFuZCBzdWJ0bGUgaGFwcGluZXNzLCBJIHNlZSwgDQorVGhvdSB0byB0aHlzZWxmIHByb3Bvc2VzdCwgaW4gdGhlIGNob2ljZSANCitPZiB0aHkgYXNzb2NpYXRlcywgQWRhbSEgYW5kIHdpbHQgdGFzdGUgDQorTm8gcGxlYXN1cmUsIHRob3VnaCBpbiBwbGVhc3VyZSwgc29saXRhcnkuIA0KK1doYXQgdGhpbmtlc3QgdGhvdSB0aGVuIG9mIG1lLCBhbmQgdGhpcyBteSBzdGF0ZT8gDQorU2VlbSBJIHRvIHRoZWUgc3VmZmljaWVudGx5IHBvc3Nlc3NlZCANCitPZiBoYXBwaW5lc3MsIG9yIG5vdD8gd2hvIGFtIGFsb25lIA0KK0Zyb20gYWxsIGV0ZXJuaXR5OyBmb3Igbm9uZSBJIGtub3cgDQorU2Vjb25kIHRvIG1lIG9yIGxpa2UsIGVxdWFsIG11Y2ggbGVzcy4gDQorSG93IGhhdmUgSSB0aGVuIHdpdGggd2hvbSB0byBob2xkIGNvbnZlcnNlLCANCitTYXZlIHdpdGggdGhlIGNyZWF0dXJlcyB3aGljaCBJIG1hZGUsIGFuZCB0aG9zZSANCitUbyBtZSBpbmZlcmlvdXIsIGluZmluaXRlIGRlc2NlbnRzIA0KK0JlbmVhdGggd2hhdCBvdGhlciBjcmVhdHVyZXMgYXJlIHRvIHRoZWU/IA0KK0hlIGNlYXNlZDsgSSBsb3dseSBhbnN3ZXJlZC4gIFRvIGF0dGFpbiANCitUaGUgaGlnaHRoIGFuZCBkZXB0aCBvZiB0aHkgZXRlcm5hbCB3YXlzIA0KK0FsbCBodW1hbiB0aG91Z2h0cyBjb21lIHNob3J0LCBTdXByZW1lIG9mIHRoaW5ncyEgDQorVGhvdSBpbiB0aHlzZWxmIGFydCBwZXJmZWN0LCBhbmQgaW4gdGhlZSANCitJcyBubyBkZWZpY2llbmNlIGZvdW5kOiAgTm90IHNvIGlzIE1hbiwgDQorQnV0IGluIGRlZ3JlZTsgdGhlIGNhdXNlIG9mIGhpcyBkZXNpcmUgDQorQnkgY29udmVyc2F0aW9uIHdpdGggaGlzIGxpa2UgdG8gaGVscCANCitPciBzb2xhY2UgaGlzIGRlZmVjdHMuICBObyBuZWVkIHRoYXQgdGhvdSANCitTaG91bGRzdCBwcm9wYWdhdGUsIGFscmVhZHkgSW5maW5pdGU7IA0KK0FuZCB0aHJvdWdoIGFsbCBudW1iZXJzIGFic29sdXRlLCB0aG91Z2ggT25lOiANCitCdXQgTWFuIGJ5IG51bWJlciBpcyB0byBtYW5pZmVzdCANCitIaXMgc2luZ2xlIGltcGVyZmVjdGlvbiwgYW5kIGJlZ2V0IA0KK0xpa2Ugb2YgaGlzIGxpa2UsIGhpcyBpbWFnZSBtdWx0aXBsaWVkLCANCitJbiB1bml0eSBkZWZlY3RpdmU7IHdoaWNoIHJlcXVpcmVzIA0KK0NvbGxhdGVyYWwgbG92ZSwgYW5kIGRlYXJlc3QgYW1pdHkuIA0KK1Rob3UgaW4gdGh5IHNlY3Jlc3kgYWx0aG91Z2ggYWxvbmUsIA0KK0Jlc3Qgd2l0aCB0aHlzZWxmIGFjY29tcGFuaWVkLCBzZWVrZXN0IG5vdCANCitTb2NpYWwgY29tbXVuaWNhdGlvbjsgeWV0LCBzbyBwbGVhc2VkLCANCitDYW5zdCByYWlzZSB0aHkgY3JlYXR1cmUgdG8gd2hhdCBoaWdodGggdGhvdSB3aWx0IA0KK09mIHVuaW9uIG9yIGNvbW11bmlvbiwgZGVpZmllZDogDQorSSwgYnkgY29udmVyc2luZywgY2Fubm90IHRoZXNlIGVyZWN0IA0KK0Zyb20gcHJvbmU7IG5vciBpbiB0aGVpciB3YXlzIGNvbXBsYWNlbmNlIGZpbmQuIA0KK1RodXMgSSBlbWJvbGRlbmVkIHNwYWtlLCBhbmQgZnJlZWRvbSB1c2VkIA0KK1Blcm1pc3NpdmUsIGFuZCBhY2NlcHRhbmNlIGZvdW5kOyB3aGljaCBnYWluZWQgDQorVGhpcyBhbnN3ZXIgZnJvbSB0aGUgZ3JhY2lvdXMgVm9pY2UgRGl2aW5lLiANCitUaHVzIGZhciB0byB0cnkgdGhlZSwgQWRhbSwgSSB3YXMgcGxlYXNlZDsgDQorQW5kIGZpbmQgdGhlZSBrbm93aW5nLCBub3Qgb2YgYmVhc3RzIGFsb25lLCANCitXaGljaCB0aG91IGhhc3QgcmlnaHRseSBuYW1lZCwgYnV0IG9mIHRoeXNlbGY7IA0KK0V4cHJlc3Npbmcgd2VsbCB0aGUgc3Bpcml0IHdpdGhpbiB0aGVlIGZyZWUsIA0KK015IGltYWdlLCBub3QgaW1wYXJ0ZWQgdG8gdGhlIGJydXRlOyANCitXaG9zZSBmZWxsb3dzaGlwIHRoZXJlZm9yZSB1bm1lZXQgZm9yIHRoZWUgDQorR29vZCByZWFzb24gd2FzIHRob3UgZnJlZWx5IHNob3VsZHN0IGRpc2xpa2U7IA0KK0FuZCBiZSBzbyBtaW5kZWQgc3RpbGw6ICBJLCBlcmUgdGhvdSBzcGFrZXN0LCANCitLbmV3IGl0IG5vdCBnb29kIGZvciBNYW4gdG8gYmUgYWxvbmU7IA0KK0FuZCBubyBzdWNoIGNvbXBhbnkgYXMgdGhlbiB0aG91IHNhd2VzdCANCitJbnRlbmRlZCB0aGVlOyBmb3IgdHJpYWwgb25seSBicm91Z2h0LCANCitUbyBzZWUgaG93IHRob3UgY291bGRlc3QganVkZ2Ugb2YgZml0IGFuZCBtZWV0OiANCitXaGF0IG5leHQgSSBicmluZyBzaGFsbCBwbGVhc2UgdGhlZSwgYmUgYXNzdXJlZCwgDQorVGh5IGxpa2VuZXNzLCB0aHkgZml0IGhlbHAsIHRoeSBvdGhlciBzZWxmLCANCitUaHkgd2lzaCBleGFjdGx5IHRvIHRoeSBoZWFydCdzIGRlc2lyZS4gDQorSGUgZW5kZWQsIG9yIEkgaGVhcmQgbm8gbW9yZTsgZm9yIG5vdyANCitNeSBlYXJ0aGx5IGJ5IGhpcyBoZWF2ZW5seSBvdmVycG93ZXJlZCwgDQorV2hpY2ggaXQgaGFkIGxvbmcgc3Rvb2QgdW5kZXIsIHN0cmFpbmVkIHRvIHRoZSBoaWdodGggDQorSW4gdGhhdCBjZWxlc3RpYWwgY29sbG9xdXkgc3VibGltZSwgDQorQXMgd2l0aCBhbiBvYmplY3QgdGhhdCBleGNlbHMgdGhlIHNlbnNlIA0KK0RhenpsZWQgYW5kIHNwZW50LCBzdW5rIGRvd247IGFuZCBzb3VnaHQgcmVwYWlyIA0KK09mIHNsZWVwLCB3aGljaCBpbnN0YW50bHkgZmVsbCBvbiBtZSwgY2FsbGVkIA0KK0J5IE5hdHVyZSBhcyBpbiBhaWQsIGFuZCBjbG9zZWQgbWluZSBleWVzLiANCitNaW5lIGV5ZXMgaGUgY2xvc2VkLCBidXQgb3BlbiBsZWZ0IHRoZSBjZWxsIA0KK09mIGZhbmN5LCBteSBpbnRlcm5hbCBzaWdodDsgYnkgd2hpY2gsIA0KK0Fic3RyYWN0IGFzIGluIGEgdHJhbmNlLCBtZXRob3VnaHQgSSBzYXcsIA0KK1Rob3VnaCBzbGVlcGluZywgd2hlcmUgSSBsYXksIGFuZCBzYXcgdGhlIHNoYXBlIA0KK1N0aWxsIGdsb3Jpb3VzIGJlZm9yZSB3aG9tIGF3YWtlIEkgc3Rvb2Q6IA0KK1dobyBzdG9vcGluZyBvcGVuZWQgbXkgbGVmdCBzaWRlLCBhbmQgdG9vayANCitGcm9tIHRoZW5jZSBhIHJpYiwgd2l0aCBjb3JkaWFsIHNwaXJpdHMgd2FybSwgDQorQW5kIGxpZmUtYmxvb2Qgc3RyZWFtaW5nIGZyZXNoOyB3aWRlIHdhcyB0aGUgd291bmQsIA0KK0J1dCBzdWRkZW5seSB3aXRoIGZsZXNoIGZpbGxlZCB1cCBhbmQgaGVhbGVkOiANCitUaGUgcmliIGhlIGZvcm1lZCBhbmQgZmFzaGlvbmVkIHdpdGggaGlzIGhhbmRzOyANCitVbmRlciBoaXMgZm9ybWluZyBoYW5kcyBhIGNyZWF0dXJlIGdyZXcsIA0KK01hbi1saWtlLCBidXQgZGlmZmVyZW50IHNleDsgc28gbG92ZWx5IGZhaXIsIA0KK1RoYXQgd2hhdCBzZWVtZWQgZmFpciBpbiBhbGwgdGhlIHdvcmxkLCBzZWVtZWQgbm93IA0KK01lYW4sIG9yIGluIGhlciBzdW1tZWQgdXAsIGluIGhlciBjb250YWluZWQgDQorQW5kIGluIGhlciBsb29rczsgd2hpY2ggZnJvbSB0aGF0IHRpbWUgaW5mdXNlZCANCitTd2VldG5lc3MgaW50byBteSBoZWFydCwgdW5mZWx0IGJlZm9yZSwgDQorQW5kIGludG8gYWxsIHRoaW5ncyBmcm9tIGhlciBhaXIgaW5zcGlyZWQgDQorVGhlIHNwaXJpdCBvZiBsb3ZlIGFuZCBhbW9yb3VzIGRlbGlnaHQuIA0KK1NoZSBkaXNhcHBlYXJlZCwgYW5kIGxlZnQgbWUgZGFyazsgSSB3YWtlZCANCitUbyBmaW5kIGhlciwgb3IgZm9yIGV2ZXIgdG8gZGVwbG9yZSANCitIZXIgbG9zcywgYW5kIG90aGVyIHBsZWFzdXJlcyBhbGwgYWJqdXJlOiANCitXaGVuIG91dCBvZiBob3BlLCBiZWhvbGQgaGVyLCBub3QgZmFyIG9mZiwgDQorU3VjaCBhcyBJIHNhdyBoZXIgaW4gbXkgZHJlYW0sIGFkb3JuZWQgDQorV2l0aCB3aGF0IGFsbCBFYXJ0aCBvciBIZWF2ZW4gY291bGQgYmVzdG93IA0KK1RvIG1ha2UgaGVyIGFtaWFibGU6ICBPbiBzaGUgY2FtZSwgDQorTGVkIGJ5IGhlciBoZWF2ZW5seSBNYWtlciwgdGhvdWdoIHVuc2VlbiwgDQorQW5kIGd1aWRlZCBieSBoaXMgdm9pY2U7IG5vciB1bmluZm9ybWVkIA0KK09mIG51cHRpYWwgc2FuY3RpdHksIGFuZCBtYXJyaWFnZSByaXRlczogDQorR3JhY2Ugd2FzIGluIGFsbCBoZXIgc3RlcHMsIEhlYXZlbiBpbiBoZXIgZXllLCANCitJbiBldmVyeSBnZXN0dXJlIGRpZ25pdHkgYW5kIGxvdmUuIA0KK0ksIG92ZXJqb3llZCwgY291bGQgbm90IGZvcmJlYXIgYWxvdWQuIA0KK1RoaXMgdHVybiBoYXRoIG1hZGUgYW1lbmRzOyB0aG91IGhhc3QgZnVsZmlsbGVkIA0KK1RoeSB3b3JkcywgQ3JlYXRvciBib3VudGVvdXMgYW5kIGJlbmlnbiwgDQorR2l2ZXIgb2YgYWxsIHRoaW5ncyBmYWlyISBidXQgZmFpcmVzdCB0aGlzIA0KK09mIGFsbCB0aHkgZ2lmdHMhIG5vciBlbnZpZXN0LiAgSSBub3cgc2VlIA0KK0JvbmUgb2YgbXkgYm9uZSwgZmxlc2ggb2YgbXkgZmxlc2gsIG15c2VsZiANCitCZWZvcmUgbWU6ICBXb21hbiBpcyBoZXIgbmFtZTtvZiBNYW4gDQorRXh0cmFjdGVkOiBmb3IgdGhpcyBjYXVzZSBoZSBzaGFsbCBmb3JlZ28gDQorRmF0aGVyIGFuZCBtb3RoZXIsIGFuZCB0byBoaXMgd2lmZSBhZGhlcmU7IA0KK0FuZCB0aGV5IHNoYWxsIGJlIG9uZSBmbGVzaCwgb25lIGhlYXJ0LCBvbmUgc291bC4gDQorU2hlIGhlYXJkIG1lIHRodXM7IGFuZCB0aG91Z2ggZGl2aW5lbHkgYnJvdWdodCwgDQorWWV0IGlubm9jZW5jZSwgYW5kIHZpcmdpbiBtb2Rlc3R5LCANCitIZXIgdmlydHVlLCBhbmQgdGhlIGNvbnNjaWVuY2Ugb2YgaGVyIHdvcnRoLCANCitUaGF0IHdvdWxkIGJlIHdvb2VkLCBhbmQgbm90IHVuc291Z2h0IGJlIHdvbiwgDQorTm90IG9idmlvdXMsIG5vdCBvYnRydXNpdmUsIGJ1dCwgcmV0aXJlZCwgDQorVGhlIG1vcmUgZGVzaXJhYmxlOyBvciwgdG8gc2F5IGFsbCwgDQorTmF0dXJlIGhlcnNlbGYsIHRob3VnaCBwdXJlIG9mIHNpbmZ1bCB0aG91Z2h0LCANCitXcm91Z2h0IGluIGhlciBzbywgdGhhdCwgc2VlaW5nIG1lLCBzaGUgdHVybmVkOiANCitJIGZvbGxvd2VkIGhlcjsgc2hlIHdoYXQgd2FzIGhvbm91ciBrbmV3LCANCitBbmQgd2l0aCBvYnNlcXVpb3VzIG1hamVzdHkgYXBwcm92ZWQgDQorTXkgcGxlYWRlZCByZWFzb24uICBUbyB0aGUgbnVwdGlhbCBib3dlciANCitJIGxlZCBoZXIgYmx1c2hpbmcgbGlrZSB0aGUgbW9ybjogQWxsIEhlYXZlbiwgDQorQW5kIGhhcHB5IGNvbnN0ZWxsYXRpb25zLCBvbiB0aGF0IGhvdXIgDQorU2hlZCB0aGVpciBzZWxlY3Rlc3QgaW5mbHVlbmNlOyB0aGUgRWFydGggDQorR2F2ZSBzaWduIG9mIGdyYXR1bGF0aW9uLCBhbmQgZWFjaCBoaWxsOyANCitKb3lvdXMgdGhlIGJpcmRzOyBmcmVzaCBnYWxlcyBhbmQgZ2VudGxlIGFpcnMgDQorV2hpc3BlcmVkIGl0IHRvIHRoZSB3b29kcywgYW5kIGZyb20gdGhlaXIgd2luZ3MgDQorRmx1bmcgcm9zZSwgZmx1bmcgb2RvdXJzIGZyb20gdGhlIHNwaWN5IHNocnViLCANCitEaXNwb3J0aW5nLCB0aWxsIHRoZSBhbW9yb3VzIGJpcmQgb2YgbmlnaHQgDQorU3VuZyBzcG91c2FsLCBhbmQgYmlkIGhhc3RlIHRoZSBldmVuaW5nLXN0YXIgDQorT24gaGlzIGhpbGwgdG9wLCB0byBsaWdodCB0aGUgYnJpZGFsIGxhbXAuIA0KK1RodXMgaGF2ZSBJIHRvbGQgdGhlZSBhbGwgbXkgc3RhdGUsIGFuZCBicm91Z2h0IA0KK015IHN0b3J5IHRvIHRoZSBzdW0gb2YgZWFydGhseSBibGlzcywgDQorV2hpY2ggSSBlbmpveTsgYW5kIG11c3QgY29uZmVzcyB0byBmaW5kIA0KK0luIGFsbCB0aGluZ3MgZWxzZSBkZWxpZ2h0IGluZGVlZCwgYnV0IHN1Y2ggDQorQXMsIHVzZWQgb3Igbm90LCB3b3JrcyBpbiB0aGUgbWluZCBubyBjaGFuZ2UsIA0KK05vciB2ZWhlbWVudCBkZXNpcmU7IHRoZXNlIGRlbGljYWNpZXMgDQorSSBtZWFuIG9mIHRhc3RlLCBzaWdodCwgc21lbGwsIGhlcmJzLCBmcnVpdHMsIGFuZCBmbG93ZXJzLCANCitXYWxrcywgYW5kIHRoZSBtZWxvZHkgb2YgYmlyZHM6IGJ1dCBoZXJlIA0KK0ZhciBvdGhlcndpc2UsIHRyYW5zcG9ydGVkIEkgYmVob2xkLCANCitUcmFuc3BvcnRlZCB0b3VjaDsgaGVyZSBwYXNzaW9uIGZpcnN0IEkgZmVsdCwgDQorQ29tbW90aW9uIHN0cmFuZ2UhIGluIGFsbCBlbmpveW1lbnRzIGVsc2UgDQorU3VwZXJpb3VyIGFuZCB1bm1vdmVkOyBoZXJlIG9ubHkgd2VhayANCitBZ2FpbnN0IHRoZSBjaGFybSBvZiBCZWF1dHkncyBwb3dlcmZ1bCBnbGFuY2UuIA0KK09yIE5hdHVyZSBmYWlsZWQgaW4gbWUsIGFuZCBsZWZ0IHNvbWUgcGFydCANCitOb3QgcHJvb2YgZW5vdWdoIHN1Y2ggb2JqZWN0IHRvIHN1c3RhaW47IA0KK09yLCBmcm9tIG15IHNpZGUgc3ViZHVjdGluZywgdG9vayBwZXJoYXBzIA0KK01vcmUgdGhhbiBlbm91Z2g7IGF0IGxlYXN0IG9uIGhlciBiZXN0b3dlZCANCitUb28gbXVjaCBvZiBvcm5hbWVudCwgaW4gb3V0d2FyZCBzaG93IA0KK0VsYWJvcmF0ZSwgb2YgaW53YXJkIGxlc3MgZXhhY3QuIA0KK0ZvciB3ZWxsIEkgdW5kZXJzdGFuZCBpbiB0aGUgcHJpbWUgZW5kIA0KK09mIE5hdHVyZSBoZXIgdGhlIGluZmVyaW91ciwgaW4gdGhlIG1pbmQgDQorQW5kIGlud2FyZCBmYWN1bHRpZXMsIHdoaWNoIG1vc3QgZXhjZWw7IA0KK0luIG91dHdhcmQgYWxzbyBoZXIgcmVzZW1ibGluZyBsZXNzIA0KK0hpcyBpbWFnZSB3aG8gbWFkZSBib3RoLCBhbmQgbGVzcyBleHByZXNzaW5nIA0KK1RoZSBjaGFyYWN0ZXIgb2YgdGhhdCBkb21pbmlvbiBnaXZlbiANCitPJ2VyIG90aGVyIGNyZWF0dXJlczogIFlldCB3aGVuIEkgYXBwcm9hY2ggDQorSGVyIGxvdmVsaW5lc3MsIHNvIGFic29sdXRlIHNoZSBzZWVtcyANCitBbmQgaW4gaGVyc2VsZiBjb21wbGV0ZSwgc28gd2VsbCB0byBrbm93IA0KK0hlciBvd24sIHRoYXQgd2hhdCBzaGUgd2lsbHMgdG8gZG8gb3Igc2F5LCANCitTZWVtcyB3aXNlc3QsIHZpcnR1b3VzZXN0LCBkaXNjcmVldGVzdCwgYmVzdDogDQorQWxsIGhpZ2hlciBrbm93bGVkZ2UgaW4gaGVyIHByZXNlbmNlIGZhbGxzIA0KK0RlZ3JhZGVkOyAgV2lzZG9tIGluIGRpc2NvdXJzZSB3aXRoIGhlciANCitMb3NlcyBkaXNjb3VudGVuYW5jZWQsIGFuZCBsaWtlIEZvbGx5IHNob3dzOyANCitBdXRob3JpdHkgYW5kIFJlYXNvbiBvbiBoZXIgd2FpdCwgDQorQXMgb25lIGludGVuZGVkIGZpcnN0LCBub3QgYWZ0ZXIgbWFkZSANCitPY2Nhc2lvbmFsbHk7IGFuZCwgdG8gY29uc3VtbWF0ZSBhbGwsIA0KK0dyZWF0bmVzcyBvZiBtaW5kIGFuZCBOb2JsZW5lc3MgdGhlaXIgc2VhdCANCitCdWlsZCBpbiBoZXIgbG92ZWxpZXN0LCBhbmQgY3JlYXRlIGFuIGF3ZSANCitBYm91dCBoZXIsIGFzIGEgZ3VhcmQgYW5nZWxpY2sgcGxhY2VkLiANCitUbyB3aG9tIHRoZSBBbmdlbCB3aXRoIGNvbnRyYWN0ZWQgYnJvdy4gDQorQWNjdXNlIG5vdCBOYXR1cmUsIHNoZSBoYXRoIGRvbmUgaGVyIHBhcnQ7IA0KK0RvIHRob3UgYnV0IHRoaW5lOyBhbmQgYmUgbm90IGRpZmZpZGVudCANCitPZiBXaXNkb207IHNoZSBkZXNlcnRzIHRoZWUgbm90LCBpZiB0aG91IA0KK0Rpc21pc3Mgbm90IGhlciwgd2hlbiBtb3N0IHRob3UgbmVlZGVzdCBoZXIgbmlnaCwgDQorQnkgYXR0cmlidXRpbmcgb3Zlcm11Y2ggdG8gdGhpbmdzIA0KK0xlc3MgZXhjZWxsZW50LCBhcyB0aG91IHRoeXNlbGYgcGVyY2VpdmVzdC4gDQorRm9yLCB3aGF0IGFkbWlyZXN0IHRob3UsIHdoYXQgdHJhbnNwb3J0cyB0aGVlIHNvLCANCitBbiBvdXRzaWRlPyBmYWlyLCBubyBkb3VidCwgYW5kIHdvcnRoeSB3ZWxsIA0KK1RoeSBjaGVyaXNoaW5nLCB0aHkgaG9ub3VyaW5nLCBhbmQgdGh5IGxvdmU7IA0KK05vdCB0aHkgc3ViamVjdGlvbjogIFdlaWdoIHdpdGggaGVyIHRoeXNlbGY7IA0KK1RoZW4gdmFsdWU6ICBPZnQtdGltZXMgbm90aGluZyBwcm9maXRzIG1vcmUgDQorVGhhbiBzZWxmLWVzdGVlbSwgZ3JvdW5kZWQgb24ganVzdCBhbmQgcmlnaHQgDQorV2VsbCBtYW5hZ2VkOyBvZiB0aGF0IHNraWxsIHRoZSBtb3JlIHRob3Uga25vd2VzdCwgDQorVGhlIG1vcmUgc2hlIHdpbGwgYWNrbm93bGVkZ2UgdGhlZSBoZXIgaGVhZCwgDQorQW5kIHRvIHJlYWxpdGllcyB5aWVsZCBhbGwgaGVyIHNob3dzOiANCitNYWRlIHNvIGFkb3JuIGZvciB0aHkgZGVsaWdodCB0aGUgbW9yZSwgDQorU28gYXdmdWwsIHRoYXQgd2l0aCBob25vdXIgdGhvdSBtYXllc3QgbG92ZSANCitUaHkgbWF0ZSwgd2hvIHNlZXMgd2hlbiB0aG91IGFydCBzZWVuIGxlYXN0IHdpc2UuIA0KK0J1dCBpZiB0aGUgc2Vuc2Ugb2YgdG91Y2gsIHdoZXJlYnkgbWFua2luZCANCitJcyBwcm9wYWdhdGVkLCBzZWVtIHN1Y2ggZGVhciBkZWxpZ2h0IA0KK0JleW9uZCBhbGwgb3RoZXI7IHRoaW5rIHRoZSBzYW1lIHZvdWNoc2FmZWQgDQorVG8gY2F0dGxlIGFuZCBlYWNoIGJlYXN0OyB3aGljaCB3b3VsZCBub3QgYmUgDQorVG8gdGhlbSBtYWRlIGNvbW1vbiBhbmQgZGl2dWxnZWQsIGlmIGF1Z2h0IA0KK1RoZXJlaW4gZW5qb3llZCB3ZXJlIHdvcnRoeSB0byBzdWJkdWUgDQorVGhlIHNvdWwgb2YgbWFuLCBvciBwYXNzaW9uIGluIGhpbSBtb3ZlLiANCitXaGF0IGhpZ2hlciBpbiBoZXIgc29jaWV0eSB0aG91IGZpbmRlc3QgDQorQXR0cmFjdGl2ZSwgaHVtYW4sIHJhdGlvbmFsLCBsb3ZlIHN0aWxsOyANCitJbiBsb3ZpbmcgdGhvdSBkb3N0IHdlbGwsIGluIHBhc3Npb24gbm90LCANCitXaGVyZWluIHRydWUgbG92ZSBjb25zaXN0cyBub3Q6ICBMb3ZlIHJlZmluZXMgDQorVGhlIHRob3VnaHRzLCBhbmQgaGVhcnQgZW5sYXJnZXM7IGhhdGggaGlzIHNlYXQgDQorSW4gcmVhc29uLCBhbmQgaXMganVkaWNpb3VzOyBpcyB0aGUgc2NhbGUgDQorQnkgd2hpY2ggdG8gaGVhdmVubHkgbG92ZSB0aG91IG1heWVzdCBhc2NlbmQsIA0KK05vdCBzdW5rIGluIGNhcm5hbCBwbGVhc3VyZTsgZm9yIHdoaWNoIGNhdXNlLCANCitBbW9uZyB0aGUgYmVhc3RzIG5vIG1hdGUgZm9yIHRoZWUgd2FzIGZvdW5kLiANCitUbyB3aG9tIHRodXMsIGhhbGYgYWJhc2hlZCwgQWRhbSByZXBsaWVkLiANCitOZWl0aGVyIGhlciBvdXRzaWRlIGZvcm1lZCBzbyBmYWlyLCBub3IgYXVnaHQgDQorSW4gcHJvY3JlYXRpb24gY29tbW9uIHRvIGFsbCBraW5kcywgDQorKFRob3VnaCBoaWdoZXIgb2YgdGhlIGdlbmlhbCBiZWQgYnkgZmFyLCANCitBbmQgd2l0aCBteXN0ZXJpb3VzIHJldmVyZW5jZSBJIGRlZW0sKSANCitTbyBtdWNoIGRlbGlnaHRzIG1lLCBhcyB0aG9zZSBncmFjZWZ1bCBhY3RzLCANCitUaG9zZSB0aG91c2FuZCBkZWNlbmNpZXMsIHRoYXQgZGFpbHkgZmxvdyANCitGcm9tIGFsbCBoZXIgd29yZHMgYW5kIGFjdGlvbnMgbWl4ZWQgd2l0aCBsb3ZlIA0KK0FuZCBzd2VldCBjb21wbGlhbmNlLCB3aGljaCBkZWNsYXJlIHVuZmVpZ25lZCANCitVbmlvbiBvZiBtaW5kLCBvciBpbiB1cyBib3RoIG9uZSBzb3VsOyANCitIYXJtb255IHRvIGJlaG9sZCBpbiB3ZWRkZWQgcGFpciANCitNb3JlIGdyYXRlZnVsIHRoYW4gaGFybW9uaW91cyBzb3VuZCB0byB0aGUgZWFyLiANCitZZXQgdGhlc2Ugc3ViamVjdCBub3Q7IEkgdG8gdGhlZSBkaXNjbG9zZSANCitXaGF0IGlud2FyZCB0aGVuY2UgSSBmZWVsLCBub3QgdGhlcmVmb3JlIGZvaWxlZCwgDQorV2hvIG1lZXQgd2l0aCB2YXJpb3VzIG9iamVjdHMsIGZyb20gdGhlIHNlbnNlIA0KK1ZhcmlvdXNseSByZXByZXNlbnRpbmc7IHlldCwgc3RpbGwgZnJlZSwgDQorQXBwcm92ZSB0aGUgYmVzdCwgYW5kIGZvbGxvdyB3aGF0IEkgYXBwcm92ZS4gDQorVG8gbG92ZSwgdGhvdSBibGFtZXN0IG1lIG5vdDsgZm9yIExvdmUsIHRob3Ugc2F5ZXN0LCANCitMZWFkcyB1cCB0byBIZWF2ZW4sIGlzIGJvdGggdGhlIHdheSBhbmQgZ3VpZGU7IA0KK0JlYXIgd2l0aCBtZSB0aGVuLCBpZiBsYXdmdWwgd2hhdCBJIGFzazogDQorTG92ZSBub3QgdGhlIGhlYXZlbmx5IFNwaXJpdHMsIGFuZCBob3cgdGhlaXIgbG92ZSANCitFeHByZXNzIHRoZXk/IGJ5IGxvb2tzIG9ubHk/IG9yIGRvIHRoZXkgbWl4IA0KK0lycmFkaWFuY2UsIHZpcnR1YWwgb3IgaW1tZWRpYXRlIHRvdWNoPyANCitUbyB3aG9tIHRoZSBBbmdlbCwgd2l0aCBhIHNtaWxlIHRoYXQgZ2xvd2VkIA0KK0NlbGVzdGlhbCByb3N5IHJlZCwgTG92ZSdzIHByb3BlciBodWUsIA0KK0Fuc3dlcmVkLiAgTGV0IGl0IHN1ZmZpY2UgdGhlZSB0aGF0IHRob3Uga25vd2VzdCANCitVcyBoYXBweSwgYW5kIHdpdGhvdXQgbG92ZSBubyBoYXBwaW5lc3MuIA0KK1doYXRldmVyIHB1cmUgdGhvdSBpbiB0aGUgYm9keSBlbmpveWVzdCwgDQorKEFuZCBwdXJlIHRob3Ugd2VydCBjcmVhdGVkKSB3ZSBlbmpveSANCitJbiBlbWluZW5jZTsgYW5kIG9ic3RhY2xlIGZpbmQgbm9uZSANCitPZiBtZW1icmFuZSwgam9pbnQsIG9yIGxpbWIsIGV4Y2x1c2l2ZSBiYXJzOyANCitFYXNpZXIgdGhhbiBhaXIgd2l0aCBhaXIsIGlmIFNwaXJpdHMgZW1icmFjZSwgDQorVG90YWwgdGhleSBtaXgsIHVuaW9uIG9mIHB1cmUgd2l0aCBwdXJlIA0KK0Rlc2lyaW5nLCBub3IgcmVzdHJhaW5lZCBjb252ZXlhbmNlIG5lZWQsIA0KK0FzIGZsZXNoIHRvIG1peCB3aXRoIGZsZXNoLCBvciBzb3VsIHdpdGggc291bC4gDQorQnV0IEkgY2FuIG5vdyBubyBtb3JlOyB0aGUgcGFydGluZyBzdW4gDQorQmV5b25kIHRoZSBFYXJ0aCdzIGdyZWVuIENhcGUgYW5kIHZlcmRhbnQgSXNsZXMgDQorSGVzcGVyaWFuIHNldHMsIG15IHNpZ25hbCB0byBkZXBhcnQuIA0KK0JlIHN0cm9uZywgbGl2ZSBoYXBweSwgYW5kIGxvdmUhICBCdXQsIGZpcnN0IG9mIGFsbCwgDQorSGltLCB3aG9tIHRvIGxvdmUgaXMgdG8gb2JleSwgYW5kIGtlZXAgDQorSGlzIGdyZWF0IGNvbW1hbmQ7IHRha2UgaGVlZCBsZXN0IHBhc3Npb24gc3dheSANCitUaHkganVkZ2VtZW50IHRvIGRvIGF1Z2h0LCB3aGljaCBlbHNlIGZyZWUgd2lsbCANCitXb3VsZCBub3QgYWRtaXQ6IHRoaW5lLCBhbmQgb2YgYWxsIHRoeSBzb25zLCANCitUaGUgd2VhbCBvciB3b2UgaW4gdGhlZSBpcyBwbGFjZWQ7IGJld2FyZSEgDQorSSBpbiB0aHkgcGVyc2V2ZXJpbmcgc2hhbGwgcmVqb2ljZSwgDQorQW5kIGFsbCB0aGUgQmxlc3Q6ICBTdGFuZCBmYXN0O3RvIHN0YW5kIG9yIGZhbGwgDQorRnJlZSBpbiB0aGluZSBvd24gYXJiaXRyZW1lbnQgaXQgbGllcy4gDQorUGVyZmVjdCB3aXRoaW4sIG5vIG91dHdhcmQgYWlkIHJlcXVpcmU7IA0KK0FuZCBhbGwgdGVtcHRhdGlvbiB0byB0cmFuc2dyZXNzIHJlcGVsLiANCitTbyBzYXlpbmcsIGhlIGFyb3NlOyB3aG9tIEFkYW0gdGh1cyANCitGb2xsb3dlZCB3aXRoIGJlbmVkaWN0aW9uLiAgU2luY2UgdG8gcGFydCwgDQorR28sIGhlYXZlbmx5IGd1ZXN0LCBldGhlcmVhbCBNZXNzZW5nZXIsIA0KK1NlbnQgZnJvbSB3aG9zZSBzb3ZyYW4gZ29vZG5lc3MgSSBhZG9yZSEgDQorR2VudGxlIHRvIG1lIGFuZCBhZmZhYmxlIGhhdGggYmVlbiANCitUaHkgY29uZGVzY2Vuc2lvbiwgYW5kIHNoYWxsIGJlIGhvbm91cmVkIGV2ZXIgDQorV2l0aCBncmF0ZWZ1bCBtZW1vcnk6ICBUaG91IHRvIG1hbmtpbmQgDQorQmUgZ29vZCBhbmQgZnJpZW5kbHkgc3RpbGwsIGFuZCBvZnQgcmV0dXJuISANCitTbyBwYXJ0ZWQgdGhleTsgdGhlIEFuZ2VsIHVwIHRvIEhlYXZlbiANCitGcm9tIHRoZSB0aGljayBzaGFkZSwgYW5kIEFkYW0gdG8gaGlzIGJvd2VyLiANCisgDQorIA0KKyANCitCb29rIElYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgDQorTm8gbW9yZSBvZiB0YWxrIHdoZXJlIEdvZCBvciBBbmdlbCBndWVzdCANCitXaXRoIE1hbiwgYXMgd2l0aCBoaXMgZnJpZW5kLCBmYW1pbGlhciB1cydkLCANCitUbyBzaXQgaW5kdWxnZW50LCBhbmQgd2l0aCBoaW0gcGFydGFrZSANCitSdXJhbCByZXBhc3Q7IHBlcm1pdHRpbmcgaGltIHRoZSB3aGlsZSANCitWZW5pYWwgZGlzY291cnNlIHVuYmxhbSdkLiBJIG5vdyBtdXN0IGNoYW5nZSANCitUaG9zZSBub3RlcyB0byB0cmFnaWNrOyBmb3VsIGRpc3RydXN0LCBhbmQgYnJlYWNoIA0KK0Rpc2xveWFsIG9uIHRoZSBwYXJ0IG9mIE1hbiwgcmV2b2x0LCANCitBbmQgZGlzb2JlZGllbmNlOiBvbiB0aGUgcGFydCBvZiBIZWF2ZW4gDQorTm93IGFsaWVuYXRlZCwgZGlzdGFuY2UgYW5kIGRpc3Rhc3RlLCANCitBbmdlciBhbmQganVzdCByZWJ1a2UsIGFuZCBqdWRnZW1lbnQgZ2l2ZW4sIA0KK1RoYXQgYnJvdWdodCBpbnRvIHRoaXMgd29ybGQgYSB3b3JsZCBvZiB3b2UsIA0KK1NpbiBhbmQgaGVyIHNoYWRvdyBEZWF0aCwgYW5kIE1pc2VyeSANCitEZWF0aCdzIGhhcmJpbmdlcjogU2FkIHRhbGsheWV0IGFyZ3VtZW50IA0KK05vdCBsZXNzIGJ1dCBtb3JlIGhlcm9pY2sgdGhhbiB0aGUgd3JhdGggDQorT2Ygc3Rlcm4gQWNoaWxsZXMgb24gaGlzIGZvZSBwdXJzdWVkIA0KK1RocmljZSBmdWdpdGl2ZSBhYm91dCBUcm95IHdhbGw7IG9yIHJhZ2UgDQorT2YgVHVybnVzIGZvciBMYXZpbmlhIGRpc2VzcG91cydkOyANCitPciBOZXB0dW5lJ3MgaXJlLCBvciBKdW5vJ3MsIHRoYXQgc28gbG9uZyANCitQZXJwbGV4ZWQgdGhlIEdyZWVrLCBhbmQgQ3l0aGVyZWEncyBzb246ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgICAwMDQ4MjEyOSAgDQorSWYgYW5zd2VyYWJsZSBzdHlsZSBJIGNhbiBvYnRhaW4gDQorT2YgbXkgY2VsZXN0aWFsIHBhdHJvbmVzcywgd2hvIGRlaWducyANCitIZXIgbmlnaHRseSB2aXNpdGF0aW9uIHVuaW1wbG9yJ2QsIA0KK0FuZCBkaWN0YXRlcyB0byBtZSBzbHVtYmVyaW5nOyBvciBpbnNwaXJlcyANCitFYXN5IG15IHVucHJlbWVkaXRhdGVkIHZlcnNlOiANCitTaW5jZSBmaXJzdCB0aGlzIHN1YmplY3QgZm9yIGhlcm9pY2sgc29uZyANCitQbGVhcydkIG1lIGxvbmcgY2hvb3NpbmcsIGFuZCBiZWdpbm5pbmcgbGF0ZTsgDQorTm90IHNlZHVsb3VzIGJ5IG5hdHVyZSB0byBpbmRpdGUgDQorV2FycywgaGl0aGVydG8gdGhlIG9ubHkgYXJndW1lbnQgDQorSGVyb2ljayBkZWVtJ2QgY2hpZWYgbWFzdGVyeSB0byBkaXNzZWN0IA0KK1dpdGggbG9uZyBhbmQgdGVkaW91cyBoYXZvY2sgZmFibGVkIGtuaWdodHMgDQorSW4gYmF0dGxlcyBmZWlnbidkOyB0aGUgYmV0dGVyIGZvcnRpdHVkZSANCitPZiBwYXRpZW5jZSBhbmQgaGVyb2ljayBtYXJ0eXJkb20gDQorVW5zdW5nOyBvciB0byBkZXNjcmliZSByYWNlcyBhbmQgZ2FtZXMsIA0KK09yIHRpbHRpbmcgZnVybml0dXJlLCBpbWJsYXpvbidkIHNoaWVsZHMsIA0KK0ltcHJlc3NlcyBxdWFpbnQsIGNhcGFyaXNvbnMgYW5kIHN0ZWVkcywgDQorQmFzZXMgYW5kIHRpbnNlbCB0cmFwcGluZ3MsIGdvcmdlb3VzIGtuaWdodHMgDQorQXQgam91c3QgYW5kIHRvdXJuYW1lbnQ7IHRoZW4gbWFyc2hhbGwnZCBmZWFzdCANCitTZXJ2J2QgdXAgaW4gaGFsbCB3aXRoIHNld2VycyBhbmQgc2VuZXNoYWxzOyANCitUaGUgc2tpbGwgb2YgYXJ0aWZpY2Ugb3Igb2ZmaWNlIG1lYW4sIA0KK05vdCB0aGF0IHdoaWNoIGp1c3RseSBnaXZlcyBoZXJvaWNrIG5hbWUgDQorVG8gcGVyc29uLCBvciB0byBwb2VtLiAgTWUsIG9mIHRoZXNlIA0KK05vciBza2lsbCdkIG5vciBzdHVkaW91cywgaGlnaGVyIGFyZ3VtZW50IA0KK1JlbWFpbnM7IHN1ZmZpY2llbnQgb2YgaXRzZWxmIHRvIHJhaXNlIA0KK1RoYXQgbmFtZSwgdW5sZXNzIGFuIGFnZSB0b28gbGF0ZSwgb3IgY29sZCANCitDbGltYXRlLCBvciB5ZWFycywgZGFtcCBteSBpbnRlbmRlZCB3aW5nIA0KK0RlcHJlc3MnZDsgYW5kIG11Y2ggdGhleSBtYXksIGlmIGFsbCBiZSBtaW5lLCANCitOb3QgaGVycywgd2hvIGJyaW5ncyBpdCBuaWdodGx5IHRvIG15IGVhci4gDQorVGhlIHN1biB3YXMgc3VuaywgYW5kIGFmdGVyIGhpbSB0aGUgc3RhciANCitPZiBIZXNwZXJ1cywgd2hvc2Ugb2ZmaWNlIGlzIHRvIGJyaW5nIA0KK1R3aWxpZ2h0IHVwb24gdGhlIGVhcnRoLCBzaG9ydCBhcmJpdGVyIA0KKyJ0d2l4dCBkYXkgYW5kIG5pZ2h0LCBhbmQgbm93IGZyb20gZW5kIHRvIGVuZCANCitOaWdodCdzIGhlbWlzcGhlcmUgaGFkIHZlaWwnZCB0aGUgaG9yaXpvbiByb3VuZDogDQorV2hlbiBzYXRhbiwgd2hvIGxhdGUgZmxlZCBiZWZvcmUgdGhlIHRocmVhdHMgDQorT2YgR2FicmllbCBvdXQgb2YgRWRlbiwgbm93IGltcHJvdidkIA0KK0luIG1lZGl0YXRlZCBmcmF1ZCBhbmQgbWFsaWNlLCBiZW50IA0KK09uIE1hbidzIGRlc3RydWN0aW9uLCBtYXVncmUgd2hhdCBtaWdodCBoYXAgDQorT2YgaGVhdmllciBvbiBoaW1zZWxmLCBmZWFybGVzcyByZXR1cm5lZCANCitGcm9tIGNvbXBhc3NpbmcgdGhlIGVhcnRoOyBjYXV0aW91cyBvZiBkYXksIA0KK1NpbmNlIFVyaWVsLCByZWdlbnQgb2YgdGhlIHN1biwgZGVzY3JpZWQgDQorSGlzIGVudHJhbmNlLCBhbmQgZm9yZXdvcm5lZCB0aGUgQ2hlcnViaW0gDQorVGhhdCBrZXB0IHRoZWlyIHdhdGNoOyB0aGVuY2UgZnVsbCBvZiBhbmd1aXNoIGRyaXZlbiwgDQorVGhlIHNwYWNlIG9mIHNldmVuIGNvbnRpbnVlZCBuaWdodHMgaGUgcm9kZSANCitXaXRoIGRhcmtuZXNzOyB0aHJpY2UgdGhlIGVxdWlub2N0aWFsIGxpbmUgDQorSGUgY2lyY2xlZDsgZm91ciB0aW1lcyBjcm9zc2VkIHRoZSBjYXIgb2YgbmlnaHQgDQorRnJvbSBwb2xlIHRvIHBvbGUsIHRyYXZlcnNpbmcgZWFjaCBjb2x1cmU7IA0KK09uIHRoZSBlaWdodGggcmV0dXJuZWQ7IGFuZCwgb24gdGhlIGNvYXN0IGF2ZXJzZSANCitGcm9tIGVudHJhbmNlIG9yIENoZXJ1YmljayB3YXRjaCwgYnkgc3RlYWx0aCANCitGb3VuZCB1bnN1c3BlY3RlZCB3YXkuICBUaGVyZSB3YXMgYSBwbGFjZSwgDQorTm93IG5vdCwgdGhvdWdoIHNpbiwgbm90IHRpbWUsIGZpcnN0IHdyb3VnaHQgdGhlIGNoYW5nZSwgDQorV2hlcmUgVGlncmlzLCBhdCB0aGUgZm9vdCBvZiBQYXJhZGlzZSwgDQorSW50byBhIGd1bGYgc2hvdCB1bmRlciBncm91bmQsIHRpbGwgcGFydCANCitSb3NlIHVwIGEgZm91bnRhaW4gYnkgdGhlIHRyZWUgb2YgbGlmZTogDQorSW4gd2l0aCB0aGUgcml2ZXIgc3VuaywgYW5kIHdpdGggaXQgcm9zZSANCitTYXRhbiwgaW52b2x2ZWQgaW4gcmlzaW5nIG1pc3Q7IHRoZW4gc291Z2h0IA0KK1doZXJlIHRvIGxpZSBoaWQ7IHNlYSBoZSBoYWQgc2VhcmNoZWQsIGFuZCBsYW5kLCANCitGcm9tIEVkZW4gb3ZlciBQb250dXMgYW5kIHRoZSBwb29sIA0KK01hZW90aXMsIHVwIGJleW9uZCB0aGUgcml2ZXIgT2I7IA0KK0Rvd253YXJkIGFzIGZhciBhbnRhcmN0aWNrOyBhbmQgaW4gbGVuZ3RoLCANCitXZXN0IGZyb20gT3JvbnRlcyB0byB0aGUgb2NlYW4gYmFycmVkIA0KK0F0IERhcmllbiA7IHRoZW5jZSB0byB0aGUgbGFuZCB3aGVyZSBmbG93cyANCitHYW5nZXMgYW5kIEluZHVzOiBUaHVzIHRoZSBvcmIgaGUgcm9hbWVkIA0KK1dpdGggbmFycm93IHNlYXJjaDsgYW5kIHdpdGggaW5zcGVjdGlvbiBkZWVwIA0KK0NvbnNpZGVyZWQgZXZlcnkgY3JlYXR1cmUsIHdoaWNoIG9mIGFsbCANCitNb3N0IG9wcG9ydHVuZSBtaWdodCBzZXJ2ZSBoaXMgd2lsZXM7IGFuZCBmb3VuZCANCitUaGUgU2VycGVudCBzdWJ0bGVzdCBiZWFzdCBvZiBhbGwgdGhlIGZpZWxkLiANCitIaW0gYWZ0ZXIgbG9uZyBkZWJhdGUsIGlycmVzb2x1dGUgDQorT2YgdGhvdWdodHMgcmV2b2x2ZWQsIGhpcyBmaW5hbCBzZW50ZW5jZSBjaG9zZSANCitGaXQgdmVzc2VsLCBmaXR0ZXN0IGltcCBvZiBmcmF1ZCwgaW4gd2hvbSANCitUbyBlbnRlciwgYW5kIGhpcyBkYXJrIHN1Z2dlc3Rpb25zIGhpZGUgDQorRnJvbSBzaGFycGVzdCBzaWdodDogZm9yLCBpbiB0aGUgd2lseSBzbmFrZSANCitXaGF0ZXZlciBzbGVpZ2h0cywgbm9uZSB3b3VsZCBzdXNwaWNpb3VzIG1hcmssIA0KK0FzIGZyb20gaGlzIHdpdCBhbmQgbmF0aXZlIHN1YnRsZXR5IA0KK1Byb2NlZWRpbmc7IHdoaWNoLCBpbiBvdGhlciBiZWFzdHMgb2JzZXJ2ZWQsIA0KK0RvdWJ0IG1pZ2h0IGJlZ2V0IG9mIGRpYWJvbGljayBwb3dlciANCitBY3RpdmUgd2l0aGluLCBiZXlvbmQgdGhlIHNlbnNlIG9mIGJydXRlLiANCitUaHVzIGhlIHJlc29sdmVkLCBidXQgZmlyc3QgZnJvbSBpbndhcmQgZ3JpZWYgDQorSGlzIGJ1cnN0aW5nIHBhc3Npb24gaW50byBwbGFpbnRzIHRodXMgcG91cmVkLiANCitNb3JlIGp1c3RseSwgc2VhdCB3b3J0aGllciBvZiBHb2RzLCBhcyBidWlsdCANCitXaXRoIHNlY29uZCB0aG91Z2h0cywgcmVmb3JtaW5nIHdoYXQgd2FzIG9sZCEgDQorTyBFYXJ0aCwgaG93IGxpa2UgdG8gSGVhdmVuLCBpZiBub3QgcHJlZmVycmVkIA0KK0ZvciB3aGF0IEdvZCwgYWZ0ZXIgYmV0dGVyLCB3b3JzZSB3b3VsZCBidWlsZD8gDQorVGVycmVzdHJpYWwgSGVhdmVuLCBkYW5jZWQgcm91bmQgYnkgb3RoZXIgSGVhdmVucyANCitUaGF0IHNoaW5lLCB5ZXQgYmVhciB0aGVpciBicmlnaHQgb2ZmaWNpb3VzIGxhbXBzLCANCitMaWdodCBhYm92ZSBsaWdodCwgZm9yIHRoZWUgYWxvbmUsIGFzIHNlZW1zLCANCitJbiB0aGVlIGNvbmNlbnRyaW5nIGFsbCB0aGVpciBwcmVjaW91cyBiZWFtcyANCitPZiBzYWNyZWQgaW5mbHVlbmNlISAgQXMgR29kIGluIEhlYXZlbiANCitJcyBjZW50ZXIsIHlldCBleHRlbmRzIHRvIGFsbDsgc28gdGhvdSwgDQorQ2VudHJpbmcsIHJlY2VpdmVzdCBmcm9tIGFsbCB0aG9zZSBvcmJzOiBpbiB0aGVlLCANCitOb3QgaW4gdGhlbXNlbHZlcywgYWxsIHRoZWlyIGtub3duIHZpcnR1ZSBhcHBlYXJzIA0KK1Byb2R1Y3RpdmUgaW4gaGVyYiwgcGxhbnQsIGFuZCBub2JsZXIgYmlydGggDQorT2YgY3JlYXR1cmVzIGFuaW1hdGUgd2l0aCBncmFkdWFsIGxpZmUgDQorT2YgZ3Jvd3RoLCBzZW5zZSwgcmVhc29uLCBhbGwgc3VtbWVkIHVwIGluIE1hbi4gDQorV2l0aCB3aGF0IGRlbGlnaHQgY291bGQgSSBoYXZlIHdhbGtlZCB0aGVlIHJvdW5kLCANCitJZiBJIGNvdWxkIGpveSBpbiBhdWdodCwgc3dlZXQgaW50ZXJjaGFuZ2UgDQorT2YgaGlsbCwgYW5kIHZhbGxleSwgcml2ZXJzLCB3b29kcywgYW5kIHBsYWlucywgDQorTm93IGxhbmQsIG5vdyBzZWEgYW5kIHNob3JlcyB3aXRoIGZvcmVzdCBjcm93bmVkLCANCitSb2NrcywgZGVucywgYW5kIGNhdmVzISAgQnV0IEkgaW4gbm9uZSBvZiB0aGVzZSANCitGaW5kIHBsYWNlIG9yIHJlZnVnZTsgYW5kIHRoZSBtb3JlIEkgc2VlIA0KK1BsZWFzdXJlcyBhYm91dCBtZSwgc28gbXVjaCBtb3JlIEkgZmVlbCANCitUb3JtZW50IHdpdGhpbiBtZSwgYXMgZnJvbSB0aGUgaGF0ZWZ1bCBzaWVnZSANCitPZiBjb250cmFyaWVzOiBhbGwgZ29vZCB0byBtZSBiZWNvbWVzIA0KK0JhbmUsIGFuZCBpbiBIZWF2ZW4gbXVjaCB3b3JzZSB3b3VsZCBiZSBteSBzdGF0ZS4gDQorQnV0IG5laXRoZXIgaGVyZSBzZWVrIEksIG5vIG5vciBpbiBIZWF2ZW4gDQorVG8gZHdlbGwsIHVubGVzcyBieSBtYXN0ZXJpbmcgSGVhdmVuJ3MgU3VwcmVtZTsgDQorTm9yIGhvcGUgdG8gYmUgbXlzZWxmIGxlc3MgbWlzZXJhYmxlIA0KK0J5IHdoYXQgSSBzZWVrLCBidXQgb3RoZXJzIHRvIG1ha2Ugc3VjaCANCitBcyBJLCB0aG91Z2ggdGhlcmVieSB3b3JzZSB0byBtZSByZWRvdW5kOiANCitGb3Igb25seSBpbiBkZXN0cm95aW5nIEkgZmluZCBlYXNlIA0KK1RvIG15IHJlbGVudGxlc3MgdGhvdWdodHM7IGFuZCwgaGltIGRlc3Ryb3llZCwgDQorT3Igd29uIHRvIHdoYXQgbWF5IHdvcmsgaGlzIHV0dGVyIGxvc3MsIA0KK0ZvciB3aG9tIGFsbCB0aGlzIHdhcyBtYWRlLCBhbGwgdGhpcyB3aWxsIHNvb24gDQorRm9sbG93LCBhcyB0byBoaW0gbGlua2VkIGluIHdlYWwgb3Igd29lOyANCitJbiB3b2UgdGhlbjsgdGhhdCBkZXN0cnVjdGlvbiB3aWRlIG1heSByYW5nZTogDQorVG8gbWUgc2hhbGwgYmUgdGhlIGdsb3J5IHNvbGUgYW1vbmcgDQorVGhlIGluZmVybmFsIFBvd2VycywgaW4gb25lIGRheSB0byBoYXZlIG1hcnJlZCANCitXaGF0IGhlLCBBbG1pZ2h0eSBzdHlsZWQsIHNpeCBuaWdodHMgYW5kIGRheXMgDQorQ29udGludWVkIG1ha2luZzsgYW5kIHdobyBrbm93cyBob3cgbG9uZyANCitCZWZvcmUgaGFkIGJlZW4gY29udHJpdmluZz8gdGhvdWdoIHBlcmhhcHMgDQorTm90IGxvbmdlciB0aGFuIHNpbmNlIEksIGluIG9uZSBuaWdodCwgZnJlZWQgDQorRnJvbSBzZXJ2aXR1ZGUgaW5nbG9yaW91cyB3ZWxsIG5pZ2ggaGFsZiANCitUaGUgYW5nZWxpY2sgbmFtZSwgYW5kIHRoaW5uZXIgbGVmdCB0aGUgdGhyb25nIA0KK09mIGhpcyBhZG9yZXJzOiBIZSwgdG8gYmUgYXZlbmdlZCwgDQorQW5kIHRvIHJlcGFpciBoaXMgbnVtYmVycyB0aHVzIGltcGFpcmVkLCANCitXaGV0aGVyIHN1Y2ggdmlydHVlIHNwZW50IG9mIG9sZCBub3cgZmFpbGVkIA0KK01vcmUgQW5nZWxzIHRvIGNyZWF0ZSwgaWYgdGhleSBhdCBsZWFzdCANCitBcmUgaGlzIGNyZWF0ZWQsIG9yLCB0byBzcGl0ZSB1cyBtb3JlLCANCitEZXRlcm1pbmVkIHRvIGFkdmFuY2UgaW50byBvdXIgcm9vbSANCitBIGNyZWF0dXJlIGZvcm1lZCBvZiBlYXJ0aCwgYW5kIGhpbSBlbmRvdywgDQorRXhhbHRlZCBmcm9tIHNvIGJhc2Ugb3JpZ2luYWwsIA0KK1dpdGggaGVhdmVubHkgc3BvaWxzLCBvdXIgc3BvaWxzOiBXaGF0IGhlIGRlY3JlZWQsIA0KK0hlIGVmZmVjdGVkOyBNYW4gaGUgbWFkZSwgYW5kIGZvciBoaW0gYnVpbHQgDQorTWFnbmlmaWNlbnQgdGhpcyB3b3JsZCwgYW5kIGVhcnRoIGhpcyBzZWF0LCANCitIaW0gbG9yZCBwcm9ub3VuY2VkOyBhbmQsIE8gaW5kaWduaXR5ISANCitTdWJqZWN0ZWQgdG8gaGlzIHNlcnZpY2UgYW5nZWwtd2luZ3MsIA0KK0FuZCBmbGFtaW5nIG1pbmlzdGVycyB0byB3YXRjaCBhbmQgdGVuZCANCitUaGVpciBlYXJ0aGx5IGNoYXJnZTogT2YgdGhlc2UgdGhlIHZpZ2lsYW5jZSANCitJIGRyZWFkOyBhbmQsIHRvIGVsdWRlLCB0aHVzIHdyYXB0IGluIG1pc3QgDQorT2YgbWlkbmlnaHQgdmFwb3VyIGdsaWRlIG9ic2N1cmUsIGFuZCBwcnkgDQorSW4gZXZlcnkgYnVzaCBhbmQgYnJha2UsIHdoZXJlIGhhcCBtYXkgZmluZCANCitUaGUgc2VycGVudCBzbGVlcGluZzsgaW4gd2hvc2UgbWF6eSBmb2xkcyANCitUbyBoaWRlIG1lLCBhbmQgdGhlIGRhcmsgaW50ZW50IEkgYnJpbmcuIA0KK08gZm91bCBkZXNjZW50ISB0aGF0IEksIHdobyBlcnN0IGNvbnRlbmRlZCANCitXaXRoIEdvZHMgdG8gc2l0IHRoZSBoaWdoZXN0LCBhbSBub3cgY29uc3RyYWluZWQgDQorSW50byBhIGJlYXN0OyBhbmQsIG1peGVkIHdpdGggYmVzdGlhbCBzbGltZSwgDQorVGhpcyBlc3NlbmNlIHRvIGluY2FybmF0ZSBhbmQgaW1icnV0ZSwgDQorVGhhdCB0byB0aGUgaGlnaHRoIG9mIERlaXR5IGFzcGlyZWQhIA0KK0J1dCB3aGF0IHdpbGwgbm90IGFtYml0aW9uIGFuZCByZXZlbmdlIA0KK0Rlc2NlbmQgdG8/ICBXaG8gYXNwaXJlcywgbXVzdCBkb3duIGFzIGxvdyANCitBcyBoaWdoIGhlIHNvYXJlZDsgb2Jub3hpb3VzLCBmaXJzdCBvciBsYXN0LCANCitUbyBiYXNlc3QgdGhpbmdzLiAgUmV2ZW5nZSwgYXQgZmlyc3QgdGhvdWdoIHN3ZWV0LCANCitCaXR0ZXIgZXJlIGxvbmcsIGJhY2sgb24gaXRzZWxmIHJlY29pbHM6IA0KK0xldCBpdDsgSSByZWNrIG5vdCwgc28gaXQgbGlnaHQgd2VsbCBhaW1lZCwgDQorU2luY2UgaGlnaGVyIEkgZmFsbCBzaG9ydCwgb24gaGltIHdobyBuZXh0IA0KK1Byb3Zva2VzIG15IGVudnksIHRoaXMgbmV3IGZhdm91cml0ZSANCitPZiBIZWF2ZW4sIHRoaXMgbWFuIG9mIGNsYXksIHNvbiBvZiBkZXNwaXRlLCANCitXaG9tLCB1cyB0aGUgbW9yZSB0byBzcGl0ZSwgaGlzIE1ha2VyIHJhaXNlZCANCitGcm9tIGR1c3Q6IFNwaXRlIHRoZW4gd2l0aCBzcGl0ZSBpcyBiZXN0IHJlcGFpZC4gDQorU28gc2F5aW5nLCB0aHJvdWdoIGVhY2ggdGhpY2tldCBkYW5rIG9yIGRyeSwgDQorTGlrZSBhIGJsYWNrIG1pc3QgbG93LWNyZWVwaW5nLCBoZSBoZWxkIG9uIA0KK0hpcyBtaWRuaWdodC1zZWFyY2gsIHdoZXJlIHNvb25lc3QgaGUgbWlnaHQgZmluZCANCitUaGUgc2VycGVudDsgaGltIGZhc3Qtc2xlZXBpbmcgc29vbiBoZSBmb3VuZCANCitJbiBsYWJ5cmludGggb2YgbWFueSBhIHJvdW5kIHNlbGYtcm9sbGVkLCANCitIaXMgaGVhZCB0aGUgbWlkc3QsIHdlbGwgc3RvcmVkIHdpdGggc3VidGlsZSB3aWxlczogDQorTm90IHlldCBpbiBob3JyaWQgc2hhZGUgb3IgZGlzbWFsIGRlbiwgDQorTm9yIG5vY2VudCB5ZXQ7IGJ1dCwgb24gdGhlIGdyYXNzeSBoZXJiLCANCitGZWFybGVzcyB1bmZlYXJlZCBoZSBzbGVwdDogaW4gYXQgaGlzIG1vdXRoIA0KK1RoZSBEZXZpbCBlbnRlcmVkOyBhbmQgaGlzIGJydXRhbCBzZW5zZSwgDQorSW4gaGVhcnQgb3IgaGVhZCwgcG9zc2Vzc2luZywgc29vbiBpbnNwaXJlZCANCitXaXRoIGFjdCBpbnRlbGxpZ2VudGlhbDsgYnV0IGhpcyBzbGVlcCANCitEaXN0dXJiZWQgbm90LCB3YWl0aW5nIGNsb3NlIHRoZSBhcHByb2FjaCBvZiBtb3JuLiANCitOb3csIHdoZW4gYXMgc2FjcmVkIGxpZ2h0IGJlZ2FuIHRvIGRhd24gDQorSW4gRWRlbiBvbiB0aGUgaHVtaWQgZmxvd2VycywgdGhhdCBicmVhdGhlZCANCitUaGVpciBtb3JuaW5nIGluY2Vuc2UsIHdoZW4gYWxsIHRoaW5ncywgdGhhdCBicmVhdGhlLCANCitGcm9tIHRoZSBFYXJ0aCdzIGdyZWF0IGFsdGFyIHNlbmQgdXAgc2lsZW50IHByYWlzZSANCitUbyB0aGUgQ3JlYXRvciwgYW5kIGhpcyBub3N0cmlscyBmaWxsIA0KK1dpdGggZ3JhdGVmdWwgc21lbGwsIGZvcnRoIGNhbWUgdGhlIGh1bWFuIHBhaXIsIA0KK0FuZCBqb2luZWQgdGhlaXIgdm9jYWwgd29yc2hpcCB0byB0aGUgcXVpcmUgDQorT2YgY3JlYXR1cmVzIHdhbnRpbmcgdm9pY2U7IHRoYXQgZG9uZSwgcGFydGFrZSANCitUaGUgc2Vhc29uIHByaW1lIGZvciBzd2VldGVzdCBzY2VudHMgYW5kIGFpcnM6IA0KK1RoZW4gY29tbXVuZSwgaG93IHRoYXQgZGF5IHRoZXkgYmVzdCBtYXkgcGx5IA0KK1RoZWlyIGdyb3dpbmcgd29yazogZm9yIG11Y2ggdGhlaXIgd29yayBvdXQtZ3JldyANCitUaGUgaGFuZHMnIGRpc3BhdGNoIG9mIHR3byBnYXJkZW5pbmcgc28gd2lkZSwgDQorQW5kIEV2ZSBmaXJzdCB0byBoZXIgaHVzYmFuZCB0aHVzIGJlZ2FuLiANCitBZGFtLCB3ZWxsIG1heSB3ZSBsYWJvdXIgc3RpbGwgdG8gZHJlc3MgDQorVGhpcyBnYXJkZW4sIHN0aWxsIHRvIHRlbmQgcGxhbnQsIGhlcmIsIGFuZCBmbG93ZXIsIA0KK091ciBwbGVhc2FudCB0YXNrIGVuam9pbmVkOyBidXQsIHRpbGwgbW9yZSBoYW5kcyANCitBaWQgdXMsIHRoZSB3b3JrIHVuZGVyIG91ciBsYWJvdXIgZ3Jvd3MsIA0KK0x1eHVyaW91cyBieSByZXN0cmFpbnQ7IHdoYXQgd2UgYnkgZGF5IA0KK0xvcCBvdmVyZ3Jvd24sIG9yIHBydW5lLCBvciBwcm9wLCBvciBiaW5kLCANCitPbmUgbmlnaHQgb3IgdHdvIHdpdGggd2FudG9uIGdyb3d0aCBkZXJpZGVzIA0KK1RlbmRpbmcgdG8gd2lsZC4gIFRob3UgdGhlcmVmb3JlIG5vdyBhZHZpc2UsIA0KK09yIGJlYXIgd2hhdCB0byBteSBtaW5kIGZpcnN0IHRob3VnaHRzIHByZXNlbnQ6IA0KK0xldCB1cyBkaXZpZGUgb3VyIGxhYm91cnM7IHRob3UsIHdoZXJlIGNob2ljZSANCitMZWFkcyB0aGVlLCBvciB3aGVyZSBtb3N0IG5lZWRzLCB3aGV0aGVyIHRvIHdpbmQgDQorVGhlIHdvb2RiaW5lIHJvdW5kIHRoaXMgYXJib3VyLCBvciBkaXJlY3QgDQorVGhlIGNsYXNwaW5nIGl2eSB3aGVyZSB0byBjbGltYjsgd2hpbGUgSSwgDQorSW4geW9uZGVyIHNwcmluZyBvZiByb3NlcyBpbnRlcm1peGVkIA0KK1dpdGggbXlydGxlLCBmaW5kIHdoYXQgdG8gcmVkcmVzcyB0aWxsIG5vb246IA0KK0Zvciwgd2hpbGUgc28gbmVhciBlYWNoIG90aGVyIHRodXMgYWxsIGRheSANCitPdXIgdGFzayB3ZSBjaG9vc2UsIHdoYXQgd29uZGVyIGlmIHNvIG5lYXIgDQorTG9va3MgaW50ZXJ2ZW5lIGFuZCBzbWlsZXMsIG9yIG9iamVjdCBuZXcgDQorQ2FzdWFsIGRpc2NvdXJzZSBkcmF3IG9uOyB3aGljaCBpbnRlcm1pdHMgDQorT3VyIGRheSdzIHdvcmssIGJyb3VnaHQgdG8gbGl0dGxlLCB0aG91Z2ggYmVndW4gDQorRWFybHksIGFuZCB0aGUgaG91ciBvZiBzdXBwZXIgY29tZXMgdW5lYXJuZWQ/IA0KK1RvIHdob20gbWlsZCBhbnN3ZXIgQWRhbSB0aHVzIHJldHVybmVkLiANCitTb2xlIEV2ZSwgYXNzb2NpYXRlIHNvbGUsIHRvIG1lIGJleW9uZCANCitDb21wYXJlIGFib3ZlIGFsbCBsaXZpbmcgY3JlYXR1cmVzIGRlYXIhIA0KK1dlbGwgaGFzdCB0aG91IG1vdGlvbmVkLCB3ZWxsIHRoeSB0aG91Z2h0cyBlbXBsb3llZCwgDQorSG93IHdlIG1pZ2h0IGJlc3QgZnVsZmlsIHRoZSB3b3JrIHdoaWNoIGhlcmUgDQorR29kIGhhdGggYXNzaWduZWQgdXM7IG5vciBvZiBtZSBzaGFsdCBwYXNzIA0KK1VucHJhaXNlZDogZm9yIG5vdGhpbmcgbG92ZWxpZXIgY2FuIGJlIGZvdW5kIA0KK0luIHdvbWFuLCB0aGFuIHRvIHN0dWR5IGhvdXNob2xkIGdvb2QsIA0KK0FuZCBnb29kIHdvcmtzIGluIGhlciBodXNiYW5kIHRvIHByb21vdGUuIA0KK1lldCBub3Qgc28gc3RyaWN0bHkgaGF0aCBvdXIgTG9yZCBpbXBvc2VkIA0KK0xhYm91ciwgYXMgdG8gZGViYXIgdXMgd2hlbiB3ZSBuZWVkIA0KK1JlZnJlc2htZW50LCB3aGV0aGVyIGZvb2QsIG9yIHRhbGsgYmV0d2VlbiwgDQorRm9vZCBvZiB0aGUgbWluZCwgb3IgdGhpcyBzd2VldCBpbnRlcmNvdXJzZSANCitPZiBsb29rcyBhbmQgc21pbGVzOyBmb3Igc21pbGVzIGZyb20gcmVhc29uIGZsb3csIA0KK1RvIGJydXRlIGRlbmllZCwgYW5kIGFyZSBvZiBsb3ZlIHRoZSBmb29kOyANCitMb3ZlLCBub3QgdGhlIGxvd2VzdCBlbmQgb2YgaHVtYW4gbGlmZS4gDQorRm9yIG5vdCB0byBpcmtzb21lIHRvaWwsIGJ1dCB0byBkZWxpZ2h0LCANCitIZSBtYWRlIHVzLCBhbmQgZGVsaWdodCB0byByZWFzb24gam9pbmVkLiANCitUaGVzZSBwYXRocyBhbmQgYm93ZXJzIGRvdWJ0IG5vdCBidXQgb3VyIGpvaW50IGhhbmRzIA0KK1dpbGwga2VlcCBmcm9tIHdpbGRlcm5lc3Mgd2l0aCBlYXNlLCBhcyB3aWRlIA0KK0FzIHdlIG5lZWQgd2FsaywgdGlsbCB5b3VuZ2VyIGhhbmRzIGVyZSBsb25nIA0KK0Fzc2lzdCB1czsgQnV0LCBpZiBtdWNoIGNvbnZlcnNlIHBlcmhhcHMgDQorVGhlZSBzYXRpYXRlLCB0byBzaG9ydCBhYnNlbmNlIEkgY291bGQgeWllbGQ6IA0KK0ZvciBzb2xpdHVkZSBzb21ldGltZXMgaXMgYmVzdCBzb2NpZXR5LCANCitBbmQgc2hvcnQgcmV0aXJlbWVudCB1cmdlcyBzd2VldCByZXR1cm4uIA0KK0J1dCBvdGhlciBkb3VidCBwb3NzZXNzZXMgbWUsIGxlc3QgaGFybSANCitCZWZhbGwgdGhlZSBzZXZlcmVkIGZyb20gbWU7IGZvciB0aG91IGtub3dlc3QgDQorV2hhdCBoYXRoIGJlZW4gd2FybmVkIHVzLCB3aGF0IG1hbGljaW91cyBmb2UgDQorRW52eWluZyBvdXIgaGFwcGluZXNzLCBhbmQgb2YgaGlzIG93biANCitEZXNwYWlyaW5nLCBzZWVrcyB0byB3b3JrIHVzIHdvZSBhbmQgc2hhbWUgDQorQnkgc2x5IGFzc2F1bHQ7IGFuZCBzb21ld2hlcmUgbmlnaCBhdCBoYW5kIA0KK1dhdGNoZXMsIG5vIGRvdWJ0LCB3aXRoIGdyZWVkeSBob3BlIHRvIGZpbmQgDQorSGlzIHdpc2ggYW5kIGJlc3QgYWR2YW50YWdlLCB1cyBhc3VuZGVyOyANCitIb3BlbGVzcyB0byBjaXJjdW12ZW50IHVzIGpvaW5lZCwgd2hlcmUgZWFjaCANCitUbyBvdGhlciBzcGVlZHkgYWlkIG1pZ2h0IGxlbmQgYXQgbmVlZDogDQorV2hldGhlciBoaXMgZmlyc3QgZGVzaWduIGJlIHRvIHdpdGhkcmF3IA0KK091ciBmZWFsdHkgZnJvbSBHb2QsIG9yIHRvIGRpc3R1cmIgDQorQ29uanVnYWwgbG92ZSwgdGhhbiB3aGljaCBwZXJoYXBzIG5vIGJsaXNzIA0KK0Vuam95ZWQgYnkgdXMgZXhjaXRlcyBoaXMgZW52eSBtb3JlOyANCitPciB0aGlzLCBvciB3b3JzZSwgbGVhdmUgbm90IHRoZSBmYWl0aGZ1bCBzaWRlIA0KK1RoYXQgZ2F2ZSB0aGVlIGJlaW5nLCBzdGlsbCBzaGFkZXMgdGhlZSwgYW5kIHByb3RlY3RzLiANCitUaGUgd2lmZSwgd2hlcmUgZGFuZ2VyIG9yIGRpc2hvbm91ciBsdXJrcywgDQorU2FmZXN0IGFuZCBzZWVtbGllc3QgYnkgaGVyIGh1c2JhbmQgc3RheXMsIA0KK1dobyBndWFyZHMgaGVyLCBvciB3aXRoIGhlciB0aGUgd29yc3QgZW5kdXJlcy4gDQorVG8gd2hvbSB0aGUgdmlyZ2luIG1hamVzdHkgb2YgRXZlLCANCitBcyBvbmUgd2hvIGxvdmVzLCBhbmQgc29tZSB1bmtpbmRuZXNzIG1lZXRzLCANCitXaXRoIHN3ZWV0IGF1c3RlcmUgY29tcG9zdXJlIHRodXMgcmVwbGllZC4gDQorT2Zmc3ByaW5nIG9mIEhlYXZlbiBhbmQgRWFydGgsIGFuZCBhbGwgRWFydGgncyBMb3JkISANCitUaGF0IHN1Y2ggYW4gZW5lbXkgd2UgaGF2ZSwgd2hvIHNlZWtzIA0KK091ciBydWluLCBib3RoIGJ5IHRoZWUgaW5mb3JtZWQgSSBsZWFybiwgDQorQW5kIGZyb20gdGhlIHBhcnRpbmcgQW5nZWwgb3Zlci1oZWFyZCwgDQorQXMgaW4gYSBzaGFkeSBub29rIEkgc3Rvb2QgYmVoaW5kLCANCitKdXN0IHRoZW4gcmV0dXJuZWQgYXQgc2h1dCBvZiBldmVuaW5nIGZsb3dlcnMuIA0KK0J1dCwgdGhhdCB0aG91IHNob3VsZHN0IG15IGZpcm1uZXNzIHRoZXJlZm9yZSBkb3VidCANCitUbyBHb2Qgb3IgdGhlZSwgYmVjYXVzZSB3ZSBoYXZlIGEgZm9lIA0KK01heSB0ZW1wdCBpdCwgSSBleHBlY3RlZCBub3QgdG8gaGVhci4gDQorSGlzIHZpb2xlbmNlIHRob3UgZmVhcmVzdCBub3QsIGJlaW5nIHN1Y2ggDQorQXMgd2UsIG5vdCBjYXBhYmxlIG9mIGRlYXRoIG9yIHBhaW4sIA0KK0NhbiBlaXRoZXIgbm90IHJlY2VpdmUsIG9yIGNhbiByZXBlbC4gDQorSGlzIGZyYXVkIGlzIHRoZW4gdGh5IGZlYXI7IHdoaWNoIHBsYWluIGluZmVycyANCitUaHkgZXF1YWwgZmVhciwgdGhhdCBteSBmaXJtIGZhaXRoIGFuZCBsb3ZlIA0KK0NhbiBieSBoaXMgZnJhdWQgYmUgc2hha2VuIG9yIHNlZHVjZWQ7IA0KK1Rob3VnaHRzLCB3aGljaCBob3cgZm91bmQgdGhleSBoYXJib3VyIGluIHRoeSBicmVhc3QsIA0KK0FkYW0sIG1pcy10aG91Z2h0IG9mIGhlciB0byB0aGVlIHNvIGRlYXI/IA0KK1RvIHdob20gd2l0aCBoZWFsaW5nIHdvcmRzIEFkYW0gcmVwbGllZC4gDQorRGF1Z2h0ZXIgb2YgR29kIGFuZCBNYW4sIGltbW9ydGFsIEV2ZSEgDQorRm9yIHN1Y2ggdGhvdSBhcnQ7IGZyb20gc2luIGFuZCBibGFtZSBlbnRpcmU6IA0KK05vdCBkaWZmaWRlbnQgb2YgdGhlZSBkbyBJIGRpc3N1YWRlIA0KK1RoeSBhYnNlbmNlIGZyb20gbXkgc2lnaHQsIGJ1dCB0byBhdm9pZCANCitUaGUgYXR0ZW1wdCBpdHNlbGYsIGludGVuZGVkIGJ5IG91ciBmb2UuIA0KK0ZvciBoZSB3aG8gdGVtcHRzLCB0aG91Z2ggaW4gdmFpbiwgYXQgbGVhc3QgYXNwZXJzZXMgDQorVGhlIHRlbXB0ZWQgd2l0aCBkaXNob25vdXIgZm91bDsgc3VwcG9zZWQgDQorTm90IGluY29ycnVwdGlibGUgb2YgZmFpdGgsIG5vdCBwcm9vZiANCitBZ2FpbnN0IHRlbXB0YXRpb246IFRob3UgdGh5c2VsZiB3aXRoIHNjb3JuIA0KK0FuZCBhbmdlciB3b3VsZHN0IHJlc2VudCB0aGUgb2ZmZXJlZCB3cm9uZywgDQorVGhvdWdoIGluZWZmZWN0dWFsIGZvdW5kOiBtaXNkZWVtIG5vdCB0aGVuLCANCitJZiBzdWNoIGFmZnJvbnQgSSBsYWJvdXIgdG8gYXZlcnQgDQorRnJvbSB0aGVlIGFsb25lLCB3aGljaCBvbiB1cyBib3RoIGF0IG9uY2UgDQorVGhlIGVuZW15LCB0aG91Z2ggYm9sZCwgd2lsbCBoYXJkbHkgZGFyZTsgDQorT3IgZGFyaW5nLCBmaXJzdCBvbiBtZSB0aGUgYXNzYXVsdCBzaGFsbCBsaWdodC4gDQorTm9yIHRob3UgaGlzIG1hbGljZSBhbmQgZmFsc2UgZ3VpbGUgY29udGVtbjsgDQorU3VidGxlIGhlIG5lZWRzIG11c3QgYmUsIHdobyBjb3VsZCBzZWR1Y2UgDQorQW5nZWxzOyBub3IgdGhpbmsgc3VwZXJmbHVvdXMgb3RoZXIncyBhaWQuIA0KK0ksIGZyb20gdGhlIGluZmx1ZW5jZSBvZiB0aHkgbG9va3MsIHJlY2VpdmUgDQorQWNjZXNzIGluIGV2ZXJ5IHZpcnR1ZTsgaW4gdGh5IHNpZ2h0IA0KK01vcmUgd2lzZSwgbW9yZSB3YXRjaGZ1bCwgc3Ryb25nZXIsIGlmIG5lZWQgd2VyZSANCitPZiBvdXR3YXJkIHN0cmVuZ3RoOyB3aGlsZSBzaGFtZSwgdGhvdSBsb29raW5nIG9uLCANCitTaGFtZSB0byBiZSBvdmVyY29tZSBvciBvdmVyLXJlYWNoZWQsIA0KK1dvdWxkIHV0bW9zdCB2aWdvdXIgcmFpc2UsIGFuZCByYWlzZWQgdW5pdGUuIA0KK1doeSBzaG91bGRzdCBub3QgdGhvdSBsaWtlIHNlbnNlIHdpdGhpbiB0aGVlIGZlZWwgDQorV2hlbiBJIGFtIHByZXNlbnQsIGFuZCB0aHkgdHJpYWwgY2hvb3NlIA0KK1dpdGggbWUsIGJlc3Qgd2l0bmVzcyBvZiB0aHkgdmlydHVlIHRyaWVkPyANCitTbyBzcGFrZSBkb21lc3RpY2sgQWRhbSBpbiBoaXMgY2FyZSANCitBbmQgbWF0cmltb25pYWwgbG92ZTsgYnV0IEV2ZSwgd2hvIHRob3VnaHQgDQorTGVzcyBhdHRyaWJ1dGVkIHRvIGhlciBmYWl0aCBzaW5jZXJlLCANCitUaHVzIGhlciByZXBseSB3aXRoIGFjY2VudCBzd2VldCByZW5ld2VkLiANCitJZiB0aGlzIGJlIG91ciBjb25kaXRpb24sIHRodXMgdG8gZHdlbGwgDQorSW4gbmFycm93IGNpcmN1aXQgc3RyYWl0ZW5lZCBieSBhIGZvZSwgDQorU3VidGxlIG9yIHZpb2xlbnQsIHdlIG5vdCBlbmR1ZWQgDQorU2luZ2xlIHdpdGggbGlrZSBkZWZlbmNlLCB3aGVyZXZlciBtZXQ7IA0KK0hvdyBhcmUgd2UgaGFwcHksIHN0aWxsIGluIGZlYXIgb2YgaGFybT8gDQorQnV0IGhhcm0gcHJlY2VkZXMgbm90IHNpbjogb25seSBvdXIgZm9lLCANCitUZW1wdGluZywgYWZmcm9udHMgdXMgd2l0aCBoaXMgZm91bCBlc3RlZW0gDQorT2Ygb3VyIGludGVncml0eTogaGlzIGZvdWwgZXN0ZWVtIA0KK1N0aWNrcyBubyBkaXNob25vdXIgb24gb3VyIGZyb250LCBidXQgdHVybnMgDQorRm91bCBvbiBoaW1zZWxmOyB0aGVuIHdoZXJlZm9yZSBzaHVubmVkIG9yIGZlYXJlZCANCitCeSB1cz8gd2hvIHJhdGhlciBkb3VibGUgaG9ub3VyIGdhaW4gDQorRnJvbSBoaXMgc3VybWlzZSBwcm92ZWQgZmFsc2U7IGZpbmQgcGVhY2Ugd2l0aGluLCANCitGYXZvdXIgZnJvbSBIZWF2ZW4sIG91ciB3aXRuZXNzLCBmcm9tIHRoZSBldmVudC4gDQorQW5kIHdoYXQgaXMgZmFpdGgsIGxvdmUsIHZpcnR1ZSwgdW5hc3NheWVkIA0KK0Fsb25lLCB3aXRob3V0IGV4dGVyaW91ciBoZWxwIHN1c3RhaW5lZD8gDQorTGV0IHVzIG5vdCB0aGVuIHN1c3BlY3Qgb3VyIGhhcHB5IHN0YXRlIA0KK0xlZnQgc28gaW1wZXJmZWN0IGJ5IHRoZSBNYWtlciB3aXNlLCANCitBcyBub3Qgc2VjdXJlIHRvIHNpbmdsZSBvciBjb21iaW5lZC4gDQorRnJhaWwgaXMgb3VyIGhhcHBpbmVzcywgaWYgdGhpcyBiZSBzbywgDQorQW5kIEVkZW4gd2VyZSBubyBFZGVuLCB0aHVzIGV4cG9zZWQuIA0KK1RvIHdob20gdGh1cyBBZGFtIGZlcnZlbnRseSByZXBsaWVkLiANCitPIFdvbWFuLCBiZXN0IGFyZSBhbGwgdGhpbmdzIGFzIHRoZSB3aWxsIA0KK09mIEdvZCBvcmRhaW5lZCB0aGVtOiBIaXMgY3JlYXRpbmcgaGFuZCANCitOb3RoaW5nIGltcGVyZmVjdCBvciBkZWZpY2llbnQgbGVmdCANCitPZiBhbGwgdGhhdCBoZSBjcmVhdGVkLCBtdWNoIGxlc3MgTWFuLCANCitPciBhdWdodCB0aGF0IG1pZ2h0IGhpcyBoYXBweSBzdGF0ZSBzZWN1cmUsIA0KK1NlY3VyZSBmcm9tIG91dHdhcmQgZm9yY2U7IHdpdGhpbiBoaW1zZWxmIA0KK1RoZSBkYW5nZXIgbGllcywgeWV0IGxpZXMgd2l0aGluIGhpcyBwb3dlcjogDQorQWdhaW5zdCBoaXMgd2lsbCBoZSBjYW4gcmVjZWl2ZSBubyBoYXJtLiANCitCdXQgR29kIGxlZnQgZnJlZSB0aGUgd2lsbDsgZm9yIHdoYXQgb2JleXMgDQorUmVhc29uLCBpcyBmcmVlOyBhbmQgUmVhc29uIGhlIG1hZGUgcmlnaHQsIA0KK0J1dCBiaWQgaGVyIHdlbGwgYmUgd2FyZSwgYW5kIHN0aWxsIGVyZWN0OyANCitMZXN0LCBieSBzb21lIGZhaXItYXBwZWFyaW5nIGdvb2Qgc3VycHJpc2VkLCANCitTaGUgZGljdGF0ZSBmYWxzZTsgYW5kIG1pcy1pbmZvcm0gdGhlIHdpbGwgDQorVG8gZG8gd2hhdCBHb2QgZXhwcmVzc2x5IGhhdGggZm9yYmlkLiANCitOb3QgdGhlbiBtaXN0cnVzdCwgYnV0IHRlbmRlciBsb3ZlLCBlbmpvaW5zLCANCitUaGF0IEkgc2hvdWxkIG1pbmQgdGhlZSBvZnQ7IGFuZCBtaW5kIHRob3UgbWUuIA0KK0Zpcm0gd2Ugc3Vic2lzdCwgeWV0IHBvc3NpYmxlIHRvIHN3ZXJ2ZTsgDQorU2luY2UgUmVhc29uIG5vdCBpbXBvc3NpYmx5IG1heSBtZWV0IA0KK1NvbWUgc3BlY2lvdXMgb2JqZWN0IGJ5IHRoZSBmb2Ugc3Vib3JuZWQsIA0KK0FuZCBmYWxsIGludG8gZGVjZXB0aW9uIHVuYXdhcmUsIA0KK05vdCBrZWVwaW5nIHN0cmljdGVzdCB3YXRjaCwgYXMgc2hlIHdhcyB3YXJuZWQuIA0KK1NlZWsgbm90IHRlbXB0YXRpb24gdGhlbiwgd2hpY2ggdG8gYXZvaWQgDQorV2VyZSBiZXR0ZXIsIGFuZCBtb3N0IGxpa2VseSBpZiBmcm9tIG1lIA0KK1Rob3Ugc2V2ZXIgbm90OiBUcmlhbCB3aWxsIGNvbWUgdW5zb3VnaHQuIA0KK1dvdWxkc3QgdGhvdSBhcHByb3ZlIHRoeSBjb25zdGFuY3ksIGFwcHJvdmUgDQorRmlyc3QgdGh5IG9iZWRpZW5jZTsgdGhlIG90aGVyIHdobyBjYW4ga25vdywgDQorTm90IHNlZWluZyB0aGVlIGF0dGVtcHRlZCwgd2hvIGF0dGVzdD8gDQorQnV0LCBpZiB0aG91IHRoaW5rLCB0cmlhbCB1bnNvdWdodCBtYXkgZmluZCANCitVcyBib3RoIHNlY3VyZXIgdGhhbiB0aHVzIHdhcm5lZCB0aG91IHNlZW1lc3QsIA0KK0dvOyBmb3IgdGh5IHN0YXksIG5vdCBmcmVlLCBhYnNlbnRzIHRoZWUgbW9yZTsgDQorR28gaW4gdGh5IG5hdGl2ZSBpbm5vY2VuY2UsIHJlbHkgDQorT24gd2hhdCB0aG91IGhhc3Qgb2YgdmlydHVlOyBzdW1tb24gYWxsISANCitGb3IgR29kIHRvd2FyZHMgdGhlZSBoYXRoIGRvbmUgaGlzIHBhcnQsIGRvIHRoaW5lLiANCitTbyBzcGFrZSB0aGUgcGF0cmlhcmNoIG9mIG1hbmtpbmQ7IGJ1dCBFdmUgDQorUGVyc2lzdGVkOyB5ZXQgc3VibWlzcywgdGhvdWdoIGxhc3QsIHJlcGxpZWQuIA0KK1dpdGggdGh5IHBlcm1pc3Npb24gdGhlbiwgYW5kIHRodXMgZm9yZXdhcm5lZCANCitDaGllZmx5IGJ5IHdoYXQgdGh5IG93biBsYXN0IHJlYXNvbmluZyB3b3JkcyANCitUb3VjaGVkIG9ubHk7IHRoYXQgb3VyIHRyaWFsLCB3aGVuIGxlYXN0IHNvdWdodCwgDQorTWF5IGZpbmQgdXMgYm90aCBwZXJoYXBzIGZhciBsZXNzIHByZXBhcmVkLCANCitUaGUgd2lsbGluZ2VyIEkgZ28sIG5vciBtdWNoIGV4cGVjdCANCitBIGZvZSBzbyBwcm91ZCB3aWxsIGZpcnN0IHRoZSB3ZWFrZXIgc2VlazsgDQorU28gYmVudCwgdGhlIG1vcmUgc2hhbGwgc2hhbWUgaGltIGhpcyByZXB1bHNlLiANCitUaHVzIHNheWluZywgZnJvbSBoZXIgaHVzYmFuZCdzIGhhbmQgaGVyIGhhbmQgDQorU29mdCBzaGUgd2l0aGRyZXc7IGFuZCwgbGlrZSBhIFdvb2QtTnltcGggbGlnaHQsIA0KK09yZWFkIG9yIERyeWFkLCBvciBvZiBEZWxpYSdzIHRyYWluLCANCitCZXRvb2sgaGVyIHRvIHRoZSBncm92ZXM7IGJ1dCBEZWxpYSdzIHNlbGYgDQorSW4gZ2FpdCBzdXJwYXNzZWQsIGFuZCBHb2RkZXNzLWxpa2UgZGVwb3J0LCANCitUaG91Z2ggbm90IGFzIHNoZSB3aXRoIGJvdyBhbmQgcXVpdmVyIGFybWVkLCANCitCdXQgd2l0aCBzdWNoIGdhcmRlbmluZyB0b29scyBhcyBBcnQgeWV0IHJ1ZGUsIA0KK0d1aWx0bGVzcyBvZiBmaXJlLCBoYWQgZm9ybWVkLCBvciBBbmdlbHMgYnJvdWdodC4gDQorVG8gUGFsZXMsIG9yIFBvbW9uYSwgdGh1cyBhZG9ybmVkLCANCitMaWtlc3Qgc2hlIHNlZW1lZCwgUG9tb25hIHdoZW4gc2hlIGZsZWQgDQorVmVydHVtbnVzLCBvciB0byBDZXJlcyBpbiBoZXIgcHJpbWUsIA0KK1lldCB2aXJnaW4gb2YgUHJvc2VycGluYSBmcm9tIEpvdmUuIA0KK0hlciBsb25nIHdpdGggYXJkZW50IGxvb2sgaGlzIGV5ZSBwdXJzdWVkIA0KK0RlbGlnaHRlZCwgYnV0IGRlc2lyaW5nIG1vcmUgaGVyIHN0YXkuIA0KK09mdCBoZSB0byBoZXIgaGlzIGNoYXJnZSBvZiBxdWljayByZXR1cm4gDQorUmVwZWF0ZWQ7IHNoZSB0byBoaW0gYXMgb2Z0IGVuZ2FnZWQgDQorVG8gYmUgcmV0dXJuZWQgYnkgbm9vbiBhbWlkIHRoZSBib3dlciwgDQorQW5kIGFsbCB0aGluZ3MgaW4gYmVzdCBvcmRlciB0byBpbnZpdGUgDQorTm9vbnRpZGUgcmVwYXN0LCBvciBhZnRlcm5vb24ncyByZXBvc2UuIA0KK08gbXVjaCBkZWNlaXZlZCwgbXVjaCBmYWlsaW5nLCBoYXBsZXNzIEV2ZSwgDQorT2YgdGh5IHByZXN1bWVkIHJldHVybiEgZXZlbnQgcGVydmVyc2UhIA0KK1Rob3UgbmV2ZXIgZnJvbSB0aGF0IGhvdXIgaW4gUGFyYWRpc2UgDQorRm91bmRzdCBlaXRoZXIgc3dlZXQgcmVwYXN0LCBvciBzb3VuZCByZXBvc2U7IA0KK1N1Y2ggYW1idXNoLCBoaWQgYW1vbmcgc3dlZXQgZmxvd2VycyBhbmQgc2hhZGVzLCANCitXYWl0ZWQgd2l0aCBoZWxsaXNoIHJhbmNvdXIgaW1taW5lbnQgDQorVG8gaW50ZXJjZXB0IHRoeSB3YXksIG9yIHNlbmQgdGhlZSBiYWNrIA0KK0Rlc3BvaWxlZCBvZiBpbm5vY2VuY2UsIG9mIGZhaXRoLCBvZiBibGlzcyEgDQorRm9yIG5vdywgYW5kIHNpbmNlIGZpcnN0IGJyZWFrIG9mIGRhd24sIHRoZSBGaWVuZCwgDQorTWVyZSBzZXJwZW50IGluIGFwcGVhcmFuY2UsIGZvcnRoIHdhcyBjb21lOyANCitBbmQgb24gaGlzIHF1ZXN0LCB3aGVyZSBsaWtlbGllc3QgaGUgbWlnaHQgZmluZCANCitUaGUgb25seSB0d28gb2YgbWFua2luZCwgYnV0IGluIHRoZW0gDQorVGhlIHdob2xlIGluY2x1ZGVkIHJhY2UsIGhpcyBwdXJwb3NlZCBwcmV5LiANCitJbiBib3dlciBhbmQgZmllbGQgaGUgc291Z2h0LCB3aGVyZSBhbnkgdHVmdCANCitPZiBncm92ZSBvciBnYXJkZW4tcGxvdCBtb3JlIHBsZWFzYW50IGxheSwgDQorVGhlaXIgdGVuZGFuY2UsIG9yIHBsYW50YXRpb24gZm9yIGRlbGlnaHQ7IA0KK0J5IGZvdW50YWluIG9yIGJ5IHNoYWR5IHJpdnVsZXQgDQorSGUgc291Z2h0IHRoZW0gYm90aCwgYnV0IHdpc2hlZCBoaXMgaGFwIG1pZ2h0IGZpbmQgDQorRXZlIHNlcGFyYXRlOyBoZSB3aXNoZWQsIGJ1dCBub3Qgd2l0aCBob3BlIA0KK09mIHdoYXQgc28gc2VsZG9tIGNoYW5jZWQ7IHdoZW4gdG8gaGlzIHdpc2gsIA0KK0JleW9uZCBoaXMgaG9wZSwgRXZlIHNlcGFyYXRlIGhlIHNwaWVzLCANCitWZWlsZWQgaW4gYSBjbG91ZCBvZiBmcmFncmFuY2UsIHdoZXJlIHNoZSBzdG9vZCwgDQorSGFsZiBzcGllZCwgc28gdGhpY2sgdGhlIHJvc2VzIGJsdXNoaW5nIHJvdW5kIA0KK0Fib3V0IGhlciBnbG93ZWQsIG9mdCBzdG9vcGluZyB0byBzdXBwb3J0IA0KK0VhY2ggZmxvd2VyIG9mIHNsZW5kZXIgc3RhbGssIHdob3NlIGhlYWQsIHRob3VnaCBnYXkgDQorQ2FybmF0aW9uLCBwdXJwbGUsIGF6dXJlLCBvciBzcGVja2VkIHdpdGggZ29sZCwgDQorSHVuZyBkcm9vcGluZyB1bnN1c3RhaW5lZDsgdGhlbSBzaGUgdXBzdGF5cyANCitHZW50bHkgd2l0aCBteXJ0bGUgYmFuZCwgbWluZGxlc3MgdGhlIHdoaWxlIA0KK0hlcnNlbGYsIHRob3VnaCBmYWlyZXN0IHVuc3VwcG9ydGVkIGZsb3dlciwgDQorRnJvbSBoZXIgYmVzdCBwcm9wIHNvIGZhciwgYW5kIHN0b3JtIHNvIG5pZ2guIA0KK05lYXJlciBoZSBkcmV3LCBhbmQgbWFueSBhIHdhbGsgdHJhdmVyc2VkIA0KK09mIHN0YXRlbGllc3QgY292ZXJ0LCBjZWRhciwgcGluZSwgb3IgcGFsbTsgDQorVGhlbiB2b2x1YmxlIGFuZCBib2xkLCBub3cgaGlkLCBub3cgc2VlbiwgDQorQW1vbmcgdGhpY2std292ZW4gYXJib3JldHMsIGFuZCBmbG93ZXJzIA0KK0ltYm9yZGVyZWQgb24gZWFjaCBiYW5rLCB0aGUgaGFuZCBvZiBFdmU6IA0KK1Nwb3QgbW9yZSBkZWxpY2lvdXMgdGhhbiB0aG9zZSBnYXJkZW5zIGZlaWduZWQgDQorT3Igb2YgcmV2aXZlZCBBZG9uaXMsIG9yIHJlbm93bmVkIA0KK0FsY2lub3VzLCBob3N0IG9mIG9sZCBMYWVydGVzJyBzb247IA0KK09yIHRoYXQsIG5vdCBteXN0aWNrLCB3aGVyZSB0aGUgc2FwaWVudCBraW5nIA0KK0hlbGQgZGFsbGlhbmNlIHdpdGggaGlzIGZhaXIgRWd5cHRpYW4gc3BvdXNlLiANCitNdWNoIGhlIHRoZSBwbGFjZSBhZG1pcmVkLCB0aGUgcGVyc29uIG1vcmUuIA0KK0FzIG9uZSB3aG8gbG9uZyBpbiBwb3B1bG91cyBjaXR5IHBlbnQsIA0KK1doZXJlIGhvdXNlcyB0aGljayBhbmQgc2V3ZXJzIGFubm95IHRoZSBhaXIsIA0KK0ZvcnRoIGlzc3Vpbmcgb24gYSBzdW1tZXIncyBtb3JuLCB0byBicmVhdGhlIA0KK0Ftb25nIHRoZSBwbGVhc2FudCB2aWxsYWdlcyBhbmQgZmFybXMgDQorQWRqb2luZWQsIGZyb20gZWFjaCB0aGluZyBtZXQgY29uY2VpdmVzIGRlbGlnaHQ7IA0KK1RoZSBzbWVsbCBvZiBncmFpbiwgb3IgdGVkZGVkIGdyYXNzLCBvciBraW5lLCANCitPciBkYWlyeSwgZWFjaCBydXJhbCBzaWdodCwgZWFjaCBydXJhbCBzb3VuZDsgDQorSWYgY2hhbmNlLCB3aXRoIG55bXBoLWxpa2Ugc3RlcCwgZmFpciB2aXJnaW4gcGFzcywgDQorV2hhdCBwbGVhc2luZyBzZWVtZWQsIGZvciBoZXIgbm93IHBsZWFzZXMgbW9yZTsgDQorU2hlIG1vc3QsIGFuZCBpbiBoZXIgbG9vayBzdW1zIGFsbCBkZWxpZ2h0OiANCitTdWNoIHBsZWFzdXJlIHRvb2sgdGhlIFNlcnBlbnQgdG8gYmVob2xkIA0KK1RoaXMgZmxvd2VyeSBwbGF0LCB0aGUgc3dlZXQgcmVjZXNzIG9mIEV2ZSANCitUaHVzIGVhcmx5LCB0aHVzIGFsb25lOiBIZXIgaGVhdmVubHkgZm9ybSANCitBbmdlbGljaywgYnV0IG1vcmUgc29mdCwgYW5kIGZlbWluaW5lLCANCitIZXIgZ3JhY2VmdWwgaW5ub2NlbmNlLCBoZXIgZXZlcnkgYWlyIA0KK09mIGdlc3R1cmUsIG9yIGxlYXN0IGFjdGlvbiwgb3ZlcmF3ZWQgDQorSGlzIG1hbGljZSwgYW5kIHdpdGggcmFwaW5lIHN3ZWV0IGJlcmVhdmVkIA0KK0hpcyBmaWVyY2VuZXNzIG9mIHRoZSBmaWVyY2UgaW50ZW50IGl0IGJyb3VnaHQ6IA0KK1RoYXQgc3BhY2UgdGhlIEV2aWwtb25lIGFic3RyYWN0ZWQgc3Rvb2QgDQorRnJvbSBoaXMgb3duIGV2aWwsIGFuZCBmb3IgdGhlIHRpbWUgcmVtYWluZWQgDQorU3R1cGlkbHkgZ29vZDsgb2YgZW5taXR5IGRpc2FybWVkLCANCitPZiBndWlsZSwgb2YgaGF0ZSwgb2YgZW52eSwgb2YgcmV2ZW5nZTogDQorQnV0IHRoZSBob3QgSGVsbCB0aGF0IGFsd2F5cyBpbiBoaW0gYnVybnMsIA0KK1Rob3VnaCBpbiBtaWQgSGVhdmVuLCBzb29uIGVuZGVkIGhpcyBkZWxpZ2h0LCANCitBbmQgdG9ydHVyZXMgaGltIG5vdyBtb3JlLCB0aGUgbW9yZSBoZSBzZWVzIA0KK09mIHBsZWFzdXJlLCBub3QgZm9yIGhpbSBvcmRhaW5lZDogdGhlbiBzb29uIA0KK0ZpZXJjZSBoYXRlIGhlIHJlY29sbGVjdHMsIGFuZCBhbGwgaGlzIHRob3VnaHRzIA0KK09mIG1pc2NoaWVmLCBncmF0dWxhdGluZywgdGh1cyBleGNpdGVzLiANCitUaG91Z2h0cywgd2hpdGhlciBoYXZlIHllIGxlZCBtZSEgd2l0aCB3aGF0IHN3ZWV0IA0KK0NvbXB1bHNpb24gdGh1cyB0cmFuc3BvcnRlZCwgdG8gZm9yZ2V0IA0KK1doYXQgaGl0aGVyIGJyb3VnaHQgdXMhIGhhdGUsIG5vdCBsb3ZlO25vciBob3BlIA0KK09mIFBhcmFkaXNlIGZvciBIZWxsLCBob3BlIGhlcmUgdG8gdGFzdGUgDQorT2YgcGxlYXN1cmU7IGJ1dCBhbGwgcGxlYXN1cmUgdG8gZGVzdHJveSwgDQorU2F2ZSB3aGF0IGlzIGluIGRlc3Ryb3lpbmc7IG90aGVyIGpveSANCitUbyBtZSBpcyBsb3N0LiAgVGhlbiwgbGV0IG1lIG5vdCBsZXQgcGFzcyANCitPY2Nhc2lvbiB3aGljaCBub3cgc21pbGVzOyBiZWhvbGQgYWxvbmUgDQorVGhlIHdvbWFuLCBvcHBvcnR1bmUgdG8gYWxsIGF0dGVtcHRzLCANCitIZXIgaHVzYmFuZCwgZm9yIEkgdmlldyBmYXIgcm91bmQsIG5vdCBuaWdoLCANCitXaG9zZSBoaWdoZXIgaW50ZWxsZWN0dWFsIG1vcmUgSSBzaHVuLCANCitBbmQgc3RyZW5ndGgsIG9mIGNvdXJhZ2UgaGF1Z2h0eSwgYW5kIG9mIGxpbWIgDQorSGVyb2ljayBidWlsdCwgdGhvdWdoIG9mIHRlcnJlc3RyaWFsIG1vdWxkOyANCitGb2Ugbm90IGluZm9ybWlkYWJsZSEgZXhlbXB0IGZyb20gd291bmQsIA0KK0kgbm90OyBzbyBtdWNoIGhhdGggSGVsbCBkZWJhc2VkLCBhbmQgcGFpbiANCitFbmZlZWJsZWQgbWUsIHRvIHdoYXQgSSB3YXMgaW4gSGVhdmVuLiANCitTaGUgZmFpciwgZGl2aW5lbHkgZmFpciwgZml0IGxvdmUgZm9yIEdvZHMhIA0KK05vdCB0ZXJyaWJsZSwgdGhvdWdoIHRlcnJvdXIgYmUgaW4gbG92ZSANCitBbmQgYmVhdXR5LCBub3QgYXBwcm9hY2hlZCBieSBzdHJvbmdlciBoYXRlLCANCitIYXRlIHN0cm9uZ2VyLCB1bmRlciBzaG93IG9mIGxvdmUgd2VsbCBmZWlnbmVkOyANCitUaGUgd2F5IHdoaWNoIHRvIGhlciBydWluIG5vdyBJIHRlbmQuIA0KK1NvIHNwYWtlIHRoZSBlbmVteSBvZiBtYW5raW5kLCBlbmNsb3NlZCANCitJbiBzZXJwZW50LCBpbm1hdGUgYmFkISBhbmQgdG93YXJkIEV2ZSANCitBZGRyZXNzZWQgaGlzIHdheTogbm90IHdpdGggaW5kZW50ZWQgd2F2ZSwgDQorUHJvbmUgb24gdGhlIGdyb3VuZCwgYXMgc2luY2U7IGJ1dCBvbiBoaXMgcmVhciwgDQorQ2lyY3VsYXIgYmFzZSBvZiByaXNpbmcgZm9sZHMsIHRoYXQgdG93ZXJlZCANCitGb2xkIGFib3ZlIGZvbGQsIGEgc3VyZ2luZyBtYXplISBoaXMgaGVhZCANCitDcmVzdGVkIGFsb2Z0LCBhbmQgY2FyYnVuY2xlIGhpcyBleWVzOyANCitXaXRoIGJ1cm5pc2hlZCBuZWNrIG9mIHZlcmRhbnQgZ29sZCwgZXJlY3QgDQorQW1pZHN0IGhpcyBjaXJjbGluZyBzcGlyZXMsIHRoYXQgb24gdGhlIGdyYXNzIA0KK0Zsb2F0ZWQgcmVkdW5kYW50OiBwbGVhc2luZyB3YXMgaGlzIHNoYXBlIA0KK0FuZCBsb3ZlbHk7IG5ldmVyIHNpbmNlIG9mIHNlcnBlbnQta2luZCANCitMb3ZlbGllciwgbm90IHRob3NlIHRoYXQgaW4gSWxseXJpYSBjaGFuZ2VkLCANCitIZXJtaW9uZSBhbmQgQ2FkbXVzLCBvciB0aGUgZ29kIA0KK0luIEVwaWRhdXJ1czsgbm9yIHRvIHdoaWNoIHRyYW5zZm9ybWVkIA0KK0FtbW9uaWFuIEpvdmUsIG9yIENhcGl0b2xpbmUsIHdhcyBzZWVuOyANCitIZSB3aXRoIE9seW1waWFzOyB0aGlzIHdpdGggaGVyIHdobyBib3JlIA0KK1NjaXBpbywgdGhlIGhpZ2h0aCBvZiBSb21lLiAgV2l0aCB0cmFjdCBvYmxpcXVlIA0KK0F0IGZpcnN0LCBhcyBvbmUgd2hvIHNvdWdodCBhY2Nlc3MsIGJ1dCBmZWFyZWQgDQorVG8gaW50ZXJydXB0LCBzaWRlLWxvbmcgaGUgd29ya3MgaGlzIHdheS4gDQorQXMgd2hlbiBhIHNoaXAsIGJ5IHNraWxmdWwgc3RlZXJzbWVuIHdyb3VnaHQgDQorTmlnaCByaXZlcidzIG1vdXRoIG9yIGZvcmVsYW5kLCB3aGVyZSB0aGUgd2luZCANCitWZWVycyBvZnQsIGFzIG9mdCBzbyBzdGVlcnMsIGFuZCBzaGlmdHMgaGVyIHNhaWw6IA0KK1NvIHZhcmllZCBoZSwgYW5kIG9mIGhpcyB0b3J0dW91cyB0cmFpbiANCitDdXJsZWQgbWFueSBhIHdhbnRvbiB3cmVhdGggaW4gc2lnaHQgb2YgRXZlLCANCitUbyBsdXJlIGhlciBleWU7IHNoZSwgYnVzaWVkLCBoZWFyZCB0aGUgc291bmQgDQorT2YgcnVzbGluZyBsZWF2ZXMsIGJ1dCBtaW5kZWQgbm90LCBhcyB1c2VkIA0KK1RvIHN1Y2ggZGlzcG9ydCBiZWZvcmUgaGVyIHRocm91Z2ggdGhlIGZpZWxkLCANCitGcm9tIGV2ZXJ5IGJlYXN0OyBtb3JlIGR1dGVvdXMgYXQgaGVyIGNhbGwsIA0KK1RoYW4gYXQgQ2lyY2VhbiBjYWxsIHRoZSBoZXJkIGRpc2d1aXNlZC4gDQorSGUsIGJvbGRlciBub3csIHVuY2FsbGVkIGJlZm9yZSBoZXIgc3Rvb2QsIA0KK0J1dCBhcyBpbiBnYXplIGFkbWlyaW5nOiBvZnQgaGUgYm93ZWQgDQorSGlzIHR1cnJldCBjcmVzdCwgYW5kIHNsZWVrIGVuYW1lbGxlZCBuZWNrLCANCitGYXduaW5nOyBhbmQgbGlja2VkIHRoZSBncm91bmQgd2hlcmVvbiBzaGUgdHJvZC4gDQorSGlzIGdlbnRsZSBkdW1iIGV4cHJlc3Npb24gdHVybmVkIGF0IGxlbmd0aCANCitUaGUgZXllIG9mIEV2ZSB0byBtYXJrIGhpcyBwbGF5OyBoZSwgZ2xhZCANCitPZiBoZXIgYXR0ZW50aW9uIGdhaW5lZCwgd2l0aCBzZXJwZW50LXRvbmd1ZSANCitPcmdhbmljaywgb3IgaW1wdWxzZSBvZiB2b2NhbCBhaXIsIA0KK0hpcyBmcmF1ZHVsZW50IHRlbXB0YXRpb24gdGh1cyBiZWdhbi4gDQorV29uZGVyIG5vdCwgc292cmFuIE1pc3RyZXNzLCBpZiBwZXJoYXBzIA0KK1Rob3UgY2Fuc3QsIHdobyBhcnQgc29sZSB3b25kZXIhIG11Y2ggbGVzcyBhcm0gDQorVGh5IGxvb2tzLCB0aGUgSGVhdmVuIG9mIG1pbGRuZXNzLCB3aXRoIGRpc2RhaW4sIA0KK0Rpc3BsZWFzZWQgdGhhdCBJIGFwcHJvYWNoIHRoZWUgdGh1cywgYW5kIGdhemUgDQorSW5zYXRpYXRlOyBJIHRodXMgc2luZ2xlO25vciBoYXZlIGZlYXJlZCANCitUaHkgYXdmdWwgYnJvdywgbW9yZSBhd2Z1bCB0aHVzIHJldGlyZWQuIA0KK0ZhaXJlc3QgcmVzZW1ibGFuY2Ugb2YgdGh5IE1ha2VyIGZhaXIsIA0KK1RoZWUgYWxsIHRoaW5ncyBsaXZpbmcgZ2F6ZSBvbiwgYWxsIHRoaW5ncyB0aGluZSANCitCeSBnaWZ0LCBhbmQgdGh5IGNlbGVzdGlhbCBiZWF1dHkgYWRvcmUgDQorV2l0aCByYXZpc2htZW50IGJlaGVsZCEgdGhlcmUgYmVzdCBiZWhlbGQsIA0KK1doZXJlIHVuaXZlcnNhbGx5IGFkbWlyZWQ7IGJ1dCBoZXJlIA0KK0luIHRoaXMgZW5jbG9zdXJlIHdpbGQsIHRoZXNlIGJlYXN0cyBhbW9uZywgDQorQmVob2xkZXJzIHJ1ZGUsIGFuZCBzaGFsbG93IHRvIGRpc2Nlcm4gDQorSGFsZiB3aGF0IGluIHRoZWUgaXMgZmFpciwgb25lIG1hbiBleGNlcHQsIA0KK1dobyBzZWVzIHRoZWU/IGFuZCB3aGF0IGlzIG9uZT8gd2hvIHNob3VsZCBiZSBzZWVuIA0KK0EgR29kZGVzcyBhbW9uZyBHb2RzLCBhZG9yZWQgYW5kIHNlcnZlZCANCitCeSBBbmdlbHMgbnVtYmVybGVzcywgdGh5IGRhaWx5IHRyYWluLiANCitTbyBnbG96ZWQgdGhlIFRlbXB0ZXIsIGFuZCBoaXMgcHJvZW0gdHVuZWQ6IA0KK0ludG8gdGhlIGhlYXJ0IG9mIEV2ZSBoaXMgd29yZHMgbWFkZSB3YXksIA0KK1Rob3VnaCBhdCB0aGUgdm9pY2UgbXVjaCBtYXJ2ZWxsaW5nOyBhdCBsZW5ndGgsIA0KK05vdCB1bmFtYXplZCwgc2hlIHRodXMgaW4gYW5zd2VyIHNwYWtlLiANCitXaGF0IG1heSB0aGlzIG1lYW4/IGxhbmd1YWdlIG9mIG1hbiBwcm9ub3VuY2VkIA0KK0J5IHRvbmd1ZSBvZiBicnV0ZSwgYW5kIGh1bWFuIHNlbnNlIGV4cHJlc3NlZD8gDQorVGhlIGZpcnN0LCBhdCBsZWFzdCwgb2YgdGhlc2UgSSB0aG91Z2h0IGRlbmllZCANCitUbyBiZWFzdHM7IHdob20gR29kLCBvbiB0aGVpciBjcmVhdGlvbi1kYXksIA0KK0NyZWF0ZWQgbXV0ZSB0byBhbGwgYXJ0aWN1bGF0ZSBzb3VuZDogDQorVGhlIGxhdHRlciBJIGRlbXVyOyBmb3IgaW4gdGhlaXIgbG9va3MgDQorTXVjaCByZWFzb24sIGFuZCBpbiB0aGVpciBhY3Rpb25zLCBvZnQgYXBwZWFycy4gDQorVGhlZSwgU2VycGVudCwgc3VidGxlc3QgYmVhc3Qgb2YgYWxsIHRoZSBmaWVsZCANCitJIGtuZXcsIGJ1dCBub3Qgd2l0aCBodW1hbiB2b2ljZSBlbmR1ZWQ7IA0KK1JlZG91YmxlIHRoZW4gdGhpcyBtaXJhY2xlLCBhbmQgc2F5LCANCitIb3cgY2FtZXN0IHRob3Ugc3BlYWthYmxlIG9mIG11dGUsIGFuZCBob3cgDQorVG8gbWUgc28gZnJpZW5kbHkgZ3Jvd24gYWJvdmUgdGhlIHJlc3QgDQorT2YgYnJ1dGFsIGtpbmQsIHRoYXQgZGFpbHkgYXJlIGluIHNpZ2h0PyANCitTYXksIGZvciBzdWNoIHdvbmRlciBjbGFpbXMgYXR0ZW50aW9uIGR1ZS4gDQorVG8gd2hvbSB0aGUgZ3VpbGVmdWwgVGVtcHRlciB0aHVzIHJlcGxpZWQuIA0KK0VtcHJlc3Mgb2YgdGhpcyBmYWlyIHdvcmxkLCByZXNwbGVuZGVudCBFdmUhIA0KK0Vhc3kgdG8gbWUgaXQgaXMgdG8gdGVsbCB0aGVlIGFsbCANCitXaGF0IHRob3UgY29tbWFuZGVzdDsgYW5kIHJpZ2h0IHRob3Ugc2hvdWxkc3QgYmUgb2JleWVkOiANCitJIHdhcyBhdCBmaXJzdCBhcyBvdGhlciBiZWFzdHMgdGhhdCBncmF6ZSANCitUaGUgdHJvZGRlbiBoZXJiLCBvZiBhYmplY3QgdGhvdWdodHMgYW5kIGxvdywgDQorQXMgd2FzIG15IGZvb2Q7IG5vciBhdWdodCBidXQgZm9vZCBkaXNjZXJuZWQgDQorT3Igc2V4LCBhbmQgYXBwcmVoZW5kZWQgbm90aGluZyBoaWdoOiANCitUaWxsLCBvbiBhIGRheSByb3ZpbmcgdGhlIGZpZWxkLCBJIGNoYW5jZWQgDQorQSBnb29kbHkgdHJlZSBmYXIgZGlzdGFudCB0byBiZWhvbGQgDQorTG9hZGVuIHdpdGggZnJ1aXQgb2YgZmFpcmVzdCBjb2xvdXJzIG1peGVkLCANCitSdWRkeSBhbmQgZ29sZDogSSBuZWFyZXIgZHJldyB0byBnYXplOyANCitXaGVuIGZyb20gdGhlIGJvdWdocyBhIHNhdm91cnkgb2RvdXIgYmxvd24sIA0KK0dyYXRlZnVsIHRvIGFwcGV0aXRlLCBtb3JlIHBsZWFzZWQgbXkgc2Vuc2UgDQorVGhhbiBzbWVsbCBvZiBzd2VldGVzdCBmZW5uZWwsIG9yIHRoZSB0ZWF0cyANCitPZiBld2Ugb3IgZ29hdCBkcm9wcGluZyB3aXRoIG1pbGsgYXQgZXZlbiwgDQorVW5zdWNrZWQgb2YgbGFtYiBvciBraWQsIHRoYXQgdGVuZCB0aGVpciBwbGF5LiANCitUbyBzYXRpc2Z5IHRoZSBzaGFycCBkZXNpcmUgSSBoYWQgDQorT2YgdGFzdGluZyB0aG9zZSBmYWlyIGFwcGxlcywgSSByZXNvbHZlZCANCitOb3QgdG8gZGVmZXI7IGh1bmdlciBhbmQgdGhpcnN0IGF0IG9uY2UsIA0KK1Bvd2VyZnVsIHBlcnN1YWRlcnMsIHF1aWNrZW5lZCBhdCB0aGUgc2NlbnQgDQorT2YgdGhhdCBhbGx1cmluZyBmcnVpdCwgdXJnZWQgbWUgc28ga2Vlbi4gDQorQWJvdXQgdGhlIG1vc3N5IHRydW5rIEkgd291bmQgbWUgc29vbjsgDQorRm9yLCBoaWdoIGZyb20gZ3JvdW5kLCB0aGUgYnJhbmNoZXMgd291bGQgcmVxdWlyZSANCitUaHkgdXRtb3N0IHJlYWNoIG9yIEFkYW0nczogUm91bmQgdGhlIHRyZWUgDQorQWxsIG90aGVyIGJlYXN0cyB0aGF0IHNhdywgd2l0aCBsaWtlIGRlc2lyZSANCitMb25naW5nIGFuZCBlbnZ5aW5nIHN0b29kLCBidXQgY291bGQgbm90IHJlYWNoLiANCitBbWlkIHRoZSB0cmVlIG5vdyBnb3QsIHdoZXJlIHBsZW50eSBodW5nIA0KK1RlbXB0aW5nIHNvIG5pZ2gsIHRvIHBsdWNrIGFuZCBlYXQgbXkgZmlsbCANCitJIHNwYXJlZCBub3Q7IGZvciwgc3VjaCBwbGVhc3VyZSB0aWxsIHRoYXQgaG91ciwgDQorQXQgZmVlZCBvciBmb3VudGFpbiwgbmV2ZXIgaGFkIEkgZm91bmQuIA0KK1NhdGVkIGF0IGxlbmd0aCwgZXJlIGxvbmcgSSBtaWdodCBwZXJjZWl2ZSANCitTdHJhbmdlIGFsdGVyYXRpb24gaW4gbWUsIHRvIGRlZ3JlZSANCitPZiByZWFzb24gaW4gbXkgaW53YXJkIHBvd2VyczsgYW5kIHNwZWVjaCANCitXYW50ZWQgbm90IGxvbmc7IHRob3VnaCB0byB0aGlzIHNoYXBlIHJldGFpbmVkLiANCitUaGVuY2Vmb3J0aCB0byBzcGVjdWxhdGlvbnMgaGlnaCBvciBkZWVwIA0KK0kgdHVybmVkIG15IHRob3VnaHRzLCBhbmQgd2l0aCBjYXBhY2lvdXMgbWluZCANCitDb25zaWRlcmVkIGFsbCB0aGluZ3MgdmlzaWJsZSBpbiBIZWF2ZW4sIA0KK09yIEVhcnRoLCBvciBNaWRkbGU7IGFsbCB0aGluZ3MgZmFpciBhbmQgZ29vZDogDQorQnV0IGFsbCB0aGF0IGZhaXIgYW5kIGdvb2QgaW4gdGh5IGRpdmluZSANCitTZW1ibGFuY2UsIGFuZCBpbiB0aHkgYmVhdXR5J3MgaGVhdmVubHkgcmF5LCANCitVbml0ZWQgSSBiZWhlbGQ7IG5vIGZhaXIgdG8gdGhpbmUgDQorRXF1aXZhbGVudCBvciBzZWNvbmQhIHdoaWNoIGNvbXBlbGxlZCANCitNZSB0aHVzLCB0aG91Z2ggaW1wb3J0dW5lIHBlcmhhcHMsIHRvIGNvbWUgDQorQW5kIGdhemUsIGFuZCB3b3JzaGlwIHRoZWUgb2YgcmlnaHQgZGVjbGFyZWQgDQorU292cmFuIG9mIGNyZWF0dXJlcywgdW5pdmVyc2FsIERhbWUhIA0KK1NvIHRhbGtlZCB0aGUgc3Bpcml0ZWQgc2x5IFNuYWtlOyBhbmQgRXZlLCANCitZZXQgbW9yZSBhbWF6ZWQsIHVud2FyeSB0aHVzIHJlcGxpZWQuIA0KK1NlcnBlbnQsIHRoeSBvdmVycHJhaXNpbmcgbGVhdmVzIGluIGRvdWJ0IA0KK1RoZSB2aXJ0dWUgb2YgdGhhdCBmcnVpdCwgaW4gdGhlZSBmaXJzdCBwcm92ZWQ6IA0KK0J1dCBzYXksIHdoZXJlIGdyb3dzIHRoZSB0cmVlPyBmcm9tIGhlbmNlIGhvdyBmYXI/IA0KK0ZvciBtYW55IGFyZSB0aGUgdHJlZXMgb2YgR29kIHRoYXQgZ3JvdyANCitJbiBQYXJhZGlzZSwgYW5kIHZhcmlvdXMsIHlldCB1bmtub3duIA0KK1RvIHVzOyBpbiBzdWNoIGFidW5kYW5jZSBsaWVzIG91ciBjaG9pY2UsIA0KK0FzIGxlYXZlcyBhIGdyZWF0ZXIgc3RvcmUgb2YgZnJ1aXQgdW50b3VjaGVkLCANCitTdGlsbCBoYW5naW5nIGluY29ycnVwdGlibGUsIHRpbGwgbWVuIA0KK0dyb3cgdXAgdG8gdGhlaXIgcHJvdmlzaW9uLCBhbmQgbW9yZSBoYW5kcyANCitIZWxwIHRvIGRpc2J1cmRlbiBOYXR1cmUgb2YgaGVyIGJpcnRoLiANCitUbyB3aG9tIHRoZSB3aWx5IEFkZGVyLCBibGl0aGUgYW5kIGdsYWQuIA0KK0VtcHJlc3MsIHRoZSB3YXkgaXMgcmVhZHksIGFuZCBub3QgbG9uZzsgDQorQmV5b25kIGEgcm93IG9mIG15cnRsZXMsIG9uIGEgZmxhdCwgDQorRmFzdCBieSBhIGZvdW50YWluLCBvbmUgc21hbGwgdGhpY2tldCBwYXN0IA0KK09mIGJsb3dpbmcgbXlycmggYW5kIGJhbG06IGlmIHRob3UgYWNjZXB0IA0KK015IGNvbmR1Y3QsIEkgY2FuIGJyaW5nIHRoZWUgdGhpdGhlciBzb29uIA0KK0xlYWQgdGhlbiwgc2FpZCBFdmUuICBIZSwgbGVhZGluZywgc3dpZnRseSByb2xsZWQgDQorSW4gdGFuZ2xlcywgYW5kIG1hZGUgaW50cmljYXRlIHNlZW0gc3RyYWlnaHQsIA0KK1RvIG1pc2NoaWVmIHN3aWZ0LiAgSG9wZSBlbGV2YXRlcywgYW5kIGpveSANCitCcmlnaHRlbnMgaGlzIGNyZXN0OyBhcyB3aGVuIGEgd2FuZGVyaW5nIGZpcmUsIA0KK0NvbXBhY3Qgb2YgdW5jdHVvdXMgdmFwb3VyLCB3aGljaCB0aGUgbmlnaHQgDQorQ29uZGVuc2VzLCBhbmQgdGhlIGNvbGQgZW52aXJvbnMgcm91bmQsIA0KK0tpbmRsZWQgdGhyb3VnaCBhZ2l0YXRpb24gdG8gYSBmbGFtZSwgDQorV2hpY2ggb2Z0LCB0aGV5IHNheSwgc29tZSBldmlsIFNwaXJpdCBhdHRlbmRzLCANCitIb3ZlcmluZyBhbmQgYmxhemluZyB3aXRoIGRlbHVzaXZlIGxpZ2h0LCANCitNaXNsZWFkcyB0aGUgYW1hemVkIG5pZ2h0LXdhbmRlcmVyIGZyb20gaGlzIHdheSANCitUbyBib2dzIGFuZCBtaXJlcywgYW5kIG9mdCB0aHJvdWdoIHBvbmQgb3IgcG9vbDsgDQorVGhlcmUgc3dhbGxvd2VkIHVwIGFuZCBsb3N0LCBmcm9tIHN1Y2NvdXIgZmFyLiANCitTbyBnbGlzdGVyZWQgdGhlIGRpcmUgU25ha2UsIGFuZCBpbnRvIGZyYXVkIA0KK0xlZCBFdmUsIG91ciBjcmVkdWxvdXMgbW90aGVyLCB0byB0aGUgdHJlZSANCitPZiBwcm9oaWJpdGlvbiwgcm9vdCBvZiBhbGwgb3VyIHdvZTsgDQorV2hpY2ggd2hlbiBzaGUgc2F3LCB0aHVzIHRvIGhlciBndWlkZSBzaGUgc3Bha2UuIA0KK1NlcnBlbnQsIHdlIG1pZ2h0IGhhdmUgc3BhcmVkIG91ciBjb21pbmcgaGl0aGVyLCANCitGcnVpdGxlc3MgdG8gbWUsIHRob3VnaCBmcnVpdCBiZSBoZXJlIHRvIGV4Y2VzcywgDQorVGhlIGNyZWRpdCBvZiB3aG9zZSB2aXJ0dWUgcmVzdCB3aXRoIHRoZWU7IA0KK1dvbmRlcm91cyBpbmRlZWQsIGlmIGNhdXNlIG9mIHN1Y2ggZWZmZWN0cy4gDQorQnV0IG9mIHRoaXMgdHJlZSB3ZSBtYXkgbm90IHRhc3RlIG5vciB0b3VjaDsgDQorR29kIHNvIGNvbW1hbmRlZCwgYW5kIGxlZnQgdGhhdCBjb21tYW5kIA0KK1NvbGUgZGF1Z2h0ZXIgb2YgaGlzIHZvaWNlOyB0aGUgcmVzdCwgd2UgbGl2ZSANCitMYXcgdG8gb3Vyc2VsdmVzOyBvdXIgcmVhc29uIGlzIG91ciBsYXcuIA0KK1RvIHdob20gdGhlIFRlbXB0ZXIgZ3VpbGVmdWxseSByZXBsaWVkLiANCitJbmRlZWQhIGhhdGggR29kIHRoZW4gc2FpZCB0aGF0IG9mIHRoZSBmcnVpdCANCitPZiBhbGwgdGhlc2UgZ2FyZGVuLXRyZWVzIHllIHNoYWxsIG5vdCBlYXQsIA0KK1lldCBMb3JkcyBkZWNsYXJlZCBvZiBhbGwgaW4gZWFydGggb3IgYWlyJD8gDQorVG8gd2hvbSB0aHVzIEV2ZSwgeWV0IHNpbmxlc3MuICBPZiB0aGUgZnJ1aXQgDQorT2YgZWFjaCB0cmVlIGluIHRoZSBnYXJkZW4gd2UgbWF5IGVhdDsgDQorQnV0IG9mIHRoZSBmcnVpdCBvZiB0aGlzIGZhaXIgdHJlZSBhbWlkc3QgDQorVGhlIGdhcmRlbiwgR29kIGhhdGggc2FpZCwgWWUgc2hhbGwgbm90IGVhdCANCitUaGVyZW9mLCBub3Igc2hhbGwgeWUgdG91Y2ggaXQsIGxlc3QgeWUgZGllLiANCitTaGUgc2NhcmNlIGhhZCBzYWlkLCB0aG91Z2ggYnJpZWYsIHdoZW4gbm93IG1vcmUgYm9sZCANCitUaGUgVGVtcHRlciwgYnV0IHdpdGggc2hvdyBvZiB6ZWFsIGFuZCBsb3ZlIA0KK1RvIE1hbiwgYW5kIGluZGlnbmF0aW9uIGF0IGhpcyB3cm9uZywgDQorTmV3IHBhcnQgcHV0cyBvbjsgYW5kLCBhcyB0byBwYXNzaW9uIG1vdmVkLCANCitGbHVjdHVhdGVzIGRpc3R1cmJlZCwgeWV0IGNvbWVseSBhbmQgaW4gYWN0IA0KK1JhaXNlZCwgYXMgb2Ygc29tZSBncmVhdCBtYXR0ZXIgdG8gYmVnaW4uIA0KK0FzIHdoZW4gb2Ygb2xkIHNvbWUgb3JhdG9yIHJlbm93bmVkLCANCitJbiBBdGhlbnMgb3IgZnJlZSBSb21lLCB3aGVyZSBlbG9xdWVuY2UgDQorRmxvdXJpc2hlZCwgc2luY2UgbXV0ZSEgdG8gc29tZSBncmVhdCBjYXVzZSBhZGRyZXNzZWQsIA0KK1N0b29kIGluIGhpbXNlbGYgY29sbGVjdGVkOyB3aGlsZSBlYWNoIHBhcnQsIA0KK01vdGlvbiwgZWFjaCBhY3QsIHdvbiBhdWRpZW5jZSBlcmUgdGhlIHRvbmd1ZTsgDQorU29tZXRpbWVzIGluIGhpZ2h0aCBiZWdhbiwgYXMgbm8gZGVsYXkgDQorT2YgcHJlZmFjZSBicm9va2luZywgdGhyb3VnaCBoaXMgemVhbCBvZiByaWdodDogDQorU28gc3RhbmRpbmcsIG1vdmluZywgb3IgdG8gaGlnaHRoIHVwIGdyb3duLCANCitUaGUgVGVtcHRlciwgYWxsIGltcGFzc2lvbmVkLCB0aHVzIGJlZ2FuLiANCitPIHNhY3JlZCwgd2lzZSwgYW5kIHdpc2RvbS1naXZpbmcgUGxhbnQsIA0KK01vdGhlciBvZiBzY2llbmNlISBub3cgSSBmZWVsIHRoeSBwb3dlciANCitXaXRoaW4gbWUgY2xlYXI7IG5vdCBvbmx5IHRvIGRpc2Nlcm4gDQorVGhpbmdzIGluIHRoZWlyIGNhdXNlcywgYnV0IHRvIHRyYWNlIHRoZSB3YXlzIA0KK09mIGhpZ2hlc3QgYWdlbnRzLCBkZWVtZWQgaG93ZXZlciB3aXNlLiANCitRdWVlbiBvZiB0aGlzIHVuaXZlcnNlISBkbyBub3QgYmVsaWV2ZSANCitUaG9zZSByaWdpZCB0aHJlYXRzIG9mIGRlYXRoOiB5ZSBzaGFsbCBub3QgZGllOiANCitIb3cgc2hvdWxkIHlvdT8gYnkgdGhlIGZydWl0PyBpdCBnaXZlcyB5b3UgbGlmZSANCitUbyBrbm93bGVkZ2U7IGJ5IHRoZSB0aHJlYXRlbmVyPyBsb29rIG9uIG1lLCANCitNZSwgd2hvIGhhdmUgdG91Y2hlZCBhbmQgdGFzdGVkOyB5ZXQgYm90aCBsaXZlLCANCitBbmQgbGlmZSBtb3JlIHBlcmZlY3QgaGF2ZSBhdHRhaW5lZCB0aGFuIEZhdGUgDQorTWVhbnQgbWUsIGJ5IHZlbnR1cmluZyBoaWdoZXIgdGhhbiBteSBsb3QuIA0KK1NoYWxsIHRoYXQgYmUgc2h1dCB0byBNYW4sIHdoaWNoIHRvIHRoZSBCZWFzdCANCitJcyBvcGVuPyBvciB3aWxsIEdvZCBpbmNlbnNlIGhpcyBpcmUgDQorRm9yIHN1Y2ggYSBwZXR0eSB0cmVzcGFzcz8gYW5kIG5vdCBwcmFpc2UgDQorUmF0aGVyIHlvdXIgZGF1bnRsZXNzIHZpcnR1ZSwgd2hvbSB0aGUgcGFpbiANCitPZiBkZWF0aCBkZW5vdW5jZWQsIHdoYXRldmVyIHRoaW5nIGRlYXRoIGJlLCANCitEZXRlcnJlZCBub3QgZnJvbSBhY2hpZXZpbmcgd2hhdCBtaWdodCBsZWFkIA0KK1RvIGhhcHBpZXIgbGlmZSwga25vd2xlZGdlIG9mIGdvb2QgYW5kIGV2aWw7IA0KK09mIGdvb2QsIGhvdyBqdXN0PyBvZiBldmlsLCBpZiB3aGF0IGlzIGV2aWwgDQorQmUgcmVhbCwgd2h5IG5vdCBrbm93biwgc2luY2UgZWFzaWVyIHNodW5uZWQ/IA0KK0dvZCB0aGVyZWZvcmUgY2Fubm90IGh1cnQgeWUsIGFuZCBiZSBqdXN0OyANCitOb3QganVzdCwgbm90IEdvZDsgbm90IGZlYXJlZCB0aGVuLCBub3Igb2JleWVkOiANCitZb3VyIGZlYXIgaXRzZWxmIG9mIGRlYXRoIHJlbW92ZXMgdGhlIGZlYXIuIA0KK1doeSB0aGVuIHdhcyB0aGlzIGZvcmJpZD8gIFdoeSwgYnV0IHRvIGF3ZTsgDQorV2h5LCBidXQgdG8ga2VlcCB5ZSBsb3cgYW5kIGlnbm9yYW50LCANCitIaXMgd29yc2hpcHBlcnM/ICBIZSBrbm93cyB0aGF0IGluIHRoZSBkYXkgDQorWWUgZWF0IHRoZXJlb2YsIHlvdXIgZXllcyB0aGF0IHNlZW0gc28gY2xlYXIsIA0KK1lldCBhcmUgYnV0IGRpbSwgc2hhbGwgcGVyZmVjdGx5IGJlIHRoZW4gDQorT3BlbmVkIGFuZCBjbGVhcmVkLCBhbmQgeWUgc2hhbGwgYmUgYXMgR29kcywgDQorS25vd2luZyBib3RoIGdvb2QgYW5kIGV2aWwsIGFzIHRoZXkga25vdy4gDQorVGhhdCB5ZSBzaGFsbCBiZSBhcyBHb2RzLCBzaW5jZSBJIGFzIE1hbiwgDQorSW50ZXJuYWwgTWFuLCBpcyBidXQgcHJvcG9ydGlvbiBtZWV0OyANCitJLCBvZiBicnV0ZSwgaHVtYW47IHllLCBvZiBodW1hbiwgR29kcy4gDQorU28geWUgc2hhbGwgZGllIHBlcmhhcHMsIGJ5IHB1dHRpbmcgb2ZmIA0KK0h1bWFuLCB0byBwdXQgb24gR29kczsgZGVhdGggdG8gYmUgd2lzaGVkLCANCitUaG91Z2ggdGhyZWF0ZW5lZCwgd2hpY2ggbm8gd29yc2UgdGhhbiB0aGlzIGNhbiBicmluZy4gDQorQW5kIHdoYXQgYXJlIEdvZHMsIHRoYXQgTWFuIG1heSBub3QgYmVjb21lIA0KK0FzIHRoZXksIHBhcnRpY2lwYXRpbmcgR29kLWxpa2UgZm9vZD8gDQorVGhlIEdvZHMgYXJlIGZpcnN0LCBhbmQgdGhhdCBhZHZhbnRhZ2UgdXNlIA0KK09uIG91ciBiZWxpZWYsIHRoYXQgYWxsIGZyb20gdGhlbSBwcm9jZWVkczogDQorSSBxdWVzdGlvbiBpdDsgZm9yIHRoaXMgZmFpciBlYXJ0aCBJIHNlZSwgDQorV2FybWVkIGJ5IHRoZSBzdW4sIHByb2R1Y2luZyBldmVyeSBraW5kOyANCitUaGVtLCBub3RoaW5nOiBpZiB0aGV5IGFsbCB0aGluZ3MsIHdobyBlbmNsb3NlZCANCitLbm93bGVkZ2Ugb2YgZ29vZCBhbmQgZXZpbCBpbiB0aGlzIHRyZWUsIA0KK1RoYXQgd2hvc28gZWF0cyB0aGVyZW9mLCBmb3J0aHdpdGggYXR0YWlucyANCitXaXNkb20gd2l0aG91dCB0aGVpciBsZWF2ZT8gYW5kIHdoZXJlaW4gbGllcyANCitUaGUgb2ZmZW5jZSwgdGhhdCBNYW4gc2hvdWxkIHRodXMgYXR0YWluIHRvIGtub3c/IA0KK1doYXQgY2FuIHlvdXIga25vd2xlZGdlIGh1cnQgaGltLCBvciB0aGlzIHRyZWUgDQorSW1wYXJ0IGFnYWluc3QgaGlzIHdpbGwsIGlmIGFsbCBiZSBoaXM/IA0KK09yIGlzIGl0IGVudnk/IGFuZCBjYW4gZW52eSBkd2VsbCANCitJbiBoZWF2ZW5seSBicmVhc3RzPyAgVGhlc2UsIHRoZXNlLCBhbmQgbWFueSBtb3JlIA0KK0NhdXNlcyBpbXBvcnQgeW91ciBuZWVkIG9mIHRoaXMgZmFpciBmcnVpdC4gDQorR29kZGVzcyBodW1hbmUsIHJlYWNoIHRoZW4sIGFuZCBmcmVlbHkgdGFzdGUhIA0KK0hlIGVuZGVkOyBhbmQgaGlzIHdvcmRzLCByZXBsZXRlIHdpdGggZ3VpbGUsIA0KK0ludG8gaGVyIGhlYXJ0IHRvbyBlYXN5IGVudHJhbmNlIHdvbjogDQorRml4ZWQgb24gdGhlIGZydWl0IHNoZSBnYXplZCwgd2hpY2ggdG8gYmVob2xkIA0KK01pZ2h0IHRlbXB0IGFsb25lOyBhbmQgaW4gaGVyIGVhcnMgdGhlIHNvdW5kIA0KK1lldCBydW5nIG9mIGhpcyBwZXJzdWFzaXZlIHdvcmRzLCBpbXByZWduZWQgDQorV2l0aCByZWFzb24sIHRvIGhlciBzZWVtaW5nLCBhbmQgd2l0aCB0cnV0aDogDQorTWVhbiB3aGlsZSB0aGUgaG91ciBvZiBub29uIGRyZXcgb24sIGFuZCB3YWtlZCANCitBbiBlYWdlciBhcHBldGl0ZSwgcmFpc2VkIGJ5IHRoZSBzbWVsbCANCitTbyBzYXZvdXJ5IG9mIHRoYXQgZnJ1aXQsIHdoaWNoIHdpdGggZGVzaXJlLCANCitJbmNsaW5hYmxlIG5vdyBncm93biB0byB0b3VjaCBvciB0YXN0ZSwgDQorU29saWNpdGVkIGhlciBsb25naW5nIGV5ZTsgeWV0IGZpcnN0IA0KK1BhdXNpbmcgYSB3aGlsZSwgdGh1cyB0byBoZXJzZWxmIHNoZSBtdXNlZC4gDQorR3JlYXQgYXJlIHRoeSB2aXJ0dWVzLCBkb3VidGxlc3MsIGJlc3Qgb2YgZnJ1aXRzLCANCitUaG91Z2gga2VwdCBmcm9tIG1hbiwgYW5kIHdvcnRoeSB0byBiZSBhZG1pcmVkOyANCitXaG9zZSB0YXN0ZSwgdG9vIGxvbmcgZm9yYm9ybiwgYXQgZmlyc3QgYXNzYXkgDQorR2F2ZSBlbG9jdXRpb24gdG8gdGhlIG11dGUsIGFuZCB0YXVnaHQgDQorVGhlIHRvbmd1ZSBub3QgbWFkZSBmb3Igc3BlZWNoIHRvIHNwZWFrIHRoeSBwcmFpc2U6IA0KK1RoeSBwcmFpc2UgaGUgYWxzbywgd2hvIGZvcmJpZHMgdGh5IHVzZSwgDQorQ29uY2VhbHMgbm90IGZyb20gdXMsIG5hbWluZyB0aGVlIHRoZSB0cmVlIA0KK09mIGtub3dsZWRnZSwga25vd2xlZGdlIGJvdGggb2YgZ29vZCBhbmQgZXZpbDsgDQorRm9yYmlkcyB1cyB0aGVuIHRvIHRhc3RlISBidXQgaGlzIGZvcmJpZGRpbmcgDQorQ29tbWVuZHMgdGhlZSBtb3JlLCB3aGlsZSBpdCBpbmZlcnMgdGhlIGdvb2QgDQorQnkgdGhlZSBjb21tdW5pY2F0ZWQsIGFuZCBvdXIgd2FudDogDQorRm9yIGdvb2QgdW5rbm93biBzdXJlIGlzIG5vdCBoYWQ7IG9yLCBoYWQgDQorQW5kIHlldCB1bmtub3duLCBpcyBhcyBub3QgaGFkIGF0IGFsbC4gDQorSW4gcGxhaW4gdGhlbiwgd2hhdCBmb3JiaWRzIGhlIGJ1dCB0byBrbm93LCANCitGb3JiaWRzIHVzIGdvb2QsIGZvcmJpZHMgdXMgdG8gYmUgd2lzZT8gDQorU3VjaCBwcm9oaWJpdGlvbnMgYmluZCBub3QuICBCdXQsIGlmIGRlYXRoIA0KK0JpbmQgdXMgd2l0aCBhZnRlci1iYW5kcywgd2hhdCBwcm9maXRzIHRoZW4gDQorT3VyIGlud2FyZCBmcmVlZG9tPyAgSW4gdGhlIGRheSB3ZSBlYXQgDQorT2YgdGhpcyBmYWlyIGZydWl0LCBvdXIgZG9vbSBpcywgd2Ugc2hhbGwgZGllISANCitIb3cgZGllcyB0aGUgU2VycGVudD8gaGUgaGF0aCBlYXRlbiBhbmQgbGl2ZXMsIA0KK0FuZCBrbm93cywgYW5kIHNwZWFrcywgYW5kIHJlYXNvbnMsIGFuZCBkaXNjZXJucywgDQorSXJyYXRpb25hbCB0aWxsIHRoZW4uICBGb3IgdXMgYWxvbmUgDQorV2FzIGRlYXRoIGludmVudGVkPyBvciB0byB1cyBkZW5pZWQgDQorVGhpcyBpbnRlbGxlY3R1YWwgZm9vZCwgZm9yIGJlYXN0cyByZXNlcnZlZD8gDQorRm9yIGJlYXN0cyBpdCBzZWVtczogeWV0IHRoYXQgb25lIGJlYXN0IHdoaWNoIGZpcnN0IA0KK0hhdGggdGFzdGVkIGVudmllcyBub3QsIGJ1dCBicmluZ3Mgd2l0aCBqb3kgDQorVGhlIGdvb2QgYmVmYWxsZW4gaGltLCBhdXRob3IgdW5zdXNwZWN0LCANCitGcmllbmRseSB0byBtYW4sIGZhciBmcm9tIGRlY2VpdCBvciBndWlsZS4gDQorV2hhdCBmZWFyIEkgdGhlbj8gcmF0aGVyLCB3aGF0IGtub3cgdG8gZmVhciANCitVbmRlciB0aGlzIGlnbm9yYW5jZSBvZiBnb29kIGFuZCBldmlsLCANCitPZiBHb2Qgb3IgZGVhdGgsIG9mIGxhdyBvciBwZW5hbHR5PyANCitIZXJlIGdyb3dzIHRoZSBjdXJlIG9mIGFsbCwgdGhpcyBmcnVpdCBkaXZpbmUsIA0KK0ZhaXIgdG8gdGhlIGV5ZSwgaW52aXRpbmcgdG8gdGhlIHRhc3RlLCANCitPZiB2aXJ0dWUgdG8gbWFrZSB3aXNlOiAgV2hhdCBoaW5kZXJzIHRoZW4gDQorVG8gcmVhY2gsIGFuZCBmZWVkIGF0IG9uY2UgYm90aCBib2R5IGFuZCBtaW5kPyANCitTbyBzYXlpbmcsIGhlciByYXNoIGhhbmQgaW4gZXZpbCBob3VyIA0KK0ZvcnRoIHJlYWNoaW5nIHRvIHRoZSBmcnVpdCwgc2hlIHBsdWNrZWQsIHNoZSBlYXQhIA0KK0VhcnRoIGZlbHQgdGhlIHdvdW5kOyBhbmQgTmF0dXJlIGZyb20gaGVyIHNlYXQsIA0KK1NpZ2hpbmcgdGhyb3VnaCBhbGwgaGVyIHdvcmtzLCBnYXZlIHNpZ25zIG9mIHdvZSwgDQorVGhhdCBhbGwgd2FzIGxvc3QuICBCYWNrIHRvIHRoZSB0aGlja2V0IHNsdW5rIA0KK1RoZSBndWlsdHkgU2VycGVudDsgYW5kIHdlbGwgbWlnaHQ7Zm9yIEV2ZSwgDQorSW50ZW50IG5vdyB3aG9sbHkgb24gaGVyIHRhc3RlLCBub3VnaHQgZWxzZSANCitSZWdhcmRlZDsgc3VjaCBkZWxpZ2h0IHRpbGwgdGhlbiwgYXMgc2VlbWVkLCANCitJbiBmcnVpdCBzaGUgbmV2ZXIgdGFzdGVkLCB3aGV0aGVyIHRydWUgDQorT3IgZmFuY2llZCBzbywgdGhyb3VnaCBleHBlY3RhdGlvbiBoaWdoIA0KK09mIGtub3dsZWRnZTsgbm90IHdhcyBHb2RoZWFkIGZyb20gaGVyIHRob3VnaHQuIA0KK0dyZWVkaWx5IHNoZSBpbmdvcmdlZCB3aXRob3V0IHJlc3RyYWludCwgDQorQW5kIGtuZXcgbm90IGVhdGluZyBkZWF0aDogIFNhdGlhdGUgYXQgbGVuZ3RoLCANCitBbmQgaGlnaHRlbmVkIGFzIHdpdGggd2luZSwgam9jdW5kIGFuZCBib29uLCANCitUaHVzIHRvIGhlcnNlbGYgc2hlIHBsZWFzaW5nbHkgYmVnYW4uIA0KK08gc292cmFuLCB2aXJ0dW91cywgcHJlY2lvdXMgb2YgYWxsIHRyZWVzIA0KK0luIFBhcmFkaXNlISBvZiBvcGVyYXRpb24gYmxlc3QgDQorVG8gc2FwaWVuY2UsIGhpdGhlcnRvIG9ic2N1cmVkLCBpbmZhbWVkLiANCitBbmQgdGh5IGZhaXIgZnJ1aXQgbGV0IGhhbmcsIGFzIHRvIG5vIGVuZCANCitDcmVhdGVkOyBidXQgaGVuY2Vmb3J0aCBteSBlYXJseSBjYXJlLCANCitOb3Qgd2l0aG91dCBzb25nLCBlYWNoIG1vcm5pbmcsIGFuZCBkdWUgcHJhaXNlLCANCitTaGFsbCB0ZW5kIHRoZWUsIGFuZCB0aGUgZmVydGlsZSBidXJkZW4gZWFzZSANCitPZiB0aHkgZnVsbCBicmFuY2hlcyBvZmZlcmVkIGZyZWUgdG8gYWxsOyANCitUaWxsLCBkaWV0ZWQgYnkgdGhlZSwgSSBncm93IG1hdHVyZSANCitJbiBrbm93bGVkZ2UsIGFzIHRoZSBHb2RzLCB3aG8gYWxsIHRoaW5ncyBrbm93OyANCitUaG91Z2ggb3RoZXJzIGVudnkgd2hhdCB0aGV5IGNhbm5vdCBnaXZlOiANCitGb3IsIGhhZCB0aGUgZ2lmdCBiZWVuIHRoZWlycywgaXQgaGFkIG5vdCBoZXJlIA0KK1RodXMgZ3Jvd24uICBFeHBlcmllbmNlLCBuZXh0LCB0byB0aGVlIEkgb3dlLCANCitCZXN0IGd1aWRlOyBub3QgZm9sbG93aW5nIHRoZWUsIEkgaGFkIHJlbWFpbmVkIA0KK0luIGlnbm9yYW5jZTsgdGhvdSBvcGVuZXN0IHdpc2RvbSdzIHdheSwgDQorQW5kIGdpdmVzdCBhY2Nlc3MsIHRob3VnaCBzZWNyZXQgc2hlIHJldGlyZS4gDQorQW5kIEkgcGVyaGFwcyBhbSBzZWNyZXQ6IEhlYXZlbiBpcyBoaWdoLCANCitIaWdoLCBhbmQgcmVtb3RlIHRvIHNlZSBmcm9tIHRoZW5jZSBkaXN0aW5jdCANCitFYWNoIHRoaW5nIG9uIEVhcnRoOyBhbmQgb3RoZXIgY2FyZSBwZXJoYXBzIA0KK01heSBoYXZlIGRpdmVydGVkIGZyb20gY29udGludWFsIHdhdGNoIA0KK091ciBncmVhdCBGb3JiaWRkZXIsIHNhZmUgd2l0aCBhbGwgaGlzIHNwaWVzIA0KK0Fib3V0IGhpbS4gIEJ1dCB0byBBZGFtIGluIHdoYXQgc29ydCANCitTaGFsbCBJIGFwcGVhcj8gc2hhbGwgSSB0byBoaW0gbWFrZSBrbm93biANCitBcyB5ZXQgbXkgY2hhbmdlLCBhbmQgZ2l2ZSBoaW0gdG8gcGFydGFrZSANCitGdWxsIGhhcHBpbmVzcyB3aXRoIG1lLCBvciByYXRoZXIgbm90LCANCitCdXQga2VlcHMgdGhlIG9kZHMgb2Yga25vd2xlZGdlIGluIG15IHBvd2VyIA0KK1dpdGhvdXQgY29wYXJ0bmVyPyBzbyB0byBhZGQgd2hhdCB3YW50cyANCitJbiBmZW1hbGUgc2V4LCB0aGUgbW9yZSB0byBkcmF3IGhpcyBsb3ZlLCANCitBbmQgcmVuZGVyIG1lIG1vcmUgZXF1YWw7IGFuZCBwZXJoYXBzLCANCitBIHRoaW5nIG5vdCB1bmRlc2lyYWJsZSwgc29tZXRpbWUgDQorU3VwZXJpb3VyOyBmb3IsIGluZmVyaW91ciwgd2hvIGlzIGZyZWUgDQorVGhpcyBtYXkgYmUgd2VsbDogIEJ1dCB3aGF0IGlmIEdvZCBoYXZlIHNlZW4sIA0KK0FuZCBkZWF0aCBlbnN1ZT8gdGhlbiBJIHNoYWxsIGJlIG5vIG1vcmUhIA0KK0FuZCBBZGFtLCB3ZWRkZWQgdG8gYW5vdGhlciBFdmUsIA0KK1NoYWxsIGxpdmUgd2l0aCBoZXIgZW5qb3lpbmcsIEkgZXh0aW5jdDsgDQorQSBkZWF0aCB0byB0aGluayEgIENvbmZpcm1lZCB0aGVuIEkgcmVzb2x2ZSwgDQorQWRhbSBzaGFsbCBzaGFyZSB3aXRoIG1lIGluIGJsaXNzIG9yIHdvZTogDQorU28gZGVhciBJIGxvdmUgaGltLCB0aGF0IHdpdGggaGltIGFsbCBkZWF0aHMgDQorSSBjb3VsZCBlbmR1cmUsIHdpdGhvdXQgaGltIGxpdmUgbm8gbGlmZS4gDQorU28gc2F5aW5nLCBmcm9tIHRoZSB0cmVlIGhlciBzdGVwIHNoZSB0dXJuZWQ7IA0KK0J1dCBmaXJzdCBsb3cgcmV2ZXJlbmNlIGRvbmUsIGFzIHRvIHRoZSBQb3dlciANCitUaGF0IGR3ZWx0IHdpdGhpbiwgd2hvc2UgcHJlc2VuY2UgaGFkIGluZnVzZWQgDQorSW50byB0aGUgcGxhbnQgc2NpZW50aWFsIHNhcCwgZGVyaXZlZCANCitGcm9tIG5lY3RhciwgZHJpbmsgb2YgR29kcy4gIEFkYW0gdGhlIHdoaWxlLCANCitXYWl0aW5nIGRlc2lyb3VzIGhlciByZXR1cm4sIGhhZCB3b3ZlIA0KK09mIGNob2ljZXN0IGZsb3dlcnMgYSBnYXJsYW5kLCB0byBhZG9ybiANCitIZXIgdHJlc3NlcywgYW5kIGhlciBydXJhbCBsYWJvdXJzIGNyb3duOyANCitBcyByZWFwZXJzIG9mdCBhcmUgd29udCB0aGVpciBoYXJ2ZXN0LXF1ZWVuLiANCitHcmVhdCBqb3kgaGUgcHJvbWlzZWQgdG8gaGlzIHRob3VnaHRzLCBhbmQgbmV3IA0KK1NvbGFjZSBpbiBoZXIgcmV0dXJuLCBzbyBsb25nIGRlbGF5ZWQ6IA0KK1lldCBvZnQgaGlzIGhlYXJ0LCBkaXZpbmUgb2Ygc29tZXRoaW5nIGlsbCwgDQorTWlzZ2F2ZSBoaW07IGhlIHRoZSBmYWx0ZXJpbmcgbWVhc3VyZSBmZWx0OyANCitBbmQgZm9ydGggdG8gbWVldCBoZXIgd2VudCwgdGhlIHdheSBzaGUgdG9vayANCitUaGF0IG1vcm4gd2hlbiBmaXJzdCB0aGV5IHBhcnRlZDogYnkgdGhlIHRyZWUgDQorT2Yga25vd2xlZGdlIGhlIG11c3QgcGFzczsgdGhlcmUgaGUgaGVyIG1ldCwgDQorU2NhcmNlIGZyb20gdGhlIHRyZWUgcmV0dXJuaW5nOyBpbiBoZXIgaGFuZCANCitBIGJvdWdoIG9mIGZhaXJlc3QgZnJ1aXQsIHRoYXQgZG93bnkgc21pbGVkLCANCitOZXcgZ2F0aGVyZWQsIGFuZCBhbWJyb3NpYWwgc21lbGwgZGlmZnVzZWQuIA0KK1RvIGhpbSBzaGUgaGFzdGVkOyBpbiBoZXIgZmFjZSBleGN1c2UgDQorQ2FtZSBwcm9sb2d1ZSwgYW5kIGFwb2xvZ3kgdG9vIHByb21wdDsgDQorV2hpY2gsIHdpdGggYmxhbmQgd29yZHMgYXQgd2lsbCwgc2hlIHRodXMgYWRkcmVzc2VkLiANCitIYXN0IHRob3Ugbm90IHdvbmRlcmVkLCBBZGFtLCBhdCBteSBzdGF5PyANCitUaGVlIEkgaGF2ZSBtaXNzZWQsIGFuZCB0aG91Z2h0IGl0IGxvbmcsIGRlcHJpdmVkIA0KK1RoeSBwcmVzZW5jZTsgYWdvbnkgb2YgbG92ZSB0aWxsIG5vdyANCitOb3QgZmVsdCwgbm9yIHNoYWxsIGJlIHR3aWNlOyBmb3IgbmV2ZXIgbW9yZSANCitNZWFuIEkgdG8gdHJ5LCB3aGF0IHJhc2ggdW50cmllZCBJIHNvdWdodCwgDQorVGhlIHBhaW4gb2YgYWJzZW5jZSBmcm9tIHRoeSBzaWdodC4gIEJ1dCBzdHJhbmdlIA0KK0hhdGggYmVlbiB0aGUgY2F1c2UsIGFuZCB3b25kZXJmdWwgdG8gaGVhcjogDQorVGhpcyB0cmVlIGlzIG5vdCwgYXMgd2UgYXJlIHRvbGQsIGEgdHJlZSANCitPZiBkYW5nZXIgdGFzdGVkLCBub3IgdG8gZXZpbCB1bmtub3duIA0KK09wZW5pbmcgdGhlIHdheSwgYnV0IG9mIGRpdmluZSBlZmZlY3QgDQorVG8gb3BlbiBleWVzLCBhbmQgbWFrZSB0aGVtIEdvZHMgd2hvIHRhc3RlOyANCitBbmQgaGF0aCBiZWVuIHRhc3RlZCBzdWNoOiAgVGhlIHNlcnBlbnQgd2lzZSwgDQorT3Igbm90IHJlc3RyYWluZWQgYXMgd2UsIG9yIG5vdCBvYmV5aW5nLCANCitIYXRoIGVhdGVuIG9mIHRoZSBmcnVpdDsgYW5kIGlzIGJlY29tZSwgDQorTm90IGRlYWQsIGFzIHdlIGFyZSB0aHJlYXRlbmVkLCBidXQgdGhlbmNlZm9ydGggDQorRW5kdWVkIHdpdGggaHVtYW4gdm9pY2UgYW5kIGh1bWFuIHNlbnNlLCANCitSZWFzb25pbmcgdG8gYWRtaXJhdGlvbjsgYW5kIHdpdGggbWUgDQorUGVyc3Vhc2l2ZWx5IGhhdGggc28gcHJldmFpbGVkLCB0aGF0IEkgDQorSGF2ZSBhbHNvIHRhc3RlZCwgYW5kIGhhdmUgYWxzbyBmb3VuZCANCitUaGUgZWZmZWN0cyB0byBjb3JyZXNwb25kOyBvcGVuZXIgbWluZSBleWVzLCANCitEaW0gZXJzdCwgZGlsYXRlZCBzcGlyaXRzLCBhbXBsZXIgaGVhcnQsIA0KK0FuZCBncm93aW5nIHVwIHRvIEdvZGhlYWQ7IHdoaWNoIGZvciB0aGVlIA0KK0NoaWVmbHkgSSBzb3VnaHQsIHdpdGhvdXQgdGhlZSBjYW4gZGVzcGlzZS4gDQorRm9yIGJsaXNzLCBhcyB0aG91IGhhc3QgcGFydCwgdG8gbWUgaXMgYmxpc3M7IA0KK1RlZGlvdXMsIHVuc2hhcmVkIHdpdGggdGhlZSwgYW5kIG9kaW91cyBzb29uLiANCitUaG91IHRoZXJlZm9yZSBhbHNvIHRhc3RlLCB0aGF0IGVxdWFsIGxvdCANCitNYXkgam9pbiB1cywgZXF1YWwgam95LCBhcyBlcXVhbCBsb3ZlOyANCitMZXN0LCB0aG91IG5vdCB0YXN0aW5nLCBkaWZmZXJlbnQgZGVncmVlIA0KK0Rpc2pvaW4gdXMsIGFuZCBJIHRoZW4gdG9vIGxhdGUgcmVub3VuY2UgDQorRGVpdHkgZm9yIHRoZWUsIHdoZW4gRmF0ZSB3aWxsIG5vdCBwZXJtaXQuIA0KK1RodXMgRXZlIHdpdGggY291bnRlbmFuY2UgYmxpdGhlIGhlciBzdG9yeSB0b2xkOyANCitCdXQgaW4gaGVyIGNoZWVrIGRpc3RlbXBlciBmbHVzaGluZyBnbG93ZWQuIA0KK09uIHRoZSBvdGhlciBzaWRlIEFkYW0sIHNvb24gYXMgaGUgaGVhcmQgDQorVGhlIGZhdGFsIHRyZXNwYXNzIGRvbmUgYnkgRXZlLCBhbWF6ZWQsIA0KK0FzdG9uaWVkIHN0b29kIGFuZCBibGFuaywgd2hpbGUgaG9ycm91ciBjaGlsbCANCitSYW4gdGhyb3VnaCBoaXMgdmVpbnMsIGFuZCBhbGwgaGlzIGpvaW50cyByZWxheGVkOyANCitGcm9tIGhpcyBzbGFjayBoYW5kIHRoZSBnYXJsYW5kIHdyZWF0aGVkIGZvciBFdmUgDQorRG93biBkcm9wdCwgYW5kIGFsbCB0aGUgZmFkZWQgcm9zZXMgc2hlZDogDQorU3BlZWNobGVzcyBoZSBzdG9vZCBhbmQgcGFsZSwgdGlsbCB0aHVzIGF0IGxlbmd0aCANCitGaXJzdCB0byBoaW1zZWxmIGhlIGlud2FyZCBzaWxlbmNlIGJyb2tlLiANCitPIGZhaXJlc3Qgb2YgQ3JlYXRpb24sIGxhc3QgYW5kIGJlc3QgDQorT2YgYWxsIEdvZCdzIHdvcmtzLCBDcmVhdHVyZSBpbiB3aG9tIGV4Y2VsbGVkIA0KK1doYXRldmVyIGNhbiB0byBzaWdodCBvciB0aG91Z2h0IGJlIGZvcm1lZCwgDQorSG9seSwgZGl2aW5lLCBnb29kLCBhbWlhYmxlLCBvciBzd2VldCEgDQorSG93IGFydCB0aG91IGxvc3QhIGhvdyBvbiBhIHN1ZGRlbiBsb3N0LCANCitEZWZhY2VkLCBkZWZsb3dlcmVkLCBhbmQgbm93IHRvIGRlYXRoIGRldm90ZSEgDQorUmF0aGVyLCBob3cgaGFzdCB0aG91IHlpZWxkZWQgdG8gdHJhbnNncmVzcyANCitUaGUgc3RyaWN0IGZvcmJpZGRhbmNlLCBob3cgdG8gdmlvbGF0ZSANCitUaGUgc2FjcmVkIGZydWl0IGZvcmJpZGRlbiEgIFNvbWUgY3Vyc2VkIGZyYXVkIA0KK09mIGVuZW15IGhhdGggYmVndWlsZWQgdGhlZSwgeWV0IHVua25vd24sIA0KK0FuZCBtZSB3aXRoIHRoZWUgaGF0aCBydWluZWQ7IGZvciB3aXRoIHRoZWUgDQorQ2VydGFpbiBteSByZXNvbHV0aW9uIGlzIHRvIGRpZTogDQorSG93IGNhbiBJIGxpdmUgd2l0aG91dCB0aGVlISBob3cgZm9yZWdvIA0KK1RoeSBzd2VldCBjb252ZXJzZSwgYW5kIGxvdmUgc28gZGVhcmx5IGpvaW5lZCwgDQorVG8gbGl2ZSBhZ2FpbiBpbiB0aGVzZSB3aWxkIHdvb2RzIGZvcmxvcm4hIA0KK1Nob3VsZCBHb2QgY3JlYXRlIGFub3RoZXIgRXZlLCBhbmQgSSANCitBbm90aGVyIHJpYiBhZmZvcmQsIHlldCBsb3NzIG9mIHRoZWUgDQorV291bGQgbmV2ZXIgZnJvbSBteSBoZWFydDogbm8sIG5vIUkgZmVlbCANCitUaGUgbGluayBvZiBOYXR1cmUgZHJhdyBtZTogZmxlc2ggb2YgZmxlc2gsIA0KK0JvbmUgb2YgbXkgYm9uZSB0aG91IGFydCwgYW5kIGZyb20gdGh5IHN0YXRlIA0KK01pbmUgbmV2ZXIgc2hhbGwgYmUgcGFydGVkLCBibGlzcyBvciB3b2UuIA0KK1NvIGhhdmluZyBzYWlkLCBhcyBvbmUgZnJvbSBzYWQgZGlzbWF5IA0KK1JlY29tZm9ydGVkLCBhbmQgYWZ0ZXIgdGhvdWdodHMgZGlzdHVyYmVkIA0KK1N1Ym1pdHRpbmcgdG8gd2hhdCBzZWVtZWQgcmVtZWRpbGVzcywgDQorVGh1cyBpbiBjYWxtIG1vb2QgaGlzIHdvcmRzIHRvIEV2ZSBoZSB0dXJuZWQuIA0KK0JvbGQgZGVlZCB0aG91IGhhc3QgcHJlc3VtZWQsIGFkdmVudHVyb3VzIEV2ZSwgDQorQW5kIHBlcmlsIGdyZWF0IHByb3Zva2VkLCB3aG8gdGh1cyBoYXN0IGRhcmVkLCANCitIYWQgaXQgYmVlbiBvbmx5IGNvdmV0aW5nIHRvIGV5ZSANCitUaGF0IHNhY3JlZCBmcnVpdCwgc2FjcmVkIHRvIGFic3RpbmVuY2UsIA0KK011Y2ggbW9yZSB0byB0YXN0ZSBpdCB1bmRlciBiYW4gdG8gdG91Y2guIA0KK0J1dCBwYXN0IHdobyBjYW4gcmVjYWxsLCBvciBkb25lIHVuZG8/IA0KK05vdCBHb2QgT21uaXBvdGVudCwgbm9yIEZhdGU7IHlldCBzbyANCitQZXJoYXBzIHRob3Ugc2hhbHQgbm90IGRpZSwgcGVyaGFwcyB0aGUgZmFjdCANCitJcyBub3Qgc28gaGVpbm91cyBub3csIGZvcmV0YXN0ZWQgZnJ1aXQsIA0KK1Byb2ZhbmVkIGZpcnN0IGJ5IHRoZSBzZXJwZW50LCBieSBoaW0gZmlyc3QgDQorTWFkZSBjb21tb24sIGFuZCB1bmhhbGxvd2VkLCBlcmUgb3VyIHRhc3RlOyANCitOb3IgeWV0IG9uIGhpbSBmb3VuZCBkZWFkbHk7IHlldCBoZSBsaXZlczsgDQorTGl2ZXMsIGFzIHRob3Ugc2FpZHN0LCBhbmQgZ2FpbnMgdG8gbGl2ZSwgYXMgTWFuLCANCitIaWdoZXIgZGVncmVlIG9mIGxpZmU7IGluZHVjZW1lbnQgc3Ryb25nIA0KK1RvIHVzLCBhcyBsaWtlbHkgdGFzdGluZyB0byBhdHRhaW4gDQorUHJvcG9ydGlvbmFsIGFzY2VudDsgd2hpY2ggY2Fubm90IGJlIA0KK0J1dCB0byBiZSBHb2RzLCBvciBBbmdlbHMsIGRlbWktR29kcy4gDQorTm9yIGNhbiBJIHRoaW5rIHRoYXQgR29kLCBDcmVhdG9yIHdpc2UsIA0KK1Rob3VnaCB0aHJlYXRlbmluZywgd2lsbCBpbiBlYXJuZXN0IHNvIGRlc3Ryb3kgDQorVXMgaGlzIHByaW1lIGNyZWF0dXJlcywgZGlnbmlmaWVkIHNvIGhpZ2gsIA0KK1NldCBvdmVyIGFsbCBoaXMgd29ya3M7IHdoaWNoIGluIG91ciBmYWxsLCANCitGb3IgdXMgY3JlYXRlZCwgbmVlZHMgd2l0aCB1cyBtdXN0IGZhaWwsIA0KK0RlcGVuZGFudCBtYWRlOyBzbyBHb2Qgc2hhbGwgdW5jcmVhdGUsIA0KK0JlIGZydXN0cmF0ZSwgZG8sIHVuZG8sIGFuZCBsYWJvdXIgbG9zZTsgDQorTm90IHdlbGwgY29uY2VpdmVkIG9mIEdvZCwgd2hvLCB0aG91Z2ggaGlzIHBvd2VyIA0KK0NyZWF0aW9uIGNvdWxkIHJlcGVhdCwgeWV0IHdvdWxkIGJlIGxvdGggDQorVXMgdG8gYWJvbGlzaCwgbGVzdCB0aGUgQWR2ZXJzYXJ5IA0KK1RyaXVtcGgsIGFuZCBzYXk7ICJGaWNrbGUgdGhlaXIgc3RhdGUgd2hvbSBHb2QgDQorIk1vc3QgZmF2b3Vyczsgd2hvIGNhbiBwbGVhc2UgaGltIGxvbmc/IE1lIGZpcnN0IA0KKyJIZSBydWluZWQsIG5vdyBNYW5raW5kOyB3aG9tIHdpbGwgaGUgbmV4dD8iIA0KK01hdHRlciBvZiBzY29ybiwgbm90IHRvIGJlIGdpdmVuIHRoZSBGb2UuIA0KK0hvd2V2ZXIgSSB3aXRoIHRoZWUgaGF2ZSBmaXhlZCBteSBsb3QsIA0KK0NlcnRhaW4gdG8gdW5kZXJnbyBsaWtlIGRvb206ICBJZiBkZWF0aCANCitDb25zb3J0IHdpdGggdGhlZSwgZGVhdGggaXMgdG8gbWUgYXMgbGlmZTsgDQorU28gZm9yY2libGUgd2l0aGluIG15IGhlYXJ0IEkgZmVlbCANCitUaGUgYm9uZCBvZiBOYXR1cmUgZHJhdyBtZSB0byBteSBvd247IA0KK015IG93biBpbiB0aGVlLCBmb3Igd2hhdCB0aG91IGFydCBpcyBtaW5lOyANCitPdXIgc3RhdGUgY2Fubm90IGJlIHNldmVyZWQ7IHdlIGFyZSBvbmUsIA0KK09uZSBmbGVzaDsgdG8gbG9zZSB0aGVlIHdlcmUgdG8gbG9zZSBteXNlbGYuIA0KK1NvIEFkYW07IGFuZCB0aHVzIEV2ZSB0byBoaW0gcmVwbGllZC4gDQorTyBnbG9yaW91cyB0cmlhbCBvZiBleGNlZWRpbmcgbG92ZSwgDQorSWxsdXN0cmlvdXMgZXZpZGVuY2UsIGV4YW1wbGUgaGlnaCEgDQorRW5nYWdpbmcgbWUgdG8gZW11bGF0ZTsgYnV0LCBzaG9ydCANCitPZiB0aHkgcGVyZmVjdGlvbiwgaG93IHNoYWxsIEkgYXR0YWluLCANCitBZGFtLCBmcm9tIHdob3NlIGRlYXIgc2lkZSBJIGJvYXN0IG1lIHNwcnVuZywgDQorQW5kIGdsYWRseSBvZiBvdXIgdW5pb24gaGVhciB0aGVlIHNwZWFrLCANCitPbmUgaGVhcnQsIG9uZSBzb3VsIGluIGJvdGg7IHdoZXJlb2YgZ29vZCBwcm9vZiANCitUaGlzIGRheSBhZmZvcmRzLCBkZWNsYXJpbmcgdGhlZSByZXNvbHZlZCwgDQorUmF0aGVyIHRoYW4gZGVhdGgsIG9yIGF1Z2h0IHRoYW4gZGVhdGggbW9yZSBkcmVhZCwgDQorU2hhbGwgc2VwYXJhdGUgdXMsIGxpbmtlZCBpbiBsb3ZlIHNvIGRlYXIsIA0KK1RvIHVuZGVyZ28gd2l0aCBtZSBvbmUgZ3VpbHQsIG9uZSBjcmltZSwgDQorSWYgYW55IGJlLCBvZiB0YXN0aW5nIHRoaXMgZmFpciBmcnVpdDsgDQorV2hvc2UgdmlydHVlIGZvciBvZiBnb29kIHN0aWxsIGdvb2QgcHJvY2VlZHMsIA0KK0RpcmVjdCwgb3IgYnkgb2NjYXNpb24sIGhhdGggcHJlc2VudGVkIA0KK1RoaXMgaGFwcHkgdHJpYWwgb2YgdGh5IGxvdmUsIHdoaWNoIGVsc2UgDQorU28gZW1pbmVudGx5IG5ldmVyIGhhZCBiZWVuIGtub3duPyANCitXZXJlIGl0IEkgdGhvdWdodCBkZWF0aCBtZW5hY2VkIHdvdWxkIGVuc3VlIA0KK1RoaXMgbXkgYXR0ZW1wdCwgSSB3b3VsZCBzdXN0YWluIGFsb25lIA0KK1RoZSB3b3JzdCwgYW5kIG5vdCBwZXJzdWFkZSB0aGVlLCByYXRoZXIgZGllIA0KK0Rlc2VydGVkLCB0aGFuIG9ibGlnZSB0aGVlIHdpdGggYSBmYWN0IA0KK1Blcm5pY2lvdXMgdG8gdGh5IHBlYWNlOyBjaGllZmx5IGFzc3VyZWQgDQorUmVtYXJrYWJseSBzbyBsYXRlIG9mIHRoeSBzbyB0cnVlLCANCitTbyBmYWl0aGZ1bCwgbG92ZSB1bmVxdWFsbGVkOiBidXQgSSBmZWVsIA0KK0ZhciBvdGhlcndpc2UgdGhlIGV2ZW50OyBub3QgZGVhdGgsIGJ1dCBsaWZlIA0KK0F1Z21lbnRlZCwgb3BlbmVkIGV5ZXMsIG5ldyBob3BlcywgbmV3IGpveXMsIA0KK1Rhc3RlIHNvIGRpdmluZSwgdGhhdCB3aGF0IG9mIHN3ZWV0IGJlZm9yZSANCitIYXRoIHRvdWNoZWQgbXkgc2Vuc2UsIGZsYXQgc2VlbXMgdG8gdGhpcywgYW5kIGhhcnNoLiANCitPbiBteSBleHBlcmllbmNlLCBBZGFtLCBmcmVlbHkgdGFzdGUsIA0KK0FuZCBmZWFyIG9mIGRlYXRoIGRlbGl2ZXIgdG8gdGhlIHdpbmRzLiANCitTbyBzYXlpbmcsIHNoZSBlbWJyYWNlZCBoaW0sIGFuZCBmb3Igam95IA0KK1RlbmRlcmx5IHdlcHQ7IG11Y2ggd29uLCB0aGF0IGhlIGhpcyBsb3ZlIA0KK0hhZCBzbyBlbm5vYmxlZCwgYXMgb2YgY2hvaWNlIHRvIGluY3VyIA0KK0RpdmluZSBkaXNwbGVhc3VyZSBmb3IgaGVyIHNha2UsIG9yIGRlYXRoLiANCitJbiByZWNvbXBlbmNlIGZvciBzdWNoIGNvbXBsaWFuY2UgYmFkIA0KK1N1Y2ggcmVjb21wZW5jZSBiZXN0IG1lcml0cyBmcm9tIHRoZSBib3VnaCANCitTaGUgZ2F2ZSBoaW0gb2YgdGhhdCBmYWlyIGVudGljaW5nIGZydWl0IA0KK1dpdGggbGliZXJhbCBoYW5kOiBoZSBzY3J1cGxlZCBub3QgdG8gZWF0LCANCitBZ2FpbnN0IGhpcyBiZXR0ZXIga25vd2xlZGdlOyBub3QgZGVjZWl2ZWQsIA0KK0J1dCBmb25kbHkgb3ZlcmNvbWUgd2l0aCBmZW1hbGUgY2hhcm0uIA0KK0VhcnRoIHRyZW1ibGVkIGZyb20gaGVyIGVudHJhaWxzLCBhcyBhZ2FpbiANCitJbiBwYW5nczsgYW5kIE5hdHVyZSBnYXZlIGEgc2Vjb25kIGdyb2FuOyANCitTa3kgbG91cmVkOyBhbmQsIG11dHRlcmluZyB0aHVuZGVyLCBzb21lIHNhZCBkcm9wcyANCitXZXB0IGF0IGNvbXBsZXRpbmcgb2YgdGhlIG1vcnRhbCBzaW4gDQorT3JpZ2luYWw6IHdoaWxlIEFkYW0gdG9vayBubyB0aG91Z2h0LCANCitFYXRpbmcgaGlzIGZpbGw7IG5vciBFdmUgdG8gaXRlcmF0ZSANCitIZXIgZm9ybWVyIHRyZXNwYXNzIGZlYXJlZCwgdGhlIG1vcmUgdG8gc29vdGggDQorSGltIHdpdGggaGVyIGxvdmVkIHNvY2lldHk7IHRoYXQgbm93LCANCitBcyB3aXRoIG5ldyB3aW5lIGludG94aWNhdGVkIGJvdGgsIA0KK1RoZXkgc3dpbSBpbiBtaXJ0aCwgYW5kIGZhbmN5IHRoYXQgdGhleSBmZWVsIA0KK0RpdmluaXR5IHdpdGhpbiB0aGVtIGJyZWVkaW5nIHdpbmdzLCANCitXaGVyZXdpdGggdG8gc2Nvcm4gdGhlIGVhcnRoOiAgQnV0IHRoYXQgZmFsc2UgZnJ1aXQgDQorRmFyIG90aGVyIG9wZXJhdGlvbiBmaXJzdCBkaXNwbGF5ZWQsIA0KK0Nhcm5hbCBkZXNpcmUgaW5mbGFtaW5nOyBoZSBvbiBFdmUgDQorQmVnYW4gdG8gY2FzdCBsYXNjaXZpb3VzIGV5ZXM7IHNoZSBoaW0gDQorQXMgd2FudG9ubHkgcmVwYWlkOyBpbiBsdXN0IHRoZXkgYnVybjogDQorVGlsbCBBZGFtIHRodXMgJ2dhbiBFdmUgdG8gZGFsbGlhbmNlIG1vdmUuIA0KK0V2ZSwgbm93IEkgc2VlIHRob3UgYXJ0IGV4YWN0IG9mIHRhc3RlLCANCitBbmQgZWxlZ2FudCwgb2Ygc2FwaWVuY2Ugbm8gc21hbGwgcGFydDsgDQorU2luY2UgdG8gZWFjaCBtZWFuaW5nIHNhdm91ciB3ZSBhcHBseSwgDQorQW5kIHBhbGF0ZSBjYWxsIGp1ZGljaW91czsgSSB0aGUgcHJhaXNlIA0KK1lpZWxkIHRoZWUsIHNvIHdlbGwgdGhpcyBkYXkgdGhvdSBoYXN0IHB1cnZleWVkLiANCitNdWNoIHBsZWFzdXJlIHdlIGhhdmUgbG9zdCwgd2hpbGUgd2UgYWJzdGFpbmVkIA0KK0Zyb20gdGhpcyBkZWxpZ2h0ZnVsIGZydWl0LCBub3Iga25vd24gdGlsbCBub3cgDQorVHJ1ZSByZWxpc2gsIHRhc3Rpbmc7IGlmIHN1Y2ggcGxlYXN1cmUgYmUgDQorSW4gdGhpbmdzIHRvIHVzIGZvcmJpZGRlbiwgaXQgbWlnaHQgYmUgd2lzaGVkLCANCitGb3IgdGhpcyBvbmUgdHJlZSBoYWQgYmVlbiBmb3JiaWRkZW4gdGVuLiANCitCdXQgY29tZSwgc28gd2VsbCByZWZyZXNoZWQsIG5vdyBsZXQgdXMgcGxheSwgDQorQXMgbWVldCBpcywgYWZ0ZXIgc3VjaCBkZWxpY2lvdXMgZmFyZTsgDQorRm9yIG5ldmVyIGRpZCB0aHkgYmVhdXR5LCBzaW5jZSB0aGUgZGF5IA0KK0kgc2F3IHRoZWUgZmlyc3QgYW5kIHdlZGRlZCB0aGVlLCBhZG9ybmVkIA0KK1dpdGggYWxsIHBlcmZlY3Rpb25zLCBzbyBpbmZsYW1lIG15IHNlbnNlIA0KK1dpdGggYXJkb3VyIHRvIGVuam95IHRoZWUsIGZhaXJlciBub3cgDQorVGhhbiBldmVyOyBib3VudHkgb2YgdGhpcyB2aXJ0dW91cyB0cmVlISANCitTbyBzYWlkIGhlLCBhbmQgZm9yYm9yZSBub3QgZ2xhbmNlIG9yIHRveSANCitPZiBhbW9yb3VzIGludGVudDsgd2VsbCB1bmRlcnN0b29kIA0KK09mIEV2ZSwgd2hvc2UgZXllIGRhcnRlZCBjb250YWdpb3VzIGZpcmUuIA0KK0hlciBoYW5kIGhlIHNlaXNlZDsgYW5kIHRvIGEgc2hhZHkgYmFuaywgDQorVGhpY2sgb3Zlci1oZWFkIHdpdGggdmVyZGFudCByb29mIGltYm93ZXJlZCwgDQorSGUgbGVkIGhlciBub3RoaW5nIGxvdGg7IGZsb3dlcnMgd2VyZSB0aGUgY291Y2gsIA0KK1BhbnNpZXMsIGFuZCB2aW9sZXRzLCBhbmQgYXNwaG9kZWwsIA0KK0FuZCBoeWFjaW50aDsgIEVhcnRoJ3MgZnJlc2hlc3Qgc29mdGVzdCBsYXAuIA0KK1RoZXJlIHRoZXkgdGhlaXIgZmlsbCBvZiBsb3ZlIGFuZCBsb3ZlJ3MgZGlzcG9ydCANCitUb29rIGxhcmdlbHksIG9mIHRoZWlyIG11dHVhbCBndWlsdCB0aGUgc2VhbCwgDQorVGhlIHNvbGFjZSBvZiB0aGVpciBzaW47IHRpbGwgZGV3eSBzbGVlcCANCitPcHByZXNzZWQgdGhlbSwgd2VhcmllZCB3aXRoIHRoZWlyIGFtb3JvdXMgcGxheSwgDQorU29vbiBhcyB0aGUgZm9yY2Ugb2YgdGhhdCBmYWxsYWNpb3VzIGZydWl0LCANCitUaGF0IHdpdGggZXhoaWxhcmF0aW5nIHZhcG91ciBibGFuZCANCitBYm91dCB0aGVpciBzcGlyaXRzIGhhZCBwbGF5ZWQsIGFuZCBpbm1vc3QgcG93ZXJzIA0KK01hZGUgZXJyLCB3YXMgbm93IGV4aGFsZWQ7IGFuZCBncm9zc2VyIHNsZWVwLCANCitCcmVkIG9mIHVua2luZGx5IGZ1bWVzLCB3aXRoIGNvbnNjaW91cyBkcmVhbXMgDQorSW5jdW1iZXJlZCwgbm93IGhhZCBsZWZ0IHRoZW07IHVwIHRoZXkgcm9zZSANCitBcyBmcm9tIHVucmVzdDsgYW5kLCBlYWNoIHRoZSBvdGhlciB2aWV3aW5nLCANCitTb29uIGZvdW5kIHRoZWlyIGV5ZXMgaG93IG9wZW5lZCwgYW5kIHRoZWlyIG1pbmRzIA0KK0hvdyBkYXJrZW5lZDsgaW5ub2NlbmNlLCB0aGF0IGFzIGEgdmVpbCANCitIYWQgc2hhZG93ZWQgdGhlbSBmcm9tIGtub3dpbmcgaWxsLCB3YXMgZ29uZTsgDQorSnVzdCBjb25maWRlbmNlLCBhbmQgbmF0aXZlIHJpZ2h0ZW91c25lc3MsIA0KK0FuZCBob25vdXIsIGZyb20gYWJvdXQgdGhlbSwgbmFrZWQgbGVmdCANCitUbyBndWlsdHkgU2hhbWU7IGhlIGNvdmVyZWQsIGJ1dCBoaXMgcm9iZSANCitVbmNvdmVyZWQgbW9yZS4gIFNvIHJvc2UgdGhlIERhbml0ZSBzdHJvbmcsIA0KK0hlcmN1bGVhbiBTYW1zb24sIGZyb20gdGhlIGhhcmxvdC1sYXAgDQorT2YgUGhpbGlzdGVhbiBEYWxpbGFoLCBhbmQgd2FrZWQgDQorU2hvcm4gb2YgaGlzIHN0cmVuZ3RoLiAgVGhleSBkZXN0aXR1dGUgYW5kIGJhcmUgDQorT2YgYWxsIHRoZWlyIHZpcnR1ZTogIFNpbGVudCwgYW5kIGluIGZhY2UgDQorQ29uZm91bmRlZCwgbG9uZyB0aGV5IHNhdCwgYXMgc3RydWNrZW4gbXV0ZTogDQorVGlsbCBBZGFtLCB0aG91Z2ggbm90IGxlc3MgdGhhbiBFdmUgYWJhc2hlZCwgDQorQXQgbGVuZ3RoIGdhdmUgdXR0ZXJhbmNlIHRvIHRoZXNlIHdvcmRzIGNvbnN0cmFpbmVkLiANCitPIEV2ZSwgaW4gZXZpbCBob3VyIHRob3UgZGlkc3QgZ2l2ZSBlYXIgDQorVG8gdGhhdCBmYWxzZSB3b3JtLCBvZiB3aG9tc29ldmVyIHRhdWdodCANCitUbyBjb3VudGVyZmVpdCBNYW4ncyB2b2ljZTsgdHJ1ZSBpbiBvdXIgZmFsbCwgDQorRmFsc2UgaW4gb3VyIHByb21pc2VkIHJpc2luZzsgc2luY2Ugb3VyIGV5ZXMgDQorT3BlbmVkIHdlIGZpbmQgaW5kZWVkLCBhbmQgZmluZCB3ZSBrbm93IA0KK0JvdGggZ29vZCBhbmQgZXZpbDsgZ29vZCBsb3N0LCBhbmQgZXZpbCBnb3Q7IA0KK0JhZCBmcnVpdCBvZiBrbm93bGVkZ2UsIGlmIHRoaXMgYmUgdG8ga25vdzsgDQorV2hpY2ggbGVhdmVzIHVzIG5ha2VkIHRodXMsIG9mIGhvbm91ciB2b2lkLCANCitPZiBpbm5vY2VuY2UsIG9mIGZhaXRoLCBvZiBwdXJpdHksIA0KK091ciB3b250ZWQgb3JuYW1lbnRzIG5vdyBzb2lsZWQgYW5kIHN0YWluZWQsIA0KK0FuZCBpbiBvdXIgZmFjZXMgZXZpZGVudCB0aGUgc2lnbnMgDQorT2YgZm91bCBjb25jdXBpc2NlbmNlOyB3aGVuY2UgZXZpbCBzdG9yZTsgDQorRXZlbiBzaGFtZSwgdGhlIGxhc3Qgb2YgZXZpbHM7IG9mIHRoZSBmaXJzdCANCitCZSBzdXJlIHRoZW4uLS1Ib3cgc2hhbGwgSSBiZWhvbGQgdGhlIGZhY2UgDQorSGVuY2Vmb3J0aCBvZiBHb2Qgb3IgQW5nZWwsIGVyc3Qgd2l0aCBqb3kgDQorQW5kIHJhcHR1cmUgc28gb2Z0IGJlaGVsZD8gIFRob3NlIGhlYXZlbmx5IHNoYXBlcyANCitXaWxsIGRhenpsZSBub3cgdGhpcyBlYXJ0aGx5IHdpdGggdGhlaXIgYmxhemUgDQorSW5zdWZmZXJhYmx5IGJyaWdodC4gIE8hIG1pZ2h0IEkgaGVyZSANCitJbiBzb2xpdHVkZSBsaXZlIHNhdmFnZTsgaW4gc29tZSBnbGFkZSANCitPYnNjdXJlZCwgd2hlcmUgaGlnaGVzdCB3b29kcywgaW1wZW5ldHJhYmxlIA0KK1RvIHN0YXIgb3Igc3VuLWxpZ2h0LCBzcHJlYWQgdGhlaXIgdW1icmFnZSBicm9hZCANCitBbmQgYnJvd24gYXMgZXZlbmluZzogIENvdmVyIG1lLCB5ZSBQaW5lcyEgDQorWWUgQ2VkYXJzLCB3aXRoIGlubnVtZXJhYmxlIGJvdWdocyANCitIaWRlIG1lLCB3aGVyZSBJIG1heSBuZXZlciBzZWUgdGhlbSBtb3JlIS0tIA0KK0J1dCBsZXQgdXMgbm93LCBhcyBpbiBiYWQgcGxpZ2h0LCBkZXZpc2UgDQorV2hhdCBiZXN0IG1heSBmb3IgdGhlIHByZXNlbnQgc2VydmUgdG8gaGlkZSANCitUaGUgcGFydHMgb2YgZWFjaCBmcm9tIG90aGVyLCB0aGF0IHNlZW0gbW9zdCANCitUbyBzaGFtZSBvYm5veGlvdXMsIGFuZCB1bnNlZW1saWVzdCBzZWVuOyANCitTb21lIHRyZWUsIHdob3NlIGJyb2FkIHNtb290aCBsZWF2ZXMgdG9nZXRoZXIgc2V3ZWQsIA0KK0FuZCBnaXJkZWQgb24gb3VyIGxvaW5zLCBtYXkgY292ZXIgcm91bmQgDQorVGhvc2UgbWlkZGxlIHBhcnRzOyB0aGF0IHRoaXMgbmV3IGNvbWVyLCBTaGFtZSwgDQorVGhlcmUgc2l0IG5vdCwgYW5kIHJlcHJvYWNoIHVzIGFzIHVuY2xlYW4uIA0KK1NvIGNvdW5zZWxsZWQgaGUsIGFuZCBib3RoIHRvZ2V0aGVyIHdlbnQgDQorSW50byB0aGUgdGhpY2tlc3Qgd29vZDsgdGhlcmUgc29vbiB0aGV5IGNob3NlIA0KK1RoZSBmaWctdHJlZTsgbm90IHRoYXQga2luZCBmb3IgZnJ1aXQgcmVub3duZWQsIA0KK0J1dCBzdWNoIGFzIGF0IHRoaXMgZGF5LCB0byBJbmRpYW5zIGtub3duLCANCitJbiBNYWxhYmFyIG9yIERlY2FuIHNwcmVhZHMgaGVyIGFybXMgDQorQnJhbmNoaW5nIHNvIGJyb2FkIGFuZCBsb25nLCB0aGF0IGluIHRoZSBncm91bmQgDQorVGhlIGJlbmRlZCB0d2lncyB0YWtlIHJvb3QsIGFuZCBkYXVnaHRlcnMgZ3JvdyANCitBYm91dCB0aGUgbW90aGVyIHRyZWUsIGEgcGlsbGFyZWQgc2hhZGUgDQorSGlnaCBvdmVyLWFyY2hlZCwgYW5kIGVjaG9pbmcgd2Fsa3MgYmV0d2VlbjogDQorVGhlcmUgb2Z0IHRoZSBJbmRpYW4gaGVyZHNtYW4sIHNodW5uaW5nIGhlYXQsIA0KK1NoZWx0ZXJzIGluIGNvb2wsIGFuZCB0ZW5kcyBoaXMgcGFzdHVyaW5nIGhlcmRzIA0KK0F0IGxvb3AtaG9sZXMgY3V0IHRocm91Z2ggdGhpY2tlc3Qgc2hhZGU6ICBUaG9zZSBsZWF2ZXMgDQorVGhleSBnYXRoZXJlZCwgYnJvYWQgYXMgQW1hem9uaWFuIHRhcmdlOyANCitBbmQsIHdpdGggd2hhdCBza2lsbCB0aGV5IGhhZCwgdG9nZXRoZXIgc2V3ZWQsIA0KK1RvIGdpcmQgdGhlaXIgd2Fpc3Q7IHZhaW4gY292ZXJpbmcsIGlmIHRvIGhpZGUgDQorVGhlaXIgZ3VpbHQgYW5kIGRyZWFkZWQgc2hhbWUhICBPLCBob3cgdW5saWtlIA0KK1RvIHRoYXQgZmlyc3QgbmFrZWQgZ2xvcnkhICBTdWNoIG9mIGxhdGUgDQorQ29sdW1idXMgZm91bmQgdGhlIEFtZXJpY2FuLCBzbyBnaXJ0IA0KK1dpdGggZmVhdGhlcmVkIGNpbmN0dXJlOyBuYWtlZCBlbHNlLCBhbmQgd2lsZCANCitBbW9uZyB0aGUgdHJlZXMgb24gaXNsZXMgYW5kIHdvb2R5IHNob3Jlcy4gDQorVGh1cyBmZW5jZWQsIGFuZCwgYXMgdGhleSB0aG91Z2h0LCB0aGVpciBzaGFtZSBpbiBwYXJ0IA0KK0NvdmVyZWQsIGJ1dCBub3QgYXQgcmVzdCBvciBlYXNlIG9mIG1pbmQsIA0KK1RoZXkgc2F0IHRoZW0gZG93biB0byB3ZWVwOyBub3Igb25seSB0ZWFycyANCitSYWluZWQgYXQgdGhlaXIgZXllcywgYnV0IGhpZ2ggd2luZHMgd29yc2Ugd2l0aGluIA0KK0JlZ2FuIHRvIHJpc2UsIGhpZ2ggcGFzc2lvbnMsIGFuZ2VyLCBoYXRlLCANCitNaXN0cnVzdCwgc3VzcGljaW9uLCBkaXNjb3JkOyBhbmQgc2hvb2sgc29yZSANCitUaGVpciBpbndhcmQgc3RhdGUgb2YgbWluZCwgY2FsbSByZWdpb24gb25jZSANCitBbmQgZnVsbCBvZiBwZWFjZSwgbm93IHRvc3QgYW5kIHR1cmJ1bGVudDogDQorRm9yIFVuZGVyc3RhbmRpbmcgcnVsZWQgbm90LCBhbmQgdGhlIFdpbGwgDQorSGVhcmQgbm90IGhlciBsb3JlOyBib3RoIGluIHN1YmplY3Rpb24gbm93IA0KK1RvIHNlbnN1YWwgQXBwZXRpdGUsIHdobyBmcm9tIGJlbmVhdGggDQorVXN1cnBpbmcgb3ZlciBzb3ZyYW4gUmVhc29uIGNsYWltZWQgDQorU3VwZXJpb3VyIHN3YXk6IEZyb20gdGh1cyBkaXN0ZW1wZXJlZCBicmVhc3QsIA0KK0FkYW0sIGVzdHJhbmdlZCBpbiBsb29rIGFuZCBhbHRlcmVkIHN0eWxlLCANCitTcGVlY2ggaW50ZXJtaXR0ZWQgdGh1cyB0byBFdmUgcmVuZXdlZC4gDQorV291bGQgdGhvdSBoYWRzdCBoZWFya2VuZWQgdG8gbXkgd29yZHMsIGFuZCBzdGFpZCANCitXaXRoIG1lLCBhcyBJIGJlc291Z2h0IHRoZWUsIHdoZW4gdGhhdCBzdHJhbmdlIA0KK0Rlc2lyZSBvZiB3YW5kZXJpbmcsIHRoaXMgdW5oYXBweSBtb3JuLCANCitJIGtub3cgbm90IHdoZW5jZSBwb3NzZXNzZWQgdGhlZTsgd2UgaGFkIHRoZW4gDQorUmVtYWluZWQgc3RpbGwgaGFwcHk7IG5vdCwgYXMgbm93LCBkZXNwb2lsZWQgDQorT2YgYWxsIG91ciBnb29kOyBzaGFtZWQsIG5ha2VkLCBtaXNlcmFibGUhIA0KK0xldCBub25lIGhlbmNlZm9ydGggc2VlayBuZWVkbGVzcyBjYXVzZSB0byBhcHByb3ZlIA0KK1RoZSBmYWl0aCB0aGV5IG93ZTsgd2hlbiBlYXJuZXN0bHkgdGhleSBzZWVrIA0KK1N1Y2ggcHJvb2YsIGNvbmNsdWRlLCB0aGV5IHRoZW4gYmVnaW4gdG8gZmFpbC4gDQorVG8gd2hvbSwgc29vbiBtb3ZlZCB3aXRoIHRvdWNoIG9mIGJsYW1lLCB0aHVzIEV2ZS4gDQorV2hhdCB3b3JkcyBoYXZlIHBhc3NlZCB0aHkgbGlwcywgQWRhbSBzZXZlcmUhIA0KK0ltcHV0ZXN0IHRob3UgdGhhdCB0byBteSBkZWZhdWx0LCBvciB3aWxsIA0KK09mIHdhbmRlcmluZywgYXMgdGhvdSBjYWxsZXN0IGl0LCB3aGljaCB3aG8ga25vd3MgDQorQnV0IG1pZ2h0IGFzIGlsbCBoYXZlIGhhcHBlbmVkIHRob3UgYmVpbmcgYnksIA0KK09yIHRvIHRoeXNlbGYgcGVyaGFwcz8gIEhhZHN0IHRob3UgYmVlbiB0aGVyZSwgDQorT3IgaGVyZSB0aGUgYXR0ZW1wdCwgdGhvdSBjb3VsZHN0IG5vdCBoYXZlIGRpc2Nlcm5lZCANCitGcmF1ZCBpbiB0aGUgU2VycGVudCwgc3BlYWtpbmcgYXMgaGUgc3Bha2U7IA0KK05vIGdyb3VuZCBvZiBlbm1pdHkgYmV0d2VlbiB1cyBrbm93biwgDQorV2h5IGhlIHNob3VsZCBtZWFuIG1lIGlsbCwgb3Igc2VlayB0byBoYXJtLiANCitXYXMgSSB0byBoYXZlIG5ldmVyIHBhcnRlZCBmcm9tIHRoeSBzaWRlPyANCitBcyBnb29kIGhhdmUgZ3Jvd24gdGhlcmUgc3RpbGwgYSBsaWZlbGVzcyByaWIuIA0KK0JlaW5nIGFzIEkgYW0sIHdoeSBkaWRzdCBub3QgdGhvdSwgdGhlIGhlYWQsIA0KK0NvbW1hbmQgbWUgYWJzb2x1dGVseSBub3QgdG8gZ28sIA0KK0dvaW5nIGludG8gc3VjaCBkYW5nZXIsIGFzIHRob3Ugc2FpZHN0PyANCitUb28gZmFjaWxlIHRoZW4sIHRob3UgZGlkc3Qgbm90IG11Y2ggZ2FpbnNheTsgDQorTmF5LCBkaWRzdCBwZXJtaXQsIGFwcHJvdmUsIGFuZCBmYWlyIGRpc21pc3MuIA0KK0hhZHN0IHRob3UgYmVlbiBmaXJtIGFuZCBmaXhlZCBpbiB0aHkgZGlzc2VudCwgDQorTmVpdGhlciBoYWQgSSB0cmFuc2dyZXNzZWQsIG5vciB0aG91IHdpdGggbWUuIA0KK1RvIHdob20sIHRoZW4gZmlyc3QgaW5jZW5zZWQsIEFkYW0gcmVwbGllZC4gDQorSXMgdGhpcyB0aGUgbG92ZSwgaXMgdGhpcyB0aGUgcmVjb21wZW5jZSANCitPZiBtaW5lIHRvIHRoZWUsIGluZ3JhdGVmdWwgRXZlISBleHByZXNzZWQgDQorSW1tdXRhYmxlLCB3aGVuIHRob3Ugd2VydCBsb3N0LCBub3QgSTsgDQorV2hvIG1pZ2h0IGhhdmUgbGl2ZWQsIGFuZCBqb3llZCBpbW1vcnRhbCBibGlzcywgDQorWWV0IHdpbGxpbmdseSBjaG9zZSByYXRoZXIgZGVhdGggd2l0aCB0aGVlPyANCitBbmQgYW0gSSBub3cgdXBicmFpZGVkIGFzIHRoZSBjYXVzZSANCitPZiB0aHkgdHJhbnNncmVzc2luZz8gIE5vdCBlbm91Z2ggc2V2ZXJlLCANCitJdCBzZWVtcywgaW4gdGh5IHJlc3RyYWludDogIFdoYXQgY291bGQgSSBtb3JlIA0KK0kgd2FybmVkIHRoZWUsIEkgYWRtb25pc2hlZCB0aGVlLCBmb3JldG9sZCANCitUaGUgZGFuZ2VyLCBhbmQgdGhlIGx1cmtpbmcgZW5lbXkgDQorVGhhdCBsYXkgaW4gd2FpdDsgYmV5b25kIHRoaXMsIGhhZCBiZWVuIGZvcmNlOyANCitBbmQgZm9yY2UgdXBvbiBmcmVlIHdpbGwgaGF0aCBoZXJlIG5vIHBsYWNlLiANCitCdXQgY29uZmlkZW5jZSB0aGVuIGJvcmUgdGhlZSBvbjsgc2VjdXJlIA0KK0VpdGhlciB0byBtZWV0IG5vIGRhbmdlciwgb3IgdG8gZmluZCANCitNYXR0ZXIgb2YgZ2xvcmlvdXMgdHJpYWw7IGFuZCBwZXJoYXBzIA0KK0kgYWxzbyBlcnJlZCwgaW4gb3Zlcm11Y2ggYWRtaXJpbmcgDQorV2hhdCBzZWVtZWQgaW4gdGhlZSBzbyBwZXJmZWN0LCB0aGF0IEkgdGhvdWdodCANCitObyBldmlsIGR1cnN0IGF0dGVtcHQgdGhlZTsgYnV0IEkgcnVlIA0KK1RoZSBlcnJvdXIgbm93LCB3aGljaCBpcyBiZWNvbWUgbXkgY3JpbWUsIA0KK0FuZCB0aG91IHRoZSBhY2N1c2VyLiAgVGh1cyBpdCBzaGFsbCBiZWZhbGwgDQorSGltLCB3aG8sIHRvIHdvcnRoIGluIHdvbWVuIG92ZXJ0cnVzdGluZywgDQorTGV0cyBoZXIgd2lsbCBydWxlOiByZXN0cmFpbnQgc2hlIHdpbGwgbm90IGJyb29rOyANCitBbmQsIGxlZnQgdG8gaGVyc2VsZiwgaWYgZXZpbCB0aGVuY2UgZW5zdWUsIA0KK1NoZSBmaXJzdCBoaXMgd2VhayBpbmR1bGdlbmNlIHdpbGwgYWNjdXNlLiANCitUaHVzIHRoZXkgaW4gbXV0dWFsIGFjY3VzYXRpb24gc3BlbnQgDQorVGhlIGZydWl0bGVzcyBob3VycywgYnV0IG5laXRoZXIgc2VsZi1jb25kZW1uaW5nOyANCitBbmQgb2YgdGhlaXIgdmFpbiBjb250ZXN0IGFwcGVhcmVkIG5vIGVuZC4gDQorIA0KKyANCisgDQorQm9vayBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgDQorIA0KK01lYW4gd2hpbGUgdGhlIGhlaW5vdXMgYW5kIGRlc3BpdGVmdWwgYWN0IA0KK09mIFNhdGFuLCBkb25lIGluIFBhcmFkaXNlOyBhbmQgaG93IA0KK0hlLCBpbiB0aGUgc2VycGVudCwgaGFkIHBlcnZlcnRlZCBFdmUsIA0KK0hlciBodXNiYW5kIHNoZSwgdG8gdGFzdGUgdGhlIGZhdGFsIGZydWl0LCANCitXYXMga25vd24gaW4gSGVhdmVuOyBmb3Igd2hhdCBjYW4gJ3NjYXBlIHRoZSBleWUgDQorT2YgR29kIGFsbC1zZWVpbmcsIG9yIGRlY2VpdmUgaGlzIGhlYXJ0IA0KK09tbmlzY2llbnQ/IHdobywgaW4gYWxsIHRoaW5ncyB3aXNlIGFuZCBqdXN0LCANCitIaW5kZXJlZCBub3QgU2F0YW4gdG8gYXR0ZW1wdCB0aGUgbWluZCANCitPZiBNYW4sIHdpdGggc3RyZW5ndGggZW50aXJlIGFuZCBmcmVlIHdpbGwgYXJtZWQsIA0KK0NvbXBsZXRlIHRvIGhhdmUgZGlzY292ZXJlZCBhbmQgcmVwdWxzZWQgDQorV2hhdGV2ZXIgd2lsZXMgb2YgZm9lIG9yIHNlZW1pbmcgZnJpZW5kLiANCitGb3Igc3RpbGwgdGhleSBrbmV3LCBhbmQgb3VnaHQgdG8gaGF2ZSBzdGlsbCByZW1lbWJlcmVkLCANCitUaGUgaGlnaCBpbmp1bmN0aW9uLCBub3QgdG8gdGFzdGUgdGhhdCBmcnVpdCwgDQorV2hvZXZlciB0ZW1wdGVkOyB3aGljaCB0aGV5IG5vdCBvYmV5aW5nLCANCisoSW5jdXJyZWQgd2hhdCBjb3VsZCB0aGV5IGxlc3M/KSB0aGUgcGVuYWx0eTsgDQorQW5kLCBtYW5pZm9sZCBpbiBzaW4sIGRlc2VydmVkIHRvIGZhbGwuIA0KK1VwIGludG8gSGVhdmVuIGZyb20gUGFyYWRpc2UgaW4gaGFzdGUgDQorVGhlIGFuZ2VsaWNrIGd1YXJkcyBhc2NlbmRlZCwgbXV0ZSwgYW5kIHNhZCwgDQorRm9yIE1hbjsgZm9yIG9mIGhpcyBzdGF0ZSBieSB0aGlzIHRoZXkga25ldywgDQorTXVjaCB3b25kZXJpbmcgaG93IHRoZSBzdWJ0bGUgRmllbmQgaGFkIHN0b2xlbiANCitFbnRyYW5jZSB1bnNlZW4uICBTb29uIGFzIHRoZSB1bndlbGNvbWUgbmV3cyANCitGcm9tIEVhcnRoIGFycml2ZWQgYXQgSGVhdmVuLWdhdGUsIGRpc3BsZWFzZWQgDQorQWxsIHdlcmUgd2hvIGhlYXJkOyBkaW0gc2FkbmVzcyBkaWQgbm90IHNwYXJlIA0KK1RoYXQgdGltZSBjZWxlc3RpYWwgdmlzYWdlcywgeWV0LCBtaXhlZCANCitXaXRoIHBpdHksIHZpb2xhdGVkIG5vdCB0aGVpciBibGlzcy4gDQorQWJvdXQgdGhlIG5ldy1hcnJpdmVkLCBpbiBtdWx0aXR1ZGVzIA0KK1RoZSBldGhlcmVhbCBwZW9wbGUgcmFuLCB0byBoZWFyIGFuZCBrbm93IA0KK0hvdyBhbGwgYmVmZWw6ICBUaGV5IHRvd2FyZHMgdGhlIHRocm9uZSBzdXByZW1lLCANCitBY2NvdW50YWJsZSwgbWFkZSBoYXN0ZSwgdG8gbWFrZSBhcHBlYXIsIA0KK1dpdGggcmlnaHRlb3VzIHBsZWEsIHRoZWlyIHV0bW9zdCB2aWdpbGFuY2UgDQorQW5kIGVhc2lseSBhcHByb3ZlZDsgd2hlbiB0aGUgTW9zdCBIaWdoIA0KK0V0ZXJuYWwgRmF0aGVyLCBmcm9tIGhpcyBzZWNyZXQgY2xvdWQsIA0KK0FtaWRzdCBpbiB0aHVuZGVyIHV0dGVyZWQgdGh1cyBoaXMgdm9pY2UuIA0KK0Fzc2VtYmxlZCBBbmdlbHMsIGFuZCB5ZSBQb3dlcnMgcmV0dXJuZWQgDQorRnJvbSB1bnN1Y2Nlc3NmdWwgY2hhcmdlOyBiZSBub3QgZGlzbWF5ZWQsIA0KK05vciB0cm91YmxlZCBhdCB0aGVzZSB0aWRpbmdzIGZyb20gdGhlIGVhcnRoLCANCitXaGljaCB5b3VyIHNpbmNlcmVzdCBjYXJlIGNvdWxkIG5vdCBwcmV2ZW50OyANCitGb3JldG9sZCBzbyBsYXRlbHkgd2hhdCB3b3VsZCBjb21lIHRvIHBhc3MsIA0KK1doZW4gZmlyc3QgdGhpcyB0ZW1wdGVyIGNyb3NzZWQgdGhlIGd1bGYgZnJvbSBIZWxsLiANCitJIHRvbGQgeWUgdGhlbiBoZSBzaG91bGQgcHJldmFpbCwgYW5kIHNwZWVkIA0KK09uIGhpcyBiYWQgZXJyYW5kOyBNYW4gc2hvdWxkIGJlIHNlZHVjZWQsIA0KK0FuZCBmbGF0dGVyZWQgb3V0IG9mIGFsbCwgYmVsaWV2aW5nIGxpZXMgDQorQWdhaW5zdCBoaXMgTWFrZXI7IG5vIGRlY3JlZSBvZiBtaW5lIA0KK0NvbmN1cnJpbmcgdG8gbmVjZXNzaXRhdGUgaGlzIGZhbGwsIA0KK09yIHRvdWNoIHdpdGggbGlnaHRlc3QgbW9tZW50IG9mIGltcHVsc2UgDQorSGlzIGZyZWUgd2lsbCwgdG8gaGVyIG93biBpbmNsaW5pbmcgbGVmdCANCitJbiBldmVuIHNjYWxlLiAgQnV0IGZhbGxlbiBoZSBpczsgYW5kIG5vdyANCitXaGF0IHJlc3RzLCBidXQgdGhhdCB0aGUgbW9ydGFsIHNlbnRlbmNlIHBhc3MgDQorT24gaGlzIHRyYW5zZ3Jlc3Npb24sLS1kZWF0aCBkZW5vdW5jZWQgdGhhdCBkYXk/IA0KK1doaWNoIGhlIHByZXN1bWVzIGFscmVhZHkgdmFpbiBhbmQgdm9pZCwgDQorQmVjYXVzZSBub3QgeWV0IGluZmxpY3RlZCwgYXMgaGUgZmVhcmVkLCANCitCeSBzb21lIGltbWVkaWF0ZSBzdHJva2U7IGJ1dCBzb29uIHNoYWxsIGZpbmQgDQorRm9yYmVhcmFuY2Ugbm8gYWNxdWl0dGFuY2UsIGVyZSBkYXkgZW5kLiANCitKdXN0aWNlIHNoYWxsIG5vdCByZXR1cm4gYXMgYm91bnR5IHNjb3JuZWQuIA0KK0J1dCB3aG9tIHNlbmQgSSB0byBqdWRnZSB0aGVtPyB3aG9tIGJ1dCB0aGVlLCANCitWaWNlZ2VyZW50IFNvbj8gIFRvIHRoZWUgSSBoYXZlIHRyYW5zZmVycmVkIA0KK0FsbCBqdWRnZW1lbnQsIHdoZXRoZXIgaW4gSGVhdmVuLCBvciBFYXJ0aCwgb3IgSGVsbC4gDQorRWFzeSBpdCBtYXkgYmUgc2VlbiB0aGF0IEkgaW50ZW5kIA0KK01lcmN5IGNvbGxlYWd1ZSB3aXRoIGp1c3RpY2UsIHNlbmRpbmcgdGhlZSANCitNYW4ncyBmcmllbmQsIGhpcyBNZWRpYXRvciwgaGlzIGRlc2lnbmVkIA0KK0JvdGggcmFuc29tIGFuZCBSZWRlZW1lciB2b2x1bnRhcnksIA0KK0FuZCBkZXN0aW5lZCBNYW4gaGltc2VsZiB0byBqdWRnZSBNYW4gZmFsbGVuLiANCitTbyBzcGFrZSB0aGUgRmF0aGVyOyBhbmQsIHVuZm9sZGluZyBicmlnaHQgDQorVG93YXJkIHRoZSByaWdodCBoYW5kIGhpcyBnbG9yeSwgb24gdGhlIFNvbiANCitCbGF6ZWQgZm9ydGggdW5jbG91ZGVkIERlaXR5OiBIZSBmdWxsIA0KK1Jlc3BsZW5kZW50IGFsbCBoaXMgRmF0aGVyIG1hbmlmZXN0IA0KK0V4cHJlc3NlZCwgYW5kIHRodXMgZGl2aW5lbHkgYW5zd2VyZWQgbWlsZC4gDQorRmF0aGVyIEV0ZXJuYWwsIHRoaW5lIGlzIHRvIGRlY3JlZTsgDQorTWluZSwgYm90aCBpbiBIZWF2ZW4gYW5kIEVhcnRoLCB0byBkbyB0aHkgd2lsbCANCitTdXByZW1lOyB0aGF0IHRob3UgaW4gbWUsIHRoeSBTb24gYmVsb3ZlZCwgDQorTWF5ZXN0IGV2ZXIgcmVzdCB3ZWxsIHBsZWFzZWQuICBJIGdvIHRvIGp1ZGdlIA0KK09uIGVhcnRoIHRoZXNlIHRoeSB0cmFuc2dyZXNzb3VyczsgYnV0IHRob3Uga25vd2VzdCwgDQorV2hvZXZlciBqdWRnZWQsIHRoZSB3b3JzdCBvbiBtZSBtdXN0IGxpZ2h0LCANCitXaGVuIHRpbWUgc2hhbGwgYmU7IGZvciBzbyBJIHVuZGVydG9vayANCitCZWZvcmUgdGhlZTsgYW5kLCBub3QgcmVwZW50aW5nLCB0aGlzIG9idGFpbiANCitPZiByaWdodCwgdGhhdCBJIG1heSBtaXRpZ2F0ZSB0aGVpciBkb29tIA0KK09uIG1lIGRlcml2ZWQ7IHlldCBJIHNoYWxsIHRlbXBlciBzbyANCitKdXN0aWNlIHdpdGggbWVyY3ksIGFzIG1heSBpbGx1c3RyYXRlIG1vc3QgDQorVGhlbSBmdWxseSBzYXRpc2ZpZWQsIGFuZCB0aGVlIGFwcGVhc2UuIA0KK0F0dGVuZGFuY2Ugbm9uZSBzaGFsbCBuZWVkLCBub3IgdHJhaW4sIHdoZXJlIG5vbmUgDQorQXJlIHRvIGJlaG9sZCB0aGUganVkZ2VtZW50LCBidXQgdGhlIGp1ZGdlZCwgDQorVGhvc2UgdHdvOyB0aGUgdGhpcmQgYmVzdCBhYnNlbnQgaXMgY29uZGVtbmVkLCANCitDb252aWN0IGJ5IGZsaWdodCwgYW5kIHJlYmVsIHRvIGFsbCBsYXc6IA0KK0NvbnZpY3Rpb24gdG8gdGhlIHNlcnBlbnQgbm9uZSBiZWxvbmdzLiANCitUaHVzIHNheWluZywgZnJvbSBoaXMgcmFkaWFudCBzZWF0IGhlIHJvc2UgDQorT2YgaGlnaCBjb2xsYXRlcmFsIGdsb3J5OiBIaW0gVGhyb25lcywgYW5kIFBvd2VycywgDQorUHJpbmNlZG9tcywgYW5kIERvbWluYXRpb25zIG1pbmlzdHJhbnQsIA0KK0FjY29tcGFuaWVkIHRvIEhlYXZlbi1nYXRlOyBmcm9tIHdoZW5jZSANCitFZGVuLCBhbmQgYWxsIHRoZSBjb2FzdCwgaW4gcHJvc3BlY3QgbGF5LiANCitEb3duIGhlIGRlc2NlbmRlZCBzdHJhaWdodDsgdGhlIHNwZWVkIG9mIEdvZHMgDQorVGltZSBjb3VudHMgbm90LCB0aG91Z2ggd2l0aCBzd2lmdGVzdCBtaW51dGVzIHdpbmdlZC4gDQorTm93IHdhcyB0aGUgc3VuIGluIHdlc3Rlcm4gY2FkZW5jZSBsb3cgDQorRnJvbSBub29uLCBhbmQgZ2VudGxlIGFpcnMsIGR1ZSBhdCB0aGVpciBob3VyLCANCitUbyBmYW4gdGhlIGVhcnRoIG5vdyB3YWtlZCwgYW5kIHVzaGVyIGluIA0KK1RoZSBldmVuaW5nIGNvb2w7IHdoZW4gaGUsIGZyb20gd3JhdGggbW9yZSBjb29sLCANCitDYW1lIHRoZSBtaWxkIEp1ZGdlLCBhbmQgSW50ZXJjZXNzb3VyIGJvdGgsIA0KK1RvIHNlbnRlbmNlIE1hbjogIFRoZSB2b2ljZSBvZiBHb2QgdGhleSBoZWFyZCANCitOb3cgd2Fsa2luZyBpbiB0aGUgZ2FyZGVuLCBieSBzb2Z0IHdpbmRzIA0KK0Jyb3VnaHQgdG8gdGhlaXIgZWFycywgd2hpbGUgZGF5IGRlY2xpbmVkOyB0aGV5IGhlYXJkLCANCitBbmQgZnJvbSBoaXMgcHJlc2VuY2UgaGlkIHRoZW1zZWx2ZXMgYW1vbmcgDQorVGhlIHRoaWNrZXN0IHRyZWVzLCBib3RoIG1hbiBhbmQgd2lmZTsgdGlsbCBHb2QsIA0KK0FwcHJvYWNoaW5nLCB0aHVzIHRvIEFkYW0gY2FsbGVkIGFsb3VkLiANCitXaGVyZSBhcnQgdGhvdSwgQWRhbSwgd29udCB3aXRoIGpveSB0byBtZWV0IA0KK015IGNvbWluZyBzZWVuIGZhciBvZmY/ICBJIG1pc3MgdGhlZSBoZXJlLCANCitOb3QgcGxlYXNlZCwgdGh1cyBlbnRlcnRhaW5lZCB3aXRoIHNvbGl0dWRlLCANCitXaGVyZSBvYnZpb3VzIGR1dHkgZXJlIHdoaWxlIGFwcGVhcmVkIHVuc291Z2h0OiANCitPciBjb21lIEkgbGVzcyBjb25zcGljdW91cywgb3Igd2hhdCBjaGFuZ2UgDQorQWJzZW50cyB0aGVlLCBvciB3aGF0IGNoYW5jZSBkZXRhaW5zPy0tQ29tZSBmb3J0aCEgDQorSGUgY2FtZTsgYW5kIHdpdGggaGltIEV2ZSwgbW9yZSBsb3RoLCB0aG91Z2ggZmlyc3QgDQorVG8gb2ZmZW5kOyBkaXNjb3VudGVuYW5jZWQgYm90aCwgYW5kIGRpc2NvbXBvc2VkOyANCitMb3ZlIHdhcyBub3QgaW4gdGhlaXIgbG9va3MsIGVpdGhlciB0byBHb2QsIA0KK09yIHRvIGVhY2ggb3RoZXI7IGJ1dCBhcHBhcmVudCBndWlsdCwgDQorQW5kIHNoYW1lLCBhbmQgcGVydHVyYmF0aW9uLCBhbmQgZGVzcGFpciwgDQorQW5nZXIsIGFuZCBvYnN0aW5hY3ksIGFuZCBoYXRlLCBhbmQgZ3VpbGUuIA0KK1doZW5jZSBBZGFtLCBmYWx0ZXJpbmcgbG9uZywgdGh1cyBhbnN3ZXJlZCBicmllZi4gDQorSSBoZWFyZCB0aGVlIGluIHRoZSBnYXJkZW4sIGFuZCBvZiB0aHkgdm9pY2UgDQorQWZyYWlkLCBiZWluZyBuYWtlZCwgaGlkIG15c2VsZi4gIFRvIHdob20gDQorVGhlIGdyYWNpb3VzIEp1ZGdlIHdpdGhvdXQgcmV2aWxlIHJlcGxpZWQuIA0KK015IHZvaWNlIHRob3Ugb2Z0IGhhc3QgaGVhcmQsIGFuZCBoYXN0IG5vdCBmZWFyZWQsIA0KK0J1dCBzdGlsbCByZWpvaWNlZDsgaG93IGlzIGl0IG5vdyBiZWNvbWUgDQorU28gZHJlYWRmdWwgdG8gdGhlZT8gIFRoYXQgdGhvdSBhcnQgbmFrZWQsIHdobyANCitIYXRoIHRvbGQgdGhlZT8gIEhhc3QgdGhvdSBlYXRlbiBvZiB0aGUgdHJlZSwgDQorV2hlcmVvZiBJIGdhdmUgdGhlZSBjaGFyZ2UgdGhvdSBzaG91bGRzdCBub3QgZWF0PyANCitUbyB3aG9tIHRodXMgQWRhbSBzb3JlIGJlc2V0IHJlcGxpZWQuIA0KK08gSGVhdmVuISBpbiBldmlsIHN0cmFpdCB0aGlzIGRheSBJIHN0YW5kIA0KK0JlZm9yZSBteSBKdWRnZTsgZWl0aGVyIHRvIHVuZGVyZ28gDQorTXlzZWxmIHRoZSB0b3RhbCBjcmltZSwgb3IgdG8gYWNjdXNlIA0KK015IG90aGVyIHNlbGYsIHRoZSBwYXJ0bmVyIG9mIG15IGxpZmU7IA0KK1dob3NlIGZhaWxpbmcsIHdoaWxlIGhlciBmYWl0aCB0byBtZSByZW1haW5zLCANCitJIHNob3VsZCBjb25jZWFsLCBhbmQgbm90IGV4cG9zZSB0byBibGFtZSANCitCeSBteSBjb21wbGFpbnQ6IGJ1dCBzdHJpY3QgbmVjZXNzaXR5IA0KK1N1YmR1ZXMgbWUsIGFuZCBjYWxhbWl0b3VzIGNvbnN0cmFpbnQ7IA0KK0xlc3Qgb24gbXkgaGVhZCBib3RoIHNpbiBhbmQgcHVuaXNobWVudCwgDQorSG93ZXZlciBpbnN1cHBvcnRhYmxlLCBiZSBhbGwgDQorRGV2b2x2ZWQ7IHRob3VnaCBzaG91bGQgSSBob2xkIG15IHBlYWNlLCB5ZXQgdGhvdSANCitXb3VsZHN0IGVhc2lseSBkZXRlY3Qgd2hhdCBJIGNvbmNlYWwuLS0gDQorVGhpcyBXb21hbiwgd2hvbSB0aG91IG1hZGVzdCB0byBiZSBteSBoZWxwLCANCitBbmQgZ2F2ZXN0IG1lIGFzIHRoeSBwZXJmZWN0IGdpZnQsIHNvIGdvb2QsIA0KK1NvIGZpdCwgc28gYWNjZXB0YWJsZSwgc28gZGl2aW5lLCANCitUaGF0IGZyb20gaGVyIGhhbmQgSSBjb3VsZCBzdXNwZWN0IG5vIGlsbCwgDQorQW5kIHdoYXQgc2hlIGRpZCwgd2hhdGV2ZXIgaW4gaXRzZWxmLCANCitIZXIgZG9pbmcgc2VlbWVkIHRvIGp1c3RpZnkgdGhlIGRlZWQ7IA0KK1NoZSBnYXZlIG1lIG9mIHRoZSB0cmVlLCBhbmQgSSBkaWQgZWF0LiANCitUbyB3aG9tIHRoZSBTb3ZyYW4gUHJlc2VuY2UgdGh1cyByZXBsaWVkLiANCitXYXMgc2hlIHRoeSBHb2QsIHRoYXQgaGVyIHRob3UgZGlkc3Qgb2JleSANCitCZWZvcmUgaGlzIHZvaWNlPyBvciB3YXMgc2hlIG1hZGUgdGh5IGd1aWRlLCANCitTdXBlcmlvdXIsIG9yIGJ1dCBlcXVhbCwgdGhhdCB0byBoZXIgDQorVGhvdSBkaWRzdCByZXNpZ24gdGh5IG1hbmhvb2QsIGFuZCB0aGUgcGxhY2UgDQorV2hlcmVpbiBHb2Qgc2V0IHRoZWUgYWJvdmUgaGVyIG1hZGUgb2YgdGhlZSwgDQorQW5kIGZvciB0aGVlLCB3aG9zZSBwZXJmZWN0aW9uIGZhciBleGNlbGxlZCANCitIZXJzIGluIGFsbCByZWFsIGRpZ25pdHk/ICBBZG9ybmVkIA0KK1NoZSB3YXMgaW5kZWVkLCBhbmQgbG92ZWx5LCB0byBhdHRyYWN0IA0KK1RoeSBsb3ZlLCBub3QgdGh5IHN1YmplY3Rpb247IGFuZCBoZXIgZ2lmdHMgDQorV2VyZSBzdWNoLCBhcyB1bmRlciBnb3Zlcm5tZW50IHdlbGwgc2VlbWVkOyANCitVbnNlZW1seSB0byBiZWFyIHJ1bGU7IHdoaWNoIHdhcyB0aHkgcGFydCANCitBbmQgcGVyc29uLCBoYWRzdCB0aG91IGtub3duIHRoeXNlbGYgYXJpZ2h0LiANCitTbyBoYXZpbmcgc2FpZCwgaGUgdGh1cyB0byBFdmUgaW4gZmV3LiANCitTYXksIFdvbWFuLCB3aGF0IGlzIHRoaXMgd2hpY2ggdGhvdSBoYXN0IGRvbmU/IA0KK1RvIHdob20gc2FkIEV2ZSwgd2l0aCBzaGFtZSBuaWdoIG92ZXJ3aGVsbWVkLCANCitDb25mZXNzaW5nIHNvb24sIHlldCBub3QgYmVmb3JlIGhlciBKdWRnZSANCitCb2xkIG9yIGxvcXVhY2lvdXMsIHRodXMgYWJhc2hlZCByZXBsaWVkLiANCitUaGUgU2VycGVudCBtZSBiZWd1aWxlZCwgYW5kIEkgZGlkIGVhdC4gDQorV2hpY2ggd2hlbiB0aGUgTG9yZCBHb2QgaGVhcmQsIHdpdGhvdXQgZGVsYXkgDQorVG8ganVkZ2VtZW50IGhlIHByb2NlZWRlZCBvbiB0aGUgYWNjdXNlZCANCitTZXJwZW50LCB0aG91Z2ggYnJ1dGU7IHVuYWJsZSB0byB0cmFuc2ZlciANCitUaGUgZ3VpbHQgb24gaGltLCB3aG8gbWFkZSBoaW0gaW5zdHJ1bWVudCANCitPZiBtaXNjaGllZiwgYW5kIHBvbGx1dGVkIGZyb20gdGhlIGVuZCANCitPZiBoaXMgY3JlYXRpb247IGp1c3RseSB0aGVuIGFjY3Vyc2VkLCANCitBcyB2aXRpYXRlZCBpbiBuYXR1cmU6ICBNb3JlIHRvIGtub3cgDQorQ29uY2VybmVkIG5vdCBNYW4sIChzaW5jZSBoZSBubyBmdXJ0aGVyIGtuZXcpIA0KK05vciBhbHRlcmVkIGhpcyBvZmZlbmNlOyB5ZXQgR29kIGF0IGxhc3QgDQorVG8gU2F0YW4gZmlyc3QgaW4gc2luIGhpcyBkb29tIGFwcGxpZWQsIA0KK1Rob3VnaCBpbiBteXN0ZXJpb3VzIHRlcm1zLCBqdWRnZWQgYXMgdGhlbiBiZXN0OiANCitBbmQgb24gdGhlIFNlcnBlbnQgdGh1cyBoaXMgY3Vyc2UgbGV0IGZhbGwuIA0KK0JlY2F1c2UgdGhvdSBoYXN0IGRvbmUgdGhpcywgdGhvdSBhcnQgYWNjdXJzZWQgDQorQWJvdmUgYWxsIGNhdHRsZSwgZWFjaCBiZWFzdCBvZiB0aGUgZmllbGQ7IA0KK1Vwb24gdGh5IGJlbGx5IGdyb3ZlbGluZyB0aG91IHNoYWx0IGdvLCANCitBbmQgZHVzdCBzaGFsdCBlYXQgYWxsIHRoZSBkYXlzIG9mIHRoeSBsaWZlLiANCitCZXR3ZWVuIHRoZWUgYW5kIHRoZSB3b21hbiBJIHdpbGwgcHV0IA0KK0VubWl0eSwgYW5kIGJldHdlZW4gdGhpbmUgYW5kIGhlciBzZWVkOyANCitIZXIgc2VlZCBzaGFsbCBicnVpc2UgdGh5IGhlYWQsIHRob3UgYnJ1aXNlIGhpcyBoZWVsLiANCitTbyBzcGFrZSB0aGlzIG9yYWNsZSwgdGhlbiB2ZXJpZmllZCANCitXaGVuIEplc3VzLCBTb24gb2YgTWFyeSwgc2Vjb25kIEV2ZSwgDQorU2F3IFNhdGFuIGZhbGwsIGxpa2UgbGlnaHRuaW5nLCBkb3duIGZyb20gSGVhdmVuLCANCitQcmluY2Ugb2YgdGhlIGFpcjsgdGhlbiwgcmlzaW5nIGZyb20gaGlzIGdyYXZlIA0KK1Nwb2lsZWQgUHJpbmNpcGFsaXRpZXMgYW5kIFBvd2VycywgdHJpdW1waGVkIA0KK0luIG9wZW4gc2hvdzsgYW5kLCB3aXRoIGFzY2Vuc2lvbiBicmlnaHQsIA0KK0NhcHRpdml0eSBsZWQgY2FwdGl2ZSB0aHJvdWdoIHRoZSBhaXIsIA0KK1RoZSByZWFsbSBpdHNlbGYgb2YgU2F0YW4sIGxvbmcgdXN1cnBlZDsgDQorV2hvbSBoZSBzaGFsbCB0cmVhZCBhdCBsYXN0IHVuZGVyIG91ciBmZWV0OyANCitFdmVuIGhlLCB3aG8gbm93IGZvcmV0b2xkIGhpcyBmYXRhbCBicnVpc2U7IA0KK0FuZCB0byB0aGUgV29tYW4gdGh1cyBoaXMgc2VudGVuY2UgdHVybmVkLiANCitUaHkgc29ycm93IEkgd2lsbCBncmVhdGx5IG11bHRpcGx5IA0KK0J5IHRoeSBjb25jZXB0aW9uOyBjaGlsZHJlbiB0aG91IHNoYWx0IGJyaW5nIA0KK0luIHNvcnJvdyBmb3J0aDsgYW5kIHRvIHRoeSBodXNiYW5kJ3Mgd2lsbCANCitUaGluZSBzaGFsbCBzdWJtaXQ7IGhlIG92ZXIgdGhlZSBzaGFsbCBydWxlLiANCitPbiBBZGFtIGxhc3QgdGh1cyBqdWRnZW1lbnQgaGUgcHJvbm91bmNlZC4gDQorQmVjYXVzZSB0aG91IGhhc3QgaGVhcmtlbmVkIHRvIHRoZSB2b2ljZSBvZiB0aHkgd2lmZSwgDQorQW5kIGVhdGVuIG9mIHRoZSB0cmVlLCBjb25jZXJuaW5nIHdoaWNoIA0KK0kgY2hhcmdlZCB0aGVlLCBzYXlpbmcsIFRob3Ugc2hhbHQgbm90IGVhdCB0aGVyZW9mOiANCitDdXJzZWQgaXMgdGhlIGdyb3VuZCBmb3IgdGh5IHNha2U7IHRob3UgaW4gc29ycm93IA0KK1NoYWx0IGVhdCB0aGVyZW9mLCBhbGwgdGhlIGRheXMgb2YgdGh5IGxpZmU7IA0KK1Rob3JucyBhbHNvIGFuZCB0aGlzdGxlcyBpdCBzaGFsbCBicmluZyB0aGVlIGZvcnRoIA0KK1VuYmlkOyBhbmQgdGhvdSBzaGFsdCBlYXQgdGhlIGhlcmIgb2YgdGhlIGZpZWxkOyANCitJbiB0aGUgc3dlYXQgb2YgdGh5IGZhY2Ugc2hhbHQgdGhvdSBlYXQgYnJlYWQsIA0KK1RpbGwgdGhvdSByZXR1cm4gdW50byB0aGUgZ3JvdW5kOyBmb3IgdGhvdSANCitPdXQgb2YgdGhlIGdyb3VuZCB3YXN0IHRha2VuLCBrbm93IHRoeSBiaXJ0aCwgDQorRm9yIGR1c3QgdGhvdSBhcnQsIGFuZCBzaGFsdCB0byBkdXN0IHJldHVybi4gDQorU28ganVkZ2VkIGhlIE1hbiwgYm90aCBKdWRnZSBhbmQgU2F2aW91ciBzZW50OyANCitBbmQgdGhlIGluc3RhbnQgc3Ryb2tlIG9mIGRlYXRoLCBkZW5vdW5jZWQgdGhhdCBkYXksIA0KK1JlbW92ZWQgZmFyIG9mZjsgdGhlbiwgcGl0eWluZyBob3cgdGhleSBzdG9vZCANCitCZWZvcmUgaGltIG5ha2VkIHRvIHRoZSBhaXIsIHRoYXQgbm93IA0KK011c3Qgc3VmZmVyIGNoYW5nZSwgZGlzZGFpbmVkIG5vdCB0byBiZWdpbiANCitUaGVuY2Vmb3J0aCB0aGUgZm9ybSBvZiBzZXJ2YW50IHRvIGFzc3VtZTsgDQorQXMgd2hlbiBoZSB3YXNoZWQgaGlzIHNlcnZhbnRzIGZlZXQ7IHNvIG5vdywgDQorQXMgZmF0aGVyIG9mIGhpcyBmYW1pbHksIGhlIGNsYWQgDQorVGhlaXIgbmFrZWRuZXNzIHdpdGggc2tpbnMgb2YgYmVhc3RzLCBvciBzbGFpbiwgDQorT3IgYXMgdGhlIHNuYWtlIHdpdGggeW91dGhmdWwgY29hdCByZXBhaWQ7IA0KK0FuZCB0aG91Z2h0IG5vdCBtdWNoIHRvIGNsb3RoZSBoaXMgZW5lbWllczsgDQorTm9yIGhlIHRoZWlyIG91dHdhcmQgb25seSB3aXRoIHRoZSBza2lucyANCitPZiBiZWFzdHMsIGJ1dCBpbndhcmQgbmFrZWRuZXNzLCBtdWNoIG1vcmUuIA0KK09wcHJvYnJpb3VzLCB3aXRoIGhpcyByb2JlIG9mIHJpZ2h0ZW91c25lc3MsIA0KK0FycmF5aW5nLCBjb3ZlcmVkIGZyb20gaGlzIEZhdGhlcidzIHNpZ2h0LiANCitUbyBoaW0gd2l0aCBzd2lmdCBhc2NlbnQgaGUgdXAgcmV0dXJuZWQsIA0KK0ludG8gaGlzIGJsaXNzZnVsIGJvc29tIHJlYXNzdW1lZCANCitJbiBnbG9yeSwgYXMgb2Ygb2xkOyB0byBoaW0gYXBwZWFzZWQgDQorQWxsLCB0aG91Z2ggYWxsLWtub3dpbmcsIHdoYXQgaGFkIHBhc3NlZCB3aXRoIE1hbiANCitSZWNvdW50ZWQsIG1peGluZyBpbnRlcmNlc3Npb24gc3dlZXQuIA0KK01lYW4gd2hpbGUsIGVyZSB0aHVzIHdhcyBzaW5uZWQgYW5kIGp1ZGdlZCBvbiBFYXJ0aCwgDQorV2l0aGluIHRoZSBnYXRlcyBvZiBIZWxsIHNhdCBTaW4gYW5kIERlYXRoLCANCitJbiBjb3VudGVydmlldyB3aXRoaW4gdGhlIGdhdGVzLCB0aGF0IG5vdyANCitTdG9vZCBvcGVuIHdpZGUsIGJlbGNoaW5nIG91dHJhZ2VvdXMgZmxhbWUgDQorRmFyIGludG8gQ2hhb3MsIHNpbmNlIHRoZSBGaWVuZCBwYXNzZWQgdGhyb3VnaCwgDQorU2luIG9wZW5pbmc7IHdobyB0aHVzIG5vdyB0byBEZWF0aCBiZWdhbi4gDQorTyBTb24sIHdoeSBzaXQgd2UgaGVyZSBlYWNoIG90aGVyIHZpZXdpbmcgDQorSWRseSwgd2hpbGUgU2F0YW4sIG91ciBncmVhdCBhdXRob3IsIHRocml2ZXMgDQorSW4gb3RoZXIgd29ybGRzLCBhbmQgaGFwcGllciBzZWF0IHByb3ZpZGVzIA0KK0ZvciB1cywgaGlzIG9mZnNwcmluZyBkZWFyPyAgSXQgY2Fubm90IGJlIA0KK0J1dCB0aGF0IHN1Y2Nlc3MgYXR0ZW5kcyBoaW07IGlmIG1pc2hhcCwgDQorRXJlIHRoaXMgaGUgaGFkIHJldHVybmVkLCB3aXRoIGZ1cnkgZHJpdmVuIA0KK0J5IGhpcyBhdmVuZ2Vyczsgc2luY2Ugbm8gcGxhY2UgbGlrZSB0aGlzIA0KK0NhbiBmaXQgaGlzIHB1bmlzaG1lbnQsIG9yIHRoZWlyIHJldmVuZ2UuIA0KK01ldGhpbmtzIEkgZmVlbCBuZXcgc3RyZW5ndGggd2l0aGluIG1lIHJpc2UsIA0KK1dpbmdzIGdyb3dpbmcsIGFuZCBkb21pbmlvbiBnaXZlbiBtZSBsYXJnZSANCitCZXlvbmQgdGhpcyBkZWVwOyB3aGF0ZXZlciBkcmF3cyBtZSBvbiwgDQorT3Igc3ltcGF0aHksIG9yIHNvbWUgY29ubmF0dXJhbCBmb3JjZSwgDQorUG93ZXJmdWwgYXQgZ3JlYXRlc3QgZGlzdGFuY2UgdG8gdW5pdGUsIA0KK1dpdGggc2VjcmV0IGFtaXR5LCB0aGluZ3Mgb2YgbGlrZSBraW5kLCANCitCeSBzZWNyZXRlc3QgY29udmV5YW5jZS4gIFRob3UsIG15IHNoYWRlIA0KK0luc2VwYXJhYmxlLCBtdXN0IHdpdGggbWUgYWxvbmc7IA0KK0ZvciBEZWF0aCBmcm9tIFNpbiBubyBwb3dlciBjYW4gc2VwYXJhdGUuIA0KK0J1dCwgbGVzdCB0aGUgZGlmZmljdWx0eSBvZiBwYXNzaW5nIGJhY2sgDQorU3RheSBoaXMgcmV0dXJuIHBlcmhhcHMgb3ZlciB0aGlzIGd1bGYgDQorSW1wYXNzYWJsZSwgaW1wZXJ2aW91czsgbGV0IHVzIHRyeSANCitBZHZlbnR1cm91cyB3b3JrLCB5ZXQgdG8gdGh5IHBvd2VyIGFuZCBtaW5lIA0KK05vdCB1bmFncmVlYWJsZSwgdG8gZm91bmQgYSBwYXRoIA0KK092ZXIgdGhpcyBtYWluIGZyb20gSGVsbCB0byB0aGF0IG5ldyB3b3JsZCwgDQorV2hlcmUgU2F0YW4gbm93IHByZXZhaWxzOyBhIG1vbnVtZW50IA0KK09mIG1lcml0IGhpZ2ggdG8gYWxsIHRoZSBpbmZlcm5hbCBob3N0LCANCitFYXNpbmcgdGhlaXIgcGFzc2FnZSBoZW5jZSwgZm9yIGludGVyY291cnNlLCANCitPciB0cmFuc21pZ3JhdGlvbiwgYXMgdGhlaXIgbG90IHNoYWxsIGxlYWQuIA0KK05vciBjYW4gSSBtaXNzIHRoZSB3YXksIHNvIHN0cm9uZ2x5IGRyYXduIA0KK0J5IHRoaXMgbmV3LWZlbHQgYXR0cmFjdGlvbiBhbmQgaW5zdGluY3QuIA0KK1dob20gdGh1cyB0aGUgbWVhZ2VyIFNoYWRvdyBhbnN3ZXJlZCBzb29uLiANCitHbywgd2hpdGhlciBGYXRlLCBhbmQgaW5jbGluYXRpb24gc3Ryb25nLCANCitMZWFkcyB0aGVlOyBJIHNoYWxsIG5vdCBsYWcgYmVoaW5kLCBub3IgZXJyIA0KK1RoZSB3YXksIHRob3UgbGVhZGluZzsgc3VjaCBhIHNjZW50IEkgZHJhdyANCitPZiBjYXJuYWdlLCBwcmV5IGlubnVtZXJhYmxlLCBhbmQgdGFzdGUgDQorVGhlIHNhdm91ciBvZiBkZWF0aCBmcm9tIGFsbCB0aGluZ3MgdGhlcmUgdGhhdCBsaXZlOiANCitOb3Igc2hhbGwgSSB0byB0aGUgd29yayB0aG91IGVudGVycHJpc2VzdCANCitCZSB3YW50aW5nLCBidXQgYWZmb3JkIHRoZWUgZXF1YWwgYWlkLiANCitTbyBzYXlpbmcsIHdpdGggZGVsaWdodCBoZSBzbnVmZmVkIHRoZSBzbWVsbCANCitPZiBtb3J0YWwgY2hhbmdlIG9uIGVhcnRoLiAgQXMgd2hlbiBhIGZsb2NrIA0KK09mIHJhdmVub3VzIGZvd2wsIHRob3VnaCBtYW55IGEgbGVhZ3VlIHJlbW90ZSwgDQorQWdhaW5zdCB0aGUgZGF5IG9mIGJhdHRsZSwgdG8gYSBmaWVsZCwgDQorV2hlcmUgYXJtaWVzIGxpZSBlbmNhbXBlZCwgY29tZSBmbHlpbmcsIGx1cmVkIA0KK1dpdGggc2NlbnQgb2YgbGl2aW5nIGNhcmNhc3NlcyBkZXNpZ25lZCANCitGb3IgZGVhdGgsIHRoZSBmb2xsb3dpbmcgZGF5LCBpbiBibG9vZHkgZmlnaHQ6IA0KK1NvIHNjZW50ZWQgdGhlIGdyaW0gRmVhdHVyZSwgYW5kIHVwdHVybmVkIA0KK0hpcyBub3N0cmlsIHdpZGUgaW50byB0aGUgbXVya3kgYWlyOyANCitTYWdhY2lvdXMgb2YgaGlzIHF1YXJyeSBmcm9tIHNvIGZhci4gDQorVGhlbiBib3RoIGZyb20gb3V0IEhlbGwtZ2F0ZXMsIGludG8gdGhlIHdhc3RlIA0KK1dpZGUgYW5hcmNoeSBvZiBDaGFvcywgZGFtcCBhbmQgZGFyaywgDQorRmxldyBkaXZlcnNlOyBhbmQgd2l0aCBwb3dlciAodGhlaXIgcG93ZXIgd2FzIGdyZWF0KSANCitIb3ZlcmluZyB1cG9uIHRoZSB3YXRlcnMsIHdoYXQgdGhleSBtZXQgDQorU29saWQgb3Igc2xpbXksIGFzIGluIHJhZ2luZyBzZWEgDQorVG9zdCB1cCBhbmQgZG93biwgdG9nZXRoZXIgY3JvdWRlZCBkcm92ZSwgDQorRnJvbSBlYWNoIHNpZGUgc2hvYWxpbmcgdG93YXJkcyB0aGUgbW91dGggb2YgSGVsbDsgDQorQXMgd2hlbiB0d28gcG9sYXIgd2luZHMsIGJsb3dpbmcgYWR2ZXJzZSANCitVcG9uIHRoZSBDcm9uaWFuIHNlYSwgdG9nZXRoZXIgZHJpdmUgDQorTW91bnRhaW5zIG9mIGljZSwgdGhhdCBzdG9wIHRoZSBpbWFnaW5lZCB3YXkgDQorQmV5b25kIFBldHNvcmEgZWFzdHdhcmQsIHRvIHRoZSByaWNoIA0KK0NhdGhhaWFuIGNvYXN0LiAgVGhlIGFnZ3JlZ2F0ZWQgc29pbCANCitEZWF0aCB3aXRoIGhpcyBtYWNlIHBldHJpZmljaywgY29sZCBhbmQgZHJ5LCANCitBcyB3aXRoIGEgdHJpZGVudCwgc21vdGU7IGFuZCBmaXhlZCBhcyBmaXJtIA0KK0FzIERlbG9zLCBmbG9hdGluZyBvbmNlOyB0aGUgcmVzdCBoaXMgbG9vayANCitCb3VuZCB3aXRoIEdvcmdvbmlhbiByaWdvdXIgbm90IHRvIG1vdmU7IA0KK0FuZCB3aXRoIEFzcGhhbHRpY2sgc2xpbWUsIGJyb2FkIGFzIHRoZSBnYXRlLCANCitEZWVwIHRvIHRoZSByb290cyBvZiBIZWxsIHRoZSBnYXRoZXJlZCBiZWFjaCANCitUaGV5IGZhc3RlbmVkLCBhbmQgdGhlIG1vbGUgaW1tZW5zZSB3cm91Z2h0IG9uIA0KK092ZXIgdGhlIGZvYW1pbmcgZGVlcCBoaWdoLWFyY2hlZCwgYSBicmlkZ2UgDQorT2YgbGVuZ3RoIHByb2RpZ2lvdXMsIGpvaW5pbmcgdG8gdGhlIHdhbGwgDQorSW1tb3ZlYWJsZSBvZiB0aGlzIG5vdyBmZW5jZWxlc3Mgd29ybGQsIA0KK0ZvcmZlaXQgdG8gRGVhdGg7IGZyb20gaGVuY2UgYSBwYXNzYWdlIGJyb2FkLCANCitTbW9vdGgsIGVhc3ksIGlub2ZmZW5zaXZlLCBkb3duIHRvIEhlbGwuIA0KK1NvLCBpZiBncmVhdCB0aGluZ3MgdG8gc21hbGwgbWF5IGJlIGNvbXBhcmVkLCANCitYZXJ4ZXMsIHRoZSBsaWJlcnR5IG9mIEdyZWVjZSB0byB5b2tlLCANCitGcm9tIFN1c2EsIGhpcyBNZW1ub25pYW4gcGFsYWNlIGhpZ2gsIA0KK0NhbWUgdG8gdGhlIHNlYTogYW5kLCBvdmVyIEhlbGxlc3BvbnQgDQorQnJpZGdpbmcgaGlzIHdheSwgRXVyb3BlIHdpdGggQXNpYSBqb2luZWQsIA0KK0FuZCBzY291cmdlZCB3aXRoIG1hbnkgYSBzdHJva2UgdGhlIGluZGlnbmFudCB3YXZlcy4gDQorTm93IGhhZCB0aGV5IGJyb3VnaHQgdGhlIHdvcmsgYnkgd29uZGVyb3VzIGFydCANCitQb250aWZpY2FsLCBhIHJpZGdlIG9mIHBlbmRhbnQgcm9jaywgDQorT3ZlciB0aGUgdmV4ZWQgYWJ5c3MsIGZvbGxvd2luZyB0aGUgdHJhY2sgDQorT2YgU2F0YW4gdG8gdGhlIHNlbGYtc2FtZSBwbGFjZSB3aGVyZSBoZSANCitGaXJzdCBsaWdodGVkIGZyb20gaGlzIHdpbmcsIGFuZCBsYW5kZWQgc2FmZSANCitGcm9tIG91dCBvZiBDaGFvcywgdG8gdGhlIG91dHNpZGUgYmFyZSANCitPZiB0aGlzIHJvdW5kIHdvcmxkOiAgV2l0aCBwaW5zIG9mIGFkYW1hbnQgDQorQW5kIGNoYWlucyB0aGV5IG1hZGUgYWxsIGZhc3QsIHRvbyBmYXN0IHRoZXkgbWFkZSANCitBbmQgZHVyYWJsZSEgIEFuZCBub3cgaW4gbGl0dGxlIHNwYWNlIA0KK1RoZSBjb25maW5lcyBtZXQgb2YgZW1weXJlYW4gSGVhdmVuLCANCitBbmQgb2YgdGhpcyBXb3JsZDsgYW5kLCBvbiB0aGUgbGVmdCBoYW5kLCBIZWxsIA0KK1dpdGggbG9uZyByZWFjaCBpbnRlcnBvc2VkOyB0aHJlZSBzZXZlcmFsIHdheXMgDQorSW4gc2lnaHQsIHRvIGVhY2ggb2YgdGhlc2UgdGhyZWUgcGxhY2VzIGxlZC4gDQorQW5kIG5vdyB0aGVpciB3YXkgdG8gRWFydGggdGhleSBoYWQgZGVzY3JpZWQsIA0KK1RvIFBhcmFkaXNlIGZpcnN0IHRlbmRpbmc7IHdoZW4sIGJlaG9sZCEgDQorU2F0YW4sIGluIGxpa2VuZXNzIG9mIGFuIEFuZ2VsIGJyaWdodCwgDQorQmV0d2l4dCB0aGUgQ2VudGF1ciBhbmQgdGhlIFNjb3JwaW9uIHN0ZWVyaW5nIA0KK0hpcyB6ZW5pdGgsIHdoaWxlIHRoZSBzdW4gaW4gQXJpZXMgcm9zZTogDQorRGlzZ3Vpc2VkIGhlIGNhbWU7IGJ1dCB0aG9zZSBoaXMgY2hpbGRyZW4gZGVhciANCitUaGVpciBwYXJlbnQgc29vbiBkaXNjZXJuZWQsIHRob3VnaCBpbiBkaXNndWlzZS4gDQorSGUsIGFmdGVyIEV2ZSBzZWR1Y2VkLCB1bm1pbmRlZCBzbHVuayANCitJbnRvIHRoZSB3b29kIGZhc3QgYnk7IGFuZCwgY2hhbmdpbmcgc2hhcGUsIA0KK1RvIG9ic2VydmUgdGhlIHNlcXVlbCwgc2F3IGhpcyBndWlsZWZ1bCBhY3QgDQorQnkgRXZlLCB0aG91Z2ggYWxsIHVud2VldGluZywgc2Vjb25kZWQgDQorVXBvbiBoZXIgaHVzYmFuZDsgc2F3IHRoZWlyIHNoYW1lIHRoYXQgc291Z2h0IA0KK1ZhaW4gY292ZXJ0dXJlczsgYnV0IHdoZW4gaGUgc2F3IGRlc2NlbmQgDQorVGhlIFNvbiBvZiBHb2QgdG8ganVkZ2UgdGhlbSwgdGVycmlmaWVkIA0KK0hlIGZsZWQ7IG5vdCBob3BpbmcgdG8gZXNjYXBlLCBidXQgc2h1biANCitUaGUgcHJlc2VudDsgZmVhcmluZywgZ3VpbHR5LCB3aGF0IGhpcyB3cmF0aCANCitNaWdodCBzdWRkZW5seSBpbmZsaWN0OyB0aGF0IHBhc3QsIHJldHVybmVkIA0KK0J5IG5pZ2h0LCBhbmQgbGlzdGVuaW5nIHdoZXJlIHRoZSBoYXBsZXNzIHBhaXIgDQorU2F0IGluIHRoZWlyIHNhZCBkaXNjb3Vyc2UsIGFuZCB2YXJpb3VzIHBsYWludCwgDQorVGhlbmNlIGdhdGhlcmVkIGhpcyBvd24gZG9vbTsgd2hpY2ggdW5kZXJzdG9vZCANCitOb3QgaW5zdGFudCwgYnV0IG9mIGZ1dHVyZSB0aW1lLCB3aXRoIGpveSANCitBbmQgdGlkaW5ncyBmcmF1Z2h0LCB0byBIZWxsIGhlIG5vdyByZXR1cm5lZDsgDQorQW5kIGF0IHRoZSBicmluayBvZiBDaGFvcywgbmVhciB0aGUgZm9vdCANCitPZiB0aGlzIG5ldyB3b25kZXJvdXMgcG9udGlmaWNlLCB1bmhvcGVkIA0KK01ldCwgd2hvIHRvIG1lZXQgaGltIGNhbWUsIGhpcyBvZmZzcHJpbmcgZGVhci4gDQorR3JlYXQgam95IHdhcyBhdCB0aGVpciBtZWV0aW5nLCBhbmQgYXQgc2lnaHQgDQorT2YgdGhhdCBzdHVwZW5kaW91cyBicmlkZ2UgaGlzIGpveSBlbmNyZWFzZWQuIA0KK0xvbmcgaGUgYWRtaXJpbmcgc3Rvb2QsIHRpbGwgU2luLCBoaXMgZmFpciANCitFbmNoYW50aW5nIGRhdWdodGVyLCB0aHVzIHRoZSBzaWxlbmNlIGJyb2tlLiANCitPIFBhcmVudCwgdGhlc2UgYXJlIHRoeSBtYWduaWZpY2sgZGVlZHMsIA0KK1RoeSB0cm9waGllcyEgd2hpY2ggdGhvdSB2aWV3ZXN0IGFzIG5vdCB0aGluZSBvd247IA0KK1Rob3UgYXJ0IHRoZWlyIGF1dGhvciwgYW5kIHByaW1lIGFyY2hpdGVjdDogDQorRm9yIEkgbm8gc29vbmVyIGluIG15IGhlYXJ0IGRpdmluZWQsIA0KK015IGhlYXJ0LCB3aGljaCBieSBhIHNlY3JldCBoYXJtb255IA0KK1N0aWxsIG1vdmVzIHdpdGggdGhpbmUsIGpvaW5lZCBpbiBjb25uZXhpb24gc3dlZXQsIA0KK1RoYXQgdGhvdSBvbiBlYXJ0aCBoYWRzdCBwcm9zcGVyZWQsIHdoaWNoIHRoeSBsb29rcyANCitOb3cgYWxzbyBldmlkZW5jZSwgYnV0IHN0cmFpZ2h0IEkgZmVsdCwgDQorVGhvdWdoIGRpc3RhbnQgZnJvbSB0aGVlIHdvcmxkcyBiZXR3ZWVuLCB5ZXQgZmVsdCwgDQorVGhhdCBJIG11c3QgYWZ0ZXIgdGhlZSwgd2l0aCB0aGlzIHRoeSBzb247IA0KK1N1Y2ggZmF0YWwgY29uc2VxdWVuY2UgdW5pdGVzIHVzIHRocmVlISANCitIZWxsIGNvdWxkIG5vIGxvbmdlciBob2xkIHVzIGluIG91ciBib3VuZHMsIA0KK05vciB0aGlzIHVudm95YWdlYWJsZSBndWxmIG9ic2N1cmUgDQorRGV0YWluIGZyb20gZm9sbG93aW5nIHRoeSBpbGx1c3RyaW91cyB0cmFjay4gDQorVGhvdSBoYXN0IGFjaGlldmVkIG91ciBsaWJlcnR5LCBjb25maW5lZCANCitXaXRoaW4gSGVsbC1nYXRlcyB0aWxsIG5vdzsgdGhvdSB1cyBpbXBvd2VyZWQgDQorVG8gZm9ydGlmeSB0aHVzIGZhciwgYW5kIG92ZXJsYXksIA0KK1dpdGggdGhpcyBwb3J0ZW50b3VzIGJyaWRnZSwgdGhlIGRhcmsgYWJ5c3MuIA0KK1RoaW5lIG5vdyBpcyBhbGwgdGhpcyB3b3JsZDsgdGh5IHZpcnR1ZSBoYXRoIHdvbiANCitXaGF0IHRoeSBoYW5kcyBidWlsZGVkIG5vdDsgdGh5IHdpc2RvbSBnYWluZWQgDQorV2l0aCBvZGRzIHdoYXQgd2FyIGhhdGggbG9zdCwgYW5kIGZ1bGx5IGF2ZW5nZWQgDQorT3VyIGZvaWwgaW4gSGVhdmVuOyBoZXJlIHRob3Ugc2hhbHQgbW9uYXJjaCByZWlnbiwgDQorVGhlcmUgZGlkc3Qgbm90OyB0aGVyZSBsZXQgaGltIHN0aWxsIHZpY3RvciBzd2F5LCANCitBcyBiYXR0bGUgaGF0aCBhZGp1ZGdlZDsgZnJvbSB0aGlzIG5ldyB3b3JsZCANCitSZXRpcmluZywgYnkgaGlzIG93biBkb29tIGFsaWVuYXRlZDsgDQorQW5kIGhlbmNlZm9ydGggbW9uYXJjaHkgd2l0aCB0aGVlIGRpdmlkZSANCitPZiBhbGwgdGhpbmdzLCBwYXJ0ZWQgYnkgdGhlIGVtcHlyZWFsIGJvdW5kcywgDQorSGlzIHF1YWRyYXR1cmUsIGZyb20gdGh5IG9yYmljdWxhciB3b3JsZDsgDQorT3IgdHJ5IHRoZWUgbm93IG1vcmUgZGFuZ2Vyb3VzIHRvIGhpcyB0aHJvbmUuIA0KK1dob20gdGh1cyB0aGUgUHJpbmNlIG9mIGRhcmtuZXNzIGFuc3dlcmVkIGdsYWQuIA0KK0ZhaXIgRGF1Z2h0ZXIsIGFuZCB0aG91IFNvbiBhbmQgR3JhbmRjaGlsZCBib3RoOyANCitIaWdoIHByb29mIHllIG5vdyBoYXZlIGdpdmVuIHRvIGJlIHRoZSByYWNlIA0KK09mIFNhdGFuIChmb3IgSSBnbG9yeSBpbiB0aGUgbmFtZSwgDQorQW50YWdvbmlzdCBvZiBIZWF2ZW4ncyBBbG1pZ2h0eSBLaW5nLCkgDQorQW1wbHkgaGF2ZSBtZXJpdGVkIG9mIG1lLCBvZiBhbGwgDQorVGhlIGluZmVybmFsIGVtcGlyZSwgdGhhdCBzbyBuZWFyIEhlYXZlbidzIGRvb3IgDQorVHJpdW1waGFsIHdpdGggdHJpdW1waGFsIGFjdCBoYXZlIG1ldCwgDQorTWluZSwgd2l0aCB0aGlzIGdsb3Jpb3VzIHdvcms7IGFuZCBtYWRlIG9uZSByZWFsbSwgDQorSGVsbCBhbmQgdGhpcyB3b3JsZCwgb25lIHJlYWxtLCBvbmUgY29udGluZW50IA0KK09mIGVhc3kgdGhvcm91Z2gtZmFyZS4gIFRoZXJlZm9yZSwgd2hpbGUgSSANCitEZXNjZW5kIHRocm91Z2ggZGFya25lc3MsIG9uIHlvdXIgcm9hZCB3aXRoIGVhc2UsIA0KK1RvIG15IGFzc29jaWF0ZSBQb3dlcnMsIHRoZW0gdG8gYWNxdWFpbnQgDQorV2l0aCB0aGVzZSBzdWNjZXNzZXMsIGFuZCB3aXRoIHRoZW0gcmVqb2ljZTsgDQorWW91IHR3byB0aGlzIHdheSwgYW1vbmcgdGhlc2UgbnVtZXJvdXMgb3JicywgDQorQWxsIHlvdXJzLCByaWdodCBkb3duIHRvIFBhcmFkaXNlIGRlc2NlbmQ7IA0KK1RoZXJlIGR3ZWxsLCBhbmQgcmVpZ24gaW4gYmxpc3M7IHRoZW5jZSBvbiB0aGUgZWFydGggDQorRG9taW5pb24gZXhlcmNpc2UgYW5kIGluIHRoZSBhaXIsIA0KK0NoaWVmbHkgb24gTWFuLCBzb2xlIGxvcmQgb2YgYWxsIGRlY2xhcmVkOyANCitIaW0gZmlyc3QgbWFrZSBzdXJlIHlvdXIgdGhyYWxsLCBhbmQgbGFzdGx5IGtpbGwuIA0KK015IHN1YnN0aXR1dGVzIEkgc2VuZCB5ZSwgYW5kIGNyZWF0ZSANCitQbGVuaXBvdGVudCBvbiBlYXJ0aCwgb2YgbWF0Y2hsZXNzIG1pZ2h0IA0KK0lzc3VpbmcgZnJvbSBtZTogb24geW91ciBqb2ludCB2aWdvdXIgbm93IA0KK015IGhvbGQgb2YgdGhpcyBuZXcga2luZ2RvbSBhbGwgZGVwZW5kcywgDQorVGhyb3VnaCBTaW4gdG8gRGVhdGggZXhwb3NlZCBieSBteSBleHBsb2l0LiANCitJZiB5b3VyIGpvaW50IHBvd2VyIHByZXZhaWwsIHRoZSBhZmZhaXJzIG9mIEhlbGwgDQorTm8gZGV0cmltZW50IG5lZWQgZmVhcjsgZ28sIGFuZCBiZSBzdHJvbmchIA0KK1NvIHNheWluZyBoZSBkaXNtaXNzZWQgdGhlbTsgdGhleSB3aXRoIHNwZWVkIA0KK1RoZWlyIGNvdXJzZSB0aHJvdWdoIHRoaWNrZXN0IGNvbnN0ZWxsYXRpb25zIGhlbGQsIA0KK1NwcmVhZGluZyB0aGVpciBiYW5lOyB0aGUgYmxhc3RlZCBzdGFycyBsb29rZWQgd2FuLCANCitBbmQgcGxhbmV0cywgcGxhbmV0LXN0cnVjaywgcmVhbCBlY2xpcHNlIA0KK1RoZW4gc3VmZmVyZWQuICBUaGUgb3RoZXIgd2F5IFNhdGFuIHdlbnQgZG93biANCitUaGUgY2F1c2V5IHRvIEhlbGwtZ2F0ZTogIE9uIGVpdGhlciBzaWRlIA0KK0Rpc3BhcnRlZCBDaGFvcyBvdmVyYnVpbHQgZXhjbGFpbWVkLCANCitBbmQgd2l0aCByZWJvdW5kaW5nIHN1cmdlIHRoZSBiYXJzIGFzc2FpbGVkLCANCitUaGF0IHNjb3JuZWQgaGlzIGluZGlnbmF0aW9uOiAgVGhyb3VnaCB0aGUgZ2F0ZSwgDQorV2lkZSBvcGVuIGFuZCB1bmd1YXJkZWQsIFNhdGFuIHBhc3NlZCwgDQorQW5kIGFsbCBhYm91dCBmb3VuZCBkZXNvbGF0ZTsgZm9yIHRob3NlLCANCitBcHBvaW50ZWQgdG8gc2l0IHRoZXJlLCBoYWQgbGVmdCB0aGVpciBjaGFyZ2UsIA0KK0Zsb3duIHRvIHRoZSB1cHBlciB3b3JsZDsgdGhlIHJlc3Qgd2VyZSBhbGwgDQorRmFyIHRvIHRoZSBpbmxhbmQgcmV0aXJlZCwgYWJvdXQgdGhlIHdhbGxzIA0KK09mIFBhbmRlbW9uaXVtOyBjaXR5IGFuZCBwcm91ZCBzZWF0IA0KK09mIEx1Y2lmZXIsIHNvIGJ5IGFsbHVzaW9uIGNhbGxlZCANCitPZiB0aGF0IGJyaWdodCBzdGFyIHRvIFNhdGFuIHBhcmFnb25lZDsgDQorVGhlcmUga2VwdCB0aGVpciB3YXRjaCB0aGUgbGVnaW9ucywgd2hpbGUgdGhlIEdyYW5kIA0KK0luIGNvdW5jaWwgc2F0LCBzb2xpY2l0b3VzIHdoYXQgY2hhbmNlIA0KK01pZ2h0IGludGVyY2VwdCB0aGVpciBlbXBlcm91ciBzZW50OyBzbyBoZSANCitEZXBhcnRpbmcgZ2F2ZSBjb21tYW5kLCBhbmQgdGhleSBvYnNlcnZlZC4gDQorQXMgd2hlbiB0aGUgVGFydGFyIGZyb20gaGlzIFJ1c3NpYW4gZm9lLCANCitCeSBBc3RyYWNhbiwgb3ZlciB0aGUgc25vd3kgcGxhaW5zLCANCitSZXRpcmVzOyBvciBCYWN0cmluIFNvcGhpLCBmcm9tIHRoZSBob3JucyANCitPZiBUdXJraXNoIGNyZXNjZW50LCBsZWF2ZXMgYWxsIHdhc3RlIGJleW9uZCANCitUaGUgcmVhbG0gb2YgQWxhZHVsZSwgaW4gaGlzIHJldHJlYXQgDQorVG8gVGF1cmlzIG9yIENhc2JlZW46ICBTbyB0aGVzZSwgdGhlIGxhdGUgDQorSGVhdmVuLWJhbmlzaGVkIGhvc3QsIGxlZnQgZGVzYXJ0IHV0bW9zdCBIZWxsIA0KK01hbnkgYSBkYXJrIGxlYWd1ZSwgcmVkdWNlZCBpbiBjYXJlZnVsIHdhdGNoIA0KK1JvdW5kIHRoZWlyIG1ldHJvcG9saXM7IGFuZCBub3cgZXhwZWN0aW5nIA0KK0VhY2ggaG91ciB0aGVpciBncmVhdCBhZHZlbnR1cmVyLCBmcm9tIHRoZSBzZWFyY2ggDQorT2YgZm9yZWlnbiB3b3JsZHM6ICBIZSB0aHJvdWdoIHRoZSBtaWRzdCB1bm1hcmtlZCwgDQorSW4gc2hvdyBwbGViZWlhbiBBbmdlbCBtaWxpdGFudCANCitPZiBsb3dlc3Qgb3JkZXIsIHBhc3NlZDsgYW5kIGZyb20gdGhlIGRvb3IgDQorT2YgdGhhdCBQbHV0b25pYW4gaGFsbCwgaW52aXNpYmxlIA0KK0FzY2VuZGVkIGhpcyBoaWdoIHRocm9uZTsgd2hpY2gsIHVuZGVyIHN0YXRlIA0KK09mIHJpY2hlc3QgdGV4dHVyZSBzcHJlYWQsIGF0IHRoZSB1cHBlciBlbmQgDQorV2FzIHBsYWNlZCBpbiByZWdhbCBsdXN0cmUuICBEb3duIGEgd2hpbGUgDQorSGUgc2F0LCBhbmQgcm91bmQgYWJvdXQgaGltIHNhdyB1bnNlZW46IA0KK0F0IGxhc3QsIGFzIGZyb20gYSBjbG91ZCwgaGlzIGZ1bGdlbnQgaGVhZCANCitBbmQgc2hhcGUgc3Rhci1icmlnaHQgYXBwZWFyZWQsIG9yIGJyaWdodGVyOyBjbGFkIA0KK1dpdGggd2hhdCBwZXJtaXNzaXZlIGdsb3J5IHNpbmNlIGhpcyBmYWxsIA0KK1dhcyBsZWZ0IGhpbSwgb3IgZmFsc2UgZ2xpdHRlcjogIEFsbCBhbWF6ZWQgDQorQXQgdGhhdCBzbyBzdWRkZW4gYmxhemUgdGhlIFN0eWdpYW4gdGhyb25nIA0KK0JlbnQgdGhlaXIgYXNwZWN0LCBhbmQgd2hvbSB0aGV5IHdpc2hlZCBiZWhlbGQsIA0KK1RoZWlyIG1pZ2h0eSBDaGllZiByZXR1cm5lZDogbG91ZCB3YXMgdGhlIGFjY2xhaW06IA0KK0ZvcnRoIHJ1c2hlZCBpbiBoYXN0ZSB0aGUgZ3JlYXQgY29uc3VsdGluZyBwZWVycywgDQorUmFpc2VkIGZyb20gdGhlaXIgZGFyayBEaXZhbiwgYW5kIHdpdGggbGlrZSBqb3kgDQorQ29uZ3JhdHVsYW50IGFwcHJvYWNoZWQgaGltOyB3aG8gd2l0aCBoYW5kIA0KK1NpbGVuY2UsIGFuZCB3aXRoIHRoZXNlIHdvcmRzIGF0dGVudGlvbiwgd29uLiANCitUaHJvbmVzLCBEb21pbmF0aW9ucywgUHJpbmNlZG9tcywgVmlydHVlcywgUG93ZXJzOyANCitGb3IgaW4gcG9zc2Vzc2lvbiBzdWNoLCBub3Qgb25seSBvZiByaWdodCwgDQorSSBjYWxsIHllLCBhbmQgZGVjbGFyZSB5ZSBub3c7IHJldHVybmVkIA0KK1N1Y2Nlc3NmdWwgYmV5b25kIGhvcGUsIHRvIGxlYWQgeWUgZm9ydGggDQorVHJpdW1waGFudCBvdXQgb2YgdGhpcyBpbmZlcm5hbCBwaXQgDQorQWJvbWluYWJsZSwgYWNjdXJzZWQsIHRoZSBob3VzZSBvZiB3b2UsIA0KK0FuZCBkdW5nZW9uIG9mIG91ciB0eXJhbnQ6ICBOb3cgcG9zc2VzcywgDQorQXMgTG9yZHMsIGEgc3BhY2lvdXMgd29ybGQsIHRvIG91ciBuYXRpdmUgSGVhdmVuIA0KK0xpdHRsZSBpbmZlcmlvdXIsIGJ5IG15IGFkdmVudHVyZSBoYXJkIA0KK1dpdGggcGVyaWwgZ3JlYXQgYWNoaWV2ZWQuICBMb25nIHdlcmUgdG8gdGVsbCANCitXaGF0IEkgaGF2ZSBkb25lOyB3aGF0IHN1ZmZlcmVkO3dpdGggd2hhdCBwYWluIA0KK1ZveWFnZWQgdGgnIHVucmVhbCwgdmFzdCwgdW5ib3VuZGVkIGRlZXAgDQorT2YgaG9ycmlibGUgY29uZnVzaW9uOyBvdmVyIHdoaWNoIA0KK0J5IFNpbiBhbmQgRGVhdGggYSBicm9hZCB3YXkgbm93IGlzIHBhdmVkLCANCitUbyBleHBlZGl0ZSB5b3VyIGdsb3Jpb3VzIG1hcmNoOyBidXQgSSANCitUb2lsZWQgb3V0IG15IHVuY291dGggcGFzc2FnZSwgZm9yY2VkIHRvIHJpZGUgDQorVGhlIHVudHJhY3RhYmxlIGFieXNzLCBwbHVuZ2VkIGluIHRoZSB3b21iIA0KK09mIHVub3JpZ2luYWwgTmlnaHQgYW5kIENoYW9zIHdpbGQ7IA0KK1RoYXQsIGplYWxvdXMgb2YgdGhlaXIgc2VjcmV0cywgZmllcmNlbHkgb3Bwb3NlZCANCitNeSBqb3VybmV5IHN0cmFuZ2UsIHdpdGggY2xhbW9yb3VzIHVwcm9hciANCitQcm90ZXN0aW5nIEZhdGUgc3VwcmVtZTsgdGhlbmNlIGhvdyBJIGZvdW5kIA0KK1RoZSBuZXcgY3JlYXRlZCB3b3JsZCwgd2hpY2ggZmFtZSBpbiBIZWF2ZW4gDQorTG9uZyBoYWQgZm9yZXRvbGQsIGEgZmFicmljayB3b25kZXJmdWwgDQorT2YgYWJzb2x1dGUgcGVyZmVjdGlvbiEgdGhlcmVpbiBNYW4gDQorUGxhY2VkIGluIGEgUGFyYWRpc2UsIGJ5IG91ciBleGlsZSANCitNYWRlIGhhcHB5OiAgSGltIGJ5IGZyYXVkIEkgaGF2ZSBzZWR1Y2VkIA0KK0Zyb20gaGlzIENyZWF0b3I7IGFuZCwgdGhlIG1vcmUgdG8gZW5jcmVhc2UgDQorWW91ciB3b25kZXIsIHdpdGggYW4gYXBwbGU7IGhlLCB0aGVyZWF0IA0KK09mZmVuZGVkLCB3b3J0aCB5b3VyIGxhdWdodGVyISBoYXRoIGdpdmVuIHVwIA0KK0JvdGggaGlzIGJlbG92ZWQgTWFuLCBhbmQgYWxsIGhpcyB3b3JsZCwgDQorVG8gU2luIGFuZCBEZWF0aCBhIHByZXksIGFuZCBzbyB0byB1cywgDQorV2l0aG91dCBvdXIgaGF6YXJkLCBsYWJvdXIsIG9yIGFsYXJtOyANCitUbyByYW5nZSBpbiwgYW5kIHRvIGR3ZWxsLCBhbmQgb3ZlciBNYW4gDQorVG8gcnVsZSwgYXMgb3ZlciBhbGwgaGUgc2hvdWxkIGhhdmUgcnVsZWQuIA0KK1RydWUgaXMsIG1lIGFsc28gaGUgaGF0aCBqdWRnZWQsIG9yIHJhdGhlciANCitNZSBub3QsIGJ1dCB0aGUgYnJ1dGUgc2VycGVudCBpbiB3aG9zZSBzaGFwZSANCitNYW4gSSBkZWNlaXZlZDogdGhhdCB3aGljaCB0byBtZSBiZWxvbmdzLCANCitJcyBlbm1pdHkgd2hpY2ggaGUgd2lsbCBwdXQgYmV0d2VlbiANCitNZSBhbmQgbWFua2luZDsgSSBhbSB0byBicnVpc2UgaGlzIGhlZWw7IA0KK0hpcyBzZWVkLCB3aGVuIGlzIG5vdCBzZXQsIHNoYWxsIGJydWlzZSBteSBoZWFkOiANCitBIHdvcmxkIHdobyB3b3VsZCBub3QgcHVyY2hhc2Ugd2l0aCBhIGJydWlzZSwgDQorT3IgbXVjaCBtb3JlIGdyaWV2b3VzIHBhaW4/LS1ZZSBoYXZlIHRoZSBhY2NvdW50IA0KK09mIG15IHBlcmZvcm1hbmNlOiAgV2hhdCByZW1haW5zLCB5ZSBHb2RzLCANCitCdXQgdXAsIGFuZCBlbnRlciBub3cgaW50byBmdWxsIGJsaXNzPyANCitTbyBoYXZpbmcgc2FpZCwgYSB3aGlsZSBoZSBzdG9vZCwgZXhwZWN0aW5nIA0KK1RoZWlyIHVuaXZlcnNhbCBzaG91dCwgYW5kIGhpZ2ggYXBwbGF1c2UsIA0KK1RvIGZpbGwgaGlzIGVhcjsgd2hlbiwgY29udHJhcnksIGhlIGhlYXJzIA0KK09uIGFsbCBzaWRlcywgZnJvbSBpbm51bWVyYWJsZSB0b25ndWVzLCANCitBIGRpc21hbCB1bml2ZXJzYWwgaGlzcywgdGhlIHNvdW5kIA0KK09mIHB1YmxpY2sgc2Nvcm47IGhlIHdvbmRlcmVkLCBidXQgbm90IGxvbmcgDQorSGFkIGxlaXN1cmUsIHdvbmRlcmluZyBhdCBoaW1zZWxmIG5vdyBtb3JlLCANCitIaXMgdmlzYWdlIGRyYXduIGhlIGZlbHQgdG8gc2hhcnAgYW5kIHNwYXJlOyANCitIaXMgYXJtcyBjbHVuZyB0byBoaXMgcmliczsgaGlzIGxlZ3MgZW50d2luaW5nIA0KK0VhY2ggb3RoZXIsIHRpbGwgc3VwcGxhbnRlZCBkb3duIGhlIGZlbGwgDQorQSBtb25zdHJvdXMgc2VycGVudCBvbiBoaXMgYmVsbHkgcHJvbmUsIA0KK1JlbHVjdGFudCwgYnV0IGluIHZhaW47IGEgZ3JlYXRlciBwb3dlciANCitOb3cgcnVsZWQgaGltLCBwdW5pc2hlZCBpbiB0aGUgc2hhcGUgaGUgc2lubmVkLCANCitBY2NvcmRpbmcgdG8gaGlzIGRvb206IGhlIHdvdWxkIGhhdmUgc3Bva2UsIA0KK0J1dCBoaXNzIGZvciBoaXNzIHJldHVybmVkIHdpdGggZm9ya2VkIHRvbmd1ZSANCitUbyBmb3JrZWQgdG9uZ3VlOyBmb3Igbm93IHdlcmUgYWxsIHRyYW5zZm9ybWVkIA0KK0FsaWtlLCB0byBzZXJwZW50cyBhbGwsIGFzIGFjY2Vzc29yaWVzIA0KK1RvIGhpcyBib2xkIHJpb3Q6ICBEcmVhZGZ1bCB3YXMgdGhlIGRpbiANCitPZiBoaXNzaW5nIHRocm91Z2ggdGhlIGhhbGwsIHRoaWNrIHN3YXJtaW5nIG5vdyANCitXaXRoIGNvbXBsaWNhdGVkIG1vbnN0ZXJzIGhlYWQgYW5kIHRhaWwsIA0KK1Njb3JwaW9uLCBhbmQgQXNwLCBhbmQgQW1waGlzYmFlbmEgZGlyZSwgDQorQ2VyYXN0ZXMgaG9ybmVkLCBIeWRydXMsIGFuZCBFbG9wcyBkcmVhciwgDQorQW5kIERpcHNhczsgKG5vdCBzbyB0aGljayBzd2FybWVkIG9uY2UgdGhlIHNvaWwgDQorQmVkcm9wdCB3aXRoIGJsb29kIG9mIEdvcmdvbiwgb3IgdGhlIGlzbGUgDQorT3BoaXVzYSwpIGJ1dCBzdGlsbCBncmVhdGVzdCBoZSB0aGUgbWlkc3QsIA0KK05vdyBEcmFnb24gZ3Jvd24sIGxhcmdlciB0aGFuIHdob20gdGhlIHN1biANCitJbmdlbmRlcmVkIGluIHRoZSBQeXRoaWFuIHZhbGUgb3Igc2xpbWUsIA0KK0h1Z2UgUHl0aG9uLCBhbmQgaGlzIHBvd2VyIG5vIGxlc3MgaGUgc2VlbWVkIA0KK0Fib3ZlIHRoZSByZXN0IHN0aWxsIHRvIHJldGFpbjsgdGhleSBhbGwgDQorSGltIGZvbGxvd2VkLCBpc3N1aW5nIGZvcnRoIHRvIHRoZSBvcGVuIGZpZWxkLCANCitXaGVyZSBhbGwgeWV0IGxlZnQgb2YgdGhhdCByZXZvbHRlZCByb3V0LCANCitIZWF2ZW4tZmFsbGVuLCBpbiBzdGF0aW9uIHN0b29kIG9yIGp1c3QgYXJyYXk7IA0KK1N1YmxpbWUgd2l0aCBleHBlY3RhdGlvbiB3aGVuIHRvIHNlZSANCitJbiB0cml1bXBoIGlzc3VpbmcgZm9ydGggdGhlaXIgZ2xvcmlvdXMgQ2hpZWY7IA0KK1RoZXkgc2F3LCBidXQgb3RoZXIgc2lnaHQgaW5zdGVhZCEgYSBjcm91ZCANCitPZiB1Z2x5IHNlcnBlbnRzOyBob3Jyb3VyIG9uIHRoZW0gZmVsbCwgDQorQW5kIGhvcnJpZCBzeW1wYXRoeTsgZm9yLCB3aGF0IHRoZXkgc2F3LCANCitUaGV5IGZlbHQgdGhlbXNlbHZlcywgbm93IGNoYW5naW5nOyBkb3duIHRoZWlyIGFybXMsIA0KK0Rvd24gZmVsbCBib3RoIHNwZWFyIGFuZCBzaGllbGQ7IGRvd24gdGhleSBhcyBmYXN0OyANCitBbmQgdGhlIGRpcmUgaGlzcyByZW5ld2VkLCBhbmQgdGhlIGRpcmUgZm9ybSANCitDYXRjaGVkLCBieSBjb250YWdpb247IGxpa2UgaW4gcHVuaXNobWVudCwgDQorQXMgaW4gdGhlaXIgY3JpbWUuICBUaHVzIHdhcyB0aGUgYXBwbGF1c2UgdGhleSBtZWFudCwgDQorVHVybmVkIHRvIGV4cGxvZGluZyBoaXNzLCB0cml1bXBoIHRvIHNoYW1lIA0KK0Nhc3Qgb24gdGhlbXNlbHZlcyBmcm9tIHRoZWlyIG93biBtb3V0aHMuICBUaGVyZSBzdG9vZCANCitBIGdyb3ZlIGhhcmQgYnksIHNwcnVuZyB1cCB3aXRoIHRoaXMgdGhlaXIgY2hhbmdlLCANCitIaXMgd2lsbCB3aG8gcmVpZ25zIGFib3ZlLCB0byBhZ2dyYXZhdGUgDQorVGhlaXIgcGVuYW5jZSwgbGFkZW4gd2l0aCBmYWlyIGZydWl0LCBsaWtlIHRoYXQgDQorV2hpY2ggZ3JldyBpbiBQYXJhZGlzZSwgdGhlIGJhaXQgb2YgRXZlIA0KK1VzZWQgYnkgdGhlIFRlbXB0ZXI6IG9uIHRoYXQgcHJvc3BlY3Qgc3RyYW5nZSANCitUaGVpciBlYXJuZXN0IGV5ZXMgdGhleSBmaXhlZCwgaW1hZ2luaW5nIA0KK0ZvciBvbmUgZm9yYmlkZGVuIHRyZWUgYSBtdWx0aXR1ZGUgDQorTm93IHJpc2VuLCB0byB3b3JrIHRoZW0gZnVydGhlciB3b2Ugb3Igc2hhbWU7IA0KK1lldCwgcGFyY2hlZCB3aXRoIHNjYWxkaW5nIHRoaXJzdCBhbmQgaHVuZ2VyIGZpZXJjZSwgDQorVGhvdWdoIHRvIGRlbHVkZSB0aGVtIHNlbnQsIGNvdWxkIG5vdCBhYnN0YWluOyANCitCdXQgb24gdGhleSByb2xsZWQgaW4gaGVhcHMsIGFuZCwgdXAgdGhlIHRyZWVzIA0KK0NsaW1iaW5nLCBzYXQgdGhpY2tlciB0aGFuIHRoZSBzbmFreSBsb2NrcyANCitUaGF0IGN1cmxlZCBNZWdhZXJhOiBncmVlZGlseSB0aGV5IHBsdWNrZWQgDQorVGhlIGZydWl0YWdlIGZhaXIgdG8gc2lnaHQsIGxpa2UgdGhhdCB3aGljaCBncmV3IA0KK05lYXIgdGhhdCBiaXR1bWlub3VzIGxha2Ugd2hlcmUgU29kb20gZmxhbWVkOyANCitUaGlzIG1vcmUgZGVsdXNpdmUsIG5vdCB0aGUgdG91Y2gsIGJ1dCB0YXN0ZSANCitEZWNlaXZlZDsgdGhleSwgZm9uZGx5IHRoaW5raW5nIHRvIGFsbGF5IA0KK1RoZWlyIGFwcGV0aXRlIHdpdGggZ3VzdCwgaW5zdGVhZCBvZiBmcnVpdCANCitDaGV3ZWQgYml0dGVyIGFzaGVzLCB3aGljaCB0aGUgb2ZmZW5kZWQgdGFzdGUgDQorV2l0aCBzcGF0dGVyaW5nIG5vaXNlIHJlamVjdGVkOiBvZnQgdGhleSBhc3NheWVkLCANCitIdW5nZXIgYW5kIHRoaXJzdCBjb25zdHJhaW5pbmc7IGRydWdnZWQgYXMgb2Z0LCANCitXaXRoIGhhdGVmdWxsZXN0IGRpc3JlbGlzaCB3cml0aGVkIHRoZWlyIGphd3MsIA0KK1dpdGggc29vdCBhbmQgY2luZGVycyBmaWxsZWQ7IHNvIG9mdCB0aGV5IGZlbGwgDQorSW50byB0aGUgc2FtZSBpbGx1c2lvbiwgbm90IGFzIE1hbiANCitXaG9tIHRoZXkgdHJpdW1waGVkIG9uY2UgbGFwc2VkLiAgVGh1cyB3ZXJlIHRoZXkgcGxhZ3VlZCANCitBbmQgd29ybiB3aXRoIGZhbWluZSwgbG9uZyBhbmQgY2Vhc2VsZXNzIGhpc3MsIA0KK1RpbGwgdGhlaXIgbG9zdCBzaGFwZSwgcGVybWl0dGVkLCB0aGV5IHJlc3VtZWQ7IA0KK1llYXJseSBlbmpvaW5lZCwgc29tZSBzYXksIHRvIHVuZGVyZ28sIA0KK1RoaXMgYW5udWFsIGh1bWJsaW5nIGNlcnRhaW4gbnVtYmVyZWQgZGF5cywgDQorVG8gZGFzaCB0aGVpciBwcmlkZSwgYW5kIGpveSwgZm9yIE1hbiBzZWR1Y2VkLiANCitIb3dldmVyLCBzb21lIHRyYWRpdGlvbiB0aGV5IGRpc3BlcnNlZCANCitBbW9uZyB0aGUgSGVhdGhlbiwgb2YgdGhlaXIgcHVyY2hhc2UgZ290LCANCitBbmQgZmFibGVkIGhvdyB0aGUgU2VycGVudCwgd2hvbSB0aGV5IGNhbGxlZCANCitPcGhpb24sIHdpdGggRXVyeW5vbWUsIHRoZSB3aWRlLS0gDQorRW5jcm9hY2hpbmcgRXZlIHBlcmhhcHMsIGhhZCBmaXJzdCB0aGUgcnVsZSANCitPZiBoaWdoIE9seW1wdXM7IHRoZW5jZSBieSBTYXR1cm4gZHJpdmVuIA0KK0FuZCBPcHMsIGVyZSB5ZXQgRGljdGFlYW4gSm92ZSB3YXMgYm9ybi4gDQorTWVhbiB3aGlsZSBpbiBQYXJhZGlzZSB0aGUgaGVsbGlzaCBwYWlyIA0KK1RvbyBzb29uIGFycml2ZWQ7IFNpbiwgdGhlcmUgaW4gcG93ZXIgYmVmb3JlLCANCitPbmNlIGFjdHVhbDsgbm93IGluIGJvZHksIGFuZCB0byBkd2VsbCANCitIYWJpdHVhbCBoYWJpdGFudDsgYmVoaW5kIGhlciBEZWF0aCwgDQorQ2xvc2UgZm9sbG93aW5nIHBhY2UgZm9yIHBhY2UsIG5vdCBtb3VudGVkIHlldCANCitPbiBoaXMgcGFsZSBob3JzZTogdG8gd2hvbSBTaW4gdGh1cyBiZWdhbi4gDQorU2Vjb25kIG9mIFNhdGFuIHNwcnVuZywgYWxsLWNvbnF1ZXJpbmcgRGVhdGghIA0KK1doYXQgdGhpbmtlc3QgdGhvdSBvZiBvdXIgZW1waXJlIG5vdywgdGhvdWdoIGVhcm5lZCANCitXaXRoIHRyYXZlbCBkaWZmaWN1bHQsIG5vdCBiZXR0ZXIgZmFyIA0KK1RoYW4gc3RpbGwgYXQgSGVsbCdzIGRhcmsgdGhyZXNob2xkIHRvIGhhdmUgc2F0IHdhdGNoLCANCitVbm5hbWVkLCB1bmRyZWFkZWQsIGFuZCB0aHlzZWxmIGhhbGYgc3RhcnZlZD8gDQorV2hvbSB0aHVzIHRoZSBTaW4tYm9ybiBtb25zdGVyIGFuc3dlcmVkIHNvb24uIA0KK1RvIG1lLCB3aG8gd2l0aCBldGVybmFsIGZhbWluZSBwaW5lLCANCitBbGlrZSBpcyBIZWxsLCBvciBQYXJhZGlzZSwgb3IgSGVhdmVuOyANCitUaGVyZSBiZXN0LCB3aGVyZSBtb3N0IHdpdGggcmF2aW5lIEkgbWF5IG1lZXQ7IA0KK1doaWNoIGhlcmUsIHRob3VnaCBwbGVudGVvdXMsIGFsbCB0b28gbGl0dGxlIHNlZW1zIA0KK1RvIHN0dWZmIHRoaXMgbWF3LCB0aGlzIHZhc3QgdW5oaWRlLWJvdW5kIGNvcnBzLiANCitUbyB3aG9tIHRoZSBpbmNlc3R1b3VzIG1vdGhlciB0aHVzIHJlcGxpZWQuIA0KK1Rob3UgdGhlcmVmb3JlIG9uIHRoZXNlIGhlcmJzLCBhbmQgZnJ1aXRzLCBhbmQgZmxvd2VycywgDQorRmVlZCBmaXJzdDsgb24gZWFjaCBiZWFzdCBuZXh0LCBhbmQgZmlzaCwgYW5kIGZvd2w7IA0KK05vIGhvbWVseSBtb3JzZWxzISBhbmQsIHdoYXRldmVyIHRoaW5nIA0KK1RoZSBzaXRoZSBvZiBUaW1lIG1vd3MgZG93biwgZGV2b3VyIHVuc3BhcmVkOyANCitUaWxsIEksIGluIE1hbiByZXNpZGluZywgdGhyb3VnaCB0aGUgcmFjZSwgDQorSGlzIHRob3VnaHRzLCBoaXMgbG9va3MsIHdvcmRzLCBhY3Rpb25zLCBhbGwgaW5mZWN0OyANCitBbmQgc2Vhc29uIGhpbSB0aHkgbGFzdCBhbmQgc3dlZXRlc3QgcHJleS4gDQorVGhpcyBzYWlkLCB0aGV5IGJvdGggYmV0b29rIHRoZW0gc2V2ZXJhbCB3YXlzLCANCitCb3RoIHRvIGRlc3Ryb3ksIG9yIHVuaW1tb3J0YWwgbWFrZSANCitBbGwga2luZHMsIGFuZCBmb3IgZGVzdHJ1Y3Rpb24gdG8gbWF0dXJlIA0KK1Nvb25lciBvciBsYXRlcjsgd2hpY2ggdGhlIEFsbWlnaHR5IHNlZWluZywgDQorRnJvbSBoaXMgdHJhbnNjZW5kZW50IHNlYXQgdGhlIFNhaW50cyBhbW9uZywgDQorVG8gdGhvc2UgYnJpZ2h0IE9yZGVycyB1dHRlcmVkIHRodXMgaGlzIHZvaWNlLiANCitTZWUsIHdpdGggd2hhdCBoZWF0IHRoZXNlIGRvZ3Mgb2YgSGVsbCBhZHZhbmNlIA0KK1RvIHdhc3RlIGFuZCBoYXZvY2sgeW9uZGVyIHdvcmxkLCB3aGljaCBJIA0KK1NvIGZhaXIgYW5kIGdvb2QgY3JlYXRlZDsgYW5kIGhhZCBzdGlsbCANCitLZXB0IGluIHRoYXQgc3RhdGUsIGhhZCBub3QgdGhlIGZvbGx5IG9mIE1hbiANCitMZXQgaW4gdGhlc2Ugd2FzdGVmdWwgZnVyaWVzLCB3aG8gaW1wdXRlIA0KK0ZvbGx5IHRvIG1lOyBzbyBkb3RoIHRoZSBQcmluY2Ugb2YgSGVsbCANCitBbmQgaGlzIGFkaGVyZW50cywgdGhhdCB3aXRoIHNvIG11Y2ggZWFzZSANCitJIHN1ZmZlciB0aGVtIHRvIGVudGVyIGFuZCBwb3NzZXNzIA0KK0EgcGxhY2Ugc28gaGVhdmVubHk7IGFuZCwgY29ubml2aW5nLCBzZWVtIA0KK1RvIGdyYXRpZnkgbXkgc2Nvcm5mdWwgZW5lbWllcywgDQorVGhhdCBsYXVnaCwgYXMgaWYsIHRyYW5zcG9ydGVkIHdpdGggc29tZSBmaXQgDQorT2YgcGFzc2lvbiwgSSB0byB0aGVtIGhhZCBxdWl0dGVkIGFsbCwgDQorQXQgcmFuZG9tIHlpZWxkZWQgdXAgdG8gdGhlaXIgbWlzcnVsZTsgDQorQW5kIGtub3cgbm90IHRoYXQgSSBjYWxsZWQsIGFuZCBkcmV3IHRoZW0gdGhpdGhlciwgDQorTXkgSGVsbC1ob3VuZHMsIHRvIGxpY2sgdXAgdGhlIGRyYWZmIGFuZCBmaWx0aCANCitXaGljaCBNYW4ncyBwb2xsdXRpbmcgc2luIHdpdGggdGFpbnQgaGF0aCBzaGVkIA0KK09uIHdoYXQgd2FzIHB1cmU7IHRpbCwgY3JhbW1lZCBhbmQgZ29yZ2VkLCBuaWdoIGJ1cnN0IA0KK1dpdGggc3Vja2VkIGFuZCBnbHV0dGVkIG9mZmFsLCBhdCBvbmUgc2xpbmcgDQorT2YgdGh5IHZpY3RvcmlvdXMgYXJtLCB3ZWxsLXBsZWFzaW5nIFNvbiwgDQorQm90aCBTaW4sIGFuZCBEZWF0aCwgYW5kIHlhd25pbmcgR3JhdmUsIGF0IGxhc3QsIA0KK1Rocm91Z2ggQ2hhb3MgaHVybGVkLCBvYnN0cnVjdCB0aGUgbW91dGggb2YgSGVsbCANCitGb3IgZXZlciwgYW5kIHNlYWwgdXAgaGlzIHJhdmVub3VzIGphd3MuIA0KK1RoZW4gSGVhdmVuIGFuZCBFYXJ0aCByZW5ld2VkIHNoYWxsIGJlIG1hZGUgcHVyZSANCitUbyBzYW5jdGl0eSwgdGhhdCBzaGFsbCByZWNlaXZlIG5vIHN0YWluOiANCitUaWxsIHRoZW4sIHRoZSBjdXJzZSBwcm9ub3VuY2VkIG9uIGJvdGggcHJlY2VkZXMuIA0KK0hlIGVuZGVkLCBhbmQgdGhlIGhlYXZlbmx5IGF1ZGllbmNlIGxvdWQgDQorU3VuZyBIYWxsZWx1aWFoLCBhcyB0aGUgc291bmQgb2Ygc2VhcywgDQorVGhyb3VnaCBtdWx0aXR1ZGUgdGhhdCBzdW5nOiAgSnVzdCBhcmUgdGh5IHdheXMsIA0KK1JpZ2h0ZW91cyBhcmUgdGh5IGRlY3JlZXMgb24gYWxsIHRoeSB3b3JrczsgDQorV2hvIGNhbiBleHRlbnVhdGUgdGhlZT8gIE5leHQsIHRvIHRoZSBTb24sIA0KK0Rlc3RpbmVkIFJlc3RvcmVyIG9mIG1hbmtpbmQsIGJ5IHdob20gDQorTmV3IEhlYXZlbiBhbmQgRWFydGggc2hhbGwgdG8gdGhlIGFnZXMgcmlzZSwgDQorT3IgZG93biBmcm9tIEhlYXZlbiBkZXNjZW5kLi0tU3VjaCB3YXMgdGhlaXIgc29uZzsgDQorV2hpbGUgdGhlIENyZWF0b3IsIGNhbGxpbmcgZm9ydGggYnkgbmFtZSANCitIaXMgbWlnaHR5IEFuZ2VscywgZ2F2ZSB0aGVtIHNldmVyYWwgY2hhcmdlLCANCitBcyBzb3J0ZWQgYmVzdCB3aXRoIHByZXNlbnQgdGhpbmdzLiAgVGhlIHN1biANCitIYWQgZmlyc3QgaGlzIHByZWNlcHQgc28gdG8gbW92ZSwgc28gc2hpbmUsIA0KK0FzIG1pZ2h0IGFmZmVjdCB0aGUgZWFydGggd2l0aCBjb2xkIGFuZCBoZWF0IA0KK1NjYXJjZSB0b2xlcmFibGU7IGFuZCBmcm9tIHRoZSBub3J0aCB0byBjYWxsIA0KK0RlY3JlcGl0IHdpbnRlcjsgZnJvbSB0aGUgc291dGggdG8gYnJpbmcgDQorU29sc3RpdGlhbCBzdW1tZXIncyBoZWF0LiAgVG8gdGhlIGJsYW5jIG1vb24gDQorSGVyIG9mZmljZSB0aGV5IHByZXNjcmliZWQ7IHRvIHRoZSBvdGhlciBmaXZlIA0KK1RoZWlyIHBsYW5ldGFyeSBtb3Rpb25zLCBhbmQgYXNwZWN0cywgDQorSW4gc2V4dGlsZSwgc3F1YXJlLCBhbmQgdHJpbmUsIGFuZCBvcHBvc2l0ZSwgDQorT2Ygbm94aW91cyBlZmZpY2FjeSwgYW5kIHdoZW4gdG8gam9pbiANCitJbiBzeW5vZCB1bmJlbmlnbjsgYW5kIHRhdWdodCB0aGUgZml4ZWQgDQorVGhlaXIgaW5mbHVlbmNlIG1hbGlnbmFudCB3aGVuIHRvIHNob3dlciwgDQorV2hpY2ggb2YgdGhlbSByaXNpbmcgd2l0aCB0aGUgc3VuLCBvciBmYWxsaW5nLCANCitTaG91bGQgcHJvdmUgdGVtcGVzdHVvdXM6ICBUbyB0aGUgd2luZHMgdGhleSBzZXQgDQorVGhlaXIgY29ybmVycywgd2hlbiB3aXRoIGJsdXN0ZXIgdG8gY29uZm91bmQgDQorU2VhLCBhaXIsIGFuZCBzaG9yZTsgdGhlIHRodW5kZXIgd2hlbiB0byByb2xsIA0KK1dpdGggdGVycm91ciB0aHJvdWdoIHRoZSBkYXJrIGFlcmVhbCBoYWxsLiANCitTb21lIHNheSwgaGUgYmlkIGhpcyBBbmdlbHMgdHVybiBhc2NhbnNlIA0KK1RoZSBwb2xlcyBvZiBlYXJ0aCwgdHdpY2UgdGVuIGRlZ3JlZXMgYW5kIG1vcmUsIA0KK0Zyb20gdGhlIHN1bidzIGF4bGU7IHRoZXkgd2l0aCBsYWJvdXIgcHVzaGVkIA0KK09ibGlxdWUgdGhlIGNlbnRyaWNrIGdsb2JlOiAgU29tZSBzYXksIHRoZSBzdW4gDQorV2FzIGJpZCB0dXJuIHJlaW5zIGZyb20gdGhlIGVxdWlub2N0aWFsIHJvYWQgDQorTGlrZSBkaXN0YW50IGJyZWFkdGggdG8gVGF1cnVzIHdpdGggdGhlIHNldmVuIA0KK0F0bGFudGljayBTaXN0ZXJzLCBhbmQgdGhlIFNwYXJ0YW4gVHdpbnMsIA0KK1VwIHRvIHRoZSBUcm9waWNrIENyYWI6IHRoZW5jZSBkb3duIGFtYWluIA0KK0J5IExlbywgYW5kIHRoZSBWaXJnaW4sIGFuZCB0aGUgU2NhbGVzLCANCitBcyBkZWVwIGFzIENhcHJpY29ybjsgdG8gYnJpbmcgaW4gY2hhbmdlIA0KK09mIHNlYXNvbnMgdG8gZWFjaCBjbGltZTsgZWxzZSBoYWQgdGhlIHNwcmluZyANCitQZXJwZXR1YWwgc21pbGVkIG9uIGVhcnRoIHdpdGggdmVybmFudCBmbG93ZXJzLCANCitFcXVhbCBpbiBkYXlzIGFuZCBuaWdodHMsIGV4Y2VwdCB0byB0aG9zZSANCitCZXlvbmQgdGhlIHBvbGFyIGNpcmNsZXM7IHRvIHRoZW0gZGF5IA0KK0hhZCB1bmJlbmlnaHRlZCBzaG9uZSwgd2hpbGUgdGhlIGxvdyBzdW4sIA0KK1RvIHJlY29tcGVuc2UgaGlzIGRpc3RhbmNlLCBpbiB0aGVpciBzaWdodCANCitIYWQgcm91bmRlZCBzdGlsbCB0aGUgaG9yaXpvbiwgYW5kIG5vdCBrbm93biANCitPciBlYXN0IG9yIHdlc3Q7IHdoaWNoIGhhZCBmb3JiaWQgdGhlIHNub3cgDQorRnJvbSBjb2xkIEVzdG90aWxhbmQsIGFuZCBzb3V0aCBhcyBmYXIgDQorQmVuZWF0aCBNYWdlbGxhbi4gIEF0IHRoYXQgdGFzdGVkIGZydWl0IA0KK1RoZSBzdW4sIGFzIGZyb20gVGh5ZXN0ZWFuIGJhbnF1ZXQsIHR1cm5lZCANCitIaXMgY291cnNlIGludGVuZGVkOyBlbHNlLCBob3cgaGFkIHRoZSB3b3JsZCANCitJbmhhYml0ZWQsIHRob3VnaCBzaW5sZXNzLCBtb3JlIHRoYW4gbm93LCANCitBdm9pZGVkIHBpbmNoaW5nIGNvbGQgYW5kIHNjb3JjaGluZyBoZWF0PyANCitUaGVzZSBjaGFuZ2VzIGluIHRoZSBIZWF2ZW5zLCB0aG91Z2ggc2xvdywgcHJvZHVjZWQgDQorTGlrZSBjaGFuZ2Ugb24gc2VhIGFuZCBsYW5kOyBzaWRlcmFsIGJsYXN0LCANCitWYXBvdXIsIGFuZCBtaXN0LCBhbmQgZXhoYWxhdGlvbiBob3QsIA0KK0NvcnJ1cHQgYW5kIHBlc3RpbGVudDogIE5vdyBmcm9tIHRoZSBub3J0aCANCitPZiBOb3J1bWJlZ2EsIGFuZCB0aGUgU2Ftb2VkIHNob3JlLCANCitCdXJzdGluZyB0aGVpciBicmF6ZW4gZHVuZ2VvbiwgYXJtZWQgd2l0aCBpY2UsIA0KK0FuZCBzbm93LCBhbmQgaGFpbCwgYW5kIHN0b3JteSBndXN0IGFuZCBmbGF3LCANCitCb3JlYXMsIGFuZCBDYWVjaWFzLCBhbmQgQXJnZXN0ZXMgbG91ZCwgDQorQW5kIFRocmFzY2lhcywgcmVuZCB0aGUgd29vZHMsIGFuZCBzZWFzIHVwdHVybjsgDQorV2l0aCBhZHZlcnNlIGJsYXN0IHVwdHVybnMgdGhlbSBmcm9tIHRoZSBzb3V0aCANCitOb3R1cywgYW5kIEFmZXIgYmxhY2sgd2l0aCB0aHVuZGVyb3VzIGNsb3VkcyANCitGcm9tIFNlcnJhbGlvbmE7IHRod2FydCBvZiB0aGVzZSwgYXMgZmllcmNlLCANCitGb3J0aCBydXNoIHRoZSBMZXZhbnQgYW5kIHRoZSBQb25lbnQgd2luZHMsIA0KK0V1cnVzIGFuZCBaZXBoeXIsIHdpdGggdGhlaXIgbGF0ZXJhbCBub2lzZSwgDQorU2lyb2NjbyBhbmQgTGliZWNjaGlvLiAgVGh1cyBiZWdhbiANCitPdXRyYWdlIGZyb20gbGlmZWxlc3MgdGhpbmdzOyBidXQgRGlzY29yZCBmaXJzdCwgDQorRGF1Z2h0ZXIgb2YgU2luLCBhbW9uZyB0aGUgaXJyYXRpb25hbCANCitEZWF0aCBpbnRyb2R1Y2VkLCB0aHJvdWdoIGZpZXJjZSBhbnRpcGF0aHk6IA0KK0JlYXN0IG5vdyB3aXRoIGJlYXN0ICdnYW4gd2FyLCBhbmQgZm93bCB3aXRoIGZvd2wsIA0KK0FuZCBmaXNoIHdpdGggZmlzaDsgdG8gZ3JhemUgdGhlIGhlcmIgYWxsIGxlYXZpbmcsIA0KK0Rldm91cmVkIGVhY2ggb3RoZXI7IG5vciBzdG9vZCBtdWNoIGluIGF3ZSANCitPZiBNYW4sIGJ1dCBmbGVkIGhpbTsgb3IsIHdpdGggY291bnRlbmFuY2UgZ3JpbSwgDQorR2xhcmVkIG9uIGhpbSBwYXNzaW5nLiAgVGhlc2Ugd2VyZSBmcm9tIHdpdGhvdXQgDQorVGhlIGdyb3dpbmcgbWlzZXJpZXMsIHdoaWNoIEFkYW0gc2F3IA0KK0FscmVhZHkgaW4gcGFydCwgdGhvdWdoIGhpZCBpbiBnbG9vbWllc3Qgc2hhZGUsIA0KK1RvIHNvcnJvdyBhYmFuZG9uZWQsIGJ1dCB3b3JzZSBmZWx0IHdpdGhpbjsgDQorQW5kLCBpbiBhIHRyb3VibGVkIHNlYSBvZiBwYXNzaW9uIHRvc3QsIA0KK1RodXMgdG8gZGlzYnVyZGVuIHNvdWdodCB3aXRoIHNhZCBjb21wbGFpbnQuIA0KK08gbWlzZXJhYmxlIG9mIGhhcHB5ISAgSXMgdGhpcyB0aGUgZW5kIA0KK09mIHRoaXMgbmV3IGdsb3Jpb3VzIHdvcmxkLCBhbmQgbWUgc28gbGF0ZSANCitUaGUgZ2xvcnkgb2YgdGhhdCBnbG9yeSwgd2hvIG5vdyBiZWNvbWUgDQorQWNjdXJzZWQsIG9mIGJsZXNzZWQ/IGhpZGUgbWUgZnJvbSB0aGUgZmFjZSANCitPZiBHb2QsIHdob20gdG8gYmVob2xkIHdhcyB0aGVuIG15IGhpZ2h0aCANCitPZiBoYXBwaW5lc3MhLS1ZZXQgd2VsbCwgaWYgaGVyZSB3b3VsZCBlbmQgDQorVGhlIG1pc2VyeTsgSSBkZXNlcnZlZCBpdCwgYW5kIHdvdWxkIGJlYXIgDQorTXkgb3duIGRlc2VydmluZ3M7IGJ1dCB0aGlzIHdpbGwgbm90IHNlcnZlOiANCitBbGwgdGhhdCBJIGVhdCBvciBkcmluaywgb3Igc2hhbGwgYmVnZXQsIA0KK0lzIHByb3BhZ2F0ZWQgY3Vyc2UuICBPIHZvaWNlLCBvbmNlIGhlYXJkIA0KK0RlbGlnaHRmdWxseSwgRW5jcmVhc2UgYW5kIG11bHRpcGx5OyANCitOb3cgZGVhdGggdG8gaGVhciEgZm9yIHdoYXQgY2FuIEkgZW5jcmVhc2UsIA0KK09yIG11bHRpcGx5LCBidXQgY3Vyc2VzIG9uIG15IGhlYWQ/IA0KK1dobyBvZiBhbGwgYWdlcyB0byBzdWNjZWVkLCBidXQsIGZlZWxpbmcgDQorVGhlIGV2aWwgb24gaGltIGJyb3VnaHQgYnkgbWUsIHdpbGwgY3Vyc2UgDQorTXkgaGVhZD8gIElsbCBmYXJlIG91ciBhbmNlc3RvciBpbXB1cmUsIA0KK0ZvciB0aGlzIHdlIG1heSB0aGFuayBBZGFtISBidXQgaGlzIHRoYW5rcyANCitTaGFsbCBiZSB0aGUgZXhlY3JhdGlvbjogc28sIGJlc2lkZXMgDQorTWluZSBvd24gdGhhdCBiaWRlIHVwb24gbWUsIGFsbCBmcm9tIG1lIA0KK1NoYWxsIHdpdGggYSBmaWVyY2UgcmVmbHV4IG9uIG1lIHJlYm91bmQ7IA0KK09uIG1lLCBhcyBvbiB0aGVpciBuYXR1cmFsIGNlbnRlciwgbGlnaHQgDQorSGVhdnksIHRob3VnaCBpbiB0aGVpciBwbGFjZS4gIE8gZmxlZXRpbmcgam95cyANCitPZiBQYXJhZGlzZSwgZGVhciBib3VnaHQgd2l0aCBsYXN0aW5nIHdvZXMhIA0KK0RpZCBJIHJlcXVlc3QgdGhlZSwgTWFrZXIsIGZyb20gbXkgY2xheSANCitUbyBtb3VsZCBtZSBNYW4/IGRpZCBJIHNvbGljaXQgdGhlZSANCitGcm9tIGRhcmtuZXNzIHRvIHByb21vdGUgbWUsIG9yIGhlcmUgcGxhY2UgDQorSW4gdGhpcyBkZWxpY2lvdXMgZ2FyZGVuPyAgQXMgbXkgd2lsbCANCitDb25jdXJyZWQgbm90IHRvIG15IGJlaW5nLCBpdCB3ZXJlIGJ1dCByaWdodCANCitBbmQgZXF1YWwgdG8gcmVkdWNlIG1lIHRvIG15IGR1c3Q7IA0KK0Rlc2lyb3VzIHRvIHJlc2lnbiBhbmQgcmVuZGVyIGJhY2sgDQorQWxsIEkgcmVjZWl2ZWQ7IHVuYWJsZSB0byBwZXJmb3JtIA0KK1RoeSB0ZXJtcyB0b28gaGFyZCwgYnkgd2hpY2ggSSB3YXMgdG8gaG9sZCANCitUaGUgZ29vZCBJIHNvdWdodCBub3QuICBUbyB0aGUgbG9zcyBvZiB0aGF0LCANCitTdWZmaWNpZW50IHBlbmFsdHksIHdoeSBoYXN0IHRob3UgYWRkZWQgDQorVGhlIHNlbnNlIG9mIGVuZGxlc3Mgd29lcz8gIEluZXhwbGljYWJsZSANCitXaHkgYW0gSSBtb2NrZWQgd2l0aCBkZWF0aCwgYW5kIGxlbmd0aGVuZWQgb3V0IA0KK1RvIGRlYXRobGVzcyBwYWluPyAgSG93IGdsYWRseSB3b3VsZCBJIG1lZXQgDQorTW9ydGFsaXR5IG15IHNlbnRlbmNlLCBhbmQgYmUgZWFydGggDQorSW5zZW5zaWJsZSEgIEhvdyBnbGFkIHdvdWxkIGxheSBtZSBkb3duIA0KK0FzIGluIG15IG1vdGhlcidzIGxhcCEgIFRoZXJlIEkgc2hvdWxkIHJlc3QsIA0KK0FuZCBzbGVlcCBzZWN1cmU7IGhpcyBkcmVhZGZ1bCB2b2ljZSBubyBtb3JlIA0KK1dvdWxkIHRodW5kZXIgaW4gbXkgZWFyczsgbm8gZmVhciBvZiB3b3JzZSANCitUbyBtZSwgYW5kIHRvIG15IG9mZnNwcmluZywgd291bGQgdG9ybWVudCBtZSANCitXaXRoIGNydWVsIGV4cGVjdGF0aW9uLiAgWWV0IG9uZSBkb3VidCANCitQdXJzdWVzIG1lIHN0aWxsLCBsZXN0IGFsbCBJIGNhbm5vdCBkaWU7IA0KK0xlc3QgdGhhdCBwdXJlIGJyZWF0aCBvZiBsaWZlLCB0aGUgc3Bpcml0IG9mIE1hbiANCitXaGljaCBHb2QgaW5zcGlyZWQsIGNhbm5vdCB0b2dldGhlciBwZXJpc2ggDQorV2l0aCB0aGlzIGNvcnBvcmVhbCBjbG9kOyB0aGVuLCBpbiB0aGUgZ3JhdmUsIA0KK09yIGluIHNvbWUgb3RoZXIgZGlzbWFsIHBsYWNlLCB3aG8ga25vd3MgDQorQnV0IEkgc2hhbGwgZGllIGEgbGl2aW5nIGRlYXRoPyAgTyB0aG91Z2h0IA0KK0hvcnJpZCwgaWYgdHJ1ZSEgIFlldCB3aHk/IEl0IHdhcyBidXQgYnJlYXRoIA0KK09mIGxpZmUgdGhhdCBzaW5uZWQ7IHdoYXQgZGllcyBidXQgd2hhdCBoYWQgbGlmZSANCitBbmQgc2luPyAgVGhlIGJvZHkgcHJvcGVybHkgaGFkIG5laXRoZXIsIA0KK0FsbCBvZiBtZSB0aGVuIHNoYWxsIGRpZTogbGV0IHRoaXMgYXBwZWFzZSANCitUaGUgZG91YnQsIHNpbmNlIGh1bWFuIHJlYWNoIG5vIGZ1cnRoZXIga25vd3MuIA0KK0ZvciB0aG91Z2ggdGhlIExvcmQgb2YgYWxsIGJlIGluZmluaXRlLCANCitJcyBoaXMgd3JhdGggYWxzbz8gIEJlIGl0LCBNYW4gaXMgbm90IHNvLCANCitCdXQgbW9ydGFsIGRvb21lZC4gIEhvdyBjYW4gaGUgZXhlcmNpc2UgDQorV3JhdGggd2l0aG91dCBlbmQgb24gTWFuLCB3aG9tIGRlYXRoIG11c3QgZW5kPyANCitDYW4gaGUgbWFrZSBkZWF0aGxlc3MgZGVhdGg/ICBUaGF0IHdlcmUgdG8gbWFrZSANCitTdHJhbmdlIGNvbnRyYWRpY3Rpb24sIHdoaWNoIHRvIEdvZCBoaW1zZWxmIA0KK0ltcG9zc2libGUgaXMgaGVsZDsgYXMgYXJndW1lbnQgDQorT2Ygd2Vha25lc3MsIG5vdCBvZiBwb3dlci4gIFdpbGwgaGUgZHJhdyBvdXQsIA0KK0ZvciBhbmdlcidzIHNha2UsIGZpbml0ZSB0byBpbmZpbml0ZSwgDQorSW4gcHVuaXNoZWQgTWFuLCB0byBzYXRpc2Z5IGhpcyByaWdvdXIsIA0KK1NhdGlzZmllZCBuZXZlcj8gIFRoYXQgd2VyZSB0byBleHRlbmQgDQorSGlzIHNlbnRlbmNlIGJleW9uZCBkdXN0IGFuZCBOYXR1cmUncyBsYXc7IA0KK0J5IHdoaWNoIGFsbCBjYXVzZXMgZWxzZSwgYWNjb3JkaW5nIHN0aWxsIA0KK1RvIHRoZSByZWNlcHRpb24gb2YgdGhlaXIgbWF0dGVyLCBhY3Q7IA0KK05vdCB0byB0aGUgZXh0ZW50IG9mIHRoZWlyIG93biBzcGhlcmUuICBCdXQgc2F5IA0KK1RoYXQgZGVhdGggYmUgbm90IG9uZSBzdHJva2UsIGFzIEkgc3VwcG9zZWQsIA0KK0JlcmVhdmluZyBzZW5zZSwgYnV0IGVuZGxlc3MgbWlzZXJ5IA0KK0Zyb20gdGhpcyBkYXkgb253YXJkOyB3aGljaCBJIGZlZWwgYmVndW4gDQorQm90aCBpbiBtZSwgYW5kIHdpdGhvdXQgbWU7IGFuZCBzbyBsYXN0IA0KK1RvIHBlcnBldHVpdHk7LS1BeSBtZSF0aGF0IGZlYXIgDQorQ29tZXMgdGh1bmRlcmluZyBiYWNrIHdpdGggZHJlYWRmdWwgcmV2b2x1dGlvbiANCitPbiBteSBkZWZlbmNlbGVzcyBoZWFkOyBib3RoIERlYXRoIGFuZCBJIA0KK0FtIGZvdW5kIGV0ZXJuYWwsIGFuZCBpbmNvcnBvcmF0ZSBib3RoOyANCitOb3IgSSBvbiBteSBwYXJ0IHNpbmdsZTsgaW4gbWUgYWxsIA0KK1Bvc3Rlcml0eSBzdGFuZHMgY3Vyc2VkOiAgRmFpciBwYXRyaW1vbnkgDQorVGhhdCBJIG11c3QgbGVhdmUgeWUsIFNvbnMhICBPLCB3ZXJlIEkgYWJsZSANCitUbyB3YXN0ZSBpdCBhbGwgbXlzZWxmLCBhbmQgbGVhdmUgeWUgbm9uZSEgDQorU28gZGlzaW5oZXJpdGVkLCBob3cgd291bGQgeW91IGJsZXNzIA0KK01lLCBub3cgeW91ciBjdXJzZSEgIEFoLCB3aHkgc2hvdWxkIGFsbCBtYW5raW5kLCANCitGb3Igb25lIG1hbidzIGZhdWx0LCB0aHVzIGd1aWx0bGVzcyBiZSBjb25kZW1uZWQsIA0KK0l0IGd1aWx0bGVzcz8gIEJ1dCBmcm9tIG1lIHdoYXQgY2FuIHByb2NlZWQsIA0KK0J1dCBhbGwgY29ycnVwdDsgYm90aCBtaW5kIGFuZCB3aWxsIGRlcHJhdmVkIA0KK05vdCB0byBkbyBvbmx5LCBidXQgdG8gd2lsbCB0aGUgc2FtZSANCitXaXRoIG1lPyAgSG93IGNhbiB0aGV5IHRoZW4gYWNxdWl0dGVkIHN0YW5kIA0KK0luIHNpZ2h0IG9mIEdvZD8gIEhpbSwgYWZ0ZXIgYWxsIGRpc3B1dGVzLCANCitGb3JjZWQgSSBhYnNvbHZlOiBhbGwgbXkgZXZhc2lvbnMgdmFpbiwgDQorQW5kIHJlYXNvbmluZ3MsIHRob3VnaCB0aHJvdWdoIG1hemVzLCBsZWFkIG1lIHN0aWxsIA0KK0J1dCB0byBteSBvd24gY29udmljdGlvbjogZmlyc3QgYW5kIGxhc3QgDQorT24gbWUsIG1lIG9ubHksIGFzIHRoZSBzb3VyY2UgYW5kIHNwcmluZyANCitPZiBhbGwgY29ycnVwdGlvbiwgYWxsIHRoZSBibGFtZSBsaWdodHMgZHVlOyANCitTbyBtaWdodCB0aGUgd3JhdGghICBGb25kIHdpc2ghY291bGRzdCB0aG91IHN1cHBvcnQgDQorVGhhdCBidXJkZW4sIGhlYXZpZXIgdGhhbiB0aGUgZWFydGggdG8gYmVhcjsgDQorVGhhbiBhbGwgdGhlIHdvcmxkIG11Y2ggaGVhdmllciwgdGhvdWdoIGRpdmlkZWQgDQorV2l0aCB0aGF0IGJhZCBXb21hbj8gIFRodXMsIHdoYXQgdGhvdSBkZXNpcmVzdCwgDQorQW5kIHdoYXQgdGhvdSBmZWFyZXN0LCBhbGlrZSBkZXN0cm95cyBhbGwgaG9wZSANCitPZiByZWZ1Z2UsIGFuZCBjb25jbHVkZXMgdGhlZSBtaXNlcmFibGUgDQorQmV5b25kIGFsbCBwYXN0IGV4YW1wbGUgYW5kIGZ1dHVyZTsgDQorVG8gU2F0YW4gb25seSBsaWtlIGJvdGggY3JpbWUgYW5kIGRvb20uIA0KK08gQ29uc2NpZW5jZSEgaW50byB3aGF0IGFieXNzIG9mIGZlYXJzIA0KK0FuZCBob3Jyb3VycyBoYXN0IHRob3UgZHJpdmVuIG1lOyBvdXQgb2Ygd2hpY2ggDQorSSBmaW5kIG5vIHdheSwgZnJvbSBkZWVwIHRvIGRlZXBlciBwbHVuZ2VkISANCitUaHVzIEFkYW0gdG8gaGltc2VsZiBsYW1lbnRlZCBsb3VkLCANCitUaHJvdWdoIHRoZSBzdGlsbCBuaWdodDsgbm90IG5vdywgYXMgZXJlIE1hbiBmZWxsLCANCitXaG9sZXNvbWUsIGFuZCBjb29sLCBhbmQgbWlsZCwgYnV0IHdpdGggYmxhY2sgYWlyIA0KK0FjY29tcGFuaWVkOyB3aXRoIGRhbXBzLCBhbmQgZHJlYWRmdWwgZ2xvb207IA0KK1doaWNoIHRvIGhpcyBldmlsIGNvbnNjaWVuY2UgcmVwcmVzZW50ZWQgDQorQWxsIHRoaW5ncyB3aXRoIGRvdWJsZSB0ZXJyb3VyOiAgT24gdGhlIGdyb3VuZCANCitPdXRzdHJldGNoZWQgaGUgbGF5LCBvbiB0aGUgY29sZCBncm91bmQ7IGFuZCBvZnQgDQorQ3Vyc2VkIGhpcyBjcmVhdGlvbjsgIERlYXRoIGFzIG9mdCBhY2N1c2VkIA0KK09mIHRhcmR5IGV4ZWN1dGlvbiwgc2luY2UgZGVub3VuY2VkIA0KK1RoZSBkYXkgb2YgaGlzIG9mZmVuY2UuICBXaHkgY29tZXMgbm90IERlYXRoLCANCitTYWlkIGhlLCB3aXRoIG9uZSB0aHJpY2UtYWNjZXB0YWJsZSBzdHJva2UgDQorVG8gZW5kIG1lPyAgU2hhbGwgVHJ1dGggZmFpbCB0byBrZWVwIGhlciB3b3JkLCANCitKdXN0aWNlIERpdmluZSBub3QgaGFzdGVuIHRvIGJlIGp1c3Q/IA0KK0J1dCBEZWF0aCBjb21lcyBub3QgYXQgY2FsbDsgSnVzdGljZSBEaXZpbmUgDQorTWVuZHMgbm90IGhlciBzbG93ZXN0IHBhY2UgZm9yIHByYXllcnMgb3IgY3JpZXMsIA0KK08gd29vZHMsIE8gZm91bnRhaW5zLCBoaWxsb2NrcywgZGFsZXMsIGFuZCBib3dlcnMhIA0KK1dpdGggb3RoZXIgZWNobyBsYXRlIEkgdGF1Z2h0IHlvdXIgc2hhZGVzIA0KK1RvIGFuc3dlciwgYW5kIHJlc291bmQgZmFyIG90aGVyIHNvbmcuLS0gDQorV2hvbSB0aHVzIGFmZmxpY3RlZCB3aGVuIHNhZCBFdmUgYmVoZWxkLCANCitEZXNvbGF0ZSB3aGVyZSBzaGUgc2F0LCBhcHByb2FjaGluZyBuaWdoLCANCitTb2Z0IHdvcmRzIHRvIGhpcyBmaWVyY2UgcGFzc2lvbiBzaGUgYXNzYXllZDogDQorQnV0IGhlciB3aXRoIHN0ZXJuIHJlZ2FyZCBoZSB0aHVzIHJlcGVsbGVkLiANCitPdXQgb2YgbXkgc2lnaHQsIHRob3UgU2VycGVudCEgIFRoYXQgbmFtZSBiZXN0IA0KK0JlZml0cyB0aGVlIHdpdGggaGltIGxlYWd1ZWQsIHRoeXNlbGYgYXMgZmFsc2UgDQorQW5kIGhhdGVmdWw7IG5vdGhpbmcgd2FudHMsIGJ1dCB0aGF0IHRoeSBzaGFwZSwgDQorTGlrZSBoaXMsIGFuZCBjb2xvdXIgc2VycGVudGluZSwgbWF5IHNob3cgDQorVGh5IGlud2FyZCBmcmF1ZDsgdG8gd2FybiBhbGwgY3JlYXR1cmVzIGZyb20gdGhlZSANCitIZW5jZWZvcnRoOyBsZXN0IHRoYXQgdG9vIGhlYXZlbmx5IGZvcm0sIHByZXRlbmRlZCANCitUbyBoZWxsaXNoIGZhbHNob29kLCBzbmFyZSB0aGVtISAgQnV0IGZvciB0aGVlIA0KK0kgaGFkIHBlcnNpc3RlZCBoYXBweTsgaGFkIG5vdCB0aHkgcHJpZGUgDQorQW5kIHdhbmRlcmluZyB2YW5pdHksIHdoZW4gbGVhc3Qgd2FzIHNhZmUsIA0KK1JlamVjdGVkIG15IGZvcmV3YXJuaW5nLCBhbmQgZGlzZGFpbmVkIA0KK05vdCB0byBiZSB0cnVzdGVkOyBsb25naW5nIHRvIGJlIHNlZW4sIA0KK1Rob3VnaCBieSB0aGUgRGV2aWwgaGltc2VsZjsgaGltIG92ZXJ3ZWVuaW5nIA0KK1RvIG92ZXItcmVhY2g7IGJ1dCwgd2l0aCB0aGUgc2VycGVudCBtZWV0aW5nLCANCitGb29sZWQgYW5kIGJlZ3VpbGVkOyBieSBoaW0gdGhvdSwgSSBieSB0aGVlIA0KK1RvIHRydXN0IHRoZWUgZnJvbSBteSBzaWRlOyBpbWFnaW5lZCB3aXNlLCANCitDb25zdGFudCwgbWF0dXJlLCBwcm9vZiBhZ2FpbnN0IGFsbCBhc3NhdWx0czsgDQorQW5kIHVuZGVyc3Rvb2Qgbm90IGFsbCB3YXMgYnV0IGEgc2hvdywgDQorUmF0aGVyIHRoYW4gc29saWQgdmlydHVlOyBhbGwgYnV0IGEgcmliIA0KK0Nyb29rZWQgYnkgbmF0dXJlLCBiZW50LCBhcyBub3cgYXBwZWFycywgDQorTW9yZSB0byB0aGUgcGFydCBzaW5pc3RlciwgZnJvbSBtZSBkcmF3bjsgDQorV2VsbCBpZiB0aHJvd24gb3V0LCBhcyBzdXBlcm51bWVyYXJ5IA0KK1RvIG15IGp1c3QgbnVtYmVyIGZvdW5kLiAgTyEgd2h5IGRpZCBHb2QsIA0KK0NyZWF0b3Igd2lzZSwgdGhhdCBwZW9wbGVkIGhpZ2hlc3QgSGVhdmVuIA0KK1dpdGggU3Bpcml0cyBtYXNjdWxpbmUsIGNyZWF0ZSBhdCBsYXN0IA0KK1RoaXMgbm92ZWx0eSBvbiBlYXJ0aCwgdGhpcyBmYWlyIGRlZmVjdCANCitPZiBuYXR1cmUsIGFuZCBub3QgZmlsbCB0aGUgd29ybGQgYXQgb25jZSANCitXaXRoIE1lbiwgYXMgQW5nZWxzLCB3aXRob3V0IGZlbWluaW5lOyANCitPciBmaW5kIHNvbWUgb3RoZXIgd2F5IHRvIGdlbmVyYXRlIA0KK01hbmtpbmQ/ICBUaGlzIG1pc2NoaWVmIGhhZCBub3QgYmVlbiBiZWZhbGxlbiwgDQorQW5kIG1vcmUgdGhhdCBzaGFsbCBiZWZhbGw7IGlubnVtZXJhYmxlIA0KK0Rpc3R1cmJhbmNlcyBvbiBlYXJ0aCB0aHJvdWdoIGZlbWFsZSBzbmFyZXMsIA0KK0FuZCBzdHJhaXQgY29uanVuY3Rpb24gd2l0aCB0aGlzIHNleDogZm9yIGVpdGhlciANCitIZSBuZXZlciBzaGFsbCBmaW5kIG91dCBmaXQgbWF0ZSwgYnV0IHN1Y2ggDQorQXMgc29tZSBtaXNmb3J0dW5lIGJyaW5ncyBoaW0sIG9yIG1pc3Rha2U7IA0KK09yIHdob20gaGUgd2lzaGVzIG1vc3Qgc2hhbGwgc2VsZG9tIGdhaW4gDQorVGhyb3VnaCBoZXIgcGVydmVyc2VuZXNzLCBidXQgc2hhbGwgc2VlIGhlciBnYWluZWQgDQorQnkgYSBmYXIgd29yc2U7IG9yLCBpZiBzaGUgbG92ZSwgd2l0aGhlbGQgDQorQnkgcGFyZW50czsgb3IgaGlzIGhhcHBpZXN0IGNob2ljZSB0b28gbGF0ZSANCitTaGFsbCBtZWV0LCBhbHJlYWR5IGxpbmtlZCBhbmQgd2VkbG9jay1ib3VuZCANCitUbyBhIGZlbGwgYWR2ZXJzYXJ5LCBoaXMgaGF0ZSBvciBzaGFtZTogDQorV2hpY2ggaW5maW5pdGUgY2FsYW1pdHkgc2hhbGwgY2F1c2UgDQorVG8gaHVtYW4gbGlmZSwgYW5kIGhvdXNob2xkIHBlYWNlIGNvbmZvdW5kLiANCitIZSBhZGRlZCBub3QsIGFuZCBmcm9tIGhlciB0dXJuZWQ7IGJ1dCBFdmUsIA0KK05vdCBzbyByZXB1bHNlZCwgd2l0aCB0ZWFycyB0aGF0IGNlYXNlZCBub3QgZmxvd2luZyANCitBbmQgdHJlc3NlcyBhbGwgZGlzb3JkZXJlZCwgYXQgaGlzIGZlZXQgDQorRmVsbCBodW1ibGU7IGFuZCwgZW1icmFjaW5nIHRoZW0sIGJlc291Z2h0IA0KK0hpcyBwZWFjZSwgYW5kIHRodXMgcHJvY2VlZGVkIGluIGhlciBwbGFpbnQuIA0KK0ZvcnNha2UgbWUgbm90IHRodXMsIEFkYW0hIHdpdG5lc3MgSGVhdmVuIA0KK1doYXQgbG92ZSBzaW5jZXJlLCBhbmQgcmV2ZXJlbmNlIGluIG15IGhlYXJ0IA0KK0kgYmVhciB0aGVlLCBhbmQgdW53ZWV0aW5nIGhhdmUgb2ZmZW5kZWQsIA0KK1VuaGFwcGlseSBkZWNlaXZlZCEgIFRoeSBzdXBwbGlhbnQgDQorSSBiZWcsIGFuZCBjbGFzcCB0aHkga25lZXM7IGJlcmVhdmUgbWUgbm90LCANCitXaGVyZW9uIEkgbGl2ZSwgdGh5IGdlbnRsZSBsb29rcywgdGh5IGFpZCwgDQorVGh5IGNvdW5zZWwsIGluIHRoaXMgdXR0ZXJtb3N0IGRpc3RyZXNzLCANCitNeSBvbmx5IHN0cmVuZ3RoIGFuZCBzdGF5OiAgRm9ybG9ybiBvZiB0aGVlLCANCitXaGl0aGVyIHNoYWxsIEkgYmV0YWtlIG1lLCB3aGVyZSBzdWJzaXN0PyANCitXaGlsZSB5ZXQgd2UgbGl2ZSwgc2NhcmNlIG9uZSBzaG9ydCBob3VyIHBlcmhhcHMsIA0KK0JldHdlZW4gdXMgdHdvIGxldCB0aGVyZSBiZSBwZWFjZTsgYm90aCBqb2luaW5nLCANCitBcyBqb2luZWQgaW4gaW5qdXJpZXMsIG9uZSBlbm1pdHkgDQorQWdhaW5zdCBhIGZvZSBieSBkb29tIGV4cHJlc3MgYXNzaWduZWQgdXMsIA0KK1RoYXQgY3J1ZWwgU2VycGVudDogIE9uIG1lIGV4ZXJjaXNlIG5vdCANCitUaHkgaGF0cmVkIGZvciB0aGlzIG1pc2VyeSBiZWZhbGxlbjsgDQorT24gbWUgYWxyZWFkeSBsb3N0LCBtZSB0aGFuIHRoeXNlbGYgDQorTW9yZSBtaXNlcmFibGUhICBCb3RoIGhhdmUgc2lubmVkO2J1dCB0aG91IA0KK0FnYWluc3QgR29kIG9ubHk7IEkgYWdhaW5zdCBHb2QgYW5kIHRoZWU7IA0KK0FuZCB0byB0aGUgcGxhY2Ugb2YganVkZ2VtZW50IHdpbGwgcmV0dXJuLCANCitUaGVyZSB3aXRoIG15IGNyaWVzIGltcG9ydHVuZSBIZWF2ZW47IHRoYXQgYWxsIA0KK1RoZSBzZW50ZW5jZSwgZnJvbSB0aHkgaGVhZCByZW1vdmVkLCBtYXkgbGlnaHQgDQorT24gbWUsIHNvbGUgY2F1c2UgdG8gdGhlZSBvZiBhbGwgdGhpcyB3b2U7IA0KK01lLCBtZSBvbmx5LCBqdXN0IG9iamVjdCBvZiBoaXMgaXJlISANCitTaGUgZW5kZWQgd2VlcGluZzsgYW5kIGhlciBsb3dseSBwbGlnaHQsIA0KK0ltbW92ZWFibGUsIHRpbGwgcGVhY2Ugb2J0YWluZWQgZnJvbSBmYXVsdCANCitBY2tub3dsZWRnZWQgYW5kIGRlcGxvcmVkLCBpbiBBZGFtIHdyb3VnaHQgDQorQ29tbWlzZXJhdGlvbjogIFNvb24gaGlzIGhlYXJ0IHJlbGVudGVkIA0KK1Rvd2FyZHMgaGVyLCBoaXMgbGlmZSBzbyBsYXRlLCBhbmQgc29sZSBkZWxpZ2h0LCANCitOb3cgYXQgaGlzIGZlZXQgc3VibWlzc2l2ZSBpbiBkaXN0cmVzczsgDQorQ3JlYXR1cmUgc28gZmFpciBoaXMgcmVjb25jaWxlbWVudCBzZWVraW5nLCANCitIaXMgY291bnNlbCwgd2hvbSBzaGUgaGFkIGRpc3BsZWFzZWQsIGhpcyBhaWQ6IA0KK0FzIG9uZSBkaXNhcm1lZCwgaGlzIGFuZ2VyIGFsbCBoZSBsb3N0LCANCitBbmQgdGh1cyB3aXRoIHBlYWNlZnVsIHdvcmRzIHVwcmFpc2VkIGhlciBzb29uLiANCitVbndhcnksIGFuZCB0b28gZGVzaXJvdXMsIGFzIGJlZm9yZSwgDQorU28gbm93IG9mIHdoYXQgdGhvdSBrbm93ZXN0IG5vdCwgd2hvIGRlc2lyZXN0IA0KK1RoZSBwdW5pc2htZW50IGFsbCBvbiB0aHlzZWxmOyBhbGFzISANCitCZWFyIHRoaW5lIG93biBmaXJzdCwgaWxsIGFibGUgdG8gc3VzdGFpbiANCitIaXMgZnVsbCB3cmF0aCwgd2hvc2UgdGhvdSBmZWVsZXN0IGFzIHlldCBsZWFzdCBwYXJ0LCANCitBbmQgbXkgZGlzcGxlYXN1cmUgYmVhcmVzdCBzbyBpbGwuICBJZiBwcmF5ZXJzIA0KK0NvdWxkIGFsdGVyIGhpZ2ggZGVjcmVlcywgSSB0byB0aGF0IHBsYWNlIA0KK1dvdWxkIHNwZWVkIGJlZm9yZSB0aGVlLCBhbmQgYmUgbG91ZGVyIGhlYXJkLCANCitUaGF0IG9uIG15IGhlYWQgYWxsIG1pZ2h0IGJlIHZpc2l0ZWQ7IA0KK1RoeSBmcmFpbHR5IGFuZCBpbmZpcm1lciBzZXggZm9yZ2l2ZW4sIA0KK1RvIG1lIGNvbW1pdHRlZCwgYW5kIGJ5IG1lIGV4cG9zZWQuIA0KK0J1dCByaXNlOy0tbGV0IHVzIG5vIG1vcmUgY29udGVuZCwgbm9yIGJsYW1lIA0KK0VhY2ggb3RoZXIsIGJsYW1lZCBlbm91Z2ggZWxzZXdoZXJlOyBidXQgc3RyaXZlIA0KK0luIG9mZmljZXMgb2YgbG92ZSwgaG93IHdlIG1heSBsaWdodGVuIA0KK0VhY2ggb3RoZXIncyBidXJkZW4sIGluIG91ciBzaGFyZSBvZiB3b2U7IA0KK1NpbmNlIHRoaXMgZGF5J3MgZGVhdGggZGVub3VuY2VkLCBpZiBhdWdodCBJIHNlZSwgDQorV2lsbCBwcm92ZSBubyBzdWRkZW4sIGJ1dCBhIHNsb3ctcGFjZWQgZXZpbDsgDQorQSBsb25nIGRheSdzIGR5aW5nLCB0byBhdWdtZW50IG91ciBwYWluOyANCitBbmQgdG8gb3VyIHNlZWQgKE8gaGFwbGVzcyBzZWVkISkgZGVyaXZlZC4gDQorVG8gd2hvbSB0aHVzIEV2ZSwgcmVjb3ZlcmluZyBoZWFydCwgcmVwbGllZC4gDQorQWRhbSwgYnkgc2FkIGV4cGVyaW1lbnQgSSBrbm93IA0KK0hvdyBsaXR0bGUgd2VpZ2h0IG15IHdvcmRzIHdpdGggdGhlZSBjYW4gZmluZCwgDQorRm91bmQgc28gZXJyb25lb3VzOyB0aGVuY2UgYnkganVzdCBldmVudCANCitGb3VuZCBzbyB1bmZvcnR1bmF0ZTogIE5ldmVydGhlbGVzcywgDQorUmVzdG9yZWQgYnkgdGhlZSwgdmlsZSBhcyBJIGFtLCB0byBwbGFjZSANCitPZiBuZXcgYWNjZXB0YW5jZSwgaG9wZWZ1bCB0byByZWdhaW4gDQorVGh5IGxvdmUsIHRoZSBzb2xlIGNvbnRlbnRtZW50IG9mIG15IGhlYXJ0IA0KK0xpdmluZyBvciBkeWluZywgZnJvbSB0aGVlIEkgd2lsbCBub3QgaGlkZSANCitXaGF0IHRob3VnaHRzIGluIG15IHVucXVpZXQgYnJlYXN0IGFyZSByaXNlbiwgDQorVGVuZGluZyB0byBzb21lIHJlbGllZiBvZiBvdXIgZXh0cmVtZXMsIA0KK09yIGVuZDsgdGhvdWdoIHNoYXJwIGFuZCBzYWQsIHlldCB0b2xlcmFibGUsIA0KK0FzIGluIG91ciBldmlscywgYW5kIG9mIGVhc2llciBjaG9pY2UuIA0KK0lmIGNhcmUgb2Ygb3VyIGRlc2NlbnQgcGVycGxleCB1cyBtb3N0LCANCitXaGljaCBtdXN0IGJlIGJvcm4gdG8gY2VydGFpbiB3b2UsIGRldm91cmVkIA0KK0J5IERlYXRoIGF0IGxhc3Q7IGFuZCBtaXNlcmFibGUgaXQgaXMgDQorVG8gYmUgdG8gb3RoZXJzIGNhdXNlIG9mIG1pc2VyeSwgDQorT3VyIG93biBiZWdvdHRlbiwgYW5kIG9mIG91ciBsb2lucyB0byBicmluZyANCitJbnRvIHRoaXMgY3Vyc2VkIHdvcmxkIGEgd29lZnVsIHJhY2UsIA0KK1RoYXQgYWZ0ZXIgd3JldGNoZWQgbGlmZSBtdXN0IGJlIGF0IGxhc3QgDQorRm9vZCBmb3Igc28gZm91bCBhIG1vbnN0ZXI7IGluIHRoeSBwb3dlciANCitJdCBsaWVzLCB5ZXQgZXJlIGNvbmNlcHRpb24gdG8gcHJldmVudCANCitUaGUgcmFjZSB1bmJsZXN0LCB0byBiZWluZyB5ZXQgdW5iZWdvdC4gDQorQ2hpbGRsZXNzIHRob3UgYXJ0LCBjaGlsZGxlc3MgcmVtYWluOiBzbyBEZWF0aCANCitTaGFsbCBiZSBkZWNlaXZlZCBoaXMgZ2x1dCwgYW5kIHdpdGggdXMgdHdvIA0KK0JlIGZvcmNlZCB0byBzYXRpc2Z5IGhpcyByYXZlbm91cyBtYXcuIA0KK0J1dCBpZiB0aG91IGp1ZGdlIGl0IGhhcmQgYW5kIGRpZmZpY3VsdCwgDQorQ29udmVyc2luZywgbG9va2luZywgbG92aW5nLCB0byBhYnN0YWluIA0KK0Zyb20gbG92ZSdzIGR1ZSByaWdodHMsIG51cHRpYWwgZW1icmFjZXMgc3dlZXQ7IA0KK0FuZCB3aXRoIGRlc2lyZSB0byBsYW5ndWlzaCB3aXRob3V0IGhvcGUsIA0KK0JlZm9yZSB0aGUgcHJlc2VudCBvYmplY3QgbGFuZ3Vpc2hpbmcgDQorV2l0aCBsaWtlIGRlc2lyZTsgd2hpY2ggd291bGQgYmUgbWlzZXJ5IA0KK0FuZCB0b3JtZW50IGxlc3MgdGhhbiBub25lIG9mIHdoYXQgd2UgZHJlYWQ7IA0KK1RoZW4sIGJvdGggb3Vyc2VsdmVzIGFuZCBzZWVkIGF0IG9uY2UgdG8gZnJlZSANCitGcm9tIHdoYXQgd2UgZmVhciBmb3IgYm90aCwgbGV0IHVzIG1ha2Ugc2hvcnQsIC0tIA0KK0xldCB1cyBzZWVrIERlYXRoOyAtLSBvciwgaGUgbm90IGZvdW5kLCBzdXBwbHkgDQorV2l0aCBvdXIgb3duIGhhbmRzIGhpcyBvZmZpY2Ugb24gb3Vyc2VsdmVzOiANCitXaHkgc3RhbmQgd2UgbG9uZ2VyIHNoaXZlcmluZyB1bmRlciBmZWFycywgDQorVGhhdCBzaG93IG5vIGVuZCBidXQgZGVhdGgsIGFuZCBoYXZlIHRoZSBwb3dlciwgDQorT2YgbWFueSB3YXlzIHRvIGRpZSB0aGUgc2hvcnRlc3QgY2hvb3NpbmcsIA0KK0Rlc3RydWN0aW9uIHdpdGggZGVzdHJ1Y3Rpb24gdG8gZGVzdHJveT8gLS0gDQorU2hlIGVuZGVkIGhlcmUsIG9yIHZlaGVtZW50IGRlc3BhaXIgDQorQnJva2Ugb2ZmIHRoZSByZXN0OiBzbyBtdWNoIG9mIGRlYXRoIGhlciB0aG91Z2h0cyANCitIYWQgZW50ZXJ0YWluZWQsIGFzIGR5ZWQgaGVyIGNoZWVrcyB3aXRoIHBhbGUuIA0KK0J1dCBBZGFtLCB3aXRoIHN1Y2ggY291bnNlbCBub3RoaW5nIHN3YXllZCwgDQorVG8gYmV0dGVyIGhvcGVzIGhpcyBtb3JlIGF0dGVudGl2ZSBtaW5kIA0KK0xhYm91cmluZyBoYWQgcmFpc2VkOyBhbmQgdGh1cyB0byBFdmUgcmVwbGllZC4gDQorRXZlLCB0aHkgY29udGVtcHQgb2YgbGlmZSBhbmQgcGxlYXN1cmUgc2VlbXMgDQorVG8gYXJndWUgaW4gdGhlZSBzb21ldGhpbmcgbW9yZSBzdWJsaW1lIA0KK0FuZCBleGNlbGxlbnQsIHRoYW4gd2hhdCB0aHkgbWluZCBjb250ZW1uczsgDQorQnV0IHNlbGYtZGVzdHJ1Y3Rpb24gdGhlcmVmb3JlIHNvdWdodCwgcmVmdXRlcyANCitUaGF0IGV4Y2VsbGVuY2UgdGhvdWdodCBpbiB0aGVlOyBhbmQgaW1wbGllcywgDQorTm90IHRoeSBjb250ZW1wdCwgYnV0IGFuZ3Vpc2ggYW5kIHJlZ3JldCANCitGb3IgbG9zcyBvZiBsaWZlIGFuZCBwbGVhc3VyZSBvdmVybG92ZWQuIA0KK09yIGlmIHRob3UgY292ZXQgZGVhdGgsIGFzIHV0bW9zdCBlbmQgDQorT2YgbWlzZXJ5LCBzbyB0aGlua2luZyB0byBldmFkZSANCitUaGUgcGVuYWx0eSBwcm9ub3VuY2VkOyBkb3VidCBub3QgYnV0IEdvZCANCitIYXRoIHdpc2VsaWVyIGFybWVkIGhpcyB2ZW5nZWZ1bCBpcmUsIHRoYW4gc28gDQorVG8gYmUgZm9yZXN0YWxsZWQ7IG11Y2ggbW9yZSBJIGZlYXIgbGVzdCBkZWF0aCwgDQorU28gc25hdGNoZWQsIHdpbGwgbm90IGV4ZW1wdCB1cyBmcm9tIHRoZSBwYWluIA0KK1dlIGFyZSBieSBkb29tIHRvIHBheTsgcmF0aGVyLCBzdWNoIGFjdHMgDQorT2YgY29udHVtYWN5IHdpbGwgcHJvdm9rZSB0aGUgSGlnaGVzdCANCitUbyBtYWtlIGRlYXRoIGluIHVzIGxpdmU6ICBUaGVuIGxldCB1cyBzZWVrIA0KK1NvbWUgc2FmZXIgcmVzb2x1dGlvbiwgd2hpY2ggbWV0aGlua3MgDQorSSBoYXZlIGluIHZpZXcsIGNhbGxpbmcgdG8gbWluZCB3aXRoIGhlZWQgDQorUGFydCBvZiBvdXIgc2VudGVuY2UsIHRoYXQgdGh5IHNlZWQgc2hhbGwgYnJ1aXNlIA0KK1RoZSBTZXJwZW50J3MgaGVhZDsgcGl0ZW91cyBhbWVuZHMhIHVubGVzcyANCitCZSBtZWFudCwgd2hvbSBJIGNvbmplY3R1cmUsIG91ciBncmFuZCBmb2UsIA0KK1NhdGFuOyB3aG8sIGluIHRoZSBzZXJwZW50LCBoYXRoIGNvbnRyaXZlZCANCitBZ2FpbnN0IHVzIHRoaXMgZGVjZWl0OiAgVG8gY3J1c2ggaGlzIGhlYWQgDQorV291bGQgYmUgcmV2ZW5nZSBpbmRlZWQhIHdoaWNoIHdpbGwgYmUgbG9zdCANCitCeSBkZWF0aCBicm91Z2h0IG9uIG91cnNlbHZlcywgb3IgY2hpbGRsZXNzIGRheXMgDQorUmVzb2x2ZWQsIGFzIHRob3UgcHJvcG9zZXN0OyBzbyBvdXIgZm9lIA0KK1NoYWwgJ3NjYXBlIGhpcyBwdW5pc2htZW50IG9yZGFpbmVkLCBhbmQgd2UgDQorSW5zdGVhZCBzaGFsbCBkb3VibGUgb3VycyB1cG9uIG91ciBoZWFkcy4gDQorTm8gbW9yZSBiZSBtZW50aW9uZWQgdGhlbiBvZiB2aW9sZW5jZSANCitBZ2FpbnN0IG91cnNlbHZlczsgYW5kIHdpbGZ1bCBiYXJyZW5uZXNzLCANCitUaGF0IGN1dHMgdXMgb2ZmIGZyb20gaG9wZTsgYW5kIHNhdm91cnMgb25seSANCitSYW5jb3VyIGFuZCBwcmlkZSwgaW1wYXRpZW5jZSBhbmQgZGVzcGl0ZSwgDQorUmVsdWN0YW5jZSBhZ2FpbnN0IEdvZCBhbmQgaGlzIGp1c3QgeW9rZSANCitMYWlkIG9uIG91ciBuZWNrcy4gIFJlbWVtYmVyIHdpdGggd2hhdCBtaWxkIA0KK0FuZCBncmFjaW91cyB0ZW1wZXIgaGUgYm90aCBoZWFyZCwgYW5kIGp1ZGdlZCwgDQorV2l0aG91dCB3cmF0aCBvciByZXZpbGluZzsgd2UgZXhwZWN0ZWQgDQorSW1tZWRpYXRlIGRpc3NvbHV0aW9uLCB3aGljaCB3ZSB0aG91Z2h0IA0KK1dhcyBtZWFudCBieSBkZWF0aCB0aGF0IGRheTsgd2hlbiBsbyF0byB0aGVlIA0KK1BhaW5zIG9ubHkgaW4gY2hpbGQtYmVhcmluZyB3ZXJlIGZvcmV0b2xkLCANCitBbmQgYnJpbmdpbmcgZm9ydGg7IHNvb24gcmVjb21wZW5zZWQgd2l0aCBqb3ksIA0KK0ZydWl0IG9mIHRoeSB3b21iOiAgT24gbWUgdGhlIGN1cnNlIGFzbG9wZSANCitHbGFuY2VkIG9uIHRoZSBncm91bmQ7IHdpdGggbGFib3VyIEkgbXVzdCBlYXJuIA0KK015IGJyZWFkOyB3aGF0IGhhcm0/IElkbGVuZXNzIGhhZCBiZWVuIHdvcnNlOyANCitNeSBsYWJvdXIgd2lsbCBzdXN0YWluIG1lOyBhbmQsIGxlc3QgY29sZCANCitPciBoZWF0IHNob3VsZCBpbmp1cmUgdXMsIGhpcyB0aW1lbHkgY2FyZSANCitIYXRoLCB1bmJlc291Z2h0LCBwcm92aWRlZDsgYW5kIGhpcyBoYW5kcyANCitDbG90aGVkIHVzIHVud29ydGh5LCBwaXR5aW5nIHdoaWxlIGhlIGp1ZGdlZDsgDQorSG93IG11Y2ggbW9yZSwgaWYgd2UgcHJheSBoaW0sIHdpbGwgaGlzIGVhciANCitCZSBvcGVuLCBhbmQgaGlzIGhlYXJ0IHRvIHBpdHkgaW5jbGluZSwgDQorQW5kIHRlYWNoIHVzIGZ1cnRoZXIgYnkgd2hhdCBtZWFucyB0byBzaHVuIA0KK1RoZSBpbmNsZW1lbnQgc2Vhc29ucywgcmFpbiwgaWNlLCBoYWlsLCBhbmQgc25vdyEgDQorV2hpY2ggbm93IHRoZSBza3ksIHdpdGggdmFyaW91cyBmYWNlLCBiZWdpbnMgDQorVG8gc2hvdyB1cyBpbiB0aGlzIG1vdW50YWluOyB3aGlsZSB0aGUgd2luZHMgDQorQmxvdyBtb2lzdCBhbmQga2Vlbiwgc2hhdHRlcmluZyB0aGUgZ3JhY2VmdWwgbG9ja3MgDQorT2YgdGhlc2UgZmFpciBzcHJlYWRpbmcgdHJlZXM7IHdoaWNoIGJpZHMgdXMgc2VlayANCitTb21lIGJldHRlciBzaHJvdWQsIHNvbWUgYmV0dGVyIHdhcm10aCB0byBjaGVyaXNoIA0KK091ciBsaW1icyBiZW51bW1lZCwgZXJlIHRoaXMgZGl1cm5hbCBzdGFyIA0KK0xlYXZlIGNvbGQgdGhlIG5pZ2h0LCBob3cgd2UgaGlzIGdhdGhlcmVkIGJlYW1zIA0KK1JlZmxlY3RlZCBtYXkgd2l0aCBtYXR0ZXIgc2VyZSBmb21lbnQ7IA0KK09yLCBieSBjb2xsaXNpb24gb2YgdHdvIGJvZGllcywgZ3JpbmQgDQorVGhlIGFpciBhdHRyaXRlIHRvIGZpcmU7IGFzIGxhdGUgdGhlIGNsb3VkcyANCitKdXN0bGluZywgb3IgcHVzaGVkIHdpdGggd2luZHMsIHJ1ZGUgaW4gdGhlaXIgc2hvY2ssIA0KK1RpbmUgdGhlIHNsYW50IGxpZ2h0bmluZzsgd2hvc2UgdGh3YXJ0IGZsYW1lLCBkcml2ZW4gZG93biANCitLaW5kbGVzIHRoZSBndW1teSBiYXJrIG9mIGZpciBvciBwaW5lOyANCitBbmQgc2VuZHMgYSBjb21mb3J0YWJsZSBoZWF0IGZyb20gZmFyLCANCitXaGljaCBtaWdodCBzdXBwbHkgdGhlIHN1bjogIFN1Y2ggZmlyZSB0byB1c2UsIA0KK0FuZCB3aGF0IG1heSBlbHNlIGJlIHJlbWVkeSBvciBjdXJlIA0KK1RvIGV2aWxzIHdoaWNoIG91ciBvd24gbWlzZGVlZHMgaGF2ZSB3cm91Z2h0LCANCitIZSB3aWxsIGluc3RydWN0IHVzIHByYXlpbmcsIGFuZCBvZiBncmFjZSANCitCZXNlZWNoaW5nIGhpbTsgc28gYXMgd2UgbmVlZCBub3QgZmVhciANCitUbyBwYXNzIGNvbW1vZGlvdXNseSB0aGlzIGxpZmUsIHN1c3RhaW5lZCANCitCeSBoaW0gd2l0aCBtYW55IGNvbWZvcnRzLCB0aWxsIHdlIGVuZCANCitJbiBkdXN0LCBvdXIgZmluYWwgcmVzdCBhbmQgbmF0aXZlIGhvbWUuIA0KK1doYXQgYmV0dGVyIGNhbiB3ZSBkbywgdGhhbiwgdG8gdGhlIHBsYWNlIA0KK1JlcGFpcmluZyB3aGVyZSBoZSBqdWRnZWQgdXMsIHByb3N0cmF0ZSBmYWxsIA0KK0JlZm9yZSBoaW0gcmV2ZXJlbnQ7IGFuZCB0aGVyZSBjb25mZXNzIA0KK0h1bWJseSBvdXIgZmF1bHRzLCBhbmQgcGFyZG9uIGJlZzsgd2l0aCB0ZWFycyANCitXYXRlcmluZyB0aGUgZ3JvdW5kLCBhbmQgd2l0aCBvdXIgc2lnaHMgdGhlIGFpciANCitGcmVxdWVudGluZywgc2VudCBmcm9tIGhlYXJ0cyBjb250cml0ZSwgaW4gc2lnbiANCitPZiBzb3Jyb3cgdW5mZWlnbmVkLCBhbmQgaHVtaWxpYXRpb24gbWVlayANCisgDQorIA0KKyANCitCb29rIFhJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgDQorVW5kb3VidGVkbHkgaGUgd2lsbCByZWxlbnQsIGFuZCB0dXJuIA0KK0Zyb20gaGlzIGRpc3BsZWFzdXJlOyBpbiB3aG9zZSBsb29rIHNlcmVuZSwgDQorV2hlbiBhbmdyeSBtb3N0IGhlIHNlZW1lZCBhbmQgbW9zdCBzZXZlcmUsIA0KK1doYXQgZWxzZSBidXQgZmF2b3VyLCBncmFjZSwgYW5kIG1lcmN5LCBzaG9uZT8gDQorU28gc3Bha2Ugb3VyIGZhdGhlciBwZW5pdGVudDsgbm9yIEV2ZSANCitGZWx0IGxlc3MgcmVtb3JzZTogdGhleSwgZm9ydGh3aXRoIHRvIHRoZSBwbGFjZSANCitSZXBhaXJpbmcgd2hlcmUgaGUganVkZ2VkIHRoZW0sIHByb3N0cmF0ZSBmZWxsIA0KK0JlZm9yZSBoaW0gcmV2ZXJlbnQ7IGFuZCBib3RoIGNvbmZlc3NlZCANCitIdW1ibHkgdGhlaXIgZmF1bHRzLCBhbmQgcGFyZG9uIGJlZ2dlZDsgd2l0aCB0ZWFycyANCitXYXRlcmluZyB0aGUgZ3JvdW5kLCBhbmQgd2l0aCB0aGVpciBzaWdocyB0aGUgYWlyIA0KK0ZyZXF1ZW50aW5nLCBzZW50IGZyb20gaGVhcnRzIGNvbnRyaXRlLCBpbiBzaWduIA0KK09mIHNvcnJvdyB1bmZlaWduZWQsIGFuZCBodW1pbGlhdGlvbiBtZWVrLiANCitUaHVzIHRoZXksIGluIGxvd2xpZXN0IHBsaWdodCwgcmVwZW50YW50IHN0b29kIA0KK1ByYXlpbmc7IGZvciBmcm9tIHRoZSBtZXJjeS1zZWF0IGFib3ZlIA0KK1ByZXZlbmllbnQgZ3JhY2UgZGVzY2VuZGluZyBoYWQgcmVtb3ZlZCANCitUaGUgc3RvbnkgZnJvbSB0aGVpciBoZWFydHMsIGFuZCBtYWRlIG5ldyBmbGVzaCANCitSZWdlbmVyYXRlIGdyb3cgaW5zdGVhZDsgdGhhdCBzaWdocyBub3cgYnJlYXRoZWQgDQorVW51dHRlcmFibGU7IHdoaWNoIHRoZSBTcGlyaXQgb2YgcHJheWVyIA0KK0luc3BpcmVkLCBhbmQgd2luZ2VkIGZvciBIZWF2ZW4gd2l0aCBzcGVlZGllciBmbGlnaHQgDQorVGhhbiBsb3VkZXN0IG9yYXRvcnk6ICBZZXQgdGhlaXIgcG9ydCANCitOb3Qgb2YgbWVhbiBzdWl0b3JzOyBub3IgaW1wb3J0YW50IGxlc3MgDQorU2VlbWVkIHRoZWlyIHBldGl0aW9uLCB0aGFuIHdoZW4gdGhlIGFuY2llbnQgcGFpciANCitJbiBmYWJsZXMgb2xkLCBsZXNzIGFuY2llbnQgeWV0IHRoYW4gdGhlc2UsIA0KK0RldWNhbGlvbiBhbmQgY2hhc3RlIFB5cnJoYSwgdG8gcmVzdG9yZSANCitUaGUgcmFjZSBvZiBtYW5raW5kIGRyb3duZWQsIGJlZm9yZSB0aGUgc2hyaW5lIA0KK09mIFRoZW1pcyBzdG9vZCBkZXZvdXQuICBUbyBIZWF2ZW4gdGhlaXIgcHJheWVycyANCitGbGV3IHVwLCBub3IgbWlzc2VkIHRoZSB3YXksIGJ5IGVudmlvdXMgd2luZHMgDQorQmxvd24gdmFnYWJvbmQgb3IgZnJ1c3RyYXRlOiBpbiB0aGV5IHBhc3NlZCANCitEaW1lbnNpb25sZXNzIHRocm91Z2ggaGVhdmVubHkgZG9vcnM7IHRoZW4gY2xhZCANCitXaXRoIGluY2Vuc2UsIHdoZXJlIHRoZSBnb2xkZW4gYWx0YXIgZnVtZWQsIA0KK0J5IHRoZWlyIGdyZWF0IGludGVyY2Vzc291ciwgY2FtZSBpbiBzaWdodCANCitCZWZvcmUgdGhlIEZhdGhlcidzIHRocm9uZTogdGhlbSB0aGUgZ2xhZCBTb24gDQorUHJlc2VudGluZywgdGh1cyB0byBpbnRlcmNlZGUgYmVnYW4uIA0KK1NlZSQgRmF0aGVyLCB3aGF0IGZpcnN0LWZydWl0cyBvbiBlYXJ0aCBhcmUgc3BydW5nIA0KK0Zyb20gdGh5IGltcGxhbnRlZCBncmFjZSBpbiBNYW47IHRoZXNlIHNpZ2hzIA0KK0FuZCBwcmF5ZXJzLCB3aGljaCBpbiB0aGlzIGdvbGRlbiBjZW5zZXIgbWl4ZWQgDQorV2l0aCBpbmNlbnNlLCBJIHRoeSBwcmllc3QgYmVmb3JlIHRoZWUgYnJpbmc7IA0KK0ZydWl0cyBvZiBtb3JlIHBsZWFzaW5nIHNhdm91ciwgZnJvbSB0aHkgc2VlZCANCitTb3duIHdpdGggY29udHJpdGlvbiBpbiBoaXMgaGVhcnQsIHRoYW4gdGhvc2UgDQorV2hpY2gsIGhpcyBvd24gaGFuZCBtYW51cmluZywgYWxsIHRoZSB0cmVlcyANCitPZiBQYXJhZGlzZSBjb3VsZCBoYXZlIHByb2R1Y2VkLCBlcmUgZmFsbGVuIA0KK0Zyb20gaW5ub2NlbmNlLiAgTm93IHRoZXJlZm9yZSwgYmVuZCB0aGluZSBlYXIgDQorVG8gc3VwcGxpY2F0aW9uOyBoZWFyIGhpcyBzaWdocywgdGhvdWdoIG11dGU7IA0KK1Vuc2tpbGZ1bCB3aXRoIHdoYXQgd29yZHMgdG8gcHJheSwgbGV0IG1lIA0KK0ludGVycHJldCBmb3IgaGltOyBtZSwgaGlzIGFkdm9jYXRlIA0KK0FuZCBwcm9waXRpYXRpb247IGFsbCBoaXMgd29ya3Mgb24gbWUsIA0KK0dvb2QsIG9yIG5vdCBnb29kLCBpbmdyYWZ0OyBteSBtZXJpdCB0aG9zZSANCitTaGFsbCBwZXJmZWN0LCBhbmQgZm9yIHRoZXNlIG15IGRlYXRoIHNoYWxsIHBheS4gDQorQWNjZXB0IG1lOyBhbmQsIGluIG1lLCBmcm9tIHRoZXNlIHJlY2VpdmUgDQorVGhlIHNtZWxsIG9mIHBlYWNlIHRvd2FyZCBtYW5raW5kOiBsZXQgaGltIGxpdmUgDQorQmVmb3JlIHRoZWUgcmVjb25jaWxlZCwgYXQgbGVhc3QgaGlzIGRheXMgDQorTnVtYmVyZWQsIHRob3VnaCBzYWQ7IHRpbGwgZGVhdGgsIGhpcyBkb29tLCAod2hpY2ggSSANCitUbyBtaXRpZ2F0ZSB0aHVzIHBsZWFkLCBub3QgdG8gcmV2ZXJzZSwpIA0KK1RvIGJldHRlciBsaWZlIHNoYWxsIHlpZWxkIGhpbTogd2hlcmUgd2l0aCBtZSANCitBbGwgbXkgcmVkZWVtZWQgbWF5IGR3ZWxsIGluIGpveSBhbmQgYmxpc3M7IA0KK01hZGUgb25lIHdpdGggbWUsIGFzIEkgd2l0aCB0aGVlIGFtIG9uZS4gDQorVG8gd2hvbSB0aGUgRmF0aGVyLCB3aXRob3V0IGNsb3VkLCBzZXJlbmUuIA0KK0FsbCB0aHkgcmVxdWVzdCBmb3IgTWFuLCBhY2NlcHRlZCBTb24sIA0KK09idGFpbjsgYWxsIHRoeSByZXF1ZXN0IHdhcyBteSBkZWNyZWU6IA0KK0J1dCwgbG9uZ2VyIGluIHRoYXQgUGFyYWRpc2UgdG8gZHdlbGwsIA0KK1RoZSBsYXcgSSBnYXZlIHRvIE5hdHVyZSBoaW0gZm9yYmlkczogDQorVGhvc2UgcHVyZSBpbW1vcnRhbCBlbGVtZW50cywgdGhhdCBrbm93LCANCitObyBncm9zcywgbm8gdW5oYXJtb25pb3VzIG1peHR1cmUgZm91bCwgDQorRWplY3QgaGltLCB0YWludGVkIG5vdzsgYW5kIHB1cmdlIGhpbSBvZmYsIA0KK0FzIGEgZGlzdGVtcGVyLCBncm9zcywgdG8gYWlyIGFzIGdyb3NzLCANCitBbmQgbW9ydGFsIGZvb2Q7IGFzIG1heSBkaXNwb3NlIGhpbSBiZXN0IA0KK0ZvciBkaXNzb2x1dGlvbiB3cm91Z2h0IGJ5IHNpbiwgdGhhdCBmaXJzdCANCitEaXN0ZW1wZXJlZCBhbGwgdGhpbmdzLCBhbmQgb2YgaW5jb3JydXB0IA0KK0NvcnJ1cHRlZC4gIEksIGF0IGZpcnN0LCB3aXRoIHR3byBmYWlyIGdpZnRzIA0KK0NyZWF0ZWQgaGltIGVuZG93ZWQ7IHdpdGggaGFwcGluZXNzLCANCitBbmQgaW1tb3J0YWxpdHk6IHRoYXQgZm9uZGx5IGxvc3QsIA0KK1RoaXMgb3RoZXIgc2VydmVkIGJ1dCB0byBldGVybml6ZSB3b2U7IA0KK1RpbGwgSSBwcm92aWRlZCBkZWF0aDogc28gZGVhdGggYmVjb21lcyANCitIaXMgZmluYWwgcmVtZWR5OyBhbmQsIGFmdGVyIGxpZmUsIA0KK1RyaWVkIGluIHNoYXJwIHRyaWJ1bGF0aW9uLCBhbmQgcmVmaW5lZCANCitCeSBmYWl0aCBhbmQgZmFpdGhmdWwgd29ya3MsIHRvIHNlY29uZCBsaWZlLCANCitXYWtlZCBpbiB0aGUgcmVub3ZhdGlvbiBvZiB0aGUganVzdCwgDQorUmVzaWducyBoaW0gdXAgd2l0aCBIZWF2ZW4gYW5kIEVhcnRoIHJlbmV3ZWQuIA0KK0J1dCBsZXQgdXMgY2FsbCB0byBzeW5vZCBhbGwgdGhlIEJsZXN0LCANCitUaHJvdWdoIEhlYXZlbidzIHdpZGUgYm91bmRzOiBmcm9tIHRoZW0gSSB3aWxsIG5vdCBoaWRlIA0KK015IGp1ZGdlbWVudHM7IGhvdyB3aXRoIG1hbmtpbmQgSSBwcm9jZWVkLCANCitBcyBob3cgd2l0aCBwZWNjYW50IEFuZ2VscyBsYXRlIHRoZXkgc2F3LCANCitBbmQgaW4gdGhlaXIgc3RhdGUsIHRob3VnaCBmaXJtLCBzdG9vZCBtb3JlIGNvbmZpcm1lZC4gDQorSGUgZW5kZWQsIGFuZCB0aGUgU29uIGdhdmUgc2lnbmFsIGhpZ2ggDQorVG8gdGhlIGJyaWdodCBtaW5pc3RlciB0aGF0IHdhdGNoZWQ7IGhlIGJsZXcgDQorSGlzIHRydW1wZXQsIGhlYXJkIGluIE9yZWIgc2luY2UgcGVyaGFwcyANCitXaGVuIEdvZCBkZXNjZW5kZWQsIGFuZCBwZXJoYXBzIG9uY2UgbW9yZSANCitUbyBzb3VuZCBhdCBnZW5lcmFsIGRvb20uICBUaGUgYW5nZWxpY2sgYmxhc3QgDQorRmlsbGVkIGFsbCB0aGUgcmVnaW9uczogZnJvbSB0aGVpciBibGlzZnVsIGJvd2VycyANCitPZiBhbWFyYW50aW5lIHNoYWRlLCBmb3VudGFpbiBvciBzcHJpbmcsIA0KK0J5IHRoZSB3YXRlcnMgb2YgbGlmZSwgd2hlcmUnZXIgdGhleSBzYXQgDQorSW4gZmVsbG93c2hpcHMgb2Ygam95LCB0aGUgc29ucyBvZiBsaWdodCANCitIYXN0ZWQsIHJlc29ydGluZyB0byB0aGUgc3VtbW9ucyBoaWdoOyANCitBbmQgdG9vayB0aGVpciBzZWF0czsgdGlsbCBmcm9tIGhpcyB0aHJvbmUgc3VwcmVtZSANCitUaGUgQWxtaWdodHkgdGh1cyBwcm9ub3VuY2VkIGhpcyBzb3ZyYW4gd2lsbC4gDQorTyBTb25zLCBsaWtlIG9uZSBvZiB1cyBNYW4gaXMgYmVjb21lIA0KK1RvIGtub3cgYm90aCBnb29kIGFuZCBldmlsLCBzaW5jZSBoaXMgdGFzdGUgDQorT2YgdGhhdCBkZWZlbmRlZCBmcnVpdDsgYnV0IGxldCBoaW0gYm9hc3QgDQorSGlzIGtub3dsZWRnZSBvZiBnb29kIGxvc3QsIGFuZCBldmlsIGdvdDsgDQorSGFwcGllciEgaGFkIGl0IHN1ZmZpY2VkIGhpbSB0byBoYXZlIGtub3duIA0KK0dvb2QgYnkgaXRzZWxmLCBhbmQgZXZpbCBub3QgYXQgYWxsLiANCitIZSBzb3Jyb3dzIG5vdywgcmVwZW50cywgYW5kIHByYXlzIGNvbnRyaXRlLCANCitNeSBtb3Rpb25zIGluIGhpbTsgbG9uZ2VyIHRoYW4gdGhleSBtb3ZlLCANCitIaXMgaGVhcnQgSSBrbm93LCBob3cgdmFyaWFibGUgYW5kIHZhaW4sIA0KK1NlbGYtbGVmdC4gIExlc3QgdGhlcmVmb3JlIGhpcyBub3cgYm9sZGVyIGhhbmQgDQorUmVhY2ggYWxzbyBvZiB0aGUgdHJlZSBvZiBsaWZlLCBhbmQgZWF0LCANCitBbmQgbGl2ZSBmb3IgZXZlciwgZHJlYW0gYXQgbGVhc3QgdG8gbGl2ZSANCitGb3IgZXZlciwgdG8gcmVtb3ZlIGhpbSBJIGRlY3JlZSwgDQorQW5kIHNlbmQgaGltIGZyb20gdGhlIGdhcmRlbiBmb3J0aCB0byB0aWxsIA0KK1RoZSBncm91bmQgd2hlbmNlIGhlIHdhcyB0YWtlbiwgZml0dGVyIHNvaWwuIA0KK01pY2hhZWwsIHRoaXMgbXkgYmVoZXN0IGhhdmUgdGhvdSBpbiBjaGFyZ2U7IA0KK1Rha2UgdG8gdGhlZSBmcm9tIGFtb25nIHRoZSBDaGVydWJpbSANCitUaHkgY2hvaWNlIG9mIGZsYW1pbmcgd2FycmlvdXJzLCBsZXN0IHRoZSBGaWVuZCwgDQorT3IgaW4gYmVoYWxmIG9mIE1hbiwgb3IgdG8gaW52YWRlIA0KK1ZhY2FudCBwb3NzZXNzaW9uLCBzb21lIG5ldyB0cm91YmxlIHJhaXNlOiANCitIYXN0ZSB0aGVlLCBhbmQgZnJvbSB0aGUgUGFyYWRpc2Ugb2YgR29kIA0KK1dpdGhvdXQgcmVtb3JzZSBkcml2ZSBvdXQgdGhlIHNpbmZ1bCBwYWlyOyANCitGcm9tIGhhbGxvd2VkIGdyb3VuZCB0aGUgdW5ob2x5OyBhbmQgZGVub3VuY2UgDQorVG8gdGhlbSwgYW5kIHRvIHRoZWlyIHByb2dlbnksIGZyb20gdGhlbmNlIA0KK1BlcnBldHVhbCBiYW5pc2htZW50LiAgWWV0LCBsZXN0IHRoZXkgZmFpbnQgDQorQXQgdGhlIHNhZCBzZW50ZW5jZSByaWdvcm91c2x5IHVyZ2VkLCANCisoRm9yIEkgYmVob2xkIHRoZW0gc29mdGVuZWQsIGFuZCB3aXRoIHRlYXJzIA0KK0Jld2FpbGluZyB0aGVpciBleGNlc3MsKSBhbGwgdGVycm91ciBoaWRlLiANCitJZiBwYXRpZW50bHkgdGh5IGJpZGRpbmcgdGhleSBvYmV5LCANCitEaXNtaXNzIHRoZW0gbm90IGRpc2NvbnNvbGF0ZTsgcmV2ZWFsIA0KK1RvIEFkYW0gd2hhdCBzaGFsbCBjb21lIGluIGZ1dHVyZSBkYXlzLCANCitBcyBJIHNoYWxsIHRoZWUgZW5saWdodGVuOyBpbnRlcm1peCANCitNeSBjb3ZlbmFudCBpbiB0aGUgV29tYW4ncyBzZWVkIHJlbmV3ZWQ7IA0KK1NvIHNlbmQgdGhlbSBmb3J0aCwgdGhvdWdoIHNvcnJvd2luZywgeWV0IGluIHBlYWNlOiANCitBbmQgb24gdGhlIGVhc3Qgc2lkZSBvZiB0aGUgZ2FyZGVuIHBsYWNlLCANCitXaGVyZSBlbnRyYW5jZSB1cCBmcm9tIEVkZW4gZWFzaWVzdCBjbGltYnMsIA0KK0NoZXJ1YmljayB3YXRjaDsgYW5kIG9mIGEgc3dvcmQgdGhlIGZsYW1lIA0KK1dpZGUtd2F2aW5nOyBhbGwgYXBwcm9hY2ggZmFyIG9mZiB0byBmcmlnaHQsIA0KK0FuZCBndWFyZCBhbGwgcGFzc2FnZSB0byB0aGUgdHJlZSBvZiBsaWZlOiANCitMZXN0IFBhcmFkaXNlIGEgcmVjZXB0YWNsZSBwcm92ZSANCitUbyBTcGlyaXRzIGZvdWwsIGFuZCBhbGwgbXkgdHJlZXMgdGhlaXIgcHJleTsgDQorV2l0aCB3aG9zZSBzdG9sZW4gZnJ1aXQgTWFuIG9uY2UgbW9yZSB0byBkZWx1ZGUuIA0KK0hlIGNlYXNlZDsgYW5kIHRoZSBhcmNoLWFuZ2VsaWNrIFBvd2VyIHByZXBhcmVkIA0KK0ZvciBzd2lmdCBkZXNjZW50OyB3aXRoIGhpbSB0aGUgY29ob3J0IGJyaWdodCANCitPZiB3YXRjaGZ1bCBDaGVydWJpbTogZm91ciBmYWNlcyBlYWNoIA0KK0hhZCwgbGlrZSBhIGRvdWJsZSBKYW51czsgYWxsIHRoZWlyIHNoYXBlIA0KK1NwYW5nbGVkIHdpdGggZXllcyBtb3JlIG51bWVyb3VzIHRoYW4gdGhvc2UgDQorT2YgQXJndXMsIGFuZCBtb3JlIHdha2VmdWwgdGhhbiB0byBkcm91c2UsIA0KK0NoYXJtZWQgd2l0aCBBcmNhZGlhbiBwaXBlLCB0aGUgcGFzdG9yYWwgcmVlZCANCitPZiBIZXJtZXMsIG9yIGhpcyBvcGlhdGUgcm9kLiAgTWVhbiB3aGlsZSwgDQorVG8gcmUtc2FsdXRlIHRoZSB3b3JsZCB3aXRoIHNhY3JlZCBsaWdodCwgDQorTGV1Y290aGVhIHdha2VkOyBhbmQgd2l0aCBmcmVzaCBkZXdzIGltYmFsbWVkIA0KK1RoZSBlYXJ0aDsgd2hlbiBBZGFtIGFuZCBmaXJzdCBtYXRyb24gRXZlIA0KK0hhZCBlbmRlZCBub3cgdGhlaXIgb3Jpc29ucywgYW5kIGZvdW5kIA0KK1N0cmVuZ3RoIGFkZGVkIGZyb20gYWJvdmU7IG5ldyBob3BlIHRvIHNwcmluZyANCitPdXQgb2YgZGVzcGFpcjsgam95LCBidXQgd2l0aCBmZWFyIHlldCBsaW5rZWQ7IA0KK1doaWNoIHRodXMgdG8gRXZlIGhpcyB3ZWxjb21lIHdvcmRzIHJlbmV3ZWQuIA0KK0V2ZSwgZWFzaWx5IG15IGZhaXRoIGFkbWl0LCB0aGF0IGFsbCANCitUaGUgZ29vZCB3aGljaCB3ZSBlbmpveSBmcm9tIEhlYXZlbiBkZXNjZW5kczsgDQorQnV0LCB0aGF0IGZyb20gdXMgYXVnaHQgc2hvdWxkIGFzY2VuZCB0byBIZWF2ZW4gDQorU28gcHJldmFsZW50IGFzIHRvIGNvbmNlcm4gdGhlIG1pbmQgDQorT2YgR29kIGhpZ2gtYmxlc3QsIG9yIHRvIGluY2xpbmUgaGlzIHdpbGwsIA0KK0hhcmQgdG8gYmVsaWVmIG1heSBzZWVtOyB5ZXQgdGhpcyB3aWxsIHByYXllciANCitPciBvbmUgc2hvcnQgc2lnaCBvZiBodW1hbiBicmVhdGgsIHVwYm9ybmUgDQorRXZlbiB0byB0aGUgc2VhdCBvZiBHb2QuICBGb3Igc2luY2UgSSBzb3VnaHQgDQorQnkgcHJheWVyIHRoZSBvZmZlbmRlZCBEZWl0eSB0byBhcHBlYXNlOyANCitLbmVlbGVkLCBhbmQgYmVmb3JlIGhpbSBodW1ibGVkIGFsbCBteSBoZWFydDsgDQorTWV0aG91Z2h0IEkgc2F3IGhpbSBwbGFjYWJsZSBhbmQgbWlsZCwgDQorQmVuZGluZyBoaXMgZWFyOyBwZXJzdWFzaW9uIGluIG1lIGdyZXcgDQorVGhhdCBJIHdhcyBoZWFyZCB3aXRoIGZhdm91cjsgcGVhY2UgcmV0dXJuZWQgDQorSG9tZSB0byBteSBicmVhc3QsIGFuZCB0byBteSBtZW1vcnkgDQorSGlzIHByb21pc2UsIHRoYXQgdGh5IHNlZWQgc2hhbGwgYnJ1aXNlIG91ciBmb2U7IA0KK1doaWNoLCB0aGVuIG5vdCBtaW5kZWQgaW4gZGlzbWF5LCB5ZXQgbm93IA0KK0Fzc3VyZXMgbWUgdGhhdCB0aGUgYml0dGVybmVzcyBvZiBkZWF0aCANCitJcyBwYXN0LCBhbmQgd2Ugc2hhbGwgbGl2ZS4gIFdoZW5jZSBoYWlsIHRvIHRoZWUsIA0KK0V2ZSByaWdodGx5IGNhbGxlZCwgbW90aGVyIG9mIGFsbCBtYW5raW5kLCANCitNb3RoZXIgb2YgYWxsIHRoaW5ncyBsaXZpbmcsIHNpbmNlIGJ5IHRoZWUgDQorTWFuIGlzIHRvIGxpdmU7IGFuZCBhbGwgdGhpbmdzIGxpdmUgZm9yIE1hbi4gDQorVG8gd2hvbSB0aHVzIEV2ZSB3aXRoIHNhZCBkZW1lYW5vdXIgbWVlay4gDQorSWxsLXdvcnRoeSBJIHN1Y2ggdGl0bGUgc2hvdWxkIGJlbG9uZyANCitUbyBtZSB0cmFuc2dyZXNzb3VyOyB3aG8sIGZvciB0aGVlIG9yZGFpbmVkIA0KK0EgaGVscCwgYmVjYW1lIHRoeSBzbmFyZTsgdG8gbWUgcmVwcm9hY2ggDQorUmF0aGVyIGJlbG9uZ3MsIGRpc3RydXN0LCBhbmQgYWxsIGRpc3ByYWlzZTogDQorQnV0IGluZmluaXRlIGluIHBhcmRvbiB3YXMgbXkgSnVkZ2UsIA0KK1RoYXQgSSwgd2hvIGZpcnN0IGJyb3VnaHQgZGVhdGggb24gYWxsLCBhbSBncmFjZWQgDQorVGhlIHNvdXJjZSBvZiBsaWZlOyBuZXh0IGZhdm91cmFibGUgdGhvdSwgDQorV2hvIGhpZ2hseSB0aHVzIHRvIGVudGl0bGUgbWUgdm91Y2hzYWYnc3QsIA0KK0ZhciBvdGhlciBuYW1lIGRlc2VydmluZy4gIEJ1dCB0aGUgZmllbGQgDQorVG8gbGFib3VyIGNhbGxzIHVzLCBub3cgd2l0aCBzd2VhdCBpbXBvc2VkLCANCitUaG91Z2ggYWZ0ZXIgc2xlZXBsZXNzIG5pZ2h0OyBmb3Igc2VlIXRoZSBtb3JuLCANCitBbGwgdW5jb25jZXJuZWQgd2l0aCBvdXIgdW5yZXN0LCBiZWdpbnMgDQorSGVyIHJvc3kgcHJvZ3Jlc3Mgc21pbGluZzogbGV0IHVzIGZvcnRoOyANCitJIG5ldmVyIGZyb20gdGh5IHNpZGUgaGVuY2Vmb3J0aCB0byBzdHJheSwgDQorV2hlcmUnZXIgb3VyIGRheSdzIHdvcmsgbGllcywgdGhvdWdoIG5vdyBlbmpvaW5lZCANCitMYWJvcmlvdXMsIHRpbGwgZGF5IGRyb29wOyB3aGlsZSBoZXJlIHdlIGR3ZWxsLCANCitXaGF0IGNhbiBiZSB0b2lsc29tZSBpbiB0aGVzZSBwbGVhc2FudCB3YWxrcz8gDQorSGVyZSBsZXQgdXMgbGl2ZSwgdGhvdWdoIGluIGZhbGxlbiBzdGF0ZSwgY29udGVudC4gDQorU28gc3Bha2UsIHNvIHdpc2hlZCBtdWNoIGh1bWJsZWQgRXZlOyBidXQgRmF0ZSANCitTdWJzY3JpYmVkIG5vdDogIE5hdHVyZSBmaXJzdCBnYXZlIHNpZ25zLCBpbXByZXNzZWQgDQorT24gYmlyZCwgYmVhc3QsIGFpcjsgYWlyIHN1ZGRlbmx5IGVjbGlwc2VkLCANCitBZnRlciBzaG9ydCBibHVzaCBvZiBtb3JuOyBuaWdoIGluIGhlciBzaWdodCANCitUaGUgYmlyZCBvZiBKb3ZlLCBzdG9vcGVkIGZyb20gaGlzIGFlcnkgdG91ciwgDQorVHdvIGJpcmRzIG9mIGdheWVzdCBwbHVtZSBiZWZvcmUgaGltIGRyb3ZlOyANCitEb3duIGZyb20gYSBoaWxsIHRoZSBiZWFzdCB0aGF0IHJlaWducyBpbiB3b29kcywgDQorRmlyc3QgaHVudGVyIHRoZW4sIHB1cnN1ZWQgYSBnZW50bGUgYnJhY2UsIA0KK0dvb2RsaWVzdCBvZiBhbGwgdGhlIGZvcmVzdCwgaGFydCBhbmQgaGluZDsgDQorRGlyZWN0IHRvIHRoZSBlYXN0ZXJuIGdhdGUgd2FzIGJlbnQgdGhlaXIgZmxpZ2h0LiANCitBZGFtIG9ic2VydmVkLCBhbmQgd2l0aCBoaXMgZXllIHRoZSBjaGFzZSANCitQdXJzdWluZywgbm90IHVubW92ZWQsIHRvIEV2ZSB0aHVzIHNwYWtlLiANCitPIEV2ZSwgc29tZSBmdXJ0aGVyIGNoYW5nZSBhd2FpdHMgdXMgbmlnaCwgDQorV2hpY2ggSGVhdmVuLCBieSB0aGVzZSBtdXRlIHNpZ25zIGluIE5hdHVyZSwgc2hvd3MgDQorRm9yZXJ1bm5lcnMgb2YgaGlzIHB1cnBvc2U7IG9yIHRvIHdhcm4gDQorVXMsIGhhcGx5IHRvbyBzZWN1cmUsIG9mIG91ciBkaXNjaGFyZ2UgDQorRnJvbSBwZW5hbHR5LCBiZWNhdXNlIGZyb20gZGVhdGggcmVsZWFzZWQgDQorU29tZSBkYXlzOiBob3cgbG9uZywgYW5kIHdoYXQgdGlsbCB0aGVuIG91ciBsaWZlLCANCitXaG8ga25vd3M/IG9yIG1vcmUgdGhhbiB0aGlzLCB0aGF0IHdlIGFyZSBkdXN0LCANCitBbmQgdGhpdGhlciBtdXN0IHJldHVybiwgYW5kIGJlIG5vIG1vcmU/IA0KK1doeSBlbHNlIHRoaXMgZG91YmxlIG9iamVjdCBpbiBvdXIgc2lnaHQgDQorT2YgZmxpZ2h0IHB1cnN1ZWQgaW4gdGhlIGFpciwgYW5kIG8nZXIgdGhlIGdyb3VuZCwgDQorT25lIHdheSB0aGUgc2VsZi1zYW1lIGhvdXI/IHdoeSBpbiB0aGUgZWFzdCANCitEYXJrbmVzcyBlcmUgZGF5J3MgbWlkLWNvdXJzZSwgYW5kIG1vcm5pbmctbGlnaHQgDQorTW9yZSBvcmllbnQgaW4geW9uIHdlc3Rlcm4gY2xvdWQsIHRoYXQgZHJhd3MgDQorTydlciB0aGUgYmx1ZSBmaXJtYW1lbnQgYSByYWRpYW50IHdoaXRlLCANCitBbmQgc2xvdyBkZXNjZW5kcyB3aXRoIHNvbWV0aGluZyBoZWF2ZW5seSBmcmF1Z2h0PyANCitIZSBlcnJlZCBub3Q7IGZvciBieSB0aGlzIHRoZSBoZWF2ZW5seSBiYW5kcyANCitEb3duIGZyb20gYSBza3kgb2YgamFzcGVyIGxpZ2h0ZWQgbm93IA0KK0luIFBhcmFkaXNlLCBhbmQgb24gYSBoaWxsIG1hZGUgaGFsdDsgDQorQSBnbG9yaW91cyBhcHBhcml0aW9uLCBoYWQgbm90IGRvdWJ0IA0KK0FuZCBjYXJuYWwgZmVhciB0aGF0IGRheSBkaW1tZWQgQWRhbSdzIGV5ZS4gDQorTm90IHRoYXQgbW9yZSBnbG9yaW91cywgd2hlbiB0aGUgQW5nZWxzIG1ldCANCitKYWNvYiBpbiBNYWhhbmFpbSwgd2hlcmUgaGUgc2F3IA0KK1RoZSBmaWVsZCBwYXZpbGlvbmVkIHdpdGggaGlzIGd1YXJkaWFucyBicmlnaHQ7IA0KK05vciB0aGF0LCB3aGljaCBvbiB0aGUgZmxhbWluZyBtb3VudCBhcHBlYXJlZCANCitJbiBEb3RoYW4sIGNvdmVyZWQgd2l0aCBhIGNhbXAgb2YgZmlyZSwgDQorQWdhaW5zdCB0aGUgU3lyaWFuIGtpbmcsIHdobyB0byBzdXJwcmlzZSANCitPbmUgbWFuLCBhc3Nhc3Npbi1saWtlLCBoYWQgbGV2aWVkIHdhciwgDQorV2FyIHVucHJvY2xhaW1lZC4gIFRoZSBwcmluY2VseSBIaWVyYXJjaCANCitJbiB0aGVpciBicmlnaHQgc3RhbmQgdGhlcmUgbGVmdCBoaXMgUG93ZXJzLCB0byBzZWlzZSANCitQb3NzZXNzaW9uIG9mIHRoZSBnYXJkZW47IGhlIGFsb25lLCANCitUbyBmaW5kIHdoZXJlIEFkYW0gc2hlbHRlcmVkLCB0b29rIGhpcyB3YXksIA0KK05vdCB1bnBlcmNlaXZlZCBvZiBBZGFtOyB3aG8gdG8gRXZlLCANCitXaGlsZSB0aGUgZ3JlYXQgdmlzaXRhbnQgYXBwcm9hY2hlZCwgdGh1cyBzcGFrZS4gDQorRXZlJCBub3cgZXhwZWN0IGdyZWF0IHRpZGluZ3MsIHdoaWNoIHBlcmhhcHMgDQorT2YgdXMgd2lsbCBzb29uIGRldGVybWluZSwgb3IgaW1wb3NlIA0KK05ldyBsYXdzIHRvIGJlIG9ic2VydmVkOyBmb3IgSSBkZXNjcnksIA0KK0Zyb20geW9uZGVyIGJsYXppbmcgY2xvdWQgdGhhdCB2ZWlscyB0aGUgaGlsbCwgDQorT25lIG9mIHRoZSBoZWF2ZW5seSBob3N0OyBhbmQsIGJ5IGhpcyBnYWl0LCANCitOb25lIG9mIHRoZSBtZWFuZXN0OyBzb21lIGdyZWF0IFBvdGVudGF0ZSANCitPciBvZiB0aGUgVGhyb25lcyBhYm92ZTsgc3VjaCBtYWplc3R5IA0KK0ludmVzdHMgaGltIGNvbWluZyEgeWV0IG5vdCB0ZXJyaWJsZSwgDQorVGhhdCBJIHNob3VsZCBmZWFyOyBub3Igc29jaWFibHkgbWlsZCwgDQorQXMgUmFwaGFlbCwgdGhhdCBJIHNob3VsZCBtdWNoIGNvbmZpZGU7IA0KK0J1dCBzb2xlbW4gYW5kIHN1YmxpbWU7IHdob20gbm90IHRvIG9mZmVuZCwgDQorV2l0aCByZXZlcmVuY2UgSSBtdXN0IG1lZXQsIGFuZCB0aG91IHJldGlyZS4gDQorSGUgZW5kZWQ6IGFuZCB0aGUgQXJjaC1BbmdlbCBzb29uIGRyZXcgbmlnaCwgDQorTm90IGluIGhpcyBzaGFwZSBjZWxlc3RpYWwsIGJ1dCBhcyBtYW4gDQorQ2xhZCB0byBtZWV0IG1hbjsgb3ZlciBoaXMgbHVjaWQgYXJtcyANCitBIG1pbGl0YXJ5IHZlc3Qgb2YgcHVycGxlIGZsb3dlZCwgDQorTGl2ZWxpZXIgdGhhbiBNZWxpYm9lYW4sIG9yIHRoZSBncmFpbiANCitPZiBTYXJyYSwgd29ybiBieSBraW5ncyBhbmQgaGVyb2VzIG9sZCANCitJbiB0aW1lIG9mIHRydWNlOyBJcmlzIGhhZCBkaXB0IHRoZSB3b29mOyANCitIaXMgc3RhcnJ5IGhlbG0gdW5idWNrbGVkIHNob3dlZCBoaW0gcHJpbWUgDQorSW4gbWFuaG9vZCB3aGVyZSB5b3V0aCBlbmRlZDsgYnkgaGlzIHNpZGUsIA0KK0FzIGluIGEgZ2xpc3RlcmluZyB6b2RpYWNrLCBodW5nIHRoZSBzd29yZCwgDQorU2F0YW4ncyBkaXJlIGRyZWFkOyBhbmQgaW4gaGlzIGhhbmQgdGhlIHNwZWFyLiANCitBZGFtIGJvd2VkIGxvdzsgaGUsIGtpbmdseSwgZnJvbSBoaXMgc3RhdGUgDQorSW5jbGluZWQgbm90LCBidXQgaGlzIGNvbWluZyB0aHVzIGRlY2xhcmVkLiANCitBZGFtLCBIZWF2ZW4ncyBoaWdoIGJlaGVzdCBubyBwcmVmYWNlIG5lZWRzOiANCitTdWZmaWNpZW50IHRoYXQgdGh5IHByYXllcnMgYXJlIGhlYXJkOyBhbmQgRGVhdGgsIA0KK1RoZW4gZHVlIGJ5IHNlbnRlbmNlIHdoZW4gdGhvdSBkaWRzdCB0cmFuc2dyZXNzLCANCitEZWZlYXRlZCBvZiBoaXMgc2Vpc3VyZSBtYW55IGRheXMgDQorR2l2ZW4gdGhlZSBvZiBncmFjZTsgd2hlcmVpbiB0aG91IG1heWVzdCByZXBlbnQsIA0KK0FuZCBvbmUgYmFkIGFjdCB3aXRoIG1hbnkgZGVlZHMgd2VsbCBkb25lIA0KK01heWVzdCBjb3ZlcjogIFdlbGwgbWF5IHRoZW4gdGh5IExvcmQsIGFwcGVhc2VkLCANCitSZWRlZW0gdGhlZSBxdWl0ZSBmcm9tIERlYXRoJ3MgcmFwYWNpb3VzIGNsYWltOyANCitCdXQgbG9uZ2VyIGluIHRoaXMgUGFyYWRpc2UgdG8gZHdlbGwgDQorUGVybWl0cyBub3Q6IHRvIHJlbW92ZSB0aGVlIEkgYW0gY29tZSwgDQorQW5kIHNlbmQgdGhlZSBmcm9tIHRoZSBnYXJkZW4gZm9ydGggdG8gdGlsbCANCitUaGUgZ3JvdW5kIHdoZW5jZSB0aG91IHdhc3QgdGFrZW4sIGZpdHRlciBzb2lsLiANCitIZSBhZGRlZCBub3Q7IGZvciBBZGFtIGF0IHRoZSBuZXdzIA0KK0hlYXJ0LXN0cnVjayB3aXRoIGNoaWxsaW5nIGdyaXBlIG9mIHNvcnJvdyBzdG9vZCwgDQorVGhhdCBhbGwgaGlzIHNlbnNlcyBib3VuZDsgRXZlLCB3aG8gdW5zZWVuIA0KK1lldCBhbGwgaGFkIGhlYXJkLCB3aXRoIGF1ZGlibGUgbGFtZW50IA0KK0Rpc2NvdmVyZWQgc29vbiB0aGUgcGxhY2Ugb2YgaGVyIHJldGlyZS4gDQorTyB1bmV4cGVjdGVkIHN0cm9rZSwgd29yc2UgdGhhbiBvZiBEZWF0aCEgDQorTXVzdCBJIHRodXMgbGVhdmUgdGhlZSQgUGFyYWRpc2U/IHRodXMgbGVhdmUgDQorVGhlZSwgbmF0aXZlIHNvaWwhIHRoZXNlIGhhcHB5IHdhbGtzIGFuZCBzaGFkZXMsIA0KK0ZpdCBoYXVudCBvZiBHb2RzPyB3aGVyZSBJIGhhZCBob3BlIHRvIHNwZW5kLCANCitRdWlldCB0aG91Z2ggc2FkLCB0aGUgcmVzcGl0ZSBvZiB0aGF0IGRheSANCitUaGF0IG11c3QgYmUgbW9ydGFsIHRvIHVzIGJvdGguICBPIGZsb3dlcnMsIA0KK1RoYXQgbmV2ZXIgd2lsbCBpbiBvdGhlciBjbGltYXRlIGdyb3csIA0KK015IGVhcmx5IHZpc2l0YXRpb24sIGFuZCBteSBsYXN0IA0KKyA7dCBldmVuLCB3aGljaCBJIGJyZWQgdXAgd2l0aCB0ZW5kZXIgaGFuZCANCitGcm9tIHRoZSBmaXJzdCBvcGVuaW5nIGJ1ZCwgYW5kIGdhdmUgeWUgbmFtZXMhIA0KK1dobyBub3cgc2hhbGwgcmVhciB5ZSB0byB0aGUgc3VuLCBvciByYW5rIA0KK1lvdXIgdHJpYmVzLCBhbmQgd2F0ZXIgZnJvbSB0aGUgYW1icm9zaWFsIGZvdW50PyANCitUaGVlIGxhc3RseSwgbnVwdGlhbCBib3dlciEgYnkgbWUgYWRvcm5lZCANCitXaXRoIHdoYXQgdG8gc2lnaHQgb3Igc21lbGwgd2FzIHN3ZWV0ISBmcm9tIHRoZWUgDQorSG93IHNoYWxsIEkgcGFydCwgYW5kIHdoaXRoZXIgd2FuZGVyIGRvd24gDQorSW50byBhIGxvd2VyIHdvcmxkOyB0byB0aGlzIG9ic2N1cmUgDQorQW5kIHdpbGQ/IGhvdyBzaGFsbCB3ZSBicmVhdGhlIGluIG90aGVyIGFpciANCitMZXNzIHB1cmUsIGFjY3VzdG9tZWQgdG8gaW1tb3J0YWwgZnJ1aXRzPyANCitXaG9tIHRodXMgdGhlIEFuZ2VsIGludGVycnVwdGVkIG1pbGQuIA0KK0xhbWVudCBub3QsIEV2ZSwgYnV0IHBhdGllbnRseSByZXNpZ24gDQorV2hhdCBqdXN0bHkgdGhvdSBoYXN0IGxvc3QsIG5vciBzZXQgdGh5IGhlYXJ0LCANCitUaHVzIG92ZXItZm9uZCwgb24gdGhhdCB3aGljaCBpcyBub3QgdGhpbmU6IA0KK1RoeSBnb2luZyBpcyBub3QgbG9uZWx5OyB3aXRoIHRoZWUgZ29lcyANCitUaHkgaHVzYmFuZDsgd2hvbSB0byBmb2xsb3cgdGhvdSBhcnQgYm91bmQ7IA0KK1doZXJlIGhlIGFiaWRlcywgdGhpbmsgdGhlcmUgdGh5IG5hdGl2ZSBzb2lsLiANCitBZGFtLCBieSB0aGlzIGZyb20gdGhlIGNvbGQgc3VkZGVuIGRhbXAgDQorUmVjb3ZlcmluZywgYW5kIGhpcyBzY2F0dGVyZWQgc3Bpcml0cyByZXR1cm5lZCwgDQorVG8gTWljaGFlbCB0aHVzIGhpcyBodW1ibGUgd29yZHMgYWRkcmVzc2VkLiANCitDZWxlc3RpYWwsIHdoZXRoZXIgYW1vbmcgdGhlIFRocm9uZXMsIG9yIG5hbWVkIA0KK09mIHRoZW0gdGhlIGhpZ2hlc3Q7IGZvciBzdWNoIG9mIHNoYXBlIG1heSBzZWVtIA0KK1ByaW5jZSBhYm92ZSBwcmluY2VzISBnZW50bHkgaGFzdCB0aG91IHRvbGQgDQorVGh5IG1lc3NhZ2UsIHdoaWNoIG1pZ2h0IGVsc2UgaW4gdGVsbGluZyB3b3VuZCwgDQorQW5kIGluIHBlcmZvcm1pbmcgZW5kIHVzOyB3aGF0IGJlc2lkZXMgDQorT2Ygc29ycm93LCBhbmQgZGVqZWN0aW9uLCBhbmQgZGVzcGFpciwgDQorT3VyIGZyYWlsdHkgY2FuIHN1c3RhaW4sIHRoeSB0aWRpbmdzIGJyaW5nLCANCitEZXBhcnR1cmUgZnJvbSB0aGlzIGhhcHB5IHBsYWNlLCBvdXIgc3dlZXQgDQorUmVjZXNzLCBhbmQgb25seSBjb25zb2xhdGlvbiBsZWZ0IA0KK0ZhbWlsaWFyIHRvIG91ciBleWVzISBhbGwgcGxhY2VzIGVsc2UgDQorSW5ob3NwaXRhYmxlIGFwcGVhciwgYW5kIGRlc29sYXRlOyANCitOb3Iga25vd2luZyB1cywgbm9yIGtub3duOiAgQW5kLCBpZiBieSBwcmF5ZXIgDQorSW5jZXNzYW50IEkgY291bGQgaG9wZSB0byBjaGFuZ2UgdGhlIHdpbGwgDQorT2YgSGltIHdobyBhbGwgdGhpbmdzIGNhbiwgSSB3b3VsZCBub3QgY2Vhc2UgDQorVG8gd2VhcnkgaGltIHdpdGggbXkgYXNzaWR1b3VzIGNyaWVzOiANCitCdXQgcHJheWVyIGFnYWluc3QgaGlzIGFic29sdXRlIGRlY3JlZSANCitObyBtb3JlIGF2YWlscyB0aGFuIGJyZWF0aCBhZ2FpbnN0IHRoZSB3aW5kLCANCitCbG93biBzdGlmbGluZyBiYWNrIG9uIGhpbSB0aGF0IGJyZWF0aGVzIGl0IGZvcnRoOiANCitUaGVyZWZvcmUgdG8gaGlzIGdyZWF0IGJpZGRpbmcgSSBzdWJtaXQuIA0KK1RoaXMgbW9zdCBhZmZsaWN0cyBtZSwgdGhhdCwgZGVwYXJ0aW5nIGhlbmNlLCANCitBcyBmcm9tIGhpcyBmYWNlIEkgc2hhbGwgYmUgaGlkLCBkZXByaXZlZCANCitIaXMgYmxlc3NlZCBjb3VudGVuYW5jZTogIEhlcmUgSSBjb3VsZCBmcmVxdWVudCANCitXaXRoIHdvcnNoaXAgcGxhY2UgYnkgcGxhY2Ugd2hlcmUgaGUgdm91Y2hzYWZlZCANCitQcmVzZW5jZSBEaXZpbmU7IGFuZCB0byBteSBzb25zIHJlbGF0ZSwgDQorJ09uIHRoaXMgbW91bnQgaGUgYXBwZWFyZWQ7IHVuZGVyIHRoaXMgdHJlZSANCisnU3Rvb2QgdmlzaWJsZTsgYW1vbmcgdGhlc2UgcGluZXMgaGlzIHZvaWNlIA0KKydJIGhlYXJkOyBoZXJlIHdpdGggaGltIGF0IHRoaXMgZm91bnRhaW4gdGFsa2VkOiANCitTbyBtYW55IGdyYXRlZnVsIGFsdGFycyBJIHdvdWxkIHJlYXIgDQorT2YgZ3Jhc3N5IHR1cmYsIGFuZCBwaWxlIHVwIGV2ZXJ5IHN0b25lIA0KK09mIGx1c3RyZSBmcm9tIHRoZSBicm9vaywgaW4gbWVtb3J5LCANCitPciBtb251bWVudCB0byBhZ2VzOyBhbmQgdGhlcm9uIA0KK09mZmVyIHN3ZWV0LXNtZWxsaW5nIGd1bXMsIGFuZCBmcnVpdHMsIGFuZCBmbG93ZXJzOiANCitJbiB5b25kZXIgbmV0aGVyIHdvcmxkIHdoZXJlIHNoYWxsIEkgc2VlayANCitIaXMgYnJpZ2h0IGFwcGVhcmFuY2VzLCBvciBmb290LXN0ZXAgdHJhY2U/IA0KK0ZvciB0aG91Z2ggSSBmbGVkIGhpbSBhbmdyeSwgeWV0IHJlY2FsbGVkIA0KK1RvIGxpZmUgcHJvbG9uZ2VkIGFuZCBwcm9taXNlZCByYWNlLCBJIG5vdyANCitHbGFkbHkgYmVob2xkIHRob3VnaCBidXQgaGlzIHV0bW9zdCBza2lydHMgDQorT2YgZ2xvcnk7IGFuZCBmYXIgb2ZmIGhpcyBzdGVwcyBhZG9yZS4gDQorVG8gd2hvbSB0aHVzIE1pY2hhZWwgd2l0aCByZWdhcmQgYmVuaWduLiANCitBZGFtLCB0aG91IGtub3dlc3QgSGVhdmVuIGhpcywgYW5kIGFsbCB0aGUgRWFydGg7IA0KK05vdCB0aGlzIHJvY2sgb25seTsgaGlzIE9tbmlwcmVzZW5jZSBmaWxscyANCitMYW5kLCBzZWEsIGFuZCBhaXIsIGFuZCBldmVyeSBraW5kIHRoYXQgbGl2ZXMsIA0KK0ZvbWVudGVkIGJ5IGhpcyB2aXJ0dWFsIHBvd2VyIGFuZCB3YXJtZWQ6IA0KK0FsbCB0aGUgZWFydGggaGUgZ2F2ZSB0aGVlIHRvIHBvc3Nlc3MgYW5kIHJ1bGUsIA0KK05vIGRlc3BpY2FibGUgZ2lmdDsgc3VybWlzZSBub3QgdGhlbiANCitIaXMgcHJlc2VuY2UgdG8gdGhlc2UgbmFycm93IGJvdW5kcyBjb25maW5lZCANCitPZiBQYXJhZGlzZSwgb3IgRWRlbjogdGhpcyBoYWQgYmVlbiANCitQZXJoYXBzIHRoeSBjYXBpdGFsIHNlYXQsIGZyb20gd2hlbmNlIGhhZCBzcHJlYWQgDQorQWxsIGdlbmVyYXRpb25zOyBhbmQgaGFkIGhpdGhlciBjb21lIA0KK0Zyb20gYWxsIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aCwgdG8gY2VsZWJyYXRlIA0KK0FuZCByZXZlcmVuY2UgdGhlZSwgdGhlaXIgZ3JlYXQgcHJvZ2VuaXRvci4gDQorQnV0IHRoaXMgcHJlLWVtaW5lbmNlIHRob3UgaGFzdCBsb3N0LCBicm91Z2h0IGRvd24gDQorVG8gZHdlbGwgb24gZXZlbiBncm91bmQgbm93IHdpdGggdGh5IHNvbnM6IA0KK1lldCBkb3VidCBub3QgYnV0IGluIHZhbGxleSwgYW5kIGluIHBsYWluLCANCitHb2QgaXMsIGFzIGhlcmU7IGFuZCB3aWxsIGJlIGZvdW5kIGFsaWtlIA0KK1ByZXNlbnQ7IGFuZCBvZiBoaXMgcHJlc2VuY2UgbWFueSBhIHNpZ24gDQorU3RpbGwgZm9sbG93aW5nIHRoZWUsIHN0aWxsIGNvbXBhc3NpbmcgdGhlZSByb3VuZCANCitXaXRoIGdvb2RuZXNzIGFuZCBwYXRlcm5hbCBsb3ZlLCBoaXMgZmFjZSANCitFeHByZXNzLCBhbmQgb2YgaGlzIHN0ZXBzIHRoZSB0cmFjayBkaXZpbmUuIA0KK1doaWNoIHRoYXQgdGhvdSBtYXllc3QgYmVsaWV2ZSwgYW5kIGJlIGNvbmZpcm1lZCANCitFcmUgdGhvdSBmcm9tIGhlbmNlIGRlcGFydDsga25vdywgSSBhbSBzZW50IA0KK1RvIHNob3cgdGhlZSB3aGF0IHNoYWxsIGNvbWUgaW4gZnV0dXJlIGRheXMgDQorVG8gdGhlZSwgYW5kIHRvIHRoeSBvZmZzcHJpbmc6IGdvb2Qgd2l0aCBiYWQgDQorRXhwZWN0IHRvIGhlYXI7IHN1cGVybmFsIGdyYWNlIGNvbnRlbmRpbmcgDQorV2l0aCBzaW5mdWxuZXNzIG9mIG1lbjsgdGhlcmVieSB0byBsZWFybiANCitUcnVlIHBhdGllbmNlLCBhbmQgdG8gdGVtcGVyIGpveSB3aXRoIGZlYXIgDQorQW5kIHBpb3VzIHNvcnJvdzsgZXF1YWxseSBpbnVyZWQgDQorQnkgbW9kZXJhdGlvbiBlaXRoZXIgc3RhdGUgdG8gYmVhciwgDQorUHJvc3Blcm91cyBvciBhZHZlcnNlOiBzbyBzaGFsdCB0aG91IGxlYWQgDQorU2FmZXN0IHRoeSBsaWZlLCBhbmQgYmVzdCBwcmVwYXJlZCBlbmR1cmUgDQorVGh5IG1vcnRhbCBwYXNzYWdlIHdoZW4gaXQgY29tZXMuLS1Bc2NlbmQgDQorVGhpcyBoaWxsOyBsZXQgRXZlIChmb3IgSSBoYXZlIGRyZW5jaGVkIGhlciBleWVzKSANCitIZXJlIHNsZWVwIGJlbG93OyB3aGlsZSB0aG91IHRvIGZvcmVzaWdodCB3YWtlc3Q7IA0KK0FzIG9uY2UgdGhvdSBzbGVwdHN0LCB3aGlsZSBzaGUgdG8gbGlmZSB3YXMgZm9ybWVkLiANCitUbyB3aG9tIHRodXMgQWRhbSBncmF0ZWZ1bGx5IHJlcGxpZWQuIA0KK0FzY2VuZCwgSSBmb2xsb3cgdGhlZSwgc2FmZSBHdWlkZSwgdGhlIHBhdGggDQorVGhvdSBsZWFkZXN0IG1lOyBhbmQgdG8gdGhlIGhhbmQgb2YgSGVhdmVuIHN1Ym1pdCwgDQorSG93ZXZlciBjaGFzdGVuaW5nOyB0byB0aGUgZXZpbCB0dXJuIA0KK015IG9idmlvdXMgYnJlYXN0OyBhcm1pbmcgdG8gb3ZlcmNvbWUgDQorQnkgc3VmZmVyaW5nLCBhbmQgZWFybiByZXN0IGZyb20gbGFib3VyIHdvbiwgDQorSWYgc28gSSBtYXkgYXR0YWluLiAtLSBTbyBib3RoIGFzY2VuZCANCitJbiB0aGUgdmlzaW9ucyBvZiBHb2QuICBJdCB3YXMgYSBoaWxsLCANCitPZiBQYXJhZGlzZSB0aGUgaGlnaGVzdDsgZnJvbSB3aG9zZSB0b3AgDQorVGhlIGhlbWlzcGhlcmUgb2YgZWFydGgsIGluIGNsZWFyZXN0IGtlbiwgDQorU3RyZXRjaGVkIG91dCB0byB0aGUgYW1wbGVzdCByZWFjaCBvZiBwcm9zcGVjdCBsYXkuIA0KK05vdCBoaWdoZXIgdGhhdCBoaWxsLCBub3Igd2lkZXIgbG9va2luZyByb3VuZCwgDQorV2hlcmVvbiwgZm9yIGRpZmZlcmVudCBjYXVzZSwgdGhlIFRlbXB0ZXIgc2V0IA0KK091ciBzZWNvbmQgQWRhbSwgaW4gdGhlIHdpbGRlcm5lc3M7IA0KK1RvIHNob3cgaGltIGFsbCBFYXJ0aCdzIGtpbmdkb21zLCBhbmQgdGhlaXIgZ2xvcnkuIA0KK0hpcyBleWUgbWlnaHQgdGhlcmUgY29tbWFuZCB3aGVyZXZlciBzdG9vZCANCitDaXR5IG9mIG9sZCBvciBtb2Rlcm4gZmFtZSwgdGhlIHNlYXQgDQorT2YgbWlnaHRpZXN0IGVtcGlyZSwgZnJvbSB0aGUgZGVzdGluZWQgd2FsbHMgDQorT2YgQ2FtYmFsdSwgc2VhdCBvZiBDYXRoYWlhbiBDYW4sIA0KK0FuZCBTYW1hcmNoYW5kIGJ5IE94dXMsIFRlbWlyJ3MgdGhyb25lLCANCitUbyBQYXF1aW4gb2YgU2luYWVhbiBraW5nczsgYW5kIHRoZW5jZSANCitUbyBBZ3JhIGFuZCBMYWhvciBvZiBncmVhdCBNb2d1bCwgDQorRG93biB0byB0aGUgZ29sZGVuIENoZXJzb25lc2U7IG9yIHdoZXJlIA0KK1RoZSBQZXJzaWFuIGluIEVjYmF0YW4gc2F0LCBvciBzaW5jZSANCitJbiBIaXNwYWhhbjsgb3Igd2hlcmUgdGhlIFJ1c3NpYW4gS3NhciANCitJbiBNb3Njbzsgb3IgdGhlIFN1bHRhbiBpbiBCaXphbmNlLCANCitUdXJjaGVzdGFuLWJvcm47IG5vciBjb3VsZCBoaXMgZXllIG5vdCBrZW4gDQorVGhlIGVtcGlyZSBvZiBOZWd1cyB0byBoaXMgdXRtb3N0IHBvcnQgDQorRXJjb2NvLCBhbmQgdGhlIGxlc3MgbWFyaXRpbSBraW5ncyANCitNb21iYXphLCBhbmQgUXVpbG9hLCBhbmQgTWVsaW5kLCANCitBbmQgU29mYWxhLCB0aG91Z2h0IE9waGlyLCB0byB0aGUgcmVhbG0gDQorT2YgQ29uZ28sIGFuZCBBbmdvbGEgZmFydGhlc3Qgc291dGg7IA0KK09yIHRoZW5jZSBmcm9tIE5pZ2VyIGZsb29kIHRvIEF0bGFzIG1vdW50IA0KK1RoZSBraW5nZG9tcyBvZiBBbG1hbnNvciwgRmV6IGFuZCBTdXMsIA0KK01vcm9jY28sIGFuZCBBbGdpZXJzLCBhbmQgVHJlbWlzZW47IA0KK09uIEV1cm9wZSB0aGVuY2UsIGFuZCB3aGVyZSBSb21lIHdhcyB0byBzd2F5IA0KK1RoZSB3b3JsZDogaW4gc3Bpcml0IHBlcmhhcHMgaGUgYWxzbyBzYXcgDQorUmljaCBNZXhpY28sIHRoZSBzZWF0IG9mIE1vbnRlenVtZSwgDQorQW5kIEN1c2NvIGluIFBlcnUsIHRoZSByaWNoZXIgc2VhdCANCitPZiBBdGFiYWxpcGE7IGFuZCB5ZXQgdW5zcG9pbGVkIA0KK0d1aWFuYSwgd2hvc2UgZ3JlYXQgY2l0eSBHZXJ5b24ncyBzb25zIA0KK0NhbGwgRWwgRG9yYWRvLiAgQnV0IHRvIG5vYmxlciBzaWdodHMgDQorTWljaGFlbCBmcm9tIEFkYW0ncyBleWVzIHRoZSBmaWxtIHJlbW92ZWQsIA0KK1doaWNoIHRoYXQgZmFsc2UgZnJ1aXQgdGhhdCBwcm9taXNlZCBjbGVhcmVyIHNpZ2h0IA0KK0hhZCBicmVkOyB0aGVuIHB1cmdlZCB3aXRoIGV1cGhyYXN5IGFuZCBydWUgDQorVGhlIHZpc3VhbCBuZXJ2ZSwgZm9yIGhlIGhhZCBtdWNoIHRvIHNlZTsgDQorQW5kIGZyb20gdGhlIHdlbGwgb2YgbGlmZSB0aHJlZSBkcm9wcyBpbnN0aWxsZWQuIA0KK1NvIGRlZXAgdGhlIHBvd2VyIG9mIHRoZXNlIGluZ3JlZGllbnRzIHBpZXJjZWQsIA0KK0V2ZW4gdG8gdGhlIGlubW9zdCBzZWF0IG9mIG1lbnRhbCBzaWdodCwgDQorVGhhdCBBZGFtLCBub3cgZW5mb3JjZWQgdG8gY2xvc2UgaGlzIGV5ZXMsIA0KK1N1bmsgZG93biwgYW5kIGFsbCBoaXMgc3Bpcml0cyBiZWNhbWUgZW50cmFuY2VkOyANCitCdXQgaGltIHRoZSBnZW50bGUgQW5nZWwgYnkgdGhlIGhhbmQgDQorU29vbiByYWlzZWQsIGFuZCBoaXMgYXR0ZW50aW9uIHRodXMgcmVjYWxsZWQuIA0KK0FkYW0sIG5vdyBvcGUgdGhpbmUgZXllczsgYW5kIGZpcnN0IGJlaG9sZCANCitUaGUgZWZmZWN0cywgd2hpY2ggdGh5IG9yaWdpbmFsIGNyaW1lIGhhdGggd3JvdWdodCANCitJbiBzb21lIHRvIHNwcmluZyBmcm9tIHRoZWU7IHdobyBuZXZlciB0b3VjaGVkIA0KK1RoZSBleGNlcHRlZCB0cmVlOyBub3Igd2l0aCB0aGUgc25ha2UgY29uc3BpcmVkOyANCitOb3Igc2lubmVkIHRoeSBzaW47IHlldCBmcm9tIHRoYXQgc2luIGRlcml2ZSANCitDb3JydXB0aW9uLCB0byBicmluZyBmb3J0aCBtb3JlIHZpb2xlbnQgZGVlZHMuIA0KK0hpcyBleWVzIGhlIG9wZW5lZCwgYW5kIGJlaGVsZCBhIGZpZWxkLCANCitQYXJ0IGFyYWJsZSBhbmQgdGlsdGgsIHdoZXJlb24gd2VyZSBzaGVhdmVzIA0KK05ldyByZWFwZWQ7IHRoZSBvdGhlciBwYXJ0IHNoZWVwLXdhbGtzIGFuZCBmb2xkczsgDQorSScgdGhlIG1pZHN0IGFuIGFsdGFyIGFzIHRoZSBsYW5kLW1hcmsgc3Rvb2QsIA0KK1J1c3RpY2ssIG9mIGdyYXNzeSBzb3JkOyB0aGl0aGVyIGFub24gDQorQSBzd2VhdHkgcmVhcGVyIGZyb20gaGlzIHRpbGxhZ2UgYnJvdWdodCANCitGaXJzdCBmcnVpdHMsIHRoZSBncmVlbiBlYXIsIGFuZCB0aGUgeWVsbG93IHNoZWFmLCANCitVbmN1bGxlZCwgYXMgY2FtZSB0byBoYW5kOyBhIHNoZXBoZXJkIG5leHQsIA0KK01vcmUgbWVlaywgY2FtZSB3aXRoIHRoZSBmaXJzdGxpbmdzIG9mIGhpcyBmbG9jaywgDQorQ2hvaWNlc3QgYW5kIGJlc3Q7IHRoZW4sIHNhY3JpZmljaW5nLCBsYWlkIA0KK1RoZSBpbndhcmRzIGFuZCB0aGVpciBmYXQsIHdpdGggaW5jZW5zZSBzdHJvd2VkLCANCitPbiB0aGUgY2xlZnQgd29vZCwgYW5kIGFsbCBkdWUgcmlnaHRzIHBlcmZvcm1lZDogDQorSGlzIG9mZmVyaW5nIHNvb24gcHJvcGl0aW91cyBmaXJlIGZyb20gSGVhdmVuIA0KK0NvbnN1bWVkIHdpdGggbmltYmxlIGdsYW5jZSwgYW5kIGdyYXRlZnVsIHN0ZWFtOyANCitUaGUgb3RoZXIncyBub3QsIGZvciBoaXMgd2FzIG5vdCBzaW5jZXJlOyANCitXaGVyZWF0IGhlIGlubHkgcmFnZWQsIGFuZCwgYXMgdGhleSB0YWxrZWQsIA0KK1Ntb3RlIGhpbSBpbnRvIHRoZSBtaWRyaWZmIHdpdGggYSBzdG9uZSANCitUaGF0IGJlYXQgb3V0IGxpZmU7IGhlIGZlbGw7YW5kLCBkZWFkbHkgcGFsZSwgDQorR3JvYW5lZCBvdXQgaGlzIHNvdWwgd2l0aCBndXNoaW5nIGJsb29kIGVmZnVzZWQuIA0KK011Y2ggYXQgdGhhdCBzaWdodCB3YXMgQWRhbSBpbiBoaXMgaGVhcnQgDQorRGlzbWF5ZWQsIGFuZCB0aHVzIGluIGhhc3RlIHRvIHRoZSBBbmdlbCBjcmllZC4gDQorTyBUZWFjaGVyLCBzb21lIGdyZWF0IG1pc2NoaWVmIGhhdGggYmVmYWxsZW4gDQorVG8gdGhhdCBtZWVrIG1hbiwgd2hvIHdlbGwgaGFkIHNhY3JpZmljZWQ7IA0KK0lzIHBpZXR5IHRodXMgYW5kIHB1cmUgZGV2b3Rpb24gcGFpZD8gDQorVG8gd2hvbSBNaWNoYWVsIHRodXMsIGhlIGFsc28gbW92ZWQsIHJlcGxpZWQuIA0KK1RoZXNlIHR3byBhcmUgYnJldGhyZW4sIEFkYW0sIGFuZCB0byBjb21lIA0KK091dCBvZiB0aHkgbG9pbnM7IHRoZSB1bmp1c3QgdGhlIGp1c3QgaGF0aCBzbGFpbiwgDQorRm9yIGVudnkgdGhhdCBoaXMgYnJvdGhlcidzIG9mZmVyaW5nIGZvdW5kIA0KK0Zyb20gSGVhdmVuIGFjY2VwdGFuY2U7IGJ1dCB0aGUgYmxvb2R5IGZhY3QgDQorV2lsbCBiZSBhdmVuZ2VkOyBhbmQgdGhlIG90aGVyJ3MgZmFpdGgsIGFwcHJvdmVkLCANCitMb3NlIG5vIHJld2FyZDsgdGhvdWdoIGhlcmUgdGhvdSBzZWUgaGltIGRpZSwgDQorUm9sbGluZyBpbiBkdXN0IGFuZCBnb3JlLiAgVG8gd2hpY2ggb3VyIHNpcmUuIA0KK0FsYXMhIGJvdGggZm9yIHRoZSBkZWVkLCBhbmQgZm9yIHRoZSBjYXVzZSEgDQorQnV0IGhhdmUgSSBub3cgc2VlbiBEZWF0aD8gIElzIHRoaXMgdGhlIHdheSANCitJIG11c3QgcmV0dXJuIHRvIG5hdGl2ZSBkdXN0PyAgTyBzaWdodCANCitPZiB0ZXJyb3VyLCBmb3VsIGFuZCB1Z2x5IHRvIGJlaG9sZCwgDQorSG9ycmlkIHRvIHRoaW5rLCBob3cgaG9ycmlibGUgdG8gZmVlbCEgDQorVG8gd2hvbSB0aHVzIE1pY2hhZWwuICBEZWF0aCB0aG91IGhhc3Qgc2VlbiANCitJbiBoaXMgZmlyc3Qgc2hhcGUgb24gTWFuOyBidXQgbWFueSBzaGFwZXMgDQorT2YgRGVhdGgsIGFuZCBtYW55IGFyZSB0aGUgd2F5cyB0aGF0IGxlYWQgDQorVG8gaGlzIGdyaW0gY2F2ZSwgYWxsIGRpc21hbDsgeWV0IHRvIHNlbnNlIA0KK01vcmUgdGVycmlibGUgYXQgdGhlIGVudHJhbmNlLCB0aGFuIHdpdGhpbi4gDQorU29tZSwgYXMgdGhvdSBzYXdlc3QsIGJ5IHZpb2xlbnQgc3Ryb2tlIHNoYWxsIGRpZTsgDQorQnkgZmlyZSwgZmxvb2QsIGZhbWluZSwgYnkgaW50ZW1wZXJhbmNlIG1vcmUgDQorSW4gbWVhdHMgYW5kIGRyaW5rcywgd2hpY2ggb24gdGhlIGVhcnRoIHNoYWxsIGJyaW5nIA0KK0Rpc2Vhc2VzIGRpcmUsIG9mIHdoaWNoIGEgbW9uc3Ryb3VzIGNyZXcgDQorQmVmb3JlIHRoZWUgc2hhbGwgYXBwZWFyOyB0aGF0IHRob3UgbWF5ZXN0IGtub3cgDQorV2hhdCBtaXNlcnkgdGhlIGluYWJzdGluZW5jZSBvZiBFdmUgDQorU2hhbGwgYnJpbmcgb24gTWVuLiAgSW1tZWRpYXRlbHkgYSBwbGFjZSANCitCZWZvcmUgaGlzIGV5ZXMgYXBwZWFyZWQsIHNhZCwgbm9pc29tZSwgZGFyazsgDQorQSBsYXphci1ob3VzZSBpdCBzZWVtZWQ7IHdoZXJlaW4gd2VyZSBsYWlkIA0KK051bWJlcnMgb2YgYWxsIGRpc2Vhc2VkOyBhbGwgbWFsYWRpZXMgDQorT2YgZ2hhc3RseSBzcGFzbSwgb3IgcmFja2luZyB0b3J0dXJlLCBxdWFsbXMgDQorT2YgaGVhcnQtc2ljayBhZ29ueSwgYWxsIGZldmVyb3VzIGtpbmRzLCANCitDb252dWxzaW9ucywgZXBpbGVwc2llcywgZmllcmNlIGNhdGFycmhzLCANCitJbnRlc3RpbmUgc3RvbmUgYW5kIHVsY2VyLCBjb2xpY2stcGFuZ3MsIA0KK0RlbW9uaWFjayBwaHJlbnp5LCBtb2FwaW5nIG1lbGFuY2hvbHksIA0KK0FuZCBtb29uLXN0cnVjayBtYWRuZXNzLCBwaW5pbmcgYXRyb3BoeSwgDQorTWFyYXNtdXMsIGFuZCB3aWRlLXdhc3RpbmcgcGVzdGlsZW5jZSwgDQorRHJvcHNpZXMsIGFuZCBhc3RobWFzLCBhbmQgam9pbnQtcmFja2luZyByaGV1bXMuIA0KK0RpcmUgd2FzIHRoZSB0b3NzaW5nLCBkZWVwIHRoZSBncm9hbnM7IERlc3BhaXIgDQorVGVuZGVkIHRoZSBzaWNrIGJ1c2llc3QgZnJvbSBjb3VjaCB0byBjb3VjaDsgDQorQW5kIG92ZXIgdGhlbSB0cml1bXBoYW50IERlYXRoIGhpcyBkYXJ0IA0KK1Nob29rLCBidXQgZGVsYXllZCB0byBzdHJpa2UsIHRob3VnaCBvZnQgaW52b2tlZCANCitXaXRoIHZvd3MsIGFzIHRoZWlyIGNoaWVmIGdvb2QsIGFuZCBmaW5hbCBob3BlLiANCitTaWdodCBzbyBkZWZvcm0gd2hhdCBoZWFydCBvZiByb2NrIGNvdWxkIGxvbmcgDQorRHJ5LWV5ZWQgYmVob2xkPyAgQWRhbSBjb3VsZCBub3QsIGJ1dCB3ZXB0LCANCitUaG91Z2ggbm90IG9mIHdvbWFuIGJvcm47IGNvbXBhc3Npb24gcXVlbGxlZCANCitIaXMgYmVzdCBvZiBtYW4sIGFuZCBnYXZlIGhpbSB1cCB0byB0ZWFycyANCitBIHNwYWNlLCB0aWxsIGZpcm1lciB0aG91Z2h0cyByZXN0cmFpbmVkIGV4Y2VzczsgDQorQW5kLCBzY2FyY2UgcmVjb3ZlcmluZyB3b3JkcywgaGlzIHBsYWludCByZW5ld2VkLiANCitPIG1pc2VyYWJsZSBtYW5raW5kLCB0byB3aGF0IGZhbGwgDQorRGVncmFkZWQsIHRvIHdoYXQgd3JldGNoZWQgc3RhdGUgcmVzZXJ2ZWQhIA0KK0JldHRlciBlbmQgaGVyZSB1bmJvcm4uICBXaHkgaXMgbGlmZSBnaXZlbiANCitUbyBiZSB0aHVzIHdyZXN0ZWQgZnJvbSB1cz8gcmF0aGVyLCB3aHkgDQorT2J0cnVkZWQgb24gdXMgdGh1cz8gd2hvLCBpZiB3ZSBrbmV3IA0KK1doYXQgd2UgcmVjZWl2ZSwgd291bGQgZWl0aGVyIG5vIGFjY2VwdCANCitMaWZlIG9mZmVyZWQsIG9yIHNvb24gYmVnIHRvIGxheSBpdCBkb3duOyANCitHbGFkIHRvIGJlIHNvIGRpc21pc3NlZCBpbiBwZWFjZS4gIENhbiB0aHVzIA0KK1RoZSBpbWFnZSBvZiBHb2QgaW4gTWFuLCBjcmVhdGVkIG9uY2UgDQorU28gZ29vZGx5IGFuZCBlcmVjdCwgdGhvdWdoIGZhdWx0eSBzaW5jZSwgDQorVG8gc3VjaCB1bnNpZ2h0bHkgc3VmZmVyaW5ncyBiZSBkZWJhc2VkIA0KK1VuZGVyIGluaHVtYW4gcGFpbnM/ICBXaHkgc2hvdWxkIG5vdCBNYW4sIA0KK1JldGFpbmluZyBzdGlsbCBkaXZpbmUgc2ltaWxpdHVkZSANCitJbiBwYXJ0LCBmcm9tIHN1Y2ggZGVmb3JtaXRpZXMgYmUgZnJlZSwgDQorQW5kLCBmb3IgaGlzIE1ha2VyJ3MgaW1hZ2Ugc2FrZSwgZXhlbXB0PyANCitUaGVpciBNYWtlcidzIGltYWdlLCBhbnN3ZXJlZCBNaWNoYWVsLCB0aGVuIA0KK0ZvcnNvb2sgdGhlbSwgd2hlbiB0aGVtc2VsdmVzIHRoZXkgdmlsaWZpZWQgDQorVG8gc2VydmUgdW5nb3Zlcm5lZCBBcHBldGl0ZTsgYW5kIHRvb2sgDQorSGlzIGltYWdlIHdob20gdGhleSBzZXJ2ZWQsIGEgYnJ1dGlzaCB2aWNlLCANCitJbmR1Y3RpdmUgbWFpbmx5IHRvIHRoZSBzaW4gb2YgRXZlLiANCitUaGVyZWZvcmUgc28gYWJqZWN0IGlzIHRoZWlyIHB1bmlzaG1lbnQsIA0KK0Rpc2ZpZ3VyaW5nIG5vdCBHb2QncyBsaWtlbmVzcywgYnV0IHRoZWlyIG93bjsgDQorT3IgaWYgaGlzIGxpa2VuZXNzLCBieSB0aGVtc2VsdmVzIGRlZmFjZWQ7IA0KK1doaWxlIHRoZXkgcGVydmVydCBwdXJlIE5hdHVyZSdzIGhlYWx0aGZ1bCBydWxlcyANCitUbyBsb2F0aHNvbWUgc2lja25lc3M7IHdvcnRoaWx5LCBzaW5jZSB0aGV5IA0KK0dvZCdzIGltYWdlIGRpZCBub3QgcmV2ZXJlbmNlIGluIHRoZW1zZWx2ZXMuIA0KK0kgeWllbGQgaXQganVzdCwgc2FpZCBBZGFtLCBhbmQgc3VibWl0LiANCitCdXQgaXMgdGhlcmUgeWV0IG5vIG90aGVyIHdheSwgYmVzaWRlcyANCitUaGVzZSBwYWluZnVsIHBhc3NhZ2VzLCBob3cgd2UgbWF5IGNvbWUgDQorVG8gZGVhdGgsIGFuZCBtaXggd2l0aCBvdXIgY29ubmF0dXJhbCBkdXN0PyANCitUaGVyZSBpcywgc2FpZCBNaWNoYWVsLCBpZiB0aG91IHdlbGwgb2JzZXJ2ZSANCitUaGUgcnVsZSBvZiBOb3QgdG9vIG11Y2g7IGJ5IHRlbXBlcmFuY2UgdGF1Z2h0LCANCitJbiB3aGF0IHRob3UgZWF0ZXN0IGFuZCBkcmlua2VzdDsgc2Vla2luZyBmcm9tIHRoZW5jZSANCitEdWUgbm91cmlzaG1lbnQsIG5vdCBnbHV0dG9ub3VzIGRlbGlnaHQsIA0KK1RpbGwgbWFueSB5ZWFycyBvdmVyIHRoeSBoZWFkIHJldHVybjogDQorU28gbWF5ZXN0IHRob3UgbGl2ZTsgdGlsbCwgbGlrZSByaXBlIGZydWl0LCB0aG91IGRyb3AgDQorSW50byB0aHkgbW90aGVyJ3MgbGFwOyBvciBiZSB3aXRoIGVhc2UgDQorR2F0aGVyZWQsIG5vciBoYXJzaGx5IHBsdWNrZWQ7IGZvciBkZWF0aCBtYXR1cmU6IA0KK1RoaXMgaXMgT2xkIEFnZTsgYnV0IHRoZW4sIHRob3UgbXVzdCBvdXRsaXZlIA0KK1RoeSB5b3V0aCwgdGh5IHN0cmVuZ3RoLCB0aHkgYmVhdXR5OyB3aGljaCB3aWxsIGNoYW5nZSANCitUbyB3aXRoZXJlZCwgd2VhaywgYW5kIGdyYXk7IHRoeSBzZW5zZXMgdGhlbiwgDQorT2J0dXNlLCBhbGwgdGFzdGUgb2YgcGxlYXN1cmUgbXVzdCBmb3JlZ28sIA0KK1RvIHdoYXQgdGhvdSBoYXN0OyBhbmQsIGZvciB0aGUgYWlyIG9mIHlvdXRoLCANCitIb3BlZnVsIGFuZCBjaGVlcmZ1bCwgaW4gdGh5IGJsb29kIHdpbGwgcmVpZ24gDQorQSBtZWxhbmNob2x5IGRhbXAgb2YgY29sZCBhbmQgZHJ5IA0KK1RvIHdlaWdoIHRoeSBzcGlyaXRzIGRvd24sIGFuZCBsYXN0IGNvbnN1bWUgDQorVGhlIGJhbG0gb2YgbGlmZS4gIFRvIHdob20gb3VyIGFuY2VzdG9yLiANCitIZW5jZWZvcnRoIEkgZmx5IG5vdCBkZWF0aCwgbm9yIHdvdWxkIHByb2xvbmcgDQorTGlmZSBtdWNoOyBiZW50IHJhdGhlciwgaG93IEkgbWF5IGJlIHF1aXQsIA0KK0ZhaXJlc3QgYW5kIGVhc2llc3QsIG9mIHRoaXMgY3VtYnJvdXMgY2hhcmdlOyANCitXaGljaCBJIG11c3Qga2VlcCB0aWxsIG15IGFwcG9pbnRlZCBkYXkgDQorT2YgcmVuZGVyaW5nIHVwLCBhbmQgcGF0aWVudGx5IGF0dGVuZCANCitNeSBkaXNzb2x1dGlvbi4gIE1pY2hhZWwgcmVwbGllZC4gDQorTm9yIGxvdmUgdGh5IGxpZmUsIG5vciBoYXRlOyBidXQgd2hhdCB0aG91IGxpdmVzdCANCitMaXZlIHdlbGw7IGhvdyBsb25nLCBvciBzaG9ydCwgcGVybWl0IHRvIEhlYXZlbjogDQorQW5kIG5vdyBwcmVwYXJlIHRoZWUgZm9yIGFub3RoZXIgc2lnaHQuIA0KK0hlIGxvb2tlZCwgYW5kIHNhdyBhIHNwYWNpb3VzIHBsYWluLCB3aGVyZW9uIA0KK1dlcmUgdGVudHMgb2YgdmFyaW91cyBodWU7IGJ5IHNvbWUsIHdlcmUgaGVyZHMgDQorT2YgY2F0dGxlIGdyYXppbmc7IG90aGVycywgd2hlbmNlIHRoZSBzb3VuZCANCitPZiBpbnN0cnVtZW50cywgdGhhdCBtYWRlIG1lbG9kaW91cyBjaGltZSwgDQorV2FzIGhlYXJkLCBvZiBoYXJwIGFuZCBvcmdhbjsgYW5kLCB3aG8gbW92ZWQgDQorVGhlaXIgc3RvcHMgYW5kIGNob3Jkcywgd2FzIHNlZW47IGhpcyB2b2xhbnQgdG91Y2gsIA0KK0luc3RpbmN0IHRocm91Z2ggYWxsIHByb3BvcnRpb25zLCBsb3cgYW5kIGhpZ2gsIA0KK0ZsZWQgYW5kIHB1cnN1ZWQgdHJhbnN2ZXJzZSB0aGUgcmVzb25hbnQgZnVndWUuIA0KK0luIG90aGVyIHBhcnQgc3Rvb2Qgb25lIHdobywgYXQgdGhlIGZvcmdlIA0KK0xhYm91cmluZywgdHdvIG1hc3N5IGNsb2RzIG9mIGlyb24gYW5kIGJyYXNzIA0KK0hhZCBtZWx0ZWQsICh3aGV0aGVyIGZvdW5kIHdoZXJlIGNhc3VhbCBmaXJlIA0KK0hhZCB3YXN0ZWQgd29vZHMgb24gbW91bnRhaW4gb3IgaW4gdmFsZSwgDQorRG93biB0byB0aGUgdmVpbnMgb2YgZWFydGg7IHRoZW5jZSBnbGlkaW5nIGhvdCANCitUbyBzb21lIGNhdmUncyBtb3V0aDsgb3Igd2hldGhlciB3YXNoZWQgYnkgc3RyZWFtIA0KK0Zyb20gdW5kZXJncm91bmQ7KSB0aGUgbGlxdWlkIG9yZSBoZSBkcmFpbmVkIA0KK0ludG8gZml0IG1vdWxkcyBwcmVwYXJlZDsgZnJvbSB3aGljaCBoZSBmb3JtZWQgDQorRmlyc3QgaGlzIG93biB0b29sczsgdGhlbiwgd2hhdCBtaWdodCBlbHNlIGJlIHdyb3VnaHQgDQorRnVzaWwgb3IgZ3JhdmVuIGluIG1ldGFsLiAgQWZ0ZXIgdGhlc2UsIA0KK0J1dCBvbiB0aGUgaGl0aGVyIHNpZGUsIGEgZGlmZmVyZW50IHNvcnQgDQorRnJvbSB0aGUgaGlnaCBuZWlnaGJvdXJpbmcgaGlsbHMsIHdoaWNoIHdhcyB0aGVpciBzZWF0LCANCitEb3duIHRvIHRoZSBwbGFpbiBkZXNjZW5kZWQ7IGJ5IHRoZWlyIGd1aXNlIA0KK0p1c3QgbWVuIHRoZXkgc2VlbWVkLCBhbmQgYWxsIHRoZWlyIHN0dWR5IGJlbnQgDQorVG8gd29yc2hpcCBHb2QgYXJpZ2h0LCBhbmQga25vdyBoaXMgd29ya3MgDQorTm90IGhpZDsgbm9yIHRob3NlIHRoaW5ncyBsYXN0LCB3aGljaCBtaWdodCBwcmVzZXJ2ZSANCitGcmVlZG9tIGFuZCBwZWFjZSB0byBNZW47IHRoZXkgb24gdGhlIHBsYWluIA0KK0xvbmcgaGFkIG5vdCB3YWxrZWQsIHdoZW4gZnJvbSB0aGUgdGVudHMsIGJlaG9sZCEgDQorQSBiZXZ5IG9mIGZhaXIgd29tZW4sIHJpY2hseSBnYXkgDQorSW4gZ2VtcyBhbmQgd2FudG9uIGRyZXNzOyB0byB0aGUgaGFycCB0aGV5IHN1bmcgDQorU29mdCBhbW9yb3VzIGRpdHRpZXMsIGFuZCBpbiBkYW5jZSBjYW1lIG9uOiANCitUaGUgbWVuLCB0aG91Z2ggZ3JhdmUsIGV5ZWQgdGhlbTsgYW5kIGxldCB0aGVpciBleWVzIA0KK1JvdmUgd2l0aG91dCByZWluOyB0aWxsLCBpbiB0aGUgYW1vcm91cyBuZXQgDQorRmFzdCBjYXVnaHQsIHRoZXkgbGlrZWQ7IGFuZCBlYWNoIGhpcyBsaWtpbmcgY2hvc2U7IA0KK0FuZCBub3cgb2YgbG92ZSB0aGV5IHRyZWF0LCB0aWxsIHRoZSBldmVuaW5nLXN0YXIsIA0KK0xvdmUncyBoYXJiaW5nZXIsIGFwcGVhcmVkOyB0aGVuLCBhbGwgaW4gaGVhdCANCitUaGV5IGxpZ2h0IHRoZSBudXB0aWFsIHRvcmNoLCBhbmQgYmlkIGludm9rZSANCitIeW1lbiwgdGhlbiBmaXJzdCB0byBtYXJyaWFnZSByaXRlcyBpbnZva2VkOiANCitXaXRoIGZlYXN0IGFuZCBtdXNpY2sgYWxsIHRoZSB0ZW50cyByZXNvdW5kLiANCitTdWNoIGhhcHB5IGludGVydmlldywgYW5kIGZhaXIgZXZlbnQgDQorT2YgbG92ZSBhbmQgeW91dGggbm90IGxvc3QsIHNvbmdzLCBnYXJsYW5kcywgZmxvd2VycywgDQorQW5kIGNoYXJtaW5nIHN5bXBob25pZXMsIGF0dGFjaGVkIHRoZSBoZWFydCANCitPZiBBZGFtLCBzb29uIGluY2xpbmVkIHRvIGFkbWl0IGRlbGlnaHQsIA0KK1RoZSBiZW50IG9mIG5hdHVyZTsgd2hpY2ggaGUgdGh1cyBleHByZXNzZWQuIA0KK1RydWUgb3BlbmVyIG9mIG1pbmUgZXllcywgcHJpbWUgQW5nZWwgYmxlc3Q7IA0KK011Y2ggYmV0dGVyIHNlZW1zIHRoaXMgdmlzaW9uLCBhbmQgbW9yZSBob3BlIA0KK09mIHBlYWNlZnVsIGRheXMgcG9ydGVuZHMsIHRoYW4gdGhvc2UgdHdvIHBhc3Q7IA0KK1Rob3NlIHdlcmUgb2YgaGF0ZSBhbmQgZGVhdGgsIG9yIHBhaW4gbXVjaCB3b3JzZTsgDQorSGVyZSBOYXR1cmUgc2VlbXMgZnVsZmlsbGVkIGluIGFsbCBoZXIgZW5kcy4gDQorVG8gd2hvbSB0aHVzIE1pY2hhZWwuICBKdWRnZSBub3Qgd2hhdCBpcyBiZXN0IA0KK0J5IHBsZWFzdXJlLCB0aG91Z2ggdG8gbmF0dXJlIHNlZW1pbmcgbWVldDsgDQorQ3JlYXRlZCwgYXMgdGhvdSBhcnQsIHRvIG5vYmxlciBlbmQgDQorSG9seSBhbmQgcHVyZSwgY29uZm9ybWl0eSBkaXZpbmUuIA0KK1Rob3NlIHRlbnRzIHRob3Ugc2F3ZXN0IHNvIHBsZWFzYW50LCB3ZXJlIHRoZSB0ZW50cyANCitPZiB3aWNrZWRuZXNzLCB3aGVyZWluIHNoYWxsIGR3ZWxsIGhpcyByYWNlIA0KK1dobyBzbGV3IGhpcyBicm90aGVyOyBzdHVkaW91cyB0aGV5IGFwcGVhciANCitPZiBhcnRzIHRoYXQgcG9saXNoIGxpZmUsIGludmVudGVycyByYXJlOyANCitVbm1pbmRmdWwgb2YgdGhlaXIgTWFrZXIsIHRob3VnaCBoaXMgU3Bpcml0IA0KK1RhdWdodCB0aGVtOyBidXQgdGhleSBoaXMgZ2lmdHMgYWNrbm93bGVkZ2VkIG5vbmUuIA0KK1lldCB0aGV5IGEgYmVhdXRlb3VzIG9mZnNwcmluZyBzaGFsbCBiZWdldDsgDQorRm9yIHRoYXQgZmFpciBmZW1hbGUgdHJvb3AgdGhvdSBzYXdlc3QsIHRoYXQgc2VlbWVkIA0KK09mIEdvZGRlc3Nlcywgc28gYmxpdGhlLCBzbyBzbW9vdGgsIHNvIGdheSwgDQorWWV0IGVtcHR5IG9mIGFsbCBnb29kIHdoZXJlaW4gY29uc2lzdHMgDQorV29tYW4ncyBkb21lc3RpY2sgaG9ub3VyIGFuZCBjaGllZiBwcmFpc2U7IA0KK0JyZWQgb25seSBhbmQgY29tcGxldGVkIHRvIHRoZSB0YXN0ZSANCitPZiBsdXN0ZnVsIGFwcGV0ZW5jZSwgdG8gc2luZywgdG8gZGFuY2UsIA0KK1RvIGRyZXNzLCBhbmQgdHJvbGwgdGhlIHRvbmd1ZSwgYW5kIHJvbGwgdGhlIGV5ZTogDQorVG8gdGhlc2UgdGhhdCBzb2JlciByYWNlIG9mIG1lbiwgd2hvc2UgbGl2ZXMgDQorUmVsaWdpb3VzIHRpdGxlZCB0aGVtIHRoZSBzb25zIG9mIEdvZCwgDQorU2hhbGwgeWllbGQgdXAgYWxsIHRoZWlyIHZpcnR1ZSwgYWxsIHRoZWlyIGZhbWUgDQorSWdub2JseSwgdG8gdGhlIHRyYWlucyBhbmQgdG8gdGhlIHNtaWxlcyANCitPZiB0aGVzZSBmYWlyIGF0aGVpc3RzOyBhbmQgbm93IHN3aW0gaW4gam95LCANCitFcmVsb25nIHRvIHN3aW0gYXQgbGFyZ2U7IGFuZCBsYXVnaCwgZm9yIHdoaWNoIA0KK1RoZSB3b3JsZCBlcmVsb25nIGEgd29ybGQgb2YgdGVhcnMgbXVzdCB3ZWVwLiANCitUbyB3aG9tIHRodXMgQWRhbSwgb2Ygc2hvcnQgam95IGJlcmVmdC4gDQorTyBwaXR5IGFuZCBzaGFtZSwgdGhhdCB0aGV5LCB3aG8gdG8gbGl2ZSB3ZWxsIA0KK0VudGVyZWQgc28gZmFpciwgc2hvdWxkIHR1cm4gYXNpZGUgdG8gdHJlYWQgDQorUGF0aHMgaW5kaXJlY3QsIG9yIGluIHRoZSBtaWQgd2F5IGZhaW50ISANCitCdXQgc3RpbGwgSSBzZWUgdGhlIHRlbm91ciBvZiBNYW4ncyB3b2UgDQorSG9sZHMgb24gdGhlIHNhbWUsIGZyb20gV29tYW4gdG8gYmVnaW4uIA0KK0Zyb20gTWFuJ3MgZWZmZW1pbmF0ZSBzbGFja25lc3MgaXQgYmVnaW5zLCANCitTYWlkIHRoZSBBbmdlbCwgd2hvIHNob3VsZCBiZXR0ZXIgaG9sZCBoaXMgcGxhY2UgDQorQnkgd2lzZG9tLCBhbmQgc3VwZXJpb3VyIGdpZnRzIHJlY2VpdmVkLiANCitCdXQgbm93IHByZXBhcmUgdGhlZSBmb3IgYW5vdGhlciBzY2VuZS4gDQorSGUgbG9va2VkLCBhbmQgc2F3IHdpZGUgdGVycml0b3J5IHNwcmVhZCANCitCZWZvcmUgaGltLCB0b3ducywgYW5kIHJ1cmFsIHdvcmtzIGJldHdlZW47IA0KK0NpdGllcyBvZiBtZW4gd2l0aCBsb2Z0eSBnYXRlcyBhbmQgdG93ZXJzLCANCitDb25jb3Vyc2UgaW4gYXJtcywgZmllcmNlIGZhY2VzIHRocmVhdGVuaW5nIHdhciwgDQorR2lhbnRzIG9mIG1pZ2h0eSBib25lIGFuZCBib2xkIGVtcHJpc2U7IA0KK1BhcnQgd2llbGQgdGhlaXIgYXJtcywgcGFydCBjdXJiIHRoZSBmb2FtaW5nIHN0ZWVkLCANCitTaW5nbGUgb3IgaW4gYXJyYXkgb2YgYmF0dGxlIHJhbmdlZCANCitCb3RoIGhvcnNlIGFuZCBmb290LCBub3IgaWRseSBtdXN0ZXJpbmcgc3Rvb2Q7IA0KK09uZSB3YXkgYSBiYW5kIHNlbGVjdCBmcm9tIGZvcmFnZSBkcml2ZXMgDQorQSBoZXJkIG9mIGJlZXZlcywgZmFpciBveGVuIGFuZCBmYWlyIGtpbmUsIA0KK0Zyb20gYSBmYXQgbWVhZG93IGdyb3VuZDsgb3IgZmxlZWN5IGZsb2NrLCANCitFd2VzIGFuZCB0aGVpciBibGVhdGluZyBsYW1icyBvdmVyIHRoZSBwbGFpbiwgDQorVGhlaXIgYm9vdHk7IHNjYXJjZSB3aXRoIGxpZmUgdGhlIHNoZXBoZXJkcyBmbHksIA0KK0J1dCBjYWxsIGluIGFpZCwgd2hpY2ggbWFrZXMgYSBibG9vZHkgZnJheTsgDQorV2l0aCBjcnVlbCB0b3VybmFtZW50IHRoZSBzcXVhZHJvbnMgam9pbjsgDQorV2hlcmUgY2F0dGxlIHBhc3R1cmVkIGxhdGUsIG5vdyBzY2F0dGVyZWQgbGllcyANCitXaXRoIGNhcmNhc3NlcyBhbmQgYXJtcyB0aGUgZW5zYW5ndWluZWQgZmllbGQsIA0KK0Rlc2VydGVkOiAgT3RoZXJzIHRvIGEgY2l0eSBzdHJvbmcgDQorTGF5IHNpZWdlLCBlbmNhbXBlZDsgYnkgYmF0dGVyeSwgc2NhbGUsIGFuZCBtaW5lLCANCitBc3NhdWx0aW5nOyBvdGhlcnMgZnJvbSB0aGUgd2FsbCBkZWZlbmQgDQorV2l0aCBkYXJ0IGFuZCBqYXZlbGluLCBzdG9uZXMsIGFuZCBzdWxwaHVyb3VzIGZpcmU7IA0KK09uIGVhY2ggaGFuZCBzbGF1Z2h0ZXIsIGFuZCBnaWdhbnRpY2sgZGVlZHMuIA0KK0luIG90aGVyIHBhcnQgdGhlIHNjZXB0ZXJlZCBoZXJhbGRzIGNhbGwgDQorVG8gY291bmNpbCwgaW4gdGhlIGNpdHktZ2F0ZXM7IGFub24gDQorR3JheS1oZWFkZWQgbWVuIGFuZCBncmF2ZSwgd2l0aCB3YXJyaW91cnMgbWl4ZWQsIA0KK0Fzc2VtYmxlLCBhbmQgaGFyYW5ndWVzIGFyZSBoZWFyZDsgYnV0IHNvb24sIA0KK0luIGZhY3Rpb3VzIG9wcG9zaXRpb247IHRpbGwgYXQgbGFzdCwgDQorT2YgbWlkZGxlIGFnZSBvbmUgcmlzaW5nLCBlbWluZW50IA0KK0luIHdpc2UgZGVwb3J0LCBzcGFrZSBtdWNoIG9mIHJpZ2h0IGFuZCB3cm9uZywgDQorT2YganVzdGljZSwgb3IgcmVsaWdpb24sIHRydXRoLCBhbmQgcGVhY2UsIA0KK0FuZCBqdWRnZW1lbnQgZnJvbSBhYm92ZTogaGltIG9sZCBhbmQgeW91bmcgDQorRXhwbG9kZWQsIGFuZCBoYWQgc2VpemVkIHdpdGggdmlvbGVudCBoYW5kcywgDQorSGFkIG5vdCBhIGNsb3VkIGRlc2NlbmRpbmcgc25hdGNoZWQgaGltIHRoZW5jZSANCitVbnNlZW4gYW1pZCB0aGUgdGhyb25nOiBzbyB2aW9sZW5jZSANCitQcm9jZWVkZWQsIGFuZCBvcHByZXNzaW9uLCBhbmQgc3dvcmQtbGF3LCANCitUaHJvdWdoIGFsbCB0aGUgcGxhaW4sIGFuZCByZWZ1Z2Ugbm9uZSB3YXMgZm91bmQuIA0KK0FkYW0gd2FzIGFsbCBpbiB0ZWFycywgYW5kIHRvIGhpcyBndWlkZSANCitMYW1lbnRpbmcgdHVybmVkIGZ1bGwgc2FkOyBPIXdoYXQgYXJlIHRoZXNlLCANCitEZWF0aCdzIG1pbmlzdGVycywgbm90IG1lbj8gd2hvIHRodXMgZGVhbCBkZWF0aCANCitJbmh1bWFubHkgdG8gbWVuLCBhbmQgbXVsdGlwbHkgDQorVGVuIHRob3VzYW5kZm9sZCB0aGUgc2luIG9mIGhpbSB3aG8gc2xldyANCitIaXMgYnJvdGhlcjogZm9yIG9mIHdob20gc3VjaCBtYXNzYWNyZSANCitNYWtlIHRoZXksIGJ1dCBvZiB0aGVpciBicmV0aHJlbjsgbWVuIG9mIG1lbiANCitCdXQgd2hvIHdhcyB0aGF0IGp1c3QgbWFuLCB3aG9tIGhhZCBub3QgSGVhdmVuIA0KK1Jlc2N1ZWQsIGhhZCBpbiBoaXMgcmlnaHRlb3VzbmVzcyBiZWVuIGxvc3Q/IA0KK1RvIHdob20gdGh1cyBNaWNoYWVsLiAgVGhlc2UgYXJlIHRoZSBwcm9kdWN0IA0KK09mIHRob3NlIGlsbC1tYXRlZCBtYXJyaWFnZXMgdGhvdSBzYXdlc3Q7IA0KK1doZXJlIGdvb2Qgd2l0aCBiYWQgd2VyZSBtYXRjaGVkLCB3aG8gb2YgdGhlbXNlbHZlcyANCitBYmhvciB0byBqb2luOyBhbmQsIGJ5IGltcHJ1ZGVuY2UgbWl4ZWQsIA0KK1Byb2R1Y2UgcHJvZGlnaW91cyBiaXJ0aHMgb2YgYm9keSBvciBtaW5kLiANCitTdWNoIHdlcmUgdGhlc2UgZ2lhbnRzLCBtZW4gb2YgaGlnaCByZW5vd247IA0KK0ZvciBpbiB0aG9zZSBkYXlzIG1pZ2h0IG9ubHkgc2hhbGwgYmUgYWRtaXJlZCwgDQorQW5kIHZhbG91ciBhbmQgaGVyb2ljayB2aXJ0dWUgY2FsbGVkOyANCitUbyBvdmVyY29tZSBpbiBiYXR0bGUsIGFuZCBzdWJkdWUgDQorTmF0aW9ucywgYW5kIGJyaW5nIGhvbWUgc3BvaWxzIHdpdGggaW5maW5pdGUgDQorTWFuLXNsYXVnaHRlciwgc2hhbGwgYmUgaGVsZCB0aGUgaGlnaGVzdCBwaXRjaCANCitPZiBodW1hbiBnbG9yeTsgYW5kIGZvciBnbG9yeSBkb25lIA0KK09mIHRyaXVtcGgsIHRvIGJlIHN0eWxlZCBncmVhdCBjb25xdWVyb3VycyANCitQYXRyb25zIG9mIG1hbmtpbmQsIEdvZHMsIGFuZCBzb25zIG9mIEdvZHM7IA0KK0Rlc3Ryb3llcnMgcmlnaHRsaWVyIGNhbGxlZCwgYW5kIHBsYWd1ZXMgb2YgbWVuLiANCitUaHVzIGZhbWUgc2hhbGwgYmUgYWNoaWV2ZWQsIHJlbm93biBvbiBlYXJ0aDsgDQorQW5kIHdoYXQgbW9zdCBtZXJpdHMgZmFtZSwgaW4gc2lsZW5jZSBoaWQuIA0KK0J1dCBoZSwgdGhlIHNldmVudGggZnJvbSB0aGVlLCB3aG9tIHRob3UgYmVoZWxkc3QgDQorVGhlIG9ubHkgcmlnaHRlb3VzIGluIGEgd29ybGQgcHJldmVyc2UsIA0KK0FuZCB0aGVyZWZvcmUgaGF0ZWQsIHRoZXJlZm9yZSBzbyBiZXNldCANCitXaXRoIGZvZXMsIGZvciBkYXJpbmcgc2luZ2xlIHRvIGJlIGp1c3QsIA0KK0FuZCB1dHRlciBvZGlvdXMgdHJ1dGgsIHRoYXQgR29kIHdvdWxkIGNvbWUgDQorVG8ganVkZ2UgdGhlbSB3aXRoIGhpcyBTYWludHM7IGhpbSB0aGUgTW9zdCBIaWdoIA0KK1JhcHQgaW4gYSBiYWxteSBjbG91ZCB3aXRoIHdpbmdlZCBzdGVlZHMgDQorRGlkLCBhcyB0aG91IHNhd2VzdCwgcmVjZWl2ZSwgdG8gd2FsayB3aXRoIEdvZCANCitIaWdoIGluIHNhbHZhdGlvbiBhbmQgdGhlIGNsaW1lcyBvZiBibGlzcywgDQorRXhlbXB0IGZyb20gZGVhdGg7IHRvIHNob3cgdGhlZSB3aGF0IHJld2FyZCANCitBd2FpdHMgdGhlIGdvb2Q7IHRoZSByZXN0IHdoYXQgcHVuaXNobWVudDsgDQorV2hpY2ggbm93IGRpcmVjdCB0aGluZSBleWVzIGFuZCBzb29uIGJlaG9sZC4gDQorSGUgbG9va2VkLCBhbmQgc2F3IHRoZSBmYWNlIG9mIHRoaW5ncyBxdWl0ZSBjaGFuZ2VkOyANCitUaGUgYnJhemVuIHRocm9hdCBvZiB3YXIgaGFkIGNlYXNlZCB0byByb2FyOyANCitBbGwgbm93IHdhcyB0dXJuZWQgdG8gam9sbGl0eSBhbmQgZ2FtZSwgDQorVG8gbHV4dXJ5IGFuZCByaW90LCBmZWFzdCBhbmQgZGFuY2U7IA0KK01hcnJ5aW5nIG9yIHByb3N0aXR1dGluZywgYXMgYmVmZWwsIA0KK1JhcGUgb3IgYWR1bHRlcnksIHdoZXJlIHBhc3NpbmcgZmFpciANCitBbGx1cmVkIHRoZW07IHRoZW5jZSBmcm9tIGN1cHMgdG8gY2l2aWwgYnJvaWxzLiANCitBdCBsZW5ndGggYSByZXZlcmVuZCBzaXJlIGFtb25nIHRoZW0gY2FtZSwgDQorQW5kIG9mIHRoZWlyIGRvaW5ncyBncmVhdCBkaXNsaWtlIGRlY2xhcmVkLCANCitBbmQgdGVzdGlmaWVkIGFnYWluc3QgdGhlaXIgd2F5czsgaGUgb2Z0IA0KK0ZyZXF1ZW50ZWQgdGhlaXIgYXNzZW1ibGllcywgd2hlcmVzbyBtZXQsIA0KK1RyaXVtcGhzIG9yIGZlc3RpdmFsczsgYW5kIHRvIHRoZW0gcHJlYWNoZWQgDQorQ29udmVyc2lvbiBhbmQgcmVwZW50YW5jZSwgYXMgdG8gc291bHMgDQorSW4gcHJpc29uLCB1bmRlciBqdWRnZW1lbnRzIGltbWluZW50OiANCitCdXQgYWxsIGluIHZhaW46IHdoaWNoIHdoZW4gaGUgc2F3LCBoZSBjZWFzZWQgDQorQ29udGVuZGluZywgYW5kIHJlbW92ZWQgaGlzIHRlbnRzIGZhciBvZmY7IA0KK1RoZW4sIGZyb20gdGhlIG1vdW50YWluIGhld2luZyB0aW1iZXIgdGFsbCwgDQorQmVnYW4gdG8gYnVpbGQgYSB2ZXNzZWwgb2YgaHVnZSBidWxrOyANCitNZWFzdXJlZCBieSBjdWJpdCwgbGVuZ3RoLCBhbmQgYnJlYWR0aCwgYW5kIGhpZ2h0aDsgDQorU21lYXJlZCByb3VuZCB3aXRoIHBpdGNoOyBhbmQgaW4gdGhlIHNpZGUgYSBkb29yIA0KK0NvbnRyaXZlZDsgYW5kIG9mIHByb3Zpc2lvbnMgbGFpZCBpbiBsYXJnZSwgDQorRm9yIG1hbiBhbmQgYmVhc3Q6IHdoZW4gbG8sIGEgd29uZGVyIHN0cmFuZ2UhIA0KK09mIGV2ZXJ5IGJlYXN0LCBhbmQgYmlyZCwgYW5kIGluc2VjdCBzbWFsbCwgDQorQ2FtZSBzZXZlbnMsIGFuZCBwYWlyczsgYW5kIGVudGVyZWQgaW4gYXMgdGF1Z2h0IA0KK1RoZWlyIG9yZGVyOiBsYXN0IHRoZSBzaXJlIGFuZCBoaXMgdGhyZWUgc29ucywgDQorV2l0aCB0aGVpciBmb3VyIHdpdmVzOyBhbmQgR29kIG1hZGUgZmFzdCB0aGUgZG9vci4gDQorTWVhbiB3aGlsZSB0aGUgc291dGgtd2luZCByb3NlLCBhbmQsIHdpdGggYmxhY2sgd2luZ3MgDQorV2lkZS1ob3ZlcmluZywgYWxsIHRoZSBjbG91ZHMgdG9nZXRoZXIgZHJvdmUgDQorRnJvbSB1bmRlciBIZWF2ZW47IHRoZSBoaWxscyB0byB0aGVpciBzdXBwbHkgDQorVmFwb3VyLCBhbmQgZXhoYWxhdGlvbiBkdXNrIGFuZCBtb2lzdCwgDQorU2VudCB1cCBhbWFpbjsgYW5kIG5vdyB0aGUgdGhpY2tlbmVkIHNreSANCitMaWtlIGEgZGFyayBjaWVsaW5nIHN0b29kOyBkb3duIHJ1c2hlZCB0aGUgcmFpbiANCitJbXBldHVvdXM7IGFuZCBjb250aW51ZWQsIHRpbGwgdGhlIGVhcnRoIA0KK05vIG1vcmUgd2FzIHNlZW46IHRoZSBmbG9hdGluZyB2ZXNzZWwgc3d1bSANCitVcGxpZnRlZCwgYW5kIHNlY3VyZSB3aXRoIGJlYWtlZCBwcm93IA0KK1JvZGUgdGlsdGluZyBvJ2VyIHRoZSB3YXZlczsgYWxsIGR3ZWxsaW5ncyBlbHNlIA0KK0Zsb29kIG92ZXJ3aGVsbWVkLCBhbmQgdGhlbSB3aXRoIGFsbCB0aGVpciBwb21wIA0KK0RlZXAgdW5kZXIgd2F0ZXIgcm9sbGVkOyBzZWEgY292ZXJlZCBzZWEsIA0KK1NlYSB3aXRob3V0IHNob3JlOyBhbmQgaW4gdGhlaXIgcGFsYWNlcywgDQorV2hlcmUgbHV4dXJ5IGxhdGUgcmVpZ25lZCwgc2VhLW1vbnN0ZXJzIHdoZWxwZWQgDQorQW5kIHN0YWJsZWQ7IG9mIG1hbmtpbmQsIHNvIG51bWVyb3VzIGxhdGUsIA0KK0FsbCBsZWZ0LCBpbiBvbmUgc21hbGwgYm90dG9tIHN3dW0gaW1iYXJrZWQuIA0KK0hvdyBkaWRzdCB0aG91IGdyaWV2ZSB0aGVuLCBBZGFtLCB0byBiZWhvbGQgDQorVGhlIGVuZCBvZiBhbGwgdGh5IG9mZnNwcmluZywgZW5kIHNvIHNhZCwgDQorRGVwb3B1bGF0aW9uISAgVGhlZSBhbm90aGVyIGZsb29kLCANCitPZiB0ZWFycyBhbmQgc29ycm93IGEgZmxvb2QsIHRoZWUgYWxzbyBkcm93bmVkLCANCitBbmQgc3VuayB0aGVlIGFzIHRoeSBzb25zOyB0aWxsLCBnZW50bHkgcmVhcmVkIA0KK0J5IHRoZSBBbmdlbCwgb24gdGh5IGZlZXQgdGhvdSBzdG9vZGVzdCBhdCBsYXN0LCANCitUaG91Z2ggY29tZm9ydGxlc3M7IGFzIHdoZW4gYSBmYXRoZXIgbW91cm5zIA0KK0hpcyBjaGlsZHJlbiwgYWxsIGluIHZpZXcgZGVzdHJveWVkIGF0IG9uY2U7IA0KK0FuZCBzY2FyY2UgdG8gdGhlIEFuZ2VsIHV0dGVyJ2RzdCB0aHVzIHRoeSBwbGFpbnQuIA0KK08gdmlzaW9ucyBpbGwgZm9yZXNlZW4hICBCZXR0ZXIgaGFkIEkgDQorTGl2ZWQgaWdub3JhbnQgb2YgZnV0dXJlISBzbyBoYWQgYm9ybmUgDQorTXkgcGFydCBvZiBldmlsIG9ubHksIGVhY2ggZGF5J3MgbG90IA0KK0Vub3VnaCB0byBiZWFyOyB0aG9zZSBub3csIHRoYXQgd2VyZSBkaXNwZW5zZWQgDQorVGhlIGJ1cmRlbiBvZiBtYW55IGFnZXMsIG9uIG1lIGxpZ2h0IA0KK0F0IG9uY2UsIGJ5IG15IGZvcmVrbm93bGVkZ2UgZ2FpbmluZyBiaXJ0aCANCitBYm9ydGl2ZSwgdG8gdG9ybWVudCBtZSBlcmUgdGhlaXIgYmVpbmcsIA0KK1dpdGggdGhvdWdodCB0aGF0IHRoZXkgbXVzdCBiZS4gIExldCBubyBtYW4gc2VlayANCitIZW5jZWZvcnRoIHRvIGJlIGZvcmV0b2xkLCB3aGF0IHNoYWxsIGJlZmFsbCANCitIaW0gb3IgaGlzIGNoaWxkcmVuOyBldmlsIGhlIG1heSBiZSBzdXJlLCANCitXaGljaCBuZWl0aGVyIGhpcyBmb3Jla25vd2luZyBjYW4gcHJldmVudDsgDQorQW5kIGhlIHRoZSBmdXR1cmUgZXZpbCBzaGFsbCBubyBsZXNzIA0KK0luIGFwcHJlaGVuc2lvbiB0aGFuIGluIHN1YnN0YW5jZSBmZWVsLCANCitHcmlldm91cyB0byBiZWFyOiBidXQgdGhhdCBjYXJlIG5vdyBpcyBwYXN0LCANCitNYW4gaXMgbm90IHdob20gdG8gd2FybjogdGhvc2UgZmV3IGVzY2FwZWQgDQorRmFtaW5lIGFuZCBhbmd1aXNoIHdpbGwgYXQgbGFzdCBjb25zdW1lLCANCitXYW5kZXJpbmcgdGhhdCB3YXRlcnkgZGVzYXJ0OiAgSSBoYWQgaG9wZSwgDQorV2hlbiB2aW9sZW5jZSB3YXMgY2Vhc2VkLCBhbmQgd2FyIG9uIGVhcnRoLCANCitBbGwgd291bGQgaGF2ZSB0aGVuIGdvbmUgd2VsbDsgcGVhY2Ugd291bGQgaGF2ZSBjcm93bmVkIA0KK1dpdGggbGVuZ3RoIG9mIGhhcHB5IGRheXMgdGhlIHJhY2Ugb2YgTWFuOyANCitCdXQgSSB3YXMgZmFyIGRlY2VpdmVkOyBmb3Igbm93IEkgc2VlIA0KK1BlYWNlIHRvIGNvcnJ1cHQgbm8gbGVzcyB0aGFuIHdhciB0byB3YXN0ZS4gDQorSG93IGNvbWVzIGl0IHRodXM/IHVuZm9sZCwgY2VsZXN0aWFsIEd1aWRlLCANCitBbmQgd2hldGhlciBoZXJlIHRoZSByYWNlIG9mIE1hbiB3aWxsIGVuZC4gDQorVG8gd2hvbSB0aHVzIE1pY2hhZWwuICBUaG9zZSwgd2hvbSBsYXN0IHRob3Ugc2F3ZXN0IA0KK0luIHRyaXVtcGggYW5kIGx1eHVyaW91cyB3ZWFsdGgsIGFyZSB0aGV5IA0KK0ZpcnN0IHNlZW4gaW4gYWN0cyBvZiBwcm93ZXNzIGVtaW5lbnQgDQorQW5kIGdyZWF0IGV4cGxvaXRzLCBidXQgb2YgdHJ1ZSB2aXJ0dWUgdm9pZDsgDQorV2hvLCBoYXZpbmcgc3BpbHQgbXVjaCBibG9vZCwgYW5kIGRvbmUgbXVjaCB3YXN0IA0KK1N1YmR1aW5nIG5hdGlvbnMsIGFuZCBhY2hpZXZlZCB0aGVyZWJ5IA0KK0ZhbWUgaW4gdGhlIHdvcmxkLCBoaWdoIHRpdGxlcywgYW5kIHJpY2ggcHJleTsgDQorU2hhbGwgY2hhbmdlIHRoZWlyIGNvdXJzZSB0byBwbGVhc3VyZSwgZWFzZSwgYW5kIHNsb3RoLCANCitTdXJmZWl0LCBhbmQgbHVzdDsgdGlsbCB3YW50b25uZXNzIGFuZCBwcmlkZSANCitSYWlzZSBvdXQgb2YgZnJpZW5kc2hpcCBob3N0aWxlIGRlZWRzIGluIHBlYWNlLiANCitUaGUgY29ucXVlcmVkIGFsc28sIGFuZCBlbnNsYXZlZCBieSB3YXIsIA0KK1NoYWxsLCB3aXRoIHRoZWlyIGZyZWVkb20gbG9zdCwgYWxsIHZpcnR1ZSBsb3NlIA0KK0FuZCBmZWFyIG9mIEdvZDsgZnJvbSB3aG9tIHRoZWlyIHBpZXR5IGZlaWduZWQgDQorSW4gc2hhcnAgY29udGVzdCBvZiBiYXR0bGUgZm91bmQgbm8gYWlkIA0KK0FnYWluc3QgaW52YWRlcnM7IHRoZXJlZm9yZSwgY29vbGVkIGluIHplYWwsIA0KK1RoZW5jZWZvcnRoIHNoYWxsIHByYWN0aWNlIGhvdyB0byBsaXZlIHNlY3VyZSwgDQorV29ybGRseSBvciBkaXNzb2x1dGUsIG9uIHdoYXQgdGhlaXIgbG9yZHMgDQorU2hhbGwgbGVhdmUgdGhlbSB0byBlbmpveTsgZm9yIHRoZSBlYXJ0aCBzaGFsbCBiZWFyIA0KK01vcmUgdGhhbiBlbm91Z2gsIHRoYXQgdGVtcGVyYW5jZSBtYXkgYmUgdHJpZWQ6IA0KK1NvIGFsbCBzaGFsbCB0dXJuIGRlZ2VuZXJhdGUsIGFsbCBkZXByYXZlZDsgDQorSnVzdGljZSBhbmQgdGVtcGVyYW5jZSwgdHJ1dGggYW5kIGZhaXRoLCBmb3Jnb3Q7IA0KK09uZSBtYW4gZXhjZXB0LCB0aGUgb25seSBzb24gb2YgbGlnaHQgDQorSW4gYSBkYXJrIGFnZSwgYWdhaW5zdCBleGFtcGxlIGdvb2QsIA0KK0FnYWluc3QgYWxsdXJlbWVudCwgY3VzdG9tLCBhbmQgYSB3b3JsZCANCitPZmZlbmRlZDogZmVhcmxlc3Mgb2YgcmVwcm9hY2ggYW5kIHNjb3JuLCANCitUaGUgZ3JhbmQtY2hpbGQsIHdpdGggdHdlbHZlIHNvbnMgZW5jcmVhc2VkLCBkZXBhcnRzIA0KK0Zyb20gQ2FuYWFuLCB0byBhIGxhbmQgaGVyZWFmdGVyIGNhbGxlZCANCitFZ3lwdCwgZGl2aWRlZCBieSB0aGUgcml2ZXIgTmlsZTsgDQorU2VlIHdoZXJlIGl0IGZsb3dzLCBkaXNnb3JnaW5nIGF0IHNldmVuIG1vdXRocyANCitJbnRvIHRoZSBzZWE6ICBUbyBzb2pvdXJuIGluIHRoYXQgbGFuZCANCitIZSBjb21lcywgaW52aXRlZCBieSBhIHlvdW5nZXIgc29uIA0KK0luIHRpbWUgb2YgZGVhcnRoOyBhIHNvbiwgd2hvc2Ugd29ydGh5IGRlZWRzIA0KK1JhaXNlIGhpbSB0byBiZSB0aGUgc2Vjb25kIGluIHRoYXQgcmVhbG0gDQorT2YgUGhhcmFvaDogIFRoZXJlIGhlIGRpZXMsIGFuZCBsZWF2ZXMgaGlzIHJhY2UgDQorR3Jvd2luZyBpbnRvIGEgbmF0aW9uLCBhbmQgbm93IGdyb3duIA0KK1N1c3BlY3RlZCB0byBhIHNlcXVlbnQga2luZywgd2hvIHNlZWtzIA0KK1RvIHN0b3AgdGhlaXIgb3Zlcmdyb3d0aCwgYXMgaW5tYXRlIGd1ZXN0cyANCitPciB2aW9sZW5jZSwgaGUgb2YgdGhlaXIgd2lja2VkIHdheXMgDQorU2hhbGwgdGhlbSBhZG1vbmlzaDsgYW5kIGJlZm9yZSB0aGVtIHNldCANCitUaGUgcGF0aHMgb2YgcmlnaHRlb3VzbmVzcywgaG93IG11Y2ggbW9yZSBzYWZlIA0KK0FuZCBmdWxsIG9mIHBlYWNlOyBkZW5vdW5jaW5nIHdyYXRoIHRvIGNvbWUgDQorT24gdGhlaXIgaW1wZW5pdGVuY2U7IGFuZCBzaGFsbCByZXR1cm4gDQorT2YgdGhlbSBkZXJpZGVkLCBidXQgb2YgR29kIG9ic2VydmVkIA0KK1RoZSBvbmUganVzdCBtYW4gYWxpdmU7IGJ5IGhpcyBjb21tYW5kIA0KK1NoYWxsIGJ1aWxkIGEgd29uZGVyb3VzIGFyaywgYXMgdGhvdSBiZWhlbGRzdCwgDQorVG8gc2F2ZSBoaW1zZWxmLCBhbmQgaG91c2hvbGQsIGZyb20gYW1pZHN0IA0KK0Egd29ybGQgZGV2b3RlIHRvIHVuaXZlcnNhbCB3cmFjay4gDQorTm8gc29vbmVyIGhlLCB3aXRoIHRoZW0gb2YgbWFuIGFuZCBiZWFzdCANCitTZWxlY3QgZm9yIGxpZmUsIHNoYWxsIGluIHRoZSBhcmsgYmUgbG9kZ2VkLCANCitBbmQgc2hlbHRlcmVkIHJvdW5kOyBidXQgYWxsIHRoZSBjYXRhcmFjdHMgDQorT2YgSGVhdmVuIHNldCBvcGVuIG9uIHRoZSBFYXJ0aCBzaGFsbCBwb3VyIA0KK1JhaW4sIGRheSBhbmQgbmlnaHQ7IGFsbCBmb3VudGFpbnMgb2YgdGhlIGRlZXAsIA0KK0Jyb2tlIHVwLCBzaGFsbCBoZWF2ZSB0aGUgb2NlYW4gdG8gdXN1cnAgDQorQmV5b25kIGFsbCBib3VuZHM7IHRpbGwgaW51bmRhdGlvbiByaXNlIA0KK0Fib3ZlIHRoZSBoaWdoZXN0IGhpbGxzOiAgVGhlbiBzaGFsbCB0aGlzIG1vdW50IA0KK09mIFBhcmFkaXNlIGJ5IG1pZ2h0IG9mIHdhdmVzIGJlIG1vdmVkIA0KK091dCBvZiBoaXMgcGxhY2UsIHB1c2hlZCBieSB0aGUgaG9ybmVkIGZsb29kLCANCitXaXRoIGFsbCBoaXMgdmVyZHVyZSBzcG9pbGVkLCBhbmQgdHJlZXMgYWRyaWZ0LCANCitEb3duIHRoZSBncmVhdCByaXZlciB0byB0aGUgb3BlbmluZyBndWxmLCANCitBbmQgdGhlcmUgdGFrZSByb290IGFuIGlzbGFuZCBzYWx0IGFuZCBiYXJlLCANCitUaGUgaGF1bnQgb2Ygc2VhbHMsIGFuZCBvcmNzLCBhbmQgc2VhLW1ld3MnIGNsYW5nOiANCitUbyB0ZWFjaCB0aGVlIHRoYXQgR29kIGF0dHJpYnV0ZXMgdG8gcGxhY2UgDQorTm8gc2FuY3RpdHksIGlmIG5vbmUgYmUgdGhpdGhlciBicm91Z2h0IA0KK0J5IG1lbiB3aG8gdGhlcmUgZnJlcXVlbnQsIG9yIHRoZXJlaW4gZHdlbGwuIA0KK0FuZCBub3csIHdoYXQgZnVydGhlciBzaGFsbCBlbnN1ZSwgYmVob2xkLiANCitIZSBsb29rZWQsIGFuZCBzYXcgdGhlIGFyayBodWxsIG9uIHRoZSBmbG9vZCwgDQorV2hpY2ggbm93IGFiYXRlZDsgZm9yIHRoZSBjbG91ZHMgd2VyZSBmbGVkLCANCitEcml2ZW4gYnkgYSBrZWVuIG5vcnRoLXdpbmQsIHRoYXQsIGJsb3dpbmcgZHJ5LCANCitXcmlua2xlZCB0aGUgZmFjZSBvZiBkZWx1Z2UsIGFzIGRlY2F5ZWQ7IA0KK0FuZCB0aGUgY2xlYXIgc3VuIG9uIGhpcyB3aWRlIHdhdGVyeSBnbGFzcyANCitHYXplZCBob3QsIGFuZCBvZiB0aGUgZnJlc2ggd2F2ZSBsYXJnZWx5IGRyZXcsIA0KK0FzIGFmdGVyIHRoaXJzdDsgd2hpY2ggbWFkZSB0aGVpciBmbG93aW5nIHNocmluayANCitGcm9tIHN0YW5kaW5nIGxha2UgdG8gdHJpcHBpbmcgZWJiLCB0aGF0IHN0b2xlIA0KK1dpdGggc29mdCBmb290IHRvd2FyZHMgdGhlIGRlZXA7IHdobyBub3cgaGFkIHN0b3B0IA0KK0hpcyBzbHVjZXMsIGFzIHRoZSBIZWF2ZW4gaGlzIHdpbmRvd3Mgc2h1dC4gDQorVGhlIGFyayBubyBtb3JlIG5vdyBmbG9hdHMsIGJ1dCBzZWVtcyBvbiBncm91bmQsIA0KK0Zhc3Qgb24gdGhlIHRvcCBvZiBzb21lIGhpZ2ggbW91bnRhaW4gZml4ZWQuIA0KK0FuZCBub3cgdGhlIHRvcHMgb2YgaGlsbHMsIGFzIHJvY2tzLCBhcHBlYXI7IA0KK1dpdGggY2xhbW91ciB0aGVuY2UgdGhlIHJhcGlkIGN1cnJlbnRzIGRyaXZlLCANCitUb3dhcmRzIHRoZSByZXRyZWF0aW5nIHNlYSwgdGhlaXIgZnVyaW91cyB0aWRlLiANCitGb3J0aHdpdGggZnJvbSBvdXQgdGhlIGFyayBhIHJhdmVuIGZsaWVzLCANCitBbmQgYWZ0ZXIgaGltLCB0aGUgc3VyZXIgbWVzc2VuZ2VyLCANCitBIGRvdmUgc2VudCBmb3J0aCBvbmNlIGFuZCBhZ2FpbiB0byBzcHkgDQorR3JlZW4gdHJlZSBvciBncm91bmQsIHdoZXJlb24gaGlzIGZvb3QgbWF5IGxpZ2h0OiANCitUaGUgc2Vjb25kIHRpbWUgcmV0dXJuaW5nLCBpbiBoaXMgYmlsbCANCitBbiBvbGl2ZS1sZWFmIGhlIGJyaW5ncywgcGFjaWZpY2sgc2lnbjogDQorQW5vbiBkcnkgZ3JvdW5kIGFwcGVhcnMsIGFuZCBmcm9tIGhpcyBhcmsgDQorVGhlIGFuY2llbnQgc2lyZSBkZXNjZW5kcywgd2l0aCBhbGwgaGlzIHRyYWluOyANCitUaGVuIHdpdGggdXBsaWZ0ZWQgaGFuZHMsIGFuZCBleWVzIGRldm91dCwgDQorR3JhdGVmdWwgdG8gSGVhdmVuLCBvdmVyIGhpcyBoZWFkIGJlaG9sZHMgDQorQSBkZXd5IGNsb3VkLCBhbmQgaW4gdGhlIGNsb3VkIGEgYm93IA0KK0NvbnNwaWN1b3VzIHdpdGggdGhyZWUgbGlmdGVkIGNvbG91cnMgZ2F5LCANCitCZXRva2VuaW5nIHBlYWNlIGZyb20gR29kLCBhbmQgY292ZW5hbnQgbmV3LiANCitXaGVyZWF0IHRoZSBoZWFydCBvZiBBZGFtLCBlcnN0IHNvIHNhZCwgDQorR3JlYXRseSByZWpvaWNlZDsgYW5kIHRodXMgaGlzIGpveSBicm9rZSBmb3J0aC4gDQorTyB0aG91LCB3aG8gZnV0dXJlIHRoaW5ncyBjYW5zdCByZXByZXNlbnQgDQorQXMgcHJlc2VudCwgaGVhdmVubHkgSW5zdHJ1Y3RlciEgIEkgcmV2aXZlIA0KK0F0IHRoaXMgbGFzdCBzaWdodDsgYXNzdXJlZCB0aGF0IE1hbiBzaGFsbCBsaXZlLCANCitXaXRoIGFsbCB0aGUgY3JlYXR1cmVzLCBhbmQgdGhlaXIgc2VlZCBwcmVzZXJ2ZS4gDQorRmFyIGxlc3MgSSBub3cgbGFtZW50IGZvciBvbmUgd2hvbGUgd29ybGQgDQorT2Ygd2lja2VkIHNvbnMgZGVzdHJveWVkLCB0aGFuIEkgcmVqb2ljZSANCitGb3Igb25lIG1hbiBmb3VuZCBzbyBwZXJmZWN0LCBhbmQgc28ganVzdCwgDQorVGhhdCBHb2Qgdm91Y2hzYWZlcyB0byByYWlzZSBhbm90aGVyIHdvcmxkIA0KK0Zyb20gaGltLCBhbmQgYWxsIGhpcyBhbmdlciB0byBmb3JnZXQuIA0KK0J1dCBzYXksIHdoYXQgbWVhbiB0aG9zZSBjb2xvdXJlZCBzdHJlYWtzIGluIEhlYXZlbiANCitEaXN0ZW5kZWQsIGFzIHRoZSBicm93IG9mIEdvZCBhcHBlYXNlZD8gDQorT3Igc2VydmUgdGhleSwgYXMgYSBmbG93ZXJ5IHZlcmdlLCB0byBiaW5kIA0KK1RoZSBmbHVpZCBza2lydHMgb2YgdGhhdCBzYW1lIHdhdGVyeSBjbG91ZCwgDQorTGVzdCBpdCBhZ2FpbiBkaXNzb2x2ZSwgYW5kIHNob3dlciB0aGUgZWFydGg/IA0KK1RvIHdob20gdGhlIEFyY2gtQW5nZWwuICBEZXh0cm91c2x5IHRob3UgYWltZXN0OyANCitTbyB3aWxsaW5nbHkgZG90aCBHb2QgcmVtaXQgaGlzIGlyZSwgDQorVGhvdWdoIGxhdGUgcmVwZW50aW5nIGhpbSBvZiBNYW4gZGVwcmF2ZWQ7IA0KK0dyaWV2ZWQgYXQgaGlzIGhlYXJ0LCB3aGVuIGxvb2tpbmcgZG93biBoZSBzYXcgDQorVGhlIHdob2xlIGVhcnRoIGZpbGxlZCB3aXRoIHZpb2xlbmNlLCBhbmQgYWxsIGZsZXNoIA0KK0NvcnJ1cHRpbmcgZWFjaCB0aGVpciB3YXk7IHlldCwgdGhvc2UgcmVtb3ZlZCwgDQorU3VjaCBncmFjZSBzaGFsbCBvbmUganVzdCBtYW4gZmluZCBpbiBoaXMgc2lnaHQsIA0KK1RoYXQgaGUgcmVsZW50cywgbm90IHRvIGJsb3Qgb3V0IG1hbmtpbmQ7IA0KK0FuZCBtYWtlcyBhIGNvdmVuYW50IG5ldmVyIHRvIGRlc3Ryb3kgDQorVGhlIGVhcnRoIGFnYWluIGJ5IGZsb29kOyBub3IgbGV0IHRoZSBzZWEgDQorU3VycGFzcyBoaXMgYm91bmRzOyBub3IgcmFpbiB0byBkcm93biB0aGUgd29ybGQsIA0KK1dpdGggbWFuIHRoZXJlaW4gb3IgYmVhc3Q7IGJ1dCwgd2hlbiBoZSBicmluZ3MgDQorT3ZlciB0aGUgZWFydGggYSBjbG91ZCwgd2lsbCB0aGVyZWluIHNldCANCitIaXMgdHJpcGxlLWNvbG91cmVkIGJvdywgd2hlcmVvbiB0byBsb29rLCANCitBbmQgY2FsbCB0byBtaW5kIGhpcyBjb3ZlbmFudDogRGF5IGFuZCBuaWdodCwgDQorU2VlZC10aW1lIGFuZCBoYXJ2ZXN0LCBoZWF0IGFuZCBob2FyeSBmcm9zdCwgDQorU2hhbGwgaG9sZCB0aGVpciBjb3Vyc2U7IHRpbGwgZmlyZSBwdXJnZSBhbGwgdGhpbmdzIG5ldywgDQorQm90aCBIZWF2ZW4gYW5kIEVhcnRoLCB3aGVyZWluIHRoZSBqdXN0IHNoYWxsIGR3ZWxsLiANCisgDQorIA0KKyANCitCb29rIFhJSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyANCisgDQorQXMgb25lIHdobyBpbiBoaXMgam91cm5leSBiYXRlcyBhdCBub29uLCANCitUaG91Z2ggYmVudCBvbiBzcGVlZDsgc28gaGVyZSB0aGUgQXJjaC1BbmdlbCBwYXVzZWQgDQorQmV0d2l4dCB0aGUgd29ybGQgZGVzdHJveWVkIGFuZCB3b3JsZCByZXN0b3JlZCwgDQorSWYgQWRhbSBhdWdodCBwZXJoYXBzIG1pZ2h0IGludGVycG9zZTsgDQorVGhlbiwgd2l0aCB0cmFuc2l0aW9uIHN3ZWV0LCBuZXcgc3BlZWNoIHJlc3VtZXMuIA0KK1RodXMgdGhvdSBoYXN0IHNlZW4gb25lIHdvcmxkIGJlZ2luLCBhbmQgZW5kOyANCitBbmQgTWFuLCBhcyBmcm9tIGEgc2Vjb25kIHN0b2NrLCBwcm9jZWVkLiANCitNdWNoIHRob3UgaGFzdCB5ZXQgdG8gc2VlOyBidXQgSSBwZXJjZWl2ZSANCitUaHkgbW9ydGFsIHNpZ2h0IHRvIGZhaWw7IG9iamVjdHMgZGl2aW5lIA0KK011c3QgbmVlZHMgaW1wYWlyIGFuZCB3ZWFyeSBodW1hbiBzZW5zZTogDQorSGVuY2Vmb3J0aCB3aGF0IGlzIHRvIGNvbWUgSSB3aWxsIHJlbGF0ZTsgDQorVGhvdSB0aGVyZWZvcmUgZ2l2ZSBkdWUgYXVkaWVuY2UsIGFuZCBhdHRlbmQuIA0KK1RoaXMgc2Vjb25kIHNvdXJjZSBvZiBNZW4sIHdoaWxlIHlldCBidXQgZmV3LCANCitBbmQgd2hpbGUgdGhlIGRyZWFkIG9mIGp1ZGdlbWVudCBwYXN0IHJlbWFpbnMgDQorRnJlc2ggaW4gdGhlaXIgbWluZHMsIGZlYXJpbmcgdGhlIERlaXR5LCANCitXaXRoIHNvbWUgcmVnYXJkIHRvIHdoYXQgaXMganVzdCBhbmQgcmlnaHQgDQorU2hhbGwgbGVhZCB0aGVpciBsaXZlcywgYW5kIG11bHRpcGx5IGFwYWNlOyANCitMYWJvdXJpbmcgdGhlIHNvaWwsIGFuZCByZWFwaW5nIHBsZW50ZW91cyBjcm9wLCANCitDb3JuLCB3aW5lLCBhbmQgb2lsOyBhbmQsIGZyb20gdGhlIGhlcmQgb3IgZmxvY2ssIA0KK09mdCBzYWNyaWZpY2luZyBidWxsb2NrLCBsYW1iLCBvciBraWQsIA0KK1dpdGggbGFyZ2Ugd2luZS1vZmZlcmluZ3MgcG91cmVkLCBhbmQgc2FjcmVkIGZlYXN0LCANCitTaGFsbCBzcGVuZCB0aGVpciBkYXlzIGluIGpveSB1bmJsYW1lZDsgYW5kIGR3ZWxsIA0KK0xvbmcgdGltZSBpbiBwZWFjZSwgYnkgZmFtaWxpZXMgYW5kIHRyaWJlcywgDQorVW5kZXIgcGF0ZXJuYWwgcnVsZTogdGlsbCBvbmUgc2hhbGwgcmlzZSANCitPZiBwcm91ZCBhbWJpdGlvdXMgaGVhcnQ7IHdobywgbm90IGNvbnRlbnQgDQorV2l0aCBmYWlyIGVxdWFsaXR5LCBmcmF0ZXJuYWwgc3RhdGUsIA0KK1dpbGwgYXJyb2dhdGUgZG9taW5pb24gdW5kZXNlcnZlZCANCitPdmVyIGhpcyBicmV0aHJlbiwgYW5kIHF1aXRlIGRpc3Bvc3Nlc3MgDQorQ29uY29yZCBhbmQgbGF3IG9mIG5hdHVyZSBmcm9tIHRoZSBlYXJ0aDsgDQorSHVudGluZyAoYW5kIG1lbiBub3QgYmVhc3RzIHNoYWxsIGJlIGhpcyBnYW1lKSANCitXaXRoIHdhciwgYW5kIGhvc3RpbGUgc25hcmUsIHN1Y2ggYXMgcmVmdXNlIA0KK1N1YmplY3Rpb24gdG8gaGlzIGVtcGlyZSB0eXJhbm5vdXM6IA0KK0EgbWlnaHR5IGh1bnRlciB0aGVuY2UgaGUgc2hhbGwgYmUgc3R5bGVkIA0KK0JlZm9yZSB0aGUgTG9yZDsgYXMgaW4gZGVzcGl0ZSBvZiBIZWF2ZW4sIA0KK09yIGZyb20gSGVhdmVuLCBjbGFpbWluZyBzZWNvbmQgc292cmFudHk7IA0KK0FuZCBmcm9tIHJlYmVsbGlvbiBzaGFsbCBkZXJpdmUgaGlzIG5hbWUsIA0KK1Rob3VnaCBvZiByZWJlbGxpb24gb3RoZXJzIGhlIGFjY3VzZS4gDQorSGUgd2l0aCBhIGNyZXcsIHdob20gbGlrZSBhbWJpdGlvbiBqb2lucyANCitXaXRoIGhpbSBvciB1bmRlciBoaW0gdG8gdHlyYW5uaXplLCANCitNYXJjaGluZyBmcm9tIEVkZW4gdG93YXJkcyB0aGUgd2VzdCwgc2hhbGwgZmluZCANCitUaGUgcGxhaW4sIHdoZXJlaW4gYSBibGFjayBiaXR1bWlub3VzIGd1cmdlIA0KK0JvaWxzIG91dCBmcm9tIHVuZGVyIGdyb3VuZCwgdGhlIG1vdXRoIG9mIEhlbGw6IA0KK09mIGJyaWNrLCBhbmQgb2YgdGhhdCBzdHVmZiwgdGhleSBjYXN0IHRvIGJ1aWxkIA0KK0EgY2l0eSBhbmQgdG93ZXIsIHdob3NlIHRvcCBtYXkgcmVhY2ggdG8gSGVhdmVuOyANCitBbmQgZ2V0IHRoZW1zZWx2ZXMgYSBuYW1lOyBsZXN0LCBmYXIgZGlzcGVyc2VkIA0KK0luIGZvcmVpZ24gbGFuZHMsIHRoZWlyIG1lbW9yeSBiZSBsb3N0OyANCitSZWdhcmRsZXNzIHdoZXRoZXIgZ29vZCBvciBldmlsIGZhbWUuIA0KK0J1dCBHb2QsIHdobyBvZnQgZGVzY2VuZHMgdG8gdmlzaXQgbWVuIA0KK1Vuc2VlbiwgYW5kIHRocm91Z2ggdGhlaXIgaGFiaXRhdGlvbnMgd2Fsa3MgDQorVG8gbWFyayB0aGVpciBkb2luZ3MsIHRoZW0gYmVob2xkaW5nIHNvb24sIA0KK0NvbWVzIGRvd24gdG8gc2VlIHRoZWlyIGNpdHksIGVyZSB0aGUgdG93ZXIgDQorT2JzdHJ1Y3QgSGVhdmVuLXRvd2VycywgYW5kIGluIGRlcmlzaW9uIHNldHMgDQorVXBvbiB0aGVpciB0b25ndWVzIGEgdmFyaW91cyBzcGlyaXQsIHRvIHJhc2UgDQorUXVpdGUgb3V0IHRoZWlyIG5hdGl2ZSBsYW5ndWFnZTsgYW5kLCBpbnN0ZWFkLCANCitUbyBzb3cgYSBqYW5nbGluZyBub2lzZSBvZiB3b3JkcyB1bmtub3duOiANCitGb3J0aHdpdGggYSBoaWRlb3VzIGdhYmJsZSByaXNlcyBsb3VkLCANCitBbW9uZyB0aGUgYnVpbGRlcnM7IGVhY2ggdG8gb3RoZXIgY2FsbHMgDQorTm90IHVuZGVyc3Rvb2Q7IHRpbGwgaG9hcnNlLCBhbmQgYWxsIGluIHJhZ2UsIA0KK0FzIG1vY2tlZCB0aGV5IHN0b3JtOiBncmVhdCBsYXVnaHRlciB3YXMgaW4gSGVhdmVuLCANCitBbmQgbG9va2luZyBkb3duLCB0byBzZWUgdGhlIGh1YmJ1YiBzdHJhbmdlLCANCitBbmQgaGVhciB0aGUgZGluOiAgVGh1cyB3YXMgdGhlIGJ1aWxkaW5nIGxlZnQgDQorUmlkaWN1bG91cywgYW5kIHRoZSB3b3JrIENvbmZ1c2lvbiBuYW1lZC4gDQorV2hlcmV0byB0aHVzIEFkYW0sIGZhdGhlcmx5IGRpc3BsZWFzZWQuIA0KK08gZXhlY3JhYmxlIHNvbiEgc28gdG8gYXNwaXJlIA0KK0Fib3ZlIGhpcyBicmV0aHJlbjsgdG8gaGltc2VsZiBhc3N1bWluZyANCitBdXRob3JpdHkgdXN1cnBlZCwgZnJvbSBHb2Qgbm90IGdpdmVuOiANCitIZSBnYXZlIHVzIG9ubHkgb3ZlciBiZWFzdCwgZmlzaCwgZm93bCwgDQorRG9taW5pb24gYWJzb2x1dGU7IHRoYXQgcmlnaHQgd2UgaG9sZCANCitCeSBoaXMgZG9uYXRpb247IGJ1dCBtYW4gb3ZlciBtZW4gDQorSGUgbWFkZSBub3QgbG9yZDsgc3VjaCB0aXRsZSB0byBoaW1zZWxmIA0KK1Jlc2VydmluZywgaHVtYW4gbGVmdCBmcm9tIGh1bWFuIGZyZWUuIA0KK0J1dCB0aGlzIHVzdXJwZXIgaGlzIGVuY3JvYWNobWVudCBwcm91ZCANCitTdGF5cyBub3Qgb24gTWFuOyB0byBHb2QgaGlzIHRvd2VyIGludGVuZHMgDQorU2llZ2UgYW5kIGRlZmlhbmNlOiAgV3JldGNoZWQgbWFuIXdoYXQgZm9vZCANCitXaWxsIGhlIGNvbnZleSB1cCB0aGl0aGVyLCB0byBzdXN0YWluIA0KK0hpbXNlbGYgYW5kIGhpcyByYXNoIGFybXk7IHdoZXJlIHRoaW4gYWlyIA0KK0Fib3ZlIHRoZSBjbG91ZHMgd2lsbCBwaW5lIGhpcyBlbnRyYWlscyBncm9zcywgDQorQW5kIGZhbWlzaCBoaW0gb2YgYnJlYXRoLCBpZiBub3Qgb2YgYnJlYWQ/IA0KK1RvIHdob20gdGh1cyBNaWNoYWVsLiAgSnVzdGx5IHRob3UgYWJob3JyZXN0IA0KK1RoYXQgc29uLCB3aG8gb24gdGhlIHF1aWV0IHN0YXRlIG9mIG1lbiANCitTdWNoIHRyb3VibGUgYnJvdWdodCwgYWZmZWN0aW5nIHRvIHN1YmR1ZSANCitSYXRpb25hbCBsaWJlcnR5OyB5ZXQga25vdyB3aXRoYWwsIA0KK1NpbmNlIHRoeSBvcmlnaW5hbCBsYXBzZSwgdHJ1ZSBsaWJlcnR5IA0KK0lzIGxvc3QsIHdoaWNoIGFsd2F5cyB3aXRoIHJpZ2h0IHJlYXNvbiBkd2VsbHMgDQorVHdpbm5lZCwgYW5kIGZyb20gaGVyIGhhdGggbm8gZGl2aWR1YWwgYmVpbmc6IA0KK1JlYXNvbiBpbiBtYW4gb2JzY3VyZWQsIG9yIG5vdCBvYmV5ZWQsIA0KK0ltbWVkaWF0ZWx5IGlub3JkaW5hdGUgZGVzaXJlcywgDQorQW5kIHVwc3RhcnQgcGFzc2lvbnMsIGNhdGNoIHRoZSBnb3Zlcm5tZW50IA0KK0Zyb20gcmVhc29uOyBhbmQgdG8gc2Vydml0dWRlIHJlZHVjZSANCitNYW4sIHRpbGwgdGhlbiBmcmVlLiAgVGhlcmVmb3JlLCBzaW5jZSBoZSBwZXJtaXRzIA0KK1dpdGhpbiBoaW1zZWxmIHVud29ydGh5IHBvd2VycyB0byByZWlnbiANCitPdmVyIGZyZWUgcmVhc29uLCBHb2QsIGluIGp1ZGdlbWVudCBqdXN0LCANCitTdWJqZWN0cyBoaW0gZnJvbSB3aXRob3V0IHRvIHZpb2xlbnQgbG9yZHM7IA0KK1dobyBvZnQgYXMgdW5kZXNlcnZlZGx5IGVudGhyYWxsIA0KK0hpcyBvdXR3YXJkIGZyZWVkb206ICBUeXJhbm55IG11c3QgYmU7IA0KK1Rob3VnaCB0byB0aGUgdHlyYW50IHRoZXJlYnkgbm8gZXhjdXNlLiANCitZZXQgc29tZXRpbWVzIG5hdGlvbnMgd2lsbCBkZWNsaW5lIHNvIGxvdyANCitGcm9tIHZpcnR1ZSwgd2hpY2ggaXMgcmVhc29uLCB0aGF0IG5vIHdyb25nLCANCitCdXQganVzdGljZSwgYW5kIHNvbWUgZmF0YWwgY3Vyc2UgYW5uZXhlZCwgDQorRGVwcml2ZXMgdGhlbSBvZiB0aGVpciBvdXR3YXJkIGxpYmVydHk7IA0KK1RoZWlyIGlud2FyZCBsb3N0OiAgV2l0bmVzcyB0aGUgaXJyZXZlcmVudCBzb24gDQorT2YgaGltIHdobyBidWlsdCB0aGUgYXJrOyB3aG8sIGZvciB0aGUgc2hhbWUgDQorRG9uZSB0byBoaXMgZmF0aGVyLCBoZWFyZCB0aGlzIGhlYXZ5IGN1cnNlLCANCitTZXJ2YW50IG9mIHNlcnZhbnRzLCBvbiBoaXMgdmljaW91cyByYWNlLiANCitUaHVzIHdpbGwgdGhpcyBsYXR0ZXIsIGFzIHRoZSBmb3JtZXIgd29ybGQsIA0KK1N0aWxsIHRlbmQgZnJvbSBiYWQgdG8gd29yc2U7IHRpbGwgR29kIGF0IGxhc3QsIA0KK1dlYXJpZWQgd2l0aCB0aGVpciBpbmlxdWl0aWVzLCB3aXRoZHJhdyANCitIaXMgcHJlc2VuY2UgZnJvbSBhbW9uZyB0aGVtLCBhbmQgYXZlcnQgDQorSGlzIGhvbHkgZXllczsgcmVzb2x2aW5nIGZyb20gdGhlbmNlZm9ydGggDQorVG8gbGVhdmUgdGhlbSB0byB0aGVpciBvd24gcG9sbHV0ZWQgd2F5czsgDQorQW5kIG9uZSBwZWN1bGlhciBuYXRpb24gdG8gc2VsZWN0IA0KK0Zyb20gYWxsIHRoZSByZXN0LCBvZiB3aG9tIHRvIGJlIGludm9rZWQsIA0KK0EgbmF0aW9uIGZyb20gb25lIGZhaXRoZnVsIG1hbiB0byBzcHJpbmc6IA0KK0hpbSBvbiB0aGlzIHNpZGUgRXVwaHJhdGVzIHlldCByZXNpZGluZywgDQorQnJlZCB1cCBpbiBpZG9sLXdvcnNoaXA6ICBPLCB0aGF0IG1lbiANCisoQ2Fuc3QgdGhvdSBiZWxpZXZlPykgc2hvdWxkIGJlIHNvIHN0dXBpZCBncm93biwgDQorV2hpbGUgeWV0IHRoZSBwYXRyaWFyY2ggbGl2ZWQsIHdobyAnc2NhcGVkIHRoZSBmbG9vZCwgDQorQXMgdG8gZm9yc2FrZSB0aGUgbGl2aW5nIEdvZCwgYW5kIGZhbGwgDQorVG8gd29yc2hpcCB0aGVpciBvd24gd29yayBpbiB3b29kIGFuZCBzdG9uZSANCitGb3IgR29kcyEgIFlldCBoaW0gR29kIHRoZSBNb3N0IEhpZ2ggdm91Y2hzYWZlcyANCitUbyBjYWxsIGJ5IHZpc2lvbiwgZnJvbSBoaXMgZmF0aGVyJ3MgaG91c2UsIA0KK0hpcyBraW5kcmVkLCBhbmQgZmFsc2UgR29kcywgaW50byBhIGxhbmQgDQorV2hpY2ggaGUgd2lsbCBzaG93IGhpbTsgYW5kIGZyb20gaGltIHdpbGwgcmFpc2UgDQorQSBtaWdodHkgbmF0aW9uOyBhbmQgdXBvbiBoaW0gc2hvd2VyIA0KK0hpcyBiZW5lZGljdGlvbiBzbywgdGhhdCBpbiBoaXMgc2VlZCANCitBbGwgbmF0aW9ucyBzaGFsbCBiZSBibGVzdDogaGUgc3RyYWlnaHQgb2JleXM7IA0KK05vdCBrbm93aW5nIHRvIHdoYXQgbGFuZCwgeWV0IGZpcm0gYmVsaWV2ZXM6IA0KK0kgc2VlIGhpbSwgYnV0IHRob3UgY2Fuc3Qgbm90LCB3aXRoIHdoYXQgZmFpdGggDQorSGUgbGVhdmVzIGhpcyBHb2RzLCBoaXMgZnJpZW5kcywgYW5kIG5hdGl2ZSBzb2lsLCANCitVciBvZiBDaGFsZGFlYSwgcGFzc2luZyBub3cgdGhlIGZvcmQgDQorVG8gSGFyYW47IGFmdGVyIGhpbSBhIGN1bWJyb3VzIHRyYWluIA0KK09mIGhlcmRzIGFuZCBmbG9ja3MsIGFuZCBudW1lcm91cyBzZXJ2aXR1ZGU7IA0KK05vdCB3YW5kZXJpbmcgcG9vciwgYnV0IHRydXN0aW5nIGFsbCBoaXMgd2VhbHRoIA0KK1dpdGggR29kLCB3aG8gY2FsbGVkIGhpbSwgaW4gYSBsYW5kIHVua25vd24uIA0KK0NhbmFhbiBoZSBub3cgYXR0YWluczsgSSBzZWUgaGlzIHRlbnRzIA0KK1BpdGNoZWQgYWJvdXQgU2VjaGVtLCBhbmQgdGhlIG5laWdoYm91cmluZyBwbGFpbiANCitPZiBNb3JlaDsgdGhlcmUgYnkgcHJvbWlzZSBoZSByZWNlaXZlcyANCitHaWZ0IHRvIGhpcyBwcm9nZW55IG9mIGFsbCB0aGF0IGxhbmQsIA0KK0Zyb20gSGFtZXRoIG5vcnRod2FyZCB0byB0aGUgRGVzYXJ0IHNvdXRoOyANCisoVGhpbmdzIGJ5IHRoZWlyIG5hbWVzIEkgY2FsbCwgdGhvdWdoIHlldCB1bm5hbWVkOykgDQorRnJvbSBIZXJtb24gZWFzdCB0byB0aGUgZ3JlYXQgd2VzdGVybiBTZWE7IA0KK01vdW50IEhlcm1vbiwgeW9uZGVyIHNlYTsgZWFjaCBwbGFjZSBiZWhvbGQgDQorSW4gcHJvc3BlY3QsIGFzIEkgcG9pbnQgdGhlbTsgb24gdGhlIHNob3JlIA0KK01vdW50IENhcm1lbDsgaGVyZSwgdGhlIGRvdWJsZS1mb3VudGVkIHN0cmVhbSwgDQorSm9yZGFuLCB0cnVlIGxpbWl0IGVhc3R3YXJkOyBidXQgaGlzIHNvbnMgDQorU2hhbGwgZHdlbGwgdG8gU2VuaXIsIHRoYXQgbG9uZyByaWRnZSBvZiBoaWxscy4gDQorVGhpcyBwb25kZXIsIHRoYXQgYWxsIG5hdGlvbnMgb2YgdGhlIGVhcnRoIA0KK1NoYWxsIGluIGhpcyBzZWVkIGJlIGJsZXNzZWQ6ICBCeSB0aGF0IHNlZWQgDQorSXMgbWVhbnQgdGh5IGdyZWF0IERlbGl2ZXJlciwgd2hvIHNoYWxsIGJydWlzZSANCitUaGUgU2VycGVudCdzIGhlYWQ7IHdoZXJlb2YgdG8gdGhlZSBhbm9uIA0KK1BsYWlubGllciBzaGFsbCBiZSByZXZlYWxlZC4gIFRoaXMgcGF0cmlhcmNoIGJsZXN0LCANCitXaG9tIGZhaXRoZnVsIEFicmFoYW0gZHVlIHRpbWUgc2hhbGwgY2FsbCwgDQorQSBzb24sIGFuZCBvZiBoaXMgc29uIGEgZ3JhbmQtY2hpbGQsIGxlYXZlczsgDQorTGlrZSBoaW0gaW4gZmFpdGgsIGluIHdpc2RvbSwgYW5kIHJlbm93bjogDQorVGhlIGdyYW5kY2hpbGQsIHdpdGggdHdlbHZlIHNvbnMgaW5jcmVhc2VkLCBkZXBhcnRzIA0KK0Zyb20gQ2FuYWFuIHRvIGEgbGFuZCBoZXJlYWZ0ZXIgY2FsbGVkIA0KK0VneXB0LCBkaXZpZGVkIGJ5IHRoZSByaXZlciBOaWxlIA0KK1NlZSB3aGVyZSBpdCBmbG93cywgZGlzZ29yZ2luZyBhdCBzZXZlbiBtb3V0aHMgDQorSW50byB0aGUgc2VhLiBUbyBzb2pvdXJuIGluIHRoYXQgbGFuZCANCitIZSBjb21lcywgaW52aXRlZCBieSBhIHlvdW5nZXIgc29uIA0KK0luIHRpbWUgb2YgZGVhcnRoLCBhIHNvbiB3aG9zZSB3b3J0aHkgZGVlZHMgDQorUmFpc2UgaGltIHRvIGJlIHRoZSBzZWNvbmQgaW4gdGhhdCByZWFsbSANCitPZiBQaGFyYW9oLiBUaGVyZSBoZSBkaWVzLCBhbmQgbGVhdmVzIGhpcyByYWNlIA0KK0dyb3dpbmcgaW50byBhIG5hdGlvbiwgYW5kIG5vdyBncm93biANCitTdXNwZWN0ZWQgdG8gYSBzZXF1ZW50IGtpbmcsIHdobyBzZWVrcyANCitUbyBzdG9wIHRoZWlyIG92ZXJncm93dGgsIGFzIGlubWF0ZSBndWVzdHMgDQorVG9vIG51bWVyb3VzOyB3aGVuY2Ugb2YgZ3Vlc3RzIGhlIG1ha2VzIHRoZW0gc2xhdmVzIA0KK0luaG9zcGl0YWJseSwgYW5kIGtpbGxzIHRoZWlyIGluZmFudCBtYWxlczogDQorVGlsbCBieSB0d28gYnJldGhyZW4gKHRoZXNlIHR3byBicmV0aHJlbiBjYWxsIA0KK01vc2VzIGFuZCBBYXJvbikgc2VudCBmcm9tIEdvZCB0byBjbGFpbSANCitIaXMgcGVvcGxlIGZyb20gZW50aHJhbG1lbnQsIHRoZXkgcmV0dXJuLCANCitXaXRoIGdsb3J5IGFuZCBzcG9pbCwgYmFjayB0byB0aGVpciBwcm9taXNlZCBsYW5kLiANCitCdXQgZmlyc3QsIHRoZSBsYXdsZXNzIHR5cmFudCwgd2hvIGRlbmllcyANCitUbyBrbm93IHRoZWlyIEdvZCwgb3IgbWVzc2FnZSB0byByZWdhcmQsIA0KK011c3QgYmUgY29tcGVsbGVkIGJ5IHNpZ25zIGFuZCBqdWRnZW1lbnRzIGRpcmU7IA0KK1RvIGJsb29kIHVuc2hlZCB0aGUgcml2ZXJzIG11c3QgYmUgdHVybmVkOyANCitGcm9ncywgbGljZSwgYW5kIGZsaWVzLCBtdXN0IGFsbCBoaXMgcGFsYWNlIGZpbGwgDQorV2l0aCBsb2F0aGVkIGludHJ1c2lvbiwgYW5kIGZpbGwgYWxsIHRoZSBsYW5kOyANCitIaXMgY2F0dGxlIG11c3Qgb2Ygcm90IGFuZCBtdXJyZW4gZGllOyANCitCb3RjaGVzIGFuZCBibGFpbnMgbXVzdCBhbGwgaGlzIGZsZXNoIGVtYm9zcywgDQorQW5kIGFsbCBoaXMgcGVvcGxlOyB0aHVuZGVyIG1peGVkIHdpdGggaGFpbCwgDQorSGFpbCBtaXhlZCB3aXRoIGZpcmUsIG11c3QgcmVuZCB0aGUgRWd5cHRpYW5zIHNreSwgDQorQW5kIHdoZWVsIG9uIHRoZSBlYXJ0aCwgZGV2b3VyaW5nIHdoZXJlIGl0IHJvbGxzOyANCitXaGF0IGl0IGRldm91cnMgbm90LCBoZXJiLCBvciBmcnVpdCwgb3IgZ3JhaW4sIA0KK0EgZGFya3NvbWUgY2xvdWQgb2YgbG9jdXN0cyBzd2FybWluZyBkb3duIA0KK011c3QgZWF0LCBhbmQgb24gdGhlIGdyb3VuZCBsZWF2ZSBub3RoaW5nIGdyZWVuOyANCitEYXJrbmVzcyBtdXN0IG92ZXJzaGFkb3cgYWxsIGhpcyBib3VuZHMsIA0KK1BhbHBhYmxlIGRhcmtuZXNzLCBhbmQgYmxvdCBvdXQgdGhyZWUgZGF5czsgDQorTGFzdCwgd2l0aCBvbmUgbWlkbmlnaHQgc3Ryb2tlLCBhbGwgdGhlIGZpcnN0LWJvcm4gDQorT2YgRWd5cHQgbXVzdCBsaWUgZGVhZC4gIFRodXMgd2l0aCB0ZW4gd291bmRzIA0KK1RoZSByaXZlci1kcmFnb24gdGFtZWQgYXQgbGVuZ3RoIHN1Ym1pdHMgDQorVG8gbGV0IGhpcyBzb2pvdXJuZXJzIGRlcGFydCwgYW5kIG9mdCANCitIdW1ibGVzIGhpcyBzdHViYm9ybiBoZWFydDsgYnV0IHN0aWxsLCBhcyBpY2UgDQorTW9yZSBoYXJkZW5lZCBhZnRlciB0aGF3OyB0aWxsLCBpbiBoaXMgcmFnZSANCitQdXJzdWluZyB3aG9tIGhlIGxhdGUgZGlzbWlzc2VkLCB0aGUgc2VhIA0KK1N3YWxsb3dzIGhpbSB3aXRoIGhpcyBob3N0OyBidXQgdGhlbSBsZXRzIHBhc3MsIA0KK0FzIG9uIGRyeSBsYW5kLCBiZXR3ZWVuIHR3byBjcnlzdGFsIHdhbGxzOyANCitBd2VkIGJ5IHRoZSByb2Qgb2YgTW9zZXMgc28gdG8gc3RhbmQgDQorRGl2aWRlZCwgdGlsbCBoaXMgcmVzY3VlZCBnYWluIHRoZWlyIHNob3JlOiANCitTdWNoIHdvbmRyb3VzIHBvd2VyIEdvZCB0byBoaXMgc2FpbnQgd2lsbCBsZW5kLCANCitUaG91Z2ggcHJlc2VudCBpbiBoaXMgQW5nZWw7IHdobyBzaGFsbCBnbyANCitCZWZvcmUgdGhlbSBpbiBhIGNsb3VkLCBhbmQgcGlsbGFyIG9mIGZpcmU7IA0KK0J5IGRheSBhIGNsb3VkLCBieSBuaWdodCBhIHBpbGxhciBvZiBmaXJlOyANCitUbyBndWlkZSB0aGVtIGluIHRoZWlyIGpvdXJuZXksIGFuZCByZW1vdmUgDQorQmVoaW5kIHRoZW0sIHdoaWxlIHRoZSBvYmR1cmF0ZSBraW5nIHB1cnN1ZXM6IA0KK0FsbCBuaWdodCBoZSB3aWxsIHB1cnN1ZTsgYnV0IGhpcyBhcHByb2FjaCANCitEYXJrbmVzcyBkZWZlbmRzIGJldHdlZW4gdGlsbCBtb3JuaW5nIHdhdGNoOyANCitUaGVuIHRocm91Z2ggdGhlIGZpZXJ5IHBpbGxhciwgYW5kIHRoZSBjbG91ZCwgDQorR29kIGxvb2tpbmcgZm9ydGggd2lsbCB0cm91YmxlIGFsbCBoaXMgaG9zdCwgDQorQW5kIGNyYXplIHRoZWlyIGNoYXJpb3Qtd2hlZWxzOiB3aGVuIGJ5IGNvbW1hbmQgDQorTW9zZXMgb25jZSBtb3JlIGhpcyBwb3RlbnQgcm9kIGV4dGVuZHMgDQorT3ZlciB0aGUgc2VhOyB0aGUgc2VhIGhpcyByb2Qgb2JleXM7IA0KK09uIHRoZWlyIGVtYmF0dGxlZCByYW5rcyB0aGUgd2F2ZXMgcmV0dXJuLCANCitBbmQgb3ZlcndoZWxtIHRoZWlyIHdhcjogIFRoZSByYWNlIGVsZWN0IA0KK1NhZmUgdG93YXJkIENhbmFhbiBmcm9tIHRoZSBzaG9yZSBhZHZhbmNlIA0KK1Rocm91Z2ggdGhlIHdpbGQgRGVzYXJ0LCBub3QgdGhlIHJlYWRpZXN0IHdheTsgDQorTGVzdCwgZW50ZXJpbmcgb24gdGhlIENhbmFhbml0ZSBhbGFybWVkLCANCitXYXIgdGVycmlmeSB0aGVtIGluZXhwZXJ0LCBhbmQgZmVhciANCitSZXR1cm4gdGhlbSBiYWNrIHRvIEVneXB0LCBjaG9vc2luZyByYXRoZXIgDQorSW5nbG9yaW91cyBsaWZlIHdpdGggc2Vydml0dWRlOyBmb3IgbGlmZSANCitUbyBub2JsZSBhbmQgaWdub2JsZSBpcyBtb3JlIHN3ZWV0IA0KK1VudHJhaW5lZCBpbiBhcm1zLCB3aGVyZSByYXNobmVzcyBsZWFkcyBub3Qgb24uIA0KK1RoaXMgYWxzbyBzaGFsbCB0aGV5IGdhaW4gYnkgdGhlaXIgZGVsYXkgDQorSW4gdGhlIHdpZGUgd2lsZGVybmVzczsgdGhlcmUgdGhleSBzaGFsbCBmb3VuZCANCitUaGVpciBnb3Zlcm5tZW50LCBhbmQgdGhlaXIgZ3JlYXQgc2VuYXRlIGNob29zZSANCitUaHJvdWdoIHRoZSB0d2VsdmUgdHJpYmVzLCB0byBydWxlIGJ5IGxhd3Mgb3JkYWluZWQ6IA0KK0dvZCBmcm9tIHRoZSBtb3VudCBvZiBTaW5haSwgd2hvc2UgZ3JheSB0b3AgDQorU2hhbGwgdHJlbWJsZSwgaGUgZGVzY2VuZGluZywgd2lsbCBoaW1zZWxmIA0KK0luIHRodW5kZXIsIGxpZ2h0bmluZywgYW5kIGxvdWQgdHJ1bXBldHMnIHNvdW5kLCANCitPcmRhaW4gdGhlbSBsYXdzOyBwYXJ0LCBzdWNoIGFzIGFwcGVydGFpbiANCitUbyBjaXZpbCBqdXN0aWNlOyBwYXJ0LCByZWxpZ2lvdXMgcml0ZXMgDQorT2Ygc2FjcmlmaWNlOyBpbmZvcm1pbmcgdGhlbSwgYnkgdHlwZXMgDQorQW5kIHNoYWRvd3MsIG9mIHRoYXQgZGVzdGluZWQgU2VlZCB0byBicnVpc2UgDQorVGhlIFNlcnBlbnQsIGJ5IHdoYXQgbWVhbnMgaGUgc2hhbGwgYWNoaWV2ZSANCitNYW5raW5kJ3MgZGVsaXZlcmFuY2UuICBCdXQgdGhlIHZvaWNlIG9mIEdvZCANCitUbyBtb3J0YWwgZWFyIGlzIGRyZWFkZnVsOiAgVGhleSBiZXNlZWNoIA0KK1RoYXQgTW9zZXMgbWlnaHQgcmVwb3J0IHRvIHRoZW0gaGlzIHdpbGwsIA0KK0FuZCB0ZXJyb3VyIGNlYXNlOyBoZSBncmFudHMgd2hhdCB0aGV5IGJlc291Z2h0LCANCitJbnN0cnVjdGVkIHRoYXQgdG8gR29kIGlzIG5vIGFjY2VzcyANCitXaXRob3V0IE1lZGlhdG9yLCB3aG9zZSBoaWdoIG9mZmljZSBub3cgDQorTW9zZXMgaW4gZmlndXJlIGJlYXJzOyB0byBpbnRyb2R1Y2UgDQorT25lIGdyZWF0ZXIsIG9mIHdob3NlIGRheSBoZSBzaGFsbCBmb3JldGVsLCANCitBbmQgYWxsIHRoZSBQcm9waGV0cyBpbiB0aGVpciBhZ2UgdGhlIHRpbWVzIA0KK09mIGdyZWF0IE1lc3NpYWggc2hhbGwgc2luZy4gIFRodXMsIGxhd3MgYW5kIHJpdGVzIA0KK0VzdGFibGlzaGVkLCBzdWNoIGRlbGlnaHQgaGF0aCBHb2QgaW4gTWVuIA0KK09iZWRpZW50IHRvIGhpcyB3aWxsLCB0aGF0IGhlIHZvdWNoc2FmZXMgDQorQW1vbmcgdGhlbSB0byBzZXQgdXAgaGlzIHRhYmVybmFjbGU7IA0KK1RoZSBIb2x5IE9uZSB3aXRoIG1vcnRhbCBNZW4gdG8gZHdlbGw6IA0KK0J5IGhpcyBwcmVzY3JpcHQgYSBzYW5jdHVhcnkgaXMgZnJhbWVkIA0KK09mIGNlZGFyLCBvdmVybGFpZCB3aXRoIGdvbGQ7IHRoZXJlaW4gDQorQW4gYXJrLCBhbmQgaW4gdGhlIGFyayBoaXMgdGVzdGltb255LCANCitUaGUgcmVjb3JkcyBvZiBoaXMgY292ZW5hbnQ7IG92ZXIgdGhlc2UgDQorQSBtZXJjeS1zZWF0IG9mIGdvbGQsIGJldHdlZW4gdGhlIHdpbmdzIA0KK09mIHR3byBicmlnaHQgQ2hlcnViaW07IGJlZm9yZSBoaW0gYnVybiANCitTZXZlbiBsYW1wcyBhcyBpbiBhIHpvZGlhY2sgcmVwcmVzZW50aW5nIA0KK1RoZSBoZWF2ZW5seSBmaXJlczsgb3ZlciB0aGUgdGVudCBhIGNsb3VkIA0KK1NoYWxsIHJlc3QgYnkgZGF5LCBhIGZpZXJ5IGdsZWFtIGJ5IG5pZ2h0OyANCitTYXZlIHdoZW4gdGhleSBqb3VybmV5LCBhbmQgYXQgbGVuZ3RoIHRoZXkgY29tZSwgDQorQ29uZHVjdGVkIGJ5IGhpcyBBbmdlbCwgdG8gdGhlIGxhbmQgDQorUHJvbWlzZWQgdG8gQWJyYWhhbSBhbmQgaGlzIHNlZWQ6LS1UaGUgcmVzdCANCitXZXJlIGxvbmcgdG8gdGVsbDsgaG93IG1hbnkgYmF0dGxlcyBmb3VnaHQgDQorSG93IG1hbnkga2luZ3MgZGVzdHJveWVkOyBhbmQga2luZ2RvbXMgd29uOyANCitPciBob3cgdGhlIHN1biBzaGFsbCBpbiBtaWQgSGVhdmVuIHN0YW5kIHN0aWxsIA0KK0EgZGF5IGVudGlyZSwgYW5kIG5pZ2h0J3MgZHVlIGNvdXJzZSBhZGpvdXJuLCANCitNYW4ncyB2b2ljZSBjb21tYW5kaW5nLCAnU3VuLCBpbiBHaWJlb24gc3RhbmQsIA0KKydBbmQgdGhvdSBtb29uIGluIHRoZSB2YWxlIG9mIEFpYWxvbiwgDQorJ1RpbGwgSXNyYWVsIG92ZXJjb21lISBzbyBjYWxsIHRoZSB0aGlyZCANCitGcm9tIEFicmFoYW0sIHNvbiBvZiBJc2FhYzsgYW5kIGZyb20gaGltIA0KK0hpcyB3aG9sZSBkZXNjZW50LCB3aG8gdGh1cyBzaGFsbCBDYW5hYW4gd2luLiANCitIZXJlIEFkYW0gaW50ZXJwb3NlZC4gIE8gc2VudCBmcm9tIEhlYXZlbiwgDQorRW5saWdodGVuZXIgb2YgbXkgZGFya25lc3MsIGdyYWNpb3VzIHRoaW5ncyANCitUaG91IGhhc3QgcmV2ZWFsZWQ7IHRob3NlIGNoaWVmbHksIHdoaWNoIGNvbmNlcm4gDQorSnVzdCBBYnJhaGFtIGFuZCBoaXMgc2VlZDogbm93IGZpcnN0IEkgZmluZCANCitNaW5lIGV5ZXMgdHJ1ZS1vcGVuaW5nLCBhbmQgbXkgaGVhcnQgbXVjaCBlYXNlZDsgDQorRXJld2hpbGUgcGVycGxleGVkIHdpdGggdGhvdWdodHMsIHdoYXQgd291bGQgYmVjb21lIA0KK09mIG1lIGFuZCBhbGwgbWFua2luZDogIEJ1dCBub3cgSSBzZWUgDQorSGlzIGRheSwgaW4gd2hvbSBhbGwgbmF0aW9ucyBzaGFsbCBiZSBibGVzdDsgDQorRmF2b3VyIHVubWVyaXRlZCBieSBtZSwgd2hvIHNvdWdodCANCitGb3JiaWRkZW4ga25vd2xlZGdlIGJ5IGZvcmJpZGRlbiBtZWFucy4gDQorVGhpcyB5ZXQgSSBhcHByZWhlbmQgbm90LCB3aHkgdG8gdGhvc2UgDQorQW1vbmcgd2hvbSBHb2Qgd2lsbCBkZWlnbiB0byBkd2VsbCBvbiBlYXJ0aCANCitTbyBtYW55IGFuZCBzbyB2YXJpb3VzIGxhd3MgYXJlIGdpdmVuOyANCitTbyBtYW55IGxhd3MgYXJndWUgc28gbWFueSBzaW5zIA0KK0Ftb25nIHRoZW07IGhvdyBjYW4gR29kIHdpdGggc3VjaCByZXNpZGU/IA0KK1RvIHdob20gdGh1cyBNaWNoYWVsLiAgRG91YnQgbm90IGJ1dCB0aGF0IHNpbiANCitXaWxsIHJlaWduIGFtb25nIHRoZW0sIGFzIG9mIHRoZWUgYmVnb3Q7IA0KK0FuZCB0aGVyZWZvcmUgd2FzIGxhdyBnaXZlbiB0aGVtLCB0byBldmluY2UgDQorVGhlaXIgbmF0dXJhbCBwcmF2aXR5LCBieSBzdGlycmluZyB1cCANCitTaW4gYWdhaW5zdCBsYXcgdG8gZmlnaHQ6IHRoYXQgd2hlbiB0aGV5IHNlZSANCitMYXcgY2FuIGRpc2NvdmVyIHNpbiwgYnV0IG5vdCByZW1vdmUsIA0KK1NhdmUgYnkgdGhvc2Ugc2hhZG93eSBleHBpYXRpb25zIHdlYWssIA0KK1RoZSBibG9vZCBvZiBidWxscyBhbmQgZ29hdHMsIHRoZXkgbWF5IGNvbmNsdWRlIA0KK1NvbWUgYmxvb2QgbW9yZSBwcmVjaW91cyBtdXN0IGJlIHBhaWQgZm9yIE1hbjsgDQorSnVzdCBmb3IgdW5qdXN0OyB0aGF0LCBpbiBzdWNoIHJpZ2h0ZW91c25lc3MgDQorVG8gdGhlbSBieSBmYWl0aCBpbXB1dGVkLCB0aGV5IG1heSBmaW5kIA0KK0p1c3RpZmljYXRpb24gdG93YXJkcyBHb2QsIGFuZCBwZWFjZSANCitPZiBjb25zY2llbmNlOyB3aGljaCB0aGUgbGF3IGJ5IGNlcmVtb25pZXMgDQorQ2Fubm90IGFwcGVhc2U7IG5vciBNYW4gdGhlIG1vcnRhbCBwYXJ0IA0KK1BlcmZvcm07IGFuZCwgbm90IHBlcmZvcm1pbmcsIGNhbm5vdCBsaXZlLiANCitTbyBsYXcgYXBwZWFycyBpbXBlcmZlY3Q7IGFuZCBidXQgZ2l2ZW4gDQorV2l0aCBwdXJwb3NlIHRvIHJlc2lnbiB0aGVtLCBpbiBmdWxsIHRpbWUsIA0KK1VwIHRvIGEgYmV0dGVyIGNvdmVuYW50OyBkaXNjaXBsaW5lZCANCitGcm9tIHNoYWRvd3kgdHlwZXMgdG8gdHJ1dGg7IGZyb20gZmxlc2ggdG8gc3Bpcml0OyANCitGcm9tIGltcG9zaXRpb24gb2Ygc3RyaWN0IGxhd3MgdG8gZnJlZSANCitBY2NlcHRhbmNlIG9mIGxhcmdlIGdyYWNlOyBmcm9tIHNlcnZpbGUgZmVhciANCitUbyBmaWxpYWw7IHdvcmtzIG9mIGxhdyB0byB3b3JrcyBvZiBmYWl0aC4gDQorQW5kIHRoZXJlZm9yZSBzaGFsbCBub3QgTW9zZXMsIHRob3VnaCBvZiBHb2QgDQorSGlnaGx5IGJlbG92ZWQsIGJlaW5nIGJ1dCB0aGUgbWluaXN0ZXIgDQorT2YgbGF3LCBoaXMgcGVvcGxlIGludG8gQ2FuYWFuIGxlYWQ7IA0KK0J1dCBKb3NodWEsIHdob20gdGhlIEdlbnRpbGVzIEplc3VzIGNhbGwsIA0KK0hpcyBuYW1lIGFuZCBvZmZpY2UgYmVhcmluZywgd2hvIHNoYWxsIHF1ZWxsIA0KK1RoZSBhZHZlcnNhcnktU2VycGVudCwgYW5kIGJyaW5nIGJhY2sgDQorVGhyb3VnaCB0aGUgd29ybGQncyB3aWxkZXJuZXNzIGxvbmctd2FuZGVyZWQgTWFuIA0KK1NhZmUgdG8gZXRlcm5hbCBQYXJhZGlzZSBvZiByZXN0LiANCitNZWFuIHdoaWxlIHRoZXksIGluIHRoZWlyIGVhcnRobHkgQ2FuYWFuIHBsYWNlZCwgDQorTG9uZyB0aW1lIHNoYWxsIGR3ZWxsIGFuZCBwcm9zcGVyLCBidXQgd2hlbiBzaW5zIA0KK05hdGlvbmFsIGludGVycnVwdCB0aGVpciBwdWJsaWNrIHBlYWNlLCANCitQcm92b2tpbmcgR29kIHRvIHJhaXNlIHRoZW0gZW5lbWllczsgDQorRnJvbSB3aG9tIGFzIG9mdCBoZSBzYXZlcyB0aGVtIHBlbml0ZW50IA0KK0J5IEp1ZGdlcyBmaXJzdCwgdGhlbiB1bmRlciBLaW5nczsgb2Ygd2hvbSANCitUaGUgc2Vjb25kLCBib3RoIGZvciBwaWV0eSByZW5vd25lZCANCitBbmQgcHVpc3NhbnQgZGVlZHMsIGEgcHJvbWlzZSBzaGFsbCByZWNlaXZlIA0KK0lycmV2b2NhYmxlLCB0aGF0IGhpcyByZWdhbCB0aHJvbmUgDQorRm9yIGV2ZXIgc2hhbGwgZW5kdXJlOyB0aGUgbGlrZSBzaGFsbCBzaW5nIA0KK0FsbCBQcm9waGVjeSwgdGhhdCBvZiB0aGUgcm95YWwgc3RvY2sgDQorT2YgRGF2aWQgKHNvIEkgbmFtZSB0aGlzIGtpbmcpIHNoYWxsIHJpc2UgDQorQSBTb24sIHRoZSBXb21hbidzIHNlZWQgdG8gdGhlZSBmb3JldG9sZCwgDQorRm9yZXRvbGQgdG8gQWJyYWhhbSwgYXMgaW4gd2hvbSBzaGFsbCB0cnVzdCANCitBbGwgbmF0aW9uczsgYW5kIHRvIGtpbmdzIGZvcmV0b2xkLCBvZiBraW5ncyANCitUaGUgbGFzdDsgZm9yIG9mIGhpcyByZWlnbiBzaGFsbCBiZSBubyBlbmQuIA0KK0J1dCBmaXJzdCwgYSBsb25nIHN1Y2Nlc3Npb24gbXVzdCBlbnN1ZTsgDQorQW5kIGhpcyBuZXh0IHNvbiwgZm9yIHdlYWx0aCBhbmQgd2lzZG9tIGZhbWVkLCANCitUaGUgY2xvdWRlZCBhcmsgb2YgR29kLCB0aWxsIHRoZW4gaW4gdGVudHMgDQorV2FuZGVyaW5nLCBzaGFsbCBpbiBhIGdsb3Jpb3VzIHRlbXBsZSBlbnNocmluZS4gDQorU3VjaCBmb2xsb3cgaGltLCBhcyBzaGFsbCBiZSByZWdpc3RlcmVkIA0KK1BhcnQgZ29vZCwgcGFydCBiYWQ7IG9mIGJhZCB0aGUgbG9uZ2VyIHNjcm9sbDsgDQorV2hvc2UgZm91bCBpZG9sYXRyaWVzLCBhbmQgb3RoZXIgZmF1bHRzIA0KK0hlYXBlZCB0byB0aGUgcG9wdWxhciBzdW0sIHdpbGwgc28gaW5jZW5zZSANCitHb2QsIGFzIHRvIGxlYXZlIHRoZW0sIGFuZCBleHBvc2UgdGhlaXIgbGFuZCwgDQorVGhlaXIgY2l0eSwgaGlzIHRlbXBsZSwgYW5kIGhpcyBob2x5IGFyaywgDQorV2l0aCBhbGwgaGlzIHNhY3JlZCB0aGluZ3MsIGEgc2Nvcm4gYW5kIHByZXkgDQorVG8gdGhhdCBwcm91ZCBjaXR5LCB3aG9zZSBoaWdoIHdhbGxzIHRob3Ugc2F3ZXN0IA0KK0xlZnQgaW4gY29uZnVzaW9uOyBCYWJ5bG9uIHRoZW5jZSBjYWxsZWQuIA0KK1RoZXJlIGluIGNhcHRpdml0eSBoZSBsZXRzIHRoZW0gZHdlbGwgDQorVGhlIHNwYWNlIG9mIHNldmVudHkgeWVhcnM7IHRoZW4gYnJpbmdzIHRoZW0gYmFjaywgDQorUmVtZW1iZXJpbmcgbWVyY3ksIGFuZCBoaXMgY292ZW5hbnQgc3dvcm4gDQorVG8gRGF2aWQsIHN0YWJsaXNoZWQgYXMgdGhlIGRheXMgb2YgSGVhdmVuLiANCitSZXR1cm5lZCBmcm9tIEJhYnlsb24gYnkgbGVhdmUgb2Yga2luZ3MgDQorVGhlaXIgbG9yZHMsIHdob20gR29kIGRpc3Bvc2VkLCB0aGUgaG91c2Ugb2YgR29kIA0KK1RoZXkgZmlyc3QgcmUtZWRpZnk7IGFuZCBmb3IgYSB3aGlsZSANCitJbiBtZWFuIGVzdGF0ZSBsaXZlIG1vZGVyYXRlOyB0aWxsLCBncm93biANCitJbiB3ZWFsdGggYW5kIG11bHRpdHVkZSwgZmFjdGlvdXMgdGhleSBncm93OyANCitCdXQgZmlyc3QgYW1vbmcgdGhlIHByaWVzdHMgZGlzc2VudGlvbiBzcHJpbmdzLCANCitNZW4gd2hvIGF0dGVuZCB0aGUgYWx0YXIsIGFuZCBzaG91bGQgbW9zdCANCitFbmRlYXZvdXIgcGVhY2U6IHRoZWlyIHN0cmlmZSBwb2xsdXRpb24gYnJpbmdzIA0KK1Vwb24gdGhlIHRlbXBsZSBpdHNlbGY6IGF0IGxhc3QgdGhleSBzZWlzZSANCitUaGUgc2NlcHRlciwgYW5kIHJlZ2FyZCBub3QgRGF2aWQncyBzb25zOyANCitUaGVuIGxvc2UgaXQgdG8gYSBzdHJhbmdlciwgdGhhdCB0aGUgdHJ1ZSANCitBbm9pbnRlZCBLaW5nIE1lc3NpYWggbWlnaHQgYmUgYm9ybiANCitCYXJyZWQgb2YgaGlzIHJpZ2h0OyB5ZXQgYXQgaGlzIGJpcnRoIGEgc3RhciwgDQorVW5zZWVuIGJlZm9yZSBpbiBIZWF2ZW4sIHByb2NsYWltcyBoaW0gY29tZTsgDQorQW5kIGd1aWRlcyB0aGUgZWFzdGVybiBzYWdlcywgd2hvIGlucXVpcmUgDQorSGlzIHBsYWNlLCB0byBvZmZlciBpbmNlbnNlLCBteXJyaCwgYW5kIGdvbGQ6IA0KK0hpcyBwbGFjZSBvZiBiaXJ0aCBhIHNvbGVtbiBBbmdlbCB0ZWxscyANCitUbyBzaW1wbGUgc2hlcGhlcmRzLCBrZWVwaW5nIHdhdGNoIGJ5IG5pZ2h0OyANCitUaGV5IGdsYWRseSB0aGl0aGVyIGhhc3RlLCBhbmQgYnkgYSBxdWlyZSANCitPZiBzcXVhZHJvbmVkIEFuZ2VscyBoZWFyIGhpcyBjYXJvbCBzdW5nLiANCitBIHZpcmdpbiBpcyBoaXMgbW90aGVyLCBidXQgaGlzIHNpcmUgDQorVGhlIHBvd2VyIG9mIHRoZSBNb3N0IEhpZ2g6ICBIZSBzaGFsbCBhc2NlbmQgDQorVGhlIHRocm9uZSBoZXJlZGl0YXJ5LCBhbmQgYm91bmQgaGlzIHJlaWduIA0KK1dpdGggRWFydGgncyB3aWRlIGJvdW5kcywgaGlzIGdsb3J5IHdpdGggdGhlIEhlYXZlbnMuIA0KK0hlIGNlYXNlZCwgZGlzY2VybmluZyBBZGFtIHdpdGggc3VjaCBqb3kgDQorU3VyY2hhcmdlZCwgYXMgaGFkIGxpa2UgZ3JpZWYgYmVlbiBkZXdlZCBpbiB0ZWFycywgDQorV2l0aG91dCB0aGUgdmVudCBvZiB3b3Jkczsgd2hpY2ggdGhlc2UgaGUgYnJlYXRoZWQuIA0KK08gcHJvcGhldCBvZiBnbGFkIHRpZGluZ3MsIGZpbmlzaGVyIA0KK09mIHV0bW9zdCBob3BlISBub3cgY2xlYXIgSSB1bmRlcnN0YW5kIA0KK1doYXQgb2Z0IG15IHN0ZWFkaWVzdCB0aG91Z2h0cyBoYXZlIHNlYXJjaGVkIGluIHZhaW47IA0KK1doeSBvdXIgZ3JlYXQgRXhwZWN0YXRpb24gc2hvdWxkIGJlIGNhbGxlZCANCitUaGUgc2VlZCBvZiBXb21hbjogIFZpcmdpbiBNb3RoZXIsIGhhaWwsIA0KK0hpZ2ggaW4gdGhlIGxvdmUgb2YgSGVhdmVuOyB5ZXQgZnJvbSBteSBsb2lucyANCitUaG91IHNoYWx0IHByb2NlZWQsIGFuZCBmcm9tIHRoeSB3b21iIHRoZSBTb24gDQorT2YgR29kIE1vc3QgSGlnaDogc28gR29kIHdpdGggTWFuIHVuaXRlcyEgDQorTmVlZHMgbXVzdCB0aGUgU2VycGVudCBub3cgaGlzIGNhcGl0YWwgYnJ1aXNlIA0KK0V4cGVjdCB3aXRoIG1vcnRhbCBwYWluOiAgU2F5IHdoZXJlIGFuZCB3aGVuIA0KK1RoZWlyIGZpZ2h0LCB3aGF0IHN0cm9rZSBzaGFsbCBicnVpc2UgdGhlIHZpY3RvcidzIGhlZWwuIA0KK1RvIHdob20gdGh1cyBNaWNoYWVsLiAgRHJlYW0gbm90IG9mIHRoZWlyIGZpZ2h0LCANCitBcyBvZiBhIGR1ZWwsIG9yIHRoZSBsb2NhbCB3b3VuZHMgDQorT2YgaGVhZCBvciBoZWVsOiAgTm90IHRoZXJlZm9yZSBqb2lucyB0aGUgU29uIA0KK01hbmhvb2QgdG8gR29kaGVhZCwgd2l0aCBtb3JlIHN0cmVuZ3RoIHRvIGZvaWwgDQorVGh5IGVuZW15OyBub3Igc28gaXMgb3ZlcmNvbWUgDQorU2F0YW4sIHdob3NlIGZhbGwgZnJvbSBIZWF2ZW4sIGEgZGVhZGxpZXIgYnJ1aXNlLCANCitEaXNhYmxlZCwgbm90IHRvIGdpdmUgdGhlZSB0aHkgZGVhdGgncyB3b3VuZDogDQorV2hpY2ggaGUsIHdobyBjb21lcyB0aHkgU2F2aW91ciwgc2hhbGwgcmVjdXJlLCANCitOb3QgYnkgZGVzdHJveWluZyBTYXRhbiwgYnV0IGhpcyB3b3JrcyANCitJbiB0aGVlLCBhbmQgaW4gdGh5IHNlZWQ6ICBOb3IgY2FuIHRoaXMgYmUsIA0KK0J1dCBieSBmdWxmaWxsaW5nIHRoYXQgd2hpY2ggdGhvdSBkaWRzdCB3YW50LCANCitPYmVkaWVuY2UgdG8gdGhlIGxhdyBvZiBHb2QsIGltcG9zZWQgDQorT24gcGVuYWx0eSBvZiBkZWF0aCwgYW5kIHN1ZmZlcmluZyBkZWF0aDsgDQorVGhlIHBlbmFsdHkgdG8gdGh5IHRyYW5zZ3Jlc3Npb24gZHVlLCANCitBbmQgZHVlIHRvIHRoZWlycyB3aGljaCBvdXQgb2YgdGhpbmUgd2lsbCBncm93OiANCitTbyBvbmx5IGNhbiBoaWdoIEp1c3RpY2UgcmVzdCBhcHBhaWQuIA0KK1RoZSBsYXcgb2YgR29kIGV4YWN0IGhlIHNoYWxsIGZ1bGZpbCANCitCb3RoIGJ5IG9iZWRpZW5jZSBhbmQgYnkgbG92ZSwgdGhvdWdoIGxvdmUgDQorQWxvbmUgZnVsZmlsIHRoZSBsYXc7IHRoeSBwdW5pc2htZW50IA0KK0hlIHNoYWxsIGVuZHVyZSwgYnkgY29taW5nIGluIHRoZSBmbGVzaCANCitUbyBhIHJlcHJvYWNoZnVsIGxpZmUsIGFuZCBjdXJzZWQgZGVhdGg7IA0KK1Byb2NsYWltaW5nIGxpZmUgdG8gYWxsIHdobyBzaGFsbCBiZWxpZXZlIA0KK0luIGhpcyByZWRlbXB0aW9uOyBhbmQgdGhhdCBoaXMgb2JlZGllbmNlLCANCitJbXB1dGVkLCBiZWNvbWVzIHRoZWlycyBieSBmYWl0aDsgaGlzIG1lcml0cyANCitUbyBzYXZlIHRoZW0sIG5vdCB0aGVpciBvd24sIHRob3VnaCBsZWdhbCwgd29ya3MuIA0KK0ZvciB0aGlzIGhlIHNoYWxsIGxpdmUgaGF0ZWQsIGJlIGJsYXNwaGVtZWQsIA0KK1NlaXNlZCBvbiBieSBmb3JjZSwganVkZ2VkLCBhbmQgdG8gZGVhdGggY29uZGVtbmVkIA0KK0Egc2hhbWVmdWwgYW5kIGFjY3Vyc2VkLCBuYWlsZWQgdG8gdGhlIGNyb3NzIA0KK0J5IGhpcyBvd24gbmF0aW9uOyBzbGFpbiBmb3IgYnJpbmdpbmcgbGlmZTogDQorQnV0IHRvIHRoZSBjcm9zcyBoZSBuYWlscyB0aHkgZW5lbWllcywgDQorVGhlIGxhdyB0aGF0IGlzIGFnYWluc3QgdGhlZSwgYW5kIHRoZSBzaW5zIA0KK09mIGFsbCBtYW5raW5kLCB3aXRoIGhpbSB0aGVyZSBjcnVjaWZpZWQsIA0KK05ldmVyIHRvIGh1cnQgdGhlbSBtb3JlIHdobyByaWdodGx5IHRydXN0IA0KK0luIHRoaXMgaGlzIHNhdGlzZmFjdGlvbjsgc28gaGUgZGllcywgDQorQnV0IHNvb24gcmV2aXZlczsgRGVhdGggb3ZlciBoaW0gbm8gcG93ZXIgDQorU2hhbGwgbG9uZyB1c3VycDsgZXJlIHRoZSB0aGlyZCBkYXduaW5nIGxpZ2h0IA0KK1JldHVybiwgdGhlIHN0YXJzIG9mIG1vcm4gc2hhbGwgc2VlIGhpbSByaXNlIA0KK091dCBvZiBoaXMgZ3JhdmUsIGZyZXNoIGFzIHRoZSBkYXduaW5nIGxpZ2h0LCANCitUaHkgcmFuc29tIHBhaWQsIHdoaWNoIE1hbiBmcm9tIGRlYXRoIHJlZGVlbXMsIA0KK0hpcyBkZWF0aCBmb3IgTWFuLCBhcyBtYW55IGFzIG9mZmVyZWQgbGlmZSANCitOZWdsZWN0IG5vdCwgYW5kIHRoZSBiZW5lZml0IGVtYnJhY2UgDQorQnkgZmFpdGggbm90IHZvaWQgb2Ygd29ya3M6ICBUaGlzIEdvZC1saWtlIGFjdCANCitBbm51bHMgdGh5IGRvb20sIHRoZSBkZWF0aCB0aG91IHNob3VsZGVzdCBoYXZlIGRpZWQsIA0KK0luIHNpbiBmb3IgZXZlciBsb3N0IGZyb20gbGlmZTsgdGhpcyBhY3QgDQorU2hhbGwgYnJ1aXNlIHRoZSBoZWFkIG9mIFNhdGFuLCBjcnVzaCBoaXMgc3RyZW5ndGgsIA0KK0RlZmVhdGluZyBTaW4gYW5kIERlYXRoLCBoaXMgdHdvIG1haW4gYXJtczsgDQorQW5kIGZpeCBmYXIgZGVlcGVyIGluIGhpcyBoZWFkIHRoZWlyIHN0aW5ncyANCitUaGFuIHRlbXBvcmFsIGRlYXRoIHNoYWxsIGJydWlzZSB0aGUgdmljdG9yJ3MgaGVlbCwgDQorT3IgdGhlaXJzIHdob20gaGUgcmVkZWVtczsgYSBkZWF0aCwgbGlrZSBzbGVlcCwgDQorQSBnZW50bGUgd2FmdGluZyB0byBpbW1vcnRhbCBsaWZlLiANCitOb3IgYWZ0ZXIgcmVzdXJyZWN0aW9uIHNoYWxsIGhlIHN0YXkgDQorTG9uZ2VyIG9uIGVhcnRoLCB0aGFuIGNlcnRhaW4gdGltZXMgdG8gYXBwZWFyIA0KK1RvIGhpcyBkaXNjaXBsZXMsIG1lbiB3aG8gaW4gaGlzIGxpZmUgDQorU3RpbGwgZm9sbG93ZWQgaGltOyB0byB0aGVtIHNoYWxsIGxlYXZlIGluIGNoYXJnZSANCitUbyB0ZWFjaCBhbGwgbmF0aW9ucyB3aGF0IG9mIGhpbSB0aGV5IGxlYXJuZWQgDQorQW5kIGhpcyBzYWx2YXRpb247IHRoZW0gd2hvIHNoYWxsIGJlbGlldmUgDQorQmFwdGl6aW5nIGluIHRoZSBwcm9mbHVlbnQgc3RyZWFtLCB0aGUgc2lnbiANCitPZiB3YXNoaW5nIHRoZW0gZnJvbSBndWlsdCBvZiBzaW4gdG8gbGlmZSANCitQdXJlLCBhbmQgaW4gbWluZCBwcmVwYXJlZCwgaWYgc28gYmVmYWxsLCANCitGb3IgZGVhdGgsIGxpa2UgdGhhdCB3aGljaCB0aGUgUmVkZWVtZXIgZGllZC4gDQorQWxsIG5hdGlvbnMgdGhleSBzaGFsbCB0ZWFjaDsgZm9yLCBmcm9tIHRoYXQgZGF5LCANCitOb3Qgb25seSB0byB0aGUgc29ucyBvZiBBYnJhaGFtJ3MgbG9pbnMgDQorU2FsdmF0aW9uIHNoYWxsIGJlIHByZWFjaGVkLCBidXQgdG8gdGhlIHNvbnMgDQorT2YgQWJyYWhhbSdzIGZhaXRoIHdoZXJldmVyIHRocm91Z2ggdGhlIHdvcmxkOyANCitTbyBpbiBoaXMgc2VlZCBhbGwgbmF0aW9ucyBzaGFsbCBiZSBibGVzdC4gDQorVGhlbiB0byB0aGUgSGVhdmVuIG9mIEhlYXZlbnMgaGUgc2hhbGwgYXNjZW5kIA0KK1dpdGggdmljdG9yeSwgdHJpdW1waGluZyB0aHJvdWdoIHRoZSBhaXIgDQorT3ZlciBoaXMgZm9lcyBhbmQgdGhpbmU7IHRoZXJlIHNoYWxsIHN1cnByaXNlIA0KK1RoZSBTZXJwZW50LCBwcmluY2Ugb2YgYWlyLCBhbmQgZHJhZyBpbiBjaGFpbnMgDQorVGhyb3VnaCBhbGwgaGlzIHJlYWxtLCBhbmQgdGhlcmUgY29uZm91bmRlZCBsZWF2ZTsgDQorVGhlbiBlbnRlciBpbnRvIGdsb3J5LCBhbmQgcmVzdW1lIA0KK0hpcyBzZWF0IGF0IEdvZCdzIHJpZ2h0IGhhbmQsIGV4YWx0ZWQgaGlnaCANCitBYm92ZSBhbGwgbmFtZXMgaW4gSGVhdmVuOyBhbmQgdGhlbmNlIHNoYWxsIGNvbWUsIA0KK1doZW4gdGhpcyB3b3JsZCdzIGRpc3NvbHV0aW9uIHNoYWxsIGJlIHJpcGUsIA0KK1dpdGggZ2xvcnkgYW5kIHBvd2VyIHRvIGp1ZGdlIGJvdGggcXVpY2sgYW5kIGRlYWQ7IA0KK1RvIGp1ZGdlIHRoZSB1bmZhaXRoZnVsIGRlYWQsIGJ1dCB0byByZXdhcmQgDQorSGlzIGZhaXRoZnVsLCBhbmQgcmVjZWl2ZSB0aGVtIGludG8gYmxpc3MsIA0KK1doZXRoZXIgaW4gSGVhdmVuIG9yIEVhcnRoOyBmb3IgdGhlbiB0aGUgRWFydGggDQorU2hhbGwgYWxsIGJlIFBhcmFkaXNlLCBmYXIgaGFwcGllciBwbGFjZSANCitUaGFuIHRoaXMgb2YgRWRlbiwgYW5kIGZhciBoYXBwaWVyIGRheXMuIA0KK1NvIHNwYWtlIHRoZSBBcmNoLUFuZ2VsIE1pY2hhZWw7IHRoZW4gcGF1c2VkLCANCitBcyBhdCB0aGUgd29ybGQncyBncmVhdCBwZXJpb2Q7IGFuZCBvdXIgc2lyZSwgDQorUmVwbGV0ZSB3aXRoIGpveSBhbmQgd29uZGVyLCB0aHVzIHJlcGxpZWQuIA0KK08gR29vZG5lc3MgaW5maW5pdGUsIEdvb2RuZXNzIGltbWVuc2UhIA0KK1RoYXQgYWxsIHRoaXMgZ29vZCBvZiBldmlsIHNoYWxsIHByb2R1Y2UsIA0KK0FuZCBldmlsIHR1cm4gdG8gZ29vZDsgbW9yZSB3b25kZXJmdWwgDQorVGhhbiB0aGF0IHdoaWNoIGJ5IGNyZWF0aW9uIGZpcnN0IGJyb3VnaHQgZm9ydGggDQorTGlnaHQgb3V0IG9mIGRhcmtuZXNzISAgRnVsbCBvZiBkb3VidCBJIHN0YW5kLCANCitXaGV0aGVyIEkgc2hvdWxkIHJlcGVudCBtZSBub3cgb2Ygc2luIA0KK0J5IG1lIGRvbmUsIGFuZCBvY2Nhc2lvbmVkOyBvciByZWpvaWNlIA0KK011Y2ggbW9yZSwgdGhhdCBtdWNoIG1vcmUgZ29vZCB0aGVyZW9mIHNoYWxsIHNwcmluZzsgDQorVG8gR29kIG1vcmUgZ2xvcnksIG1vcmUgZ29vZC13aWxsIHRvIE1lbiANCitGcm9tIEdvZCwgYW5kIG92ZXIgd3JhdGggZ3JhY2Ugc2hhbGwgYWJvdW5kLiANCitCdXQgc2F5LCBpZiBvdXIgRGVsaXZlcmVyIHVwIHRvIEhlYXZlbiANCitNdXN0IHJlLWFzY2VuZCwgd2hhdCB3aWxsIGJldGlkZSB0aGUgZmV3IA0KK0hpcyBmYWl0aGZ1bCwgbGVmdCBhbW9uZyB0aGUgdW5mYWl0aGZ1bCBoZXJkLCANCitUaGUgZW5lbWllcyBvZiB0cnV0aD8gIFdobyB0aGVuIHNoYWxsIGd1aWRlIA0KK0hpcyBwZW9wbGUsIHdobyBkZWZlbmQ/ICBXaWxsIHRoZXkgbm90IGRlYWwgDQorV29yc2Ugd2l0aCBoaXMgZm9sbG93ZXJzIHRoYW4gd2l0aCBoaW0gdGhleSBkZWFsdD8gDQorQmUgc3VyZSB0aGV5IHdpbGwsIHNhaWQgdGhlIEFuZ2VsOyBidXQgZnJvbSBIZWF2ZW4gDQorSGUgdG8gaGlzIG93biBhIENvbWZvcnRlciB3aWxsIHNlbmQsIA0KK1RoZSBwcm9taXNlIG9mIHRoZSBGYXRoZXIsIHdobyBzaGFsbCBkd2VsbCANCitIaXMgU3Bpcml0IHdpdGhpbiB0aGVtOyBhbmQgdGhlIGxhdyBvZiBmYWl0aCwgDQorV29ya2luZyB0aHJvdWdoIGxvdmUsIHVwb24gdGhlaXIgaGVhcnRzIHNoYWxsIHdyaXRlLCANCitUbyBndWlkZSB0aGVtIGluIGFsbCB0cnV0aDsgYW5kIGFsc28gYXJtIA0KK1dpdGggc3Bpcml0dWFsIGFybW91ciwgYWJsZSB0byByZXNpc3QgDQorU2F0YW4ncyBhc3NhdWx0cywgYW5kIHF1ZW5jaCBoaXMgZmllcnkgZGFydHM7IA0KK1doYXQgbWFuIGNhbiBkbyBhZ2FpbnN0IHRoZW0sIG5vdCBhZnJhaWQsIA0KK1Rob3VnaCB0byB0aGUgZGVhdGg7IGFnYWluc3Qgc3VjaCBjcnVlbHRpZXMgDQorV2l0aCBpbndhcmQgY29uc29sYXRpb25zIHJlY29tcGVuc2VkLCANCitBbmQgb2Z0IHN1cHBvcnRlZCBzbyBhcyBzaGFsbCBhbWF6ZSANCitUaGVpciBwcm91ZGVzdCBwZXJzZWN1dG9yczogIEZvciB0aGUgU3Bpcml0LCANCitQb3VyZWQgZmlyc3Qgb24gaGlzIEFwb3N0bGVzLCB3aG9tIGhlIHNlbmRzIA0KK1RvIGV2YW5nZWxpemUgdGhlIG5hdGlvbnMsIHRoZW4gb24gYWxsIA0KK0JhcHRpemVkLCBzaGFsbCB0aGVtIHdpdGggd29uZGVyb3VzIGdpZnRzIGVuZHVlIA0KK1RvIHNwZWFrIGFsbCB0b25ndWVzLCBhbmQgZG8gYWxsIG1pcmFjbGVzLCANCitBcyBkaWQgdGhlaXIgTG9yZCBiZWZvcmUgdGhlbS4gIFRodXMgdGhleSB3aW4gDQorR3JlYXQgbnVtYmVycyBvZiBlYWNoIG5hdGlvbiB0byByZWNlaXZlIA0KK1dpdGggam95IHRoZSB0aWRpbmdzIGJyb3VnaHQgZnJvbSBIZWF2ZW46ICBBdCBsZW5ndGggDQorVGhlaXIgbWluaXN0cnkgcGVyZm9ybWVkLCBhbmQgcmFjZSB3ZWxsIHJ1biwgDQorVGhlaXIgZG9jdHJpbmUgYW5kIHRoZWlyIHN0b3J5IHdyaXR0ZW4gbGVmdCwgDQorVGhleSBkaWU7IGJ1dCBpbiB0aGVpciByb29tLCBhcyB0aGV5IGZvcmV3YXJuLCANCitXb2x2ZXMgc2hhbGwgc3VjY2VlZCBmb3IgdGVhY2hlcnMsIGdyaWV2b3VzIHdvbHZlcywgDQorV2hvIGFsbCB0aGUgc2FjcmVkIG15c3RlcmllcyBvZiBIZWF2ZW4gDQorVG8gdGhlaXIgb3duIHZpbGUgYWR2YW50YWdlcyBzaGFsbCB0dXJuIA0KK09mIGx1Y3JlIGFuZCBhbWJpdGlvbjsgYW5kIHRoZSB0cnV0aCANCitXaXRoIHN1cGVyc3RpdGlvbnMgYW5kIHRyYWRpdGlvbnMgdGFpbnQsIA0KK0xlZnQgb25seSBpbiB0aG9zZSB3cml0dGVuIHJlY29yZHMgcHVyZSwgDQorVGhvdWdoIG5vdCBidXQgYnkgdGhlIFNwaXJpdCB1bmRlcnN0b29kLiANCitUaGVuIHNoYWxsIHRoZXkgc2VlayB0byBhdmFpbCB0aGVtc2VsdmVzIG9mIG5hbWVzLCANCitQbGFjZXMsIGFuZCB0aXRsZXMsIGFuZCB3aXRoIHRoZXNlIHRvIGpvaW4gDQorU2VjdWxhciBwb3dlcjsgdGhvdWdoIGZlaWduaW5nIHN0aWxsIHRvIGFjdCANCitCeSBzcGlyaXR1YWwsIHRvIHRoZW1zZWx2ZXMgYXBwcm9wcmlhdGluZyANCitUaGUgU3Bpcml0IG9mIEdvZCwgcHJvbWlzZWQgYWxpa2UgYW5kIGdpdmVuIA0KK1RvIGFsbCBiZWxpZXZlcnM7IGFuZCwgZnJvbSB0aGF0IHByZXRlbmNlLCANCitTcGlyaXR1YWwgbGF3cyBieSBjYXJuYWwgcG93ZXIgc2hhbGwgZm9yY2UgDQorT24gZXZlcnkgY29uc2NpZW5jZTsgbGF3cyB3aGljaCBub25lIHNoYWxsIGZpbmQgDQorTGVmdCB0aGVtIGlucm9sbGVkLCBvciB3aGF0IHRoZSBTcGlyaXQgd2l0aGluIA0KK1NoYWxsIG9uIHRoZSBoZWFydCBlbmdyYXZlLiAgV2hhdCB3aWxsIHRoZXkgdGhlbiANCitCdXQgZm9yY2UgdGhlIFNwaXJpdCBvZiBHcmFjZSBpdHNlbGYsIGFuZCBiaW5kIA0KK0hpcyBjb25zb3J0IExpYmVydHk/IHdoYXQsIGJ1dCB1bmJ1aWxkIA0KK0hpcyBsaXZpbmcgdGVtcGxlcywgYnVpbHQgYnkgZmFpdGggdG8gc3RhbmQsIA0KK1RoZWlyIG93biBmYWl0aCwgbm90IGFub3RoZXIncz8gZm9yLCBvbiBlYXJ0aCwgDQorV2hvIGFnYWluc3QgZmFpdGggYW5kIGNvbnNjaWVuY2UgY2FuIGJlIGhlYXJkIA0KK0luZmFsbGlibGU/IHlldCBtYW55IHdpbGwgcHJlc3VtZTogDQorV2hlbmNlIGhlYXZ5IHBlcnNlY3V0aW9uIHNoYWxsIGFyaXNlIA0KK09uIGFsbCwgd2hvIGluIHRoZSB3b3JzaGlwIHBlcnNldmVyZSANCitPZiBzcGlyaXQgYW5kIHRydXRoOyB0aGUgcmVzdCwgZmFyIGdyZWF0ZXIgcGFydCwgDQorV2lsbCBkZWVtIGluIG91dHdhcmQgcml0ZXMgYW5kIHNwZWNpb3VzIGZvcm1zIA0KK1JlbGlnaW9uIHNhdGlzZmllZDsgVHJ1dGggc2hhbGwgcmV0aXJlIA0KK0Jlc3R1Y2sgd2l0aCBzbGFuZGVyb3VzIGRhcnRzLCBhbmQgd29ya3Mgb2YgZmFpdGggDQorUmFyZWx5IGJlIGZvdW5kOiAgU28gc2hhbGwgdGhlIHdvcmxkIGdvIG9uLCANCitUbyBnb29kIG1hbGlnbmFudCwgdG8gYmFkIG1lbiBiZW5pZ247IA0KK1VuZGVyIGhlciBvd24gd2VpZ2h0IGdyb2FuaW5nOyB0aWxsIHRoZSBkYXkgDQorQXBwZWFyIG9mIHJlc3BpcmF0aW9uIHRvIHRoZSBqdXN0LCANCitBbmQgdmVuZ2VhbmNlIHRvIHRoZSB3aWNrZWQsIGF0IHJldHVybiANCitPZiBoaW0gc28gbGF0ZWx5IHByb21pc2VkIHRvIHRoeSBhaWQsIA0KK1RoZSBXb21hbidzIFNlZWQ7IG9ic2N1cmVseSB0aGVuIGZvcmV0b2xkLCANCitOb3cgYW1wbGVyIGtub3duIHRoeSBTYXZpb3VyIGFuZCB0aHkgTG9yZDsgDQorTGFzdCwgaW4gdGhlIGNsb3VkcywgZnJvbSBIZWF2ZW4gdG8gYmUgcmV2ZWFsZWQgDQorSW4gZ2xvcnkgb2YgdGhlIEZhdGhlciwgdG8gZGlzc29sdmUgDQorU2F0YW4gd2l0aCBoaXMgcGVydmVydGVkIHdvcmxkOyB0aGVuIHJhaXNlIA0KK0Zyb20gdGhlIGNvbmZsYWdyYW50IG1hc3MsIHB1cmdlZCBhbmQgcmVmaW5lZCwgDQorTmV3IEhlYXZlbnMsIG5ldyBFYXJ0aCwgYWdlcyBvZiBlbmRsZXNzIGRhdGUsIA0KK0ZvdW5kZWQgaW4gcmlnaHRlb3VzbmVzcywgYW5kIHBlYWNlLCBhbmQgbG92ZTsgDQorVG8gYnJpbmcgZm9ydGggZnJ1aXRzLCBqb3kgYW5kIGV0ZXJuYWwgYmxpc3MuIA0KK0hlIGVuZGVkOyBhbmQgdGh1cyBBZGFtIGxhc3QgcmVwbGllZC4gDQorSG93IHNvb24gaGF0aCB0aHkgcHJlZGljdGlvbiwgU2VlciBibGVzdCwgDQorTWVhc3VyZWQgdGhpcyB0cmFuc2llbnQgd29ybGQsIHRoZSByYWNlIG9mIHRpbWUsIA0KK1RpbGwgdGltZSBzdGFuZCBmaXhlZCEgIEJleW9uZCBpcyBhbGwgYWJ5c3MsIA0KK0V0ZXJuaXR5LCB3aG9zZSBlbmQgbm8gZXllIGNhbiByZWFjaC4gDQorR3JlYXRseS1pbnN0cnVjdGVkIEkgc2hhbGwgaGVuY2UgZGVwYXJ0OyANCitHcmVhdGx5IGluIHBlYWNlIG9mIHRob3VnaHQ7IGFuZCBoYXZlIG15IGZpbGwgDQorT2Yga25vd2xlZGdlLCB3aGF0IHRoaXMgdmVzc2VsIGNhbiBjb250YWluOyANCitCZXlvbmQgd2hpY2ggd2FzIG15IGZvbGx5IHRvIGFzcGlyZS4gDQorSGVuY2Vmb3J0aCBJIGxlYXJuLCB0aGF0IHRvIG9iZXkgaXMgYmVzdCwgDQorQW5kIGxvdmUgd2l0aCBmZWFyIHRoZSBvbmx5IEdvZDsgdG8gd2FsayANCitBcyBpbiBoaXMgcHJlc2VuY2U7IGV2ZXIgdG8gb2JzZXJ2ZSANCitIaXMgcHJvdmlkZW5jZTsgYW5kIG9uIGhpbSBzb2xlIGRlcGVuZCwgDQorTWVyY2lmdWwgb3ZlciBhbGwgaGlzIHdvcmtzLCB3aXRoIGdvb2QgDQorU3RpbGwgb3ZlcmNvbWluZyBldmlsLCBhbmQgYnkgc21hbGwgDQorQWNjb21wbGlzaGluZyBncmVhdCB0aGluZ3MsIGJ5IHRoaW5ncyBkZWVtZWQgd2VhayANCitTdWJ2ZXJ0aW5nIHdvcmxkbHkgc3Ryb25nLCBhbmQgd29ybGRseSB3aXNlIA0KK0J5IHNpbXBseSBtZWVrOiB0aGF0IHN1ZmZlcmluZyBmb3IgdHJ1dGgncyBzYWtlIA0KK0lzIGZvcnRpdHVkZSB0byBoaWdoZXN0IHZpY3RvcnksIA0KK0FuZCwgdG8gdGhlIGZhaXRoZnVsLCBkZWF0aCB0aGUgZ2F0ZSBvZiBsaWZlOyANCitUYXVnaHQgdGhpcyBieSBoaXMgZXhhbXBsZSwgd2hvbSBJIG5vdyANCitBY2tub3dsZWRnZSBteSBSZWRlZW1lciBldmVyIGJsZXN0LiANCitUbyB3aG9tIHRodXMgYWxzbyB0aGUgQW5nZWwgbGFzdCByZXBsaWVkLiANCitUaGlzIGhhdmluZyBsZWFybmVkLCB0aG91IGhhc3QgYXR0YWluZWQgdGhlIHN1bSANCitPZiB3aXNkb207IGhvcGUgbm8gaGlnaGVyLCB0aG91Z2ggYWxsIHRoZSBzdGFycyANCitUaG91IGtuZXdlc3QgYnkgbmFtZSwgYW5kIGFsbCB0aGUgZXRoZXJlYWwgcG93ZXJzLCANCitBbGwgc2VjcmV0cyBvZiB0aGUgZGVlcCwgYWxsIE5hdHVyZSdzIHdvcmtzLCANCitPciB3b3JrcyBvZiBHb2QgaW4gSGVhdmVuLCBhaXIsIGVhcnRoLCBvciBzZWEsIA0KK0FuZCBhbGwgdGhlIHJpY2hlcyBvZiB0aGlzIHdvcmxkIGVuam95ZWRzdCwgDQorQW5kIGFsbCB0aGUgcnVsZSwgb25lIGVtcGlyZTsgb25seSBhZGQgDQorRGVlZHMgdG8gdGh5IGtub3dsZWRnZSBhbnN3ZXJhYmxlOyBhZGQgZmFpdGgsIA0KK0FkZCB2aXJ0dWUsIHBhdGllbmNlLCB0ZW1wZXJhbmNlOyBhZGQgbG92ZSwgDQorQnkgbmFtZSB0byBjb21lIGNhbGxlZCBjaGFyaXR5LCB0aGUgc291bCANCitPZiBhbGwgdGhlIHJlc3Q6IHRoZW4gd2lsdCB0aG91IG5vdCBiZSBsb3RoIA0KK1RvIGxlYXZlIHRoaXMgUGFyYWRpc2UsIGJ1dCBzaGFsdCBwb3NzZXNzIA0KK0EgUGFyYWRpc2Ugd2l0aGluIHRoZWUsIGhhcHBpZXIgZmFyLi0tIA0KK0xldCB1cyBkZXNjZW5kIG5vdyB0aGVyZWZvcmUgZnJvbSB0aGlzIHRvcCANCitPZiBzcGVjdWxhdGlvbjsgZm9yIHRoZSBob3VyIHByZWNpc2UgDQorRXhhY3RzIG91ciBwYXJ0aW5nIGhlbmNlOyBhbmQgc2VlIXRoZSBndWFyZHMsIA0KK0J5IG1lIGVuY2FtcGVkIG9uIHlvbmRlciBoaWxsLCBleHBlY3QgDQorVGhlaXIgbW90aW9uOyBhdCB3aG9zZSBmcm9udCBhIGZsYW1pbmcgc3dvcmQsIA0KK0luIHNpZ25hbCBvZiByZW1vdmUsIHdhdmVzIGZpZXJjZWx5IHJvdW5kOiANCitXZSBtYXkgbm8gbG9uZ2VyIHN0YXk6IGdvLCB3YWtlbiBFdmU7IA0KK0hlciBhbHNvIEkgd2l0aCBnZW50bGUgZHJlYW1zIGhhdmUgY2FsbWVkIA0KK1BvcnRlbmRpbmcgZ29vZCwgYW5kIGFsbCBoZXIgc3Bpcml0cyBjb21wb3NlZCANCitUbyBtZWVrIHN1Ym1pc3Npb246IHRob3UsIGF0IHNlYXNvbiBmaXQsIA0KK0xldCBoZXIgd2l0aCB0aGVlIHBhcnRha2Ugd2hhdCB0aG91IGhhc3QgaGVhcmQ7IA0KK0NoaWVmbHkgd2hhdCBtYXkgY29uY2VybiBoZXIgZmFpdGggdG8ga25vdywgDQorVGhlIGdyZWF0IGRlbGl2ZXJhbmNlIGJ5IGhlciBzZWVkIHRvIGNvbWUgDQorKEZvciBieSB0aGUgV29tYW4ncyBzZWVkKSBvbiBhbGwgbWFua2luZDogDQorVGhhdCB5ZSBtYXkgbGl2ZSwgd2hpY2ggd2lsbCBiZSBtYW55IGRheXMsIA0KK0JvdGggaW4gb25lIGZhaXRoIHVuYW5pbW91cywgdGhvdWdoIHNhZCwgDQorV2l0aCBjYXVzZSwgZm9yIGV2aWxzIHBhc3Q7IHlldCBtdWNoIG1vcmUgY2hlZXJlZCANCitXaXRoIG1lZGl0YXRpb24gb24gdGhlIGhhcHB5IGVuZC4gDQorSGUgZW5kZWQsIGFuZCB0aGV5IGJvdGggZGVzY2VuZCB0aGUgaGlsbDsgDQorRGVzY2VuZGVkLCBBZGFtIHRvIHRoZSBib3dlciwgd2hlcmUgRXZlIA0KK0xheSBzbGVlcGluZywgcmFuIGJlZm9yZTsgYnV0IGZvdW5kIGhlciB3YWtlZDsgDQorQW5kIHRodXMgd2l0aCB3b3JkcyBub3Qgc2FkIHNoZSBoaW0gcmVjZWl2ZWQuIA0KK1doZW5jZSB0aG91IHJldHVybmVzdCwgYW5kIHdoaXRoZXIgd2VudGVzdCwgSSBrbm93OyANCitGb3IgR29kIGlzIGFsc28gaW4gc2xlZXA7IGFuZCBkcmVhbXMgYWR2aXNlLCANCitXaGljaCBoZSBoYXRoIHNlbnQgcHJvcGl0aW91cywgc29tZSBncmVhdCBnb29kIA0KK1ByZXNhZ2luZywgc2luY2Ugd2l0aCBzb3Jyb3cgYW5kIGhlYXJ0J3MgZGlzdHJlc3MgDQorV2VhcmllZCBJIGZlbGwgYXNsZWVwOiAgQnV0IG5vdyBsZWFkIG9uOyANCitJbiBtZSBpcyBubyBkZWxheTsgd2l0aCB0aGVlIHRvIGdvLCANCitJcyB0byBzdGF5IGhlcmU7IHdpdGhvdXQgdGhlZSBoZXJlIHRvIHN0YXksIA0KK0lzIHRvIGdvIGhlbmNlIHVud2lsbGluZzsgdGhvdSB0byBtZSANCitBcnQgYWxsIHRoaW5ncyB1bmRlciAkSGVhdmVuLCBhbGwgcGxhY2VzIHRob3UsIA0KK1dobyBmb3IgbXkgd2lsZnVsIGNyaW1lIGFydCBiYW5pc2hlZCBoZW5jZS4gDQorVGhpcyBmdXJ0aGVyIGNvbnNvbGF0aW9uIHlldCBzZWN1cmUgDQorSSBjYXJyeSBoZW5jZTsgdGhvdWdoIGFsbCBieSBtZSBpcyBsb3N0LCANCitTdWNoIGZhdm91ciBJIHVud29ydGh5IGFtIHZvdWNoc2FmZWQsIA0KK0J5IG1lIHRoZSBQcm9taXNlZCBTZWVkIHNoYWxsIGFsbCByZXN0b3JlLiANCitTbyBzcGFrZSBvdXIgbW90aGVyIEV2ZTsgYW5kIEFkYW0gaGVhcmQgDQorV2VsbCBwbGVhc2VkLCBidXQgYW5zd2VyZWQgbm90OiAgRm9yIG5vdywgdG9vIG5pZ2ggDQorVGhlIEFyY2gtQW5nZWwgc3Rvb2Q7IGFuZCwgZnJvbSB0aGUgb3RoZXIgaGlsbCANCitUbyB0aGVpciBmaXhlZCBzdGF0aW9uLCBhbGwgaW4gYnJpZ2h0IGFycmF5IA0KK1RoZSBDaGVydWJpbSBkZXNjZW5kZWQ7IG9uIHRoZSBncm91bmQgDQorR2xpZGluZyBtZXRlb3JvdXMsIGFzIGV2ZW5pbmctbWlzdCANCitSaXNlbiBmcm9tIGEgcml2ZXIgbydlciB0aGUgbWFyaXNoIGdsaWRlcywgDQorQW5kIGdhdGhlcnMgZ3JvdW5kIGZhc3QgYXQgdGhlIGxhYm91cmVyJ3MgaGVlbCANCitIb21ld2FyZCByZXR1cm5pbmcuICBIaWdoIGluIGZyb250IGFkdmFuY2VkLCANCitUaGUgYnJhbmRpc2hlZCBzd29yZCBvZiBHb2QgYmVmb3JlIHRoZW0gYmxhemVkLCANCitGaWVyY2UgYXMgYSBjb21ldDsgd2hpY2ggd2l0aCB0b3JyaWQgaGVhdCwgDQorQW5kIHZhcG91ciBhcyB0aGUgTGlieWFuIGFpciBhZHVzdCwgDQorQmVnYW4gdG8gcGFyY2ggdGhhdCB0ZW1wZXJhdGUgY2xpbWU7IHdoZXJlYXQgDQorSW4gZWl0aGVyIGhhbmQgdGhlIGhhc3RlbmluZyBBbmdlbCBjYXVnaHQgDQorT3VyIGxpbmdlcmluZyBwYXJlbnRzLCBhbmQgdG8gdGhlIGVhc3Rlcm4gZ2F0ZSANCitMZWQgdGhlbSBkaXJlY3QsIGFuZCBkb3duIHRoZSBjbGlmZiBhcyBmYXN0IA0KK1RvIHRoZSBzdWJqZWN0ZWQgcGxhaW47IHRoZW4gZGlzYXBwZWFyZWQuIA0KK1RoZXksIGxvb2tpbmcgYmFjaywgYWxsIHRoZSBlYXN0ZXJuIHNpZGUgYmVoZWxkIA0KK09mIFBhcmFkaXNlLCBzbyBsYXRlIHRoZWlyIGhhcHB5IHNlYXQsIA0KK1dhdmVkIG92ZXIgYnkgdGhhdCBmbGFtaW5nIGJyYW5kOyB0aGUgZ2F0ZSANCitXaXRoIGRyZWFkZnVsIGZhY2VzIHRocm9uZ2VkLCBhbmQgZmllcnkgYXJtczogDQorU29tZSBuYXR1cmFsIHRlYXJzIHRoZXkgZHJvcHQsIGJ1dCB3aXBlZCB0aGVtIHNvb247IA0KK1RoZSB3b3JsZCB3YXMgYWxsIGJlZm9yZSB0aGVtLCB3aGVyZSB0byBjaG9vc2UgDQorVGhlaXIgcGxhY2Ugb2YgcmVzdCwgYW5kIFByb3ZpZGVuY2UgdGhlaXIgZ3VpZGU6IA0KK1RoZXksIGhhbmQgaW4gaGFuZCwgd2l0aCB3YW5kZXJpbmcgc3RlcHMgYW5kIHNsb3csIA0KK1Rocm91Z2ggRWRlbiB0b29rIHRoZWlyIHNvbGl0YXJ5IHdheS4gDQorIA0KK1tUaGUgRW5kXRoaDQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3BscmFibjEyLnR4dC5jb21wcmVzc2VkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3BscmFibjEyLnR4dC5jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3NTBmYTUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcGxyYWJuMTIudHh0LmNvbXByZXNzZWQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3F1aWNrZm94IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3F1aWNrZm94Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmM2JiNjMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcXVpY2tmb3gKQEAgLTAsMCArMSBAQAorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9xdWlja2ZveC5jb21wcmVzc2VkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3F1aWNrZm94LmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVkZWViYwotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9xdWlja2ZveC5jb21wcmVzc2VkCkBAIC0wLDAgKzEgQEAKKwsVgFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3F1aWNrZm94X3JlcGVhdGVkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3F1aWNrZm94X3JlcGVhdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZDEzNGUKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcXVpY2tmb3hfcmVwZWF0ZWQKQEAgLTAsMCArMSBAQAorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2dUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9xdWlja2ZveF9yZXBlYXRlZC5jb21wcmVzc2VkIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3F1aWNrZm94X3JlcGVhdGVkLmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkNzk3NgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9xdWlja2ZveF9yZXBlYXRlZC5jb21wcmVzc2VkCkBAIC0wLDAgKzEsMiBAQAorW/+vAsAieVz7WoxCO/QlVRlakpmxNcgZnp4KK3tLkLk8mMgJQPPm2U3kbWUbJ4cTX6bpMJZ7PBXYUxwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcmFuZG9tX2NodW5rcyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9yYW5kb21fY2h1bmtzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMTRmMGIKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcmFuZG9tX2NodW5rcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcmFuZG9tX29yZ18xMGsuYmluIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3JhbmRvbV9vcmdfMTBrLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWY4YTNhCi0tLSAvZGV2L251bGwKKysrIGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3JhbmRvbV9vcmdfMTBrLmJpbgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcmFuZG9tX29yZ18xMGsuYmluLmNvbXByZXNzZWQgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvcmFuZG9tX29yZ18xMGsuYmluLmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmYmFhMAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS9yYW5kb21fb3JnXzEway5iaW4uY29tcHJlc3NlZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEveCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMGMwNzAKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEveApAQCAtMCwwICsxIEBACitYClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3guY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3guY29tcHJlc3NlZC4wMCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlM2E5OAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3guY29tcHJlc3NlZC4wMSBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4MjQ5YgotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3guY29tcHJlc3NlZC4wMiBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E1ODkwZAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3guY29tcHJlc3NlZC4wMyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyZTc5OQotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94LmNvbXByZXNzZWQuMDMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3h5enp5IGIvdGhpcmRfcGFydHkvYnJvdGxpL3Rlc3RzL3Rlc3RkYXRhL3h5enp5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZmIyM2QKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEveHl6enkKQEAgLTAsMCArMSBAQAorWHl6enkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEveHl6enkuY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS94eXp6eS5jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OTgyY2UKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEveHl6enkuY29tcHJlc3NlZApAQCAtMCwwICsxIEBACisLAoBYeXp6eQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvemVyb3MgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvemVyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQyMzExOAotLS0gL2Rldi9udWxsCisrKyBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS96ZXJvcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvemVyb3MuY29tcHJlc3NlZCBiL3RoaXJkX3BhcnR5L2Jyb3RsaS90ZXN0cy90ZXN0ZGF0YS96ZXJvcy5jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMDViNTMKLS0tIC9kZXYvbnVsbAorKysgYi90aGlyZF9wYXJ0eS9icm90bGkvdGVzdHMvdGVzdGRhdGEvemVyb3MuY29tcHJlc3NlZApCaW5hcnkgZmlsZXMgZGlmZmVyCg==