A/MNCldcrFFjAAAAAAAAAAAEAAAAQAAAAHPFAgAAZAAAZAEAZAIAZAMAZwQAWgAAZAQAZAUAbAEAWgEAZAQAZAUAbAIAWgMAZAQAZAUAbAQAWgMAZAQAZAYAbAMAbQUAWgUAAWQEAGQHAGwGAG0HAFoHAAFkCABaCABkCQBaCQBkCgBaCgBkCwBaCwBkDABaDABpFQBlCABlCABkBQBmAwBkDQA2ZQgAZQgAZAUAZgMAZA4ANmUIAGUIAGQFAGYDAGQPADZlCABlCABkBQBmAwBkEAA2ZQgAZQgAZAUAZgMAZBEANmUIAGUIAGQFAGYDAGQSADZlCABlCABkBQBmAwBkEwA2ZQgAZQgAZAUAZgMAZBQANmUIAGUIAGQFAGYDAGQVADZlCABlCABkBQBmAwBkFgA2ZQgAZQgAZAUAZgMAZBcANmUIAGUIAGQFAGYDAGQYADZkQQBkDAA2ZQkAZQkAZAUAZgMAZBkANmUJAGUJAGQFAGYDAGQaADZlCQBkBQBkGwBmAwBkHAA2ZQkAZAUAZBsAZgMAZB0ANmUJAGQFAGQFAGYDAGQbADZlCQBlCQBkBQBmAwBkHgA2ZQoAZQkAZB8AZgMAZB8ANmQFAGUJAGQfAGYDAGQgADZaDgBpGABkDQBkIQA2ZA0AZCIANmQOAGQjADZkDgBkJAA2ZA8AZCUANmQPAGQmADZkEABkJwA2ZBAAZCgANmQRAGQpADZkEQBkKgA2ZBIAZCsANmQSAGQsADZkEwBkLQA2ZBMAZC4ANmQUAGQvADZkFABkMAA2ZBUAZDEANmQVAGQyADZkFgBkMwA2ZBYAZDQANmQ1AGQ2ADZkHABkNwA2ZDgAZDkANmQMAGQ6ADZaDwBpAwBkOwBkGgA2ZDwAZBkANmQFAGQMADZaEABkBQBkBQBkBQBkPQCEAwBaEQBkPgCEAABaEgBkPwCEAABaEwBkAABkQgBkQACEAACDAABZWhQAZAUAUyhDAAAAdAcAAABDaGFyc2V0dAkAAABhZGRfYWxpYXN0CwAAAGFkZF9jaGFyc2V0dAkAAABhZGRfY29kZWNp/////04oAQAAAHQGAAAAZXJyb3JzKAEAAAB0DgAAAGVuY29kZV83b3I4Yml0aQEAAABpAgAAAGkDAAAAaQcAAABzCAAAAHVzLWFzY2lpcwoAAABpc28tODg1OS0xcwoAAABpc28tODg1OS0ycwoAAABpc28tODg1OS0zcwoAAABpc28tODg1OS00cwoAAABpc28tODg1OS05cwsAAABpc28tODg1OS0xMHMLAAAAaXNvLTg4NTktMTNzCwAAAGlzby04ODU5LTE0cwsAAABpc28tODg1OS0xNXMLAAAAaXNvLTg4NTktMTZzDAAAAHdpbmRvd3MtMTI1MnQGAAAAdmlzY2lpdAQAAABiaWc1dAYAAABnYjIzMTJzCwAAAGlzby0yMDIyLWpwcwYAAABldWMtanB0CQAAAHNoaWZ0X2ppc3MGAAAAa29pOC1ycwUAAAB1dGYtOHQEAAAAOGJpdHQHAAAAbGF0aW5fMXMHAAAAbGF0aW4tMXQHAAAAbGF0aW5fMnMHAAAAbGF0aW4tMnQHAAAAbGF0aW5fM3MHAAAAbGF0aW4tM3QHAAAAbGF0aW5fNHMHAAAAbGF0aW4tNHQHAAAAbGF0aW5fNXMHAAAAbGF0aW4tNXQHAAAAbGF0aW5fNnMHAAAAbGF0aW4tNnQHAAAAbGF0aW5fN3MHAAAAbGF0aW4tN3QHAAAAbGF0aW5fOHMHAAAAbGF0aW4tOHQHAAAAbGF0aW5fOXMHAAAAbGF0aW4tOXQIAAAAbGF0aW5fMTBzCAAAAGxhdGluLTEwcw4AAABrc19jXzU2MDEtMTk4N3QFAAAAY3A5NDl0BgAAAGV1Y19qcHMGAAAAZXVjLWtydAYAAABldWNfa3J0BQAAAGFzY2lpdAwAAABldWNnYjIzMTJfY250BwAAAGJpZzVfdHdjBAAAAAQAAAADAAAAQwAAAHMyAAAAfAIAdAAAawIAchsAdAEAZAEAgwEAggEAbgAAfAEAfAIAfAMAZgMAdAIAfAAAPGQCAFMoAwAAAHM+BAAAQWRkIGNoYXJhY3RlciBzZXQgcHJvcGVydGllcyB0byB0aGUgZ2xvYmFsIHJlZ2lzdHJ5LgoKICAgIGNoYXJzZXQgaXMgdGhlIGlucHV0IGNoYXJhY3RlciBzZXQsIGFuZCBtdXN0IGJlIHRoZSBjYW5vbmljYWwgbmFtZSBvZiBhCiAgICBjaGFyYWN0ZXIgc2V0LgoKICAgIE9wdGlvbmFsIGhlYWRlcl9lbmMgYW5kIGJvZHlfZW5jIGlzIGVpdGhlciBDaGFyc2V0LlFQIGZvcgogICAgcXVvdGVkLXByaW50YWJsZSwgQ2hhcnNldC5CQVNFNjQgZm9yIGJhc2U2NCBlbmNvZGluZywgQ2hhcnNldC5TSE9SVEVTVCBmb3IKICAgIHRoZSBzaG9ydGVzdCBvZiBxcCBvciBiYXNlNjQgZW5jb2RpbmcsIG9yIE5vbmUgZm9yIG5vIGVuY29kaW5nLiAgU0hPUlRFU1QKICAgIGlzIG9ubHkgdmFsaWQgZm9yIGhlYWRlcl9lbmMuICBJdCBkZXNjcmliZXMgaG93IG1lc3NhZ2UgaGVhZGVycyBhbmQKICAgIG1lc3NhZ2UgYm9kaWVzIGluIHRoZSBpbnB1dCBjaGFyc2V0IGFyZSB0byBiZSBlbmNvZGVkLiAgRGVmYXVsdCBpcyBubwogICAgZW5jb2RpbmcuCgogICAgT3B0aW9uYWwgb3V0cHV0X2NoYXJzZXQgaXMgdGhlIGNoYXJhY3RlciBzZXQgdGhhdCB0aGUgb3V0cHV0IHNob3VsZCBiZQogICAgaW4uICBDb252ZXJzaW9ucyB3aWxsIHByb2NlZWQgZnJvbSBpbnB1dCBjaGFyc2V0LCB0byBVbmljb2RlLCB0byB0aGUKICAgIG91dHB1dCBjaGFyc2V0IHdoZW4gdGhlIG1ldGhvZCBDaGFyc2V0LmNvbnZlcnQoKSBpcyBjYWxsZWQuICBUaGUgZGVmYXVsdAogICAgaXMgdG8gb3V0cHV0IGluIHRoZSBzYW1lIGNoYXJhY3RlciBzZXQgYXMgdGhlIGlucHV0LgoKICAgIEJvdGggaW5wdXRfY2hhcnNldCBhbmQgb3V0cHV0X2NoYXJzZXQgbXVzdCBoYXZlIFVuaWNvZGUgY29kZWMgZW50cmllcyBpbgogICAgdGhlIG1vZHVsZSdzIGNoYXJzZXQtdG8tY29kZWMgbWFwcGluZzsgdXNlIGFkZF9jb2RlYyhjaGFyc2V0LCBjb2RlY25hbWUpCiAgICB0byBhZGQgY29kZWNzIHRoZSBtb2R1bGUgZG9lcyBub3Qga25vdyBhYm91dC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSdzCiAgICBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgcyEAAABTSE9SVEVTVCBub3QgYWxsb3dlZCBmb3IgYm9keV9lbmNOKAMAAAB0CAAAAFNIT1JURVNUdAoAAABWYWx1ZUVycm9ydAgAAABDSEFSU0VUUygEAAAAdAcAAABjaGFyc2V0dAoAAABoZWFkZXJfZW5jdAgAAABib2R5X2VuY3QOAAAAb3V0cHV0X2NoYXJzZXQoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9lbWFpbC9jaGFyc2V0LnB5UgIAAABsAAAAcwYAAAAAFwwBDwFjAgAAAAIAAAADAAAAQwAAAHMOAAAAfAEAdAAAfAAAPGQBAFMoAgAAAHOPAAAAQWRkIGEgY2hhcmFjdGVyIHNldCBhbGlhcy4KCiAgICBhbGlhcyBpcyB0aGUgYWxpYXMgbmFtZSwgZS5nLiBsYXRpbi0xCiAgICBjYW5vbmljYWwgaXMgdGhlIGNoYXJhY3RlciBzZXQncyBjYW5vbmljYWwgbmFtZSwgZS5nLiBpc28tODg1OS0xCiAgICBOKAEAAAB0BwAAAEFMSUFTRVMoAgAAAHQFAAAAYWxpYXN0CQAAAGNhbm9uaWNhbCgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2VtYWlsL2NoYXJzZXQucHlSAQAAAIgAAABzAgAAAAAGYwIAAAACAAAAAwAAAEMAAABzDgAAAHwBAHQAAHwAADxkAQBTKAIAAABzJAEAAEFkZCBhIGNvZGVjIHRoYXQgbWFwIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIGNoYXJzZXQgdG8vZnJvbSBVbmljb2RlLgoKICAgIGNoYXJzZXQgaXMgdGhlIGNhbm9uaWNhbCBuYW1lIG9mIGEgY2hhcmFjdGVyIHNldC4gIGNvZGVjbmFtZSBpcyB0aGUgbmFtZQogICAgb2YgYSBQeXRob24gY29kZWMsIGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSB1bmljb2RlKCkKICAgIGJ1aWx0LWluLCBvciB0byB0aGUgZW5jb2RlKCkgbWV0aG9kIG9mIGEgVW5pY29kZSBzdHJpbmcuCiAgICBOKAEAAAB0CQAAAENPREVDX01BUCgCAAAAUh4AAAB0CQAAAGNvZGVjbmFtZSgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2VtYWlsL2NoYXJzZXQucHlSAwAAAJEAAABzAgAAAAAHYwAAAAAAAAAAAgAAAEIAAABzjAAAAGUAAFoBAGQAAFoCAGUDAGQBAIQBAFoEAGQCAIQAAFoFAGUFAFoGAGQDAIQAAFoHAGQEAIQAAFoIAGQFAIQAAFoJAGQGAIQAAFoKAGQHAIQAAFoLAGUMAGQIAIQBAFoNAGQJAIQAAFoOAGQKAIQAAFoPAGUQAGQLAIQBAFoRAGUMAGQMAIQBAFoSAFJTKA0AAABzPwkAAE1hcCBjaGFyYWN0ZXIgc2V0cyB0byB0aGVpciBlbWFpbCBwcm9wZXJ0aWVzLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVpcmVtZW50cyBpbXBvc2VkIG9uIGVtYWlsCiAgICBmb3IgYSBzcGVjaWZpYyBjaGFyYWN0ZXIgc2V0LiAgSXQgYWxzbyBwcm92aWRlcyBjb252ZW5pZW5jZSByb3V0aW5lcyBmb3IKICAgIGNvbnZlcnRpbmcgYmV0d2VlbiBjaGFyYWN0ZXIgc2V0cywgZ2l2ZW4gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUKICAgIGFwcGxpY2FibGUgY29kZWNzLiAgR2l2ZW4gYSBjaGFyYWN0ZXIgc2V0LCBpdCB3aWxsIGRvIGl0cyBiZXN0IHRvIHByb3ZpZGUKICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhhdCBjaGFyYWN0ZXIgc2V0IGluIGFuIGVtYWlsIGluIGFuCiAgICBSRkMtY29tcGxpYW50IHdheS4KCiAgICBDZXJ0YWluIGNoYXJhY3RlciBzZXRzIG11c3QgYmUgZW5jb2RlZCB3aXRoIHF1b3RlZC1wcmludGFibGUgb3IgYmFzZTY0CiAgICB3aGVuIHVzZWQgaW4gZW1haWwgaGVhZGVycyBvciBib2RpZXMuICBDZXJ0YWluIGNoYXJhY3RlciBzZXRzIG11c3QgYmUKICAgIGNvbnZlcnRlZCBvdXRyaWdodCwgYW5kIGFyZSBub3QgYWxsb3dlZCBpbiBlbWFpbC4gIEluc3RhbmNlcyBvZiB0aGlzCiAgICBtb2R1bGUgZXhwb3NlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYWJvdXQgYSBjaGFyYWN0ZXIgc2V0OgoKICAgIGlucHV0X2NoYXJzZXQ6IFRoZSBpbml0aWFsIGNoYXJhY3RlciBzZXQgc3BlY2lmaWVkLiAgQ29tbW9uIGFsaWFzZXMKICAgICAgICAgICAgICAgICAgIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIgYG9mZmljaWFsJyBlbWFpbCBuYW1lcyAoZS5nLiBsYXRpbl8xCiAgICAgICAgICAgICAgICAgICBpcyBjb252ZXJ0ZWQgdG8gaXNvLTg4NTktMSkuICBEZWZhdWx0cyB0byA3LWJpdCB1cy1hc2NpaS4KCiAgICBoZWFkZXJfZW5jb2Rpbmc6IElmIHRoZSBjaGFyYWN0ZXIgc2V0IG11c3QgYmUgZW5jb2RlZCBiZWZvcmUgaXQgY2FuIGJlCiAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW4gYW4gZW1haWwgaGVhZGVyLCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIHNldCB0bwogICAgICAgICAgICAgICAgICAgICBDaGFyc2V0LlFQIChmb3IgcXVvdGVkLXByaW50YWJsZSksIENoYXJzZXQuQkFTRTY0IChmb3IKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0IGVuY29kaW5nKSwgb3IgQ2hhcnNldC5TSE9SVEVTVCBmb3IgdGhlIHNob3J0ZXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIFFQIG9yIEJBU0U2NCBlbmNvZGluZy4gIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBOb25lLgoKICAgIGJvZHlfZW5jb2Rpbmc6IFNhbWUgYXMgaGVhZGVyX2VuY29kaW5nLCBidXQgZGVzY3JpYmVzIHRoZSBlbmNvZGluZyBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICBtYWlsIG1lc3NhZ2UncyBib2R5LCB3aGljaCBpbmRlZWQgbWF5IGJlIGRpZmZlcmVudCB0aGFuIHRoZQogICAgICAgICAgICAgICAgICAgaGVhZGVyIGVuY29kaW5nLiAgQ2hhcnNldC5TSE9SVEVTVCBpcyBub3QgYWxsb3dlZCBmb3IKICAgICAgICAgICAgICAgICAgIGJvZHlfZW5jb2RpbmcuCgogICAgb3V0cHV0X2NoYXJzZXQ6IFNvbWUgY2hhcmFjdGVyIHNldHMgbXVzdCBiZSBjb252ZXJ0ZWQgYmVmb3JlIHRoZSBjYW4gYmUKICAgICAgICAgICAgICAgICAgICB1c2VkIGluIGVtYWlsIGhlYWRlcnMgb3IgYm9kaWVzLiAgSWYgdGhlIGlucHV0X2NoYXJzZXQgaXMKICAgICAgICAgICAgICAgICAgICBvbmUgb2YgdGhlbSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250YWluIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvLiAgT3RoZXJ3aXNlLCBpdCB3aWxsCiAgICAgICAgICAgICAgICAgICAgYmUgTm9uZS4KCiAgICBpbnB1dF9jb2RlYzogVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBjb2RlYyB1c2VkIHRvIGNvbnZlcnQgdGhlCiAgICAgICAgICAgICAgICAgaW5wdXRfY2hhcnNldCB0byBVbmljb2RlLiAgSWYgbm8gY29udmVyc2lvbiBjb2RlYyBpcwogICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBOb25lLgoKICAgIG91dHB1dF9jb2RlYzogVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBjb2RlYyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZQogICAgICAgICAgICAgICAgICB0byB0aGUgb3V0cHV0X2NoYXJzZXQuICBJZiBubyBjb252ZXJzaW9uIGNvZGVjIGlzIG5lY2Vzc2FyeSwKICAgICAgICAgICAgICAgICAgdGhpcyBhdHRyaWJ1dGUgd2lsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFz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aGUgZnVuY3Rpb24gd2l0aCBhIHNpbmdsZSBhcmd1bWVudCwgdGhlIE1lc3NhZ2Ugb2JqZWN0IGJlaW5nCiAgICAgICAgZW5jb2RlZC4gIFRoZSBmdW5jdGlvbiBzaG91bGQgdGhlbiBzZXQgdGhlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcKICAgICAgICBoZWFkZXIgaXRzZWxmIHRvIHdoYXRldmVyIGlzIGFwcHJvcHJpYXRlLgoKICAgICAgICBSZXR1cm5zICJxdW90ZWQtcHJpbnRhYmxlIiBpZiBzZWxmLmJvZHlfZW5jb2RpbmcgaXMgUVAuCiAgICAgICAgUmV0dXJucyAiYmFzZTY0IiBpZiBzZWxmLmJvZHlfZW5jb2RpbmcgaXMgQkFTRTY0LgogICAgICAgIFJldHVybnMgIjdiaXQiIG90aGVyd2lzZS4KICAgICAgICBzEAAAAHF1b3RlZC1wcmludGFibGV0BgAAAGJhc2U2NE4oBAAAAFI2AAAAdAIAAABRUFIzAAAAUgUAAAAoAQAAAFI5AAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZW1haWwvY2hhcnNldC5weXQRAAAAZ2V0X2JvZHlfZW5jb2Rpbmf5AAAAcwoAAAAADg8BBAEPAQQCYwIAAAACAAAAAwAAAEMAAABzNgAAAHwAAGoAAHwAAGoBAGsDAHIuAHQCAHwBAHwAAGoAAIMCAGoDAHwAAGoBAIMBAFN8AQBTZAEAUygCAAAAczoAAABDb252ZXJ0IGEgc3RyaW5nIGZyb20gdGhlIGlucHV0X2NvZGVjIHRvIHRoZSBvdXRwdXRfY29kZWMuTigEAAAAUjcAAABSOAAAAFIoAAAAUikAAAAoAgAAAFI5AAAAdAEAAABzKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZW1haWwvY2hhcnNldC5weXQHAAAAY29udmVydA4BAABzBgAAAAACEgEcAmMCAAAAAgAAAAYAAABDAAAAc1IAAAB0AAB8AQB0AQCDAgBzHgB8AABqAgBkAgBrCAByIgB8AQBTeRcAdAEAfAEAfAAAagIAZAEAgwMAU1duEgAEdAQAawoAck0AAQEBfAEAU1hkAgBTKAMAAABz6gEAAENvbnZlcnQgYSBwb3NzaWJseSBtdWx0aWJ5dGUgc3RyaW5nIHRvIGEgc2FmZWx5IHNwbGl0dGFibGUgZm9ybWF0LgoKICAgICAgICBVc2VzIHRoZSBpbnB1dF9jb2RlYyB0byB0cnkgYW5kIGNvbnZlcnQgdGhlIHN0cmluZyB0byBVbmljb2RlLCBzbyBpdAogICAgICAgIGNhbiBiZSBzYWZlbHkgc3BsaXQgb24gY2hhcmFjdGVyIGJvdW5kYXJpZXMgKGV2ZW4gZm9yIG11bHRpYnl0ZQogICAgICAgIGNoYXJhY3RlcnMpLgoKICAgICAgICBSZXR1cm5zIHRoZSBzdHJpbmcgYXMtaXMgaWYgaXQgaXNuJ3Qga25vd24gaG93IHRvIGNvbnZlcnQgaXQgdG8KICAgICAgICBVbmljb2RlIHdpdGggdGhlIGlucHV0X2NoYXJzZXQuCgogICAgICAgIENoYXJhY3RlcnMgdGhhdCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIFVuaWNvZGUgd2lsbCBiZSByZXBsYWNlZAogICAgICAgIHdpdGggdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIFUrRkZGRC4KICAgICAgICB0BwAAAHJlcGxhY2VOKAUAAABSJwAAAFIoAAAAUjcAAABSNAAAAFIwAAAAKAIAAABSOQAAAFJGAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZW1haWwvY2hhcnNldC5weXQNAAAAdG9fc3BsaXR0YWJsZRUBAABzDAAAAAANHgEEAQMBFwENA2MDAAAABAAAAAYAAABDAAAAc2gAAAB8AgByEgB8AABqAAB9AwBuCQB8AABqAQB9AwB0AgB8AQB0AwCDAgAMczcAfAMAZAIAawgAcjsAfAEAU3kUAHwBAGoFAHwDAGQBAIMCAFNXbhIABHQGAGsKAHJjAAEBAXwBAFNYZAIAUygDAAAAcyoCAABDb252ZXJ0IGEgc3BsaXR0YWJsZSBzdHJpbmcgYmFjayBpbnRvIGFuIGVuY29kZWQgc3RyaW5nLgoKICAgICAgICBVc2VzIHRoZSBwcm9wZXIgY29kZWMgdG8gdHJ5IGFuZCBjb252ZXJ0IHRoZSBzdHJpbmcgZnJvbSBVbmljb2RlIGJhY2sKICAgICAgICBpbnRvIGFuIGVuY29kZWQgZm9ybWF0LiAgUmV0dXJuIHRoZSBzdHJpbmcgYXMtaXMgaWYgaXQgaXMgbm90IFVuaWNvZGUsCiAgICAgICAgb3IgaWYgaXQgY291bGQgbm90IGJlIGNvbnZlcnRlZCBmcm9tIFVuaWNvZGUuCgogICAgICAgIENoYXJhY3RlcnMgdGhhdCBjb3VsZCBub3QgYmUgY29udmVydGVkIGZyb20gVW5pY29kZSB3aWxsIGJlIHJlcGxhY2VkCiAgICAgICAgd2l0aCBhbiBhcHByb3ByaWF0ZSBjaGFyYWN0ZXIgKHVzdWFsbHkgJz8nKS4KCiAgICAgICAgSWYgdG9fb3V0cHV0IGlzIFRydWUgKHRoZSBkZWZhdWx0KSwgdXNlcyBvdXRwdXRfY29kZWMgdG8gY29udmVydCB0byBhbgogICAgICAgIGVuY29kZWQgZm9ybWF0LiAgSWYgdG9fb3V0cHV0IGlzIEZhbHNlLCB1c2VzIGlucHV0X2NvZGVjLgogICAgICAgIFJIAAAATigHAAAAUjgAAABSNwAAAFInAAAAUigAAABSNAAAAFIpAAAAUjAAAAAoBAAAAFI5AAAAdAQAAAB1c3RydAkAAAB0b19vdXRwdXR0BQAAAGNvZGVjKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZW1haWwvY2hhcnNldC5weXQPAAAAZnJvbV9zcGxpdHRhYmxlKwEAAHMSAAAAAA0GAQwCCQEcAQQBAwEUAQ0CYwEAAAABAAAAAgAAAEMAAABzEAAAAHwAAGoAAHAPAHwAAGoBAFMoAQAAAHOPAAAAUmV0dXJuIHRoZSBvdXRwdXQgY2hhcmFjdGVyIHNldC4KCiAgICAgICAgVGhpcyBp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