
Have sci-fi filmmakers stopped trying to imagine a hopeful future? A look at why grim dystopias may have taken hold in storytelling: You may have heard a variation on a common complaint: “It’s the 21st century. We should be flying around with jet packs and eating food in pill form.” It’s a sentiment – itself probably ... When did sci-fi movies stop imagining a brighter future?
CjxwPjxzdHJvbmc+SGF2ZSBzY2ktZmkgZmlsbW1ha2VycyBzdG9wcGVkIHRyeWluZyB0byBpbWFnaW5lIGEgaG9wZWZ1bCBmdXR1cmU/IEEgbG9vayBhdCB3aHkgZ3JpbSBkeXN0b3BpYXMmbmJzcDttYXkgaGF2ZSB0YWtlbiBob2xkIGluIHN0b3J5dGVsbGluZzo8L3N0cm9uZz48L3A+CgoKCjxociBjbGFzcz0id3AtYmxvY2stc2VwYXJhdG9yIGhhcy1hbHBoYS1jaGFubmVsLW9wYWNpdHkiLz4KCgoKPHA+WW91IG1heSBoYXZlIGhlYXJkIGEgdmFyaWF0aW9uIG9uIGEgY29tbW9uIGNvbXBsYWludDog4oCcSXTigJlzIHRoZSAyMXN0IGNlbnR1cnkuIFdlIHNob3VsZCBiZSBmbHlpbmcgYXJvdW5kIHdpdGggamV0IHBhY2tzIGFuZCBlYXRpbmcgZm9vZCBpbiBwaWxsIGZvcm0u4oCdPC9wPgoKCgo8cD5JdOKAmXMgYSBzZW50aW1lbnQgJiM4MjExOyBpdHNlbGYgcHJvYmFibHkgZHlpbmcgb3V0IG5vdyB3ZeKAmXJlIDI1IHllYXJzIGludG8gdGhlIDIxc3QgY2VudHVyeSAmIzgyMTE7IHRoYXQgc2F5cyBhIGxvdCBhYm91dCBvdXIgY29sbGVjdGl2ZSwgdW5yZWFsaXNlZCBkcmVhbXMgb2YgdGhlIGZ1dHVyZS4gRGVjYWRlcyBhZ28sIHNjaWVuY2UgZmljdGlvbiB3cml0ZXJzLCBmdXR1cmlzdHMgYW5kIHNjaWVudGlzdHMgb25jZSBoYWQgdXRvcGlhbiB2aXNpb25zIG9mIHdoYXQgdGhlIDIxc3QgY2VudHVyeSBtaWdodCBsb29rIGxpa2UuIEluIDxlbT5UaGluZ3MgVG8gQ29tZSA8L2VtPigxOTM2KSwgd2hpY2ggV2lsbGlhbSBDYW1lcm9uIE1lbnppZXMgZGlyZWN0ZWQgZnJvbSBhIHN0b3J5IGJ5IEhHIFdlbGxzLCBodW1hbml0eSBzdXJ2aXZlZCB0aGUgd2FycyBhbmQgcGFuZGVtaWNzIG9mIHRoZSAyMHRoIGNlbnR1cnkgYW5kIHJlYnVpbHQgaXRzZWxmIGludG8gYSBnbG9yaW91cywgUm9tZS1pbnNwaXJlZCBzdXBlcnN0YXRlIGluIHRoZSBuZXcgbWlsbGVubml1bSwgaXRzIHNpZ2h0cyBzZXQgb24gY29ucXVlcmluZyBvdGhlciBwbGFuZXRzLjwvcD4KCgoKPHA+Rm9sbG93aW5nIHRoZSBTZWNvbmQgV29ybGQgV2FyLCBhIGdlbmVyYXRpb24gb2Ygc2NpLWZpIHdyaXRlcnMgaW1hZ2luZWQgbHVuYXIgYmFzZXMgYW5kIGdsZWFtaW5nIGNpdGllcyBmdWxsIG9mIG1vbm9yYWlscy4gVGhlIDE5NTBzIHB1bHAgc3Rvcnl0ZWxsZXLigJlzIGlkZWEgb2YgdGhlIGZ1dHVyZSBiZWNhbWUgc3VjaCBhIGNsaWNoZSB0aGF0IGl0IG1hZGUgaXRzIHdheSBpbnRvIGNhcnRvb25zICYjODIxMTsgZmlyc3QgPGVtPlRoZSBKZXRzb25zLDwvZW0+IHRoZW4gbGF0ZXIgTWF0dCBHcm9lbmluZ+KAmXMgYWZmZWN0aW9uYXRlIHBhcm9keSBvZiBhbGwgdGhpbmdzIHNjaS1maSwgPGVtPkZ1dHVyYW1hPC9lbT4uJm5ic3A7PC9wPgoKCgo8cD5Ob3csIHNheSB3aGF0IHlvdSB3aWxsIGFib3V0IHRoZSBwb3N0LXdhciwgbGFyZ2VseSBBbWVyaWNhbiB2aWV3IG9mIHRoZSBmdXR1cmUuIEl0IHdhcyBwYXRyaWFyY2hhbCwgb3ZlcndoZWxtaW5nbHkgd2hpdGUgYW5kIGZpbGxlZCB3aXRoIGEgcG9zdC1pbXBlcmlhbCBzZW5zZSB0aGF0IHRoZSB3ZXN0ZXJuIHdheSB3YXMgdGhlIG9ubHkgY29ycmVjdCBvbmUgJiM4MjExOyBhIHNlbnRpbWVudCB0aGF0IGFsc28gc25lYWtlZCBpbnRvIHRoZSB1dG9waWEgb2YgR2VuZSBSb2RkZW5iZXJyeSYjODIxNztzIDxlbT5TdGFyIFRyZWsgPC9lbT5pbiB0aGUgMTk2MHMuIEJ1dCBob3dldmVyIGRhdGVkIHRoYXQgdmlzaW9uIG9mIHRoZSBmdXR1cmUgbWlnaHQgYmUsIGl04oCZcyBhdCBsZWFzdCBhIHZpc2lvbi4mbmJzcDs8L3A+CgoKCjxwPkF0IHNvbWUgcG9pbnQgaW4gdGhlIDE5ODBzIG9yIDE5OTBzLCBzdG9yeXRlbGxlcnMgJiM4MjExOyBwYXJ0aWN1bGFybHkgaW4gZmlsbSBhbmQgVFYgJiM4MjExOyBzdG9wcGVkIGltYWdpbmluZyB3aGF0IGEgYnJpZ2h0IGZ1dHVyZSBmb3IgaHVtYW5pdHkgbWlnaHQgbG9vayBsaWtlLiBBcG9jYWx5cHNlcyBhYm91bmQgJiM4MjExOyBmcm9tIHRoZSBmdWVsLWRyYWluZWQgY29sbGFwc2Ugb2YgPGVtPk1hZCBNYXggPC9lbT50byB0aGUgcG9zdC1zb2NpZXRhbCBob3Jyb3Igb2YgQ29ybWFjIE1jQ2FydGh54oCZcyA8ZW0+VGhlIFJvYWQ8L2VtPiB0byB0aGUgem9tYmllIGhlbGxzIG9mIDxlbT5OaWdodCBPZiBUaGUgTGl2aW5nIERlYWQ8L2VtPiBvciA8ZW0+VGhlIFdhbGtpbmcgRGVhZDwvZW0+LiBUaGVyZSBhcmUgYWxzbyBwbGVudHkgb2YgZHlzdG9waWFzLCBhbGwgb2YgdGhlbSByaWZmaW5nIG9uIHRoZSB3YXJuaW5ncyBvZiBHZW9yZ2UgT3J3ZWxsLCBBbGRvdXMgSHV4bGV5IG9yIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlXyhub3ZlbCkiPllldmdlbnkgWmFteWF0aW48L2E+LiA8ZW0+U3F1aWQgR2FtZTwvZW0+LCBmb3IgZXhhbXBsZSwgaGFzIGJlZW4gYSBzdWNjZXNzIGZvciBOZXRmbGl4IG9uIHRoZSBzY2FsZSBvZiBpdHMgYmlnZ2VzdCBUViBzaG93cywgaW5jbHVkaW5nIFN0cmFuZ2VyIFRoaW5ncyBhbmQgQnJpZGdlcnRvbi4mbmJzcDs8L3A+CgoKCjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxpbWcgc3JjPSJodHRwczovL3NwYWNlcy5maWxtc3Rvcmllcy5jby51ay91cGxvYWRzLzIwMjQvMTIvc3F1aWQtZ2FtZS1zZWFzb24tMi1lcGlzb2RlLTYtdGhhbm9zLTgwMHg1MzMuanBnIiBhbHQ9InNxdWlkIGdhbWUgc2Vhc29uIDIgZXBpc29kZSA2IHRoYW5vcyIgY2xhc3M9IndwLWltYWdlLTk1NDM4Ii8+PGZpZ2NhcHRpb24gY2xhc3M9IndwLWVsZW1lbnQtY2FwdGlvbiI+RGVhZGx5IGNvbnRlc3RzIGluIFNxdWlkIEdhbWUgc2Vhc29uIDIuIENyZWRpdDogTmV0ZmxpeDwvZmlnY2FwdGlvbj48L2ZpZ3VyZT4KCgoKPHA+SWYgdXRvcGlhcyBleGlzdCBpbiBtb3ZpZXMgYXQgYWxsLCB0aGV5IHRlbmQgdG8gYmUgbm9zdGFsZ2ljIGZvciB0aGUgcGFzdCByYXRoZXIgdGhhbiBsb29raW5nIGZvcndhcmQuIEJyYWQgQmlyZOKAmXMgPGVtPlRvbW9ycm93bGFuZCA8L2VtPigyMDE1KSB3YXMgaW5zcGlyZWQgYnkgdGhlIGZ1dHVyaXN0aWMgRGlzbmV5bGFuZCBhdHRyYWN0aW9ucyB0aGF0IGZpcnN0IGFwcGVhcmVkIGluIHRoZSAxOTUwcy4gSXRzIGdsaXR0ZXJpbmcsIGhpZ2gtdGVjaCB3b3JsZCBvZiBzcGlyZXMsIHJvYm90cyBhbmQgamV0LXBhY2tzIHdhcyBhbHNvLCBpbnRlcmVzdGluZ2x5LCBjcmVhdGVkIGJ5IGEgc2VjcmV0IHNvY2lldHkgb2YgZ2VuaXVzZXMgd2hvIHJldHJlYXRlZCB0byBhbm90aGVyIGRpbWVuc2lvbiB0byBidWlsZCB0aGVpciBicmF2ZSBuZXcgd29ybGQgJiM4MjExOyBzb21ldGhpbmcgdGhhdCBoYXMgaW50ZXJlc3RpbmcgcGFyYWxsZWxzIHdpdGggY2VydGFpbiByZWFsLXdvcmxkIGluZHVzdHJpYWxpc3QgZmFudGFzaWVzLCBhcyB3ZeKAmWxsIHNlZSBzaG9ydGx5LjwvcD4KCgoKPHA+RXZlbiA8ZW0+U3RhciBUcmVrLDwvZW0+IG9uZSBvZiB0aGUgYmVzdC1rbm93biB2aXNpb25zIG9mIGEgZnV0dXJlIHV0b3BpYSwgaGFzIGJlY29tZSByYXRoZXIgbGVzcyBzdW5uaWVyIGluIGl0cyBvdXRsb29rIGluIHJlY2VudCB5ZWFycy4gPGVtPlNlY3Rpb24gMzEsPC9lbT4gUGFyYW1vdW50JiM4MjE3O3Mgc3RyYWlnaHQtdG8tc3RyZWFtaW5nIG1vdmllLCBjb250aW51ZXMgdGhlIG1vZGVybiBub3Rpb24gdGhhdCBiZW5lYXRoIHRoZSBiZW5ldm9sZW50IFN0YXIgRmxlZXQsIHRoZXJlJiM4MjE3O3MgdGhlIHRpdHVsYXIgU2VjdGlvbiAzMSAmIzgyMTE7IGEgY292ZXJ0LCBDSUEtbGlrZSBvcmdhbmlzYXRpb24gdGhhdCBkb2VzICYjODIyMDt0aGUgbmFzdHkgc3R1ZmYgdGhhdCBubyBvbmUgbGlrZXMgdG8gdGhpbmsgYWJvdXQsJiM4MjIxOyBhcyA8ZW0+RGVlcCBTcGFjZSBOaW5lPC9lbT4gd3JpdGVyIElyYSBTdGV2ZW4gQmVociBzYWlkLjwvcD4KCgoKPHA+V2hlcmUsIHRoZW4sIGlzIHRoZSAyMDI1IGVxdWl2YWxlbnQgb2YgdGhlIGpldC1wYWNrLCB0aGUgY2xlYW4gZW5lcmd5IGNpdHksIHRoZSBjb21meSBzcGFjZSB0cmF2ZWwgb2YgPGVtPjIwMDE6IEEgU3BhY2UgT2R5c3NleTwvZW0+PyBJbiBhbGwgdGhlIHBvc3NpYmxlIHZlcnNpb25zIG9mIHRoZSBmdXR1cmUgd2UgaW1hZ2luZSBmb3Igb3Vyc2VsdmVzLCB3aHkgYXJlIG91ciBzdG9yeXRlbGxlcnMgc3RydWdnbGluZyB0byBkcmVhbSBvZiBvbmUgaW4gd2hpY2ggaHVtYW5pdHkgaGFzIGJldHRlcmVkIGl0c2VsZiwgY29ucXVlcmVkIGl0cyBkZW1vbnMsIGFuZCBmb3VuZCBhIGJhbGFuY2UgYmV0d2VlbiBzY2llbnRpZmljIHByb2dyZXNzIGFuZCBoYXJtb255IHdpdGggbmF0dXJlPyBHaXZlbiBhbGwgdGhlIHRlY2huaWNhbCBicmVha3Rocm91Z2hzIHdl4oCZdmUgZXhwZXJpZW5jZWQgc2luY2UgdGhlIDE5NTBzICYjODIxMTsgYWZmb3JkYWJsZSBjb21wdXRpbmcsIHRoZSBpbnRlcm5ldCwgYW5kIHNvIG9uICYjODIxMTsgb3VyIHN0b3JpZXMgYWJvdXQgdGhlIGZ1dHVyZSBoYXZlIGJlY29tZSBtb3JlIGRvd25iZWF0IHJhdGhlciB0aGFuIG9wdGltaXN0aWMuIFdoeSBpcyB0aGF0PzwvcD4KCgoKPHA+T25lIHBvc3NpYmxlIHJlYXNvbiBpcyB0aGF0IHRoZSBwZW9wbGUgd2hvIGVuZ2luZWVyIG91ciBmdXR1cmUgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSAxOTUwcy4gVGhlIGdyZWF0IHNwYWNlIHJhY2Ugb2YgdGhlIDUwcyBhbmQgNjBzIHdhcyBmdW5kZWQgYnkgdGhlIHN0YXRlICYjODIxMTsgTkFTQSBpbiB0aGUgVVMgYW5kIFNTU1IgaW4gdGhlIFNvdmlldCBVbmlvbi4gVG9kYXksIHJvY2tldHMgYXJlIHNlbnQgb3V0IGJ5IHByaXZhdGUgY29tcGFuaWVzIGxpa2UgU3BhY2VYIChhbGJlaXQgZnVuZGVkIGluIG5vIHNtYWxsIHBhcnQgYnkgdGF4cGF5ZXJz4oCZIG1vbmV5KS4gQnkgbm93LCB0aGUgZ3JlYXQgc3BhY2UgcmFjZSBoYXMgbG9uZyBzaW5jZSBnaXZlbiB3YXkgdG8gdGhlIHJhY2UgZm9yIEFJICYjODIxMTsgYSBnbG9iYWwgcnVzaCBmdW5kZWQgbm90IGJ5IGdvdmVybm1lbnRzLCBidXQgYnkgcHJpdmF0ZSBmaXJtcyBvd25lZCBieSBiaWxsaW9uYWlyZXMuPC9wPgoKCgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48aW1nIHNyYz0iaHR0cHM6Ly9zcGFjZXMuZmlsbXN0b3JpZXMuY28udWsvdXBsb2Fkcy8yMDI0LzA2LzIwMDEtZGlzY292ZXJ5LnBuZyIgYWx0PSJzY2ktZmkgZnV0dXJlIGluIDIwMDE6IGEgc3BhY2Ugb2R5c3NleSIgY2xhc3M9IndwLWltYWdlLTczNDU2Ii8+PGZpZ2NhcHRpb24gY2xhc3M9IndwLWVsZW1lbnQtY2FwdGlvbiI+QSBtb3JlIGdyYWNlZnVsIGZ1dHVyZSB2aXNpb24gaW4gMjAwMTogQSBTcGFjZSBPZHlzc2V5LiBDcmVkaXQ6IE1HTS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+CgoKCjxwPlRoZSBsYXN0IHRydWx5IHV0b3BpYW4gdmlldyBvZiB0aGUgZnV0dXJlLCBwZXJoYXBzLCB3YXMgdGhlIG9uZSBkcmVhbWVkIHVwIGluIHRoZSBkYXduIG9mIHRoZSBpbnRlcm5ldCBhZ2UuIEF0IHRoZSBzdGFydCBvZiB0aGUgMTk5MHMsIHRoZSB3b3JsZCB3aWRlIHdlYiB3YXMgZGVzY3JpYmVkIGFzIGEgbmV3IGZyb250aWVyIG9mIGZyZWVseSBhdmFpbGFibGUgaW5mb3JtYXRpb24gJiM4MjExOyB0ZXJtcyBsaWtlIOKAmGdsb2JhbCB2aWxsYWdl4oCZIHdlcmUgdGhyb3duIGFib3V0IGFzIHByZWRpY3Rpb25zIHdlcmUgbWFkZSBvZiBhIHNtYXJ0ZXIsIGJldHRlciBjb25uZWN0ZWQgc29jaWV0eSB3aGVyZSBrbm93bGVkZ2Ugd2FzIG9ubHkgYSBmZXcga2V5Ym9hcmQgcHJlc3NlcyBhd2F5LjwvcD4KCgoKPHA+VGhhdCB3YXMgYmVmb3JlIHRoZSBiaWxsaW9uYWlyZXMgYW5kIHRoZSBjb3Jwb3JhdGlvbnMgbW92ZWQgaW4sIGFuZCB0aGUgaW50ZXJuZXQgd2FzIGluc3RlYWQgY2FydmVkIHVwIGJldHdlZW4gc3VjaCBnaWFudHMgYXMgR29vZ2xlLCBBbWF6b24gYW5kIEZhY2Vib29rLiBUaG9zZSBjb21wYW5pZXMgbWFkZSB0cmlsbGlvbnMgZnJvbSB0aGUgY29tbW9kaXRpc2F0aW9uIG9mIHRoZSBwdWJsaWPigJlzIGRhdGEuIEdvdmVybm1lbnRzLCB0b28gc2xvdyB0byByZWFsaXNlIHdoYXQgd2FzIGhhcHBlbmluZywgb3IgdG9vIGNvbXByb21pc2VkIHRvIGludGVydmVuZSwgd2F0Y2hlZCBhcyB0ZWNoIGZpcm1zIGFuZCB0aGVpciBvd25lcnMgYmVjYW1lIHJpY2hlciB0aGFuIHNvbWUgZGV2ZWxvcGVkIG5hdGlvbnMuJm5ic3A7PC9wPgoKCgo8cD5Ub2RheSwgdGhlIGZ1dHVyZSBpc27igJl0IGJlaW5nIHdyaXR0ZW4gYnkgd3JpdGVycyBsaWtlIElzYWFjIEFzaW1vdiwgQ2FybCBTYWdhbiBvciBBcnRodXIgQyBDbGFya2UuIEl0IGlzbuKAmXQgc2N1bHB0ZWQgYnkgYWNhZGVtaWNzIGF0IHVuaXZlcnNpdGllcywgb3IgbGVnaXNsYXRlZCBpbnRvIGJlaW5nIGJ5IHBvbGl0aWNpYW5zIHdpdGggZHJlYW1zIG9mIGEgYmV0dGVyIHRvbW9ycm93LiBJbnN0ZWFkLCB0aGUgbmFycmF0aXZlIGlzIGluIHRoZSBoYW5kcyBvZiBhIGRvemVuIG9yIHNvIG1lbWJlcnMgb2YgdGhlIHN1cGVyIHJpY2ggd2hvc2UgaHVuZ2VyIGZvciBtb25leSBhbmQgaW5mbHVlbmNlIGlzIG1hdGNoZWQgb25seSBieSB0aGVpciBzZWxmaXNobmVzcy4mbmJzcDs8L3A+CgoKCjxwPlRoZSBzZW5zZSBvZiBhIHNoYXJlZCBkZXN0aW55IG9yIGEgY29sbGVjdGl2ZSBkZXNpcmUgZm9yIGEgYmV0dGVyIGZ1dHVyZSAmIzgyMTE7IGhvd2V2ZXIgdW5saWtlbHkgaXQgbWlnaHQgYmUgJiM4MjExOyBubyBsb25nZXIgZXhpc3RzLCBhbmQgY2FuIG5vIGxvbmdlciBleGlzdCBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnNlbnN1cy4gVGhlcmUgYXJlIHRoZSBpbmNyZWFzaW5nbHkgZnJhZ21lbnRlZCwgdHJpYmFsIGdyb3VwcyBvZiB0aGUgd29ybGTigJlzIG1hc3Nlcywgc2NyYWJibGluZyBhbnhpb3VzbHkgb3ZlciBldmVyLWRpbWluaXNoaW5nIHJlc291cmNlcy4gVGhlbiB0aGVyZeKAmXMgdGhlIHdpbGwgb2YgdGhlIHN0b2NrIG1hcmtldCwgd2hpY2ggaXMgZW50aXJlbHkgZGl2b3JjZWQgZnJvbSB0aGUgZXhwZXJpZW5jZXMgb2Ygc29jaWV0eS4gSW4gMjAyMiwgdGhlcmUgd2FzIGEgY29zdCBvZiBsaXZpbmcgY3Jpc2lzIGFzIHBlb3BsZSBzdHJ1Z2dsZWQgdG8gaGVhdCB0aGVpciBob21lcyBvciBidXkgZm9vZDsgbWVhbndoaWxlLCB0aGUgc3RvY2sgbWFya2V0LCBib2xzdGVyZWQgYnkgdGhlIEFJIGJ1YmJsZSwgc29hcmVkLiZuYnNwOzwvcD4KCgoKPHA+QXMgdGhlIGZpbG1tYWtlciBEYW5pZWwgRXNwaW5vc2EsIGRpcmVjdG9yIG9mIHRoZSAyMDE3IHNjaS1maSBob3Jyb3IsIDxlbT5MaWZlPC9lbT4sIG9uY2UgdG9sZCBtZSwg4oCcSW4gb3VyIHNvY2lldHkgdG9kYXksIGlmIHlvdSBhc2sgYSBub3JtYWwgcGVyc29uLCDigJhXaGF0IGRvIHlvdSB0aGluayBFYXJ0aOKAmXMgZ29pbmcgdG8gbG9vayBsaWtlIGluIDEwMCB5ZWFyc+KAmSwgaGUgZG9lc27igJl0IGhhdmUgYSBjbHVlLiBIZSBkb2VzbuKAmXQgaGF2ZSBhbiBpZGVhIGFib3V0IHdoYXQgaXTigJlzIGdvaW5nIHRvIGxvb2sgbGlrZSBpbiAyMCB5ZWFycy4gSGUgZG9lc27igJl0IGhhdmUgYSBmdWNraW5nIGlkZWEuIE5vdCBldmVuIGEgdGhlb3J5LiBUaGVyZeKAmXMgbm90IGV2ZW4gYSBwaGlsb3NvcGhpY2FsIHRob3VnaHQuIFRoZSBvbmx5IHRoaW5nIHdlIGNhbiB3b3JyeSBhYm91dCBpcyB0b21vcnJvdywgYmVjYXVzZSB0aGF04oCZcyBob3cgbWVzc2VkIHVwIHdl4oCZdmUgYmVjb21lLuKAnTwvcD4KCgoKPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGltZyBzcmM9Imh0dHBzOi8vc3BhY2VzLmZpbG1zdG9yaWVzLmNvLnVrL3VwbG9hZHMvMjAyNS8wMi9saWZlLTgwMHg0NTAud2VicCIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS05ODM4OCIvPjxmaWdjYXB0aW9uIGNsYXNzPSJ3cC1lbGVtZW50LWNhcHRpb24iPkpha2UgR3lsbGVuaGFhbCBpbiAyMDE3JiM4MjE3O3MgTGlmZS4gQ3JlZGl0OiBTb255LjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT4KCgoKPHA+SWYgdGhlcmUgYXJlIHZpc2lvbnMgb2YgdGhlIGZ1dHVyZSBsZWZ0LCB0aGV54oCZcmUgdGhlIG9uZXMgaW1hZ2luZWQgYnkgYmlsbGlvbmFpcmVzLiBJbiBoaXMgYm9vayA8ZW0+VGhlIFN1cnZpdmFsIE9mIFRoZSBSaWNoZXN0LDwvZW0+IGF1dGhvciBEb3VnbGFzIFJ1c2hrb2ZmIGxheXMgb3V0IGEgZmV3IG9mIHRoZXNlIGZhbnRhc2llcyBvZiB0aGUgc3VwZXItcmljaC4gU29tZSBtZW1iZXJzIG9mIHRoYXQgY2x1YiBiZWxpZXZlIHRoZXnigJlsbCBiZSBhYmxlIHRvIHJpZGUgb3V0IGFueSBjb21pbmcgYXBvY2FseXBzZSAmIzgyMTE7IGVudmlyb25tZW50YWwsIHNvY2lldGFsLCBhbmQgc28gb24gJiM4MjExOyBieSBsaXZpbmcgaW4gZm9ydGlmaWVkIHVuZGVyZ3JvdW5kIGJ1bmtlcnMuIE90aGVycyB0aGluayB0aGV5IGNhbiBsaXZlIGFzIHNvLWNhbGxlZCDigJhzZWFzdGVhZGVyc+KAmSAmIzgyMTE7IGNvbW11bml0aWVzIG9mIGVsaXRlcyBhbmQgaGFuZ2VycyBvbiBib2JiaW5nIGFib3V0IGF0IHNlYSBvbiBjbHVzdGVycyBvZiBib2F0cywgcmlncyBvciBhcnRpZmljaWFsIGlzbGFuZHMuIFN0aWxsIG90aGVycywgbGlrZSBFbG9uIE11c2ssIGhhdmUgZmFuY2lmdWwgdmlzaW9ucyBvZiBiYXNlcyBvbiBNYXJzLjwvcD4KCgoKPHA+SW4gZmFjdCwgTXVzayByZWNlbnRseSB3cm90ZSBpbiBhIGZsdXJyeSBvZiB0d2VldHMgdGhhdCBoZSB3YW50cyBoaXMgY29tcGFueSwgU3BhY2VYLCB0byBldmVudHVhbGx5IHNodXR0bGUgYXBwcm94aW1hdGVseSBvbmUgbWlsbGlvbiBodW1hbiBiZWluZ3MgdG8gTWFycy4gTXVzayBkb2VzbuKAmXQgYXBwZWFyIHRvIGhhdmUgcmVhZCB0aGUgb2JzZXJ2YXRpb24gZnJvbSBleHBlcnRzIHRoYXQgTWFyc+KAmSBsYWNrIG9mIGEgbWFnbmV0b3NwaGVyZSB3aWxsIG1ha2UgaHVtYW4gc3Vydml2YWwgb24gdGhlIHBsYW5ldDxhIGhyZWY9Imh0dHBzOi8vZGVmZWN0b3IuY29tL25laXRoZXItZWxvbi1tdXNrLW5vci1hbnlib2R5LWVsc2Utd2lsbC1ldmVyLWNvbG9uaXplLW1hcnMiPiBhbGwgYnV0IGltcG9zc2libGU8L2E+LCBvciB0aGF0IGl0IG1pZ2h0IGJlIGVhc2llciB0byBmaXggdGhlIHByb2JsZW1zIG9uIG91ciBvd24gd29ybGQgcmF0aGVyIHRoYW4gc3BlbmQgdHJpbGxpb25zIHRyeWluZyB0byByZWFjaCBhbiBpbmhvc3BpdGFibGUgcm9jayBzb21lIDE0MG0gbWlsZXMgYXdheS48L3A+CgoKCjxwPkluIHRoaXMgcmVnYXJkLCB0d28gMjFzdCBjZW50dXJ5IHdvcmtzIG9mIHNjaS1maSBtaWdodCBleHBsb3JlIHRoZXNlIGJpbGxpb25haXJlIGZhbnRhc2llcyBtb3JlIGFjY3VyYXRlbHkgdGhhbiBhbnkgb3RoZXIuIE9uZSBpcyA8ZW0+QmlvU2hvY2s8L2VtPiAmIzgyMTE7IEtlbiBMZXZpbmXigJlzIDIwMDYgdmlkZW9nYW1lIHdoaWNoIG1heSAoYWZ0ZXIgc29tZSBmYWxzZSBzdGFydHMpIGV2ZW50dWFsbHkgYmVjb21lIGE8YSBocmVmPSJodHRwczovL3N0YWdpbmcuZmlsbXN0b3JpZXMuY28udWsvbmV3cy9iaW9zaG9jay10aGUtcGxhbm5lZC1tb3ZpZS1mcm9tLW5ldGZsaXgtaXMtc3RpbGwtaGFwcGVuaW5nLyI+IE5ldGZsaXggbW92aWU8L2E+LiBJbiBpdCwgYSBidW5jaCBvZiBBeW4gUmFuZC1yZWFkaW5nIGVsaXRlcyBidWlsZCBhIGNpdHkgdW5kZXIgdGhlIHNlYSAmIzgyMTE7IGEgcGxhY2Ugd2hlcmUgdGhleSBjYW4gY3JlYXRlIHRoZWlyIG93biBsYXdzIGFuZCBhdm9pZCBwYXlpbmcgcGVza3kgdGF4ZXMuIEJlZm9yZSBsb25nLCB0aGUgZW50aXJlIHBsYWNlIHNpbmtzIGludG8gc3F1YWxvciwgc29jaWFsIG1hbGFpc2UgYW5kIG91dHJpZ2h0IHZpb2xlbmNlLiBCeSB0dXJuaW5nIHRoZWlyIGJhY2tzIG9uIHNvY2lldHksIHRoZSBlbGl0ZXMgb2YgQmlvU2hvY2sgYWxzbyBsb3N0IHRvdWNoIHdpdGggdGhlaXIgaHVtYW5pdHkuPC9wPgoKCgo8cD5UaGUgb3RoZXIgd29yayBvZiBzY2ktZmkgaXMgPGVtPjxhIGhyZWY9Imh0dHBzOi8vc3RhZ2luZy5maWxtc3Rvcmllcy5jby51ay9mZWF0dXJlcy9uZWlsbC1ibG9ta2FtcC1yZXZpc2l0ZWQtZWx5c2l1bS8iPkVseXNpdW08L2E+PC9lbT4sIHdyaXR0ZW4gYW5kIGRpcmVjdGVkIGJ5IDxlbT5EaXN0cmljdCA5PC9lbT7igJlzIE5laWxsIEJsb21rYW1wLiBJdCB3YXNu4oCZdCBhIGh1Z2UgaGl0IGF0IHRoZSB0aW1lLCBhbmQgY3JpdGljcyBzZWVtZWQgdG8gcmVnYXJkIGl0IGFzIGEgc3RlcCBiYWNrd2FyZHMgZm9sbG93aW5nIHRoZSBCZXN0IFBpY3R1cmUtbm9taW5hdGVkIDxlbT48YSBocmVmPSJodHRwczovL3N0YWdpbmcuZmlsbXN0b3JpZXMuY28udWsvZmVhdHVyZXMvbmVpbGwtYmxvbWthbXAtcmV2aXNpdGVkLWRpc3RyaWN0LTkvIj5EaXN0cmljdCA5PC9hPi48L2VtPiBJcm9uaWNhbGx5LCB0aGF0IDIwMTMgZmlsbSwgZmxhd2VkIHRob3VnaCBpdCBtaWdodCBiZSwgZGVzY3JpYmVzIHRoZSBiaWxsaW9uYWlyZSBmYW50YXN5IGJldHRlciB0aGFuIGp1c3QgYWJvdXQgYW55IG90aGVyIGJlZm9yZSBvciBzaW5jZSAmIzgyMTE7IGFuZCBsYXlzIG91dCB0aGUgZmxhd3MgaW4gdGhhdCBmYW50YXN5LjwvcD4KCgoKPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSI+PGltZyBzcmM9Imh0dHBzOi8vc3BhY2VzLmZpbG1zdG9yaWVzLmNvLnVrL3VwbG9hZHMvMjAyMy8xMi9lbHlzaXVtLTIuanBnIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTYwNjczIi8+PGZpZ2NhcHRpb24gY2xhc3M9IndwLWVsZW1lbnQtY2FwdGlvbiI+QSB1dG9waWEgZm9yIHRoZSByaWNoIGluIEVseXNpdW0uIENyZWRpdDogU29ueS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+CgoKCjxwPkluIHRoZSBuZWFyIGZ1dHVyZSwgPGVtPkVseXNpdW3igJlzIDwvZW0+c3RvcnkgZ29lcywgdGhlIGdhcCBiZXR3ZWVuIHRoZSByaWNoIGFuZCBwb29yIGhhcyBob2xsb3dlZCBvdXQgdGhlIG1pZGRsZSBjbGFzcy4gVGhlIGVudGlyZSBnbG9iZSBpcyBub3cgcHJldHR5IG11Y2ggbGlrZSBjb3VudHJpZXMgYXMgZ2VvZ3JhcGhpY2FsbHkgZmFyIGFwYXJ0IGFzIE1leGljbywgTmlnZXJpYSBvciBJbmRpYSBhcmU6IHBvdmVydHkgaXMgZW5kZW1pYywgbGVhdmluZyB3ZWFsdGggY29uY2VudHJhdGVkIGluIHRoZSBoYW5kcyBvZiBhIHRpbnkgY2x1Yi4gQXMgYSByZXN1bHQsIEVhcnRoIGhhcyBiZWVuIGxlZnQgYSBjcmltZS1yaWRkZW4sIHNsdW0tZmlsbGVkIHdhc3RlbGFuZDsgdGhlIHJpY2gsIG1lYW53aGlsZSwgaGF2ZSBkZWNhbXBlZCB0byBhIHZhc3Qgc3BhY2Ugc3RhdGlvbiB3aGljaCBsb29rcyBsaWtlIEJldmVybHkgSGlsbHMgZXhwYW5kZWQgdG8gdGhlIGhvcml6b24uJm5ic3A7PC9wPgoKCgo8cD5GaXR0aW5nbHksIHRoaXMgc3BhY2Ugc3RhdGlvbiwgdGhlIEVseXNpdW0gb2YgdGhlIHRpdGxlLCBpcyBtb2RlbGxlZCBvbiBhIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnZ1bHR1cmUuY29tLzIwMTMvMDgvc3lkLW1lYWQtZGVzaWduLWJsYWRlLXJ1bm5lci1hbGllbnMtZWx5c2l1bS5odG1sIj5mYW1vdXMgZGVzaWduPC9hPiBjcmVhdGVkIGJ5IGZ1dHVyaXN0IFN5ZCBNZWFkIGluIDE5ODAuIEluIHNob3J0LCBpdOKAmXMgYSB2aXNpb24gb2YgdGhlIGZ1dHVyZSB0aGF0IGhhcyBiZWVuIGFkb3B0ZWQgYnkgYmlsbGlvbmFpcmVzLiBJdOKAmXMgYSBtb3JlIHBlcmZlY3QgbWV0YXBob3IgdGhhbiBwZXJoYXBzIEJsb21rYW1wIGhpbXNlbGYgcmVhbGlzZWQgYXQgdGhlIHRpbWU6IGEgdmlzaW9uIG9mIGEgZnV0dXJlIHdoZXJlIGFsbCBvZiBodW1hbml0eSBpcyBsaWZ0ZWQgYnkgc2NpZW50aWZpYyBwcm9jZXNzIGhhcyBpbnN0ZWFkIGJlY29tZSBhIHBsYXlncm91bmQgZm9yIHRoZSByaWNoLjwvcD4KCgoKPHA+T24gRWx5c2l1bSwgcmVzaWRlbnRzIGxpdmUgaW4gZ2lsZGVkIGx1eHVyeS4gVGhleSBhbG9uZSBoYXZlIHRoZSB0ZWNobm9sb2d5IHdoaWNoIGNhbiBjdXJlIGp1c3QgYWJvdXQgYW55IGlsbG5lc3MgJiM4MjExOyBhcyB3ZSBzZWUgbGF0ZXIgaW4gdGhlIGZpbG0sIGl0IGNhbiBldmVuIGZpeCBmYXRhbC1sb29raW5nIGhlYWQgd291bmRzLiBSYXRoZXIgdGhhbiBzaGFyZSB0aGlzIHRlY2ggd2l0aCB0aGUgcmVzdCBvZiB0aGUgOTkgcGVyY2VudCwgdGhlIHdlYWx0aHkga2VlcCBpdCBpbiBFYXJ0aOKAmXMgb3JiaXQsIGZhciBvdXQgb2YgcmVhY2guJm5ic3A7PC9wPgoKCgo8cD5MZWQgYnkgTWF0dCBEYW1vbuKAmXMgdGVybWluYWxseSBpbGwgZmFjdG9yeSB3b3JrZXIgcHJvdGFnb25pc3QsIE1heCwgYSBzbWFsbCBiYW5kIG9mIGZpZ2h0ZXJzIGhlYWRzIHRvIEVseXNpdW0gdG8gaGFjayBpbnRvIGl0cyBtZWRpY2FsIGZhY2lsaXRpZXMgJiM4MjExOyBieSBmb3JjZSBpZiBuZWNlc3NhcnkuPC9wPgoKCgo8cD5PZiBjb3Vyc2UsIHRoZSBub3Rpb24gb2YgdGhlIHJpY2ggbGl2aW5nIGluIGEgdmFzdCBzcGFjZSBzdGF0aW9uIGlzIGFzIGZhbmNpZnVsIGFzIDxlbT5CaW9TaG9ja+KAmTwvZW0+cyBjaXR5IHVuZGVyIHRoZSBzZWEsIGFuZCBkZWxpYmVyYXRlbHkgc28uIEJ1dCB3aGlsZSB0ZWNobm9sb2dpY2FsbHkgaXTigJlzIGZhci1mZXRjaGVkLCBpdOKAmXMgaGFyZGx5IGxlc3Mgb2YgYSBmYW50YXN5IHRoYW4gdGhlIGlkZWFzIHRoZSBiaWxsaW9uYWlyZXMgaGF2ZSBpbiBSdXNoa29mZiDigJlzIGJvb2suIEludGVyZXN0aW5nbHksIFJ1c2hrb2ZmIGFycml2ZXMgYXQgdGhlIHNhbWUgY29uY2x1c2lvbiB0aGF0IEJsb21rYW1wIGRvZXMgaW4gPGVtPkVseXNpdW08L2VtPjogbm8gbWF0dGVyIGhvdyBoYXJkIGJpbGxpb25haXJlcyB0cnkgdG8gY3JlYXRlIGEgZmlyZXdhbGwgYmV0d2VlbiB0aGVtc2VsdmVzIGFuZCB0aGUgcmVzdCBvZiB1cywgc29tZXRoaW5nIHdpbGwgaW5ldml0YWJseSBnbyB3cm9uZy4mbmJzcDs8L3A+CgoKCjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxpbWcgc3JjPSJodHRwczovL3NwYWNlcy5maWxtc3Rvcmllcy5jby51ay91cGxvYWRzLzIwMjAvMDgvQmlvc2hvY2stMy5qcGciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtNzk0MzMiLz48ZmlnY2FwdGlvbiBjbGFzcz0id3AtZWxlbWVudC1jYXB0aW9uIj5BIGNpdHkgYmVuZWF0aCB0aGUgc2VhIGluIEJpb1Nob2NrLiBDcmVkaXQ6IDJLLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT4KCgoKPHA+SW4gYSBtZWV0aW5nIHdpdGggYSBoYW5kZnVsIG9mIHRoZXNlIGVsaXRlcywgUnVzaGtvZmYgd2FzIG9uY2UgcXVpenplZCBuZXJ2b3VzbHkgYWJvdXQgY2VydGFpbiBzY2VuYXJpb3MgdGhhdCBtaWdodCBvY2N1ciBpbiB0aGUgd2FrZSBvZiBzb21lIHNvcnQgb2YgY29sbGFwc2UuIEhvdyBjb3VsZCB0aGUgd2VhbHRoeSBwcmV2ZW50IHRoZWlyIG93biBib2R5Z3VhcmRzIGZyb20gdHVybmluZyBvbiB0aGVtPyBJZiBtb25leSBjZWFzZXMgdG8gaGF2ZSB2YWx1ZSwgaG93IGNhbiB0aGV5IGluZHVjZSB0aGVpciBwcml2YXRlIGFybWllcyB0byBkbyBhcyB0aGV54oCZcmUgdG9sZD8gV2hhdCB3b3VsZCBzdG9wIHNtYWxsIGFybWllcyBvZiBodW5ncnksIGRlc3BlcmF0ZSBwb29yIHBlb3BsZSBmcm9tIHN0b3JtaW5nIHRoZWlyIGV4cGVuc2l2ZSBidW5rZXJzPzwvcD4KCgoKPHA+UnVzaGtvZmYgZ2VudGx5IHN1Z2dlc3RlZCB0aGF0LCB0byBhdm9pZCB0aG9zZSBzaXR1YXRpb25zIGZyb20gaGFwcGVuaW5nLCBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gdGhpbmsgYWJvdXQgaG93IHRoZXkgY291bGQgZW5zdXJlIHRoYXQgdGhlIGNvbGxhcHNlIGRvZXNu4oCZdCBoYXBwZW4gaW4gdGhlIGZpcnN0IHBsYWNlLiBBdCB3b3JzdCwgdGhleSBtaWdodCBiZSBhZHZpc2VkIHRvIGJlIG5pY2VyIHRvIHRoZWlyIHVuZGVybGluZ3MgdG9kYXkgc28gdGhhdCB0aGV5IGFyZW7igJl0IHRlbXB0ZWQgdG8gY3V0IHRoZWlyIG1hc3RlcnPigJkgdGhyb2F0cyBpbiB0aGVpciBzbGVlcCBpZiB0aGUgYXBvY2FseXBzZSBkb2VzIGhhcHBlbi4mbmJzcDs8L3A+CgoKCjxwPkluIDxlbT5FbHlzaXVtPC9lbT4sIHRoZSBwb29yIHN0b3JtIHRoZSBiYXJyaWNhZGVzLiBUaGV5IGdldCB0aGUgbWVkaWNhbCBhaWQgdGhleSBuZWVkLCBhbmQgdGhlIHJpY2ggYXJlIGxlZnQgdG8gcnVuIGZvciB0aGUgaGlsbHMsIHNjcmVhbWluZy4gSXTigJlzIGEgbGVzc29uIHRoZSBiaWxsaW9uYWlyZXMgaW4gdGhlIHJlYWwgd29ybGQgbWlnaHQgd2FudCB0byBhYnNvcmI6IHRoYXQgd2hpY2ggaXNu4oCZdCBkaXN0cmlidXRlZCB3aWxsaW5nbHkgd2lsbCwgb25lIGRheSwgYWxtb3N0IGNlcnRhaW5seSBiZSB0YWtlbi4gVW50aWwgc29tZW9uZSBkb2VzIHNvbWV0aGluZyBhYm91dCB0aGUgc3VwZXIgcmljaCwgd2XigJlsbCBhbHdheXMgc3RydWdnbGUgdG8gZW52aXNpb24gYSBicmlnaHRlciBmdXR1cmUgZm9yIG91ciBzcGVjaWVzLiBJbnN0ZWFkLCB3ZSBjYW4gb25seSBsb29rIGFoZWFkIHRvIHRoZSBpbmV2aXRhYmxlIGNvbGxhcHNlLCBhbmQgd2hhdCB3ZeKAmWxsIGRvIHdoZW4gaXQgaGFwcGVucy4mbmJzcDs8L3A+CgoKCjxwPlRob3NlIHdobyB0aGluayB0aGV5IGNhbiByZXRyZWF0IGludG8gYnVua2VycyB3aXRoIHRoZWlyIHdlYWx0aCBzaG91bGQgcHJvYmFibHkgcmVhZCBFZGdhciBBbGxhbiBQb2XigJlzIDxlbT5UaGUgTWFzcXVlIE9mIFRoZSBSZWQgRGVhdGg8L2VtPi4gV2hpbGUgdGhlIHJlc3Qgb2YgdGhlIGNvdW50cnkgcmVlbHMgZnJvbSBhIGRlYWRseSBwYW5kZW1pYywgYSBwcmluY2UgZ2F0aGVycyB1cCBoaXMgbm9ibGUgZnJpZW5kcyBhbmQgcGFydGllcyBpbiB0aGUgd2FybXRoIG9mIGhpcyBjYXN0bGUuIE5lZWRsZXNzIHRvIHNheSwgdGhpbmdzIGRvbuKAmXQgdHVybiBvdXQgdG9vIHdlbGwgZm9yIHRoYXQgcHJpbmNlLjwvcD4KCgoKCgoKJiM4MjEyOwo8UD4KPHN0cm9uZz5UaGFuayB5b3UgZm9yIHZpc2l0aW5nIcKgSWYgeW91JiM4MjE3O2QgbGlrZSB0byBzdXBwb3J0IG91ciBhdHRlbXB0cyB0byBtYWtlIGEgbm9uLWNsaWNrYmFpdHkgbW92aWUgd2Vic2l0ZTo8L3N0cm9uZz4KPFA+CjxQPgo8ZW0+Rm9sbG93IEZpbG0gU3RvcmllcyBvbiBUd2l0dGVywqA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2ZpbG1zdG9yaWVzcG9kIj5oZXJlPC9hPiwgYW5kIG9uIEZhY2Vib29rwqA8YSBocmVmPSJodHRwczovL2ZhY2Vib29rLmNvbS9maWxtc3Rvcmllc29ubGluZSI+aGVyZTwvYT4uPC9lbT4KPFA+CjxlbT5CdXkgb3VyIEZpbG0gU3RvcmllcyBhbmQgRmlsbSBKdW5pb3IgcHJpbnQgbWFnYXppbmVzwqA8YSBocmVmPSJodHRwczovL2ZpbG0tc3Rvcmllcy5teXNob3BpZnkuY29tLyI+aGVyZTwvYT4uPC9lbT4KPFA+CjxlbT5CZWNvbWUgYSBQYXRyb24gPGEgaHJlZj0iaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vc2ltb25icmV3Ij5oZXJlPC9hPi48L2VtPgo8UD4KPGRpdiBpZD0iY29sbGVjdGlvbi1jb21wb25lbnQtMTU3MDA1MTE2NjgwNyI+PC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLyo8IVtDREFUQVsqLyAoZnVuY3Rpb24gKCkgeyB2YXIgc2NyaXB0VVJMID0gJ2h0dHBzOi8vc2Rrcy5zaG9waWZ5Y2RuLmNvbS9idXktYnV0dG9uL2xhdGVzdC9idXktYnV0dG9uLXN0b3JlZnJvbnQubWluLmpzJzsgaWYgKHdpbmRvdy5TaG9waWZ5QnV5KSB7IGlmICh3aW5kb3cuU2hvcGlmeUJ1eS5VSSkgeyBTaG9waWZ5QnV5SW5pdCgpOyB9IGVsc2UgeyBsb2FkU2NyaXB0KCk7IH0gfSBlbHNlIHsgbG9hZFNjcmlwdCgpOyB9IGZ1bmN0aW9uIGxvYWRTY3JpcHQoKSB7IHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgc2NyaXB0LmFzeW5jID0gdHJ1ZTsgc2NyaXB0LnNyYyA9IHNjcmlwdFVSTDsgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsgc2NyaXB0Lm9ubG9hZCA9IFNob3BpZnlCdXlJbml0OyB9IGZ1bmN0aW9uIFNob3BpZnlCdXlJbml0KCkgeyB2YXIgY2xpZW50ID0gU2hvcGlmeUJ1eS5idWlsZENsaWVudCh7IGRvbWFpbjogJ2ZpbG0tc3Rvcmllcy5teXNob3BpZnkuY29tJywgc3RvcmVmcm9udEFjY2Vzc1Rva2VuOiAnYzdhYWVjMmFlNzk0OTIzNjZmMDRlNjY3NjI4ODlmNzMnLCB9KTsgU2hvcGlmeUJ1eS5VSS5vblJlYWR5KGNsaWVudCkudGhlbihmdW5jdGlvbiAodWkpIHsgdWkuY3JlYXRlQ29tcG9uZW50KCdjb2xsZWN0aW9uJywgeyBpZDogJzE1MDg2OTExNDkxNScsIG5vZGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsZWN0aW9uLWNvbXBvbmVudC0xNTcwMDUxMTY2ODA3JyksIG1vbmV5Rm9ybWF0OiAnJUMyJUEzJTdCJTdCYW1vdW50JTdEJTdEJywgb3B0aW9uczogeyAicHJvZHVjdCI6IHsgInN0eWxlcyI6IHsgInByb2R1Y3QiOiB7ICJAbWVkaWEgKG1pbi13aWR0aDogNjAxcHgpIjogeyAibWF4LXdpZHRoIjogImNhbGMoMjUlIC0gMjBweCkiLCAibWFyZ2luLWxlZnQiOiAiMjBweCIsICJtYXJnaW4tYm90dG9tIjogIjUwcHgiLCAid2lkdGgiOiAiY2FsYygyNSUgLSAyMHB4KSIgfSwgImltZyI6IHsgImhlaWdodCI6ICJjYWxjKDEwMCUgLSAxNXB4KSIsICJwb3NpdGlvbiI6ICJhYnNvbHV0ZSIsICJsZWZ0IjogIjAiLCAicmlnaHQiOiAiMCIsICJ0b3AiOiAiMCIgfSwgImltZ1dyYXBwZXIiOiB7ICJwYWRkaW5nLXRvcCI6ICJjYWxjKDc1JSArIDE1cHgpIiwgInBvc2l0aW9uIjogInJlbGF0aXZlIiwgImhlaWdodCI6ICIwIiB9IH0sICJidXR0b24iOiB7ICJmb250LXNpemUiOiAiMTZweCIsICJwYWRkaW5nLXRvcCI6ICIxNnB4IiwgInBhZGRpbmctYm90dG9tIjogIjE2cHgiIH0sICJxdWFudGl0eUlucHV0IjogeyAiZm9udC1zaXplIjogIjE2cHgiLCAicGFkZGluZy10b3AiOiAiMTZweCIsICJwYWRkaW5nLWJvdHRvbSI6ICIxNnB4IiB9IH0sICJ0ZXh0IjogeyAiYnV0dG9uIjogIkFkZCB0byBjYXJ0IiB9IH0sICJwcm9kdWN0U2V0IjogeyAic3R5bGVzIjogeyAicHJvZHVjdHMiOiB7ICJAbWVkaWEgKG1pbi13aWR0aDogNjAxcHgpIjogeyAibWFyZ2luLWxlZnQiOiAiLTIwcHgiIH0gfSB9IH0sICJtb2RhbFByb2R1Y3QiOiB7ICJjb250ZW50cyI6IHsgImltZyI6IGZhbHNlLCAiaW1nV2l0aENhcm91c2VsIjogdHJ1ZSwgImJ1dHRvbiI6IGZhbHNlLCAiYnV0dG9uV2l0aFF1YW50aXR5IjogdHJ1ZSB9LCAic3R5bGVzIjogeyAicHJvZHVjdCI6IHsgIkBtZWRpYSAobWluLXdpZHRoOiA2MDFweCkiOiB7ICJtYXgtd2lkdGgiOiAiMTAwJSIsICJtYXJnaW4tbGVmdCI6ICIwcHgiLCAibWFyZ2luLWJvdHRvbSI6ICIwcHgiIH0gfSwgImJ1dHRvbiI6IHsgImZvbnQtc2l6ZSI6ICIxNnB4IiwgInBhZGRpbmctdG9wIjogIjE2cHgiLCAicGFkZGluZy1ib3R0b20iOiAiMTZweCIgfSwgInF1YW50aXR5SW5wdXQiOiB7ICJmb250LXNpemUiOiAiMTZweCIsICJwYWRkaW5nLXRvcCI6ICIxNnB4IiwgInBhZGRpbmctYm90dG9tIjogIjE2cHgiIH0gfSB9LCAiY2FydCI6IHsgInN0eWxlcyI6IHsgImJ1dHRvbiI6IHsgImZvbnQtc2l6ZSI6ICIxNnB4IiwgInBhZGRpbmctdG9wIjogIjE2cHgiLCAicGFkZGluZy1ib3R0b20iOiAiMTZweCIgfSwgInRpdGxlIjogeyAiY29sb3IiOiAiIzRjNGM0YyIgfSwgImhlYWRlciI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJsaW5lSXRlbXMiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiB9LCAic3VidG90YWxUZXh0IjogeyAiY29sb3IiOiAiIzRjNGM0YyIgfSwgInN1YnRvdGFsIjogeyAiY29sb3IiOiAiIzRjNGM0YyIgfSwgIm5vdGljZSI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJjdXJyZW5jeSI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJjbG9zZSI6IHsgImNvbG9yIjogIiM0YzRjNGMiLCAiOmhvdmVyIjogeyAiY29sb3IiOiAiIzRjNGM0YyIgfSB9LCAiZW1wdHkiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiB9LCAibm90ZURlc2NyaXB0aW9uIjogeyAiY29sb3IiOiAiIzRjNGM0YyIgfSwgImRpc2NvdW50VGV4dCI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJkaXNjb3VudEljb24iOiB7ICJmaWxsIjogIiM0YzRjNGMiIH0sICJkaXNjb3VudEFtb3VudCI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0gfSB9LCAidG9nZ2xlIjogeyAic3R5bGVzIjogeyAiY291bnQiOiB7ICJmb250LXNpemUiOiAiMTZweCIgfSB9IH0sICJsaW5lSXRlbSI6IHsgInN0eWxlcyI6IHsgInZhcmlhbnRUaXRsZSI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJ0aXRsZSI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJwcmljZSI6IHsgImNvbG9yIjogIiM0YzRjNGMiIH0sICJmdWxsUHJpY2UiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiB9LCAiZGlzY291bnQiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiB9LCAiZGlzY291bnRJY29uIjogeyAiZmlsbCI6ICIjNGM0YzRjIiB9LCAicXVhbnRpdHkiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiB9LCAicXVhbnRpdHlJbmNyZW1lbnQiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiwgImJvcmRlci1jb2xvciI6ICIjNGM0YzRjIiB9LCAicXVhbnRpdHlEZWNyZW1lbnQiOiB7ICJjb2xvciI6ICIjNGM0YzRjIiwgImJvcmRlci1jb2xvciI6ICIjNGM0YzRjIiB9LCAicXVhbnRpdHlJbnB1dCI6IHsgImNvbG9yIjogIiM0YzRjNGMiLCAiYm9yZGVyLWNvbG9yIjogIiM0YzRjNGMiIH0gfSB9IH0sIH0pOyB9KTsgfSB9KSgpOyAvKl1dPiovCjwvc2NyaXB0PgoKCgoK