IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQohISEhISEhISEhISEhISEhISAgICAgICAgICAgICAgIE5vdGVzIGZvciB0aGlzIENoYW5nZUxvZy50eHQgICAgICAgICAgICAgISEhISEhISEhISEhISEhISENCg0KVGhpcyBsb2cgZmlsZSBpcyB1c2VkIHRvIHJlY29yZCB0d28ga2luZHMgb2YgaW1wb3J0YW50IGluZm9ybWF0aW9uOg0KIGEpICJOb24tQ29tcGF0aWJsZSBDaGFuZ2VzIjogYWxsIG5vbi1jb21wYXRpYmxlIGNoYW5nZXMgc2hvdWxkIGJlIHJlY29yZGVkLiBUaGVzZSBpbmZvDQogICAgd2lsbCBoZWxwIHRoZSBwYWNrYWdlIHVzZXIgdG8gbWVyZ2UgdGhpcyBwYWNrYWdlOyBhbmQgc29tZSBub24tY29tcGF0aWJsZSBjaGFuZ2VzDQogICAgY2FuIGFsc28gYmUgYWRkZWQgaW50byByZWxlYXNlIG5vdGVzIGFzIG5ld3MgZmVhdHVyZXMgd2hlbiB3ZSByZWxlYXNlIHRoaXMgcGFja2FnZS4NCiAgICBOb3JtYWxseSBOb24tQ29tcGF0aWJsZSBDaGFuZ2VzIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdHlwZXM6DQogICAgICAxKSBQYWNrYWdlJ3MgZXh0ZXJuYWwgc2VydmljZXMgd2VyZSBjaGFuZ2VkL3VwZGF0ZWQNCiAgICAgIDIpIFBhY2thZ2UncyBjb21tb24gLmggZmlsZSBpcyByZW5hbWVkLCBkZWxldGVkLCBvciB0aGUgZmlsZSBwYXRoIGlzIGNoYW5nZWQuDQogICAgICAzKSBUaGUgZGVmaW5pdGlvbiBvZiBwYWNrYWdlJ3MgY29tbW9uIGRhdGEgc3RydWN0dXJlIGlzIGNoYW5nZWQNCiAgICAgIC4uLg0KDQogYikgIkltcG9ydGFudCBDb21wYXRpYmxlIENoYW5nZXMiOiBzb21lIGltcG9ydGFudCBjb21wYXRpYmxlIGNoYW5nZXMgY2FuIGFzbG8gYmUgcmVjb3JkZWQNCiAgICBpbiB0aGlzIGZpbGUsIGFuZCB3ZSBjYW4gYWRkIHRoZXNlIHVwZGF0aW5nIGludG8gcmVsZWFzZSBub3RlcyB3aGVuIHdlIHJlbGVhc2UgdGhpcw0KICAgIHBhY2thZ2UuDQoNCk5vbi1Db21wYXRpYmxlIGFuZCBDb21wYXRpYmxlIGV4YW1wbGUgZm9ybWF0Og0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMDAxMDogTm9uLUNvbXBhdGlibGU6IG93bmVyDQoNCiAgICAgIENsYXNzX0hGaWxlOiBQUEkgQSBvZiBNZGVQa2cgaGFzIGJlZW4gcmVtb3ZlZC4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIFJlbW92ZWQgdGhlIC5oIGZpbGU6IE1kZVBrZ1xJbmNsdWRlXFBwaVxBLmgNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAxKSBBbGwgbW9kdWxlcyB0aGF0IHVzZWQgdGhpcyBQUEkgQSBzaG91bGQgYmUgdXBkYXRlZC4NCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMDAwMDogQ29tcGF0aWJsZTogb3duZXINCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOiB3aXRoIHRoZSBFREtfMDAwMCBidWlsZC5leGUsIHRoZSBidWlsZCBwZXJmb3JtYW5jZSBpcyBlbmhhbmNlZCBncmVhdC4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29sc1xCaW5cV2luMzJcYnVpbGQuZXhlDQoNCiEhISEhISEhISEhISEhISEhISAgICAgICAgICAgICAgICAgICAgIEVuZCBvZiBOb3RlcyAgICAgICAgICAgICAgICAgICAgICEhISEhISEhISEhISEhISEhIQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIyMjIyMjIyMjICAgICAgIFJldmlzaW9uIG51bWJlciBvZiB0b29scyBzb3VyY2UgY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIyMjIyMNCiAgICBCYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvZ2VuDQogICAgICAgIHIxNjU1IGh0dHBzOi8vYnVpbGR0b29scy50aWFub2NvcmUub3JnL3N2bi9idWlsZHRvb2xzL3RydW5rL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL2J1aWxkDQogICAgICAgIHIxNjU1IGh0dHBzOi8vYnVpbGR0b29scy50aWFub2NvcmUub3JnL3N2bi9idWlsZHRvb2xzL3RydW5rL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbg0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb25EYXRhQ2xhc3MNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vR2VuRmRzDQogICAgICAgIHIxNjU1IGh0dHBzOi8vYnVpbGR0b29scy50aWFub2NvcmUub3JnL3N2bi9idWlsZHRvb2xzL3RydW5rL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZQ0KDQogICAgQmFzZVRvb2xzL0Jpbi9XaW4zMi9HZW5GZHMuZXhlDQogICAgICAgIHIxNjU1IGh0dHBzOi8vYnVpbGR0b29scy50aWFub2NvcmUub3JnL3N2bi9idWlsZHRvb2xzL3RydW5rL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbg0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb25EYXRhQ2xhc3MNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vR2VuRmRzDQogICAgICAgIHIxNjU1IGh0dHBzOi8vYnVpbGR0b29scy50aWFub2NvcmUub3JnL3N2bi9idWlsZHRvb2xzL3RydW5rL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZQ0KDQogICAgQmFzZVRvb2xzL0Jpbi9XaW4zMi9HZW5EZXBleC5leGUNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbg0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24NCg0KICAgIEJhc2VUb29scy9CaW4vV2luMzIvVHJpbS5leGUNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVHJpbQ0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24NCg0KICAgIEJhc2VUb29scy9CaW4vV2luMzIvTWlncmF0aW9uTXNhMkluZi5leGUNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vTWlncmF0aW9uTXNhMkluZg0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24NCg0KICAgIEJhc2VUb29scy9CaW4vV2luMzIvVGFyZ2V0VG9vbC5leGUNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVGFyZ2V0VG9vbA0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24NCg0KICAgIEJhc2VUb29scy9CaW4vV2luMzIvU3BkMkRlYy5leGUNCiAgICAgICAgcjE2NTUgaHR0cHM6Ly9idWlsZHRvb2xzLnRpYW5vY29yZS5vcmcvc3ZuL2J1aWxkdG9vbHMvdHJ1bmsvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vc3BkMmRlYw0KDQogICAgQmFzZVRvb2xzL0Jpbi9XaW4zMi9GcGQyRHNjLmV4ZQ0KICAgICAgICByMTY1NSBodHRwczovL2J1aWxkdG9vbHMudGlhbm9jb3JlLm9yZy9zdm4vYnVpbGR0b29scy90cnVuay9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9mcGQyZHNjDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnkgVG9vbCBjaGVja2luIGxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfNzUyOTogTm9uLUNvbXBhdGlibGU6IGp3YW5nMzYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBVc2UgRkFNSUxZIGRlZmluZWQgaW4gKl9UQUdOQU1FXypfKl9GQU1JTFkgYXMgdGhlIHRvb2xjaGFpbiBmYW1pbHkNCiAgICAgICAgMikgRm9yY2UgZmlsZSBuYW1lIGNhc2UgY2hlY2sgaW4gV2luZG93cw0KICAgICAgICAzKSBDb25zb2xpZGF0ZSBmaWxlL3BhdGggb3BlcmF0aW9ucw0KICAgICAgICA0KSBTdXBwb3J0IGJpbmFyeSBmaWxlIHR5cGUgaW4gYnVpbGRfcnVsZS50eHQNCiAgICAgICAgNSkgR2VuZXJhdGUgJChGSUxFX1RZUEVTKSBtYWNybyBvbmx5IHdoZW4gaXQncyB1c2VkIGluIGJ1aWxkX3J1bGUudHh0DQogICAgICAgIDYpIFVzZSBidWlsZF9ydWxlLnR4dCB0byBzb2x2ZSBjdXN0b21pemVkIGJ1aWxkIGZvciBVU0VSX0RFRklORUQgbW9kdWxlDQogICAgICAgIDcpIFJlLWRlc2lnbiBUZW1wbGF0ZVN0cmluZyB0byBtYWtlIGl0IGZhc3Rlcg0KICAgICAgICA4KSBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIFRyaW0gdG9vbA0KICAgICAgICA5KSBGaXggdW5kZWZpbmVkIHZhcmlhYmxlcyBpc3N1ZQ0KICAgICAgICAxMCkgRml4IEhTRDIwMjE0MiBhbmQgSFNEMjAyMTQ0DQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAyKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZkcy5leGUNCiAgICAgICAgMykgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9UcmltLmV4ZQ0KICAgICAgICA0KSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRlDQoNCiAgICAgICAgUG9zc2libGUgSW1wYWN0czoNCiAgICAgICAgMSkgVG8gYnVpbGQgTnQzMlBrZy5kc2MgY29ycmVjdGx5LCB0aGUgbG9jYWwgdmVyc2lvbiBidWlsZF9ydWxlLnR4dCBtdXN0DQogICAgICAgICAgIHVwZGF0ZWQgd2l0aCB0aGUgY2hhbmdlIGluIG5ldyBidWlsZF9ydWxlLnRlbXBsYXRlLg0KICAgICAgICAyKSBUaGUgY2FzZSBvZiBmaWxlIHBhdGggbXVzdCBiZSB0aGUgc2FtZSBhcyBpbiBmaWxlIHN5c3RlbSwgb3IgdGhlIGJ1aWxkDQogICAgICAgICAgIHdpbGwgYnJlYWsuDQoNCkVES183MTU5OiBOb24tQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIFJlLWZpbmUgYW5kIGZ1bGx5IHRlc3QgdGhlIG1lY2hhbmlzbSBvZiBnZXR0aW5nIG92ZXIgdGhlIGxvbmcgY29tbWFuZA0KICAgICAgICAgICBsaW5lIGxpbWl0YXRpb24NCiAgICAgICAgMikgQ2hhbmdlIHRoZSAtcyBvcHRpb24gb2YgYnVpbGQgZnJvbSAiU3Bhd25Nb2RlIiB0byBiZSAiU2lsZW50TW9kZSINCiAgICAgICAgMykgQ2hhbmdlIHRoZSBwcm90b3R5cGUgb2YgUGVpQ29yZUVudHJ5UG9pbnQgaW4gQXV0b0dlbi1lZCBjb2RlDQogICAgICAgIDQpIFJlbW92ZSBDYWxjRGVwcyBtb2R1bGUgc2luY2UgaXQncyBubyBsb25nZXIgbmVlZGVkLg0KICAgICAgICA1KSBSZW1vdmUgIi1rIiwgIi1nIiBhbmQgIi1sIiBzd2l0Y2hlcyBmcm9tIGJ1aWxkDQogICAgICAgIDYpIFJlbW92ZSBNVUxUSVBMRV9USFJFQUQgaW4gdGFyZ2V0LnRlbXBsYXRlLiBVc2UgTUFYX0NPTkNVUlJFTlRfVEhSRUFEX05VTUJFUg0KICAgICAgICAgICB0byBnZXQgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQogICAgICAgIDEpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgIDEpIFRoZSBsb2NhbCB2ZXJzaW9uIGJ1aWxkX3J1bGUudHh0IG11c3QgYmUgdXBkYXRlZCB3aXRoIGNoYW5nZXMgaW4gYnVpbGRfcnVsZS50ZW1wbGF0ZQ0KICAgICAgICAyKSBVc2UgImJ1aWxkIC1zIiB0byBwYXNzICItcyIgc3dpdGNoIHRvICJtYWtlIiB0b29sIHRvIGRvIHNpbGVudCAibWFrZSIuDQogICAgICAgICAgIFRvIHN1cHByZXNzIGFsbCBtZXNzYWdlIGZyb20gc3Rkb3V0LCB1c2UgImJ1aWxkIC1xIiBpbnN0ZWFkLg0KICAgICAgICAzKSBUbyBnZXQgb3ZlciB0aGUgbG9uZyBjb21tYW5kIGxpbmUgbGltaXRhdGlvbiwgdXNlICJAJCg8RklMRV9UWVBFPlNfTElTVCkiDQogICAgICAgICAgIGluIHRoZSBwbGFjZSBvZiAke3NyY30gZm9yIHRob3NlIGNvbW1hbmRzIGVuY291bnRlcmluZyBzdWNoIGtpbmQgb2YNCiAgICAgICAgICAgcHJvYmxlbS4NCg0KRURLXzcwMDk6IE5vbi1Db21wYXRpYmxlOiBqd2FuZzM2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgU2VhcmNoIHZhbHVlIG9mIEd1aWQvUHJvdG9jb2wvUFBJIGluIGluZiBmaWxlIG9ubHkgaW4gdGhlIHNhbWUgY2F0ZWdvcnkgaW4gZGVjIGZpbGUuDQogICAgICAgIDIpIFBhc3MgYWxsIGZpbGVzIGluIGEgbW9kdWxlJ3MgZGlyZWN0b3J5IHRvIFN0ckdhdGhlciBmb3IgUjggbW9kdWxlcy4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQoNCiAgICAgICAgUG9zc2libGUgSW1wYWN0czoNCiAgICAgICAgMSkgVGhvc2UgaW5mIGZpbGVzIGluIHdoaWNoIHRoZSBQUEkvUHJvdG9jb2wvR3VpZCBhcmUgcHV0IGluIGluY29ycmVjdA0KICAgICAgICAgICBzZWN0aW9uIHdpbGwgZW5jb3VudGVyIGJ1aWxkIGJyZWFrLg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES182OTMwOiBOb24tQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIFNlcGFyYXRlIHRoZSBBdXRvR2VuIGNvZGUgZm9yIFBDRHMgYmV0d2VlbiBtb2R1bGUgYW5kIGl0cyBsaWJyYXJ5IGluc3RhbmNlcy4NCiAgICAgICAgICAgT25seSBtYWNyb3MgZm9yIG1vZHVsZSdzIFBDRHMgd2lsbCBiZSBwdXQgaW4gQXV0b0dlbi5oLiBPdGhlcnMgd2lsbCBiZSBwdXQNCiAgICAgICAgICAgaW4gQXV0b0dlbi5jLiBUaGlzIGlzIGludGVuZGVkIHRvIGNhdGNoIG1pc3NlZCBQQ0RzIGluIGluZiBmaWxlIG1vcmUgZWFzaWx5Lg0KICAgICAgICAyKSBGb3IgYmV0dGVyIGNvbXBhdGliaWxlIGJldHdlZW4gQyBzdGFuZGFyZHMgb3IgQyBjb21waWxlciwgYWRkIHR5cGUgY2FzdCBmb3INCiAgICAgICAgICAgUENEIGNvbnN0YW50cyBpbiBBdXRvR2VuLmggYWNjb3JkaW5nIHRvIHRoZSBQQ0QgZGF0dW0gdHlwZS4NCiAgICAgICAgMykgQWRkIGluY3JlbWVudGFsIGdlbmVyYXRpb24gY2FwYWJpbGl0eSBmb3IgRlYgaW4gR2VuRmRzIHRvb2wuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAyKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZkcy5leGUNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAxKSBJZiB0aGVyZSdyZSBQQ0RzIHVzZWQgaW4gYSBtb2R1bGUgYnV0IG5vdCBkZWNsYXJlZCBpbiB0aGUgbW9kdWxlJ3MgaW5mIGZpbGUsDQogICAgICAgICAgIGFuZCBvY2Nhc2lvbmFsbHkgdGhleSBhcmUgZGVjbGFyZWQgaW4gdGhlIGxpYnJhcnkgaW5zdGFuY2VzLCB0aGVyZSBtdXN0IGJlDQogICAgICAgICAgIGEgYnVpbGQgYnJlYWsuIEFkZGluZyBuZWNlc3NhcnkgUENEcyBkZWNsYXJhdGlvbnMgaW4gdGhlIG1vZHVsZSdzIGluZiBmaWxlDQogICAgICAgICAgIHdpbGwgc29sdmUgaXQuDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzY4Mjg6IENvbXBhdGlibGU6IGp3YW5nMzYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBBZGQgYSBmZWF0dXJlIHRvIGFsbG93IG92ZXJyaWRlIHRvb2xzIG9wdGlvbiB2aWEgIj09IiBpbiBtZXRhZmlsZS4NCiAgICAgICAgMikgUmVtb3ZlIHRoZSBBdXRvR2VuLmMgZ2VuZXJhdGlvbiBmb3IgUjggbW9kdWxlIHdpdGhvdXQgdW5pY29kZSBmaWxlLg0KDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES182NzcyOiBOb24tQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIEFkZCAvRCQoTU9EVUxFX0VOVFJZX1BPSU5UKT0kKEFSQ0hfRU5UUllfUE9JTlQpIGluIEVCQ19DQ19GTEFHUyB0byBlbnN1cmUNCiAgICAgICAgICAgY29ycmVjdCBSOCdzIG1vZHVsZSBlbnRyeSBwb2ludCBmb3IgRUJDIGFyY2guDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAgICBUaGUgbG9jYWwgdmVyc2lvbiBvZiB0b29sc19kZWYudHh0IG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBjaGFuZ2UgaW4NCiAgICAgICAgICAgdG9vbHNfZGVmLnRlbXBsYXRlLg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES182NzYyOiBOb24tQ29tcGF0aWJsZTogbGdhbzQNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBEZWNsYXJlIGVudHJ5IHBvaW50LCBjb25zdHJ1Y3RvciBpbnRvIEF1dG9HZW4uaA0KICAgICAgICAyKSBDcmVhdGUgPE1vZHVsZU5hbWU+U3RyRGVmcy5oIHRvIGNvbnRhaW4gdW5pIGNvZGUgc3RyaW5nIElELg0KDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAyKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAgICBUaGUgbG9jYWwgdmVyc2lvbiBvZiB0b29sc19kZWYudHh0IG11c3QgYmUgdXBkYXRlZCB3aXRoIGNoYW5nZSBpbg0KICAgICAgICAgICB0b29sc19kZWYudGVtcGFsdGUuDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzY2NzE6IENvbXBhdGlibGU6IHF3YW5nMTINCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBTdHJHYXRoZXIgKEJ1aWxkLmV4ZSkgaW4gY29tcGF0aWJsZSBtb2RlIGFkZCBhIEZyYW1ld29yayBQYWNrYWdlIEhlYWRlcg0KICAgICAgICAgICB0byByZXBsYWNlIHRoZSBvcmlnaW5hbCChsEFycmF5TGVuZ3RoobEgZ2VuZXJhdGVkIGluIHRoZSBvdXRwdXQuDQogICAgICAgIDIpIFZmckNvbXBpbGVyIGluIGNvbXBhdGlibGUgbW9kZSBhZGQgYSBGcmFtZXdvcmsgUGFja2FnZSBIZWFkZXIgdG8gcmVwbGFjZQ0KICAgICAgICAgICB0aGUgb3JpZ2luYWwgobBBcnJheUxlbmd0aKGxIGdlbmVyYXRlZCBpbiB0aGUgb3V0cHV0Lg0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgMSkgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9WZnJDb21waWxlLmV4ZQ0KICAgICAgICAyKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzY2NjY6IENvbXBhdGlibGU6IGxnYW80DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgRW5oYW5jZSBHZW5GdiBXcml0ZUZ2TWFwIGZ1bmN0aW9uIHRvIHByaW50IGJhc2ljIGRlYnVnIGluZm9ybWF0aW9uDQogICAgICAgICAgIChlbnRyeXBvaW50LCBiYXNlYWRkcmVzcywgLnRleHQsIC5kYXRhIHNlY3Rpb24gYmFzZSBhZGRyZXNzKSAgd2hlbiBubw0KICAgICAgICAgICBtYXAgY2FuIGJlIHJlZmVycmVkLg0KICAgICAgICAyKSBFbmhhbmNlIEdlbkZ2IHRvb2wgdG8gY3JlYXRlIHRoZSBub24gUEkgZmlsZSBzeXN0ZW0gZmlybXdhcmUgdm9sdW1lLg0KICAgICAgICAzKSBVcGRhdGUgVmZyQ29taWxlDQogICAgICAgICAgIC0gU2V0IHRoZSBmaXJzdCBmcmFtZXdvcmsgdmFyIHN0b3JlIG5hbWUgdG8gobBTZXR1cKGxDQogICAgICAgICAgIC0gU3VwcG9ydCBERUZBVUxUIGFuZCBNQU5VRkFDVFVSSU5HIGZvciBmcmFtZXdvcmsgQ2hlY2tCb3ggZmxhZ3MgdmFsdWUNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRnYuZXhlDQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvVmZyQ29tcGlsZS5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfNjY0MDogQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIENoYW5nZSBmaWxlIGxpbmUgZm9ybWF0IG9mIEF1dG9HZW4gZmlsZXMgdG8gbmF0aXZlIHN0eWxlLg0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgMSkgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9idWlsZC5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfNjYxMzogTm9uLUNvbXBhdGlibGU6IHF3YW5nMTINCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBHZW5lcmF0ZSBkYXRhIGZvciBDb25maWdBY2Nlc3MuRXh0cmFjdENvbmZpZygpIGltcGwNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvVmZyQ29tcGlsZS5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfNjQ5MDogQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIEFkZCBJbXBvcnRUb29sLmJhdCBzY3JpcHQNCiAgICAgICAgMikgQWRkIG1vcmUgZXJyb3IgY2hlY2sgZm9yIFRyaW0uZXhlDQoNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvSW1wb3J0VG9vbC5iYXQNCiAgICAgICAgMikgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9UcmltLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES182NDUyOiBDb21wYXRpYmxlOiBqd2FuZzM2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgQWxsb3cgdGhlIGZsYWdzIG9mIHRvb2xzIG5vdCBkZWZpbmVkIHRvb2xzX2RlZi50eHQNCiAgICAgICAgMikgQWRkIEJVSUxEIGFzIGludGVybmFsIHRvb2wgdG8gcGFzcyBjb21wYXRpYmxlIG1vZGUgb2YgdW5pY29kZSB0byBidWlsZCB0b29sLg0KICAgICAgICAzKSBBZGQgc3VwcG9ydCBvZiBbRGVwZXguY29tbW9uLjxNb2R1bGVUeXBlPl0gaW4gaW5mIGZpbGUNCiAgICAgICAgNCkgQWRkIG1vcmUgb3B0aW1pemF0aW9uLCBlc3BlY2lhbGx5IGZvciBhcmNoaXRlY3R1cmUgcHJvdG9jb2xzLCBpbiBHZURlcGV4IHRvb2wNCiAgICAgICAgNSkgRml4IHRoZSBnZW5lcmF0aW9uIG9mIF9nUGVpbVJldmlzaW9uIGFuZCBfZ0R4ZVJldmlzaW9uIGdsb2JhbCB2YXJpYWJsZXMgaW4NCiAgICAgICAgICAgQXV0b0dlbi5jIGFjY29yZGluZyB0byBuZXcgTWRlUGtnIHNwZWMuDQogICAgICAgIDYpIENoYW5nZSB0aGUgaGVhZGVyIGZpbGUgb2YgRHhlU21tZUVudHJ5UG9pbnQuaCB0byBVZWZpRHJpdmVyRW50cnlQb2ludC5oDQogICAgICAgICAgIGluIEF1dG9HZW4uYyBzaW5jZSBpdCdzIG5vIGxvbmdlciBleGlzdC4NCiAgICAgICAgNykgRml4ICQoUFJPQ0VTU09SKSBtYWNybyByZXBsYWNlbWVudCBpc3N1ZSBpbiBbbm1ha2VdIHNlY3Rpb24NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRGVwZXguZXhlDQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES182Mjg5OiBDb21wYXRpYmxlOiBqd2FuZzM2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gc3RhcnR1cCBvZiBidWlsZC5leGUNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KICAgICAgICAyKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES182MjY5OiBDb21wYXRpYmxlOiBqd2FuZzM2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgQnVnIGZpeGVzDQogICAgICAgIDIpIEltcHJvdmUgdGhlIHNjcmVlbiBvdXRwdXQgd2hlbiBpbiBxdWlldCBidWlsZCBtb2RlDQogICAgICAgIDMpIEFkZCAidGJ1aWxkIiB0YXJnZXQgaW4gbWFrZWZpbGUgaW4gb3JkZXIgdG8gbm90IGNyZWF0ZWQgZGlyZWN0b3JpZXMgaW4NCiAgICAgICAgICAgbWFrZWZpbGUuIEluc3RlYWQsIHRoZXkgd2lsbCBiZSBjcmVhdGVkIGluIGJ1aWxkIHRvb2wuIFRoaXMgd2lsbCBnaXZlDQogICAgICAgICAgIGJldHRlciBidWlsZCBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBpbiBpbmNyZW1lbnRhbCBidWlsZC4NCiAgICAgICAgNCkgQWRkIHNwYWNlIGNoZWNrIGluIFdPUktTUEFDRSBhbmQgT1VUUFVUX0RJUkVDVE9SWSAoaW4gZHNjIGZpbGUpIGRpcmVjdG9yeQ0KICAgICAgICAgICBuYW1lIGFuZCBnaXZlIGVycm9yIG1lc3NhZ2UgaWYgZm91bmQuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES181NzYyOiBDb21wYXRpYmxlOiBqbGluMTYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBFbmhhbmNlIHRoZSB0b29sIHRvIGJ1aWxkIFI4IG1vZHVsZSB2aWEgRUNQLg0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgMSkgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9HZW5GZHMuZXhlDQogICAgICAgIDIpIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzU2MzU6IENvbXBhdGlibGU6IGxnYW80DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgRW5oYW5jZSBHZW5GdiB0b29sIHRvIHByaW50IEZ2IFNpemUgYW5kIExlbmd0aCwgYW5kIEdldCBtb2R1bGUgbWFwIGJ5DQogICAgICAgICAgIG1vZHVsZSBwZGIgcG9pbnRlciBhbmQgZ2V0IG1vZHVsZSBndWlkIGJ5IG1vZHVsZSBGRlMgZ3VpZC4NCiAgICAgICAgMikgQW5kIEVuaGFuY2UgVmZyQ29tcGlsZXIgdG8gaGFuZGxlIGZyYW1ld29yayB2ZnIgZmlsZSwgYW5kIHByaW50IG1vcmUNCiAgICAgICAgICAgZGVidWcgaW5mb3JtYXRpb24gaW50byAubHN0IGZpbGUuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZ2LmV4ZQ0KICAgICAgICAyKSAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL1ZmckNvbXBpbGUuZXhlDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzU2MzQ6IE5vbi1Db21wYXRpYmxlOiBqd2FuZzM2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgRW5oYW5jZSB0aGUgZm9ybWF0IG9mIGJ1aWxkX3J1bGUudHh0IHRvIGFsbG93IG1vZHVsZSB0eXBlIGFuZCBhcmNoIGluZm9ybWF0aW9uLg0KICAgICAgICAyKSBFbmhhbmNlIFRyaW0gdG8gY29udmVydCBBU0wgc3R5bGUgb2YgaW5jbHVkZSB0byBDIHN0eWxlIG9mIGluY2x1ZGUNCiAgICAgICAgMykgRW5oYW5jZSBUcmltIHRvIGNvbnZlcnQgc29tZSBFREsgY29kaW5nIGNvbnZlbnRpb24gdG8gRURLMiBFQ1AgY29udmVudGlvbg0KICAgICAgICA0KSBBZGQgd2FybmluZyBtZXNzYWdlIHdoZW4gZW5jb3VudGVyaW5nIHVucmVjb2duaXplZCBjb250ZW50IGluIERTQy9ERUMvSU5GIEZpbGUNCiAgICAgICAgNSkgRW5oYW5jZSB0aGUgR2VuRGVwZXggdG8gaWdub3JlIGV2ZXJ5dGhpbmcgb3V0c2lkZSBERVBFTkRFTkNZX1NUQU5UIGFuZCBERVBFTkRFTkNZX0VORCBpbiBkeHMgZmlsZQ0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgICAgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9HZW5EZXBleC5leGUNCiAgICAgICAgICAgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9UcmltLmV4ZQ0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRlDQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQ0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgICAgIFRoZSBsb2NhbCB2ZXJzaW9uIHRvb2xzX2RlZi50eHQgYW5kIGJ1aWxkX3J1bGUudHh0IG11c3QgYmUgdXBkYXRlZCB3aXRoDQogICAgICAgICAgIHRoZSBjaGFuZ2VzIGluIHRvb2xzX2RlZi50ZW1wbGF0ZSBhbmQgYnVpbGRfcnVsZS50ZW1wbGF0ZSByZXNwZWN0aXZlbHkuDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzUxOTM6IENvbXBhdGlibGU6IGp3YW5nMzYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBBZGQgaW5jcmVtZW50YWwgc3VwcG9ydCBpbiBHZW5GZHMNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgICAgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9HZW5GZHMuZXhlDQogICAgICAgICAgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9idWlsZC5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfNTE4NjogQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIEFkZCBleHBsaWNpdCBiYW5uZXIgZm9yIHBhc3MvZmFpbCBpbmRpY2F0aW9uIG9mIGJ1aWxkDQogICAgICAgIDIpIEZpeCB0aGUgaXNzdWUgd2hpY2ggY2F1c2UgZXJyb3IgbWVzc2FnZSBmcm9tIEZERiBwYXJzZXIgd29uJ3QgYmUgcHJpbnRlZCBvdXQuDQogICAgICAgIDMpIEZpeCB0aGUgZXJyb3IgbWVzc2FnZSBmb3JtYXQgb2YgRkRGIHBhcnNlcg0KICAgICAgICA0KSBDaGFuZ2UgdGhlIGV4aXQgY29kZSBvZiBidWlsZCB0b29sIGZyb20gYWx3YXlzIDEgdG8gZXJyb3IgY29kZSwgaWYgZXJyb3Igb2NjdXJyZWQNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES180OTcxOiBDb21wYXRpYmxlOiBsZ2FvNA0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIEVuaGFuY2UgR2VuRncgdG9vbCB0byBhbHdheXMgemVybyAucGRhdGEgc2VjdGlvbiBmb3IgUEUzMiBhbmQgUEUzMisgaW1hZ2UgaW4NCiAgICAgICAgICAgb3JkZXIgdG8gaW1wcm92ZSBjb21wcmVzc2lvbiByYXRpbyBmb3IgdGhlbS4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvR2VuRncuZXhlDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzQ5MTg6IENvbXBhdGlibGU6IGxnYW80DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgQ29ycmVjdCBFcnJvciBNZXNzYWdlIGZvcm1hdCBmb3IgdGhlc2UgQyB0b29scyBhY2NvcmRpbmcgdG8gdGhlIFRvb2wgRGVzaWduIFNwZWMuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL0VmaUxkckltYWdlLmV4ZQ0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZ2LmV4ZQ0KICAgICAgICAgICAvdHJ1bmsvZWRrMi9CYXNlVG9vbHMvQmluL1dpbjMyL1RpYW5vQ29tcHJlc3MuZXhlDQogICAgICAgICAgIC90cnVuay9lZGsyL0Jhc2VUb29scy9CaW4vV2luMzIvVmZyQ29tcGlsZS5leGUNCiAgICAgICAgICAgL3RydW5rL2VkazIvQmFzZVRvb2xzL0Jpbi9XaW4zMi9Wb2xJbmZvLmV4ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES180ODU5OiBOb24tQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIENoYW5nZWQgVmZyQ29tcGlsZS5leGUgdG8gYmUgVUVGSSBISUkgY29tcGF0aWJsZQ0KICAgICAgICAyKSBJbXByb3ZlZCBSOCBtb2R1bGUgYnVpbGQNCiAgICAgICAgMykgQWRkZWQgYmluYXJ5IGZpbGUgYnVpbGQNCiAgICAgICAgNCkgUmVtb3ZlZCAiZXh0ZXJuIGludCBfX21ha2VfbWVfY29tcGlsZV9jb3JyZWN0bHkiIGluIEF1dG9HZW4gY29kZSBmb3INCiAgICAgICAgICAgUjkgbW9kdWxlcywgYnV0IGtlcHQgZm9yIFI4IG1vZHVsZXMNCiAgICAgICAgNSkgRW5mb3JlZCBtb3JlIGVycm9yIGNoZWNrIGFuZCBpbnRyb2R1Y2VkIGEgb3B0aW1pemF0aW9uIGZvciBHZW5EZXBleA0KICAgICAgICA2KSBBZGRlZCBCVUlMRF9SVUxFX0NPTkYgaW4gdGFyZ2V0LnR4dCB0byBzcGVjaWZ5IGJ1aWxkIHJ1bGVzIGZpbGUNCiAgICAgICAgNykgUmVidWlsdCBhbGwgUHl0aG9uIHRvb2xzIHdpdGggUHl0aG9uMi41LjINCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIGJ1aWxkLmV4ZQ0KICAgICAgICAyKSBWZnJDb21waWxlLmV4ZQ0KICAgICAgICAzKSBHZW5GZHMuZXhlDQogICAgICAgIDQpIEdlbkRlcGV4LmV4ZQ0KICAgICAgICA1KSB0YXJnZXQudGVtcGxhdGUNCg0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgIDEpIEFsbCBFRkkgY29kZSBuZWVkcyB0byBiZSBVRUZJIEhJSSBjb21wYXRpYmxlLg0KICAgICAgICAyKSBDb25mL3RhcmdldC50eHQgbmVlZHMgdG8gYmUgcmVwbGFjZWQgYnkgbmV3IHRhcmdldC50ZW1wbGF0ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES180MjUxOiBOb24tQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIENoYW5nZWQgTVlUT09MUyB0byB1c2UgVmlzdWFsIFN0dWRpbyBUZWFtIFN1aXRlIGZvciBJQTMyIGFuZCBYNjQuIElQRiBpcyBzdGlsbCB1c2UgV0lOREtLLg0KICAgICAgICAyKSBSZS1nZW5lcmF0ZWQgYnVpbGQuZXhlIGFuZCBHZW5GZHMuZXhlIHRvIGluY29ycG9yYXRlIG5ldyBjaGFuZ2VzIG9mIGJ1aWxkIHRvb2xzDQogICAgICAgIDMpIEVuYWJsZWQgbXVsdGktdGhyZWFkIGJ1aWxkIG1vZGUgYnkgZGVmYXVsdCAoY2FuIGJlIGRpc2FibGVkIGJ5IHVzaW5nICItbiAwIiBvcHRpb24gb3IgY2hhbmdpbmcNCiAgICAgICAgICAgTVVMVElQTEVfVEhSRUFEIGluIHRhcmdldC50eHQgdG8gRGlzYWJsZWQpDQogICAgICAgIDQpIEZpeGVkIGFuIGluY29ycmVjdCBjb21tYW5kIChubyBsZWFkaW5nIHRhYi9zcGFjZSkgZ2VuZXJhdGVkIGluIHRvcCBsZXZlbCBNYWtlZmlsZS4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KICAgICAgICAyKSBCYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAzKSBCYXNlVG9vbHMvQ29uZi90YXJnZXQudGVtcGxhdGUNCiAgICAgICAgNCkgQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlDQoNCiAgICAgICAgUG9zc2libGUgSW1wYWN0czoNCiAgICAgICAgMSkgSW5zdGFsbCBWaXN1YWwgU3R1ZGlvIDIwMDUgVGVhbSBTdWl0ZSBFZGl0aW9uLg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES180MTkwOiBOb24tQ29tcGF0aWJsZTogandhbmczNg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6DQogICAgICAgIDEpIEFkZGVkIHN1cHBvcnQgb2YgdXNpbmcgUENEIGRlZmF1bHQgdmFsdWUgZnJvbSBERUMvSU5GIGZpbGUgaWYgb25lDQogICAgICAgICAgIFBDRCBpcyBkZWNsYXJlZCBpbiBJTkYgZmlsZSBidXQgbm90IGZvdW5kIGluIERTQyBmaWxlLg0KICAgICAgICAyKSBBZGRlZCBzdXBwb3J0IG9mIGJyZWFraW5nIGJ1aWxkIGlmIG5vIGxpYnJhcnkgaW5zdGFuY2UgaXMgZm91bmQgZm9yDQogICAgICAgICAgIGEgbGlicmFyeSBjbGFzcy4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQogICAgICAgIDIpIEJhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgIDEpIEFsbCBwYWNrYWdlcy9wbGF0Zm9ybXMvbW9kdWxlcywgd2hpY2ggaGF2ZSB3cm9uZyBsaWJyYXJ5IGNsYXNzZXMNCiAgICAgICAgICAgZGVjbGFyZWQgb3IgaGF2ZSBubyBsaWJyYXJ5IGluc3RhbmNlIGZvciBzb21lIGxpYnJhcnkgY2xhc3NlcywgbXVzdCBiZQ0KICAgICAgICAgICBjaGFuZ2VkIHRvIG1ha2Ugc3VyZSBlYWNoIGxpYnJhcnkgY2xhc3MgZGVjbGFyZWQgaW4gSU5GIGZpbGUgaGFzDQogICAgICAgICAgIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbnN0YW5jZS4NCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfNDA5NjogTm9uLUNvbXBhdGlibGU6IGp3YW5nMzYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBSZW1vdmVkIHRoZSBjYWxsaW5nIG9mIHZzdmFyczMyLmJhdCBpbiBlZGtzZXR1cC5iYXQsIHVubGVzcw0KICAgICAgICAgICAiLS1udDMyIiBzd2l0Y2ggaXMgdXNlZC4NCiAgICAgICAgMikgQWRkZWQgTUFLRSBjb21tYW5kIGluIHRvb2xzX2RlZi50eHQuIFRoaXMgaXMgdXNlZCB0byBsb2NhdGUgd2hlcmUNCiAgICAgICAgICAgdGhlIG5tYWtlLmV4ZSBvciBtYWtlLmV4ZSBpcyBiZWNhdXNlIGl0IHdpbGwgbm90IGJlIGluIFBBVEggYW55IG1vcmUuDQogICAgICAgIDMpIFJlbW92ZWQgdGhlIGNhbGxpbmcgb2YgdnN2YXJzMzIuYmF0IGluIHRvb2xzZXR1cC5iYXQuDQogICAgICAgIDQpIFNvbHZlZCB0aGUgaGFuZyBpc3N1ZSBvZiBidWlsZC5leGUgd2hlbiBlcnJvciBvY2N1cnJlZCBvciBDdHJsK0MgaXMNCiAgICAgICAgICAgcHJlc3NlZC4NCiAgICAgICAgNSkgUGFzc2VkICItdi8tZC8tcSIgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBHZW5GZHMuZXhlIGluIG1ha2VmaWxlIGlmDQogICAgICAgICAgIGl0J3MgdXNlZCBieSBidWlsZC5leGUuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAyKSBCYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZkcy5leGUNCiAgICAgICAgMykgQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlDQogICAgICAgIDQpIEJhc2VUb29scy90b29sc2V0dXAuYmF0DQogICAgICAgIDUpIGVka3NldHVwLmJhdA0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgIDEpIE50MzJQa2cgYnVpbGQgbmVlZHMgdG8gcnVuIHZzdmFyczMyLmJhdCBiZWZvcmUgZWRrc2V0dXAuYmF0IG9yIHJ1bg0KICAgICAgICAgICBlZGtzZXR1cC5iYXQgd2l0aCAiLS1udDMyIiBvcHRpb24sIGxpa2UNCg0KICAgICAgICAgICBlZGtzZXR1cC5iYXQgLS1udDMyIG5ld2J1aWxkDQoNCiAgICAgICAgMikgJChXT1JLU1BBQ0UpL0NvbmYvdG9vbHNfZGVmLnR4dCBtdXN0IGJlIGRlbGV0ZWQgYmVmb3JlIHJ1bm5pbmcNCiAgICAgICAgICAgZWRrc2V0dXAuYmF0IGJlY2F1c2Ugb2YgbmV3IHRvb2xzX2RlZi50ZW1wbGF0ZS4gT3RoZXJ3aXNlIHRoZQ0KICAgICAgICAgICBidWlsZC5leGUgY2Fubm90IGZpbmQgdGhlIG5tYWtlLmV4ZSB0byBjYWxsLg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES18zOTQ3OiBDb21wYXRpYmxlOiBqd2FuZzM2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgSW1wcm92ZWQgc3Bhd24gbW9kZSAobXVsdGktdGhyZWFkKSBidWlsZCBwZXJmb3JtYW5jZSAoYnVpbGQgLXMpDQogICAgICAgIDIpIENoYW5nZWQgdGhlIGVycm9yL2RlYnVnL3dhcm5pbmcgbWVzc2FnZSBmb3JtYXQNCiAgICAgICAgMykgQWRkZWQgIi0tbG9nIiBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIHN1cHBvcnQgc3RvcmluZyBsb2cgaW4gZmlsZQ0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgMSkgQmFzZVRvb2xzL0Jpbi9XaW4zMi9idWlsZC5leGUNCg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES18zOTM2OiBDb21wYXRpYmxlOiBrbHUyDQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgVGhlIGZpcnN0IHBhcmFtZXRlciBvZiBQRUlNJ3MgZW50cnkgcG9pbnQgaW4gYXV0b2dlbi5jIGhhcyBiZWVuIGNoYW5nZWQgdG8NCiAgICAgICAgICAgRUZJX1BFSV9GSUxFX0hBTkRMRQ0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgMSkgQmFzZVRvb2xzL0Jpbi9XaW4zMi9idWlsZC5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzkyNjogQ29tcGF0aWJsZTogamxpbjE2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgQWRkZWQgc3VwcG9ydCBvZiBDYXBzdWxlIGdlbmVyYXRpb24gZnJvbSBGREYgZmlsZS4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQogICAgICAgIDIpIEJhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgIDEpIFRvIGdlbmVyYXRlIGNhcHN1bGUsIGluc2VydCBbQ2Fwc3VsZV0gc2VjdGlvbiBhZnRlciBbRlZdIHNlY3Rpb25zIGFuZCBzcGVjaWZ5aW5nDQogICAgICAgIHdoYXQgRlYgd2lsbCBiZSBwdXQgaW50byBjYXBzdWxlLCBGb3IgZXhhbXBsZToNCiAgICAgICAgW0NhcHN1bGUuRm9iXQ0KICAgICAgICBDQVBTVUxFX0dVSUQgPSAzQjY2ODZCRC0wRDc2LTQwMzAtQjcwRS1CNTUxOUUyRkM1QTANCiAgICAgICAgQ0FQU1VMRV9GTEFHID0gUGVyc2lzdEFjcm9zc1Jlc2V0DQogICAgICAgIEZWID0gQmlvc1VwZGF0ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES18zOTExOiBDb21wYXRpYmxlOiBqbGluMTYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBBZGRlZCBzdXBwb3J0IG9mIEFwcmlvcmkgZmlsZSBnZW5lcmF0aW9uIGZyb20gRkRGIGZpbGUuDQogICAgICAgIDIpIEFkZGVkIHN1cHBvcnQgb2YgSU5GIHRoYXQgZGVzY3JpYmVzIGJpbmFyeSBmaWxlcyB0byBwdXQgYmluYXJ5IGludG8gRlYuDQogICAgICAgIDMpIEZpeGVkIHNpbmdsZSBGVi9GRCBnZW5lcmF0aW9uIGVycm9yIHdoZW4gc3BlY2lmeWluZyAtaS8tciBvcHRpb24gaW4gR2VuRmRzLg0KDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAyKSBCYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZkcy5leGUNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAxKSBUbyBnZW5lcmF0ZSBBcHJpb3JpIGZpbGUgaW4gRlYsIGluc2VydCBBUFJJT1JJIHN0YXRlbWVudCBqdXN0IGJlZm9yZSB0aGUgSU5GIG9yDQogICAgICAgIEZJTEUgc3RhdGVtZW50IGxpc3Qgb2YgdGhlIEZWLCBGb3IgZXhhbXBsZToNCiAgICAgICAgQVBSSU9SSSBQRUkgew0KICAgICAgICAgIElORiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9QQ0QvUGVpL1BjZC5pbmYNCiAgICAgICAgICBGSUxFIFBFSU0gPSBCN0E1MDQxQS03OEJBLTQ5ZTMtQjczQi01NEM3NTc4MTFGQjYgew0KICAgICAgICAgICAgICAgICAgU0VDVElPTiBQRTMyID0gTXlCaW5Qa2dcYmluXGlhMzJcUGVpbUFmdGVyUGNkLmVmaQ0KICAgICAgICAgIH0NCiAgICAgICAgICBJTkYgIEludGVsRnJhbWV3b3JrTW9kdWxlUGtnL1VuaXZlcnNhbC9TdGF0dXNDb2RlL1BlaS9QZWlTdGF0dXNDb2RlLmluZg0KICAgICAgICB9DQogICAgICAgIDIpIFRvIGFkZCBiaW5hcnkgZmlsZSBkZXNjcmliZWQgYnkgSU5GIGZpbGUgaW50byBGViwgb25seSBpbnNlcnQgdGhlIElORiBzdGF0ZW1lbnQNCiAgICAgICAgaW50byB0aGUgSU5GIHN0YXRlbWVudHMgbGlzdCBvZiB0aGF0IEZWLCBsaWtlIHRoaXM6DQoNCiAgICAgICAgSU5GIFJ1bGVPdmVycmlkZT1UZXN0IE1kZU1vZHVsZVBrZy9Mb2dvL0xvZ28uaW5mDQoNCiAgICAgICAgU3BlY2lmeWluZyBob3cgdG8gcHJvY2VzcyB0aGUgYmluYXJ5IGZpbGUgYnkgZGVmaW5pbmcgY29ycmVzcG9uZGluZyBSdWxlIGxpa2UgdGhpczoNCiAgICAgICAgW1J1bGUuQ29tbW9uLkJhc2UuVGVzdF0NCiAgICAgICAgIEZJTEUgRlJFRUZPUk0gPSAkKE5BTUVEX0dVSUQpIHsNCiAgICAgICAgICAgQ09NUFJFU1MgUElfU1REIHsNCiAgICAgICAgICAgICBHVUlERUQgew0KICAgICAgICAgICAgICAgIFJBVyBCSU4gfC5ibXANCiAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAgICAgIH0NCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzgzMjogTm9uLUNvbXBhdGlibGU6IGp3YW5nMzYNCg0KICAgICAgQ2xhc3NfQnVpbGRUb29sOg0KICAgICAgICAxKSBBZGRlZCBzdXBwb3J0IG9mIE1BQ1JPIGluIHRvb2xzX2RlZi50eHQNCiAgICAgICAgMikgTWVyZ2VkIFBBVEggYW5kIE5BTUUgYXR0cmlidXRlcyBpbiB0b29sc19kZWYudHh0DQogICAgICAgIDMpIENoYW5nZWQgRFBBVEggYXR0cmlidXRlIHRvIERMTCBpbiB0b29sc19kZWYudHh0DQogICAgICAgIDQpIFJlbW92ZWQgU1BBVEggYXR0cmlidXRlIGluIHRvb2xzX2RlZi50eHQNCiAgICAgICAgNSkgQWRkZWQgc3VwcG9ydCBmb3IgbGlicmFyeSBpbnN0YW5jZSB3aXRob3V0IGxpYnJhcnkgY2xhc3MNCiAgICAgICAgNikgRml4ZWQgdGhlIGlzc3VlIGluIFRyaW0gdG9vbCB3aGljaCB6ZXJvIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgaWYgdGhlIHRyaW1tZWQNCiAgICAgICAgICAgZmlsZSBoYXMgbm90IGxpbmUgZGlyZWN0aXZlDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQmluL1dpbjMyL2J1aWxkLmV4ZQ0KICAgICAgICAyKSBCYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZkcy5leGUNCiAgICAgICAgMykgQmFzZVRvb2xzL0Jpbi9XaW4zMi9UcmltLmV4ZQ0KICAgICAgICA0KSBCYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAxKSBBbGwgcGxhdGZvcm1zIGFuZCBtb2R1bGVzIGJ1aWxkDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzM4MDE6IENvbXBhdGlibGU6IGp3YW5nMzYNCg0KICAgICAgQ2xhc3NfQnVpbGRDb25maWd1cmF0aW9uOiBBZGRlZCBtYWtlZmlsZSBhcyBkZXBlbmRlbmN5IGZvciAiRHluYW1pYy1MaWJyYXJ5LUZpbGUiIHRvDQogICAgICAgIHNvbHZlIHRoZSBpbmNyZW1lbnRhbCBidWlsZCBpc3N1ZSBvY2N1cnJlZCB3aGVuIHRoZXJlJ3MgbGlicmFyeSBjaGFuZ2VzDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRlDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRURLXzM4MDA6IENvbXBhdGlibGU6IGxnYW80DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDogVXBkYXRlIEVmaVJvbSB0b29sIHRvIGZpeCBjaGVja3N1bSBhbmQgUENJMy4wIGRhdGEgc3RydWN0dXJlDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQmluL1dpbjMyL0VmaVJvbS5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzc5NTogQ29tcGF0aWJsZTogaHRhbw0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6IEdlblZ0ZiB0b29sIG9wZW4vd3JpdGUgZmlsZSB3aXRoICJyK2IiLyJ3K2IiIGF0dHJpYnV0ZSwgYnV0IHRoaXMgY2F1c2UNCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIFJPIGF0dHJpYnV0ZSBvZiB0aGUgZmlsZSBjaGFuZ2VkLiBGaXggdGhpcyBpc3N1ZSBieSBjaGFuZ2luZw0KICAgICAgICAgICAgICAgICAgICAgICAicitiIi8idytiIiB0byAicmIiLyJ3YiIuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQmluL1dpbjMyL0dlblZ0Zi5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzc5MTogQ29tcGF0aWJsZTogamxpbjE2DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDoNCiAgICAgICAgMSkgdXNlICcjJyB0byBpbmRpY2F0ZSBmbGFzaCBnZW5lcmF0aW9uIHByb2dyZXNzLg0KICAgICAgICAyKSB1c2UgLXYgdG8gc3dpdGNoIG9uIGRldGFpbCBvdXRwdXQgbWVzc2FnZXMuDQoNCiAgICAgICAgQ29kZSBDaGFuZ2UgOg0KICAgICAgICAxKSBCYXNlVG9vbHMvQmluL1dpbjMyL0dlbkZkcy5leGUNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzc4OTogTm9uLUNvbXBhdGlibGU6IGxnYW80DQoNCiAgICAgIENsYXNzX0J1aWxkVG9vbDogc3VwcG9ydCBuZXcgUnVsZXMgZm9ybWF0IGFuZCBQQ0QgZm9ybWF0IGRlZmluZWQgaW4gRkRGIGZpbGUNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQogICAgICAgIDIpIEJhc2VUb29scy9CaW4vV2luMzIvR2VuRmRzLmV4ZQ0KDQogICAgICAgIFBvc3NpYmxlIEltcGFjdHM6DQogICAgICAgIDEpIEFsbCBwbGF0Zm9ybSdzIEZERiBmaWxlLCBpZiBhbnksIG11c3QgYmUgY2hhbmdlZCB0byBuZXcgZm9ybWF0Lg0KICAgICAgICAgIGEpIFBDRCBmb3JtYXQgaXMgY2hhbmdlZCBmcm9tIG9sZCBQY2ROYW1lIHRvIG5ldyBQY2RUb2tlblNwYWNlR3VpZC5QY2ROYW1lLA0KICAgICAgICAgICAgIGZvciBleGFtcGxlIFBjZFdpbk50RmRCYXNlQWRkcmVzcyBpbiBvbGQgRkRGIGZpbGUgd2lsbCBiZSByZXBsYWNlZA0KICAgICAgICAgICAgIGJ5IGdFZmlOdDMyUGtnVG9rZW5TcGFjZUd1aWQuUGNkV2luTnRGZEJhc2VBZGRyZXMuDQogICAgICAgICAgYikgUnVsZSBmb3JtYXQgYWRkcyBiaW5hcnkgZmlsZSB0eXBlIGFuZCBmaWxlIHBvc3RmaXggbmFtZSBzdXBwb3J0LA0KICAgICAgICAgICAgIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIGZ1bGwgZmlsZSBwYXRoLiBFeGFtcGxlcyBmb3IgUGVpbSBhbmQgQWNwaVRhYmxlIG1vZHVsZToNCiAgICAgICAgICBPbGQgUGVpbSBSdWxlOg0KICAgICAgICAgIFtSdWxlLkNvbW1vbi5QRUlNXQ0KICAgICAgICAgIEZJTEUgUEVJTSA9ICQoTkFNRURfR1VJRCkgew0KICAgICAgICAgICAgIFBFSV9ERVBFWCBPcHRpb25hbCAgICAgICAgJChJTkZfT1VUUFVUKS8kKE1PRFVMRV9OQU1FKS5EZXBleA0KICAgICAgICAgICAgIFBFMzIgICAgICAgICAgICAgICAgICAgICAgJChJTkZfT1VUUFVUKS8kKE1PRFVMRV9OQU1FKS5lZmkNCiAgICAgICAgICAgICBVSSBPcHRpb25hbCAgICAgICAgICAgICAgICQoTU9EVUxFX05BTUUpDQogICAgICAgICAgICAgVkVSU0lPTiBPcHRpb25hbCAgICAgICAgICBCVUlMRF9OVU09JChCVUlMRF9OVU1CRVIpICQoSU5GX1ZFUlNJT04pDQogICAgICAgICAgfQ0KICAgICAgICAgIE5ldyBQZWltIFJ1bGU6DQogICAgICAgICAgW1J1bGUuQ29tbW9uLlBFSU1dDQogICAgICAgICAgICBGSUxFIFBFSU0gPSAkKE5BTUVEX0dVSUQpIHsNCiAgICAgICAgICAgICAgIFBFSV9ERVBFWCBQRUlfREVQRVggT3B0aW9uYWwgICAgICAgIHwuRGVwZXgNCiAgICAgICAgICAgICAgIFBFMzIgICAgICBQRTMyICAgICAgICAgICAgICAgICAgICAgIHwuZWZpDQogICAgICAgICAgICAgICBVSSAgICAgICBTVFJJTkc9IiQoTU9EVUxFX05BTUUpIiBPcHRpb25hbA0KICAgICAgICAgICAgICAgVkVSU0lPTiAgU1RSSU5HPSIkKElORl9WRVJTSU9OKSIgT3B0aW9uYWwgQlVJTERfTlVNPSQoQlVJTERfTlVNQkVSKQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgT2xkIEFjcGlUYWJsZSBSdWxlOg0KICAgICAgICAgIFtSdWxlLkNvbW1vbi5EWEVfRFJJVkVSLkFDUElUQUJMRV0NCiAgICAgICAgICAgIEZJTEUgRlJFRUZPUk0gPSAkKE5BTUVEX0dVSUQpIHsNCiAgICAgICAgICAgICAgUkFXICAgICAgICAgICAgICAgICAgICAkKElORl9PVVRQVVQpL01hZHQuYWNwaQ0KICAgICAgICAgICAgICBSQVcgICAgICAgICAgICAgICAgICAgICQoSU5GX09VVFBVVCkvRmFkdC5hY3BpDQogICAgICAgICAgICAgIFJBVyAgICAgICAgICAgICAgICAgICAgJChJTkZfT1VUUFVUKS9GYWNzLmFjcGkNCiAgICAgICAgICAgICAgUkFXICAgICAgICAgICAgICAgICAgICAkKElORl9PVVRQVVQpL1NwY3IuYWNwaQ0KICAgICAgICAgICAgICBSQVcgICAgICAgICAgICAgICAgICAgICQoSU5GX09VVFBVVCkvRHNkdC5hbWwNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBOZXcgQWNwaVRhYmxlIFJ1bGU6DQogICAgICAgICAgW1J1bGUuQ29tbW9uLkRYRV9EUklWRVIuQUNQSVRBQkxFXQ0KICAgICAgICAgICAgRklMRSBGUkVFRk9STSA9ICQoTkFNRURfR1VJRCkgew0KICAgICAgICAgICAgICBSQVcgQUNQSSB8LmFjcGkNCiAgICAgICAgICAgICAgUkFXIEFTTCAgfC5hbWwNCiAgICAgICAgICAgIH0NCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzc4NjogQ29tcGF0aWJsZTogdmplZmYNCg0KICAgICAgQ2xhc3NfQnVpbGRDb25maWd1cmF0aW9uOg0KICAgICAgICAxKSBSZWRpcmVjdCBJQ0NfSUEzMl8qX1BBVEggZnJvbSBDOlxQcm9ncmFtIEZpbGVzXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwM1xWYzdcYmluDQogICAgICAgICAgIHRvIEM6XFByb2dyYW0gRmlsZXNcSW50ZWxcQ29tcGlsZXJcQysrXDkuMVxJQTMyXEJpbi4NCiAgICAgICAgMikgQWRkIElDQyBYNjQgZGVmaW5pdGlvbiB0byBlbmFibGUgSUNDIFg2NCBidWlsZC4NCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES18zNzg1OiBOb24tQ29tcGF0aWJsZToga2x1Mg0KDQogICAgICBDbGFzc19CdWlsZFRvb2w6IFVwZ3JhZGUgdGhlIGZvcm1hdCBvZiBFRklfUEVJTV9FTlRSWV9QT0lOVCB0bw0KICAgICAgICAgICAgICAgICAgICAgICBFRklfUEVJTV9FTlRSWV9QT0lOVDIgYWNjb3JkaW5nIHRvIFBJIHNwZWNpZmljYXRpb24uDQoNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9CaW4vV2luMzIvYnVpbGQuZXhlDQoNCiAgICAgICAgUG9zc2libGUgSW1wYWN0czoNCiAgICAgICAgMSkgQWxsIG1vZHVsZXMgYnVpbGQNCg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkVES18zNzgwOiBOb24tQ29tcGF0aWJsZTogcWh1YW5nOA0KDQogICAgICBDbGFzc19NaWdyYXRpb25Ub29sOiBVcGRhdGUgdGhlIHN5bnRheCBvZiBQQ0Qgc2VjdGlvbi4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZSB0aGUgc3ludGF4IG9mIGJpbmFyeSBJTkYgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBFeHRlbmRlZCBJTkYgZmlsZSBzaG91bGQgZm9sbG93IEV4dGVuZGVkIElORiBzcGVjIDAuNDQNCg0KICAgICAgICBDb2RlIENoYW5nZSA6DQogICAgICAgIDEpIEJhc2VUb29scy9CaW4vV2luMzIvTWlncmF0aW9uTXNhMkluZi5leGUNCg0KICAgICAgICBQb3NzaWJsZSBJbXBhY3RzOg0KICAgICAgICAxKSBOZXcgbW9kdWxlIG1pZ3JhdGVkIGZyb20gb2xkIFI5DQoNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREtfMzc2NjogTm9uLUNvbXBhdGlibGU6IGxnYW80DQoNCiAgICAgIENsYXNzX0J1aWxkQ29uZmlndXJhdGlvbjogVXBkYXRlIEFjcGkgQXNsIGZpbGUgQnVpbGQgcnVsZSB0byByZW1vdmUgdHJpbSBzdGVwLg0KDQogICAgICAgIENvZGUgQ2hhbmdlIDoNCiAgICAgICAgMSkgQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRlDQoNCiAgICAgICAgUG9zc2libGUgSW1wYWN0czoNCiAgICAgICAgMSkgUGxhdGZvcm0gd2l0aCBBQ1BJIG1vZHVsZS4gQWNwaSBtb2R1bGUgbmVlZHMgdG8gc2V0IC9FUCBwcmVwcm9jZXNzb3IgY29tcGlsZXIgb3B0aW9uDQogICAgICAgIGZvciBBUFBfRkxBR1MgaW4gbW9kdWxlIGluZiB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAvRSBvcHRpb24gZGVmaW5lZCBpbiB0b29sc19kZWYudHh0IGZpbGUuDQo=