Senior Software Engineer
Hackajob
Software Engineering
England, UK
Posted on Mar 10, 2026
hackajob is collaborating with Virgin Media to connect them with exceptional professionals for this role.
PHAgZGlyPSJsdHIiPjxzdHJvbmc+Sm9iIHRpdGxlOjwvc3Ryb25nPiBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXI8L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPkxvY2F0aW9uOiA8L3N0cm9uZz5VeGJyaWRnZSBidXQgbW9zdGx5IHJlbW90ZSAobW9udGhseSBvciBxdWFydGVybHkgdmlzaXRzKTwvcD4KPHA+PHN0cm9uZz4mbmJzcDs8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPkEgYml0IGFib3V0IGdpZmZnYWZmOjwvc3Ryb25nPjwvcD4KPHAgZGlyPSJsdHIiPkRvIHlvdSB3YW50IHRvIGpvaW4gYSB0ZWxlY29tcyBjb21wYW55IHRoYXQmcnNxdW87cyB1cCB0byBnb29kPyBBdCBnaWZmZ2FmZiB3ZSBkbyBtb2JpbGUgZGlmZmVyZW50bHkuIFdlIGNhbGwgb3V0IHRoZSBiYWQgYW5kIGZpbmQgYSBiZXR0ZXIgd2F5LiBXZSZyc3F1bztyZSBsYXNlci1mb2N1c2VkIG9uIGZsZXhpYmlsaXR5LCB2YWx1ZSBhbmQgbXV0dWFsIGdvb2QuPGJyPjxicj5BbmQgd2UmcnNxdW87cmUgc28gcHJvdWQgdG8gYmUgYSBjZXJ0aWZpZWQgQiBDb3JwLiBUaGlzIG1lYW5zIHdlJ3ZlIGpvaW5lZCBhIG5ldHdvcmsgb2YgbW9yZSB0aGFuIDEsMDAwIFVLIGNvbXBhbmllcywgd2hvIHdhbnQgdG8gbWFrZSBhIHBvc2l0aXZlIGltcGFjdCBvbiBwZW9wbGUgYW5kIHRoZSBwbGFuZXQuIFdvcmtpbmcgYXQgZ2lmZmdhZmYgaXMgc29tZXRoaW5nIHlvdSBjb3VsZCBiZSBwcm91ZCBvZiB0b28uPC9wPgo8cCBkaXI9Imx0ciI+WW91JnJzcXVvO2xsIGdldCB0aGUgYmVzdCBvZiBib3RoIHdvcmxkcywgdGhlIGVuZXJneSBhbmQgZmFzdCBwYWNlIG9mIGdpZmZnYWZmLCBwbHVzIGFsbCB0aGUgYmVuZWZpdHMgdGhhdCBjb21lIHdpdGggYmVpbmcgcGFydCBvZiBvdXIgcGFyZW50IGNvbXBhbnksIFZpcmdpbiBNZWRpYSBPMi48L3A+CjxwIGRpcj0ibHRyIj5PdXIgYnVzaW5lc3MgbW9kZWwgaXMgdW5pcXVlLiBXZSB3b3JrIHdpdGggb3VyIG1lbWJlcnMgKG91ciBjdXN0b21lcnMpIHRvIHVuZGVyc3RhbmQgdGhlaXIgbmVlZHMgaW4gYWxsIGFyZWFzIG9mIHRoZSBidXNpbmVzcy4gV2UgbG92ZSB0aGlzIGhpZ2hseSBjb2xsYWJvcmF0aXZlIGFwcHJvYWNoLiBPdmVyIHRoZSBwYXN0IGZldyB5ZWFycyBvdXIgbWVtYmVyIGJhc2UgaGFzIGdyb3duIHN0ZWFkaWx5LCBhbmQgd2UmcnNxdW87cmUgc3RpbGwgZ29pbmcuIFdlJnJzcXVvO3JlIGFsd2F5cyBsb29raW5nIHRvIGFjcXVpcmUgbmV3IG1lbWJlcnMsIGFuZCB0byBkbyB0aGF0IHdlIG5lZWQgdGhlIGJlc3QgcGVvcGxlIGluIG91ciB0ZWFtLjxicj48YnI+T3VyIGJyaWdodCBhbmQgbW9kZXJuIGdhZmYgaXMgaW4gVXhicmlkZ2UsIGluIGxlYWZ5IFdlc3QgTG9uZG9uLiBCdXQgaWYgY29tbXV0aW5nIGlzbiZyc3F1bzt0IHlvdXIgZmF2b3VyaXRlLCBtb3N0IG9mIG91ciByb2xlcyBjYW4gYmUgaHlicmlkIG9yIHdvcmsgZnJvbSBob21lLCBvciBhbnl3aGVyZSBpbiBiZXR3ZWVuLiBJZiB5b3UgbGlrZSBjb21pbmcgaW4sIHlvdSZyc3F1bztsbCBhbHdheXMgZmluZCBzb21lIG9mZmljZSBidWRkaWVzLiBBbmQgaWYgeW91IGxpa2UgYmlnIG9jY2FzaW9ucywgd2UgcmVhbGx5IGJyaW5nIHRoZSBvZmZpY2UgdG8gbGlmZSBtb250aGx5IGZvciBvdXIgdGhlbWVkIGN1bHR1cmUgZGF5cy4gUGx1cyBhbGwgb3VyIGdpZmZnYWZmZXJzIGNvbWUgdG9nZXRoZXIgYXQgb3VyIGxlZ2VuZGFyeSBnaWZmZ2FmZiBzdW1tZXIsIGJpcnRoZGF5IGFuZCBDaHJpc3RtYXMgY2VsZWJyYXRpb25zLjxzdHJvbmc+PGJyPjxicj48L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPlRoZSByb2xlIGFuZCB0aGUgdGVhbTo8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj5Tb2Z0d2FyZSBlbmdpbmVlcmluZyBpcyBhdCB0aGUgaGVhcnQgb2Ygd2hhdCB3ZSBkbyBoZXJlIGF0IGdpZmZnYWZmIC0gb3VyIGFnaWxlIGVuZ2luZWVyaW5nIHRlYW1zIGJ1aWxkIGFuZCBzdXBwb3J0IGEgc2V0IG9mIGFwcGxpY2F0aW9ucyBhbmQgc2VydmljZXMgdGhhdCBjb21iaW5lZCBjcmVhdGUgb3VyIHVuaXF1ZSB1c2VyIGV4cGVyaWVuY2Ugb24gdGhlIGdpZmZnYWZmIHdlYnNpdGUsIGVuYWJsZSBvdXIgaW50ZXJuYWwgdGVhbXMgdG8gd29yayBpbiB0aGUgbW9zdCBwcm9kdWN0aXZlIGFuZCBlZmZpY2llbnQgd2F5cyBhbmQgZW5hYmxlIGEgd2hvbGUgcmFuZ2Ugb2YgYXdlc29tZSBmZWF0dXJlcyB2aWEgbW9kZXJuIEFQSXMuJm5ic3A7Jm5ic3A7PC9wPgo8cCBkaXI9Imx0ciI+VGhlIHF1YWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSBvZiBvdXIgc29mdHdhcmUgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIHVzLCB3ZSBhcmUgbG9va2luZyBmb3IgZW5naW5lZXJzIHdpdGggcmVhbCB3b3JsZCBleHBlcmllbmNlLCBlc3BlY2lhbGx5IGluIHRlcm1zIG9mIHRoZSB3aG9sZSBkZXZlbG9wbWVudCBsaWZlY3ljbGUuPC9wPgo8cCBkaXI9Imx0ciI+WW91IHdpbGwgaGVscCB1cyBkZXNpZ24gYW5kIGltcGxlbWVudCB0aWdodGx5IGZvY3Vzc2VkIEFQSXMsIHNlcnZpY2VzIGFuZCB1c2VyIGludGVyZmFjZXMgYW5kLCB0b2dldGhlciB3aXRoIHlvdXIgdGVhbSwgeW91IHdpbGwgc3VwcG9ydCB0aGVtIGluIHByb2R1Y3Rpb24uIFdlIHdhbnQgeW91IHRvIHNoYXJlIHlvdXIgb3BpbmlvbnMgb24gaG93IHdlIGFyZSBkb2luZyB0aGluZ3MgLSBhbmQgaGVscCB1cyBnZXQgYmV0dGVyITwvcD4KPHA+PHN0cm9uZz4mbmJzcDs8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPktleSByZXNwb25zaWJpbGl0aWVzOiZuYnNwOzwvc3Ryb25nPjwvcD4KPHVsPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj5Xb3JrIHdpdGggYSBmdWxsLXN0YWNrIGF0dGl0dWRlIHdpdGhpbiBhIHNlbGYtb3JnYW5pc2luZywgY3Jvc3MgZnVuY3Rpb25hbCBwcm9kdWN0IGVuZ2luZWVyaW5nIHRlYW0gdXNpbmcgZXh0cmVtZSBwcm9ncmFtbWluZyBwcmFjdGljZXMgLSBub3RhYmx5IHBhaXIgcHJvZ3JhbW1pbmcgYW5kIHRlc3QtZHJpdmVuIGRldmVsb3BtZW50PC9wPgo8L2xpPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj5CdWlsZCwgc3VwcG9ydCBhbmQgbWFpbnRhaW4gYXV0b21hdGVkLCBmYXVsdC10b2xlcmFudCwgc2NhbGFibGUgcHJvZHVjdHMgYW5kIHNvbHV0aW9ucyB0aGF0IGFyZSBjb250aW51b3VzbHkgZGVsaXZlcmVkIGludG8gb3VyIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQ8L3A+CjwvbGk+CjxsaSBkaXI9Imx0ciIgYXJpYS1sZXZlbD0iMSI+CjxwIGRpcj0ibHRyIiByb2xlPSJwcmVzZW50YXRpb24iPkJlIHRlY2huaWNhbGx5IGN1cmlvdXMsIHRhY2tsaW5nIHByb2JsZW1zIHdpdGhvdXQgZ2l2aW5nIHVwLCBhbmQgcHJvZHVjaW5nIHNvbHV0aW9ucyB0aGF0IGxlc3MtZXhwZXJpZW5jZWQgZW5naW5lZXJzIGNhbiB1c2UsIG1haW50YWluLCBhbmQgbGVhcm4gZnJvbTwvcD4KPC9saT4KPC91bD4KPHAgZGlyPSJsdHIiPiZuYnNwOzwvcD4KPHAgZGlyPSJsdHIiPjxzdHJvbmc+QWNjb3VudGFibGUgZm9yOjwvc3Ryb25nPjwvcD4KPHAgZGlyPSJsdHIiPllvdSZyc3F1bztsbCBoYXZlIHRvIG1ha2UgdG91Z2ggZGVjaXNpb25zLCBpbXBsZW1lbnQgYmVzdCBwcmFjdGljZSBhbmQgcHJvdmlkZSBjb21wcm9taXNlcyB3aGVuIHNpdHVhdGlvbnMgYXJlIG5vdCBpZGVhbC4mbmJzcDsgT2ggYW5kIHlvdSZyc3F1bztsbCBuZWVkIHRvIGV4cGxhaW4gdGhhdCB0byBwZW9wbGUuIE5vdCBqdXN0IHRoZSB0ZWNobmljYWwgb25lcy4gQmVjYXVzZSB3ZSB3b3JrIGluIHByb2R1Y3QgdGVhbXMgd2hlcmUgbm90IGV2ZXJ5b25lIGlzIGEgdGVjaGllLiBJdCZyc3F1bztzIGZ1biwgeW91IGdldCBjbG9zZXIgdG8gdGhlIGJ1c2luZXNzIGFuZCBrbm93IG1vcmUgYWJvdXQgd2h5IHdlIGRvIHdoYXQgd2UgZG8sIG5vdCBqdXN0IGhvdy48L3A+CjxwIGRpcj0ibHRyIj5PdXIgY29yZSB0ZWNobm9sb2dpZXMgYXJlIDxzdHJvbmc+SmF2YSwgUEhQICZhbXA7IFB5dGhvbiAmYW1wOyBSZWFjdDwvc3Ryb25nPiwgYW5kIHdlIGxpa2Ugb3VyIGVuZ2luZWVycyB0byBiZSBYUCBkZXZlbG9wZXJzIHdpdGggYSBmdWxsLXN0YWNrIGF0dGl0dWRlLiBXZSZyc3F1bztyZSBsb29raW5nIGZvciBwYXNzaW9uYXRlIHByb2dyYW1tZXJzIHdobyBhcmUgY29tZm9ydGFibGUgd2l0aCB1c2luZyBhIHZhcmlldHkgb2YgZnJhbWV3b3JrcywgbGFuZ3VhZ2VzICZhbXA7IHRvb2xzIGFuZCBhcmUgaGFwcHkgdG8gcGljayB1cCBuZXcgc2tpbGxzIHdoZW4gdGhlIG5lZWQgYXJpc2VzLiZuYnNwOzwvcD4KPHA+PHN0cm9uZz4mbmJzcDs8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPlNraWxscywgZXhwZXJpZW5jZSBhbmQgYXR0aXR1ZGVzOjwvc3Ryb25nPjwvcD4KPHVsPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj48c3Ryb25nPkVzc2VudGlhbCBTa2lsbHM6IDwvc3Ryb25nPlJlYWRpbmcgJmFtcDsgV3JpdGluZyBDb2RlLCBEZWJ1Z2dpbmcgJmFtcDsgVHJvdWJsZXNob290aW5nLCBJREUgJmFtcDsgT1MgQmFzaWNzLCBUZXN0IERyaXZlbiBEZXZlbG9wbWVudCwgUGFpciBQcm9ncmFtbWluZywgQ2xlYW4gQ29kZSAmYW1wOyBSZWZhY3RvcmluZywgVmVyc2lvbiBDb250cm9sPC9wPgo8L2xpPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj48c3Ryb25nPkRlc2lyYWJsZSBTa2lsbHM6IDwvc3Ryb25nPkNJIC8gQ0QsIEFsZ29yaXRobXMgJmFtcDsgRGF0YSBTdHJ1Y3R1cmVzLERJIC8gSW9DLCBNb2NrcyAmYW1wOyBTdHVicywgQWxlcnRpbmcgJmFtcDsgTW9uaXRvcmluZywgRnVuY3Rpb25hbCAmYW1wOyBOb24tRnVuY3Rpb25hbCBUZXN0aW5nLCBTT0xJRCBQcmluY2lwbGVzLCBDb250YWluZXJpc2F0aW9uICZhbXA7IE5ldHdvcmtpbmcgQmFzaWNzLCBUd2VsdmUgRmFjdG9yIEFwcCBEZXNpZ24sIFNvbHV0aW9uIEFyY2hpdGVjdHVyZTwvcD4KPC9saT4KPC91bD4KPHAgZGlyPSJsdHIiPjxicj48c3Ryb25nPlBsdXMgY29tcGV0ZW5jeSBpbiAzIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZzo8L3N0cm9uZz48L3A+Cjx1bD4KPGxpIGRpcj0ibHRyIiBhcmlhLWxldmVsPSIxIj4KPHAgZGlyPSJsdHIiIHJvbGU9InByZXNlbnRhdGlvbiI+Q2xpZW50LVNpZGUgRW5naW5lZXJpbmc6IENTUzMsIEN5cHJlc3MsIEVDTUFTY3JpcHQgKEVTNispLCBIVE1MNSwgSmVzdCwgUmVhY3QgJmFtcDsgUmVhY3QgTmF0aXZlLCBTQVNTLCBUeXBlU2NyaXB0PC9wPgo8L2xpPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj5TZXJ2ZXItU2lkZSBFbmdpbmVlcmluZzogSmF2YSA4IHdpdGggTWF2ZW4gJmFtcDsgU3ByaW5nLCBKVW5pdCwgTm9kZUpTLCBQSFAgd2l0aCBMYXJhdmVsIG9yIFplbmQsIFB5dGhvbjwvcD4KPC9saT4KPGxpIGRpcj0ibHRyIiBhcmlhLWxldmVsPSIxIj4KPHAgZGlyPSJsdHIiIHJvbGU9InByZXNlbnRhdGlvbiI+QWRkaXRpb25hbCBUZWNobm9sb2d5OiBBcGFjaGUgJmFtcDsgTkdJTlgsIEFXUywgSmVua2lucywgRHluYW1vREIsIFBvc3RncmVTUUwsIFJlZGlzICZhbXA7IE9yYWNsZSwgRG9ja2VyICZhbXA7IEt1YmVybmV0ZXMsIEVsYXN0aWNTZWFyY2ggJmFtcDsgS2liYW5hLCBHcmFmYW5hICZhbXA7IFByb21ldGhldXMsIEtpbmVzaXM8L3A+CjwvbGk+CjwvdWw+CjxwIGRpcj0ibHRyIj4mbmJzcDs8L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPk91ciBjb21taXRtZW50IHRvIGVxdWl0eSwgZGl2ZXJzaXR5IGFuZCBpbmNsdXNpb248L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj5BdCBnaWZmZ2FmZiB3ZSB3YW50IHRvIGNoYWxsZW5nZSB0aGUgb2xkIHdheSBvZiBkb2luZyB0aGluZ3MuIFBlb3BsZSwgYW5kIHRoZSB3YXkgdGhleSB3b3JrLCBkZWZpbmUgb3VyIGN1bHR1cmUgYW5kIHdlIGVuY291cmFnZSBldmVyeW9uZSB0byBicmluZyB0aGVpciB3aG9sZSBzZWx2ZXMgdG8gdGhlIGdhZmYuIFRoYXQncyB3aHkgd2UgYmVsaWV2ZSBpbiBjcmVhdGluZyBhbiBlcXVpdGFibGUsIGZhaXJlciwgbW9yZSBpbmNsdXNpdmUgYnVzaW5lc3MgdGhhdCBjaGFtcGlvbnMgZGlmZmVyZW50IGlkZWFzIGFuZCBwZXJzcGVjdGl2ZXMuIFdlIG1heSBiZSBzb3J0LW9mLXNtYWxsIGJ1dCB3ZSdyZSBiaWcgb24gdGhhdCBjYXJpbmcsIHNoYXJpbmcgdGhpbmcgJmFtcDsgc3RyaXZlIHRvIGNyZWF0ZSBhIHN1cHBvcnRpdmUgY3VsdHVyZS4mbmJzcDs8L3A+CjxwIGRpcj0ibHRyIj5BcyBhIGxlYW4gb3JnYW5pc2F0aW9uLCBvdXIgdGVhbSBpcyBidWlsdCBvZiBhIGRpdmVyc2UsIHNwaXJpdGVkIHJhbmdlIG9mIHBlb3BsZSB3aG8gYXJlIG11bHRpLXNraWxsZWQsIGhpZ2hseSBtb3RpdmF0ZWQgYW5kIGZsZXhpYmxlLjwvcD4KPHAgZGlyPSJsdHIiPkluIHJldHVybiBmb3IgeW91ciBvdXRzdGFuZGluZyBlZmZvcnRzLCB5b3UnbGwgYmUgcmV3YXJkZWQgd2l0aCBhIGNvbXBldGl0aXZlIHNhbGFyeSBhbmQgZXhjZWxsZW50IGJlbmVmaXRzLiBXZSBiZWxpZXZlIHRoYXQgaGFyZCB3b3JrIHNob3VsZCBiZSBzdXBwb3J0ZWQgYW5kIHJlY29nbmlzZWQuPC9wPgo8cCBkaXI9Imx0ciI+SWYgdGhpcyBzb3VuZHMgbGlrZSB5b3UsIHdlJnJzcXVvO2QgbG92ZSB0byBoZWFyIGZyb20geW91LjwvcD4=
PHAgZGlyPSJsdHIiPjxzdHJvbmc+Sm9iIHRpdGxlOjwvc3Ryb25nPiBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXI8L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPkxvY2F0aW9uOiA8L3N0cm9uZz5VeGJyaWRnZSBidXQgbW9zdGx5IHJlbW90ZSAobW9udGhseSBvciBxdWFydGVybHkgdmlzaXRzKTwvcD4KPHA+PHN0cm9uZz4mbmJzcDs8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPkEgYml0IGFib3V0IGdpZmZnYWZmOjwvc3Ryb25nPjwvcD4KPHAgZGlyPSJsdHIiPkRvIHlvdSB3YW50IHRvIGpvaW4gYSB0ZWxlY29tcyBjb21wYW55IHRoYXQmcnNxdW87cyB1cCB0byBnb29kPyBBdCBnaWZmZ2FmZiB3ZSBkbyBtb2JpbGUgZGlmZmVyZW50bHkuIFdlIGNhbGwgb3V0IHRoZSBiYWQgYW5kIGZpbmQgYSBiZXR0ZXIgd2F5LiBXZSZyc3F1bztyZSBsYXNlci1mb2N1c2VkIG9uIGZsZXhpYmlsaXR5LCB2YWx1ZSBhbmQgbXV0dWFsIGdvb2QuPGJyPjxicj5BbmQgd2UmcnNxdW87cmUgc28gcHJvdWQgdG8gYmUgYSBjZXJ0aWZpZWQgQiBDb3JwLiBUaGlzIG1lYW5zIHdlJ3ZlIGpvaW5lZCBhIG5ldHdvcmsgb2YgbW9yZSB0aGFuIDEsMDAwIFVLIGNvbXBhbmllcywgd2hvIHdhbnQgdG8gbWFrZSBhIHBvc2l0aXZlIGltcGFjdCBvbiBwZW9wbGUgYW5kIHRoZSBwbGFuZXQuIFdvcmtpbmcgYXQgZ2lmZmdhZmYgaXMgc29tZXRoaW5nIHlvdSBjb3VsZCBiZSBwcm91ZCBvZiB0b28uPC9wPgo8cCBkaXI9Imx0ciI+WW91JnJzcXVvO2xsIGdldCB0aGUgYmVzdCBvZiBib3RoIHdvcmxkcywgdGhlIGVuZXJneSBhbmQgZmFzdCBwYWNlIG9mIGdpZmZnYWZmLCBwbHVzIGFsbCB0aGUgYmVuZWZpdHMgdGhhdCBjb21lIHdpdGggYmVpbmcgcGFydCBvZiBvdXIgcGFyZW50IGNvbXBhbnksIFZpcmdpbiBNZWRpYSBPMi48L3A+CjxwIGRpcj0ibHRyIj5PdXIgYnVzaW5lc3MgbW9kZWwgaXMgdW5pcXVlLiBXZSB3b3JrIHdpdGggb3VyIG1lbWJlcnMgKG91ciBjdXN0b21lcnMpIHRvIHVuZGVyc3RhbmQgdGhlaXIgbmVlZHMgaW4gYWxsIGFyZWFzIG9mIHRoZSBidXNpbmVzcy4gV2UgbG92ZSB0aGlzIGhpZ2hseSBjb2xsYWJvcmF0aXZlIGFwcHJvYWNoLiBPdmVyIHRoZSBwYXN0IGZldyB5ZWFycyBvdXIgbWVtYmVyIGJhc2UgaGFzIGdyb3duIHN0ZWFkaWx5LCBhbmQgd2UmcnNxdW87cmUgc3RpbGwgZ29pbmcuIFdlJnJzcXVvO3JlIGFsd2F5cyBsb29raW5nIHRvIGFjcXVpcmUgbmV3IG1lbWJlcnMsIGFuZCB0byBkbyB0aGF0IHdlIG5lZWQgdGhlIGJlc3QgcGVvcGxlIGluIG91ciB0ZWFtLjxicj48YnI+T3VyIGJyaWdodCBhbmQgbW9kZXJuIGdhZmYgaXMgaW4gVXhicmlkZ2UsIGluIGxlYWZ5IFdlc3QgTG9uZG9uLiBCdXQgaWYgY29tbXV0aW5nIGlzbiZyc3F1bzt0IHlvdXIgZmF2b3VyaXRlLCBtb3N0IG9mIG91ciByb2xlcyBjYW4gYmUgaHlicmlkIG9yIHdvcmsgZnJvbSBob21lLCBvciBhbnl3aGVyZSBpbiBiZXR3ZWVuLiBJZiB5b3UgbGlrZSBjb21pbmcgaW4sIHlvdSZyc3F1bztsbCBhbHdheXMgZmluZCBzb21lIG9mZmljZSBidWRkaWVzLiBBbmQgaWYgeW91IGxpa2UgYmlnIG9jY2FzaW9ucywgd2UgcmVhbGx5IGJyaW5nIHRoZSBvZmZpY2UgdG8gbGlmZSBtb250aGx5IGZvciBvdXIgdGhlbWVkIGN1bHR1cmUgZGF5cy4gUGx1cyBhbGwgb3VyIGdpZmZnYWZmZXJzIGNvbWUgdG9nZXRoZXIgYXQgb3VyIGxlZ2VuZGFyeSBnaWZmZ2FmZiBzdW1tZXIsIGJpcnRoZGF5IGFuZCBDaHJpc3RtYXMgY2VsZWJyYXRpb25zLjxzdHJvbmc+PGJyPjxicj48L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPlRoZSByb2xlIGFuZCB0aGUgdGVhbTo8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj5Tb2Z0d2FyZSBlbmdpbmVlcmluZyBpcyBhdCB0aGUgaGVhcnQgb2Ygd2hhdCB3ZSBkbyBoZXJlIGF0IGdpZmZnYWZmIC0gb3VyIGFnaWxlIGVuZ2luZWVyaW5nIHRlYW1zIGJ1aWxkIGFuZCBzdXBwb3J0IGEgc2V0IG9mIGFwcGxpY2F0aW9ucyBhbmQgc2VydmljZXMgdGhhdCBjb21iaW5lZCBjcmVhdGUgb3VyIHVuaXF1ZSB1c2VyIGV4cGVyaWVuY2Ugb24gdGhlIGdpZmZnYWZmIHdlYnNpdGUsIGVuYWJsZSBvdXIgaW50ZXJuYWwgdGVhbXMgdG8gd29yayBpbiB0aGUgbW9zdCBwcm9kdWN0aXZlIGFuZCBlZmZpY2llbnQgd2F5cyBhbmQgZW5hYmxlIGEgd2hvbGUgcmFuZ2Ugb2YgYXdlc29tZSBmZWF0dXJlcyB2aWEgbW9kZXJuIEFQSXMuJm5ic3A7Jm5ic3A7PC9wPgo8cCBkaXI9Imx0ciI+VGhlIHF1YWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSBvZiBvdXIgc29mdHdhcmUgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIHVzLCB3ZSBhcmUgbG9va2luZyBmb3IgZW5naW5lZXJzIHdpdGggcmVhbCB3b3JsZCBleHBlcmllbmNlLCBlc3BlY2lhbGx5IGluIHRlcm1zIG9mIHRoZSB3aG9sZSBkZXZlbG9wbWVudCBsaWZlY3ljbGUuPC9wPgo8cCBkaXI9Imx0ciI+WW91IHdpbGwgaGVscCB1cyBkZXNpZ24gYW5kIGltcGxlbWVudCB0aWdodGx5IGZvY3Vzc2VkIEFQSXMsIHNlcnZpY2VzIGFuZCB1c2VyIGludGVyZmFjZXMgYW5kLCB0b2dldGhlciB3aXRoIHlvdXIgdGVhbSwgeW91IHdpbGwgc3VwcG9ydCB0aGVtIGluIHByb2R1Y3Rpb24uIFdlIHdhbnQgeW91IHRvIHNoYXJlIHlvdXIgb3BpbmlvbnMgb24gaG93IHdlIGFyZSBkb2luZyB0aGluZ3MgLSBhbmQgaGVscCB1cyBnZXQgYmV0dGVyITwvcD4KPHA+PHN0cm9uZz4mbmJzcDs8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPktleSByZXNwb25zaWJpbGl0aWVzOiZuYnNwOzwvc3Ryb25nPjwvcD4KPHVsPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj5Xb3JrIHdpdGggYSBmdWxsLXN0YWNrIGF0dGl0dWRlIHdpdGhpbiBhIHNlbGYtb3JnYW5pc2luZywgY3Jvc3MgZnVuY3Rpb25hbCBwcm9kdWN0IGVuZ2luZWVyaW5nIHRlYW0gdXNpbmcgZXh0cmVtZSBwcm9ncmFtbWluZyBwcmFjdGljZXMgLSBub3RhYmx5IHBhaXIgcHJvZ3JhbW1pbmcgYW5kIHRlc3QtZHJpdmVuIGRldmVsb3BtZW50PC9wPgo8L2xpPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj5CdWlsZCwgc3VwcG9ydCBhbmQgbWFpbnRhaW4gYXV0b21hdGVkLCBmYXVsdC10b2xlcmFudCwgc2NhbGFibGUgcHJvZHVjdHMgYW5kIHNvbHV0aW9ucyB0aGF0IGFyZSBjb250aW51b3VzbHkgZGVsaXZlcmVkIGludG8gb3VyIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQ8L3A+CjwvbGk+CjxsaSBkaXI9Imx0ciIgYXJpYS1sZXZlbD0iMSI+CjxwIGRpcj0ibHRyIiByb2xlPSJwcmVzZW50YXRpb24iPkJlIHRlY2huaWNhbGx5IGN1cmlvdXMsIHRhY2tsaW5nIHByb2JsZW1zIHdpdGhvdXQgZ2l2aW5nIHVwLCBhbmQgcHJvZHVjaW5nIHNvbHV0aW9ucyB0aGF0IGxlc3MtZXhwZXJpZW5jZWQgZW5naW5lZXJzIGNhbiB1c2UsIG1haW50YWluLCBhbmQgbGVhcm4gZnJvbTwvcD4KPC9saT4KPC91bD4KPHAgZGlyPSJsdHIiPiZuYnNwOzwvcD4KPHAgZGlyPSJsdHIiPjxzdHJvbmc+QWNjb3VudGFibGUgZm9yOjwvc3Ryb25nPjwvcD4KPHAgZGlyPSJsdHIiPllvdSZyc3F1bztsbCBoYXZlIHRvIG1ha2UgdG91Z2ggZGVjaXNpb25zLCBpbXBsZW1lbnQgYmVzdCBwcmFjdGljZSBhbmQgcHJvdmlkZSBjb21wcm9taXNlcyB3aGVuIHNpdHVhdGlvbnMgYXJlIG5vdCBpZGVhbC4mbmJzcDsgT2ggYW5kIHlvdSZyc3F1bztsbCBuZWVkIHRvIGV4cGxhaW4gdGhhdCB0byBwZW9wbGUuIE5vdCBqdXN0IHRoZSB0ZWNobmljYWwgb25lcy4gQmVjYXVzZSB3ZSB3b3JrIGluIHByb2R1Y3QgdGVhbXMgd2hlcmUgbm90IGV2ZXJ5b25lIGlzIGEgdGVjaGllLiBJdCZyc3F1bztzIGZ1biwgeW91IGdldCBjbG9zZXIgdG8gdGhlIGJ1c2luZXNzIGFuZCBrbm93IG1vcmUgYWJvdXQgd2h5IHdlIGRvIHdoYXQgd2UgZG8sIG5vdCBqdXN0IGhvdy48L3A+CjxwIGRpcj0ibHRyIj5PdXIgY29yZSB0ZWNobm9sb2dpZXMgYXJlIDxzdHJvbmc+SmF2YSwgUEhQICZhbXA7IFB5dGhvbiAmYW1wOyBSZWFjdDwvc3Ryb25nPiwgYW5kIHdlIGxpa2Ugb3VyIGVuZ2luZWVycyB0byBiZSBYUCBkZXZlbG9wZXJzIHdpdGggYSBmdWxsLXN0YWNrIGF0dGl0dWRlLiBXZSZyc3F1bztyZSBsb29raW5nIGZvciBwYXNzaW9uYXRlIHByb2dyYW1tZXJzIHdobyBhcmUgY29tZm9ydGFibGUgd2l0aCB1c2luZyBhIHZhcmlldHkgb2YgZnJhbWV3b3JrcywgbGFuZ3VhZ2VzICZhbXA7IHRvb2xzIGFuZCBhcmUgaGFwcHkgdG8gcGljayB1cCBuZXcgc2tpbGxzIHdoZW4gdGhlIG5lZWQgYXJpc2VzLiZuYnNwOzwvcD4KPHA+PHN0cm9uZz4mbmJzcDs8L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPlNraWxscywgZXhwZXJpZW5jZSBhbmQgYXR0aXR1ZGVzOjwvc3Ryb25nPjwvcD4KPHVsPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj48c3Ryb25nPkVzc2VudGlhbCBTa2lsbHM6IDwvc3Ryb25nPlJlYWRpbmcgJmFtcDsgV3JpdGluZyBDb2RlLCBEZWJ1Z2dpbmcgJmFtcDsgVHJvdWJsZXNob290aW5nLCBJREUgJmFtcDsgT1MgQmFzaWNzLCBUZXN0IERyaXZlbiBEZXZlbG9wbWVudCwgUGFpciBQcm9ncmFtbWluZywgQ2xlYW4gQ29kZSAmYW1wOyBSZWZhY3RvcmluZywgVmVyc2lvbiBDb250cm9sPC9wPgo8L2xpPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj48c3Ryb25nPkRlc2lyYWJsZSBTa2lsbHM6IDwvc3Ryb25nPkNJIC8gQ0QsIEFsZ29yaXRobXMgJmFtcDsgRGF0YSBTdHJ1Y3R1cmVzLERJIC8gSW9DLCBNb2NrcyAmYW1wOyBTdHVicywgQWxlcnRpbmcgJmFtcDsgTW9uaXRvcmluZywgRnVuY3Rpb25hbCAmYW1wOyBOb24tRnVuY3Rpb25hbCBUZXN0aW5nLCBTT0xJRCBQcmluY2lwbGVzLCBDb250YWluZXJpc2F0aW9uICZhbXA7IE5ldHdvcmtpbmcgQmFzaWNzLCBUd2VsdmUgRmFjdG9yIEFwcCBEZXNpZ24sIFNvbHV0aW9uIEFyY2hpdGVjdHVyZTwvcD4KPC9saT4KPC91bD4KPHAgZGlyPSJsdHIiPjxicj48c3Ryb25nPlBsdXMgY29tcGV0ZW5jeSBpbiAzIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZzo8L3N0cm9uZz48L3A+Cjx1bD4KPGxpIGRpcj0ibHRyIiBhcmlhLWxldmVsPSIxIj4KPHAgZGlyPSJsdHIiIHJvbGU9InByZXNlbnRhdGlvbiI+Q2xpZW50LVNpZGUgRW5naW5lZXJpbmc6IENTUzMsIEN5cHJlc3MsIEVDTUFTY3JpcHQgKEVTNispLCBIVE1MNSwgSmVzdCwgUmVhY3QgJmFtcDsgUmVhY3QgTmF0aXZlLCBTQVNTLCBUeXBlU2NyaXB0PC9wPgo8L2xpPgo8bGkgZGlyPSJsdHIiIGFyaWEtbGV2ZWw9IjEiPgo8cCBkaXI9Imx0ciIgcm9sZT0icHJlc2VudGF0aW9uIj5TZXJ2ZXItU2lkZSBFbmdpbmVlcmluZzogSmF2YSA4IHdpdGggTWF2ZW4gJmFtcDsgU3ByaW5nLCBKVW5pdCwgTm9kZUpTLCBQSFAgd2l0aCBMYXJhdmVsIG9yIFplbmQsIFB5dGhvbjwvcD4KPC9saT4KPGxpIGRpcj0ibHRyIiBhcmlhLWxldmVsPSIxIj4KPHAgZGlyPSJsdHIiIHJvbGU9InByZXNlbnRhdGlvbiI+QWRkaXRpb25hbCBUZWNobm9sb2d5OiBBcGFjaGUgJmFtcDsgTkdJTlgsIEFXUywgSmVua2lucywgRHluYW1vREIsIFBvc3RncmVTUUwsIFJlZGlzICZhbXA7IE9yYWNsZSwgRG9ja2VyICZhbXA7IEt1YmVybmV0ZXMsIEVsYXN0aWNTZWFyY2ggJmFtcDsgS2liYW5hLCBHcmFmYW5hICZhbXA7IFByb21ldGhldXMsIEtpbmVzaXM8L3A+CjwvbGk+CjwvdWw+CjxwIGRpcj0ibHRyIj4mbmJzcDs8L3A+CjxwIGRpcj0ibHRyIj48c3Ryb25nPk91ciBjb21taXRtZW50IHRvIGVxdWl0eSwgZGl2ZXJzaXR5IGFuZCBpbmNsdXNpb248L3N0cm9uZz48L3A+CjxwIGRpcj0ibHRyIj5BdCBnaWZmZ2FmZiB3ZSB3YW50IHRvIGNoYWxsZW5nZSB0aGUgb2xkIHdheSBvZiBkb2luZyB0aGluZ3MuIFBlb3BsZSwgYW5kIHRoZSB3YXkgdGhleSB3b3JrLCBkZWZpbmUgb3VyIGN1bHR1cmUgYW5kIHdlIGVuY291cmFnZSBldmVyeW9uZSB0byBicmluZyB0aGVpciB3aG9sZSBzZWx2ZXMgdG8gdGhlIGdhZmYuIFRoYXQncyB3aHkgd2UgYmVsaWV2ZSBpbiBjcmVhdGluZyBhbiBlcXVpdGFibGUsIGZhaXJlciwgbW9yZSBpbmNsdXNpdmUgYnVzaW5lc3MgdGhhdCBjaGFtcGlvbnMgZGlmZmVyZW50IGlkZWFzIGFuZCBwZXJzcGVjdGl2ZXMuIFdlIG1heSBiZSBzb3J0LW9mLXNtYWxsIGJ1dCB3ZSdyZSBiaWcgb24gdGhhdCBjYXJpbmcsIHNoYXJpbmcgdGhpbmcgJmFtcDsgc3RyaXZlIHRvIGNyZWF0ZSBhIHN1cHBvcnRpdmUgY3VsdHVyZS4mbmJzcDs8L3A+CjxwIGRpcj0ibHRyIj5BcyBhIGxlYW4gb3JnYW5pc2F0aW9uLCBvdXIgdGVhbSBpcyBidWlsdCBvZiBhIGRpdmVyc2UsIHNwaXJpdGVkIHJhbmdlIG9mIHBlb3BsZSB3aG8gYXJlIG11bHRpLXNraWxsZWQsIGhpZ2hseSBtb3RpdmF0ZWQgYW5kIGZsZXhpYmxlLjwvcD4KPHAgZGlyPSJsdHIiPkluIHJldHVybiBmb3IgeW91ciBvdXRzdGFuZGluZyBlZmZvcnRzLCB5b3UnbGwgYmUgcmV3YXJkZWQgd2l0aCBhIGNvbXBldGl0aXZlIHNhbGFyeSBhbmQgZXhjZWxsZW50IGJlbmVmaXRzLiBXZSBiZWxpZXZlIHRoYXQgaGFyZCB3b3JrIHNob3VsZCBiZSBzdXBwb3J0ZWQgYW5kIHJlY29nbmlzZWQuPC9wPgo8cCBkaXI9Imx0ciI+SWYgdGhpcyBzb3VuZHMgbGlrZSB5b3UsIHdlJnJzcXVvO2QgbG92ZSB0byBoZWFyIGZyb20geW91LjwvcD4=