UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIg4SA6Oj0gIHsgaWQtY2UgMzUgfQpBdXRob3JpdHlLZXlJZGVudGlmaWVyIDo6PSBTRVFVRU5DRSB7CiAgICAgIGtleUlkZW50aWZpZXAgICAgIGUgT1BUSU9OQUwgfQogICAgIC0tIGVpdGhlciBub3RCZWZvcmUgb3Igbm90QWZ0ZXIgc2hhbGwgYmUgcHJlc2VudAppZC1jZS1jZXJ0aWZpY2F0ZVBtbGljaWVzIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAzMiB9CkNlcnRpZmljYXRlUG9saWNpZXMgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLk1BWCkgT0YgUG9saWN5SW5mb3JtYXRpb24KUG9saWN5SW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKICAgICBwb2xpY3lJZGVudGlmaWVyICAgQ2VydFBvbGljeUlkLAogICAgIHBvbGljeVF1YWxpZmllcnMgICBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GCiAgICAgICAgICAgICBQb2xpY3lRdWFsaWZpZXJJbmZvIE9QVElPTkFMIH0KQ2VydFBvbGljeUlkIDo6PSBPQkpFQ1QgSURFTlRJRklFUgpQb2xpY3lRdWFsaWZpZXJJbmZvIDo6PSBTRVFVRU5DRSB7CiAgICAgICBwb2xpY3lRdWFsaWZpZXJJZCAgUG9saWN5UXVhbGlmaWVySWQsCiAgICAgICBxdWFsaWZpZXIgICAgICAgIEFOWSBERUZJTkVEIEJZIHBvbGljeVF1YWxpZmllcklkIH0KI29saWN5UXVhbGlmaWVySWQgOjo9CiAgICBPQkpFQ1QgSURFTlRJRklFUiAgLS0gKCBpZC1xdC1jcHMgfCBpZC1xdC11bm90aWNlICkKQ1BTdXJpIDo6PSBJQTVTdHJpbmcKVXNlck5vdGljZSA6Oj0gU0VRVUVOQ0UgewogICAgIG5vdGljZVJlZiAgICAgICAgTm90aWNlUmVmZXJlbmNlIE9QVElPTkFMLAogICAgIGV4cGxpY2l0VGV4dCAgICAgRGlzcGxheVRleHQgT1BUSU9OQUx9Ck5vdGljZVJlZmVyZW5jZSA6Oj0gcmVnaXN0ZXJlZCBmb3IgdXNlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gYWxnb3JpdGhtIG9iamVjdCBpZGVudGlmaWVyIHZhbHVlCnBrY3MtMSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gewogICAgIHBrY3MgMSB9CnJzYUVuY3J5cHRpb24gT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IHBrY3MtMSAxIH0KbWQyV2l0aFJTQUVuY3J5cHRpb24gT0JKRUNUIElERU5USUZJRVIgIDo6PSAgeyBwa2NzLTEgMiB9Cm1kNVdpdGhSU0FFbmNyeXB0aW9uIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHsgcGtjcy0xIDQgfQpzaGExV2l0aFJTQUVuY3J5cHRpb24gT0JKRUNUIElERU5USUZJRVIgIDo6PSAgeyBwa2NzLTEgNSB9CkVSIE9QVElPTkFMLCAtLSBzdWJncm91cCBmYWN0b3IsIGo+PSAyCiAgICAgdmFsaWRhdGlvblBhcm1zICBWYWxpZGF0aW9uUGFybXMgT1BUSU9OQUwgfQpWYWxpZGF0aW9uUGFybXMgOjo9IFNFUVVFTkNFIHsKICAgICBzZWVkICAgICAgICAgICAgIEJJVCBTVFJJTkcsCiAgICAgcGdlbkNvdW50ZXIgICAgICBJTlRFR0VSIH0KaWQtZHNhIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7CiAgICAgaXNvKDEpIG1lbWJlci1ib2R5KDIpIHVzKDg0MCkgeDktNTcoMTAwNDApIHg5YWxnb3JpdGhtKDQpIDEgfQpEc3MtUGFybXMg