T1NQRlYzLU1JQiBERUZJTklUSU9OUyA6Oj0gQkVHSU4gCiAKSU1QT1JUUyAKICAgICAgICBNT0RVTEUtSURFTlRJVFksIE9CSkVDVC1UWVBFLCBtaWItMiwgCiAgICAgICAgQ291bnRlcjMyLCBHYXVnZTMyLCBJbnRlZ2VyMzIsIElwQWRkcmVzcywgCiAgICAgICAgVW5zaWduZWQzMiAKICAgICAgICAgICAgICAgIEZST00gU05NUHYyLVNNSSAKICAgICAgICBURVhUVUFMLUNPTlZFTlRJT04sIFRydXRoVmFsdWUsIFN0b3JhZ2VUeXBlLCBSb3dTdGF0dXMgCiAgICAgICAgICAgICAgICBGUk9NIFNOTVB2Mi1UQyAKICAgICAgICBNT0RVTEUtQ09NUExJQU5DRSwgT0JKRUNULUdST1VQIAogICAgICAgICAgICAgICAgRlJPTSBTTk1QdjItQ09ORiAKICAgICAgICBJbnRlcmZhY2VJbmRleCAKICAgICAgICAgICAgICAgIEZST00gSUYtTUlCIAogICAgICAgIEluZXRBZGRyZXNzVHlwZSwgSW5ldEFkZHJlc3MsIEluZXRBZGRyZXNzUHJlZml4TGVuZ3RoIAogICAgICAgICAgICAgICAgRlJPTSBJTkVULUFERFJFU1MtTUlCIAogICAgICAgIEFyZWFJRCwgUm91dGVySUQsIE1ldHJpYywgQmlnTWV0cmljLCBTdGF0dXMsICAKICAgICAgICBIZWxsb1JhbmdlLCBEZXNpZ25hdGVkUm91dGVyUHJpb3JpdHkgCiAgICAgICAgICAgICAgICBGUk9NIE9TUEYtTUlCOyAKCm9zcGZ2M01JQiBNT0RVTEUtSURFTlRJVFkgCiAgICAgICAgTEFTVC1VUERBVEVEICIyMDA0MDQwODEyMDBaIiAKICAgICAgICBPUkdBTklaQVRJT04gIklFVEYgT1NQRiBXb3JraW5nIEdyb3VwIiAKICAgICAgICBDT05UQUNULUlORk8gCiAgICAgICAgICAgICJXRyBFLU1haWw6IG9zcGZAcGVhY2guZWFzZS5sc29mdC5jb20gCiAgICAgICAgICAgICBXRyBDaGFpcnM6IEpvaG4uTW95QHN5Y2Ftb3JlbmV0LmNvbSAgIAogICAgICAgICAgICAgICAgICAgICAgICBhY2VlQHJlZGJhY2suY29tIAogICAgICAgICAgICAgICAgICAgICAgICByb2hpdEB4ZWJlby5jb20gCiAKICAgICAgICAgICAgIERhbiBKb3lhbCAKICAgICAgICAgICAgIE5vcnRlbCBOZXR3b3JrcyAKICAgICAgICAgICAgIDYwMCBUZWNobm9sb2d5IFBhcmsgRHJpdmUgCiAgICAgICAgICAgICBCaWxsZXJpY2EsIE1BICAwMTgyMSwgVVNBIAogICAgICAgICAgICAgZGpveWFsQG5vcnRlbG5ldHdvcmtzLmNvbSAKIAogICAgICAgICAgICAgVmlzaHdhcyBNYW5yYWwgCiAgICAgICAgICAgICBTaU5ldHQgQ29ycG9yYXRpb24gCiAgICAgICAgICAgICAyLzEsIEZpcnN0IEZsb29yIAogICAgICAgICAgICAgRW1iYXNzeSBJY29uIEFubmV4IAogICAgICAgICAgICAgSW5mYW50cnkgUm9hZCAKICAgICAgICAgICAgIEJhbmdhbG9yZSA1NjAwMDEgCiAgICAgICAgICAgICB2aXNod2FzQHNpbmV0dC5jb20iIAogCiAgICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAgIlRoZSBNSUIgbW9kdWxlIHRvIGRlc2NyaWJlIE9TUEYgdmVyc2lvbiAzIiAKICAgICAgICAgUkVWSVNJT04gIjIwMDQwNDA4MTIwMFoiIAogICAgICAgICBERVNDUklQVElPTiAtLSBSRkMgRWRpdG9yIGFzc2lnbnMgUkZDIHh4eHggCiAgICAgICAgICAgICAiSW5pdGlhbCB2ZXJzaW9uLCBwdWJsaXNoZWQgYXMgUkZDIHh4eHgiIAogICAgICAgICA6Oj0geyBtaWItMiB4eCB9IC0tIElBTkEgYXNzaWducyB4eCAKIAotLSBUZXh1YWwgY29udmVudGlvbnMgCiAKVXBUb1JlZnJlc2hJbnRlcnZhbCA6Oj0gVEVYVFVBTC1DT05WRU5USU9OIAogICAgICAgICBTVEFUVVMgICAgICAgIGN1cnJlbnQgCiAgICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHZhbHVlcyBvbmUgbWlnaHQgYmUgYWJsZSB0byBjb25maWd1cmUgZm9yICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHZhcmlhYmxlcyBib3VuZGVkIGJ5IHRoZSBSZWZyZXNoIEludGVydmFsIiAKICAgICAgICAgU1lOVEFYICAgICAgICBJbnRlZ2VyMzIgKDEuLjE4MDApIAogClJvdXRlckRlYWRSYW5nZSA6Oj0gVEVYVFVBTC1DT05WRU5USU9OIAogICAgICAgICBTVEFUVVMgICAgICAgIGN1cnJlbnQgCiAgICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHJhbmdlIG9mIGludGVydmFscyBpbiBzZWNvbmRzIHRoYXQgYSByb3V0ZXJzIGhlbGxvIAogICAgICAgICAgICBtdXN0IGhhdmUgbm90IGJlZW4gc2VlbiBiZWZvcmUgYSBuZWlnaGJvciBkZWNsYXJlcyB0aGUgCiAgICAgICAgICAgIHJvdXRlciBkb3duIiAKICAgICAgICAgU1lOVEFYICAgICAgICBJbnRlZ2VyMzIgKDEuLsZGRkZGxmgpIAoKIAotLSBUb3AtbGV2ZWwgc3RydWN0dXJlIG9mIE1JQiAKb3NwZnYzT2JqZWN0cyAgICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgb3NwZnYzTUlCIDEgfSAKb3NwZnYzQ29uZm9ybWFuY2UgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgb3NwZnYzTUlCIDIgfSAKIAotLSBPU1BGdjMgR2VuZXJhbCBWYXJpYWJsZXMgCiAKLS0gVGhlc2UgcGFyYW1ldGVycyBhcHBseSBnbG9iYWxseSB0byB0aGUgUm91dGVyJ3MgCi0tIE9TUEZ2MyBQcm9jZXNzLiAKIApvc3BmdjNHZW5lcmFsR3JvdXAgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgb3NwZnYzT2JqZWN0cyAxIH0gCiAKb3NwZnYzUm91dGVySWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgUm91dGVySUQgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgcmVhZC13cml0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSAgMzItYml0ICBpbnRlZ2VyICB1bmlxdWVseSAgaWRlbnRpZnlpbmcgIHRoZSAKICAgICAgICAgICAgcm91dGVyIGluIHRoZSBBdXRvbm9tb3VzIFN5c3RlbS4gCiAgICAgICAgICAgIFRvICBlbnN1cmUgIHVuaXF1ZW5lc3MsIHRoaXMgbWF5IAogICAgICAgICAgICBkZWZhdWx0ICB0byAgdGhlICB2YWx1ZSAgb2YgIG9uZSBvZiB0aGUgCiAgICAgICAgICAgIHJvdXRlcidzIElQdjQgaW50ZXJmYWNlIGFkZHJlc3NlcyBpZiBJUHY0IGlzIAogICAgICAgICAgICBjb25maWd1cmVkIG9uIHRoZSByb3V0ZXIuIiAKICAgICAgICA6Oj0geyBvc3BmdjNHZW5lcmFsR3JvdXAgMSB9IAogCm9zcGZ2M0FkbWluU3RhdCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU3RhdHVzIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLXdyaXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlICBhZG1pbmlzdHJhdGl2ZSAgc3RhdHVzICBvZiAgT1NQRnYzICBpbiAgdGhlIAogICAgICAgICAgICByb3V0ZXIuICAgVGhlICB2YWx1ZSAnZW5hYmxlZCcgZGVub3RlcyB0aGF0IHRoZSAKICAgICAgICAgICAgT1NQRnYzIFByb2Nlc3MgaXMgYWN0aXZlIG9uIGF0IGxlYXN0ICBvbmUgIGludGVyLSAKICAgICAgICAgICAgZmFjZTsgICdkaXNhYmxlZCcgIGRpc2FibGVzICBpdCAgb24gIGFsbCBpbnRlci0gCiAgICAgICAgICAgIGZhY2VzLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDIgfSAKIApvc3BmdjNWZXJzaW9uTnVtYmVyIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJTlRFR0VSIHsgdmVyc2lvbjMoMykgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHZlcnNpb24gbnVtYmVyIG9mIE9TUEYgZm9yIElQdjYgaXMgMy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAzIH0gCiAKb3NwZnYzQXJlYUJkclJ0clN0YXR1cyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVHJ1dGhWYWx1ZSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSBmbGFnIHRvIG5vdGUgd2hldGhlciB0aGlzIHJvdXRlciBpcyBhbiAgYXJlYSAKICAgICAgICAgICAgYm9yZGVyIHJvdXRlci4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDMgU3BsaXR0aW5nIHRoZSBBUyBpbnRvIAogICAgICAgICAgICBBcmVhcyIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDQgfSAKIApvc3BmdjNBU0JkclJ0clN0YXR1cyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVHJ1dGhWYWx1ZSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC13cml0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgZmxhZyB0byBub3RlIHdoZXRoZXIgdGhpcyByb3V0ZXIgaXMgIGNvbmZpZy0gCiAgICAgICAgICAgIHVyZWQgYXMgYW4gQXV0b25vbW91cyBTeXN0ZW0gYm9yZGVyIHJvdXRlci4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDMuMyAgQ2xhc3NpZmljYXRpb24gIG9mIAogICAgICAgICAgICByb3V0ZXJzIiAKICAgICAgICA6Oj0geyBvc3BmdjNHZW5lcmFsR3JvdXAgNSB9IAogCm9zcGZ2M0FzU2NvcGVMc2FDb3VudCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgR2F1Z2UzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBBUy1TY29wZSAoZS5nLiBBUy1FeHRlcm5hbCkgbGluay1zdGF0ZSAKICAgICAgICAgICAgYWR2ZXJ0aXNlbWVudHMgaW4gdGhlIGxpbmstc3RhdGUgZGF0YWJhc2UuIiAKICAgICAgICA6Oj0geyBvc3BmdjNHZW5lcmFsR3JvdXAgNiB9IAogCm9zcGZ2M0FzU2NvcGVMc2FDa3N1bVN1bSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgMzItYml0IHVuc2lnbmVkIHN1bSBvZiB0aGUgTFMgY2hlY2tzdW1zIG9mIAogICAgICAgICAgICB0aGUgIEFTLXNjb3BlZCBsaW5rLXN0YXRlIGFkdmVydGlzZW1lbnRzICBjb24tIAogICAgICAgICAgICB0YWluZWQgaW4gdGhlIGxpbmstc3RhdGUgZGF0YWJhc2UuIFRoaXMgc3VtIAogICAgICAgICAgICBjYW4gIGJlICB1c2VkICB0byBkZXRlcm1pbmUgaWYgdGhlcmUgaGFzIGJlZW4gYSAKICAgICAgICAgICAgY2hhbmdlIGluIGEgcm91dGVyJ3MgbGluayBzdGF0ZSAgZGF0YWJhc2UsICBhbmQgCiAgICAgICAgICAgIHRvICBjb21wYXJlICB0aGUgIGxpbmstc3RhdGUgIGRhdGFiYXNlICBvZiAgdHdvIAogICAgICAgICAgICByb3V0ZXJzLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDcgfSAKIApvc3BmdjNPcmlnaW5hdGVOZXdMc2FzIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBDb3VudGVyMzIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBudW1iZXIgb2YgIG5ldyAgbGluay1zdGF0ZSAgYWR2ZXJ0aXNlbWVudHMgCiAgICAgICAgICAgIHRoYXQgIGhhdmUgYmVlbiBvcmlnaW5hdGVkLiAgVGhpcyBudW1iZXIgaXMgaW4tIAogICAgICAgICAgICBjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSByb3V0ZXIgb3JpZ2luYXRlcyBhIG5ldyAKICAgICAgICAgICAgTFNBLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDggfSAKIApvc3BmdjNSeE5ld0xzYXMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIENvdW50ZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG51bWJlciBvZiAgbGluay1zdGF0ZSAgYWR2ZXJ0aXNlbWVudHMgIHJlLSAKICAgICAgICAgICAgY2VpdmVkICBkZXRlcm1pbmVkICB0byAgYmUgIG5ldyBpbnN0YW50aWF0aW9ucy4gCiAgICAgICAgICAgIFRoaXMgbnVtYmVyIGRvZXMgbm90IGluY2x1ZGUgIG5ld2VyICBpbnN0YW50aWEtIAogICAgICAgICAgICB0aW9ucyAgb2Ygc2VsZi1vcmlnaW5hdGVkIGxpbmstc3RhdGUgYWR2ZXJ0aXNlLSAKICAgICAgICAgICAgbWVudHMuIiAKICAgICAgICA6Oj0geyBvc3BmdjNHZW5lcmFsR3JvdXAgOSB9IAogCm9zcGZ2M0V4dExzYUNvdW50IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBHYXVnZTMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIEV4dGVybmFsKExTIHR5cGUgMHg0MDA1KSBpbiB0aGUgbGluay0KICAgICAgICAgICAgc3RhdGUgZGF0YWJhc2UiIAogICAgICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAxMCB9IAogCiAKb3NwZnYzRXh0QXJlYUxzZGJMaW1pdCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyICgtMS4uJzdGRkZGRkZGJ2gpIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLXdyaXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlICBtYXhpbXVtICAgbnVtYmVyICAgb2YgICBub24tZGVmYXVsdCAgIEFTLSAKICAgICAgICAgICAgZXh0ZXJuYWwtTFNBcyBlbnRyaWVzIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUgCiAgICAgICAgICAgIGxpbmstc3RhdGUgZGF0YWJhc2UuICBJZiB0aGUgdmFsdWUgaXMgLTEsIHRoZW4gCiAgICAgICAgICAgIHRoZXJlIGlzIG5vIGxpbWl0LiAKIAogICAgICAgICAgICBXaGVuIHRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgQVMtZXh0ZXJuYWwtTFNBcyAKICAgICAgICAgICAgaW4gICBhICByb3V0ZXIncyAgbGluay1zdGF0ZSAgZGF0YWJhc2UgIHJlYWNoZXMgCiAgICAgICAgICAgIG9zcGZ2M0V4dEFyZWFMc2RiTGltaXQsIHRoZSByb3V0ZXIgIGVudGVycyAgT3ZlcmZsb3ctIAogICAgICAgICAgICBTdGF0ZS4gICBUaGUgICByb3V0ZXIgIG5ldmVyICBob2xkcyAgbW9yZSAgdGhhbiAKICAgICAgICAgICAgb3NwZnYzRXh0QXJlYUxzZGJMaW1pdCAgbm9uLWRlZmF1bHQgIEFTLWV4dGVybmFsLUxTQXMgCiAgICAgICAgICAgIGluICBpdHMgIGRhdGFiYXNlLiBPc3BmRXh0QXJlYUxzZGJMaW1pdCBNVVNUIGJlIHNldCAKICAgICAgICAgICAgaWRlbnRpY2FsbHkgaW4gYWxsIHJvdXRlcnMgYXR0YWNoZWQgdG8gdGhlIE9TUEZ2MyAKICAgICAgICAgICAgYmFja2JvbmUgIGFuZC9vciAgYW55IHJlZ3VsYXIgT1NQRnYzIGFyZWEuIChpLmUuLCAKICAgICAgICAgICAgT1NQRnYzIHN0dWIgYXJlYXMgYW5kIE5TU0FzIGFyZSBleGNsdWRlZCkuIiAKICAgICAgICA6Oj0geyBvc3BmdjNHZW5lcmFsR3JvdXAgMTEgfSAKIApvc3BmdjNNdWx0aWNhc3RFeHRlbnNpb25zIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBCSVRTIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJhQXJlYU11bHRpY2FzdCgwKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyQXJlYU11bHRpY2FzdCgxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyQXNNdWx0aWNhc3QoMikgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLXdyaXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSBCaXQgTWFzayBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdXRlciBpcyAKICAgICAgICAgICAgZm9yd2FyZGluZyBJUHY2IG11bHRpY2FzdCBkYXRhZ3JhbXMgCiAgICAgICAgICAgIGJhc2VkIG9uIHRoZSBhbGdvcml0aG1zIGRlZmluZWQgaW4gdGhlICBNdWx0aS0gCiAgICAgICAgICAgIGNhc3QgRXh0ZW5zaW9ucyB0byBPU1BGLiAKIAogICAgICAgICAgICBJZiBpbnRyYUFyZWFNdWx0aWNhc3Qgc2V0LCBpbmRpY2F0ZXMgdGhhdCB0aGUgcm91dGVyIAogICAgICAgICAgICBjYW4gZm9yd2FyZCAgSVB2NiBtdWx0aWNhc3QgZGF0YWdyYW1zIGluIHRoZSByb3V0ZXIncyAKICAgICAgICAgICAgZGlyZWN0bHkgYXR0YWNoZWQgYXJlYXMgKGNhbGxlZCBpbnRyYS1hcmVhIG11bC0gCiAgICAgICAgICAgIHRpY2FzdCByb3V0aW5nKS4gCiAKICAgICAgICAgICAgSWYgaW50ZXJBcmVhTXVsdGljYXN0IHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIHJvdXRlciAKICAgICAgICAgICAgY2FuIGZvcndhcmQgSVB2NiBtdWx0aWNhc3QgZGF0YWdyYW1zIGJldHdlZW4gT1NQRnYzIAogICAgICAgICAgICBhcmVhcyAoY2FsbGVkIGludGVyLWFyZWEgbXVsdGljYXN0IHJvdXRpbmcpLiAKIAogICAgICAgICAgICBJZiBpbnRlckFzTXVsdGljYXN0IHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIHJvdXRlciBjYW4gCiAgICAgICAgICAgIGZvcndhcmQgIElQdjYgIG11bHRpY2FzdCBkYXRhZ3JhbXMgYmV0d2VlbiBBdXRvLSAKICAgICAgICAgICAgbm9tb3VzIFN5c3RlbXMgKGNhbGxlZCBpbnRlci1BUyBtdWx0aWNhc3Qgcm91dC0gCiAgICAgICAgICAgIGluZykuIAogCiAgICAgICAgICAgIE9ubHkgY2VydGFpbiBjb21iaW5hdGlvbnMgb2YgYml0IHNldHRpbmdzIGFyZSAKICAgICAgICAgICAgYWxsb3dlZCwgbmFtZWx5OiAKICAgICAgICAgICAgICAgICAgICAtIEFsbCBiaXRzIGNsZWFyZWQgKG5vIG11bHRpY2FzdGluZykgCiAgICAgICAgICAgICAgICAgICAgLSBpbnRyYUFyZWFNdWx0aWNhc3Qgb25seSwgCiAgICAgICAgICAgICAgICAgICAgLSBpbnRyYUFyZWFNdWx0aWNhc3QgYW5kIGludGVyQXJlYU11bHRpY2FzdCwgCiAgICAgICAgICAgICAgICAgICAgLSBpbnRyYUFyZWFNdWx0aWNhc3QgYW5kIGludGVyQXNNdWx0aWNhc3QgCiAgICAgICAgICAgICAgICAgICAgLSBpbnRyYUFyZWFNdWx0aWNhc3QsIGludGVyQXJlYU11bHRpY2FzdCBhbmQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlckFzTXVsdGljYXN0IAogICAgICAgICAgICBCeSBkZWZhdWx0LCBhbGwgYml0cyBhcmUgY2xlYXJlZC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAxMiB9IAogCm9zcGZ2M0V4aXRPdmVyZmxvd0ludGVydmFsIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBVbnNpZ25lZDMyIAogICAgICAgIFVOSVRTICAgICAgICAgICAic2Vjb25kcyIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtd3JpdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mICBzZWNvbmRzICB0aGF0LCAgYWZ0ZXIgIGVudGVyaW5nIAogICAgICAgICAgICBPdmVyZmxvd1N0YXRlLCAgYSAgcm91dGVyIHdpbGwgYXR0ZW1wdCB0byBsZWF2ZSAKICAgICAgICAgICAgT3ZlcmZsb3dTdGF0ZS4gVGhpcyBhbGxvd3MgdGhlIHJvdXRlciB0byAgYWdhaW4gCiAgICAgICAgICAgIG9yaWdpbmF0ZSAgbm9uLWRlZmF1bHQgIEFTLUV4dGVybmFsLUxTQXMuICBXaGVuIAogICAgICAgICAgICBzZXQgdG8gMCwgdGhlIHJvdXRlciB3aWxsIG5vdCAgbGVhdmUgIE92ZXJmbG93LSAKICAgICAgICAgICAgU3RhdGUgdW50aWwgcmVzdGFydGVkLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDEzIH0gCiAKb3NwZnYzRGVtYW5kRXh0ZW5zaW9ucyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICBUcnV0aFZhbHVlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgIHJlYWQtd3JpdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSByb3V0ZXIncyBzdXBwb3J0IGZvciBkZW1hbmQgcm91dGluZy4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBBcHBlbmRpeCBvbiBEZW1hbmQgUm91dGluZyIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDE0IH0gCiAKb3NwZnYzVHJhZmZpY0VuZ2luZWVyaW5nU3VwcG9ydCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVHJ1dGhWYWx1ZSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC13cml0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSByb3V0ZXIncyBzdXBwb3J0IGZvciB0cmFmZmljIGVuZ2luZWVyaW5nIAogICAgICAgICAgICBleHRlbnNpb25zLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDE1IH0gCiAKb3NwZnYzUmVmZXJlbmNlQmFuZHdpZHRoIE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBVbnNpZ25lZDMyICAKICAgICAgIE1BWC1BQ0NFU1MgICByZWFkLXdyaXRlICAKICAgICAgIFNUQVRVUyAgICAgICBjdXJyZW50ICAKICAgICAgIERFU0NSSVBUSU9OICAKICAgICAgICAgICJSZWZlcmVuY2UgYmFuZHdpZHRoIGluIGtpbG9iaXRzL3NlY29uZCBmb3IgIAogICAgICAgICAgY2FsY3VsYXRpbmcgZGVmYXVsdCBpbnRlcmZhY2UgbWV0cmljcy4gVGhlICAKICAgICAgICAgIGRlZmF1bHQgdmFsdWUgaXMgMTAwLDAwMCBLQlBTICgxMDAgTUJQUykiICAKICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAxNiB9IAogCm9zcGZ2M1Jlc3RhcnRTdXBwb3J0IE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBJTlRFR0VSIHsgbm9uZSAoMSksICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbm5lZE9ubHkgKDIpLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5uZWRBbmRVbnBsYW5uZWQgKDMpICAKICAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICBNQVgtQUNDRVNTICAgcmVhZC13cml0ZSAgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiVGhlIHJvdXRlcidzIHN1cHBvcnQgZm9yIE9TUEYgaGl0bGVzcyByZXN0YXJ0LiAgCiAgICAgICAgICBPcHRpb25zIGluY2x1ZGU6IG5vIHJlc3RhcnQgc3VwcG9ydCwgb25seSBwbGFubmVkICAKICAgICAgICAgIHJlc3RhcnRzIG9yIGJvdGggcGxhbm5lZCBhbmQgdW5wbGFubmVkIHJlc3RhcnRzLiIgIAogICAgICAgOjo9IHsgb3NwZnYzR2VuZXJhbEdyb3VwIDE3IH0gIAogICAgCm9zcGZ2M1Jlc3RhcnRJbnRlcnZhbCBPQkpFQ1QtVFlQRSAgCiAgICAgICBTWU5UQVggICAgICAgVXBUb1JlZnJlc2hJbnRlcnZhbCAKICAgICAgIFVOSVRTICAgICAgICAic2Vjb25kcyIgIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtd3JpdGUgIAogICAgICAgU1RBVFVTICAgICAgIGN1cnJlbnQgIAogICAgICAgREVTQ1JJUFRJT04gIAogICAgICAgICAgIkNvbmZpZ3VyZWQgT1NQRiBoaXRsZXNzIHJlc3RhcnQgdGltZW91dCBpbnRlcnZhbC4iICAKICAgICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAxOCB9ICAKICAgIApvc3BmdjNSZXN0YXJ0U3RhdHVzIE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBJTlRFR0VSIHsgbm90UmVzdGFydGluZyAoMSksICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbm5lZFJlc3RhcnQgKDIpLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGxhbm5lZFJlc3RhcnQgKDMpICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtb25seSAgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiQ3VycmVudCBzdGF0dXMgb2YgT1NQRiBoaXRsZXNzIHJlc3RhcnQuIiAgCiAgICAgICA6Oj0geyBvc3BmdjNHZW5lcmFsR3JvdXAgMTkgfSAgCiAgICAKb3NwZnYzUmVzdGFydEFnZSBPQkpFQ1QtVFlQRSAgCiAgICAgICBTWU5UQVggICAgICAgVXBUb1JlZnJlc2hJbnRlcnZhbCAKICAgICAgIFVOSVRTICAgICAgICAic2Vjb25kcyIgIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtb25seSAgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiUmVtYWluaW5nIHRpbWUgaW4gY3VycmVudCBPU1BGIGhpdGxlc3MgcmVzdGFydCAgCiAgICAgICAgICBpbnRlcnZhbC4iICAKICAgICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAyMCB9ICAKICAgIApvc3BmdjNSZXN0YXJ0RXhpdFJlYXNvbiBPQkpFQ1QtVFlQRSAgCiAgICAgICBTWU5UQVggICAgICAgSU5URUdFUiB7IG5vbmUgKDEpLCAgICAgICAgICAgLS0gbm9uZSBhdHRlbXB0ZWQgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblByb2dyZXNzICgyKSwgICAgIC0tIHJlc3RhcnQgaW4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHByb2dyZXNzICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkICgzKSwgICAgICAtLSBzdWNjZXNzZnVsbHkgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGNvbXBsZXRlZCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVkT3V0ICg0KSwgICAgICAgLS0gdGltZWQgb3V0ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wb2xvZ3lDaGFuZ2VkICg1KSAtLSBhYm9ydGVkIGR1ZSB0byAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gdG9wb2xvZ3ljaGFuZ2UuICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtb25seSAgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiRGVzY3JpYmVzIHRoZSBvdXRjb21lIG9mIHRoZSBsYXN0IGF0dGVtcHQgYXQgYSAgCiAgICAgICAgICBoaXRsZXNzIHJlc3RhcnQuIElmIHRoZSB2YWx1ZSBpcyAnbm9uZScsIG5vIHJlc3RhcnQgIAogICAgICAgICAgIGhhcyB5ZXQgYmVlbiBhdHRlbXB0ZWQuIElmIHRoZSB2YWx1ZSBpcyAnaW5Qcm9ncmVzcycsICAKICAgICAgICAgIGEgcmVzdGFydCBhdHRlbXB0IGlzIGN1cnJlbnRseSB1bmRlcndheS4iICAKICAgIDo6PSB7IG9zcGZ2M0dlbmVyYWxHcm91cCAyMSB9IAogCiAKLS0gVGhlIE9TUEZ2MyBBcmVhIERhdGEgU3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIAotLSByZWdhcmRpbmcgdGhlIHZhcmlvdXMgYXJlYXMuIFRoZSBpbnRlcmZhY2VzIGFuZCAKLS0gdmlydHVhbCBsaW5rcyBhcmUgY29uZmlndXJlZCBhcyBwYXJ0IG9mIHRoZXNlIGFyZWFzLiAKLS0gQXJlYSAwLjAuMC4wLCBieSBkZWZpbml0aW9uLCBpcyB0aGUgQmFja2JvbmUgQXJlYSAKIApvc3BmdjNBcmVhVGFibGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFNFUVVFTkNFIE9GIE9zcGZ2M0FyZWFFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBjb25maWd1cmVkICBwYXJhbWUtIAogICAgICAgICAgICB0ZXJzICBhbmQgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzIG9mIHRoZSByb3V0ZXIncyAKICAgICAgICAgICAgYXR0YWNoZWQgYXJlYXMuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgU2VjdGlvbiA2IFRoZSBBcmVhIERhdGEgU3RydWMtIAogICAgICAgICAgICB0dXJlIiAKICAgICAgICA6Oj0geyBvc3BmdjNPYmplY3RzIDIgfSAKIApvc3BmdjNBcmVhRW50cnkgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIE9zcGZ2M0FyZWFFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBjb25maWd1cmVkIHBhcmFtZS0gCiAgICAgICAgICAgIHRlcnMgYW5kIGN1bXVsYXRpdmUgc3RhdGlzdGljcyBvZiBvbmUgb2YgdGhlIAogICAgICAgICAgICByb3V0ZXIncyBhdHRhY2hlZCBhcmVhcy4iIAogICAgICAgIElOREVYICAgICAgICAgICB7IG9zcGZ2M0FyZWFJZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFUYWJsZSAxIH0gCiAKT3NwZnYzQXJlYUVudHJ5IDo6PSBTRVFVRU5DRSB7IAogICAgICAgIG9zcGZ2M0FyZWFJZCAKICAgICAgICAgICAgICAgIEFyZWFJRCwgCiAgICAgICAgb3NwZnYzSW1wb3J0QXNFeHRlcm4gCiAgICAgICAgICAgICAgICBJTlRFR0VSLCAKICAgICAgICBvc3BmdjNBcmVhU3BmUnVucyAKICAgICAgICAgICAgICAgIENvdW50ZXIzMiwgCiAgICAgICAgb3NwZnYzQXJlYUJkclJ0ckNvdW50IAogICAgICAgICAgICAgICAgR2F1Z2UzMiwgCiAgICAgICAgb3NwZnYzQXJlYUFzQmRyUnRyQ291bnQgCiAgICAgICAgICAgICAgICBHYXVnZTMyLCAKICAgICAgICBvc3BmdjNBcmVhU2NvcGVMc2FDb3VudCAKICAgICAgICAgICAgICAgIEdhdWdlMzIsIAogICAgICAgIG9zcGZ2M0FyZWFTY29wZUxzYUNrc3VtU3VtIAogICAgICAgICAgICAgICAgSW50ZWdlcjMyLCAKICAgICAgICBvc3BmdjNBcmVhU3VtbWFyeSAKICAgICAgICAgICAgICAgIElOVEVHRVIsIAogICAgICAgIG9zcGZ2M0FyZWFTdGF0dXMgCiAgICAgICAgICAgICAgICBSb3dTdGF0dXMsIAogICAgICAgIG9zcGZ2M1N0dWJNZXRyaWMgCiAgICAgICAgICAgICAgICBCaWdNZXRyaWMsIAogICAgICAgIG9zcGZ2M0FyZWFOc3NhVHJhbnNsYXRvclJvbGUgCiAgICAgICAgICAgICAgICBJTlRFR0VSLCAKICAgICAgICBvc3BmdjNBcmVhTnNzYVRyYW5zbGF0b3JTdGF0ZSAKICAgICAgICAgICAgICAgIElOVEVHRVIsIAogICAgICAgIG9zcGZ2M0FyZWFOc3NhVHJhbnNsYXRvclN0YWJpbGl0eUludGVydmFsIAogICAgICAgICAgICAgICAgVW5zaWduZWQzMiwgCiAgICAgICAgb3NwZnYzQXJlYU5zc2FUcmFuc2xhdG9yRXZlbnRzIAogICAgICAgICAgICAgICAgQ291bnRlcjMyLCAKICAgICAgICBvc3BmdjNBcmVhU3R1Yk1ldHJpY1R5cGUgCiAgICAgICAgICAgICAgICBJTlRFR0VSIAogICAgICAgIH0gCiAKb3NwZnYzQXJlYUlkIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBBcmVhSUQgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSAzMi1iaXQgaW50ZWdlciB1bmlxdWVseSBpZGVudGlmeWluZyBhbiBhcmVhLiAKICAgICAgICAgICAgQXJlYSBJRCAwLjAuMC4wIGlzIHVzZWQgZm9yIHRoZSBPU1BGdjMgYmFja2JvbmUuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4yIEFyZWEgcGFyYW1ldGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUVudHJ5IDEgfSAKIApvc3BmdjNJbXBvcnRBc0V4dGVybiBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSU5URUdFUiB7IAogICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRFeHRlcm5hbCgxKSwgICAtLSBub3JtYWwgYXJlYSAKICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0Tm9FeHRlcm5hbCgyKSwgLS0gc3R1YiBhcmVhIAogICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnROc3NhKDMpICAgICAgICAtLSBub3Qtc28tc3R1YmJ5LWFyZWEgCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiSW5kaWNhdGVzIHdoZXRoZXIgYW4gYXJlYSBpcyBhIFN0dWIgYXJlYSwgTlNTQSwgb3IgCiAgICAgICAgICAgIHN0YW5kYXJkIGFyZWEuIEFTLXNjb3BlIExTQXMgYXJlIG5vdCBpbXBvcnRlZCBpbnRvIFN0dWIgCiAgICAgICAgICAgIEFyZWFzIG9yIE5TU0FzLiBOU1NBcyBpbXBvcnQgQVMtRXh0ZXJuYWwgZGF0YSBhcyBUeXBlLTcgCiAgICAgICAgICAgIExTQXMgd2hpY2ggaGF2ZSBBcmVhLXNjb3BlIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4yIEFyZWEgcGFyYW1ldGVycyIgCiAgICAgICAgREVGVkFMIHsgaW1wb3J0RXh0ZXJuYWwgfSAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgMiB9IAogCm9zcGZ2M0FyZWFTcGZSdW5zIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBDb3VudGVyMzIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgaW50cmEtYXJlYSAgcm91dGUgCiAgICAgICAgICAgIHRhYmxlICBoYXMgIGJlZW4gIGNhbGN1bGF0ZWQgIHVzaW5nIHRoaXMgYXJlYSdzIAogICAgICAgICAgICBsaW5rLXN0YXRlIGRhdGFiYXNlLiAgVGhpcyAgaXMgIHR5cGljYWxseSAgZG9uZSAKICAgICAgICAgICAgdXNpbmcgRGlqa3N0cmEncyBhbGdvcml0aG0uIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgMyB9IAogCm9zcGZ2M0FyZWFCZHJSdHJDb3VudCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgR2F1Z2UzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBhcmVhIGJvcmRlciByb3V0ZXJzIHJlYWNoLSAKICAgICAgICAgICAgYWJsZSB3aXRoaW4gdGhpcyBhcmVhLiAgVGhpcyBpcyBpbml0aWFsbHkgemVybywgCiAgICAgICAgICAgIGFuZCBpcyBjYWxjdWxhdGVkIGluIGVhY2ggU1BGIFBhc3MuIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgNCB9IAogCm9zcGZ2M0FyZWFBc0JkclJ0ckNvdW50IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBHYXVnZTMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgdG90YWwgbnVtYmVyIG9mIEF1dG9ub21vdXMgIFN5c3RlbSAgYm9yZGVyIAogICAgICAgICAgICByb3V0ZXJzICByZWFjaGFibGUgIHdpdGhpbiAgdGhpcyBhcmVhLiAgVGhpcyBpcyAKICAgICAgICAgICAgaW5pdGlhbGx5IHplcm8sIGFuZCBpcyBjYWxjdWxhdGVkIGluICBlYWNoICBTUEYgCiAgICAgICAgICAgIFBhc3MuIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgNSB9IAogCm9zcGZ2M0FyZWFTY29wZUxzYUNvdW50IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBHYXVnZTMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgdG90YWwgbnVtYmVyIG9mIEFyZWEtU2NvcGUgbGluay1zdGF0ZSAgCiAgICAgICAgICAgIGFkdmVydGlzZW1lbnRzIGluICB0aGlzICBhcmVhJ3MgbGluay1zdGF0ZSAgCiAgICAgICAgICAgIGRhdGFiYXNlLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUVudHJ5IDYgfSAKIApvc3BmdjNBcmVhU2NvcGVMc2FDa3N1bVN1bSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgMzItYml0IHVuc2lnbmVkIHN1bSBvZiB0aGUgQXJlYS1TY29wZSBsaW5rLXN0YXRlIAogICAgICAgICAgICBhZHZlcnRpc2VtZW50cycgIExTICBjaGVja3N1bXMgIGNvbnRhaW5lZCBpbiB0aGlzIAogICAgICAgICAgICBhcmVhJ3MgbGluay1zdGF0ZSBkYXRhYmFzZS4gIFRoZSBzdW0gY2FuIGJlIHVzZWQgCiAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiAgdGhlcmUgIGhhcyBiZWVuICBhICBjaGFuZ2UgIGluIGEgCiAgICAgICAgICAgIHJvdXRlcidzIGxpbmsgc3RhdGUgZGF0YWJhc2UsIGFuZCB0byBjb21wYXJlIHRoZSAKICAgICAgICAgICAgbGluay1zdGF0ZSBkYXRhYmFzZSBvZiB0d28gcm91dGVycy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFFbnRyeSA3IH0gCiAKb3NwZnYzQXJlYVN1bW1hcnkgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgbm9BcmVhU3VtbWFyeSgxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRBcmVhU3VtbWFyeSgyKSAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgdmFyaWFibGUgb3NwZnYzQXJlYVN1bW1hcnkgY29udHJvbHMgdGhlICBpbS0gCiAgICAgICAgICAgIHBvcnQgIG9mICBJbnRlci1BcmVhIExTQXMgaW50byBzdHViIGFyZWFzLiAgSXQgaGFzIAogICAgICAgICAgICBubyBlZmZlY3Qgb24gb3RoZXIgYXJlYXMuIAogCiAgICAgICAgICAgIElmIGl0IGlzIG5vQXJlYVN1bW1hcnksIHRoZSByb3V0ZXIgd2lsbCBuZWl0aGVyIAogICAgICAgICAgICBvcmlnaW5hdGUgIG5vciAgcHJvcGFnYXRlIEludGVyLUFyZWEgTFNBcyBpbnRvIHRoZSAKICAgICAgICAgICAgc3R1YiBhcmVhLiAgSXQgd2lsbCByZWx5IGVudGlyZWx5ICBvbiAgaXRzICBkZS0gCiAgICAgICAgICAgIGZhdWx0IHJvdXRlLiAKIAogICAgICAgICAgICBJZiBpdCBpcyBzZW5kQXJlYVN1bW1hcnksIHRoZSByb3V0ZXIgd2lsbCAgYm90aCAKICAgICAgICAgICAgc3VtbWFyaXplIGFuZCBwcm9wYWdhdGUgSW50ZXItQXJlYSBMU0FzLiIgCiAgICAgICAgREVGVkFMICAgeyBzZW5kQXJlYVN1bW1hcnkgfSAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgOCB9IAogCm9zcGZ2M0FyZWFTdGF0dXMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvd1N0YXR1cyAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBzdGF0dXMgb2YgIHRoZSAgZW4tIAogICAgICAgICAgICB0cnkuIFRoZSB1c2Ugb2YgUm93U3RhdHVzIGlzIGNvdmVyZWQgaW4gbW9yZSBkZXRhaWwgCiAgICAgICAgICAgIGluIFs2XS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFFbnRyeSA5IH0gCiAKb3NwZnYzU3R1Yk1ldHJpYyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgQmlnTWV0cmljIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBtZXRyaWMgdmFsdWUgYWR2ZXJ0aXNlZCBmb3IgdGhlIGRlZmF1bHQgcm91dGUgCiAgICAgICAgICAgICBpbnRvIFN0dWIgYW5kIE5TU0EgYXJlYXMuIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgMTAgfSAKIApvc3BmdjNBcmVhTnNzYVRyYW5zbGF0b3JSb2xlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJTlRFR0VSIHsgYWx3YXlzKDEpLCBjYW5kaWRhdGUoMikgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJbmRpY2F0ZXMgYW4gTlNTQSBCb3JkZXIgcm91dGVyJ3MgYWJpbGl0eSB0byAKICAgICAgICAgICAgcGVyZm9ybSBOU1NBIHRyYW5zbGF0aW9uIG9mIHR5cGUtNyBMU0FzIGludG8gCiAgICAgICAgICAgIHR5cGUtNSBMU0FzLiIgCiAgICAgICAgREVGVkFMIHsgY2FuZGlkYXRlIH0gCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUVudHJ5IDExIH0gCiAKb3NwZnYzQXJlYU5zc2FUcmFuc2xhdG9yU3RhdGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCgxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZWN0ZWQoMiksIAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCgzKSAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiSW5kaWNhdGVzIGlmIGFuZCBob3cgYW4gTlNTQSBCb3JkZXIgcm91dGVyIGlzIAogICAgICAgICAgICAgcGVyZm9ybWluZyBOU1NBIHRyYW5zbGF0aW9uIG9mIHR5cGUtNyBMU0FzIGludG8gdHlwZS01IAogICAgICAgICAgICAgTFNBcy4gV2hlbiB0aGlzIG9iamVjdCBpcyBzZXQgdG8gZW5hYmxlZCwgdGhlIE5TU0EgCiAgICAgICAgICAgICBCb3JkZXIgcm91dGVyJ3Mgb3NwZnYzQXJlYU5zc1RyYW5zbGF0b3JSb2xlIAogICAgICAgICAgICAgaGFzIGJlZW4gc2V0IHRvIGFsd2F5cy4gV2hlbiB0aGlzIG9iamVjdCBpcyBzZXQgdG8gCiAgICAgICAgICAgICBlbGVjdGVkLCBhIGNhbmRpZGF0ZSBOU1NBIEJvcmRlciByb3V0ZXIgaXMgdHJhbnNsYXRpbmcgCiAgICAgICAgICAgICB0eXBlLTcgTFNBcyBpbnRvIHR5cGUtNS4gV2hlbiB0aGlzIG9iamVjdCBpcyBzZXQgdG8gCiAgICAgICAgICAgICBkaXNhYmxlZCwgYSBjYW5kaWRhdGUgTlNTQSBCb3JkZXIgcm91dGVyIGlzIE5PVCAKICAgICAgICAgICAgIHRyYW5zbGF0aW5nIHR5cGUtNyBMU0FzIGludG8gdHlwZS01LiIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUVudHJ5IDEyIH0gCiAKb3NwZnYzQXJlYU5zc2FUcmFuc2xhdG9yU3RhYmlsaXR5SW50ZXJ2YWwgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFVuc2lnbmVkMzIgCiAgICAgICAgVU5JVFMgICAgICAgICAgICJzZWNvbmRzIiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIHNlY29uZHMgYWZ0ZXIgYW4gZWxlY3RlZCB0cmFuc2xhdG9yIAogICAgICAgICAgICBkZXRlcm1pbmVzIGl0cyBzZXJ2aWNlcyBhcmUgbm8gbG9uZ2VyIHJlcXVpcmVkLCB0aGF0IAogICAgICAgICAgICBpdCBzaG91bGQgY29udGludWUgdG8gcGVyZm9ybSBpdHMgdHJhbnNsYXRpb24gZHV0aWVzLiIgCiAgICAgICAgREVGVkFMIHsgNDAgfSAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhRW50cnkgMTMgfSAKIApvc3BmdjNBcmVhTnNzYVRyYW5zbGF0b3JFdmVudHMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIENvdW50ZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgVHJhbnNsYXRvciBTdGF0ZSBjaGFuZ2VzIAogICAgICAgICAgICB0aGF0IGhhdmUgb2NjdXJyZWQgc2luY2UgdGhlIGxhc3QgYm9vdC11cC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFFbnRyeSAxNCB9IAoKb3NwZnYzQXJlYVN0dWJNZXRyaWNUeXBlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICBJTlRFR0VSIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M01ldHJpYyAoMSksICAtLSBPU1BGIE1ldHJpYyAKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyYWJsZUNvc3QgKDIpLCAtLSBleHRlcm5hbCB0eXBlIDEgCiAgICAgICAgICAgICAgICAgICAgICAgIG5vbkNvbXBhcmFibGUgICgzKSAtLSBleHRlcm5hbCB0eXBlIDIgCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICJUaGlzIHZhcmlhYmxlIGRpc3BsYXlzIHRoZSB0eXBlIG9mIG1ldHJpYyBhZC0gCiAgICAgICAgICAgdmVydGlzZWQgYXMgYSBkZWZhdWx0IHJvdXRlLiIgCiAgICAgICAgREVGVkFMIHsgb3NwZnYzTWV0cmljIH0gCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUVudHJ5IDE1IH0gCgotLSBPU1BGdjMgQVMtU2NvcGUgTGluayBTdGF0ZSBEYXRhYmFzZSAKIAotLSBUaGUgTGluayBTdGF0ZSBEYXRhYmFzZSBjb250YWlucyB0aGUgQVMtU2NvcGUgTGluayBTdGF0ZSAKLS0gQWR2ZXJ0aXNlbWVudHMgZnJvbSB0aHJvdWdob3V0IHRoZSBhcmVhcyB0aGF0IHRoZSAKLS0gZGV2aWNlIGlzIGF0dGFjaGVkIHRvLiAKIApvc3BmdjNBc0xzZGJUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzQXNMc2RiRW50cnkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIE9TUEZ2MyBQcm9jZXNzJ3MgQVMtU2NvcGUgTGluayBTdGF0ZSBEYXRhYmFzZS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M09iamVjdHMgMyB9IAogCm9zcGZ2M0FzTHNkYkVudHJ5IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBPc3BmdjNBc0xzZGJFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJBIHNpbmdsZSBBUy1TY29wZSBMaW5rIFN0YXRlIEFkdmVydGlzZW1lbnQuIiAKICAgICAgICBJTkRFWCAgICAgICAgICAgeyBvc3BmdjNBc0xzZGJUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBc0xzZGJSb3V0ZXJJZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXNMc2RiTHNpZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0FzTHNkYlRhYmxlIDEgfSAKIApPc3BmdjNBc0xzZGJFbnRyeSA6Oj0gU0VRVUVOQ0UgeyAKICAgICAgICBvc3BmdjNBc0xzZGJUeXBlIAogICAgICAgICAgICAgICAgVW5zaWduZWQzMiwgCiAgICAgICAgb3NwZnYzQXNMc2RiUm91dGVySWQgCiAgICAgICAgICAgICAgICBSb3V0ZXJJRCwgCiAgICAgICAgb3NwZnYzQXNMc2RiTHNpZCAKICAgICAgICAgICAgICAgIElwQWRkcmVzcywgCiAgICAgICAgb3NwZnYzQXNMc2RiU2VxdWVuY2UgCiAgICAgICAgICAgICAgICBJbnRlZ2VyMzIsIAogICAgICAgIG9zcGZ2M0FzTHNkYkFnZSAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzQXNMc2RiQ2hlY2tzdW0gCiAgICAgICAgICAgICAgICBJbnRlZ2VyMzIsIAogICAgICAgIG9zcGZ2M0FzTHNkYkFkdmVydGlzZW1lbnQgCiAgICAgICAgICAgICAgICBPQ1RFVCBTVFJJTkcsIAogICAgICAgIG9zcGZ2M0FzTHNkYlR5cGVLbm93biAKICAgICAgICAgICAgICAgIFRydXRoVmFsdWUgCiAgICAgICAgfSAKIApvc3BmdjNBc0xzZGJUeXBlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBVbnNpZ25lZDMyKDAuLidGRkZGRkZGRidoKSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgdHlwZSBvZiB0aGUgbGluayBzdGF0ZSBhZHZlcnRpc2VtZW50LiAKICAgICAgICAgICAgRWFjaCBsaW5rIHN0YXRlIHR5cGUgaGFzIGEgc2VwYXJhdGUgYWR2ZXJ0aXNlLSAKICAgICAgICAgICAgbWVudCBmb3JtYXQuIEFTLVNjb3BlIExTQXMgbm90IHJlY29nbml6ZWQgYnkgCiAgICAgICAgICAgIHRoZSByb3V0ZXIgbWF5IGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIiAKICAgICAgICA6Oj0geyBvc3BmdjNBc0xzZGJFbnRyeSAxIH0gCiAKb3NwZnYzQXNMc2RiUm91dGVySWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvdXRlcklEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSAzMiBiaXQgbnVtYmVyIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgCiAgICAgICAgICAgIG9yaWdpbmF0aW5nIHJvdXRlciBpbiB0aGUgQXV0b25vbW91cyBTeXN0ZW0uIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4xIEdsb2JhbCBwYXJhbWV0ZXJzIiAKICAgICAgICA6Oj0geyBvc3BmdjNBc0xzZGJFbnRyeSAyIH0gCiAKb3NwZnYzQXNMc2RiTHNpZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSXBBZGRyZXNzIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBMaW5rIFN0YXRlIElEIGlzIGFuIExTIFR5cGUgU3BlY2lmaWMgZmllbGQgCiAgICAgICAgICAgIGNvbnRhaW5pbmcgYSB1bmlxdWUgaWRlbnRpZmllcjsgCiAgICAgICAgICAgIGl0IGlkZW50aWZpZXMgdGhlIHBpZWNlIG9mIHRoZSAgcm91dGluZyAgZG9tYWluIAogICAgICAgICAgICB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZCBieSB0aGUgYWR2ZXJ0aXNlbWVudC4gCiAgICAgICAgICAgIEluIGNvbnRyYXN0IHRvIE9TUEZ2MiwgdGhlIExTSUQgaGFzIG5vIAogICAgICAgICAgICBhZGRyZXNzaW5nIHNlbWFudGljcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FzTHNkYkVudHJ5IDMgfSAKIAotLSBOb3RlIHRoYXQgdGhlIE9TUEYgU2VxdWVuY2UgTnVtYmVyIGlzIGEgMzIgYml0IHNpZ25lZCAKLS0gaW50ZWdlci4gIEl0IHN0YXJ0cyB3aXRoIHRoZSB2YWx1ZSAnODAwMDAwMDEnaCwgCi0tIG9yIC0nN0ZGRkZGRkYnaCwgYW5kIGluY3JlbWVudHMgdW50aWwgJzdGRkZGRkZGJ2ggCi0tIFRodXMsIGEgdHlwaWNhbCBzZXF1ZW5jZSBudW1iZXIgd2lsbCBiZSB2ZXJ5IG5lZ2F0aXZlLiAKIApvc3BmdjNBc0xzZGJTZXF1ZW5jZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgc2VxdWVuY2UgbnVtYmVyIGZpZWxkIGlzIGEgIHNpZ25lZCAgMzItYml0IAogICAgICAgICAgICBpbnRlZ2VyLiAgIEl0ICBpcyB1c2VkIHRvIGRldGVjdCBvbGQgYW5kIGR1cGxpLSAKICAgICAgICAgICAgY2F0ZSBsaW5rIHN0YXRlIGFkdmVydGlzZW1lbnRzLiAgVGhlICBzcGFjZSAgb2YgCiAgICAgICAgICAgIHNlcXVlbmNlICBudW1iZXJzICBpcyAgbGluZWFybHkgIG9yZGVyZWQuICAgVGhlIAogICAgICAgICAgICBsYXJnZXIgdGhlIHNlcXVlbmNlIG51bWJlciB0aGUgbW9yZSByZWNlbnQgIHRoZSAKICAgICAgICAgICAgYWR2ZXJ0aXNlbWVudC4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAgMiwgIFNlY3Rpb24gIDEyLjEuNiAgTFMgIHNlcXVlbmNlIAogICAgICAgICAgICBudW1iZXIiIAogICAgICAgIDo6PSB7IG9zcGZ2M0FzTHNkYkVudHJ5IDQgfSAKIApvc3BmdjNBc0xzZGJBZ2UgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVnZXIzMiAtLSBTaG91bGQgYmUgMC4uTWF4QWdlIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gdW5sZXNzIERvTm90QWdlIGJpdCBpcyBzZXQgCiAgICAgICAgVU5JVFMgICAgICAgICAgICJzZWNvbmRzIiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyBmaWVsZCBpcyB0aGUgYWdlIG9mIHRoZSBsaW5rIHN0YXRlIGFkdmVyLSAKICAgICAgICAgICAgdGlzZW1lbnQgaW4gc2Vjb25kcy4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDEyLjEuMSBMUyBhZ2UiIAogICAgICAgIDo6PSB7IG9zcGZ2M0FzTHNkYkVudHJ5IDUgfSAKIApvc3BmdjNBc0xzZGJDaGVja3N1bSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIGZpZWxkIGlzIHRoZSAgY2hlY2tzdW0gIG9mICB0aGUgIGNvbXBsZXRlIAogICAgICAgICAgICBjb250ZW50cyAgb2YgIHRoZSAgYWR2ZXJ0aXNlbWVudCwgZXhjZXB0aW5nIHRoZSAKICAgICAgICAgICAgYWdlIGZpZWxkLiAgVGhlIGFnZSBmaWVsZCBpcyBleGNlcHRlZCAgc28gIHRoYXQgCiAgICAgICAgICAgIGFuICAgYWR2ZXJ0aXNlbWVudCdzICBhZ2UgIGNhbiAgYmUgIGluY3JlbWVudGVkIAogICAgICAgICAgICB3aXRob3V0IHVwZGF0aW5nIHRoZSAgY2hlY2tzdW0uICAgVGhlICBjaGVja3N1bSAKICAgICAgICAgICAgdXNlZCAgaXMgIHRoZSBzYW1lIHRoYXQgaXMgdXNlZCBmb3IgSVNPIGNvbm5lYy0gCiAgICAgICAgICAgIHRpb25sZXNzIGRhdGFncmFtczsgaXQgaXMgY29tbW9ubHkgcmVmZXJyZWQgIHRvIAogICAgICAgICAgICBhcyB0aGUgRmxldGNoZXIgY2hlY2tzdW0uIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgU2VjdGlvbiAxMi4xLjcgTFMgY2hlY2tzdW0iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FzTHNkYkVudHJ5IDYgfSAKIApvc3BmdjNBc0xzZGJBZHZlcnRpc2VtZW50IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjY1NTM1KSkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBlbnRpcmUgTGluayBTdGF0ZSBBZHZlcnRpc2VtZW50LCBpbmNsdWRpbmcgCiAgICAgICAgICAgIGl0cyBoZWFkZXIuIiAKICAgICAgICA6Oj0geyBvc3BmdjNBc0xzZGJFbnRyeSA3IH0gCiAKb3NwZnYzQXNMc2RiVHlwZUtub3duIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBUcnV0aFZhbHVlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJcyB0aGUgTFNBIHR5cGUgcmVjb2duaXplZCBieSB0aGlzIFJvdXRlcj8iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FzTHNkYkVudHJ5IDggfSAKIAogCi0tIE9TUEZ2MyBBcmVhLVNjb3BlIExpbmsgU3RhdGUgRGF0YWJhc2UgCiAKLS0gVGhlIExpbmsgU3RhdGUgRGF0YWJhc2UgY29udGFpbnMgdGhlIEFyZWEtU2NvcGUgTGluayBTdGF0ZSAKLS0gQWR2ZXJ0aXNlbWVudHMgZnJvbSB0aHJvdWdob3V0IHRoZSBhcmVhIHRoYXQgdGhlIAotLSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8uIAogCm9zcGZ2M0FyZWFMc2RiVGFibGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFNFUVVFTkNFIE9GIE9zcGZ2M0FyZWFMc2RiRW50cnkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIE9TUEZ2MyBQcm9jZXNzJ3MgQXJlYS1TY29wZSBMaW5rIFN0YXRlIERhdGFiYXNlLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzT2JqZWN0cyA0IH0gCiAKb3NwZnYzQXJlYUxzZGJFbnRyeSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgT3NwZnYzQXJlYUxzZGJFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJBIHNpbmdsZSBBcmVhLVNjb3BlIExpbmsgU3RhdGUgQWR2ZXJ0aXNlbWVudC4iIAogICAgICAgIElOREVYICAgICAgICAgICB7IG9zcGZ2M0FyZWFMc2RiQXJlYUlkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhTHNkYlR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFMc2RiUm91dGVySWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFMc2RiTHNpZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFMc2RiVGFibGUgMSB9IAogCk9zcGZ2M0FyZWFMc2RiRW50cnkgOjo9IFNFUVVFTkNFIHsgCiAgICAgICAgb3NwZnYzQXJlYUxzZGJBcmVhSWQgCiAgICAgICAgICAgICAgICBBcmVhSUQsIAogICAgICAgIG9zcGZ2M0FyZWFMc2RiVHlwZSAKICAgICAgICAgICAgICAgIFVuc2lnbmVkMzIsIAogICAgICAgIG9zcGZ2M0FyZWFMc2RiUm91dGVySWQgCiAgICAgICAgICAgICAgICBSb3V0ZXJJRCwgCiAgICAgICAgb3NwZnYzQXJlYUxzZGJMc2lkIAogICAgICAgICAgICAgICAgSXBBZGRyZXNzLCAKICAgICAgICBvc3BmdjNBcmVhTHNkYlNlcXVlbmNlIAogICAgICAgICAgICAgICAgSW50ZWdlcjMyLCAKICAgICAgICBvc3BmdjNBcmVhTHNkYkFnZSAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzQXJlYUxzZGJDaGVja3N1bSAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzQXJlYUxzZGJBZHZlcnRpc2VtZW50IAogICAgICAgICAgICAgICAgT0NURVQgU1RSSU5HLCAKICAgICAgICBvc3BmdjNBcmVhTHNkYlR5cGVLbm93biAKICAgICAgICAgICAgICAgIFRydXRoVmFsdWUgCiAgICAgICAgfSAKIApvc3BmdjNBcmVhTHNkYkFyZWFJZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgQXJlYUlEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSAzMiBiaXQgaWRlbnRpZmllciBvZiB0aGUgQXJlYSBmcm9tIHdoaWNoIHRoZSAKICAgICAgICAgICAgTFNBIHdhcyByZWNlaXZlZC4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBBcHBlbmRpeCBDLjIgQXJlYSBwYXJhbWV0ZXJzIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhTHNkYkVudHJ5IDEgfSAKIApvc3BmdjNBcmVhTHNkYlR5cGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFVuc2lnbmVkMzIoMC4uJ0ZGRkZGRkZGJ2gpIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSB0eXBlICBvZiAgdGhlICBsaW5rICBzdGF0ZSAgYWR2ZXJ0aXNlbWVudC4gCiAgICAgICAgICAgIEVhY2ggIGxpbmsgc3RhdGUgdHlwZSBoYXMgYSBzZXBhcmF0ZSBhZHZlcnRpc2UtIAogICAgICAgICAgICBtZW50IGZvcm1hdC4gQXJlYS1TY29wZSBMU0FzIHVucmVjb2duaXplZCBieSB0aGUgCiAgICAgICAgICAgIHJvdXRlciBhcmUgYWxzbyBzdG9yZWQgaW4gdGhpcyBkYXRhYmFzZS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFMc2RiRW50cnkgMiB9IAogCm9zcGZ2M0FyZWFMc2RiUm91dGVySWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvdXRlcklEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSAzMiBiaXQgbnVtYmVyIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgCiAgICAgICAgICAgIG9yaWdpbmF0aW5nIHJvdXRlciBpbiB0aGUgQXV0b25vbW91cyBTeXN0ZW0uIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4xIEdsb2JhbCBwYXJhbWV0ZXJzIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhTHNkYkVudHJ5IDMgfSAKIApvc3BmdjNBcmVhTHNkYkxzaWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElwQWRkcmVzcyAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgTGluayBTdGF0ZSBJRCBpcyBhbiBMUyBUeXBlIFNwZWNpZmljIGZpZWxkIAogICAgICAgICAgICBjb250YWluaW5nIGEgdW5pcXVlIGlkZW50aWZpZXI7IAogICAgICAgICAgICBpdCBpZGVudGlmaWVzIHRoZSBwaWVjZSBvZiB0aGUgIHJvdXRpbmcgIGRvbWFpbiAKICAgICAgICAgICAgdGhhdCBpcyBiZWluZyBkZXNjcmliZWQgYnkgdGhlIGFkdmVydGlzZW1lbnQuIAogICAgICAgICAgICBJbiBjb250cmFzdCB0byBPU1BGdjIsIHRoZSBMU0lEIGhhcyBubyAKICAgICAgICAgICAgYWRkcmVzc2luZyBzZW1hbnRpY3MuIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhTHNkYkVudHJ5IDQgfSAKIAotLSBOb3RlIHRoYXQgdGhlIE9TUEYgU2VxdWVuY2UgTnVtYmVyIGlzIGEgMzIgYml0IHNpZ25lZCAKLS0gaW50ZWdlci4gIEl0IHN0YXJ0cyB3aXRoIHRoZSB2YWx1ZSAnODAwMDAwMDEnaCwgCi0tIG9yIC0nN0ZGRkZGRkYnaCwgYW5kIGluY3JlbWVudHMgdW50aWwgJzdGRkZGRkZGJ2ggCi0tIFRodXMsIGEgdHlwaWNhbCBzZXF1ZW5jZSBudW1iZXIgd2lsbCBiZSB2ZXJ5IG5lZ2F0aXZlLiAKIApvc3BmdjNBcmVhTHNkYlNlcXVlbmNlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJbnRlZ2VyMzIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBzZXF1ZW5jZSBudW1iZXIgZmllbGQgaXMgYSAgc2lnbmVkICAzMi1iaXQgCiAgICAgICAgICAgIGludGVnZXIuICAgSXQgIGlzIHVzZWQgdG8gZGV0ZWN0IG9sZCBhbmQgZHVwbGktIAogICAgICAgICAgICBjYXRlIGxpbmsgc3RhdGUgYWR2ZXJ0aXNlbWVudHMuICBUaGUgIHNwYWNlICBvZiAKICAgICAgICAgICAgc2VxdWVuY2UgIG51bWJlcnMgIGlzICBsaW5lYXJseSAgb3JkZXJlZC4gICBUaGUgCiAgICAgICAgICAgIGxhcmdlciB0aGUgc2VxdWVuY2UgbnVtYmVyIHRoZSBtb3JlIHJlY2VudCAgdGhlIAogICAgICAgICAgICBhZHZlcnRpc2VtZW50LiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uICAyLCAgU2VjdGlvbiAgMTIuMS42ICBMUyAgc2VxdWVuY2UgCiAgICAgICAgICAgIG51bWJlciIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUxzZGJFbnRyeSA1IH0gCiAKb3NwZnYzQXJlYUxzZGJBZ2UgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVnZXIzMiAtLSBTaG91bGQgYmUgMC4uTWF4QWdlIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gdW5sZXNzIERvTm90QWdlIGJpdCBpcyBzZXQgCiAgICAgICAgVU5JVFMgICAgICAgICAgICJzZWNvbmRzIiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyBmaWVsZCBpcyB0aGUgYWdlIG9mIHRoZSBsaW5rIHN0YXRlIGFkdmVyLSAKICAgICAgICAgICAgdGlzZW1lbnQgaW4gc2Vjb25kcy4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDEyLjEuMSBMUyBhZ2UiIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFMc2RiRW50cnkgNiB9IAogCm9zcGZ2M0FyZWFMc2RiQ2hlY2tzdW0gT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVnZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyBmaWVsZCBpcyB0aGUgIGNoZWNrc3VtICBvZiAgdGhlICBjb21wbGV0ZSAKICAgICAgICAgICAgY29udGVudHMgIG9mICB0aGUgIGFkdmVydGlzZW1lbnQsIGV4Y2VwdGluZyB0aGUgCiAgICAgICAgICAgIGFnZSBmaWVsZC4gIFRoZSBhZ2UgZmllbGQgaXMgZXhjZXB0ZWQgIHNvICB0aGF0IAogICAgICAgICAgICBhbiAgIGFkdmVydGlzZW1lbnQncyAgYWdlICBjYW4gIGJlICBpbmNyZW1lbnRlZCAKICAgICAgICAgICAgd2l0aG91dCB1cGRhdGluZyB0aGUgIGNoZWNrc3VtLiAgIFRoZSAgY2hlY2tzdW0gCiAgICAgICAgICAgIHVzZWQgIGlzICB0aGUgc2FtZSB0aGF0IGlzIHVzZWQgZm9yIElTTyBjb25uZWMtIAogICAgICAgICAgICB0aW9ubGVzcyBkYXRhZ3JhbXM7IGl0IGlzIGNvbW1vbmx5IHJlZmVycmVkICB0byAKICAgICAgICAgICAgYXMgdGhlIEZsZXRjaGVyIGNoZWNrc3VtLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIFNlY3Rpb24gMTIuMS43IExTIGNoZWNrc3VtIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhTHNkYkVudHJ5IDcgfSAKIApvc3BmdjNBcmVhTHNkYkFkdmVydGlzZW1lbnQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIE9DVEVUIFNUUklORyAoU0laRSAoMS4uNjU1MzUpKSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIGVudGlyZSBMaW5rIFN0YXRlIEFkdmVydGlzZW1lbnQsIGluY2x1ZGluZyAKICAgICAgICAgICAgaXRzIGhlYWRlci4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFMc2RiRW50cnkgOCB9IAogCm9zcGZ2M0FyZWFMc2RiVHlwZUtub3duIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBUcnV0aFZhbHVlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJcyB0aGUgTFNBIHR5cGUgcmVjb2duaXplZCBieSB0aGlzIFJvdXRlcj8iIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFMc2RiRW50cnkgOSB9IAogCi0tIE9TUEZ2MyBMaW5rLVNjb3BlIExpbmsgU3RhdGUgRGF0YWJhc2UgCiAKLS0gVGhlIExpbmsgU3RhdGUgRGF0YWJhc2UgY29udGFpbnMgdGhlIExpbmstU2NvcGUgTGluayBTdGF0ZSAKLS0gQWR2ZXJ0aXNlbWVudHMgZnJvbSB0aGUgbGlua3MgdGhhdCB0aGUgCi0tIGRldmljZSBpcyBhdHRhY2hlZCB0by4gCiAKb3NwZnYzTGlua0xzZGJUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzTGlua0xzZGJFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgT1NQRnYzIFByb2Nlc3MncyBMaW5rLVNjb3BlIExpbmsgU3RhdGUgRGF0YWJhc2UuIiAKICAgICAgICA6Oj0geyBvc3BmdjNPYmplY3RzIDUgfSAKIApvc3BmdjNMaW5rTHNkYkVudHJ5IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBPc3BmdjNMaW5rTHNkYkVudHJ5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgc2luZ2xlIExpbmstU2NvcGUgTGluayBTdGF0ZSBBZHZlcnRpc2VtZW50LiIgCiAgICAgICAgSU5ERVggICAgICAgICAgIHsgb3NwZnYzTGlua0xzZGJJZkluZGV4LCAKICAgICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNMaW5rTHNkYlR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0xpbmtMc2RiUm91dGVySWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0xpbmtMc2RiTHNpZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0xpbmtMc2RiVGFibGUgMSB9IAogCk9zcGZ2M0xpbmtMc2RiRW50cnkgOjo9IFNFUVVFTkNFIHsgCiAgICAgICAgb3NwZnYzTGlua0xzZGJJZkluZGV4IAogICAgICAgICAgICAgICAgSW50ZXJmYWNlSW5kZXgsIAogICAgICAgIG9zcGZ2M0xpbmtMc2RiVHlwZSAKICAgICAgICAgICAgICAgIFVuc2lnbmVkMzIsIAogICAgICAgIG9zcGZ2M0xpbmtMc2RiUm91dGVySWQgCiAgICAgICAgICAgICAgICBSb3V0ZXJJRCwgCiAgICAgICAgb3NwZnYzTGlua0xzZGJMc2lkIAogICAgICAgICAgICAgICAgSXBBZGRyZXNzLCAKICAgICAgICBvc3BmdjNMaW5rTHNkYlNlcXVlbmNlIAogICAgICAgICAgICAgICAgSW50ZWdlcjMyLCAKICAgICAgICBvc3BmdjNMaW5rTHNkYkFnZSAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzTGlua0xzZGJDaGVja3N1bSAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzTGlua0xzZGJBZHZlcnRpc2VtZW50IAogICAgICAgICAgICAgICAgT0NURVQgU1RSSU5HLCAKICAgICAgICBvc3BmdjNMaW5rTHNkYlR5cGVLbm93biAKICAgICAgICAgICAgICAgIFRydXRoVmFsdWUgCiAgICAgICAgfSAKIApvc3BmdjNMaW5rTHNkYklmSW5kZXggT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgSW50ZXJmYWNlSW5kZXggCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBpZGVudGlmaWVyIG9mIHRoZSBsaW5rIGZyb20gd2hpY2ggdGhlIExTQSAKICAgICAgICAgICAgd2FzIHJlY2VpdmVkLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIEFwcGVuZGl4IEMuMiBBcmVhIHBhcmFtZXRlcnMiIAogICAgICAgIDo6PSB7IG9zcGZ2M0xpbmtMc2RiRW50cnkgMSB9IAogCm9zcGZ2M0xpbmtMc2RiVHlwZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVW5zaWduZWQzMigwLi4nRkZGRkZGRkYnaCkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHR5cGUgb2YgdGhlIGxpbmsgc3RhdGUgYWR2ZXJ0aXNlbWVudC4gCiAgICAgICAgICAgIEVhY2ggbGluayBzdGF0ZSB0eXBlIGhhcyBhIHNlcGFyYXRlIGFkdmVydGlzZS0gCiAgICAgICAgICAgIG1lbnQgZm9ybWF0LiBMaW5rLVNjb3BlIExTQXMgdW5yZWNvZ25pemVkIGJ5IHRoZSAKICAgICAgICAgICAgcm91dGVyIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGlzIGRhdGFiYXNlLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTGlua0xzZGJFbnRyeSAyIH0gCiAKb3NwZnYzTGlua0xzZGJSb3V0ZXJJZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgUm91dGVySUQgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIDMyIGJpdCBudW1iZXIgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSAKICAgICAgICAgICAgb3JpZ2luYXRpbmcgcm91dGVyIGluIHRoZSBBdXRvbm9tb3VzIFN5c3RlbS4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBBcHBlbmRpeCBDLjEgR2xvYmFsIHBhcmFtZXRlcnMiIAogICAgICAgIDo6PSB7IG9zcGZ2M0xpbmtMc2RiRW50cnkgMyB9IAogCm9zcGZ2M0xpbmtMc2RiTHNpZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgIElwQWRkcmVzcyAKICAgICAgICBNQVgtQUNDRVNTICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBMaW5rIFN0YXRlIElEIGlzIGFuIExTIFR5cGUgU3BlY2lmaWMgZmllbGQgCiAgICAgICAgICAgIGNvbnRhaW5pbmcgYSB1bmlxdWUgaWRlbnRpZmllcjsgCiAgICAgICAgICAgIGl0IGlkZW50aWZpZXMgdGhlIHBpZWNlIG9mIHRoZSAgcm91dGluZyAgZG9tYWluIAogICAgICAgICAgICB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZCBieSB0aGUgYWR2ZXJ0aXNlbWVudC4gCiAgICAgICAgICAgIEluIGNvbnRyYXN0IHRvIE9TUEZ2MiwgdGhlIExTSUQgaGFzIG5vIAogICAgICAgICAgICBhZGRyZXNzaW5nIHNlbWFudGljcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0xpbmtMc2RiRW50cnkgNCB9IAogCi0tIE5vdGUgdGhhdCB0aGUgT1NQRiBTZXF1ZW5jZSBOdW1iZXIgaXMgYSAzMiBiaXQgc2lnbmVkIAotLSBpbnRlZ2VyLiAgSXQgc3RhcnRzIHdpdGggdGhlIHZhbHVlICc4MDAwMDAwMSdoLCAKLS0gb3IgLSc3RkZGRkZGRidoLCBhbmQgaW5jcmVtZW50cyB1bnRpbCAnN0ZGRkZGRkYnaCAKLS0gVGh1cywgYSB0eXBpY2FsIHNlcXVlbmNlIG51bWJlciB3aWxsIGJlIHZlcnkgbmVnYXRpdmUuIAogCm9zcGZ2M0xpbmtMc2RiU2VxdWVuY2UgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVnZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHNlcXVlbmNlIG51bWJlciBmaWVsZCBpcyBhICBzaWduZWQgIDMyLWJpdCAKICAgICAgICAgICAgaW50ZWdlci4gICBJdCAgaXMgdXNlZCB0byBkZXRlY3Qgb2xkIGFuZCBkdXBsaS0gCiAgICAgICAgICAgIGNhdGUgbGluayBzdGF0ZSBhZHZlcnRpc2VtZW50cy4gIFRoZSAgc3BhY2UgIG9mIAogICAgICAgICAgICBzZXF1ZW5jZSAgbnVtYmVycyAgaXMgIGxpbmVhcmx5ICBvcmRlcmVkLiAgIFRoZSAKICAgICAgICAgICAgbGFyZ2VyIHRoZSBzZXF1ZW5jZSBudW1iZXIgdGhlIG1vcmUgcmVjZW50ICB0aGUgCiAgICAgICAgICAgIGFkdmVydGlzZW1lbnQuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gIDIsICBTZWN0aW9uICAxMi4xLjYgIExTICBzZXF1ZW5jZSAKICAgICAgICAgICAgbnVtYmVyIiAKICAgICAgICA6Oj0geyBvc3BmdjNMaW5rTHNkYkVudHJ5IDUgfSAKIApvc3BmdjNMaW5rTHNkYkFnZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIC0tIFNob3VsZCBiZSAwLi5NYXhBZ2UgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSB1bmxlc3MgRG9Ob3RBZ2UgYml0IGlzIHNldCAKICAgICAgICBVTklUUyAgICAgICAgICAgInNlY29uZHMiIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIGZpZWxkIGlzIHRoZSBhZ2Ugb2YgdGhlIGxpbmsgc3RhdGUgCiAgICAgICAgICAgIGFkdmVydGlzZW1lbnQgaW4gc2Vjb25kcy4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDEyLjEuMSBMUyBhZ2UiIAogICAgICAgIDo6PSB7IG9zcGZ2M0xpbmtMc2RiRW50cnkgNiB9IAogCm9zcGZ2M0xpbmtMc2RiQ2hlY2tzdW0gT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVnZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyBmaWVsZCBpcyB0aGUgIGNoZWNrc3VtICBvZiAgdGhlICBjb21wbGV0ZSAKICAgICAgICAgICAgY29udGVudHMgIG9mICB0aGUgIGFkdmVydGlzZW1lbnQsIGV4Y2VwdGluZyB0aGUgCiAgICAgICAgICAgIGFnZSBmaWVsZC4gIFRoZSBhZ2UgZmllbGQgaXMgZXhjZXB0ZWQgIHNvICB0aGF0IAogICAgICAgICAgICBhbiAgIGFkdmVydGlzZW1lbnQncyAgYWdlICBjYW4gIGJlICBpbmNyZW1lbnRlZCAKICAgICAgICAgICAgd2l0aG91dCB1cGRhdGluZyB0aGUgIGNoZWNrc3VtLiAgIFRoZSAgY2hlY2tzdW0gCiAgICAgICAgICAgIHVzZWQgIGlzICB0aGUgc2FtZSB0aGF0IGlzIHVzZWQgZm9yIElTTyBjb25uZWMtIAogICAgICAgICAgICB0aW9ubGVzcyBkYXRhZ3JhbXM7IGl0IGlzIGNvbW1vbmx5IHJlZmVycmVkICB0byAKICAgICAgICAgICAgYXMgdGhlIEZsZXRjaGVyIGNoZWNrc3VtLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIFNlY3Rpb24gMTIuMS43IExTIGNoZWNrc3VtIiAKICAgICAgICA6Oj0geyBvc3BmdjNMaW5rTHNkYkVudHJ5IDcgfSAKIApvc3BmdjNMaW5rTHNkYkFkdmVydGlzZW1lbnQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIE9DVEVUIFNUUklORyAoU0laRSAoMS4uNjU1MzUpKSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIGVudGlyZSBMaW5rIFN0YXRlIEFkdmVydGlzZW1lbnQsIGluY2x1ZGluZyAKICAgICAgICAgICAgaXRzIGhlYWRlci4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0xpbmtMc2RiRW50cnkgOCB9IAogCm9zcGZ2M0xpbmtMc2RiVHlwZUtub3duIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBUcnV0aFZhbHVlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJbmRpY2F0ZXMgd2hldGhlciB0aGUgTFNBIHR5cGUgaXMgcmVjb2duaXplZCBieSB0aGlzIAogICAgICAgICAgICAgUm91dGVyLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTGlua0xzZGJFbnRyeSA5IH0gCiAKIAotLSBPU1BGIEhvc3QgVGFibGUgCiAKLS0gVGhlIEhvc3QvTWV0cmljIFRhYmxlIGluZGljYXRlcyB3aGF0IGhvc3RzIGFyZSBkaXJlY3RseSAKLS0gYXR0YWNoZWQgdG8gdGhlIFJvdXRlciwgYW5kIHdoYXQgbWV0cmljcyBhbmQgdHlwZXMgb2YgCi0tIHNlcnZpY2Ugc2hvdWxkIGJlIGFkdmVydGlzZWQgZm9yIHRoZW0uIAogCm9zcGZ2M0hvc3RUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzSG9zdEVudHJ5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBsaXN0IG9mIEhvc3RzLCBhbmQgdGhlaXIgbWV0cmljcywgdGhhdCB0aGUgCiAgICAgICAgICAgIHJvdXRlciB3aWxsIGFkdmVydGlzZSBhcyBob3N0IHJvdXRlcy4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBBcHBlbmRpeCBDLjYgIEhvc3Qgcm91dGUgcGFyYW0tIAogICAgICAgICAgICBldGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzT2JqZWN0cyA2IH0gCiAKb3NwZnYzSG9zdEVudHJ5IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBPc3BmdjNIb3N0RW50cnkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSBtZXRyaWMgdG8gYmUgYWR2ZXJ0aXNlZCB3aGVuIGEgZ2l2ZW4gaG9zdCBpcyAKICAgICAgICAgICAgcmVhY2hhYmxlLiIgCiAgICAgICAgSU5ERVggICAgICAgICAgIHsgb3NwZnYzSG9zdEFkZHJlc3NUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNIb3N0QWRkcmVzcyB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0hvc3RUYWJsZSAxIH0gCiAKT3NwZnYzSG9zdEVudHJ5IDo6PSBTRVFVRU5DRSB7IAogICAgICAgIG9zcGZ2M0hvc3RBZGRyZXNzVHlwZSAKICAgICAgICAgICAgICAgIEluZXRBZGRyZXNzVHlwZSwgCiAgICAgICAgb3NwZnYzSG9zdEFkZHJlc3MgCiAgICAgICAgICAgICAgICBJbmV0QWRkcmVzcywgCiAgICAgICAgb3NwZnYzSG9zdE1ldHJpYyAKICAgICAgICAgICAgICAgIE1ldHJpYywgCiAgICAgICAgb3NwZnYzSG9zdFN0YXR1cyAKICAgICAgICAgICAgICAgIFJvd1N0YXR1cywgCiAgICAgICAgb3NwZnYzSG9zdEFyZWFJRCAKICAgICAgICAgICAgICAgIEFyZWFJRCAKICAgICAgICB9IAogCm9zcGZ2M0hvc3RBZGRyZXNzVHlwZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3NUeXBlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBhZGRyZXNzIHR5cGUgb2Ygb3NwZnYzSG9zdEFkZHJlc3MuIE9ubHkgSVB2NiAKICAgICAgICAgICAgYWRkcmVzc2VzIHdpdGhvdXQgem9uZSBpbmRleCBhcmUgZXhwZWN0ZWQuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy42IEhvc3Qgcm91dGUgcGFyYW1lLSAKICAgICAgICAgICAgdGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzSG9zdEVudHJ5IDEgfSAKIAogCm9zcGZ2M0hvc3RBZGRyZXNzIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJbmV0QWRkcmVzcyAoU0laRSAoMTYpKSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgSVB2NiBBZGRyZXNzIG9mIHRoZSBIb3N0LiBNdXN0IGJlIGEgR2xvYmFsIAogICAgICAgICAgICAgb3IgU2l0ZS1sb2NhbCBhZGRyZXNzLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIEFwcGVuZGl4IEMuNiBIb3N0IHJvdXRlIHBhcmFtZS0gCiAgICAgICAgICAgIHRlcnMiIAogICAgICAgIDo6PSB7IG9zcGZ2M0hvc3RFbnRyeSAyIH0gCiAKb3NwZnYzSG9zdE1ldHJpYyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgTWV0cmljIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBNZXRyaWMgdG8gYmUgYWR2ZXJ0aXNlZC4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBBcHBlbmRpeCBDLjYgSG9zdCByb3V0ZSBwYXJhbWUtIAogICAgICAgICAgICB0ZXJzIiAKICAgICAgICA6Oj0geyBvc3BmdjNIb3N0RW50cnkgMyB9IAogCm9zcGZ2M0hvc3RTdGF0dXMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvd1N0YXR1cyAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBzdGF0dXMgb2YgIHRoZSAgZW4tIAogICAgICAgICAgICB0cnkuIFRoZSB1c2Ugb2YgUm93U3RhdHVzIGlzIGNvdmVyZWQgaW4gbW9yZSBkZXRhaWwgCiAgICAgICAgICAgIGluIFs2XS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0hvc3RFbnRyeSA0IH0gCiAKb3NwZnYzSG9zdEFyZWFJRCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgQXJlYUlEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBBcmVhIHRoZSBIb3N0IEVudHJ5IGlzIHRvIGJlIGZvdW5kIHdpdGhpbi4gCiAgICAgICAgICAgIEJ5ICBkZWZhdWx0LCB0aGUgYXJlYSB0aGF0IGEgc3Vic3VtaW5nIE9TUEZ2MyBpbi0gCiAgICAgICAgICAgIHRlcmZhY2UgaXMgaW4sIG9yIDAuMC4wLjAiIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBBcHBlbmRpeCBDLjIgQXJlYSBwYXJhbWV0ZXJzIiAKICAgICAgICA6Oj0geyBvc3BmdjNIb3N0RW50cnkgNSB9IAogCi0tIE9TUEZ2MyBJbnRlcmZhY2UgVGFibGUgCiAKb3NwZnYzSWZUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzSWZFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgT1NQRnYzIEludGVyZmFjZSBUYWJsZSBkZXNjcmliZXMgdGhlICBpbnRlci0gCiAgICAgICAgICAgIGZhY2VzIGZyb20gdGhlIHZpZXdwb2ludCBvZiBPU1BGdjMuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4zICBSb3V0ZXIgIGludGVyZmFjZSAKICAgICAgICAgICAgcGFyYW1ldGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzT2JqZWN0cyA3IH0gCiAKb3NwZnYzSWZFbnRyeSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgT3NwZnYzSWZFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgT1NQRnYzIEludGVyZmFjZSBFbnRyeSBkZXNjcmliZXMgb25lICBpbnRlci0gCiAgICAgICAgICAgIGZhY2UgZnJvbSB0aGUgdmlld3BvaW50IG9mIE9TUEZ2My4iIAogICAgICAgIElOREVYICAgICAgICAgICB7IG9zcGZ2M0lmSW5kZXggfSAKICAgICAgICA6Oj0geyBvc3BmdjNJZlRhYmxlIDEgfSAKIAogCk9zcGZ2M0lmRW50cnkgOjo9IFNFUVVFTkNFIHsgCiAgICAgICAgb3NwZnYzSWZJbmRleCAKICAgICAgICAgICAgICAgIEludGVyZmFjZUluZGV4LCAKICAgICAgICBvc3BmdjNJZkFyZWFJZCAKICAgICAgICAgICAgICAgIEFyZWFJRCwgCiAgICAgICAgb3NwZnYzSWZUeXBlIAogICAgICAgICAgICAgICAgSU5URUdFUiwgCiAgICAgICAgb3NwZnYzSWZBZG1pblN0YXQgCiAgICAgICAgICAgICAgICBTdGF0dXMsIAogICAgICAgIG9zcGZ2M0lmUnRyUHJpb3JpdHkgCiAgICAgICAgICAgICAgICBEZXNpZ25hdGVkUm91dGVyUHJpb3JpdHksIAogICAgICAgIG9zcGZ2M0lmVHJhbnNpdERlbGF5IAogICAgICAgICAgICAgICAgVXBUb1JlZnJlc2hJbnRlcnZhbCwgCiAgICAgICAgb3NwZnYzSWZSZXRyYW5zSW50ZXJ2YWwgCiAgICAgICAgICAgICAgICBVcFRvUmVmcmVzaEludGVydmFsLCAKICAgICAgICBvc3BmdjNJZkhlbGxvSW50ZXJ2YWwgCiAgICAgICAgICAgICAgICBIZWxsb1JhbmdlLCAKICAgICAgICBvc3BmdjNJZlJ0ckRlYWRJbnRlcnZhbCAKICAgICAgICAgICAgICAgICBSb3V0ZXJEZWFkUmFuZ2UsIAogICAgICAgIG9zcGZ2M0lmUG9sbEludGVydmFsIAogICAgICAgICAgICAgICAgVW5zaWduZWQzMiwgCiAgICAgICAgb3NwZnYzSWZTdGF0ZSAKICAgICAgICAgICAgICAgIElOVEVHRVIsIAogICAgICAgIG9zcGZ2M0lmRGVzaWduYXRlZFJvdXRlciAKICAgICAgICAgICAgICAgIFJvdXRlcklELCAKICAgICAgICBvc3BmdjNJZkJhY2t1cERlc2lnbmF0ZWRSb3V0ZXIgCiAgICAgICAgICAgICAgICBSb3V0ZXJJRCwgCiAgICAgICAgb3NwZnYzSWZFdmVudHMgCiAgICAgICAgICAgICAgICBDb3VudGVyMzIsIAogICAgICAgIG9zcGZ2M0lmU3RhdHVzIAogICAgICAgICAgICAgICAgUm93U3RhdHVzLCAKICAgICAgICBvc3BmdjNJZk11bHRpY2FzdEZvcndhcmRpbmcgCiAgICAgICAgICAgICAgICBJTlRFR0VSLCAKICAgICAgICBvc3BmdjNJZkRlbWFuZCAKICAgICAgICAgICAgICAgIFRydXRoVmFsdWUsIAogICAgICAgIG9zcGZ2M0lmTWV0cmljVmFsdWUgCiAgICAgICAgICAgICAgICBNZXRyaWMsIAogICAgICAgIG9zcGZ2M0lmTGlua1Njb3BlTHNhQ291bnQgCiAgICAgICAgICAgICAgICBHYXVnZTMyLCAKICAgICAgICBvc3BmdjNJZkxpbmtMc2FDa3N1bVN1bSAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzSWZJbnN0SWQgCiAgICAgICAgICAgICAgICBJbnRlZ2VyMzIsIAogICAgICAgIG9zcGZ2M0lmRGVtYW5kTmJyUHJvYmUgCiAgICAgICAgICAgICAgICBUcnV0aFZhbHVlLCAKICAgICAgICBvc3BmdjNJZkRlbWFuZE5iclByb2JlUmV0eExpbWl0ICAKICAgICAgICAgICAgICAgIFVuc2lnbmVkMzIsIAogICAgICAgIG9zcGZ2M0lmRGVtYW5kTmJyUHJvYmVJbnRlcnZhbCAgCiAgICAgICAgICAgICAgICBVbnNpZ25lZDMyIAogICAgICAgIH0gCiAKb3NwZnYzSWZJbmRleCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZXJmYWNlSW5kZXggCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIGludGVyZmFjZSBpbmRleCBvZiB0aGlzIE9TUEZ2MyBpbnRlcmZhY2UuIAogICAgICAgICAgICAgSXQgY29ycmVzcG9uZHMgdG8gdGhlIGludGVyZmFjZSBpbmRleCBvZiB0aGUgCiAgICAgICAgICAgICBJUHY2IGludGVyZmFjZSBvbiB3aGljaCBPU1BGdjMgaXMgY29uZmlndXJlZC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMSB9IAogCm9zcGZ2M0lmQXJlYUlkIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBBcmVhSUQgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSAzMi1iaXQgaW50ZWdlciB1bmlxdWVseSBpZGVudGlmeWluZyB0aGUgYXJlYSAKICAgICAgICAgICAgdG8gIHdoaWNoICB0aGUgIGludGVyZmFjZSAgY29ubmVjdHMuICAgQXJlYSAgSUQgCiAgICAgICAgICAgIDAuMC4wLjAgaXMgdXNlZCBmb3IgdGhlIE9TUEZ2MyBiYWNrYm9uZS4iIAogICAgICAgIERFRlZBTCAgICAgICAgICB7ICcwMDAwMDAwMCdIIH0gLS0gMC4wLjAuMCAKICAgICAgICA6Oj0geyBvc3BmdjNJZkVudHJ5IDIgfSAKIApvc3BmdjNJZlR5cGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgYnJvYWRjYXN0KDEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgbmJtYSgyKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50VG9Qb2ludCgzKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50VG9NdWx0aXBvaW50KDUpIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBPU1BGdjMgaW50ZXJmYWNlIHR5cGUuIiAKICAgICAgICA6Oj0geyBvc3BmdjNJZkVudHJ5IDMgfSAKIApvc3BmdjNJZkFkbWluU3RhdCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU3RhdHVzIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBPU1BGdjMgaW50ZXJmYWNlJ3MgIGFkbWluaXN0cmF0aXZlICBzdGF0dXMuIAogICAgICAgICAgICBUaGUgIHZhbHVlIGZvcm1lZCBvbiB0aGUgaW50ZXJmYWNlLCBhbmQgdGhlIGluLSAKICAgICAgICAgICAgdGVyZmFjZSB3aWxsIGJlIGFkdmVydGlzZWQgYXMgYW4gaW50ZXJuYWwgcm91dGUgCiAgICAgICAgICAgIHRvICBzb21lICBhcmVhLiAgIFRoZSAgdmFsdWUgJ2Rpc2FibGVkJyBkZW5vdGVzIAogICAgICAgICAgICB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgZXh0ZXJuYWwgdG8gT1NQRnYzLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgZW5hYmxlZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgNCB9IAogCm9zcGZ2M0lmUnRyUHJpb3JpdHkgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIERlc2lnbmF0ZWRSb3V0ZXJQcmlvcml0eSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgIHByaW9yaXR5ICBvZiAgdGhpcyAgaW50ZXJmYWNlLiAgIFVzZWQgIGluIAogICAgICAgICAgICBtdWx0aS1hY2Nlc3MgIG5ldHdvcmtzLCAgdGhpcyAgZmllbGQgaXMgdXNlZCBpbiAKICAgICAgICAgICAgdGhlIGRlc2lnbmF0ZWQgcm91dGVyIGVsZWN0aW9uIGFsZ29yaXRobS4gICBUaGUgCiAgICAgICAgICAgIHZhbHVlIDAgc2lnbmlmaWVzIHRoYXQgdGhlIHJvdXRlciBpcyBub3QgZWxpZ2ktIAogICAgICAgICAgICBibGUgdG8gYmVjb21lIHRoZSAgZGVzaWduYXRlZCAgcm91dGVyICBvbiAgdGhpcyAKICAgICAgICAgICAgcGFydGljdWxhciAgbmV0d29yay4gICBJbiB0aGUgZXZlbnQgb2YgYSB0aWUgaW4gCiAgICAgICAgICAgIHRoaXMgdmFsdWUsIHJvdXRlcnMgd2lsbCB1c2UgdGhlaXIgUm91dGVyIElEIGFzIAogICAgICAgICAgICBhIHRpZSBicmVha2VyLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgMSB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgNSB9IAogCm9zcGZ2M0lmVHJhbnNpdERlbGF5IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBVcFRvUmVmcmVzaEludGVydmFsIAogICAgICAgIFVOSVRTICAgICAgICAgICAic2Vjb25kcyIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIGVzdGltYXRlZCBudW1iZXIgb2Ygc2Vjb25kcyAgaXQgIHRha2VzICB0byAKICAgICAgICAgICAgdHJhbnNtaXQgIGEgIGxpbmsgc3RhdGUgdXBkYXRlIHBhY2tldCBvdmVyIHRoaXMgCiAgICAgICAgICAgIGludGVyZmFjZS4iIAogICAgICAgIERFRlZBTCAgICAgICAgICB7IDEgfSAKICAgICAgICA6Oj0geyBvc3BmdjNJZkVudHJ5IDYgfSAKIApvc3BmdjNJZlJldHJhbnNJbnRlcnZhbCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVXBUb1JlZnJlc2hJbnRlcnZhbCAKICAgICAgICBVTklUUyAgICAgICAgICAgInNlY29uZHMiIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuICBsaW5rLXN0YXRlICBhZC0gCiAgICAgICAgICAgIHZlcnRpc2VtZW50ICByZXRyYW5zbWlzc2lvbnMsICBmb3IgIGFkamFjZW5jaWVzIAogICAgICAgICAgICBiZWxvbmdpbmcgdG8gdGhpcyAgaW50ZXJmYWNlLiAgIFRoaXMgIHZhbHVlICBpcyAKICAgICAgICAgICAgYWxzbyB1c2VkIHdoZW4gcmV0cmFuc21pdHRpbmcgZGF0YWJhc2UgZGVzY3JpcC0gCiAgICAgICAgICAgIHRpb24gYW5kIGxpbmstc3RhdGUgcmVxdWVzdCBwYWNrZXRzLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgNSB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgNyB9IAogCm9zcGZ2M0lmSGVsbG9JbnRlcnZhbCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSGVsbG9SYW5nZSAKICAgICAgICBVTklUUyAgICAgICAgICAgInNlY29uZHMiIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBsZW5ndGggb2YgdGltZSwgaW4gIHNlY29uZHMsICBiZXR3ZWVuICB0aGUgCiAgICAgICAgICAgIEhlbGxvICBwYWNrZXRzIHRoYXQgdGhlIHJvdXRlciBzZW5kcyBvbiB0aGUgaW4tIAogICAgICAgICAgICB0ZXJmYWNlLiAgVGhpcyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lICBmb3IgIGFsbCAKICAgICAgICAgICAgcm91dGVycyBhdHRhY2hlZCB0byBhIGNvbW1vbiBuZXR3b3JrLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgMTAgfSAKICAgICAgICA6Oj0geyBvc3BmdjNJZkVudHJ5IDggfSAKIApvc3BmdjNJZlJ0ckRlYWRJbnRlcnZhbCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgUm91dGVyRGVhZFJhbmdlIAogICAgICAgIFVOSVRTICAgICAgICAgICAic2Vjb25kcyIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBzZWNvbmRzIHRoYXQgIGEgIHJvdXRlcidzICBIZWxsbyAKICAgICAgICAgICAgcGFja2V0cyAgaGF2ZSAgbm90IGJlZW4gc2VlbiBiZWZvcmUgaXQncyBuZWlnaC0gCiAgICAgICAgICAgIGJvcnMgZGVjbGFyZSB0aGUgcm91dGVyIGRvd24uICBUaGlzICBzaG91bGQgIGJlIAogICAgICAgICAgICBzb21lICBtdWx0aXBsZSAgb2YgIHRoZSAgSGVsbG8gIGludGVydmFsLiAgVGhpcyAKICAgICAgICAgICAgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHJvdXRlcnMgYXR0YWNoZWQgCiAgICAgICAgICAgIHRvIGEgY29tbW9uIG5ldHdvcmsuIiAKICAgICAgICBERUZWQUwgICAgICAgICAgeyA0MCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgOSB9IAogCm9zcGZ2M0lmUG9sbEludGVydmFsIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBVbnNpZ25lZDMyIAogICAgICAgIFVOSVRTICAgICAgICAgICAic2Vjb25kcyIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIGxhcmdlciB0aW1lIGludGVydmFsLCBpbiBzZWNvbmRzLCAgYmV0d2VlbiAKICAgICAgICAgICAgdGhlICBIZWxsbyAgcGFja2V0cyAgc2VudCAgdG8gIGFuIGluYWN0aXZlIG5vbi0gCiAgICAgICAgICAgIGJyb2FkY2FzdCBtdWx0aS0gYWNjZXNzIG5laWdoYm9yLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgMTIwIH0gCiAgICAgICAgOjo9IHsgb3NwZnYzSWZFbnRyeSAxMCB9IAogCm9zcGZ2M0lmU3RhdGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgZG93bigxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BiYWNrKDIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGluZygzKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50VG9Qb2ludCg0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbmF0ZWRSb3V0ZXIoNSksIAogICAgICAgICAgICAgICAgICAgICAgICBiYWNrdXBEZXNpZ25hdGVkUm91dGVyKDYpLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJEZXNpZ25hdGVkUm91dGVyKDcpIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgT1NQRnYzIEludGVyZmFjZSBTdGF0ZS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMTEgfSAKIApvc3BmdjNJZkRlc2lnbmF0ZWRSb3V0ZXIgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvdXRlcklEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgUm91dGVyIElEIG9mIHRoZSBEZXNpZ25hdGVkIFJvdXRlci4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMTIgfSAKIApvc3BmdjNJZkJhY2t1cERlc2lnbmF0ZWRSb3V0ZXIgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvdXRlcklEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgIFJvdXRlciBJRCBvZiAgdGhlICBCYWNrdXAgICBEZXNpZ25hdGVkIAogICAgICAgICAgICBSb3V0ZXIuIiAKICAgICAgICA6Oj0geyBvc3BmdjNJZkVudHJ5IDE0IH0gCiAKb3NwZnYzSWZFdmVudHMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIENvdW50ZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG51bWJlciBvZiB0aW1lcyB0aGlzICBPU1BGICBpbnRlcmZhY2UgIGhhcyAKICAgICAgICAgICAgY2hhbmdlZCBpdHMgc3RhdGUsIG9yIGFuIGVycm9yIGhhcyBvY2N1cnJlZC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMTUgfSAKIAogb3NwZnYzSWZTdGF0dXMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvd1N0YXR1cyAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBzdGF0dXMgb2YgIHRoZSAgZW4tIAogICAgICAgICAgICB0cnkuIFRoZSB1c2Ugb2YgUm93U3RhdHVzIGlzIGNvdmVyZWQgaW4gbW9yZSBkZXRhaWwgaW4gCiAgICAgICAgICAgIFs2XS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMTcgfSAKIApvc3BmdjNJZk11bHRpY2FzdEZvcndhcmRpbmcgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCgxKSwgICAtLSBubyBtdWx0aWNhc3QgZm9yd2FyZGluZyAKICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGljYXN0KDIpLCAtLSB1c2luZyBtdWx0aWNhc3QgYWRkcmVzcyAKICAgICAgICAgICAgICAgICAgICAgICAgdW5pY2FzdCgzKSAgICAtLSB0byBlYWNoIE9TUEZ2MyBuZWlnaGJvciAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgd2F5IG11bHRpY2FzdHMgc2hvdWxkICBmb3J3YXJkZWQgIG9uICB0aGlzIAogICAgICAgICAgICBpbnRlcmZhY2U7ICBub3QgIGZvcndhcmRlZCwgIGZvcndhcmRlZCAgYXMgZGF0YSAKICAgICAgICAgICAgbGluayBtdWx0aWNhc3RzLCBvciBmb3J3YXJkZWQgYXMgZGF0YSBsaW5rIHVuaS0gCiAgICAgICAgICAgIGNhc3RzLiAgIERhdGEgbGluayBtdWx0aWNhc3RpbmcgaXMgbm90IG1lYW5pbmctIAogICAgICAgICAgICBmdWwgb24gcG9pbnQgdG8gcG9pbnQgYW5kIE5CTUEgaW50ZXJmYWNlcywgIGFuZCAKICAgICAgICAgICAgc2V0dGluZyBvc3BmdjNNdWx0aWNhc3RGb3J3YXJkaW5nIHRvIDAgZWZmZWN0aXZlLSAKICAgICAgICAgICAgbHkgZGlzYWJsZXMgYWxsIG11bHRpY2FzdCBmb3J3YXJkaW5nLiIgCiAgICAgICAgREVGVkFMIHsgYmxvY2tlZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMTggfSAKIApvc3BmdjNJZkRlbWFuZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVHJ1dGhWYWx1ZSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJbmRpY2F0ZXMgd2hldGhlciBEZW1hbmQgT1NQRnYzIHByb2NlZHVyZXMgKGhlbC0gCiAgICAgICAgICAgIGxvIHN1cHByZXNzaW9uIHRvIEZVTEwgbmVpZ2hib3JzIGFuZCBzZXR0aW5nIHRoZSAKICAgICAgICAgICAgRG9Ob3RBZ2UgZmxhZyBvbiBwcm9wYWdhdGVkIExTQXMpIHNob3VsZCBiZSBwZXItIAogICAgICAgICAgICBmb3JtZWQgb24gdGhpcyBpbnRlcmZhY2UuIiAKICAgICAgICBERUZWQUwgeyBmYWxzZSB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMTkgfSAKIApvc3BmdjNJZk1ldHJpY1ZhbHVlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBNZXRyaWMgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG1ldHJpYyBhc3NpZ25lZCB0byB0aGlzIGludGVyZmFjZS4gCiAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgTWV0cmljIGlzIAogICAgICAgICAgICBSZWZlcmVuY2UgQmFuZHdpZHRoIC8gaWZTcGVlZC4gVGhlIHZhbHVlIG9mIHRoZSAgIAogICAgICAgICAgICByZWZlcmVuY2UgYmFuZHdpZHRoIGlzIGNvbmZpZ3VyZWQgYnkgdGhlIAogICAgICAgICAgICBvc3BmdjNSZWZlcmVuY2VCYW5kd2lkdGggb2JqZWN0LiIgCiAgICAgICAgOjo9IHsgb3NwZnYzSWZFbnRyeSAyMCB9IAogCiBvc3BmdjNJZkxpbmtTY29wZUxzYUNvdW50IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBHYXVnZTMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgdG90YWwgbnVtYmVyIG9mIExpbmstU2NvcGUgbGluay1zdGF0ZSAKICAgICAgICAgICAgYWR2ZXJ0aXNlbWVudHMgaW4gIHRoaXMgIGxpbmsncyBsaW5rLXN0YXRlIGRhdGFiYXNlLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzSWZFbnRyeSAyMSB9IAogCiBvc3BmdjNJZkxpbmtMc2FDa3N1bVN1bSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgMzItYml0IHVuc2lnbmVkIHN1bSBvZiB0aGUgTGluay1TY29wZSBsaW5rLXN0YXRlIAogICAgICAgICAgICBhZHZlcnRpc2VtZW50cycgIExTICBjaGVja3N1bXMgIGNvbnRhaW5lZCBpbiB0aGlzIAogICAgICAgICAgICBsaW5rJ3MgbGluay1zdGF0ZSBkYXRhYmFzZS4gIFRoZSBzdW0gY2FuIGJlIHVzZWQgCiAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiAgdGhlcmUgIGhhcyBiZWVuICBhICBjaGFuZ2UgIGluIGEgCiAgICAgICAgICAgIHJvdXRlcidzIGxpbmsgc3RhdGUgZGF0YWJhc2UsIGFuZCB0byBjb21wYXJlIHRoZSAKICAgICAgICAgICAgbGluay1zdGF0ZSBkYXRhYmFzZSBvZiB0d28gcm91dGVycy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMjIgfSAKIApvc3BmdjNJZkluc3RJZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkVuYWJsZXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIE9TUEZ2MyB0byBiZSBydW4gb3ZlciAKICAgICAgICAgICAgYSBzaW5nbGUgbGluay4gRWFjaCBwcm90b2NvbCBpbnN0YW5jZSB3b3VsZCBiZSBhc3NpZ25lZCAKICAgICAgICAgICAgYSBzZXBhcmF0ZSBJRC4gVGhpcyBJRCBoYXMgbG9jYWwgbGluayBzaWduaWZpY2FuY2UgCiAgICAgICAgICAgIG9ubHkuIiAKICAgICAgICBERUZWQUwgICAgICAgICAgeyAwIH0gCiAgICAgICAgOjo9IHsgb3NwZnYzSWZFbnRyeSAyMyB9IAogCm9zcGZ2M0lmRGVtYW5kTmJyUHJvYmUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFRydXRoVmFsdWUgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAgICAiIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBuZWlnaGJvciBwcm9iaW5nIGlzIAogICAgICAgICAgICAgICAgIGVuYWJsZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBuZWlnaGJvciAgCiAgICAgICAgICAgICAgICAgaXMgaW5hY3RpdmUuIE5laWdoYm9yIHByb2JpbmcgaXMgZGlzYWJsZWQgYnkgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQuIiAKICAgICAgICBERUZWQUwgeyBmYWxzZSB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMjQgfSAKIAogICBvc3BmdjNJZkRlbWFuZE5iclByb2JlUmV0eExpbWl0IE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBVbnNpZ25lZDMyICAKICAgICAgIFVOSVRTICAgICAgICAic2Vjb25kcyIgIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtY3JlYXRlIAogICAgICAgU1RBVFVTICAgICAgIGN1cnJlbnQgIAogICAgICAgREVTQ1JJUFRJT04gIAogICAgICAgICAgIiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIExTQSByZXRyYW5zbWlzc2lvbnMgYmVmb3JlIAogICAgICAgICAgICB0aGUgbmVpZ2hib3IgaXMgZGVlbWVkIGluYWN0aXZlIGFuZCB0aGUgbmVpZ2hib3IgIAogICAgICAgICAgICBhZGphY2VuY3kgaXMgYnJvdWdodCBkb3duLiIgIAogICAgICAgREVGVkFMICAgICAgICAgIHsgMTAgfSAKICAgICAgIDo6PSB7IG9zcGZ2M0lmRW50cnkgMjUgfSAgCiAKIAogICBvc3BmdjNJZkRlbWFuZE5iclByb2JlSW50ZXJ2YWwgT0JKRUNULVRZUEUgIAogICAgICAgU1lOVEFYICAgICAgIFVuc2lnbmVkMzIgIAogICAgICAgVU5JVFMgICAgICAgICJzZWNvbmRzIiAgCiAgICAgICBNQVgtQUNDRVNTICAgcmVhZC1jcmVhdGUgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiIERlZmluZXMgaG93IG9mdGVuIHRoZSBuZWlnaGJvciB3aWxsIGJlIHByb2JlZC4iICAKICAgICAgIERFRlZBTCAgICAgICAgICB7IDEyMCB9IAogICAgICAgOjo9IHsgb3NwZnYzSWZFbnRyeSAyNiB9ICAKIAogCi0tIE9TUEZ2MyBWaXJ0dWFsIEludGVyZmFjZSBUYWJsZSAKIAotLSBUaGUgVmlydHVhbCBJbnRlcmZhY2UgVGFibGUgZGVzY3JpYmVzIHRoZSB2aXJ0dWFsIAotLSBsaW5rcyB0aGF0IHRoZSBPU1BGdjMgUHJvY2VzcyBpcyBjb25maWd1cmVkIHRvIAotLSBjYXJyeSBvbi4gCiAKb3NwZnYzVmlydElmVGFibGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFNFUVVFTkNFIE9GIE9zcGZ2M1ZpcnRJZkVudHJ5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkluZm9ybWF0aW9uIGFib3V0IHRoaXMgcm91dGVyJ3MgdmlydHVhbCBpbnRlci0gCiAgICAgICAgICAgIGZhY2VzLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uICAyLCAgQXBwZW5kaXggIEMuNCAgIFZpcnR1YWwgIGxpbmsgCiAgICAgICAgICAgIHBhcmFtZXRlcnMiIAogICAgICAgIDo6PSB7IG9zcGZ2M09iamVjdHMgOCB9IAogCm9zcGZ2M1ZpcnRJZkVudHJ5IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBPc3BmdjNWaXJ0SWZFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJJbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBWaXJ0dWFsIEludGVyZmFjZS4iIAogICAgICAgIElOREVYICAgICAgICAgICB7IG9zcGZ2M1ZpcnRJZkFyZWFJZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzVmlydElmTmVpZ2hib3IgfSAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0SWZUYWJsZSAxIH0gCiAKT3NwZnYzVmlydElmRW50cnkgOjo9IFNFUVVFTkNFIHsgCiAgICAgICAgb3NwZnYzVmlydElmQXJlYUlkIAogICAgICAgICAgICAgICAgQXJlYUlELCAKICAgICAgICBvc3BmdjNWaXJ0SWZOZWlnaGJvciAKICAgICAgICAgICAgICAgIFJvdXRlcklELCAKICAgICAgICBvc3BmdjNWaXJ0SWZJbmRleCAKICAgICAgICAgICAgICAgIEludGVyZmFjZUluZGV4LCAKICAgICAgICBvc3BmdjNWaXJ0SWZUcmFuc2l0RGVsYXkgCiAgICAgICAgICAgICAgICBVcFRvUmVmcmVzaEludGVydmFsLCAKICAgICAgICBvc3BmdjNWaXJ0SWZSZXRyYW5zSW50ZXJ2YWwgCiAgICAgICAgICAgICAgICBVcFRvUmVmcmVzaEludGVydmFsLCAKICAgICAgICBvc3BmdjNWaXJ0SWZIZWxsb0ludGVydmFsIAogICAgICAgICAgICAgICAgSGVsbG9SYW5nZSwgCiAgICAgICAgb3NwZnYzVmlydElmUnRyRGVhZEludGVydmFsIAogICAgICAgICAgICAgICAgIFJvdXRlckRlYWRSYW5nZSwgCiAgICAgICAgb3NwZnYzVmlydElmU3RhdGUgCiAgICAgICAgICAgICAgICBJTlRFR0VSLCAKICAgICAgICBvc3BmdjNWaXJ0SWZFdmVudHMgCiAgICAgICAgICAgICAgICBDb3VudGVyMzIsIAogICAgICAgIG9zcGZ2M1ZpcnRJZlN0YXR1cyAKICAgICAgICAgICAgICAgIFJvd1N0YXR1cywgCiAgICAgICAgb3NwZnYzVmlydElmTGlua1Njb3BlTHNhQ291bnQgCiAgICAgICAgICAgICAgICBHYXVnZTMyLCAKICAgICAgICBvc3BmdjNWaXJ0SWZMaW5rTHNhQ2tzdW1TdW0gCiAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMzIgCiAgICAgICAgfSAKIApvc3BmdjNWaXJ0SWZBcmVhSWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEFyZWFJRCAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgIFRyYW5zaXQgIEFyZWEgIHRoYXQgIHRoZSAgIFZpcnR1YWwgICBMaW5rIAogICAgICAgICAgICB0cmF2ZXJzZXMuICBCeSBkZWZpbml0aW9uLCB0aGlzIGlzIG5vdCAwLjAuMC4wIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0SWZFbnRyeSAxIH0gCiAKb3NwZnYzVmlydElmTmVpZ2hib3IgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvdXRlcklEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBSb3V0ZXIgSUQgb2YgdGhlIFZpcnR1YWwgTmVpZ2hib3IuIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0SWZFbnRyeSAyIH0gCiAKb3NwZnYzVmlydElmSW5kZXggT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVyZmFjZUluZGV4IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2UgSUQgYXNzaWduZWQgdG8gdGhpcyBPU1BGdjMgdmlydHVhbCAKICAgICAgICAgICAgaW50ZXJmYWNlLiBJdCBpcyBhZHZlcnRpc2VkIGluIEhlbGxvJ3Mgc2VudCBvdmVyIAogICAgICAgICAgICB0aGUgdmlydGFsIGxpbmsgYW5kIGluIHRoZSByb3V0ZXIncyByb3V0ZXItTFNBcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnRJZkVudHJ5IDMgfSAKIApvc3BmdjNWaXJ0SWZUcmFuc2l0RGVsYXkgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFVwVG9SZWZyZXNoSW50ZXJ2YWwgCiAgICAgICAgVU5JVFMgICAgICAgICAgICJzZWNvbmRzIiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgZXN0aW1hdGVkIG51bWJlciBvZiBzZWNvbmRzICBpdCAgdGFrZXMgIHRvIAogICAgICAgICAgICB0cmFuc21pdCAgYSBsaW5rLSBzdGF0ZSB1cGRhdGUgcGFja2V0IG92ZXIgdGhpcyAKICAgICAgICAgICAgaW50ZXJmYWNlLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgMSB9IAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnRJZkVudHJ5IDQgfSAKIApvc3BmdjNWaXJ0SWZSZXRyYW5zSW50ZXJ2YWwgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFVwVG9SZWZyZXNoSW50ZXJ2YWwgCiAgICAgICAgVU5JVFMgICAgICAgICAgICJzZWNvbmRzIiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiAgbGluay1zdGF0ZSAgYWQtIAogICAgICAgICAgICB2ZXJ0aXNlbWVudCAgcmV0cmFuc21pc3Npb25zLCAgZm9yICBhZGphY2VuY2llcyAKICAgICAgICAgICAgYmVsb25naW5nIHRvIHRoaXMgIGludGVyZmFjZS4gICBUaGlzICB2YWx1ZSAgaXMgCiAgICAgICAgICAgIGFsc28gdXNlZCB3aGVuIHJldHJhbnNtaXR0aW5nIGRhdGFiYXNlIGRlc2NyaXAtIAogICAgICAgICAgICB0aW9uICBhbmQgIGxpbmstc3RhdGUgIHJlcXVlc3QgIHBhY2tldHMuICAgVGhpcyAKICAgICAgICAgICAgdmFsdWUgIHNob3VsZCAgYmUgd2VsbCBvdmVyIHRoZSBleHBlY3RlZCByb3VuZC0gCiAgICAgICAgICAgIHRyaXAgdGltZS4iIAogICAgICAgIERFRlZBTCAgICAgICAgICB7IDUgfSAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0SWZFbnRyeSA1IH0gCiAKb3NwZnYzVmlydElmSGVsbG9JbnRlcnZhbCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSGVsbG9SYW5nZSAKICAgICAgICBVTklUUyAgICAgICAgICAgInNlY29uZHMiIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBsZW5ndGggb2YgdGltZSwgaW4gIHNlY29uZHMsICBiZXR3ZWVuICB0aGUgCiAgICAgICAgICAgIEhlbGxvICBwYWNrZXRzIHRoYXQgdGhlIHJvdXRlciBzZW5kcyBvbiB0aGUgaW4tIAogICAgICAgICAgICB0ZXJmYWNlLiAgVGhpcyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lICBmb3IgIHRoZSAKICAgICAgICAgICAgdmlydHVhbCBuZWlnaGJvci4iIAogICAgICAgIERFRlZBTCAgICAgICAgICB7IDEwIH0gCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydElmRW50cnkgNiB9IAogCm9zcGZ2M1ZpcnRJZlJ0ckRlYWRJbnRlcnZhbCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgUm91dGVyRGVhZFJhbmdlIAogICAgICAgIFVOSVRTICAgICAgICAgICAic2Vjb25kcyIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBzZWNvbmRzIHRoYXQgIGEgIHJvdXRlcidzICBIZWxsbyAKICAgICAgICAgICAgcGFja2V0cyAgaGF2ZSAgbm90IGJlZW4gc2VlbiBiZWZvcmUgaXQncyBuZWlnaC0gCiAgICAgICAgICAgIGJvcnMgZGVjbGFyZSB0aGUgcm91dGVyIGRvd24uICBUaGlzICBzaG91bGQgIGJlIAogICAgICAgICAgICBzb21lICBtdWx0aXBsZSAgb2YgIHRoZSAgSGVsbG8gIGludGVydmFsLiAgVGhpcyAKICAgICAgICAgICAgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBmb3IgdGhlICB2aXJ0dWFsICBuZWlnaC0gCiAgICAgICAgICAgIGJvci4iIAogICAgICAgIERFRlZBTCAgICAgICAgICB7IDYwIH0gCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydElmRW50cnkgNyB9IAogCm9zcGZ2M1ZpcnRJZlN0YXRlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJTlRFR0VSIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIGRvd24oMSksIC0tIHRoZXNlIHVzZSB0aGUgc2FtZSBlbmNvZGluZyAKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRUb1BvaW50KDQpIC0tIGFzIHRoZSBvc3BmdjNJZlRhYmxlIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJPU1BGIHZpcnR1YWwgaW50ZXJmYWNlIHN0YXRlcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnRJZkVudHJ5IDggfSAKIApvc3BmdjNWaXJ0SWZFdmVudHMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIENvdW50ZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBzdGF0ZSBjaGFuZ2VzIG9yIGVycm9yIGV2ZW50cyBvbiAKICAgICAgICAgICAgdGhpcyBWaXJ0dWFsIExpbmsiIAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnRJZkVudHJ5IDkgfSAKIApvc3BmdjNWaXJ0SWZTdGF0dXMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvd1N0YXR1cyAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBzdGF0dXMgb2YgIHRoZSAgZW4tIAogICAgICAgICAgICB0cnkuIFRoZSB1c2Ugb2YgUm93U3RhdHVzIGlzIGNvdmVyZWQgaW4gbW9yZSBkZXRhaWwgCiAgICAgICAgICAgIGluIFs2XS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnRJZkVudHJ5IDEwIH0gCiAKb3NwZnYzVmlydElmTGlua1Njb3BlTHNhQ291bnQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEdhdWdlMzIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSB0b3RhbCBudW1iZXIgb2YgTGluay1TY29wZSBsaW5rLXN0YXRlIAogICAgICAgICAgICBhZHZlcnRpc2VtZW50cyBpbiAgdGhpcyAgdmlydHVhbCBsaW5rJ3MgbGluay1zdGF0ZSAKICAgICAgICAgICAgZGF0YWJhc2UuIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0SWZFbnRyeSAxMSB9IAogCm9zcGZ2M1ZpcnRJZkxpbmtMc2FDa3N1bVN1bSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgMzItYml0IHVuc2lnbmVkIHN1bSBvZiB0aGUgTGluay1TY29wZSBsaW5rLXN0YXRlIAogICAgICAgICAgICBhZHZlcnRpc2VtZW50cycgIExTICBjaGVja3N1bXMgIGNvbnRhaW5lZCBpbiB0aGlzIAogICAgICAgICAgICB2aXJ0dWFsIGxpbmsncyBsaW5rLXN0YXRlIGRhdGFiYXNlLiAgVGhlIHN1bSBjYW4gYmUgdXNlZCAKICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmICB0aGVyZSAgaGFzIGJlZW4gIGEgIGNoYW5nZSAgaW4gYSAKICAgICAgICAgICAgcm91dGVyJ3MgbGluayBzdGF0ZSBkYXRhYmFzZSwgYW5kIHRvIGNvbXBhcmUgdGhlIAogICAgICAgICAgICBsaW5rLXN0YXRlIGRhdGFiYXNlIG9mIHR3byByb3V0ZXJzLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydElmRW50cnkgMTIgfSAKIAogCi0tIE9TUEZ2MyBOZWlnaGJvciBUYWJsZSAKIAotLSBUaGUgT1NQRnYzIE5laWdoYm9yIFRhYmxlIGRlc2NyaWJlcyBhbGwgbmVpZ2hib3JzIGluIAotLSB0aGUgbG9jYWxpdHkgb2YgdGhlIHN1YmplY3Qgcm91dGVyLiAKIApvc3BmdjNOYnJUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzTmJyRW50cnkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSB0YWJsZSBvZiBub24tdmlydHVhbCBuZWlnaGJvciBpbmZvcm1hdGlvbi4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDEwICBUaGUgIE5laWdoYm9yICBEYXRhIAogICAgICAgICAgICBTdHJ1Y3R1cmUiIAogICAgICAgIDo6PSB7IG9zcGZ2M09iamVjdHMgOSB9IAogCm9zcGZ2M05ickVudHJ5IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBPc3BmdjNOYnJFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGEgc2luZ2xlIG5laWdoYm9yLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIFNlY3Rpb24gMTAgIFRoZSAgTmVpZ2hib3IgIERhdGEgCiAgICAgICAgICAgIFN0cnVjdHVyZSIgCiAgICAgICAgSU5ERVggICAgICAgICAgIHsgb3NwZnYzTmJySWZJbmRleCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJyUnRySWQgfSAKICAgICAgICA6Oj0geyBvc3BmdjNOYnJUYWJsZSAxIH0gCiAKT3NwZnYzTmJyRW50cnkgOjo9IFNFUVVFTkNFIHsgCiAgICAgICAgb3NwZnYzTmJySWZJbmRleCAKICAgICAgICAgICAgICAgIEludGVyZmFjZUluZGV4LCAKICAgICAgICBvc3BmdjNOYnJSdHJJZCAKICAgICAgICAgICAgICAgIFJvdXRlcklELCAKICAgICAgICBvc3BmdjNOYnJBZGRyZXNzVHlwZSAKICAgICAgICAgICAgICAgIEluZXRBZGRyZXNzVHlwZSwgCiAgICAgICAgb3NwZnYzTmJyQWRkcmVzcyAKICAgICAgICAgICAgICAgIEluZXRBZGRyZXNzLCAgICAgICAgICAgICAKICAgICAgICBvc3BmdjNOYnJPcHRpb25zIAogICAgICAgICAgICAgICAgSW50ZWdlcjMyLCAKICAgICAgICBvc3BmdjNOYnJQcmlvcml0eSAKICAgICAgICAgICAgICAgIERlc2lnbmF0ZWRSb3V0ZXJQcmlvcml0eSwgCiAgICAgICAgb3NwZnYzTmJyU3RhdGUgCiAgICAgICAgICAgICAgICBJTlRFR0VSLCAKICAgICAgICBvc3BmdjNOYnJFdmVudHMgCiAgICAgICAgICAgICAgICBDb3VudGVyMzIsIAogICAgICAgIG9zcGZ2M05ickxzUmV0cmFuc1FMZW4gCiAgICAgICAgICAgICAgICBHYXVnZTMyLCAKICAgICAgICBvc3BmdjNOYnJIZWxsb1N1cHByZXNzZWQgCiAgICAgICAgICAgICAgICBUcnV0aFZhbHVlLCAKICAgICAgICBvc3BmdjNOYnJJZklkIAogICAgICAgICAgICAgICAgSW50ZXJmYWNlSW5kZXgsIAogICAgICAgIG9zcGZ2M05iclJlc3RhcnRIZWxwZXJTdGF0dXMgIAogICAgICAgICAgICAgICAgSU5URUdFUiwgIAogICAgICAgIG9zcGZ2M05iclJlc3RhcnRIZWxwZXJBZ2UgIAogICAgICAgICAgICAgICAgVXBUb1JlZnJlc2hJbnRlcnZhbCwgIAogICAgICAgIG9zcGZ2M05iclJlc3RhcnRIZWxwZXJFeGl0UmVhc29uICAKICAgICAgICAgICAgICAgIElOVEVHRVIgCiAgICAgICAgfSAKIApvc3BmdjNOYnJJZkluZGV4IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJbnRlcmZhY2VJbmRleCAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbG9jYWwgbGluayBJRCBvZiB0aGUgbGluayBvdmVyIHdoaWNoIHRoZSAKICAgICAgICAgICAgIG5laWdoYm9yIGNhbiBiZSByZWFjaGVkLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTmJyRW50cnkgMSB9IAogCm9zcGZ2M05iclJ0cklkIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBSb3V0ZXJJRCAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJBIDMyLWJpdCBpbnRlZ2VyIChyZXByZXNlbnRlZCBhcyBhIHR5cGUgIElwQWQtIAogICAgICAgICAgICBkcmVzcykgIHVuaXF1ZWx5ICBpZGVudGlmeWluZyAgdGhlICBuZWlnaGJvcmluZyAKICAgICAgICAgICAgcm91dGVyIGluIHRoZSBBdXRvbm9tb3VzIFN5c3RlbS4iIAogICAgICAgIDo6PSB7IG9zcGZ2M05ickVudHJ5IDIgfSAKIApvc3BmdjNOYnJBZGRyZXNzVHlwZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3NUeXBlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgYWRkcmVzcyB0eXBlIG9mIG9zcGZ2M05ickFkZHJlc3MuIE9ubHkgSVB2NiAKICAgICAgICAgICAgYWRkcmVzc2VzIHdpdGhvdXQgem9uZSBpbmRleCBhcmUgZXhwZWN0ZWQuIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYnJFbnRyeSAzIH0gCiAKb3NwZnYzTmJyQWRkcmVzcyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3MgKFNJWkUgKDE2KSkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBJUHY2IGFkZHJlc3Mgb2YgdGhlIG5laWdoYm9yIGFzc29jaWF0ZWQgd2l0aCAKICAgICAgICAgICAgdGhlIGxvY2FsIGxpbmsuIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYnJFbnRyeSA0IH0gCiAKb3NwZnYzTmJyT3B0aW9ucyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJBIEJpdCBNYXNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5laWdoYm9yJ3Mgb3AtIAogICAgICAgICAgICB0aW9ucyBmaWVsZC4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAzLCBBcHBlbmRpeCBBLjIgdGhlIE9wdGlvbnMgZmllbGQiIAogICAgICAgIDo6PSB7IG9zcGZ2M05ickVudHJ5IDUgfSAKIApvc3BmdjNOYnJQcmlvcml0eSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgRGVzaWduYXRlZFJvdXRlclByaW9yaXR5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgcHJpb3JpdHkgb2YgdGhpcyBuZWlnaGJvciBpbiB0aGUgZGVzaWduYXQtIAogICAgICAgICAgICBlZCByb3V0ZXIgZWxlY3Rpb24gYWxnb3JpdGhtLiAgVGhlIHZhbHVlIDAgc2lnLSAKICAgICAgICAgICAgbmlmaWVzIHRoYXQgdGhlIG5laWdoYm9yIGlzIG5vdCBlbGlnaWJsZSB0byBiZS0gCiAgICAgICAgICAgIGNvbWUgIHRoZSAgZGVzaWduYXRlZCByb3V0ZXIgb24gdGhpcyBwYXJ0aWN1bGFyIAogICAgICAgICAgICBuZXR3b3JrLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTmJyRW50cnkgNiB9IAogCm9zcGZ2M05iclN0YXRlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJTlRFR0VSIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIGRvd24oMSksIAogICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0KDIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCgzKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHR3b1dheSg0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlU3RhcnQoNSksIAogICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZSg2KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmcoNyksIAogICAgICAgICAgICAgICAgICAgICAgICBmdWxsKDgpIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgU3RhdGUgb2YgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoaXMgTmVpZ2gtIAogICAgICAgICAgICBib3IuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgU2VjdGlvbiAxMC4xIE5laWdoYm9yIFN0YXRlcyIgCiAgICAgICAgOjo9IHsgb3NwZnYzTmJyRW50cnkgNyB9IAogCm9zcGZ2M05ickV2ZW50cyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgQ291bnRlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgbmVpZ2hib3IgcmVsYXRpb25zaGlwIAogICAgICAgICAgICBoYXMgY2hhbmdlZCBzdGF0ZSwgb3IgYW4gZXJyb3IgaGFzIG9jY3VycmVkLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTmJyRW50cnkgOCB9IAogCm9zcGZ2M05ickxzUmV0cmFuc1FMZW4gT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEdhdWdlMzIgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSAgY3VycmVudCAgbGVuZ3RoICBvZiAgdGhlICAgcmV0cmFuc21pc3Npb24gCiAgICAgICAgICAgIHF1ZXVlLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTmJyRW50cnkgOSB9IAogCm9zcGZ2M05ickhlbGxvU3VwcHJlc3NlZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgVHJ1dGhWYWx1ZSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiSW5kaWNhdGVzIHdoZXRoZXIgSGVsbG9zIGFyZSBiZWluZyAgc3VwcHJlc3NlZCAKICAgICAgICAgICAgdG8gdGhlIG5laWdoYm9yIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYnJFbnRyeSAxMCB9IAogCm9zcGZ2M05icklmSWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVyZmFjZUluZGV4IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIElEIHRoYXQgdGhlIG5laWdoYm9yIGFkdmVydGlzZXMgCiAgICAgICAgICAgIGluIGl0cyBIZWxsbyBQYWNrZXRzIG9uIHRoaXMgbGluaywgdGhhdCBpcywgdGhlIAogICAgICAgICAgICBuZWlnaGJvcidzIGxvY2FsIGludGVyZmFjZSBpbmRleC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M05ickVudHJ5IDExIH0gCiAKb3NwZnYzTmJyUmVzdGFydEhlbHBlclN0YXR1cyBPQkpFQ1QtVFlQRSAgCiAgICAgICBTWU5UQVggICAgICAgSU5URUdFUiB7IG5vdEhlbHBpbmcgKDEpLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBpbmcgKDIpICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtb25seSAgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJvdXRlciBpcyBhY3RpbmcgIAogICAgICAgICAgYXMgYSBoaXRsZXNzIHJlc3RhcnQgaGVscGVyIGZvciB0aGUgbmVpZ2hib3IuIiAgCiAgICAgICAgICA6Oj0geyBvc3BmdjNOYnJFbnRyeSAxMiB9ICAKICAgIApvc3BmdjNOYnJSZXN0YXJ0SGVscGVyQWdlIE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBVcFRvUmVmcmVzaEludGVydmFsIAogICAgICAgVU5JVFMgICAgICAgICJzZWNvbmRzIiAgCiAgICAgICBNQVgtQUNDRVNTICAgcmVhZC1vbmx5ICAKICAgICAgIFNUQVRVUyAgICAgICBjdXJyZW50ICAKICAgICAgIERFU0NSSVBUSU9OICAKICAgICAgICAgICJSZW1haW5pbmcgdGltZSBpbiBjdXJyZW50IE9TUEYgaGl0bGVzcyByZXN0YXJ0ICAKICAgICAgICAgIGludGVydmFsLCBpZiB0aGUgcm91dGVyIGlzIGFjdGluZyBhcyBhIHJlc3RhcnQgIAogICAgICAgICAgaGVscGVyIGZvciB0aGUgbmVpZ2hib3IuIiAgCiAgICAgICA6Oj0geyBvc3BmdjNOYnJFbnRyeSAxMyB9ICAKICAgIApvc3BmdjNOYnJSZXN0YXJ0SGVscGVyRXhpdFJlYXNvbiBPQkpFQ1QtVFlQRSAgCiAgICAgICBTWU5UQVggICAgICAgSU5URUdFUiB7IG5vbmUgKDEpLCAgICAgICAgICAgLS0gbm90IGF0dGVtcHRlZCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluUHJvZ3Jlc3MgKDIpLCAgICAgLS0gcmVzdGFydCBpbiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gcHJvZ3Jlc3MgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgKDMpLCAgICAgIC0tIHN1Y2Nlc3NmdWxseSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gY29tcGxldGVkICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWRPdXQgKDQpLCAgICAgICAtLSB0aW1lZCBvdXQgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BvbG9neUNoYW5nZWQgKDUpIC0tIGFib3J0ZWQgZHVlIHRvICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSB0b3BvbG9neSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gY2hhbmdlLiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAKICAgICAgIE1BWC1BQ0NFU1MgICByZWFkLW9ubHkgIAogICAgICAgU1RBVFVTICAgICAgIGN1cnJlbnQgIAogICAgICAgREVTQ1JJUFRJT04gIAogICAgICAgICAgIkRlc2NyaWJlcyB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBhdHRlbXB0IGF0IGFjdGluZyAgCiAgICAgICAgICAgYXMgYSBoaXRsZXNzIHJlc3RhcnQgaGVscGVyIGZvciB0aGUgbmVpZ2hib3IuIiAgCiAgICA6Oj0geyBvc3BmdjNOYnJFbnRyeSAxNCB9IAogCiAKLS0gT1NQRnYzIE5CTUEgTmVpZ2hib3IgVGFibGUgCiAKLS0gVGhlIE9TUEZ2MyBOQk1BIE5laWdoYm9yIFRhYmxlIGRlc2NyaWJlcyBhbGwgY29uZmlndXJlZCAKLS0gTkJNQSBuZWlnaGJvcnMgYW5kIG5laWdoYm9ycyBkeW5hbWljYWxseSBkaXNjb3ZlcmVkIGJ5IAotLSBsb3dlci1sZXZlbCBwcm90b2NvbHMgc3VjaCBhcyBJbnZlcnNlIE5laWdoYm9yIERpc2NvdmVyeS4gCiAKb3NwZnYzTmJtYU5iclRhYmxlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBTRVFVRU5DRSBPRiBPc3BmdjNOYm1hTmJyRW50cnkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSB0YWJsZSBvZiBjb25maWd1cmVkIG5vbi12aXJ0dWFsIG5laWdoYm9yIAogICAgICAgICAgICBpbmZvcm1hdGlvbiBhbmQgbmVpZ2hib3JzIGR5bmFtaWNhbGx5IGRpc2NvdmVyZWQgCiAgICAgICAgICAgIGJ5IGxvd2VyLWxldmVsIHByb3RvY29scyBzdWNoIGFzIEludmVyc2UgTmVpZ2hib3IgCiAgICAgICAgICAgIERpc2NvdmVyeS4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDEwICBUaGUgIE5laWdoYm9yICBEYXRhIAogICAgICAgICAgICBTdHJ1Y3R1cmUiIAogICAgICAgIDo6PSB7IG9zcGZ2M09iamVjdHMgMTAgfSAKIApvc3BmdjNOYm1hTmJyRW50cnkgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIE9zcGZ2M05ibWFOYnJFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGEgc2luZ2xlIGNvbmZpZ3VyZWQgCiAgICAgICAgICAgIG5laWdoYm9yIG9yIG5laWdoYm9yIGRpc2NvdmVyZWQgYnkgbG93ZXItbGV2ZWwgCiAgICAgICAgICAgIHByb3RvY29scyBzdWNoIGFzIEludmVyc2UgTmVpZ2hib3IgRGlzY292ZXJ5LiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIFNlY3Rpb24gMTAgIFRoZSAgTmVpZ2hib3IgIERhdGEgCiAgICAgICAgICAgIFN0cnVjdHVyZSIgCiAgICAgICAgSU5ERVggICAgICAgICAgIHsgb3NwZnYzTmJtYU5icklmSW5kZXgsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05ibWFOYnJBZGRyZXNzVHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJtYU5ickFkZHJlc3MgfSAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyVGFibGUgMSB9IAogCk9zcGZ2M05ibWFOYnJFbnRyeSA6Oj0gU0VRVUVOQ0UgeyAKICAgICAgICBvc3BmdjNOYm1hTmJySWZJbmRleCAKICAgICAgICAgICAgICAgIEludGVyZmFjZUluZGV4LCAKICAgICAgICBvc3BmdjNOYm1hTmJyQWRkcmVzc1R5cGUgCiAgICAgICAgICAgICAgICBJbmV0QWRkcmVzc1R5cGUsIAogICAgICAgIG9zcGZ2M05ibWFOYnJBZGRyZXNzIAogICAgICAgICAgICAgICAgSW5ldEFkZHJlc3MsIAogICAgICAgIG9zcGZ2M05ibWFOYnJQcmlvcml0eSAKICAgICAgICAgICAgICAgIERlc2lnbmF0ZWRSb3V0ZXJQcmlvcml0eSwgCiAgICAgICAgb3NwZnYzTmJtYU5iclJ0cklkIAogICAgICAgICAgICAgICAgUm91dGVySUQsIAogICAgICAgIG9zcGZ2M05ibWFOYnJTdGF0ZSAKICAgICAgICAgICAgICAgIElOVEVHRVIsIAogICAgICAgIG9zcGZ2M05ibWFOYnJTdG9yYWdlVHlwZSAKICAgICAgICAgICAgICAgIFN0b3JhZ2VUeXBlLCAKICAgICAgICBvc3BmdjNOYm1hTmJyU3RhdHVzIAogICAgICAgICAgICAgICAgUm93U3RhdHVzIAogICAgICAgIH0gCiAKb3NwZnYzTmJtYU5icklmSW5kZXggT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVyZmFjZUluZGV4IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBsb2NhbCBsaW5rIElEIG9mIHRoZSBsaW5rIG92ZXIgd2hpY2ggdGhlIAogICAgICAgICAgICAgbmVpZ2hib3IgY2FuIGJlIHJlYWNoZWQuIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyRW50cnkgMSB9IAogCm9zcGZ2M05ibWFOYnJBZGRyZXNzVHlwZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3NUeXBlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBhZGRyZXNzIHR5cGUgb2Ygb3NwZnYzTmJyQWRkcmVzcy4gT25seSBJUHY2IAogICAgICAgICAgICBhZGRyZXNzZXMgd2l0aG91dCB6b25lIGluZGV4IGFyZSBleHBlY3RlZC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M05ibWFOYnJFbnRyeSAyIH0gCiAKb3NwZnYzTmJtYU5ickFkZHJlc3MgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEluZXRBZGRyZXNzIChTSVpFICgxNikpIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBJUHY2IGFkZHJlc3Mgb2YgdGhlIG5laWdoYm9yIGFzc29jaWF0ZWQgd2l0aCAKICAgICAgICAgICAgdGhlIGxvY2FsIGxpbmsuIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyRW50cnkgMyB9IAogCm9zcGZ2M05ibWFOYnJQcmlvcml0eSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgRGVzaWduYXRlZFJvdXRlclByaW9yaXR5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBwcmlvcml0eSBvZiB0aGlzIG5laWdoYm9yIGluIHRoZSBkZXNpZ25hdC0gCiAgICAgICAgICAgIGVkIHJvdXRlciBlbGVjdGlvbiBhbGdvcml0aG0uIFRoZSB2YWx1ZSAwIHNpZy0gCiAgICAgICAgICAgIG5pZmllcyB0aGF0IHRoZSBuZWlnaGJvciBpcyBub3QgZWxpZ2libGUgdG8gYmUtIAogICAgICAgICAgICBjb21lICB0aGUgIGRlc2lnbmF0ZWQgcm91dGVyIG9uIHRoaXMgcGFydGljdWxhciAKICAgICAgICAgICAgbmV0d29yay4iIAogICAgICAgIERFRlZBTCAgICAgICAgICB7IDEgfSAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyRW50cnkgNCB9IAogCm9zcGZ2M05ibWFOYnJSdHJJZCBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgUm91dGVySUQgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgMzItYml0IGludGVnZXIgKHJlcHJlc2VudGVkIGFzIGEgdHlwZSBJcEFkLSAKICAgICAgICAgICAgZHJlc3MpIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoZSBuZWlnaGJvcmluZyAKICAgICAgICAgICAgcm91dGVyIGluIHRoZSBBdXRvbm9tb3VzIFN5c3RlbS4gQSB2YWx1ZSBvZiAKICAgICAgICAgICAgMC4wLjAuMCBpcyByZXR1cm5lZCB1bnRpbCBhIEhlbGxvIGlzIHJlY2VpdmVkIAogICAgICAgICAgICBmcm9tIHRoZSBjb25maWd1cmVkIG5laWdoYm9yLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzTmJtYU5ickVudHJ5IDUgfSAKIApvc3BmdjNOYm1hTmJyU3RhdGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgZG93bigxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGVtcHQoMiksIAogICAgICAgICAgICAgICAgICAgICAgICBpbml0KDMpLCAKICAgICAgICAgICAgICAgICAgICAgICAgdHdvV2F5KDQpLCAKICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2VTdGFydCg1KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlKDYpLCAKICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZyg3KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwoOCkgCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBTdGF0ZSBvZiB0aGUgcmVsYXRpb25zaGlwIHdpdGggdGhpcyBOZWlnaC0gCiAgICAgICAgICAgIGJvci4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDEwLjEgTmVpZ2hib3IgU3RhdGVzIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyRW50cnkgNiB9IAogCm9zcGZ2M05ibWFOYnJTdG9yYWdlVHlwZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU3RvcmFnZVR5cGUgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHN0b3JhZ2UgdHlwZSBmb3IgdGhpcyBjb25jZXB0dWFsIHJvdy4gCiAgICAgICAgICAgIENvbmNlcHR1YWwgcm93cyBoYXZpbmcgdGhlIHZhbHVlICdwZXJtYW5lbnQnIG5lZWQgbm90IAogICAgICAgICAgICBhbGxvdyB3cml0ZS1hY2Nlc3MgdG8gYW55IGNvbHVtbmFyIG9iamVjdHMgaW4gdGhlIHJvdy4gCiAgICAgICAgICAgIE1hbnVhbGx5IGNvbmZpZ3VyZWQgZW50cmllcyB3aWxsIGhhdmUgYSBzdG9yYWdlIHR5cGUgCiAgICAgICAgICAgIG9mIG5vblZvbGF0aWxlIHdoaWxlIGVudHJpZXMgZHluYW1pY2FsbHkgY3JlYXRlZCBhcyBhIAogICAgICAgICAgICByZXN1bHQgb2YgYSBsb3dlci1sZXZlbCBwcm90b2NvbCBzdWNoIGFzIEludmVyc2UgCiAgICAgICAgICAgIE5laWdoYm9yIERpc2NvdmVyeSB3aWxsIGhhdmUgYSBzdG9yYWdlIHR5cGUgb2YgCiAgICAgICAgICAgIHZvbGF0aWxlLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgbm9uVm9sYXRpbGUgfSAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyRW50cnkgNyB9IAogCm9zcGZ2M05ibWFOYnJTdGF0dXMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvd1N0YXR1cyAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1jcmVhdGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBzdGF0dXMgb2YgdGhlIGVuLSAKICAgICAgICAgICAgdHJ5LiBUaGUgdXNlIG9mIFJvd1N0YXR1cyBpcyBjb3ZlcmVkIGluIG1vcmUgZGV0YWlsIAogICAgICAgICAgICBpbiBbNl0uIiAKICAgICAgICA6Oj0geyBvc3BmdjNOYm1hTmJyRW50cnkgOCB9IAogCi0tIE9TUEZ2MyBWaXJ0dWFsIE5laWdoYm9yIFRhYmxlIAogCi0tIFRoaXMgdGFibGUgZGVzY3JpYmVzIGFsbCB2aXJ0dWFsIG5laWdoYm9ycy4gCi0tIFNpbmNlIFZpcnR1YWwgTGlua3MgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIAotLSB2aXJ0dWFsIGludGVyZmFjZSB0YWJsZSwgdGhpcyB0YWJsZSBpcyByZWFkLW9ubHkuIAogCm9zcGZ2M1ZpcnROYnJUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzVmlydE5ickVudHJ5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgdGFibGUgb2YgdmlydHVhbCBuZWlnaGJvciBpbmZvcm1hdGlvbi4iIAogICAgICAgIFJFRkVSRU5DRSAKICAgICAgICAgICAgIk9TUEYgVmVyc2lvbiAyLCBTZWN0aW9uIDE1IFZpcnR1YWwgTGlua3MiIAogICAgICAgIDo6PSB7IG9zcGZ2M09iamVjdHMgMTEgfSAKIApvc3BmdjNWaXJ0TmJyRW50cnkgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIE9zcGZ2M1ZpcnROYnJFbnRyeSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJWaXJ0dWFsIG5laWdoYm9yIGluZm9ybWF0aW9uLiIgCiAgICAgICAgSU5ERVggICAgICAgICAgIHsgb3NwZnYzVmlydE5ickFyZWEsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJSdHJJZCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnROYnJUYWJsZSAxIH0gCiAKT3NwZnYzVmlydE5ickVudHJ5IDo6PSBTRVFVRU5DRSB7IAogICAgICAgIG9zcGZ2M1ZpcnROYnJBcmVhIAogICAgICAgICAgICAgICAgQXJlYUlELCAKICAgICAgICBvc3BmdjNWaXJ0TmJyUnRySWQgCiAgICAgICAgICAgICAgICBSb3V0ZXJJRCwgCiAgICAgICAgb3NwZnYzVmlydE5icklmSW5kZXggCiAgICAgICAgICAgICAgICBJbnRlcmZhY2VJbmRleCwgCiAgICAgICAgb3NwZnYzVmlydE5ickFkZHJlc3NUeXBlIAogICAgICAgICAgICAgICAgSW5ldEFkZHJlc3NUeXBlLCAKICAgICAgICBvc3BmdjNWaXJ0TmJyQWRkcmVzcyAKICAgICAgICAgICAgICAgIEluZXRBZGRyZXNzLCAKICAgICAgICBvc3BmdjNWaXJ0TmJyT3B0aW9ucyAKICAgICAgICAgICAgICAgIEludGVnZXIzMiwgCiAgICAgICAgb3NwZnYzVmlydE5iclN0YXRlIAogICAgICAgICAgICAgICAgSU5URUdFUiwgCiAgICAgICAgb3NwZnYzVmlydE5ickV2ZW50cyAKICAgICAgICAgICAgICAgIENvdW50ZXIzMiwgCiAgICAgICAgb3NwZnYzVmlydE5ickxzUmV0cmFuc1FMZW4gCiAgICAgICAgICAgICAgICBHYXVnZTMyLCAKICAgICAgICBvc3BmdjNWaXJ0TmJySGVsbG9TdXBwcmVzc2VkIAogICAgICAgICAgICAgICAgVHJ1dGhWYWx1ZSwgCiAgICAgICAgb3NwZnYzVmlydE5icklmSWQgCiAgICAgICAgICAgICAgICBJbnRlcmZhY2VJbmRleCwgCiAgICAgICAgb3NwZnYzVmlydE5iclJlc3RhcnRIZWxwZXJTdGF0dXMgIAogICAgICAgICAgICAgICAgSU5URUdFUiwgIAogICAgICAgIG9zcGZ2M1ZpcnROYnJSZXN0YXJ0SGVscGVyQWdlICAKICAgICAgICAgICAgICAgIFVwVG9SZWZyZXNoSW50ZXJ2YWwsICAKICAgICAgICBvc3BmdjNWaXJ0TmJyUmVzdGFydEhlbHBlckV4aXRSZWFzb24gIAogICAgICAgICAgICAgICAgSU5URUdFUiAKICAgICAgICB9IAogCm9zcGZ2M1ZpcnROYnJBcmVhIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBBcmVhSUQgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIG5vdC1hY2Nlc3NpYmxlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIFRyYW5zaXQgQXJlYSBJZGVudGlmaWVyLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydE5ickVudHJ5IDEgfSAKIApvc3BmdjNWaXJ0TmJyUnRySWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFJvdXRlcklEIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgIDMyLWJpdCAgaW50ZWdlciAgdW5pcXVlbHkgIGlkZW50aWZ5aW5nICB0aGUgCiAgICAgICAgICAgIG5laWdoYm9yaW5nIHJvdXRlciBpbiB0aGUgQXV0b25vbW91cyBTeXN0ZW0uIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0TmJyRW50cnkgMiB9IAogCm9zcGZ2M1ZpcnROYnJJZkluZGV4IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJbnRlcmZhY2VJbmRleCAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIGxvY2FsIGludGVyZmFjZSBJRCBmb3IgdGhlIHZpcnR1YWwgbGluayBvdmVyIAogICAgICAgICAgICB3aGljaCB0aGUgbmVpZ2hib3IgY2FuIGJlIHJlYWNoZWQuIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0TmJyRW50cnkgMyB9IAogCm9zcGZ2M1ZpcnROYnJBZGRyZXNzVHlwZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3NUeXBlIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgYWRkcmVzcyB0eXBlIG9mIG9zcGZ2M1ZpcnROYnJBZGRyZXNzLiBPbmx5IElQdjYgCiAgICAgICAgICAgIGFkZHJlc3NlcyB3aXRob3V0IHpvbmUgaW5kZXggYXJlIGV4cGVjdGVkLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydE5ickVudHJ5IDQgfSAKIApvc3BmdjNWaXJ0TmJyQWRkcmVzcyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3MgKFNJWkUgKDE2KSkgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBJUHY2IGFkZHJlc3MgYWR2ZXJ0aXNlZCBieSB0aGlzIFZpcnR1YWwgTmVpZ2hib3IuIAogICAgICAgICAgICBJdCBtdXN0IGJlIGEgU2l0ZS1Mb2NhbCBvciBHbG9iYWwgc2NvcGUgYWRkcmVzcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnROYnJFbnRyeSA1IH0gCiAKb3NwZnYzVmlydE5ick9wdGlvbnMgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVnZXIzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQSBCaXQgTWFzayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZWlnaGJvcidzIG9wLSAKICAgICAgICAgICAgdGlvbnMgZmllbGQuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMywgQXBwZW5kaXggQS4yIHRoZSBPcHRpb25zIGZpZWxkIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0TmJyRW50cnkgNiB9IAogCm9zcGZ2M1ZpcnROYnJTdGF0ZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSU5URUdFUiB7IAogICAgICAgICAgICAgICAgICAgICAgICBkb3duKDEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdCgyKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQoMyksIAogICAgICAgICAgICAgICAgICAgICAgICB0d29XYXkoNCksIAogICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZVN0YXJ0KDUpLCAKICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2UoNiksIAogICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nKDcpLCAKICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCg4KSAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlIHN0YXRlIG9mIHRoZSBWaXJ0dWFsIE5laWdoYm9yIFJlbGF0aW9uLSAKICAgICAgICAgICAgc2hpcC4iIAogICAgICAgIDo6PSB7IG9zcGZ2M1ZpcnROYnJFbnRyeSA3IH0gCiAKb3NwZnYzVmlydE5ickV2ZW50cyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgQ291bnRlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mICB0aW1lcyAgdGhpcyAgdmlydHVhbCAgbGluayAgaGFzIAogICAgICAgICAgICBjaGFuZ2VkIGl0cyBzdGF0ZSwgb3IgYW4gZXJyb3IgaGFzIG9jY3VycmVkLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydE5ickVudHJ5IDggfSAKIApvc3BmdjNWaXJ0TmJyTHNSZXRyYW5zUUxlbiBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgR2F1Z2UzMiAKICAgICAgICBNQVgtQUNDRVNTICAgICAgcmVhZC1vbmx5IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlICBjdXJyZW50ICBsZW5ndGggIG9mICB0aGUgICByZXRyYW5zbWlzc2lvbiAKICAgICAgICAgICAgcXVldWUuIiAKICAgICAgICA6Oj0geyBvc3BmdjNWaXJ0TmJyRW50cnkgOSB9IAogCm9zcGZ2M1ZpcnROYnJIZWxsb1N1cHByZXNzZWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIFRydXRoVmFsdWUgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtb25seSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkluZGljYXRlcyB3aGV0aGVyIEhlbGxvcyBhcmUgYmVpbmcgIHN1cHByZXNzZWQgCiAgICAgICAgICAgIHRvIHRoZSBuZWlnaGJvciIgCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydE5ickVudHJ5IDEwIH0gCiAKb3NwZnYzVmlydE5icklmSWQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEludGVyZmFjZUluZGV4IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLW9ubHkgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIElEIHRoYXQgdGhlIG5laWdoYm9yIGFkdmVydGlzZXMgCiAgICAgICAgICAgIGluIGl0cyBIZWxsbyBQYWNrZXRzIG9uIHRoaXMgdmlydHVhbCBsaW5rLCB0aGF0IGlzLCAKICAgICAgICAgICAgdGhlIG5laWdoYm9yJ3MgbG9jYWwgaW50ZXJmYWNlIElELiIgCiAgICAgICAgOjo9IHsgb3NwZnYzVmlydE5ickVudHJ5IDExIH0gCiAKICAgb3NwZnYzVmlydE5iclJlc3RhcnRIZWxwZXJTdGF0dXMgT0JKRUNULVRZUEUgIAogICAgICAgU1lOVEFYICAgICAgIElOVEVHRVIgeyBub3RIZWxwaW5nICgxKSwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwaW5nICgyKSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAKICAgICAgIE1BWC1BQ0NFU1MgICByZWFkLW9ubHkgIAogICAgICAgU1RBVFVTICAgICAgIGN1cnJlbnQgIAogICAgICAgREVTQ1JJUFRJT04gIAogICAgICAgICAgIkluZGljYXRlcyB3aGV0aGVyIHRoZSByb3V0ZXIgaXMgYWN0aW5nICAKICAgICAgICAgIGFzIGEgaGl0bGVzcyByZXN0YXJ0IGhlbHBlciBmb3IgdGhlIG5laWdoYm9yLiIgIAogICAgICAgICAgOjo9IHsgb3NwZnYzVmlydE5ickVudHJ5IDEyIH0gIAogICAgCm9zcGZ2M1ZpcnROYnJSZXN0YXJ0SGVscGVyQWdlIE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBVcFRvUmVmcmVzaEludGVydmFsIAogICAgICAgVU5JVFMgICAgICAgICJzZWNvbmRzIiAgCiAgICAgICBNQVgtQUNDRVNTICAgcmVhZC1vbmx5ICAKICAgICAgIFNUQVRVUyAgICAgICBjdXJyZW50ICAKICAgICAgIERFU0NSSVBUSU9OICAKICAgICAgICAgICJSZW1haW5pbmcgdGltZSBpbiBjdXJyZW50IE9TUEYgaGl0bGVzcyByZXN0YXJ0ICAKICAgICAgICAgIGludGVydmFsLCBpZiB0aGUgcm91dGVyIGlzIGFjdGluZyBhcyBhIHJlc3RhcnQgIAogICAgICAgICAgaGVscGVyIGZvciB0aGUgbmVpZ2hib3IuIiAgCiAgICAgICA6Oj0geyBvc3BmdjNWaXJ0TmJyRW50cnkgMTMgfSAgCiAgICAKb3NwZnYzVmlydE5iclJlc3RhcnRIZWxwZXJFeGl0UmVhc29uIE9CSkVDVC1UWVBFICAKICAgICAgIFNZTlRBWCAgICAgICBJTlRFR0VSIHsgbm9uZSAoMSksICAgICAgICAgICAtLSBub3QgYXR0ZW1wdGVkICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Qcm9ncmVzcyAoMiksICAgICAtLSByZXN0YXJ0IGluICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBwcm9ncmVzcyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCAoMyksICAgICAgLS0gc3VjY2Vzc2Z1bGx5ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBjb21wbGV0ZWQgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZE91dCAoNCksICAgICAgIC0tIHRpbWVkIG91dCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcG9sb2d5Q2hhbmdlZCAoNSkgLS0gYWJvcnRlZCBkdWUgdG8gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHRvcG9sb2d5ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBjaGFuZ2UuICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIAogICAgICAgTUFYLUFDQ0VTUyAgIHJlYWQtb25seSAgCiAgICAgICBTVEFUVVMgICAgICAgY3VycmVudCAgCiAgICAgICBERVNDUklQVElPTiAgCiAgICAgICAgICAiRGVzY3JpYmVzIHRoZSBvdXRjb21lIG9mIHRoZSBsYXN0IGF0dGVtcHQgYXQgYWN0aW5nICAKICAgICAgICAgICBhcyBhIGhpdGxlc3MgcmVzdGFydCBoZWxwZXIgZm9yIHRoZSBuZWlnaGJvci4iICAKICAgIDo6PSB7IG9zcGZ2M1ZpcnROYnJFbnRyeSAxNCB9IAogCiAKLS0gCi0tIFRoZSBPU1BGdjMgQXJlYSBBZ2dyZWdhdGUgVGFibGUgCi0tIAogCm9zcGZ2M0FyZWFBZ2dyZWdhdGVUYWJsZSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgU0VRVUVOQ0UgT0YgT3NwZnYzQXJlYUFnZ3JlZ2F0ZUVudHJ5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgcmFuZ2Ugb2YgSVB2NiBwcmVmaXhlcyBzcGVjaWZpZWQgYnkgYSAKICAgICAgICAgICAgcHJlZml4L3ByZWZpeCBsZW5ndGggIHBhaXIuIE5vdGUgdGhhdCBpZiAKICAgICAgICAgICAgcmFuZ2VzIGFyZSBjb25maWd1cmVkIHN1Y2ggdGhhdCBvbmUgcmFuZ2Ugc3ViLSAKICAgICAgICAgICAgc3VtZXMgIGFub3RoZXIgcmFuZ2UgdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2ggaXMgCiAgICAgICAgICAgIHRoZSBwcmVmZXJyZWQgb25lLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzT2JqZWN0cyAxMiB9IAogCm9zcGZ2M0FyZWFBZ2dyZWdhdGVFbnRyeSBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgT3NwZnYzQXJlYUFnZ3JlZ2F0ZUVudHJ5IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkEgcmFuZ2Ugb2YgSVB2NiBwcmVmaXhlcyBzcGVjaWZpZWQgYnkgYSAKICAgICAgICAgICAgcHJlZml4L3ByZWZpeCBsZW5ndGggIHBhaXIuIE5vdGUgdGhhdCBpZiAKICAgICAgICAgICAgcmFuZ2VzIGFyZSBjb25maWd1cmVkIHN1Y2ggdGhhdCBvbmUgcmFuZ2Ugc3ViLSAKICAgICAgICAgICAgc3VtZXMgIGFub3RoZXIgcmFuZ2UgdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2ggaXMgCiAgICAgICAgICAgIHRoZSBwcmVmZXJyZWQgb25lLiIgCiAgICAgICAgUkVGRVJFTkNFIAogICAgICAgICAgICAiT1NQRiBWZXJzaW9uIDIsIEFwcGVuZGl4IEMuMiAgQXJlYSBwYXJhbWV0ZXJzIiAKICAgICAgICBJTkRFWCAgICAgICAgICAgeyBvc3BmdjNBcmVhQWdncmVnYXRlQXJlYUlELCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUFnZ3JlZ2F0ZUFyZWFMc2RiVHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUFnZ3JlZ2F0ZVByZWZpeFR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFBZ2dyZWdhdGVQcmVmaXgsIAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFBZ2dyZWdhdGVQcmVmaXhMZW5ndGggfSAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhQWdncmVnYXRlVGFibGUgMSB9IAogCk9zcGZ2M0FyZWFBZ2dyZWdhdGVFbnRyeSA6Oj0gU0VRVUVOQ0UgeyAKICAgICAgICBvc3BmdjNBcmVhQWdncmVnYXRlQXJlYUlEIAogICAgICAgICAgICAgICAgQXJlYUlELCAKICAgICAgICBvc3BmdjNBcmVhQWdncmVnYXRlQXJlYUxzZGJUeXBlIAogICAgICAgICAgICAgICAgSU5URUdFUiwgCiAgICAgICAgb3NwZnYzQXJlYUFnZ3JlZ2F0ZVByZWZpeFR5cGUgCiAgICAgICAgICAgICAgICBJbmV0QWRkcmVzc1R5cGUsIAogICAgICAgIG9zcGZ2M0FyZWFBZ2dyZWdhdGVQcmVmaXggCiAgICAgICAgICAgICAgICBJbmV0QWRkcmVzcywgCiAgICAgICAgb3NwZnYzQXJlYUFnZ3JlZ2F0ZVByZWZpeExlbmd0aCAKICAgICAgICAgICAgICAgIEluZXRBZGRyZXNzUHJlZml4TGVuZ3RoLCAKICAgICAgICBvc3BmdjNBcmVhQWdncmVnYXRlU3RhdHVzIAogICAgICAgICAgICAgICAgUm93U3RhdHVzLCAKICAgICAgICBvc3BmdjNBcmVhQWdncmVnYXRlRWZmZWN0IAogICAgICAgICAgICAgICAgSU5URUdFUiwgCiAgICAgICAgb3NwZnYzQXJlYUFnZ3JlZ2F0ZVJvdXRlVGFnIAogICAgICAgICAgICAgICAgSU5URUdFUiAKICAgICAgICB9IAogCm9zcGZ2M0FyZWFBZ2dyZWdhdGVBcmVhSUQgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEFyZWFJRCAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgQXJlYSB0aGUgQWRkcmVzcyBBZ2dyZWdhdGUgaXMgdG8gYmUgIGZvdW5kIAogICAgICAgICAgICB3aXRoaW4uIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4yIEFyZWEgcGFyYW1ldGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUFnZ3JlZ2F0ZUVudHJ5IDEgfSAKIApvc3BmdjNBcmVhQWdncmVnYXRlQXJlYUxzZGJUeXBlIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJTlRFR0VSIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIGludGVyQXJlYVByZWZpeExzYSg4MTk1KSwgLS0gMHgyMDAzIAogICAgICAgICAgICAgICAgICAgICAgICBuc3NhRXh0ZXJuYWxMc2EoODE5OSkgICAgIC0tIDB4MjAwNyAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgdHlwZSBvZiB0aGUgQWRkcmVzcyBBZ2dyZWdhdGUuICBUaGlzIGZpZWxkIAogICAgICAgICAgICBzcGVjaWZpZXMgIHRoZSAgQXJlYSBMc2RiIHR5cGUgdGhhdCB0aGlzIEFkZHJlc3MgQWctIAogICAgICAgICAgICBncmVnYXRlIGFwcGxpZXMgdG8uIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQS40LjEgVGhlICBMaW5rICBTdGF0ZSAKICAgICAgICAgICAgQWR2ZXJ0aXNlbWVudCBoZWFkZXIiIAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFBZ2dyZWdhdGVFbnRyeSAyIH0gCiAKb3NwZnYzQXJlYUFnZ3JlZ2F0ZVByZWZpeFR5cGUgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEluZXRBZGRyZXNzVHlwZSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgcHJlZml4IHR5cGUgb2Ygb3NwZnYzQXJlYUFnZ3JlZ2F0ZVByZWZpeC4gT25seSAKICAgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgYXJlIGV4cGVjdGVkLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUFnZ3JlZ2F0ZUVudHJ5IDQgfSAKIApvc3BmdjNBcmVhQWdncmVnYXRlUHJlZml4IE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJbmV0QWRkcmVzcyAoU0laRSAoMC4uMTYpKSAKICAgICAgICBNQVgtQUNDRVNTICAgICAgbm90LWFjY2Vzc2libGUgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGUgSVB2NiBQcmVmaXguIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4yIEFyZWEgcGFyYW1ldGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUFnZ3JlZ2F0ZUVudHJ5IDUgfSAKIApvc3BmdjNBcmVhQWdncmVnYXRlUHJlZml4TGVuZ3RoIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBJbmV0QWRkcmVzc1ByZWZpeExlbmd0aCAoMy4uMTI4KSAKICAgICAgICBVTklUUyAgICAgICAgICAgImJpdHMiIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICBub3QtYWNjZXNzaWJsZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZSBsZW5ndGggb2YgdGhlIHByZWZpeCAoaW4gYml0cykuIEEgcHJlZml4IGNhbiAKICAgICAgICAgICAgbm90IGJlIHNob3J0ZXIgdGhhbiAzIGJpdHMuIiAKICAgICAgICBSRUZFUkVOQ0UgCiAgICAgICAgICAgICJPU1BGIFZlcnNpb24gMiwgQXBwZW5kaXggQy4yIEFyZWEgcGFyYW1ldGVycyIgCiAgICAgICAgOjo9IHsgb3NwZnYzQXJlYUFnZ3JlZ2F0ZUVudHJ5IDYgfSAKIApvc3BmdjNBcmVhQWdncmVnYXRlU3RhdHVzIE9CSkVDVC1UWVBFIAogICAgICAgIFNZTlRBWCAgICAgICAgICBSb3dTdGF0dXMgCiAgICAgICAgTUFYLUFDQ0VTUyAgICAgIHJlYWQtY3JlYXRlIAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyB2YXJpYWJsZSBjb250cm9scyB0aGUgc3RhdHVzIG9mICB0aGUgIGVuLSAKICAgICAgICAgICAgdHJ5LiBUaGUgdXNlIG9mIFJvd1N0YXR1cyBpcyBjb3ZlcmVkIGluIG1vcmUgZGV0YWlsIAogICAgICAgICAgICBpbiBbNl0uIiAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhQWdncmVnYXRlRW50cnkgNyB9IAogCm9zcGZ2M0FyZWFBZ2dyZWdhdGVFZmZlY3QgT0JKRUNULVRZUEUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIElOVEVHRVIgeyAKICAgICAgICAgICAgICAgICAgICAgICAgYWR2ZXJ0aXNlTWF0Y2hpbmcoMSksIAogICAgICAgICAgICAgICAgICAgICAgICBkb05vdEFkdmVydGlzZU1hdGNoaW5nKDIpIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlByZWZpeGVzIHN1YnN1bWVkIGJ5IHJhbmdlcyBlaXRoZXIgdHJpZ2dlciAgdGhlIAogICAgICAgICAgICBhZHZlcnRpc2VtZW50ICBvZiAgdGhlIGluZGljYXRlZCBhZ2dyZWdhdGUgKGFkLSAKICAgICAgICAgICAgdmVydGlzZU1hdGNoaW5nKSwgb3IgcmVzdWx0IGluIHRoZSBwcmVmaXggbm90IAogICAgICAgICAgICBiZWluZyBhZHZlcnRpc2VkIGF0IGFsbCBvdXRzaWRlIHRoZSBhcmVhLiIgCiAgICAgICAgREVGVkFMICAgICAgICAgIHsgYWR2ZXJ0aXNlTWF0Y2hpbmcgfSAKICAgICAgICA6Oj0geyBvc3BmdjNBcmVhQWdncmVnYXRlRW50cnkgOCB9IAogCm9zcGZ2M0FyZWFBZ2dyZWdhdGVSb3V0ZVRhZyBPQkpFQ1QtVFlQRSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW50ZWdlcjMyIAogICAgICAgIE1BWC1BQ0NFU1MgICAgICByZWFkLWNyZWF0ZSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoaXMgdGFnIGlzIGFkdmVydGlzZWQgb25seSBpbiB0aGUgc3VtbWFyaXplZCAKICAgICAgICAgICAgIEFzLUV4dGVybmFsIExTQSB3aGVuIHN1bW1hcml6aW5nIGZyb20gdHlwZS03IHRvICAKICAgICAgICAgICAgIHR5cGUtNS4iIAogICAgICAgIERFRlZBTCAgICAgICAgIHsgMCB9IAogICAgICAgIDo6PSB7IG9zcGZ2M0FyZWFBZ2dyZWdhdGVFbnRyeSA5IH0gCiAgICAgICAgIAoKLS0gY29uZm9ybWFuY2UgaW5mb3JtYXRpb24gCiAKb3NwZnYzR3JvdXBzICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgb3NwZnYzQ29uZm9ybWFuY2UgMSB9IApvc3BmdjNDb21wbGlhbmNlcyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBvc3BmdjNDb25mb3JtYW5jZSAyIH0gCiAKLS0gY29tcGxpYW5jZSBzdGF0ZW1lbnRzIAogCm9zcGZ2M0NvbXBsaWFuY2UgTU9EVUxFLUNPTVBMSUFOQ0UgCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gICAgICJUaGUgY29tcGxpYW5jZSBzdGF0ZW1lbnQgIiAKICAgICAgICBNT0RVTEUgICAgICAgICAgLS0gdGhpcyBtb2R1bGUgCiAgICAgICAgTUFOREFUT1JZLUdST1VQUyB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNCYXNpY0dyb3VwLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUdyb3VwLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZHcm91cCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZkdyb3VwLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJyR3JvdXAsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYm1hTmJyR3JvdXAsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0TmJyR3JvdXAsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhQWdncmVnYXRlR3JvdXAgCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAKICAgICAgICBHUk9VUCAgICAgICAgICAgb3NwZnYzQXNMc2RiR3JvdXAgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIGdyb3VwIGlzIHJlcXVpcmVkIGZvciBPU1BGdjMgc3lzdGVtcyB0aGF0IAogICAgICAgICAgICBkaXNwbGF5IHRoZWlyIEFTLXNjb3BlIGxpbmsgc3RhdGUgZGF0YWJhc2UuIiAKIAogICAgICAgIEdST1VQICAgICAgICAgICBvc3BmdjNBcmVhTHNkYkdyb3VwIAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyBncm91cCBpcyByZXF1aXJlZCBmb3IgT1NQRnYzIHN5c3RlbXMgdGhhdCAKICAgICAgICAgICAgZGlzcGxheSB0aGVpciBBcmVhLXNjb3BlIGxpbmsgc3RhdGUgZGF0YWJhc2UuIiAKIAogICAgICAgIEdST1VQICAgICAgICAgICBvc3BmdjNMaW5rTHNkYkdyb3VwIAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhpcyBncm91cCBpcyByZXF1aXJlZCBmb3IgT1NQRnYzIHN5c3RlbXMgdGhhdCAKICAgICAgICAgICAgZGlzcGxheSB0aGVpciBMaW5rLXNjb3BlIGxpbmsgc3RhdGUgZGF0YWJhc2UuIiAKIAogICAgICAgIEdST1VQICAgICAgICAgICBvc3BmdjNIb3N0R3JvdXAgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGlzIGdyb3VwIGlzIHJlcXVpcmVkIGZvciBPU1BGdjMgc3lzdGVtcyB0aGF0IAogICAgICAgICAgICBzdXBwb3J0IGF0dGFjaGVkIGhvc3RzLiIgCiAKICAgICAgICBPQkpFQ1QgICAgICAgICAgb3NwZnYzTmJyQWRkcmVzc1R5cGUgCiAgICAgICAgU1lOVEFYICAgICAgICAgIEluZXRBZGRyZXNzVHlwZSB7IGlwdjYoMikgfSAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIkFuIGltcGxlbWVudGF0aW9uIGlzIG9ubHkgcmVxdWlyZWQgdG8gc3VwcG9ydCBJUHY2IAogICAgICAgICAgICBhZGRyZXNzIHdpdGhvdXQgem9uZSBpbmRleC4iIAogCiAgICAgICAgT0JKRUNUICAgICAgICAgIG9zcGZ2M1ZpcnROYnJBZGRyZXNzVHlwZSAKICAgICAgICBTWU5UQVggICAgICAgICAgSW5ldEFkZHJlc3NUeXBlIHsgaXB2NigyKSB9IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiQW4gaW1wbGVtZW50YXRpb24gaXMgb25seSByZXF1aXJlZCB0byBzdXBwb3J0IElQdjYgCiAgICAgICAgICAgIGFkZHJlc3Mgd2l0aG91dCB6b25lIGluZGV4LiIgCiAKICAgICAgICA6Oj0geyBvc3BmdjNDb21wbGlhbmNlcyAxIH0gCiAKLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UgCiAKb3NwZnYzQmFzaWNHcm91cCBPQkpFQ1QtR1JPVVAgCiAgICAgICAgT0JKRUNUUyAgICAgICAgIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1JvdXRlcklkLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQWRtaW5TdGF0LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzVmVyc2lvbk51bWJlciwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFCZHJSdHJTdGF0dXMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBU0JkclJ0clN0YXR1cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FzU2NvcGVMc2FDb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FzU2NvcGVMc2FDa3N1bVN1bSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M09yaWdpbmF0ZU5ld0xzYXMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNSeE5ld0xzYXMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNFeHRMc2FDb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0V4dEFyZWFMc2RiTGltaXQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNNdWx0aWNhc3RFeHRlbnNpb25zLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzRXhpdE92ZXJmbG93SW50ZXJ2YWwsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNEZW1hbmRFeHRlbnNpb25zLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzVHJhZmZpY0VuZ2luZWVyaW5nU3VwcG9ydCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1JlZmVyZW5jZUJhbmR3aWR0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1Jlc3RhcnRTdXBwb3J0LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzUmVzdGFydEludGVydmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzUmVzdGFydFN0YXR1cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1Jlc3RhcnRBZ2UsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNSZXN0YXJ0RXhpdFJlYXNvbiAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZXNlIG9iamVjdHMgYXJlIHJlcXVpcmVkIGZvciBPU1BGdjMgc3lzdGVtcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dyb3VwcyAxIH0gCiAKIApvc3BmdjNBcmVhR3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSW1wb3J0QXNFeHRlcm4sIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhU3BmUnVucywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFCZHJSdHJDb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFBc0JkclJ0ckNvdW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYVNjb3BlTHNhQ291bnQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhU2NvcGVMc2FDa3N1bVN1bSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFTdW1tYXJ5LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYVN0YXR1cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1N0dWJNZXRyaWMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhTnNzYVRyYW5zbGF0b3JSb2xlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYU5zc2FUcmFuc2xhdG9yU3RhdGUsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhTnNzYVRyYW5zbGF0b3JTdGFiaWxpdHlJbnRlcnZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFOc3NhVHJhbnNsYXRvckV2ZW50cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFTdHViTWV0cmljVHlwZSAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZXNlIG9iamVjdHMgYXJlIHJlcXVpcmVkIGZvciBPU1BGdjMgc3lzdGVtcyAKICAgICAgICAgICAgc3VwcG9ydGluZyBhcmVhcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dyb3VwcyAyIH0gCiAKb3NwZnYzQXNMc2RiR3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBc0xzZGJTZXF1ZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FzTHNkYkFnZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FzTHNkYkNoZWNrc3VtLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXNMc2RiQWR2ZXJ0aXNlbWVudCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FzTHNkYlR5cGVLbm93biAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZXNlIG9iamVjdHMgYXJlIHJlcXVpcmVkIGZvciBPU1BGdjMgc3lzdGVtcyAKICAgICAgICAgICAgdGhhdCBkaXNwbGF5IHRoZWlyIEFTLXNjb3BlIGxpbmsgc3RhdGUgZGF0YWJhc2UuIiAKICAgICAgICA6Oj0geyBvc3BmdjNHcm91cHMgMyB9IAogCm9zcGZ2M0FyZWFMc2RiR3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhTHNkYlNlcXVlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUxzZGJBZ2UsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhTHNkYkNoZWNrc3VtLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUxzZGJBZHZlcnRpc2VtZW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUxzZGJUeXBlS25vd24gCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGVzZSBvYmplY3RzIGFyZSByZXF1aXJlZCBmb3IgT1NQRnYzIHN5c3RlbXMgCiAgICAgICAgICAgIHRoYXQgZGlzcGxheSB0aGVpciBBcmVhLXNjb3BlIGxpbmsgc3RhdGUgZGF0YWJhc2UuIiAKICAgICAgICA6Oj0geyBvc3BmdjNHcm91cHMgNCB9IAogCm9zcGZ2M0xpbmtMc2RiR3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNMaW5rTHNkYlNlcXVlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTGlua0xzZGJBZ2UsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNMaW5rTHNkYkNoZWNrc3VtLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTGlua0xzZGJBZHZlcnRpc2VtZW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTGlua0xzZGJUeXBlS25vd24gCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGVzZSBvYmplY3RzIGFyZSByZXF1aXJlZCBmb3IgT1NQRnYzICBzeXN0ZW1zIAogICAgICAgICAgICB0aGF0IGRpc3BsYXkgdGhlaXIgTGluay1zY29wZSBsaW5rIHN0YXRlIGRhdGFiYXNlLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR3JvdXBzIDUgfSAKIApvc3BmdjNIb3N0R3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNIb3N0TWV0cmljLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSG9zdFN0YXR1cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0hvc3RBcmVhSUQgCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGVzZSBvYmplY3RzIGFyZSByZXF1aXJlZCAgZm9yICBPU1BGdjMgIHN5c3RlbXMgCiAgICAgICAgICAgIHRoYXQgc3VwcG9ydCBhdHRhY2hlZCBob3N0cy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dyb3VwcyA2IH0gCiAKb3NwZnYzSWZHcm91cCBPQkpFQ1QtR1JPVVAgCiAgICAgICAgT0JKRUNUUyAgICAgICAgIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmQXJlYUlkLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZBZG1pblN0YXQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNJZlJ0clByaW9yaXR5LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZUcmFuc2l0RGVsYXksIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNJZlJldHJhbnNJbnRlcnZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmSGVsbG9JbnRlcnZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmUnRyRGVhZEludGVydmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZQb2xsSW50ZXJ2YWwsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNJZlN0YXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZEZXNpZ25hdGVkUm91dGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZCYWNrdXBEZXNpZ25hdGVkUm91dGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZFdmVudHMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNJZlN0YXR1cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmTXVsdGljYXN0Rm9yd2FyZGluZywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmRGVtYW5kLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZNZXRyaWNWYWx1ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmTGlua1Njb3BlTHNhQ291bnQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNJZkxpbmtMc2FDa3N1bVN1bSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmSW5zdElkLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZEZW1hbmROYnJQcm9iZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0lmRGVtYW5kTmJyUHJvYmVSZXR4TGltaXQsICAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzSWZEZW1hbmROYnJQcm9iZUludGVydmFsICAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZXNlIGludGVyZmFjZSBvYmplY3RzIGFyZSByZXF1aXJlZCBmb3IgIAogICAgICAgICAgICBPU1BGdjMgc3lzdGVtcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dyb3VwcyA3IH0gCiAKb3NwZnYzVmlydElmR3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0SWZJbmRleCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZlRyYW5zaXREZWxheSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZlJldHJhbnNJbnRlcnZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZkhlbGxvSW50ZXJ2YWwsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0SWZSdHJEZWFkSW50ZXJ2YWwsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0SWZTdGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZkV2ZW50cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZlN0YXR1cywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnRJZkxpbmtTY29wZUxzYUNvdW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzVmlydElmTGlua0xzYUNrc3VtU3VtICAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZXNlIHZpcnR1YWwgaW50ZXJmYWNlIG9iamVjdHMgYXJlIHJlcXVpcmVkIGZvciAgCiAgICAgICAgICAgIE9TUEZ2MyBzeXN0ZW1zLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR3JvdXBzIDggfSAKIApvc3BmdjNOYnJHcm91cCBPQkpFQ1QtR1JPVVAgCiAgICAgICAgT0JKRUNUUyAgICAgICAgIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05ickFkZHJlc3NUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJyQWRkcmVzcywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05ick9wdGlvbnMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYnJQcmlvcml0eSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05iclN0YXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJyRXZlbnRzLCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJyTHNSZXRyYW5zUUxlbiwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05ickhlbGxvU3VwcHJlc3NlZCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05icklmSWQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYnJSZXN0YXJ0SGVscGVyU3RhdHVzLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M05iclJlc3RhcnRIZWxwZXJBZ2UsICAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzTmJyUmVzdGFydEhlbHBlckV4aXRSZWFzb24gCiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgU1RBVFVTICAgICAgICAgIGN1cnJlbnQgCiAgICAgICAgREVTQ1JJUFRJT04gCiAgICAgICAgICAgICJUaGVzZSBuZWlnaGJvciBvYmplY3RzIGFyZSByZXF1aXJlZCBmb3IgCiAgICAgICAgICAgIE9TUEZ2MyBzeXN0ZW1zLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR3JvdXBzIDkgfSAKIApvc3BmdjNOYm1hTmJyR3JvdXAgT0JKRUNULUdST1VQIAogICAgICAgIE9CSkVDVFMgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYm1hTmJyUHJpb3JpdHksIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYm1hTmJyUnRySWQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYm1hTmJyU3RhdGUsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYm1hTmJyU3RvcmFnZVR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNOYm1hTmJyU3RhdHVzIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlc2UgTkJNQSBuZWlnaGJvciBvYmplY3RzIGFyZSByZXF1aXJlZCBmb3IgCiAgICAgICAgICAgIE9TUEZ2MyBzeXN0ZW1zLiIgCiAgICAgICAgOjo9IHsgb3NwZnYzR3JvdXBzIDEwIH0gCiAKb3NwZnYzVmlydE5ickdyb3VwIE9CSkVDVC1HUk9VUCAKICAgICAgICBPQkpFQ1RTICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzVmlydE5icklmSW5kZXgsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0TmJyQWRkcmVzc1R5cGUsICAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzVmlydE5ickFkZHJlc3MsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0TmJyT3B0aW9ucywgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJTdGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJFdmVudHMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0TmJyTHNSZXRyYW5zUUxlbiwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJIZWxsb1N1cHByZXNzZWQsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNWaXJ0TmJySWZJZCwgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJSZXN0YXJ0SGVscGVyU3RhdHVzLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJSZXN0YXJ0SGVscGVyQWdlLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M1ZpcnROYnJSZXN0YXJ0SGVscGVyRXhpdFJlYXNvbiAKICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICBTVEFUVVMgICAgICAgICAgY3VycmVudCAKICAgICAgICBERVNDUklQVElPTiAKICAgICAgICAgICAgIlRoZXNlIHZpcnR1YWwgbmVpZ2hib3Igb2JqZWN0cyBhcmUgcmVxdWlyZWQgZm9yIAogICAgICAgICAgICBPU1BGdjMgc3lzdGVtcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dyb3VwcyAxMSB9IAogCm9zcGZ2M0FyZWFBZ2dyZWdhdGVHcm91cCBPQkpFQ1QtR1JPVVAgCiAgICAgICAgT0JKRUNUUyAgICAgICAgIHsgCiAgICAgICAgICAgICAgICAgICAgICAgIG9zcGZ2M0FyZWFBZ2dyZWdhdGVTdGF0dXMsIAogICAgICAgICAgICAgICAgICAgICAgICBvc3BmdjNBcmVhQWdncmVnYXRlRWZmZWN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgb3NwZnYzQXJlYUFnZ3JlZ2F0ZVJvdXRlVGFnIAogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgIFNUQVRVUyAgICAgICAgICBjdXJyZW50IAogICAgICAgIERFU0NSSVBUSU9OIAogICAgICAgICAgICAiVGhlc2UgYXJlYSBhZ2dyZWdhdGUgb2JqZWN0cyBhcmUgcmVxdWlyZWQgZm9yIAogICAgICAgICAgICBPU1BGdjMgc3lzdGVtcy4iIAogICAgICAgIDo6PSB7IG9zcGZ2M0dyb3VwcyAxMiB9IAogCkVORCAK