ICA8Y2hhcHRlciBpZD0iY29uZmlndXJpbmciPgogICAgPHRpdGxlPkNvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgPHBhcmE+U2V0dGluZyB1cCBjb25maWcgZmlsZXMsIGV0Yy48L3BhcmE+CgogICAgPHNlY3QxIGlkPSJjb25maWciPgogICAgICA8dGl0bGU+R2VuZXJhbCBDb25maWd1cmF0aW9uPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgQ29weXJpZ2h0IDE5OTkgJm5hbWUtYWRhbS1zYWNhcm55OyA8ZW1haWw+JmVtYWlsLWFkYW0tc2FjYXJueTs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbmZpZzwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBXaW5lIENvbmZpZyBGaWxlPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGNvbmZpZyBmaWxlIHN0b3JlcyB2YXJpb3VzIHNldHRpbmdzIGZvciBXaW5lLiBUaGVzZSBpbmNsdWRlOgogICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgRHJpdmVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aGVtCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3Rvcnkgc2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFBvcnQgc2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBXaW5lIGxvb2sgYW5kIGZlZWwKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBETEwgdXNhZ2UKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBtdWx0aW1lZGlhIGRyaXZlcnMgYW5kIERMTCBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Ib3cgRG8gSSBNYWtlIE9uZT88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyBzZWN0aW9uIHdpbGwgZ3VpZGUgeW91IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgbWFraW5nIGEKICAgICAgICAgIGNvbmZpZyBmaWxlLiBUYWtlIGEgbG9vayBhdCB0aGUgZmlsZSA8ZmlsZW5hbWU+Jmx0O2RpcnMgdG8KICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L2ZpbGVuYW1lPi4gSXQgaXMgb3JnYW5pemVkIGJ5IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlNlY3Rpb24gTmFtZTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TmVlZGVkPzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCBpdCBEb2VzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RyaXZlIFhdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNldHMgdXAgZHJpdmVzIHJlY29nbml6ZWQgYnkgd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bd2luZV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U2V0dGluZ3MgZm9yIHdpbmUgZGlyZWN0b3JpZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RsbERlZmF1bHRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRlZmF1bHRzIGZvciBsb2FkaW5nIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxQYWlyc108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlY21kPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TYW5pdHkgY2hlY2tlcnMgZm9yIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxPdmVycmlkZXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcmlkZXMgZGVmYXVsdHMgZm9yIERMTCBsb2FkaW5nPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Plt4MTFkcnZdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+R3JhcGhpYyBkcml2ZXIgc2V0dGluZ3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W2ZvbnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Gb250IGFwcGVhcmFuY2UgYW5kIHJlY29nbml0aW9uPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltzZXJpYWxwb3J0c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5DT00gcG9ydHMgc2VlbiBieSB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltwYXJhbGxlbHBvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkxQVCBwb3J0cyBzZWVuIGJ5IHdpbmU8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BwZGV2XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlBhcmFsbGVscG9ydCBlbXVsYXRpb248L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3Nwb29sZXJdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJpbnQgc3Bvb2xpbmc8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRpcmVjdCBwb3J0IGFjY2VzczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bRGVidWddPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCB0byBkbyB3aXRoIGNlcnRhaW4gZGVidWcgbWVzc2FnZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W1JlZ2lzdHJ5XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNwZWNpZmllcyBsb2NhdGlvbnMgb2Ygd2luZG93cyByZWdpc3RyeSBmaWxlczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bdHdlYWsubGF5b3V0XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkFwcGVhcmFuY2Ugb2Ygd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bcHJvZ3JhbXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJvZ3JhbXMgdG8gYmUgcnVuIGF1dG9tYXRpY2FsbHk8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0NvbnNvbGVdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q29uc29sZSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQ2xpcGJvYXJkXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkludGVyYWN0aW9uIGZvciB3aW5lIGFuZCBYMTEgY2xpcGJvYXJkPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlthZm1kaXJzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlBvc3RzY3JpcHQgZHJpdmVyIHNldHRpbmdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltXaW5NTV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TXVsdGltZWRpYSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQXBwRGVmYXVsdHNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcndyaXRlIHRoZSBzZXR0aW5ncyBvZiBwcmV2aW91cyBzZWN0aW9ucyBmb3Igc3BlY2lhbCBwcm9ncmFtczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3Rncm91cD4KICAgICAgICA8L2luZm9ybWFsdGFibGU+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RyaXZlIFhdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CgkgICAgVGhlc2Ugc2VjdGlvbnMgYXJlIHN1cHBvc2VkIHRvIG1ha2UgY2VydGFpbiBVbml4CgkgICAgZGlyZWN0b3J5IGxvY2F0aW9ucyBhY2Nlc3NpYmxlIHRvIFdpbmUgYXMgYSBET1MvV2luZG93cyBkcml2ZQoJICAgIChkcml2ZSAnWDonKSBhbmQgdGh1cyBhY2Nlc3NpYmxlIHRvIFdpbmRvd3MgcHJvZ3JhbXMKCSAgICB1bmRlciB0aGUgZHJpdmUgbmFtZSB5b3Ugc3BlY2lmaWVkLgoJICAgIEV2ZXJ5IERPUy9XaW5kb3dzIHByb2dyYW0gc29ydCBvZiBleHBlY3RzIGF0IGxlYXN0IGEgQzogZHJpdmUgKGFuZAoJICAgIHNvbWV0aW1lcyBhbHNvIGFuIEE6IGZsb3BweSBkcml2ZSksIHNvIHlvdXIgY29uZmlnIGZpbGUgc2hvdWxkCgkgICAgYXQgbGVhc3QgY29udGFpbiB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9ucywgW0RyaXZlIENdIGFuZAoJICAgIFtEcml2ZSBBXS4KCSAgICBZb3UgbmVlZCB0byBkZWNpZGUgb24gd2hldGhlciB5b3Ugd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgV2luZG93cwoJICAgIHBhcnRpdGlvbiBhcyB0aGUgQyBkcml2ZSBvciB3aGV0aGVyIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIG93bgoJICAgIFdpbmUgZHJpdmUgQyBkaXJlY3RvcnkgdHJlZSBzb21ld2hlcmUgKHRha2UgY2FyZSBhYm91dAoJICAgIHBlcm1pc3Npb25zICEpLgogICAgICAgICAgICBFYWNoIGRyaXZlIHNlY3Rpb24gbWF5IHNwZWNpZnkgdXAgdG8gNiBkaWZmZXJlbnQgc2V0dGluZ3MKCSAgICBhcyBleHBsYWluZWQgYmVsb3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPltEcml2ZSBYXTwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoZSBhYm92ZSBsaW5lIGJlZ2lucyB0aGUgc2VjdGlvbiBmb3IgYSBkcml2ZSB3aG9zZSBsZXR0ZXIgaXMgWAoJICAgIChET1Mgbm90YXRpb246IGRyaXZlICdYOicpLgoJICAgIFlvdSBjb3VsZCBlLmcuIGNyZWF0ZSBhbiBlcXVpdmFsZW50IHRvIGEgZHJpdmUgJ0M6JwoJICAgIHVuZGVyIERPUy9XaW5kb3dzIGJ5IHVzaW5nIGEgW0RyaXZlIENdIHNlY3Rpb24gbmFtZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlBhdGgiID0gIi9kaXIvdG8vcGF0aCI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFRoaXMgc3BlY2lmaWVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRyaXZlIHdpbGwgYmVnaW4uCgkgICAgV2hlbiBXaW5lIGlzIGJyb3dzaW5nIGluIGRyaXZlIFgsIGl0IHdpbGwgYmUgYWJsZQoJICAgIHRvIHNlZSB0aGUgZmlsZXMgdGhhdCBhcmUgaW4gdGhlIGRpcmVjdG9yeQoJICAgIDxmaWxlbmFtZT4vZGlyL3RvL3BhdGg8L2ZpbGVuYW1lPiBhbmQgYmVsb3cuCgkgICAgKG5vdGUgdGhhdCBzeW1saW5rcyB0byBkaXJlY3RvcmllcyB3b24ndCBnZXQgaW5jbHVkZWQgIQoJICAgIHNlZSAiPGxpbmsgbGlua2VuZD0iZGlyc3ltbGlua3MiPlNob3dEaXJTeW1saW5rczwvbGluaz4iCgkgICAgY29uZmlnIHNldHRpbmcpCgkgICAgWW91IGNhbiBhbHNvIG1ha2UgdXNlIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyBsaWtlICRIT01FIGhlcmUsCgkgICAgYW4gZXhhbXBsZSBmb3IgdXNpbmcgYSBteXdpbmVkcml2ZSBkaXJlY3RvcnkgaW4geW91ciBob21lIGRpcgoJICAgIHdvdWxkIGJlCgkgICAgIlBhdGgiID0gIiR7SE9NRX0vbXl3aW5lZHJpdmUiCgkgICAgRG9uJ3QgZm9yZ2V0IHRvIGxlYXZlIG9mZiB0aGUgdHJhaWxpbmcgc2xhc2ghCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJUeXBlIiA9ICJoZHxjZHJvbXxuZXR3b3JrfGZsb3BweSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHVwIHRoZSB0eXBlIG9mIGRyaXZlIFdpbmUgd2lsbCBzZWUgaXQgYXMuIFR5cGUgbXVzdAogICAgICAgICAgICBlcXVhbCBvbmUgb2YgdGhlIGZvdXIgPGxpdGVyYWw+ZmxvcHB5PC9saXRlcmFsPiwKICAgICAgICAgICAgPGxpdGVyYWw+aGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jZHJvbTwvbGl0ZXJhbD4sIG9yCiAgICAgICAgICAgIDxsaXRlcmFsPm5ldHdvcms8L2xpdGVyYWw+LiBUaGV5IGFyZSBzZWxmLWV4cGxhbmF0b3J5LgogICAgICAgICAgICAoVGhlIHwncyBtZWFuICJUeXBlID0gJyZsdDtvbmUgb2YgdGhlIG9wdGlvbnMmZ3Q7JyIuKQoJICAgIFVzdWFsbHksIHlvdSBjaG9vc2UgImhkIiBmb3IgYSBkcml2ZSAoImhkIiBpcyBkZWZhdWx0IGFueXdheSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMYWJlbCIgPSAiYmxhaCI8L3Byb2dyYW1saXN0aW5nPgoJICAgIERlZmluZXMgdGhlIGRyaXZlIGxhYmVsLiBHZW5lcmFsbHkgb25seSBuZWVkZWQKCSAgICBmb3IgcHJvZ3JhbXMgdGhhdCBsb29rIGZvciBhIHNwZWNpYWwgQ0QtUk9NLgogICAgICAgICAgICBUaGUgbGFiZWwgbWF5IGJlIHVwIHRvIDExIGNoYXJhY3RlcnMuCgkgICAgTm90ZSB0aGF0IHRoZSBwcmVmZXJyZWQgd2F5IG9mIG1hbmFnaW5nIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnMKCSAgICBvZiBDRC1ST01zIGFuZCBmbG9wcGllcyBpcyB0byBnaXZlIFdpbmUgcmF3IGRldmljZSBhY2Nlc3MgZm9yCgkgICAgcmVhZGluZyB0aGVzZSBvbiBhIHBlci1DRCBjYXNlIChzZWUgIkRldmljZSIgYmVsb3cpIGluc3RlYWQgb2YKCSAgICBoYXJkY29kaW5nIG9uZSBzcGVjaWZpYyAiTGFiZWwiLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU2VyaWFsIiA9ICJkZWFkYmVlZiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUZWxscyBXaW5lIHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBkcml2ZS4gQSBmZXcgcHJvZ3JhbXMgd2l0aAogICAgICAgICAgICBpbnRlbnNlIHByb3RlY3Rpb24gZm9yIHBpcmF0aW5nIG1pZ2h0IG5lZWQgdGhpcywgYnV0IG90aGVyd2lzZQogICAgICAgICAgICBpdCdzIG5vdCBuZWVkZWQuIFVwIHRvIDggY2hhcmFjdGVycyBhbmQgaGV4YWRlY2ltYWwuCgkgICAgVXNpbmcgYSAiRGV2aWNlIiBlbnRyeSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlICJTZXJpYWwiIHByb2JhYmx5CgkgICAgaXMgYSBzbWFydGVyIGNob2ljZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkZpbGVzeXN0ZW0iID0gIndpbjk1fHVuaXh8bXNkb3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgd2F5IFdpbmUgbG9va3MgYXQgZmlsZXMgb24gdGhlIGRyaXZlLgogICAgICAgICAgPC9wYXJhPgoKICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+d2luOTU8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICBDYXNlIGluc2Vuc2l0aXZlLiBBbGlrZSB0byBXaW5kb3dzIDl4L05UIDQuIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgdGhlIGxvbmcgZmlsZW5hbWUgZmlsZXN5c3RlbSB5b3UgYXJlIHByb2JhYmx5IHVzZWQKICAgICAgICAgICAgICAgICAgdG8gd29ya2luZyB3aXRoLiBUaGUgZmlsZXN5c3RlbSBvZiBjaG9pY2UgZm9yIG1vc3QKICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIHRvIGJlIHJ1biB1bmRlciB3aW5lLiAgUFJPQkFCTFkgVEhFIE9ORQogICAgICAgICAgICAgICAgICBZT1UgV0FOVCEKICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD51bml4PC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgQ2FzZSBzZW5zaXRpdmUuIFRoaXMgZmlsZXN5c3RlbSBoYXMgYWxtb3N0IG5vIHVzZQogICAgICAgICAgICAgICAgICAoV2luZG93cyBhcHBzIGV4cGVjdCBjYXNlIGluc2Vuc2l0aXZlIGZpbGVuYW1lcykuCiAgICAgICAgICAgICAgICAgIFRyeSBpdCBpZiB5b3UgZGFyZSwgYnV0IHdpbjk1IGlzIGEgIG11Y2ggYmV0dGVyCiAgICAgICAgICAgICAgICAgIGNob2ljZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5tc2RvczwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbS4gQWxpa2UgdG8gRE9TIGFuZAogICAgICAgICAgICAgICAgICBXaW5kb3dzIDMueC4gPGxpdGVyYWw+OC4zPC9saXRlcmFsPiBpcyB0aGUgbWF4aW11bQogICAgICAgICAgICAgICAgICBsZW5ndGggb2YgZmlsZXMgKGVpZ2h0ZG90LjEyMykgLSBsb25nZXIgb25lcyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIHRydW5jYXRlZC4gKE5PVEU6IHRoaXMgaXMgYSB2ZXJ5IGJhZCBjaG9pY2UgaWYgeW91CiAgICAgICAgICAgICAgICAgIHBsYW4gb24gcnVubmluZyBhcHBzIHRoYXQgdXNlIGxvbmcgZmlsZW5hbWVzLiB3aW45NQogICAgICAgICAgICAgICAgICBzaG91bGQgd29yayBmaW5lIHdpdGggYXBwcyB0aGF0IHdlcmUgZGVzaWduZWQgdG8gcnVuCiAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZSBtc2RvcyBzeXN0ZW0uIEluIG90aGVyIHdvcmRzLCB5b3UgbWlnaHQKICAgICAgICAgICAgICAgICAgbm90IHdhbnQgdG8gdXNlIHRoaXMuKQogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CgogICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZXZpY2UiID0gIi9kZXYveHgiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDxwYXJhPgoJICAgIE5lZWRlZCBmb3IgcmF3IGRldmljZSBhY2Nlc3MgYW5kIGxhYmVsIGFuZCBzZXJpYWwgbnVtYmVyIHJlYWRpbmcuCiAgICAgICAgICAgIFVzZSB0aGlzIE9OTFkgZm9yIGZsb3BweSBhbmQgY2Ryb20gZGV2aWNlcy4gVXNpbmcgaXQgb24KICAgICAgICAgICAgRXh0ZW5kZWQyIG9yIG90aGVyIFVuaXggZmlsZSBzeXN0ZW1zIGNhbiBoYXZlIGRpcmUgcmVzdWx0cwoJICAgICh3aGVuIGEgd2luZG93cyBhcHAgdHJpZXMgdG8gZG8gYSBsb3dsZXZlbCB3cml0ZSwKCSAgICB0aGV5IGRvIGl0IGluIGEgRkFUIHdheSAtLSBGQVQgZm9ybWF0IGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20KCSAgICBhbnkgVW5peCBmaWxlIHN5c3RlbSkuCgkgICAgQWxzbywgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgcHJvcGVyIHBlcm1pc3Npb25zIHRvIHRoaXMgZGV2aWNlCgkgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxub3RlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgbm90IHJlYWxseSBpbXBvcnRhbnQ7IGFsbW9zdCBhbGwgYXBwcwogICAgICAgICAgICAgIHdpbGwgaGF2ZSBubyBwcm9ibGVtIGlmIGl0IHJlbWFpbnMgdW5zcGVjaWZpZWQuIEZvcgogICAgICAgICAgICAgIENELVJPTXMgaXQncyBxdWl0ZSB1c2VmdWwgaW4gb3JkZXIgdG8gZ2V0IGF1dG9tYXRpYyBsYWJlbAogICAgICAgICAgICAgIGRldGVjdGlvbiwgdGhvdWdoLiBJZiB5b3UgYXJlIHVuc3VyZSBhYm91dCBzcGVjaWZ5aW5nCiAgICAgICAgICAgICAgZGV2aWNlIG5hbWVzLCBqdXN0IGxlYXZlIG91dCB0aGlzIHNldHRpbmcgZm9yIHlvdXIKICAgICAgICAgICAgICBkcml2ZXMuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgIDxwYXJhPgoJICAgIEhlcmUgYXJlIGEgZmV3IHNhbXBsZSBlbnRyaWVzOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CkhlcmUgaXMgYSBzZXR1cCBmb3IgRHJpdmUgQywgYSBnZW5lcmljIGhhcmQgZHJpdmU6CltEcml2ZSBDXQoiUGF0aCIgPSAiL2Rvc2MiCiJUeXBlIiA9ICJoZCIKIkxhYmVsIiA9ICJIYXJkIERyaXZlIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiClRoaXMgaXMgYSBzZXR1cCBmb3IgRHJpdmUgRSwgYSBnZW5lcmljIENELVJPTSBkcml2ZToKW0RyaXZlIEVdCiJQYXRoIiA9ICIvbW50L2Nkcm9tIgoiVHlwZSIgPSAiY2Ryb20iCiJMYWJlbCIgPSAiVG90YWwgQW5uaWhpbGF0aW9uIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiCiJEZXZpY2UiID0gIi9kZXYvY2Ryb20iCkFuZCBoZXJlIGlzIGEgc2V0dXAgZm9yIERyaXZlIEEsIGEgZ2VuZXJpYyBmbG9wcHkgZHJpdmU6CltEcml2ZSBBXQoiVHlwZSIgPSAiZmxvcHB5IgoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJMYWJlbCIgPSAiRmxvcHB5IERyaXZlIgoiU2VyaWFsIiA9ICI4NzY1NDMyMSIKIkZpbGVzeXN0ZW0iID0gIndpbjk1IgoiRGV2aWNlIiA9ICIvZGV2L2ZkMCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDMgaWQ9ImNvbmZpZy13aW5lIj4KICAgICAgICAgIDx0aXRsZT5UaGUgW3dpbmVdIFNlY3Rpb24gPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3dpbmVdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWlucyBhbGwga2luZHMKICAgICAgICAgICAgb2YgZ2VuZXJhbCBzZXR0aW5ncyBmb3IgV2luZS4KCSAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iV2luZG93cyIgPSAiYzpcXHdpbmRvd3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhpcyB0ZWxscyBXaW5lIGFuZCBXaW5kb3dzIHByb2dyYW1zIHdoZXJlIHRoZQogICAgICAgICAgICA8ZmlsZW5hbWU+V2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcy4gIEl0IGlzCiAgICAgICAgICAgIHJlY29tbWVuZGVkIHRvIGhhdmUgdGhpcyBkaXJlY3Rvcnkgc29tZXdoZXJlIG9uIHlvdXIKICAgICAgICAgICAgY29uZmlndXJlZCA8bWVkaWFsYWJlbD5DPC9tZWRpYWxhYmVsPiBkcml2ZSwgYW5kIGl0J3MgYWxzbwogICAgICAgICAgICByZWNvbW1lbmRlZCB0byBqdXN0IGNhbGwgdGhlIGRpcmVjdG9yeSAid2luZG93cyIgKHRoaXMgaXMKICAgICAgICAgICAgdGhlIGRlZmF1bHQgc2V0dXAgb24gV2luZG93cywgYW5kIHNvbWUgc3R1cGlkIGFwcGxpY2F0aW9ucwogICAgICAgICAgICBtaWdodCByZWx5IG9uIHRoaXMpLiAgU28gaW4gY2FzZSB5b3UgY2hvc2UgYSAiV2luZG93cyIKICAgICAgICAgICAgc2V0dGluZyBvZiAiYzpcXHdpbmRvd3MiIGFuZCB5b3UgY2hvc2UgdG8gc2V0IHVwIGEgZHJpdmUgQwogICAgICAgICAgICBlLmcuIGF0IDxmaWxlbmFtZT4vdXNyL2xvY2FsL3dpbmVfYzwvZmlsZW5hbWU+LCB0aGUKICAgICAgICAgICAgY29ycmVzcG9uZGluZyBkaXJlY3Rvcnkgd291bGQgYmUKICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvd2luZV9jL3dpbmRvd3M8L2ZpbGVuYW1lPi4gIE1ha2Ugb25lCiAgICAgICAgICAgIGlmIHlvdSBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiBOTyBUUkFJTElORyBTTEFTSCAoTk9UCiAgICAgICAgICAgIDxmaWxlbmFtZT5DOlxcd2luZG93c1w8L2ZpbGVuYW1lPikhIFdyaXRlIGFjY2VzcyBzdHJvbmdseQogICAgICAgICAgICByZWNvbW1lbmRlZCEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5c3RlbSIgPSAiYzpcXHdpbmRvd3NcXHN5c3RlbSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGlzIHNldHMgdXAgd2hlcmUgdGhlIHdpbmRvd3Mgc3lzdGVtIGZpbGVzIGFyZS4gVGhlIFdpbmRvd3MKCSAgICBzeXN0ZW0gZGlyZWN0b3J5IHNob3VsZCByZXNpZGUgYmVsb3cgdGhlIGRpcmVjdG9yeSB1c2VkIGZvciB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+V2luZG93czwvbGl0ZXJhbD4gc2V0dGluZy4KCSAgICBUaHVzIHdoZW4gdXNpbmcgdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBzeXN0ZW0gZGlyZWN0b3J5IHdvdWxkIGJlCgkgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvd2luZV9jL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4uCiAgICAgICAgICAgIEFnYWluLCBubyB0cmFpbGluZyBzbGFzaCwgYW5kIHdyaXRlIGFjY2VzcyEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlRlbXAiID0gImM6XFx0ZW1wIjwvcHJvZ3JhbWxpc3Rpbmc+IFRoaXMgc2hvdWxkCiAgICAgICAgICAgIGJlIHRoZSBkaXJlY3RvcnkgeW91IHdhbnQgeW91ciB0ZW1wIGZpbGVzIHN0b3JlZCBpbiwKCSAgICAvdXNyL2xvY2FsL3dpbmVfYy90ZW1wIGluIG91ciBleGFtcGxlLgogICAgICAgICAgICBBZ2Fpbiwgbm8gdHJhaWxpbmcgc2xhc2gsIGFuZCBXUklURSBBQ0NFU1MhIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIlBhdGgiID0gImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW07YzpcXGJsYW5jbyIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBCZWhhdmVzIGxpa2UgdGhlIDxlbnZhcj5QQVRIPC9lbnZhcj4gc2V0dGluZyBvbiBVTklYCiAgICAgICAgICAgIGJveGVzLiBXaGVuIHdpbmUgaXMgcnVuIGxpa2UgPHVzZXJpbnB1dD53aW5lCiAgICAgICAgICAgICAgc29sLmV4ZTwvdXNlcmlucHV0PiwgaWYgPGZpbGVuYW1lPnNvbC5leGU8L2ZpbGVuYW1lPgogICAgICAgICAgICByZXNpZGVzIGluIGEgZGlyZWN0b3J5IHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+UGF0aDwvbGl0ZXJhbD4gc2V0dGluZywgd2luZSB3aWxsIHJ1biBpdCAoT2YKICAgICAgICAgICAgY291cnNlLCBpZiA8ZmlsZW5hbWU+c29sLmV4ZTwvZmlsZW5hbWU+IHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgIGN1cnJlbnQgZGlyZWN0b3J5LCB3aW5lIHdpbGwgcnVuIHRoYXQgb25lKS4gTWFrZSBzdXJlIGl0CiAgICAgICAgICAgIGFsd2F5cyBoYXMgeW91ciA8ZmlsZW5hbWU+d2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQKICAgICAgICAgICAgc3lzdGVtIGRpcmVjdG9yeSAoRm9yIHRoaXMgc2V0dXAsIGl0IG11c3QgaGF2ZQogICAgICAgICAgICA8ZmlsZW5hbWU+ImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW0iPC9maWxlbmFtZT4pLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iR3JhcGhpY3NEcml2ZXIiID0gIngxMWRydnx0dHlkcnYiPC9wcm9ncmFtbGlzdGluZz4KCSAgICBTZXRzIHRoZSBncmFwaGljcyBkcml2ZXIgdG8gdXNlIGZvciBXaW5lIG91dHB1dC4KCSAgICB4MTFkcnYgaXMgZm9yIFgxMSBvdXRwdXQsIHR0eWRydiBpcyBmb3IgdGV4dCBjb25zb2xlIG91dHB1dC4KCSAgICBXQVJOSU5HOiBpZiB5b3UgdXNlIHR0eWRydiBoZXJlLCB0aGVuIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1bgoJICAgIGFueSBXaW5kb3dzIEdVSSBwcm9ncmFtcy4gVGh1cyB0aGlzIG9wdGlvbiBpcyBtYWlubHkgaW50ZXJlc3RpbmcKCSAgICBmb3IgZS5nLiBlbWJlZGRlZCB1c2Ugb2YgV2luZSBpbiB3ZWIgc2VydmVyIHNjcmlwdHMuCgkgICAgTm90ZSB0aGF0IHR0eWRydiBpcyBzdGlsbCB2ZXJ5IGxhY2tpbmcsIHNvIGlmIGl0IGRvZXNuJ3Qgd29yaywKCSAgICByZXNvcnQgdG8gdXNpbmcgInh2ZmIiLCBhIHZpcnR1YWwgWDExIHNlcnZlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJQcmludGVyIiA9ICJvZmZ8b24iPC9wcm9ncmFtbGlzdGluZz4gVGVsbHMgd2luZQogICAgICAgICAgICB3aGV0aGVyIHRvIGFsbG93IHByaW50aW5nIHZpYSBwcmludGVyIGRyaXZlcnMgdG8gd29yay4KCSAgICBUaGlzIG9wdGlvbiBpc24ndCBuZWVkZWQgZm9yIG91ciBidWlsdGluIHBzZHJ2IHByaW50ZXIgZHJpdmVyCgkgICAgYXQgYWxsLgogICAgICAgICAgICBVc2luZyB0aGVzZSB0aGluZ3MgYXJlIHByZXR0eSBhbHBoYSwgc28geW91IG1pZ2h0IHdhbnQgdG8KICAgICAgICAgICAgd2F0Y2ggb3V0LiBTb21lIHBlb3BsZSBtaWdodCBmaW5kIGl0IHVzZWZ1bCwgaG93ZXZlci4gSWYKICAgICAgICAgICAgeW91J3JlIG5vdCBwbGFubmluZyB0byB3b3JrIG9uIHByaW50aW5nIHZpYSB3aW5kb3dzIHByaW50ZXIKCSAgICBkcml2ZXJzLCBkb24ndCBldmVuIGFkZCB0aGlzIHRvIHlvdXIgd2luZSBjb25maWcgZmlsZQoJICAgIChJdCBwcm9iYWJseSBpc24ndCBhbHJlYWR5IGluIGl0KS4KCSAgICBDaGVjayBvdXQgdGhlIFtzcG9vbGVyXSBhbmQgW3BhcmFsbGVscG9ydHNdIHNlY3Rpb25zIHRvby4KICAgICAgICAgIDwvcGFyYT4KCSAgPHBhcmE+CgkgICAgPHByb2dyYW1saXN0aW5nPiJTaGVsbExpbmtlciIgPSAid2luZXNoZWxsbGluayI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFRoaXMgc2V0dGluZyBzcGVjaWZpZXMgdGhlIHNoZWxsIGxpbmtlciBzY3JpcHQgdG8gdXNlIGZvciBzZXR0aW5nCgkgICAgdXAgV2luZG93cyBpY29ucyBpbiBlLmcuIEtERSBvciBHbm9tZSB0aGF0IGFyZSBnaXZlbiBieSBwcm9ncmFtcwoJICAgIG1ha2luZyB1c2Ugb2YgYXBwcm9wcmlhdGUgc2hlbGwzMi5kbGwgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUKCSAgICBpY29ucyBvbiB0aGUgZGVza3RvcC9zdGFydCBtZW51IGR1cmluZyBpbnN0YWxsYXRpb24uCgkgIDwvcGFyYT4KCSAgPHBhcmEgaWQ9ImRpcnN5bWxpbmtzIj4KCSAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNob3dEaXJTeW1saW5rcyIgPSAiMSI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFdpbmUgZG9lc24ndCBwYXNzIGRpcmVjdG9yeSBzeW1saW5rcyB0byBXaW5kb3dzIHByb2dyYW1zIGJ5CgkgICAgZGVmYXVsdCwgYXMgZG9pbmcgc28gbWF5IGNyYXNoIHNvbWUgcHJvZ3JhbXMgdGhhdCBkbwoJICAgIHJlY3Vyc2l2ZSBsb29rdXBzIG9mIHdob2xlIHN1YmRpcmVjdG9yeSB0cmVlcwoJICAgIHdoZW5ldmVyIGEgZGlyZWN0b3J5IHN5bWxpbmsgcG9pbnRzIGJhY2sgdG8gaXRzZWxmIG9yIG9uZSBvZiBpdHMKCSAgICBwYXJlbnQgZGlyZWN0b3JpZXMuCgkgICAgVGhhdCdzIHdoeSB3ZSBkaXNhbGxvd2VkIHRoZSB1c2Ugb2YgZGlyZWN0b3J5IHN5bWxpbmtzCgkgICAgYW5kIGFkZGVkIHRoaXMgc2V0dGluZyB0byByZWVuYWJsZSAoIjEiKSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgkgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5bWJvbFRhYmxlRmlsZSIgPSAid2luZS5zeW0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgZm9yIHRoZSB3aW5lIGRlYnVnZ2VyLiBZb3UKICAgICAgICAgICAgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBmaWRkbGUgd2l0aCB0aGlzLiBNYXkgYmUgdXNlZnVsIGlmCiAgICAgICAgICAgIHlvdXIgd2luZSBpcyBzdHJpcHBlZC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uIFRvIERMTCBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB5b3Ugd2lsbCBuZWVkIHRvIGtub3cgYmVmb3JlCiAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHRoZSBETEwgc2VjdGlvbnMgaW4geW91ciB3aW5lIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxzZWN0ND4KICAgICAgICAgICAgPHRpdGxlPldpbmRvd3MgRExMIFBhaXJzPC90aXRsZT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgTW9zdCB3aW5kb3dzIERMTCdzIGhhdmUgYSB3aW4xNiAoV2luZG93cyAzLngpIGFuZCB3aW4zMgogICAgICAgICAgICAgIChXaW5kb3dzIDl4L05UKSBmb3JtLiAgVGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB3aW4xNiBhbmQKICAgICAgICAgICAgICB3aW4zMiBETEwgdmVyc2lvbnMgYXJlIGNhbGxlZCB0aGUgIkRMTCBwYWlyIi4gVGhpcyBpcyBhCiAgICAgICAgICAgICAgbGlzdCBvZiB0aGUgbW9zdCBjb21tb24gcGFpcnM6CiAgICAgICAgICAgIDwvcGFyYT4KCiAgICAgICAgICAgIDxpbmZvcm1hbHRhYmxlPgogICAgICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PldpbjE2PC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+V2luMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgPGZvb3Rub3RlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICBJcyBpdCBwb3NzaWJsZSB0byB1c2UgbmF0aXZlIGRsbCB3aXRoIHdpbmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNlZSBuZXh0IHNlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgIDwvZm9vdG5vdGU+CiAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUw8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5VU0VSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VVNFUjMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Tm8hPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlNIRUxMPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+U0hFTEwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREk8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREkzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5DT01NRExHPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Q09NRExHMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSU0lPTjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3Rncm91cD4KICAgICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAgICAgICAgPC9zZWN0ND4KCiAgICAgICAgICA8c2VjdDQ+CiAgICAgICAgICAgIDx0aXRsZT5EaWZmZXJlbnQgRm9ybXMgT2YgRExMJ3M8L3RpdGxlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IGZvcm1zIG9mIERMTCdzIHdpbmUgY2FuIGxvYWQ6CiAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPm5hdGl2ZTwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgVGhlIERMTCdzIHRoYXQgYXJlIGluY2x1ZGVkIHdpdGggd2luZG93cy4gTWFueQogICAgICAgICAgICAgICAgICAgICAgd2luZG93cyBETEwncyBjYW4gYmUgbG9hZGVkIGluIHRoZWlyIG5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgZm9ybS4gTWFueSB0aW1lcyB0aGVzZSBuYXRpdmUgdmVyc2lvbnMgd29yawogICAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHRoYW4gdGhlaXIgbm9uLU1pY3Jvc29mdCBlcXVpdmFsZW50IC0tCiAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aW1lcyB0aGV5IGRvbid0LgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5idWlsdGluPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gZm9ybSBvZiBETEwgbG9hZGluZy4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgd2hhdCB5b3Ugd2lsbCB1c2UgaWYgdGhlIERMTCBpcyB0byBzeXN0ZW0tc3BlY2lmaWMKCQkgICAgICBvciBlcnJvci1wcm9uZSBpbiBuYXRpdmUgZm9ybSAoS0VSTkVMIGZvciBleGFtcGxlKSwKCQkgICAgICB5b3UgZG9uJ3QgaGF2ZSB0aGUgbmF0aXZlIERMTCwgb3IgeW91IGp1c3Qgd2FudCB0byBiZQogICAgICAgICAgICAgICAgICAgICAgTWljcm9zb2Z0LWZyZWUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPnNvPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBOYXRpdmUgRUxGIGxpYnJhcmllcy4gV2lsbCBub3Qgd29yayB5ZXQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPmVsZmRsbDwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgRUxGIGVuY2Fwc3VsYXRlZCB3aW5kb3dzIERMTCdzLgoJCSAgICAgIE5vIGxvbmdlciB1c2VkLCBpZ25vcmVkLgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvc2VjdDQ+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsRGVmYXVsdHNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZXNlIHNldHRpbmdzIHByb3ZpZGUgd2luZSdzIGRlZmF1bHQgaGFuZGxpbmcgb2YgRExMIGxvYWRpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZWZhdWx0TG9hZE9yZGVyIiA9IiBuYXRpdmUsIHNvLCBidWlsdGluIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZXR0aW5nIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgdGhlIG9yZGVyIGluCiAgICAgICAgICAgIHdoaWNoIHRvIGF0dGVtcHQgbG9hZGluZyBETExzLiBJZiB0aGUgZmlyc3Qgb3B0aW9uIGZhaWxzLAogICAgICAgICAgICBpdCB3aWxsIHRyeSB0aGUgc2Vjb25kLCBhbmQgc28gb24uIFRoZSBvcmRlciBzcGVjaWZpZWQKICAgICAgICAgICAgYWJvdmUgaXMgcHJvYmFibHkgdGhlIGJlc3QgaW4gbW9zdCBjb25kaXRpb25zLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbFBhaXJzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgQXQgb25lIHRpbWUsIHRoZXJlIHdhcyBhIHNlY3Rpb24gY2FsbGVkIFtEbGxQYWlyc10gaW4gdGhlCiAgICAgICAgICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoaXMgaGFzIGJlZW4gb2Jzb2xldGVkCiAgICAgICAgICBiZWNhdXNlIHRoZSBwYWlyaW5nIGluZm9ybWF0aW9uIGhhcyBub3cgYmVlbiBlbWJlZGRlZCBpbnRvCiAgICAgICAgICBXaW5lIGl0c2VsZi4gKFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB3YXMgbWVyZWx5IHRvIGJlCiAgICAgICAgICBhYmxlIHRvIGlzc3VlIHdhcm5pbmdzIGlmIHRoZSB1c2VyIGF0dGVtcHRlZCB0byBwYWlyCiAgICAgICAgICBjb2RlcGVuZGVudCAxNi1iaXQvMzItYml0IERMTHMgb2YgZGlmZmVyZW50IHR5cGVzLikgSWYgeW91CiAgICAgICAgICBzdGlsbCBoYXZlIHRoaXMgaW4geW91ciA8ZmlsZW5hbWU+fi8ud2luZS8uY29uZmlnPC9maWxlbmFtZT4gb3IKICAgICAgICAgIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiwgeW91IG1heSBzYWZlbHkgZGVsZXRlIGl0LgogICAgICAgICAgPC9wYXJhPgoJPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsT3ZlcnJpZGVzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgZm9ybWF0IGZvciB0aGlzIHNlY3Rpb24gaXMgdGhlIHNhbWUgZm9yIGVhY2ggbGluZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgombHQ7RExMPnssJmx0O0RMTD4sJmx0O0RMTD4uLi59ID0gJmx0O0ZPUk0+eywmbHQ7Rk9STT4sJmx0O0ZPUk0+Li4ufQogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBsb2FkIGJ1aWx0aW4gS0VSTkVMIHBhaXIgKGNhc2UgZG9lc24ndAogICAgICAgICAgICBtYXR0ZXIgaGVyZSk6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImtlcm5lbCxrZXJuZWwzMiIgPSAiYnVpbHRpbiIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUbyBsb2FkIHRoZSBuYXRpdmUgQ09NTURMRyBwYWlyLCBidXQgaWYgdGhhdCBkb2Vzbid0IHdvcmsKICAgICAgICAgICAgdHJ5IGJ1aWx0aW46CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImNvbW1kbGcsY29tZGxnMzIiID0gIm5hdGl2ZSxidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRvIGxvYWQgdGhlIG5hdGl2ZSBDT01DVEwzMjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiY29tY3RsMzIiID0gIm5hdGl2ZSIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGEgZ29vZCBnZW5lcmljIHNldHVwIChBcyBpdCBpcyBkZWZpbmVkIGluIGNvbmZpZwogICAgICAgICAgICB0aGF0IHdhcyBpbmNsdWRlZCB3aXRoIHlvdXIgd2luZSBwYWNrYWdlKToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgpbRGxsT3ZlcnJpZGVzXQoicnBjcnQ0IiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJvbGVhdXQzMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm9sZTMyIiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tbWRsZyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJjb21kbGczMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInZlciIgICAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoidmVyc2lvbiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGVsbCIgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZWxsMzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoic2hmb2xkZXIiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGx3YXBpIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZG9jdnciICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibHpleHBhbmQiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJsejMyIiAgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNvbWN0bDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tbWN0cmwiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJhZHZhcGkzMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNydGRsbCIgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXByIiAgICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ3aW5zcG9vbC5kcnYiID0gImJ1aWx0aW4sIG5hdGl2ZSIKImRkcmF3IiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiZGlucHV0IiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJkc291bmQiICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm9wZW5nbDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXN2Y3J0IiAgICAgICA9ICJuYXRpdmUsIGJ1aWx0aW4iCiJtc3ZpZGVvIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1zdmZ3MzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpY2RhLmRydiIgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtY2lzZXEuZHJ2IiAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaXdhdmUuZHJ2IiAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpYXZpLmRydiIgICA9ICJuYXRpdmUsIGJ1aWx0aW4iCiJtY2lhbmltLmRydiIgID0gIm5hdGl2ZSwgYnVpbHRpbiIKIm1zYWNtLmRydiIgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXNhY20iICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtc2FjbTMyIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1pZGltYXAuZHJ2IiAgPSAiYnVpbHRpbiwgbmF0aXZlIgo7IHlvdSBjYW4gc3BlY2lmeSBhcHBsaWNhdGlvbnMgdG9vCiJub3RlcGFkLmV4ZSIgID0gIm5hdGl2ZSwgYnVpbHRpbiIKOyBkZWZhdWx0IGZvciBhbGwgb3RoZXIgZGxscwoiKiIgPSAibmF0aXZlLCBidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIElmIGxvYWRpbmcgb2YgdGhlIGxpYnJhcmllcyB0aGF0IGFyZSBsaXN0ZWQgZmlyc3QgZmFpbHMsCiAgICAgICAgICAgICAgd2luZSB3aWxsIGp1c3QgZ28gb24gYnkgdXNpbmcgdGhlIHNlY29uZCBvciB0aGlyZCBvcHRpb24uCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtmb250c10gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNldHMgdXAgd2luZSdzIGZvbnQgaGFuZGxpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJSZXNvbHV0aW9uIiA9ICI5NiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFNpbmNlIHRoZSB3YXkgWCBoYW5kbGVzIGZvbnRzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB3YXkKICAgICAgICAgICAgV2luZG93cyBkb2VzLCB3aW5lIHVzZXMgYSBzcGVjaWFsIG1lY2hhbmlzbSB0byBkZWFsIHdpdGgKICAgICAgICAgICAgdGhlbS4gSXQgbXVzdCBzY2FsZSB0aGVtIHVzaW5nIHRoZSBudW1iZXIgZGVmaW5lZCBpbiB0aGUKICAgICAgICAgICAgIlJlc29sdXRpb24iIHNldHRpbmcuIDYwLTEyMCBhcmUgcmVhc29uYWJsZSB2YWx1ZXMsIDk2IGlzCiAgICAgICAgICAgIGEgbmljZSBpbiB0aGUgbWlkZGxlIG9uZS4gSWYgeW91IGhhdmUgdGhlIHJlYWwgd2luZG93cwogICAgICAgICAgICBmb250cyBhdmFpbGFibGUgKDxmaWxlbmFtZT4mbHQ7ZGlycyB0bwogICAgICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vdHRmc2VydmVyPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgIDxmaWxlbmFtZT5mb250czwvZmlsZW5hbWU+KSwgdGhpcyBwYXJhbWV0ZXIgd2lsbCBub3QgYmUgYXMKICAgICAgICAgICAgaW1wb3J0YW50LiBPZiBjb3Vyc2UsIGl0J3MgYWx3YXlzIGdvb2QgdG8gZ2V0IHlvdXIgWCBmb250cwogICAgICAgICAgICB3b3JraW5nIGFjY2VwdGFibHkgaW4gd2luZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRlZmF1bHQiID0gIi1hZG9iZS10aW1lcy0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhlIGRlZmF1bHQgZm9udCB3aW5lIHVzZXMuIEZvb2wgYXJvdW5kIHdpdGggaXQgaWYgeW91J2QgbGlrZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgpPUFRJT05BTDoKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgPGxpdGVyYWw+QWxpYXM8L2xpdGVyYWw+IHNldHRpbmcgYWxsb3dzIHlvdSB0byBtYXAgYW4gWCBmb250IHRvIGEgZm9udAogICAgICAgICAgICB1c2VkIGluIHdpbmUuIFRoaXMgaXMgZ29vZCBmb3IgYXBwcyB0aGF0IG5lZWQgYSBzcGVjaWFsIGZvbnQgeW91IGRvbid0IGhhdmUsCiAgICAgICAgICAgIGJ1dCBhIGdvb2QgcmVwbGFjZW1lbnQgZXhpc3RzLiBUaGUgc3ludGF4IGlzIGxpa2Ugc286CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzWCIgPSAiW0Zha2Ugd2luZG93cyBuYW1lXSxbUmVhbCBYIG5hbWVdIiZsdDssb3B0aW9uYWwgIm1hc2tpbmciIHNlY3Rpb24+CiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gUmVwbGFjZSAiQWxpYXNYIiB3aXRoICJBbGlhczAiLAogICAgICAgICAgICB0aGVuICJBbGlhczEiIGFuZCBzbyBvbi4gVGhlIGZha2Ugd2luZG93cyBuYW1lIGlzIHRoZSBuYW1lCiAgICAgICAgICAgIHRoYXQgdGhlIGZvbnQgd2lsbCBiZSB1bmRlciBhIHdpbmRvd3MgYXBwIGluIHdpbmUuIFRoZQogICAgICAgICAgICByZWFsIFggbmFtZSBpcyB0aGUgZm9udCBuYW1lIGFzIHNlZW4gYnkgWCAoUnVuCiAgICAgICAgICAgICJ4Zm9udHNlbCIpLiBUaGUgb3B0aW9uYWwgIm1hc2tpbmciIHNlY3Rpb24gYWxsb3dzIHlvdSB0bwogICAgICAgICAgICB1dGlsaXplIHRoZSBmYWtlIHdpbmRvd3MgbmFtZSB5b3UgZGVmaW5lLiBJZiBpdCBpcyBub3QKICAgICAgICAgICAgdXNlZCwgdGhlbiB3aW5lIHdpbGwganVzdCB0cnkgdG8gZXh0cmFjdCB0aGUgZmFrZSB3aW5kb3dzCiAgICAgICAgICAgIG5hbWUgaXRzZWxmIGFuZCBub3QgdXNlIHRoZSB2YWx1ZSB5b3UgZW50ZXIuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGFuIGFsaWFzIHdpdGhvdXQgbWFza2luZy4gVGhlIGZvbnQgd2lsbCBzaG93IHVwIGluIHdpbmRvd3MKICAgICAgICAgICAgYXBwcyBhcyAiR29vZ2xlIi4KCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzMCIgPSAiRm9vLC0tZ29vZ2xlLSIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2l0aCBtYXNraW5nIGVuYWJsZWQuIFRoZSBmb250IHdpbGwgc2hvdyB1cCBhcyAiRm9vIiBpbgogICAgICAgICAgICB3aW5kb3dzIGFwcHMuCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzMSIgPSAiRm9vLC0tZ29vZ2xlLSxzdWJzdCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBGb3IgbW9yZSBpbmZvIGNoZWNrIG91dCB0aGUgPGxpbmsgbGlua2VuZD0iZm9udHMiPkZvbnRzPC9saW5rPgoJICAgIGNoYXB0ZXIuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbc2VyaWFscG9ydHNdLCBbcGFyYWxsZWxwb3J0c10sIFtzcG9vbGVyXSwgYW5kIFtwb3J0c10gU2VjdGlvbnM8L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEV2ZW4gdGhvdWdoIGl0IHNvdW5kcyBsaWtlIGEgbG90IG9mIHNlY3Rpb25zLCB0aGVzZSBhcmUKICAgICAgICAgICAgYWxsIGNsb3NlbHkgcmVsYXRlZC4gVGhleSBhcmUgYWxsIGZvciBjb21tdW5pY2F0aW9ucyBhbmQKICAgICAgICAgICAgcGFyYWxsZWwgcG9ydHMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtzZXJpYWxwb3J0c10gc2VjdGlvbiB0ZWxscyB3aW5lIHdoYXQgc2VyaWFsIHBvcnRzIGl0CiAgICAgICAgICAgIGlzIGFsbG93ZWQgdG8gdXNlLgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkNvbVgiID0gIi9kZXYvdHR5U1kiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBSZXBsYWNlIDxsaXRlcmFsPlg8L2xpdGVyYWw+IHdpdGggdGhlIG51bWJlciBvZiB0aGUgQ09NCiAgICAgICAgICAgIHBvcnQgaW4gV2luZG93cyAoMS04KSBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCB0aGUKICAgICAgICAgICAgbnVtYmVyIG9mIGl0IGluIDxsaXRlcmFsPlg8L2xpdGVyYWw+IChVc3VhbGx5IHRoZSBudW1iZXIKICAgICAgICAgICAgb2YgdGhlIHBvcnQgaW4gV2luZG93cyBtaW51cyAxKS4gPGxpdGVyYWw+Q29tWDwvbGl0ZXJhbD4KICAgICAgICAgICAgY2FuIGFjdHVhbGx5IGVxdWFsIGFueSBkZXZpY2UKICAgICAgICAgICAgKDxtZWRpYWxhYmVsPi9kZXYvbW9kZW08L21lZGlhbGFiZWw+IGlzIGFjY2VwdGFibGUpLiBJdCBpcwogICAgICAgICAgICBub3QgYWx3YXlzIG5lY2Vzc2FyeSB0byBkZWZpbmUgYW55IENPTSBwb3J0cyAoQW4gb3B0aW9uYWwKICAgICAgICAgICAgc2V0dGluZykuIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJDb20xIiA9ICIvZGV2L3R0eVMwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVXNlIGFzIG1hbnkgb2YgdGhlc2UgYXMgeW91IGxpa2UgaW4gdGhlIHNlY3Rpb24gdG8gZGVmaW5lCiAgICAgICAgICAgIGFsbCBvZiB0aGUgQ09NIHBvcnRzIHlvdSBuZWVkLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbcGFyYWxsZWxwb3J0c10gc2VjdGlvbiBzZXRzIHVwIGFueSBwYXJhbGxlbCBwb3J0cwogICAgICAgICAgICB0aGF0IHdpbGwgYmUgYWxsb3dlZCBhY2Nlc3MgdW5kZXIgd2luZS4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMcHRYIiA9ICIvZGV2L2xwWSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFNvdW5kcyBmYW1pbGlhcj8gU3ludGF4IGlzIGp1c3QgbGlrZSB0aGUgQ09NIHBvcnQgc2V0dGluZy4KICAgICAgICAgICAgUmVwbGFjZSA8bGl0ZXJhbD5YPC9saXRlcmFsPiB3aXRoIGEgdmFsdWUgZnJvbSAxLTQgYXMgaXQKICAgICAgICAgICAgaXMgaW4gV2luZG93cyBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlIGZyb20KICAgICAgICAgICAgMC0zICg8bGl0ZXJhbD5ZPC9saXRlcmFsPiBpcyB1c3VhbGx5IHRoZSB2YWx1ZSBpbiB3aW5kb3dzCiAgICAgICAgICAgIG1pbnVzIDEsIGp1c3QgbGlrZSBmb3IgQ09NIHBvcnRzKS4gWW91IGRvbid0IGFsd2F5cyBuZWVkCiAgICAgICAgICAgIHRvIGRlZmluZSBhIHBhcmFsbGVsIHBvcnQgKEFLQSwgaXQncyBvcHRpb25hbCkuIEFzIHdpdGgKICAgICAgICAgICAgdGhlIG90aGVyIHNlY3Rpb24sIExwdFggY2FuIGVxdWFsIGFueSBkZXZpY2UgKE1heWJlCiAgICAgICAgICAgIDxtZWRpYWxhYmVsPi9kZXYvcHJpbnRlcjwvbWVkaWFsYWJlbD4pLiBIZXJlIGlzIGFuCiAgICAgICAgICAgIGV4YW1wbGU6ICA8cHJvZ3JhbWxpc3Rpbmc+IkxwdDEiID0gIi9kZXYvbHAwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtzcG9vbGVyXSBzZWN0aW9uIHdpbGwgaW5mb3JtIHdpbmUgd2hlcmUgdG8gc3Bvb2wKICAgICAgICAgICAgcHJpbnQgam9icy4gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gdHJ5IHByaW50aW5nLiBXaW5lCiAgICAgICAgICAgIGRvY3MgY2xhaW0gdGhhdCBzcG9vbGluZyBpcyAicmF0aGVyIHByaW1pdGl2ZSIgYXQgdGhpcwogICAgICAgICAgICB0aW1lLCBzbyBpdCB3b24ndCB3b3JrIHBlcmZlY3RseS4gSVQgSVMgT1BUSU9OQUwuIFRoZSBvbmx5CiAgICAgICAgICAgIHNldHRpbmcgeW91IHVzZSBpbiB0aGlzIHNlY3Rpb24gd29ya3MgdG8gbWFwIGEgcG9ydCAoTFBUMSwKICAgICAgICAgICAgZm9yIGV4YW1wbGUpIHRvIGEgZmlsZSBvciBhIGNvbW1hbmQuIEhlcmUgaXMgYW4gZXhhbXBsZSwKICAgICAgICAgICAgbWFwcGluZyBMUFQxIHRvIHRoZSBmaWxlIDxmaWxlbmFtZT5vdXQucHM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMUFQxOiIgPSAib3V0LnBzIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIG1hcHMgcHJpbnRpbmcgam9icyB0byBMUFQxIHRvIHRoZQogICAgICAgICAgICBjb21tYW5kIDxjb21tYW5kPmxwcjwvY29tbWFuZD4uIE5vdGljZSAgdGhlIHw6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iTFBUMToiID0gInxscHIiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3BvcnRzXSBzZWN0aW9uIGlzIHVzdWFsbHkgdXNlZnVsIG9ubHkgZm9yIHBlb3BsZSB3aG8KICAgICAgICAgICAgbmVlZCBkaXJlY3QgcG9ydCBhY2Nlc3MgZm9yIHByb2dyYW1zIHJlcXVpcmluZyBkb25nbGVzIG9yCiAgICAgICAgICAgIHNjYW5uZXJzLiBJRiBZT1UgRE9OJ1QgTkVFRCBJVCwgRE9OJ1QgVVNFIElUIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4icmVhZCIgPSAiMHg3NzksMHgzNzksMHgyODAtMHgyYTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHJlYWQgYWNjZXNzIHRvIHRob3NlIElPJ3MuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJ3cml0ZSIgPSAiMHg3NzksMHgzNzksMHgyODAtMHgyYTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHdyaXRlIGFjY2VzcyB0byB0aG9zZSBJTydzLiBJdCdzIHByb2JhYmx5IGEKICAgICAgICAgICAgZ29vZCBpZGVhIHRvIGtlZXAgdGhlIHZhbHVlcyBvZiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+cmVhZDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPndyaXRlPC9saXRlcmFsPgogICAgICAgICAgICBzZXR0aW5ncyB0aGUgc2FtZS4gVGhpcyBzdHVmZiB3aWxsIG9ubHkgd29yayB3aGVuIHlvdSdyZQogICAgICAgICAgICByb290LgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0MyBpZD0iY29uZmlnLWRlYnVnLWV0YyI+CiAgICAgICAgICA8dGl0bGU+VGhlIFtEZWJ1Z10sIFtSZWdpc3RyeV0sIFt0d2Vhay5sYXlvdXRdLCBhbmQgW3Byb2dyYW1zXSBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW0RlYnVnXSBpcyB1c2VkIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSBkZWJ1ZyBtZXNzYWdlcywgYW5kIHRvCiAgICAgICAgICAgIG91dHB1dCB0aGVtIHRvIGEgZmlsZS4gVGhlIGxhdHRlciBpcyByYXJlbHkgdXNlZC4gVEhFU0UKICAgICAgICAgICAgQVJFIEFMTCBPUFRJT05BTCBBTkQgWU9VIFBST0JBQkxZIERPTidUIE5FRUQgVE8gQUREIE9SCiAgICAgICAgICAgIFJFTU9WRSBBTllUSElORyBJTiBUSElTIFNFQ1RJT04gVE8gWU9VUiBDT05GSUcuIChJbiBleHRyZW1lCiAgICAgICAgICAgIGNhc2VzIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlc2Ugb3B0aW9ucyB0byBtYW5hZ2UgdGhlIGFtb3VudAogICAgICAgICAgICBvZiBpbmZvcm1hdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIDxwYXJhbWV0ZXI+LS1kZWJ1Z21zZyArcmVsYXkKICAgICAgICAgICAgPC9wYXJhbWV0ZXI+IG9wdGlvbi4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJGaWxlIiA9ICIvYmxhbmNvIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFNldHMgdGhlIGxvZ2ZpbGUgZm9yIHdpbmUuIFNldCB0byBDT04gdG8gbG9nIHRvIHN0YW5kYXJkIG91dC4KICAgICAgICAgICAgVEhJUyBJUyBSQVJFTFkgVVNFRC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNweUV4Y2x1ZGUiID0gIldNX1NJWkU7V01fVElNRVI7IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIEV4Y2x1ZGVzIGRlYnVnIG1lc3NhZ2VzIGFib3V0IDxjb25zdGFudD5XTV9TSVpFPC9jb25zdGFudD4KICAgICAgICAgICAgYW5kIDxjb25zdGFudD5XTV9USU1FUjwvY29uc3RhbnQ+IGluIHRoZSBsb2dmaWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3B5SW5jbHVkZSIgPSAiV01fU0laRTtXTV9USU1FUjsiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgSW5jbHVkZXMgZGVidWcgbWVzc2FnZXMgYWJvdXQgPGNvbnN0YW50PldNX1NJWkU8L2NvbnN0YW50PgogICAgICAgICAgICBhbmQgPGNvbnN0YW50PldNX1RJTUVSPC9jb25zdGFudD4gaW4gdGhlIGxvZ2ZpbGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJSZWxheUluY2x1ZGUiID0gInVzZXIzMi5DcmVhdGVXaW5kb3dBO2NvbWN0bDMyLioiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgSW5jbHVkZSBvbmx5IHRoZSBsaXN0ZWQgZnVuY3Rpb25zIGluIGEKICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRlYnVnbXNnICtyZWxheTwvcGFyYW1ldGVyPiB0cmFjZS4gIFRoaXMgZW50cnkgaXMKICAgICAgICAgICAgaWdub3JlZCBpZiB0aGVyZSBpcyBhIDxwYXJhbWV0ZXI+UmVsYXlFeGNsdWRlPC9wYXJhbWV0ZXI+IGVudHJ5LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iUmVsYXlFeGNsdWRlIiA9ICJSdGxFbnRlckNyaXRpY2FsU2VjdGlvbjtSdGxMZWF2ZUNyaXRpY2FsU2VjdGlvbiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBFeGNsdWRlIHRoZSBsaXN0ZWQgZnVuY3Rpb25zIGluIGEgCiAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZWJ1Z21zZyArcmVsYXk8L3BhcmFtZXRlcj4gdHJhY2UuICBUaGlzIGVudHJ5CiAgICAgICAgICAgIG92ZXJyaWRlcyBhbnkgc2V0dGluZ3MgaW4gYSA8cGFyYW1ldGVyPlJlbGF5SW5jbHVkZTwvcGFyYW1ldGVyPgogICAgICAgICAgICBlbnRyeS4gIElmIG5laXRoZXIgZW50cnkgaXMgcHJlc2VudCB0aGVuIHRoZSB0cmFjZSBpbmNsdWRlcwogICAgICAgICAgICBldmVyeXRoaW5nLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEluIGJvdGggZW50cmllcyB0aGUgZnVuY3Rpb25zIG1heSBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgCiAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWUgb3IgYXMgYSBtb2R1bGUgYW5kIGZ1bmN0aW9uLiAgSW4gdGhpcyBsYXR0ZXIKICAgICAgICAgICAgY2FzZSBzcGVjaWZ5IGFuIGFzdGVyaXNrIGZvciB0aGUgZnVuY3Rpb24gbmFtZSB0byBpbmNsdWRlCiAgICAgICAgICAgIGFsbCBmdW5jdGlvbnMgaW4gdGhlIG1vZHVsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbUmVnaXN0cnldIGNhbiBiZSB1c2VkIHRvIHRlbGwgd2luZSB3aGVyZSB5b3VyIG9sZCB3aW5kb3dzCiAgICAgICAgICAgIHJlZ2lzdHJ5IGZpbGVzIGV4aXN0LiBUaGlzIHNlY3Rpb24gaXMgY29tcGxldGVseSBvcHRpb25hbAogICAgICAgICAgICBhbmQgdXNlbGVzcyB0byBwZW9wbGUgdXNpbmcgd2luZSB3aXRob3V0IGFuIGV4aXN0aW5nCiAgICAgICAgICAgIHdpbmRvd3MgaW5zdGFsbGF0aW9uLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iVXNlckZpbGVOYW1lIiA9ICIvZGlycy90by91c2VyLnJlZyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGUgbG9jYXRpb24gb2YgeW91ciBvbGQgPGZpbGVuYW1lPnVzZXIucmVnPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbdHdlYWsubGF5b3V0XSBpcyBkZXZvdGVkIHRvIHdpbmUncyBsb29rLiBUaGVyZSBpcyBvbmx5CiAgICAgICAgICAgIG9uZSBzZXR0aW5nIGZvciBpdC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IldpbmVMb29rIiA9ICJ3aW4zMXx3aW45NXx3aW45OCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBXaWxsIGNoYW5nZSB0aGUgbG9vayBvZiB3aW5lIGZyb20gV2luZG93cyAzLjEgdG8gV2luZG93cyA5NS4KICAgICAgICAgICAgVGhlIDxsaXRlcmFsPndpbjk4PC9saXRlcmFsPiBzZXR0aW5nIGJlaGF2ZXMKICAgICAgICAgICAganVzdCBsaWtlIDxsaXRlcmFsPndpbjk1PC9saXRlcmFsPiBtb3N0IG9mIHRoZSB0aW1lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtwcm9ncmFtc10gY2FuIGJlIHVzZWQgdG8gc2F5IHdoYXQgcHJvZ3JhbXMgcnVuIHVuZGVyCiAgICAgICAgICAgIHNwZWNpYWwgY29uZGl0aW9ucy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRlZmF1bHQiID0gIi9wcm9ncmFtL3RvL2V4ZWN1dGUuZXhlIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFNldHMgdGhlIHByb2dyYW0gdG8gYmUgcnVuIGlmIHdpbmUgaXMgc3RhcnRlZCB3aXRob3V0IHNwZWNpZnlpbmcgYSBwcm9ncmFtLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3RhcnR1cCIgPSAiL3Byb2dyYW0vdG8vZXhlY3V0ZS5leGUiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB0aGUgcHJvZ3JhbSB0byBhdXRvbWF0aWNhbGx5IGJlIHJ1biBhdCBzdGFydHVwIGV2ZXJ5IHRpbWUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbV2luTU1dIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtXaW5NTV0gaXMgdXNlZCB0byBkZWZpbmUgd2hpY2ggbXVsdGltZWRpYSBkcml2ZXJzIGhhdmUgdG8gYmUgbG9hZGVkLiBTaW5jZQoJICAgIHRob3NlIGRyaXZlcnMgbWF5IGRlcGVuZCBvbiB0aGUgbXVsdGltZWRpYSBpbnRlcmZhY2VzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbQoJICAgIChPU1MsIEFMU0EuLi4gdG8gbmFtZSBhIGZldyksIGl0J3MgbmVlZGVkIHRvIGJlIGFibGUgdG8gY29uZmlndXJlIHdoaWNoIGRyaXZlcgoJICAgIGhhcyB0byBiZSBsb2FkZWQuCiAgICAgICAgICA8L3BhcmE+CgogICAgICAgICAgPHBhcmE+CgkgICAgVGhlIGNvbnRlbnQgb2YgdGhlIHNlY3Rpb24gbG9va3MgbGlrZToKCSAgICA8cHJvZ3JhbWxpc3Rpbmc+CltXaW5NTV0KIkRyaXZlcnMiID0gIndpbmVvc3MuZHJ2IgoiV2F2ZU1hcHBlciIgPSAibXNhY20uZHJ2IgoiTWlkaU1hcHBlciIgPSAibWlkaW1hcC5kcnYiCgkgICAgPC9wcm9ncmFtbGlzdGluZz4KCSAgICBBbGwgdGhlIGtleXMgbXVzdCBiZSBkZWZpbmVkOgoJICAgIDxpdGVtaXplZGxpc3Q+CgkgICAgICA8bGlzdGl0ZW0+CgkgICAgICAgIDxwYXJhPgoJCSAgVGhlICJEcml2ZXJzIiBrZXkgaXMgYSAnOycgc2VwYXJhdGVkIGxpc3Qgb2YgbW9kdWxlcyBuYW1lLCBlYWNoIG9mCgkJICB0aGVtIGNvbnRhaW5pbmcgYSBsb3cgbGV2ZWwgZHJpdmVyLiBBbGwgdGhvc2UgZHJpdmVycyB3aWxsIGJlIGxvYWRlZAoJCSAgd2hlbiBNTVNZU1RFTS9XSU5NTSBpcyBzdGFydGVkIGFuZCB3aWxsIHByb3ZpZGUgdGhlaXIgaW5uZXIgZmVhdHVyZXMuCgkgICAgICAgIDwvcGFyYT4KCSAgICAgIDwvbGlzdGl0ZW0+CgkgICAgICA8bGlzdGl0ZW0+CgkgICAgICAgIDxwYXJhPgoJCSAgVGhlICJXYXZlTWFwcGVyIiByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgY29udGFpbmluZyB0aGUgV2F2ZQoJCSAgTWFwcGVyIGRyaXZlci4gT25seSBvbmUgd2F2ZSBtYXBwZXIgY2FuIGJlIGRlZmluZWQgaW4gdGhlIHN5c3RlbS4KCSAgICAgICAgPC9wYXJhPgoJICAgICAgPC9saXN0aXRlbT4KCSAgICAgIDxsaXN0aXRlbT4KCSAgICAgICAgPHBhcmE+CgkJICBUaGUgIk1pZGlNYXBwZXIiIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBjb250YWluaW5nIHRoZSBNSURJCgkJICBNYXBwZXIgZHJpdmVyLiBPbmx5IG9uZSBNSURJIG1hcHBlciBjYW4gYmUgZGVmaW5lZCBpbiB0aGUgc3lzdGVtLgoJICAgICAgICA8L3BhcmE+CgkgICAgICA8L2xpc3RpdGVtPgoJICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgPC9wYXJhPgoJPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzIGlkPSJuZXR3b3JrLXNlY3Rpb24iPgogICAgICAgICAgPHRpdGxlPlRoZSBbTmV0d29ya10gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW05ldHdvcmtdIGNvbnRhaW5zIHNldHRpbmdzIHJlbGF0ZWQgdG8KICAgICAgICAgICAgbmV0d29ya2luZy4gQ3VycmVudGx5IHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlIHRoYXQgY2FuIGJlIHNldC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+VXNlRG5zQ29tcHV0ZXJOYW1lPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICBBIGJvb2xlYW4gc2V0dGluZyAoZGVmYXVsdDogPGxpdGVyYWw+WTwvbGl0ZXJhbD4pIAogICAgICAgICAgICAgICAgICB0aGF0IGFmZmVjdHMgdGhlIHdheSBXaW5lIHNldHMgdGhlIGNvbXB1dGVyIG5hbWUuIFRoZSBjb21wdXRlcgogICAgICAgICAgICAgICAgICBuYW1lIGluIHRoZSBXaW5kb3dzIHdvcmxkIGlzIHRoZSBzby1jYWxsZWQgPGVtcGhhc2lzPk5ldEJJT1MgbmFtZTwvZW1waGFzaXM+LgogICAgICAgICAgICAgICAgICBJdCBpcyBjb250YWluZWQgaW4gdGhlIDx2YXJuYW1lPkNvbXB1dGVyTmFtZTwvdmFybmFtZT4gaW4gdGhlIHJlZ2lzdHJ5IGVudHJ5CiAgICAgICAgICAgICAgICAgIDx2YXJuYW1lPkhLRVlfTE9DQUxfTUFDSElORVxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxDb21wdXRlck5hbWVcQ29tcHV0ZXJOYW1lPC92YXJuYW1lPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gIlkiIG9yIG1pc3NpbmcsIFdpbmUgd2lsbCBzZXQgdGhlCiAgICAgICAgICAgICAgICAgIE5ldEJJT1MgbmFtZSB0byB0aGUgVW5peCBob3N0IG5hbWUgb2YgeW91ciBjb21wdXRlciwgaWYgCiAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSB0cnVuY2F0ZWQgdG8gMzEgY2hhcmFjdGVycy4gVGhlIFVuaXggaG9zdG5hbWUgaXMgdGhlIG91dHB1dAogICAgICAgICAgICAgICAgICBvZiB0aGUgc2hlbGwgY29tbWFuZCA8Y29tbWFuZD5ob3N0bmFtZTwvY29tbWFuZD4sIHVwIHRvIGJ1dCBub3QKICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSBmaXJzdCBkb3QgKCcuJykuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBtZWFucyB0aGF0CiAgICAgICAgICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgcnVubmluZyB1bmRlciBXaW5lIGNhbm5vdCBjaGFuZ2UgdGhlIE5ldEJJT1MgY29tcHV0ZXIgbmFtZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gIk4iLCBXaW5lIHdpbGwgdXNlIHRoZSByZWdpc3RyeSB2YWx1ZSBhYm92ZQogICAgICAgICAgICAgICAgICB0byBzZXQgdGhlIE5ldEJJT1MgbmFtZS4gT25seSBpZiB0aGUgcmVnaXN0cnkgZW50cnkgZG9lc24ndCBleGlzdCAodXN1YWxseQogICAgICAgICAgICAgICAgICBvbmx5IGR1cmluZyB0aGUgZmlyc3Qgd2luZSBzdGFydHVwKSBpdCB3aWxsIHVzZSB0aGUgVW5peCBob3N0bmFtZSBhcwogICAgICAgICAgICAgICAgICB1c3VhbC4gV2luZG93cyBhcHBsaWNhdGlvbnMgY2FuIGNoYW5nZSB0aGUgTmV0QklPUyBuYW1lLiBUaGUgY2hhbmdlCiAgICAgICAgICAgICAgICAgIHdpbGwgYmUgZWZmZWN0aXZlIGFmdGVyIGEgInJlYm9vdCIsIGkuZS4gYWZ0ZXIgcmVzdGFydGluZyBXaW5lLgogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzIGlkPSJhcHBkZWZhdWx0cy1zZWN0aW9uIj4KICAgICAgICAgIDx0aXRsZT5UaGUgW0FwcERlZmF1bHRzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgc2VjdGlvbiBpcyB1c2VkIHRvIG92ZXJ3cml0ZSBjZXJ0YWluIHNldHRpbmdzIG9mIHRoaXMgZmlsZSBmb3IgYQogICAgICAgICAgICBzcGVjaWFsIHByb2dyYW0gd2l0aCBkaWZmZXJlbnQgc2V0dGluZ3MuCiAgICAgICAgICAgIFtBcHBEZWZhdWx0c10gaXMgbm90IHRoZSByZWFsIG5hbWUgb2YgdGhlIHNlY3Rpb24uIFRoZSByZWFsIG5hbWUKICAgICAgICAgICAgY29uc2lzdHMgb2YgdGhlIGxlYWRpbmcgd29yZCBBcHBEZWZhdWx0cyBmb2xsb3dlZCBieSB0aGUgbmFtZQogICAgICAgICAgICBvZiB0aGUgZXhlY3V0YWJsZSB0aGUgc2VjdGlvbiBpcyB2YWxpZCBmb3IuCgkgICAgVGhlIGVuZCBvZiB0aGUgc2VjdGlvbiBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZQoJICAgIGNvcnJlc3BvbmRpbmcgInN0YW5kYXJkIiBzZWN0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKCSAgICB0aGF0IHNob3VsZCBoYXZlIHNvbWUgb2YgaXRzIHNldHRpbmdzIG92ZXJ3cml0dGVuIHdpdGggdGhlCgkgICAgYXBwbGljYXRpb24gc3BlY2lmaWMgc2V0dGluZ3MgeW91IGRlZmluZS4KCSAgICBUaGUgdGhyZWUgcGFydHMgb2YgdGhlIHNlY3Rpb24gbmFtZSBhcmUgc2VwYXJhdGVkIGJ5IHR3byBiYWNrc2xhc2hlcy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBDdXJyZW50bHkgd2luZSBzdXBwb3J0cyBvdmVycmlkaW5nIHNlbGVjdGVkIHNldHRpbmdzIHdpdGhpbgoJICAgIHRoZSBzZWN0aW9ucyBbRGxsT3ZlcnJpZGVzXSwgW3gxMWRydl0sIFt2ZXJzaW9uXSBhbmQgW2Rzb3VuZF0gb25seS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBvdmVycmlkZXMgdGhlIG5vcm1hbCBzZXR0aW5ncyBmb3IgYQogICAgICAgICAgICBwcm9ncmFtOgoJICAgIDxwcm9ncmFtbGlzdGluZz4KOzsgZGVmYXVsdCBzZXR0aW5ncwpbeDExZHJ2XQoiTWFuYWdlZCIgPSAiWSIKIkRlc2t0b3AiID0gIk4iCgo7OyBydW4gaW5zdGFsbCBpbiBkZXNrdG9wIG1vZGUKW0FwcERlZmF1bHRzXFxpbnN0YWxsLmV4ZVxceDExZHJ2XQoiTWFuYWdlZCIgPSAiTiIKIkRlc2t0b3AiID0gIjgwMHg2MDAiCgkgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5XaGVyZSBEbyBJIFB1dCBJdD88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIHdpbmUgY29uZmlnIGZpbGUgY2FuIGdvIGluIHR3byBwbGFjZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT48ZmlsZW5hbWU+L3Vzci9sb2NhbC9ldGMvd2luZS5jb25mPC9maWxlbmFtZT48L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgIEEgc3lzdGVtd2lkZSBjb25maWcgZmlsZSwgdXNlZCBmb3IgYW55b25lIHdobyBkb2Vzbid0CiAgICAgICAgICAgICAgICBoYXZlIHRoZWlyIG93bi4gTk9URTogdGhpcyBmaWxlIGlzIGN1cnJlbnRseSB1bnVzZWQgYXMgYQogICAgICAgICAgICAgICAgbmV3IGdsb2JhbCBjb25maWd1cmF0aW9uIG1lY2hhbmlzbSBpcyBub3QgaW4gcGxhY2UgYXQgdGhpcwogICAgICAgICAgICAgICAgdGltZS4KICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPjxmaWxlbmFtZT4kSE9NRS8ud2luZS9jb25maWc8L2ZpbGVuYW1lPjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgWW91ciBvd24gY29uZmlnIGZpbGUgKHdoaWNoIG9ubHkgaXMgdXNlZCBmb3IgeW91ciB1c2VyKS4KICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvIGNvcHkgeW91ciB2ZXJzaW9uIG9mIHRoZSB3aW5lIGNvbmZpZyBmaWxlIHRvCiAgICAgICAgICA8ZmlsZW5hbWU+JEhPTUUvLndpbmUvY29uZmlnPC9maWxlbmFtZT4KCSAgb3IgPGZpbGVuYW1lPi91c3IvbG9jYWwvZXRjL3dpbmUuY29uZjwvZmlsZW5hbWU+CgkgIGZvciB3aW5lIHRvIHJlY29nbml6ZSBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPldoYXQgSWYgSXQgRG9lc24ndCBXb3JrPzwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBpcyBhbHdheXMgYSBjaGFuY2UgdGhhdCB0aGluZ3Mgd2lsbCBnbyB3cm9uZy4gSWYgdGhlCiAgICAgICAgICB1bnRoaW5rYWJsZSBoYXBwZW5zLCByZXBvcnQgdGhlIHByb2JsZW0gdG8KCSAgPHVsaW5rIHVybD0iaHR0cDovL2J1Z3Mud2luZWhxLmNvbS8iPldpbmUgQnVnemlsbGE8L3VsaW5rPiwKCSAgdHJ5IHRoZSBuZXdzZ3JvdXAKICAgICAgICAgIDxzeXN0ZW1pdGVtPmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZTwvc3lzdGVtaXRlbT4sCgkgIG9yIHRoZSBJUkMgY2hhbm5lbCA8c3lzdGVtaXRlbT4jV2luZUhRPC9zeXN0ZW1pdGVtPiBmb3VuZCBvbgogICAgICAgICAgaXJjLm9wZW5wcm9qZWN0cy5uZXQsIG9yIGNvbm5lY3RlZCBzZXJ2ZXJzLgoJICBNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBsb29rZWQgb3ZlciB0aGlzIGRvY3VtZW50IHRob3JvdWdobHksCgkgIGFuZCBoYXZlIGFsc28gcmVhZDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+PGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPGZpbGVuYW1lPmh0dHA6Ly93d3cud2luZWhxLm9yZy90cm91YmxlLzwvZmlsZW5hbWU+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBpbmRlZWQgaXQgbG9va3MgbGlrZSB5b3UndmUgZG9uZSB5b3VyIHJlc2VhcmNoLCBiZQogICAgICAgICAgcHJlcGFyZWQgZm9yIGhlbHBmdWwgc3VnZ2VzdGlvbnMuIElmIHlvdSBoYXZlbid0LCBicmFjZQogICAgICAgICAgeW91cnNlbGYgZm9yIGhlYXZpbmcgZmxhbWluZy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgIDxzZWN0MSBpZD0ieDExZHJ2Ij4KICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSB4MTFkcnYgRHJpdmVyPC90aXRsZT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24veDExZHJ2PC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIE1vc3QgV2luZSB1c2VycyBydW4gV2luZSB1bmRlciB0aGUgd2luZG93aW5nIHN5c3RlbSBrbm93biBhcwogICAgICAgIFgxMS4gRHVyaW5nIG1vc3Qgb2YgV2luZSdzIGhpc3RvcnksIHRoaXMgd2FzIHRoZSBvbmx5IGRpc3BsYXkKICAgICAgICBkcml2ZXIgYXZhaWxhYmxlLCBidXQgaW4gcmVjZW50IHllYXJzLCBwYXJ0cyBvZiBXaW5lIGhhdmUgYmVlbgogICAgICAgIHJlb3JnYW5pemVkIHRvIGFsbG93IGZvciBvdGhlciBkaXNwbGF5IGRyaXZlcnMgKGFsdGhvdWdoIHRoZQogICAgICAgIG9ubHkgYWx0ZXJuYXRpdmUgY3VycmVudGx5IGF2YWlsYWJsZSBpcyBQYXRyaWsgU3RyaWR2YWxsJ3MKICAgICAgICBuY3Vyc2VzLWJhc2VkIHR0eWRydiwgd2hpY2ggaGUgY2xhaW1zIHdvcmtzIGZvciBkaXNwbGF5aW5nCiAgICAgICAgY2FsYy5leGUpLiBUaGUgZGlzcGxheSBkcml2ZXIgaXMgY2hvc2VuIHdpdGggdGhlCiAgICAgICAgPGxpdGVyYWw+R3JhcGhpY3NEcml2ZXI8L2xpdGVyYWw+IG9wdGlvbiBpbiB0aGUgW3dpbmVdIHNlY3Rpb24KICAgICAgICBvZiA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiwgYnV0IEkgd2lsbCBvbmx5IGNvdmVyIHRoZQogICAgICAgIHgxMWRydiBkcml2ZXIgaW4gdGhpcyBhcnRpY2xlLgogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPngxMWRydiBtb2RlcyBvZiBvcGVyYXRpb248L3RpdGxlPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSB4MTFkcnYgZHJpdmVyIGNvbnNpc3RzIG9mIHR3byBjb25jZXB0dWFsbHkgZGlzdGluY3QKICAgICAgICAgIHBpZWNlcywgdGhlIGdyYXBoaWNzIGRyaXZlciAoR0RJIHBhcnQpLCBhbmQgdGhlIHdpbmRvd2luZwogICAgICAgICAgZHJpdmVyIChVU0VSIHBhcnQpLiBCb3RoIG9mIHRoZXNlIGFyZSBsaW5rZWQgaW50byB0aGUKICAgICAgICAgIDxmaWxlbmFtZT5saWJ4MTFkcnYuc288L2ZpbGVuYW1lPiBtb2R1bGUsIHRob3VnaCAod2hpY2ggeW91CiAgICAgICAgICBsb2FkIHdpdGggdGhlIDxsaXRlcmFsPkdyYXBoaWNzRHJpdmVyPC9saXRlcmFsPiBvcHRpb24pLiBJbgogICAgICAgICAgV2luZSwgcnVubmluZyBvbiBYMTEsIHRoZSBncmFwaGljcyBkcml2ZXIgbXVzdCBkcmF3IG9uCiAgICAgICAgICBkcmF3YWJsZXMgKHdpbmRvdyBpbnRlcmlvcnMpIHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcKICAgICAgICAgIGRyaXZlci4gVGhpcyBkaWZmZXJzIGEgYml0IGZyb20gdGhlIFdpbmRvd3MgbW9kZWwsIHdoZXJlIHRoZQogICAgICAgICAgd2luZG93aW5nIHN5c3RlbSBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGRldmljZSBjb250ZXh0cwogICAgICAgICAgY29udHJvbGxlZCBieSB0aGUgZ3JhcGhpY3MgZHJpdmVyLCBhbmQgYXBwbGljYXRpb25zIGFyZQogICAgICAgICAgYWxsb3dlZCB0byBob29rIGludG8gdGhpcyByZWxhdGlvbnNoaXAgYW55d2hlcmUgdGhleSBsaWtlLgogICAgICAgICAgVGh1cywgdG8gcHJvdmlkZSBhbnkgcmVhc29uYWJsZSB0cmFkZW9mZiBiZXR3ZWVuCiAgICAgICAgICBjb21wYXRpYmlsaXR5IGFuZCB1c2FiaWxpdHksIHRoZSB4MTFkcnYgaGFzIHRocmVlIGRpZmZlcmVudAogICAgICAgICAgbW9kZXMgb2Ygb3BlcmF0aW9uLgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPk1hbmFnZWQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0LiBTcGVjaWZpZWQgYnkgdXNpbmcgdGhlIDxsaXRlcmFsPk1hbmFnZWQ8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICB3aW5lIGNvbmZpZyBmaWxlIG9wdGlvbiAoc2VlIGJlbG93KS4KICAgICAgICAgICAgICAgIE9yZGluYXJ5IHRvcC1sZXZlbCBmcmFtZSB3aW5kb3dzIHdpdGggdGhpY2sgYm9yZGVycywKICAgICAgICAgICAgICAgIHRpdGxlIGJhcnMsIGFuZCBzeXN0ZW0gbWVudXMgd2lsbCBiZSBtYW5hZ2VkIGJ5IHlvdXIKICAgICAgICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyLiBUaGlzIGxldHMgdGhlc2UgYXBwbGljYXRpb25zIGludGVncmF0ZQogICAgICAgICAgICAgICAgYmV0dGVyIHdpdGggdGhlIHJlc3Qgb2YgeW91ciBkZXNrdG9wLCBidXQgbWF5IG5vdAogICAgICAgICAgICAgICAgYWx3YXlzIHdvcmsgcGVyZmVjdGx5IChhIHJld3JpdGUgb2YgdGhpcyBtb2RlIG9mCiAgICAgICAgICAgICAgICBvcGVyYXRpb24sIHRvIG1ha2UgaXQgbW9yZSByb2J1c3QgYW5kIGxlc3MgcGF0Y2h5LCBpcwogICAgICAgICAgICAgICAgY3VycmVudGx5IGJlaW5nIGRvbmUsIHRob3VnaCwgYW5kIGl0J3MgcGxhbm5lZCB0byBiZQogICAgICAgICAgICAgICAgZmluaXNoZWQgYmVmb3JlIHRoZSBXaW5lIDEuMCByZWxlYXNlKS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlVubWFuYWdlZC9Ob3JtYWw8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50IChhbnkgcnVubmluZwogICAgICAgICAgICAgICAgd2luZG93IG1hbmFnZXIgaXMgaWdub3JlZCBjb21wbGV0ZWx5KS4gV2luZG93CiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAodGl0bGUgYmFycywgYm9yZGVycywgZXRjKSBhcmUgZHJhd24gYnkKICAgICAgICAgICAgICAgIFdpbmUgdG8gbG9vayBhbmQgZmVlbCBsaWtlIHRoZSByZWFsIFdpbmRvd3MuIFRoaXMgaXMKICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBhcHBsaWNhdGlvbnMgdGhhdCBkZXBlbmQgb24gYmVpbmcgYWJsZQogICAgICAgICAgICAgICAgdG8gY29tcHV0ZSB0aGUgZXhhY3Qgc2l6ZXMgb2YgYW55IHN1Y2ggZGVjb3JhdGlvbnMsIG9yCiAgICAgICAgICAgICAgICB0aGF0IHdhbnQgdG8gZHJhdyB0aGVpciBvd24uCiAgICAgICAgICAgICAgICBVbm1hbmFnZWQgbW9kZSBpcyBvbmx5IHVzZWQgaWYgYm90aCBNYW5hZ2VkIGFuZCBEZXNrdG9wCiAgICAgICAgICAgICAgICBhcmUgc2V0IHRvIGRpc2FibGVkLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcC1pbi1hLUJveDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgU3BlY2lmaWVkIGJ5IHVzaW5nIHRoZSA8bGl0ZXJhbD5EZXNrdG9wPC9saXRlcmFsPgoJCXdpbmUgY29uZmlnIGZpbGUgb3B0aW9uIChzZWUgYmVsb3cpLgogICAgICAgICAgICAgICAgKGFkZGluZyBhIGdlb21ldHJ5LCBlLmcuIDxsaXRlcmFsPjgwMHg2MDA8L2xpdGVyYWw+CgkJZm9yIGEgc3VjaC1zaXplZCBkZXNrdG9wLCBvcgogICAgICAgICAgICAgICAgZXZlbiA8bGl0ZXJhbD44MDB4NjAwKzArMDwvbGl0ZXJhbD4gdG8KICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcG9zaXRpb24gdGhlIGRlc2t0b3AgYXQgdGhlIHVwcGVyLWxlZnQKICAgICAgICAgICAgICAgIGNvcm5lciBvZiB0aGUgZGlzcGxheSkuIFRoaXMgaXMgdGhlIG1vZGUgbW9zdAogICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5kb3dzIG1vZGVsLiBBbGwgYXBwbGljYXRpb24KICAgICAgICAgICAgICAgIHdpbmRvd3Mgd2lsbCBqdXN0IGJlIFdpbmUtZHJhd24gd2luZG93cyBpbnNpZGUgdGhlCiAgICAgICAgICAgICAgICBXaW5lLXByb3ZpZGVkIGRlc2t0b3Agd2luZG93ICh3aGljaCB3aWxsIGl0c2VsZiBiZQogICAgICAgICAgICAgICAgbWFuYWdlZCBieSB5b3VyIHdpbmRvdyBtYW5hZ2VyKSwgYW5kIFdpbmRvd3MKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBjYW4gcm9hbSBmcmVlbHkgd2l0aGluIHRoaXMgdmlydHVhbAogICAgICAgICAgICAgICAgd29ya3NwYWNlIGFuZCB0aGluayB0aGV5IG93biBpdCBhbGwsIHdpdGhvdXQKICAgICAgICAgICAgICAgIGRpc3R1cmJpbmcgeW91ciBvdGhlciBYIGFwcHMuCgkJTm90ZTogY3VycmVudGx5IHRoZXJlJ3Mgb25lIGRlc2t0b3Agd2luZG93IGZvciBldmVyeQoJCWFwcGxpY2F0aW9uOyB0aGlzIHdpbGwgYmUgZml4ZWQgYXQgc29tZSB0aW1lLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5UaGUgW3gxMWRydl0gc2VjdGlvbjwvdGl0bGU+CgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5NYW5hZ2VkPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBXaW5lIGNhbiBsZXQgZnJhbWUgd2luZG93cyBiZSBtYW5hZ2VkIGJ5IHlvdXIgd2luZG93CiAgICAgICAgICAgICAgICBtYW5hZ2VyLiBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCB0aGF0CiAgICAgICAgICAgICAgICBieSBkZWZhdWx0LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQ3JlYXRlcyBhIG1haW4gZGVza3RvcCB3aW5kb3cgb2YgYSBzcGVjaWZpZWQgc2l6ZQoJCXRvIGRpc3BsYXkgYWxsIFdpbmRvd3MgYXBwbGljYXRpb25zIGluLgoJCVRoZSBzaXplIGFyZ3VtZW50IGNvdWxkIGUuZy4gYmUgIjgwMHg2MDAiLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RFhHcmFiPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBJZiB5b3UgZG9uJ3QgdXNlIERHQSwgeW91IG1heSB3YW50IGFuIGFsdGVybmF0aXZlCiAgICAgICAgICAgICAgICBtZWFucyB0byBjb252aW5jZSB0aGUgbW91c2UgY3Vyc29yIHRvIHN0YXkgd2l0aGluIHRoZQogICAgICAgICAgICAgICAgZ2FtZSB3aW5kb3cuIFRoaXMgb3B0aW9uIGRvZXMgdGhhdC4gT2YgY291cnNlLCBhcyB3aXRoCiAgICAgICAgICAgICAgICBER0EsIGlmIFdpbmUgY3Jhc2hlcywgeW91J3JlIGluIHRyb3VibGUgKGFsdGhvdWdoIG5vdAogICAgICAgICAgICAgICAgYXMgYmFkbHkgYXMgaW4gdGhlIERHQSBjYXNlLCBzaW5jZSB5b3UgY2FuIHN0aWxsIHVzZQogICAgICAgICAgICAgICAgdGhlIGtleWJvYXJkIHRvIGdldCBvdXQgb2YgWCkuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Vc2VER0E8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgeW91IHdhbnQgRGlyZWN0RHJhdyB0byB1c2UKICAgICAgICAgICAgICAgIFhGcmVlODYncyA8Zmlyc3R0ZXJtPkRpcmVjdCBHcmFwaGljcwogICAgICAgICAgICAgICAgICBBcmNoaXRlY3R1cmU8L2ZpcnN0dGVybT4gKERHQSksIHdoaWNoIGlzIGFibGUgdG8KICAgICAgICAgICAgICAgIHRha2Ugb3ZlciB0aGUgZW50aXJlIGRpc3BsYXkgYW5kIHJ1biB0aGUgZ2FtZQogICAgICAgICAgICAgICAgZnVsbC1zY3JlZW4gYXQgbWF4aW11bSBzcGVlZC4gKFdpdGggREdBMSAoWEZyZWU4NgogICAgICAgICAgICAgICAgMy54KSwgeW91IHN0aWxsIGhhdmUgdG8gY29uZmlndXJlIHRoZSBYIHNlcnZlciB0byB0aGUKICAgICAgICAgICAgICAgIGdhbWUncyByZXF1ZXN0ZWQgYnBwIGZpcnN0LCBidXQgd2l0aCBER0EyIChYRnJlZTg2CiAgICAgICAgICAgICAgICA0LngpLCBydW50aW1lIGRlcHRoLXN3aXRjaGluZyBtYXkgYmUgcG9zc2libGUsCiAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24geW91ciBkcml2ZXIncyBjYXBhYmlsaXRpZXMuKSBCdXQgYmUgYXdhcmUKICAgICAgICAgICAgICAgIHRoYXQgaWYgV2luZSBjcmFzaGVzIHdoaWxlIGluIERHQSBtb2RlLCBpdCBtYXkgbm90IGJlCiAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byByZWdhaW4gY29udHJvbCBvdmVyIHlvdXIgY29tcHV0ZXIgd2l0aG91dAogICAgICAgICAgICAgICAgcmVib290aW5nLiBER0Egbm9ybWFsbHkgcmVxdWlyZXMgZWl0aGVyIHJvb3QKICAgICAgICAgICAgICAgIHByaXZpbGVnZXMgb3IgcmVhZC93cml0ZSBhY2Nlc3MgdG8KICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L21lbTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+VXNlWFNobTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgSWYgeW91IGRvbid0IHdhbnQgRGlyZWN0WCB0byB1c2UgREdBLCB5b3UgY2FuIGF0IGxlYXN0CiAgICAgICAgICAgICAgICB1c2UgWCBTaGFyZWQgTWVtb3J5IGV4dGVuc2lvbnMgKFhTaG0pLiBJdCBpcyBtdWNoCiAgICAgICAgICAgICAgICBzbG93ZXIgdGhhbiBER0EsIHNpbmNlIHRoZSBhcHAgZG9lc24ndCBoYXZlIGRpcmVjdAogICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSBwaHlzaWNhbCBmcmFtZSBidWZmZXIsIGJ1dCB1c2luZyBzaGFyZWQKICAgICAgICAgICAgICAgIG1lbW9yeSB0byBkcmF3IHRoZSBmcmFtZSBpcyBhdCBsZWFzdCBmYXN0ZXIgdGhhbgogICAgICAgICAgICAgICAgc2VuZGluZyB0aGUgZGF0YSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBYMTEgc29ja2V0LCBldmVuCiAgICAgICAgICAgICAgICB0aG91Z2ggV2luZSdzIFhTaG0gc3VwcG9ydCBpcyBzdGlsbCBrbm93biB0byBjcmFzaAogICAgICAgICAgICAgICAgc29tZXRpbWVzLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcERvdWJsZUJ1ZmZlcmVkPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgaWYgeW91IHVzZSB0aGUKICAgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZXNrdG9wPC9wYXJhbWV0ZXI+IGNvbW1hbmQtbGluZSBvcHRpb24KICAgICAgICAgICAgICAgIHRvIHJ1biBpbiBhIGRlc2t0b3Agd2luZG93LiBTcGVjaWZpZXMgd2hldGhlciB0bwogICAgICAgICAgICAgICAgY3JlYXRlIHRoZSBkZXNrdG9wIHdpbmRvdyB3aXRoIGEgZG91YmxlLWJ1ZmZlcmVkCiAgICAgICAgICAgICAgICB2aXN1YWwsIHNvbWV0aGluZyBtb3N0IE9wZW5HTCBnYW1lcyBuZWVkIHRvIHJ1bgogICAgICAgICAgICAgICAgY29ycmVjdGx5LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+QWxsb2NTeXN0ZW1Db2xvcnM8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgaGF2ZSBhIHBhbGV0dGUtYmFzZWQgZGlzcGxheSwgaS5lLgogICAgICAgICAgICAgICAgaWYgeW91ciBYIHNlcnZlciBpcyBzZXQgdG8gYSBkZXB0aCBvZiA4YnBwLCBhbmQgaWYgeW91CiAgICAgICAgICAgICAgICBoYXZlbid0IHJlcXVlc3RlZCBhIHByaXZhdGUgY29sb3IgbWFwLiBJdCBzcGVjaWZpZXMKICAgICAgICAgICAgICAgIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaGFyZWQgY29sb3JtYXAgY2VsbHMgKHBhbGV0dGUKICAgICAgICAgICAgICAgIGVudHJpZXMpIFdpbmUgc2hvdWxkIG9jY3VweS4gVGhlIGhpZ2hlciB0aGlzIHZhbHVlLAogICAgICAgICAgICAgICAgdGhlIGxlc3MgY29sb3JzIHdpbGwgYmUgYXZhaWxhYmxlIHRvIG90aGVyCiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Qcml2YXRlQ29sb3JNYXA8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgaGF2ZSBhIHBhbGV0dGUtYmFzZWQgZGlzcGxheSwgaS5lLgogICAgICAgICAgICAgICAgaWYgeW91ciBYIHNlcnZlciBpcyBzZXQgdG8gYSBkZXB0aCBvZiA4YnBwLiBJdAogICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gdXNlIHRoZSBzaGFyZWQgY29sb3IKICAgICAgICAgICAgICAgIG1hcCwgYnV0IGEgcHJpdmF0ZSBjb2xvciBtYXAsIHdoZXJlIGFsbCAyNTYgY29sb3JzIGFyZQogICAgICAgICAgICAgICAgYXZhaWxhYmxlLiBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgV2luZSdzIHByaXZhdGUKICAgICAgICAgICAgICAgIGNvbG9yIG1hcCBpcyBvbmx5IHNlZW4gd2hpbGUgdGhlIG1vdXNlIHBvaW50ZXIgaXMKICAgICAgICAgICAgICAgIGluc2lkZSBhIFdpbmUgd2luZG93LCBzbyBwc3ljaGVkZWxpYyBmbGFzaGluZyBhbmQKICAgICAgICAgICAgICAgIGZ1bmt5IGNvbG9ycyB3aWxsIGJlY29tZSByb3V0aW5lIGlmIHlvdSB1c2UgdGhlIG1vdXNlCiAgICAgICAgICAgICAgICBhIGxvdC4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlN5bmNocm9ub3VzPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBUbyBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgWDExIG9wZXJhdGlvbnMuCgkJSWYgV2luZSBjcmFzaGVzIHdpdGggYW4gWDExIGVycm9yLCB0aGVuIHlvdSBzaG91bGQgZW5hYmxlCgkJU3luY2hyb25vdXMgbW9kZSB0byBkaXNhYmxlIFgxMSByZXF1ZXN0IGNhY2hpbmcgaW4gb3JkZXIKCQl0byBtYWtlIHN1cmUgdGhhdCB0aGUgWDExIGVycm9yIGhhcHBlbnMgZGlyZWN0bHkgYWZ0ZXIKCQl0aGUgY29ycmVzcG9uZGluZyBYMTEgY2FsbCBpbiB0aGUgbG9nIGZpbGUgYXBwZWFycy4KCQlXaWxsIHNsb3cgZG93biBYMTEgb3V0cHV0ICEKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlNjcmVlbkRlcHRoPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgdG8gbXVsdGktZGVwdGggZGlzcGxheXMuIEl0IHNwZWNpZmllcwogICAgICAgICAgICAgICAgd2hpY2ggb2YgdGhlIGF2YWlsYWJsZSBkZXB0aHMgV2luZSBzaG91bGQgdXNlIChhbmQKICAgICAgICAgICAgICAgIHRlbGwgV2luZG93cyBhcHBzIGFib3V0KS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRpc3BsYXk8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIHdoaWNoIFgxMSBkaXNwbGF5IHRvIHVzZSwgYW5kIGlmCiAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHdpbGwgb3ZlcnJpZGUgdGhlCiAgICAgICAgICAgICAgICA8ZW52YXI+RElTUExBWTwvZW52YXI+IGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+UGVyZmVjdEdyYXBoaWNzPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBvbmx5IGRldGVybWluZXMgd2hldGhlciBmYXN0IFgxMSByb3V0aW5lcwogICAgICAgICAgICAgICAgb3IgZXhhY3QgV2luZSByb3V0aW5lcyB3aWxsIGJlIHVzZWQgZm9yIGNlcnRhaW4gUk9QCiAgICAgICAgICAgICAgICBjb2RlcyBpbiBibGl0IG9wZXJhdGlvbnMuIE1vc3QgdXNlcnMgd29uJ3Qgbm90aWNlIGFueQogICAgICAgICAgICAgICAgZGlmZmVyZW5jZS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlRleHRDUDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBDb2RlcGFnZSB0byBiZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHRleHQgaW4gWDExCgkJb3V0cHV0LiBTb21lIHNhbXBsZSB2YWx1ZXMgd291bGQgYmUgNDM3IChVU0EsIENhbmFkYSksCgkJODUwIChFdXJvcGUpLCA4NTIgKENlbnRyYWwvRWFzdGVybiBFdXJvcGUpLCA4NTUKCQkoQ3lyaWxsaWMpLiBGb3IgYWRkaXRpb25hbCBzdWl0YWJsZSB2YWx1ZXMsIHNlZSBlLmcuIHRoZSBMaW51eAoJCWtlcm5lbCdzIGNvZGVwYWdlIGNvbmZpZ3VyYXRpb24gcGFnZS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogICAgJnJlZ2lzdHJ5OwoKICAgIDxzZWN0MSBpZD0id2luZG93cy12ZXJzaW9ucyI+CgogICAgICA8dGl0bGU+U2V0dGluZyB0aGUgd2luZG93cyBhbmQgRE9TIHZlcnNpb24gdmFsdWUgdGhhdCdzIHBhc3NlZCB0bwogICAgICBwcm9ncmFtczwvdGl0bGU+CiAgICAgIAogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KICAgICAgICBPY3QgMTggMjAwMgogICAgICA8L3BhcmE+CgogICAgICA8cGFyYT4KICAgICAgICBUaGUgd2luZG93cyBhbmQgRE9TIHZlcnNpb24gdmFsdWUgYSBwcm9ncmFtIGdldHMgZS5nLiBieSBjYWxsaW5nIHRoZQoJV2luZG93cyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgcGxheXMgYSB2ZXJ5IGltcG9ydGFudCByb2xlOgoJSWYgeW91ciBXaW5lIGluc3RhbGxhdGlvbiBmb3Igd2hhdGV2ZXIgcmVhc29uIGZhaWxzIHRvIHByb3ZpZGUKCXRvIHlvdXIgcHJvZ3JhbSB0aGUgY29ycmVjdCB2ZXJzaW9uIHZhbHVlIHRoYXQgaXQgZXhwZWN0cywKCXRoZW4gdGhlIHByb2dyYW0gbWlnaHQgYXNzdW1lIHNvbWUgdmVyeSBiYWQgdGhpbmdzIGFuZCBmYWlsIChpbgoJdGhlIHdvcnN0IGNhc2UgZXZlbiBzaWxlbnRseSAhKS4KICAgIAogICAgICAgIEZvcnR1bmF0ZWx5IFdpbmUgY29udGFpbnMgc29tZSBtb3JlIG9yIGxlc3MgaW50ZWxsaWdlbnQgV2luZG93cwoJdmVyc2lvbiBndWVzc2luZyBhbGdvcml0aG0gdGhhdCB3aWxsIHRyeSB0byBndWVzcyB0aGUgV2luZG93cwoJdmVyc2lvbiBhIHByb2dyYW0gbWlnaHQgZXhwZWN0IGFuZCBwYXNzIHRoYXQgb25lIG9uIHRvIHRoZQoJcHJvZ3JhbS4KCglUaHVzIHlvdSBzaG91bGQgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IGxpZ2h0bHkgY29uZmlndXJlIGEgdmVyc2lvbiB2YWx1ZSwgYXMgdGhpcyB3aWxsIGJlIGEgImZvcmNlZCIgdmFsdWUgYW5kIHRodXMgdHVybiBvdXQgdG8gYmUgcmF0aGVyIGhhcm1mdWwgdG8gcHJvcGVyIG9wZXJhdGlvbi4gSW4gb3RoZXIgd29yZHM6IG9ubHkgZXhwbGljaXRseSBzZXQgYSBXaW5kb3dzIHZlcnNpb24gdmFsdWUgaW4gY2FzZSBXaW5lJ3Mgb3duIHZlcnNpb24gZGV0ZWN0aW9uIHdhcyB1bmFibGUgdG8gcHJvdmlkZSB0aGUgY29ycmVjdCBXaW5kb3dzIHZlcnNpb24gYW5kIHRoZSBwcm9ncmFtIGZhaWxzLgogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkhvdyB0byBjb25maWd1cmUgdGhlIFdpbmRvd3MgYW5kIERPUyB2ZXJzaW9uIHZhbHVlIFdpbmUKCXNob3VsZCByZXR1cm48L3RpdGxlPgoJCgk8cGFyYT4KCVRoZSB2ZXJzaW9uIHZhbHVlcyBjYW4gYmUgY29uZmlndXJlZCBpbiB0aGUgd2luZSBjb25maWcgZmlsZSBpbgoJdGhlIFtWZXJzaW9uXSBzZWN0aW9uLgoJPC9wYXJhPgoKCTx2YXJpYWJsZWxpc3Q+CgkgIDx2YXJsaXN0ZW50cnk+CgkgICAgPHRlcm0+IldpbmRvd3MiID0gIiZsdDt2ZXJzaW9uIHN0cmluZyZndDsiPC90ZXJtPgoJICAgIDxsaXN0aXRlbT4KCSAgICAgIDxwYXJhPgoJICAgICAgICBkZWZhdWx0OiBub25lOyBjaG9zZW4gYnkgc2VtaS1pbnRlbGxpZ2VudCBkZXRlY3Rpb24KCSAgICAgICAgbWVjaGFuaXNtIGJhc2VkIG9uIERMTCBlbnZpcm9ubWVudC4KCSAgICAgICAgVXNlZCB0byBzcGVjaWZ5IHdoaWNoIFdpbmRvd3MgdmVyc2lvbiB0byByZXR1cm4gdG8KCSAgICAgICAgcHJvZ3JhbXMgIChmb3JjZWQgIHZhbHVlLCBvdmVycmlkZXMgc3RhbmRhcmQgZGV0ZWN0aW9uCgkgICAgICAgIG1lY2hhbmlzbSAgISkuIFZhbGlkICBzZXR0aW5ncyBhcmUgZS5nLiAid2luMzEiLCAid2luOTUiLAoJICAgICAgICAid2luOTgiLCAgIndpbjJrIiwgICJ3aW54cCIuCgkJQWxzbyB2YWxpZCBhcyBhbgoJCTxsaW5rIGxpbmtlbmQ9ImFwcGRlZmF1bHRzLXNlY3Rpb24iPkFwcERlZmF1bHRzPC9saW5rPgoJICAgICAgICBzZXR0aW5nIChyZWNvbW1lbmRlZC9wcmVmZXJyZWQgdXNlKS4KCSAgICAgIDwvcGFyYT4KCSAgICA8L2xpc3RpdGVtPgoJICA8L3Zhcmxpc3RlbnRyeT4KCSAgPHZhcmxpc3RlbnRyeT4KCSAgICA8dGVybT4iRE9TIj0iJmx0O3ZlcnNpb24gc3RyaW5nJmd0OyI8L3Rlcm0+CgkgICAgPGxpc3RpdGVtPgoJICAgICAgPHBhcmE+CgkgICAgICAgIFVzZWQgdG8gc3BlY2lmeSB0aGUgRE9TIHZlcnNpb24gdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQKCQl0byBwcm9ncmFtcy4gT25seSB0YWtlcyBlZmZlY3QgaW4gY2FzZSBXaW5lIGFjdHMgYXMKCQkid2luMzEiIFdpbmRvd3MgdmVyc2lvbiAhIENvbW1vbiBET1MgdmVyc2lvbiBzZXR0aW5ncwoJCWluY2x1ZGUgNi4yMiwgNi4yMCwgNi4wMCwgNS4wMCwgNC4wMCwgMy4zMCwgMy4xMC4KCQlBbHNvIHZhbGlkIGFzIGFuCgkJPGxpbmsgbGlua2VuZD0iYXBwZGVmYXVsdHMtc2VjdGlvbiI+QXBwRGVmYXVsdHM8L2xpbms+CgkgICAgICAgIHNldHRpbmcgKHJlY29tbWVuZGVkL3ByZWZlcnJlZCB1c2UpLgoJICAgICAgPC9wYXJhPgoJICAgIDwvbGlzdGl0ZW0+CgkgIDwvdmFybGlzdGVudHJ5PgoJPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgogICAgCiAgICA8c2VjdDEgaWQ9ImNkcm9tLWxhYmVscyI+CiAgICAgIDxzZWN0MWluZm8+CiAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgPGF1dGhvcj4KICAgICAgICAgICAgPGZpcnN0bmFtZT5QZXRyPC9maXJzdG5hbWU+CiAgICAgICAgICAgIDxzdXJuYW1lPlRvbWFzZWs8L3N1cm5hbWU+CiAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICAgICAgICA8YWRkcmVzcz48ZW1haWw+JmVtYWlsLXBldHItdG9tYXNlazs8L2VtYWlsPjwvYWRkcmVzcz4KICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgPGNvbnRyaWI+Tm92IDE0IDE5OTk8L2NvbnRyaWI+CiAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgIDxmaXJzdG5hbWU+QW5kcmVhczwvZmlyc3RuYW1lPgogICAgICAgICAgICA8c3VybmFtZT5Nb2hyPC9zdXJuYW1lPgogICAgICAgICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgICAgICAgPGFkZHJlc3M+PGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD48L2FkZHJlc3M+CiAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgICAgICAgIDxjb250cmliPkphbiAyNSAyMDAwPC9jb250cmliPgogICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgPC9hdXRob3Jncm91cD4KICAgICAgPC9zZWN0MWluZm8+CgogICAgICA8dGl0bGU+RHJpdmUgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyB3aXRoIHdpbmU8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLXBldHItdG9tYXNlazsgPGVtYWlsPiZlbWFpbC1wZXRyLXRvbWFzZWs7PC9lbWFpbD4KICAgICAgICBOb3YgMTQgMTk5OQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIENoYW5nZXMgYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgIEphbiAyNSAyMDAwCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVW50aWwgbm93LCB5b3VyIG9ubHkgcG9zc2liaWxpdHkgb2Ygc3BlY2lmeWluZyBkcml2ZSB2b2x1bWUKICAgICAgICBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIHdhcyB0byBzZXQgdGhlbSBtYW51YWxseSBpbiB0aGUgd2luZQogICAgICAgIGNvbmZpZyBmaWxlLiBCeSBub3csIHdpbmUgY2FuIHJlYWQgdGhlbSBkaXJlY3RseSBmcm9tIHRoZQogICAgICAgIGRldmljZSBhcyB3ZWxsLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIG1hbnkgV2luIDl4IGdhbWVzIG9yCiAgICAgICAgZm9yIHNldHVwIHByb2dyYW1zIGRpc3RyaWJ1dGVkIG9uIENELVJPTXMgdGhhdCBjaGVjayBmb3IKICAgICAgICB2b2x1bWUgbGFiZWwuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+V2hhdCdzIFN1cHBvcnRlZD88L3RpdGxlPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PkZpbGUgU3lzdGVtPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5UeXBlczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q29tbWVudDwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PkZBVCBzeXN0ZW1zPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5oZCwgZmxvcHB5PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWFkcyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PklTTzk2NjA8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PmNkcm9tPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWFkcyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIChub3QgbWl4ZWQtbW9kZSBDRHMgeWV0ICEpPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgIDwvdGdyb3VwPgogICAgICAgIDwvaW5mb3JtYWx0YWJsZT4KCiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkhvdyBUbyBTZXQgVXA/PC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJlYWRpbmcgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyBqdXN0IHdvcmtzIGF1dG9tYWdpY2FsbHkKICAgICAgICAgIGlmIHlvdSBzcGVjaWZ5IGEgPGxpdGVyYWw+RGV2aWNlPTwvbGl0ZXJhbD4gbGluZSBpbiB0aGUKICAgICAgICAgIFtEcml2ZSBYXSBzZWN0aW9uIGluIHlvdXIgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4uCiAgICAgICAgICBOb3RlIHRoYXQgdGhlIGRldmljZSBoYXMgdG8gZXhpc3QgYW5kIG11c3QgYmUgYWNjZXNzaWJsZSBpZgogICAgICAgICAgeW91IGRvIHRoaXMsIHRob3VnaC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZG9uJ3QgZG8gdGhhdCwgdGhlbiB5b3Ugc2hvdWxkIGdpdmUgZml4ZWQKICAgICAgICAgIDxsaXRlcmFsPiJMYWJlbCIgPTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+IlNlcmlhbCIgPTwvbGl0ZXJhbD4KICAgICAgICAgIGVudHJpZXMgaW4gPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4sIGFzIFdpbmUgcmV0dXJucwogICAgICAgICAgdGhlc2UgZW50cmllcyBpbnN0ZWFkIGlmIG5vIGRldmljZSBpcyBnaXZlbi4gSWYgdGhleSBkb24ndAogICAgICAgICAgZXhpc3QsIHRoZW4gV2luZSB3aWxsIHJldHVybiBkZWZhdWx0IHZhbHVlcyAobGFiZWwKICAgICAgICAgIDxsaXRlcmFsPkRyaXZlIFg8L2xpdGVyYWw+IGFuZCBzZXJpYWwKICAgICAgICAgIDxsaXRlcmFsPjEyMzQ1Njc4PC9saXRlcmFsPikuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IHdhbnQgdG8gZ2l2ZSBhIDxsaXRlcmFsPiJEZXZpY2UiID08L2xpdGVyYWw+IGVudHJ5CiAgICAgICAgICA8ZW1waGFzaXM+b25seTwvZW1waGFzaXM+IGZvciBkcml2ZSByYXcgc2VjdG9yIGFjY2Vzc2VzLAoJICBidXQgbm90IGZvciByZWFkaW5nIHRoZSB2b2x1bWUgaW5mbyBmcm9tIHRoZSBkZXZpY2UgKGkuZS4geW91IHdhbnQKCSAgYSA8ZW1waGFzaXM+Zml4ZWQ8L2VtcGhhc2lzPiwgcHJlY29uZmlndXJlZCBsYWJlbCksIHlvdSBuZWVkCiAgICAgICAgICB0byBzcGVjaWZ5IDxsaXRlcmFsPiJSZWFkVm9sSW5mbyIgPSAiMCI8L2xpdGVyYWw+IHRvIHRlbGwgV2luZQogICAgICAgICAgdG8gc2tpcCB0aGUgdm9sdW1lIHJlYWRpbmcuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5FWEFNUExFUzwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYSBzaW1wbGUgZXhhbXBsZSBvZiBjZHJvbSBhbmQgZmxvcHB5OyBsYWJlbHMgd2lsbCBiZQogICAgICAgICAgcmVhZCBmcm9tIHRoZSBkZXZpY2Ugb24gYm90aCBjZHJvbSBhbmQgZmxvcHB5OyBzZXJpYWwKICAgICAgICAgIG51bWJlcnMgb24gZmxvcHB5IG9ubHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CltEcml2ZSBBXQoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJUeXBlIiA9ICJmbG9wcHkiCiJEZXZpY2UiID0gIi9kZXYvZmQwIgoiRmlsZXN5c3RlbSIgPSAibXNkb3MiCgpbRHJpdmUgUl0KIlBhdGgiID0gIi9tbnQvY2Ryb20iCiJUeXBlIiA9ICJjZHJvbSIKIkRldmljZSIgPSAiL2Rldi9oZGExIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBvdmVycmlkaW5nIHRoZSBDRC1ST00gbGFiZWw6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CltEcml2ZSBKXQoiUGF0aCIgPSAiL21udC9jZHJvbSIKIlR5cGUiID0gImNkcm9tIgoiTGFiZWwiID0gIlgyMzRHQ0RTRSIKOyBub3RlIHRoYXQgdGhlIGRldmljZSBpc24ndCByZWFsbHkgbmVlZGVkIGhlcmUgYXMgd2UgaGF2ZSBhIGZpeGVkIGxhYmVsCiJEZXZpY2UiID0gIi9kZXYvY2Ryb20iCiJGaWxlc3lzdGVtIiA9ICJtc2RvcyIKICAgICAgICA8L3NjcmVlbj4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+VG9kbyAvIE9wZW4gSXNzdWVzPC90aXRsZT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBUaGUgY2Ryb20gbGFiZWwgY2FuIGJlIHJlYWQgb25seSBpZiB0aGUgZGF0YSB0cmFjayBvZgogICAgICAgICAgICAgIHRoZSBkaXNrIHJlc2lkZXMgaW4gdGhlIGZpcnN0IHRyYWNrIGFuZCB0aGUgY2Ryb20gaXMKICAgICAgICAgICAgICBpc285NjYwLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIEJldHRlciBjaGVja2luZyBmb3IgRkFUIHN1cGVyYmxvY2sgKGl0IG5vdyBjaGVja3Mgb25seQogICAgICAgICAgICAgIG9uZSBieXRlKS4gPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgbGFiZWxzL3NlcmlhbCBudW1zIFdSSVRJTkcuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgQ2FuIHRoZSBsYWJlbCBiZSBsb25nZXIgdGhhbiAxMSBjaGFycz8gKGlzbzk2NjAgaGFzIDMyCiAgICAgICAgICAgICAgY2hhcnMpLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIFdoYXQgYWJvdXQgcmVhZGluZyBleHQyIHZvbHVtZSBsYWJlbD8gLi4uLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgIDxzZWN0MSBpZD0iZGxsLWNvbmZpZyI+CiAgICAgIDx0aXRsZT5ETEwgY29uZmlndXJhdGlvbjwvdGl0bGU+CiAgICAgIDxzZWN0MiBpZD0iZGxsLW92ZXJyaWRlcyI+CiAgICAgICAgPHRpdGxlPkRMTCBPdmVycmlkZXM8L3RpdGxlPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vZGxsLW92ZXJyaWRlczwvZmlsZW5hbWU+KQogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgd2luZSBjb25maWcgZmlsZSBkaXJlY3RpdmVzIFtEbGxEZWZhdWx0c10KICAgICAgICAgIGFuZCBbRGxsT3ZlcnJpZGVzXSBhcmUgdGhlIHN1YmplY3Qgb2Ygc29tZSBjb25mdXNpb24uIFRoZQogICAgICAgICAgb3ZlcmFsbCBwdXJwb3NlIG9mIG1vc3Qgb2YgdGhlc2UgZGlyZWN0aXZlcyBhcmUgY2xlYXIgZW5vdWdoLAogICAgICAgICAgdGhvdWdoIC0gZ2l2ZW4gYSBjaG9pY2UsIHNob3VsZCBXaW5lIHVzZSBpdHMgb3duIGJ1aWx0LWluCiAgICAgICAgICBETExzLCBvciBzaG91bGQgaXQgdXNlIDxmaWxlbmFtZT4uRExMPC9maWxlbmFtZT4gZmlsZXMgZm91bmQKICAgICAgICAgIGluIGFuIGV4aXN0aW5nIFdpbmRvd3MgaW5zdGFsbGF0aW9uPyBUaGlzIGRvY3VtZW50IGV4cGxhaW5zCiAgICAgICAgICBob3cgdGhpcyBmZWF0dXJlIHdvcmtzLgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPkRMTCB0eXBlczwvdGl0bGU+CiAgICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm5hdGl2ZTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBICJuYXRpdmUiIERMTCBpcyBhIDxmaWxlbmFtZT4uRExMPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICB3cml0dGVuIGZvciB0aGUgcmVhbCBNaWNyb3NvZnQgV2luZG93cy4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+YnVpbHRpbjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBICJidWlsdGluIiBETEwgaXMgYSBXaW5lIERMTC4gVGhlc2UgY2FuIGVpdGhlciBiZSBhCiAgICAgICAgICAgICAgICAgIHBhcnQgb2YgPGZpbGVuYW1lPmxpYndpbmUuc288L2ZpbGVuYW1lPiwgb3IgbW9yZQogICAgICAgICAgICAgICAgICByZWNlbnRseSwgaW4gYSBzcGVjaWFsIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAgICAgICAgIHRoYXQgV2luZSBpcyBhYmxlIHRvIGxvYWQgb24gZGVtYW5kLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5zbzwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBIG5hdGl2ZSBVbml4IDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlLCB3aXRoCiAgICAgICAgICAgICAgICAgIGNhbGxpbmcgY29udmVudGlvbiBjb252ZXJzaW9uIHRodW5rcyBnZW5lcmF0ZWQgb24gdGhlCiAgICAgICAgICAgICAgICAgIGZseSBhcyB0aGUgbGlicmFyeSBpcyBsb2FkZWQuIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bAogICAgICAgICAgICAgICAgICBmb3IgbGlicmFyaWVzIHN1Y2ggYXMgImdsaWRlIiB0aGF0IGhhdmUgZXhhY3RseSB0aGUKICAgICAgICAgICAgICAgICAgc2FtZSBBUEkgb24gYm90aCBXaW5kb3dzIGFuZCBVbml4LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbERlZmF1bHRzXSBzZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+RGVmYXVsdExvYWRPcmRlcjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBUaGlzIHNwZWNpZmllcyBpbiB3aGF0IG9yZGVyIFdpbmUgc2hvdWxkIHNlYXJjaCBmb3IKICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIERMTCB0eXBlcywgaWYgdGhlIERMTCBpbiBxdWVzdGlvbiB3YXMgbm90CiAgICAgICAgICAgICAgICAgIGZvdW5kIGluIHRoZSBbRGxsT3ZlcnJpZGVzXSBzZWN0aW9uLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbFBhaXJzXSBzZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBdCBvbmUgdGltZSwgdGhlcmUgd2FzIGEgc2VjdGlvbiBjYWxsZWQgW0RsbFBhaXJzXSBpbiB0aGUKICAgICAgICAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUsIGJ1dCB0aGlzIGhhcyBiZWVuIG9ic29sZXRlZAogICAgICAgICAgICBiZWNhdXNlIHRoZSBwYWlyaW5nIGluZm9ybWF0aW9uIGhhcyBub3cgYmVlbiBlbWJlZGRlZCBpbnRvCiAgICAgICAgICAgIFdpbmUgaXRzZWxmLiAoVGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHdhcyBtZXJlbHkgdG8gYmUKICAgICAgICAgICAgYWJsZSB0byBpc3N1ZSB3YXJuaW5ncyBpZiB0aGUgdXNlciBhdHRlbXB0ZWQgdG8gcGFpcgogICAgICAgICAgICBjb2RlcGVuZGVudCAxNi1iaXQvMzItYml0IERMTHMgb2YgZGlmZmVyZW50IHR5cGVzLikgSWYgeW91CiAgICAgICAgICAgIHN0aWxsIGhhdmUgdGhpcyBpbiB5b3VyIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+IG9yCiAgICAgICAgICAgIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiwgeW91IG1heSBzYWZlbHkgZGVsZXRlIGl0LgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbE92ZXJyaWRlc10gc2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNwZWNpZmllcyBob3cgeW91IHdhbnQgc3BlY2lmaWMgRExMcyB0byBiZQogICAgICAgICAgICBoYW5kbGVkLCBpbiBwYXJ0aWN1bGFyIHdoZXRoZXIgeW91IHdhbnQgdG8gdXNlICJuYXRpdmUiIERMTHMKICAgICAgICAgICAgb3Igbm90LCBpZiB5b3UgaGF2ZSBzb21lIGZyb20gYSByZWFsIFdpbmRvd3MgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgQmVjYXVzZSBidWlsdGlucyBkbyBub3QgbWl4IHNlYW1sZXNzbHkgd2l0aCBuYXRpdmUgRExMcyB5ZXQsCiAgICAgICAgICAgIGNlcnRhaW4gRExMIGRlcGVuZGVuY2llcyBtYXkgYmUgcHJvYmxlbWF0aWMsIGJ1dCB3b3JrYXJvdW5kcwogICAgICAgICAgICBleGlzdCBpbiBXaW5lIGZvciBtYW55IHBvcHVsYXIgRExMIGNvbmZpZ3VyYXRpb25zLiBBbHNvIHNlZQogICAgICAgICAgICBXV04ncyBbMTZdU3RhdHVzIFBhZ2UgdG8gZmlndXJlIG91dCBob3cgd2VsbCB5b3VyIGZhdm9yaXRlCiAgICAgICAgICAgIERMTCBpcyBpbXBsZW1lbnRlZCBpbiBXaW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEl0IGlzIG9mIGNvdXJzZSBhbHNvIHBvc3NpYmxlIHRvIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGJ5CiAgICAgICAgICAgIGV4cGxpY3RseSB1c2luZyBXaW5lJ3MgPHBhcmFtZXRlcj4tLWRsbDwvcGFyYW1ldGVyPgogICAgICAgICAgICBjb21tYW5kLWxpbmUgb3B0aW9uIChzZWUgdGhlIG1hbiBwYWdlIGZvciBkZXRhaWxzKS4gIFNvbWUKICAgICAgICAgICAgaGludHMgZm9yIGNob29zaW5nIHlvdXIgb3B0aW1hbCBjb25maWd1cmF0aW9uIChsaXN0ZWQgYnkKICAgICAgICAgICAgMTYvMzItYml0IERMTCBwYWlyKToKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+a3JubDM4Niwga2VybmVsMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgTmF0aXZlIHZlcnNpb25zIG9mIHRoZXNlIHdpbGwgbmV2ZXIgd29yaywgc28gZG9uJ3QgdHJ5LiBMZWF2ZQogICAgICAgICAgICAgICAgICBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+Z2RpLCBnZGkzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBHcmFwaGljcyBEZXZpY2UgSW50ZXJmYWNlLiBObyBlZmZvcnQgaGFzIGJlZW4gbWFkZSBhdCB0cnlpbmcgdG8KICAgICAgICAgICAgICAgICAgcnVuIG5hdGl2ZSBHREkuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT51c2VyLCB1c2VyMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgV2luZG93IG1hbmFnZW1lbnQgYW5kIHN0YW5kYXJkIGNvbnRyb2xzLiBJdCB3YXMKICAgICAgICAgICAgICAgICAgcG9zc2libGUgdG8gdXNlIFdpbjk1J3MgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgICB2ZXJzaW9ucyBhdCBzb21lIHBvaW50IChpZiBhbGwgb3RoZXIgRExMcyB0aGF0IGRlcGVuZAogICAgICAgICAgICAgICAgICBvbiBpdCwgc3VjaCBhcyBjb21jdGwzMiBhbmQgY29tZGxnMzIsIHdlcmUgYWxzbyBydW4KICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPikuIEhvd2V2ZXIsIHRoaXMgaXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIGFmdGVyIHRoZSBBZGRyZXNzIFNwYWNlIFNlcGFyYXRpb24sIHNvIGxlYXZlCiAgICAgICAgICAgICAgICAgIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5udGRsbDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBOVCBrZXJuZWwgQVBJLiBBbHRob3VnaCBiYWRseSBkb2N1bWVudGVkLCB0aGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMgd2lsbCBuZXZlcgogICAgICAgICAgICAgICAgICB3b3JrLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+dzMyc2tybmw8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgV2luMzJzIChmb3IgV2luMy54KS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgICAgdmVyc2lvbiB3aWxsIHByb2JhYmx5IG5ldmVyIHdvcmsuIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT53b3czMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW4xNiBzdXBwb3J0IGxpYnJhcnkgZm9yIE5ULiBUaGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIKICAgICAgICAgICAgICAgICAgd29yay4gTGVhdmUgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPnN5c3RlbTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW4xNiBrZXJuZWwgc3R1ZmYuIFdpbGwgbmV2ZXIgd29yawogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LiBMZWF2ZSBhdAogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+ZGlzcGxheTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBEaXNwbGF5IGRyaXZlci4gRGVmaW5pdGVseSBsZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+dG9vbGhlbHA8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgVG9vbCBoZWxwZXIgcm91dGluZXMuIFRoaXMgaXMgcmFyZWx5IGEgc291cmNlIG9mIHByb2JsZW1zLgogICAgICAgICAgICAgICAgICBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+dmVyLCB2ZXJzaW9uPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFZlcnNpb25pbmcuIFNlbGRvbSB1c2VmdWwgdG8gbWVzcyB3aXRoLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5hZHZhcGkzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBSZWdpc3RyeSBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIFRyeWluZyB0aGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMgbWF5IG9yIG1heQogICAgICAgICAgICAgICAgICBub3Qgd29yay4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+Y29tbWRsZywgY29tZGxnMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQ29tbW9uIERpYWxvZ3MsIHN1Y2ggYXMgY29sb3IgcGlja2VyLCBmb250IGRpYWxvZywKICAgICAgICAgICAgICAgICAgcHJpbnQgZGlhbG9nLCBvcGVuL3NhdmUgZGlhbG9nLCBldGMuIEl0IGlzIHNhZmUgdG8gdHJ5CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmNvbW1jdHJsLCBjb21jdGwzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBDb21tb24gQ29udHJvbHMuIFRoaXMgaXMgdG9vbGJhcnMsIHN0YXR1cyBiYXJzLCBsaXN0IGNvbnRyb2xzLAogICAgICAgICAgICAgICAgICB0aGUgd29ya3MuIEl0IGlzIHNhZmUgdG8gdHJ5IDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPnNoZWxsLCBzaGVsbDMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFNoZWxsIGludGVyZmFjZSAoZGVza3RvcCwgZmlsZXN5c3RlbSwgZXRjKS4gQmVpbmcgb25lIG9mIHRoZQogICAgICAgICAgICAgICAgICBtb3N0IHVuZG9jdW1lbnRlZCBwaWVjZXMgb2YgV2luZG93cywgeW91IG1heSBoYXZlIGx1Y2sgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uLCBzaG91bGQgeW91IG5lZWQgaXQuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPndpbnNvY2ssIHdzb2NrMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgV2luZG93cyBTb2NrZXRzLiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgIHdpbGwgbm90IHdvcmsgdW5kZXIgV2luZSwgc28gbGVhdmUgYXQKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmljbXA8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgSUNNUCByb3V0aW5lcyBmb3Igd3NvY2szMi4gQXMgd2l0aCB3c29jazMyLCBsZWF2ZSBhdAogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bXByPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gbWF5IG5vdCB3b3JrIGR1ZQogICAgICAgICAgICAgICAgICB0byB0aHVua2luZyBpc3N1ZXMuIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5semV4cGFuZCwgbHozMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBMZW1wZWwtWml2IGRlY29tcHJlc3Npb24uIFdpbmUncwogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPiB2ZXJzaW9uIG91Z2h0IHRvIHdvcmsgZmluZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+d2luYXNwaSwgd25hc3BpMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQWR2YW5jZWQgU0NTSSBQZXJpcGhlcmFsIEludGVyZmFjZS4gVGhlCiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICAgICAgICAgIHdvcmsuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5jcnRkbGw8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQyBSdW50aW1lIGxpYnJhcnkuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICAgIHZlcnNpb24gd2lsbCBlYXNpbHkgd29yayBiZXR0ZXIgdGhhbiBXaW5lJ3Mgb24gdGhpcwogICAgICAgICAgICAgICAgICBvbmUuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPndpbnNwb29sLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBQcmludGVyIHNwb29sZXIuIFlvdSBhcmUgbm90IGxpa2VseSB0byBoYXZlIG1vcmUgbHVjawogICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmRkcmF3PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIERpcmVjdERyYXcvRGlyZWN0M0QuIFNpbmNlIFdpbmUgZG9lcyBub3QgaW1wbGVtZW50IHRoZQogICAgICAgICAgICAgICAgICBEaXJlY3RYIEhBTCwgdGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbgogICAgICAgICAgICAgICAgICB3aWxsIG5vdCB3b3JrIGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+ZGlucHV0PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIERpcmVjdElucHV0LiBSdW5uaW5nIHRoaXMgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgICBtYXkgb3IgbWF5IG5vdCB3b3JrLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5kc291bmQ8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgRGlyZWN0U291bmQuIEl0IG1heSBiZSBwb3NzaWJsZSB0byBydW4gdGhpcwogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LCBidXQgZG9uJ3QgY291bnQgb24gaXQuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmRwbGF5L2RwbGF5eDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBEaXJlY3RQbGF5LiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgIG91Z2h0IHRvIHdvcmsgYmVzdCBvbiB0aGlzLCBpZiBhdCBhbGwuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1tc3lzdGVtLCB3aW5tbTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBNdWx0aW1lZGlhIHN5c3RlbS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgICAgdmVyc2lvbiBpcyBub3QgbGlrZWx5IHRvIHdvcmsuIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tc2FjbSwgbXNhY20zMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBdWRpbyBDb21wcmVzc2lvbiBNYW5hZ2VyLiBUaGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4gdmVyc2lvbiB3b3JrcyBiZXN0LCBpZiB5b3UKICAgICAgICAgICAgICAgICAgc2V0IG1zYWNtLmRydiB0byB0aGUgc2FtZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bXN2aWRlbywgbXN2ZnczMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBWaWRlbyBmb3IgV2luZG93cy4gSXQgaXMgc2FmZSAoYW5kIHJlY29tbWVuZGVkKSB0byB0cnkKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bWNpY2RhLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBDRCBBdWRpbyBNQ0kgZHJpdmVyLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2lzZXEuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIE1JREkgU2VxdWVuY2VyIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uTUlEPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgcGxheWJhY2spLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2l3YXZlLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXYXZlIGF1ZGlvIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uV0FWPC9maWxlbmFtZT4gcGxheWJhY2spLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2lhdmkuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEFWSSBNQ0kgZHJpdmVyICg8ZmlsZW5hbWU+LkFWSTwvZmlsZW5hbWU+IHZpZGVvCiAgICAgICAgICAgICAgICAgIHBsYXliYWNrKS4gQmVzdCB0byB1c2UgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bWNpYW5pbS5kcnY8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uIE1DSSBkcml2ZXIuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1zYWNtLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBdWRpbyBDb21wcmVzc2lvbiBNYW5hZ2VyLiBTZXQgdG8gc2FtZSBhcyBtc2FjbTMyLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5taWRpbWFwLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBNSURJIE1hcHBlci4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+d3Byb2NzPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBwc2V1ZG8tRExMIHVzZWQgYnkgV2luZSBmb3IgdGh1bmtpbmcKICAgICAgICAgICAgICAgICAgcHVycG9zZXMuIEEgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMKICAgICAgICAgICAgICAgICAgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgICA8L3NlY3QzPgogICAgICA8L3NlY3QyPgogICAgICA8c2VjdDIgaWQ9ImRsbC1taXNzaW5nIj4KICAgICAgICA8dGl0bGU+TWlzc2luZyBETExzPC90aXRsZT4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KICAgICAgICA8L3BhcmE+CgogICAgICAgIDxwYXJhPgoJICBJbiBjYXNlIFdpbmUgY29tcGxhaW5zIGFib3V0IGEgbWlzc2luZyBETEwsIHlvdSBzaG91bGQgY2hlY2sgd2hldGhlcgoJICB0aGlzIGZpbGUgaXMgYSBwdWJsaWNseSBhdmFpbGFibGUgRExMIG9yIGEgY3VzdG9tIERMTCBiZWxvbmdpbmcKCSAgdG8geW91ciBwcm9ncmFtIChieSBzZWFyY2hpbmcgZm9yIGl0cyBuYW1lIG9uIHRoZSBpbnRlcm5ldCkuCgkgIElmIHlvdSBtYW5hZ2VkIHRvIGdldCBob2xkIG9mIHRoZSBETEwsIHRoZW4geW91IHNob3VsZCBtYWtlIHN1cmUKCSAgdGhhdCBXaW5lIGlzIGFibGUgdG8gZmluZCBhbmQgbG9hZCBpdC4KCSAgRExMcyB1c3VhbGx5IGdldCBsb2FkZWQgYWNjb3JkaW5nIHRvIHRoZSBtZWNoYW5pc20gb2YgdGhlCgkgIFNlYXJjaFBhdGgoKSBmdW5jdGlvbi4KCSAgVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyBkaXJlY3RvcmllcyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgoKICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBUaGUgZGlyZWN0b3J5IHRoZSBwcm9ncmFtIHdhcyBzdGFydGVkIGZyb20uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CgkgICAgICAgIFRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KCSAgICAgICAgVGhlIFdpbmRvd3Mgc3lzdGVtIGRpcmVjdG9yeS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KCSAgICAgICAgVGhlIFdpbmRvd3MgZGlyZWN0b3J5LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBUaGUgUEFUSCB2YXJpYWJsZSBkaXJlY3Rvcmllcy4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L29yZGVyZWRsaXN0PgoKCSAgSW4gc2hvcnQ6IGVpdGhlciBwdXQgdGhlIHJlcXVpcmVkIERMTCBpbnRvIHlvdXIgYXBwbGljYXRpb24KCSAgZGlyZWN0b3J5IChtaWdodCBiZSB1Z2x5KSwgb3IgdXN1YWxseSBwdXQgaXQgaW50byB0aGUgV2luZG93cyBzeXN0ZW0KCSAgZGlyZWN0b3J5LiBKdXN0IGZpbmQgb3V0IGl0cyBkaXJlY3RvcnkgYnkgaGF2aW5nIGEgbG9vayBhdCB0aGUgV2luZQoJICBjb25maWcgRmlsZSB2YXJpYWJsZSAiU3lzdGVtIiAod2hpY2ggaW5kaWNhdGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUKCSAgV2luZG93cyBzeXN0ZW0gZGlyZWN0b3J5KSBhbmQgdGhlIGFzc29jaWF0ZWQgZHJpdmUgZW50cnkuCgkgIE5vdGUgdGhhdCB5b3UgcHJvYmFibHkgc2hvdWxkbid0IHVzZSBOVC1iYXNlZCBuYXRpdmUgRExMcywKCSAgc2luY2UgV2luZSdzIE5UIEFQSSBzdXBwb3J0IGlzIHNvbWV3aGF0IHdlYWtlciB0aGFuIGl0cyBXaW45eAoJICBBUEkgc3VwcG9ydCAodGh1cyBsZWFkaW5nIHRvIGV2ZW4gd29yc2UgY29tcGF0aWJpbGl0eSB3aXRoIE5UIERMTHMKCSAgdGhhbiB3aXRoIGEgbm8td2luZG93cyBzZXR1cCAhKSwgc28gYmV0dGVyIHVzZSBXaW45eCBuYXRpdmUgRExMcwoJICBpbnN0ZWFkIG9yIG5vIG5hdGl2ZSBETExzIGF0IGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICAgIDxzZWN0MiBpZD0iZGxsLXdpbmRvd3MiPgogICAgICAgIDx0aXRsZT5GZXRjaGluZyBuYXRpdmUgRExMcyBmcm9tIGEgV2luZG93cyBDRDwvdGl0bGU+CgogICAgICAgIDxwYXJhPgogICAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1hbmRyZWFzLW1vaHI7IDxlbWFpbD4mZW1haWwtYW5kcmVhcy1tb2hyOzwvZW1haWw+CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8cGFyYT4KCVRoZSBMaW51eCA8Y29tbWFuZD5jYWJleHRyYWN0PC9jb21tYW5kPiB1dGlsaXR5IGNhbiBiZSB1c2VkIHRvCglleHRyYWN0IG5hdGl2ZSBXaW5kb3dzIC5kbGwgZmlsZXMgZnJvbSAuY2FiIGZpbGVzIHRoYXQgYXJlIHRvIGJlCglmb3VuZCBvbiBtYW55IFdpbmRvd3MgaW5zdGFsbGF0aW9uIENEcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgICZmb250czsKICAgICZwcmludGluZzsKCiAgICA8c2VjdDEgaWQ9Indpbjk1bG9vayI+CiAgICAgIDx0aXRsZT5XaW45NS85OCBMb29rPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1kYXZpZC1jdXRoYmVydDsgPGVtYWlsPiZlbWFpbC1kYXZpZC1jdXRoYmVydDs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL3dpbjk1bG9vazwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFdpbjk1L1dpbjk4IGludGVyZmFjZSBjb2RlIGlzIGJlaW5nIGludHJvZHVjZWQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSW5zdGVhZCBvZiBjb21waWxpbmcgV2luZSBmb3IgV2luMy4xIHZzLiBXaW45NSB1c2luZwogICAgICAgIDxjb25zdGFudD4jZGVmaW5lPC9jb25zdGFudD4gc3dpdGNoZXMsIHRoZSBjb2RlIG5vdyBsb29rcyBpbiBhCiAgICAgICAgc3BlY2lhbCBbVHdlYWsuTGF5b3V0XSBzZWN0aW9uIG9mCiAgICAgICAgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4gZm9yIGEKICAgICAgICA8bGl0ZXJhbD4iV2luZUxvb2siID0gIldpbjk1IjwvbGl0ZXJhbD4gb3IKICAgICAgICA8bGl0ZXJhbD4iV2luZUxvb2siID0gIldpbjk4IjwvbGl0ZXJhbD4gZW50cnkuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgQSBmZXcgbmV3IHNlY3Rpb25zIGFuZCBhIG51bWJlciBvZiBlbnRyaWVzIGhhdmUgYmVlbiBhZGRlZCB0bwogICAgICAgIHRoZSA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiBmaWxlIC0tIHRoZXNlIGFyZSBmb3IKICAgICAgICBkZWJ1Z2dpbmcgdGhlIFdpbjk1IHR3ZWFrcyBvbmx5IGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZQogICAgICAgIHJlbGVhc2UhICBUaGVzZSBlbnRyaWVzL3NlY3Rpb25zIGFyZToKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CltUd2Vhay5Gb250c10KIlN5c3RlbS5IZWlnaHQiID0gIiZsdDtwb2ludCBzaXplPiIgICAgIyBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIHN5c3RlbSB0eXBlZmFjZQoiU3lzdGVtLkJvbGQiID0gIlt0cnVlfGZhbHNlXSIgICAgICAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSBib2xkZmFjZWQKIlN5c3RlbS5JdGFsaWMiID0gIlt0cnVlfGZhbHNlXSIgICAgIyBXaGV0aGVyIHRoZSBzeXN0ZW0gZm9udCBzaG91bGQgYmUgaXRhbGljaXplZAoiU3lzdGVtLlVuZGVybGluZSIgPSAiW3RydWV8ZmFsc2VdIiAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSB1bmRlcmxpbmVkCiJTeXN0ZW0uU3RyaWtlT3V0IiA9ICJbdHJ1ZXxmYWxzZV0iICMgV2hldGhlciB0aGUgc3lzdGVtIGZvbnQgc2hvdWxkIGJlIHN0cnVjayBvdXQKIk9FTUZpeGVkLnh4eCIgICAgICAgICAgICAgICAgICAjIFNhbWUgcGFyYW1ldGVycyBmb3IgdGhlIE9FTSBmaXhlZCB0eXBlZmFjZQoiQW5zaUZpeGVkLnh4eCIgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgQW5zaSBmaXhlZCB0eXBlZmFjZQoiQW5zaVZhci54eHgiICAgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgQW5zaSB2YXJpYWJsZSB0eXBlZmFjZQoiU3lzdGVtRml4ZWQueHh4IiAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgU3lzdGVtIGZpeGVkIHR5cGVmYWNlCgpbVHdlYWsuTGF5b3V0XQoiV2luZUxvb2siID0gIltXaW4zMXxXaW45NXxXaW45OF0iICAjIENoYW5nZXMgV2luZSdzIGxvb2sgYW5kIGZlZWwKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJrZXlib2FyZCI+CiAgICAgIDx0aXRsZT5LZXlib2FyZDwvdGl0bGU+CgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLW92ZS1rYWF2ZW47IDxlbWFpbD4mZW1haWwtb3ZlLWthYXZlbjs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2tleWJvYXJkPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdpbmUgbm93IG5lZWRzIHRvIGtub3cgYWJvdXQgeW91ciBrZXlib2FyZCBsYXlvdXQuIFRoaXMKICAgICAgICByZXF1aXJlbWVudCBjb21lcyBmcm9tIGEgbmVlZCBmcm9tIG1hbnkgYXBwcyB0byBoYXZlIHRoZQogICAgICAgIGNvcnJlY3Qgc2NhbmNvZGVzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZWFkIHRoZXNlIGRpcmVjdGx5LAogICAgICAgIGluc3RlYWQgb2YganVzdCB0YWtpbmcgdGhlIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIFgKICAgICAgICBzZXJ2ZXIuIFRoaXMgbWVhbnMgdGhhdCBXaW5lIG5vdyBuZWVkcyB0byBoYXZlIGEgbWFwcGluZyBmcm9tCiAgICAgICAgWCBrZXlzIHRvIHRoZSBzY2FuY29kZXMgdGhlc2UgYXBwbGljYXRpb25zIGV4cGVjdC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBPbiBzdGFydHVwLCBXaW5lIHdpbGwgdHJ5IHRvIHJlY29nbml6ZSB0aGUgYWN0aXZlIFggbGF5b3V0IGJ5CiAgICAgICAgc2VlaW5nIGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBkZWZpbmVkIHRhYmxlcy4gSWYgaXQgZG9lcywKICAgICAgICBldmVyeXRoaW5nIGlzIGFscmlnaHQuIElmIG5vdCwgeW91IG5lZWQgdG8gZGVmaW5lIGl0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFRvIGRvIHRoaXMsIG9wZW4gdGhlIGZpbGUKICAgICAgICA8ZmlsZW5hbWU+ZGxscy94MTFkcnYva2V5Ym9hcmQuYzwvZmlsZW5hbWU+IGFuZCB0YWtlIGEgbG9vawogICAgICAgIGF0IHRoZSBleGlzdGluZyB0YWJsZXMuIE1ha2UgYSBiYWNrdXAgY29weSBvZiBpdCwgZXNwZWNpYWxseQogICAgICAgIGlmIHlvdSBkb24ndCB1c2UgQ1ZTLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFdoYXQgeW91IHJlYWxseSB3b3VsZCBuZWVkIHRvIGRvLCBpcyBmaW5kIG91dCB3aGljaCBzY2FuY29kZQogICAgICAgIGVhY2gga2V5IG5lZWRzIHRvIGdlbmVyYXRlLiAgRmluZCBpdCBpbiB0aGUKICAgICAgICA8ZnVuY3Rpb24+bWFpbl9rZXlfc2NhbjwvZnVuY3Rpb24+IHRhYmxlLCB3aGljaCBsb29rcyBsaWtlCiAgICAgICAgdGhpczoKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CnN0YXRpYyBjb25zdCBpbnQgbWFpbl9rZXlfc2NhbltNQUlOX0xFTl0gPQp7Ci8qIHRoaXMgaXMgbXkgKDEwMi1rZXkpIGtleWJvYXJkIGxheW91dCwgc29ycnkgaWYgaXQgZG9lc24ndCBxdWl0ZSBtYXRjaCB5b3VycyAqLwogICAweDI5LDB4MDIsMHgwMywweDA0LDB4MDUsMHgwNiwweDA3LDB4MDgsMHgwOSwweDBBLDB4MEIsMHgwQywweDBELAogICAweDEwLDB4MTEsMHgxMiwweDEzLDB4MTQsMHgxNSwweDE2LDB4MTcsMHgxOCwweDE5LDB4MUEsMHgxQiwKICAgMHgxRSwweDFGLDB4MjAsMHgyMSwweDIyLDB4MjMsMHgyNCwweDI1LDB4MjYsMHgyNywweDI4LDB4MkIsCiAgIDB4MkMsMHgyRCwweDJFLDB4MkYsMHgzMCwweDMxLDB4MzIsMHgzMywweDM0LDB4MzUsCiAgIDB4NTYgLyogdGhlIDEwMm5kIGtleSAoYWN0dWFsbHkgdG8gdGhlIHJpZ2h0IG9mIGwtc2hpZnQpICovCn07CiAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgIDxwYXJhPgogICAgICAgIE5leHQsIGFzc2lnbiBlYWNoIHNjYW5jb2RlIHRoZSBjaGFyYWN0ZXJzIGltcHJpbnRlZCBvbiB0aGUKICAgICAgICBrZXljYXBzLiBUaGlzIHdhcyBkb25lIChzb3J0IG9mKSBmb3IgdGhlIFVTIDEwMS1rZXkga2V5Ym9hcmQsCiAgICAgICAgd2hpY2ggeW91IGNhbiBmaW5kIG5lYXIgdGhlIHRvcCBpbgogICAgICAgIDxmaWxlbmFtZT5rZXlib2FyZC5jPC9maWxlbmFtZT4uIEl0IGFsc28gc2hvd3MgdGhhdCBpZiB0aGVyZQogICAgICAgIGlzIG5vIDEwMm5kIGtleSwgeW91IGNhbiBza2lwIHRoYXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSG93ZXZlciwgZm9yIG1vc3QgaW50ZXJuYXRpb25hbCAxMDIta2V5IGtleWJvYXJkcywgd2UgaGF2ZQogICAgICAgIGRvbmUgaXQgZWFzeSBmb3IgeW91LiBUaGUgc2NhbmNvZGUgbGF5b3V0IGZvciB0aGVzZSBhbHJlYWR5CiAgICAgICAgcHJldHR5IG11Y2ggbWF0Y2hlcyB0aGUgcGh5c2ljYWwgbGF5b3V0IGluIHRoZQogICAgICAgIDxmdW5jdGlvbj5tYWluX2tleV9zY2FuPC9mdW5jdGlvbj4sIHNvIGFsbCB5b3UgbmVlZCB0byBkbyBpcwogICAgICAgIHRvIGdvIHRocm91Z2ggYWxsIHRoZSBrZXlzIHRoYXQgZ2VuZXJhdGUgY2hhcmFjdGVycyBvbiB5b3VyCiAgICAgICAgbWFpbiBrZXlib2FyZCAoZXhjZXB0IHNwYWNlYmFyKSwgYW5kIHN0dWZmIHRob3NlIGludG8gYW4KICAgICAgICBhcHByb3ByaWF0ZSB0YWJsZS4gVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoYXQgdGhlIDEwMm5kIGtleSwKICAgICAgICB3aGljaCBpcyB1c3VhbGx5IHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBrZXkgb2YgdGhlIGxhc3QgbGluZQogICAgICAgICh1c3VhbGx5IDxrZXljYXA+Wjwva2V5Y2FwPiksIG11c3QgYmUgcGxhY2VkIG9uIGEgc2VwYXJhdGUKICAgICAgICBsaW5lIGFmdGVyIHRoZSBsYXN0IGxpbmUuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgRm9yIGV4YW1wbGUsIG15IE5vcndlZ2lhbiBrZXlib2FyZCBsb29rcyBsaWtlIHRoaXMKICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgqnICAhICAiICAjICCkICAlICAmICAvICAoICApICA9ICA/ICBgICBCYWNrLQp8ICAxICAyQCAzoyA0JCA1ICA2ICA3eyA4WyA5XSAwfSArICBctCBzcGFjZQoKVGFiIFEgIFcgIEUgIFIgIFQgIFkgIFUgIEkgIE8gIFAgIMUgIF4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIKh+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcgpDYXBzIEEgIFMgIEQgIEYgIEcgIEggIEogIEsgIEwgINggIMYgICoKTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCgpTaC0gPiBaICBYICBDICBWICBCICBOICBNICA7ICA6ICBfICBTaGlmdAppZnQgJmx0OyAgICAgICAgICAgICAgICAgICAgICAsICAuICAtCgpDdHJsICBBbHQgICAgICAgU3BhY2ViYXIgICAgICAgQWx0R3IgIEN0cmwKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIE5vdGUgdGhlIDEwMm5kIGtleSwgd2hpY2ggaXMgdGhlIDxrZXljYXA+Jmx0Oz48L2tleWNhcD4ga2V5LCB0bwogICAgICAgIHRoZSBsZWZ0IG9mIDxrZXljYXA+Wjwva2V5Y2FwPi4gVGhlIGNoYXJhY3RlciB0byB0aGUgcmlnaHQgb2YKICAgICAgICB0aGUgbWFpbiBjaGFyYWN0ZXIgaXMgdGhlIGNoYXJhY3RlciBnZW5lcmF0ZWQgYnkKICAgICAgICA8a2V5Y2FwPkFsdEdyPC9rZXljYXA+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFRoaXMga2V5Ym9hcmQgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4Kc3RhdGljIGNvbnN0IGNoYXIgbWFpbl9rZXlfTk9bTUFJTl9MRU5dWzRdID0KewogInynIiwiMSEiLCIyXCJAIiwiMyOjIiwiNKQkIiwiNSUiLCI2JiIsIjcveyIsIjgoWyIsIjkpXSIsIjA9fSIsIis/IiwiXFy0IiwKICJxUSIsIndXIiwiZUUiLCJyUiIsInRUIiwieVkiLCJ1VSIsImlJIiwib08iLCJwUCIsIuXFIiwiqF5+IiwKICJhQSIsInNTIiwiZEQiLCJmRiIsImdHIiwiaEgiLCJqSiIsImtLIiwibEwiLCL42CIsIubGIiwiJyoiLAogInpaIiwieFgiLCJjQyIsInZWIiwiYkIiLCJuTiIsIm1NIiwiLDsiLCIuOiIsIi1fIiwKICImbHQ7PiIKfTsKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgRXhjZXB0IHRoYXQgIiBhbmQgXCBuZWVkcyB0byBiZSBxdW90ZWQgd2l0aCBhIGJhY2tzbGFzaCwgYW5kCiAgICAgICAgdGhhdCB0aGUgMTAybmQga2V5IGlzIG9uIGEgc2VwYXJhdGUgbGluZSwgaXQncyBwcmV0dHkKICAgICAgICBzdHJhaWdodGZvcndhcmQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgQWZ0ZXIgeW91IGhhdmUgd3JpdHRlbiBzdWNoIGEgdGFibGUsIHlvdSBuZWVkIHRvIGFkZCBpdCB0byB0aGUKICAgICAgICA8ZnVuY3Rpb24+bWFpbl9rZXlfdGFiW108L2Z1bmN0aW9uPiBsYXlvdXQgaW5kZXggdGFibGUuIFRoaXMKICAgICAgICB3aWxsIGxvb2sgbGlrZSB0aGlzOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4Kc3RhdGljIHN0cnVjdCB7CiBXT1JEIGxhbmcsIGFuc2lfY29kZXBhZ2UsIG9lbV9jb2RlcGFnZTsKIGNvbnN0IGNoYXIgKCprZXkpW01BSU5fTEVOXVs0XTsKfSBtYWluX2tleV90YWJbXT17Ci4uLgouLi4KIHtNQUtFTEFOR0lEKExBTkdfTk9SV0VHSUFOLFNVQkxBTkdfREVGQVVMVCksICAxMjUyLCA4NjUsICZhbXA7bWFpbl9rZXlfTk99LAouLi4KICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgQWZ0ZXIgeW91IGhhdmUgYWRkZWQgeW91ciB0YWJsZSwgcmVjb21waWxlIFdpbmUgYW5kIHRlc3QgdGhhdAogICAgICAgIGl0IHdvcmtzLiBJZiBpdCBmYWlscyB0byBkZXRlY3QgeW91ciB0YWJsZSwgdHJ5IHJ1bm5pbmcKICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgp3aW5lIC0tZGVidWdtc2cgK2tleSwra2V5Ym9hcmQgPiYga2V5LmxvZwogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgYW5kIGxvb2sgaW4gdGhlIHJlc3VsdGluZyA8ZmlsZW5hbWU+a2V5LmxvZzwvZmlsZW5hbWU+IGZpbGUgdG8KICAgICAgICBmaW5kIHRoZSBlcnJvciBtZXNzYWdlcyBpdCBnaXZlcyBmb3IgeW91ciBsYXlvdXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgTm90ZSB0aGF0IHRoZSA8Y29uc3RhbnQ+TEFOR18qPC9jb25zdGFudD4gYW5kCiAgICAgICAgPGNvbnN0YW50PlNVQkxBTkdfKjwvY29uc3RhbnQ+IGRlZmluaXRpb25zIGFyZSBpbgogICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlL3dpbm5scy5oPC9maWxlbmFtZT4sIHdoaWNoIHlvdSBtaWdodCBuZWVkIHRvCiAgICAgICAga25vdyB0byBmaW5kIG91dCB3aGljaCBudW1iZXJzIHlvdXIgbGFuZ3VhZ2UgaXMgYXNzaWduZWQsIGFuZAogICAgICAgIGZpbmQgaXQgaW4gdGhlIGRlYnVnbXNnIG91dHB1dC4gVGhlIG51bWJlcnMgd2lsbCBiZQogICAgICAgIDxsaXRlcmFsPihTVUJMQU5HICogMHg0MDAgKyBMQU5HKTwvbGl0ZXJhbD4sIHNvLCBmb3IgZXhhbXBsZQogICAgICAgIHRoZSBjb21iaW5hdGlvbiA8bGl0ZXJhbD5MQU5HX05PUldFR0lBTiAoMHgxNCk8L2xpdGVyYWw+IGFuZAogICAgICAgIDxsaXRlcmFsPlNVQkxBTkdfREVGQVVMVCAoMHgxKTwvbGl0ZXJhbD4gd2lsbCBiZSAoaW4gaGV4KQogICAgICAgIDxsaXRlcmFsPjE0ICsgMSo0MDAgPSA0MTQ8L2xpdGVyYWw+LCBzbyBzaW5jZSBJJ20gTm9yd2VnaWFuLCBJCiAgICAgICAgY291bGQgbG9vayBmb3IgPGxpdGVyYWw+MDQxNDwvbGl0ZXJhbD4gaW4gdGhlIGRlYnVnbXNnIG91dHB1dAogICAgICAgIHRvIGZpbmQgb3V0IHdoeSBteSBrZXlib2FyZCB3b24ndCBkZXRlY3QuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgT25jZSBpdCB3b3Jrcywgc3VibWl0IGl0IHRvIHRoZSBXaW5lIHByb2plY3QuIElmIHlvdSB1c2UgQ1ZTLAogICAgICAgIHlvdSB3aWxsIGp1c3QgaGF2ZSB0byBkbwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CmN2cyAtejMgZGlmZiAtdSBkbGxzL3gxMWRydi9rZXlib2FyZC5jID4gbGF5b3V0LmRpZmYKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIGZyb20geW91ciBtYWluIFdpbmUgZGlyZWN0b3J5LCB0aGVuIHN1Ym1pdAogICAgICAgIDxmaWxlbmFtZT5sYXlvdXQuZGlmZjwvZmlsZW5hbWU+IHRvCiAgICAgICAgPGVtYWlsPndpbmUtcGF0Y2hlc0B3aW5laHEuY29tPC9lbWFpbD4gYWxvbmcgd2l0aCBhIGJyaWVmIG5vdGUKICAgICAgICBvZiB3aGF0IGl0IGlzLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIElmIHlvdSBkb24ndCB1c2UgQ1ZTLCB5b3UgbmVlZCB0byBkbwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CmRpZmYgLXUgdGhlX2JhY2t1cF9maWxlX3lvdV9tYWRlIGRsbHMveDExZHJ2L2tleWJvYXJkLmMgPiBsYXlvdXQuZGlmZgogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgYW5kIHN1Ym1pdCBpdCBhcyBleHBsYWluZWQgYWJvdmUuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSWYgeW91IGRpZCBpdCByaWdodCwgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCBXaW5lCiAgICAgICAgcmVsZWFzZSwgYW5kIGFsbCB0aGUgdHJvdWJsZXNvbWUgYXBwbGljYXRpb25zIChlc3BlY2lhbGx5CiAgICAgICAgcmVtb3RlLWNvbnRyb2wgYXBwbGljYXRpb25zKSBhbmQgZ2FtZXMgdGhhdCB1c2Ugc2NhbmNvZGVzIHdpbGwKICAgICAgICBiZSBoYXBwaWx5IHVzaW5nIHlvdXIga2V5Ym9hcmQgbGF5b3V0LCBhbmQgeW91IHdvbid0IGdldCB0aG9zZQogICAgICAgIGFubm95aW5nIGZpeG1lIG1lc3NhZ2VzIGVpdGhlci4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBHb29kIGx1Y2suCiAgICAgIDwvcGFyYT4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJvZGJjIj4KICAgICAgPHRpdGxlPlVzaW5nIE9EQkM8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyBPREJDIHdvcmtzIHdpdGhpbiBXaW5lIGFuZCBob3cgdG8gY29uZmlndXJlCiAgICAgICAgaXQgdG8gZG8gd2hhdCB5b3Ugd2FudCAoaWYgaXQgY2FuIGRvIHdoYXQgeW91IHdhbnQpLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFRoZSBPREJDIHN5c3RlbSB3aXRoaW4gd2luZSwgYXMgd2l0aCB0aGUgcHJpbnRpbmcgc3lzdGVtLCBpcyBkZXNpZ25lZAogICAgICAgIHRvIGhvb2sgYWNyb3NzIHRvIHRoZSBVbml4IHN5c3RlbSBhdCBhIGhpZ2ggbGV2ZWwuICBSYXRoZXIgdGhhbiAKICAgICAgICBlbnN1cmluZyB0aGF0IGFsbCB0aGUgd2luZG93cyBjb2RlIHdvcmtzIHVuZGVyIHdpbmUgaXQgdXNlcyBhIHN1aXRhYmxlCiAgICAgICAgVW5peCBPREJDIHByb3ZpZGVyLCBzdWNoIGFzIFVuaXhPREJDLiAgVGh1cyBpZiB5b3UgY29uZmlndXJlIFdpbmUgdG8gCiAgICAgICAgdXNlIHRoZSBidWlsdGluIG9kYmMzMi5kbGwgdGhhdCB3aW5lIGRsbCB3aWxsIGludGVyZmFjZSB0byB5b3VyIAogICAgICAgIFVuaXggT0RCQyBwYWNrYWdlIGFuZCBsZXQgdGhhdCBkbyB0aGUgd29yaywgd2hlcmVhcyBpZiB5b3UgY29uZmlndXJlIAogICAgICAgIFdpbmUgdG8gdXNlIHRoZSBuYXRpdmUgb2RiYzMyLmRsbCBpdCB3aWxsIHRyeSB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgIE9EQkMzMiBkcml2ZXJzIGV0Yy4KICAgICAgPC9wYXJhPgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlVzaW5nIGEgVW5peCBPREJDIHN5c3RlbSB3aXRoIFdpbmU8L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGZpcnN0IHN0ZXAgaW4gdXNpbmcgYSBVbml4IE9EQkMgc3lzdGVtIHdpdGggV2luZSBpcywgb2YgY291cnNlLAogICAgICAgICAgdG8gZ2V0IHRoZSBVbml4IE9EQkMgc3lzdGVtIHdvcmtpbmcgaXRzZWxmLiAgVGhpcyBtYXkgaW52b2x2ZSAKICAgICAgICAgIGRvd25sb2FkaW5nIGNvZGUgb3IgcnBtcyBldGMuICBUaGVyZSBhcmUgc2V2ZXJhbCBVbml4IE9EQkMgc3lzdGVtcwogICAgICAgICAgYXZhaWxhYmxlOyB0aGUgb25lIHRoZSBhdXRob3IgaXMgdXNlZCB0byBpcyB1bml4T0RCQyAod2l0aCB0aGUKICAgICAgICAgIElCTSBEQjIgZHJpdmVyKS4gVHlwaWNhbGx5IHN1Y2ggc3lzdGVtcyB3aWxsIGluY2x1ZGUgYSB0b29sLCBzdWNoIAogICAgICAgICAgYXMgaXNxbCwgd2hpY2ggd2lsbCBhbGxvdyB5b3UgdG8gYWNjZXNzIHRoZSBkYXRhIGZyb20gdGhlIGNvbW1hbmQKICAgICAgICAgIGxpbmUgc28gdGhhdCB5b3UgY2FuIGNoZWNrIHRoYXQgdGhlIHN5c3RlbSBpcyB3b3JraW5nLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgaXMgdG8gaG9vayB0aGUgVW5peCBPREJDIGxpYnJhcnkgdG8gdGhlIHdpbmUgYnVpbHRpbiAKICAgICAgICAgIG9kYmMzMiBkbGwuICBUaGUgYnVpbHRpbiBvZGJjMzIgKGN1cnJlbnRseSkgbG9va3MgdG8gdGhlCiAgICAgICAgICBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIDxlbXBoYXNpcz5MSUJfT0RCQ19EUklWRVJfTUFOQUdFUjwvZW1waGFzaXM+CiAgICAgICAgICBmb3IgdGhlIG5hbWUgb2YgdGhlIG9kYmMgbGlicmFyeS4gIEZvciBleGFtcGxlIGluIHRoZSBhdXRob3IncwogICAgICAgICAgLmJhc2hyYyBmaWxlIGlzIHRoZSBsaW5lOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CmV4cG9ydCBMSUJfT0RCQ19EUklWRVJfTUFOQUdFUj0vdXNyL2xpYi9saWJvZGJjLnNvLjEuMC4wCiAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBpcyBub3Qgc2V0IHRoZW4gaXQgbG9va3MgZm9yIGEgCiAgICAgICAgICBsaWJyYXJ5IGNhbGxlZCBsaWJvZGJjLnNvIGFuZCBzbyB5b3UgY2FuIGFkZCBhIHN5bWJvbGljIGxpbmsgdG8KICAgICAgICAgIGVxdWF0ZSB0aGF0IHRvIHlvdXIgb3duIGxpYnJhcnkuICBGb3IgZXhhbXBsZSBhcyByb290IHlvdSBjb3VsZAogICAgICAgICAgcnVuIHRoZSBjb21tYW5kczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHByb2dyYW1saXN0aW5nPgpsbiAtcyBsaWJvZGJjLnNvLjEuMC4wIC91c3IvbGliL2xpYm9kYmMuc28KL3NiaW4vbGRjb25maWcKICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGxhc3Qgc3RlcCBpbiBjb25maWd1cmluZyB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IFdpbmUgaXMgc2V0IHVwCiAgICAgICAgICB0byBydW4gdGhlIGJ1aWx0aW4gdmVyc2lvbiBvZiBvZGJjMzIuZGxsLCBieSBtb2RpZnlpbmcgdGhlIERMTAogICAgICAgICAgY29uZmlndXJhdGlvbi4gIFRoaXMgYnVpbHRpbiBkbGwgbWVyZWx5IGFjdHMgYXMgYSBzdHViIGJldHdlZW4gdGhlCiAgICAgICAgICBjYWxsaW5nIGNvZGUgYW5kIHRoZSBVbml4IE9EQkMgbGlicmFyeS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhbnkgcHJvYmxlbXMgdGhlbiB5b3UgY2FuIHVzZSB0aGUgZGVidWdtc2cgY2hhbm5lbAogICAgICAgICAgb2RiYzMyIHRvIHRyYWNlIHdoYXQgaXMgaGFwcGVuaW5nLiAgT25lIHdvcmQgb2Ygd2FybmluZy4gIFNvbWUKICAgICAgICAgIHByb2dyYW1zIGFjdHVhbGx5IGNoZWF0IGEgbGl0dGxlIGFuZCBieXBhc3MgdGhlIG9kYmMgbGlicmFyeS4gIEZvcgogICAgICAgICAgZXhhbXBsZSB0aGUgQ3J5c3RhbCBSZXBvcnRzIGVuZ2luZSBnb2VzIHRvIHRoZSByZWdpc3RyeSB0byBjaGVjayBvbgogICAgICAgICAgdGhlIERTTi4gIFRoZSBmaXggZm9yIHRoaXMgaXMgZG9jdW1lbnRlZCBhdCB1bml4T0RCQydzIHNpdGUgd2hlcmUgCiAgICAgICAgICB0aGVyZSBpcyBhIHNlY3Rpb24gb24gdXNpbmcgdW5peE9EQkMgd2l0aCBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Vc2luZyBXaW5kb3dzIE9EQkMgZHJpdmVyczwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEb2VzIGFueW9uZSBhY3R1YWxseSBoYXZlIGFueSBleHBlcmllbmNlIG9mIHRoaXMgYW5kIGFueXRoaW5nIHRvIAogICAgICAgICAgYWRkPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogIDwvY2hhcHRlcj4KCjwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQpMb2NhbCB2YXJpYWJsZXM6Cm1vZGU6IHNnbWwKc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgImNoYXB0ZXIiICIiKQpFbmQ6Ci0tPgo=